@valtimo/task 12.2.1 → 12.3.1
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.
|
@@ -65,8 +65,8 @@ export class TaskListComponent {
|
|
|
65
65
|
this.selectedTaskType$,
|
|
66
66
|
this._overrideNoResultsMessage$,
|
|
67
67
|
]).pipe(map(([selectedTaskType, overrideNoResultsMessage]) => overrideNoResultsMessage || {
|
|
68
|
-
title: 'task-list.' + selectedTaskType + '.
|
|
69
|
-
description: 'task-list.' + selectedTaskType + '.
|
|
68
|
+
title: 'task-list.' + selectedTaskType + '.noResultsTitle',
|
|
69
|
+
description: 'task-list.' + selectedTaskType + '.noResultsDescription',
|
|
70
70
|
isSearchResult: false,
|
|
71
71
|
}));
|
|
72
72
|
this.fields$ = this.taskListColumnService.fields$;
|
|
@@ -357,4 +357,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
357
357
|
type: HostListener,
|
|
358
358
|
args: ['window:popstate', ['$event']]
|
|
359
359
|
}] } });
|
|
360
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vdGFzay9zcmMvbGliL2NvbXBvbmVudHMvdGFzay1saXN0L3Rhc2stbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3Rhc2svc3JjL2xpYi9jb21wb25lbnRzL3Rhc2stbGlzdC90YXNrLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBR1osU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFVNUIsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdGLE9BQU8sRUFNTCxXQUFXLEdBQ1osTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUMsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RSxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLHdCQUF3QixFQUN4QiwrQkFBK0IsR0FDaEMsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3JCLGVBQWUsR0FDaEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBRy9CLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBRTFFLE9BQU8sRUFBQyxtQ0FBbUMsRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFFcEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBaUJyRCxNQUFNLE9BQU8saUJBQWlCO0lBSXBCLFVBQVU7UUFDaEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQTZKRCxZQUNtQixhQUE0QixFQUM1QixlQUFnQyxFQUNoQyxpQkFBb0MsRUFDcEMsTUFBYyxFQUNkLFdBQXdCLEVBQ3hCLGVBQWdDLEVBQ2hDLGdCQUFrQyxFQUNsQyxxQkFBNEMsRUFDNUMseUJBQW9ELEVBQ3BELG1CQUF3QyxFQUN4QyxxQkFBNEMsRUFDNUMseUJBQW9ELEVBQ3BELGdCQUFrQztRQVpsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1Qyw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ3BELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1Qyw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ3BELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUF4S3JDLGlCQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUM7UUFFakQsc0JBQWlCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQztRQUUxRCwrQkFBMEIsR0FDekMsSUFBSSxlQUFlLENBQW9DLElBQUksQ0FBQyxDQUFDO1FBRS9DLHNCQUFpQixHQUEyQyxhQUFhLENBQUM7WUFDeEYsSUFBSSxDQUFDLGlCQUFpQjtZQUN0QixJQUFJLENBQUMsMEJBQTBCO1NBQ2hDLENBQUMsQ0FBQyxJQUFJLENBQ0wsR0FBRyxDQUNELENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSx3QkFBd0IsQ0FBQyxFQUFFLEVBQUUsQ0FDL0Msd0JBQXdCLElBQUk7WUFDMUIsS0FBSyxFQUFFLFlBQVksR0FBRyxnQkFBZ0IsR0FBRyx1QkFBdUI7WUFDaEUsV0FBVyxFQUFFLFlBQVksR0FBRyxnQkFBZ0IsR0FBRyxpQkFBaUI7WUFDaEUsY0FBYyxFQUFFLEtBQUs7U0FDdEIsQ0FDSixDQUNGLENBQUM7UUFFYyxZQUFPLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQztRQUM3QyxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQ25ELGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQTRCLElBQUksQ0FBQyxDQUFDO1FBRTVFLDZCQUF3QixHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBRXRELGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQXdDLElBQUksQ0FBQyxDQUFDO1FBRWhGLHlDQUFvQyxHQUNsRCxJQUFJLENBQUMseUJBQXlCLENBQUMsb0NBQW9DLENBQUM7UUFFdEQsaUNBQTRCLEdBQzFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyw0QkFBNEIsQ0FBQztRQUV4Qyx1QkFBa0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLENBQUM7UUFFaEUsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBRS9DLHdCQUFtQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUM7UUFFL0QsV0FBTSxHQUErQyxhQUFhLENBQUM7WUFDakYsSUFBSSxDQUFDLGVBQWUsQ0FBQyw4QkFBOEI7WUFDbkQsSUFBSSxDQUFDLGlCQUFpQjtZQUN0QixJQUFJLENBQUMseUJBQXlCLENBQUMsNkJBQTZCO1lBQzVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyw2QkFBNkI7WUFDdEQsSUFBSSxDQUFDLG1CQUFtQjtZQUN4QixJQUFJLENBQUMsd0JBQXdCO1lBQzdCLElBQUksQ0FBQyxRQUFRO1lBQ2IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGFBQWE7WUFDeEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHdCQUF3QjtTQUNsRCxDQUFDLENBQUMsSUFBSSxDQUNMLE1BQU0sQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUMsRUFBRSxFQUFFLENBQUMsNkJBQTZCLEtBQUssS0FBSyxDQUFDLEVBQ3BGLEdBQUcsQ0FDRCxDQUFDLENBQ0MsQ0FBQyxFQUNELGdCQUFnQixFQUNoQiw2QkFBNkIsRUFDN0IsNkJBQTZCLEVBQzdCLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsTUFBTSxFQUNOLFlBQVksRUFDWix1QkFBdUIsRUFDeEIsRUFBRSxFQUFFLENBQ0gsSUFBSSxDQUFDLGlCQUFpQixDQUNwQiw2QkFBNkIsRUFDN0IsdUJBQXVCLElBQUksNkJBQTZCLEVBQ3hELGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLE1BQU0sRUFDTixZQUFZLENBQ2IsQ0FDSixFQUNELG9CQUFvQixDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQ3JGLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNYLElBQUksTUFBTSxDQUFDLHNCQUFzQjtnQkFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqRSxJQUFJLENBQUMseUJBQXlCLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxDQUFDLEVBQUMsTUFBTSxFQUFDLEVBQUUsRUFBRSxDQUNyQixhQUFhLENBQUM7WUFDWixJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUMvQixNQUFNLENBQUMsZ0JBQWdCLEVBQ3ZCLE1BQU0sQ0FBQyxNQUFNLEVBQ2IsTUFBTSxDQUFDLGtCQUFrQixFQUN6QixNQUFNLENBQUMsWUFBWSxDQUNwQjtZQUNELEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDO1NBQ2hDLENBQUMsQ0FDSCxFQUNELFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FDdkMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FDN0QsRUFDRCxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLENBQUMsRUFBRSxFQUFFO1lBQ2hGLElBQUksQ0FBQyxxQ0FBcUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFFN0UsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUN6QixXQUFXLEVBQ1gsVUFBVSxFQUNWLHNCQUFzQixFQUN0QixzQkFBc0IsQ0FDdkIsQ0FBQztRQUNKLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBRS9CLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDOUUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FDbEMsWUFBWSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3RFLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUNILENBQUM7UUFFYywwQkFBcUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUMxRCwrQkFBMEIsR0FBRyxJQUFJLGVBQWUsQ0FBUyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFN0UsbUJBQWMsR0FBMkIsYUFBYSxDQUFDO1lBQ3JFLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLEVBQUU7WUFDeEMsSUFBSSxDQUFDLDBCQUEwQjtZQUMvQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUNwQyxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMscUJBQXFCLEVBQUUsd0JBQXdCLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDekQ7Z0JBQ0UsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUM7Z0JBQzVELEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDckIsUUFBUSxFQUFFLHdCQUF3QixLQUFLLElBQUksQ0FBQyxZQUFZO2FBQ3pEO1lBQ0QsR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMxRCxFQUFFLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxDQUFDLElBQUk7Z0JBQzlCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsS0FBSztnQkFDMUMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssd0JBQXdCO2FBQ2xFLENBQUMsQ0FBQztTQUNKLENBQUMsRUFDRixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNsRCxDQUFDO1FBRWMsNEJBQXVCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLHVCQUF1QixDQUFDO1FBRTdFLHlCQUFvQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQztRQUN2RSxrQkFBYSxHQUMzQixJQUFJLENBQUMscUJBQXFCLENBQUMsYUFBYSxDQUFDO1FBRTFCLDRCQUF1QixHQUFrQjtZQUN4RCxXQUFXLENBQUMsSUFBSTtZQUNoQixXQUFXLENBQUMsSUFBSTtZQUNoQixXQUFXLENBQUMsR0FBRztTQUNoQixDQUFDO1FBRWMsaUNBQTRCLEdBQUcsSUFBSSxlQUFlLENBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLG1DQUE4QixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFnQmxFLENBQUM7SUFFRyxRQUFRO1FBQ2IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVNLGlCQUFpQixDQUFDLElBQVksRUFBRSxJQUEwQjtRQUMvRCxJQUFJLENBQUMseUJBQXlCLENBQUMsb0JBQW9CLENBQUMsSUFBbUIsRUFBRSxFQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFDLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRU0sYUFBYSxDQUFDLE9BQWU7UUFDbEMsYUFBYSxDQUFDO1lBQ1osSUFBSSxDQUFDLHlCQUF5QixDQUFDLDZCQUE2QjtZQUM1RCxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQjtTQUN2QyxDQUFDO2FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNiLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDLEVBQUUsRUFBRTtZQUM1QyxJQUFJLENBQUMseUJBQXlCLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3BFLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDO2dCQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLG9CQUFvQixDQUN2RCxVQUFVLENBQUMsSUFBSSxFQUNmLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFDZixVQUFVLENBQUMsY0FBYyxDQUMxQjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFNBQVMsQ0FBQyxHQUF5QjtRQUN4QyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtZQUNoRixJQUFJLGdCQUFnQixLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFrQixDQUFDLENBQUM7Z0JBQzdELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFrQixFQUFFLEVBQUMsSUFBSSxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7WUFDckYsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGVBQWUsQ0FBQyxLQUFpQixFQUFFLEtBQWE7UUFDckQsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUN0RCxNQUFNLFdBQVcsR0FBRyxXQUFXLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRXRELElBQUksV0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUMzQyxJQUFJLENBQUMsZUFBZTtxQkFDakIsV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7cUJBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ2IsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQzt3QkFDbkIsYUFBYSxRQUFRLENBQUMsWUFBWSxFQUFFLElBQUksYUFBYSxXQUFXLENBQUMsV0FBVyxFQUFFO3FCQUMvRSxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsSUFBSTtRQUMxQixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDeEYsQ0FBQztJQUVNLFdBQVcsQ0FBQyxTQUFvQjtRQUNyQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxVQUFnQztRQUN2RCxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7SUFDSCxDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTSxNQUFNLENBQUMsaUJBQW9DO1FBQ2hELElBQUksQ0FBQyxpQkFBaUI7WUFBRSxPQUFPO1FBRS9CLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFTyxxQ0FBcUMsQ0FBQyxpQkFBeUI7UUFDckUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLDZCQUE2QjthQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2IsU0FBUyxDQUFDLGlCQUFpQixDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLHlCQUF5QixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3pGLGNBQWMsRUFBRSxNQUFNLENBQUMsaUJBQWlCLENBQUM7Z0JBQ3pDLElBQUksRUFBRSxJQUFJLENBQUMseUJBQXlCLENBQUMsb0JBQW9CLENBQ3ZELGlCQUFpQixDQUFDLElBQUksRUFDdEIsaUJBQWlCLENBQUMsSUFBSSxFQUN0QixpQkFBaUIsQ0FDbEI7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxjQUFjO1FBQ3BCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLG1CQUFtQixDQUFDO1FBRW5FLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsQ0FBQztJQUNILENBQUM7SUFFTyx1QkFBdUI7UUFDN0IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVPLGlCQUFpQixDQUN2Qiw2QkFBNkMsRUFDN0MsNkJBQXFDLEVBQ3JDLGdCQUE2QixFQUM3QixrQkFBMEIsRUFDMUIsc0JBQStCLEVBQy9CLE1BQWUsRUFDZixZQUFtQztRQUVuQyxNQUFNLE1BQU0sR0FBRztZQUNiLEdBQUcsNkJBQTZCO1lBQ2hDLEdBQUcsQ0FBQyw2QkFBNkIsSUFBSSxFQUFDLElBQUksRUFBRSw2QkFBNkIsRUFBQyxDQUFDO1NBQzVFLENBQUM7UUFFRixPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUM7UUFFN0IsT0FBTztZQUNMLE1BQU0sRUFBRTtnQkFDTixNQUFNO2dCQUNOLGdCQUFnQjtnQkFDaEIsTUFBTTtnQkFDTixHQUFHLENBQUMsa0JBQWtCLElBQUksa0JBQWtCLEtBQUssSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFDLGtCQUFrQixFQUFDLENBQUM7Z0JBQzNGLEdBQUcsQ0FBQyxZQUFZLElBQUksRUFBQyxZQUFZLEVBQUMsQ0FBQzthQUNwQztZQUNELHNCQUFzQjtTQUN2QixDQUFDO0lBQ0osQ0FBQztJQUVPLDZCQUE2QixDQUNuQyxXQUE2QyxFQUM3QyxXQUFvQjtRQUVwQixNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDO1FBQ3hDLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFNUUsT0FBTyxhQUFhLENBQUM7WUFDbkIsRUFBRSxDQUFDLFdBQVcsQ0FBQztZQUNmLEVBQUUsQ0FBQyxXQUFXLENBQUM7WUFDZixjQUFjO2dCQUNaLENBQUMsQ0FBQyxhQUFhLENBQ1gsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsd0JBQXdCLEVBQUU7b0JBQ2pFLFFBQVEsRUFBRSwrQkFBK0IsQ0FBQyxJQUFJO29CQUM5QyxVQUFVLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFFLElBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFFLElBQXNCLENBQUMsRUFBRTtpQkFDMUUsQ0FBQyxDQUNILENBQ0Y7Z0JBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDWixjQUFjO2dCQUNaLENBQUMsQ0FBQyxhQUFhLENBQ1gsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsd0JBQXdCLEVBQUU7b0JBQ2pFLFFBQVEsRUFBRSwrQkFBK0IsQ0FBQyxrQkFBa0I7b0JBQzVELFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVztpQkFDN0IsQ0FBQyxDQUNILENBQ0Y7Z0JBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZUFBZSxDQUNyQixXQUFvQixFQUNwQixLQUF1QyxFQUN2QyxzQkFBd0MsRUFDeEMsc0JBQXdDO1FBRXhDLE1BQU0sYUFBYSxHQUFHLG1CQUFtQixDQUFDO1FBRTFDLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsT0FBUSxLQUE2QixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxDQUN0RixhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDeEIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FDWixDQUFDO2dCQUNDLEVBQUUsRUFBRSxhQUFhLENBQUMsRUFBRTtnQkFDcEIsV0FBVyxFQUFFLGFBQWEsQ0FBQyxXQUFXO2dCQUN0QyxpQkFBaUIsRUFBRSxhQUFhLENBQUMsaUJBQWlCO2dCQUNsRCxJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUk7Z0JBQ3hCLEdBQUcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJO29CQUM3QyxPQUFPLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO2lCQUM3RCxDQUFDO2dCQUNGLEdBQUcsQ0FBQyxzQkFBc0IsSUFBSSxFQUFDLE1BQU0sRUFBRSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDLEVBQUMsQ0FBQztnQkFDcEYsR0FBRyxDQUFDLHNCQUFzQixJQUFJO29CQUM1QixVQUFVLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDeEQsQ0FBQztnQkFDRixHQUFHLEdBQUc7Z0JBQ04sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUs7YUFDdkIsQ0FBd0IsRUFDM0IsRUFBRSxDQUNILENBQ3VCLENBQUM7UUFDN0IsQ0FBQztRQUVELE9BQVEsS0FBb0IsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFO1lBQzdELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQyxNQUFNLFFBQVEsR0FBRyxFQUFDLEdBQUcsSUFBSSxFQUFDLENBQUM7WUFFM0IsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUU7Z0JBQUUsUUFBUSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2hGLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRTtnQkFBRSxRQUFRLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDaEYsSUFBSSxzQkFBc0I7Z0JBQUUsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2pGLElBQUksc0JBQXNCO2dCQUFFLFFBQVEsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUVyRixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQVcsQ0FBQztJQUNmLENBQUM7SUFFTyx3QkFBd0I7UUFDOUIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFFOUUsSUFBSSxhQUFhLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQzdFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDekUsQ0FBQztRQUVELElBQUksYUFBYSxDQUFDLFlBQVksRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDM0MsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsNEJBQTRCLENBQy9FLGFBQWEsQ0FBQyxZQUFZLENBQzNCLENBQUM7WUFDRixJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDNUQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCxJQUFJLGFBQWEsQ0FBQyxnQkFBZ0I7WUFDaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUUzRSxJQUFJLGFBQWEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDL0IsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsMEJBQTBCLENBQzdFLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUMxQixDQUFDO1lBQ0YsSUFBSSxtQkFBbUI7Z0JBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG9CQUFvQixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDOUYsQ0FBQztRQUVELElBQUksYUFBYSxDQUFDLE1BQU07WUFDdEIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLG9CQUFvQixDQUNqRCxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixFQUNyQyxhQUFhLENBQUMsTUFBTSxDQUNyQixDQUFDO0lBQ04sQ0FBQzsrR0E3YlUsaUJBQWlCO21HQUFqQixpQkFBaUIsOEdBVGpCO1lBQ1QsZUFBZTtZQUNmLHFCQUFxQjtZQUNyQix5QkFBeUI7WUFDekIsbUJBQW1CO1lBQ25CLHFCQUFxQjtZQUNyQix5QkFBeUI7U0FDMUIscUlDbkZILDJ0TkFrTkE7OzRGRDdIYSxpQkFBaUI7a0JBZjdCLFNBQVM7K0JBQ0UsbUJBQW1CLGlCQUdkLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1QsZUFBZTt3QkFDZixxQkFBcUI7d0JBQ3JCLHlCQUF5Qjt3QkFDekIsbUJBQW1CO3dCQUNuQixxQkFBcUI7d0JBQ3JCLHlCQUF5QjtxQkFDMUI7cWRBR3lDLFdBQVc7c0JBQXBELFNBQVM7dUJBQUMsWUFBWTtnQkFHZixVQUFVO3NCQURqQixZQUFZO3VCQUFDLGlCQUFpQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdExpc3RlbmVyLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7VGFza1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Rhc2suc2VydmljZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge1xuICBNYXBwZWRTcGVjaWZpZWRUYXNrLFxuICBTcGVjaWZpZWRUYXNrLFxuICBUYXNrLFxuICBUYXNrTGlzdE90aGVyRmlsdGVycyxcbiAgVGFza0xpc3RQYXJhbXMsXG4gIFRhc2tQYWdlUGFyYW1zLFxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtUYXNrRGV0YWlsTW9kYWxDb21wb25lbnR9IGZyb20gJy4uL3Rhc2stZGV0YWlsLW1vZGFsL3Rhc2stZGV0YWlsLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIENvbmZpZ1NlcnZpY2UsXG4gIFBhZ2UsXG4gIFNlYXJjaEZpZWxkLFxuICBTZWFyY2hGaWVsZFZhbHVlcyxcbiAgU29ydFN0YXRlLFxuICBUYXNrTGlzdFRhYixcbn0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7RG9jdW1lbnRTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5pbXBvcnQge2Rpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtQZXJtaXNzaW9uU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vYWNjZXNzLWNvbnRyb2wnO1xuaW1wb3J0IHtcbiAgQ0FOX1ZJRVdfQ0FTRV9QRVJNSVNTSU9OLFxuICBDQU5fVklFV19UQVNLX1BFUk1JU1NJT04sXG4gIFRBU0tfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UsXG59IGZyb20gJy4uLy4uL3Rhc2stcGVybWlzc2lvbnMnO1xuaW1wb3J0IHtcbiAgVGFza0xpc3RDb2x1bW5TZXJ2aWNlLFxuICBUYXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLFxuICBUYXNrTGlzdFF1ZXJ5UGFyYW1TZXJ2aWNlLFxuICBUYXNrTGlzdFNlYXJjaFNlcnZpY2UsXG4gIFRhc2tMaXN0U2VydmljZSxcbn0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtpc0VxdWFsfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtMaXN0SXRlbX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtUYXNrTGlzdFNvcnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YXNrLWxpc3Qtc29ydC5zZXJ2aWNlJztcbmltcG9ydCB7Q2FyYm9uTGlzdE5vUmVzdWx0c01lc3NhZ2UsIFBhZ2VUaXRsZVNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtUQVNLX0xJU1RfTk9fU0VBUkNIX1JFU1VMVFNfTUVTU0FHRX0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcblxubW9tZW50LmxvY2FsZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ0tleScpIHx8ICcnKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby10YXNrLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFzay1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFzay1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBUYXNrTGlzdFNlcnZpY2UsXG4gICAgVGFza0xpc3RDb2x1bW5TZXJ2aWNlLFxuICAgIFRhc2tMaXN0UGFnaW5hdGlvblNlcnZpY2UsXG4gICAgVGFza0xpc3RTb3J0U2VydmljZSxcbiAgICBUYXNrTGlzdFNlYXJjaFNlcnZpY2UsXG4gICAgVGFza0xpc3RRdWVyeVBhcmFtU2VydmljZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFza0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ3Rhc2tEZXRhaWwnKSBwcml2YXRlIHJlYWRvbmx5IF90YXNrRGV0YWlsOiBUYXNrRGV0YWlsTW9kYWxDb21wb25lbnQ7XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnBvcHN0YXRlJywgWyckZXZlbnQnXSlcbiAgcHJpdmF0ZSBvblBvcFN0YXRlKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZXRQYXJhbXNGcm9tUXVlcnlQYXJhbXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBBTExfQ0FTRVNfSUQgPSB0aGlzLnRhc2tMaXN0U2VydmljZS5BTExfQ0FTRVNfSUQ7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkVGFza1R5cGUkID0gdGhpcy50YXNrTGlzdFNlcnZpY2Uuc2VsZWN0ZWRUYXNrVHlwZSQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfb3ZlcnJpZGVOb1Jlc3VsdHNNZXNzYWdlJCA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxDYXJib25MaXN0Tm9SZXN1bHRzTWVzc2FnZSB8IG51bGw+KG51bGwpO1xuXG4gIHB1YmxpYyByZWFkb25seSBub1Jlc3VsdHNNZXNzYWdlJDogT2JzZXJ2YWJsZTxDYXJib25MaXN0Tm9SZXN1bHRzTWVzc2FnZT4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLnNlbGVjdGVkVGFza1R5cGUkLFxuICAgIHRoaXMuX292ZXJyaWRlTm9SZXN1bHRzTWVzc2FnZSQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKFxuICAgICAgKFtzZWxlY3RlZFRhc2tUeXBlLCBvdmVycmlkZU5vUmVzdWx0c01lc3NhZ2VdKSA9PlxuICAgICAgICBvdmVycmlkZU5vUmVzdWx0c01lc3NhZ2UgfHwge1xuICAgICAgICAgIHRpdGxlOiAndGFzay1saXN0LicgKyBzZWxlY3RlZFRhc2tUeXBlICsgJy5ub1Jlc3VsdHNEZXNjcmlwdGlvbicsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICd0YXNrLWxpc3QuJyArIHNlbGVjdGVkVGFza1R5cGUgKyAnLm5vUmVzdWx0c1RpdGxlJyxcbiAgICAgICAgICBpc1NlYXJjaFJlc3VsdDogZmFsc2UsXG4gICAgICAgIH1cbiAgICApXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZpZWxkcyQgPSB0aGlzLnRhc2tMaXN0Q29sdW1uU2VydmljZS5maWVsZHMkO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZ1Rhc2tzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHB1YmxpYyByZWFkb25seSB2aXNpYmxlVGFicyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PFRhc2tMaXN0VGFiPiB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgX2VuYWJsZUxvYWRpbmdBbmltYXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY2FjaGVkVGFza3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYXNrW10gfCBNYXBwZWRTcGVjaWZpZWRUYXNrW10gfCBudWxsPihudWxsKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcGFnaW5hdGlvbkZvckN1cnJlbnRUYXNrVHlwZUZvckxpc3QkID1cbiAgICB0aGlzLnRhc2tMaXN0UGFnaW5hdGlvblNlcnZpY2UucGFnaW5hdGlvbkZvckN1cnJlbnRUYXNrVHlwZUZvckxpc3QkO1xuXG4gIHB1YmxpYyByZWFkb25seSBzb3J0U3RhdGVGb3JDdXJyZW50VGFza1R5cGUkID1cbiAgICB0aGlzLnRhc2tMaXN0U29ydFNlcnZpY2Uuc29ydFN0YXRlRm9yQ3VycmVudFRhc2tUeXBlJDtcblxuICBwdWJsaWMgcmVhZG9ubHkgb3ZlcnJpZGVTb3J0U3RhdGUkID0gdGhpcy50YXNrTGlzdFNvcnRTZXJ2aWNlLm92ZXJyaWRlU29ydFN0YXRlJDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9yZWxvYWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY2FzZURlZmluaXRpb25OYW1lJCA9IHRoaXMudGFza0xpc3RTZXJ2aWNlLmNhc2VEZWZpbml0aW9uTmFtZSQ7XG5cbiAgcHVibGljIHJlYWRvbmx5IHRhc2tzJDogT2JzZXJ2YWJsZTxUYXNrW10gfCBNYXBwZWRTcGVjaWZpZWRUYXNrW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy50YXNrTGlzdFNlcnZpY2UubG9hZGluZ1N0YXRlRm9yQ2FzZURlZmluaXRpb24kLFxuICAgIHRoaXMuc2VsZWN0ZWRUYXNrVHlwZSQsXG4gICAgdGhpcy50YXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLnBhZ2luYXRpb25Gb3JDdXJyZW50VGFza1R5cGUkLFxuICAgIHRoaXMudGFza0xpc3RTb3J0U2VydmljZS5zb3J0U3RyaW5nRm9yQ3VycmVudFRhc2tUeXBlJCxcbiAgICB0aGlzLmNhc2VEZWZpbml0aW9uTmFtZSQsXG4gICAgdGhpcy5fZW5hYmxlTG9hZGluZ0FuaW1hdGlvbiQsXG4gICAgdGhpcy5fcmVsb2FkJCxcbiAgICB0aGlzLnRhc2tMaXN0U2VhcmNoU2VydmljZS5vdGhlckZpbHRlcnMkLFxuICAgIHRoaXMudGFza0xpc3RTb3J0U2VydmljZS5vdmVycmlkZVNvcnRTdGF0ZVN0cmluZyQsXG4gIF0pLnBpcGUoXG4gICAgZmlsdGVyKChbbG9hZGluZ1N0YXRlRm9yQ2FzZURlZmluaXRpb25dKSA9PiBsb2FkaW5nU3RhdGVGb3JDYXNlRGVmaW5pdGlvbiA9PT0gZmFsc2UpLFxuICAgIG1hcChcbiAgICAgIChbXG4gICAgICAgIF8sXG4gICAgICAgIHNlbGVjdGVkVGFza1R5cGUsXG4gICAgICAgIHBhZ2luYXRpb25Gb3JTZWxlY3RlZFRhc2tUeXBlLFxuICAgICAgICBzb3J0U3RyaW5nRm9yU2VsZWN0ZWRUYXNrVHlwZSxcbiAgICAgICAgY2FzZURlZmluaXRpb25OYW1lLFxuICAgICAgICBlbmFibGVMb2FkaW5nQW5pbWF0aW9uLFxuICAgICAgICByZWxvYWQsXG4gICAgICAgIG90aGVyRmlsdGVycyxcbiAgICAgICAgb3ZlcnJpZGVTb3J0U3RhdGVTdHJpbmcsXG4gICAgICBdKSA9PlxuICAgICAgICB0aGlzLmdldFRhc2tMaXN0UGFyYW1zKFxuICAgICAgICAgIHBhZ2luYXRpb25Gb3JTZWxlY3RlZFRhc2tUeXBlLFxuICAgICAgICAgIG92ZXJyaWRlU29ydFN0YXRlU3RyaW5nIHx8IHNvcnRTdHJpbmdGb3JTZWxlY3RlZFRhc2tUeXBlLFxuICAgICAgICAgIHNlbGVjdGVkVGFza1R5cGUsXG4gICAgICAgICAgY2FzZURlZmluaXRpb25OYW1lLFxuICAgICAgICAgIGVuYWJsZUxvYWRpbmdBbmltYXRpb24sXG4gICAgICAgICAgcmVsb2FkLFxuICAgICAgICAgIG90aGVyRmlsdGVyc1xuICAgICAgICApXG4gICAgKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldmlvdXMsIGN1cnJlbnQpID0+IGlzRXF1YWwocHJldmlvdXMucGFyYW1zLCBjdXJyZW50LnBhcmFtcykpLFxuICAgIHRhcChwYXJhbXMgPT4ge1xuICAgICAgaWYgKHBhcmFtcy5lbmFibGVMb2FkaW5nQW5pbWF0aW9uKSB0aGlzLmxvYWRpbmdUYXNrcyQubmV4dCh0cnVlKTtcbiAgICAgIHRoaXMudGFza0xpc3RRdWVyeVBhcmFtU2VydmljZS5zZXRUYXNrTGlzdFBhcmFtcyhwYXJhbXMucGFyYW1zKTtcbiAgICB9KSxcbiAgICBzd2l0Y2hNYXAoKHtwYXJhbXN9KSA9PlxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMudGFza1NlcnZpY2UucXVlcnlUYXNrc1BhZ2VWMyhcbiAgICAgICAgICBwYXJhbXMuc2VsZWN0ZWRUYXNrVHlwZSxcbiAgICAgICAgICBwYXJhbXMucGFyYW1zLFxuICAgICAgICAgIHBhcmFtcy5jYXNlRGVmaW5pdGlvbk5hbWUsXG4gICAgICAgICAgcGFyYW1zLm90aGVyRmlsdGVyc1xuICAgICAgICApLFxuICAgICAgICBvZighIXBhcmFtcy5jYXNlRGVmaW5pdGlvbk5hbWUpLFxuICAgICAgXSlcbiAgICApLFxuICAgIHN3aXRjaE1hcCgoW3Rhc2tzUmVzdWx0LCBpc1NwZWNpZmllZF0pID0+XG4gICAgICB0aGlzLmdldFRhc2tMaXN0UGVybWlzc2lvbnNSZXF1ZXN0KHRhc2tzUmVzdWx0LCBpc1NwZWNpZmllZClcbiAgICApLFxuICAgIG1hcCgoW2lzU3BlY2lmaWVkLCB0YXNrUmVzdWx0LCBjYW5WaWV3VGFza1Blcm1pc3Npb25zLCBjYW5WaWV3Q2FzZVBlcm1pc3Npb25zXSkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVUYXNrTGlzdFBhZ2luYXRpb25BZnRlclJlc3BvbnNlKE51bWJlcih0YXNrUmVzdWx0LnRvdGFsRWxlbWVudHMpKTtcblxuICAgICAgcmV0dXJuIHRoaXMubWFwVGFza3NGb3JMaXN0KFxuICAgICAgICBpc1NwZWNpZmllZCxcbiAgICAgICAgdGFza1Jlc3VsdCxcbiAgICAgICAgY2FuVmlld1Rhc2tQZXJtaXNzaW9ucyxcbiAgICAgICAgY2FuVmlld0Nhc2VQZXJtaXNzaW9uc1xuICAgICAgKTtcbiAgICB9KSxcbiAgICB0YXAodGFza3MgPT4ge1xuICAgICAgdGhpcy5jYWNoZWRUYXNrcyQubmV4dCh0YXNrcyk7XG4gICAgICB0aGlzLmxvYWRpbmdUYXNrcyQubmV4dChmYWxzZSk7XG4gICAgICB0aGlzLmRpc2FibGVMb2FkaW5nQW5pbWF0aW9uKCk7XG5cbiAgICAgIHRoaXMudGFza0xpc3RTZWFyY2hTZXJ2aWNlLm90aGVyRmlsdGVycyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUob3RoZXJGaWx0ZXJzID0+IHtcbiAgICAgICAgdGhpcy5fb3ZlcnJpZGVOb1Jlc3VsdHNNZXNzYWdlJC5uZXh0KFxuICAgICAgICAgIG90aGVyRmlsdGVycz8ubGVuZ3RoID4gMCA/IFRBU0tfTElTVF9OT19TRUFSQ0hfUkVTVUxUU19NRVNTQUdFIDogbnVsbFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZ0Nhc2VMaXN0SXRlbXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPih0aGlzLkFMTF9DQVNFU19JRCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNhc2VMaXN0SXRlbXMkOiBPYnNlcnZhYmxlPExpc3RJdGVtW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0QWxsRGVmaW5pdGlvbnMoKSxcbiAgICB0aGlzLl9zZWxlY3RlZENhc2VEZWZpbml0aW9uSWQkLFxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2RvY3VtZW50RGVmaW5pdGlvblJlcywgc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkXSkgPT4gW1xuICAgICAge1xuICAgICAgICBjb250ZW50OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgndGFzay1saXN0LmFsbENhc2VzJyksXG4gICAgICAgIGlkOiB0aGlzLkFMTF9DQVNFU19JRCxcbiAgICAgICAgc2VsZWN0ZWQ6IHNlbGVjdGVkQ2FzZURlZmluaXRpb25JZCA9PT0gdGhpcy5BTExfQ0FTRVNfSUQsXG4gICAgICB9LFxuICAgICAgLi4uZG9jdW1lbnREZWZpbml0aW9uUmVzLmNvbnRlbnQubWFwKGRvY3VtZW50RGVmaW5pdGlvbiA9PiAoe1xuICAgICAgICBpZDogZG9jdW1lbnREZWZpbml0aW9uLmlkLm5hbWUsXG4gICAgICAgIGNvbnRlbnQ6IGRvY3VtZW50RGVmaW5pdGlvbj8uc2NoZW1hPy50aXRsZSxcbiAgICAgICAgc2VsZWN0ZWQ6IGRvY3VtZW50RGVmaW5pdGlvbi5pZC5uYW1lID09PSBzZWxlY3RlZENhc2VEZWZpbml0aW9uSWQsXG4gICAgICB9KSksXG4gICAgXSksXG4gICAgdGFwKCgpID0+IHRoaXMubG9hZGluZ0Nhc2VMaXN0SXRlbXMkLm5leHQoZmFsc2UpKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSB0YXNrTGlzdENvbHVtbnNGb3JDYXNlJCA9IHRoaXMudGFza0xpc3RDb2x1bW5TZXJ2aWNlLnRhc2tMaXN0Q29sdW1uc0ZvckNhc2UkO1xuXG4gIHB1YmxpYyByZWFkb25seSBsb2FkaW5nU2VhcmNoRmllbGRzJCA9IHRoaXMudGFza0xpc3RTZWFyY2hTZXJ2aWNlLmxvYWRpbmdTZWFyY2hGaWVsZHMkO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VhcmNoRmllbGRzJDogT2JzZXJ2YWJsZTxTZWFyY2hGaWVsZFtdPiA9XG4gICAgdGhpcy50YXNrTGlzdFNlYXJjaFNlcnZpY2Uuc2VhcmNoRmllbGRzJDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9ERUZBVUxUX1RBU0tfTElTVF9UQUJTOiBUYXNrTGlzdFRhYltdID0gW1xuICAgIFRhc2tMaXN0VGFiLk1JTkUsXG4gICAgVGFza0xpc3RUYWIuT1BFTixcbiAgICBUYXNrTGlzdFRhYi5BTEwsXG4gIF07XG5cbiAgcHVibGljIHJlYWRvbmx5IHNldFNlYXJjaEZpZWxkVmFsdWVzU3ViamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlYXJjaEZpZWxkVmFsdWVzPih7fSk7XG4gIHB1YmxpYyByZWFkb25seSBjbGVhclNlYXJjaEZpZWxkVmFsdWVzU3ViamVjdCQgPSBuZXcgU3ViamVjdDxudWxsPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGVybWlzc2lvblNlcnZpY2U6IFBlcm1pc3Npb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrU2VydmljZTogVGFza1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrTGlzdFNlcnZpY2U6IFRhc2tMaXN0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrTGlzdENvbHVtblNlcnZpY2U6IFRhc2tMaXN0Q29sdW1uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhc2tMaXN0UGFnaW5hdGlvblNlcnZpY2U6IFRhc2tMaXN0UGFnaW5hdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrTGlzdFNvcnRTZXJ2aWNlOiBUYXNrTGlzdFNvcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGFza0xpc3RTZWFyY2hTZXJ2aWNlOiBUYXNrTGlzdFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrTGlzdFF1ZXJ5UGFyYW1TZXJ2aWNlOiBUYXNrTGlzdFF1ZXJ5UGFyYW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnZVRpdGxlU2VydmljZTogUGFnZVRpdGxlU2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudGFza0xpc3RDb2x1bW5TZXJ2aWNlLnJlc2V0VGFza0xpc3RGaWVsZHMoKTtcbiAgICB0aGlzLnNldFZpc2libGVUYWJzKCk7XG4gICAgdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLmRpc2FibGVSZXNldCgpO1xuICAgIHRoaXMuc2V0UGFyYW1zRnJvbVF1ZXJ5UGFyYW1zKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLmVuYWJsZVJlc2V0KCk7XG4gIH1cblxuICBwdWJsaWMgcGFnaW5hdGlvbkNsaWNrZWQocGFnZTogbnVtYmVyLCB0eXBlOiBUYXNrTGlzdFRhYiB8IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudGFza0xpc3RQYWdpbmF0aW9uU2VydmljZS51cGRhdGVUYXNrUGFnaW5hdGlvbih0eXBlIGFzIFRhc2tMaXN0VGFiLCB7cGFnZTogcGFnZSAtIDF9KTtcbiAgfVxuXG4gIHB1YmxpYyBwYWdpbmF0aW9uU2V0KG5ld1NpemU6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy50YXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLnBhZ2luYXRpb25Gb3JDdXJyZW50VGFza1R5cGUkLFxuICAgICAgdGhpcy50YXNrTGlzdFNlcnZpY2Uuc2VsZWN0ZWRUYXNrVHlwZSQsXG4gICAgXSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChbcGFnaW5hdGlvbiwgc2VsZWN0ZWRUYXNrVHlwZV0pID0+IHtcbiAgICAgICAgdGhpcy50YXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLnVwZGF0ZVRhc2tQYWdpbmF0aW9uKHNlbGVjdGVkVGFza1R5cGUsIHtcbiAgICAgICAgICBzaXplOiBOdW1iZXIobmV3U2l6ZSksXG4gICAgICAgICAgcGFnZTogdGhpcy50YXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLmdldExhc3RBdmFpbGFibGVQYWdlKFxuICAgICAgICAgICAgcGFnaW5hdGlvbi5wYWdlLFxuICAgICAgICAgICAgTnVtYmVyKG5ld1NpemUpLFxuICAgICAgICAgICAgcGFnaW5hdGlvbi5jb2xsZWN0aW9uU2l6ZVxuICAgICAgICAgICksXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdGFiQ2hhbmdlKHRhYjogVGFza0xpc3RUYWIgfCBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRhc2tMaXN0U2VydmljZS5zZWxlY3RlZFRhc2tUeXBlJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShzZWxlY3RlZFRhc2tUeXBlID0+IHtcbiAgICAgIGlmIChzZWxlY3RlZFRhc2tUeXBlICE9PSB0YWIpIHtcbiAgICAgICAgdGhpcy5lbmFibGVMb2FkaW5nQW5pbWF0aW9uKCk7XG4gICAgICAgIHRoaXMudGFza0xpc3RTZXJ2aWNlLnNldFNlbGVjdGVkVGFza1R5cGUodGFiIGFzIFRhc2tMaXN0VGFiKTtcbiAgICAgICAgdGhpcy50YXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLnVwZGF0ZVRhc2tQYWdpbmF0aW9uKHRhYiBhcyBUYXNrTGlzdFRhYiwge3BhZ2U6IDB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuUmVsYXRlZENhc2UoZXZlbnQ6IE1vdXNlRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHRoaXMuY2FjaGVkVGFza3MkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGNhY2hlZFRhc2tzID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRUYXNrID0gY2FjaGVkVGFza3MgJiYgY2FjaGVkVGFza3NbaW5kZXhdO1xuXG4gICAgICBpZiAoY3VycmVudFRhc2sgJiYgIWN1cnJlbnRUYXNrLmNhc2VMb2NrZWQpIHtcbiAgICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2VcbiAgICAgICAgICAuZ2V0RG9jdW1lbnQoY3VycmVudFRhc2suYnVzaW5lc3NLZXkpXG4gICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKGRvY3VtZW50ID0+IHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcbiAgICAgICAgICAgICAgYC9kb3NzaWVycy8ke2RvY3VtZW50LmRlZmluaXRpb25JZD8ubmFtZX0vZG9jdW1lbnQvJHtjdXJyZW50VGFzay5idXNpbmVzc0tleX1gLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcm93T3BlblRhc2tDbGljayh0YXNrKTogdm9pZCB8IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGFzay5lbmRUaW1lICYmICF0YXNrLmxvY2tlZCA/IHRoaXMuX3Rhc2tEZXRhaWwub3BlblRhc2tEZXRhaWxzKHRhc2spIDogZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgc29ydENoYW5nZWQoc29ydFN0YXRlOiBTb3J0U3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnRhc2tMaXN0U29ydFNlcnZpY2Uuc2V0T3ZlcnJpZGVTb3J0U3RhdGUoc29ydFN0YXRlKTtcbiAgICB0aGlzLnRhc2tMaXN0U29ydFNlcnZpY2UudXBkYXRlU29ydFN0YXRlKHRoaXMudGFza0xpc3RTZXJ2aWNlLnNlbGVjdGVkVGFza1R5cGUsIHNvcnRTdGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q2FzZURlZmluaXRpb24oZGVmaW5pdGlvbjoge2l0ZW06IHtpZDogc3RyaW5nfX0pOiB2b2lkIHtcbiAgICBpZiAoZGVmaW5pdGlvbi5pdGVtLmlkKSB7XG4gICAgICB0aGlzLnRhc2tMaXN0U29ydFNlcnZpY2UucmVzZXRPdmVycmlkZVNvcnRTdGF0ZSgpO1xuICAgICAgdGhpcy5sb2FkaW5nVGFza3MkLm5leHQodHJ1ZSk7XG4gICAgICB0aGlzLnRhc2tMaXN0U2VydmljZS5zZXRDYXNlRGVmaW5pdGlvbk5hbWUoZGVmaW5pdGlvbi5pdGVtLmlkKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVsb2FkKCk6IHZvaWQge1xuICAgIHRoaXMuZW5hYmxlTG9hZGluZ0FuaW1hdGlvbigpO1xuICAgIHRoaXMuX3JlbG9hZCQubmV4dCghdGhpcy5fcmVsb2FkJC5nZXRWYWx1ZSgpKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2goc2VhcmNoRmllbGRWYWx1ZXM6IFNlYXJjaEZpZWxkVmFsdWVzKTogdm9pZCB7XG4gICAgaWYgKCFzZWFyY2hGaWVsZFZhbHVlcykgcmV0dXJuO1xuXG4gICAgdGhpcy50YXNrTGlzdFNlYXJjaFNlcnZpY2Uuc2V0U2VhcmNoRmllbGRWYWx1ZXMoc2VhcmNoRmllbGRWYWx1ZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUYXNrTGlzdFBhZ2luYXRpb25BZnRlclJlc3BvbnNlKG5ld0NvbGxlY3Rpb25TaXplOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnRhc2tMaXN0UGFnaW5hdGlvblNlcnZpY2UucGFnaW5hdGlvbkZvckN1cnJlbnRUYXNrVHlwZSRcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKGN1cnJlbnRQYWdpbmF0aW9uID0+IHtcbiAgICAgICAgdGhpcy50YXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLnVwZGF0ZVRhc2tQYWdpbmF0aW9uKHRoaXMudGFza0xpc3RTZXJ2aWNlLnNlbGVjdGVkVGFza1R5cGUsIHtcbiAgICAgICAgICBjb2xsZWN0aW9uU2l6ZTogTnVtYmVyKG5ld0NvbGxlY3Rpb25TaXplKSxcbiAgICAgICAgICBwYWdlOiB0aGlzLnRhc2tMaXN0UGFnaW5hdGlvblNlcnZpY2UuZ2V0TGFzdEF2YWlsYWJsZVBhZ2UoXG4gICAgICAgICAgICBjdXJyZW50UGFnaW5hdGlvbi5wYWdlLFxuICAgICAgICAgICAgY3VycmVudFBhZ2luYXRpb24uc2l6ZSxcbiAgICAgICAgICAgIG5ld0NvbGxlY3Rpb25TaXplXG4gICAgICAgICAgKSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmlzaWJsZVRhYnMoKTogdm9pZCB7XG4gICAgY29uc3QgdmlzaWJsZVRhYnMgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnPy52aXNpYmxlVGFza0xpc3RUYWJzO1xuXG4gICAgaWYgKHZpc2libGVUYWJzKSB7XG4gICAgICB0aGlzLnZpc2libGVUYWJzJC5uZXh0KHZpc2libGVUYWJzKTtcbiAgICAgIHRoaXMudGFza0xpc3RTZXJ2aWNlLnNldFNlbGVjdGVkVGFza1R5cGUodmlzaWJsZVRhYnNbMF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZpc2libGVUYWJzJC5uZXh0KHRoaXMuX0RFRkFVTFRfVEFTS19MSVNUX1RBQlMpO1xuICAgICAgdGhpcy50YXNrTGlzdFNlcnZpY2Uuc2V0U2VsZWN0ZWRUYXNrVHlwZSh0aGlzLl9ERUZBVUxUX1RBU0tfTElTVF9UQUJTWzBdKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRpc2FibGVMb2FkaW5nQW5pbWF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2VuYWJsZUxvYWRpbmdBbmltYXRpb24kLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmFibGVMb2FkaW5nQW5pbWF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2VuYWJsZUxvYWRpbmdBbmltYXRpb24kLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldFRhc2tMaXN0UGFyYW1zKFxuICAgIHBhZ2luYXRpb25Gb3JTZWxlY3RlZFRhc2tUeXBlOiBUYXNrUGFnZVBhcmFtcyxcbiAgICBzb3J0U3RyaW5nRm9yU2VsZWN0ZWRUYXNrVHlwZTogc3RyaW5nLFxuICAgIHNlbGVjdGVkVGFza1R5cGU6IFRhc2tMaXN0VGFiLFxuICAgIGNhc2VEZWZpbml0aW9uTmFtZTogc3RyaW5nLFxuICAgIGVuYWJsZUxvYWRpbmdBbmltYXRpb246IGJvb2xlYW4sXG4gICAgcmVsb2FkOiBib29sZWFuLFxuICAgIG90aGVyRmlsdGVycz86IFRhc2tMaXN0T3RoZXJGaWx0ZXJzXG4gICk6IFRhc2tMaXN0UGFyYW1zIHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAuLi5wYWdpbmF0aW9uRm9yU2VsZWN0ZWRUYXNrVHlwZSxcbiAgICAgIC4uLihzb3J0U3RyaW5nRm9yU2VsZWN0ZWRUYXNrVHlwZSAmJiB7c29ydDogc29ydFN0cmluZ0ZvclNlbGVjdGVkVGFza1R5cGV9KSxcbiAgICB9O1xuXG4gICAgZGVsZXRlIHBhcmFtcy5jb2xsZWN0aW9uU2l6ZTtcblxuICAgIHJldHVybiB7XG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgcmVsb2FkLFxuICAgICAgICBzZWxlY3RlZFRhc2tUeXBlLFxuICAgICAgICBwYXJhbXMsXG4gICAgICAgIC4uLihjYXNlRGVmaW5pdGlvbk5hbWUgJiYgY2FzZURlZmluaXRpb25OYW1lICE9PSB0aGlzLkFMTF9DQVNFU19JRCAmJiB7Y2FzZURlZmluaXRpb25OYW1lfSksXG4gICAgICAgIC4uLihvdGhlckZpbHRlcnMgJiYge290aGVyRmlsdGVyc30pLFxuICAgICAgfSxcbiAgICAgIGVuYWJsZUxvYWRpbmdBbmltYXRpb24sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGFza0xpc3RQZXJtaXNzaW9uc1JlcXVlc3QoXG4gICAgdGFza3NSZXN1bHQ6IFBhZ2U8VGFzaz4gfCBQYWdlPFNwZWNpZmllZFRhc2s+LFxuICAgIGlzU3BlY2lmaWVkOiBib29sZWFuXG4gICkge1xuICAgIGNvbnN0IHRhc2tSZXN1bHRzID0gdGFza3NSZXN1bHQuY29udGVudDtcbiAgICBjb25zdCBoYXNUYXNrUmVzdWx0cyA9IEFycmF5LmlzQXJyYXkodGFza1Jlc3VsdHMpICYmIHRhc2tSZXN1bHRzLmxlbmd0aCA+IDA7XG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICBvZihpc1NwZWNpZmllZCksXG4gICAgICBvZih0YXNrc1Jlc3VsdCksXG4gICAgICBoYXNUYXNrUmVzdWx0c1xuICAgICAgICA/IGNvbWJpbmVMYXRlc3QoXG4gICAgICAgICAgICB0YXNrUmVzdWx0cy5tYXAodGFzayA9PlxuICAgICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9WSUVXX1RBU0tfUEVSTUlTU0lPTiwge1xuICAgICAgICAgICAgICAgIHJlc291cmNlOiBUQVNLX0RFVEFJTF9QRVJNSVNTSU9OX1JFU09VUkNFLnRhc2ssXG4gICAgICAgICAgICAgICAgaWRlbnRpZmllcjogIWlzU3BlY2lmaWVkID8gKHRhc2sgYXMgVGFzaykuaWQgOiAodGFzayBhcyBTcGVjaWZpZWRUYXNrKS5pZCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIDogb2YobnVsbCksXG4gICAgICBoYXNUYXNrUmVzdWx0c1xuICAgICAgICA/IGNvbWJpbmVMYXRlc3QoXG4gICAgICAgICAgICB0YXNrUmVzdWx0cy5tYXAodGFzayA9PlxuICAgICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9WSUVXX0NBU0VfUEVSTUlTU0lPTiwge1xuICAgICAgICAgICAgICAgIHJlc291cmNlOiBUQVNLX0RFVEFJTF9QRVJNSVNTSU9OX1JFU09VUkNFLmpzb25TY2hlbWFEb2N1bWVudCxcbiAgICAgICAgICAgICAgICBpZGVudGlmaWVyOiB0YXNrLmJ1c2luZXNzS2V5LFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgOiBvZihudWxsKSxcbiAgICBdKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwVGFza3NGb3JMaXN0KFxuICAgIGlzU3BlY2lmaWVkOiBib29sZWFuLFxuICAgIHRhc2tzOiBQYWdlPFRhc2s+IHwgUGFnZTxTcGVjaWZpZWRUYXNrPixcbiAgICBjYW5WaWV3VGFza1Blcm1pc3Npb25zOiBib29sZWFuW10gfCBudWxsLFxuICAgIGNhblZpZXdDYXNlUGVybWlzc2lvbnM6IGJvb2xlYW5bXSB8IG51bGxcbiAgKTogVGFza1tdIHwgTWFwcGVkU3BlY2lmaWVkVGFza1tdIHtcbiAgICBjb25zdCBNT01FTlRfRk9STUFUID0gJ0REIE1NTSBZWVlZIEhIOm1tJztcblxuICAgIGlmIChpc1NwZWNpZmllZCkge1xuICAgICAgcmV0dXJuICh0YXNrcyBhcyBQYWdlPFNwZWNpZmllZFRhc2s+KS5jb250ZW50Lm1hcCgoc3BlY2lmaWVkVGFzaywgc3BlY2lmaWVkVGFza0luZGV4KSA9PlxuICAgICAgICBzcGVjaWZpZWRUYXNrLml0ZW1zLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCBjdXJyKSA9PlxuICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgaWQ6IHNwZWNpZmllZFRhc2suaWQsXG4gICAgICAgICAgICAgIGJ1c2luZXNzS2V5OiBzcGVjaWZpZWRUYXNrLmJ1c2luZXNzS2V5LFxuICAgICAgICAgICAgICBwcm9jZXNzSW5zdGFuY2VJZDogc3BlY2lmaWVkVGFzay5wcm9jZXNzSW5zdGFuY2VJZCxcbiAgICAgICAgICAgICAgbmFtZTogc3BlY2lmaWVkVGFzay5uYW1lLFxuICAgICAgICAgICAgICAuLi4obW9tZW50KHNwZWNpZmllZFRhc2suY3JlYXRlZCkuaXNWYWxpZCgpICYmIHtcbiAgICAgICAgICAgICAgICBjcmVhdGVkOiBtb21lbnQoc3BlY2lmaWVkVGFzay5jcmVhdGVkKS5mb3JtYXQoTU9NRU5UX0ZPUk1BVCksXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAuLi4oY2FuVmlld1Rhc2tQZXJtaXNzaW9ucyAmJiB7bG9ja2VkOiAhY2FuVmlld1Rhc2tQZXJtaXNzaW9uc1tzcGVjaWZpZWRUYXNrSW5kZXhdfSksXG4gICAgICAgICAgICAgIC4uLihjYW5WaWV3Q2FzZVBlcm1pc3Npb25zICYmIHtcbiAgICAgICAgICAgICAgICBjYXNlTG9ja2VkOiAhY2FuVmlld0Nhc2VQZXJtaXNzaW9uc1tzcGVjaWZpZWRUYXNrSW5kZXhdLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICBbY3Vyci5rZXldOiBjdXJyLnZhbHVlLFxuICAgICAgICAgICAgfSkgYXMgTWFwcGVkU3BlY2lmaWVkVGFzayxcbiAgICAgICAgICB7fVxuICAgICAgICApXG4gICAgICApIGFzIE1hcHBlZFNwZWNpZmllZFRhc2tbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gKHRhc2tzIGFzIFBhZ2U8VGFzaz4pPy5jb250ZW50Py5tYXAoKHRhc2ssIHRhc2tJbmRleCkgPT4ge1xuICAgICAgY29uc3QgY3JlYXRlZERhdGUgPSBtb21lbnQodGFzay5jcmVhdGVkKTtcbiAgICAgIGNvbnN0IGR1ZURhdGUgPSBtb21lbnQodGFzay5kdWUpO1xuICAgICAgY29uc3QgdGFza0NvcHkgPSB7Li4udGFza307XG5cbiAgICAgIGlmICh0YXNrLmR1ZSAmJiBkdWVEYXRlLmlzVmFsaWQoKSkgdGFza0NvcHkuZHVlID0gZHVlRGF0ZS5mb3JtYXQoTU9NRU5UX0ZPUk1BVCk7XG4gICAgICBpZiAoY3JlYXRlZERhdGUuaXNWYWxpZCgpKSB0YXNrQ29weS5jcmVhdGVkID0gY3JlYXRlZERhdGUuZm9ybWF0KE1PTUVOVF9GT1JNQVQpO1xuICAgICAgaWYgKGNhblZpZXdUYXNrUGVybWlzc2lvbnMpIHRhc2tDb3B5LmxvY2tlZCA9ICFjYW5WaWV3VGFza1Blcm1pc3Npb25zW3Rhc2tJbmRleF07XG4gICAgICBpZiAoY2FuVmlld0Nhc2VQZXJtaXNzaW9ucykgdGFza0NvcHkuY2FzZUxvY2tlZCA9ICFjYW5WaWV3Q2FzZVBlcm1pc3Npb25zW3Rhc2tJbmRleF07XG5cbiAgICAgIHJldHVybiB0YXNrQ29weTtcbiAgICB9KSBhcyBUYXNrW107XG4gIH1cblxuICBwcml2YXRlIHNldFBhcmFtc0Zyb21RdWVyeVBhcmFtcygpOiB2b2lkIHtcbiAgICBjb25zdCBkZWNvZGVkUGFyYW1zID0gdGhpcy50YXNrTGlzdFF1ZXJ5UGFyYW1TZXJ2aWNlLmdldFRhc2tMaXN0UXVlcnlQYXJhbXMoKTtcblxuICAgIGlmIChkZWNvZGVkUGFyYW1zLmNhc2VEZWZpbml0aW9uTmFtZSkge1xuICAgICAgdGhpcy50YXNrTGlzdFNlcnZpY2Uuc2V0Q2FzZURlZmluaXRpb25OYW1lKGRlY29kZWRQYXJhbXMuY2FzZURlZmluaXRpb25OYW1lKTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkQ2FzZURlZmluaXRpb25JZCQubmV4dChkZWNvZGVkUGFyYW1zLmNhc2VEZWZpbml0aW9uTmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKGRlY29kZWRQYXJhbXMub3RoZXJGaWx0ZXJzPy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzZWFyY2hGaWVsZFZhbHVlcyA9IHRoaXMudGFza0xpc3RTZWFyY2hTZXJ2aWNlLm1hcE90aGVyRmlsdGVyVG9TZWFyY2hWYWx1ZXMoXG4gICAgICAgIGRlY29kZWRQYXJhbXMub3RoZXJGaWx0ZXJzXG4gICAgICApO1xuICAgICAgdGhpcy5zZXRTZWFyY2hGaWVsZFZhbHVlc1N1YmplY3QkLm5leHQoc2VhcmNoRmllbGRWYWx1ZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFyU2VhcmNoRmllbGRWYWx1ZXNTdWJqZWN0JC5uZXh0KG51bGwpO1xuICAgIH1cblxuICAgIGlmIChkZWNvZGVkUGFyYW1zLnNlbGVjdGVkVGFza1R5cGUpXG4gICAgICB0aGlzLnRhc2tMaXN0U2VydmljZS5zZXRTZWxlY3RlZFRhc2tUeXBlKGRlY29kZWRQYXJhbXMuc2VsZWN0ZWRUYXNrVHlwZSk7XG5cbiAgICBpZiAoZGVjb2RlZFBhcmFtcy5wYXJhbXM/LnNvcnQpIHtcbiAgICAgIGNvbnN0IHN0YXRlRnJvbVNvcnRTdHJpbmcgPSB0aGlzLnRhc2tMaXN0U29ydFNlcnZpY2UuZ2V0U29ydFN0YXRlRnJvbVNvcnRTdHJpbmcoXG4gICAgICAgIGRlY29kZWRQYXJhbXMucGFyYW1zLnNvcnRcbiAgICAgICk7XG4gICAgICBpZiAoc3RhdGVGcm9tU29ydFN0cmluZykgdGhpcy50YXNrTGlzdFNvcnRTZXJ2aWNlLnNldE92ZXJyaWRlU29ydFN0YXRlKHN0YXRlRnJvbVNvcnRTdHJpbmcpO1xuICAgIH1cblxuICAgIGlmIChkZWNvZGVkUGFyYW1zLnBhcmFtcylcbiAgICAgIHRoaXMudGFza0xpc3RQYWdpbmF0aW9uU2VydmljZS51cGRhdGVUYXNrUGFnaW5hdGlvbihcbiAgICAgICAgdGhpcy50YXNrTGlzdFNlcnZpY2Uuc2VsZWN0ZWRUYXNrVHlwZSxcbiAgICAgICAgZGVjb2RlZFBhcmFtcy5wYXJhbXNcbiAgICAgICk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGRpdlxuICAqbmdJZj1cIntcbiAgICBsb2FkaW5nOiBsb2FkaW5nVGFza3MkIHwgYXN5bmMsXG4gICAgc2VsZWN0ZWRUYXNrVHlwZTogc2VsZWN0ZWRUYXNrVHlwZSQgfCBhc3luYyxcbiAgICB0YXNrczogdGFza3MkIHwgYXN5bmMsXG4gICAgZmllbGRzOiBmaWVsZHMkIHwgYXN5bmMsXG4gICAgdmlzaWJsZVRhYnM6IHZpc2libGVUYWJzJCB8IGFzeW5jLFxuICAgIHBhZ2luYXRpb246IHBhZ2luYXRpb25Gb3JDdXJyZW50VGFza1R5cGVGb3JMaXN0JCB8IGFzeW5jLFxuICAgIHRhc2tMaXN0Q29sdW1uc0ZvckNhc2U6IHRhc2tMaXN0Q29sdW1uc0ZvckNhc2UkIHwgYXN5bmMsXG4gICAgc29ydFN0YXRlOiBzb3J0U3RhdGVGb3JDdXJyZW50VGFza1R5cGUkIHwgYXN5bmMsXG4gICAgb3ZlcnJpZGVTb3J0U3RhdGU6IG92ZXJyaWRlU29ydFN0YXRlJCB8IGFzeW5jLFxuICAgIHNlYXJjaEZpZWxkczogc2VhcmNoRmllbGRzJCB8IGFzeW5jLFxuICAgIGxvYWRpbmdTZWFyY2hGaWVsZHM6IGxvYWRpbmdTZWFyY2hGaWVsZHMkIHwgYXN5bmMsXG4gICAgY2FzZURlZmluaXRpb25OYW1lOiBjYXNlRGVmaW5pdGlvbk5hbWUkIHwgYXN5bmMsXG4gICAgbm9SZXN1bHRzTWVzc2FnZTogbm9SZXN1bHRzTWVzc2FnZSQgfCBhc3luY1xuICB9IGFzIG9ic1wiXG4gIGNsYXNzPVwibWFpbi1jb250ZW50XCJcbj5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxuICAgIEBpZiAob2JzLmNhc2VEZWZpbml0aW9uTmFtZSAmJiBvYnMuY2FzZURlZmluaXRpb25OYW1lICE9PSBBTExfQ0FTRVNfSUQpIHtcbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICBzZWFyY2hGaWVsZHM7XG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgb2JzOiBvYnNcbiAgICAgICAgICB9XG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgfVxuXG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgdGFza3NMaXN0O1xuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgb2JzOiBvYnNcbiAgICAgICAgfVxuICAgICAgXCJcbiAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICB0YXNrc0xpc3RMb2FkaW5nO1xuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgb2JzOiBvYnNcbiAgICAgICAgfVxuICAgICAgXCJcbiAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICA8dmFsdGltby10YXNrLWRldGFpbC1tb2RhbFxuICAgICAgI3Rhc2tEZXRhaWxcbiAgICAgIChmb3JtU3VibWl0KT1cInJlbG9hZCgpXCJcbiAgICAgIChhc3NpZ25tZW50T2ZUYXNrQ2hhbmdlZCk9XCJyZWxvYWQoKVwiXG4gICAgPjwvdmFsdGltby10YXNrLWRldGFpbC1tb2RhbD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjb25maWd1cmVkVGFicyBsZXQtc2VsZWN0ZWRUYXNrVHlwZT1cInNlbGVjdGVkVGFza1R5cGVcIiBsZXQtdmlzaWJsZVRhYnM9XCJ2aXNpYmxlVGFic1wiPlxuICA8Y2RzLXRhYnMgKm5nSWY9XCJ2aXNpYmxlVGFic1wiIHR5cGU9XCJjb250YWluZWRcIiBjbGFzcz1cInZhbHRpbW8tY2FyYm9uLWxpc3RfX3RhYnNcIj5cbiAgICA8Y2RzLXRhYlxuICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiB2aXNpYmxlVGFic1wiXG4gICAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCIndGFzay1saXN0LXRhYi0nICsgdGFiXCJcbiAgICAgIFtoZWFkaW5nXT1cIid0YXNrLWxpc3QuJyArIHRhYiArICcudGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFthY3RpdmVdPVwic2VsZWN0ZWRUYXNrVHlwZSA9PT0gdGFiXCJcbiAgICAgIChzZWxlY3RlZCk9XCJ0YWJDaGFuZ2UodGFiKVwiXG4gICAgPjwvY2RzLXRhYj5cbiAgPC9jZHMtdGFicz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY2FzZUxpbmsgbGV0LWRhdGE9XCJkYXRhXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYWNoZWRUYXNrcyQgfCBhc3luYyBhcyBjYWNoZWRUYXNrc1wiPlxuICAgIDxkaXYgKm5nSWY9XCJjYWNoZWRUYXNrc1tkYXRhLmluZGV4XS5jYXNlTG9ja2VkXCI+XG4gICAgICA8YVxuICAgICAgICBjbGFzcz1cImZsb2F0LWxlZnQgY2RzLS1saW5rLS1kaXNhYmxlZFwiXG4gICAgICAgIGNkc0xpbmtcbiAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXG4gICAgICAgIG5nYlRvb2x0aXA9XCJ7eyAndGFzay1saXN0LmNhc2VMb2NrZWQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICA+XG4gICAgICAgIHt7ICd0YXNrLWxpc3QuZ29Ub0Nhc2UnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIiFjYWNoZWRUYXNrc1tkYXRhLmluZGV4XS5jYXNlTG9ja2VkXCI+XG4gICAgICA8YVxuICAgICAgICBjbGFzcz1cImZsb2F0LWxlZnQgY2RzLS1saW5rXCJcbiAgICAgICAgY2RzTGlua1xuICAgICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5SZWxhdGVkQ2FzZSgkZXZlbnQsIGRhdGEuaW5kZXgpXCJcbiAgICAgID5cbiAgICAgICAge3sgJ3Rhc2stbGlzdC5nb1RvQ2FzZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Rhc2tzTGlzdCBsZXQtb2JzPVwib2JzXCI+XG4gIDx2YWx0aW1vLWNhcmJvbi1saXN0XG4gICAgKm5nSWY9XCIhb2JzLmxvYWRpbmdcIlxuICAgIFtmaWVsZHNdPVwib2JzLmZpZWxkc1wiXG4gICAgW2hlYWRlcl09XCJmYWxzZVwiXG4gICAgW2l0ZW1zXT1cIm9icy50YXNrc1wiXG4gICAgW2xhc3RDb2x1bW5UZW1wbGF0ZV09XCJjYXNlTGlua1wiXG4gICAgW3BhZ2luYXRpb25dPVwib2JzLnBhZ2luYXRpb25cIlxuICAgIHBhZ2luYXRpb25JZGVudGlmaWVyPVwidGFza0xpc3RcIlxuICAgIGxvY2tlZFRvb2x0aXBUcmFuc2xhdGlvbktleT1cInRhc2stbGlzdC5yb3dMb2NrZWRcIlxuICAgIFtzb3J0U3RhdGVdPVwib2JzLm92ZXJyaWRlU29ydFN0YXRlIHx8IG9icy5zb3J0U3RhdGVcIlxuICAgIChwYWdpbmF0aW9uQ2xpY2tlZCk9XCJwYWdpbmF0aW9uQ2xpY2tlZCgkZXZlbnQsIG9icy5zZWxlY3RlZFRhc2tUeXBlKVwiXG4gICAgKHBhZ2luYXRpb25TZXQpPVwicGFnaW5hdGlvblNldCgkZXZlbnQpXCJcbiAgICAocm93Q2xpY2tlZCk9XCJyb3dPcGVuVGFza0NsaWNrKCRldmVudClcIlxuICAgIChzb3J0Q2hhbmdlZCk9XCJzb3J0Q2hhbmdlZCgkZXZlbnQpXCJcbiAgPlxuICAgIDxkaXYgdGFicz5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvYnMudmlzaWJsZVRhYnNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBjb25maWd1cmVkVGFicztcbiAgICAgICAgICAgIGNvbnRleHQ6IHtzZWxlY3RlZFRhc2tUeXBlOiBvYnMuc2VsZWN0ZWRUYXNrVHlwZSwgdmlzaWJsZVRhYnM6IG9icy52aXNpYmxlVGFic31cbiAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDx2YWx0aW1vLW5vLXJlc3VsdHNcbiAgICAgIFtkZXNjcmlwdGlvbl09XCJvYnMubm9SZXN1bHRzTWVzc2FnZS5kZXNjcmlwdGlvbiB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdGl0bGVdPVwib2JzLm5vUmVzdWx0c01lc3NhZ2UudGl0bGUgfCB0cmFuc2xhdGVcIlxuICAgID5cbiAgICA8L3ZhbHRpbW8tbm8tcmVzdWx0cz5cbiAgPC92YWx0aW1vLWNhcmJvbi1saXN0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0YXNrc0xpc3RMb2FkaW5nIGxldC1vYnM9XCJvYnNcIj5cbiAgPHZhbHRpbW8tY2FyYm9uLWxpc3QgKm5nSWY9XCJvYnMubG9hZGluZ1wiIFtsb2FkaW5nXT1cInRydWVcIj5cbiAgICA8ZGl2IHRhYnM+XG4gICAgICA8Y2RzLXRhYnMgKm5nSWY9XCIhb2JzLnZpc2libGVUYWJzXCIgdHlwZT1cImNvbnRhaW5lZFwiIGNsYXNzPVwidmFsdGltby1jYXJib24tbGlzdF9fdGFic1wiPlxuICAgICAgICA8Y2RzLXRhYlxuICAgICAgICAgIFtoZWFkaW5nXT1cIid0YXNrLWxpc3QubWluZS50aXRsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFthY3RpdmVdPVwib2JzLnNlbGVjdGVkVGFza1R5cGUgPT09ICdtaW5lJ1wiXG4gICAgICAgID5cbiAgICAgICAgPC9jZHMtdGFiPlxuXG4gICAgICAgIDxjZHMtdGFiXG4gICAgICAgICAgW2hlYWRpbmddPVwiJ3Rhc2stbGlzdC5vcGVuLnRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW2FjdGl2ZV09XCJvYnMuc2VsZWN0ZWRUYXNrVHlwZSA9PT0gJ29wZW4nXCJcbiAgICAgICAgPlxuICAgICAgICA8L2Nkcy10YWI+XG5cbiAgICAgICAgPGNkcy10YWJcbiAgICAgICAgICBbaGVhZGluZ109XCIndGFzay1saXN0LmFsbC50aXRsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFthY3RpdmVdPVwib2JzLnNlbGVjdGVkVGFza1R5cGUgPT09ICdhbGwnXCJcbiAgICAgICAgPlxuICAgICAgICA8L2Nkcy10YWI+XG4gICAgICA8L2Nkcy10YWJzPlxuXG4gICAgICA8Y2RzLXRhYnMgKm5nSWY9XCJvYnMudmlzaWJsZVRhYnNcIiB0eXBlPVwiY29udGFpbmVkXCIgY2xhc3M9XCJ2YWx0aW1vLWNhcmJvbi1saXN0X190YWJzXCI+XG4gICAgICAgIDxjZHMtdGFiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiBvYnMudmlzaWJsZVRhYnNcIlxuICAgICAgICAgIFtoZWFkaW5nXT1cIid0YXNrLWxpc3QuJyArIHRhYiArICcudGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbYWN0aXZlXT1cIm9icy5zZWxlY3RlZFRhc2tUeXBlID09PSB0YWJcIlxuICAgICAgICA+PC9jZHMtdGFiPlxuICAgICAgPC9jZHMtdGFicz5cbiAgICA8L2Rpdj5cbiAgPC92YWx0aW1vLWNhcmJvbi1saXN0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzZWFyY2hGaWVsZHMgbGV0LW9icz1cIm9ic1wiPlxuICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgIDx2YWx0aW1vLXNlYXJjaC1maWVsZHNcbiAgICAgIFtzZWFyY2hGaWVsZHNdPVwib2JzLnNlYXJjaEZpZWxkc1wiXG4gICAgICBbaW5wdXREaXNhYmxlZF09XCJvYnMubG9hZGluZ1NlYXJjaEZpZWxkc1wiXG4gICAgICBbZG9jdW1lbnREZWZpbml0aW9uTmFtZV09XCJvYnMuY2FzZURlZmluaXRpb25OYW1lXCJcbiAgICAgIFtzZXRWYWx1ZXNTdWJqZWN0JF09XCJzZXRTZWFyY2hGaWVsZFZhbHVlc1N1YmplY3QkXCJcbiAgICAgIFtjbGVhclZhbHVlc1N1YmplY3QkXT1cImNsZWFyU2VhcmNoRmllbGRWYWx1ZXNTdWJqZWN0JFwiXG4gICAgICAoZG9TZWFyY2gpPVwic2VhcmNoKCRldmVudClcIlxuICAgID5cbiAgICA8L3ZhbHRpbW8tc2VhcmNoLWZpZWxkcz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctY29udGFpbmVyIHJlbmRlckluUGFnZUhlYWRlciBbZnVsbFdpZHRoXT1cInRydWVcIj5cbiAgPG5nLXRlbXBsYXRlPlxuICAgIDxjZHMtZHJvcGRvd25cbiAgICAgIGNsYXNzPVwiY2FzZS1kZWZpbml0aW9uLXNlbGVjdGlvblwiXG4gICAgICAqbmdJZj1cIntcbiAgICAgICAgbG9hZGluZ0Nhc2VMaXN0SXRlbXM6IGxvYWRpbmdDYXNlTGlzdEl0ZW1zJCB8IGFzeW5jLFxuICAgICAgICBjYXNlTGlzdEl0ZW1zOiBjYXNlTGlzdEl0ZW1zJCB8IGFzeW5jXG4gICAgICB9IGFzIG9ic1wiXG4gICAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCIndGFzay1saXN0LWNhc2UtZHJvcGRvd24nXCJcbiAgICAgIFtkaXNhYmxlZF09XCJvYnMubG9hZGluZ0Nhc2VMaXN0SXRlbXMgfHwgKG9icy5jYXNlTGlzdEl0ZW1zIHx8IFtdKS5sZW5ndGggPT09IDFcIlxuICAgICAgW3NrZWxldG9uXT1cIm9icy5sb2FkaW5nQ2FzZUxpc3RJdGVtc1wiXG4gICAgICAoc2VsZWN0ZWQpPVwic2V0Q2FzZURlZmluaXRpb24oJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPGNkcy1kcm9wZG93bi1saXN0IFtpdGVtc109XCJvYnMuY2FzZUxpc3RJdGVtcyB8fCBbXVwiPjwvY2RzLWRyb3Bkb3duLWxpc3Q+XG4gICAgPC9jZHMtZHJvcGRvd24+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
360
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vdGFzay9zcmMvbGliL2NvbXBvbmVudHMvdGFzay1saXN0L3Rhc2stbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3Rhc2svc3JjL2xpYi9jb21wb25lbnRzL3Rhc2stbGlzdC90YXNrLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBR1osU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFVNUIsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdGLE9BQU8sRUFNTCxXQUFXLEdBQ1osTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUMsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RSxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLHdCQUF3QixFQUN4QiwrQkFBK0IsR0FDaEMsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3JCLGVBQWUsR0FDaEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBRy9CLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBRTFF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QUFpQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdExpc3RlbmVyLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7VGFza1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Rhc2suc2VydmljZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge1xuICBNYXBwZWRTcGVjaWZpZWRUYXNrLFxuICBTcGVjaWZpZWRUYXNrLFxuICBUYXNrLFxuICBUYXNrTGlzdE90aGVyRmlsdGVycyxcbiAgVGFza0xpc3RQYXJhbXMsXG4gIFRhc2tQYWdlUGFyYW1zLFxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtUYXNrRGV0YWlsTW9kYWxDb21wb25lbnR9IGZyb20gJy4uL3Rhc2stZGV0YWlsLW1vZGFsL3Rhc2stZGV0YWlsLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIENvbmZpZ1NlcnZpY2UsXG4gIFBhZ2UsXG4gIFNlYXJjaEZpZWxkLFxuICBTZWFyY2hGaWVsZFZhbHVlcyxcbiAgU29ydFN0YXRlLFxuICBUYXNrTGlzdFRhYixcbn0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7RG9jdW1lbnRTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5pbXBvcnQge2Rpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtQZXJtaXNzaW9uU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vYWNjZXNzLWNvbnRyb2wnO1xuaW1wb3J0IHtcbiAgQ0FOX1ZJRVdfQ0FTRV9QRVJNSVNTSU9OLFxuICBDQU5fVklFV19UQVNLX1BFUk1JU1NJT04sXG4gIFRBU0tfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UsXG59IGZyb20gJy4uLy4uL3Rhc2stcGVybWlzc2lvbnMnO1xuaW1wb3J0IHtcbiAgVGFza0xpc3RDb2x1bW5TZXJ2aWNlLFxuICBUYXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLFxuICBUYXNrTGlzdFF1ZXJ5UGFyYW1TZXJ2aWNlLFxuICBUYXNrTGlzdFNlYXJjaFNlcnZpY2UsXG4gIFRhc2tMaXN0U2VydmljZSxcbn0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtpc0VxdWFsfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtMaXN0SXRlbX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtUYXNrTGlzdFNvcnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YXNrLWxpc3Qtc29ydC5zZXJ2aWNlJztcbmltcG9ydCB7Q2FyYm9uTGlzdE5vUmVzdWx0c01lc3NhZ2UsIFBhZ2VUaXRsZVNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtUQVNLX0xJU1RfTk9fU0VBUkNIX1JFU1VMVFNfTUVTU0FHRX0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcblxubW9tZW50LmxvY2FsZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ0tleScpIHx8ICcnKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby10YXNrLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFzay1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFzay1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBUYXNrTGlzdFNlcnZpY2UsXG4gICAgVGFza0xpc3RDb2x1bW5TZXJ2aWNlLFxuICAgIFRhc2tMaXN0UGFnaW5hdGlvblNlcnZpY2UsXG4gICAgVGFza0xpc3RTb3J0U2VydmljZSxcbiAgICBUYXNrTGlzdFNlYXJjaFNlcnZpY2UsXG4gICAgVGFza0xpc3RRdWVyeVBhcmFtU2VydmljZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFza0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ3Rhc2tEZXRhaWwnKSBwcml2YXRlIHJlYWRvbmx5IF90YXNrRGV0YWlsOiBUYXNrRGV0YWlsTW9kYWxDb21wb25lbnQ7XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnBvcHN0YXRlJywgWyckZXZlbnQnXSlcbiAgcHJpdmF0ZSBvblBvcFN0YXRlKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZXRQYXJhbXNGcm9tUXVlcnlQYXJhbXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBBTExfQ0FTRVNfSUQgPSB0aGlzLnRhc2tMaXN0U2VydmljZS5BTExfQ0FTRVNfSUQ7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkVGFza1R5cGUkID0gdGhpcy50YXNrTGlzdFNlcnZpY2Uuc2VsZWN0ZWRUYXNrVHlwZSQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfb3ZlcnJpZGVOb1Jlc3VsdHNNZXNzYWdlJCA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxDYXJib25MaXN0Tm9SZXN1bHRzTWVzc2FnZSB8IG51bGw+KG51bGwpO1xuXG4gIHB1YmxpYyByZWFkb25seSBub1Jlc3VsdHNNZXNzYWdlJDogT2JzZXJ2YWJsZTxDYXJib25MaXN0Tm9SZXN1bHRzTWVzc2FnZT4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLnNlbGVjdGVkVGFza1R5cGUkLFxuICAgIHRoaXMuX292ZXJyaWRlTm9SZXN1bHRzTWVzc2FnZSQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKFxuICAgICAgKFtzZWxlY3RlZFRhc2tUeXBlLCBvdmVycmlkZU5vUmVzdWx0c01lc3NhZ2VdKSA9PlxuICAgICAgICBvdmVycmlkZU5vUmVzdWx0c01lc3NhZ2UgfHwge1xuICAgICAgICAgIHRpdGxlOiAndGFzay1saXN0LicgKyBzZWxlY3RlZFRhc2tUeXBlICsgJy5ub1Jlc3VsdHNUaXRsZScsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICd0YXNrLWxpc3QuJyArIHNlbGVjdGVkVGFza1R5cGUgKyAnLm5vUmVzdWx0c0Rlc2NyaXB0aW9uJyxcbiAgICAgICAgICBpc1NlYXJjaFJlc3VsdDogZmFsc2UsXG4gICAgICAgIH1cbiAgICApXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZpZWxkcyQgPSB0aGlzLnRhc2tMaXN0Q29sdW1uU2VydmljZS5maWVsZHMkO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZ1Rhc2tzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHB1YmxpYyByZWFkb25seSB2aXNpYmxlVGFicyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PFRhc2tMaXN0VGFiPiB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgX2VuYWJsZUxvYWRpbmdBbmltYXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY2FjaGVkVGFza3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYXNrW10gfCBNYXBwZWRTcGVjaWZpZWRUYXNrW10gfCBudWxsPihudWxsKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcGFnaW5hdGlvbkZvckN1cnJlbnRUYXNrVHlwZUZvckxpc3QkID1cbiAgICB0aGlzLnRhc2tMaXN0UGFnaW5hdGlvblNlcnZpY2UucGFnaW5hdGlvbkZvckN1cnJlbnRUYXNrVHlwZUZvckxpc3QkO1xuXG4gIHB1YmxpYyByZWFkb25seSBzb3J0U3RhdGVGb3JDdXJyZW50VGFza1R5cGUkID1cbiAgICB0aGlzLnRhc2tMaXN0U29ydFNlcnZpY2Uuc29ydFN0YXRlRm9yQ3VycmVudFRhc2tUeXBlJDtcblxuICBwdWJsaWMgcmVhZG9ubHkgb3ZlcnJpZGVTb3J0U3RhdGUkID0gdGhpcy50YXNrTGlzdFNvcnRTZXJ2aWNlLm92ZXJyaWRlU29ydFN0YXRlJDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9yZWxvYWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY2FzZURlZmluaXRpb25OYW1lJCA9IHRoaXMudGFza0xpc3RTZXJ2aWNlLmNhc2VEZWZpbml0aW9uTmFtZSQ7XG5cbiAgcHVibGljIHJlYWRvbmx5IHRhc2tzJDogT2JzZXJ2YWJsZTxUYXNrW10gfCBNYXBwZWRTcGVjaWZpZWRUYXNrW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy50YXNrTGlzdFNlcnZpY2UubG9hZGluZ1N0YXRlRm9yQ2FzZURlZmluaXRpb24kLFxuICAgIHRoaXMuc2VsZWN0ZWRUYXNrVHlwZSQsXG4gICAgdGhpcy50YXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLnBhZ2luYXRpb25Gb3JDdXJyZW50VGFza1R5cGUkLFxuICAgIHRoaXMudGFza0xpc3RTb3J0U2VydmljZS5zb3J0U3RyaW5nRm9yQ3VycmVudFRhc2tUeXBlJCxcbiAgICB0aGlzLmNhc2VEZWZpbml0aW9uTmFtZSQsXG4gICAgdGhpcy5fZW5hYmxlTG9hZGluZ0FuaW1hdGlvbiQsXG4gICAgdGhpcy5fcmVsb2FkJCxcbiAgICB0aGlzLnRhc2tMaXN0U2VhcmNoU2VydmljZS5vdGhlckZpbHRlcnMkLFxuICAgIHRoaXMudGFza0xpc3RTb3J0U2VydmljZS5vdmVycmlkZVNvcnRTdGF0ZVN0cmluZyQsXG4gIF0pLnBpcGUoXG4gICAgZmlsdGVyKChbbG9hZGluZ1N0YXRlRm9yQ2FzZURlZmluaXRpb25dKSA9PiBsb2FkaW5nU3RhdGVGb3JDYXNlRGVmaW5pdGlvbiA9PT0gZmFsc2UpLFxuICAgIG1hcChcbiAgICAgIChbXG4gICAgICAgIF8sXG4gICAgICAgIHNlbGVjdGVkVGFza1R5cGUsXG4gICAgICAgIHBhZ2luYXRpb25Gb3JTZWxlY3RlZFRhc2tUeXBlLFxuICAgICAgICBzb3J0U3RyaW5nRm9yU2VsZWN0ZWRUYXNrVHlwZSxcbiAgICAgICAgY2FzZURlZmluaXRpb25OYW1lLFxuICAgICAgICBlbmFibGVMb2FkaW5nQW5pbWF0aW9uLFxuICAgICAgICByZWxvYWQsXG4gICAgICAgIG90aGVyRmlsdGVycyxcbiAgICAgICAgb3ZlcnJpZGVTb3J0U3RhdGVTdHJpbmcsXG4gICAgICBdKSA9PlxuICAgICAgICB0aGlzLmdldFRhc2tMaXN0UGFyYW1zKFxuICAgICAgICAgIHBhZ2luYXRpb25Gb3JTZWxlY3RlZFRhc2tUeXBlLFxuICAgICAgICAgIG92ZXJyaWRlU29ydFN0YXRlU3RyaW5nIHx8IHNvcnRTdHJpbmdGb3JTZWxlY3RlZFRhc2tUeXBlLFxuICAgICAgICAgIHNlbGVjdGVkVGFza1R5cGUsXG4gICAgICAgICAgY2FzZURlZmluaXRpb25OYW1lLFxuICAgICAgICAgIGVuYWJsZUxvYWRpbmdBbmltYXRpb24sXG4gICAgICAgICAgcmVsb2FkLFxuICAgICAgICAgIG90aGVyRmlsdGVyc1xuICAgICAgICApXG4gICAgKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldmlvdXMsIGN1cnJlbnQpID0+IGlzRXF1YWwocHJldmlvdXMucGFyYW1zLCBjdXJyZW50LnBhcmFtcykpLFxuICAgIHRhcChwYXJhbXMgPT4ge1xuICAgICAgaWYgKHBhcmFtcy5lbmFibGVMb2FkaW5nQW5pbWF0aW9uKSB0aGlzLmxvYWRpbmdUYXNrcyQubmV4dCh0cnVlKTtcbiAgICAgIHRoaXMudGFza0xpc3RRdWVyeVBhcmFtU2VydmljZS5zZXRUYXNrTGlzdFBhcmFtcyhwYXJhbXMucGFyYW1zKTtcbiAgICB9KSxcbiAgICBzd2l0Y2hNYXAoKHtwYXJhbXN9KSA9PlxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMudGFza1NlcnZpY2UucXVlcnlUYXNrc1BhZ2VWMyhcbiAgICAgICAgICBwYXJhbXMuc2VsZWN0ZWRUYXNrVHlwZSxcbiAgICAgICAgICBwYXJhbXMucGFyYW1zLFxuICAgICAgICAgIHBhcmFtcy5jYXNlRGVmaW5pdGlvbk5hbWUsXG4gICAgICAgICAgcGFyYW1zLm90aGVyRmlsdGVyc1xuICAgICAgICApLFxuICAgICAgICBvZighIXBhcmFtcy5jYXNlRGVmaW5pdGlvbk5hbWUpLFxuICAgICAgXSlcbiAgICApLFxuICAgIHN3aXRjaE1hcCgoW3Rhc2tzUmVzdWx0LCBpc1NwZWNpZmllZF0pID0+XG4gICAgICB0aGlzLmdldFRhc2tMaXN0UGVybWlzc2lvbnNSZXF1ZXN0KHRhc2tzUmVzdWx0LCBpc1NwZWNpZmllZClcbiAgICApLFxuICAgIG1hcCgoW2lzU3BlY2lmaWVkLCB0YXNrUmVzdWx0LCBjYW5WaWV3VGFza1Blcm1pc3Npb25zLCBjYW5WaWV3Q2FzZVBlcm1pc3Npb25zXSkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVUYXNrTGlzdFBhZ2luYXRpb25BZnRlclJlc3BvbnNlKE51bWJlcih0YXNrUmVzdWx0LnRvdGFsRWxlbWVudHMpKTtcblxuICAgICAgcmV0dXJuIHRoaXMubWFwVGFza3NGb3JMaXN0KFxuICAgICAgICBpc1NwZWNpZmllZCxcbiAgICAgICAgdGFza1Jlc3VsdCxcbiAgICAgICAgY2FuVmlld1Rhc2tQZXJtaXNzaW9ucyxcbiAgICAgICAgY2FuVmlld0Nhc2VQZXJtaXNzaW9uc1xuICAgICAgKTtcbiAgICB9KSxcbiAgICB0YXAodGFza3MgPT4ge1xuICAgICAgdGhpcy5jYWNoZWRUYXNrcyQubmV4dCh0YXNrcyk7XG4gICAgICB0aGlzLmxvYWRpbmdUYXNrcyQubmV4dChmYWxzZSk7XG4gICAgICB0aGlzLmRpc2FibGVMb2FkaW5nQW5pbWF0aW9uKCk7XG5cbiAgICAgIHRoaXMudGFza0xpc3RTZWFyY2hTZXJ2aWNlLm90aGVyRmlsdGVycyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUob3RoZXJGaWx0ZXJzID0+IHtcbiAgICAgICAgdGhpcy5fb3ZlcnJpZGVOb1Jlc3VsdHNNZXNzYWdlJC5uZXh0KFxuICAgICAgICAgIG90aGVyRmlsdGVycz8ubGVuZ3RoID4gMCA/IFRBU0tfTElTVF9OT19TRUFSQ0hfUkVTVUxUU19NRVNTQUdFIDogbnVsbFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZ0Nhc2VMaXN0SXRlbXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPih0aGlzLkFMTF9DQVNFU19JRCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNhc2VMaXN0SXRlbXMkOiBPYnNlcnZhYmxlPExpc3RJdGVtW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0QWxsRGVmaW5pdGlvbnMoKSxcbiAgICB0aGlzLl9zZWxlY3RlZENhc2VEZWZpbml0aW9uSWQkLFxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2RvY3VtZW50RGVmaW5pdGlvblJlcywgc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkXSkgPT4gW1xuICAgICAge1xuICAgICAgICBjb250ZW50OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgndGFzay1saXN0LmFsbENhc2VzJyksXG4gICAgICAgIGlkOiB0aGlzLkFMTF9DQVNFU19JRCxcbiAgICAgICAgc2VsZWN0ZWQ6IHNlbGVjdGVkQ2FzZURlZmluaXRpb25JZCA9PT0gdGhpcy5BTExfQ0FTRVNfSUQsXG4gICAgICB9LFxuICAgICAgLi4uZG9jdW1lbnREZWZpbml0aW9uUmVzLmNvbnRlbnQubWFwKGRvY3VtZW50RGVmaW5pdGlvbiA9PiAoe1xuICAgICAgICBpZDogZG9jdW1lbnREZWZpbml0aW9uLmlkLm5hbWUsXG4gICAgICAgIGNvbnRlbnQ6IGRvY3VtZW50RGVmaW5pdGlvbj8uc2NoZW1hPy50aXRsZSxcbiAgICAgICAgc2VsZWN0ZWQ6IGRvY3VtZW50RGVmaW5pdGlvbi5pZC5uYW1lID09PSBzZWxlY3RlZENhc2VEZWZpbml0aW9uSWQsXG4gICAgICB9KSksXG4gICAgXSksXG4gICAgdGFwKCgpID0+IHRoaXMubG9hZGluZ0Nhc2VMaXN0SXRlbXMkLm5leHQoZmFsc2UpKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSB0YXNrTGlzdENvbHVtbnNGb3JDYXNlJCA9IHRoaXMudGFza0xpc3RDb2x1bW5TZXJ2aWNlLnRhc2tMaXN0Q29sdW1uc0ZvckNhc2UkO1xuXG4gIHB1YmxpYyByZWFkb25seSBsb2FkaW5nU2VhcmNoRmllbGRzJCA9IHRoaXMudGFza0xpc3RTZWFyY2hTZXJ2aWNlLmxvYWRpbmdTZWFyY2hGaWVsZHMkO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VhcmNoRmllbGRzJDogT2JzZXJ2YWJsZTxTZWFyY2hGaWVsZFtdPiA9XG4gICAgdGhpcy50YXNrTGlzdFNlYXJjaFNlcnZpY2Uuc2VhcmNoRmllbGRzJDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9ERUZBVUxUX1RBU0tfTElTVF9UQUJTOiBUYXNrTGlzdFRhYltdID0gW1xuICAgIFRhc2tMaXN0VGFiLk1JTkUsXG4gICAgVGFza0xpc3RUYWIuT1BFTixcbiAgICBUYXNrTGlzdFRhYi5BTEwsXG4gIF07XG5cbiAgcHVibGljIHJlYWRvbmx5IHNldFNlYXJjaEZpZWxkVmFsdWVzU3ViamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlYXJjaEZpZWxkVmFsdWVzPih7fSk7XG4gIHB1YmxpYyByZWFkb25seSBjbGVhclNlYXJjaEZpZWxkVmFsdWVzU3ViamVjdCQgPSBuZXcgU3ViamVjdDxudWxsPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGVybWlzc2lvblNlcnZpY2U6IFBlcm1pc3Npb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrU2VydmljZTogVGFza1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrTGlzdFNlcnZpY2U6IFRhc2tMaXN0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrTGlzdENvbHVtblNlcnZpY2U6IFRhc2tMaXN0Q29sdW1uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhc2tMaXN0UGFnaW5hdGlvblNlcnZpY2U6IFRhc2tMaXN0UGFnaW5hdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrTGlzdFNvcnRTZXJ2aWNlOiBUYXNrTGlzdFNvcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGFza0xpc3RTZWFyY2hTZXJ2aWNlOiBUYXNrTGlzdFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrTGlzdFF1ZXJ5UGFyYW1TZXJ2aWNlOiBUYXNrTGlzdFF1ZXJ5UGFyYW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnZVRpdGxlU2VydmljZTogUGFnZVRpdGxlU2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudGFza0xpc3RDb2x1bW5TZXJ2aWNlLnJlc2V0VGFza0xpc3RGaWVsZHMoKTtcbiAgICB0aGlzLnNldFZpc2libGVUYWJzKCk7XG4gICAgdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLmRpc2FibGVSZXNldCgpO1xuICAgIHRoaXMuc2V0UGFyYW1zRnJvbVF1ZXJ5UGFyYW1zKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLmVuYWJsZVJlc2V0KCk7XG4gIH1cblxuICBwdWJsaWMgcGFnaW5hdGlvbkNsaWNrZWQocGFnZTogbnVtYmVyLCB0eXBlOiBUYXNrTGlzdFRhYiB8IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudGFza0xpc3RQYWdpbmF0aW9uU2VydmljZS51cGRhdGVUYXNrUGFnaW5hdGlvbih0eXBlIGFzIFRhc2tMaXN0VGFiLCB7cGFnZTogcGFnZSAtIDF9KTtcbiAgfVxuXG4gIHB1YmxpYyBwYWdpbmF0aW9uU2V0KG5ld1NpemU6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy50YXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLnBhZ2luYXRpb25Gb3JDdXJyZW50VGFza1R5cGUkLFxuICAgICAgdGhpcy50YXNrTGlzdFNlcnZpY2Uuc2VsZWN0ZWRUYXNrVHlwZSQsXG4gICAgXSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChbcGFnaW5hdGlvbiwgc2VsZWN0ZWRUYXNrVHlwZV0pID0+IHtcbiAgICAgICAgdGhpcy50YXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLnVwZGF0ZVRhc2tQYWdpbmF0aW9uKHNlbGVjdGVkVGFza1R5cGUsIHtcbiAgICAgICAgICBzaXplOiBOdW1iZXIobmV3U2l6ZSksXG4gICAgICAgICAgcGFnZTogdGhpcy50YXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLmdldExhc3RBdmFpbGFibGVQYWdlKFxuICAgICAgICAgICAgcGFnaW5hdGlvbi5wYWdlLFxuICAgICAgICAgICAgTnVtYmVyKG5ld1NpemUpLFxuICAgICAgICAgICAgcGFnaW5hdGlvbi5jb2xsZWN0aW9uU2l6ZVxuICAgICAgICAgICksXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdGFiQ2hhbmdlKHRhYjogVGFza0xpc3RUYWIgfCBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRhc2tMaXN0U2VydmljZS5zZWxlY3RlZFRhc2tUeXBlJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShzZWxlY3RlZFRhc2tUeXBlID0+IHtcbiAgICAgIGlmIChzZWxlY3RlZFRhc2tUeXBlICE9PSB0YWIpIHtcbiAgICAgICAgdGhpcy5lbmFibGVMb2FkaW5nQW5pbWF0aW9uKCk7XG4gICAgICAgIHRoaXMudGFza0xpc3RTZXJ2aWNlLnNldFNlbGVjdGVkVGFza1R5cGUodGFiIGFzIFRhc2tMaXN0VGFiKTtcbiAgICAgICAgdGhpcy50YXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLnVwZGF0ZVRhc2tQYWdpbmF0aW9uKHRhYiBhcyBUYXNrTGlzdFRhYiwge3BhZ2U6IDB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuUmVsYXRlZENhc2UoZXZlbnQ6IE1vdXNlRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHRoaXMuY2FjaGVkVGFza3MkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGNhY2hlZFRhc2tzID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRUYXNrID0gY2FjaGVkVGFza3MgJiYgY2FjaGVkVGFza3NbaW5kZXhdO1xuXG4gICAgICBpZiAoY3VycmVudFRhc2sgJiYgIWN1cnJlbnRUYXNrLmNhc2VMb2NrZWQpIHtcbiAgICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2VcbiAgICAgICAgICAuZ2V0RG9jdW1lbnQoY3VycmVudFRhc2suYnVzaW5lc3NLZXkpXG4gICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKGRvY3VtZW50ID0+IHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcbiAgICAgICAgICAgICAgYC9kb3NzaWVycy8ke2RvY3VtZW50LmRlZmluaXRpb25JZD8ubmFtZX0vZG9jdW1lbnQvJHtjdXJyZW50VGFzay5idXNpbmVzc0tleX1gLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcm93T3BlblRhc2tDbGljayh0YXNrKTogdm9pZCB8IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGFzay5lbmRUaW1lICYmICF0YXNrLmxvY2tlZCA/IHRoaXMuX3Rhc2tEZXRhaWwub3BlblRhc2tEZXRhaWxzKHRhc2spIDogZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgc29ydENoYW5nZWQoc29ydFN0YXRlOiBTb3J0U3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnRhc2tMaXN0U29ydFNlcnZpY2Uuc2V0T3ZlcnJpZGVTb3J0U3RhdGUoc29ydFN0YXRlKTtcbiAgICB0aGlzLnRhc2tMaXN0U29ydFNlcnZpY2UudXBkYXRlU29ydFN0YXRlKHRoaXMudGFza0xpc3RTZXJ2aWNlLnNlbGVjdGVkVGFza1R5cGUsIHNvcnRTdGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q2FzZURlZmluaXRpb24oZGVmaW5pdGlvbjoge2l0ZW06IHtpZDogc3RyaW5nfX0pOiB2b2lkIHtcbiAgICBpZiAoZGVmaW5pdGlvbi5pdGVtLmlkKSB7XG4gICAgICB0aGlzLnRhc2tMaXN0U29ydFNlcnZpY2UucmVzZXRPdmVycmlkZVNvcnRTdGF0ZSgpO1xuICAgICAgdGhpcy5sb2FkaW5nVGFza3MkLm5leHQodHJ1ZSk7XG4gICAgICB0aGlzLnRhc2tMaXN0U2VydmljZS5zZXRDYXNlRGVmaW5pdGlvbk5hbWUoZGVmaW5pdGlvbi5pdGVtLmlkKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVsb2FkKCk6IHZvaWQge1xuICAgIHRoaXMuZW5hYmxlTG9hZGluZ0FuaW1hdGlvbigpO1xuICAgIHRoaXMuX3JlbG9hZCQubmV4dCghdGhpcy5fcmVsb2FkJC5nZXRWYWx1ZSgpKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2goc2VhcmNoRmllbGRWYWx1ZXM6IFNlYXJjaEZpZWxkVmFsdWVzKTogdm9pZCB7XG4gICAgaWYgKCFzZWFyY2hGaWVsZFZhbHVlcykgcmV0dXJuO1xuXG4gICAgdGhpcy50YXNrTGlzdFNlYXJjaFNlcnZpY2Uuc2V0U2VhcmNoRmllbGRWYWx1ZXMoc2VhcmNoRmllbGRWYWx1ZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUYXNrTGlzdFBhZ2luYXRpb25BZnRlclJlc3BvbnNlKG5ld0NvbGxlY3Rpb25TaXplOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnRhc2tMaXN0UGFnaW5hdGlvblNlcnZpY2UucGFnaW5hdGlvbkZvckN1cnJlbnRUYXNrVHlwZSRcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKGN1cnJlbnRQYWdpbmF0aW9uID0+IHtcbiAgICAgICAgdGhpcy50YXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLnVwZGF0ZVRhc2tQYWdpbmF0aW9uKHRoaXMudGFza0xpc3RTZXJ2aWNlLnNlbGVjdGVkVGFza1R5cGUsIHtcbiAgICAgICAgICBjb2xsZWN0aW9uU2l6ZTogTnVtYmVyKG5ld0NvbGxlY3Rpb25TaXplKSxcbiAgICAgICAgICBwYWdlOiB0aGlzLnRhc2tMaXN0UGFnaW5hdGlvblNlcnZpY2UuZ2V0TGFzdEF2YWlsYWJsZVBhZ2UoXG4gICAgICAgICAgICBjdXJyZW50UGFnaW5hdGlvbi5wYWdlLFxuICAgICAgICAgICAgY3VycmVudFBhZ2luYXRpb24uc2l6ZSxcbiAgICAgICAgICAgIG5ld0NvbGxlY3Rpb25TaXplXG4gICAgICAgICAgKSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmlzaWJsZVRhYnMoKTogdm9pZCB7XG4gICAgY29uc3QgdmlzaWJsZVRhYnMgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnPy52aXNpYmxlVGFza0xpc3RUYWJzO1xuXG4gICAgaWYgKHZpc2libGVUYWJzKSB7XG4gICAgICB0aGlzLnZpc2libGVUYWJzJC5uZXh0KHZpc2libGVUYWJzKTtcbiAgICAgIHRoaXMudGFza0xpc3RTZXJ2aWNlLnNldFNlbGVjdGVkVGFza1R5cGUodmlzaWJsZVRhYnNbMF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZpc2libGVUYWJzJC5uZXh0KHRoaXMuX0RFRkFVTFRfVEFTS19MSVNUX1RBQlMpO1xuICAgICAgdGhpcy50YXNrTGlzdFNlcnZpY2Uuc2V0U2VsZWN0ZWRUYXNrVHlwZSh0aGlzLl9ERUZBVUxUX1RBU0tfTElTVF9UQUJTWzBdKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRpc2FibGVMb2FkaW5nQW5pbWF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2VuYWJsZUxvYWRpbmdBbmltYXRpb24kLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmFibGVMb2FkaW5nQW5pbWF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2VuYWJsZUxvYWRpbmdBbmltYXRpb24kLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldFRhc2tMaXN0UGFyYW1zKFxuICAgIHBhZ2luYXRpb25Gb3JTZWxlY3RlZFRhc2tUeXBlOiBUYXNrUGFnZVBhcmFtcyxcbiAgICBzb3J0U3RyaW5nRm9yU2VsZWN0ZWRUYXNrVHlwZTogc3RyaW5nLFxuICAgIHNlbGVjdGVkVGFza1R5cGU6IFRhc2tMaXN0VGFiLFxuICAgIGNhc2VEZWZpbml0aW9uTmFtZTogc3RyaW5nLFxuICAgIGVuYWJsZUxvYWRpbmdBbmltYXRpb246IGJvb2xlYW4sXG4gICAgcmVsb2FkOiBib29sZWFuLFxuICAgIG90aGVyRmlsdGVycz86IFRhc2tMaXN0T3RoZXJGaWx0ZXJzXG4gICk6IFRhc2tMaXN0UGFyYW1zIHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAuLi5wYWdpbmF0aW9uRm9yU2VsZWN0ZWRUYXNrVHlwZSxcbiAgICAgIC4uLihzb3J0U3RyaW5nRm9yU2VsZWN0ZWRUYXNrVHlwZSAmJiB7c29ydDogc29ydFN0cmluZ0ZvclNlbGVjdGVkVGFza1R5cGV9KSxcbiAgICB9O1xuXG4gICAgZGVsZXRlIHBhcmFtcy5jb2xsZWN0aW9uU2l6ZTtcblxuICAgIHJldHVybiB7XG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgcmVsb2FkLFxuICAgICAgICBzZWxlY3RlZFRhc2tUeXBlLFxuICAgICAgICBwYXJhbXMsXG4gICAgICAgIC4uLihjYXNlRGVmaW5pdGlvbk5hbWUgJiYgY2FzZURlZmluaXRpb25OYW1lICE9PSB0aGlzLkFMTF9DQVNFU19JRCAmJiB7Y2FzZURlZmluaXRpb25OYW1lfSksXG4gICAgICAgIC4uLihvdGhlckZpbHRlcnMgJiYge290aGVyRmlsdGVyc30pLFxuICAgICAgfSxcbiAgICAgIGVuYWJsZUxvYWRpbmdBbmltYXRpb24sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGFza0xpc3RQZXJtaXNzaW9uc1JlcXVlc3QoXG4gICAgdGFza3NSZXN1bHQ6IFBhZ2U8VGFzaz4gfCBQYWdlPFNwZWNpZmllZFRhc2s+LFxuICAgIGlzU3BlY2lmaWVkOiBib29sZWFuXG4gICkge1xuICAgIGNvbnN0IHRhc2tSZXN1bHRzID0gdGFza3NSZXN1bHQuY29udGVudDtcbiAgICBjb25zdCBoYXNUYXNrUmVzdWx0cyA9IEFycmF5LmlzQXJyYXkodGFza1Jlc3VsdHMpICYmIHRhc2tSZXN1bHRzLmxlbmd0aCA+IDA7XG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICBvZihpc1NwZWNpZmllZCksXG4gICAgICBvZih0YXNrc1Jlc3VsdCksXG4gICAgICBoYXNUYXNrUmVzdWx0c1xuICAgICAgICA/IGNvbWJpbmVMYXRlc3QoXG4gICAgICAgICAgICB0YXNrUmVzdWx0cy5tYXAodGFzayA9PlxuICAgICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9WSUVXX1RBU0tfUEVSTUlTU0lPTiwge1xuICAgICAgICAgICAgICAgIHJlc291cmNlOiBUQVNLX0RFVEFJTF9QRVJNSVNTSU9OX1JFU09VUkNFLnRhc2ssXG4gICAgICAgICAgICAgICAgaWRlbnRpZmllcjogIWlzU3BlY2lmaWVkID8gKHRhc2sgYXMgVGFzaykuaWQgOiAodGFzayBhcyBTcGVjaWZpZWRUYXNrKS5pZCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIDogb2YobnVsbCksXG4gICAgICBoYXNUYXNrUmVzdWx0c1xuICAgICAgICA/IGNvbWJpbmVMYXRlc3QoXG4gICAgICAgICAgICB0YXNrUmVzdWx0cy5tYXAodGFzayA9PlxuICAgICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9WSUVXX0NBU0VfUEVSTUlTU0lPTiwge1xuICAgICAgICAgICAgICAgIHJlc291cmNlOiBUQVNLX0RFVEFJTF9QRVJNSVNTSU9OX1JFU09VUkNFLmpzb25TY2hlbWFEb2N1bWVudCxcbiAgICAgICAgICAgICAgICBpZGVudGlmaWVyOiB0YXNrLmJ1c2luZXNzS2V5LFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgOiBvZihudWxsKSxcbiAgICBdKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwVGFza3NGb3JMaXN0KFxuICAgIGlzU3BlY2lmaWVkOiBib29sZWFuLFxuICAgIHRhc2tzOiBQYWdlPFRhc2s+IHwgUGFnZTxTcGVjaWZpZWRUYXNrPixcbiAgICBjYW5WaWV3VGFza1Blcm1pc3Npb25zOiBib29sZWFuW10gfCBudWxsLFxuICAgIGNhblZpZXdDYXNlUGVybWlzc2lvbnM6IGJvb2xlYW5bXSB8IG51bGxcbiAgKTogVGFza1tdIHwgTWFwcGVkU3BlY2lmaWVkVGFza1tdIHtcbiAgICBjb25zdCBNT01FTlRfRk9STUFUID0gJ0REIE1NTSBZWVlZIEhIOm1tJztcblxuICAgIGlmIChpc1NwZWNpZmllZCkge1xuICAgICAgcmV0dXJuICh0YXNrcyBhcyBQYWdlPFNwZWNpZmllZFRhc2s+KS5jb250ZW50Lm1hcCgoc3BlY2lmaWVkVGFzaywgc3BlY2lmaWVkVGFza0luZGV4KSA9PlxuICAgICAgICBzcGVjaWZpZWRUYXNrLml0ZW1zLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCBjdXJyKSA9PlxuICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgaWQ6IHNwZWNpZmllZFRhc2suaWQsXG4gICAgICAgICAgICAgIGJ1c2luZXNzS2V5OiBzcGVjaWZpZWRUYXNrLmJ1c2luZXNzS2V5LFxuICAgICAgICAgICAgICBwcm9jZXNzSW5zdGFuY2VJZDogc3BlY2lmaWVkVGFzay5wcm9jZXNzSW5zdGFuY2VJZCxcbiAgICAgICAgICAgICAgbmFtZTogc3BlY2lmaWVkVGFzay5uYW1lLFxuICAgICAgICAgICAgICAuLi4obW9tZW50KHNwZWNpZmllZFRhc2suY3JlYXRlZCkuaXNWYWxpZCgpICYmIHtcbiAgICAgICAgICAgICAgICBjcmVhdGVkOiBtb21lbnQoc3BlY2lmaWVkVGFzay5jcmVhdGVkKS5mb3JtYXQoTU9NRU5UX0ZPUk1BVCksXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAuLi4oY2FuVmlld1Rhc2tQZXJtaXNzaW9ucyAmJiB7bG9ja2VkOiAhY2FuVmlld1Rhc2tQZXJtaXNzaW9uc1tzcGVjaWZpZWRUYXNrSW5kZXhdfSksXG4gICAgICAgICAgICAgIC4uLihjYW5WaWV3Q2FzZVBlcm1pc3Npb25zICYmIHtcbiAgICAgICAgICAgICAgICBjYXNlTG9ja2VkOiAhY2FuVmlld0Nhc2VQZXJtaXNzaW9uc1tzcGVjaWZpZWRUYXNrSW5kZXhdLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICBbY3Vyci5rZXldOiBjdXJyLnZhbHVlLFxuICAgICAgICAgICAgfSkgYXMgTWFwcGVkU3BlY2lmaWVkVGFzayxcbiAgICAgICAgICB7fVxuICAgICAgICApXG4gICAgICApIGFzIE1hcHBlZFNwZWNpZmllZFRhc2tbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gKHRhc2tzIGFzIFBhZ2U8VGFzaz4pPy5jb250ZW50Py5tYXAoKHRhc2ssIHRhc2tJbmRleCkgPT4ge1xuICAgICAgY29uc3QgY3JlYXRlZERhdGUgPSBtb21lbnQodGFzay5jcmVhdGVkKTtcbiAgICAgIGNvbnN0IGR1ZURhdGUgPSBtb21lbnQodGFzay5kdWUpO1xuICAgICAgY29uc3QgdGFza0NvcHkgPSB7Li4udGFza307XG5cbiAgICAgIGlmICh0YXNrLmR1ZSAmJiBkdWVEYXRlLmlzVmFsaWQoKSkgdGFza0NvcHkuZHVlID0gZHVlRGF0ZS5mb3JtYXQoTU9NRU5UX0ZPUk1BVCk7XG4gICAgICBpZiAoY3JlYXRlZERhdGUuaXNWYWxpZCgpKSB0YXNrQ29weS5jcmVhdGVkID0gY3JlYXRlZERhdGUuZm9ybWF0KE1PTUVOVF9GT1JNQVQpO1xuICAgICAgaWYgKGNhblZpZXdUYXNrUGVybWlzc2lvbnMpIHRhc2tDb3B5LmxvY2tlZCA9ICFjYW5WaWV3VGFza1Blcm1pc3Npb25zW3Rhc2tJbmRleF07XG4gICAgICBpZiAoY2FuVmlld0Nhc2VQZXJtaXNzaW9ucykgdGFza0NvcHkuY2FzZUxvY2tlZCA9ICFjYW5WaWV3Q2FzZVBlcm1pc3Npb25zW3Rhc2tJbmRleF07XG5cbiAgICAgIHJldHVybiB0YXNrQ29weTtcbiAgICB9KSBhcyBUYXNrW107XG4gIH1cblxuICBwcml2YXRlIHNldFBhcmFtc0Zyb21RdWVyeVBhcmFtcygpOiB2b2lkIHtcbiAgICBjb25zdCBkZWNvZGVkUGFyYW1zID0gdGhpcy50YXNrTGlzdFF1ZXJ5UGFyYW1TZXJ2aWNlLmdldFRhc2tMaXN0UXVlcnlQYXJhbXMoKTtcblxuICAgIGlmIChkZWNvZGVkUGFyYW1zLmNhc2VEZWZpbml0aW9uTmFtZSkge1xuICAgICAgdGhpcy50YXNrTGlzdFNlcnZpY2Uuc2V0Q2FzZURlZmluaXRpb25OYW1lKGRlY29kZWRQYXJhbXMuY2FzZURlZmluaXRpb25OYW1lKTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkQ2FzZURlZmluaXRpb25JZCQubmV4dChkZWNvZGVkUGFyYW1zLmNhc2VEZWZpbml0aW9uTmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKGRlY29kZWRQYXJhbXMub3RoZXJGaWx0ZXJzPy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzZWFyY2hGaWVsZFZhbHVlcyA9IHRoaXMudGFza0xpc3RTZWFyY2hTZXJ2aWNlLm1hcE90aGVyRmlsdGVyVG9TZWFyY2hWYWx1ZXMoXG4gICAgICAgIGRlY29kZWRQYXJhbXMub3RoZXJGaWx0ZXJzXG4gICAgICApO1xuICAgICAgdGhpcy5zZXRTZWFyY2hGaWVsZFZhbHVlc1N1YmplY3QkLm5leHQoc2VhcmNoRmllbGRWYWx1ZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFyU2VhcmNoRmllbGRWYWx1ZXNTdWJqZWN0JC5uZXh0KG51bGwpO1xuICAgIH1cblxuICAgIGlmIChkZWNvZGVkUGFyYW1zLnNlbGVjdGVkVGFza1R5cGUpXG4gICAgICB0aGlzLnRhc2tMaXN0U2VydmljZS5zZXRTZWxlY3RlZFRhc2tUeXBlKGRlY29kZWRQYXJhbXMuc2VsZWN0ZWRUYXNrVHlwZSk7XG5cbiAgICBpZiAoZGVjb2RlZFBhcmFtcy5wYXJhbXM/LnNvcnQpIHtcbiAgICAgIGNvbnN0IHN0YXRlRnJvbVNvcnRTdHJpbmcgPSB0aGlzLnRhc2tMaXN0U29ydFNlcnZpY2UuZ2V0U29ydFN0YXRlRnJvbVNvcnRTdHJpbmcoXG4gICAgICAgIGRlY29kZWRQYXJhbXMucGFyYW1zLnNvcnRcbiAgICAgICk7XG4gICAgICBpZiAoc3RhdGVGcm9tU29ydFN0cmluZykgdGhpcy50YXNrTGlzdFNvcnRTZXJ2aWNlLnNldE92ZXJyaWRlU29ydFN0YXRlKHN0YXRlRnJvbVNvcnRTdHJpbmcpO1xuICAgIH1cblxuICAgIGlmIChkZWNvZGVkUGFyYW1zLnBhcmFtcylcbiAgICAgIHRoaXMudGFza0xpc3RQYWdpbmF0aW9uU2VydmljZS51cGRhdGVUYXNrUGFnaW5hdGlvbihcbiAgICAgICAgdGhpcy50YXNrTGlzdFNlcnZpY2Uuc2VsZWN0ZWRUYXNrVHlwZSxcbiAgICAgICAgZGVjb2RlZFBhcmFtcy5wYXJhbXNcbiAgICAgICk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGRpdlxuICAqbmdJZj1cIntcbiAgICBsb2FkaW5nOiBsb2FkaW5nVGFza3MkIHwgYXN5bmMsXG4gICAgc2VsZWN0ZWRUYXNrVHlwZTogc2VsZWN0ZWRUYXNrVHlwZSQgfCBhc3luYyxcbiAgICB0YXNrczogdGFza3MkIHwgYXN5bmMsXG4gICAgZmllbGRzOiBmaWVsZHMkIHwgYXN5bmMsXG4gICAgdmlzaWJsZVRhYnM6IHZpc2libGVUYWJzJCB8IGFzeW5jLFxuICAgIHBhZ2luYXRpb246IHBhZ2luYXRpb25Gb3JDdXJyZW50VGFza1R5cGVGb3JMaXN0JCB8IGFzeW5jLFxuICAgIHRhc2tMaXN0Q29sdW1uc0ZvckNhc2U6IHRhc2tMaXN0Q29sdW1uc0ZvckNhc2UkIHwgYXN5bmMsXG4gICAgc29ydFN0YXRlOiBzb3J0U3RhdGVGb3JDdXJyZW50VGFza1R5cGUkIHwgYXN5bmMsXG4gICAgb3ZlcnJpZGVTb3J0U3RhdGU6IG92ZXJyaWRlU29ydFN0YXRlJCB8IGFzeW5jLFxuICAgIHNlYXJjaEZpZWxkczogc2VhcmNoRmllbGRzJCB8IGFzeW5jLFxuICAgIGxvYWRpbmdTZWFyY2hGaWVsZHM6IGxvYWRpbmdTZWFyY2hGaWVsZHMkIHwgYXN5bmMsXG4gICAgY2FzZURlZmluaXRpb25OYW1lOiBjYXNlRGVmaW5pdGlvbk5hbWUkIHwgYXN5bmMsXG4gICAgbm9SZXN1bHRzTWVzc2FnZTogbm9SZXN1bHRzTWVzc2FnZSQgfCBhc3luY1xuICB9IGFzIG9ic1wiXG4gIGNsYXNzPVwibWFpbi1jb250ZW50XCJcbj5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxuICAgIEBpZiAob2JzLmNhc2VEZWZpbml0aW9uTmFtZSAmJiBvYnMuY2FzZURlZmluaXRpb25OYW1lICE9PSBBTExfQ0FTRVNfSUQpIHtcbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICBzZWFyY2hGaWVsZHM7XG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgb2JzOiBvYnNcbiAgICAgICAgICB9XG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgfVxuXG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgdGFza3NMaXN0O1xuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgb2JzOiBvYnNcbiAgICAgICAgfVxuICAgICAgXCJcbiAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICB0YXNrc0xpc3RMb2FkaW5nO1xuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgb2JzOiBvYnNcbiAgICAgICAgfVxuICAgICAgXCJcbiAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICA8dmFsdGltby10YXNrLWRldGFpbC1tb2RhbFxuICAgICAgI3Rhc2tEZXRhaWxcbiAgICAgIChmb3JtU3VibWl0KT1cInJlbG9hZCgpXCJcbiAgICAgIChhc3NpZ25tZW50T2ZUYXNrQ2hhbmdlZCk9XCJyZWxvYWQoKVwiXG4gICAgPjwvdmFsdGltby10YXNrLWRldGFpbC1tb2RhbD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjb25maWd1cmVkVGFicyBsZXQtc2VsZWN0ZWRUYXNrVHlwZT1cInNlbGVjdGVkVGFza1R5cGVcIiBsZXQtdmlzaWJsZVRhYnM9XCJ2aXNpYmxlVGFic1wiPlxuICA8Y2RzLXRhYnMgKm5nSWY9XCJ2aXNpYmxlVGFic1wiIHR5cGU9XCJjb250YWluZWRcIiBjbGFzcz1cInZhbHRpbW8tY2FyYm9uLWxpc3RfX3RhYnNcIj5cbiAgICA8Y2RzLXRhYlxuICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiB2aXNpYmxlVGFic1wiXG4gICAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCIndGFzay1saXN0LXRhYi0nICsgdGFiXCJcbiAgICAgIFtoZWFkaW5nXT1cIid0YXNrLWxpc3QuJyArIHRhYiArICcudGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFthY3RpdmVdPVwic2VsZWN0ZWRUYXNrVHlwZSA9PT0gdGFiXCJcbiAgICAgIChzZWxlY3RlZCk9XCJ0YWJDaGFuZ2UodGFiKVwiXG4gICAgPjwvY2RzLXRhYj5cbiAgPC9jZHMtdGFicz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY2FzZUxpbmsgbGV0LWRhdGE9XCJkYXRhXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYWNoZWRUYXNrcyQgfCBhc3luYyBhcyBjYWNoZWRUYXNrc1wiPlxuICAgIDxkaXYgKm5nSWY9XCJjYWNoZWRUYXNrc1tkYXRhLmluZGV4XS5jYXNlTG9ja2VkXCI+XG4gICAgICA8YVxuICAgICAgICBjbGFzcz1cImZsb2F0LWxlZnQgY2RzLS1saW5rLS1kaXNhYmxlZFwiXG4gICAgICAgIGNkc0xpbmtcbiAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXG4gICAgICAgIG5nYlRvb2x0aXA9XCJ7eyAndGFzay1saXN0LmNhc2VMb2NrZWQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICA+XG4gICAgICAgIHt7ICd0YXNrLWxpc3QuZ29Ub0Nhc2UnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIiFjYWNoZWRUYXNrc1tkYXRhLmluZGV4XS5jYXNlTG9ja2VkXCI+XG4gICAgICA8YVxuICAgICAgICBjbGFzcz1cImZsb2F0LWxlZnQgY2RzLS1saW5rXCJcbiAgICAgICAgY2RzTGlua1xuICAgICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5SZWxhdGVkQ2FzZSgkZXZlbnQsIGRhdGEuaW5kZXgpXCJcbiAgICAgID5cbiAgICAgICAge3sgJ3Rhc2stbGlzdC5nb1RvQ2FzZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Rhc2tzTGlzdCBsZXQtb2JzPVwib2JzXCI+XG4gIDx2YWx0aW1vLWNhcmJvbi1saXN0XG4gICAgKm5nSWY9XCIhb2JzLmxvYWRpbmdcIlxuICAgIFtmaWVsZHNdPVwib2JzLmZpZWxkc1wiXG4gICAgW2hlYWRlcl09XCJmYWxzZVwiXG4gICAgW2l0ZW1zXT1cIm9icy50YXNrc1wiXG4gICAgW2xhc3RDb2x1bW5UZW1wbGF0ZV09XCJjYXNlTGlua1wiXG4gICAgW3BhZ2luYXRpb25dPVwib2JzLnBhZ2luYXRpb25cIlxuICAgIHBhZ2luYXRpb25JZGVudGlmaWVyPVwidGFza0xpc3RcIlxuICAgIGxvY2tlZFRvb2x0aXBUcmFuc2xhdGlvbktleT1cInRhc2stbGlzdC5yb3dMb2NrZWRcIlxuICAgIFtzb3J0U3RhdGVdPVwib2JzLm92ZXJyaWRlU29ydFN0YXRlIHx8IG9icy5zb3J0U3RhdGVcIlxuICAgIChwYWdpbmF0aW9uQ2xpY2tlZCk9XCJwYWdpbmF0aW9uQ2xpY2tlZCgkZXZlbnQsIG9icy5zZWxlY3RlZFRhc2tUeXBlKVwiXG4gICAgKHBhZ2luYXRpb25TZXQpPVwicGFnaW5hdGlvblNldCgkZXZlbnQpXCJcbiAgICAocm93Q2xpY2tlZCk9XCJyb3dPcGVuVGFza0NsaWNrKCRldmVudClcIlxuICAgIChzb3J0Q2hhbmdlZCk9XCJzb3J0Q2hhbmdlZCgkZXZlbnQpXCJcbiAgPlxuICAgIDxkaXYgdGFicz5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvYnMudmlzaWJsZVRhYnNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBjb25maWd1cmVkVGFicztcbiAgICAgICAgICAgIGNvbnRleHQ6IHtzZWxlY3RlZFRhc2tUeXBlOiBvYnMuc2VsZWN0ZWRUYXNrVHlwZSwgdmlzaWJsZVRhYnM6IG9icy52aXNpYmxlVGFic31cbiAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDx2YWx0aW1vLW5vLXJlc3VsdHNcbiAgICAgIFtkZXNjcmlwdGlvbl09XCJvYnMubm9SZXN1bHRzTWVzc2FnZS5kZXNjcmlwdGlvbiB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdGl0bGVdPVwib2JzLm5vUmVzdWx0c01lc3NhZ2UudGl0bGUgfCB0cmFuc2xhdGVcIlxuICAgID5cbiAgICA8L3ZhbHRpbW8tbm8tcmVzdWx0cz5cbiAgPC92YWx0aW1vLWNhcmJvbi1saXN0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0YXNrc0xpc3RMb2FkaW5nIGxldC1vYnM9XCJvYnNcIj5cbiAgPHZhbHRpbW8tY2FyYm9uLWxpc3QgKm5nSWY9XCJvYnMubG9hZGluZ1wiIFtsb2FkaW5nXT1cInRydWVcIj5cbiAgICA8ZGl2IHRhYnM+XG4gICAgICA8Y2RzLXRhYnMgKm5nSWY9XCIhb2JzLnZpc2libGVUYWJzXCIgdHlwZT1cImNvbnRhaW5lZFwiIGNsYXNzPVwidmFsdGltby1jYXJib24tbGlzdF9fdGFic1wiPlxuICAgICAgICA8Y2RzLXRhYlxuICAgICAgICAgIFtoZWFkaW5nXT1cIid0YXNrLWxpc3QubWluZS50aXRsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFthY3RpdmVdPVwib2JzLnNlbGVjdGVkVGFza1R5cGUgPT09ICdtaW5lJ1wiXG4gICAgICAgID5cbiAgICAgICAgPC9jZHMtdGFiPlxuXG4gICAgICAgIDxjZHMtdGFiXG4gICAgICAgICAgW2hlYWRpbmddPVwiJ3Rhc2stbGlzdC5vcGVuLnRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW2FjdGl2ZV09XCJvYnMuc2VsZWN0ZWRUYXNrVHlwZSA9PT0gJ29wZW4nXCJcbiAgICAgICAgPlxuICAgICAgICA8L2Nkcy10YWI+XG5cbiAgICAgICAgPGNkcy10YWJcbiAgICAgICAgICBbaGVhZGluZ109XCIndGFzay1saXN0LmFsbC50aXRsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFthY3RpdmVdPVwib2JzLnNlbGVjdGVkVGFza1R5cGUgPT09ICdhbGwnXCJcbiAgICAgICAgPlxuICAgICAgICA8L2Nkcy10YWI+XG4gICAgICA8L2Nkcy10YWJzPlxuXG4gICAgICA8Y2RzLXRhYnMgKm5nSWY9XCJvYnMudmlzaWJsZVRhYnNcIiB0eXBlPVwiY29udGFpbmVkXCIgY2xhc3M9XCJ2YWx0aW1vLWNhcmJvbi1saXN0X190YWJzXCI+XG4gICAgICAgIDxjZHMtdGFiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiBvYnMudmlzaWJsZVRhYnNcIlxuICAgICAgICAgIFtoZWFkaW5nXT1cIid0YXNrLWxpc3QuJyArIHRhYiArICcudGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbYWN0aXZlXT1cIm9icy5zZWxlY3RlZFRhc2tUeXBlID09PSB0YWJcIlxuICAgICAgICA+PC9jZHMtdGFiPlxuICAgICAgPC9jZHMtdGFicz5cbiAgICA8L2Rpdj5cbiAgPC92YWx0aW1vLWNhcmJvbi1saXN0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzZWFyY2hGaWVsZHMgbGV0LW9icz1cIm9ic1wiPlxuICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgIDx2YWx0aW1vLXNlYXJjaC1maWVsZHNcbiAgICAgIFtzZWFyY2hGaWVsZHNdPVwib2JzLnNlYXJjaEZpZWxkc1wiXG4gICAgICBbaW5wdXREaXNhYmxlZF09XCJvYnMubG9hZGluZ1NlYXJjaEZpZWxkc1wiXG4gICAgICBbZG9jdW1lbnREZWZpbml0aW9uTmFtZV09XCJvYnMuY2FzZURlZmluaXRpb25OYW1lXCJcbiAgICAgIFtzZXRWYWx1ZXNTdWJqZWN0JF09XCJzZXRTZWFyY2hGaWVsZFZhbHVlc1N1YmplY3QkXCJcbiAgICAgIFtjbGVhclZhbHVlc1N1YmplY3QkXT1cImNsZWFyU2VhcmNoRmllbGRWYWx1ZXNTdWJqZWN0JFwiXG4gICAgICAoZG9TZWFyY2gpPVwic2VhcmNoKCRldmVudClcIlxuICAgID5cbiAgICA8L3ZhbHRpbW8tc2VhcmNoLWZpZWxkcz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctY29udGFpbmVyIHJlbmRlckluUGFnZUhlYWRlciBbZnVsbFdpZHRoXT1cInRydWVcIj5cbiAgPG5nLXRlbXBsYXRlPlxuICAgIDxjZHMtZHJvcGRvd25cbiAgICAgIGNsYXNzPVwiY2FzZS1kZWZpbml0aW9uLXNlbGVjdGlvblwiXG4gICAgICAqbmdJZj1cIntcbiAgICAgICAgbG9hZGluZ0Nhc2VMaXN0SXRlbXM6IGxvYWRpbmdDYXNlTGlzdEl0ZW1zJCB8IGFzeW5jLFxuICAgICAgICBjYXNlTGlzdEl0ZW1zOiBjYXNlTGlzdEl0ZW1zJCB8IGFzeW5jXG4gICAgICB9IGFzIG9ic1wiXG4gICAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCIndGFzay1saXN0LWNhc2UtZHJvcGRvd24nXCJcbiAgICAgIFtkaXNhYmxlZF09XCJvYnMubG9hZGluZ0Nhc2VMaXN0SXRlbXMgfHwgKG9icy5jYXNlTGlzdEl0ZW1zIHx8IFtdKS5sZW5ndGggPT09IDFcIlxuICAgICAgW3NrZWxldG9uXT1cIm9icy5sb2FkaW5nQ2FzZUxpc3RJdGVtc1wiXG4gICAgICAoc2VsZWN0ZWQpPVwic2V0Q2FzZURlZmluaXRpb24oJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPGNkcy1kcm9wZG93bi1saXN0IFtpdGVtc109XCJvYnMuY2FzZUxpc3RJdGVtcyB8fCBbXVwiPjwvY2RzLWRyb3Bkb3duLWxpc3Q+XG4gICAgPC9jZHMtZHJvcGRvd24+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
@@ -1432,8 +1432,8 @@ class TaskListComponent {
|
|
|
1432
1432
|
this.selectedTaskType$,
|
|
1433
1433
|
this._overrideNoResultsMessage$,
|
|
1434
1434
|
]).pipe(map(([selectedTaskType, overrideNoResultsMessage]) => overrideNoResultsMessage || {
|
|
1435
|
-
title: 'task-list.' + selectedTaskType + '.
|
|
1436
|
-
description: 'task-list.' + selectedTaskType + '.
|
|
1435
|
+
title: 'task-list.' + selectedTaskType + '.noResultsTitle',
|
|
1436
|
+
description: 'task-list.' + selectedTaskType + '.noResultsDescription',
|
|
1437
1437
|
isSearchResult: false,
|
|
1438
1438
|
}));
|
|
1439
1439
|
this.fields$ = this.taskListColumnService.fields$;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valtimo-task.mjs","sources":["../../../../projects/valtimo/task/src/lib/models/task.model.ts","../../../../projects/valtimo/task/src/lib/models/task-definition.model.ts","../../../../projects/valtimo/task/src/lib/models/task-list.model.ts","../../../../projects/valtimo/task/src/lib/models/task-intermediate-save.model.ts","../../../../projects/valtimo/task/src/lib/models/task-list-search-field.model.ts","../../../../projects/valtimo/task/src/lib/models/index.ts","../../../../projects/valtimo/task/src/lib/services/task.service.ts","../../../../projects/valtimo/task/src/lib/services/task-list.service.ts","../../../../projects/valtimo/task/src/lib/services/task-list-sort.service.ts","../../../../projects/valtimo/task/src/lib/services/task-list-column.service.ts","../../../../projects/valtimo/task/src/lib/services/task-list-pagination.service.ts","../../../../projects/valtimo/task/src/lib/services/task-list-search.service.ts","../../../../projects/valtimo/task/src/lib/services/task-list-query-param.service.ts","../../../../projects/valtimo/task/src/lib/services/index.ts","../../../../projects/valtimo/task/src/lib/components/assign-user-to-task/assign-user-to-task.component.ts","../../../../projects/valtimo/task/src/lib/components/assign-user-to-task/assign-user-to-task.component.html","../../../../projects/valtimo/task/src/lib/task-permissions.ts","../../../../projects/valtimo/task/src/lib/services/task-intermediate-save.service.ts","../../../../projects/valtimo/task/src/lib/components/task-detail-modal/task-detail-modal.component.ts","../../../../projects/valtimo/task/src/lib/components/task-detail-modal/task-detail-modal.component.html","../../../../projects/valtimo/task/src/lib/constants/task-list.constants.ts","../../../../projects/valtimo/task/src/lib/constants/index.ts","../../../../projects/valtimo/task/src/lib/components/task-list/task-list.component.ts","../../../../projects/valtimo/task/src/lib/components/task-list/task-list.component.html","../../../../projects/valtimo/task/src/lib/task-routing.module.ts","../../../../projects/valtimo/task/src/lib/task.module.ts","../../../../projects/valtimo/task/src/public_api.ts","../../../../projects/valtimo/task/src/valtimo-task.ts"],"sourcesContent":["/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {User} from '@valtimo/config';\n\ninterface Task {\n assignee: string;\n caseDefinitionId: string;\n caseExecutionId: string;\n caseInstanceId: string;\n created: string;\n delegationState: any;\n description: string;\n due: string;\n executionId: string;\n followUp: any;\n formKey: string;\n formless: boolean;\n id: string;\n listItemFields: ListItemField[];\n name: string;\n owner: string;\n parentTaskId: string;\n priority: number;\n processDefinitionId: string;\n processInstanceId: string;\n suspended: boolean;\n taskDefinitionKey: string;\n tenantId: string;\n formLocation: string;\n businessKey: string;\n processDefinitionKey: string;\n valtimoAssignee: User;\n locked?: boolean;\n caseLocked?: boolean;\n}\n\ninterface ListItemField {\n key: string;\n value: string;\n label: string;\n}\n\ninterface AssigneeRequest {\n assignee: string;\n}\n\ntype TaskProcessLinkType = 'form' | 'form-flow' | 'form-view-model';\n\ninterface TaskProcessLinkResult {\n processLinkId: string;\n type: TaskProcessLinkType;\n properties: {\n formFlowInstanceId?: string;\n formDefinitionId?: string;\n prefilledForm?: any;\n formDefinition?: any;\n formName?: string;\n };\n}\n\ninterface SpecifiedTask {\n id: string;\n businessKey: string;\n processInstanceId: string;\n name: string;\n created: Date;\n items: {key: string; value: any}[];\n}\n\ninterface MappedSpecifiedTask {\n id: string;\n businessKey: string;\n processInstanceId: string;\n name: string;\n created?: string;\n locked?: boolean;\n caseLocked?: boolean;\n [key: string]: any;\n}\n\nexport {\n AssigneeRequest,\n ListItemField,\n Task,\n TaskProcessLinkResult,\n TaskProcessLinkType,\n SpecifiedTask,\n MappedSpecifiedTask,\n};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {FormDefinition} from '@valtimo/form-management';\n\nexport interface TaskDefinition {\n id: string;\n name: string;\n formDefinition: FormDefinition | null;\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ListItem} from 'carbon-components-angular';\nimport {SearchFilter, SearchFilterRange, TaskListTab} from '@valtimo/config';\n\ninterface TaskPageParams {\n page: number;\n size: number;\n collectionSize?: number;\n sort?: string;\n}\n\nenum TaskListColumnDefaultSort {\n ASC = 'ASC',\n DESC = 'DESC',\n}\n\ninterface TaskListColumnEnum {\n [key: string]: string;\n}\n\ninterface TaskListColumnDisplayTypeParameters {\n enum?: TaskListColumnEnum;\n dateFormat?: string;\n}\n\ninterface TaskListColumnDisplayType {\n type: string;\n displayTypeParameters?: TaskListColumnDisplayTypeParameters;\n}\n\ninterface TaskListColumn {\n title?: string;\n key: string;\n path: string;\n displayType: TaskListColumnDisplayType;\n sortable: boolean;\n defaultSort?: TaskListColumnDefaultSort;\n order?: number;\n}\n\ntype TaskListColumnModalType = 'edit' | 'add';\n\ntype TaskListColumnModalCloseEvent = 'close' | 'refresh';\n\ninterface TaskListColumnListItem extends ListItem {\n key: string;\n}\n\ntype TaskListOtherFilters = Array<SearchFilter | SearchFilterRange>;\n\ninterface TaskListQueryParams {\n selectedTaskType: TaskListTab;\n params: TaskPageParams;\n caseDefinitionName?: string;\n otherFilters?: TaskListOtherFilters;\n}\n\ninterface TaskListEncodedQueryParams {\n selectedTaskType: TaskListTab;\n params: string;\n caseDefinitionName?: string;\n otherFilters?: string;\n}\n\ninterface TaskListQueryParamsWithReload extends TaskListQueryParams {\n reload: boolean;\n}\n\ninterface TaskListParams {\n params: TaskListQueryParamsWithReload;\n enableLoadingAnimation: boolean;\n}\n\nexport {\n TaskListColumn,\n TaskListColumnDisplayType,\n TaskListColumnDefaultSort,\n TaskListColumnModalType,\n TaskListColumnListItem,\n TaskListColumnModalCloseEvent,\n TaskListColumnDisplayTypeParameters,\n TaskListColumnEnum,\n TaskPageParams,\n TaskListParams,\n TaskListOtherFilters,\n TaskListQueryParams,\n TaskListQueryParamsWithReload,\n TaskListEncodedQueryParams,\n};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface IntermediateSubmission {\n submission: object;\n taskInstanceId: string;\n createdBy: string;\n createdOn: string;\n editedBy?: string;\n editedOn?: string;\n}\n\nexport interface IntermediateSaveRequest {\n submission: object;\n taskInstanceId: string;\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nenum TaskListSearchFieldDataType {\n TEXT = 'text',\n NUMBER = 'number',\n DATE = 'date',\n DATETIME = 'datetime',\n TIME = 'time',\n BOOLEAN = 'boolean',\n}\n\nenum TaskListSearchFieldFieldType {\n SINGLE = 'single',\n RANGE = 'range',\n SINGLE_SELECT_DROPDOWN = 'single_select_dropdown',\n MULTI_SELECT_DROPDOWN = 'multi_select_dropdown',\n}\n\nenum TaskListSearchFieldMatchType {\n LIKE = 'like',\n EXACT = 'exact',\n}\n\nenum TaskListSearchDropdownDataProvider {\n DATABASE = 'dropdownDatabaseDataProvider',\n JSON = 'dropdownJsonFileDataProvider',\n}\n\ninterface TaskListSearchField {\n id: string;\n ownerId: string;\n dataType: TaskListSearchFieldDataType;\n fieldType: TaskListSearchFieldFieldType;\n key: string;\n title?: string;\n path: string;\n order: number;\n matchType: TaskListSearchFieldMatchType;\n dropdownDataProvider?: string;\n dropdownValues?: TaskListSearchDropdownValue;\n}\n\ninterface TaskListSearchDropdownValue {\n [key: string]: string;\n}\n\nexport {\n TaskListSearchDropdownDataProvider,\n TaskListSearchFieldDataType,\n TaskListSearchFieldFieldType,\n TaskListSearchFieldMatchType,\n TaskListSearchField,\n TaskListSearchDropdownValue,\n};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './task.model';\nexport * from './task-definition.model';\nexport * from './task-list.model';\nexport * from './task-intermediate-save.model';\nexport * from './task-list-search-field.model';\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {HttpClient, HttpParams, HttpResponse} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {\n AssigneeRequest,\n SpecifiedTask,\n Task,\n TaskListColumn,\n TaskListOtherFilters,\n TaskListSearchField,\n TaskPageParams,\n TaskProcessLinkResult,\n} from '../models';\nimport {\n BaseApiService,\n ConfigService,\n CustomTaskList,\n NamedUser,\n Page,\n TaskListTab,\n} from '@valtimo/config';\nimport {InterceptorSkip} from '@valtimo/security';\n\n@Injectable({providedIn: 'root'})\nexport class TaskService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public queryTasks(params?: any): Observable<HttpResponse<Array<Task>>> {\n return this.httpClient.get<Array<Task>>(this.getApiUrl('/v1/task'), {\n observe: 'response',\n params,\n });\n }\n\n public queryTasksPage(params?: any): Observable<Page<Task>> {\n return this.httpClient.get<Page<Task>>(this.getApiUrl('/v2/task'), {\n params,\n });\n }\n\n public queryTasksPageV3(\n assigneeFilter: TaskListTab = TaskListTab.ALL,\n pageParams: TaskPageParams,\n caseDefinitionName?: string,\n otherFilters?: TaskListOtherFilters\n ): Observable<Page<Task> | Page<SpecifiedTask>> {\n let httpParams = new HttpParams().set('page', pageParams.page).set('size', pageParams.size);\n\n if (pageParams.sort) {\n httpParams = httpParams.append('sort', pageParams.sort);\n }\n\n if (caseDefinitionName && (otherFilters || []).length > 0) {\n return this.searchTasks(httpParams, caseDefinitionName, otherFilters, assigneeFilter);\n }\n\n httpParams = httpParams.append('filter', assigneeFilter.toUpperCase());\n\n return this.httpClient.post<Page<Task>>(\n this.getApiUrl('/v3/task'),\n {...(caseDefinitionName && {caseDefinitionName})},\n {params: httpParams}\n );\n }\n\n private searchTasks(\n params: HttpParams,\n caseDefinitionName: string,\n otherFilters: TaskListOtherFilters,\n assigneeFilter: TaskListTab = TaskListTab.ALL\n ): Observable<Page<SpecifiedTask>> {\n return this.httpClient.post<Page<SpecifiedTask>>(\n this.getApiUrl(`/v1/document-definition/${caseDefinitionName}/task/search`),\n {\n caseDefinitionName,\n assigneeFilter: assigneeFilter.toUpperCase(),\n ...(otherFilters && {otherFilters}),\n },\n {params}\n );\n }\n\n public getTasks(): Observable<Task[]> {\n return this.httpClient.get<Task[]>(this.getApiUrl('/v1/task?filter=all'));\n }\n\n public getTask(id: string): Observable<any> {\n return this.httpClient.get(this.getApiUrl(`/v1/task/${id}`));\n }\n\n public getCandidateUsers(id: string): Observable<NamedUser[]> {\n return this.httpClient.get<NamedUser[]>(this.getApiUrl(`/v2/task/${id}/candidate-user`));\n }\n\n public assignTask(id: string, assigneeRequest: AssigneeRequest): Observable<any> {\n return this.httpClient.post(this.getApiUrl(`/v1/task/${id}/assign`), assigneeRequest);\n }\n\n public unassignTask(id: string): Observable<any> {\n return this.httpClient.post(this.getApiUrl(`/v1/task/${id}/unassign`), null);\n }\n\n public completeTask(id: string, variables: Map<string, any>): Observable<any> {\n return this.httpClient.post(this.getApiUrl(`/v1/task/${id}/complete`), {\n variables,\n filesToDelete: [],\n });\n }\n\n public getTaskProcessLink(taskId: string): Observable<TaskProcessLinkResult> {\n return this.httpClient.get<TaskProcessLinkResult>(\n this.getApiUrl(`/v2/process-link/task/${taskId}`),\n {\n headers: {[InterceptorSkip]: '404'},\n }\n );\n }\n\n public getTaskListColumns(caseDefinitionName: string): Observable<TaskListColumn[]> {\n return this.httpClient.get<TaskListColumn[]>(\n this.getApiUrl(`/v1/case/${caseDefinitionName}/task-list-column`)\n );\n }\n\n public getConfigCustomTaskList(): CustomTaskList {\n return this.configService.config.customTaskList;\n }\n\n public getTaskListSearchFields(caseDefinitionName: string): Observable<TaskListSearchField[]> {\n return this.httpClient.get<TaskListSearchField[]>(\n this.getApiUrl(`v1/search/field/TaskListSearchColumns/${caseDefinitionName}`)\n );\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {TaskService} from './task.service';\nimport {TaskListTab} from '@valtimo/config';\n\n@Injectable()\nexport class TaskListService {\n private readonly _ALL_CASES_ID = 'ALL_CASES';\n private readonly _caseDefinitionName$ = new BehaviorSubject<string | null>(null);\n private readonly _selectedTaskType$ = new BehaviorSubject<TaskListTab>(TaskListTab.MINE);\n private readonly _loadingStateForCaseDefinition$ = new BehaviorSubject<boolean>(false);\n\n public get caseDefinitionName$(): Observable<string | null> {\n return this._caseDefinitionName$.asObservable();\n }\n\n public get selectedTaskType$(): Observable<TaskListTab> {\n return this._selectedTaskType$.asObservable();\n }\n\n public get selectedTaskType(): TaskListTab {\n return this._selectedTaskType$.getValue();\n }\n\n public get loadingStateForCaseDefinition$(): Observable<boolean> {\n return this._loadingStateForCaseDefinition$.asObservable();\n }\n\n public get ALL_CASES_ID(): string {\n return this._ALL_CASES_ID;\n }\n\n constructor(private readonly taskService: TaskService) {}\n\n public setSelectedTaskType(type: TaskListTab): void {\n this._selectedTaskType$.next(type);\n }\n\n public setCaseDefinitionName(caseDefinitionName: string): void {\n this._loadingStateForCaseDefinition$.next(true);\n this._caseDefinitionName$.next(caseDefinitionName);\n }\n\n public setLoadingStateForCaseDefinition(loading: boolean): void {\n this._loadingStateForCaseDefinition$.next(loading);\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {Direction, SortState, TaskListTab} from '@valtimo/config';\nimport {TaskService} from './task.service';\nimport {map, take} from 'rxjs/operators';\nimport {TaskListService} from './task-list.service';\n\n@Injectable()\nexport class TaskListSortService {\n private readonly _overrideSortState$ = new BehaviorSubject<SortState | null>(null);\n\n private readonly _sortState$ = new BehaviorSubject<{[key in TaskListTab]: SortState | null}>({\n [TaskListTab.ALL]: this._defaultSortState,\n [TaskListTab.MINE]: this._defaultSortState,\n [TaskListTab.OPEN]: this._defaultSortState,\n });\n\n private readonly _sortStateForCurrentTaskType$: Observable<SortState> = combineLatest([\n this.taskListService.selectedTaskType$,\n this._sortState$,\n ]).pipe(map(([selectedTaskType, sortStates]) => sortStates[selectedTaskType]));\n\n public get sortStateForCurrentTaskType$(): Observable<SortState> {\n return this._sortStateForCurrentTaskType$;\n }\n\n public get sortStringForCurrentTaskType$(): Observable<string | null> {\n return this.sortStateForCurrentTaskType$.pipe(\n map(sortState => (sortState ? this.getSortString(sortState) : null))\n );\n }\n\n public get overrideSortState$(): Observable<SortState | null> {\n return this._overrideSortState$.asObservable();\n }\n\n public get overrideSortStateString$(): Observable<string | null> {\n return this._overrideSortState$.pipe(map(state => (state ? this.getSortString(state) : null)));\n }\n\n private get _defaultSortState(): SortState | null {\n return this.taskService.getConfigCustomTaskList()?.defaultSortedColumn || null;\n }\n\n constructor(\n private readonly taskService: TaskService,\n private readonly taskListService: TaskListService\n ) {}\n\n public updateSortState(taskType: TaskListTab, updatedSortState: SortState): void {\n this._sortState$.pipe(take(1)).subscribe(sortState => {\n this._sortState$.next({\n ...sortState,\n [taskType]: {...sortState[taskType], ...updatedSortState},\n });\n });\n }\n\n public updateSortStates(updatedSortState: SortState): void {\n this._sortState$.pipe(take(1)).subscribe(sortStates => {\n const sortStatesCopy = {...sortStates};\n\n Object.keys(sortStates).forEach(taskType => {\n sortStatesCopy[taskType] = {...sortStatesCopy[taskType], ...updatedSortState};\n });\n\n this._sortState$.next(sortStatesCopy);\n });\n }\n\n public clearSortStates(): void {\n this._sortState$.pipe(take(1)).subscribe(sortStates => {\n const sortStatesCopy = {...sortStates};\n\n Object.keys(sortStates).forEach(taskType => {\n sortStatesCopy[taskType] = null;\n });\n\n this._sortState$.next(sortStatesCopy);\n });\n }\n\n public resetDefaultSortStates(): void {\n this._sortState$.pipe(take(1)).subscribe(sortStates => {\n const sortStatesCopy = {...sortStates};\n\n Object.keys(sortStates).forEach(taskType => {\n sortStatesCopy[taskType] = this._defaultSortState;\n });\n\n this._sortState$.next(sortStatesCopy);\n });\n }\n\n public getSortStateFromSortString(sortString?: string): SortState | null {\n const splitString = sortString && sortString.split(',');\n if (splitString?.length > 1) {\n return {\n isSorting: true,\n state: {\n name: splitString[0],\n direction: splitString[1] as Direction,\n },\n };\n }\n\n return null;\n }\n\n public setOverrideSortState(state: SortState): void {\n this._overrideSortState$.next(state);\n }\n\n public resetOverrideSortState(): void {\n this._overrideSortState$.next(null);\n }\n\n private getSortString(sort: SortState | null): string {\n return `${sort.state.name},${sort.state.direction}`;\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {ColumnConfig, ViewType} from '@valtimo/components';\nimport {BehaviorSubject, filter, Observable, switchMap, tap} from 'rxjs';\nimport {TaskService} from './task.service';\nimport {TaskListColumn} from '../models';\nimport {TaskListService} from './task-list.service';\nimport {TaskListSortService} from './task-list-sort.service';\n\n@Injectable()\nexport class TaskListColumnService {\n private readonly _DEFAULT_TASK_LIST_FIELDS: ColumnConfig[] = [\n {\n key: 'created',\n label: `task-list.fieldLabels.created`,\n viewType: ViewType.TEXT,\n sortable: true,\n },\n {\n key: 'name',\n label: `task-list.fieldLabels.name`,\n viewType: ViewType.TEXT,\n sortable: true,\n },\n {\n key: 'valtimoAssignee.fullName',\n label: `task-list.fieldLabels.valtimoAssignee.fullName`,\n viewType: ViewType.TEXT,\n },\n {\n key: 'due',\n label: `task-list.fieldLabels.due`,\n viewType: ViewType.TEXT,\n sortable: true,\n },\n {\n key: 'context',\n label: `task-list.fieldLabels.context`,\n viewType: ViewType.TEXT,\n },\n ];\n\n private readonly _DEFAULT_SPECIFIED_TASK_LIST_FIELDS: ColumnConfig[] = [\n {\n key: 'createTime',\n label: `task-list.fieldLabels.created`,\n viewType: ViewType.DATE,\n sortable: true,\n format: 'DD MMM YYYY HH:mm',\n },\n {\n key: 'name',\n label: `task-list.fieldLabels.name`,\n viewType: ViewType.TEXT,\n sortable: true,\n },\n {\n key: 'assignee',\n label: `task-list.fieldLabels.valtimoAssignee.fullName`,\n viewType: ViewType.TEXT,\n },\n {\n key: 'dueDate',\n label: `task-list.fieldLabels.due`,\n viewType: ViewType.TEXT,\n sortable: true,\n },\n ];\n\n private readonly _fields$ = new BehaviorSubject<ColumnConfig[]>(this._DEFAULT_TASK_LIST_FIELDS);\n\n private get hasCustomConfigTaskList(): boolean {\n return !!this.taskService.getConfigCustomTaskList();\n }\n\n public get fields$(): Observable<ColumnConfig[]> {\n return this._fields$.asObservable();\n }\n\n public get taskListColumnsForCase$(): Observable<TaskListColumn[]> {\n return this.taskListService.caseDefinitionName$.pipe(\n tap(caseDefinitionName => {\n if (caseDefinitionName === this.taskListService.ALL_CASES_ID) {\n this.resetTaskListFields();\n }\n }),\n filter(\n caseDefinitionName =>\n !!caseDefinitionName && caseDefinitionName !== this.taskListService.ALL_CASES_ID\n ),\n switchMap(caseDefinitionName => this.taskService.getTaskListColumns(caseDefinitionName)),\n tap(taskListColumns => {\n if (taskListColumns.length === 0) {\n this.taskListSortService.updateSortStates({\n isSorting: true,\n state: {\n name: this._DEFAULT_SPECIFIED_TASK_LIST_FIELDS[0].key,\n direction: 'DESC',\n },\n });\n this._fields$.next(this._DEFAULT_SPECIFIED_TASK_LIST_FIELDS);\n } else {\n this._fields$.next(this.mapTaskListColumnToColumnConfig(taskListColumns));\n }\n }),\n tap(() => this.taskListService.setLoadingStateForCaseDefinition(false))\n );\n }\n\n constructor(\n private readonly taskService: TaskService,\n private readonly taskListService: TaskListService,\n private readonly taskListSortService: TaskListSortService\n ) {}\n\n public resetTaskListFields(): void {\n if (this.hasCustomConfigTaskList) {\n this.setFieldsToCustomTaskListFields();\n } else {\n this.setFieldsToDefaultTaskListFields();\n }\n\n this.taskListSortService.resetDefaultSortStates();\n this.taskListService.setLoadingStateForCaseDefinition(false);\n }\n\n private setFieldsToCustomTaskListFields(): void {\n const customTaskListFields = this.taskService.getConfigCustomTaskList().fields;\n\n if (customTaskListFields) {\n this._fields$.next(\n customTaskListFields.map((column, index) => ({\n key: column.propertyName,\n label: `task-list.fieldLabels.${column.translationKey}`,\n sortable: column.sortable,\n ...(column.viewType && {viewType: column.viewType}),\n ...(column.enum && {enum: column.enum}),\n }))\n );\n }\n }\n\n private setFieldsToDefaultTaskListFields(): void {\n this._fields$.next(this._DEFAULT_TASK_LIST_FIELDS);\n }\n\n private mapTaskListColumnToColumnConfig(\n taskListColumns: Array<TaskListColumn>\n ): Array<ColumnConfig> {\n const hasDefaultSort = !!taskListColumns.find(column => column.defaultSort);\n const firstSortableColumn = taskListColumns.find(column => column.sortable);\n\n if (!hasDefaultSort && firstSortableColumn) {\n this.taskListSortService.updateSortStates({\n isSorting: true,\n state: {\n name: firstSortableColumn.key,\n direction: 'DESC',\n },\n });\n }\n\n if (!hasDefaultSort && !firstSortableColumn) {\n this.taskListSortService.clearSortStates();\n }\n\n return taskListColumns.map(column => {\n if (column.defaultSort) {\n this.taskListSortService.updateSortStates({\n isSorting: true,\n state: {\n name: column.key,\n direction: column.defaultSort,\n },\n });\n }\n\n return {\n viewType: this.getViewType(column.displayType.type),\n key: column.key,\n label: column.title || column.key,\n sortable: column.sortable,\n ...(column?.displayType?.displayTypeParameters?.enum && {\n enum: column?.displayType?.displayTypeParameters?.enum,\n }),\n ...(column?.displayType?.displayTypeParameters?.dateFormat && {\n format: column?.displayType?.displayTypeParameters?.dateFormat,\n }),\n };\n });\n }\n\n private getViewType(taskListColumnColumnDisplayType: string): string {\n switch (taskListColumnColumnDisplayType) {\n case 'arrayCount':\n return 'relatedFiles';\n case 'underscoresToSpaces':\n return 'stringReplaceUnderscore';\n default:\n return taskListColumnColumnDisplayType;\n }\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {TaskPageParams} from '../models';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {TaskListTab} from '@valtimo/config';\nimport {map, take} from 'rxjs/operators';\nimport {TaskListService} from './task-list.service';\n\n@Injectable()\nexport class TaskListPaginationService {\n private readonly _pagination$ = new BehaviorSubject<{[key in TaskListTab]: TaskPageParams}>({\n [TaskListTab.ALL]: this.getDefaultPagination(),\n [TaskListTab.MINE]: this.getDefaultPagination(),\n [TaskListTab.OPEN]: this.getDefaultPagination(),\n });\n\n private readonly _paginationForCurrentTaskType$: Observable<TaskPageParams> = combineLatest([\n this.taskListService.selectedTaskType$,\n this._pagination$,\n ]).pipe(map(([selectedTaskType, pagination]) => pagination[selectedTaskType]));\n\n public get paginationForCurrentTaskType$(): Observable<TaskPageParams> {\n return this._paginationForCurrentTaskType$;\n }\n\n public get paginationForCurrentTaskTypeForList$(): Observable<TaskPageParams> {\n return this._paginationForCurrentTaskType$.pipe(\n map(pagination => ({...pagination, page: pagination?.page + 1 || 1}))\n );\n }\n\n constructor(private readonly taskListService: TaskListService) {}\n\n public updateTaskPagination(\n taskType: TaskListTab,\n updatedPagination: Partial<TaskPageParams>\n ): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n const currentPagination = pagination[taskType];\n this._pagination$.next({\n ...pagination,\n [taskType]: {...currentPagination, ...updatedPagination},\n });\n });\n }\n\n public getLastAvailablePage(page: number, size: number, collectionSize: number): number {\n if (this.isNumber(page) && this.isNumber(size) && this.isNumber(collectionSize) && page !== 0) {\n const amountOfPages = Math.ceil(collectionSize / size);\n\n if (page + 1 > amountOfPages) {\n return amountOfPages - 1;\n }\n }\n\n return page;\n }\n\n private isNumber(value: any): boolean {\n return typeof value === 'number';\n }\n\n private getDefaultPagination(): TaskPageParams {\n return {\n page: 0,\n size: 10,\n };\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {\n ConfigService,\n SearchField,\n SearchFieldValues,\n SearchFilter,\n SearchFilterRange,\n} from '@valtimo/config';\nimport {BehaviorSubject, map, Observable, of, switchMap, tap} from 'rxjs';\nimport {TaskListService} from './task-list.service';\nimport {TaskListOtherFilters, TaskListSearchField} from '../models';\nimport {TaskService} from './task.service';\n\n@Injectable()\nexport class TaskListSearchService {\n private readonly _loadingSearchFields$ = new BehaviorSubject<boolean>(true);\n private readonly _otherFilters$ = new BehaviorSubject<TaskListOtherFilters>([]);\n\n public get loadingSearchFields$(): Observable<boolean> {\n return this._loadingSearchFields$.asObservable();\n }\n\n public get otherFilters$(): Observable<TaskListOtherFilters> {\n return this._otherFilters$.asObservable();\n }\n\n public readonly searchFields$: Observable<SearchField[]> =\n this.taskListService.caseDefinitionName$.pipe(\n tap(() => this._loadingSearchFields$.next(true)),\n switchMap(caseDefinitionName =>\n caseDefinitionName\n ? this.taskService.getTaskListSearchFields(caseDefinitionName)\n : of([] as TaskListSearchField[])\n ),\n map(searchFields =>\n searchFields.map(searchField => {\n const fieldTypeLowerCase = searchField.fieldType?.toLowerCase();\n\n return {\n ...searchField,\n dataType: searchField.dataType?.toLowerCase(),\n fieldType: fieldTypeLowerCase === 'text_contains' ? 'single' : fieldTypeLowerCase,\n matchType: searchField?.matchType?.toLowerCase(),\n } as unknown as SearchField;\n })\n ),\n tap(() => this._loadingSearchFields$.next(false))\n );\n\n constructor(\n private readonly configService: ConfigService,\n private readonly taskListService: TaskListService,\n private readonly taskService: TaskService\n ) {}\n\n public setSearchFieldValues(searchFieldValues: SearchFieldValues): void {\n this._otherFilters$.next(this.mapSearchValuesToFilters(searchFieldValues));\n }\n\n public setOtherFilters(otherFilters: TaskListOtherFilters): void {\n this._otherFilters$.next(otherFilters);\n }\n\n public resetOtherFilters(): void {\n this._otherFilters$.next([]);\n }\n\n public mapOtherFilterToSearchValues(otherFilters: TaskListOtherFilters): SearchFieldValues {\n return otherFilters.reduce((acc, curr) => {\n const filter = curr as any;\n\n if (filter.rangeFrom) {\n return {\n ...acc,\n [filter.key]: {\n start: filter.rangeFrom,\n end: filter.rangeTo,\n },\n };\n } else if (filter.multiValue) {\n return {...acc, [filter.key]: filter.values};\n } else if (Array.isArray(filter.values) && filter.values.length > 0 && !filter.multiValue) {\n return {...acc, [filter.key]: filter.values[0]};\n }\n\n return acc;\n }, {});\n }\n\n private mapSearchValuesToFilters(values: SearchFieldValues): TaskListOtherFilters {\n const filters: Array<SearchFilter | SearchFilterRange> = [];\n\n Object.keys(values).forEach(valueKey => {\n const searchValue = values[valueKey] as any;\n if (searchValue.start) {\n filters.push({key: valueKey, rangeFrom: searchValue.start, rangeTo: searchValue.end});\n } else if (Array.isArray(searchValue)) {\n filters.push({key: valueKey, values: searchValue, multiValue: true});\n } else {\n filters.push({key: valueKey, values: [searchValue], multiValue: false});\n }\n });\n\n return filters;\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {\n TaskListEncodedQueryParams,\n TaskListQueryParams,\n TaskListQueryParamsWithReload,\n} from '../models';\nimport {omit} from 'lodash';\nimport {ActivatedRoute, Router} from '@angular/router';\n\n@Injectable()\nexport class TaskListQueryParamService {\n public setTaskListParams(params: TaskListQueryParamsWithReload): void {\n const queryParams: TaskListQueryParams = omit(params, 'reload');\n const encodedQueryParams = Object.keys(queryParams).reduce(\n (acc, curr) => ({...acc, [curr]: this.objectToBase64(queryParams[curr])}),\n {}\n ) as TaskListEncodedQueryParams;\n\n this.router.navigate([this.getUrlWithoutParams()], {queryParams: encodedQueryParams});\n }\n\n constructor(\n private readonly router: Router,\n private readonly route: ActivatedRoute\n ) {}\n\n public getTaskListQueryParams(): Partial<TaskListQueryParams> {\n const queryParams = this.route.snapshot.queryParams;\n const decodedParams = Object.keys(queryParams).reduce(\n (acc, curr) => ({...acc, [curr]: this.parseBase64(queryParams[curr])}),\n {}\n ) as Partial<TaskListQueryParams>;\n\n return decodedParams;\n }\n\n private getUrlWithoutParams(): string {\n const urlTree = this.router.parseUrl(this.router.url);\n urlTree.queryParams = {};\n urlTree.fragment = null;\n return urlTree.toString();\n }\n\n private objectToBase64(jsObject: object): string {\n return btoa(JSON.stringify(jsObject));\n }\n\n private parseBase64(base64string: string): object {\n return JSON.parse(atob(base64string));\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './task.service';\nexport * from './task-list.service';\nexport * from './task-list-column.service';\nexport * from './task-list-pagination.service';\nexport * from './task-list-search.service';\nexport * from './task-list-query-param.service';\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport {DropdownItem} from '@valtimo/components';\nimport {BehaviorSubject, combineLatest, Subscription, take, tap} from 'rxjs';\nimport {TaskService} from '../../services';\nimport {NamedUser} from '@valtimo/config';\n\n@Component({\n selector: 'valtimo-assign-user-to-task',\n templateUrl: './assign-user-to-task.component.html',\n styleUrls: ['./assign-user-to-task.component.scss'],\n})\nexport class AssignUserToTaskComponent implements OnInit, OnChanges, OnDestroy {\n @Input() taskId: string;\n @Input() assigneeId: string;\n @Output() assignmentOfTaskChanged = new EventEmitter();\n\n public assignedIdOnServer$ = new BehaviorSubject<string | null>(null);\n public assignedUserFullName$ = new BehaviorSubject<string | null>(null);\n public candidateUsersForTask$ = new BehaviorSubject<NamedUser[] | undefined>(undefined);\n public disabled$ = new BehaviorSubject<boolean>(true);\n public userIdToAssign: string | null = null;\n private _subscriptions = new Subscription();\n\n constructor(private taskService: TaskService) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(\n this.taskService.getCandidateUsers(this.taskId).subscribe(candidateUsers => {\n this.candidateUsersForTask$.next(candidateUsers);\n if (this.assigneeId) {\n this.assignedIdOnServer$.next(this.assigneeId);\n this.userIdToAssign = this.assigneeId;\n this.assignedUserFullName$.next(\n this.getAssignedUserName(candidateUsers, this.assigneeId)\n );\n }\n this.enable();\n })\n );\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n this.candidateUsersForTask$.pipe(take(1)).subscribe(candidateUsers => {\n const currentUserId = changes.assigneeId?.currentValue || this.assigneeId;\n this.assignedIdOnServer$.next(currentUserId || null);\n this.userIdToAssign = currentUserId || null;\n this.assignedUserFullName$.next(\n this.getAssignedUserName(candidateUsers ?? [], currentUserId)\n );\n });\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public assignTask(userId: string): void {\n this.disable();\n combineLatest([\n this.candidateUsersForTask$,\n this.taskService.assignTask(this.taskId, {assignee: userId}),\n ])\n .pipe(\n take(1),\n tap(([candidateUsers]) => {\n this.userIdToAssign = userId;\n this.assignedIdOnServer$.next(userId);\n this.assignedUserFullName$.next(this.getAssignedUserName(candidateUsers ?? [], userId));\n this.emitChange();\n this.enable();\n })\n )\n .subscribe();\n }\n\n public unassignTask(): void {\n this.disable();\n this.taskService\n .unassignTask(this.taskId)\n .pipe(\n tap(() => {\n this.clear();\n this.emitChange();\n this.enable();\n })\n )\n .subscribe();\n }\n\n public getAssignedUserName(users: NamedUser[], userId: string): string {\n if (users && userId) {\n const findUser =\n users.find(user => user.id === userId) || users.find(user => user.userName === userId);\n return findUser ? findUser.label : userId;\n }\n return userId || '-';\n }\n\n public mapUsersForDropdown(users: NamedUser[]): DropdownItem[] {\n return (\n users &&\n users\n .map(user => ({...user, lastName: user.lastName?.split(' ').splice(-1)[0] || ''}))\n .sort((a, b) => a.lastName.localeCompare(b.lastName))\n .map(user => ({text: user.label, id: user.id}))\n );\n }\n\n private clear(): void {\n this.assignedIdOnServer$.next(null);\n this.userIdToAssign = null;\n }\n\n private emitChange(): void {\n this.assignmentOfTaskChanged.emit();\n }\n\n private enable(): void {\n this.disabled$.next(false);\n }\n\n private disable(): void {\n this.disabled$.next(true);\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n candidateUsers: candidateUsersForTask$ | async,\n disabled: disabled$ | async,\n idOnServer: assignedIdOnServer$ | async\n } as obs\"\n>\n <div class=\"container-fluid\">\n <div class=\"row mt-2 mb-2\">\n <div class=\"col-12 pl-0 d-flex flex-row align-items-center\">\n <valtimo-searchable-dropdown-select\n *ngIf=\"obs.candidateUsers; else loading\"\n [style]=\"'underlinedText'\"\n [items]=\"mapUsersForDropdown(obs.candidateUsers)\"\n [buttonText]=\"'assignTask.header' | translate\"\n [searchText]=\"'interface.typeToSearch' | translate\"\n [noResultsText]=\"'interface.noSearchResults' | translate\"\n [disabled]=\"obs.disabled\"\n [selectedText]=\"'assignTask.assignedTo' | translate\"\n [selectedTextValue]=\"assignedUserFullName$ | async\"\n [clearSelectionButtonTitle]=\"'assignTask.remove' | translate\"\n [hasSelection]=\"userIdToAssign === obs.idOnServer && obs.idOnServer !== null\"\n [width]=\"250\"\n (itemSelected)=\"assignTask($event)\"\n (clearSelection)=\"unassignTask()\"\n >\n </valtimo-searchable-dropdown-select>\n </div>\n </div>\n </div>\n</ng-container>\n\n<ng-template #loading>\n <h5>\n <b>{{ 'assignTask.fetchingUsers' | translate }}</b>\n </h5>\n</ng-template>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {PermissionRequest} from '@valtimo/access-control';\n\nenum PERMISSION_ACTION {\n assign = 'assign',\n view = 'view',\n}\n\nenum TASK_DETAIL_PERMISSION_RESOURCE {\n jsonSchemaDocument = 'com.ritense.document.domain.impl.JsonSchemaDocument',\n task = 'com.ritense.valtimo.camunda.domain.CamundaTask',\n}\n\nconst CAN_ASSIGN_TASK_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.assign,\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n};\n\nconst CAN_VIEW_TASK_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.view,\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n};\n\nconst CAN_VIEW_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.view,\n resource: TASK_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nexport {\n CAN_ASSIGN_TASK_PERMISSION,\n CAN_VIEW_TASK_PERMISSION,\n CAN_VIEW_CASE_PERMISSION,\n TASK_DETAIL_PERMISSION_RESOURCE,\n};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {HttpClient, HttpHeaders, HttpParams, HttpResponse} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {\n AssigneeRequest,\n IntermediateSaveRequest,\n IntermediateSubmission,\n SpecifiedTask,\n Task,\n TaskListColumn,\n TaskPageParams,\n TaskProcessLinkResult,\n} from '../models';\nimport {\n BaseApiService,\n ConfigService,\n CustomTaskList,\n NamedUser,\n Page,\n TaskListTab,\n} from '@valtimo/config';\nimport {InterceptorSkip} from '@valtimo/security';\n\n@Injectable({providedIn: 'root'})\nexport class TaskIntermediateSaveService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public getIntermediateSubmission(taskInstanceId: string): Observable<IntermediateSubmission> {\n return this.httpClient.get<IntermediateSubmission>(\n this.getApiUrl('/v1/form/intermediate/submission'),\n {\n params: {\n taskInstanceId,\n },\n headers: new HttpHeaders().set(InterceptorSkip, '404'),\n }\n );\n }\n\n public storeIntermediateSubmission(\n request: IntermediateSaveRequest\n ): Observable<IntermediateSubmission> {\n return this.httpClient.post<IntermediateSubmission>(\n this.getApiUrl('/v1/form/intermediate/submission'),\n request,\n {\n headers: new HttpHeaders().set(InterceptorSkip, '400'),\n }\n );\n }\n\n public clearIntermediateSubmission(taskInstanceId: string): Observable<void> {\n return this.httpClient.delete<void>(this.getApiUrl('/v1/form/intermediate/submission'), {\n params: {\n taskInstanceId,\n },\n });\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n ComponentRef,\n EventEmitter,\n Inject,\n OnDestroy, OnInit,\n Optional,\n Output,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {\n FormioComponent,\n FormioOptionsImpl,\n FormIoStateService,\n FormioSubmission,\n ValtimoFormioOptions,\n ValtimoModalService,\n} from '@valtimo/components';\nimport {\n IntermediateSaveRequest,\n IntermediateSubmission,\n Task,\n TaskProcessLinkType,\n} from '../../models';\nimport {FormFlowComponent, FormSubmissionResult, ProcessLinkService} from '@valtimo/process-link';\nimport {FormioForm} from '@formio/angular';\nimport moment from 'moment';\nimport {ToastrService} from 'ngx-toastr';\nimport {distinctUntilChanged, map, switchMap, take} from 'rxjs/operators';\nimport {TaskService} from '../../services/task.service';\nimport {BehaviorSubject, combineLatest, Observable, Subscription} from 'rxjs';\nimport {UserProviderService} from '@valtimo/security';\nimport {DocumentService} from '@valtimo/document';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ConfigService, FORM_VIEW_MODEL_TOKEN, FormViewModel} from '@valtimo/config';\nimport {TaskIntermediateSaveService} from '../../services/task-intermediate-save.service';\nimport {IconService, Modal} from 'carbon-components-angular';\nimport {RecentlyViewed16} from '@carbon/icons';\nimport {PermissionService} from '@valtimo/access-control';\nimport {CAN_ASSIGN_TASK_PERMISSION, TASK_DETAIL_PERMISSION_RESOURCE} from '../../task-permissions';\nimport {NGXLogger} from 'ngx-logger';\n\nmoment.locale(localStorage.getItem('langKey') || '');\n\n@Component({\n selector: 'valtimo-task-detail-modal',\n templateUrl: './task-detail-modal.component.html',\n styleUrls: ['./task-detail-modal.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class TaskDetailModalComponent implements OnInit, OnDestroy {\n @ViewChild('form') form: FormioComponent;\n @ViewChild('formFlow') formFlow: FormFlowComponent;\n @ViewChild('taskDetailModal') modal: Modal;\n @ViewChild('formViewModelComponent', {static: true, read: ViewContainerRef})\n public formViewModelDynamicContainer: ViewContainerRef;\n @Output() formSubmit = new EventEmitter();\n @Output() assignmentOfTaskChanged = new EventEmitter();\n\n public intermediateSaveEnabled = false;\n public currentIntermediateSave: IntermediateSubmission = null;\n\n public readonly task$ = new BehaviorSubject<Task | null>(null);\n public readonly taskInstanceId$ = new BehaviorSubject<string>(null);\n public readonly formDefinition$ = new BehaviorSubject<FormioForm>(undefined);\n public readonly formDefinitionId$ = new BehaviorSubject<string>(undefined);\n public readonly formName$ = new BehaviorSubject<string>(undefined);\n public readonly submission$ = new BehaviorSubject<any>({});\n public readonly formFlowInstanceId$ = new BehaviorSubject<string>(undefined);\n public readonly page$ = new BehaviorSubject<any>(null);\n public readonly formioOptions$ = new BehaviorSubject<ValtimoFormioOptions>(null);\n public readonly errorMessage$ = new BehaviorSubject<string>(undefined);\n public readonly isAdmin$: Observable<boolean> = this.userProviderService\n .getUserSubject()\n .pipe(map(userIdentity => userIdentity?.roles?.includes('ROLE_ADMIN')));\n public readonly formIoFormData$ = new BehaviorSubject<any>(null);\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n public readonly showConfirmationModal$ = new BehaviorSubject<boolean>(false);\n\n private readonly taskProcessLinkType$ = new BehaviorSubject<TaskProcessLinkType | null>(null);\n public readonly processLinkIsForm$ = this.taskProcessLinkType$.pipe(map(type => type === 'form'));\n public readonly processLinkIsFormViewModel$ = this.taskProcessLinkType$.pipe(\n map(type => type === 'form-view-model')\n );\n public readonly processLinkIsFormFlow$ = this.taskProcessLinkType$.pipe(\n map(type => type === 'form-flow')\n );\n public readonly canAssignUserToTask$ = new BehaviorSubject<boolean>(false)\n\n private readonly processLinkId$ = new BehaviorSubject<string>(undefined);\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly toastr: ToastrService,\n private readonly processLinkService: ProcessLinkService,\n private readonly router: Router,\n private readonly taskService: TaskService,\n private readonly userProviderService: UserProviderService,\n private readonly modalService: ValtimoModalService,\n private readonly stateService: FormIoStateService,\n private readonly documentService: DocumentService,\n private readonly translateService: TranslateService,\n @Optional() @Inject(FORM_VIEW_MODEL_TOKEN) private readonly formViewModel: FormViewModel,\n private readonly taskIntermediateSaveService: TaskIntermediateSaveService,\n private readonly configService: ConfigService,\n private readonly iconService: IconService,\n private readonly permissionService: PermissionService,\n private readonly logger: NGXLogger,\n ) {\n const options = new FormioOptionsImpl();\n options.disableAlerts = true;\n this.formioOptions$.next(options);\n\n this.intermediateSaveEnabled = this.configService.featureToggles.enableIntermediateSave;\n\n this.iconService.registerAll([RecentlyViewed16]);\n\n this._subscriptions.add(\n this.canAssignUserToTask$.subscribe((canAssign) => {\n this.logger.debug(\"Is user allowed to assign a user to Task\", canAssign);\n })\n )\n }\n\n public ngOnInit(): void {\n this._subscriptions.add(\n this.task$.subscribe(task => {\n if (task) {\n this.logger.debug(\"Checking if user allowed to assign a user to Task with id:\", task.id);\n this.permissionService.requestPermission(CAN_ASSIGN_TASK_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n identifier: task.id,\n }).subscribe( (allowed: boolean) => {\n this.canAssignUserToTask$.next(allowed)\n })\n } else {\n this.logger.debug(\"Reset is user allowed to assign a user to Task as task is null\");\n this.canAssignUserToTask$.next(false)\n }\n })\n )\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public openTaskDetails(task: Task): void {\n this.resetTaskProcessLinkType();\n this.resetFormDefinition();\n this.getTaskProcessLink(task.id);\n this.setDocumentDefinitionNameInService(task);\n const documentId = task.businessKey;\n this.stateService.setDocumentId(documentId);\n\n this.task$.next(task);\n this.taskInstanceId$.next(task.id);\n this.page$.next({\n title: task.name,\n subtitle: `${this.translateService.instant('taskDetail.taskCreated')} ${task.created}`,\n });\n\n //only load from formlink when process link failed for backwards compatibility\n if (!this.taskProcessLinkType$.getValue()) {\n this.openModal();\n }\n }\n\n public gotoProcessLinkScreen(): void {\n this.closeModal();\n this.router.navigate(['process-links']);\n }\n\n public onChange(event: any): void {\n if (event.data) {\n this.formIoFormData$.next(event.data);\n }\n }\n\n public onSubmit(submission: FormioSubmission): void {\n if (submission.data) {\n this.formIoFormData$.next(submission.data);\n }\n\n combineLatest([this.processLinkId$, this.taskProcessLinkType$, this.task$])\n .pipe(take(1))\n .subscribe(([processLinkId, taskProcessLinkType, task]) => {\n if (taskProcessLinkType === 'form') {\n if (processLinkId) {\n this.processLinkService\n .submitForm(processLinkId, submission.data, task.businessKey, task.id)\n .subscribe({\n next: (_: FormSubmissionResult) => {\n this.completeTask();\n },\n error: errors => {\n this.form.showErrors(errors);\n },\n });\n }\n } else if (taskProcessLinkType === 'form-view-model') {\n this.completeTask();\n }\n });\n }\n\n public completeTask(): void {\n this.task$.pipe(take(1)).subscribe(task => {\n this.toastr.success(\n `${task.name} ${this.translateService.instant('taskDetail.taskCompleted')}`\n );\n this.closeModal();\n this.task$.next(null);\n this.formSubmit.emit();\n });\n }\n\n private resetFormDefinition(): void {\n this.formDefinition$.next(null);\n this.loading$.next(true);\n }\n\n private getTaskProcessLink(taskId: string): void {\n this.taskService.getTaskProcessLink(taskId).subscribe({\n next: res => {\n if (res != null) {\n switch (res?.type) {\n case 'form':\n this.taskProcessLinkType$.next('form');\n this.processLinkId$.next(res.processLinkId);\n if (this.intermediateSaveEnabled) this.getCurrentProgress();\n this.setFormDefinitionAndOpenModal(res.properties.prefilledForm);\n break;\n case 'form-flow':\n this.taskProcessLinkType$.next('form-flow');\n this.formFlowInstanceId$.next(res.properties.formFlowInstanceId);\n break;\n case 'form-view-model':\n this.taskProcessLinkType$.next('form-view-model');\n this.processLinkId$.next(res.processLinkId);\n this.formDefinition$.next(res.properties.formDefinition);\n this.formName$.next(res.properties.formName);\n this.openModal();\n this.setFormViewModelComponent();\n break;\n }\n this.loading$.next(false);\n }\n },\n error: _ => {\n this.loading$.next(false);\n },\n });\n }\n\n private resetTaskProcessLinkType(): void {\n this.taskProcessLinkType$.next(null);\n this.processLinkId$.next(null);\n }\n\n private setFormDefinitionAndOpenModal(formDefinition: any): void {\n this.taskProcessLinkType$.next('form');\n this.formDefinition$.next(formDefinition);\n this.openModal();\n }\n\n private setDocumentDefinitionNameInService(task: Task): void {\n this.documentService\n .getProcessDocumentDefinitionFromProcessInstanceId(task.processInstanceId)\n .subscribe(processDocumentDefinition => {\n const documentDefinitionName = processDocumentDefinition.id.documentDefinitionId.name;\n this.modalService.setDocumentDefinitionName(documentDefinitionName);\n this.stateService.setDocumentDefinitionName(documentDefinitionName);\n });\n }\n\n private setFormViewModelComponent() {\n this.formViewModelDynamicContainer.clear();\n if (!this.formViewModel) return;\n const formViewModelComponent = this.formViewModelDynamicContainer.createComponent(\n this.formViewModel.component\n );\n formViewModelComponent.instance.form = this.formDefinition$.getValue();\n formViewModelComponent.instance.formName = this.formName$.getValue();\n formViewModelComponent.instance.taskInstanceId = this.taskInstanceId$.getValue();\n formViewModelComponent.instance.isStartForm = false;\n\n formViewModelComponent.instance.formSubmit.pipe(take(1)).subscribe(() => {\n this.completeTask();\n this.closeModal();\n });\n\n if (this.intermediateSaveEnabled) {\n this._subscriptions.add(\n formViewModelComponent.instance.submission$.subscribe(submission => {\n this.submission$.next(submission);\n }\n )\n )\n this._subscriptions.add(\n this.submission$.pipe(distinctUntilChanged()).subscribe((submission?) => {\n if (submission?.data && Object.keys(submission.data).length === 0) {\n formViewModelComponent.instance.submission = {data: {}};\n }\n })\n )\n this.getCurrentProgress(formViewModelComponent);\n }\n }\n\n private getCurrentProgress(formViewModelComponentRef?: ComponentRef<any>): void {\n this.taskInstanceId$\n .pipe(\n take(1),\n switchMap((taskInstanceId: string) =>\n this.taskIntermediateSaveService.getIntermediateSubmission(taskInstanceId)\n )\n )\n .subscribe({\n next: (intermediateSubmission: IntermediateSubmission) => {\n this.submission$.next({data: intermediateSubmission.submission});\n this.currentIntermediateSave = this.formatIntermediateSubmission(intermediateSubmission);\n\n if (formViewModelComponentRef) {\n formViewModelComponentRef.instance.submission = {\n data: intermediateSubmission.submission,\n };\n }\n },\n });\n }\n\n protected saveCurrentProgress(): void {\n const intermediateSaveRequest: IntermediateSaveRequest = {\n submission: this.submission$.getValue().data\n ? this.submission$.getValue().data\n : this.formIoFormData$.getValue(),\n taskInstanceId: this.taskInstanceId$.getValue(),\n };\n\n this.taskIntermediateSaveService\n .storeIntermediateSubmission(intermediateSaveRequest)\n .pipe(take(1))\n .subscribe({\n next: intermediateSubmission => {\n this.toastr.success(\n this.translateService.instant('formManagement.intermediateSave.success')\n );\n this.currentIntermediateSave = this.formatIntermediateSubmission(intermediateSubmission);\n },\n error: () => {\n this.toastr.error(this.translateService.instant('formManagement.intermediateSave.error'));\n },\n });\n }\n\n protected clearCurrentProgress(): void {\n this.taskInstanceId$\n .pipe(\n take(1),\n switchMap((taskInstanceId: string) =>\n this.taskIntermediateSaveService.clearIntermediateSubmission(taskInstanceId)\n )\n )\n .subscribe({\n next: () => {\n this.submission$.next({data: {}});\n this.currentIntermediateSave = null;\n },\n });\n }\n\n private formatIntermediateSubmission(\n intermediateSubmission: IntermediateSubmission\n ): IntermediateSubmission {\n intermediateSubmission.createdOn = moment(intermediateSubmission.createdOn).format(\n 'DD MMM YYYY HH:mm'\n );\n if (intermediateSubmission.editedOn) {\n intermediateSubmission.editedOn = moment(new Date(intermediateSubmission.editedOn)).format(\n 'DD MMM YYYY HH:mm'\n );\n }\n\n return intermediateSubmission;\n }\n\n private openModal(): void {\n this.modal.open = true;\n }\n\n protected closeModal(): void {\n this.modal.open = false;\n this._subscriptions.unsubscribe();\n\n if (this.formFlow) {\n this.formFlow.saveData();\n }\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<cds-modal #taskDetailModal id=\"taskDetailModal\">\n <cds-modal-header (closeSelect)=\"closeModal()\">\n <div class=\"cds-modal-header\">\n <div class=\"title-container\">\n <p class=\"cds--modal-header__heading cds--type-beta\">{{ (page$ | async)?.title }}</p>\n <p class=\"cds--modal-header__label cds--type-delta\">{{ (page$ | async)?.subtitle }}</p>\n <p class=\"cds--modal-header__label cds--type-delta\" *ngIf=\"currentIntermediateSave\">\n {{ 'formManagement.intermediateSave.lastSavedBy' | translate }}:\n {{\n currentIntermediateSave?.editedBy\n ? currentIntermediateSave?.editedBy\n : currentIntermediateSave.createdBy\n }}\n {{ 'formManagement.intermediateSave.on' | translate }}:\n {{\n currentIntermediateSave?.editedOn\n ? currentIntermediateSave?.editedOn\n : currentIntermediateSave.createdOn\n }}\n </p>\n <ng-container *ngTemplateOutlet=\"assignUserToTask\"></ng-container>\n </div>\n <div\n *ngIf=\"intermediateSaveEnabled && (formFlowInstanceId$ | async) === undefined\"\n class=\"save-buttons-margin\"\n >\n <cds-tooltip\n [caret]=\"true\"\n enterDelayMs=\"0\"\n leaveDelayMs=\"0\"\n [description]=\"'formManagement.intermediateSave.save' | translate\"\n >\n <button\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n cdsIcon=\"save\"\n (click)=\"saveCurrentProgress()\"\n ></button>\n </cds-tooltip>\n <cds-tooltip\n [caret]=\"true\"\n enterDelayMs=\"0\"\n leaveDelayMs=\"0\"\n [description]=\"'formManagement.intermediateSave.clear' | translate\"\n >\n <button\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n cdsIcon=\"recently-viewed\"\n [disabled]=\"!currentIntermediateSave\"\n (click)=\"showConfirmationModal$.next(true)\"\n ></button>\n </cds-tooltip>\n </div>\n </div>\n </cds-modal-header>\n <div\n body\n class=\"cds--modal-content pb-1\"\n *ngIf=\"{\n loading: loading$ | async,\n page: page$ | async,\n task: task$ | async,\n taskId: taskInstanceId$ | async,\n formDefinition: formDefinition$ | async,\n formDefinitionId: formDefinitionId$ | async,\n formName: formName$ | async,\n formIoFormData: formIoFormData$ | async,\n submission: submission$ | async,\n processLinkIsForm: processLinkIsForm$ | async,\n processLinkIsFormViewModel: processLinkIsFormViewModel$ | async,\n formioOptions: formioOptions$ | async,\n processLinkIsFormFlow: processLinkIsFormFlow$ | async,\n formFlowInstanceId: formFlowInstanceId$ | async,\n errorMessage: errorMessage$ | async\n } as obs\"\n >\n <div *ngIf=\"obs.formDefinition && obs.processLinkIsForm\">\n <valtimo-form-io\n #form\n [form]=\"obs.formDefinition\"\n [submission]=\"obs.submission\"\n (submit)=\"onSubmit($event)\"\n (change)=\"onChange($event)\"\n [options]=\"obs.formioOptions\"\n ></valtimo-form-io>\n </div>\n <div *ngIf=\"obs.processLinkIsFormFlow\">\n <valtimo-form-flow\n #formFlow\n [formIoFormData]=\"formIoFormData$\"\n [formFlowInstanceId]=\"obs.formFlowInstanceId\"\n (formFlowComplete)=\"completeTask()\"\n ></valtimo-form-flow>\n </div>\n <div *ngIf=\"obs.loading\">\n <div class=\"text-black mb-0 p-3 text-center\">\n {{ 'formManagement.loading' | translate }}\n </div>\n </div>\n <div\n *ngIf=\"\n obs.loading === false && !obs.formDefinition && !obs.formFlowInstanceId && !obs.errorMessage\n \"\n >\n <div class=\"bg-warning text-black mb-0 p-3 text-center\">\n {{\n (isAdmin$ | async)\n ? ('formManagement.noFormDefinitionFoundAdmin' | translate)\n : ('formManagement.noFormDefinitionFoundUser' | translate)\n }}\n </div>\n </div>\n <div *ngIf=\"obs.errorMessage\">\n <div class=\"bg-danger text-black mb-0 p-3 text-center\">\n {{ obs.errorMessage }}\n </div>\n </div>\n </div>\n <div\n footer\n *ngIf=\"{\n formDefinition: formDefinition$ | async,\n formFlowInstanceId: formFlowInstanceId$ | async\n } as obs\"\n >\n <div class=\"mb-0 p-3 text-center\" *ngIf=\"!obs.formDefinition && !obs.formFlowInstanceId\">\n <button\n class=\"btn btn-secondary btn-space\"\n type=\"button\"\n (click)=\"gotoProcessLinkScreen()\"\n id=\"process-link-button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n </div>\n <div body class=\"m-2\">\n <ng-template #formViewModelComponent></ng-template>\n </div>\n</cds-modal>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showConfirmationModal$\"\n (confirmEvent)=\"clearCurrentProgress()\"\n (cancelEvent)=\"showConfirmationModal$.next(false)\"\n cancelButtonType=\"ghost\"\n confirmButtonTextTranslationKey=\"interface.confirm\"\n titleTranslationKey=\"formManagement.intermediateSave.clear\"\n contentTranslationKey=\"formManagement.intermediateSave.clearConfirm\"\n></valtimo-confirmation-modal>\n\n<ng-template #assignUserToTask>\n <ng-container *ngIf=\"{\n task: task$ | async,\n canAssignUserToTask: canAssignUserToTask$ | async\n } as obs\">\n <valtimo-assign-user-to-task\n *ngIf=\"obs.task && obs.canAssignUserToTask && assignmentOfTaskChanged\"\n [taskId]=\"obs.task.id\"\n [assigneeId]=\"obs.task.assignee\"\n (assignmentOfTaskChanged)=\"assignmentOfTaskChanged.emit()\"\n ></valtimo-assign-user-to-task>\n </ng-container>\n</ng-template>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {CarbonListNoResultsMessage} from '@valtimo/components';\n\nconst TASK_LIST_NO_SEARCH_RESULTS_MESSAGE: CarbonListNoResultsMessage = {\n description: 'task-list.noSearchResultsDescription',\n isSearchResult: true,\n title: 'task-list.noSearchResultsTitle',\n};\n\nexport {TASK_LIST_NO_SEARCH_RESULTS_MESSAGE};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './task-list.constants';\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n HostListener,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {TaskService} from '../../services/task.service';\nimport moment from 'moment';\nimport {\n MappedSpecifiedTask,\n SpecifiedTask,\n Task,\n TaskListOtherFilters,\n TaskListParams,\n TaskPageParams,\n} from '../../models';\nimport {TaskDetailModalComponent} from '../task-detail-modal/task-detail-modal.component';\nimport {BehaviorSubject, combineLatest, Observable, of, Subject, switchMap, tap} from 'rxjs';\nimport {\n ConfigService,\n Page,\n SearchField,\n SearchFieldValues,\n SortState,\n TaskListTab,\n} from '@valtimo/config';\nimport {DocumentService} from '@valtimo/document';\nimport {distinctUntilChanged, filter, map, take} from 'rxjs/operators';\nimport {PermissionService} from '@valtimo/access-control';\nimport {\n CAN_VIEW_CASE_PERMISSION,\n CAN_VIEW_TASK_PERMISSION,\n TASK_DETAIL_PERMISSION_RESOURCE,\n} from '../../task-permissions';\nimport {\n TaskListColumnService,\n TaskListPaginationService,\n TaskListQueryParamService,\n TaskListSearchService,\n TaskListService,\n} from '../../services';\nimport {isEqual} from 'lodash';\nimport {ListItem} from 'carbon-components-angular';\nimport {TranslateService} from '@ngx-translate/core';\nimport {TaskListSortService} from '../../services/task-list-sort.service';\nimport {CarbonListNoResultsMessage, PageTitleService} from '@valtimo/components';\nimport {TASK_LIST_NO_SEARCH_RESULTS_MESSAGE} from '../../constants';\n\nmoment.locale(localStorage.getItem('langKey') || '');\n\n@Component({\n selector: 'valtimo-task-list',\n templateUrl: './task-list.component.html',\n styleUrls: ['./task-list.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n TaskListService,\n TaskListColumnService,\n TaskListPaginationService,\n TaskListSortService,\n TaskListSearchService,\n TaskListQueryParamService,\n ],\n})\nexport class TaskListComponent implements OnInit, OnDestroy {\n @ViewChild('taskDetail') private readonly _taskDetail: TaskDetailModalComponent;\n\n @HostListener('window:popstate', ['$event'])\n private onPopState() {\n setTimeout(() => {\n this.setParamsFromQueryParams();\n });\n }\n\n public readonly ALL_CASES_ID = this.taskListService.ALL_CASES_ID;\n\n public readonly selectedTaskType$ = this.taskListService.selectedTaskType$;\n\n private readonly _overrideNoResultsMessage$ =\n new BehaviorSubject<CarbonListNoResultsMessage | null>(null);\n\n public readonly noResultsMessage$: Observable<CarbonListNoResultsMessage> = combineLatest([\n this.selectedTaskType$,\n this._overrideNoResultsMessage$,\n ]).pipe(\n map(\n ([selectedTaskType, overrideNoResultsMessage]) =>\n overrideNoResultsMessage || {\n title: 'task-list.' + selectedTaskType + '.noResultsDescription',\n description: 'task-list.' + selectedTaskType + '.noResultsTitle',\n isSearchResult: false,\n }\n )\n );\n\n public readonly fields$ = this.taskListColumnService.fields$;\n public readonly loadingTasks$ = new BehaviorSubject<boolean>(true);\n public readonly visibleTabs$ = new BehaviorSubject<Array<TaskListTab> | null>(null);\n\n private _enableLoadingAnimation$ = new BehaviorSubject<boolean>(true);\n\n public readonly cachedTasks$ = new BehaviorSubject<Task[] | MappedSpecifiedTask[] | null>(null);\n\n public readonly paginationForCurrentTaskTypeForList$ =\n this.taskListPaginationService.paginationForCurrentTaskTypeForList$;\n\n public readonly sortStateForCurrentTaskType$ =\n this.taskListSortService.sortStateForCurrentTaskType$;\n\n public readonly overrideSortState$ = this.taskListSortService.overrideSortState$;\n\n private readonly _reload$ = new BehaviorSubject<boolean>(true);\n\n public readonly caseDefinitionName$ = this.taskListService.caseDefinitionName$;\n\n public readonly tasks$: Observable<Task[] | MappedSpecifiedTask[]> = combineLatest([\n this.taskListService.loadingStateForCaseDefinition$,\n this.selectedTaskType$,\n this.taskListPaginationService.paginationForCurrentTaskType$,\n this.taskListSortService.sortStringForCurrentTaskType$,\n this.caseDefinitionName$,\n this._enableLoadingAnimation$,\n this._reload$,\n this.taskListSearchService.otherFilters$,\n this.taskListSortService.overrideSortStateString$,\n ]).pipe(\n filter(([loadingStateForCaseDefinition]) => loadingStateForCaseDefinition === false),\n map(\n ([\n _,\n selectedTaskType,\n paginationForSelectedTaskType,\n sortStringForSelectedTaskType,\n caseDefinitionName,\n enableLoadingAnimation,\n reload,\n otherFilters,\n overrideSortStateString,\n ]) =>\n this.getTaskListParams(\n paginationForSelectedTaskType,\n overrideSortStateString || sortStringForSelectedTaskType,\n selectedTaskType,\n caseDefinitionName,\n enableLoadingAnimation,\n reload,\n otherFilters\n )\n ),\n distinctUntilChanged((previous, current) => isEqual(previous.params, current.params)),\n tap(params => {\n if (params.enableLoadingAnimation) this.loadingTasks$.next(true);\n this.taskListQueryParamService.setTaskListParams(params.params);\n }),\n switchMap(({params}) =>\n combineLatest([\n this.taskService.queryTasksPageV3(\n params.selectedTaskType,\n params.params,\n params.caseDefinitionName,\n params.otherFilters\n ),\n of(!!params.caseDefinitionName),\n ])\n ),\n switchMap(([tasksResult, isSpecified]) =>\n this.getTaskListPermissionsRequest(tasksResult, isSpecified)\n ),\n map(([isSpecified, taskResult, canViewTaskPermissions, canViewCasePermissions]) => {\n this.updateTaskListPaginationAfterResponse(Number(taskResult.totalElements));\n\n return this.mapTasksForList(\n isSpecified,\n taskResult,\n canViewTaskPermissions,\n canViewCasePermissions\n );\n }),\n tap(tasks => {\n this.cachedTasks$.next(tasks);\n this.loadingTasks$.next(false);\n this.disableLoadingAnimation();\n\n this.taskListSearchService.otherFilters$.pipe(take(1)).subscribe(otherFilters => {\n this._overrideNoResultsMessage$.next(\n otherFilters?.length > 0 ? TASK_LIST_NO_SEARCH_RESULTS_MESSAGE : null\n );\n });\n })\n );\n\n public readonly loadingCaseListItems$ = new BehaviorSubject<boolean>(true);\n private readonly _selectedCaseDefinitionId$ = new BehaviorSubject<string>(this.ALL_CASES_ID);\n\n public readonly caseListItems$: Observable<ListItem[]> = combineLatest([\n this.documentService.getAllDefinitions(),\n this._selectedCaseDefinitionId$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([documentDefinitionRes, selectedCaseDefinitionId]) => [\n {\n content: this.translateService.instant('task-list.allCases'),\n id: this.ALL_CASES_ID,\n selected: selectedCaseDefinitionId === this.ALL_CASES_ID,\n },\n ...documentDefinitionRes.content.map(documentDefinition => ({\n id: documentDefinition.id.name,\n content: documentDefinition?.schema?.title,\n selected: documentDefinition.id.name === selectedCaseDefinitionId,\n })),\n ]),\n tap(() => this.loadingCaseListItems$.next(false))\n );\n\n public readonly taskListColumnsForCase$ = this.taskListColumnService.taskListColumnsForCase$;\n\n public readonly loadingSearchFields$ = this.taskListSearchService.loadingSearchFields$;\n public readonly searchFields$: Observable<SearchField[]> =\n this.taskListSearchService.searchFields$;\n\n private readonly _DEFAULT_TASK_LIST_TABS: TaskListTab[] = [\n TaskListTab.MINE,\n TaskListTab.OPEN,\n TaskListTab.ALL,\n ];\n\n public readonly setSearchFieldValuesSubject$ = new BehaviorSubject<SearchFieldValues>({});\n public readonly clearSearchFieldValuesSubject$ = new Subject<null>();\n\n constructor(\n private readonly configService: ConfigService,\n private readonly documentService: DocumentService,\n private readonly permissionService: PermissionService,\n private readonly router: Router,\n private readonly taskService: TaskService,\n private readonly taskListService: TaskListService,\n private readonly translateService: TranslateService,\n private readonly taskListColumnService: TaskListColumnService,\n private readonly taskListPaginationService: TaskListPaginationService,\n private readonly taskListSortService: TaskListSortService,\n private readonly taskListSearchService: TaskListSearchService,\n private readonly taskListQueryParamService: TaskListQueryParamService,\n private readonly pageTitleService: PageTitleService\n ) {}\n\n public ngOnInit(): void {\n this.taskListColumnService.resetTaskListFields();\n this.setVisibleTabs();\n this.pageTitleService.disableReset();\n this.setParamsFromQueryParams();\n }\n\n public ngOnDestroy(): void {\n this.pageTitleService.enableReset();\n }\n\n public paginationClicked(page: number, type: TaskListTab | string): void {\n this.taskListPaginationService.updateTaskPagination(type as TaskListTab, {page: page - 1});\n }\n\n public paginationSet(newSize: number): void {\n combineLatest([\n this.taskListPaginationService.paginationForCurrentTaskType$,\n this.taskListService.selectedTaskType$,\n ])\n .pipe(take(1))\n .subscribe(([pagination, selectedTaskType]) => {\n this.taskListPaginationService.updateTaskPagination(selectedTaskType, {\n size: Number(newSize),\n page: this.taskListPaginationService.getLastAvailablePage(\n pagination.page,\n Number(newSize),\n pagination.collectionSize\n ),\n });\n });\n }\n\n public tabChange(tab: TaskListTab | string): void {\n this.taskListService.selectedTaskType$.pipe(take(1)).subscribe(selectedTaskType => {\n if (selectedTaskType !== tab) {\n this.enableLoadingAnimation();\n this.taskListService.setSelectedTaskType(tab as TaskListTab);\n this.taskListPaginationService.updateTaskPagination(tab as TaskListTab, {page: 0});\n }\n });\n }\n\n public openRelatedCase(event: MouseEvent, index: number): void {\n event.stopPropagation();\n\n this.cachedTasks$.pipe(take(1)).subscribe(cachedTasks => {\n const currentTask = cachedTasks && cachedTasks[index];\n\n if (currentTask && !currentTask.caseLocked) {\n this.documentService\n .getDocument(currentTask.businessKey)\n .pipe(take(1))\n .subscribe(document => {\n this.router.navigate([\n `/dossiers/${document.definitionId?.name}/document/${currentTask.businessKey}`,\n ]);\n });\n }\n });\n }\n\n public rowOpenTaskClick(task): void | boolean {\n return !task.endTime && !task.locked ? this._taskDetail.openTaskDetails(task) : false;\n }\n\n public sortChanged(sortState: SortState): void {\n this.taskListSortService.setOverrideSortState(sortState);\n this.taskListSortService.updateSortState(this.taskListService.selectedTaskType, sortState);\n }\n\n public setCaseDefinition(definition: {item: {id: string}}): void {\n if (definition.item.id) {\n this.taskListSortService.resetOverrideSortState();\n this.loadingTasks$.next(true);\n this.taskListService.setCaseDefinitionName(definition.item.id);\n }\n }\n\n public reload(): void {\n this.enableLoadingAnimation();\n this._reload$.next(!this._reload$.getValue());\n }\n\n public search(searchFieldValues: SearchFieldValues): void {\n if (!searchFieldValues) return;\n\n this.taskListSearchService.setSearchFieldValues(searchFieldValues);\n }\n\n private updateTaskListPaginationAfterResponse(newCollectionSize: number): void {\n this.taskListPaginationService.paginationForCurrentTaskType$\n .pipe(take(1))\n .subscribe(currentPagination => {\n this.taskListPaginationService.updateTaskPagination(this.taskListService.selectedTaskType, {\n collectionSize: Number(newCollectionSize),\n page: this.taskListPaginationService.getLastAvailablePage(\n currentPagination.page,\n currentPagination.size,\n newCollectionSize\n ),\n });\n });\n }\n\n private setVisibleTabs(): void {\n const visibleTabs = this.configService.config?.visibleTaskListTabs;\n\n if (visibleTabs) {\n this.visibleTabs$.next(visibleTabs);\n this.taskListService.setSelectedTaskType(visibleTabs[0]);\n } else {\n this.visibleTabs$.next(this._DEFAULT_TASK_LIST_TABS);\n this.taskListService.setSelectedTaskType(this._DEFAULT_TASK_LIST_TABS[0]);\n }\n }\n\n private disableLoadingAnimation(): void {\n this._enableLoadingAnimation$.next(false);\n }\n\n private enableLoadingAnimation(): void {\n this._enableLoadingAnimation$.next(true);\n }\n\n private getTaskListParams(\n paginationForSelectedTaskType: TaskPageParams,\n sortStringForSelectedTaskType: string,\n selectedTaskType: TaskListTab,\n caseDefinitionName: string,\n enableLoadingAnimation: boolean,\n reload: boolean,\n otherFilters?: TaskListOtherFilters\n ): TaskListParams {\n const params = {\n ...paginationForSelectedTaskType,\n ...(sortStringForSelectedTaskType && {sort: sortStringForSelectedTaskType}),\n };\n\n delete params.collectionSize;\n\n return {\n params: {\n reload,\n selectedTaskType,\n params,\n ...(caseDefinitionName && caseDefinitionName !== this.ALL_CASES_ID && {caseDefinitionName}),\n ...(otherFilters && {otherFilters}),\n },\n enableLoadingAnimation,\n };\n }\n\n private getTaskListPermissionsRequest(\n tasksResult: Page<Task> | Page<SpecifiedTask>,\n isSpecified: boolean\n ) {\n const taskResults = tasksResult.content;\n const hasTaskResults = Array.isArray(taskResults) && taskResults.length > 0;\n\n return combineLatest([\n of(isSpecified),\n of(tasksResult),\n hasTaskResults\n ? combineLatest(\n taskResults.map(task =>\n this.permissionService.requestPermission(CAN_VIEW_TASK_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n identifier: !isSpecified ? (task as Task).id : (task as SpecifiedTask).id,\n })\n )\n )\n : of(null),\n hasTaskResults\n ? combineLatest(\n taskResults.map(task =>\n this.permissionService.requestPermission(CAN_VIEW_CASE_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: task.businessKey,\n })\n )\n )\n : of(null),\n ]);\n }\n\n private mapTasksForList(\n isSpecified: boolean,\n tasks: Page<Task> | Page<SpecifiedTask>,\n canViewTaskPermissions: boolean[] | null,\n canViewCasePermissions: boolean[] | null\n ): Task[] | MappedSpecifiedTask[] {\n const MOMENT_FORMAT = 'DD MMM YYYY HH:mm';\n\n if (isSpecified) {\n return (tasks as Page<SpecifiedTask>).content.map((specifiedTask, specifiedTaskIndex) =>\n specifiedTask.items.reduce(\n (acc, curr) =>\n ({\n id: specifiedTask.id,\n businessKey: specifiedTask.businessKey,\n processInstanceId: specifiedTask.processInstanceId,\n name: specifiedTask.name,\n ...(moment(specifiedTask.created).isValid() && {\n created: moment(specifiedTask.created).format(MOMENT_FORMAT),\n }),\n ...(canViewTaskPermissions && {locked: !canViewTaskPermissions[specifiedTaskIndex]}),\n ...(canViewCasePermissions && {\n caseLocked: !canViewCasePermissions[specifiedTaskIndex],\n }),\n ...acc,\n [curr.key]: curr.value,\n }) as MappedSpecifiedTask,\n {}\n )\n ) as MappedSpecifiedTask[];\n }\n\n return (tasks as Page<Task>)?.content?.map((task, taskIndex) => {\n const createdDate = moment(task.created);\n const dueDate = moment(task.due);\n const taskCopy = {...task};\n\n if (task.due && dueDate.isValid()) taskCopy.due = dueDate.format(MOMENT_FORMAT);\n if (createdDate.isValid()) taskCopy.created = createdDate.format(MOMENT_FORMAT);\n if (canViewTaskPermissions) taskCopy.locked = !canViewTaskPermissions[taskIndex];\n if (canViewCasePermissions) taskCopy.caseLocked = !canViewCasePermissions[taskIndex];\n\n return taskCopy;\n }) as Task[];\n }\n\n private setParamsFromQueryParams(): void {\n const decodedParams = this.taskListQueryParamService.getTaskListQueryParams();\n\n if (decodedParams.caseDefinitionName) {\n this.taskListService.setCaseDefinitionName(decodedParams.caseDefinitionName);\n this._selectedCaseDefinitionId$.next(decodedParams.caseDefinitionName);\n }\n\n if (decodedParams.otherFilters?.length > 0) {\n const searchFieldValues = this.taskListSearchService.mapOtherFilterToSearchValues(\n decodedParams.otherFilters\n );\n this.setSearchFieldValuesSubject$.next(searchFieldValues);\n } else {\n this.clearSearchFieldValuesSubject$.next(null);\n }\n\n if (decodedParams.selectedTaskType)\n this.taskListService.setSelectedTaskType(decodedParams.selectedTaskType);\n\n if (decodedParams.params?.sort) {\n const stateFromSortString = this.taskListSortService.getSortStateFromSortString(\n decodedParams.params.sort\n );\n if (stateFromSortString) this.taskListSortService.setOverrideSortState(stateFromSortString);\n }\n\n if (decodedParams.params)\n this.taskListPaginationService.updateTaskPagination(\n this.taskListService.selectedTaskType,\n decodedParams.params\n );\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n loading: loadingTasks$ | async,\n selectedTaskType: selectedTaskType$ | async,\n tasks: tasks$ | async,\n fields: fields$ | async,\n visibleTabs: visibleTabs$ | async,\n pagination: paginationForCurrentTaskTypeForList$ | async,\n taskListColumnsForCase: taskListColumnsForCase$ | async,\n sortState: sortStateForCurrentTaskType$ | async,\n overrideSortState: overrideSortState$ | async,\n searchFields: searchFields$ | async,\n loadingSearchFields: loadingSearchFields$ | async,\n caseDefinitionName: caseDefinitionName$ | async,\n noResultsMessage: noResultsMessage$ | async\n } as obs\"\n class=\"main-content\"\n>\n <div class=\"container-fluid\">\n @if (obs.caseDefinitionName && obs.caseDefinitionName !== ALL_CASES_ID) {\n <ng-container\n *ngTemplateOutlet=\"\n searchFields;\n context: {\n obs: obs\n }\n \"\n ></ng-container>\n }\n\n <ng-container\n *ngTemplateOutlet=\"\n tasksList;\n context: {\n obs: obs\n }\n \"\n ></ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n tasksListLoading;\n context: {\n obs: obs\n }\n \"\n ></ng-container>\n\n <valtimo-task-detail-modal\n #taskDetail\n (formSubmit)=\"reload()\"\n (assignmentOfTaskChanged)=\"reload()\"\n ></valtimo-task-detail-modal>\n </div>\n</div>\n\n<ng-template #configuredTabs let-selectedTaskType=\"selectedTaskType\" let-visibleTabs=\"visibleTabs\">\n <cds-tabs *ngIf=\"visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n *ngFor=\"let tab of visibleTabs\"\n [attr.data-testid]=\"'task-list-tab-' + tab\"\n [heading]=\"'task-list.' + tab + '.title' | translate\"\n [active]=\"selectedTaskType === tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n</ng-template>\n\n<ng-template #caseLink let-data=\"data\">\n <ng-container *ngIf=\"cachedTasks$ | async as cachedTasks\">\n <div *ngIf=\"cachedTasks[data.index].caseLocked\">\n <a\n class=\"float-left cds--link--disabled\"\n cdsLink\n href=\"javascript:void(0)\"\n ngbTooltip=\"{{ 'task-list.caseLocked' | translate }}\"\n (click)=\"$event.stopPropagation()\"\n >\n {{ 'task-list.goToCase' | translate }}\n </a>\n </div>\n <div *ngIf=\"!cachedTasks[data.index].caseLocked\">\n <a\n class=\"float-left cds--link\"\n cdsLink\n href=\"javascript:void(0)\"\n (click)=\"openRelatedCase($event, data.index)\"\n >\n {{ 'task-list.goToCase' | translate }}\n </a>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #tasksList let-obs=\"obs\">\n <valtimo-carbon-list\n *ngIf=\"!obs.loading\"\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [items]=\"obs.tasks\"\n [lastColumnTemplate]=\"caseLink\"\n [pagination]=\"obs.pagination\"\n paginationIdentifier=\"taskList\"\n lockedTooltipTranslationKey=\"task-list.rowLocked\"\n [sortState]=\"obs.overrideSortState || obs.sortState\"\n (paginationClicked)=\"paginationClicked($event, obs.selectedTaskType)\"\n (paginationSet)=\"paginationSet($event)\"\n (rowClicked)=\"rowOpenTaskClick($event)\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <div tabs>\n <ng-container *ngIf=\"obs.visibleTabs\">\n <ng-container\n *ngTemplateOutlet=\"\n configuredTabs;\n context: {selectedTaskType: obs.selectedTaskType, visibleTabs: obs.visibleTabs}\n \"\n ></ng-container>\n </ng-container>\n </div>\n\n <valtimo-no-results\n [description]=\"obs.noResultsMessage.description | translate\"\n [title]=\"obs.noResultsMessage.title | translate\"\n >\n </valtimo-no-results>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #tasksListLoading let-obs=\"obs\">\n <valtimo-carbon-list *ngIf=\"obs.loading\" [loading]=\"true\">\n <div tabs>\n <cds-tabs *ngIf=\"!obs.visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n [heading]=\"'task-list.mine.title' | translate\"\n [active]=\"obs.selectedTaskType === 'mine'\"\n >\n </cds-tab>\n\n <cds-tab\n [heading]=\"'task-list.open.title' | translate\"\n [active]=\"obs.selectedTaskType === 'open'\"\n >\n </cds-tab>\n\n <cds-tab\n [heading]=\"'task-list.all.title' | translate\"\n [active]=\"obs.selectedTaskType === 'all'\"\n >\n </cds-tab>\n </cds-tabs>\n\n <cds-tabs *ngIf=\"obs.visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n *ngFor=\"let tab of obs.visibleTabs\"\n [heading]=\"'task-list.' + tab + '.title' | translate\"\n [active]=\"obs.selectedTaskType === tab\"\n ></cds-tab>\n </cds-tabs>\n </div>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #searchFields let-obs=\"obs\">\n <div class=\"mb-3\">\n <valtimo-search-fields\n [searchFields]=\"obs.searchFields\"\n [inputDisabled]=\"obs.loadingSearchFields\"\n [documentDefinitionName]=\"obs.caseDefinitionName\"\n [setValuesSubject$]=\"setSearchFieldValuesSubject$\"\n [clearValuesSubject$]=\"clearSearchFieldValuesSubject$\"\n (doSearch)=\"search($event)\"\n >\n </valtimo-search-fields>\n </div>\n</ng-template>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <cds-dropdown\n class=\"case-definition-selection\"\n *ngIf=\"{\n loadingCaseListItems: loadingCaseListItems$ | async,\n caseListItems: caseListItems$ | async\n } as obs\"\n [attr.data-testid]=\"'task-list-case-dropdown'\"\n [disabled]=\"obs.loadingCaseListItems || (obs.caseListItems || []).length === 1\"\n [skeleton]=\"obs.loadingCaseListItems\"\n (selected)=\"setCaseDefinition($event)\"\n >\n <cds-dropdown-list [items]=\"obs.caseListItems || []\"></cds-dropdown-list>\n </cds-dropdown>\n </ng-template>\n</ng-container>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {TaskListComponent} from './components/task-list/task-list.component';\nimport {ROLE_USER} from '@valtimo/config';\n\nconst routes: Routes = [\n {\n path: 'tasks',\n component: TaskListComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Tasks', roles: [ROLE_USER]},\n },\n];\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class TaskRoutingModule {}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {HttpClient} from '@angular/common/http';\nimport {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\nimport {NgbModule} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslateLoader, TranslateModule} from '@ngx-translate/core';\nimport {\n CamundaFormModule,\n CarbonListModule,\n ConfirmationModalModule,\n FormIoModule,\n PageHeaderModule,\n RenderInPageHeaderDirectiveModule,\n SearchableDropdownSelectModule,\n SearchFieldsModule,\n SpinnerModule,\n WidgetModule,\n} from '@valtimo/components';\nimport {HttpLoaderFactory} from '@valtimo/config';\nimport {ProcessLinkModule} from '@valtimo/process-link';\nimport {\n ButtonModule,\n ContentSwitcherModule,\n DropdownModule,\n IconModule,\n LinkModule,\n ModalModule,\n TabsModule,\n TooltipModule,\n} from 'carbon-components-angular';\nimport {ToastrModule} from 'ngx-toastr';\nimport {AssignUserToTaskComponent} from './components/assign-user-to-task/assign-user-to-task.component';\nimport {TaskDetailModalComponent} from './components/task-detail-modal/task-detail-modal.component';\nimport {TaskListComponent} from './components/task-list/task-list.component';\nimport {TaskRoutingModule} from './task-routing.module';\n\n@NgModule({\n declarations: [TaskListComponent, TaskDetailModalComponent, AssignUserToTaskComponent],\n imports: [\n CommonModule,\n TaskRoutingModule,\n CarbonListModule,\n PageHeaderModule,\n WidgetModule,\n SpinnerModule,\n SearchableDropdownSelectModule,\n CamundaFormModule,\n BrowserAnimationsModule,\n FormsModule,\n ToastrModule.forRoot({\n positionClass: 'toast-bottom-full-width',\n preventDuplicates: true,\n }),\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n NgbModule,\n FormIoModule,\n ModalModule,\n LinkModule,\n ProcessLinkModule,\n TabsModule,\n ContentSwitcherModule,\n RenderInPageHeaderDirectiveModule,\n DropdownModule,\n ButtonModule,\n IconModule,\n TooltipModule,\n ConfirmationModalModule,\n SearchFieldsModule,\n ],\n exports: [TaskListComponent, TaskDetailModalComponent, AssignUserToTaskComponent],\n})\nexport class TaskModule {}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of task\n */\n\nexport * from './lib/models';\nexport * from './lib/services/task.service';\nexport * from './lib/task.module';\nexport * from './lib/components/task-detail-modal/task-detail-modal.component';\nexport * from './lib/components/task-list/task-list.component';\nexport * from './lib/components/assign-user-to-task/assign-user-to-task.component';\nexport * from './lib/task-permissions';\nexport * from './lib/constants';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.TaskService","i2.TaskListService","i3.TaskListSortService","i1.TaskListService","map","i1","i3.TaskService","take","i2","i3","i4","switchMap","i9.TaskIntermediateSaveService","i10","i14","i15.AssignUserToTaskComponent","filter","i5.TaskService","i6.TaskListService","i7","i6.TaskListColumnService","i6.TaskListPaginationService","i8.TaskListSortService","i6.TaskListSearchService","i6.TaskListQueryParamService","i9","i11","i12","i13.TaskDetailModalComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"valtimo-task.mjs","sources":["../../../../projects/valtimo/task/src/lib/models/task.model.ts","../../../../projects/valtimo/task/src/lib/models/task-definition.model.ts","../../../../projects/valtimo/task/src/lib/models/task-list.model.ts","../../../../projects/valtimo/task/src/lib/models/task-intermediate-save.model.ts","../../../../projects/valtimo/task/src/lib/models/task-list-search-field.model.ts","../../../../projects/valtimo/task/src/lib/models/index.ts","../../../../projects/valtimo/task/src/lib/services/task.service.ts","../../../../projects/valtimo/task/src/lib/services/task-list.service.ts","../../../../projects/valtimo/task/src/lib/services/task-list-sort.service.ts","../../../../projects/valtimo/task/src/lib/services/task-list-column.service.ts","../../../../projects/valtimo/task/src/lib/services/task-list-pagination.service.ts","../../../../projects/valtimo/task/src/lib/services/task-list-search.service.ts","../../../../projects/valtimo/task/src/lib/services/task-list-query-param.service.ts","../../../../projects/valtimo/task/src/lib/services/index.ts","../../../../projects/valtimo/task/src/lib/components/assign-user-to-task/assign-user-to-task.component.ts","../../../../projects/valtimo/task/src/lib/components/assign-user-to-task/assign-user-to-task.component.html","../../../../projects/valtimo/task/src/lib/task-permissions.ts","../../../../projects/valtimo/task/src/lib/services/task-intermediate-save.service.ts","../../../../projects/valtimo/task/src/lib/components/task-detail-modal/task-detail-modal.component.ts","../../../../projects/valtimo/task/src/lib/components/task-detail-modal/task-detail-modal.component.html","../../../../projects/valtimo/task/src/lib/constants/task-list.constants.ts","../../../../projects/valtimo/task/src/lib/constants/index.ts","../../../../projects/valtimo/task/src/lib/components/task-list/task-list.component.ts","../../../../projects/valtimo/task/src/lib/components/task-list/task-list.component.html","../../../../projects/valtimo/task/src/lib/task-routing.module.ts","../../../../projects/valtimo/task/src/lib/task.module.ts","../../../../projects/valtimo/task/src/public_api.ts","../../../../projects/valtimo/task/src/valtimo-task.ts"],"sourcesContent":["/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {User} from '@valtimo/config';\n\ninterface Task {\n assignee: string;\n caseDefinitionId: string;\n caseExecutionId: string;\n caseInstanceId: string;\n created: string;\n delegationState: any;\n description: string;\n due: string;\n executionId: string;\n followUp: any;\n formKey: string;\n formless: boolean;\n id: string;\n listItemFields: ListItemField[];\n name: string;\n owner: string;\n parentTaskId: string;\n priority: number;\n processDefinitionId: string;\n processInstanceId: string;\n suspended: boolean;\n taskDefinitionKey: string;\n tenantId: string;\n formLocation: string;\n businessKey: string;\n processDefinitionKey: string;\n valtimoAssignee: User;\n locked?: boolean;\n caseLocked?: boolean;\n}\n\ninterface ListItemField {\n key: string;\n value: string;\n label: string;\n}\n\ninterface AssigneeRequest {\n assignee: string;\n}\n\ntype TaskProcessLinkType = 'form' | 'form-flow' | 'form-view-model';\n\ninterface TaskProcessLinkResult {\n processLinkId: string;\n type: TaskProcessLinkType;\n properties: {\n formFlowInstanceId?: string;\n formDefinitionId?: string;\n prefilledForm?: any;\n formDefinition?: any;\n formName?: string;\n };\n}\n\ninterface SpecifiedTask {\n id: string;\n businessKey: string;\n processInstanceId: string;\n name: string;\n created: Date;\n items: {key: string; value: any}[];\n}\n\ninterface MappedSpecifiedTask {\n id: string;\n businessKey: string;\n processInstanceId: string;\n name: string;\n created?: string;\n locked?: boolean;\n caseLocked?: boolean;\n [key: string]: any;\n}\n\nexport {\n AssigneeRequest,\n ListItemField,\n Task,\n TaskProcessLinkResult,\n TaskProcessLinkType,\n SpecifiedTask,\n MappedSpecifiedTask,\n};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {FormDefinition} from '@valtimo/form-management';\n\nexport interface TaskDefinition {\n id: string;\n name: string;\n formDefinition: FormDefinition | null;\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ListItem} from 'carbon-components-angular';\nimport {SearchFilter, SearchFilterRange, TaskListTab} from '@valtimo/config';\n\ninterface TaskPageParams {\n page: number;\n size: number;\n collectionSize?: number;\n sort?: string;\n}\n\nenum TaskListColumnDefaultSort {\n ASC = 'ASC',\n DESC = 'DESC',\n}\n\ninterface TaskListColumnEnum {\n [key: string]: string;\n}\n\ninterface TaskListColumnDisplayTypeParameters {\n enum?: TaskListColumnEnum;\n dateFormat?: string;\n}\n\ninterface TaskListColumnDisplayType {\n type: string;\n displayTypeParameters?: TaskListColumnDisplayTypeParameters;\n}\n\ninterface TaskListColumn {\n title?: string;\n key: string;\n path: string;\n displayType: TaskListColumnDisplayType;\n sortable: boolean;\n defaultSort?: TaskListColumnDefaultSort;\n order?: number;\n}\n\ntype TaskListColumnModalType = 'edit' | 'add';\n\ntype TaskListColumnModalCloseEvent = 'close' | 'refresh';\n\ninterface TaskListColumnListItem extends ListItem {\n key: string;\n}\n\ntype TaskListOtherFilters = Array<SearchFilter | SearchFilterRange>;\n\ninterface TaskListQueryParams {\n selectedTaskType: TaskListTab;\n params: TaskPageParams;\n caseDefinitionName?: string;\n otherFilters?: TaskListOtherFilters;\n}\n\ninterface TaskListEncodedQueryParams {\n selectedTaskType: TaskListTab;\n params: string;\n caseDefinitionName?: string;\n otherFilters?: string;\n}\n\ninterface TaskListQueryParamsWithReload extends TaskListQueryParams {\n reload: boolean;\n}\n\ninterface TaskListParams {\n params: TaskListQueryParamsWithReload;\n enableLoadingAnimation: boolean;\n}\n\nexport {\n TaskListColumn,\n TaskListColumnDisplayType,\n TaskListColumnDefaultSort,\n TaskListColumnModalType,\n TaskListColumnListItem,\n TaskListColumnModalCloseEvent,\n TaskListColumnDisplayTypeParameters,\n TaskListColumnEnum,\n TaskPageParams,\n TaskListParams,\n TaskListOtherFilters,\n TaskListQueryParams,\n TaskListQueryParamsWithReload,\n TaskListEncodedQueryParams,\n};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface IntermediateSubmission {\n submission: object;\n taskInstanceId: string;\n createdBy: string;\n createdOn: string;\n editedBy?: string;\n editedOn?: string;\n}\n\nexport interface IntermediateSaveRequest {\n submission: object;\n taskInstanceId: string;\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nenum TaskListSearchFieldDataType {\n TEXT = 'text',\n NUMBER = 'number',\n DATE = 'date',\n DATETIME = 'datetime',\n TIME = 'time',\n BOOLEAN = 'boolean',\n}\n\nenum TaskListSearchFieldFieldType {\n SINGLE = 'single',\n RANGE = 'range',\n SINGLE_SELECT_DROPDOWN = 'single_select_dropdown',\n MULTI_SELECT_DROPDOWN = 'multi_select_dropdown',\n}\n\nenum TaskListSearchFieldMatchType {\n LIKE = 'like',\n EXACT = 'exact',\n}\n\nenum TaskListSearchDropdownDataProvider {\n DATABASE = 'dropdownDatabaseDataProvider',\n JSON = 'dropdownJsonFileDataProvider',\n}\n\ninterface TaskListSearchField {\n id: string;\n ownerId: string;\n dataType: TaskListSearchFieldDataType;\n fieldType: TaskListSearchFieldFieldType;\n key: string;\n title?: string;\n path: string;\n order: number;\n matchType: TaskListSearchFieldMatchType;\n dropdownDataProvider?: string;\n dropdownValues?: TaskListSearchDropdownValue;\n}\n\ninterface TaskListSearchDropdownValue {\n [key: string]: string;\n}\n\nexport {\n TaskListSearchDropdownDataProvider,\n TaskListSearchFieldDataType,\n TaskListSearchFieldFieldType,\n TaskListSearchFieldMatchType,\n TaskListSearchField,\n TaskListSearchDropdownValue,\n};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './task.model';\nexport * from './task-definition.model';\nexport * from './task-list.model';\nexport * from './task-intermediate-save.model';\nexport * from './task-list-search-field.model';\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {HttpClient, HttpParams, HttpResponse} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {\n AssigneeRequest,\n SpecifiedTask,\n Task,\n TaskListColumn,\n TaskListOtherFilters,\n TaskListSearchField,\n TaskPageParams,\n TaskProcessLinkResult,\n} from '../models';\nimport {\n BaseApiService,\n ConfigService,\n CustomTaskList,\n NamedUser,\n Page,\n TaskListTab,\n} from '@valtimo/config';\nimport {InterceptorSkip} from '@valtimo/security';\n\n@Injectable({providedIn: 'root'})\nexport class TaskService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public queryTasks(params?: any): Observable<HttpResponse<Array<Task>>> {\n return this.httpClient.get<Array<Task>>(this.getApiUrl('/v1/task'), {\n observe: 'response',\n params,\n });\n }\n\n public queryTasksPage(params?: any): Observable<Page<Task>> {\n return this.httpClient.get<Page<Task>>(this.getApiUrl('/v2/task'), {\n params,\n });\n }\n\n public queryTasksPageV3(\n assigneeFilter: TaskListTab = TaskListTab.ALL,\n pageParams: TaskPageParams,\n caseDefinitionName?: string,\n otherFilters?: TaskListOtherFilters\n ): Observable<Page<Task> | Page<SpecifiedTask>> {\n let httpParams = new HttpParams().set('page', pageParams.page).set('size', pageParams.size);\n\n if (pageParams.sort) {\n httpParams = httpParams.append('sort', pageParams.sort);\n }\n\n if (caseDefinitionName && (otherFilters || []).length > 0) {\n return this.searchTasks(httpParams, caseDefinitionName, otherFilters, assigneeFilter);\n }\n\n httpParams = httpParams.append('filter', assigneeFilter.toUpperCase());\n\n return this.httpClient.post<Page<Task>>(\n this.getApiUrl('/v3/task'),\n {...(caseDefinitionName && {caseDefinitionName})},\n {params: httpParams}\n );\n }\n\n private searchTasks(\n params: HttpParams,\n caseDefinitionName: string,\n otherFilters: TaskListOtherFilters,\n assigneeFilter: TaskListTab = TaskListTab.ALL\n ): Observable<Page<SpecifiedTask>> {\n return this.httpClient.post<Page<SpecifiedTask>>(\n this.getApiUrl(`/v1/document-definition/${caseDefinitionName}/task/search`),\n {\n caseDefinitionName,\n assigneeFilter: assigneeFilter.toUpperCase(),\n ...(otherFilters && {otherFilters}),\n },\n {params}\n );\n }\n\n public getTasks(): Observable<Task[]> {\n return this.httpClient.get<Task[]>(this.getApiUrl('/v1/task?filter=all'));\n }\n\n public getTask(id: string): Observable<any> {\n return this.httpClient.get(this.getApiUrl(`/v1/task/${id}`));\n }\n\n public getCandidateUsers(id: string): Observable<NamedUser[]> {\n return this.httpClient.get<NamedUser[]>(this.getApiUrl(`/v2/task/${id}/candidate-user`));\n }\n\n public assignTask(id: string, assigneeRequest: AssigneeRequest): Observable<any> {\n return this.httpClient.post(this.getApiUrl(`/v1/task/${id}/assign`), assigneeRequest);\n }\n\n public unassignTask(id: string): Observable<any> {\n return this.httpClient.post(this.getApiUrl(`/v1/task/${id}/unassign`), null);\n }\n\n public completeTask(id: string, variables: Map<string, any>): Observable<any> {\n return this.httpClient.post(this.getApiUrl(`/v1/task/${id}/complete`), {\n variables,\n filesToDelete: [],\n });\n }\n\n public getTaskProcessLink(taskId: string): Observable<TaskProcessLinkResult> {\n return this.httpClient.get<TaskProcessLinkResult>(\n this.getApiUrl(`/v2/process-link/task/${taskId}`),\n {\n headers: {[InterceptorSkip]: '404'},\n }\n );\n }\n\n public getTaskListColumns(caseDefinitionName: string): Observable<TaskListColumn[]> {\n return this.httpClient.get<TaskListColumn[]>(\n this.getApiUrl(`/v1/case/${caseDefinitionName}/task-list-column`)\n );\n }\n\n public getConfigCustomTaskList(): CustomTaskList {\n return this.configService.config.customTaskList;\n }\n\n public getTaskListSearchFields(caseDefinitionName: string): Observable<TaskListSearchField[]> {\n return this.httpClient.get<TaskListSearchField[]>(\n this.getApiUrl(`v1/search/field/TaskListSearchColumns/${caseDefinitionName}`)\n );\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {TaskService} from './task.service';\nimport {TaskListTab} from '@valtimo/config';\n\n@Injectable()\nexport class TaskListService {\n private readonly _ALL_CASES_ID = 'ALL_CASES';\n private readonly _caseDefinitionName$ = new BehaviorSubject<string | null>(null);\n private readonly _selectedTaskType$ = new BehaviorSubject<TaskListTab>(TaskListTab.MINE);\n private readonly _loadingStateForCaseDefinition$ = new BehaviorSubject<boolean>(false);\n\n public get caseDefinitionName$(): Observable<string | null> {\n return this._caseDefinitionName$.asObservable();\n }\n\n public get selectedTaskType$(): Observable<TaskListTab> {\n return this._selectedTaskType$.asObservable();\n }\n\n public get selectedTaskType(): TaskListTab {\n return this._selectedTaskType$.getValue();\n }\n\n public get loadingStateForCaseDefinition$(): Observable<boolean> {\n return this._loadingStateForCaseDefinition$.asObservable();\n }\n\n public get ALL_CASES_ID(): string {\n return this._ALL_CASES_ID;\n }\n\n constructor(private readonly taskService: TaskService) {}\n\n public setSelectedTaskType(type: TaskListTab): void {\n this._selectedTaskType$.next(type);\n }\n\n public setCaseDefinitionName(caseDefinitionName: string): void {\n this._loadingStateForCaseDefinition$.next(true);\n this._caseDefinitionName$.next(caseDefinitionName);\n }\n\n public setLoadingStateForCaseDefinition(loading: boolean): void {\n this._loadingStateForCaseDefinition$.next(loading);\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {Direction, SortState, TaskListTab} from '@valtimo/config';\nimport {TaskService} from './task.service';\nimport {map, take} from 'rxjs/operators';\nimport {TaskListService} from './task-list.service';\n\n@Injectable()\nexport class TaskListSortService {\n private readonly _overrideSortState$ = new BehaviorSubject<SortState | null>(null);\n\n private readonly _sortState$ = new BehaviorSubject<{[key in TaskListTab]: SortState | null}>({\n [TaskListTab.ALL]: this._defaultSortState,\n [TaskListTab.MINE]: this._defaultSortState,\n [TaskListTab.OPEN]: this._defaultSortState,\n });\n\n private readonly _sortStateForCurrentTaskType$: Observable<SortState> = combineLatest([\n this.taskListService.selectedTaskType$,\n this._sortState$,\n ]).pipe(map(([selectedTaskType, sortStates]) => sortStates[selectedTaskType]));\n\n public get sortStateForCurrentTaskType$(): Observable<SortState> {\n return this._sortStateForCurrentTaskType$;\n }\n\n public get sortStringForCurrentTaskType$(): Observable<string | null> {\n return this.sortStateForCurrentTaskType$.pipe(\n map(sortState => (sortState ? this.getSortString(sortState) : null))\n );\n }\n\n public get overrideSortState$(): Observable<SortState | null> {\n return this._overrideSortState$.asObservable();\n }\n\n public get overrideSortStateString$(): Observable<string | null> {\n return this._overrideSortState$.pipe(map(state => (state ? this.getSortString(state) : null)));\n }\n\n private get _defaultSortState(): SortState | null {\n return this.taskService.getConfigCustomTaskList()?.defaultSortedColumn || null;\n }\n\n constructor(\n private readonly taskService: TaskService,\n private readonly taskListService: TaskListService\n ) {}\n\n public updateSortState(taskType: TaskListTab, updatedSortState: SortState): void {\n this._sortState$.pipe(take(1)).subscribe(sortState => {\n this._sortState$.next({\n ...sortState,\n [taskType]: {...sortState[taskType], ...updatedSortState},\n });\n });\n }\n\n public updateSortStates(updatedSortState: SortState): void {\n this._sortState$.pipe(take(1)).subscribe(sortStates => {\n const sortStatesCopy = {...sortStates};\n\n Object.keys(sortStates).forEach(taskType => {\n sortStatesCopy[taskType] = {...sortStatesCopy[taskType], ...updatedSortState};\n });\n\n this._sortState$.next(sortStatesCopy);\n });\n }\n\n public clearSortStates(): void {\n this._sortState$.pipe(take(1)).subscribe(sortStates => {\n const sortStatesCopy = {...sortStates};\n\n Object.keys(sortStates).forEach(taskType => {\n sortStatesCopy[taskType] = null;\n });\n\n this._sortState$.next(sortStatesCopy);\n });\n }\n\n public resetDefaultSortStates(): void {\n this._sortState$.pipe(take(1)).subscribe(sortStates => {\n const sortStatesCopy = {...sortStates};\n\n Object.keys(sortStates).forEach(taskType => {\n sortStatesCopy[taskType] = this._defaultSortState;\n });\n\n this._sortState$.next(sortStatesCopy);\n });\n }\n\n public getSortStateFromSortString(sortString?: string): SortState | null {\n const splitString = sortString && sortString.split(',');\n if (splitString?.length > 1) {\n return {\n isSorting: true,\n state: {\n name: splitString[0],\n direction: splitString[1] as Direction,\n },\n };\n }\n\n return null;\n }\n\n public setOverrideSortState(state: SortState): void {\n this._overrideSortState$.next(state);\n }\n\n public resetOverrideSortState(): void {\n this._overrideSortState$.next(null);\n }\n\n private getSortString(sort: SortState | null): string {\n return `${sort.state.name},${sort.state.direction}`;\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {ColumnConfig, ViewType} from '@valtimo/components';\nimport {BehaviorSubject, filter, Observable, switchMap, tap} from 'rxjs';\nimport {TaskService} from './task.service';\nimport {TaskListColumn} from '../models';\nimport {TaskListService} from './task-list.service';\nimport {TaskListSortService} from './task-list-sort.service';\n\n@Injectable()\nexport class TaskListColumnService {\n private readonly _DEFAULT_TASK_LIST_FIELDS: ColumnConfig[] = [\n {\n key: 'created',\n label: `task-list.fieldLabels.created`,\n viewType: ViewType.TEXT,\n sortable: true,\n },\n {\n key: 'name',\n label: `task-list.fieldLabels.name`,\n viewType: ViewType.TEXT,\n sortable: true,\n },\n {\n key: 'valtimoAssignee.fullName',\n label: `task-list.fieldLabels.valtimoAssignee.fullName`,\n viewType: ViewType.TEXT,\n },\n {\n key: 'due',\n label: `task-list.fieldLabels.due`,\n viewType: ViewType.TEXT,\n sortable: true,\n },\n {\n key: 'context',\n label: `task-list.fieldLabels.context`,\n viewType: ViewType.TEXT,\n },\n ];\n\n private readonly _DEFAULT_SPECIFIED_TASK_LIST_FIELDS: ColumnConfig[] = [\n {\n key: 'createTime',\n label: `task-list.fieldLabels.created`,\n viewType: ViewType.DATE,\n sortable: true,\n format: 'DD MMM YYYY HH:mm',\n },\n {\n key: 'name',\n label: `task-list.fieldLabels.name`,\n viewType: ViewType.TEXT,\n sortable: true,\n },\n {\n key: 'assignee',\n label: `task-list.fieldLabels.valtimoAssignee.fullName`,\n viewType: ViewType.TEXT,\n },\n {\n key: 'dueDate',\n label: `task-list.fieldLabels.due`,\n viewType: ViewType.TEXT,\n sortable: true,\n },\n ];\n\n private readonly _fields$ = new BehaviorSubject<ColumnConfig[]>(this._DEFAULT_TASK_LIST_FIELDS);\n\n private get hasCustomConfigTaskList(): boolean {\n return !!this.taskService.getConfigCustomTaskList();\n }\n\n public get fields$(): Observable<ColumnConfig[]> {\n return this._fields$.asObservable();\n }\n\n public get taskListColumnsForCase$(): Observable<TaskListColumn[]> {\n return this.taskListService.caseDefinitionName$.pipe(\n tap(caseDefinitionName => {\n if (caseDefinitionName === this.taskListService.ALL_CASES_ID) {\n this.resetTaskListFields();\n }\n }),\n filter(\n caseDefinitionName =>\n !!caseDefinitionName && caseDefinitionName !== this.taskListService.ALL_CASES_ID\n ),\n switchMap(caseDefinitionName => this.taskService.getTaskListColumns(caseDefinitionName)),\n tap(taskListColumns => {\n if (taskListColumns.length === 0) {\n this.taskListSortService.updateSortStates({\n isSorting: true,\n state: {\n name: this._DEFAULT_SPECIFIED_TASK_LIST_FIELDS[0].key,\n direction: 'DESC',\n },\n });\n this._fields$.next(this._DEFAULT_SPECIFIED_TASK_LIST_FIELDS);\n } else {\n this._fields$.next(this.mapTaskListColumnToColumnConfig(taskListColumns));\n }\n }),\n tap(() => this.taskListService.setLoadingStateForCaseDefinition(false))\n );\n }\n\n constructor(\n private readonly taskService: TaskService,\n private readonly taskListService: TaskListService,\n private readonly taskListSortService: TaskListSortService\n ) {}\n\n public resetTaskListFields(): void {\n if (this.hasCustomConfigTaskList) {\n this.setFieldsToCustomTaskListFields();\n } else {\n this.setFieldsToDefaultTaskListFields();\n }\n\n this.taskListSortService.resetDefaultSortStates();\n this.taskListService.setLoadingStateForCaseDefinition(false);\n }\n\n private setFieldsToCustomTaskListFields(): void {\n const customTaskListFields = this.taskService.getConfigCustomTaskList().fields;\n\n if (customTaskListFields) {\n this._fields$.next(\n customTaskListFields.map((column, index) => ({\n key: column.propertyName,\n label: `task-list.fieldLabels.${column.translationKey}`,\n sortable: column.sortable,\n ...(column.viewType && {viewType: column.viewType}),\n ...(column.enum && {enum: column.enum}),\n }))\n );\n }\n }\n\n private setFieldsToDefaultTaskListFields(): void {\n this._fields$.next(this._DEFAULT_TASK_LIST_FIELDS);\n }\n\n private mapTaskListColumnToColumnConfig(\n taskListColumns: Array<TaskListColumn>\n ): Array<ColumnConfig> {\n const hasDefaultSort = !!taskListColumns.find(column => column.defaultSort);\n const firstSortableColumn = taskListColumns.find(column => column.sortable);\n\n if (!hasDefaultSort && firstSortableColumn) {\n this.taskListSortService.updateSortStates({\n isSorting: true,\n state: {\n name: firstSortableColumn.key,\n direction: 'DESC',\n },\n });\n }\n\n if (!hasDefaultSort && !firstSortableColumn) {\n this.taskListSortService.clearSortStates();\n }\n\n return taskListColumns.map(column => {\n if (column.defaultSort) {\n this.taskListSortService.updateSortStates({\n isSorting: true,\n state: {\n name: column.key,\n direction: column.defaultSort,\n },\n });\n }\n\n return {\n viewType: this.getViewType(column.displayType.type),\n key: column.key,\n label: column.title || column.key,\n sortable: column.sortable,\n ...(column?.displayType?.displayTypeParameters?.enum && {\n enum: column?.displayType?.displayTypeParameters?.enum,\n }),\n ...(column?.displayType?.displayTypeParameters?.dateFormat && {\n format: column?.displayType?.displayTypeParameters?.dateFormat,\n }),\n };\n });\n }\n\n private getViewType(taskListColumnColumnDisplayType: string): string {\n switch (taskListColumnColumnDisplayType) {\n case 'arrayCount':\n return 'relatedFiles';\n case 'underscoresToSpaces':\n return 'stringReplaceUnderscore';\n default:\n return taskListColumnColumnDisplayType;\n }\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {TaskPageParams} from '../models';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {TaskListTab} from '@valtimo/config';\nimport {map, take} from 'rxjs/operators';\nimport {TaskListService} from './task-list.service';\n\n@Injectable()\nexport class TaskListPaginationService {\n private readonly _pagination$ = new BehaviorSubject<{[key in TaskListTab]: TaskPageParams}>({\n [TaskListTab.ALL]: this.getDefaultPagination(),\n [TaskListTab.MINE]: this.getDefaultPagination(),\n [TaskListTab.OPEN]: this.getDefaultPagination(),\n });\n\n private readonly _paginationForCurrentTaskType$: Observable<TaskPageParams> = combineLatest([\n this.taskListService.selectedTaskType$,\n this._pagination$,\n ]).pipe(map(([selectedTaskType, pagination]) => pagination[selectedTaskType]));\n\n public get paginationForCurrentTaskType$(): Observable<TaskPageParams> {\n return this._paginationForCurrentTaskType$;\n }\n\n public get paginationForCurrentTaskTypeForList$(): Observable<TaskPageParams> {\n return this._paginationForCurrentTaskType$.pipe(\n map(pagination => ({...pagination, page: pagination?.page + 1 || 1}))\n );\n }\n\n constructor(private readonly taskListService: TaskListService) {}\n\n public updateTaskPagination(\n taskType: TaskListTab,\n updatedPagination: Partial<TaskPageParams>\n ): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n const currentPagination = pagination[taskType];\n this._pagination$.next({\n ...pagination,\n [taskType]: {...currentPagination, ...updatedPagination},\n });\n });\n }\n\n public getLastAvailablePage(page: number, size: number, collectionSize: number): number {\n if (this.isNumber(page) && this.isNumber(size) && this.isNumber(collectionSize) && page !== 0) {\n const amountOfPages = Math.ceil(collectionSize / size);\n\n if (page + 1 > amountOfPages) {\n return amountOfPages - 1;\n }\n }\n\n return page;\n }\n\n private isNumber(value: any): boolean {\n return typeof value === 'number';\n }\n\n private getDefaultPagination(): TaskPageParams {\n return {\n page: 0,\n size: 10,\n };\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {\n ConfigService,\n SearchField,\n SearchFieldValues,\n SearchFilter,\n SearchFilterRange,\n} from '@valtimo/config';\nimport {BehaviorSubject, map, Observable, of, switchMap, tap} from 'rxjs';\nimport {TaskListService} from './task-list.service';\nimport {TaskListOtherFilters, TaskListSearchField} from '../models';\nimport {TaskService} from './task.service';\n\n@Injectable()\nexport class TaskListSearchService {\n private readonly _loadingSearchFields$ = new BehaviorSubject<boolean>(true);\n private readonly _otherFilters$ = new BehaviorSubject<TaskListOtherFilters>([]);\n\n public get loadingSearchFields$(): Observable<boolean> {\n return this._loadingSearchFields$.asObservable();\n }\n\n public get otherFilters$(): Observable<TaskListOtherFilters> {\n return this._otherFilters$.asObservable();\n }\n\n public readonly searchFields$: Observable<SearchField[]> =\n this.taskListService.caseDefinitionName$.pipe(\n tap(() => this._loadingSearchFields$.next(true)),\n switchMap(caseDefinitionName =>\n caseDefinitionName\n ? this.taskService.getTaskListSearchFields(caseDefinitionName)\n : of([] as TaskListSearchField[])\n ),\n map(searchFields =>\n searchFields.map(searchField => {\n const fieldTypeLowerCase = searchField.fieldType?.toLowerCase();\n\n return {\n ...searchField,\n dataType: searchField.dataType?.toLowerCase(),\n fieldType: fieldTypeLowerCase === 'text_contains' ? 'single' : fieldTypeLowerCase,\n matchType: searchField?.matchType?.toLowerCase(),\n } as unknown as SearchField;\n })\n ),\n tap(() => this._loadingSearchFields$.next(false))\n );\n\n constructor(\n private readonly configService: ConfigService,\n private readonly taskListService: TaskListService,\n private readonly taskService: TaskService\n ) {}\n\n public setSearchFieldValues(searchFieldValues: SearchFieldValues): void {\n this._otherFilters$.next(this.mapSearchValuesToFilters(searchFieldValues));\n }\n\n public setOtherFilters(otherFilters: TaskListOtherFilters): void {\n this._otherFilters$.next(otherFilters);\n }\n\n public resetOtherFilters(): void {\n this._otherFilters$.next([]);\n }\n\n public mapOtherFilterToSearchValues(otherFilters: TaskListOtherFilters): SearchFieldValues {\n return otherFilters.reduce((acc, curr) => {\n const filter = curr as any;\n\n if (filter.rangeFrom) {\n return {\n ...acc,\n [filter.key]: {\n start: filter.rangeFrom,\n end: filter.rangeTo,\n },\n };\n } else if (filter.multiValue) {\n return {...acc, [filter.key]: filter.values};\n } else if (Array.isArray(filter.values) && filter.values.length > 0 && !filter.multiValue) {\n return {...acc, [filter.key]: filter.values[0]};\n }\n\n return acc;\n }, {});\n }\n\n private mapSearchValuesToFilters(values: SearchFieldValues): TaskListOtherFilters {\n const filters: Array<SearchFilter | SearchFilterRange> = [];\n\n Object.keys(values).forEach(valueKey => {\n const searchValue = values[valueKey] as any;\n if (searchValue.start) {\n filters.push({key: valueKey, rangeFrom: searchValue.start, rangeTo: searchValue.end});\n } else if (Array.isArray(searchValue)) {\n filters.push({key: valueKey, values: searchValue, multiValue: true});\n } else {\n filters.push({key: valueKey, values: [searchValue], multiValue: false});\n }\n });\n\n return filters;\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {\n TaskListEncodedQueryParams,\n TaskListQueryParams,\n TaskListQueryParamsWithReload,\n} from '../models';\nimport {omit} from 'lodash';\nimport {ActivatedRoute, Router} from '@angular/router';\n\n@Injectable()\nexport class TaskListQueryParamService {\n public setTaskListParams(params: TaskListQueryParamsWithReload): void {\n const queryParams: TaskListQueryParams = omit(params, 'reload');\n const encodedQueryParams = Object.keys(queryParams).reduce(\n (acc, curr) => ({...acc, [curr]: this.objectToBase64(queryParams[curr])}),\n {}\n ) as TaskListEncodedQueryParams;\n\n this.router.navigate([this.getUrlWithoutParams()], {queryParams: encodedQueryParams});\n }\n\n constructor(\n private readonly router: Router,\n private readonly route: ActivatedRoute\n ) {}\n\n public getTaskListQueryParams(): Partial<TaskListQueryParams> {\n const queryParams = this.route.snapshot.queryParams;\n const decodedParams = Object.keys(queryParams).reduce(\n (acc, curr) => ({...acc, [curr]: this.parseBase64(queryParams[curr])}),\n {}\n ) as Partial<TaskListQueryParams>;\n\n return decodedParams;\n }\n\n private getUrlWithoutParams(): string {\n const urlTree = this.router.parseUrl(this.router.url);\n urlTree.queryParams = {};\n urlTree.fragment = null;\n return urlTree.toString();\n }\n\n private objectToBase64(jsObject: object): string {\n return btoa(JSON.stringify(jsObject));\n }\n\n private parseBase64(base64string: string): object {\n return JSON.parse(atob(base64string));\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './task.service';\nexport * from './task-list.service';\nexport * from './task-list-column.service';\nexport * from './task-list-pagination.service';\nexport * from './task-list-search.service';\nexport * from './task-list-query-param.service';\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport {DropdownItem} from '@valtimo/components';\nimport {BehaviorSubject, combineLatest, Subscription, take, tap} from 'rxjs';\nimport {TaskService} from '../../services';\nimport {NamedUser} from '@valtimo/config';\n\n@Component({\n selector: 'valtimo-assign-user-to-task',\n templateUrl: './assign-user-to-task.component.html',\n styleUrls: ['./assign-user-to-task.component.scss'],\n})\nexport class AssignUserToTaskComponent implements OnInit, OnChanges, OnDestroy {\n @Input() taskId: string;\n @Input() assigneeId: string;\n @Output() assignmentOfTaskChanged = new EventEmitter();\n\n public assignedIdOnServer$ = new BehaviorSubject<string | null>(null);\n public assignedUserFullName$ = new BehaviorSubject<string | null>(null);\n public candidateUsersForTask$ = new BehaviorSubject<NamedUser[] | undefined>(undefined);\n public disabled$ = new BehaviorSubject<boolean>(true);\n public userIdToAssign: string | null = null;\n private _subscriptions = new Subscription();\n\n constructor(private taskService: TaskService) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(\n this.taskService.getCandidateUsers(this.taskId).subscribe(candidateUsers => {\n this.candidateUsersForTask$.next(candidateUsers);\n if (this.assigneeId) {\n this.assignedIdOnServer$.next(this.assigneeId);\n this.userIdToAssign = this.assigneeId;\n this.assignedUserFullName$.next(\n this.getAssignedUserName(candidateUsers, this.assigneeId)\n );\n }\n this.enable();\n })\n );\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n this.candidateUsersForTask$.pipe(take(1)).subscribe(candidateUsers => {\n const currentUserId = changes.assigneeId?.currentValue || this.assigneeId;\n this.assignedIdOnServer$.next(currentUserId || null);\n this.userIdToAssign = currentUserId || null;\n this.assignedUserFullName$.next(\n this.getAssignedUserName(candidateUsers ?? [], currentUserId)\n );\n });\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public assignTask(userId: string): void {\n this.disable();\n combineLatest([\n this.candidateUsersForTask$,\n this.taskService.assignTask(this.taskId, {assignee: userId}),\n ])\n .pipe(\n take(1),\n tap(([candidateUsers]) => {\n this.userIdToAssign = userId;\n this.assignedIdOnServer$.next(userId);\n this.assignedUserFullName$.next(this.getAssignedUserName(candidateUsers ?? [], userId));\n this.emitChange();\n this.enable();\n })\n )\n .subscribe();\n }\n\n public unassignTask(): void {\n this.disable();\n this.taskService\n .unassignTask(this.taskId)\n .pipe(\n tap(() => {\n this.clear();\n this.emitChange();\n this.enable();\n })\n )\n .subscribe();\n }\n\n public getAssignedUserName(users: NamedUser[], userId: string): string {\n if (users && userId) {\n const findUser =\n users.find(user => user.id === userId) || users.find(user => user.userName === userId);\n return findUser ? findUser.label : userId;\n }\n return userId || '-';\n }\n\n public mapUsersForDropdown(users: NamedUser[]): DropdownItem[] {\n return (\n users &&\n users\n .map(user => ({...user, lastName: user.lastName?.split(' ').splice(-1)[0] || ''}))\n .sort((a, b) => a.lastName.localeCompare(b.lastName))\n .map(user => ({text: user.label, id: user.id}))\n );\n }\n\n private clear(): void {\n this.assignedIdOnServer$.next(null);\n this.userIdToAssign = null;\n }\n\n private emitChange(): void {\n this.assignmentOfTaskChanged.emit();\n }\n\n private enable(): void {\n this.disabled$.next(false);\n }\n\n private disable(): void {\n this.disabled$.next(true);\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n candidateUsers: candidateUsersForTask$ | async,\n disabled: disabled$ | async,\n idOnServer: assignedIdOnServer$ | async\n } as obs\"\n>\n <div class=\"container-fluid\">\n <div class=\"row mt-2 mb-2\">\n <div class=\"col-12 pl-0 d-flex flex-row align-items-center\">\n <valtimo-searchable-dropdown-select\n *ngIf=\"obs.candidateUsers; else loading\"\n [style]=\"'underlinedText'\"\n [items]=\"mapUsersForDropdown(obs.candidateUsers)\"\n [buttonText]=\"'assignTask.header' | translate\"\n [searchText]=\"'interface.typeToSearch' | translate\"\n [noResultsText]=\"'interface.noSearchResults' | translate\"\n [disabled]=\"obs.disabled\"\n [selectedText]=\"'assignTask.assignedTo' | translate\"\n [selectedTextValue]=\"assignedUserFullName$ | async\"\n [clearSelectionButtonTitle]=\"'assignTask.remove' | translate\"\n [hasSelection]=\"userIdToAssign === obs.idOnServer && obs.idOnServer !== null\"\n [width]=\"250\"\n (itemSelected)=\"assignTask($event)\"\n (clearSelection)=\"unassignTask()\"\n >\n </valtimo-searchable-dropdown-select>\n </div>\n </div>\n </div>\n</ng-container>\n\n<ng-template #loading>\n <h5>\n <b>{{ 'assignTask.fetchingUsers' | translate }}</b>\n </h5>\n</ng-template>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {PermissionRequest} from '@valtimo/access-control';\n\nenum PERMISSION_ACTION {\n assign = 'assign',\n view = 'view',\n}\n\nenum TASK_DETAIL_PERMISSION_RESOURCE {\n jsonSchemaDocument = 'com.ritense.document.domain.impl.JsonSchemaDocument',\n task = 'com.ritense.valtimo.camunda.domain.CamundaTask',\n}\n\nconst CAN_ASSIGN_TASK_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.assign,\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n};\n\nconst CAN_VIEW_TASK_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.view,\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n};\n\nconst CAN_VIEW_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.view,\n resource: TASK_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nexport {\n CAN_ASSIGN_TASK_PERMISSION,\n CAN_VIEW_TASK_PERMISSION,\n CAN_VIEW_CASE_PERMISSION,\n TASK_DETAIL_PERMISSION_RESOURCE,\n};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {HttpClient, HttpHeaders, HttpParams, HttpResponse} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {\n AssigneeRequest,\n IntermediateSaveRequest,\n IntermediateSubmission,\n SpecifiedTask,\n Task,\n TaskListColumn,\n TaskPageParams,\n TaskProcessLinkResult,\n} from '../models';\nimport {\n BaseApiService,\n ConfigService,\n CustomTaskList,\n NamedUser,\n Page,\n TaskListTab,\n} from '@valtimo/config';\nimport {InterceptorSkip} from '@valtimo/security';\n\n@Injectable({providedIn: 'root'})\nexport class TaskIntermediateSaveService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public getIntermediateSubmission(taskInstanceId: string): Observable<IntermediateSubmission> {\n return this.httpClient.get<IntermediateSubmission>(\n this.getApiUrl('/v1/form/intermediate/submission'),\n {\n params: {\n taskInstanceId,\n },\n headers: new HttpHeaders().set(InterceptorSkip, '404'),\n }\n );\n }\n\n public storeIntermediateSubmission(\n request: IntermediateSaveRequest\n ): Observable<IntermediateSubmission> {\n return this.httpClient.post<IntermediateSubmission>(\n this.getApiUrl('/v1/form/intermediate/submission'),\n request,\n {\n headers: new HttpHeaders().set(InterceptorSkip, '400'),\n }\n );\n }\n\n public clearIntermediateSubmission(taskInstanceId: string): Observable<void> {\n return this.httpClient.delete<void>(this.getApiUrl('/v1/form/intermediate/submission'), {\n params: {\n taskInstanceId,\n },\n });\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n ComponentRef,\n EventEmitter,\n Inject,\n OnDestroy, OnInit,\n Optional,\n Output,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {\n FormioComponent,\n FormioOptionsImpl,\n FormIoStateService,\n FormioSubmission,\n ValtimoFormioOptions,\n ValtimoModalService,\n} from '@valtimo/components';\nimport {\n IntermediateSaveRequest,\n IntermediateSubmission,\n Task,\n TaskProcessLinkType,\n} from '../../models';\nimport {FormFlowComponent, FormSubmissionResult, ProcessLinkService} from '@valtimo/process-link';\nimport {FormioForm} from '@formio/angular';\nimport moment from 'moment';\nimport {ToastrService} from 'ngx-toastr';\nimport {distinctUntilChanged, map, switchMap, take} from 'rxjs/operators';\nimport {TaskService} from '../../services/task.service';\nimport {BehaviorSubject, combineLatest, Observable, Subscription} from 'rxjs';\nimport {UserProviderService} from '@valtimo/security';\nimport {DocumentService} from '@valtimo/document';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ConfigService, FORM_VIEW_MODEL_TOKEN, FormViewModel} from '@valtimo/config';\nimport {TaskIntermediateSaveService} from '../../services/task-intermediate-save.service';\nimport {IconService, Modal} from 'carbon-components-angular';\nimport {RecentlyViewed16} from '@carbon/icons';\nimport {PermissionService} from '@valtimo/access-control';\nimport {CAN_ASSIGN_TASK_PERMISSION, TASK_DETAIL_PERMISSION_RESOURCE} from '../../task-permissions';\nimport {NGXLogger} from 'ngx-logger';\n\nmoment.locale(localStorage.getItem('langKey') || '');\n\n@Component({\n selector: 'valtimo-task-detail-modal',\n templateUrl: './task-detail-modal.component.html',\n styleUrls: ['./task-detail-modal.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class TaskDetailModalComponent implements OnInit, OnDestroy {\n @ViewChild('form') form: FormioComponent;\n @ViewChild('formFlow') formFlow: FormFlowComponent;\n @ViewChild('taskDetailModal') modal: Modal;\n @ViewChild('formViewModelComponent', {static: true, read: ViewContainerRef})\n public formViewModelDynamicContainer: ViewContainerRef;\n @Output() formSubmit = new EventEmitter();\n @Output() assignmentOfTaskChanged = new EventEmitter();\n\n public intermediateSaveEnabled = false;\n public currentIntermediateSave: IntermediateSubmission = null;\n\n public readonly task$ = new BehaviorSubject<Task | null>(null);\n public readonly taskInstanceId$ = new BehaviorSubject<string>(null);\n public readonly formDefinition$ = new BehaviorSubject<FormioForm>(undefined);\n public readonly formDefinitionId$ = new BehaviorSubject<string>(undefined);\n public readonly formName$ = new BehaviorSubject<string>(undefined);\n public readonly submission$ = new BehaviorSubject<any>({});\n public readonly formFlowInstanceId$ = new BehaviorSubject<string>(undefined);\n public readonly page$ = new BehaviorSubject<any>(null);\n public readonly formioOptions$ = new BehaviorSubject<ValtimoFormioOptions>(null);\n public readonly errorMessage$ = new BehaviorSubject<string>(undefined);\n public readonly isAdmin$: Observable<boolean> = this.userProviderService\n .getUserSubject()\n .pipe(map(userIdentity => userIdentity?.roles?.includes('ROLE_ADMIN')));\n public readonly formIoFormData$ = new BehaviorSubject<any>(null);\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n public readonly showConfirmationModal$ = new BehaviorSubject<boolean>(false);\n\n private readonly taskProcessLinkType$ = new BehaviorSubject<TaskProcessLinkType | null>(null);\n public readonly processLinkIsForm$ = this.taskProcessLinkType$.pipe(map(type => type === 'form'));\n public readonly processLinkIsFormViewModel$ = this.taskProcessLinkType$.pipe(\n map(type => type === 'form-view-model')\n );\n public readonly processLinkIsFormFlow$ = this.taskProcessLinkType$.pipe(\n map(type => type === 'form-flow')\n );\n public readonly canAssignUserToTask$ = new BehaviorSubject<boolean>(false)\n\n private readonly processLinkId$ = new BehaviorSubject<string>(undefined);\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly toastr: ToastrService,\n private readonly processLinkService: ProcessLinkService,\n private readonly router: Router,\n private readonly taskService: TaskService,\n private readonly userProviderService: UserProviderService,\n private readonly modalService: ValtimoModalService,\n private readonly stateService: FormIoStateService,\n private readonly documentService: DocumentService,\n private readonly translateService: TranslateService,\n @Optional() @Inject(FORM_VIEW_MODEL_TOKEN) private readonly formViewModel: FormViewModel,\n private readonly taskIntermediateSaveService: TaskIntermediateSaveService,\n private readonly configService: ConfigService,\n private readonly iconService: IconService,\n private readonly permissionService: PermissionService,\n private readonly logger: NGXLogger,\n ) {\n const options = new FormioOptionsImpl();\n options.disableAlerts = true;\n this.formioOptions$.next(options);\n\n this.intermediateSaveEnabled = this.configService.featureToggles.enableIntermediateSave;\n\n this.iconService.registerAll([RecentlyViewed16]);\n\n this._subscriptions.add(\n this.canAssignUserToTask$.subscribe((canAssign) => {\n this.logger.debug(\"Is user allowed to assign a user to Task\", canAssign);\n })\n )\n }\n\n public ngOnInit(): void {\n this._subscriptions.add(\n this.task$.subscribe(task => {\n if (task) {\n this.logger.debug(\"Checking if user allowed to assign a user to Task with id:\", task.id);\n this.permissionService.requestPermission(CAN_ASSIGN_TASK_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n identifier: task.id,\n }).subscribe( (allowed: boolean) => {\n this.canAssignUserToTask$.next(allowed)\n })\n } else {\n this.logger.debug(\"Reset is user allowed to assign a user to Task as task is null\");\n this.canAssignUserToTask$.next(false)\n }\n })\n )\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public openTaskDetails(task: Task): void {\n this.resetTaskProcessLinkType();\n this.resetFormDefinition();\n this.getTaskProcessLink(task.id);\n this.setDocumentDefinitionNameInService(task);\n const documentId = task.businessKey;\n this.stateService.setDocumentId(documentId);\n\n this.task$.next(task);\n this.taskInstanceId$.next(task.id);\n this.page$.next({\n title: task.name,\n subtitle: `${this.translateService.instant('taskDetail.taskCreated')} ${task.created}`,\n });\n\n //only load from formlink when process link failed for backwards compatibility\n if (!this.taskProcessLinkType$.getValue()) {\n this.openModal();\n }\n }\n\n public gotoProcessLinkScreen(): void {\n this.closeModal();\n this.router.navigate(['process-links']);\n }\n\n public onChange(event: any): void {\n if (event.data) {\n this.formIoFormData$.next(event.data);\n }\n }\n\n public onSubmit(submission: FormioSubmission): void {\n if (submission.data) {\n this.formIoFormData$.next(submission.data);\n }\n\n combineLatest([this.processLinkId$, this.taskProcessLinkType$, this.task$])\n .pipe(take(1))\n .subscribe(([processLinkId, taskProcessLinkType, task]) => {\n if (taskProcessLinkType === 'form') {\n if (processLinkId) {\n this.processLinkService\n .submitForm(processLinkId, submission.data, task.businessKey, task.id)\n .subscribe({\n next: (_: FormSubmissionResult) => {\n this.completeTask();\n },\n error: errors => {\n this.form.showErrors(errors);\n },\n });\n }\n } else if (taskProcessLinkType === 'form-view-model') {\n this.completeTask();\n }\n });\n }\n\n public completeTask(): void {\n this.task$.pipe(take(1)).subscribe(task => {\n this.toastr.success(\n `${task.name} ${this.translateService.instant('taskDetail.taskCompleted')}`\n );\n this.closeModal();\n this.task$.next(null);\n this.formSubmit.emit();\n });\n }\n\n private resetFormDefinition(): void {\n this.formDefinition$.next(null);\n this.loading$.next(true);\n }\n\n private getTaskProcessLink(taskId: string): void {\n this.taskService.getTaskProcessLink(taskId).subscribe({\n next: res => {\n if (res != null) {\n switch (res?.type) {\n case 'form':\n this.taskProcessLinkType$.next('form');\n this.processLinkId$.next(res.processLinkId);\n if (this.intermediateSaveEnabled) this.getCurrentProgress();\n this.setFormDefinitionAndOpenModal(res.properties.prefilledForm);\n break;\n case 'form-flow':\n this.taskProcessLinkType$.next('form-flow');\n this.formFlowInstanceId$.next(res.properties.formFlowInstanceId);\n break;\n case 'form-view-model':\n this.taskProcessLinkType$.next('form-view-model');\n this.processLinkId$.next(res.processLinkId);\n this.formDefinition$.next(res.properties.formDefinition);\n this.formName$.next(res.properties.formName);\n this.openModal();\n this.setFormViewModelComponent();\n break;\n }\n this.loading$.next(false);\n }\n },\n error: _ => {\n this.loading$.next(false);\n },\n });\n }\n\n private resetTaskProcessLinkType(): void {\n this.taskProcessLinkType$.next(null);\n this.processLinkId$.next(null);\n }\n\n private setFormDefinitionAndOpenModal(formDefinition: any): void {\n this.taskProcessLinkType$.next('form');\n this.formDefinition$.next(formDefinition);\n this.openModal();\n }\n\n private setDocumentDefinitionNameInService(task: Task): void {\n this.documentService\n .getProcessDocumentDefinitionFromProcessInstanceId(task.processInstanceId)\n .subscribe(processDocumentDefinition => {\n const documentDefinitionName = processDocumentDefinition.id.documentDefinitionId.name;\n this.modalService.setDocumentDefinitionName(documentDefinitionName);\n this.stateService.setDocumentDefinitionName(documentDefinitionName);\n });\n }\n\n private setFormViewModelComponent() {\n this.formViewModelDynamicContainer.clear();\n if (!this.formViewModel) return;\n const formViewModelComponent = this.formViewModelDynamicContainer.createComponent(\n this.formViewModel.component\n );\n formViewModelComponent.instance.form = this.formDefinition$.getValue();\n formViewModelComponent.instance.formName = this.formName$.getValue();\n formViewModelComponent.instance.taskInstanceId = this.taskInstanceId$.getValue();\n formViewModelComponent.instance.isStartForm = false;\n\n formViewModelComponent.instance.formSubmit.pipe(take(1)).subscribe(() => {\n this.completeTask();\n this.closeModal();\n });\n\n if (this.intermediateSaveEnabled) {\n this._subscriptions.add(\n formViewModelComponent.instance.submission$.subscribe(submission => {\n this.submission$.next(submission);\n }\n )\n )\n this._subscriptions.add(\n this.submission$.pipe(distinctUntilChanged()).subscribe((submission?) => {\n if (submission?.data && Object.keys(submission.data).length === 0) {\n formViewModelComponent.instance.submission = {data: {}};\n }\n })\n )\n this.getCurrentProgress(formViewModelComponent);\n }\n }\n\n private getCurrentProgress(formViewModelComponentRef?: ComponentRef<any>): void {\n this.taskInstanceId$\n .pipe(\n take(1),\n switchMap((taskInstanceId: string) =>\n this.taskIntermediateSaveService.getIntermediateSubmission(taskInstanceId)\n )\n )\n .subscribe({\n next: (intermediateSubmission: IntermediateSubmission) => {\n this.submission$.next({data: intermediateSubmission.submission});\n this.currentIntermediateSave = this.formatIntermediateSubmission(intermediateSubmission);\n\n if (formViewModelComponentRef) {\n formViewModelComponentRef.instance.submission = {\n data: intermediateSubmission.submission,\n };\n }\n },\n });\n }\n\n protected saveCurrentProgress(): void {\n const intermediateSaveRequest: IntermediateSaveRequest = {\n submission: this.submission$.getValue().data\n ? this.submission$.getValue().data\n : this.formIoFormData$.getValue(),\n taskInstanceId: this.taskInstanceId$.getValue(),\n };\n\n this.taskIntermediateSaveService\n .storeIntermediateSubmission(intermediateSaveRequest)\n .pipe(take(1))\n .subscribe({\n next: intermediateSubmission => {\n this.toastr.success(\n this.translateService.instant('formManagement.intermediateSave.success')\n );\n this.currentIntermediateSave = this.formatIntermediateSubmission(intermediateSubmission);\n },\n error: () => {\n this.toastr.error(this.translateService.instant('formManagement.intermediateSave.error'));\n },\n });\n }\n\n protected clearCurrentProgress(): void {\n this.taskInstanceId$\n .pipe(\n take(1),\n switchMap((taskInstanceId: string) =>\n this.taskIntermediateSaveService.clearIntermediateSubmission(taskInstanceId)\n )\n )\n .subscribe({\n next: () => {\n this.submission$.next({data: {}});\n this.currentIntermediateSave = null;\n },\n });\n }\n\n private formatIntermediateSubmission(\n intermediateSubmission: IntermediateSubmission\n ): IntermediateSubmission {\n intermediateSubmission.createdOn = moment(intermediateSubmission.createdOn).format(\n 'DD MMM YYYY HH:mm'\n );\n if (intermediateSubmission.editedOn) {\n intermediateSubmission.editedOn = moment(new Date(intermediateSubmission.editedOn)).format(\n 'DD MMM YYYY HH:mm'\n );\n }\n\n return intermediateSubmission;\n }\n\n private openModal(): void {\n this.modal.open = true;\n }\n\n protected closeModal(): void {\n this.modal.open = false;\n this._subscriptions.unsubscribe();\n\n if (this.formFlow) {\n this.formFlow.saveData();\n }\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<cds-modal #taskDetailModal id=\"taskDetailModal\">\n <cds-modal-header (closeSelect)=\"closeModal()\">\n <div class=\"cds-modal-header\">\n <div class=\"title-container\">\n <p class=\"cds--modal-header__heading cds--type-beta\">{{ (page$ | async)?.title }}</p>\n <p class=\"cds--modal-header__label cds--type-delta\">{{ (page$ | async)?.subtitle }}</p>\n <p class=\"cds--modal-header__label cds--type-delta\" *ngIf=\"currentIntermediateSave\">\n {{ 'formManagement.intermediateSave.lastSavedBy' | translate }}:\n {{\n currentIntermediateSave?.editedBy\n ? currentIntermediateSave?.editedBy\n : currentIntermediateSave.createdBy\n }}\n {{ 'formManagement.intermediateSave.on' | translate }}:\n {{\n currentIntermediateSave?.editedOn\n ? currentIntermediateSave?.editedOn\n : currentIntermediateSave.createdOn\n }}\n </p>\n <ng-container *ngTemplateOutlet=\"assignUserToTask\"></ng-container>\n </div>\n <div\n *ngIf=\"intermediateSaveEnabled && (formFlowInstanceId$ | async) === undefined\"\n class=\"save-buttons-margin\"\n >\n <cds-tooltip\n [caret]=\"true\"\n enterDelayMs=\"0\"\n leaveDelayMs=\"0\"\n [description]=\"'formManagement.intermediateSave.save' | translate\"\n >\n <button\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n cdsIcon=\"save\"\n (click)=\"saveCurrentProgress()\"\n ></button>\n </cds-tooltip>\n <cds-tooltip\n [caret]=\"true\"\n enterDelayMs=\"0\"\n leaveDelayMs=\"0\"\n [description]=\"'formManagement.intermediateSave.clear' | translate\"\n >\n <button\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n cdsIcon=\"recently-viewed\"\n [disabled]=\"!currentIntermediateSave\"\n (click)=\"showConfirmationModal$.next(true)\"\n ></button>\n </cds-tooltip>\n </div>\n </div>\n </cds-modal-header>\n <div\n body\n class=\"cds--modal-content pb-1\"\n *ngIf=\"{\n loading: loading$ | async,\n page: page$ | async,\n task: task$ | async,\n taskId: taskInstanceId$ | async,\n formDefinition: formDefinition$ | async,\n formDefinitionId: formDefinitionId$ | async,\n formName: formName$ | async,\n formIoFormData: formIoFormData$ | async,\n submission: submission$ | async,\n processLinkIsForm: processLinkIsForm$ | async,\n processLinkIsFormViewModel: processLinkIsFormViewModel$ | async,\n formioOptions: formioOptions$ | async,\n processLinkIsFormFlow: processLinkIsFormFlow$ | async,\n formFlowInstanceId: formFlowInstanceId$ | async,\n errorMessage: errorMessage$ | async\n } as obs\"\n >\n <div *ngIf=\"obs.formDefinition && obs.processLinkIsForm\">\n <valtimo-form-io\n #form\n [form]=\"obs.formDefinition\"\n [submission]=\"obs.submission\"\n (submit)=\"onSubmit($event)\"\n (change)=\"onChange($event)\"\n [options]=\"obs.formioOptions\"\n ></valtimo-form-io>\n </div>\n <div *ngIf=\"obs.processLinkIsFormFlow\">\n <valtimo-form-flow\n #formFlow\n [formIoFormData]=\"formIoFormData$\"\n [formFlowInstanceId]=\"obs.formFlowInstanceId\"\n (formFlowComplete)=\"completeTask()\"\n ></valtimo-form-flow>\n </div>\n <div *ngIf=\"obs.loading\">\n <div class=\"text-black mb-0 p-3 text-center\">\n {{ 'formManagement.loading' | translate }}\n </div>\n </div>\n <div\n *ngIf=\"\n obs.loading === false && !obs.formDefinition && !obs.formFlowInstanceId && !obs.errorMessage\n \"\n >\n <div class=\"bg-warning text-black mb-0 p-3 text-center\">\n {{\n (isAdmin$ | async)\n ? ('formManagement.noFormDefinitionFoundAdmin' | translate)\n : ('formManagement.noFormDefinitionFoundUser' | translate)\n }}\n </div>\n </div>\n <div *ngIf=\"obs.errorMessage\">\n <div class=\"bg-danger text-black mb-0 p-3 text-center\">\n {{ obs.errorMessage }}\n </div>\n </div>\n </div>\n <div\n footer\n *ngIf=\"{\n formDefinition: formDefinition$ | async,\n formFlowInstanceId: formFlowInstanceId$ | async\n } as obs\"\n >\n <div class=\"mb-0 p-3 text-center\" *ngIf=\"!obs.formDefinition && !obs.formFlowInstanceId\">\n <button\n class=\"btn btn-secondary btn-space\"\n type=\"button\"\n (click)=\"gotoProcessLinkScreen()\"\n id=\"process-link-button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n </div>\n <div body class=\"m-2\">\n <ng-template #formViewModelComponent></ng-template>\n </div>\n</cds-modal>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showConfirmationModal$\"\n (confirmEvent)=\"clearCurrentProgress()\"\n (cancelEvent)=\"showConfirmationModal$.next(false)\"\n cancelButtonType=\"ghost\"\n confirmButtonTextTranslationKey=\"interface.confirm\"\n titleTranslationKey=\"formManagement.intermediateSave.clear\"\n contentTranslationKey=\"formManagement.intermediateSave.clearConfirm\"\n></valtimo-confirmation-modal>\n\n<ng-template #assignUserToTask>\n <ng-container *ngIf=\"{\n task: task$ | async,\n canAssignUserToTask: canAssignUserToTask$ | async\n } as obs\">\n <valtimo-assign-user-to-task\n *ngIf=\"obs.task && obs.canAssignUserToTask && assignmentOfTaskChanged\"\n [taskId]=\"obs.task.id\"\n [assigneeId]=\"obs.task.assignee\"\n (assignmentOfTaskChanged)=\"assignmentOfTaskChanged.emit()\"\n ></valtimo-assign-user-to-task>\n </ng-container>\n</ng-template>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {CarbonListNoResultsMessage} from '@valtimo/components';\n\nconst TASK_LIST_NO_SEARCH_RESULTS_MESSAGE: CarbonListNoResultsMessage = {\n description: 'task-list.noSearchResultsDescription',\n isSearchResult: true,\n title: 'task-list.noSearchResultsTitle',\n};\n\nexport {TASK_LIST_NO_SEARCH_RESULTS_MESSAGE};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './task-list.constants';\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n HostListener,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {TaskService} from '../../services/task.service';\nimport moment from 'moment';\nimport {\n MappedSpecifiedTask,\n SpecifiedTask,\n Task,\n TaskListOtherFilters,\n TaskListParams,\n TaskPageParams,\n} from '../../models';\nimport {TaskDetailModalComponent} from '../task-detail-modal/task-detail-modal.component';\nimport {BehaviorSubject, combineLatest, Observable, of, Subject, switchMap, tap} from 'rxjs';\nimport {\n ConfigService,\n Page,\n SearchField,\n SearchFieldValues,\n SortState,\n TaskListTab,\n} from '@valtimo/config';\nimport {DocumentService} from '@valtimo/document';\nimport {distinctUntilChanged, filter, map, take} from 'rxjs/operators';\nimport {PermissionService} from '@valtimo/access-control';\nimport {\n CAN_VIEW_CASE_PERMISSION,\n CAN_VIEW_TASK_PERMISSION,\n TASK_DETAIL_PERMISSION_RESOURCE,\n} from '../../task-permissions';\nimport {\n TaskListColumnService,\n TaskListPaginationService,\n TaskListQueryParamService,\n TaskListSearchService,\n TaskListService,\n} from '../../services';\nimport {isEqual} from 'lodash';\nimport {ListItem} from 'carbon-components-angular';\nimport {TranslateService} from '@ngx-translate/core';\nimport {TaskListSortService} from '../../services/task-list-sort.service';\nimport {CarbonListNoResultsMessage, PageTitleService} from '@valtimo/components';\nimport {TASK_LIST_NO_SEARCH_RESULTS_MESSAGE} from '../../constants';\n\nmoment.locale(localStorage.getItem('langKey') || '');\n\n@Component({\n selector: 'valtimo-task-list',\n templateUrl: './task-list.component.html',\n styleUrls: ['./task-list.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n TaskListService,\n TaskListColumnService,\n TaskListPaginationService,\n TaskListSortService,\n TaskListSearchService,\n TaskListQueryParamService,\n ],\n})\nexport class TaskListComponent implements OnInit, OnDestroy {\n @ViewChild('taskDetail') private readonly _taskDetail: TaskDetailModalComponent;\n\n @HostListener('window:popstate', ['$event'])\n private onPopState() {\n setTimeout(() => {\n this.setParamsFromQueryParams();\n });\n }\n\n public readonly ALL_CASES_ID = this.taskListService.ALL_CASES_ID;\n\n public readonly selectedTaskType$ = this.taskListService.selectedTaskType$;\n\n private readonly _overrideNoResultsMessage$ =\n new BehaviorSubject<CarbonListNoResultsMessage | null>(null);\n\n public readonly noResultsMessage$: Observable<CarbonListNoResultsMessage> = combineLatest([\n this.selectedTaskType$,\n this._overrideNoResultsMessage$,\n ]).pipe(\n map(\n ([selectedTaskType, overrideNoResultsMessage]) =>\n overrideNoResultsMessage || {\n title: 'task-list.' + selectedTaskType + '.noResultsTitle',\n description: 'task-list.' + selectedTaskType + '.noResultsDescription',\n isSearchResult: false,\n }\n )\n );\n\n public readonly fields$ = this.taskListColumnService.fields$;\n public readonly loadingTasks$ = new BehaviorSubject<boolean>(true);\n public readonly visibleTabs$ = new BehaviorSubject<Array<TaskListTab> | null>(null);\n\n private _enableLoadingAnimation$ = new BehaviorSubject<boolean>(true);\n\n public readonly cachedTasks$ = new BehaviorSubject<Task[] | MappedSpecifiedTask[] | null>(null);\n\n public readonly paginationForCurrentTaskTypeForList$ =\n this.taskListPaginationService.paginationForCurrentTaskTypeForList$;\n\n public readonly sortStateForCurrentTaskType$ =\n this.taskListSortService.sortStateForCurrentTaskType$;\n\n public readonly overrideSortState$ = this.taskListSortService.overrideSortState$;\n\n private readonly _reload$ = new BehaviorSubject<boolean>(true);\n\n public readonly caseDefinitionName$ = this.taskListService.caseDefinitionName$;\n\n public readonly tasks$: Observable<Task[] | MappedSpecifiedTask[]> = combineLatest([\n this.taskListService.loadingStateForCaseDefinition$,\n this.selectedTaskType$,\n this.taskListPaginationService.paginationForCurrentTaskType$,\n this.taskListSortService.sortStringForCurrentTaskType$,\n this.caseDefinitionName$,\n this._enableLoadingAnimation$,\n this._reload$,\n this.taskListSearchService.otherFilters$,\n this.taskListSortService.overrideSortStateString$,\n ]).pipe(\n filter(([loadingStateForCaseDefinition]) => loadingStateForCaseDefinition === false),\n map(\n ([\n _,\n selectedTaskType,\n paginationForSelectedTaskType,\n sortStringForSelectedTaskType,\n caseDefinitionName,\n enableLoadingAnimation,\n reload,\n otherFilters,\n overrideSortStateString,\n ]) =>\n this.getTaskListParams(\n paginationForSelectedTaskType,\n overrideSortStateString || sortStringForSelectedTaskType,\n selectedTaskType,\n caseDefinitionName,\n enableLoadingAnimation,\n reload,\n otherFilters\n )\n ),\n distinctUntilChanged((previous, current) => isEqual(previous.params, current.params)),\n tap(params => {\n if (params.enableLoadingAnimation) this.loadingTasks$.next(true);\n this.taskListQueryParamService.setTaskListParams(params.params);\n }),\n switchMap(({params}) =>\n combineLatest([\n this.taskService.queryTasksPageV3(\n params.selectedTaskType,\n params.params,\n params.caseDefinitionName,\n params.otherFilters\n ),\n of(!!params.caseDefinitionName),\n ])\n ),\n switchMap(([tasksResult, isSpecified]) =>\n this.getTaskListPermissionsRequest(tasksResult, isSpecified)\n ),\n map(([isSpecified, taskResult, canViewTaskPermissions, canViewCasePermissions]) => {\n this.updateTaskListPaginationAfterResponse(Number(taskResult.totalElements));\n\n return this.mapTasksForList(\n isSpecified,\n taskResult,\n canViewTaskPermissions,\n canViewCasePermissions\n );\n }),\n tap(tasks => {\n this.cachedTasks$.next(tasks);\n this.loadingTasks$.next(false);\n this.disableLoadingAnimation();\n\n this.taskListSearchService.otherFilters$.pipe(take(1)).subscribe(otherFilters => {\n this._overrideNoResultsMessage$.next(\n otherFilters?.length > 0 ? TASK_LIST_NO_SEARCH_RESULTS_MESSAGE : null\n );\n });\n })\n );\n\n public readonly loadingCaseListItems$ = new BehaviorSubject<boolean>(true);\n private readonly _selectedCaseDefinitionId$ = new BehaviorSubject<string>(this.ALL_CASES_ID);\n\n public readonly caseListItems$: Observable<ListItem[]> = combineLatest([\n this.documentService.getAllDefinitions(),\n this._selectedCaseDefinitionId$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([documentDefinitionRes, selectedCaseDefinitionId]) => [\n {\n content: this.translateService.instant('task-list.allCases'),\n id: this.ALL_CASES_ID,\n selected: selectedCaseDefinitionId === this.ALL_CASES_ID,\n },\n ...documentDefinitionRes.content.map(documentDefinition => ({\n id: documentDefinition.id.name,\n content: documentDefinition?.schema?.title,\n selected: documentDefinition.id.name === selectedCaseDefinitionId,\n })),\n ]),\n tap(() => this.loadingCaseListItems$.next(false))\n );\n\n public readonly taskListColumnsForCase$ = this.taskListColumnService.taskListColumnsForCase$;\n\n public readonly loadingSearchFields$ = this.taskListSearchService.loadingSearchFields$;\n public readonly searchFields$: Observable<SearchField[]> =\n this.taskListSearchService.searchFields$;\n\n private readonly _DEFAULT_TASK_LIST_TABS: TaskListTab[] = [\n TaskListTab.MINE,\n TaskListTab.OPEN,\n TaskListTab.ALL,\n ];\n\n public readonly setSearchFieldValuesSubject$ = new BehaviorSubject<SearchFieldValues>({});\n public readonly clearSearchFieldValuesSubject$ = new Subject<null>();\n\n constructor(\n private readonly configService: ConfigService,\n private readonly documentService: DocumentService,\n private readonly permissionService: PermissionService,\n private readonly router: Router,\n private readonly taskService: TaskService,\n private readonly taskListService: TaskListService,\n private readonly translateService: TranslateService,\n private readonly taskListColumnService: TaskListColumnService,\n private readonly taskListPaginationService: TaskListPaginationService,\n private readonly taskListSortService: TaskListSortService,\n private readonly taskListSearchService: TaskListSearchService,\n private readonly taskListQueryParamService: TaskListQueryParamService,\n private readonly pageTitleService: PageTitleService\n ) {}\n\n public ngOnInit(): void {\n this.taskListColumnService.resetTaskListFields();\n this.setVisibleTabs();\n this.pageTitleService.disableReset();\n this.setParamsFromQueryParams();\n }\n\n public ngOnDestroy(): void {\n this.pageTitleService.enableReset();\n }\n\n public paginationClicked(page: number, type: TaskListTab | string): void {\n this.taskListPaginationService.updateTaskPagination(type as TaskListTab, {page: page - 1});\n }\n\n public paginationSet(newSize: number): void {\n combineLatest([\n this.taskListPaginationService.paginationForCurrentTaskType$,\n this.taskListService.selectedTaskType$,\n ])\n .pipe(take(1))\n .subscribe(([pagination, selectedTaskType]) => {\n this.taskListPaginationService.updateTaskPagination(selectedTaskType, {\n size: Number(newSize),\n page: this.taskListPaginationService.getLastAvailablePage(\n pagination.page,\n Number(newSize),\n pagination.collectionSize\n ),\n });\n });\n }\n\n public tabChange(tab: TaskListTab | string): void {\n this.taskListService.selectedTaskType$.pipe(take(1)).subscribe(selectedTaskType => {\n if (selectedTaskType !== tab) {\n this.enableLoadingAnimation();\n this.taskListService.setSelectedTaskType(tab as TaskListTab);\n this.taskListPaginationService.updateTaskPagination(tab as TaskListTab, {page: 0});\n }\n });\n }\n\n public openRelatedCase(event: MouseEvent, index: number): void {\n event.stopPropagation();\n\n this.cachedTasks$.pipe(take(1)).subscribe(cachedTasks => {\n const currentTask = cachedTasks && cachedTasks[index];\n\n if (currentTask && !currentTask.caseLocked) {\n this.documentService\n .getDocument(currentTask.businessKey)\n .pipe(take(1))\n .subscribe(document => {\n this.router.navigate([\n `/dossiers/${document.definitionId?.name}/document/${currentTask.businessKey}`,\n ]);\n });\n }\n });\n }\n\n public rowOpenTaskClick(task): void | boolean {\n return !task.endTime && !task.locked ? this._taskDetail.openTaskDetails(task) : false;\n }\n\n public sortChanged(sortState: SortState): void {\n this.taskListSortService.setOverrideSortState(sortState);\n this.taskListSortService.updateSortState(this.taskListService.selectedTaskType, sortState);\n }\n\n public setCaseDefinition(definition: {item: {id: string}}): void {\n if (definition.item.id) {\n this.taskListSortService.resetOverrideSortState();\n this.loadingTasks$.next(true);\n this.taskListService.setCaseDefinitionName(definition.item.id);\n }\n }\n\n public reload(): void {\n this.enableLoadingAnimation();\n this._reload$.next(!this._reload$.getValue());\n }\n\n public search(searchFieldValues: SearchFieldValues): void {\n if (!searchFieldValues) return;\n\n this.taskListSearchService.setSearchFieldValues(searchFieldValues);\n }\n\n private updateTaskListPaginationAfterResponse(newCollectionSize: number): void {\n this.taskListPaginationService.paginationForCurrentTaskType$\n .pipe(take(1))\n .subscribe(currentPagination => {\n this.taskListPaginationService.updateTaskPagination(this.taskListService.selectedTaskType, {\n collectionSize: Number(newCollectionSize),\n page: this.taskListPaginationService.getLastAvailablePage(\n currentPagination.page,\n currentPagination.size,\n newCollectionSize\n ),\n });\n });\n }\n\n private setVisibleTabs(): void {\n const visibleTabs = this.configService.config?.visibleTaskListTabs;\n\n if (visibleTabs) {\n this.visibleTabs$.next(visibleTabs);\n this.taskListService.setSelectedTaskType(visibleTabs[0]);\n } else {\n this.visibleTabs$.next(this._DEFAULT_TASK_LIST_TABS);\n this.taskListService.setSelectedTaskType(this._DEFAULT_TASK_LIST_TABS[0]);\n }\n }\n\n private disableLoadingAnimation(): void {\n this._enableLoadingAnimation$.next(false);\n }\n\n private enableLoadingAnimation(): void {\n this._enableLoadingAnimation$.next(true);\n }\n\n private getTaskListParams(\n paginationForSelectedTaskType: TaskPageParams,\n sortStringForSelectedTaskType: string,\n selectedTaskType: TaskListTab,\n caseDefinitionName: string,\n enableLoadingAnimation: boolean,\n reload: boolean,\n otherFilters?: TaskListOtherFilters\n ): TaskListParams {\n const params = {\n ...paginationForSelectedTaskType,\n ...(sortStringForSelectedTaskType && {sort: sortStringForSelectedTaskType}),\n };\n\n delete params.collectionSize;\n\n return {\n params: {\n reload,\n selectedTaskType,\n params,\n ...(caseDefinitionName && caseDefinitionName !== this.ALL_CASES_ID && {caseDefinitionName}),\n ...(otherFilters && {otherFilters}),\n },\n enableLoadingAnimation,\n };\n }\n\n private getTaskListPermissionsRequest(\n tasksResult: Page<Task> | Page<SpecifiedTask>,\n isSpecified: boolean\n ) {\n const taskResults = tasksResult.content;\n const hasTaskResults = Array.isArray(taskResults) && taskResults.length > 0;\n\n return combineLatest([\n of(isSpecified),\n of(tasksResult),\n hasTaskResults\n ? combineLatest(\n taskResults.map(task =>\n this.permissionService.requestPermission(CAN_VIEW_TASK_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n identifier: !isSpecified ? (task as Task).id : (task as SpecifiedTask).id,\n })\n )\n )\n : of(null),\n hasTaskResults\n ? combineLatest(\n taskResults.map(task =>\n this.permissionService.requestPermission(CAN_VIEW_CASE_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: task.businessKey,\n })\n )\n )\n : of(null),\n ]);\n }\n\n private mapTasksForList(\n isSpecified: boolean,\n tasks: Page<Task> | Page<SpecifiedTask>,\n canViewTaskPermissions: boolean[] | null,\n canViewCasePermissions: boolean[] | null\n ): Task[] | MappedSpecifiedTask[] {\n const MOMENT_FORMAT = 'DD MMM YYYY HH:mm';\n\n if (isSpecified) {\n return (tasks as Page<SpecifiedTask>).content.map((specifiedTask, specifiedTaskIndex) =>\n specifiedTask.items.reduce(\n (acc, curr) =>\n ({\n id: specifiedTask.id,\n businessKey: specifiedTask.businessKey,\n processInstanceId: specifiedTask.processInstanceId,\n name: specifiedTask.name,\n ...(moment(specifiedTask.created).isValid() && {\n created: moment(specifiedTask.created).format(MOMENT_FORMAT),\n }),\n ...(canViewTaskPermissions && {locked: !canViewTaskPermissions[specifiedTaskIndex]}),\n ...(canViewCasePermissions && {\n caseLocked: !canViewCasePermissions[specifiedTaskIndex],\n }),\n ...acc,\n [curr.key]: curr.value,\n }) as MappedSpecifiedTask,\n {}\n )\n ) as MappedSpecifiedTask[];\n }\n\n return (tasks as Page<Task>)?.content?.map((task, taskIndex) => {\n const createdDate = moment(task.created);\n const dueDate = moment(task.due);\n const taskCopy = {...task};\n\n if (task.due && dueDate.isValid()) taskCopy.due = dueDate.format(MOMENT_FORMAT);\n if (createdDate.isValid()) taskCopy.created = createdDate.format(MOMENT_FORMAT);\n if (canViewTaskPermissions) taskCopy.locked = !canViewTaskPermissions[taskIndex];\n if (canViewCasePermissions) taskCopy.caseLocked = !canViewCasePermissions[taskIndex];\n\n return taskCopy;\n }) as Task[];\n }\n\n private setParamsFromQueryParams(): void {\n const decodedParams = this.taskListQueryParamService.getTaskListQueryParams();\n\n if (decodedParams.caseDefinitionName) {\n this.taskListService.setCaseDefinitionName(decodedParams.caseDefinitionName);\n this._selectedCaseDefinitionId$.next(decodedParams.caseDefinitionName);\n }\n\n if (decodedParams.otherFilters?.length > 0) {\n const searchFieldValues = this.taskListSearchService.mapOtherFilterToSearchValues(\n decodedParams.otherFilters\n );\n this.setSearchFieldValuesSubject$.next(searchFieldValues);\n } else {\n this.clearSearchFieldValuesSubject$.next(null);\n }\n\n if (decodedParams.selectedTaskType)\n this.taskListService.setSelectedTaskType(decodedParams.selectedTaskType);\n\n if (decodedParams.params?.sort) {\n const stateFromSortString = this.taskListSortService.getSortStateFromSortString(\n decodedParams.params.sort\n );\n if (stateFromSortString) this.taskListSortService.setOverrideSortState(stateFromSortString);\n }\n\n if (decodedParams.params)\n this.taskListPaginationService.updateTaskPagination(\n this.taskListService.selectedTaskType,\n decodedParams.params\n );\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n loading: loadingTasks$ | async,\n selectedTaskType: selectedTaskType$ | async,\n tasks: tasks$ | async,\n fields: fields$ | async,\n visibleTabs: visibleTabs$ | async,\n pagination: paginationForCurrentTaskTypeForList$ | async,\n taskListColumnsForCase: taskListColumnsForCase$ | async,\n sortState: sortStateForCurrentTaskType$ | async,\n overrideSortState: overrideSortState$ | async,\n searchFields: searchFields$ | async,\n loadingSearchFields: loadingSearchFields$ | async,\n caseDefinitionName: caseDefinitionName$ | async,\n noResultsMessage: noResultsMessage$ | async\n } as obs\"\n class=\"main-content\"\n>\n <div class=\"container-fluid\">\n @if (obs.caseDefinitionName && obs.caseDefinitionName !== ALL_CASES_ID) {\n <ng-container\n *ngTemplateOutlet=\"\n searchFields;\n context: {\n obs: obs\n }\n \"\n ></ng-container>\n }\n\n <ng-container\n *ngTemplateOutlet=\"\n tasksList;\n context: {\n obs: obs\n }\n \"\n ></ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n tasksListLoading;\n context: {\n obs: obs\n }\n \"\n ></ng-container>\n\n <valtimo-task-detail-modal\n #taskDetail\n (formSubmit)=\"reload()\"\n (assignmentOfTaskChanged)=\"reload()\"\n ></valtimo-task-detail-modal>\n </div>\n</div>\n\n<ng-template #configuredTabs let-selectedTaskType=\"selectedTaskType\" let-visibleTabs=\"visibleTabs\">\n <cds-tabs *ngIf=\"visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n *ngFor=\"let tab of visibleTabs\"\n [attr.data-testid]=\"'task-list-tab-' + tab\"\n [heading]=\"'task-list.' + tab + '.title' | translate\"\n [active]=\"selectedTaskType === tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n</ng-template>\n\n<ng-template #caseLink let-data=\"data\">\n <ng-container *ngIf=\"cachedTasks$ | async as cachedTasks\">\n <div *ngIf=\"cachedTasks[data.index].caseLocked\">\n <a\n class=\"float-left cds--link--disabled\"\n cdsLink\n href=\"javascript:void(0)\"\n ngbTooltip=\"{{ 'task-list.caseLocked' | translate }}\"\n (click)=\"$event.stopPropagation()\"\n >\n {{ 'task-list.goToCase' | translate }}\n </a>\n </div>\n <div *ngIf=\"!cachedTasks[data.index].caseLocked\">\n <a\n class=\"float-left cds--link\"\n cdsLink\n href=\"javascript:void(0)\"\n (click)=\"openRelatedCase($event, data.index)\"\n >\n {{ 'task-list.goToCase' | translate }}\n </a>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #tasksList let-obs=\"obs\">\n <valtimo-carbon-list\n *ngIf=\"!obs.loading\"\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [items]=\"obs.tasks\"\n [lastColumnTemplate]=\"caseLink\"\n [pagination]=\"obs.pagination\"\n paginationIdentifier=\"taskList\"\n lockedTooltipTranslationKey=\"task-list.rowLocked\"\n [sortState]=\"obs.overrideSortState || obs.sortState\"\n (paginationClicked)=\"paginationClicked($event, obs.selectedTaskType)\"\n (paginationSet)=\"paginationSet($event)\"\n (rowClicked)=\"rowOpenTaskClick($event)\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <div tabs>\n <ng-container *ngIf=\"obs.visibleTabs\">\n <ng-container\n *ngTemplateOutlet=\"\n configuredTabs;\n context: {selectedTaskType: obs.selectedTaskType, visibleTabs: obs.visibleTabs}\n \"\n ></ng-container>\n </ng-container>\n </div>\n\n <valtimo-no-results\n [description]=\"obs.noResultsMessage.description | translate\"\n [title]=\"obs.noResultsMessage.title | translate\"\n >\n </valtimo-no-results>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #tasksListLoading let-obs=\"obs\">\n <valtimo-carbon-list *ngIf=\"obs.loading\" [loading]=\"true\">\n <div tabs>\n <cds-tabs *ngIf=\"!obs.visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n [heading]=\"'task-list.mine.title' | translate\"\n [active]=\"obs.selectedTaskType === 'mine'\"\n >\n </cds-tab>\n\n <cds-tab\n [heading]=\"'task-list.open.title' | translate\"\n [active]=\"obs.selectedTaskType === 'open'\"\n >\n </cds-tab>\n\n <cds-tab\n [heading]=\"'task-list.all.title' | translate\"\n [active]=\"obs.selectedTaskType === 'all'\"\n >\n </cds-tab>\n </cds-tabs>\n\n <cds-tabs *ngIf=\"obs.visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n *ngFor=\"let tab of obs.visibleTabs\"\n [heading]=\"'task-list.' + tab + '.title' | translate\"\n [active]=\"obs.selectedTaskType === tab\"\n ></cds-tab>\n </cds-tabs>\n </div>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #searchFields let-obs=\"obs\">\n <div class=\"mb-3\">\n <valtimo-search-fields\n [searchFields]=\"obs.searchFields\"\n [inputDisabled]=\"obs.loadingSearchFields\"\n [documentDefinitionName]=\"obs.caseDefinitionName\"\n [setValuesSubject$]=\"setSearchFieldValuesSubject$\"\n [clearValuesSubject$]=\"clearSearchFieldValuesSubject$\"\n (doSearch)=\"search($event)\"\n >\n </valtimo-search-fields>\n </div>\n</ng-template>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <cds-dropdown\n class=\"case-definition-selection\"\n *ngIf=\"{\n loadingCaseListItems: loadingCaseListItems$ | async,\n caseListItems: caseListItems$ | async\n } as obs\"\n [attr.data-testid]=\"'task-list-case-dropdown'\"\n [disabled]=\"obs.loadingCaseListItems || (obs.caseListItems || []).length === 1\"\n [skeleton]=\"obs.loadingCaseListItems\"\n (selected)=\"setCaseDefinition($event)\"\n >\n <cds-dropdown-list [items]=\"obs.caseListItems || []\"></cds-dropdown-list>\n </cds-dropdown>\n </ng-template>\n</ng-container>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {TaskListComponent} from './components/task-list/task-list.component';\nimport {ROLE_USER} from '@valtimo/config';\n\nconst routes: Routes = [\n {\n path: 'tasks',\n component: TaskListComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Tasks', roles: [ROLE_USER]},\n },\n];\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class TaskRoutingModule {}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {HttpClient} from '@angular/common/http';\nimport {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\nimport {NgbModule} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslateLoader, TranslateModule} from '@ngx-translate/core';\nimport {\n CamundaFormModule,\n CarbonListModule,\n ConfirmationModalModule,\n FormIoModule,\n PageHeaderModule,\n RenderInPageHeaderDirectiveModule,\n SearchableDropdownSelectModule,\n SearchFieldsModule,\n SpinnerModule,\n WidgetModule,\n} from '@valtimo/components';\nimport {HttpLoaderFactory} from '@valtimo/config';\nimport {ProcessLinkModule} from '@valtimo/process-link';\nimport {\n ButtonModule,\n ContentSwitcherModule,\n DropdownModule,\n IconModule,\n LinkModule,\n ModalModule,\n TabsModule,\n TooltipModule,\n} from 'carbon-components-angular';\nimport {ToastrModule} from 'ngx-toastr';\nimport {AssignUserToTaskComponent} from './components/assign-user-to-task/assign-user-to-task.component';\nimport {TaskDetailModalComponent} from './components/task-detail-modal/task-detail-modal.component';\nimport {TaskListComponent} from './components/task-list/task-list.component';\nimport {TaskRoutingModule} from './task-routing.module';\n\n@NgModule({\n declarations: [TaskListComponent, TaskDetailModalComponent, AssignUserToTaskComponent],\n imports: [\n CommonModule,\n TaskRoutingModule,\n CarbonListModule,\n PageHeaderModule,\n WidgetModule,\n SpinnerModule,\n SearchableDropdownSelectModule,\n CamundaFormModule,\n BrowserAnimationsModule,\n FormsModule,\n ToastrModule.forRoot({\n positionClass: 'toast-bottom-full-width',\n preventDuplicates: true,\n }),\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n NgbModule,\n FormIoModule,\n ModalModule,\n LinkModule,\n ProcessLinkModule,\n TabsModule,\n ContentSwitcherModule,\n RenderInPageHeaderDirectiveModule,\n DropdownModule,\n ButtonModule,\n IconModule,\n TooltipModule,\n ConfirmationModalModule,\n SearchFieldsModule,\n ],\n exports: [TaskListComponent, TaskDetailModalComponent, AssignUserToTaskComponent],\n})\nexport class TaskModule {}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of task\n */\n\nexport * from './lib/models';\nexport * from './lib/services/task.service';\nexport * from './lib/task.module';\nexport * from './lib/components/task-detail-modal/task-detail-modal.component';\nexport * from './lib/components/task-list/task-list.component';\nexport * from './lib/components/assign-user-to-task/assign-user-to-task.component';\nexport * from './lib/task-permissions';\nexport * from './lib/constants';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.TaskService","i2.TaskListService","i3.TaskListSortService","i1.TaskListService","map","i1","i3.TaskService","take","i2","i3","i4","switchMap","i9.TaskIntermediateSaveService","i10","i14","i15.AssignUserToTaskComponent","filter","i5.TaskService","i6.TaskListService","i7","i6.TaskListColumnService","i6.TaskListPaginationService","i8.TaskListSortService","i6.TaskListSearchService","i6.TaskListQueryParamService","i9","i11","i12","i13.TaskDetailModalComponent"],"mappings":"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"}
|