@dereekb/dbx-web 12.1.5 → 12.1.7

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.
@@ -19,7 +19,7 @@ export class DbxWidgetListGridComponent extends AbstractDbxListWrapperDirective
19
19
  });
20
20
  }
21
21
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxWidgetListGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DbxWidgetListGridComponent, isStandalone: true, selector: "dbx-widget-grid", usesInheritance: true, ngImport: i0, template: "\n <dbx-list [state]=\"currentState$\" [config]=\"configSignal()\" [disabled]=\"disabled()\" [selectionMode]=\"selectionModeSignal()\">\n <ng-content top select=\"[top]\"></ng-content>\n <ng-content bottom select=\"[bottom]\"></ng-content>\n <ng-content empty select=\"[empty]\"></ng-content>\n <ng-content emptyLoading select=\"[emptyLoading]\"></ng-content>\n </dbx-list>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxListWrapperComponentImportsModule }, { kind: "component", type: i1.DbxListComponent, selector: "dbx-list", inputs: ["padded", "state", "config", "disabled", "selectionMode"], outputs: ["contentScrolled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
22
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DbxWidgetListGridComponent, isStandalone: true, selector: "dbx-widget-grid", usesInheritance: true, ngImport: i0, template: "\n <dbx-list [state]=\"currentState$\" [config]=\"configSignal()\" [hasMore]=\"hasMore()\" [disabled]=\"disabled()\" [selectionMode]=\"selectionModeSignal()\">\n <ng-content top select=\"[top]\"></ng-content>\n <ng-content bottom select=\"[bottom]\"></ng-content>\n <ng-content empty select=\"[empty]\"></ng-content>\n <ng-content emptyLoading select=\"[emptyLoading]\"></ng-content>\n <ng-content end select=\"[end]\"></ng-content>\n </dbx-list>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxListWrapperComponentImportsModule }, { kind: "component", type: i1.DbxListComponent, selector: "dbx-list", inputs: ["padded", "state", "config", "disabled", "selectionMode", "hasMore"], outputs: ["contentScrolled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
23
23
  }
24
24
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxWidgetListGridComponent, decorators: [{
25
25
  type: Component,
@@ -72,4 +72,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
72
72
  changeDetection: ChangeDetectionStrategy.OnPush
73
73
  }]
74
74
  }] });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0Lmxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LXdlYi9zcmMvbGliL2V4dGVuc2lvbi93aWRnZXQvd2lkZ2V0Lmxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUV6RyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUscUNBQXFDLEVBQUUsNkNBQTZDLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUV6TCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsb0NBQW9DLEVBQUUscURBQXFELEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7OztBQUloTDs7R0FFRztBQVFILE1BQU0sT0FBTywwQkFBMkIsU0FBUSwrQkFBa0Q7SUFDaEc7UUFDRSxLQUFLLENBQUM7WUFDSixjQUFjLEVBQUUsOEJBQThCO1lBQzlDLG9CQUFvQixFQUFFLE1BQU07U0FDN0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0FOVSwwQkFBMEI7NEZBQTFCLDBCQUEwQixraUJBSjNCLG9DQUFvQzs7NEZBSW5DLDBCQUEwQjtrQkFQdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixRQUFRLEVBQUUscURBQXFEO29CQUMvRCxPQUFPLEVBQUUsQ0FBQyxvQ0FBb0MsQ0FBQztvQkFDL0MsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7QUFrQkQsTUFBTSxPQUFPLDhCQUErQixTQUFRLGdDQUFtRDtJQUM1RixNQUFNLEdBQStEO1FBQzVFLElBQUksRUFBRTtZQUNKLDJCQUEyQjtZQUMzQixPQUFPLEVBQUUsdUNBQXVDO1lBQ2hELEdBQUcsRUFBRSxLQUFLO1NBQ1g7UUFDRCxjQUFjLEVBQUUsa0NBQWtDO1FBQ2xELHFCQUFxQixFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDekUsQ0FBQzt3R0FUUyw4QkFBOEI7NEZBQTlCLDhCQUE4QixtRUFGOUIsa0JBQWtCLENBQUMsOEJBQThCLENBQUMsMktBSG5ELHFDQUFxQzs7NEZBS3BDLDhCQUE4QjtrQkFSMUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxRQUFRLEVBQUUsNkNBQTZDO29CQUN2RCxPQUFPLEVBQUUsQ0FBQyxxQ0FBcUMsQ0FBQztvQkFDaEQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUUsa0JBQWtCLGdDQUFnQztpQkFDOUQ7O0FBcUJELE1BQU0sT0FBTyxrQ0FBbUMsU0FBUSxxQ0FBd0Q7d0dBQW5HLGtDQUFrQzs0RkFBbEMsa0NBQWtDLCtGQVBuQzs7R0FFVCw0REFDUyxzQkFBc0I7OzRGQUlyQixrQ0FBa0M7a0JBUjlDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFOztHQUVUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERieFdpZGdldERhdGFQYWlyIH0gZnJvbSAnLi93aWRnZXQnO1xuaW1wb3J0IHsgRGJ4V2lkZ2V0Vmlld0NvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBYnN0cmFjdERieFZhbHVlTGlzdFZpZXdJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbGF5b3V0L2xpc3QvbGlzdC52aWV3LnZhbHVlLml0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IERieFZhbHVlQXNMaXN0SXRlbSB9IGZyb20gJy4uLy4uL2xheW91dC9saXN0L2xpc3Qudmlldy52YWx1ZSc7XG5pbXBvcnQgeyBBYnN0cmFjdERieExpc3RHcmlkVmlld0RpcmVjdGl2ZSwgRGJ4TGlzdEdyaWRWaWV3RGlyZWN0aXZlSW1wb3J0c01vZHVsZSwgREVGQVVMVF9EQlhfTElTVF9HUklEX1ZJRVdfRElSRUNUSVZFX1RFTVBMQVRFIH0gZnJvbSAnLi4vLi4vbGF5b3V0L2xpc3QvZ3JpZC9saXN0LmdyaWQudmlldy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGJ4VmFsdWVMaXN0R3JpZFZpZXdDb25maWcgfSBmcm9tICcuLi8uLi9sYXlvdXQvbGlzdC9ncmlkL2xpc3QuZ3JpZC52aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBwcm92aWRlRGJ4TGlzdFZpZXcgfSBmcm9tICcuLi8uLi9sYXlvdXQvbGlzdC9saXN0LnZpZXcnO1xuaW1wb3J0IHsgQWJzdHJhY3REYnhMaXN0V3JhcHBlckRpcmVjdGl2ZSwgRGJ4TGlzdFdyYXBwZXJDb21wb25lbnRJbXBvcnRzTW9kdWxlLCBERUZBVUxUX0xJU1RfV1JBUFBFUl9DT01QT05FTlRfQ09ORklHVVJBVElPTl9URU1QTEFURSB9IGZyb20gJy4uLy4uL2xheW91dC9saXN0L2xpc3QuZGlyZWN0aXZlJztcblxuZXhwb3J0IHR5cGUgRGJ4V2lkZ2V0RGF0YVBhaXJXaXRoU2VsZWN0aW9uID0gRGJ4VmFsdWVBc0xpc3RJdGVtPERieFdpZGdldERhdGFQYWlyPjtcblxuLyoqXG4gKiBEZW1vIERieFNlbGVjdGlvbkxpc3RXcmFwcGVyRGlyZWN0aXZlXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RieC13aWRnZXQtZ3JpZCcsXG4gIHRlbXBsYXRlOiBERUZBVUxUX0xJU1RfV1JBUFBFUl9DT01QT05FTlRfQ09ORklHVVJBVElPTl9URU1QTEFURSxcbiAgaW1wb3J0czogW0RieExpc3RXcmFwcGVyQ29tcG9uZW50SW1wb3J0c01vZHVsZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERieFdpZGdldExpc3RHcmlkQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3REYnhMaXN0V3JhcHBlckRpcmVjdGl2ZTxEYnhXaWRnZXREYXRhUGFpcj4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcih7XG4gICAgICBjb21wb25lbnRDbGFzczogRGJ4V2lkZ2V0TGlzdEdyaWRWaWV3Q29tcG9uZW50LFxuICAgICAgZGVmYXVsdFNlbGVjdGlvbk1vZGU6ICd2aWV3J1xuICAgIH0pO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RieC13aWRnZXQtZ3JpZC12aWV3JyxcbiAgdGVtcGxhdGU6IERFRkFVTFRfREJYX0xJU1RfR1JJRF9WSUVXX0RJUkVDVElWRV9URU1QTEFURSxcbiAgaW1wb3J0czogW0RieExpc3RHcmlkVmlld0RpcmVjdGl2ZUltcG9ydHNNb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBwcm92aWRlRGJ4TGlzdFZpZXcoRGJ4V2lkZ2V0TGlzdEdyaWRWaWV3Q29tcG9uZW50KVxufSlcbmV4cG9ydCBjbGFzcyBEYnhXaWRnZXRMaXN0R3JpZFZpZXdDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdERieExpc3RHcmlkVmlld0RpcmVjdGl2ZTxEYnhXaWRnZXREYXRhUGFpcj4ge1xuICByZWFkb25seSBjb25maWc6IERieFZhbHVlTGlzdEdyaWRWaWV3Q29uZmlnPERieFdpZGdldERhdGFQYWlyV2l0aFNlbGVjdGlvbj4gPSB7XG4gICAgZ3JpZDoge1xuICAgICAgLy8gVE9ETzogTWFrZSBjb25maWd1cmFibGUuXG4gICAgICBjb2x1bW5zOiAncmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDEyMHB4LCAxZnIpKScsXG4gICAgICBnYXA6ICc4cHgnXG4gICAgfSxcbiAgICBjb21wb25lbnRDbGFzczogRGJ4V2lkZ2V0TGlzdEdyaWRWaWV3SXRlbUNvbXBvbmVudCxcbiAgICBtYXBWYWx1ZXNUb0l0ZW1WYWx1ZXM6ICh4KSA9PiBvZih4Lm1hcCgoeSkgPT4gKHsgLi4ueSwgaXRlbVZhbHVlOiB5IH0pKSlcbiAgfTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGRieC13aWRnZXQtdmlldyBbY29uZmlnXT1cIml0ZW1WYWx1ZVwiPjwvZGJ4LXdpZGdldC12aWV3PlxuICBgLFxuICBpbXBvcnRzOiBbRGJ4V2lkZ2V0Vmlld0NvbXBvbmVudF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERieFdpZGdldExpc3RHcmlkVmlld0l0ZW1Db21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdERieFZhbHVlTGlzdFZpZXdJdGVtQ29tcG9uZW50PERieFdpZGdldERhdGFQYWlyPiB7fVxuIl19
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0Lmxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LXdlYi9zcmMvbGliL2V4dGVuc2lvbi93aWRnZXQvd2lkZ2V0Lmxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUV6RyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUscUNBQXFDLEVBQUUsNkNBQTZDLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUV6TCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsb0NBQW9DLEVBQUUscURBQXFELEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7OztBQUloTDs7R0FFRztBQVFILE1BQU0sT0FBTywwQkFBMkIsU0FBUSwrQkFBa0Q7SUFDaEc7UUFDRSxLQUFLLENBQUM7WUFDSixjQUFjLEVBQUUsOEJBQThCO1lBQzlDLG9CQUFvQixFQUFFLE1BQU07U0FDN0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0FOVSwwQkFBMEI7NEZBQTFCLDBCQUEwQiw4bUJBSjNCLG9DQUFvQzs7NEZBSW5DLDBCQUEwQjtrQkFQdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixRQUFRLEVBQUUscURBQXFEO29CQUMvRCxPQUFPLEVBQUUsQ0FBQyxvQ0FBb0MsQ0FBQztvQkFDL0MsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7QUFrQkQsTUFBTSxPQUFPLDhCQUErQixTQUFRLGdDQUFtRDtJQUM1RixNQUFNLEdBQStEO1FBQzVFLElBQUksRUFBRTtZQUNKLDJCQUEyQjtZQUMzQixPQUFPLEVBQUUsdUNBQXVDO1lBQ2hELEdBQUcsRUFBRSxLQUFLO1NBQ1g7UUFDRCxjQUFjLEVBQUUsa0NBQWtDO1FBQ2xELHFCQUFxQixFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDekUsQ0FBQzt3R0FUUyw4QkFBOEI7NEZBQTlCLDhCQUE4QixtRUFGOUIsa0JBQWtCLENBQUMsOEJBQThCLENBQUMsMktBSG5ELHFDQUFxQzs7NEZBS3BDLDhCQUE4QjtrQkFSMUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxRQUFRLEVBQUUsNkNBQTZDO29CQUN2RCxPQUFPLEVBQUUsQ0FBQyxxQ0FBcUMsQ0FBQztvQkFDaEQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUUsa0JBQWtCLGdDQUFnQztpQkFDOUQ7O0FBcUJELE1BQU0sT0FBTyxrQ0FBbUMsU0FBUSxxQ0FBd0Q7d0dBQW5HLGtDQUFrQzs0RkFBbEMsa0NBQWtDLCtGQVBuQzs7R0FFVCw0REFDUyxzQkFBc0I7OzRGQUlyQixrQ0FBa0M7a0JBUjlDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFOztHQUVUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERieFdpZGdldERhdGFQYWlyIH0gZnJvbSAnLi93aWRnZXQnO1xuaW1wb3J0IHsgRGJ4V2lkZ2V0Vmlld0NvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBYnN0cmFjdERieFZhbHVlTGlzdFZpZXdJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbGF5b3V0L2xpc3QvbGlzdC52aWV3LnZhbHVlLml0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IERieFZhbHVlQXNMaXN0SXRlbSB9IGZyb20gJy4uLy4uL2xheW91dC9saXN0L2xpc3Qudmlldy52YWx1ZSc7XG5pbXBvcnQgeyBBYnN0cmFjdERieExpc3RHcmlkVmlld0RpcmVjdGl2ZSwgRGJ4TGlzdEdyaWRWaWV3RGlyZWN0aXZlSW1wb3J0c01vZHVsZSwgREVGQVVMVF9EQlhfTElTVF9HUklEX1ZJRVdfRElSRUNUSVZFX1RFTVBMQVRFIH0gZnJvbSAnLi4vLi4vbGF5b3V0L2xpc3QvZ3JpZC9saXN0LmdyaWQudmlldy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGJ4VmFsdWVMaXN0R3JpZFZpZXdDb25maWcgfSBmcm9tICcuLi8uLi9sYXlvdXQvbGlzdC9ncmlkL2xpc3QuZ3JpZC52aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBwcm92aWRlRGJ4TGlzdFZpZXcgfSBmcm9tICcuLi8uLi9sYXlvdXQvbGlzdC9saXN0LnZpZXcnO1xuaW1wb3J0IHsgQWJzdHJhY3REYnhMaXN0V3JhcHBlckRpcmVjdGl2ZSwgRGJ4TGlzdFdyYXBwZXJDb21wb25lbnRJbXBvcnRzTW9kdWxlLCBERUZBVUxUX0xJU1RfV1JBUFBFUl9DT01QT05FTlRfQ09ORklHVVJBVElPTl9URU1QTEFURSB9IGZyb20gJy4uLy4uL2xheW91dC9saXN0L2xpc3QuZGlyZWN0aXZlJztcblxuZXhwb3J0IHR5cGUgRGJ4V2lkZ2V0RGF0YVBhaXJXaXRoU2VsZWN0aW9uID0gRGJ4VmFsdWVBc0xpc3RJdGVtPERieFdpZGdldERhdGFQYWlyPjtcblxuLyoqXG4gKiBEZW1vIERieFNlbGVjdGlvbkxpc3RXcmFwcGVyRGlyZWN0aXZlXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RieC13aWRnZXQtZ3JpZCcsXG4gIHRlbXBsYXRlOiBERUZBVUxUX0xJU1RfV1JBUFBFUl9DT01QT05FTlRfQ09ORklHVVJBVElPTl9URU1QTEFURSxcbiAgaW1wb3J0czogW0RieExpc3RXcmFwcGVyQ29tcG9uZW50SW1wb3J0c01vZHVsZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERieFdpZGdldExpc3RHcmlkQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3REYnhMaXN0V3JhcHBlckRpcmVjdGl2ZTxEYnhXaWRnZXREYXRhUGFpcj4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcih7XG4gICAgICBjb21wb25lbnRDbGFzczogRGJ4V2lkZ2V0TGlzdEdyaWRWaWV3Q29tcG9uZW50LFxuICAgICAgZGVmYXVsdFNlbGVjdGlvbk1vZGU6ICd2aWV3J1xuICAgIH0pO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RieC13aWRnZXQtZ3JpZC12aWV3JyxcbiAgdGVtcGxhdGU6IERFRkFVTFRfREJYX0xJU1RfR1JJRF9WSUVXX0RJUkVDVElWRV9URU1QTEFURSxcbiAgaW1wb3J0czogW0RieExpc3RHcmlkVmlld0RpcmVjdGl2ZUltcG9ydHNNb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBwcm92aWRlRGJ4TGlzdFZpZXcoRGJ4V2lkZ2V0TGlzdEdyaWRWaWV3Q29tcG9uZW50KVxufSlcbmV4cG9ydCBjbGFzcyBEYnhXaWRnZXRMaXN0R3JpZFZpZXdDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdERieExpc3RHcmlkVmlld0RpcmVjdGl2ZTxEYnhXaWRnZXREYXRhUGFpcj4ge1xuICByZWFkb25seSBjb25maWc6IERieFZhbHVlTGlzdEdyaWRWaWV3Q29uZmlnPERieFdpZGdldERhdGFQYWlyV2l0aFNlbGVjdGlvbj4gPSB7XG4gICAgZ3JpZDoge1xuICAgICAgLy8gVE9ETzogTWFrZSBjb25maWd1cmFibGUuXG4gICAgICBjb2x1bW5zOiAncmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDEyMHB4LCAxZnIpKScsXG4gICAgICBnYXA6ICc4cHgnXG4gICAgfSxcbiAgICBjb21wb25lbnRDbGFzczogRGJ4V2lkZ2V0TGlzdEdyaWRWaWV3SXRlbUNvbXBvbmVudCxcbiAgICBtYXBWYWx1ZXNUb0l0ZW1WYWx1ZXM6ICh4KSA9PiBvZih4Lm1hcCgoeSkgPT4gKHsgLi4ueSwgaXRlbVZhbHVlOiB5IH0pKSlcbiAgfTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGRieC13aWRnZXQtdmlldyBbY29uZmlnXT1cIml0ZW1WYWx1ZVwiPjwvZGJ4LXdpZGdldC12aWV3PlxuICBgLFxuICBpbXBvcnRzOiBbRGJ4V2lkZ2V0Vmlld0NvbXBvbmVudF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERieFdpZGdldExpc3RHcmlkVmlld0l0ZW1Db21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdERieFZhbHVlTGlzdFZpZXdJdGVtQ29tcG9uZW50PERieFdpZGdldERhdGFQYWlyPiB7fVxuIl19
@@ -1,8 +1,9 @@
1
1
  import { InfiniteScrollDirective } from 'ngx-infinite-scroll';
