nuxeo-development-framework 5.7.9 → 5.8.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.
- package/bundles/nuxeo-development-framework.umd.js +667 -12
- package/bundles/nuxeo-development-framework.umd.js.map +1 -1
- package/esm2015/lib/components/ndf-uploader/components/bottom-sheet/ndf-uploader-bottom-sheet.component.js +123 -0
- package/esm2015/lib/components/ndf-uploader/components/index.js +2 -0
- package/esm2015/lib/components/ndf-uploader/config/index.js +2 -0
- package/esm2015/lib/components/ndf-uploader/config/uploader.config.js +10 -0
- package/esm2015/lib/components/ndf-uploader/constant/file-content.js +6 -0
- package/esm2015/lib/components/ndf-uploader/constant/index.js +2 -0
- package/esm2015/lib/components/ndf-uploader/helpers/index.js +2 -0
- package/esm2015/lib/components/ndf-uploader/helpers/uploader.helper.js +100 -0
- package/esm2015/lib/components/ndf-uploader/index.js +6 -0
- package/esm2015/lib/components/ndf-uploader/models/batch.model.js +2 -0
- package/esm2015/lib/components/ndf-uploader/models/index.js +4 -0
- package/esm2015/lib/components/ndf-uploader/models/ndf-file.model.js +20 -0
- package/esm2015/lib/components/ndf-uploader/models/provider.model.js +2 -0
- package/esm2015/lib/components/ndf-uploader/providers/index.js +3 -0
- package/esm2015/lib/components/ndf-uploader/providers/nuxeo-provider.service.js +32 -0
- package/esm2015/lib/components/ndf-uploader/providers/s3-provider.service.js +26 -0
- package/esm2015/lib/components/ndf-uploader/uploader-bottom-sheet.service.js +72 -0
- package/esm2015/lib/components/ndf-uploader/uploader.module.js +53 -0
- package/esm2015/lib/components/ndf-uploader/uploader.service.js +241 -0
- package/esm2015/lib/components/reports/ndf-reports/containers/ndf-report/ndf-report.component.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/utilities/reports-table.mapper.js +2 -3
- package/esm2015/lib/components/tables/dynamic-table/dynamic-table/dynamic-table.component.js +6 -6
- package/esm2015/public-api.js +2 -1
- package/fesm2015/nuxeo-development-framework.js +626 -11
- package/fesm2015/nuxeo-development-framework.js.map +1 -1
- package/lib/components/ndf-uploader/components/bottom-sheet/ndf-uploader-bottom-sheet.component.d.ts +27 -0
- package/lib/components/ndf-uploader/components/index.d.ts +1 -0
- package/lib/components/ndf-uploader/config/index.d.ts +1 -0
- package/lib/components/ndf-uploader/config/uploader.config.d.ts +9 -0
- package/lib/components/ndf-uploader/constant/file-content.d.ts +5 -0
- package/lib/components/ndf-uploader/constant/index.d.ts +1 -0
- package/lib/components/ndf-uploader/helpers/index.d.ts +1 -0
- package/lib/components/ndf-uploader/helpers/uploader.helper.d.ts +10 -0
- package/lib/components/ndf-uploader/index.d.ts +5 -0
- package/lib/components/ndf-uploader/models/batch.model.d.ts +28 -0
- package/lib/components/ndf-uploader/models/index.d.ts +3 -0
- package/lib/components/ndf-uploader/models/ndf-file.model.d.ts +46 -0
- package/lib/components/ndf-uploader/models/provider.model.d.ts +7 -0
- package/lib/components/ndf-uploader/providers/index.d.ts +2 -0
- package/lib/components/ndf-uploader/providers/nuxeo-provider.service.d.ts +13 -0
- package/lib/components/ndf-uploader/providers/s3-provider.service.d.ts +13 -0
- package/lib/components/ndf-uploader/uploader-bottom-sheet.service.d.ts +30 -0
- package/lib/components/ndf-uploader/uploader.module.d.ts +16 -0
- package/lib/components/ndf-uploader/uploader.service.d.ts +25 -0
- package/lib/components/tables/dynamic-table/dynamic-table/dynamic-table.component.d.ts +1 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
4
|
+
import { MatBottomSheetModule } from '@angular/material/bottom-sheet';
|
|
5
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
6
|
+
import { MatExpansionModule } from '@angular/material/expansion';
|
|
7
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
8
|
+
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
9
|
+
import { MatDialogModule } from '@angular/material/dialog';
|
|
10
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
11
|
+
import { NdfUploaderBottomSheetComponent } from './components/bottom-sheet/ndf-uploader-bottom-sheet.component';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
export class UploaderModule {
|
|
14
|
+
}
|
|
15
|
+
UploaderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: UploaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
16
|
+
UploaderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: UploaderModule, declarations: [NdfUploaderBottomSheetComponent], imports: [CommonModule,
|
|
17
|
+
TranslateModule,
|
|
18
|
+
MatDialogModule,
|
|
19
|
+
MatIconModule,
|
|
20
|
+
MatButtonModule,
|
|
21
|
+
MatBottomSheetModule,
|
|
22
|
+
MatExpansionModule,
|
|
23
|
+
MatTooltipModule,
|
|
24
|
+
MatProgressSpinnerModule] });
|
|
25
|
+
UploaderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: UploaderModule, imports: [[
|
|
26
|
+
CommonModule,
|
|
27
|
+
TranslateModule,
|
|
28
|
+
MatDialogModule,
|
|
29
|
+
MatIconModule,
|
|
30
|
+
MatButtonModule,
|
|
31
|
+
MatBottomSheetModule,
|
|
32
|
+
MatExpansionModule,
|
|
33
|
+
MatTooltipModule,
|
|
34
|
+
MatProgressSpinnerModule
|
|
35
|
+
]] });
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: UploaderModule, decorators: [{
|
|
37
|
+
type: NgModule,
|
|
38
|
+
args: [{
|
|
39
|
+
imports: [
|
|
40
|
+
CommonModule,
|
|
41
|
+
TranslateModule,
|
|
42
|
+
MatDialogModule,
|
|
43
|
+
MatIconModule,
|
|
44
|
+
MatButtonModule,
|
|
45
|
+
MatBottomSheetModule,
|
|
46
|
+
MatExpansionModule,
|
|
47
|
+
MatTooltipModule,
|
|
48
|
+
MatProgressSpinnerModule
|
|
49
|
+
],
|
|
50
|
+
declarations: [NdfUploaderBottomSheetComponent]
|
|
51
|
+
}]
|
|
52
|
+
}] });
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9uZGYtdXBsb2FkZXIvdXBsb2FkZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQzs7QUFnQmhILE1BQU0sT0FBTyxjQUFjOzs0R0FBZCxjQUFjOzZHQUFkLGNBQWMsaUJBRlgsK0JBQStCLGFBVjdDLFlBQVk7UUFDWixlQUFlO1FBQ2YsZUFBZTtRQUNmLGFBQWE7UUFDYixlQUFlO1FBQ2Ysb0JBQW9CO1FBQ3BCLGtCQUFrQjtRQUNsQixnQkFBZ0I7UUFDaEIsd0JBQXdCOzZHQUliLGNBQWMsWUFiakI7WUFDUixZQUFZO1lBQ1osZUFBZTtZQUNmLGVBQWU7WUFDZixhQUFhO1lBQ2IsZUFBZTtZQUNmLG9CQUFvQjtZQUNwQixrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLHdCQUF3QjtTQUN4Qjs0RkFHVyxjQUFjO2tCQWQxQixRQUFRO21CQUFDO29CQUNULE9BQU8sRUFBRTt3QkFDUixZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGVBQWU7d0JBQ2Ysb0JBQW9CO3dCQUNwQixrQkFBa0I7d0JBQ2xCLGdCQUFnQjt3QkFDaEIsd0JBQXdCO3FCQUN4QjtvQkFDRCxZQUFZLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztpQkFDL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdEJvdHRvbVNoZWV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYm90dG9tLXNoZWV0JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IE1hdEV4cGFuc2lvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbic7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XHJcbmltcG9ydCB7IE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE5kZlVwbG9hZGVyQm90dG9tU2hlZXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYm90dG9tLXNoZWV0L25kZi11cGxvYWRlci1ib3R0b20tc2hlZXQuY29tcG9uZW50JztcclxuXHJcbkBOZ01vZHVsZSh7XHJcblx0aW1wb3J0czogW1xyXG5cdFx0Q29tbW9uTW9kdWxlLFxyXG5cdFx0VHJhbnNsYXRlTW9kdWxlLFxyXG5cdFx0TWF0RGlhbG9nTW9kdWxlLFxyXG5cdFx0TWF0SWNvbk1vZHVsZSxcclxuXHRcdE1hdEJ1dHRvbk1vZHVsZSxcclxuXHRcdE1hdEJvdHRvbVNoZWV0TW9kdWxlLFxyXG5cdFx0TWF0RXhwYW5zaW9uTW9kdWxlLFxyXG5cdFx0TWF0VG9vbHRpcE1vZHVsZSxcclxuXHRcdE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZVxyXG5cdF0sXHJcblx0ZGVjbGFyYXRpb25zOiBbTmRmVXBsb2FkZXJCb3R0b21TaGVldENvbXBvbmVudF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFVwbG9hZGVyTW9kdWxlIHt9XHJcbiJdfQ==
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
var _UploaderService_instances, _UploaderService_cancelRequests, _UploaderService_filesInfo, _UploaderService_batchFiles, _UploaderService_startExecution, _UploaderService_generateBatch, _UploaderService_uploadChunk, _UploaderService_onUploadDone, _UploaderService_onUploadError, _UploaderService_complete, _UploaderService_getProvider, _UploaderService_updateFiles, _UploaderService_prepareEvent, _UploaderService_getFile, _UploaderService_getFiles, _UploaderService_createBatch, _UploaderService_deleteBatch, _UploaderService_deleteFile, _UploaderService_getFileInfo;
|
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
|
+
import { Injectable } from '@angular/core';
|
|
4
|
+
import { FileEventType, FileStatus, UploadProvider } from './models';
|
|
5
|
+
import { UPLOADER_CONFIG } from './config';
|
|
6
|
+
import { catchError, finalize, mergeMap, switchMap, tap, map, first, distinctUntilChanged, debounceTime, takeUntil } from 'rxjs/operators';
|
|
7
|
+
import { BehaviorSubject, EMPTY, from, Subject } from 'rxjs';
|
|
8
|
+
import { UploaderHelper } from './helpers';
|
|
9
|
+
import _flatMap from 'lodash/flatMap';
|
|
10
|
+
import { BaseService } from '../../shared';
|
|
11
|
+
import { EnvManager } from '../../core/env';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
import * as i1 from "./providers";
|
|
14
|
+
import * as i2 from "../display-suitable-icon/display-suitable-icon/icon.service";
|
|
15
|
+
export function nuxeoBaseUrl() {
|
|
16
|
+
return `${EnvManager.environment.nuxeo}/api/v1/`;
|
|
17
|
+
}
|
|
18
|
+
export class UploaderService extends BaseService {
|
|
19
|
+
constructor(injector, nuxeoProvider, s3Provider, iconService) {
|
|
20
|
+
super(injector);
|
|
21
|
+
this.nuxeoProvider = nuxeoProvider;
|
|
22
|
+
this.s3Provider = s3Provider;
|
|
23
|
+
this.iconService = iconService;
|
|
24
|
+
_UploaderService_instances.add(this);
|
|
25
|
+
_UploaderService_cancelRequests.set(this, new Subject());
|
|
26
|
+
_UploaderService_filesInfo.set(this, new Subject());
|
|
27
|
+
_UploaderService_batchFiles.set(this, new BehaviorSubject([]));
|
|
28
|
+
this.events$ = __classPrivateFieldGet(this, _UploaderService_filesInfo, "f").asObservable();
|
|
29
|
+
UploaderHelper.prepareConfig();
|
|
30
|
+
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_startExecution).call(this);
|
|
31
|
+
}
|
|
32
|
+
upload(filesOrOptions) {
|
|
33
|
+
const options = Array.isArray(filesOrOptions) ? { files: filesOrOptions } : Object.assign({}, filesOrOptions);
|
|
34
|
+
const batchsFile = UploaderHelper.prepareFiles(options, 0);
|
|
35
|
+
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_updateFiles).call(this, [...__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFiles).call(this), ...batchsFile]);
|
|
36
|
+
return __classPrivateFieldGet(this, _UploaderService_filesInfo, "f").asObservable();
|
|
37
|
+
}
|
|
38
|
+
submit(options) {
|
|
39
|
+
return this.customAutomation({
|
|
40
|
+
operation: options.operation,
|
|
41
|
+
context: options.context,
|
|
42
|
+
headers: options.headers,
|
|
43
|
+
input: options.input,
|
|
44
|
+
params: options.params
|
|
45
|
+
}).pipe(UploaderHelper.catchError(), UploaderHelper.retryWhen());
|
|
46
|
+
}
|
|
47
|
+
cancel(batchId) {
|
|
48
|
+
return __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_deleteBatch).call(this, batchId);
|
|
49
|
+
}
|
|
50
|
+
reset() {
|
|
51
|
+
__classPrivateFieldSet(this, _UploaderService_batchFiles, new BehaviorSubject([]), "f");
|
|
52
|
+
__classPrivateFieldGet(this, _UploaderService_filesInfo, "f").next({ data: [], type: FileEventType.Reset });
|
|
53
|
+
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_startExecution).call(this);
|
|
54
|
+
}
|
|
55
|
+
stop(fileId) {
|
|
56
|
+
const files = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFiles).call(this);
|
|
57
|
+
const file = files.find((f) => f.id == fileId);
|
|
58
|
+
if (file.status == FileStatus.InProgress) {
|
|
59
|
+
__classPrivateFieldGet(this, _UploaderService_cancelRequests, "f").next();
|
|
60
|
+
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_startExecution).call(this);
|
|
61
|
+
}
|
|
62
|
+
file.chunks.filter((c) => c.status != FileStatus.Completed).forEach((c) => (c.status = FileStatus.Canceled));
|
|
63
|
+
file.status = FileStatus.Canceled;
|
|
64
|
+
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_updateFiles).call(this, [...files]);
|
|
65
|
+
}
|
|
66
|
+
remove(fileId) {
|
|
67
|
+
return __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_deleteFile).call(this, fileId);
|
|
68
|
+
}
|
|
69
|
+
resume(fileId) {
|
|
70
|
+
const files = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFiles).call(this);
|
|
71
|
+
const file = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFile).call(this, fileId);
|
|
72
|
+
if (file.status == FileStatus.Pending)
|
|
73
|
+
return;
|
|
74
|
+
file.status = FileStatus.Pending;
|
|
75
|
+
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_updateFiles).call(this, [...files]);
|
|
76
|
+
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFileInfo).call(this, fileId)
|
|
77
|
+
.pipe(first())
|
|
78
|
+
.subscribe((uploaded) => {
|
|
79
|
+
file.chunks
|
|
80
|
+
.filter((c) => !uploaded.uploadedChunkIds.includes(c.index))
|
|
81
|
+
.forEach((c) => (c.status = FileStatus.Pending));
|
|
82
|
+
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_updateFiles).call(this, [...files]);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
_UploaderService_cancelRequests = new WeakMap(), _UploaderService_filesInfo = new WeakMap(), _UploaderService_batchFiles = new WeakMap(), _UploaderService_instances = new WeakSet(), _UploaderService_startExecution = function _UploaderService_startExecution() {
|
|
87
|
+
__classPrivateFieldGet(this, _UploaderService_batchFiles, "f")
|
|
88
|
+
.pipe(distinctUntilChanged(), debounceTime(100), switchMap((batchFiles) => {
|
|
89
|
+
const filesWithBatchId = batchFiles.filter((file) => file.batchId);
|
|
90
|
+
const filesWithoutBatchId = batchFiles.filter((file) => !file.batchId);
|
|
91
|
+
const chunkRequests = _flatMap(filesWithBatchId, (file) => file.chunks).filter((chunk) => chunk.status === FileStatus.Pending);
|
|
92
|
+
const fileRequests = filesWithoutBatchId.filter((file) => file.status === FileStatus.Pending);
|
|
93
|
+
return from([...chunkRequests, ...fileRequests]);
|
|
94
|
+
}), mergeMap((entity) => {
|
|
95
|
+
const file = entity;
|
|
96
|
+
if (file === null || file === void 0 ? void 0 : file.batchId) {
|
|
97
|
+
return __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_uploadChunk).call(this, entity);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
return __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_generateBatch).call(this, file === null || file === void 0 ? void 0 : file.id);
|
|
101
|
+
}
|
|
102
|
+
}, UPLOADER_CONFIG.MAX_CONCURRENT_REQUESTS), takeUntil(__classPrivateFieldGet(this, _UploaderService_cancelRequests, "f")), finalize(() => console.log('All requests processed')))
|
|
103
|
+
.subscribe({
|
|
104
|
+
complete: () => {
|
|
105
|
+
console.log('Processing of requests completed');
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}, _UploaderService_generateBatch = function _UploaderService_generateBatch(fileId) {
|
|
109
|
+
const files = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFiles).call(this);
|
|
110
|
+
const file = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFile).call(this, fileId);
|
|
111
|
+
if (file.status === FileStatus.Pending) {
|
|
112
|
+
file.status = FileStatus.InProgress;
|
|
113
|
+
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_updateFiles).call(this, [...files]);
|
|
114
|
+
return __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_createBatch).call(this).pipe(UploaderHelper.catchError(), tap((batchId) => {
|
|
115
|
+
file.batchId = batchId;
|
|
116
|
+
file.chunks.forEach((c) => (c.batchId = batchId));
|
|
117
|
+
}), tap(() => __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_updateFiles).call(this, [...files])), catchError((error) => {
|
|
118
|
+
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_onUploadError).call(this, fileId);
|
|
119
|
+
return EMPTY;
|
|
120
|
+
}));
|
|
121
|
+
}
|
|
122
|
+
return EMPTY;
|
|
123
|
+
}, _UploaderService_uploadChunk = function _UploaderService_uploadChunk(chunk) {
|
|
124
|
+
if (chunk.status === FileStatus.Pending) {
|
|
125
|
+
chunk.status = FileStatus.InProgress;
|
|
126
|
+
const files = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFiles).call(this);
|
|
127
|
+
const file = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFile).call(this, chunk.fileId);
|
|
128
|
+
if (file.status != FileStatus.InProgress) {
|
|
129
|
+
file.status = FileStatus.InProgress;
|
|
130
|
+
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_updateFiles).call(this, [...files]);
|
|
131
|
+
}
|
|
132
|
+
return __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getProvider).call(this, file)
|
|
133
|
+
.upload(file, chunk)
|
|
134
|
+
.pipe(UploaderHelper.catchError(), tap(() => __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_onUploadDone).call(this, chunk)), catchError((error) => {
|
|
135
|
+
if (error.status === 308 /* PermanentRedirect */) {
|
|
136
|
+
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_onUploadDone).call(this, chunk);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_onUploadError).call(this, chunk.fileId);
|
|
140
|
+
}
|
|
141
|
+
return EMPTY;
|
|
142
|
+
}));
|
|
143
|
+
}
|
|
144
|
+
return EMPTY;
|
|
145
|
+
}, _UploaderService_onUploadDone = function _UploaderService_onUploadDone(chunk) {
|
|
146
|
+
const files = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFiles).call(this);
|
|
147
|
+
const file = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFile).call(this, chunk.fileId);
|
|
148
|
+
file.chunks.find((c) => c.index == chunk.index).status = FileStatus.Completed;
|
|
149
|
+
const totalChunks = file.chunks.length;
|
|
150
|
+
const completedChunks = file.chunks.filter((c) => c.status === FileStatus.Completed).length;
|
|
151
|
+
if (completedChunks === totalChunks) {
|
|
152
|
+
file.status = FileStatus.Completed;
|
|
153
|
+
file.progress = 100;
|
|
154
|
+
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_complete).call(this, file);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
const progress = (completedChunks / totalChunks) * 100;
|
|
158
|
+
if (file.progress != progress) {
|
|
159
|
+
file.progress = progress;
|
|
160
|
+
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_updateFiles).call(this, [...files]);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}, _UploaderService_onUploadError = function _UploaderService_onUploadError(fileId) {
|
|
164
|
+
const files = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFiles).call(this);
|
|
165
|
+
const file = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFile).call(this, fileId);
|
|
166
|
+
file.chunks.forEach((c) => (c.status = FileStatus.Error));
|
|
167
|
+
if (file.status != FileStatus.Error) {
|
|
168
|
+
file.status = FileStatus.Error;
|
|
169
|
+
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_updateFiles).call(this, [...files]);
|
|
170
|
+
}
|
|
171
|
+
}, _UploaderService_complete = function _UploaderService_complete(batchFile) {
|
|
172
|
+
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getProvider).call(this, batchFile)
|
|
173
|
+
.complete(batchFile)
|
|
174
|
+
.pipe(first())
|
|
175
|
+
.subscribe(() => {
|
|
176
|
+
const files = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFiles).call(this);
|
|
177
|
+
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_updateFiles).call(this, [...files]);
|
|
178
|
+
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_prepareEvent).call(this, files, batchFile.id);
|
|
179
|
+
});
|
|
180
|
+
}, _UploaderService_getProvider = function _UploaderService_getProvider(batchFile) {
|
|
181
|
+
switch (batchFile.provider) {
|
|
182
|
+
case UploadProvider.Nuxeo:
|
|
183
|
+
return this.nuxeoProvider;
|
|
184
|
+
case UploadProvider.S3:
|
|
185
|
+
return this.s3Provider;
|
|
186
|
+
default:
|
|
187
|
+
throw new Error('Invalid upload provider. Please contact with NDF developers.');
|
|
188
|
+
}
|
|
189
|
+
}, _UploaderService_updateFiles = function _UploaderService_updateFiles(files) {
|
|
190
|
+
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_prepareEvent).call(this, files);
|
|
191
|
+
__classPrivateFieldGet(this, _UploaderService_batchFiles, "f").next([...files]);
|
|
192
|
+
}, _UploaderService_prepareEvent = function _UploaderService_prepareEvent(files, fileId = null) {
|
|
193
|
+
const filteredFiles = fileId ? files.filter((f) => f.id === fileId) : files;
|
|
194
|
+
__classPrivateFieldGet(this, _UploaderService_filesInfo, "f").next({
|
|
195
|
+
type: fileId ? FileEventType.Complete : FileEventType.Changes,
|
|
196
|
+
data: filteredFiles.map(({ batchId, id, index, progress, status, provider, data, metadata }) => ({
|
|
197
|
+
batchId,
|
|
198
|
+
id,
|
|
199
|
+
index,
|
|
200
|
+
progress,
|
|
201
|
+
status,
|
|
202
|
+
provider,
|
|
203
|
+
data,
|
|
204
|
+
metadata,
|
|
205
|
+
icon: this.iconService.getFileIcon(data)
|
|
206
|
+
}))
|
|
207
|
+
});
|
|
208
|
+
}, _UploaderService_getFile = function _UploaderService_getFile(fileId) {
|
|
209
|
+
const files = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFiles).call(this);
|
|
210
|
+
return files.find((f) => f.id == fileId);
|
|
211
|
+
}, _UploaderService_getFiles = function _UploaderService_getFiles() {
|
|
212
|
+
return [...__classPrivateFieldGet(this, _UploaderService_batchFiles, "f").getValue()];
|
|
213
|
+
}, _UploaderService_createBatch = function _UploaderService_createBatch() {
|
|
214
|
+
return this.post(`${nuxeoBaseUrl()}upload`).pipe(UploaderHelper.catchError(), UploaderHelper.retryWhen(), map((batch) => {
|
|
215
|
+
return batch.batchId;
|
|
216
|
+
}));
|
|
217
|
+
}, _UploaderService_deleteBatch = function _UploaderService_deleteBatch(batchId) {
|
|
218
|
+
return this.delete(`${nuxeoBaseUrl()}upload/${batchId}`).pipe(UploaderHelper.catchError(), UploaderHelper.retryWhen(), finalize(() => {
|
|
219
|
+
this.reset();
|
|
220
|
+
}));
|
|
221
|
+
}, _UploaderService_deleteFile = function _UploaderService_deleteFile(fileId) {
|
|
222
|
+
const files = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFiles).call(this);
|
|
223
|
+
const file = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFile).call(this, fileId);
|
|
224
|
+
file.status = FileStatus.Pending;
|
|
225
|
+
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_updateFiles).call(this, [...files]);
|
|
226
|
+
return this.delete(`${nuxeoBaseUrl()}upload/${file.batchId}/${file.index}`).pipe(UploaderHelper.catchError(), UploaderHelper.retryWhen(), finalize(() => {
|
|
227
|
+
__classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_updateFiles).call(this, [...files.filter((f) => f.id != fileId)]);
|
|
228
|
+
}));
|
|
229
|
+
}, _UploaderService_getFileInfo = function _UploaderService_getFileInfo(fileId) {
|
|
230
|
+
const file = __classPrivateFieldGet(this, _UploaderService_instances, "m", _UploaderService_getFile).call(this, fileId);
|
|
231
|
+
return this.get(`${nuxeoBaseUrl()}upload/${file.batchId}/${file.index}`).pipe(UploaderHelper.catchError(), UploaderHelper.retryWhen());
|
|
232
|
+
};
|
|
233
|
+
UploaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: UploaderService, deps: [{ token: i0.Injector }, { token: i1.NuxeoProvider }, { token: i1.S3Provider }, { token: i2.IconService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
234
|
+
UploaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: UploaderService, providedIn: 'root' });
|
|
235
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: UploaderService, decorators: [{
|
|
236
|
+
type: Injectable,
|
|
237
|
+
args: [{
|
|
238
|
+
providedIn: 'root'
|
|
239
|
+
}]
|
|
240
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.NuxeoProvider }, { type: i1.S3Provider }, { type: i2.IconService }]; } });
|
|
241
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvbmRmLXVwbG9hZGVyL3VwbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFLTixhQUFhLEVBRWIsVUFBVSxFQUVWLGNBQWMsRUFDZCxNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzNDLE9BQU8sRUFDTixVQUFVLEVBQ1YsUUFBUSxFQUNSLFFBQVEsRUFDUixTQUFTLEVBQ1QsR0FBRyxFQUNILEdBQUcsRUFDSCxLQUFLLEVBQ0wsb0JBQW9CLEVBQ3BCLFlBQVksRUFDWixTQUFTLEVBQ1QsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFM0MsT0FBTyxRQUFRLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLFdBQVcsRUFBbUMsTUFBTSxjQUFjLENBQUM7QUFFNUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRTVDLE1BQU0sVUFBVSxZQUFZO0lBQzNCLE9BQU8sR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssVUFBVSxDQUFDO0FBQ2xELENBQUM7QUFLRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxXQUFXO0lBTS9DLFlBQ0MsUUFBa0IsRUFDRCxhQUE0QixFQUM1QixVQUFzQixFQUN0QixXQUF3QjtRQUV6QyxLQUFLLENBQUMsUUFB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VSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDN0YsY0FBYyxDQUFDLFVBQVUsRUFBRSxFQUMzQixjQUFjLENBQUMsU0FBUyxFQUFFLENBQzFCLENBQUM7QUFDSCxDQUFDOzZHQTFSVyxlQUFlO2lIQUFmLGVBQWUsY0FGZixNQUFNOzRGQUVOLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTnV4ZW9Qcm92aWRlciwgUzNQcm92aWRlciB9IGZyb20gJy4vcHJvdmlkZXJzJztcclxuaW1wb3J0IHtcclxuXHRCYXRjaCxcclxuXHRCYXRjaEZpbGUsXHJcblx0Q2h1bmssXHJcblx0RmlsZUV2ZW50LFxyXG5cdEZpbGVFdmVudFR5cGUsXHJcblx0RmlsZU9wdGlvbixcclxuXHRGaWxlU3RhdHVzLFxyXG5cdFVwbG9hZGVSZXNwb25zZSxcclxuXHRVcGxvYWRQcm92aWRlclxyXG59IGZyb20gJy4vbW9kZWxzJztcclxuaW1wb3J0IHsgVVBMT0FERVJfQ09ORklHIH0gZnJvbSAnLi9jb25maWcnO1xyXG5pbXBvcnQge1xyXG5cdGNhdGNoRXJyb3IsXHJcblx0ZmluYWxpemUsXHJcblx0bWVyZ2VNYXAsXHJcblx0c3dpdGNoTWFwLFxyXG5cdHRhcCxcclxuXHRtYXAsXHJcblx0Zmlyc3QsXHJcblx0ZGlzdGluY3RVbnRpbENoYW5nZWQsXHJcblx0ZGVib3VuY2VUaW1lLFxyXG5cdHRha2VVbnRpbFxyXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBFTVBUWSwgZnJvbSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBVcGxvYWRlckhlbHBlciB9IGZyb20gJy4vaGVscGVycyc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwU3RhdHVzQ29kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IF9mbGF0TWFwIGZyb20gJ2xvZGFzaC9mbGF0TWFwJztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UsIE51eGVvUmVzcG9uc2UsIE9wZXJhdGlvbk9wdGlvbnMgfSBmcm9tICcuLi8uLi9zaGFyZWQnO1xyXG5pbXBvcnQgeyBJY29uU2VydmljZSB9IGZyb20gJy4uL2Rpc3BsYXktc3VpdGFibGUtaWNvbi9kaXNwbGF5LXN1aXRhYmxlLWljb24vaWNvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW52TWFuYWdlciB9IGZyb20gJy4uLy4uL2NvcmUvZW52JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBudXhlb0Jhc2VVcmwoKSB7XHJcblx0cmV0dXJuIGAke0Vudk1hbmFnZXIuZW52aXJvbm1lbnQubnV4ZW99L2FwaS92MS9gO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVcGxvYWRlclNlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZSB7XHJcblx0cmVhZG9ubHkgI2NhbmNlbFJlcXVlc3RzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHRyZWFkb25seSAjZmlsZXNJbmZvID0gbmV3IFN1YmplY3Q8RmlsZUV2ZW50PigpO1xyXG5cdCNiYXRjaEZpbGVzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxCYXRjaEZpbGU+PihbXSk7XHJcblx0cmVhZG9ubHkgZXZlbnRzJCA9IHRoaXMuI2ZpbGVzSW5mby5hc09ic2VydmFibGUoKTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRpbmplY3RvcjogSW5qZWN0b3IsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IG51eGVvUHJvdmlkZXI6IE51eGVvUHJvdmlkZXIsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IHMzUHJvdmlkZXI6IFMzUHJvdmlkZXIsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IGljb25TZXJ2aWNlOiBJY29uU2VydmljZVxyXG5cdCkge1xyXG5cdFx0c3VwZXIoaW5qZWN0b3IpO1xyXG5cdFx0VXBsb2FkZXJIZWxwZXIucHJlcGFyZUNvbmZpZygpO1xyXG5cdFx0dGhpcy4jc3RhcnRFeGVjdXRpb24oKTtcclxuXHR9XHJcblxyXG5cdHVwbG9hZChmaWxlc09yT3B0aW9uczogRmlsZVtdIHwgRmlsZU9wdGlvbik6IE9ic2VydmFibGU8RmlsZUV2ZW50PiB7XHJcblx0XHRjb25zdCBvcHRpb25zOiBGaWxlT3B0aW9uID0gQXJyYXkuaXNBcnJheShmaWxlc09yT3B0aW9ucykgPyB7IGZpbGVzOiBmaWxlc09yT3B0aW9ucyB9IDogeyAuLi5maWxlc09yT3B0aW9ucyB9O1xyXG5cclxuXHRcdGNvbnN0IGJhdGNoc0ZpbGUgPSBVcGxvYWRlckhlbHBlci5wcmVwYXJlRmlsZXMob3B0aW9ucywgMCk7XHJcblx0XHR0aGlzLiN1cGRhdGVGaWxlcyhbLi4udGhpcy4jZ2V0RmlsZXMoKSwgLi4uYmF0Y2hzRmlsZV0pO1xyXG5cdFx0cmV0dXJuIHRoaXMuI2ZpbGVzSW5mby5hc09ic2VydmFibGUoKTtcclxuXHR9XHJcblx0c3VibWl0KG9wdGlvbnM6IE9wZXJhdGlvbk9wdGlvbnMpOiBPYnNlcnZhYmxlPE51eGVvUmVzcG9uc2U+IHtcclxuXHRcdHJldHVybiB0aGlzLmN1c3RvbUF1dG9tYXRpb248TnV4ZW9SZXNwb25zZT4oe1xyXG5cdFx0XHRvcGVyYXRpb246IG9wdGlvbnMub3BlcmF0aW9uLFxyXG5cdFx0XHRjb250ZXh0OiBvcHRpb25zLmNvbnRleHQsXHJcblx0XHRcdGhlYWRlcnM6IG9wdGlvbnMuaGVhZGVycyxcclxuXHRcdFx0aW5wdXQ6IG9wdGlvbnMuaW5wdXQsXHJcblx0XHRcdHBhcmFtczogb3B0aW9ucy5wYXJhbXNcclxuXHRcdH0pLnBpcGUoVXBsb2FkZXJIZWxwZXIuY2F0Y2hFcnJvcigpLCBVcGxvYWRlckhlbHBlci5yZXRyeVdoZW4oKSk7XHJcblx0fVxyXG5cdGNhbmNlbChiYXRjaElkOiBzdHJpbmcpIHtcclxuXHRcdHJldHVybiB0aGlzLiNkZWxldGVCYXRjaChiYXRjaElkKTtcclxuXHR9XHJcblxyXG5cdHJlc2V0KCkge1xyXG5cdFx0dGhpcy4jYmF0Y2hGaWxlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8QmF0Y2hGaWxlPj4oW10pO1xyXG5cdFx0dGhpcy4jZmlsZXNJbmZvLm5leHQoeyBkYXRhOiBbXSwgdHlwZTogRmlsZUV2ZW50VHlwZS5SZXNldCB9KTtcclxuXHRcdHRoaXMuI3N0YXJ0RXhlY3V0aW9uKCk7XHJcblx0fVxyXG5cclxuXHRzdG9wKGZpbGVJZDogc3RyaW5nKSB7XHJcblx0XHRjb25zdCBmaWxlcyA9IHRoaXMuI2dldEZpbGVzKCk7XHJcblx0XHRjb25zdCBmaWxlID0gZmlsZXMuZmluZCgoZikgPT4gZi5pZCA9PSBmaWxlSWQpO1xyXG5cclxuXHRcdGlmIChmaWxlLnN0YXR1cyA9PSBGaWxlU3RhdHVzLkluUHJvZ3Jlc3MpIHtcclxuXHRcdFx0dGhpcy4jY2FuY2VsUmVxdWVzdHMubmV4dCgpO1xyXG5cdFx0XHR0aGlzLiNzdGFydEV4ZWN1dGlvbigpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGZpbGUuY2h1bmtzLmZpbHRlcigoYykgPT4gYy5zdGF0dXMgIT0gRmlsZVN0YXR1cy5Db21wbGV0ZWQpLmZvckVhY2goKGMpID0+IChjLnN0YXR1cyA9IEZpbGVTdGF0dXMuQ2FuY2VsZWQpKTtcclxuXHRcdGZpbGUuc3RhdHVzID0gRmlsZVN0YXR1cy5DYW5jZWxlZDtcclxuXHJcblx0XHR0aGlzLiN1cGRhdGVGaWxlcyhbLi4uZmlsZXNdKTtcclxuXHR9XHJcblx0cmVtb3ZlKGZpbGVJZDogc3RyaW5nKSB7XHJcblx0XHRyZXR1cm4gdGhpcy4jZGVsZXRlRmlsZShmaWxlSWQpO1xyXG5cdH1cclxuXHRyZXN1bWUoZmlsZUlkOiBzdHJpbmcpIHtcclxuXHRcdGNvbnN0IGZpbGVzID0gdGhpcy4jZ2V0RmlsZXMoKTtcclxuXHRcdGNvbnN0IGZpbGUgPSB0aGlzLiNnZXRGaWxlKGZpbGVJZCk7XHJcblx0XHRpZiAoZmlsZS5zdGF0dXMgPT0gRmlsZVN0YXR1cy5QZW5kaW5nKSByZXR1cm47XHJcblxyXG5cdFx0ZmlsZS5zdGF0dXMgPSBGaWxlU3RhdHVzLlBlbmRpbmc7XHJcblx0XHR0aGlzLiN1cGRhdGVGaWxlcyhbLi4uZmlsZXNdKTtcclxuXHJcblx0XHR0aGlzLiNnZXRGaWxlSW5mbyhmaWxlSWQpXHJcblx0XHRcdC5waXBlKGZpcnN0KCkpXHJcblx0XHRcdC5zdWJzY3JpYmUoKHVwbG9hZGVkKSA9PiB7XHJcblx0XHRcdFx0ZmlsZS5jaHVua3NcclxuXHRcdFx0XHRcdC5maWx0ZXIoKGMpID0+ICF1cGxvYWRlZC51cGxvYWRlZENodW5rSWRzLmluY2x1ZGVzKGMuaW5kZXgpKVxyXG5cdFx0XHRcdFx0LmZvckVhY2goKGMpID0+IChjLnN0YXR1cyA9IEZpbGVTdGF0dXMuUGVuZGluZykpO1xyXG5cdFx0XHRcdHRoaXMuI3VwZGF0ZUZpbGVzKFsuLi5maWxlc10pO1xyXG5cdFx0XHR9KTtcclxuXHR9XHJcblxyXG5cdCNzdGFydEV4ZWN1dGlvbigpIHtcclxuXHRcdHRoaXMuI2JhdGNoRmlsZXNcclxuXHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0ZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuXHRcdFx0XHRkZWJvdW5jZVRpbWUoMTAwKSxcclxuXHRcdFx0XHRzd2l0Y2hNYXAoKGJhdGNoRmlsZXMpID0+IHtcclxuXHRcdFx0XHRcdGNvbnN0IGZpbGVzV2l0aEJhdGNoSWQgPSBiYXRjaEZpbGVzLmZpbHRlcigoZmlsZSkgPT4gZmlsZS5iYXRjaElkKTtcclxuXHRcdFx0XHRcdGNvbnN0IGZpbGVzV2l0aG91dEJhdGNoSWQgPSBiYXRjaEZpbGVzLmZpbHRlcigoZmlsZSkgPT4gIWZpbGUuYmF0Y2hJZCk7XHJcblxyXG5cdFx0XHRcdFx0Y29uc3QgY2h1bmtSZXF1ZXN0cyA9IF9mbGF0TWFwKGZpbGVzV2l0aEJhdGNoSWQsIChmaWxlKSA9PiBmaWxlLmNodW5rcykuZmlsdGVyKFxyXG5cdFx0XHRcdFx0XHQoY2h1bmspID0+IGNodW5rLnN0YXR1cyA9PT0gRmlsZVN0YXR1cy5QZW5kaW5nXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0Y29uc3QgZmlsZVJlcXVlc3RzID0gZmlsZXNXaXRob3V0QmF0Y2hJZC5maWx0ZXIoKGZpbGUpID0+IGZpbGUuc3RhdHVzID09PSBGaWxlU3RhdHVzLlBlbmRpbmcpO1xyXG5cclxuXHRcdFx0XHRcdHJldHVybiBmcm9tKFsuLi5jaHVua1JlcXVlc3RzLCAuLi5maWxlUmVxdWVzdHNdKTtcclxuXHRcdFx0XHR9KSxcclxuXHRcdFx0XHRtZXJnZU1hcCgoZW50aXR5KSA9PiB7XHJcblx0XHRcdFx0XHRjb25zdCBmaWxlID0gZW50aXR5IGFzIEJhdGNoRmlsZTtcclxuXHRcdFx0XHRcdGlmIChmaWxlPy5iYXRjaElkKSB7XHJcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLiN1cGxvYWRDaHVuayhlbnRpdHkgYXMgQ2h1bmspO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuI2dlbmVyYXRlQmF0Y2goZmlsZT8uaWQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0sIFVQTE9BREVSX0NPTkZJRy5NQVhfQ09OQ1VSUkVOVF9SRVFVRVNUUyksXHJcblx0XHRcdFx0dGFrZVVudGlsKHRoaXMuI2NhbmNlbFJlcXVlc3RzKSxcclxuXHRcdFx0XHRmaW5hbGl6ZSgoKSA9PiBjb25zb2xlLmxvZygnQWxsIHJlcXVlc3RzIHByb2Nlc3NlZCcpKVxyXG5cdFx0XHQpXHJcblx0XHRcdC5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdGNvbXBsZXRlOiAoKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnUHJvY2Vzc2luZyBvZiByZXF1ZXN0cyBjb21wbGV0ZWQnKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdH1cclxuXHJcblx0I2dlbmVyYXRlQmF0Y2goZmlsZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFVwbG9hZGVSZXNwb25zZT4ge1xyXG5cdFx0Y29uc3QgZmlsZXMgPSB0aGlzLiNnZXRGaWxlcygpO1xyXG5cdFx0Y29uc3QgZmlsZSA9IHRoaXMuI2dldEZpbGUoZmlsZUlkKTtcclxuXHJcblx0XHRpZiAoZmlsZS5zdGF0dXMgPT09IEZpbGVTdGF0dXMuUGVuZGluZykge1xyXG5cdFx0XHRmaWxlLnN0YXR1cyA9IEZpbGVTdGF0dXMuSW5Qcm9ncmVzcztcclxuXHRcdFx0dGhpcy4jdXBkYXRlRmlsZXMoWy4uLmZpbGVzXSk7XHJcblxyXG5cdFx0XHRyZXR1cm4gdGhpcy4jY3JlYXRlQmF0Y2goKS5waXBlKFxyXG5cdFx0XHRcdFVwbG9hZGVySGVscGVyLmNhdGNoRXJyb3IoKSxcclxuXHRcdFx0XHR0YXAoKGJhdGNoSWQpID0+IHtcclxuXHRcdFx0XHRcdGZpbGUuYmF0Y2hJZCA9IGJhdGNoSWQ7XHJcblx0XHRcdFx0XHRmaWxlLmNodW5rcy5mb3JFYWNoKChjKSA9PiAoYy5iYXRjaElkID0gYmF0Y2hJZCkpO1xyXG5cdFx0XHRcdH0pLFxyXG5cdFx0XHRcdHRhcCgoKSA9PiB0aGlzLiN1cGRhdGVGaWxlcyhbLi4uZmlsZXNdKSksXHJcblx0XHRcdFx0Y2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLiNvblVwbG9hZEVycm9yKGZpbGVJZCk7XHJcblx0XHRcdFx0XHRyZXR1cm4gRU1QVFk7XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBFTVBUWTtcclxuXHR9XHJcblxyXG5cdCN1cGxvYWRDaHVuayhjaHVuazogQ2h1bmspOiBPYnNlcnZhYmxlPFVwbG9hZGVSZXNwb25zZT4ge1xyXG5cdFx0aWYgKGNodW5rLnN0YXR1cyA9PT0gRmlsZVN0YXR1cy5QZW5kaW5nKSB7XHJcblx0XHRcdGNodW5rLnN0YXR1cyA9IEZpbGVTdGF0dXMuSW5Qcm9ncmVzcztcclxuXHJcblx0XHRcdGNvbnN0IGZpbGVzID0gdGhpcy4jZ2V0RmlsZXMoKTtcclxuXHRcdFx0Y29uc3QgZmlsZSA9IHRoaXMuI2dldEZpbGUoY2h1bmsuZmlsZUlkKTtcclxuXHRcdFx0aWYgKGZpbGUuc3RhdHVzICE9IEZpbGVTdGF0dXMuSW5Qcm9ncmVzcykge1xyXG5cdFx0XHRcdGZpbGUuc3RhdHVzID0gRmlsZVN0YXR1cy5JblByb2dyZXNzO1xyXG5cdFx0XHRcdHRoaXMuI3VwZGF0ZUZpbGVzKFsuLi5maWxlc10pO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRyZXR1cm4gdGhpcy4jZ2V0UHJvdmlkZXIoZmlsZSlcclxuXHRcdFx0XHQudXBsb2FkKGZpbGUsIGNodW5rKVxyXG5cdFx0XHRcdC5waXBlKFxyXG5cdFx0XHRcdFx0VXBsb2FkZXJIZWxwZXIuY2F0Y2hFcnJvcigpLFxyXG5cdFx0XHRcdFx0dGFwKCgpID0+IHRoaXMuI29uVXBsb2FkRG9uZShjaHVuaykpLFxyXG5cdFx0XHRcdFx0Y2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcblx0XHRcdFx0XHRcdGlmIChlcnJvci5zdGF0dXMgPT09IEh0dHBTdGF0dXNDb2RlLlBlcm1hbmVudFJlZGlyZWN0KSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy4jb25VcGxvYWREb25lKGNodW5rKTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLiNvblVwbG9hZEVycm9yKGNodW5rLmZpbGVJZCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0cmV0dXJuIEVNUFRZO1xyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHQpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIEVNUFRZO1xyXG5cdH1cclxuXHQjb25VcGxvYWREb25lKGNodW5rOiBDaHVuaykge1xyXG5cdFx0Y29uc3QgZmlsZXMgPSB0aGlzLiNnZXRGaWxlcygpO1xyXG5cdFx0Y29uc3QgZmlsZSA9IHRoaXMuI2dldEZpbGUoY2h1bmsuZmlsZUlkKTtcclxuXHRcdGZpbGUuY2h1bmtzLmZpbmQoKGMpID0+IGMuaW5kZXggPT0gY2h1bmsuaW5kZXgpLnN0YXR1cyA9IEZpbGVTdGF0dXMuQ29tcGxldGVkO1xyXG5cclxuXHRcdGNvbnN0IHRvdGFsQ2h1bmtzID0gZmlsZS5jaHVua3MubGVuZ3RoO1xyXG5cdFx0Y29uc3QgY29tcGxldGVkQ2h1bmtzID0gZmlsZS5jaHVua3MuZmlsdGVyKChjKSA9PiBjLnN0YXR1cyA9PT0gRmlsZVN0YXR1cy5Db21wbGV0ZWQpLmxlbmd0aDtcclxuXHJcblx0XHRpZiAoY29tcGxldGVkQ2h1bmtzID09PSB0b3RhbENodW5rcykge1xyXG5cdFx0XHRmaWxlLnN0YXR1cyA9IEZpbGVTdGF0dXMuQ29tcGxldGVkO1xyXG5cdFx0XHRmaWxlLnByb2dyZXNzID0gMTAwO1xyXG5cdFx0XHR0aGlzLiNjb21wbGV0ZShmaWxlKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNvbnN0IHByb2dyZXNzID0gKGNvbXBsZXRlZENodW5rcyAvIHRvdGFsQ2h1bmtzKSAqIDEwMDtcclxuXHRcdFx0aWYgKGZpbGUucHJvZ3Jlc3MgIT0gcHJvZ3Jlc3MpIHtcclxuXHRcdFx0XHRmaWxlLnByb2dyZXNzID0gcHJvZ3Jlc3M7XHJcblx0XHRcdFx0dGhpcy4jdXBkYXRlRmlsZXMoWy4uLmZpbGVzXSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblx0I29uVXBsb2FkRXJyb3IoZmlsZUlkOiBzdHJpbmcpIHtcclxuXHRcdGNvbnN0IGZpbGVzID0gdGhpcy4jZ2V0RmlsZXMoKTtcclxuXHRcdGNvbnN0IGZpbGUgPSB0aGlzLiNnZXRGaWxlKGZpbGVJZCk7XHJcblx0XHRmaWxlLmNodW5rcy5mb3JFYWNoKChjKSA9PiAoYy5zdGF0dXMgPSBGaWxlU3RhdHVzLkVycm9yKSk7XHJcblx0XHRpZiAoZmlsZS5zdGF0dXMgIT0gRmlsZVN0YXR1cy5FcnJvcikge1xyXG5cdFx0XHRmaWxlLnN0YXR1cyA9IEZpbGVTdGF0dXMuRXJyb3I7XHJcblx0XHRcdHRoaXMuI3VwZGF0ZUZpbGVzKFsuLi5maWxlc10pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQjY29tcGxldGUoYmF0Y2hGaWxlOiBCYXRjaEZpbGUpIHtcclxuXHRcdHRoaXMuI2dldFByb3ZpZGVyKGJhdGNoRmlsZSlcclxuXHRcdFx0LmNvbXBsZXRlKGJhdGNoRmlsZSlcclxuXHRcdFx0LnBpcGUoZmlyc3QoKSlcclxuXHRcdFx0LnN1YnNjcmliZSgoKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgZmlsZXMgPSB0aGlzLiNnZXRGaWxlcygpO1xyXG5cdFx0XHRcdHRoaXMuI3VwZGF0ZUZpbGVzKFsuLi5maWxlc10pO1xyXG5cdFx0XHRcdHRoaXMuI3ByZXBhcmVFdmVudChmaWxlcywgYmF0Y2hGaWxlLmlkKTtcclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cdCNnZXRQcm92aWRlcihiYXRjaEZpbGU6IEJhdGNoRmlsZSkge1xyXG5cdFx0c3dpdGNoIChiYXRjaEZpbGUucHJvdmlkZXIpIHtcclxuXHRcdFx0Y2FzZSBVcGxvYWRQcm92aWRlci5OdXhlbzpcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5udXhlb1Byb3ZpZGVyO1xyXG5cdFx0XHRjYXNlIFVwbG9hZFByb3ZpZGVyLlMzOlxyXG5cdFx0XHRcdHJldHVybiB0aGlzLnMzUHJvdmlkZXI7XHJcblx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHVwbG9hZCBwcm92aWRlci4gUGxlYXNlIGNvbnRhY3Qgd2l0aCBOREYgZGV2ZWxvcGVycy4nKTtcclxuXHRcdH1cclxuXHR9XHJcblx0I3VwZGF0ZUZpbGVzKGZpbGVzOiBCYXRjaEZpbGVbXSkge1xyXG5cdFx0dGhpcy4jcHJlcGFyZUV2ZW50KGZpbGVzKTtcclxuXHRcdHRoaXMuI2JhdGNoRmlsZXMubmV4dChbLi4uZmlsZXNdKTtcclxuXHR9XHJcblx0I3ByZXBhcmVFdmVudChmaWxlczogQmF0Y2hGaWxlW10sIGZpbGVJZDogc3RyaW5nID0gbnVsbCkge1xyXG5cdFx0Y29uc3QgZmlsdGVyZWRGaWxlcyA9IGZpbGVJZCA/IGZpbGVzLmZpbHRlcigoZikgPT4gZi5pZCA9PT0gZmlsZUlkKSA6IGZpbGVzO1xyXG5cdFx0dGhpcy4jZmlsZXNJbmZvLm5leHQoe1xyXG5cdFx0XHR0eXBlOiBmaWxlSWQgPyBGaWxlRXZlbnRUeXBlLkNvbXBsZXRlIDogRmlsZUV2ZW50VHlwZS5DaGFuZ2VzLFxyXG5cdFx0XHRkYXRhOiBmaWx0ZXJlZEZpbGVzLm1hcCgoeyBiYXRjaElkLCBpZCwgaW5kZXgsIHByb2dyZXNzLCBzdGF0dXMsIHByb3ZpZGVyLCBkYXRhLCBtZXRhZGF0YSB9KSA9PiAoe1xyXG5cdFx0XHRcdGJhdGNoSWQsXHJcblx0XHRcdFx0aWQsXHJcblx0XHRcdFx0aW5kZXgsXHJcblx0XHRcdFx0cHJvZ3Jlc3MsXHJcblx0XHRcdFx0c3RhdHVzLFxyXG5cdFx0XHRcdHByb3ZpZGVyLFxyXG5cdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0bWV0YWRhdGEsXHJcblx0XHRcdFx0aWNvbjogdGhpcy5pY29uU2VydmljZS5nZXRGaWxlSWNvbihkYXRhKVxyXG5cdFx0XHR9KSlcclxuXHRcdH0pO1xyXG5cdH1cclxuXHQjZ2V0RmlsZShmaWxlSWQ6IHN0cmluZykge1xyXG5cdFx0Y29uc3QgZmlsZXMgPSB0aGlzLiNnZXRGaWxlcygpO1xyXG5cdFx0cmV0dXJuIGZpbGVzLmZpbmQoKGYpID0+IGYuaWQgPT0gZmlsZUlkKTtcclxuXHR9XHJcblx0I2dldEZpbGVzKCkge1xyXG5cdFx0cmV0dXJuIFsuLi50aGlzLiNiYXRjaEZpbGVzLmdldFZhbHVlKCldO1xyXG5cdH1cclxuXHJcblx0Ly8gbW92ZSBpdCB0byBudXhlbyBvdmVycmlkZSBzZXJ2aWNlXHJcblx0I2NyZWF0ZUJhdGNoKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcblx0XHRyZXR1cm4gdGhpcy5wb3N0PEJhdGNoPihgJHtudXhlb0Jhc2VVcmwoKX11cGxvYWRgKS5waXBlKFxyXG5cdFx0XHRVcGxvYWRlckhlbHBlci5jYXRjaEVycm9yKCksXHJcblx0XHRcdFVwbG9hZGVySGVscGVyLnJldHJ5V2hlbigpLFxyXG5cdFx0XHRtYXAoKGJhdGNoOiBCYXRjaCkgPT4ge1xyXG5cdFx0XHRcdHJldHVybiBiYXRjaC5iYXRjaElkO1xyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHR9XHJcblx0I2RlbGV0ZUJhdGNoKGJhdGNoSWQ6IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIHRoaXMuZGVsZXRlKGAke251eGVvQmFzZVVybCgpfXVwbG9hZC8ke2JhdGNoSWR9YCkucGlwZShcclxuXHRcdFx0VXBsb2FkZXJIZWxwZXIuY2F0Y2hFcnJvcigpLFxyXG5cdFx0XHRVcGxvYWRlckhlbHBlci5yZXRyeVdoZW4oKSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMucmVzZXQoKTtcclxuXHRcdFx0fSlcclxuXHRcdCk7XHJcblx0fVxyXG5cdCNkZWxldGVGaWxlKGZpbGVJZDogc3RyaW5nKSB7XHJcblx0XHRjb25zdCBmaWxlcyA9IHRoaXMuI2dldEZpbGVzKCk7XHJcblx0XHRjb25zdCBmaWxlID0gdGhpcy4jZ2V0RmlsZShmaWxlSWQpO1xyXG5cclxuXHRcdGZpbGUuc3RhdHVzID0gRmlsZVN0YXR1cy5QZW5kaW5nO1xyXG5cdFx0dGhpcy4jdXBkYXRlRmlsZXMoWy4uLmZpbGVzXSk7XHJcblxyXG5cdFx0cmV0dXJuIHRoaXMuZGVsZXRlKGAke251eGVvQmFzZVVybCgpfXVwbG9hZC8ke2ZpbGUuYmF0Y2hJZH0vJHtmaWxlLmluZGV4fWApLnBpcGUoXHJcblx0XHRcdFVwbG9hZGVySGVscGVyLmNhdGNoRXJyb3IoKSxcclxuXHRcdFx0VXBsb2FkZXJIZWxwZXIucmV0cnlXaGVuKCksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuXHRcdFx0XHR0aGlzLiN1cGRhdGVGaWxlcyhbLi4uZmlsZXMuZmlsdGVyKChmKSA9PiBmLmlkICE9IGZpbGVJZCldKTtcclxuXHRcdFx0fSlcclxuXHRcdCk7XHJcblx0fVxyXG5cdCNnZXRGaWxlSW5mbyhmaWxlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8VXBsb2FkZVJlc3BvbnNlPiB7XHJcblx0XHRjb25zdCBmaWxlID0gdGhpcy4jZ2V0RmlsZShmaWxlSWQpO1xyXG5cdFx0cmV0dXJuIHRoaXMuZ2V0PFVwbG9hZGVSZXNwb25zZT4oYCR7bnV4ZW9CYXNlVXJsKCl9dXBsb2FkLyR7ZmlsZS5iYXRjaElkfS8ke2ZpbGUuaW5kZXh9YCkucGlwZShcclxuXHRcdFx0VXBsb2FkZXJIZWxwZXIuY2F0Y2hFcnJvcigpLFxyXG5cdFx0XHRVcGxvYWRlckhlbHBlci5yZXRyeVdoZW4oKVxyXG5cdFx0KTtcclxuXHR9XHJcbn1cclxuIl19
|
package/esm2015/lib/components/reports/ndf-reports/containers/ndf-report/ndf-report.component.js
CHANGED
|
@@ -23,7 +23,7 @@ export class NdfReportComponent extends DestroySubject {
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
NdfReportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfReportComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
26
|
-
NdfReportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfReportComponent, selector: "app-ndf-report", inputs: { config: "config", direction: "direction", data: "data", criteria: "criteria" }, outputs: { onNavigate: "onNavigate", onOpen: "onOpen" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"config\">\r\n\t<ng-container [ngSwitch]=\"config.mode\">\r\n\t\t<app-graph-report\r\n class=\"report-container\"\r\n\t\t\t[class.report-min-height]=\"config?.layout?.minContentHeight\"\r\n\t\t\t[style.--report-content-height]=\"config?.layout?.minContentHeight\"\r\n\t\t\t*ngSwitchCase=\"reportModes.graph\"\r\n\t\t\t[definition]=\"config\"\r\n\t\t\t[data]=\"data\"\r\n\t\t\t[criteria]=\"criteria\"\r\n\t\t\t[direction]=\"direction\"\r\n\t\t\t(onNavigate)=\"onNavigate.emit($event)\"\r\n\t\t\t(onOpen)=\"onOpen.emit($event)\"\r\n\t\t></app-graph-report>\r\n\r\n\t\t<app-dynamic-timeline-report\r\n class=\"report-container\"\r\n\t\t\t*ngSwitchCase=\"reportModes.dynamicLine\"\r\n\t\t\t[definition]=\"config\"\r\n\t\t\t[data]=\"data\"\r\n\t\t\t[criteria]=\"criteria\"\r\n\t\t\t[direction]=\"direction\"\r\n\t\t\t(onOpen)=\"onOpen.emit($event)\"\r\n\t\t\t[class.report-min-height]=\"config?.layout?.minContentHeight\"\r\n\t\t\t[style.--report-content-height]=\"config?.layout?.minContentHeight\"\r\n\t\t></app-dynamic-timeline-report>\r\n\r\n\t\t<app-digit-report\r\n\t\t\t*ngSwitchCase=\"reportModes.digit\"\r\n class=\"report-container\"\r\n\t\t\t[definition]=\"config\"\r\n\t\t\t[data]=\"data\"\r\n\t\t\t[criteria]=\"criteria\"\r\n\t\t\t[direction]=\"direction\"\r\n\t\t\t(onOpen)=\"onOpen.emit($event)\"\r\n\t\t\t[class.report-min-height]=\"config?.layout?.minContentHeight\"\r\n\t\t\t[style.--report-content-height]=\"config?.layout?.minContentHeight\"\r\n\t\t></app-digit-report>\r\n\r\n\t\t<app-custom-report\r\n\t\t\t*ngSwitchCase=\"reportModes.custom\"\r\n class=\"report-container\"\r\n\t\t\t[definition]=\"config\"\r\n\t\t\t[data]=\"data\"\r\n\t\t\t[criteria]=\"criteria\"\r\n\t\t\t[direction]=\"direction\"\r\n\t\t\t(onOpen)=\"onOpen.emit($event)\"\r\n\t\t\t[class.report-min-height]=\"config?.layout?.minContentHeight\"\r\n\t\t\t[style.--report-content-height]=\"config?.layout?.minContentHeight\"\r\n\t\t>\r\n\t\t</app-custom-report>\r\n\t</ng-container>\r\n</ng-container>\r\n", styles: [".ndf-report{display:flex;flex-direction:column;min-width:0;max-width:100%;flex-grow:1}.ndf-report__content{position:relative;padding-block:.5rem;flex-grow:1;min-width:0;max-width:100%}.chart-actions{border:var(--chart-actions-border, 1px solid var(--border-color))}.chart-actions__item{background:var(--chart-actions-background, transparent);color:var(--chart-actions-color, currentColor);box-shadow:var(--chart-actions-shadow, unset);width:var(--chart-actions-width, 35px);height:var(--chart-actions-height, 35px);border-radius:var(--chart-actions-border-radius, 4px);flex-grow:1;display:grid;place-items:center}.chart-actions__item .mat-icon{color:var(--main-color, currentColor)}.chart-actions__item:hover{--chart-actions-shadow: var(--chart-actions-hover-shadow, 0 0 0 1px var(--main-color))}.chart-actions__item.selected{--chart-actions-background: var(--chart-actions-active-background, var(--main-color));--chart-actions-color: var(--chart-actions-active-color, var(--main-hover))}.chart-actions__item.selected .mat-icon{color:currentColor!important}@media print{.chart-actions{display:none}}.report-min-height{min-height:var(--report-content-height, unset)}@media screen{.report-container{grid-row:span var(--row-span, 1)}}\n"], components: [{ type: i1.GraphReportComponent, selector: "app-graph-report" }, { type: i2.DynamicTimelineReportComponent, selector: "app-dynamic-timeline-report" }, { type: i3.DigitReportComponent, selector: "app-digit-report" }, { type: i4.CustomReportComponent, selector: "app-custom-report" }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
26
|
+
NdfReportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfReportComponent, selector: "app-ndf-report", inputs: { config: "config", direction: "direction", data: "data", criteria: "criteria" }, outputs: { onNavigate: "onNavigate", onOpen: "onOpen" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"config\">\r\n\t<ng-container [ngSwitch]=\"config.mode\">\r\n\t\t<app-graph-report\r\n class=\"report-container\"\r\n\t\t\t[class.report-min-height]=\"config?.layout?.minContentHeight\"\r\n\t\t\t[style.--report-content-height]=\"config?.layout?.minContentHeight\"\r\n\t\t\t*ngSwitchCase=\"reportModes.graph\"\r\n\t\t\t[definition]=\"config\"\r\n\t\t\t[data]=\"data\"\r\n\t\t\t[criteria]=\"criteria\"\r\n\t\t\t[direction]=\"direction\"\r\n\t\t\t(onNavigate)=\"onNavigate.emit($event)\"\r\n\t\t\t(onOpen)=\"onOpen.emit($event)\"\r\n\t\t></app-graph-report>\r\n\r\n\t\t<app-dynamic-timeline-report\r\n class=\"report-container\"\r\n\t\t\t*ngSwitchCase=\"reportModes.dynamicLine\"\r\n\t\t\t[definition]=\"config\"\r\n\t\t\t[data]=\"data\"\r\n\t\t\t[criteria]=\"criteria\"\r\n\t\t\t[direction]=\"direction\"\r\n\t\t\t(onOpen)=\"onOpen.emit($event)\"\r\n\t\t\t[class.report-min-height]=\"config?.layout?.minContentHeight\"\r\n\t\t\t[style.--report-content-height]=\"config?.layout?.minContentHeight\"\r\n\t\t></app-dynamic-timeline-report>\r\n\r\n\t\t<app-digit-report\r\n\t\t\t*ngSwitchCase=\"reportModes.digit\"\r\n class=\"report-container\"\r\n\t\t\t[definition]=\"config\"\r\n\t\t\t[data]=\"data\"\r\n\t\t\t[criteria]=\"criteria\"\r\n\t\t\t[direction]=\"direction\"\r\n\t\t\t(onOpen)=\"onOpen.emit($event)\"\r\n\t\t\t[class.report-min-height]=\"config?.layout?.minContentHeight\"\r\n\t\t\t[style.--report-content-height]=\"config?.layout?.minContentHeight\"\r\n\t\t></app-digit-report>\r\n\r\n\t\t<app-custom-report\r\n\t\t\t*ngSwitchCase=\"reportModes.custom\"\r\n class=\"report-container\"\r\n\t\t\t[definition]=\"config\"\r\n\t\t\t[data]=\"data\"\r\n\t\t\t[criteria]=\"criteria\"\r\n\t\t\t[direction]=\"direction\"\r\n\t\t\t(onOpen)=\"onOpen.emit($event)\"\r\n\t\t\t[class.report-min-height]=\"config?.layout?.minContentHeight\"\r\n\t\t\t[style.--report-content-height]=\"config?.layout?.minContentHeight\"\r\n\t\t>\r\n\t\t</app-custom-report>\r\n\t</ng-container>\r\n</ng-container>\r\n", styles: [".ndf-report{display:flex;flex-direction:column;min-width:0;max-width:100%;flex-grow:1}.ndf-report__content{position:relative;padding-block:.5rem;flex-grow:1;min-width:0;max-width:100%}.chart-actions{border:var(--chart-actions-border, 1px solid var(--border-color))}.chart-actions__item{background:var(--chart-actions-background, transparent);color:var(--chart-actions-color, currentColor);box-shadow:var(--chart-actions-shadow, unset);width:var(--chart-actions-width, 35px);height:var(--chart-actions-height, 35px);border-radius:var(--chart-actions-border-radius, 4px);flex-grow:1;display:grid;place-items:center}.chart-actions__item .mat-icon{color:var(--main-color, currentColor)}.chart-actions__item:hover{--chart-actions-shadow: var(--chart-actions-hover-shadow, 0 0 0 1px var(--main-color))}.chart-actions__item.selected{--chart-actions-background: var(--chart-actions-active-background, var(--main-color));--chart-actions-color: var(--chart-actions-active-color, var(--main-hover))}.chart-actions__item.selected .mat-icon{color:currentColor!important}@media print{.chart-actions{display:none}}.report-min-height{min-height:var(--report-content-height, unset)}.report-container{min-width:0}@media screen{.report-container{grid-row:span var(--row-span, 1)}}\n"], components: [{ type: i1.GraphReportComponent, selector: "app-graph-report" }, { type: i2.DynamicTimelineReportComponent, selector: "app-dynamic-timeline-report" }, { type: i3.DigitReportComponent, selector: "app-digit-report" }, { type: i4.CustomReportComponent, selector: "app-custom-report" }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
27
27
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfReportComponent, decorators: [{
|
|
28
28
|
type: Component,
|
|
29
29
|
args: [{
|
|
@@ -3,11 +3,10 @@ export function mapToNdfTableConfig(report, details) {
|
|
|
3
3
|
var _a, _b, _c, _d, _e;
|
|
4
4
|
const _request = report.request;
|
|
5
5
|
const _detailsConfig = details.source;
|
|
6
|
-
const _payload = ((_a = _detailsConfig.request) === null || _a === void 0 ? void 0 : _a.payload) || {};
|
|
7
6
|
const customUrl = _.merge({
|
|
8
7
|
url: `/api/v1${_request === null || _request === void 0 ? void 0 : _request.customUrl.url}`,
|
|
9
8
|
method: _request === null || _request === void 0 ? void 0 : _request.customUrl.method
|
|
10
|
-
}, ((
|
|
9
|
+
}, ((_a = _detailsConfig === null || _detailsConfig === void 0 ? void 0 : _detailsConfig.request) === null || _a === void 0 ? void 0 : _a.customUrl) || {}, { payload: ((_b = _detailsConfig.request) === null || _b === void 0 ? void 0 : _b.payload) || {} });
|
|
11
10
|
const _headers = ((_c = _detailsConfig.request) === null || _c === void 0 ? void 0 : _c.headers) || _request.headers || {};
|
|
12
11
|
const _queryParam = ((_d = _detailsConfig.request) === null || _d === void 0 ? void 0 : _d.params) || _request.params || {};
|
|
13
12
|
const _sortingBy = _.merge({
|
|
@@ -43,4 +42,4 @@ export function mapToNdfTableConfig(report, details) {
|
|
|
43
42
|
};
|
|
44
43
|
return data;
|
|
45
44
|
}
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0cy10YWJsZS5tYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydHMvbmRmLXJlcG9ydHMvdXRpbGl0aWVzL3JlcG9ydHMtdGFibGUubWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUd2QixNQUFNLFVBQVUsbUJBQW1CLENBQUMsTUFBd0IsRUFBRSxPQUE0Qjs7SUFDekYsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUNoQyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsTUFBNkIsQ0FBQztJQUU3RCxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUN4QjtRQUNDLEdBQUcsRUFBRSxVQUFVLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ3hDLE1BQU0sRUFBRSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsU0FBUyxDQUFDLE1BQWE7S0FDekMsRUFDRCxDQUFBLE1BQUEsY0FBYyxhQUFkLGNBQWMsdUJBQWQsY0FBYyxDQUFFLE9BQU8sMENBQUUsU0FBUyxLQUFJLEVBQUUsRUFDeEMsRUFBRSxPQUFPLEVBQUUsQ0FBQSxNQUFBLGNBQWMsQ0FBQyxPQUFPLDBDQUFFLE9BQU8sS0FBSSxFQUFFLEVBQUUsQ0FDbEQsQ0FBQztJQUVGLE1BQU0sUUFBUSxHQUFHLENBQUEsTUFBQSxjQUFjLENBQUMsT0FBTywwQ0FBRSxPQUFPLEtBQUksUUFBUSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDM0UsTUFBTSxXQUFXLEdBQUcsQ0FBQSxNQUFBLGNBQWMsQ0FBQyxPQUFPLDBDQUFFLE1BQU0sS0FBSSxRQUFRLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUU1RSxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUN6QjtRQUNDLE1BQU0sRUFBRSxhQUFhO1FBQ3JCLFNBQVMsRUFBRSxNQUFNO0tBQ2pCLEVBQ0QsY0FBYyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQzlCLENBQUM7SUFFRixNQUFNLElBQUksR0FBbUI7UUFDNUIsT0FBTyxFQUFFO1lBQ1IsT0FBTyxFQUFFLGNBQWMsQ0FBQyxjQUFjO1lBQ3RDLE9BQU8sRUFBRTtnQkFDUixJQUFJLEVBQUUsU0FBUztnQkFDZixNQUFNLEVBQUUsRUFBRTtnQkFDVixLQUFLLEVBQUU7b0JBQ04sT0FBTyxFQUFFLEtBQUs7b0JBQ2QsWUFBWSxFQUFFLEtBQUs7aUJBQ25CO2FBQ0Q7WUFDRCxNQUFNLEVBQUUsY0FBYyxhQUFkLGNBQWMsdUJBQWQsY0FBYyxDQUFFLE1BQU07U0FDOUI7UUFDRCxVQUFVLEVBQUUsQ0FBQztRQUNiLFFBQVEsRUFBRSxFQUFFO1FBQ1osU0FBUyxFQUFFLE1BQU07UUFDakIsTUFBTSxFQUFFLGNBQWMsQ0FBQyxNQUFNLElBQUksRUFBRTtRQUNuQyxNQUFNLEVBQUUsQ0FBQSxjQUFjLGFBQWQsY0FBYyx1QkFBZCxjQUFjLENBQUUsTUFBTSxLQUFJLEVBQUU7UUFDcEMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxZQUFZLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZO1FBQzFFLE9BQU8sRUFBRSxjQUFjLENBQUMsT0FBTyxJQUFJLEVBQUU7UUFDckMsU0FBUyxFQUFFLFNBQVM7UUFDcEIsT0FBTyxFQUFFLFFBQVE7UUFDakIsVUFBVSxFQUFFLFdBQVc7UUFDdkIsWUFBWSxFQUFFLGNBQWMsQ0FBQyxZQUFZO1FBQ3pDLFNBQVMsRUFBRSxVQUFVO1FBQ3JCLGNBQWMsRUFBRSxNQUFBLGNBQWMsYUFBZCxjQUFjLHVCQUFkLGNBQWMsQ0FBRSxPQUFPLDBDQUFFLE9BQU87S0FDaEQsQ0FBQztJQUVGLE9BQU8sSUFBSSxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5kZlRhYmxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vdGFibGVzL25kZi10YWJsZS9tb2RlbHMnO1xyXG5cclxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgTmRmUmVwb3J0c0NvbmZpZywgUmVwb3J0Q29uZmlnT3B0aW9ucywgUmVwb3J0RGV0YWlsc0NvbmZpZyB9IGZyb20gJy4uL21vZGVscyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbWFwVG9OZGZUYWJsZUNvbmZpZyhyZXBvcnQ6IE5kZlJlcG9ydHNDb25maWcsIGRldGFpbHM6IFJlcG9ydERldGFpbHNDb25maWcpOiBOZGZUYWJsZUNvbmZpZyB7XHJcblx0Y29uc3QgX3JlcXVlc3QgPSByZXBvcnQucmVxdWVzdDtcclxuXHRjb25zdCBfZGV0YWlsc0NvbmZpZyA9IGRldGFpbHMuc291cmNlIGFzIFJlcG9ydENvbmZpZ09wdGlvbnM7XHJcblxyXG5cdGNvbnN0IGN1c3RvbVVybCA9IF8ubWVyZ2UoXHJcblx0XHR7XHJcblx0XHRcdHVybDogYC9hcGkvdjEke19yZXF1ZXN0Py5jdXN0b21VcmwudXJsfWAsXHJcblx0XHRcdG1ldGhvZDogX3JlcXVlc3Q/LmN1c3RvbVVybC5tZXRob2QgYXMgYW55XHJcblx0XHR9LFxyXG5cdFx0X2RldGFpbHNDb25maWc/LnJlcXVlc3Q/LmN1c3RvbVVybCB8fCB7fSxcclxuXHRcdHsgcGF5bG9hZDogX2RldGFpbHNDb25maWcucmVxdWVzdD8ucGF5bG9hZCB8fCB7fSB9XHJcblx0KTtcclxuXHJcblx0Y29uc3QgX2hlYWRlcnMgPSBfZGV0YWlsc0NvbmZpZy5yZXF1ZXN0Py5oZWFkZXJzIHx8IF9yZXF1ZXN0LmhlYWRlcnMgfHwge307XHJcblx0Y29uc3QgX3F1ZXJ5UGFyYW0gPSBfZGV0YWlsc0NvbmZpZy5yZXF1ZXN0Py5wYXJhbXMgfHwgX3JlcXVlc3QucGFyYW1zIHx8IHt9O1xyXG5cclxuXHRjb25zdCBfc29ydGluZ0J5ID0gXy5tZXJnZShcclxuXHRcdHtcclxuXHRcdFx0c29ydEJ5OiAnZGM6bW9kaWZpZWQnLFxyXG5cdFx0XHRzb3J0T3JkZXI6ICdkZXNjJ1xyXG5cdFx0fSxcclxuXHRcdF9kZXRhaWxzQ29uZmlnLnNvcnRpbmdCeSB8fCB7fVxyXG5cdCk7XHJcblxyXG5cdGNvbnN0IGRhdGE6IE5kZlRhYmxlQ29uZmlnID0ge1xyXG5cdFx0b3B0aW9uczoge1xyXG5cdFx0XHRjb2x1bW5zOiBfZGV0YWlsc0NvbmZpZy5jb2x1bW5zT3B0aW9ucyxcclxuXHRcdFx0ZmlsdGVyczoge1xyXG5cdFx0XHRcdG1vZGU6ICdwYXlsb2FkJyxcclxuXHRcdFx0XHRmaWVsZHM6IFtdLFxyXG5cdFx0XHRcdHBhbmVsOiB7XHJcblx0XHRcdFx0XHR2aXNpYmxlOiBmYWxzZSxcclxuXHRcdFx0XHRcdHRvZ2dsZUJ1dHRvbjogZmFsc2VcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdGV4cG9ydDogX2RldGFpbHNDb25maWc/LmV4cG9ydFxyXG5cdFx0fSxcclxuXHRcdHBhZ2VOdW1iZXI6IDEsXHJcblx0XHRwYWdlU2l6ZTogMTAsXHJcblx0XHRmdWxsV2lkdGg6ICdhdXRvJyxcclxuXHRcdHByZWZpeDogX2RldGFpbHNDb25maWcucHJlZml4IHx8ICcnLFxyXG5cdFx0ZmllbGRzOiBfZGV0YWlsc0NvbmZpZz8uZmllbGRzIHx8IHt9LFxyXG5cdFx0cGFnZVByb3ZpZGVyOiBfcmVxdWVzdC5wYWdlUHJvdmlkZXIgfHwgX2RldGFpbHNDb25maWcucmVxdWVzdC5wYWdlUHJvdmlkZXIsXHJcblx0XHRjb2x1bW5zOiBfZGV0YWlsc0NvbmZpZy5jb2x1bW5zIHx8IFtdLFxyXG5cdFx0Y3VzdG9tVXJsOiBjdXN0b21VcmwsXHJcblx0XHRoZWFkZXJzOiBfaGVhZGVycyxcclxuXHRcdHF1ZXJ5UGFyYW06IF9xdWVyeVBhcmFtLFxyXG5cdFx0cXVpY2tGaWx0ZXJzOiBfZGV0YWlsc0NvbmZpZy5xdWlja0ZpbHRlcnMsXHJcblx0XHRzb3J0aW5nQnk6IF9zb3J0aW5nQnksXHJcblx0XHRyZXF1ZXN0QWN0aW9uczogX2RldGFpbHNDb25maWc/LnJlcXVlc3Q/LmFjdGlvbnNcclxuXHR9O1xyXG5cclxuXHRyZXR1cm4gZGF0YTtcclxufVxyXG4iXX0=
|