2
- import { catchError, filter, exhaustMap, merge, map, Subject, switchMap, shareReplay, of, first, distinctUntilChanged } from 'rxjs';
2
+ import { catchError, filter, exhaustMap, merge, map, Subject, switchMap, shareReplay, of, first, distinctUntilChanged, combineLatest } from 'rxjs';
3
3
  import { Component, ElementRef, HostListener, Directive, inject, ChangeDetectionStrategy, input, output, signal, computed } from '@angular/core';
4
4
  import { DbxInjectionComponent } from '@dereekb/dbx-core';
5
5
  import { SubscriptionObject, filterMaybe, isLoadingStateFinishedLoading, startWithBeginLoading, listLoadingStateContext, switchMapMaybe } from '@dereekb/rxjs';
6
+ import { invertMaybeBoolean } from '@dereekb/util';
6
7
  import { toObservable, toSignal } from '@angular/core/rxjs-interop';
7
8
  import { DbxLoadingComponent } from '../../loading/loading.component';
8
9
  import * as i0 from "@angular/core";
@@ -58,6 +59,8 @@ export class DbxListComponent {
58
59
  config = input(undefined);
59
60
  disabled = input(false);
60
61
  selectionMode = input(undefined);
62
+ hasMore = input(undefined);
63
+ hasMore$ = toObservable(this.hasMore);
61
64
  _internalContentSignal = signal(undefined);
62
65
  nativeElementSignal = computed(() => this._internalContentSignal()?.elementRef?.nativeElement);
63
66
  _loadMoreTrigger = new Subject();
@@ -69,6 +72,8 @@ export class DbxListComponent {
69
72
  _onSelectionChangeSub = new SubscriptionObject();
70
73
  currentState$ = toObservable(this.state).pipe(switchMapMaybe());
71
74
  context = listLoadingStateContext({ obs: this.currentState$, showLoadingOnNoValue: false });
75
+ hasMoreFromCurrentState$ = this.currentState$.pipe(map((x) => x?.hasNextPage));
76
+ isEnd$ = combineLatest([this.hasMore$, this.hasMoreFromCurrentState$]).pipe(map((x) => invertMaybeBoolean(x[0] ?? x[1])), distinctUntilChanged(), shareReplay(1));
72
77
  isEmpty$ = this.context.isEmpty$;
73
78
  isEmptyLoading$ = this.context.isEmptyLoading$;
74
79
  isEmptyAndNotLoading$ = this.context.isEmptyAndNotLoading$;
@@ -151,6 +156,7 @@ export class DbxListComponent {
151
156
  injectedComponentConfigSignal = toSignal(this.injectedComponentConfig$);
152
157
  isEmptyAndNotLoadingSignal = toSignal(this.isEmptyAndNotLoading$);
153
158
  isEmptyLoadingSignal = toSignal(this.isEmptyLoading$);
159
+ isEndSignal = toSignal(this.isEnd$);
154
160
  ngOnDestroy() {
155
161
  this._scrollTrigger.complete();
156
162
  this._loadMoreTrigger.complete();
@@ -214,13 +220,13 @@ export class DbxListComponent {
214
220
  }
215
221
  }
216
222
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
217
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DbxListComponent, isStandalone: true, selector: "dbx-list", inputs: { padded: { classPropertyName: "padded", publicName: "padded", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { contentScrolled: "contentScrolled" }, host: { properties: { "class.dbx-list-padded": "padded()" }, classAttribute: "d-block dbx-list" }, ngImport: i0, template: "<dbx-loading [context]=\"context\" [linear]=\"true\"></dbx-loading>\n<div dbxListInternalContent [hide]=\"hideContentSignal()\" infinite-scroll [infiniteScrollDistance]=\"infiniteScrollDistanceSignal()\" [infiniteScrollUpDistance]=\"infiniteScrollDistanceSignal()\" [infiniteScrollThrottle]=\"infiniteScrollThrottleSignal()\" [scrollWindow]=\"false\" (scrolled)=\"onScrollDown()\" (scrolledUp)=\"onScrollUp()\">\n <ng-content select=\"[top]\"></ng-content>\n <dbx-injection [config]=\"injectedComponentConfigSignal()\"></dbx-injection>\n <ng-content select=\"[bottom]\"></ng-content>\n</div>\n@if (isEmptyAndNotLoadingSignal()) {\n <ng-content select=\"[empty]\"></ng-content>\n}\n@if (isEmptyLoadingSignal()) {\n <ng-content select=\"[emptyLoading]\"></ng-content>\n}\n", dependencies: [{ kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }, { kind: "directive", type: InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "directive", type: DbxListInternalContentDirective, selector: "[dbxListInternalContent]", inputs: ["hide"] }, { kind: "component", type: DbxLoadingComponent, selector: "dbx-loading", inputs: ["padding", "show", "text", "mode", "color", "diameter", "linear", "loading", "error", "context"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
223
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DbxListComponent, isStandalone: true, selector: "dbx-list", inputs: { padded: { classPropertyName: "padded", publicName: "padded", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, hasMore: { classPropertyName: "hasMore", publicName: "hasMore", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { contentScrolled: "contentScrolled" }, host: { properties: { "class.dbx-list-padded": "padded()" }, classAttribute: "d-block dbx-list" }, ngImport: i0, template: "<dbx-loading [context]=\"context\" [linear]=\"true\"></dbx-loading>\n<div dbxListInternalContent [hide]=\"hideContentSignal()\" infinite-scroll [infiniteScrollDistance]=\"infiniteScrollDistanceSignal()\" [infiniteScrollUpDistance]=\"infiniteScrollDistanceSignal()\" [infiniteScrollThrottle]=\"infiniteScrollThrottleSignal()\" [scrollWindow]=\"false\" (scrolled)=\"onScrollDown()\" (scrolledUp)=\"onScrollUp()\">\n <ng-content select=\"[top]\"></ng-content>\n <dbx-injection [config]=\"injectedComponentConfigSignal()\"></dbx-injection>\n <ng-content select=\"[bottom]\"></ng-content>\n @if (isEndSignal()) {\n <ng-content select=\"[end]\"></ng-content>\n }\n</div>\n@if (isEmptyAndNotLoadingSignal()) {\n <ng-content select=\"[empty]\"></ng-content>\n}\n@if (isEmptyLoadingSignal()) {\n <ng-content select=\"[emptyLoading]\"></ng-content>\n}\n", dependencies: [{ kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }, { kind: "directive", type: InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "directive", type: DbxListInternalContentDirective, selector: "[dbxListInternalContent]", inputs: ["hide"] }, { kind: "component", type: DbxLoadingComponent, selector: "dbx-loading", inputs: ["padding", "show", "text", "mode", "color", "diameter", "linear", "loading", "error", "context"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
218
224
  }
219
225
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxListComponent, decorators: [{
220
226
  type: Component,
221
227
  args: [{ selector: 'dbx-list', host: {
222
228
  class: 'd-block dbx-list',
223
229
  '[class.dbx-list-padded]': 'padded()'
224
- }, imports: [DbxInjectionComponent, InfiniteScrollDirective, DbxListInternalContentDirective, DbxLoadingComponent], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<dbx-loading [context]=\"context\" [linear]=\"true\"></dbx-loading>\n<div dbxListInternalContent [hide]=\"hideContentSignal()\" infinite-scroll [infiniteScrollDistance]=\"infiniteScrollDistanceSignal()\" [infiniteScrollUpDistance]=\"infiniteScrollDistanceSignal()\" [infiniteScrollThrottle]=\"infiniteScrollThrottleSignal()\" [scrollWindow]=\"false\" (scrolled)=\"onScrollDown()\" (scrolledUp)=\"onScrollUp()\">\n <ng-content select=\"[top]\"></ng-content>\n <dbx-injection [config]=\"injectedComponentConfigSignal()\"></dbx-injection>\n <ng-content select=\"[bottom]\"></ng-content>\n</div>\n@if (isEmptyAndNotLoadingSignal()) {\n <ng-content select=\"[empty]\"></ng-content>\n}\n@if (isEmptyLoadingSignal()) {\n <ng-content select=\"[emptyLoading]\"></ng-content>\n}\n" }]
230
+ }, imports: [DbxInjectionComponent, InfiniteScrollDirective, DbxListInternalContentDirective, DbxLoadingComponent], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<dbx-loading [context]=\"context\" [linear]=\"true\"></dbx-loading>\n<div dbxListInternalContent [hide]=\"hideContentSignal()\" infinite-scroll [infiniteScrollDistance]=\"infiniteScrollDistanceSignal()\" [infiniteScrollUpDistance]=\"infiniteScrollDistanceSignal()\" [infiniteScrollThrottle]=\"infiniteScrollThrottleSignal()\" [scrollWindow]=\"false\" (scrolled)=\"onScrollDown()\" (scrolledUp)=\"onScrollUp()\">\n <ng-content select=\"[top]\"></ng-content>\n <dbx-injection [config]=\"injectedComponentConfigSignal()\"></dbx-injection>\n <ng-content select=\"[bottom]\"></ng-content>\n @if (isEndSignal()) {\n <ng-content select=\"[end]\"></ng-content>\n }\n</div>\n@if (isEmptyAndNotLoadingSignal()) {\n <ng-content select=\"[empty]\"></ng-content>\n}\n@if (isEmptyLoadingSignal()) {\n <ng-content select=\"[emptyLoading]\"></ng-content>\n}\n" }]
225
231
  }] });
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtd2ViL3NyYy9saWIvbGF5b3V0L2xpc3QvbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtd2ViL3NyYy9saWIvbGF5b3V0L2xpc3QvbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQWMsS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hKLE9BQU8sRUFBRSxTQUFTLEVBQWEsVUFBVSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SixPQUFPLEVBQUUscUJBQXFCLEVBQStCLE1BQU0sbUJBQW1CLENBQUM7QUFDdkYsT0FBTyxFQUFFLGtCQUFrQixFQUFvQixXQUFXLEVBQUUsNkJBQTZCLEVBQUUscUJBQXFCLEVBQUUsdUJBQXVCLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2pMLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBRXRFLHdDQUF3QztBQUN4Qzs7R0FFRztBQVNILE1BQU0sT0FBTywrQkFBK0I7SUFDekIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxD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LENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsaUJBQWlCO0lBQ2pCLGtCQUFrQixDQUFDLE9BQXdDO1FBQ3pELElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQyxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0ZBQWdGLENBQUMsQ0FBQztRQUNwRyxDQUFDO0lBQ0gsQ0FBQzt3R0F2UFUsZ0JBQWdCOzRGQUFoQixnQkFBZ0IsbTJCQ3ZIN0IseXdCQVlBLDRDRHVHWSxxQkFBcUIsMkhBQUUsdUJBQXVCLDBXQTdGN0MsK0JBQStCLHVGQTZGaUQsbUJBQW1COzs0RkFJbkcsZ0JBQWdCO2tCQVg1QixTQUFTOytCQUNFLFVBQVUsUUFFZDt3QkFDSixLQUFLLEVBQUUsa0JBQWtCO3dCQUN6Qix5QkFBeUIsRUFBRSxVQUFVO3FCQUN0QyxXQUNRLENBQUMscUJBQXFCLEVBQUUsdUJBQXVCLEVBQUUsK0JBQStCLEVBQUUsbUJBQW1CLENBQUMsbUJBQzlGLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluZmluaXRlU2Nyb2xsRGlyZWN0aXZlIH0gZnJvbSAnbmd4LWluZmluaXRlLXNjcm9sbCc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIGV4aGF1c3RNYXAsIG1lcmdlLCBtYXAsIFN1YmplY3QsIHN3aXRjaE1hcCwgc2hhcmVSZXBsYXksIG9mLCBPYnNlcnZhYmxlLCBmaXJzdCwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIERpcmVjdGl2ZSwgaW5qZWN0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgaW5wdXQsIG91dHB1dCwgc2lnbmFsLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJ4SW5qZWN0aW9uQ29tcG9uZW50LCBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWcgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb25PYmplY3QsIExpc3RMb2FkaW5nU3RhdGUsIGZpbHRlck1heWJlLCBpc0xvYWRpbmdTdGF0ZUZpbmlzaGVkTG9hZGluZywgc3RhcnRXaXRoQmVnaW5Mb2FkaW5nLCBsaXN0TG9hZGluZ1N0YXRlQ29udGV4dCwgc3dpdGNoTWFwTWF5YmUgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IE1heWJlLCBNaWxsaXNlY29uZHMgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IERieExpc3RTZWxlY3Rpb25Nb2RlLCBEYnhMaXN0VmlldywgTGlzdFNlbGVjdGlvblN0YXRlIH0gZnJvbSAnLi9saXN0LnZpZXcnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IERieExvYWRpbmdDb21wb25lbnQgfSBmcm9tICcuLi8uLi9sb2FkaW5nL2xvYWRpbmcuY29tcG9uZW50JztcblxuLy8gTUFSSzogRGJ4TGlzdEludGVybmFsQ29udGVudERpcmVjdGl2ZVxuLyoqXG4gKiBVc2VkIGludGVybmFsbHkgYnkgRGJ4TGlzdENvbXBvbmVudFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZGJ4TGlzdEludGVybmFsQ29udGVudF0nLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdkLWJsb2NrIGRieC1saXN0LWNvbnRlbnQnLFxuICAgICdbY2xhc3MuZGJ4LWxpc3QtY29udGVudC1oaWRkZW5dJzogJ2hpZGUoKSdcbiAgfSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEYnhMaXN0SW50ZXJuYWxDb250ZW50RGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBwYXJlbnQgPSBpbmplY3QoRGJ4TGlzdENvbXBvbmVudCk7XG5cbiAgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICByZWFkb25seSBoaWRlID0gaW5wdXQ8TWF5YmU8Ym9vbGVhbj4+KGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnBhcmVudC5zZXRJbnRlcm5hbENvbnRlbnQodGhpcyk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdzY3JvbGwnLCBbJyRldmVudCddKVxuICBvblNjcm9sbEV2ZW50KCRldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBwb3NpdGlvbiA9ICgkZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpLnNjcm9sbFRvcDtcbiAgICB0aGlzLnBhcmVudC5jb250ZW50U2Nyb2xsZWQuZW1pdChwb3NpdGlvbik7XG4gIH1cbn1cblxuLy8gTUFSSzogRGJ4TGlzdFxuLyoqXG4gKiBEaXJlY3Rpb24gdGhlIHNjcm9sbCB3YXMgdHJpZ2dlcmVkIG1vdmluZy5cbiAqL1xuZXhwb3J0IHR5cGUgRGJ4TGlzdFNjcm9sbERpcmVjdGlvblRyaWdnZXIgPSAndXAnIHwgJ2Rvd24nO1xuXG4vKipcbiAqIFVzZWQgdG8gdHJpZ2dlciB0aGUgbG9hZGluZyBvZiBhZGRpdGlvbmFsIGl0ZW1zLlxuICpcbiAqIElmIGFuIG9ic2VydmFibGUgaXMgcmV0dXJuZWQgaXQgaXMgdXNlZCB0byB0aHJvdHRsZSB0aGUgbG9hZGluZyBvZiBtb3JlIGl0ZW1zIHVudGlsIGl0IHJldHVybnMuXG4gKi9cbmV4cG9ydCB0eXBlIERieExpc3RMb2FkTW9yZUhhbmRsZXIgPSAoKSA9PiBPYnNlcnZhYmxlPHZvaWQ+IHwgdm9pZDtcblxuLyoqXG4gKiBEYnhMaXN0Q29tcG9uZW50IGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4TGlzdENvbmZpZzxUID0gdW5rbm93biwgViBleHRlbmRzIERieExpc3RWaWV3PFQ+ID0gRGJ4TGlzdFZpZXc8VD4+IGV4dGVuZHMgRGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnPFY+IHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGhpZGUgdGhlIGxpc3QgY29udGVudCB3aGVuIGl0IGlzIGFuIGVtcHR5IGxpc3QuXG4gICAqL1xuICByZWFkb25seSBoaWRlT25FbXB0eT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoaXMgbGlzdCBzaG91bGQgc2Nyb2xsIHVwd2FyZCBmcm9tIHRoZSBib3R0b20sIGxpa2UgYSBtZXNzYWdlIGxpc3QuXG4gICAqL1xuICByZWFkb25seSBpbnZlcnRlZExpc3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEaXN0YW5jZSB0byBzY3JvbGwuXG4gICAqL1xuICByZWFkb25seSBzY3JvbGxEaXN0YW5jZT86IG51bWJlcjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIG1zIHRvIHRocm90dGxlIHNjcm9sbGluZyBldmVudHMuXG4gICAqL1xuICByZWFkb25seSB0aHJvdHRsZT86IE1pbGxpc2Vjb25kcztcblxuICAvKipcbiAgICogKE9wdGlvbmFsKSBvbkNsaWNrIGhhbmRsZXJcbiAgICovXG4gIHJlYWRvbmx5IG9uQ2xpY2s/OiAodmFsdWU6IFQpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCkgb25TZWxlY3Rpb24gaGFuZGxlclxuICAgKi9cbiAgcmVhZG9ubHkgb25TZWxlY3Rpb25DaGFuZ2U/OiAoc2VsZWN0aW9uOiBMaXN0U2VsZWN0aW9uU3RhdGU8VD4pID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCkgaGFuZGxlciBmdW5jdGlvbiB0byBsb2FkIG1vcmUgaXRlbXMuXG4gICAqL1xuICByZWFkb25seSBsb2FkTW9yZT86IERieExpc3RMb2FkTW9yZUhhbmRsZXI7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgc2VsZWN0aW9uIGxpc3QgdmFsdWUuIElmIG5vdCBkZWZpbmVkLCB3aWxsIGRlZmF1bHQgdG8gJ3ZpZXcnLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdFNlbGVjdGlvbk1vZGU/OiBNYXliZTxEYnhMaXN0U2VsZWN0aW9uTW9kZT47XG59XG5cbmV4cG9ydCB0eXBlIERieExpc3RDb21wb25lbnRTY3JvbGxlZEV2ZW50UG9zaXRpb24gPSBudW1iZXI7XG5cbmV4cG9ydCBjb25zdCBEQlhfTElTVF9ERUZBVUxUX1NDUk9MTF9ESVNUQU5DRSA9IDEuNTtcbmV4cG9ydCBjb25zdCBEQlhfTElTVF9ERUZBVUxUX1RIUk9UVExFX1NDUk9MTCA9IDUwO1xuXG4vKipcbiAqIFVzZWQgdG8gZGlzcGxheSBhIHBvdGVudGlhbGx5IGluZmluaXRlbHkgc2Nyb2xsYWJsZSBsaXN0IG9mIGNvbnRlbnQuXG4gKlxuICogVGhpcyBjb21wb25lbnQgaXMgZ2VuZXJhbGx5IHdyYXBwZWQgYnkgYW5vdGhlciBjb21wb25lbnQgdGhhdCBwcm92aWRlcyB0aGlzIG9uZSBjb25maWd1cmF0aW9uLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYngtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZC1ibG9jayBkYngtbGlzdCcsXG4gICAgJ1tjbGFzcy5kYngtbGlzdC1wYWRkZWRdJzogJ3BhZGRlZCgpJ1xuICB9LFxuICBpbXBvcnRzOiBbRGJ4SW5qZWN0aW9uQ29tcG9uZW50LCBJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSwgRGJ4TGlzdEludGVybmFsQ29udGVudERpcmVjdGl2ZSwgRGJ4TG9hZGluZ0NvbXBvbmVudF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERieExpc3RDb21wb25lbnQ8VCA9IHVua25vd24sIFYgZXh0ZW5kcyBEYnhMaXN0VmlldzxUPiA9IERieExpc3RWaWV3PFQ+LCBTIGV4dGVuZHMgTGlzdExvYWRpbmdTdGF0ZTxUPiA9IExpc3RMb2FkaW5nU3RhdGU8VD4+IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBjb250ZW50IGlzIHNjcm9sbGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudFNjcm9sbGVkID0gb3V0cHV0PERieExpc3RDb21wb25lbnRTY3JvbGxlZEV2ZW50UG9zaXRpb24+KCk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGFkZCBib3R0b20gcGFkZGluZyB0byB0aGUgbGlzdCBjb250ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgcGFkZGVkID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgcmVhZG9ubHkgc3RhdGUgPSBpbnB1dDxNYXliZTxPYnNlcnZhYmxlPE1heWJlPFM+Pj4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGNvbmZpZyA9IGlucHV0PE1heWJlPERieExpc3RDb25maWc8VCwgVj4+Pih1bmRlZmluZWQpO1xuXG4gIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8TWF5YmU8Ym9vbGVhbj4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2VsZWN0aW9uTW9kZSA9IGlucHV0PE1heWJlPERieExpc3RTZWxlY3Rpb25Nb2RlPj4odW5kZWZpbmVkKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pbnRlcm5hbENvbnRlbnRTaWduYWwgPSBzaWduYWw8TWF5YmU8RGJ4TGlzdEludGVybmFsQ29udGVudERpcmVjdGl2ZT4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IG5hdGl2ZUVsZW1lbnRTaWduYWwgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5faW50ZXJuYWxDb250ZW50U2lnbmFsKCk/LmVsZW1lbnRSZWYgYXMgTWF5YmU8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KT8ubmF0aXZlRWxlbWVudCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZE1vcmVUcmlnZ2VyID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2Nyb2xsVHJpZ2dlciA9IG5ldyBTdWJqZWN0PERieExpc3RTY3JvbGxEaXJlY3Rpb25UcmlnZ2VyPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvYWRNb3JlU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vbkNsaWNrU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNhYmxlZFN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2VsZWN0aW9uTW9kZVN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfb25TZWxlY3Rpb25DaGFuZ2VTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG5cbiAgcmVhZG9ubHkgY3VycmVudFN0YXRlJDogT2JzZXJ2YWJsZTxNYXliZTxTPj4gPSB0b09ic2VydmFibGUodGhpcy5zdGF0ZSkucGlwZShzd2l0Y2hNYXBNYXliZSgpKTtcbiAgcmVhZG9ubHkgY29udGV4dCA9IGxpc3RMb2FkaW5nU3RhdGVDb250ZXh0PFQsIFM+KHsgb2JzOiB0aGlzLmN1cnJlbnRTdGF0ZSQsIHNob3dMb2FkaW5nT25Ob1ZhbHVlOiBmYWxzZSB9KTtcblxuICByZWFkb25seSBpc0VtcHR5JCA9IHRoaXMuY29udGV4dC5pc0VtcHR5JDtcbiAgcmVhZG9ubHkgaXNFbXB0eUxvYWRpbmckID0gdGhpcy5jb250ZXh0LmlzRW1wdHlMb2FkaW5nJDtcbiAgcmVhZG9ubHkgaXNFbXB0eUFuZE5vdExvYWRpbmckID0gdGhpcy5jb250ZXh0LmlzRW1wdHlBbmROb3RMb2FkaW5nJDtcblxuICByZWFkb25seSBjb25maWckID0gdG9PYnNlcnZhYmxlKHRoaXMuY29uZmlnKTtcbiAgcmVhZG9ubHkgZGlzYWJsZWQkID0gdG9PYnNlcnZhYmxlKHRoaXMuZGlzYWJsZWQpLnBpcGUoXG4gICAgbWFwKCh4KSA9PiBCb29sZWFuKHgpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0aW9uTW9kZSQgPSB0b09ic2VydmFibGUodGhpcy5zZWxlY3Rpb25Nb2RlKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBoaWRlT25FbXB0eSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmNvbmZpZyQucGlwZShcbiAgICBmaWx0ZXJNYXliZSgpLFxuICAgIG1hcCgoeCkgPT4gQm9vbGVhbih4LmhpZGVPbkVtcHR5KSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGludmVydGVkTGlzdCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmNvbmZpZyQucGlwZShcbiAgICBmaWx0ZXJNYXliZSgpLFxuICAgIG1hcCgoeCkgPT4gQm9vbGVhbih4Py50aHJvdHRsZSkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSB0aHJvdHRsZVNjcm9sbCQ6IE9ic2VydmFibGU8bnVtYmVyPiA9IHRoaXMuY29uZmlnJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geD8udGhyb3R0bGUgPz8gREJYX0xJU1RfREVGQVVMVF9USFJPVFRMRV9TQ1JPTEwpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzY3JvbGxEaXN0YW5jZSQ6IE9ic2VydmFibGU8bnVtYmVyPiA9IHRoaXMuY29uZmlnJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geD8uc2Nyb2xsRGlzdGFuY2UgPz8gREJYX0xJU1RfREVGQVVMVF9TQ1JPTExfRElTVEFOQ0UpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzY3JvbGxMb2FkTW9yZVRyaWdnZXIkID0gdGhpcy5jb25maWckLnBpcGUoXG4gICAgc3dpdGNoTWFwKChjb25maWcpID0+IHtcbiAgICAgIGNvbnN0IGxvYWROZXh0RGlyZWN0aW9uID0gY29uZmlnPy5pbnZlcnRlZExpc3QgPyAndXAnIDogJ2Rvd24nO1xuICAgICAgcmV0dXJuIHRoaXMuX3Njcm9sbFRyaWdnZXIucGlwZShmaWx0ZXIoKHgpID0+IHggPT09IGxvYWROZXh0RGlyZWN0aW9uKSk7XG4gICAgfSlcbiAgKTtcblxuICByZWFkb25seSBsb2FkTW9yZSQgPSBtZXJnZSh0aGlzLnNjcm9sbExvYWRNb3JlVHJpZ2dlciQsIHRoaXMuX2xvYWRNb3JlVHJpZ2dlcik7XG5cbiAgcmVhZG9ubHkgaW5qZWN0ZWRDb21wb25lbnRDb25maWckOiBPYnNlcnZhYmxlPE1heWJlPERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZzxWPj4+ID0gdGhpcy5jb25maWckLnBpcGUoXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBtYXAoKGNvbmZpZykgPT4ge1xuICAgICAgbGV0IGluamVjdGVkQ29tcG9uZW50Q29uZmlnOiBNYXliZTxEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc8Vj4+O1xuXG4gICAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgIGNvbnN0IHsgY29tcG9uZW50Q2xhc3MsIGluaXQsIG9uQ2xpY2ssIG9uU2VsZWN0aW9uQ2hhbmdlLCBsb2FkTW9yZSwgZGVmYXVsdFNlbGVjdGlvbk1vZGUgPSAndmlldycgfSA9IGNvbmZpZztcblxuICAgICAgICBpbmplY3RlZENvbXBvbmVudENvbmZpZyA9IHtcbiAgICAgICAgICBjb21wb25lbnRDbGFzczogY29uZmlnLmNvbXBvbmVudENsYXNzLFxuICAgICAgICAgIGluamVjdG9yOiBjb25maWcuaW5qZWN0b3IsXG4gICAgICAgICAgaW5pdDogKGluc3RhbmNlOiBWKSA9PiB7XG4gICAgICAgICAgICAvLyBTeW5jaHJvbml6ZSBkaXNhYmxlZFxuICAgICAgICAgICAgdGhpcy5fZGlzYWJsZWRTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5kaXNhYmxlZCQuc3Vic2NyaWJlKChkaXNhYmxlZCkgPT4gaW5zdGFuY2Uuc2V0RGlzYWJsZWQoZGlzYWJsZWQpKTtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5zZWxlY3Rpb25Nb2RlJC5zdWJzY3JpYmUoKHNlbGVjdGlvbk1vZGUpID0+IGluc3RhbmNlLnNldFNlbGVjdGlvbk1vZGUoc2VsZWN0aW9uTW9kZSA/PyBkZWZhdWx0U2VsZWN0aW9uTW9kZSkpO1xuXG4gICAgICAgICAgICBpZiAoaW5pdCkge1xuICAgICAgICAgICAgICBpbml0KGluc3RhbmNlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaW5zdGFuY2Uuc2V0TGlzdENvbnRleHQodGhpcy5jb250ZXh0KTtcblxuICAgICAgICAgICAgaWYgKGxvYWRNb3JlKSB7XG4gICAgICAgICAgICAgIHRoaXMuX2xvYWRNb3JlU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMubG9hZE1vcmUkXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAvLyBUaHJvdHRsZSBhZGRpdGlvbmFsIGxvYWRpbmcgY2FsbHMgdXNpbmcgZXhoYXVzdE1hcCB1bnRpbCBvYnNlcnZhYmxlIHJldHVybnMsIGlmIG9uZSBpcyByZXR1cm5lZC5cbiAgICAgICAgICAgICAgICAgIGV4aGF1c3RNYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBsb2FkTW9yZSgpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgb2JzOiBPYnNlcnZhYmxlPHZvaWQ+O1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBvYnMgPSByZXN1bHQucGlwZShjYXRjaEVycm9yKCgpID0+IG9mKCkpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBvYnMgPSBvZigpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9icztcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9uQ2xpY2spIHtcbiAgICAgICAgICAgICAgaWYgKGluc3RhbmNlLmNsaWNrVmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9vbkNsaWNrU3ViLnN1YnNjcmlwdGlvbiA9IGluc3RhbmNlLmNsaWNrVmFsdWUuc3Vic2NyaWJlKG9uQ2xpY2spO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYG9uQ2xpY2soKSB3YXMgcGFzc2VkIHRvIGxpc3RDb25maWcsIGJ1dCB0YXJnZXQgY2xhc3MgJHtjb21wb25lbnRDbGFzc30gaGFzIG5vIGNsaWNrZWQgZXZlbnQgZW1pdHRlci5gKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob25TZWxlY3Rpb25DaGFuZ2UpIHtcbiAgICAgICAgICAgICAgaWYgKGluc3RhbmNlLnNlbGVjdGlvbkNoYW5nZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX29uU2VsZWN0aW9uQ2hhbmdlU3ViLnN1YnNjcmlwdGlvbiA9IGluc3RhbmNlLnNlbGVjdGlvbkNoYW5nZS5zdWJzY3JpYmUob25TZWxlY3Rpb25DaGFuZ2UpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYG9uU2VsZWN0aW9uQ2hhbmdlKCkgd2FzIHBhc3NlZCB0byBsaXN0Q29uZmlnLCBidXQgdGFyZ2V0IGNsYXNzICR7Y29tcG9uZW50Q2xhc3N9IGhhcyBubyBzZWxlY3Rpb25DaGFuZ2UgZXZlbnQgZW1pdHRlci5gKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluamVjdGVkQ29tcG9uZW50Q29uZmlnO1xuICAgIH0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBoaWRlQ29udGVudCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmNvbnRleHQuY3VycmVudFN0YXRlU3RyZWFtJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgdGhpcy5jb250ZXh0LnN0YXRlJC5waXBlKFxuICAgICAgICBmaWx0ZXIoKHgpID0+IGlzTG9hZGluZ1N0YXRlRmluaXNoZWRMb2FkaW5nKHgpKSxcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgc3RhcnRXaXRoQmVnaW5Mb2FkaW5nKClcbiAgICAgIClcbiAgICApLFxuICAgIHN3aXRjaE1hcCgoc3RhdGUpID0+IHtcbiAgICAgIGlmIChzdGF0ZT8ubG9hZGluZykge1xuICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5oaWRlT25FbXB0eSQucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoKGhpZGUpID0+IChoaWRlID09PSBmYWxzZSA/IG9mKGZhbHNlKSA6IHRoaXMuaXNFbXB0eSQpKSxcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGluZmluaXRlU2Nyb2xsRGlzdGFuY2VTaWduYWwgPSB0b1NpZ25hbCh0aGlzLnNjcm9sbERpc3RhbmNlJCwgeyBpbml0aWFsVmFsdWU6IERCWF9MSVNUX0RFRkFVTFRfU0NST0xMX0RJU1RBTkNFIH0pO1xuICByZWFkb25seSBpbmZpbml0ZVNjcm9sbFRocm90dGxlU2lnbmFsID0gdG9TaWduYWwodGhpcy50aHJvdHRsZVNjcm9sbCQsIHsgaW5pdGlhbFZhbHVlOiBEQlhfTElTVF9ERUZBVUxUX1RIUk9UVExFX1NDUk9MTCB9KTtcbiAgcmVhZG9ubHkgaGlkZUNvbnRlbnRTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmhpZGVDb250ZW50JCk7XG4gIHJlYWRvbmx5IGluamVjdGVkQ29tcG9uZW50Q29uZmlnU2lnbmFsID0gdG9TaWduYWwodGhpcy5pbmplY3RlZENvbXBvbmVudENvbmZpZyQpO1xuICByZWFkb25seSBpc0VtcHR5QW5kTm90TG9hZGluZ1NpZ25hbCA9IHRvU2lnbmFsKHRoaXMuaXNFbXB0eUFuZE5vdExvYWRpbmckKTtcbiAgcmVhZG9ubHkgaXNFbXB0eUxvYWRpbmdTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmlzRW1wdHlMb2FkaW5nJCk7XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc2Nyb2xsVHJpZ2dlci5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2xvYWRNb3JlVHJpZ2dlci5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy5fb25DbGlja1N1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fbG9hZE1vcmVTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX29uU2VsZWN0aW9uQ2hhbmdlU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9kaXNhYmxlZFN1Yi5kZXN0cm95KCk7XG5cbiAgICB0aGlzLmNvbnRleHQuZGVzdHJveSgpO1xuICB9XG5cbiAgZ2V0U2Nyb2xsUG9zaXRpb25SZWxhdGl2ZVRvQm90dG9tKCk6IG51bWJlciB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMubmF0aXZlRWxlbWVudFNpZ25hbCgpO1xuXG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIEF0IG1heCBzY3JvbGwsIHNjcm9sbEhlaWdodCA9IHNjcm9sbFRvcCArIGNsaWVudEhlaWdodDtcbiAgICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBlbGVtZW50O1xuICAgICAgICByZXR1cm4gc2Nyb2xsSGVpZ2h0IC0gKHNjcm9sbFRvcCArIGNsaWVudEhlaWdodCk7XG4gICAgICB9IGNhdGNoIChlKSB7fVxuICAgIH1cblxuICAgIHJldHVybiAwO1xuICB9XG5cbiAganVtcFRvQm90dG9tKCk6IHZvaWQge1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLm5hdGl2ZUVsZW1lbnRTaWduYWwoKTtcblxuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICBlbGVtZW50LnNjcm9sbFRvcCA9IGVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIC8vIGRvIG5vdGhpbmcuXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAganVtcFRvUG9zaXRpb25SZWxhdGl2ZVRvQm90dG9tKHBvczogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMubmF0aXZlRWxlbWVudFNpZ25hbCgpO1xuXG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IGVsZW1lbnQ7XG4gICAgICAgIGVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsSGVpZ2h0IC0gKGNsaWVudEhlaWdodCArIHBvcyk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gZG8gbm90aGluZy5cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvblNjcm9sbERvd24oKTogdm9pZCB7XG4gICAgdGhpcy5fc2Nyb2xsVHJpZ2dlci5uZXh0KCdkb3duJyk7XG4gIH1cblxuICBvblNjcm9sbFVwKCk6IHZvaWQge1xuICAgIHRoaXMuX3Njcm9sbFRyaWdnZXIubmV4dCgndXAnKTtcbiAgfVxuXG4gIGxvYWRNb3JlKCk6IHZvaWQge1xuICAgIHRoaXMuX2xvYWRNb3JlVHJpZ2dlci5uZXh0KCk7XG4gIH1cblxuICAvLyBNQVJLOiBJbnRlcm5hbFxuICBzZXRJbnRlcm5hbENvbnRlbnQoY29udGVudDogRGJ4TGlzdEludGVybmFsQ29udGVudERpcmVjdGl2ZSkge1xuICAgIGlmICh0aGlzLl9pbnRlcm5hbENvbnRlbnRTaWduYWwoKSA9PSBudWxsKSB7XG4gICAgICB0aGlzLl9pbnRlcm5hbENvbnRlbnRTaWduYWwuc2V0KGNvbnRlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0dGVtcHRlZCB0byBzZXQgaW50ZXJuYWwgY29udGVudCBpbiBEYnhMaXN0Q29tcG9uZW50IHdoZW4gaXQgd2FzIGFscmVhZHkgc2V0LicpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRieC1sb2FkaW5nIFtjb250ZXh0XT1cImNvbnRleHRcIiBbbGluZWFyXT1cInRydWVcIj48L2RieC1sb2FkaW5nPlxuPGRpdiBkYnhMaXN0SW50ZXJuYWxDb250ZW50IFtoaWRlXT1cImhpZGVDb250ZW50U2lnbmFsKClcIiBpbmZpbml0ZS1zY3JvbGwgW2luZmluaXRlU2Nyb2xsRGlzdGFuY2VdPVwiaW5maW5pdGVTY3JvbGxEaXN0YW5jZVNpZ25hbCgpXCIgW2luZmluaXRlU2Nyb2xsVXBEaXN0YW5jZV09XCJpbmZpbml0ZVNjcm9sbERpc3RhbmNlU2lnbmFsKClcIiBbaW5maW5pdGVTY3JvbGxUaHJvdHRsZV09XCJpbmZpbml0ZVNjcm9sbFRocm90dGxlU2lnbmFsKClcIiBbc2Nyb2xsV2luZG93XT1cImZhbHNlXCIgKHNjcm9sbGVkKT1cIm9uU2Nyb2xsRG93bigpXCIgKHNjcm9sbGVkVXApPVwib25TY3JvbGxVcCgpXCI+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIlt0b3BdXCI+PC9uZy1jb250ZW50PlxuICA8ZGJ4LWluamVjdGlvbiBbY29uZmlnXT1cImluamVjdGVkQ29tcG9uZW50Q29uZmlnU2lnbmFsKClcIj48L2RieC1pbmplY3Rpb24+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIltib3R0b21dXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG5AaWYgKGlzRW1wdHlBbmROb3RMb2FkaW5nU2lnbmFsKCkpIHtcbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2VtcHR5XVwiPjwvbmctY29udGVudD5cbn1cbkBpZiAoaXNFbXB0eUxvYWRpbmdTaWduYWwoKSkge1xuICA8bmctY29udGVudCBzZWxlY3Q9XCJbZW1wdHlMb2FkaW5nXVwiPjwvbmctY29udGVudD5cbn1cbiJdfQ==
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtd2ViL3NyYy9saWIvbGF5b3V0L2xpc3QvbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtd2ViL3NyYy9saWIvbGF5b3V0L2xpc3QvbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQWMsS0FBSyxFQUFFLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvSixPQUFPLEVBQUUsU0FBUyxFQUFhLFVBQVUsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSx1QkFBdUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUosT0FBTyxFQUFFLHFCQUFxQixFQUErQixNQUFNLG1CQUFtQixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBb0IsV0FBVyxFQUFFLDZCQUE2QixFQUFFLHFCQUFxQixFQUFFLHVCQUF1QixFQUFFLGNBQWMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDbk0sT0FBTyxFQUFFLGtCQUFrQixFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUV4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOztBQUV0RSx3Q0FBd0M7QUFDeEM7O0dBRUc7QUFTSCxN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QUM7d0dBbFFVLGdCQUFnQjs0RkFBaEIsZ0JBQWdCLGkrQkN2SDdCLHUxQkFlQSw0Q0RvR1kscUJBQXFCLDJIQUFFLHVCQUF1QiwwV0E3RjdDLCtCQUErQix1RkE2RmlELG1CQUFtQjs7NEZBSW5HLGdCQUFnQjtrQkFYNUIsU0FBUzsrQkFDRSxVQUFVLFFBRWQ7d0JBQ0osS0FBSyxFQUFFLGtCQUFrQjt3QkFDekIseUJBQXlCLEVBQUUsVUFBVTtxQkFDdEMsV0FDUSxDQUFDLHFCQUFxQixFQUFFLHVCQUF1QixFQUFFLCtCQUErQixFQUFFLG1CQUFtQixDQUFDLG1CQUM5Rix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSB9IGZyb20gJ25neC1pbmZpbml0ZS1zY3JvbGwnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBleGhhdXN0TWFwLCBtZXJnZSwgbWFwLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHNoYXJlUmVwbGF5LCBvZiwgT2JzZXJ2YWJsZSwgZmlyc3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBEaXJlY3RpdmUsIGluamVjdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIGlucHV0LCBvdXRwdXQsIHNpZ25hbCwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERieEluamVjdGlvbkNvbXBvbmVudCwgRGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnIH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uT2JqZWN0LCBMaXN0TG9hZGluZ1N0YXRlLCBmaWx0ZXJNYXliZSwgaXNMb2FkaW5nU3RhdGVGaW5pc2hlZExvYWRpbmcsIHN0YXJ0V2l0aEJlZ2luTG9hZGluZywgbGlzdExvYWRpbmdTdGF0ZUNvbnRleHQsIHN3aXRjaE1hcE1heWJlLCBQYWdlTG9hZGluZ1N0YXRlIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBpbnZlcnRNYXliZUJvb2xlYW4sIE1heWJlLCBNaWxsaXNlY29uZHMgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IERieExpc3RTZWxlY3Rpb25Nb2RlLCBEYnhMaXN0VmlldywgTGlzdFNlbGVjdGlvblN0YXRlIH0gZnJvbSAnLi9saXN0LnZpZXcnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IERieExvYWRpbmdDb21wb25lbnQgfSBmcm9tICcuLi8uLi9sb2FkaW5nL2xvYWRpbmcuY29tcG9uZW50JztcblxuLy8gTUFSSzogRGJ4TGlzdEludGVybmFsQ29udGVudERpcmVjdGl2ZVxuLyoqXG4gKiBVc2VkIGludGVybmFsbHkgYnkgRGJ4TGlzdENvbXBvbmVudFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZGJ4TGlzdEludGVybmFsQ29udGVudF0nLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdkLWJsb2NrIGRieC1saXN0LWNvbnRlbnQnLFxuICAgICdbY2xhc3MuZGJ4LWxpc3QtY29udGVudC1oaWRkZW5dJzogJ2hpZGUoKSdcbiAgfSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEYnhMaXN0SW50ZXJuYWxDb250ZW50RGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBwYXJlbnQgPSBpbmplY3QoRGJ4TGlzdENvbXBvbmVudCk7XG5cbiAgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICByZWFkb25seSBoaWRlID0gaW5wdXQ8TWF5YmU8Ym9vbGVhbj4+KGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnBhcmVudC5zZXRJbnRlcm5hbENvbnRlbnQodGhpcyk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdzY3JvbGwnLCBbJyRldmVudCddKVxuICBvblNjcm9sbEV2ZW50KCRldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBwb3NpdGlvbiA9ICgkZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpLnNjcm9sbFRvcDtcbiAgICB0aGlzLnBhcmVudC5jb250ZW50U2Nyb2xsZWQuZW1pdChwb3NpdGlvbik7XG4gIH1cbn1cblxuLy8gTUFSSzogRGJ4TGlzdFxuLyoqXG4gKiBEaXJlY3Rpb24gdGhlIHNjcm9sbCB3YXMgdHJpZ2dlcmVkIG1vdmluZy5cbiAqL1xuZXhwb3J0IHR5cGUgRGJ4TGlzdFNjcm9sbERpcmVjdGlvblRyaWdnZXIgPSAndXAnIHwgJ2Rvd24nO1xuXG4vKipcbiAqIFVzZWQgdG8gdHJpZ2dlciB0aGUgbG9hZGluZyBvZiBhZGRpdGlvbmFsIGl0ZW1zLlxuICpcbiAqIElmIGFuIG9ic2VydmFibGUgaXMgcmV0dXJuZWQgaXQgaXMgdXNlZCB0byB0aHJvdHRsZSB0aGUgbG9hZGluZyBvZiBtb3JlIGl0ZW1zIHVudGlsIGl0IHJldHVybnMuXG4gKi9cbmV4cG9ydCB0eXBlIERieExpc3RMb2FkTW9yZUhhbmRsZXIgPSAoKSA9PiBPYnNlcnZhYmxlPHZvaWQ+IHwgdm9pZDtcblxuLyoqXG4gKiBEYnhMaXN0Q29tcG9uZW50IGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4TGlzdENvbmZpZzxUID0gdW5rbm93biwgViBleHRlbmRzIERieExpc3RWaWV3PFQ+ID0gRGJ4TGlzdFZpZXc8VD4+IGV4dGVuZHMgRGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnPFY+IHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGhpZGUgdGhlIGxpc3QgY29udGVudCB3aGVuIGl0IGlzIGFuIGVtcHR5IGxpc3QuXG4gICAqL1xuICByZWFkb25seSBoaWRlT25FbXB0eT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoaXMgbGlzdCBzaG91bGQgc2Nyb2xsIHVwd2FyZCBmcm9tIHRoZSBib3R0b20sIGxpa2UgYSBtZXNzYWdlIGxpc3QuXG4gICAqL1xuICByZWFkb25seSBpbnZlcnRlZExpc3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEaXN0YW5jZSB0byBzY3JvbGwuXG4gICAqL1xuICByZWFkb25seSBzY3JvbGxEaXN0YW5jZT86IG51bWJlcjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIG1zIHRvIHRocm90dGxlIHNjcm9sbGluZyBldmVudHMuXG4gICAqL1xuICByZWFkb25seSB0aHJvdHRsZT86IE1pbGxpc2Vjb25kcztcblxuICAvKipcbiAgICogKE9wdGlvbmFsKSBvbkNsaWNrIGhhbmRsZXJcbiAgICovXG4gIHJlYWRvbmx5IG9uQ2xpY2s/OiAodmFsdWU6IFQpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCkgb25TZWxlY3Rpb24gaGFuZGxlclxuICAgKi9cbiAgcmVhZG9ubHkgb25TZWxlY3Rpb25DaGFuZ2U/OiAoc2VsZWN0aW9uOiBMaXN0U2VsZWN0aW9uU3RhdGU8VD4pID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCkgaGFuZGxlciBmdW5jdGlvbiB0byBsb2FkIG1vcmUgaXRlbXMuXG4gICAqL1xuICByZWFkb25seSBsb2FkTW9yZT86IERieExpc3RMb2FkTW9yZUhhbmRsZXI7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgc2VsZWN0aW9uIGxpc3QgdmFsdWUuIElmIG5vdCBkZWZpbmVkLCB3aWxsIGRlZmF1bHQgdG8gJ3ZpZXcnLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdFNlbGVjdGlvbk1vZGU/OiBNYXliZTxEYnhMaXN0U2VsZWN0aW9uTW9kZT47XG59XG5cbmV4cG9ydCB0eXBlIERieExpc3RDb21wb25lbnRTY3JvbGxlZEV2ZW50UG9zaXRpb24gPSBudW1iZXI7XG5cbmV4cG9ydCBjb25zdCBEQlhfTElTVF9ERUZBVUxUX1NDUk9MTF9ESVNUQU5DRSA9IDEuNTtcbmV4cG9ydCBjb25zdCBEQlhfTElTVF9ERUZBVUxUX1RIUk9UVExFX1NDUk9MTCA9IDUwO1xuXG4vKipcbiAqIFVzZWQgdG8gZGlzcGxheSBhIHBvdGVudGlhbGx5IGluZmluaXRlbHkgc2Nyb2xsYWJsZSBsaXN0IG9mIGNvbnRlbnQuXG4gKlxuICogVGhpcyBjb21wb25lbnQgaXMgZ2VuZXJhbGx5IHdyYXBwZWQgYnkgYW5vdGhlciBjb21wb25lbnQgdGhhdCBwcm92aWRlcyB0aGlzIG9uZSBjb25maWd1cmF0aW9uLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYngtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZC1ibG9jayBkYngtbGlzdCcsXG4gICAgJ1tjbGFzcy5kYngtbGlzdC1wYWRkZWRdJzogJ3BhZGRlZCgpJ1xuICB9LFxuICBpbXBvcnRzOiBbRGJ4SW5qZWN0aW9uQ29tcG9uZW50LCBJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSwgRGJ4TGlzdEludGVybmFsQ29udGVudERpcmVjdGl2ZSwgRGJ4TG9hZGluZ0NvbXBvbmVudF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERieExpc3RDb21wb25lbnQ8VCA9IHVua25vd24sIFYgZXh0ZW5kcyBEYnhMaXN0VmlldzxUPiA9IERieExpc3RWaWV3PFQ+LCBTIGV4dGVuZHMgTGlzdExvYWRpbmdTdGF0ZTxUPiA9IExpc3RMb2FkaW5nU3RhdGU8VD4+IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBjb250ZW50IGlzIHNjcm9sbGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudFNjcm9sbGVkID0gb3V0cHV0PERieExpc3RDb21wb25lbnRTY3JvbGxlZEV2ZW50UG9zaXRpb24+KCk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGFkZCBib3R0b20gcGFkZGluZyB0byB0aGUgbGlzdCBjb250ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgcGFkZGVkID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgcmVhZG9ubHkgc3RhdGUgPSBpbnB1dDxNYXliZTxPYnNlcnZhYmxlPE1heWJlPFM+Pj4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGNvbmZpZyA9IGlucHV0PE1heWJlPERieExpc3RDb25maWc8VCwgVj4+Pih1bmRlZmluZWQpO1xuXG4gIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8TWF5YmU8Ym9vbGVhbj4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2VsZWN0aW9uTW9kZSA9IGlucHV0PE1heWJlPERieExpc3RTZWxlY3Rpb25Nb2RlPj4odW5kZWZpbmVkKTtcblxuICByZWFkb25seSBoYXNNb3JlID0gaW5wdXQ8TWF5YmU8Ym9vbGVhbj4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGhhc01vcmUkID0gdG9PYnNlcnZhYmxlKHRoaXMuaGFzTW9yZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfaW50ZXJuYWxDb250ZW50U2lnbmFsID0gc2lnbmFsPE1heWJlPERieExpc3RJbnRlcm5hbENvbnRlbnREaXJlY3RpdmU+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBuYXRpdmVFbGVtZW50U2lnbmFsID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuX2ludGVybmFsQ29udGVudFNpZ25hbCgpPy5lbGVtZW50UmVmIGFzIE1heWJlPEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+Pik/Lm5hdGl2ZUVsZW1lbnQpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvYWRNb3JlVHJpZ2dlciA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Njcm9sbFRyaWdnZXIgPSBuZXcgU3ViamVjdDxEYnhMaXN0U2Nyb2xsRGlyZWN0aW9uVHJpZ2dlcj4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9sb2FkTW9yZVN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfb25DbGlja1N1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzYWJsZWRTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdGlvbk1vZGVTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX29uU2VsZWN0aW9uQ2hhbmdlU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRTdGF0ZSQ6IE9ic2VydmFibGU8TWF5YmU8Uz4+ID0gdG9PYnNlcnZhYmxlKHRoaXMuc3RhdGUpLnBpcGUoc3dpdGNoTWFwTWF5YmUoKSk7XG4gIHJlYWRvbmx5IGNvbnRleHQgPSBsaXN0TG9hZGluZ1N0YXRlQ29udGV4dDxULCBTPih7IG9iczogdGhpcy5jdXJyZW50U3RhdGUkLCBzaG93TG9hZGluZ09uTm9WYWx1ZTogZmFsc2UgfSk7XG5cbiAgcmVhZG9ubHkgaGFzTW9yZUZyb21DdXJyZW50U3RhdGUkID0gdGhpcy5jdXJyZW50U3RhdGUkLnBpcGUobWFwKCh4KSA9PiAoeCBhcyB1bmtub3duIGFzIFBhZ2VMb2FkaW5nU3RhdGUpPy5oYXNOZXh0UGFnZSkpO1xuICByZWFkb25seSBpc0VuZCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmhhc01vcmUkLCB0aGlzLmhhc01vcmVGcm9tQ3VycmVudFN0YXRlJF0pLnBpcGUoXG4gICAgbWFwKCh4KSA9PiBpbnZlcnRNYXliZUJvb2xlYW4oeFswXSA/PyB4WzFdKSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlzRW1wdHkkID0gdGhpcy5jb250ZXh0LmlzRW1wdHkkO1xuICByZWFkb25seSBpc0VtcHR5TG9hZGluZyQgPSB0aGlzLmNvbnRleHQuaXNFbXB0eUxvYWRpbmckO1xuICByZWFkb25seSBpc0VtcHR5QW5kTm90TG9hZGluZyQgPSB0aGlzLmNvbnRleHQuaXNFbXB0eUFuZE5vdExvYWRpbmckO1xuXG4gIHJlYWRvbmx5IGNvbmZpZyQgPSB0b09ic2VydmFibGUodGhpcy5jb25maWcpO1xuICByZWFkb25seSBkaXNhYmxlZCQgPSB0b09ic2VydmFibGUodGhpcy5kaXNhYmxlZCkucGlwZShcbiAgICBtYXAoKHgpID0+IEJvb2xlYW4oeCkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzZWxlY3Rpb25Nb2RlJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLnNlbGVjdGlvbk1vZGUpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IGhpZGVPbkVtcHR5JDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuY29uZmlnJC5waXBlKFxuICAgIGZpbHRlck1heWJlKCksXG4gICAgbWFwKCh4KSA9PiBCb29sZWFuKHguaGlkZU9uRW1wdHkpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaW52ZXJ0ZWRMaXN0JDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuY29uZmlnJC5waXBlKFxuICAgIGZpbHRlck1heWJlKCksXG4gICAgbWFwKCh4KSA9PiBCb29sZWFuKHg/LnRocm90dGxlKSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHRocm90dGxlU2Nyb2xsJDogT2JzZXJ2YWJsZTxudW1iZXI+ID0gdGhpcy5jb25maWckLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4Py50aHJvdHRsZSA/PyBEQlhfTElTVF9ERUZBVUxUX1RIUk9UVExFX1NDUk9MTCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHNjcm9sbERpc3RhbmNlJDogT2JzZXJ2YWJsZTxudW1iZXI+ID0gdGhpcy5jb25maWckLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4Py5zY3JvbGxEaXN0YW5jZSA/PyBEQlhfTElTVF9ERUZBVUxUX1NDUk9MTF9ESVNUQU5DRSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHNjcm9sbExvYWRNb3JlVHJpZ2dlciQgPSB0aGlzLmNvbmZpZyQucGlwZShcbiAgICBzd2l0Y2hNYXAoKGNvbmZpZykgPT4ge1xuICAgICAgY29uc3QgbG9hZE5leHREaXJlY3Rpb24gPSBjb25maWc/LmludmVydGVkTGlzdCA/ICd1cCcgOiAnZG93bic7XG4gICAgICByZXR1cm4gdGhpcy5fc2Nyb2xsVHJpZ2dlci5waXBlKGZpbHRlcigoeCkgPT4geCA9PT0gbG9hZE5leHREaXJlY3Rpb24pKTtcbiAgICB9KVxuICApO1xuXG4gIHJlYWRvbmx5IGxvYWRNb3JlJCA9IG1lcmdlKHRoaXMuc2Nyb2xsTG9hZE1vcmVUcmlnZ2VyJCwgdGhpcy5fbG9hZE1vcmVUcmlnZ2VyKTtcblxuICByZWFkb25seSBpbmplY3RlZENvbXBvbmVudENvbmZpZyQ6IE9ic2VydmFibGU8TWF5YmU8RGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnPFY+Pj4gPSB0aGlzLmNvbmZpZyQucGlwZShcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIG1hcCgoY29uZmlnKSA9PiB7XG4gICAgICBsZXQgaW5qZWN0ZWRDb21wb25lbnRDb25maWc6IE1heWJlPERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZzxWPj47XG5cbiAgICAgIGlmIChjb25maWcpIHtcbiAgICAgICAgY29uc3QgeyBjb21wb25lbnRDbGFzcywgaW5pdCwgb25DbGljaywgb25TZWxlY3Rpb25DaGFuZ2UsIGxvYWRNb3JlLCBkZWZhdWx0U2VsZWN0aW9uTW9kZSA9ICd2aWV3JyB9ID0gY29uZmlnO1xuXG4gICAgICAgIGluamVjdGVkQ29tcG9uZW50Q29uZmlnID0ge1xuICAgICAgICAgIGNvbXBvbmVudENsYXNzOiBjb25maWcuY29tcG9uZW50Q2xhc3MsXG4gICAgICAgICAgaW5qZWN0b3I6IGNvbmZpZy5pbmplY3RvcixcbiAgICAgICAgICBpbml0OiAoaW5zdGFuY2U6IFYpID0+IHtcbiAgICAgICAgICAgIC8vIFN5bmNocm9uaXplIGRpc2FibGVkXG4gICAgICAgICAgICB0aGlzLl9kaXNhYmxlZFN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLmRpc2FibGVkJC5zdWJzY3JpYmUoKGRpc2FibGVkKSA9PiBpbnN0YW5jZS5zZXREaXNhYmxlZChkaXNhYmxlZCkpO1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZVN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLnNlbGVjdGlvbk1vZGUkLnN1YnNjcmliZSgoc2VsZWN0aW9uTW9kZSkgPT4gaW5zdGFuY2Uuc2V0U2VsZWN0aW9uTW9kZShzZWxlY3Rpb25Nb2RlID8/IGRlZmF1bHRTZWxlY3Rpb25Nb2RlKSk7XG5cbiAgICAgICAgICAgIGlmIChpbml0KSB7XG4gICAgICAgICAgICAgIGluaXQoaW5zdGFuY2UpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbnN0YW5jZS5zZXRMaXN0Q29udGV4dCh0aGlzLmNvbnRleHQpO1xuXG4gICAgICAgICAgICBpZiAobG9hZE1vcmUpIHtcbiAgICAgICAgICAgICAgdGhpcy5fbG9hZE1vcmVTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5sb2FkTW9yZSRcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgIC8vIFRocm90dGxlIGFkZGl0aW9uYWwgbG9hZGluZyBjYWxscyB1c2luZyBleGhhdXN0TWFwIHVudGlsIG9ic2VydmFibGUgcmV0dXJucywgaWYgb25lIGlzIHJldHVybmVkLlxuICAgICAgICAgICAgICAgICAgZXhoYXVzdE1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGxvYWRNb3JlKCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBvYnM6IE9ic2VydmFibGU8dm9pZD47XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgIG9icyA9IHJlc3VsdC5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YoKSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIG9icyA9IG9mKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2JzO1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob25DbGljaykge1xuICAgICAgICAgICAgICBpZiAoaW5zdGFuY2UuY2xpY2tWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX29uQ2xpY2tTdWIuc3Vic2NyaXB0aW9uID0gaW5zdGFuY2UuY2xpY2tWYWx1ZS5zdWJzY3JpYmUob25DbGljayk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgb25DbGljaygpIHdhcyBwYXNzZWQgdG8gbGlzdENvbmZpZywgYnV0IHRhcmdldCBjbGFzcyAke2NvbXBvbmVudENsYXNzfSBoYXMgbm8gY2xpY2tlZCBldmVudCBlbWl0dGVyLmApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvblNlbGVjdGlvbkNoYW5nZSkge1xuICAgICAgICAgICAgICBpZiAoaW5zdGFuY2Uuc2VsZWN0aW9uQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb25TZWxlY3Rpb25DaGFuZ2VTdWIuc3Vic2NyaXB0aW9uID0gaW5zdGFuY2Uuc2VsZWN0aW9uQ2hhbmdlLnN1YnNjcmliZShvblNlbGVjdGlvbkNoYW5nZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgb25TZWxlY3Rpb25DaGFuZ2UoKSB3YXMgcGFzc2VkIHRvIGxpc3RDb25maWcsIGJ1dCB0YXJnZXQgY2xhc3MgJHtjb21wb25lbnRDbGFzc30gaGFzIG5vIHNlbGVjdGlvbkNoYW5nZSBldmVudCBlbWl0dGVyLmApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5qZWN0ZWRDb21wb25lbnRDb25maWc7XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGhpZGVDb250ZW50JDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuY29udGV4dC5jdXJyZW50U3RhdGVTdHJlYW0kLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICB0aGlzLmNvbnRleHQuc3RhdGUkLnBpcGUoXG4gICAgICAgIGZpbHRlcigoeCkgPT4gaXNMb2FkaW5nU3RhdGVGaW5pc2hlZExvYWRpbmcoeCkpLFxuICAgICAgICBmaXJzdCgpLFxuICAgICAgICBzdGFydFdpdGhCZWdpbkxvYWRpbmcoKVxuICAgICAgKVxuICAgICksXG4gICAgc3dpdGNoTWFwKChzdGF0ZSkgPT4ge1xuICAgICAgaWYgKHN0YXRlPy5sb2FkaW5nKSB7XG4gICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhpZGVPbkVtcHR5JC5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCgoaGlkZSkgPT4gKGhpZGUgPT09IGZhbHNlID8gb2YoZmFsc2UpIDogdGhpcy5pc0VtcHR5JCkpLFxuICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaW5maW5pdGVTY3JvbGxEaXN0YW5jZVNpZ25hbCA9IHRvU2lnbmFsKHRoaXMuc2Nyb2xsRGlzdGFuY2UkLCB7IGluaXRpYWxWYWx1ZTogREJYX0xJU1RfREVGQVVMVF9TQ1JPTExfRElTVEFOQ0UgfSk7XG4gIHJlYWRvbmx5IGluZmluaXRlU2Nyb2xsVGhyb3R0bGVTaWduYWwgPSB0b1NpZ25hbCh0aGlzLnRocm90dGxlU2Nyb2xsJCwgeyBpbml0aWFsVmFsdWU6IERCWF9MSVNUX0RFRkFVTFRfVEhST1RUTEVfU0NST0xMIH0pO1xuICByZWFkb25seSBoaWRlQ29udGVudFNpZ25hbCA9IHRvU2lnbmFsKHRoaXMuaGlkZUNvbnRlbnQkKTtcbiAgcmVhZG9ubHkgaW5qZWN0ZWRDb21wb25lbnRDb25maWdTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmluamVjdGVkQ29tcG9uZW50Q29uZmlnJCk7XG4gIHJlYWRvbmx5IGlzRW1wdHlBbmROb3RMb2FkaW5nU2lnbmFsID0gdG9TaWduYWwodGhpcy5pc0VtcHR5QW5kTm90TG9hZGluZyQpO1xuICByZWFkb25seSBpc0VtcHR5TG9hZGluZ1NpZ25hbCA9IHRvU2lnbmFsKHRoaXMuaXNFbXB0eUxvYWRpbmckKTtcbiAgcmVhZG9ubHkgaXNFbmRTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmlzRW5kJCk7XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc2Nyb2xsVHJpZ2dlci5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2xvYWRNb3JlVHJpZ2dlci5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy5fb25DbGlja1N1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fbG9hZE1vcmVTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX29uU2VsZWN0aW9uQ2hhbmdlU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9kaXNhYmxlZFN1Yi5kZXN0cm95KCk7XG5cbiAgICB0aGlzLmNvbnRleHQuZGVzdHJveSgpO1xuICB9XG5cbiAgZ2V0U2Nyb2xsUG9zaXRpb25SZWxhdGl2ZVRvQm90dG9tKCk6IG51bWJlciB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMubmF0aXZlRWxlbWVudFNpZ25hbCgpO1xuXG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIEF0IG1heCBzY3JvbGwsIHNjcm9sbEhlaWdodCA9IHNjcm9sbFRvcCArIGNsaWVudEhlaWdodDtcbiAgICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBlbGVtZW50O1xuICAgICAgICByZXR1cm4gc2Nyb2xsSGVpZ2h0IC0gKHNjcm9sbFRvcCArIGNsaWVudEhlaWdodCk7XG4gICAgICB9IGNhdGNoIChlKSB7fVxuICAgIH1cblxuICAgIHJldHVybiAwO1xuICB9XG5cbiAganVtcFRvQm90dG9tKCk6IHZvaWQge1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLm5hdGl2ZUVsZW1lbnRTaWduYWwoKTtcblxuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICBlbGVtZW50LnNjcm9sbFRvcCA9IGVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIC8vIGRvIG5vdGhpbmcuXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAganVtcFRvUG9zaXRpb25SZWxhdGl2ZVRvQm90dG9tKHBvczogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMubmF0aXZlRWxlbWVudFNpZ25hbCgpO1xuXG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IGVsZW1lbnQ7XG4gICAgICAgIGVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsSGVpZ2h0IC0gKGNsaWVudEhlaWdodCArIHBvcyk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gZG8gbm90aGluZy5cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvblNjcm9sbERvd24oKTogdm9pZCB7XG4gICAgdGhpcy5fc2Nyb2xsVHJpZ2dlci5uZXh0KCdkb3duJyk7XG4gIH1cblxuICBvblNjcm9sbFVwKCk6IHZvaWQge1xuICAgIHRoaXMuX3Njcm9sbFRyaWdnZXIubmV4dCgndXAnKTtcbiAgfVxuXG4gIGxvYWRNb3JlKCk6IHZvaWQge1xuICAgIHRoaXMuX2xvYWRNb3JlVHJpZ2dlci5uZXh0KCk7XG4gIH1cblxuICAvLyBNQVJLOiBJbnRlcm5hbFxuICBzZXRJbnRlcm5hbENvbnRlbnQoY29udGVudDogRGJ4TGlzdEludGVybmFsQ29udGVudERpcmVjdGl2ZSkge1xuICAgIGlmICh0aGlzLl9pbnRlcm5hbENvbnRlbnRTaWduYWwoKSA9PSBudWxsKSB7XG4gICAgICB0aGlzLl9pbnRlcm5hbENvbnRlbnRTaWduYWwuc2V0KGNvbnRlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0dGVtcHRlZCB0byBzZXQgaW50ZXJuYWwgY29udGVudCBpbiBEYnhMaXN0Q29tcG9uZW50IHdoZW4gaXQgd2FzIGFscmVhZHkgc2V0LicpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRieC1sb2FkaW5nIFtjb250ZXh0XT1cImNvbnRleHRcIiBbbGluZWFyXT1cInRydWVcIj48L2RieC1sb2FkaW5nPlxuPGRpdiBkYnhMaXN0SW50ZXJuYWxDb250ZW50IFtoaWRlXT1cImhpZGVDb250ZW50U2lnbmFsKClcIiBpbmZpbml0ZS1zY3JvbGwgW2luZmluaXRlU2Nyb2xsRGlzdGFuY2VdPVwiaW5maW5pdGVTY3JvbGxEaXN0YW5jZVNpZ25hbCgpXCIgW2luZmluaXRlU2Nyb2xsVXBEaXN0YW5jZV09XCJpbmZpbml0ZVNjcm9sbERpc3RhbmNlU2lnbmFsKClcIiBbaW5maW5pdGVTY3JvbGxUaHJvdHRsZV09XCJpbmZpbml0ZVNjcm9sbFRocm90dGxlU2lnbmFsKClcIiBbc2Nyb2xsV2luZG93XT1cImZhbHNlXCIgKHNjcm9sbGVkKT1cIm9uU2Nyb2xsRG93bigpXCIgKHNjcm9sbGVkVXApPVwib25TY3JvbGxVcCgpXCI+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIlt0b3BdXCI+PC9uZy1jb250ZW50PlxuICA8ZGJ4LWluamVjdGlvbiBbY29uZmlnXT1cImluamVjdGVkQ29tcG9uZW50Q29uZmlnU2lnbmFsKClcIj48L2RieC1pbmplY3Rpb24+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIltib3R0b21dXCI+PC9uZy1jb250ZW50PlxuICBAaWYgKGlzRW5kU2lnbmFsKCkpIHtcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZW5kXVwiPjwvbmctY29udGVudD5cbiAgfVxuPC9kaXY+XG5AaWYgKGlzRW1wdHlBbmROb3RMb2FkaW5nU2lnbmFsKCkpIHtcbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2VtcHR5XVwiPjwvbmctY29udGVudD5cbn1cbkBpZiAoaXNFbXB0eUxvYWRpbmdTaWduYWwoKSkge1xuICA8bmctY29udGVudCBzZWxlY3Q9XCJbZW1wdHlMb2FkaW5nXVwiPjwvbmctY29udGVudD5cbn1cbiJdfQ==
@@ -6,11 +6,12 @@ import { toObservable, toSignal } from '@angular/core/rxjs-interop';
6
6
  import * as i0 from "@angular/core";
7
7
  // MARK: Wrapper
8
8
  export const DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION_TEMPLATE = `
9
- <dbx-list [state]="currentState$" [config]="configSignal()" [disabled]="disabled()" [selectionMode]="selectionModeSignal()">
9
+ <dbx-list [state]="currentState$" [config]="configSignal()" [hasMore]="hasMore()" [disabled]="disabled()" [selectionMode]="selectionModeSignal()">
10
10
  <ng-content top select="[top]"></ng-content>
11
11
  <ng-content bottom select="[bottom]"></ng-content>
12
12
  <ng-content empty select="[empty]"></ng-content>
13
13
  <ng-content emptyLoading select="[emptyLoading]"></ng-content>
14
+ <ng-content end select="[end]"></ng-content>
14
15
  </dbx-list>`;
15
16
  const dbxListWrapperComponentImportsAndExports = [DbxListComponent];
16
17
  export class DbxListWrapperComponentImportsModule {
@@ -30,6 +31,7 @@ export class AbstractDbxListWrapperDirective {
30
31
  _stateOverride = new BehaviorSubject(undefined);
31
32
  _selectionModeOverride = new BehaviorSubject(undefined);
32
33
  _selectionModeOverrideSignal = toSignal(this._selectionModeOverride.pipe(maybeValueFromObservableOrValue()));
34
+ hasMore = input(undefined);
33
35
  clickItem = output();
34
36
  loadMore = output();
35
37
  disabled = input();
@@ -67,7 +69,7 @@ export class AbstractDbxListWrapperDirective {
67
69
  };
68
70
  }
69
71
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxListWrapperDirective, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
70
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: AbstractDbxListWrapperDirective, inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, deprecatedInputState$: { classPropertyName: "deprecatedInputState$", publicName: "state$", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clickItem: "clickItem", loadMore: "loadMore" }, ngImport: i0 });
72
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: AbstractDbxListWrapperDirective, inputs: { hasMore: { classPropertyName: "hasMore", publicName: "hasMore", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, deprecatedInputState$: { classPropertyName: "deprecatedInputState$", publicName: "state$", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clickItem: "clickItem", loadMore: "loadMore" }, ngImport: i0 });
71
73
  }
72
74
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxListWrapperDirective, decorators: [{
73
75
  type: Directive
@@ -90,4 +92,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
90
92
  * @deprecated update components to use DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION instead of just referencing only the template and DbxListWrapperComponentImportsModule.
91
93
  */
92
94
  export const DEFAULT_LIST_WRAPPER_DIRECTIVE_TEMPLATE = DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION_TEMPLATE;
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtd2ViL3NyYy9saWIvbGF5b3V0L2xpc3QvbGlzdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QywrQkFBK0IsRUFBMEIsTUFBTSxlQUFlLENBQUM7QUFDN0gsT0FBTyxFQUFjLGVBQWUsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRixPQUFPLEVBQWEsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFVLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQWlCLE1BQU0sa0JBQWtCLENBQUM7QUFJbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFcEUsZ0JBQWdCO0FBQ2hCLE1BQU0sQ0FBQyxNQUFNLHFEQUFxRCxHQUFHOzs7Ozs7Y0FNdkQsQ0FBQztBQUVmLE1BQU0sd0NBQXdDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBTXBFLE1BQU0sT0FBTyxvQ0FBb0M7d0dBQXBDLG9DQUFvQzt5R0FBcEMsb0NBQW9DLFlBTkMsZ0JBQWdCLGFBQWhCLGdCQUFnQjt5R0FNckQsb0NBQW9DLFlBRnRDLHdDQUF3Qzs7NEZBRXRDLG9DQUFvQztrQkFKaEQsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsd0NBQXdDO29CQUNqRCxPQUFPLEVBQUUsd0NBQXdDO2lCQUNsRDs7QUFNRCxNQUFNLE9BQWdCLCtCQUErQjtJQUNsQyxPQUFPLEdBQUcsSUFBSSxlQUFlLENBQTRCLFNBQVMsQ0FBQyxDQUFDO0lBQ3BFLGNBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBNEIsU0FBUyxDQUFDLENBQUM7SUFDM0Usc0JBQXNCLEdBQUcsSUFB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M0MsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBc0MsQ0FBQztRQUNuRixNQUFNLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9ELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7d0dBUG1CLHdDQUF3Qzs0RkFBeEMsd0NBQXdDOzs0RkFBeEMsd0NBQXdDO2tCQUQ3RCxTQUFTOztBQVdWLGVBQWU7QUFDZjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFHLHFEQUFxRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGlzdExvYWRpbmdTdGF0ZSwgT2JzZXJ2YWJsZU9yVmFsdWUsIG1heWJlVmFsdWVGcm9tT2JzZXJ2YWJsZU9yVmFsdWUsIE1heWJlT2JzZXJ2YWJsZU9yVmFsdWUgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIEJlaGF2aW9yU3ViamVjdCwgbWFwLCBzaGFyZVJlcGxheSwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT25EZXN0cm95LCBEaXJlY3RpdmUsIGlucHV0LCBvdXRwdXQsIGNvbXB1dGVkLCBTaWduYWwsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYnhMaXN0Q29tcG9uZW50LCBEYnhMaXN0Q29uZmlnIH0gZnJvbSAnLi9saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYnhMaXN0U2VsZWN0aW9uTW9kZSwgRGJ4TGlzdFZpZXcsIExpc3RTZWxlY3Rpb25TdGF0ZSB9IGZyb20gJy4vbGlzdC52aWV3JztcbmltcG9ydCB7IENvbmZpZ3VyYWJsZSwgdHlwZSBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRGJ4TGlzdFZpZXdXcmFwcGVyIH0gZnJvbSAnLi9saXN0LndyYXBwZXInO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuLy8gTUFSSzogV3JhcHBlclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTElTVF9XUkFQUEVSX0NPTVBPTkVOVF9DT05GSUdVUkFUSU9OX1RFTVBMQVRFID0gYFxuICA8ZGJ4LWxpc3QgW3N0YXRlXT1cImN1cnJlbnRTdGF0ZSRcIiBbY29uZmlnXT1cImNvbmZpZ1NpZ25hbCgpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIiBbc2VsZWN0aW9uTW9kZV09XCJzZWxlY3Rpb25Nb2RlU2lnbmFsKClcIj5cbiAgICA8bmctY29udGVudCB0b3Agc2VsZWN0PVwiW3RvcF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgYm90dG9tIHNlbGVjdD1cIltib3R0b21dXCI+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IGVtcHR5IHNlbGVjdD1cIltlbXB0eV1cIj48L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgZW1wdHlMb2FkaW5nIHNlbGVjdD1cIltlbXB0eUxvYWRpbmddXCI+PC9uZy1jb250ZW50PlxuICA8L2RieC1saXN0PmA7XG5cbmNvbnN0IGRieExpc3RXcmFwcGVyQ29tcG9uZW50SW1wb3J0c0FuZEV4cG9ydHMgPSBbRGJ4TGlzdENvbXBvbmVudF07XG5cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IGRieExpc3RXcmFwcGVyQ29tcG9uZW50SW1wb3J0c0FuZEV4cG9ydHMsXG4gIGltcG9ydHM6IGRieExpc3RXcmFwcGVyQ29tcG9uZW50SW1wb3J0c0FuZEV4cG9ydHNcbn0pXG5leHBvcnQgY2xhc3MgRGJ4TGlzdFdyYXBwZXJDb21wb25lbnRJbXBvcnRzTW9kdWxlIHt9XG5cbmV4cG9ydCB0eXBlIERieExpc3RXcmFwcGVyQ29uZmlnPFQsIFYgZXh0ZW5kcyBEYnhMaXN0VmlldzxUPiA9IERieExpc3RWaWV3PFQ+PiA9IE9taXQ8RGJ4TGlzdENvbmZpZzxULCBWPiwgJ29uQ2xpY2snIHwgJ2xvYWRNb3JlJz47XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RGJ4TGlzdFdyYXBwZXJEaXJlY3RpdmU8VCwgViBleHRlbmRzIERieExpc3RWaWV3PFQ+ID0gRGJ4TGlzdFZpZXc8VD4sIEMgZXh0ZW5kcyBEYnhMaXN0V3JhcHBlckNvbmZpZzxULCBWPiA9IERieExpc3RXcmFwcGVyQ29uZmlnPFQsIFY+LCBTIGV4dGVuZHMgTGlzdExvYWRpbmdTdGF0ZTxUPiA9IExpc3RMb2FkaW5nU3RhdGU8VD4+IGltcGxlbWVudHMgT25EZXN0cm95LCBEYnhMaXN0Vmlld1dyYXBwZXI8VCwgUz4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb25maWcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlT2JzZXJ2YWJsZU9yVmFsdWU8Qz4+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXRlT3ZlcnJpZGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlT2JzZXJ2YWJsZU9yVmFsdWU8Uz4+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdGlvbk1vZGVPdmVycmlkZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmVPYnNlcnZhYmxlT3JWYWx1ZTxEYnhMaXN0U2VsZWN0aW9uTW9kZT4+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdGlvbk1vZGVPdmVycmlkZVNpZ25hbCA9IHRvU2lnbmFsKHRoaXMuX3NlbGVjdGlvbk1vZGVPdmVycmlkZS5waXBlKG1heWJlVmFsdWVGcm9tT2JzZXJ2YWJsZU9yVmFsdWUoKSkpO1xuXG4gIHJlYWRvbmx5IGNsaWNrSXRlbSA9IG91dHB1dDxUPigpO1xuICByZWFkb25seSBsb2FkTW9yZSA9IG91dHB1dDx2b2lkPigpO1xuXG4gIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8TWF5YmU8Ym9vbGVhbj4+KCk7XG4gIHJlYWRvbmx5IHNlbGVjdGlvbk1vZGUgPSBpbnB1dDxNYXliZTxEYnhMaXN0U2VsZWN0aW9uTW9kZT4+KCk7XG4gIHJlYWRvbmx5IHN0YXRlID0gaW5wdXQ8TWF5YmU8T2JzZXJ2YWJsZU9yVmFsdWU8Uz4+PigpO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2Ugc3RhdGUgYXMgdGhlIGlucHV0IGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSBkZXByZWNhdGVkSW5wdXRTdGF0ZSQgPSBpbnB1dDxNYXliZTxPYnNlcnZhYmxlPFM+Pj4odW5kZWZpbmVkLCB7IGFsaWFzOiAnc3RhdGUkJyB9KTtcblxuICByZWFkb25seSBzZWxlY3Rpb25Nb2RlU2lnbmFsOiBTaWduYWw8TWF5YmU8RGJ4TGlzdFNlbGVjdGlvbk1vZGU+PiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTW9kZU92ZXJyaWRlU2lnbmFsKCkgPz8gdGhpcy5zZWxlY3Rpb25Nb2RlKCk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRTdGF0ZSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9zdGF0ZU92ZXJyaWRlLCB0b09ic2VydmFibGUodGhpcy5zdGF0ZSksIHRvT2JzZXJ2YWJsZSh0aGlzLmRlcHJlY2F0ZWRJbnB1dFN0YXRlJCldKS5waXBlKFxuICAgIG1hcCgoW3N0YXRlT3ZlcnJpZGUsIHN0YXRlLCBzdGF0ZSRdKSA9PiBzdGF0ZU92ZXJyaWRlID8/IHN0YXRlID8/IHN0YXRlJCksXG4gICAgbWF5YmVWYWx1ZUZyb21PYnNlcnZhYmxlT3JWYWx1ZSgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY29uZmlnJCA9IHRoaXMuX2NvbmZpZy5waXBlKFxuICAgIG1heWJlVmFsdWVGcm9tT2JzZXJ2YWJsZU9yVmFsdWUoKSxcbiAgICBtYXAoKHg6IE1heWJlPEM+KSA9PiAoeCA/IHRoaXMuX2J1aWxkTGlzdENvbmZpZyh4KSA6IHVuZGVmaW5lZCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY29uZmlnU2lnbmFsID0gdG9TaWduYWwodGhpcy5jb25maWckKTtcblxuICBjb25zdHJ1Y3Rvcihpbml0Q29uZmlnOiBPYnNlcnZhYmxlT3JWYWx1ZTxDPikge1xuICAgIHRoaXMuX2NvbmZpZy5uZXh0KGluaXRDb25maWcpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fY29uZmlnLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fc3RhdGVPdmVycmlkZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVPdmVycmlkZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgc2V0U3RhdGUoc3RhdGVPYnM6IE1heWJlT2JzZXJ2YWJsZU9yVmFsdWU8Uz4pOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZU92ZXJyaWRlLm5leHQoc3RhdGVPYnMpO1xuICB9XG5cbiAgc2V0U2VsZWN0aW9uTW9kZShzZWxlY3Rpb25Nb2RlOiBNYXliZU9ic2VydmFibGVPclZhbHVlPERieExpc3RTZWxlY3Rpb25Nb2RlPik6IHZvaWQge1xuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVPdmVycmlkZS5uZXh0KHNlbGVjdGlvbk1vZGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9idWlsZExpc3RDb25maWcoY29uZmlnOiBDKTogRGJ4TGlzdENvbmZpZzxULCBWPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIG9uQ2xpY2s6ICh4KSA9PiB0aGlzLmNsaWNrSXRlbS5lbWl0KHgpLFxuICAgICAgbG9hZE1vcmU6ICgpID0+IHRoaXMubG9hZE1vcmUuZW1pdCgpXG4gICAgfTtcbiAgfVxufVxuXG4vLyBNQVJLOiBTZWxlY3Rpb24gV3JhcHBlclxuZXhwb3J0IHR5cGUgRGJ4U2VsZWN0aW9uTGlzdFdyYXBwZXJDb25maWc8VCwgViBleHRlbmRzIERieExpc3RWaWV3PFQ+ID0gRGJ4TGlzdFZpZXc8VD4+ID0gT21pdDxEYnhMaXN0V3JhcHBlckNvbmZpZzxULCBWPiwgJ29uU2VsZWN0aW9uQ2hhbmdlJz47XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RGJ4U2VsZWN0aW9uTGlzdFdyYXBwZXJEaXJlY3RpdmU8VCwgViBleHRlbmRzIERieExpc3RWaWV3PFQ+ID0gRGJ4TGlzdFZpZXc8VD4sIEMgZXh0ZW5kcyBEYnhTZWxlY3Rpb25MaXN0V3JhcHBlckNvbmZpZzxULCBWPiA9IERieFNlbGVjdGlvbkxpc3RXcmFwcGVyQ29uZmlnPFQsIFY+LCBTIGV4dGVuZHMgTGlzdExvYWRpbmdTdGF0ZTxUPiA9IExpc3RMb2FkaW5nU3RhdGU8VD4+IGV4dGVuZHMgQWJzdHJhY3REYnhMaXN0V3JhcHBlckRpcmVjdGl2ZTxULCBWLCBDLCBTPiB7XG4gIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZSA9IG91dHB1dDxMaXN0U2VsZWN0aW9uU3RhdGU8VD4+KCk7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIF9idWlsZExpc3RDb25maWcoY29uZmlnOiBDKTogRGJ4TGlzdENvbmZpZzxULCBWPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gc3VwZXIuX2J1aWxkTGlzdENvbmZpZyhjb25maWcpIGFzIENvbmZpZ3VyYWJsZTxEYnhMaXN0Q29uZmlnPFQsIFY+PjtcbiAgICByZXN1bHQub25TZWxlY3Rpb25DaGFuZ2UgPSAoeCkgPT4gdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh4KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbi8vIE1BUks6IENPTVBBVFxuLyoqXG4gKiBAZGVwcmVjYXRlZCB1cGRhdGUgY29tcG9uZW50cyB0byB1c2UgREVGQVVMVF9MSVNUX1dSQVBQRVJfQ09NUE9ORU5UX0NPTkZJR1VSQVRJT04gaW5zdGVhZCBvZiBqdXN0IHJlZmVyZW5jaW5nIG9ubHkgdGhlIHRlbXBsYXRlIGFuZCBEYnhMaXN0V3JhcHBlckNvbXBvbmVudEltcG9ydHNNb2R1bGUuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0xJU1RfV1JBUFBFUl9ESVJFQ1RJVkVfVEVNUExBVEUgPSBERUZBVUxUX0xJU1RfV1JBUFBFUl9DT01QT05FTlRfQ09ORklHVVJBVElPTl9URU1QTEFURTtcbiJdfQ==
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtd2ViL3NyYy9saWIvbGF5b3V0L2xpc3QvbGlzdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QywrQkFBK0IsRUFBMEIsTUFBTSxlQUFlLENBQUM7QUFDN0gsT0FBTyxFQUFjLGVBQWUsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRixPQUFPLEVBQWEsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFVLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQWlCLE1BQU0sa0JBQWtCLENBQUM7QUFJbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFcEUsZ0JBQWdCO0FBQ2hCLE1BQU0sQ0FBQyxNQUFNLHFEQUFxRCxHQUFHOzs7Ozs7O2NBT3ZELENBQUM7QUFFZixNQUFNLHdDQUF3QyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQU1wRSxNQUFNLE9BQU8sb0NBQW9DO3dHQUFwQyxvQ0FBb0M7eUdBQXBDLG9DQUFvQyxZQU5DLGdCQUFnQixhQUFoQixnQkFBZ0I7eUdBTXJELG9DQUFvQyxZQUZ0Qyx3Q0FBd0M7OzRGQUV0QyxvQ0FBb0M7a0JBSmhELFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLHdDQUF3QztvQkFDakQsT0FBTyxFQUFFLHdDQUF3QztpQkFDbEQ7O0FBTUQsTUFBTSxPQUFnQiwrQkFBK0I7SUFDbEMsT0FBTyxHQUFHLElBQUksZUFBZSxDQUE0QixTQUFTLENBQUMsQ0FBQztJQUNwRSxjQUFjLEdBQUcsSUFBSSxlQUFlLENBQTRCLFNBQVMsQ0FBQyxDQUFDO0lBQzNFLHNCQUFzQixHQUFHLElB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LE1BQU0sRUFBeUIsQ0FBQztJQUV4QyxnQkFBZ0IsQ0FBQyxNQUFTO1FBQzNDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQXNDLENBQUM7UUFDbkYsTUFBTSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO3dHQVBtQix3Q0FBd0M7NEZBQXhDLHdDQUF3Qzs7NEZBQXhDLHdDQUF3QztrQkFEN0QsU0FBUzs7QUFXVixlQUFlO0FBQ2Y7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSx1Q0FBdUMsR0FBRyxxREFBcUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExpc3RMb2FkaW5nU3RhdGUsIE9ic2VydmFibGVPclZhbHVlLCBtYXliZVZhbHVlRnJvbU9ic2VydmFibGVPclZhbHVlLCBNYXliZU9ic2VydmFibGVPclZhbHVlIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBCZWhhdmlvclN1YmplY3QsIG1hcCwgc2hhcmVSZXBsYXksIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9uRGVzdHJveSwgRGlyZWN0aXZlLCBpbnB1dCwgb3V0cHV0LCBjb21wdXRlZCwgU2lnbmFsLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJ4TGlzdENvbXBvbmVudCwgRGJ4TGlzdENvbmZpZyB9IGZyb20gJy4vbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJ4TGlzdFNlbGVjdGlvbk1vZGUsIERieExpc3RWaWV3LCBMaXN0U2VsZWN0aW9uU3RhdGUgfSBmcm9tICcuL2xpc3Qudmlldyc7XG5pbXBvcnQgeyBDb25maWd1cmFibGUsIHR5cGUgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IERieExpc3RWaWV3V3JhcHBlciB9IGZyb20gJy4vbGlzdC53cmFwcGVyJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbi8vIE1BUks6IFdyYXBwZXJcbmV4cG9ydCBjb25zdCBERUZBVUxUX0xJU1RfV1JBUFBFUl9DT01QT05FTlRfQ09ORklHVVJBVElPTl9URU1QTEFURSA9IGBcbiAgPGRieC1saXN0IFtzdGF0ZV09XCJjdXJyZW50U3RhdGUkXCIgW2NvbmZpZ109XCJjb25maWdTaWduYWwoKVwiIFtoYXNNb3JlXT1cImhhc01vcmUoKVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCIgW3NlbGVjdGlvbk1vZGVdPVwic2VsZWN0aW9uTW9kZVNpZ25hbCgpXCI+XG4gICAgPG5nLWNvbnRlbnQgdG9wIHNlbGVjdD1cIlt0b3BdXCI+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IGJvdHRvbSBzZWxlY3Q9XCJbYm90dG9tXVwiPjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudCBlbXB0eSBzZWxlY3Q9XCJbZW1wdHldXCI+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IGVtcHR5TG9hZGluZyBzZWxlY3Q9XCJbZW1wdHlMb2FkaW5nXVwiPjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudCBlbmQgc2VsZWN0PVwiW2VuZF1cIj48L25nLWNvbnRlbnQ+XG4gIDwvZGJ4LWxpc3Q+YDtcblxuY29uc3QgZGJ4TGlzdFdyYXBwZXJDb21wb25lbnRJbXBvcnRzQW5kRXhwb3J0cyA9IFtEYnhMaXN0Q29tcG9uZW50XTtcblxuQE5nTW9kdWxlKHtcbiAgZXhwb3J0czogZGJ4TGlzdFdyYXBwZXJDb21wb25lbnRJbXBvcnRzQW5kRXhwb3J0cyxcbiAgaW1wb3J0czogZGJ4TGlzdFdyYXBwZXJDb21wb25lbnRJbXBvcnRzQW5kRXhwb3J0c1xufSlcbmV4cG9ydCBjbGFzcyBEYnhMaXN0V3JhcHBlckNvbXBvbmVudEltcG9ydHNNb2R1bGUge31cblxuZXhwb3J0IHR5cGUgRGJ4TGlzdFdyYXBwZXJDb25maWc8VCwgViBleHRlbmRzIERieExpc3RWaWV3PFQ+ID0gRGJ4TGlzdFZpZXc8VD4+ID0gT21pdDxEYnhMaXN0Q29uZmlnPFQsIFY+LCAnb25DbGljaycgfCAnbG9hZE1vcmUnPjtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3REYnhMaXN0V3JhcHBlckRpcmVjdGl2ZTxULCBWIGV4dGVuZHMgRGJ4TGlzdFZpZXc8VD4gPSBEYnhMaXN0VmlldzxUPiwgQyBleHRlbmRzIERieExpc3RXcmFwcGVyQ29uZmlnPFQsIFY+ID0gRGJ4TGlzdFdyYXBwZXJDb25maWc8VCwgVj4sIFMgZXh0ZW5kcyBMaXN0TG9hZGluZ1N0YXRlPFQ+ID0gTGlzdExvYWRpbmdTdGF0ZTxUPj4gaW1wbGVtZW50cyBPbkRlc3Ryb3ksIERieExpc3RWaWV3V3JhcHBlcjxULCBTPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbmZpZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmVPYnNlcnZhYmxlT3JWYWx1ZTxDPj4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhdGVPdmVycmlkZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmVPYnNlcnZhYmxlT3JWYWx1ZTxTPj4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2VsZWN0aW9uTW9kZU92ZXJyaWRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZU9ic2VydmFibGVPclZhbHVlPERieExpc3RTZWxlY3Rpb25Nb2RlPj4odW5kZWZpbmVkKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3Rpb25Nb2RlT3ZlcnJpZGVTaWduYWwgPSB0b1NpZ25hbCh0aGlzLl9zZWxlY3Rpb25Nb2RlT3ZlcnJpZGUucGlwZShtYXliZVZhbHVlRnJvbU9ic2VydmFibGVPclZhbHVlKCkpKTtcblxuICByZWFkb25seSBoYXNNb3JlID0gaW5wdXQ8TWF5YmU8Ym9vbGVhbj4+KHVuZGVmaW5lZCk7XG5cbiAgcmVhZG9ubHkgY2xpY2tJdGVtID0gb3V0cHV0PFQ+KCk7XG4gIHJlYWRvbmx5IGxvYWRNb3JlID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dDxNYXliZTxib29sZWFuPj4oKTtcbiAgcmVhZG9ubHkgc2VsZWN0aW9uTW9kZSA9IGlucHV0PE1heWJlPERieExpc3RTZWxlY3Rpb25Nb2RlPj4oKTtcbiAgcmVhZG9ubHkgc3RhdGUgPSBpbnB1dDxNYXliZTxPYnNlcnZhYmxlT3JWYWx1ZTxTPj4+KCk7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBzdGF0ZSBhcyB0aGUgaW5wdXQgaW5zdGVhZC5cbiAgICovXG4gIHJlYWRvbmx5IGRlcHJlY2F0ZWRJbnB1dFN0YXRlJCA9IGlucHV0PE1heWJlPE9ic2VydmFibGU8Uz4+Pih1bmRlZmluZWQsIHsgYWxpYXM6ICdzdGF0ZSQnIH0pO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGlvbk1vZGVTaWduYWw6IFNpZ25hbDxNYXliZTxEYnhMaXN0U2VsZWN0aW9uTW9kZT4+ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb25Nb2RlT3ZlcnJpZGVTaWduYWwoKSA/PyB0aGlzLnNlbGVjdGlvbk1vZGUoKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgY3VycmVudFN0YXRlJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX3N0YXRlT3ZlcnJpZGUsIHRvT2JzZXJ2YWJsZSh0aGlzLnN0YXRlKSwgdG9PYnNlcnZhYmxlKHRoaXMuZGVwcmVjYXRlZElucHV0U3RhdGUkKV0pLnBpcGUoXG4gICAgbWFwKChbc3RhdGVPdmVycmlkZSwgc3RhdGUsIHN0YXRlJF0pID0+IHN0YXRlT3ZlcnJpZGUgPz8gc3RhdGUgPz8gc3RhdGUkKSxcbiAgICBtYXliZVZhbHVlRnJvbU9ic2VydmFibGVPclZhbHVlKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjb25maWckID0gdGhpcy5fY29uZmlnLnBpcGUoXG4gICAgbWF5YmVWYWx1ZUZyb21PYnNlcnZhYmxlT3JWYWx1ZSgpLFxuICAgIG1hcCgoeDogTWF5YmU8Qz4pID0+ICh4ID8gdGhpcy5fYnVpbGRMaXN0Q29uZmlnKHgpIDogdW5kZWZpbmVkKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjb25maWdTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmNvbmZpZyQpO1xuXG4gIGNvbnN0cnVjdG9yKGluaXRDb25maWc6IE9ic2VydmFibGVPclZhbHVlPEM+KSB7XG4gICAgdGhpcy5fY29uZmlnLm5leHQoaW5pdENvbmZpZyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9jb25maWcuY29tcGxldGUoKTtcbiAgICB0aGlzLl9zdGF0ZU92ZXJyaWRlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZU92ZXJyaWRlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBzZXRTdGF0ZShzdGF0ZU9iczogTWF5YmVPYnNlcnZhYmxlT3JWYWx1ZTxTPik6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlT3ZlcnJpZGUubmV4dChzdGF0ZU9icyk7XG4gIH1cblxuICBzZXRTZWxlY3Rpb25Nb2RlKHNlbGVjdGlvbk1vZGU6IE1heWJlT2JzZXJ2YWJsZU9yVmFsdWU8RGJ4TGlzdFNlbGVjdGlvbk1vZGU+KTogdm9pZCB7XG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZU92ZXJyaWRlLm5leHQoc2VsZWN0aW9uTW9kZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2J1aWxkTGlzdENvbmZpZyhjb25maWc6IEMpOiBEYnhMaXN0Q29uZmlnPFQsIFY+IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgb25DbGljazogKHgpID0+IHRoaXMuY2xpY2tJdGVtLmVtaXQoeCksXG4gICAgICBsb2FkTW9yZTogKCkgPT4gdGhpcy5sb2FkTW9yZS5lbWl0KClcbiAgICB9O1xuICB9XG59XG5cbi8vIE1BUks6IFNlbGVjdGlvbiBXcmFwcGVyXG5leHBvcnQgdHlwZSBEYnhTZWxlY3Rpb25MaXN0V3JhcHBlckNvbmZpZzxULCBWIGV4dGVuZHMgRGJ4TGlzdFZpZXc8VD4gPSBEYnhMaXN0VmlldzxUPj4gPSBPbWl0PERieExpc3RXcmFwcGVyQ29uZmlnPFQsIFY+LCAnb25TZWxlY3Rpb25DaGFuZ2UnPjtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3REYnhTZWxlY3Rpb25MaXN0V3JhcHBlckRpcmVjdGl2ZTxULCBWIGV4dGVuZHMgRGJ4TGlzdFZpZXc8VD4gPSBEYnhMaXN0VmlldzxUPiwgQyBleHRlbmRzIERieFNlbGVjdGlvbkxpc3RXcmFwcGVyQ29uZmlnPFQsIFY+ID0gRGJ4U2VsZWN0aW9uTGlzdFdyYXBwZXJDb25maWc8VCwgVj4sIFMgZXh0ZW5kcyBMaXN0TG9hZGluZ1N0YXRlPFQ+ID0gTGlzdExvYWRpbmdTdGF0ZTxUPj4gZXh0ZW5kcyBBYnN0cmFjdERieExpc3RXcmFwcGVyRGlyZWN0aXZlPFQsIFYsIEMsIFM+IHtcbiAgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlID0gb3V0cHV0PExpc3RTZWxlY3Rpb25TdGF0ZTxUPj4oKTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX2J1aWxkTGlzdENvbmZpZyhjb25maWc6IEMpOiBEYnhMaXN0Q29uZmlnPFQsIFY+IHtcbiAgICBjb25zdCByZXN1bHQgPSBzdXBlci5fYnVpbGRMaXN0Q29uZmlnKGNvbmZpZykgYXMgQ29uZmlndXJhYmxlPERieExpc3RDb25maWc8VCwgVj4+O1xuICAgIHJlc3VsdC5vblNlbGVjdGlvbkNoYW5nZSA9ICh4KSA9PiB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuLy8gTUFSSzogQ09NUEFUXG4vKipcbiAqIEBkZXByZWNhdGVkIHVwZGF0ZSBjb21wb25lbnRzIHRvIHVzZSBERUZBVUxUX0xJU1RfV1JBUFBFUl9DT01QT05FTlRfQ09ORklHVVJBVElPTiBpbnN0ZWFkIG9mIGp1c3QgcmVmZXJlbmNpbmcgb25seSB0aGUgdGVtcGxhdGUgYW5kIERieExpc3RXcmFwcGVyQ29tcG9uZW50SW1wb3J0c01vZHVsZS5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTElTVF9XUkFQUEVSX0RJUkVDVElWRV9URU1QTEFURSA9IERFRkFVTFRfTElTVF9XUkFQUEVSX0NPTVBPTkVOVF9DT05GSUdVUkFUSU9OX1RFTVBMQVRFO1xuIl19
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
2
2
  import { Injectable, input, inject, effect, Directive, NgModule, Component, output, computed, HostListener, InjectionToken, signal, ChangeDetectionStrategy, ElementRef, Injector, viewChild, makeEnvironmentProviders, TemplateRef, SecurityContext, forwardRef, ViewContainerRef, ChangeDetectorRef, Inject, Renderer2 } from '@angular/core';
3
3
  import * as i1$3 from '@dereekb/dbx-core';
4
4
  import { AbstractSubscriptionDirective, AbstractTransitionWatcherDirective, DbxInjectionComponent, AbstractDbxActionValueGetterDirective, AbstractDbxButtonDirective, provideDbxButton, DbxCoreButtonModule, AbstractDbxActionHandlerDirective, FilterSourceDirective, provideActionStoreSource, isClickableFilterPreset, AbstractDbxAnchorDirective, expandClickableAnchorLinkTrees, DbxCoreFilterModule, DbxButton, DBX_INJECTION_COMPONENT_DATA, checkNgContentWrapperHasContent, DbxActionContextStoreSourceInstance, DbxActionSourceDirective, DbxActionSuccessHandlerDirective, DbxActionDirective, DbxActionValueStreamDirective, transformEmptyStringInputToUndefined, isIdleActionState, canTriggerAction, DbxCoreActionModule, DbxActionButtonDirective, onDbxAppAuth, SimpleStorageAccessorFactory, anchorTypeForAnchor, asSegueRef, AbstractTransitionDirective, DbxRouterService, AbstractIfDirective, isSegueRefActive } from '@dereekb/dbx-core';
5
- import { DASH_CHARACTER_PREFIX_INSTANCE, asPromise, cssClassesSet, spaceSeparatedCssClasses, isDefinedAndNotFalse, objectHasNoKeys, getValueFromGetter, firstValue, filterUndefinedValues, filterMaybeArrayValues, mapIterable, toReadableError, isDefaultReadableError, MS_IN_SECOND, mergeObjects, build, ServerErrorResponse, UnauthorizedServerErrorResponse, makeTimer, MS_IN_MINUTE, toggleTimerRunning, unixTimeNumberForNow, ModelRelationUtility, encodeModelKeyTypePair, useIterableOrValue, modifier, maybeModifierMapToFunction, isMaybeNot, isNotFalse, combineMaps, addModifiers, removeModifiers, applyBestFit, findNext, asArray, makeValuesGroupMap, compareWithMappedValuesFunction, splitCommaSeparatedStringToSet } from '@dereekb/util';
5
+ import { DASH_CHARACTER_PREFIX_INSTANCE, asPromise, cssClassesSet, spaceSeparatedCssClasses, isDefinedAndNotFalse, objectHasNoKeys, getValueFromGetter, firstValue, filterUndefinedValues, filterMaybeArrayValues, mapIterable, toReadableError, isDefaultReadableError, MS_IN_SECOND, mergeObjects, build, ServerErrorResponse, UnauthorizedServerErrorResponse, makeTimer, MS_IN_MINUTE, toggleTimerRunning, unixTimeNumberForNow, ModelRelationUtility, encodeModelKeyTypePair, useIterableOrValue, modifier, maybeModifierMapToFunction, invertMaybeBoolean, isMaybeNot, isNotFalse, combineMaps, addModifiers, removeModifiers, applyBestFit, findNext, asArray, makeValuesGroupMap, compareWithMappedValuesFunction, splitCommaSeparatedStringToSet } from '@dereekb/util';
6
6
  import { NgPopoverRef, NgOverlayContainerService } from 'ng-overlay-container';
7
7
  import { of, map, BehaviorSubject, distinctUntilChanged, shareReplay, delay, switchMap, combineLatest, Subject, first, startWith, filter, throttleTime, skip, defaultIfEmpty, delayWhen, timer, asyncScheduler, from, firstValueFrom, mergeMap, race, tap, catchError, merge, exhaustMap, distinct } from 'rxjs';
8
8
  import { filterMaybe, asObservable, LockSet, SubscriptionObject, distinctUntilItemsHaveDifferentValues, skipAllInitialMaybe, maybeValueFromObservableOrValue, switchMapMaybeLoadingContextStream, loadingStateContext, LoadingStateType, loadingStateType, successResult, valueFromFinishedLoadingState, mapForEach, switchMapMaybe, listLoadingStateContext, isLoadingStateFinishedLoading, startWithBeginLoading, initialize, isNot } from '@dereekb/rxjs';
@@ -5981,6 +5981,8 @@ class DbxListComponent {
5981
5981
  config = input(undefined);
5982
5982
  disabled = input(false);
5983
5983
  selectionMode = input(undefined);
5984
+ hasMore = input(undefined);
5985
+ hasMore$ = toObservable(this.hasMore);
5984
5986
  _internalContentSignal = signal(undefined);
5985
5987
  nativeElementSignal = computed(() => this._internalContentSignal()?.elementRef?.nativeElement);
5986
5988
  _loadMoreTrigger = new Subject();
@@ -5992,6 +5994,8 @@ class DbxListComponent {
5992
5994
  _onSelectionChangeSub = new SubscriptionObject();
5993
5995
  currentState$ = toObservable(this.state).pipe(switchMapMaybe());
5994
5996
  context = listLoadingStateContext({ obs: this.currentState$, showLoadingOnNoValue: false });
5997
+ hasMoreFromCurrentState$ = this.currentState$.pipe(map((x) => x?.hasNextPage));
5998
+ isEnd$ = combineLatest([this.hasMore$, this.hasMoreFromCurrentState$]).pipe(map((x) => invertMaybeBoolean(x[0] ?? x[1])), distinctUntilChanged(), shareReplay(1));
5995
5999
  isEmpty$ = this.context.isEmpty$;
5996
6000
  isEmptyLoading$ = this.context.isEmptyLoading$;
5997
6001
  isEmptyAndNotLoading$ = this.context.isEmptyAndNotLoading$;
@@ -6074,6 +6078,7 @@ class DbxListComponent {
6074
6078
  injectedComponentConfigSignal = toSignal(this.injectedComponentConfig$);
6075
6079
  isEmptyAndNotLoadingSignal = toSignal(this.isEmptyAndNotLoading$);
6076
6080
  isEmptyLoadingSignal = toSignal(this.isEmptyLoading$);
6081
+ isEndSignal = toSignal(this.isEnd$);
6077
6082
  ngOnDestroy() {
6078
6083
  this._scrollTrigger.complete();
6079
6084
  this._loadMoreTrigger.complete();
@@ -6137,23 +6142,24 @@ class DbxListComponent {
6137
6142
  }
6138
6143
  }
6139
6144
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6140
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DbxListComponent, isStandalone: true, selector: "dbx-list", inputs: { padded: { classPropertyName: "padded", publicName: "padded", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { contentScrolled: "contentScrolled" }, host: { properties: { "class.dbx-list-padded": "padded()" }, classAttribute: "d-block dbx-list" }, ngImport: i0, template: "<dbx-loading [context]=\"context\" [linear]=\"true\"></dbx-loading>\n<div dbxListInternalContent [hide]=\"hideContentSignal()\" infinite-scroll [infiniteScrollDistance]=\"infiniteScrollDistanceSignal()\" [infiniteScrollUpDistance]=\"infiniteScrollDistanceSignal()\" [infiniteScrollThrottle]=\"infiniteScrollThrottleSignal()\" [scrollWindow]=\"false\" (scrolled)=\"onScrollDown()\" (scrolledUp)=\"onScrollUp()\">\n <ng-content select=\"[top]\"></ng-content>\n <dbx-injection [config]=\"injectedComponentConfigSignal()\"></dbx-injection>\n <ng-content select=\"[bottom]\"></ng-content>\n</div>\n@if (isEmptyAndNotLoadingSignal()) {\n <ng-content select=\"[empty]\"></ng-content>\n}\n@if (isEmptyLoadingSignal()) {\n <ng-content select=\"[emptyLoading]\"></ng-content>\n}\n", dependencies: [{ kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }, { kind: "directive", type: InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "directive", type: DbxListInternalContentDirective, selector: "[dbxListInternalContent]", inputs: ["hide"] }, { kind: "component", type: DbxLoadingComponent, selector: "dbx-loading", inputs: ["padding", "show", "text", "mode", "color", "diameter", "linear", "loading", "error", "context"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6145
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DbxListComponent, isStandalone: true, selector: "dbx-list", inputs: { padded: { classPropertyName: "padded", publicName: "padded", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, hasMore: { classPropertyName: "hasMore", publicName: "hasMore", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { contentScrolled: "contentScrolled" }, host: { properties: { "class.dbx-list-padded": "padded()" }, classAttribute: "d-block dbx-list" }, ngImport: i0, template: "<dbx-loading [context]=\"context\" [linear]=\"true\"></dbx-loading>\n<div dbxListInternalContent [hide]=\"hideContentSignal()\" infinite-scroll [infiniteScrollDistance]=\"infiniteScrollDistanceSignal()\" [infiniteScrollUpDistance]=\"infiniteScrollDistanceSignal()\" [infiniteScrollThrottle]=\"infiniteScrollThrottleSignal()\" [scrollWindow]=\"false\" (scrolled)=\"onScrollDown()\" (scrolledUp)=\"onScrollUp()\">\n <ng-content select=\"[top]\"></ng-content>\n <dbx-injection [config]=\"injectedComponentConfigSignal()\"></dbx-injection>\n <ng-content select=\"[bottom]\"></ng-content>\n @if (isEndSignal()) {\n <ng-content select=\"[end]\"></ng-content>\n }\n</div>\n@if (isEmptyAndNotLoadingSignal()) {\n <ng-content select=\"[empty]\"></ng-content>\n}\n@if (isEmptyLoadingSignal()) {\n <ng-content select=\"[emptyLoading]\"></ng-content>\n}\n", dependencies: [{ kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }, { kind: "directive", type: InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "directive", type: DbxListInternalContentDirective, selector: "[dbxListInternalContent]", inputs: ["hide"] }, { kind: "component", type: DbxLoadingComponent, selector: "dbx-loading", inputs: ["padding", "show", "text", "mode", "color", "diameter", "linear", "loading", "error", "context"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6141
6146
  }
6142
6147
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxListComponent, decorators: [{
6143
6148
  type: Component,
6144
6149
  args: [{ selector: 'dbx-list', host: {
6145
6150
  class: 'd-block dbx-list',
6146
6151
  '[class.dbx-list-padded]': 'padded()'
6147
- }, imports: [DbxInjectionComponent, InfiniteScrollDirective, DbxListInternalContentDirective, DbxLoadingComponent], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<dbx-loading [context]=\"context\" [linear]=\"true\"></dbx-loading>\n<div dbxListInternalContent [hide]=\"hideContentSignal()\" infinite-scroll [infiniteScrollDistance]=\"infiniteScrollDistanceSignal()\" [infiniteScrollUpDistance]=\"infiniteScrollDistanceSignal()\" [infiniteScrollThrottle]=\"infiniteScrollThrottleSignal()\" [scrollWindow]=\"false\" (scrolled)=\"onScrollDown()\" (scrolledUp)=\"onScrollUp()\">\n <ng-content select=\"[top]\"></ng-content>\n <dbx-injection [config]=\"injectedComponentConfigSignal()\"></dbx-injection>\n <ng-content select=\"[bottom]\"></ng-content>\n</div>\n@if (isEmptyAndNotLoadingSignal()) {\n <ng-content select=\"[empty]\"></ng-content>\n}\n@if (isEmptyLoadingSignal()) {\n <ng-content select=\"[emptyLoading]\"></ng-content>\n}\n" }]
6152
+ }, imports: [DbxInjectionComponent, InfiniteScrollDirective, DbxListInternalContentDirective, DbxLoadingComponent], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<dbx-loading [context]=\"context\" [linear]=\"true\"></dbx-loading>\n<div dbxListInternalContent [hide]=\"hideContentSignal()\" infinite-scroll [infiniteScrollDistance]=\"infiniteScrollDistanceSignal()\" [infiniteScrollUpDistance]=\"infiniteScrollDistanceSignal()\" [infiniteScrollThrottle]=\"infiniteScrollThrottleSignal()\" [scrollWindow]=\"false\" (scrolled)=\"onScrollDown()\" (scrolledUp)=\"onScrollUp()\">\n <ng-content select=\"[top]\"></ng-content>\n <dbx-injection [config]=\"injectedComponentConfigSignal()\"></dbx-injection>\n <ng-content select=\"[bottom]\"></ng-content>\n @if (isEndSignal()) {\n <ng-content select=\"[end]\"></ng-content>\n }\n</div>\n@if (isEmptyAndNotLoadingSignal()) {\n <ng-content select=\"[empty]\"></ng-content>\n}\n@if (isEmptyLoadingSignal()) {\n <ng-content select=\"[emptyLoading]\"></ng-content>\n}\n" }]
6148
6153
  }] });
6149
6154
 
6150
6155
  // MARK: Wrapper
6151
6156
  const DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION_TEMPLATE = `
6152
- <dbx-list [state]="currentState$" [config]="configSignal()" [disabled]="disabled()" [selectionMode]="selectionModeSignal()">
6157
+ <dbx-list [state]="currentState$" [config]="configSignal()" [hasMore]="hasMore()" [disabled]="disabled()" [selectionMode]="selectionModeSignal()">
6153
6158
  <ng-content top select="[top]"></ng-content>
6154
6159
  <ng-content bottom select="[bottom]"></ng-content>
6155
6160
  <ng-content empty select="[empty]"></ng-content>
6156
6161
  <ng-content emptyLoading select="[emptyLoading]"></ng-content>
6162
+ <ng-content end select="[end]"></ng-content>
6157
6163
  </dbx-list>`;
6158
6164
  const dbxListWrapperComponentImportsAndExports = [DbxListComponent];
6159
6165
  class DbxListWrapperComponentImportsModule {
@@ -6173,6 +6179,7 @@ class AbstractDbxListWrapperDirective {
6173
6179
  _stateOverride = new BehaviorSubject(undefined);
6174
6180
  _selectionModeOverride = new BehaviorSubject(undefined);
6175
6181
  _selectionModeOverrideSignal = toSignal(this._selectionModeOverride.pipe(maybeValueFromObservableOrValue()));
6182
+ hasMore = input(undefined);
6176
6183
  clickItem = output();
6177
6184
  loadMore = output();
6178
6185
  disabled = input();
@@ -6210,7 +6217,7 @@ class AbstractDbxListWrapperDirective {
6210
6217
  };
6211
6218
  }
6212
6219
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxListWrapperDirective, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
6213
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: AbstractDbxListWrapperDirective, inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, deprecatedInputState$: { classPropertyName: "deprecatedInputState$", publicName: "state$", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clickItem: "clickItem", loadMore: "loadMore" }, ngImport: i0 });
6220
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: AbstractDbxListWrapperDirective, inputs: { hasMore: { classPropertyName: "hasMore", publicName: "hasMore", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, deprecatedInputState$: { classPropertyName: "deprecatedInputState$", publicName: "state$", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clickItem: "clickItem", loadMore: "loadMore" }, ngImport: i0 });
6214
6221
  }
6215
6222
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxListWrapperDirective, decorators: [{
6216
6223
  type: Directive
@@ -6245,7 +6252,7 @@ class DbxWidgetListGridComponent extends AbstractDbxListWrapperDirective {
6245
6252
  });
6246
6253
  }
6247
6254
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxWidgetListGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6248
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DbxWidgetListGridComponent, isStandalone: true, selector: "dbx-widget-grid", usesInheritance: true, ngImport: i0, template: "\n <dbx-list [state]=\"currentState$\" [config]=\"configSignal()\" [disabled]=\"disabled()\" [selectionMode]=\"selectionModeSignal()\">\n <ng-content top select=\"[top]\"></ng-content>\n <ng-content bottom select=\"[bottom]\"></ng-content>\n <ng-content empty select=\"[empty]\"></ng-content>\n <ng-content emptyLoading select=\"[emptyLoading]\"></ng-content>\n </dbx-list>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxListWrapperComponentImportsModule }, { kind: "component", type: DbxListComponent, selector: "dbx-list", inputs: ["padded", "state", "config", "disabled", "selectionMode"], outputs: ["contentScrolled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6255
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DbxWidgetListGridComponent, isStandalone: true, selector: "dbx-widget-grid", usesInheritance: true, ngImport: i0, template: "\n <dbx-list [state]=\"currentState$\" [config]=\"configSignal()\" [hasMore]=\"hasMore()\" [disabled]=\"disabled()\" [selectionMode]=\"selectionModeSignal()\">\n <ng-content top select=\"[top]\"></ng-content>\n <ng-content bottom select=\"[bottom]\"></ng-content>\n <ng-content empty select=\"[empty]\"></ng-content>\n <ng-content emptyLoading select=\"[emptyLoading]\"></ng-content>\n <ng-content end select=\"[end]\"></ng-content>\n </dbx-list>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxListWrapperComponentImportsModule }, { kind: "component", type: DbxListComponent, selector: "dbx-list", inputs: ["padded", "state", "config", "disabled", "selectionMode", "hasMore"], outputs: ["contentScrolled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6249
6256
  }
6250
6257
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxWidgetListGridComponent, decorators: [{
6251
6258
  type: Component,