@wemake4u/form-player-se 1.0.48 → 1.0.50

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.
Files changed (46) hide show
  1. package/esm2022/lib/components/actionsCellRenderer/actionsCellRenderer.component.mjs +1 -1
  2. package/esm2022/lib/components/setFilter/setFilter.component.mjs +2 -2
  3. package/esm2022/lib/dialog/dialog.component.mjs +3 -2
  4. package/esm2022/lib/directives/date.directive.mjs +39 -35
  5. package/esm2022/lib/directives/dialog.directive.mjs +13 -13
  6. package/esm2022/lib/directives/dropdown.directive.mjs +59 -72
  7. package/esm2022/lib/directives/file.directive.mjs +212 -0
  8. package/esm2022/lib/directives/filemanager.directive.mjs +234 -0
  9. package/esm2022/lib/directives/filepicker.directive.mjs +8 -2
  10. package/esm2022/lib/directives/jsonfile.directive.mjs +59 -0
  11. package/esm2022/lib/directives/number.directive.mjs +3 -2
  12. package/esm2022/lib/dynamic-fields/dynamic-fields.component.mjs +16 -69
  13. package/esm2022/lib/dynamic-form/dynamic-form.component.mjs +6 -3
  14. package/esm2022/lib/locale/locale-de.mjs +6 -2
  15. package/esm2022/lib/locale/locale-en.mjs +6 -2
  16. package/esm2022/lib/locale/locale-es.mjs +6 -2
  17. package/esm2022/lib/locale/locale-fr.mjs +6 -2
  18. package/esm2022/lib/locale/locale-it.mjs +6 -2
  19. package/esm2022/lib/locale/locale-pt.mjs +6 -2
  20. package/esm2022/lib/services/compute.service.mjs +3 -3
  21. package/esm2022/lib/services/dialog.service.mjs +1 -1
  22. package/esm2022/lib/services/disable.service.mjs +2 -2
  23. package/esm2022/lib/services/programmability.service.mjs +5 -5
  24. package/fesm2022/wemake4u-form-player-se.mjs +685 -227
  25. package/fesm2022/wemake4u-form-player-se.mjs.map +1 -1
  26. package/lib/components/deleteRowRenderer/deleteRowRenderer.component.d.ts +4 -0
  27. package/lib/components/objectURLRenderer/objectURLRenderer.component.d.ts +4 -0
  28. package/lib/components/setFilter/setFilter.component.d.ts +4 -0
  29. package/lib/dialog/dialog.component.d.ts +28 -0
  30. package/lib/directives/date.directive.d.ts +4 -6
  31. package/lib/directives/dropdown.directive.d.ts +5 -2
  32. package/lib/directives/file.directive.d.ts +31 -0
  33. package/lib/directives/filemanager.directive.d.ts +47 -0
  34. package/lib/directives/filepicker.directive.d.ts +12 -0
  35. package/lib/directives/jsonfile.directive.d.ts +14 -0
  36. package/lib/dynamic-fields/dynamic-fields.component.d.ts +29 -3
  37. package/lib/dynamic-form/dynamic-form.component.d.ts +29 -0
  38. package/lib/locale/locale-de.d.ts +4 -0
  39. package/lib/locale/locale-en.d.ts +4 -0
  40. package/lib/locale/locale-es.d.ts +4 -0
  41. package/lib/locale/locale-fr.d.ts +4 -0
  42. package/lib/locale/locale-it.d.ts +4 -0
  43. package/lib/locale/locale-pt.d.ts +4 -0
  44. package/lib/locale/locale.d.ts +28 -0
  45. package/lib/services/dialog.service.d.ts +2 -0
  46. package/package.json +2 -2
@@ -0,0 +1,234 @@
1
+ import { Directive, Input, Self } from '@angular/core';
2
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
+ import { Subscription, take, tap } from 'rxjs';
4
+ import { FileHandlerDirective } from './file.directive';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/forms";
7
+ import * as i2 from "ngx-sirio-lib";
8
+ import * as i3 from "../services/toast.service";
9
+ export class FileManagerDirective extends FileHandlerDirective {
10
+ ngControl;
11
+ fileUpload;
12
+ renderer;
13
+ instantUpload = false;
14
+ readonly = false;
15
+ multiple = false;
16
+ uploadHandler;
17
+ deleteHandler;
18
+ constructor(ngControl, fileUpload, renderer, toastService, destroyRef) {
19
+ super(toastService, destroyRef);
20
+ this.ngControl = ngControl;
21
+ this.fileUpload = fileUpload;
22
+ this.renderer = renderer;
23
+ }
24
+ ngOnDestroy() {
25
+ this.cleanupInstant();
26
+ }
27
+ ngOnChanges(changes) {
28
+ if (changes["instantUpload"] || changes["multiple"]
29
+ || changes["uploadHandler"] || changes["deleteHandler"]) {
30
+ this.cleanupInstant();
31
+ if (this.instantUpload && this.uploadHandler && this.deleteHandler) {
32
+ this.setupInstant();
33
+ }
34
+ this.setupButton();
35
+ }
36
+ }
37
+ canRemove(file) {
38
+ if (this.readonly || !file)
39
+ return false;
40
+ if (this.instantUpload)
41
+ return !this.isUploading(file) && !this.isDeleting(file);
42
+ return true;
43
+ }
44
+ removeFile(file) {
45
+ if (!this.canRemove(file))
46
+ return;
47
+ this.onRemovingFile(file);
48
+ }
49
+ canDownload(file) {
50
+ if (!this.instantUpload)
51
+ return super.canDownload(file);
52
+ return !this.isUploading(file)
53
+ && !this.isDeleting(file)
54
+ && super.canDownload(file);
55
+ }
56
+ isUploading(file) {
57
+ return this.getStatus(file) === UploadStatus.Uploading;
58
+ }
59
+ isDeleting(file) {
60
+ return this.getStatus(file) === UploadStatus.Deleting;
61
+ }
62
+ instantSubscription = new Subscription();
63
+ lastSingleUploaded = null;
64
+ setupInstant() {
65
+ this.instantSubscription.add(this.fileUpload.fileUploadedEvent.subscribe((e) => {
66
+ const addedFiles = this.fileUpload.fileList
67
+ .filter(file => !this.getStatus(file));
68
+ if (this.multiple) {
69
+ for (const file of Array.from(addedFiles ?? [])) {
70
+ this.onAddFile(file);
71
+ }
72
+ }
73
+ else {
74
+ if (this.lastSingleUploaded)
75
+ this.onRemoveFile(this.lastSingleUploaded);
76
+ this.lastSingleUploaded = addedFiles[0] ?? null;
77
+ this.onAddFile(this.lastSingleUploaded);
78
+ }
79
+ }));
80
+ this.instantSubscription.add(this.fileUpload.fileDeletedEvent.subscribe((e) => {
81
+ this.onRemoveFile(e.data.fileDeleted);
82
+ }));
83
+ this.lastSingleUploaded = null;
84
+ }
85
+ cleanupInstant() {
86
+ this.instantSubscription.unsubscribe();
87
+ this.instantSubscription = new Subscription();
88
+ this.lastSingleUploaded = null;
89
+ }
90
+ setupButton() {
91
+ this.instantSubscription.add(this.ngControl.control?.valueChanges.subscribe(value => {
92
+ this.refreshButton(value);
93
+ }));
94
+ setTimeout(() => this.refreshButton(this.ngControl.control?.value));
95
+ }
96
+ onAddFile(file) {
97
+ if (!file || !this.uploadHandler)
98
+ return;
99
+ this.setStatus(file, UploadStatus.Uploading);
100
+ this.uploadHandler(file)
101
+ .pipe(take(1), takeUntilDestroyed(this.destroyRef))
102
+ .subscribe({
103
+ next: result => {
104
+ this.setStatus(file, UploadStatus.Uploaded);
105
+ this.markUploaded(file, result);
106
+ },
107
+ error: error => {
108
+ this.setStatus(file, UploadStatus.Failed);
109
+ this.removeFromUploader(file);
110
+ this.logError(error);
111
+ }
112
+ });
113
+ }
114
+ onRemoveFile(file) {
115
+ if (!file)
116
+ return;
117
+ const currentStatus = this.getStatus(file);
118
+ const shouldDelete = this.deleteHandler
119
+ && (currentStatus === UploadStatus.Uploaded
120
+ || currentStatus == null);
121
+ if (!shouldDelete)
122
+ return;
123
+ this.deleteHandler?.(file)
124
+ .pipe(take(1), takeUntilDestroyed(this.destroyRef))
125
+ .subscribe({
126
+ next: result => {
127
+ this.setStatus(file, undefined);
128
+ },
129
+ error: error => {
130
+ this.logError(error);
131
+ }
132
+ });
133
+ }
134
+ onRemovingFile(file) {
135
+ if (!this.deleteHandler) {
136
+ this.removeFromUploader(file);
137
+ return;
138
+ }
139
+ const currentStatus = this.getStatus(file);
140
+ this.setStatus(file, UploadStatus.Deleting);
141
+ this.deleteHandler?.(file)
142
+ .pipe(take(1), tap(result => {
143
+ if (!result) {
144
+ throw new Error('Delete failed');
145
+ }
146
+ }), takeUntilDestroyed(this.destroyRef))
147
+ .subscribe({
148
+ next: result => {
149
+ this.setStatus(file, UploadStatus.Deleted);
150
+ this.removeFromUploader(file);
151
+ },
152
+ error: error => {
153
+ this.setStatus(file, currentStatus);
154
+ this.logError(error);
155
+ }
156
+ });
157
+ }
158
+ removeFromUploader(file) {
159
+ this.fileUpload.onFileDeleted(file);
160
+ }
161
+ refreshButton(value) {
162
+ const hideButton = (value?.length ?? 0) > 0 && !this.multiple;
163
+ const button = this.fileUpload.sirioInput?.sirioButton?.nativeElement;
164
+ if (!button)
165
+ return;
166
+ this.renderer[hideButton ? 'addClass' : 'removeClass'](button, 'd-none');
167
+ }
168
+ markUploaded(file, result) {
169
+ for (const [key, value] of Object.entries(result)) {
170
+ if (key in file) {
171
+ continue;
172
+ }
173
+ Object.defineProperty(file, key, {
174
+ value,
175
+ writable: false,
176
+ enumerable: true,
177
+ configurable: false
178
+ });
179
+ }
180
+ Object.defineProperty(file, "uploaded", {
181
+ value: true,
182
+ writable: false,
183
+ enumerable: false,
184
+ configurable: false
185
+ });
186
+ }
187
+ getStatus(file) {
188
+ return file.status;
189
+ }
190
+ setStatus(file, status) {
191
+ const key = 'status';
192
+ if (Object.prototype.hasOwnProperty.call(file, key)) {
193
+ file[key] = status;
194
+ return;
195
+ }
196
+ Object.defineProperty(file, key, {
197
+ value: status,
198
+ writable: true,
199
+ enumerable: false,
200
+ configurable: true
201
+ });
202
+ }
203
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FileManagerDirective, deps: [{ token: i1.NgControl, self: true }, { token: i2.SirioFileUploadComponent }, { token: i0.Renderer2 }, { token: i3.ToastService }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Directive });
204
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: FileManagerDirective, isStandalone: true, selector: "[fileManager]", inputs: { instantUpload: "instantUpload", readonly: "readonly", multiple: "multiple", uploadHandler: "uploadHandler", deleteHandler: "deleteHandler" }, exportAs: ["fileManager"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
205
+ }
206
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FileManagerDirective, decorators: [{
207
+ type: Directive,
208
+ args: [{
209
+ selector: '[fileManager]',
210
+ exportAs: 'fileManager',
211
+ standalone: true
212
+ }]
213
+ }], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
214
+ type: Self
215
+ }] }, { type: i2.SirioFileUploadComponent }, { type: i0.Renderer2 }, { type: i3.ToastService }, { type: i0.DestroyRef }], propDecorators: { instantUpload: [{
216
+ type: Input
217
+ }], readonly: [{
218
+ type: Input
219
+ }], multiple: [{
220
+ type: Input
221
+ }], uploadHandler: [{
222
+ type: Input
223
+ }], deleteHandler: [{
224
+ type: Input
225
+ }] } });
226
+ export var UploadStatus;
227
+ (function (UploadStatus) {
228
+ UploadStatus[UploadStatus["Uploading"] = 0] = "Uploading";
229
+ UploadStatus[UploadStatus["Uploaded"] = 1] = "Uploaded";
230
+ UploadStatus[UploadStatus["Deleting"] = 2] = "Deleting";
231
+ UploadStatus[UploadStatus["Deleted"] = 3] = "Deleted";
232
+ UploadStatus[UploadStatus["Failed"] = 4] = "Failed";
233
+ })(UploadStatus || (UploadStatus = {}));
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZW1hbmFnZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlyZWN0aXZlcy9maWxlbWFuYWdlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFNBQVMsRUFBRSxLQUFLLEVBQW1DLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHaEUsT0FBTyxFQUFjLFlBQVksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7OztBQU94RCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsb0JBQW9CO0lBa0IxQztJQUNSO0lBQ0E7SUFqQlYsYUFBYSxHQUFtQixLQUFLLENBQUM7SUFHdEMsUUFBUSxHQUFtQixLQUFLLENBQUM7SUFHakMsUUFBUSxHQUFtQixLQUFLLENBQUM7SUFHakMsYUFBYSxDQUFtQztJQUdoRCxhQUFhLENBQXVDO0lBRXBELFlBQ2tCLFNBQW9CLEVBQzVCLFVBQW9DLEVBQ3BDLFFBQW1CLEVBQzNCLFlBQTBCLEVBQzFCLFVBQXNCO1FBRXRCLEtBQUssQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFOaEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUM1QixlQUFVLEdBQVYsVUFBVSxDQUEwQjtRQUNwQyxhQUFRLEdBQVIsUUFBUSxDQUFXO0lBSzdCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQztlQUM5QyxPQUFPLENB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Q0FBQztJQUM5QixDQUFDO0lBRU8sU0FBUyxDQUFDLElBQVUsRUFBRSxNQUFnQztRQUM1RCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUM7UUFFckIsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkQsSUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztZQUM1QixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRTtZQUMvQixLQUFLLEVBQUUsTUFBTTtZQUNiLFFBQVEsRUFBRSxJQUFJO1lBQ2QsVUFBVSxFQUFFLEtBQUs7WUFDakIsWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0ExUlUsb0JBQW9COzRGQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBTGhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQW1CSSxJQUFJOzRKQWZQLGFBQWE7c0JBRFosS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLGFBQWE7c0JBRFosS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7O0FBK1FSLE1BQU0sQ0FBTixJQUFZLFlBTVg7QUFORCxXQUFZLFlBQVk7SUFDdEIseURBQVMsQ0FBQTtJQUNULHVEQUFRLENBQUE7SUFDUix1REFBUSxDQUFBO0lBQ1IscURBQU8sQ0FBQTtJQUNQLG1EQUFNLENBQUE7QUFDUixDQUFDLEVBTlcsWUFBWSxLQUFaLFlBQVksUUFNdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXN0cm95UmVmLCBEaXJlY3RpdmUsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgUmVuZGVyZXIyLCBTZWxmLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTaXJpb0ZpbGVVcGxvYWRDb21wb25lbnQgfSBmcm9tICduZ3gtc2lyaW8tbGliJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbGVIYW5kbGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9maWxlLmRpcmVjdGl2ZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tmaWxlTWFuYWdlcl0nLFxyXG4gIGV4cG9ydEFzOiAnZmlsZU1hbmFnZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVNYW5hZ2VyRGlyZWN0aXZlIGV4dGVuZHMgRmlsZUhhbmRsZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaW5zdGFudFVwbG9hZDogYm9vbGVhbiB8IG51bGwgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICByZWFkb25seTogYm9vbGVhbiB8IG51bGwgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBtdWx0aXBsZTogYm9vbGVhbiB8IG51bGwgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICB1cGxvYWRIYW5kbGVyPzogKGZpbGU6IEZpbGUpID0+IE9ic2VydmFibGU8YW55PjtcclxuXHJcbiAgQElucHV0KClcclxuICBkZWxldGVIYW5kbGVyPzogKGZpbGU6IEZpbGUpID0+IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQFNlbGYoKSBwcml2YXRlIG5nQ29udHJvbDogTmdDb250cm9sLFxyXG4gICAgcHJpdmF0ZSBmaWxlVXBsb2FkOiBTaXJpb0ZpbGVVcGxvYWRDb21wb25lbnQsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSxcclxuICAgIGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWZcclxuICApIHtcclxuICAgIHN1cGVyKHRvYXN0U2VydmljZSwgZGVzdHJveVJlZik7XHJcbiAgfVxyXG4gIFxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbGVhbnVwSW5zdGFudCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbXCJpbnN0YW50VXBsb2FkXCJdIHx8IGNoYW5nZXNbXCJtdWx0aXBsZVwiXVxyXG4gICAgICB8fCBjaGFuZ2VzW1widXBsb2FkSGFuZGxlclwiXSB8fCBjaGFuZ2VzW1wiZGVsZXRlSGFuZGxlclwiXSApIHtcclxuICAgICAgdGhpcy5jbGVhbnVwSW5zdGFudCgpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuaW5zdGFudFVwbG9hZCAmJiB0aGlzLnVwbG9hZEhhbmRsZXIgJiYgdGhpcy5kZWxldGVIYW5kbGVyKSB7XHJcbiAgICAgICAgdGhpcy5zZXR1cEluc3RhbnQoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zZXR1cEJ1dHRvbigpOyAgICAgICAgXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5SZW1vdmUoZmlsZTogRmlsZSk6IGJvb2xlYW5cclxuICB7XHJcbiAgICBpZiAodGhpcy5yZWFkb25seSB8fCAhZmlsZSlcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmICh0aGlzLmluc3RhbnRVcGxvYWQpXHJcbiAgICAgIHJldHVybiAhdGhpcy5pc1VwbG9hZGluZyhmaWxlKSAmJiAhdGhpcy5pc0RlbGV0aW5nKGZpbGUpO1xyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRmlsZShmaWxlOiBGaWxlKSB7XHJcblxyXG4gICAgaWYgKCF0aGlzLmNhblJlbW92ZShmaWxlKSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMub25SZW1vdmluZ0ZpbGUoZmlsZSk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBjYW5Eb3dubG9hZChmaWxlOiBGaWxlKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuaW5zdGFudFVwbG9hZClcclxuICAgICAgcmV0dXJuIHN1cGVyLmNhbkRvd25sb2FkKGZpbGUpO1xyXG5cclxuICAgIHJldHVybiAhdGhpcy5pc1VwbG9hZGluZyhmaWxlKVxyXG4gICAgICAmJiAhdGhpcy5pc0RlbGV0aW5nKGZpbGUpXHJcbiAgICAgICYmIHN1cGVyLmNhbkRvd25sb2FkKGZpbGUpO1xyXG4gIH1cclxuXHJcbiAgaXNVcGxvYWRpbmcoZmlsZTogRmlsZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RhdHVzKGZpbGUpID09PSBVcGxvYWRTdGF0dXMuVXBsb2FkaW5nO1xyXG4gIH1cclxuXHJcbiAgaXNEZWxldGluZyhmaWxlOiBGaWxlKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRTdGF0dXMoZmlsZSkgPT09IFVwbG9hZFN0YXR1cy5EZWxldGluZztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5zdGFudFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcbiAgcHJpdmF0ZSBsYXN0U2luZ2xlVXBsb2FkZWQ6IEZpbGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBzZXR1cEluc3RhbnQoKSB7XHJcblxyXG4gICAgdGhpcy5pbnN0YW50U3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5maWxlVXBsb2FkLmZpbGVVcGxvYWRlZEV2ZW50LnN1YnNjcmliZSgoZSkgPT4ge1xyXG5cclxuICAgICAgICBjb25zdCBhZGRlZEZpbGVzID0gdGhpcy5maWxlVXBsb2FkLmZpbGVMaXN0XHJcbiAgICAgICAgICAuZmlsdGVyKGZpbGUgPT4gIXRoaXMuZ2V0U3RhdHVzKGZpbGUpKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBBcnJheS5mcm9tKGFkZGVkRmlsZXMgPz8gW10pKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25BZGRGaWxlKGZpbGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5sYXN0U2luZ2xlVXBsb2FkZWQpXHJcbiAgICAgICAgICAgIHRoaXMub25SZW1vdmVGaWxlKHRoaXMubGFzdFNpbmdsZVVwbG9hZGVkKTtcclxuXHJcbiAgICAgICAgICB0aGlzLmxhc3RTaW5nbGVVcGxvYWRlZCA9IGFkZGVkRmlsZXNbMF0gPz8gbnVsbDtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5vbkFkZEZpbGUodGhpcy5sYXN0U2luZ2xlVXBsb2FkZWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuaW5zdGFudFN1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRoaXMuZmlsZVVwbG9hZC5maWxlRGVsZXRlZEV2ZW50LnN1YnNjcmliZSgoZSkgPT4geyAgICAgICAgXHJcbiAgICAgICAgdGhpcy5vblJlbW92ZUZpbGUoZS5kYXRhLmZpbGVEZWxldGVkKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5sYXN0U2luZ2xlVXBsb2FkZWQgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhbnVwSW5zdGFudCgpIHtcclxuICAgIHRoaXMuaW5zdGFudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5pbnN0YW50U3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICAgIHRoaXMubGFzdFNpbmdsZVVwbG9hZGVkID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0dXBCdXR0b24oKSB7XHJcbiAgICB0aGlzLmluc3RhbnRTdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLm5nQ29udHJvbC5jb250cm9sPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgICB0aGlzLnJlZnJlc2hCdXR0b24odmFsdWUpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZWZyZXNoQnV0dG9uKHRoaXMubmdDb250cm9sLmNvbnRyb2w/LnZhbHVlKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQWRkRmlsZShmaWxlOiBGaWxlIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgXHJcbiAgICBpZiAoIWZpbGUgfHwgIXRoaXMudXBsb2FkSGFuZGxlcilcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuc2V0U3RhdHVzKGZpbGUsIFVwbG9hZFN0YXR1cy5VcGxvYWRpbmcpO1xyXG5cclxuICAgIHRoaXMudXBsb2FkSGFuZGxlcihmaWxlKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogcmVzdWx0ID0+IHtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdHVzKGZpbGUsIFVwbG9hZFN0YXR1cy5VcGxvYWRlZCk7XHJcbiAgICAgICAgICB0aGlzLm1hcmtVcGxvYWRlZChmaWxlLCByZXN1bHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IGVycm9yID0+IHtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdHVzKGZpbGUsIFVwbG9hZFN0YXR1cy5GYWlsZWQpO1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVGcm9tVXBsb2FkZXIoZmlsZSk7XHJcbiAgICAgICAgICB0aGlzLmxvZ0Vycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uUmVtb3ZlRmlsZShmaWxlOiBGaWxlIHwgbnVsbCk6IHZvaWQge1xyXG5cclxuICAgIGlmICghZmlsZSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnRTdGF0dXMgPSB0aGlzLmdldFN0YXR1cyhmaWxlKTtcclxuXHJcbiAgICBjb25zdCBzaG91bGREZWxldGUgPSB0aGlzLmRlbGV0ZUhhbmRsZXJcclxuICAgICAgJiYgKGN1cnJlbnRTdGF0dXMgPT09IFVwbG9hZFN0YXR1cy5VcGxvYWRlZFxyXG4gICAgICB8fCBjdXJyZW50U3RhdHVzID09IG51bGwpO1xyXG5cclxuICAgIGlmICghc2hvdWxkRGVsZXRlKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdGhpcy5kZWxldGVIYW5kbGVyPy4oZmlsZSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXR1cyhmaWxlLCB1bmRlZmluZWQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IGVycm9yID0+IHtcclxuICAgICAgICAgIHRoaXMubG9nRXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uUmVtb3ZpbmdGaWxlKGZpbGU6IEZpbGUpIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuZGVsZXRlSGFuZGxlcikge1xyXG4gICAgICB0aGlzLnJlbW92ZUZyb21VcGxvYWRlcihmaWxlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGN1cnJlbnRTdGF0dXMgPSB0aGlzLmdldFN0YXR1cyhmaWxlKTtcclxuXHJcbiAgICB0aGlzLnNldFN0YXR1cyhmaWxlLCBVcGxvYWRTdGF0dXMuRGVsZXRpbmcpO1xyXG5cclxuICAgIHRoaXMuZGVsZXRlSGFuZGxlcj8uKGZpbGUpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgdGFwKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICBpZiAoIXJlc3VsdCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RlbGV0ZSBmYWlsZWQnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSxcclxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXR1cyhmaWxlLCBVcGxvYWRTdGF0dXMuRGVsZXRlZCk7XHJcbiAgICAgICAgICB0aGlzLnJlbW92ZUZyb21VcGxvYWRlcihmaWxlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiBlcnJvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXR1cyhmaWxlLCBjdXJyZW50U3RhdHVzKTtcclxuICAgICAgICAgIHRoaXMubG9nRXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7ICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlRnJvbVVwbG9hZGVyKGZpbGU6IEZpbGUpIHtcclxuICAgIHRoaXMuZmlsZVVwbG9hZC5vbkZpbGVEZWxldGVkKGZpbGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWZyZXNoQnV0dG9uKHZhbHVlOiBhbnkpIHtcclxuICAgIGNvbnN0IGhpZGVCdXR0b24gPSAodmFsdWU/Lmxlbmd0aCA/PyAwKSA+IDAgJiYgIXRoaXMubXVsdGlwbGU7XHJcblxyXG4gICAgY29uc3QgYnV0dG9uID0gdGhpcy5maWxlVXBsb2FkLnNpcmlvSW5wdXQ/LnNpcmlvQnV0dG9uPy5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgIGlmICghYnV0dG9uKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdGhpcy5yZW5kZXJlcltoaWRlQnV0dG9uID8gJ2FkZENsYXNzJyA6ICdyZW1vdmVDbGFzcyddKFxyXG4gICAgICBidXR0b24sXHJcbiAgICAgICdkLW5vbmUnXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtYXJrVXBsb2FkZWQoZmlsZTogRmlsZSwgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcblxyXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocmVzdWx0KSkge1xyXG5cclxuICAgICAgaWYgKGtleSBpbiBmaWxlKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmaWxlLCBrZXksIHtcclxuICAgICAgICB2YWx1ZSxcclxuICAgICAgICB3cml0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmaWxlLCBcInVwbG9hZGVkXCIsIHtcclxuICAgICAgdmFsdWU6IHRydWUsXHJcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcclxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2VcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTdGF0dXMoZmlsZTogRmlsZSk6IFVwbG9hZFN0YXR1cyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gKGZpbGUgYXMgYW55KS5zdGF0dXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFN0YXR1cyhmaWxlOiBGaWxlLCBzdGF0dXM6IFVwbG9hZFN0YXR1cyB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgY29uc3Qga2V5ID0gJ3N0YXR1cyc7XHJcblxyXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmaWxlLCBrZXkpKSB7XHJcbiAgICAgIChmaWxlIGFzIGFueSlba2V5XSA9IHN0YXR1cztcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmaWxlLCBrZXksIHtcclxuICAgICAgdmFsdWU6IHN0YXR1cyxcclxuICAgICAgd3JpdGFibGU6IHRydWUsXHJcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGVudW0gVXBsb2FkU3RhdHVzIHtcclxuICBVcGxvYWRpbmcsXHJcbiAgVXBsb2FkZWQsXHJcbiAgRGVsZXRpbmcsXHJcbiAgRGVsZXRlZCxcclxuICBGYWlsZWRcclxufVxyXG4iXX0=
@@ -10,7 +10,7 @@ export class FileListReadonlyDirective {
10
10
  }
11
11
  ngAfterViewChecked() {
12
12
  const buttons = this.host.nativeElement.querySelectorAll('.sirio-upload-file-list button');
13
- buttons.forEach(button => {
13
+ buttons.forEach((button, index) => {
14
14
  if (this.readonly) {
15
15
  this.renderer.setAttribute(button, 'disabled', '');
16
16
  }
@@ -31,4 +31,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
31
31
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { readonly: [{
32
32
  type: Input
33
33
  }] } });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXBpY2tlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9kaXJlY3RpdmVzL2ZpbGVwaWNrZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFjLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQzs7QUFNMUYsTUFBTSxPQUFPLHlCQUF5QjtJQU0xQjtJQUNBO0lBSlYsUUFBUSxHQUFtQixLQUFLLENBQUM7SUFFakMsWUFDVSxJQUE2QixFQUM3QixRQUFtQjtRQURuQixTQUFJLEdBQUosSUFBSSxDQUF5QjtRQUM3QixhQUFRLEdBQVIsUUFBUSxDQUFXO0lBQ3pCLENBQUM7SUFFTCxrQkFBa0I7UUFFaEIsTUFBTSxPQUFPLEdBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQ3RDLGdDQUFnQyxDQUNqQyxDQUFDO1FBRUosT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUV2QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNyRCxDQUFDO2lCQUNJLENBQUM7Z0JBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3BELENBQUM7UUFFSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBM0JVLHlCQUF5Qjs0RkFBekIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjt1R0FJQyxRQUFRO3NCQURQLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdDaGVja2VkLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnbmd4LXNpcmlvLWZpbGUtdXBsb2FkJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWxlTGlzdFJlYWRvbmx5RGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcmVhZG9ubHk6IGJvb2xlYW4gfCBudWxsID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBob3N0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxyXG4gICkgeyB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcclxuXHJcbiAgICBjb25zdCBidXR0b25zID1cclxuICAgICAgdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcclxuICAgICAgICAnLnNpcmlvLXVwbG9hZC1maWxlLWxpc3QgYnV0dG9uJ1xyXG4gICAgICApO1xyXG5cclxuICAgIGJ1dHRvbnMuZm9yRWFjaChidXR0b24gPT4ge1xyXG5cclxuICAgICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShidXR0b24sICdkaXNhYmxlZCcsICcnKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShidXR0b24sICdkaXNhYmxlZCcpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
34
+ export var UploadStatus;
35
+ (function (UploadStatus) {
36
+ UploadStatus[UploadStatus["Uploading"] = 0] = "Uploading";
37
+ UploadStatus[UploadStatus["Uploaded"] = 1] = "Uploaded";
38
+ UploadStatus[UploadStatus["Failed"] = 2] = "Failed";
39
+ })(UploadStatus || (UploadStatus = {}));
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXBpY2tlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9kaXJlY3RpdmVzL2ZpbGVwaWNrZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFjLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQzs7QUFNMUYsTUFBTSxPQUFPLHlCQUF5QjtJQU0xQjtJQUNBO0lBSlYsUUFBUSxHQUFtQixLQUFLLENBQUM7SUFFakMsWUFDVSxJQUE2QixFQUM3QixRQUFtQjtRQURuQixTQUFJLEdBQUosSUFBSSxDQUF5QjtRQUM3QixhQUFRLEdBQVIsUUFBUSxDQUFXO0lBQ3pCLENBQUM7SUFFTCxrQkFBa0I7UUFFaEIsTUFBTSxPQUFPLEdBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQ3RDLGdDQUFnQyxDQUNqQyxDQUFDO1FBRUosT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUVoQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNyRCxDQUFDO2lCQUNJLENBQUM7Z0JBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3BELENBQUM7UUFFSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBM0JVLHlCQUF5Qjs0RkFBekIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjt1R0FJQyxRQUFRO3NCQURQLEtBQUs7O0FBNkJSLE1BQU0sQ0FBTixJQUFZLFlBSVg7QUFKRCxXQUFZLFlBQVk7SUFDdEIseURBQVMsQ0FBQTtJQUNULHVEQUFRLENBQUE7SUFDUixtREFBTSxDQUFBO0FBQ1IsQ0FBQyxFQUpXLFlBQVksS0FBWixZQUFZLFFBSXZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3Q2hlY2tlZCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ25neC1zaXJpby1maWxlLXVwbG9hZCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsZUxpc3RSZWFkb25seURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHJlYWRvbmx5OiBib29sZWFuIHwgbnVsbCA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaG9zdDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjJcclxuICApIHsgfVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XHJcblxyXG4gICAgY29uc3QgYnV0dG9ucyA9XHJcbiAgICAgIHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXHJcbiAgICAgICAgJy5zaXJpby11cGxvYWQtZmlsZS1saXN0IGJ1dHRvbidcclxuICAgICAgKTtcclxuXHJcbiAgICBidXR0b25zLmZvckVhY2goKGJ1dHRvbiwgaW5kZXgpID0+IHtcclxuXHJcbiAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoYnV0dG9uLCAnZGlzYWJsZWQnLCAnJyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUoYnV0dG9uLCAnZGlzYWJsZWQnKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFVwbG9hZFN0YXR1cyB7XHJcbiAgVXBsb2FkaW5nLFxyXG4gIFVwbG9hZGVkLFxyXG4gIEZhaWxlZFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZEZpbGU8VFJlc3VsdCA9IGFueT4ge1xyXG4gIGZpbGU6IEZpbGU7XHJcbiAgc3RhdHVzOiBVcGxvYWRTdGF0dXM7XHJcbiAgcHJvZ3Jlc3M6IG51bWJlcjtcclxuICByZXN1bHQ/OiBUUmVzdWx0O1xyXG4gIGVycm9yPzogYW55O1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,59 @@
1
+ import { Directive, Self } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/forms";
4
+ import * as i2 from "../services/subscribe.service";
5
+ export class JsonFileDirective {
6
+ ngControl;
7
+ subscribe;
8
+ destroyRef;
9
+ constructor(ngControl, subscribe, destroyRef) {
10
+ this.ngControl = ngControl;
11
+ this.subscribe = subscribe;
12
+ this.destroyRef = destroyRef;
13
+ }
14
+ ngOnInit() {
15
+ const control = this.ngControl.control;
16
+ if (!control)
17
+ return;
18
+ this.subscribe.subscribeChanges(control.valueChanges, control, undefined, this.destroyRef, (_, n) => this.defineJson(n));
19
+ }
20
+ defineJson(value) {
21
+ if (!Array.isArray(value)) {
22
+ return;
23
+ }
24
+ for (const item of value) {
25
+ if (!(item instanceof File)) {
26
+ continue;
27
+ }
28
+ if (typeof item.toJSON === 'function') {
29
+ continue;
30
+ }
31
+ Object.defineProperty(item, 'toJSON', {
32
+ value() {
33
+ return {
34
+ ...this,
35
+ name: this.name,
36
+ size: this.size,
37
+ type: this.type,
38
+ lastModified: this.lastModified
39
+ };
40
+ },
41
+ writable: true,
42
+ configurable: true,
43
+ enumerable: false
44
+ });
45
+ }
46
+ }
47
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: JsonFileDirective, deps: [{ token: i1.NgControl, self: true }, { token: i2.SubscribeService }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Directive });
48
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: JsonFileDirective, isStandalone: true, selector: "ngx-sirio-file-upload", ngImport: i0 });
49
+ }
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: JsonFileDirective, decorators: [{
51
+ type: Directive,
52
+ args: [{
53
+ selector: 'ngx-sirio-file-upload',
54
+ standalone: true
55
+ }]
56
+ }], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
57
+ type: Self
58
+ }] }, { type: i2.SubscribeService }, { type: i0.DestroyRef }] });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbmZpbGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlyZWN0aXZlcy9qc29uZmlsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFNBQVMsRUFBVSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFRcEUsTUFBTSxPQUFPLGlCQUFpQjtJQUdWO0lBQ1I7SUFDQTtJQUhWLFlBQ2tCLFNBQW9CLEVBQzVCLFNBQTJCLEVBQzNCLFVBQXNCO1FBRmQsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUM1QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQzVCLENBQUM7SUFFTCxRQUFRO1FBRU4sTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7UUFFdkMsSUFBSSxDQUFDLE9BQU87WUFDVixPQUFPO1FBRVQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUzSCxDQUFDO0lBRU8sVUFBVSxDQUFDLEtBQVU7UUFFM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQixPQUFPO1FBQ1QsQ0FBQztRQUVELEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFFekIsSUFBSSxDQUFDLENBQUMsSUFBSSxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzVCLFNBQVM7WUFDWCxDQUFDO1lBRUQsSUFBSSxPQUFRLElBQVksQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQy9DLFNBQVM7WUFDWCxDQUFDO1lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO2dCQUNwQyxLQUFLO29CQUNILE9BQU87d0JBQ0wsR0FBRyxJQUFJO3dCQUNQLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTt3QkFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7d0JBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO3dCQUNmLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtxQkFDaEMsQ0FBQztnQkFDSixDQUFDO2dCQUNELFFBQVEsRUFBRSxJQUFJO2dCQUNkLFlBQVksRUFBRSxJQUFJO2dCQUNsQixVQUFVLEVBQUUsS0FBSzthQUNsQixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzt3R0FsRFUsaUJBQWlCOzRGQUFqQixpQkFBaUI7OzRGQUFqQixpQkFBaUI7a0JBSjdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzswQkFJSSxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgRGlyZWN0aXZlLCBPbkluaXQsIFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpYmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc3Vic2NyaWJlLnNlcnZpY2UnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICduZ3gtc2lyaW8tZmlsZS11cGxvYWQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIEpzb25GaWxlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBAU2VsZigpIHByaXZhdGUgbmdDb250cm9sOiBOZ0NvbnRyb2wsXHJcbiAgICBwcml2YXRlIHN1YnNjcmliZTogU3Vic2NyaWJlU2VydmljZSxcclxuICAgIHByaXZhdGUgZGVzdHJveVJlZjogRGVzdHJveVJlZlxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLm5nQ29udHJvbC5jb250cm9sO1xyXG5cclxuICAgIGlmICghY29udHJvbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaWJlLnN1YnNjcmliZUNoYW5nZXMoY29udHJvbC52YWx1ZUNoYW5nZXMsIGNvbnRyb2wsIHVuZGVmaW5lZCwgdGhpcy5kZXN0cm95UmVmLCAoXywgbikgPT4gdGhpcy5kZWZpbmVKc29uKG4pKTtcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRlZmluZUpzb24odmFsdWU6IGFueSk6IHZvaWQge1xyXG5cclxuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB2YWx1ZSkge1xyXG5cclxuICAgICAgaWYgKCEoaXRlbSBpbnN0YW5jZW9mIEZpbGUpKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0eXBlb2YgKGl0ZW0gYXMgYW55KS50b0pTT04gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGl0ZW0sICd0b0pTT04nLCB7XHJcbiAgICAgICAgdmFsdWUoKSB7XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAuLi50aGlzLFxyXG4gICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXHJcbiAgICAgICAgICAgIHNpemU6IHRoaXMuc2l6ZSxcclxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxyXG4gICAgICAgICAgICBsYXN0TW9kaWZpZWQ6IHRoaXMubGFzdE1vZGlmaWVkXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXHJcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICAgIFxyXG59XHJcbiJdfQ==
@@ -27,6 +27,7 @@ export class NumberDirective {
27
27
  writeValue(value, event);
28
28
  };
29
29
  const coerceValue = (value) => {
30
+ const original = value;
30
31
  if (value === null && this.defaultValue !== null) {
31
32
  value = this.defaultValue;
32
33
  }
@@ -37,7 +38,7 @@ export class NumberDirective {
37
38
  if (this.maximum !== null && value > this.maximum) {
38
39
  value = this.maximum;
39
40
  }
40
- if (this.decimalDigits != null && this.decimalDigits >= 0) {
41
+ if (original != value || (this.decimalDigits != null && this.decimalDigits >= 0)) {
41
42
  writeValue(formatNumber(value), false);
42
43
  }
43
44
  }
@@ -120,4 +121,4 @@ function valueToStore(value) {
120
121
  return null;
121
122
  }
122
123
  }
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2RpcmVjdGl2ZXMvbnVtYmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBaUIsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPdEUsTUFBTSxPQUFPLGVBQWU7SUFNRTtJQUxuQixZQUFZLEdBQWtCLElBQUksQ0FBQztJQUNuQyxPQUFPLEdBQWtCLElBQUksQ0FBQztJQUM5QixPQUFPLEdBQWtCLElBQUksQ0FBQztJQUM5QixhQUFhLEdBQWtCLElBQUksQ0FBQztJQUU3QyxZQUE0QixVQUErQjtRQUEvQixlQUFVLEdBQVYsVUFBVSxDQUFxQjtRQUV6RCxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQW9CLEVBQTBCLEVBQUU7WUFDcEUsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDbkUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNoRCxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO2dCQUM1QyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQTtRQUVELElBQUksVUFBVSxHQUFHLElBQUksQ0FBQztRQUV0QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FB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WUFBWSxDQUFDLEVBQUUsQ0FBQztZQUN4QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO1NBQ0ksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuQyxPQUFPLEtBQWUsQ0FBQztJQUN6QixDQUFDO1NBQ0ksQ0FBQztRQUNKLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3QsIEFmdGVyVmlld0luaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNpcmlvSW5wdXRDb21wb25lbnQgfSBmcm9tICduZ3gtc2lyaW8tbGliJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW251bWJlcl0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIE51bWJlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRWYWx1ZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgbWluaW11bTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgbWF4aW11bTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgZGVjaW1hbERpZ2l0czogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBIb3N0KCkgcHJpdmF0ZSBzaXJpb0lucHV0OiBTaXJpb0lucHV0Q29tcG9uZW50KSB7XHJcblxyXG4gICAgY29uc3QgZm9ybWF0TnVtYmVyID0gKHZhbHVlOiBudW1iZXIgfCBudWxsKTogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCA9PiB7XHJcbiAgICAgIGlmICh2YWx1ZSAmJiB0aGlzLmRlY2ltYWxEaWdpdHMgIT0gbnVsbCAmJiB0aGlzLmRlY2ltYWxEaWdpdHMgPj0gMCkge1xyXG4gICAgICAgIGNvbnN0IGZhY3RvciA9IE1hdGgucG93KDEwLCB0aGlzLmRlY2ltYWxEaWdpdHMpO1xyXG4gICAgICAgIHZhbHVlID0gTWF0aC5yb3VuZCh2YWx1ZSAqIGZhY3RvcikgLyBmYWN0b3I7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlLnRvRml4ZWQodGhpcy5kZWNpbWFsRGlnaXRzKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGZpcnN0V3JpdGUgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0IHdyaXRlVmFsdWUgPSB0aGlzLnNpcmlvSW5wdXQud3JpdGVWYWx1ZS5iaW5kKHRoaXMuc2lyaW9JbnB1dCk7XHJcblxyXG4gICAgdGhpcy5zaXJpb0lucHV0LndyaXRlVmFsdWUgPSBmdW5jdGlvbiAodmFsdWU6IGFueSwgZXZlbnQ/OiBib29sZWFuKSB7XHJcbiAgICAgIGlmIChmaXJzdFdyaXRlKSB7XHJcbiAgICAgICAgZmlyc3RXcml0ZSA9IGZhbHNlO1xyXG4gICAgICAgIHZhbHVlID0gZm9ybWF0TnVtYmVyKHZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgICB3cml0ZVZhbHVlKHZhbHVlLCBldmVudCk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGNvZXJjZVZhbHVlID0gKHZhbHVlOiBudW1iZXIgfCBudWxsKTogbnVtYmVyIHwgbnVsbCA9PiB7XHJcblxyXG4gICAgICBpZiAodmFsdWUgPT09IG51bGwgJiYgdGhpcy5kZWZhdWx0VmFsdWUgIT09IG51bGwpIHtcclxuICAgICAgICB2YWx1ZSA9IHRoaXMuZGVmYXVsdFZhbHVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmICh0aGlzLm1pbmltdW0gIT09IG51bGwgJiYgdmFsdWUgPCB0aGlzLm1pbmltdW0pIHtcclxuICAgICAgICAgIHZhbHVlID0gdGhpcy5taW5pbXVtO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMubWF4aW11bSAhPT0gbnVsbCAmJiB2YWx1ZSA+IHRoaXMubWF4aW11bSkge1xyXG4gICAgICAgICAgdmFsdWUgPSB0aGlzLm1heGltdW07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5kZWNpbWFsRGlnaXRzICE9IG51bGwgJiYgdGhpcy5kZWNpbWFsRGlnaXRzID49IDApIHtcclxuICAgICAgICAgIHdyaXRlVmFsdWUoZm9ybWF0TnVtYmVyKHZhbHVlKSwgZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCByZWdpc3Rlck9uQ2hhbmdlID0gdGhpcy5zaXJpb0lucHV0LnJlZ2lzdGVyT25DaGFuZ2UuYmluZCh0aGlzLnNpcmlvSW5wdXQpO1xyXG5cclxuICAgIHRoaXMuc2lyaW9JbnB1dC5yZWdpc3Rlck9uQ2hhbmdlID0gZnVuY3Rpb24gKGZuOiAoXzogYW55KSA9PiB2b2lkKSB7XHJcbiAgICAgIHJlZ2lzdGVyT25DaGFuZ2UoZnVuY3Rpb24gKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICBmbihjb2VyY2VWYWx1ZSh2YWx1ZVRvU3RvcmUodmFsdWUpKSk7ICAgICAgICBcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cclxuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5zaXJpb0lucHV0LnNpcmlvSW5wdXQubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2ZW50OiBFdmVudCkgPT4ge1xyXG4gICAgICBjb25zdCBlID0gZXZlbnQgYXMgS2V5Ym9hcmRFdmVudDtcclxuICAgICAgaWYgKGUua2V5ID09PSAnLidcclxuICAgICAgICB8fCAoZS5rZXkgPT09ICcsJyAmJiAhdGhpcy5hY2NlcHREZWNpbWFsKCkpXHJcbiAgICAgICAgfHwgKGUua2V5ID09PSAnLScgJiYgIXRoaXMuYWNjZXB0U2lnbigpKSkge1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigncGFzdGUnLCAoZXZlbnQ6IEV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IGUgPSBldmVudCBhcyBDbGlwYm9hcmRFdmVudDtcclxuICAgICAgY29uc3QgdGV4dCA9IGUuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dCcpIHx8ICcnO1xyXG4gICAgICBpZiAodGV4dC5pbmNsdWRlcygnLicpXHJcbiAgICAgICAgfHwgKHRleHQuaW5jbHVkZXMoJywnKSAmJiAhdGhpcy5hY2NlcHREZWNpbWFsKCkpXHJcbiAgICAgICAgfHwgKHRleHQuaW5jbHVkZXMoJy0nKSAmJiAhdGhpcy5hY2NlcHRTaWduKCkpKSB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWNjZXB0U2lnbigpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLm1pbmltdW0gIT09IG51bGwgJiYgdGhpcy5taW5pbXVtID49IDApIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFjY2VwdERlY2ltYWwoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5kZWNpbWFsRGlnaXRzICE9PSBudWxsICYmIHRoaXMuZGVjaW1hbERpZ2l0cyA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9ICBcclxufVxyXG5cclxuZnVuY3Rpb24gdmFsdWVUb1N0b3JlKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIgfCBudWxsIHtcclxuICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICBpZiAodmFsdWUudHJpbSgpID09PSAnJykgeyBcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBudW1lcmljVmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKTtcclxuICAgIGlmIChpc05hTihudW1lcmljVmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bWVyaWNWYWx1ZTtcclxuICB9XHJcbiAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xyXG4gICAgcmV0dXJuIHZhbHVlIGFzIG51bWJlcjtcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbn1cclxuIl19
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2RpcmVjdGl2ZXMvbnVtYmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBaUIsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPdEUsTUFBTSxPQUFPLGVBQWU7SUFNRTtJQUxuQixZQUFZLEdBQWtCLElBQUksQ0FBQztJQUNuQyxPQUFPLEdBQWtCLElBQUksQ0FBQztJQUM5QixPQUFPLEdBQWtCLElBQUksQ0FBQztJQUM5QixhQUFhLEdBQWtCLElBQUksQ0FBQztJQUU3QyxZQUE0QixVQUErQjtRQUEvQixlQUFVLEdBQVYsVUFBVSxDQUFxQjtRQUV6RCxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQW9CLEVBQTBCLEVBQUU7WUFDcEUsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDbkUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNoRCxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO2dCQUM1QyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQTtRQUVELElBQUksVUFBVSxHQUFHLElBQUksQ0FBQztRQUV0QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FB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TUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztTQUNJLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbkMsT0FBTyxLQUFlLENBQUM7SUFDekIsQ0FBQztTQUNJLENBQUM7UUFDSixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0LCBBZnRlclZpZXdJbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTaXJpb0lucHV0Q29tcG9uZW50IH0gZnJvbSAnbmd4LXNpcmlvLWxpYic7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tudW1iZXJdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOdW1iZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSBkZWZhdWx0VmFsdWU6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIG1pbmltdW06IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIG1heGltdW06IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGRlY2ltYWxEaWdpdHM6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihASG9zdCgpIHByaXZhdGUgc2lyaW9JbnB1dDogU2lyaW9JbnB1dENvbXBvbmVudCkge1xyXG5cclxuICAgIGNvbnN0IGZvcm1hdE51bWJlciA9ICh2YWx1ZTogbnVtYmVyIHwgbnVsbCk6IG51bWJlciB8IHN0cmluZyB8IG51bGwgPT4ge1xyXG4gICAgICBpZiAodmFsdWUgJiYgdGhpcy5kZWNpbWFsRGlnaXRzICE9IG51bGwgJiYgdGhpcy5kZWNpbWFsRGlnaXRzID49IDApIHtcclxuICAgICAgICBjb25zdCBmYWN0b3IgPSBNYXRoLnBvdygxMCwgdGhpcy5kZWNpbWFsRGlnaXRzKTtcclxuICAgICAgICB2YWx1ZSA9IE1hdGgucm91bmQodmFsdWUgKiBmYWN0b3IpIC8gZmFjdG9yO1xyXG4gICAgICAgIHJldHVybiB2YWx1ZS50b0ZpeGVkKHRoaXMuZGVjaW1hbERpZ2l0cyk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBmaXJzdFdyaXRlID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCB3cml0ZVZhbHVlID0gdGhpcy5zaXJpb0lucHV0LndyaXRlVmFsdWUuYmluZCh0aGlzLnNpcmlvSW5wdXQpO1xyXG5cclxuICAgIHRoaXMuc2lyaW9JbnB1dC53cml0ZVZhbHVlID0gZnVuY3Rpb24gKHZhbHVlOiBhbnksIGV2ZW50PzogYm9vbGVhbikge1xyXG4gICAgICBpZiAoZmlyc3RXcml0ZSkge1xyXG4gICAgICAgIGZpcnN0V3JpdGUgPSBmYWxzZTtcclxuICAgICAgICB2YWx1ZSA9IGZvcm1hdE51bWJlcih2YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgd3JpdGVWYWx1ZSh2YWx1ZSwgZXZlbnQpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBjb2VyY2VWYWx1ZSA9ICh2YWx1ZTogbnVtYmVyIHwgbnVsbCk6IG51bWJlciB8IG51bGwgPT4ge1xyXG5cclxuICAgICAgY29uc3Qgb3JpZ2luYWwgPSB2YWx1ZTtcclxuXHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCAmJiB0aGlzLmRlZmF1bHRWYWx1ZSAhPT0gbnVsbCkge1xyXG4gICAgICAgIHZhbHVlID0gdGhpcy5kZWZhdWx0VmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm1pbmltdW0gIT09IG51bGwgJiYgdmFsdWUgPCB0aGlzLm1pbmltdW0pIHtcclxuICAgICAgICAgIHZhbHVlID0gdGhpcy5taW5pbXVtO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMubWF4aW11bSAhPT0gbnVsbCAmJiB2YWx1ZSA+IHRoaXMubWF4aW11bSkge1xyXG4gICAgICAgICAgdmFsdWUgPSB0aGlzLm1heGltdW07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob3JpZ2luYWwgIT0gdmFsdWUgfHwgKHRoaXMuZGVjaW1hbERpZ2l0cyAhPSBudWxsICYmIHRoaXMuZGVjaW1hbERpZ2l0cyA+PSAwKSkge1xyXG4gICAgICAgICAgd3JpdGVWYWx1ZShmb3JtYXROdW1iZXIodmFsdWUpLCBmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHJlZ2lzdGVyT25DaGFuZ2UgPSB0aGlzLnNpcmlvSW5wdXQucmVnaXN0ZXJPbkNoYW5nZS5iaW5kKHRoaXMuc2lyaW9JbnB1dCk7XHJcblxyXG4gICAgdGhpcy5zaXJpb0lucHV0LnJlZ2lzdGVyT25DaGFuZ2UgPSBmdW5jdGlvbiAoZm46IChfOiBhbnkpID0+IHZvaWQpIHtcclxuICAgICAgcmVnaXN0ZXJPbkNoYW5nZShmdW5jdGlvbiAodmFsdWU6IGFueSkge1xyXG4gICAgICAgIGZuKGNvZXJjZVZhbHVlKHZhbHVlVG9TdG9yZSh2YWx1ZSkpKTsgICAgICAgIFxyXG4gICAgICB9KTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblxyXG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLnNpcmlvSW5wdXQuc2lyaW9JbnB1dC5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXZlbnQ6IEV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IGUgPSBldmVudCBhcyBLZXlib2FyZEV2ZW50O1xyXG4gICAgICBpZiAoZS5rZXkgPT09ICcuJ1xyXG4gICAgICAgIHx8IChlLmtleSA9PT0gJywnICYmICF0aGlzLmFjY2VwdERlY2ltYWwoKSlcclxuICAgICAgICB8fCAoZS5rZXkgPT09ICctJyAmJiAhdGhpcy5hY2NlcHRTaWduKCkpKSB7XHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdwYXN0ZScsIChldmVudDogRXZlbnQpID0+IHtcclxuICAgICAgY29uc3QgZSA9IGV2ZW50IGFzIENsaXBib2FyZEV2ZW50O1xyXG4gICAgICBjb25zdCB0ZXh0ID0gZS5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0JykgfHwgJyc7XHJcbiAgICAgIGlmICh0ZXh0LmluY2x1ZGVzKCcuJylcclxuICAgICAgICB8fCAodGV4dC5pbmNsdWRlcygnLCcpICYmICF0aGlzLmFjY2VwdERlY2ltYWwoKSlcclxuICAgICAgICB8fCAodGV4dC5pbmNsdWRlcygnLScpICYmICF0aGlzLmFjY2VwdFNpZ24oKSkpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhY2NlcHRTaWduKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMubWluaW11bSAhPT0gbnVsbCAmJiB0aGlzLm1pbmltdW0gPj0gMCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWNjZXB0RGVjaW1hbCgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmRlY2ltYWxEaWdpdHMgIT09IG51bGwgJiYgdGhpcy5kZWNpbWFsRGlnaXRzID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH0gIFxyXG59XHJcblxyXG5mdW5jdGlvbiB2YWx1ZVRvU3RvcmUodmFsdWU6IHN0cmluZyk6IG51bWJlciB8IG51bGwge1xyXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcclxuICAgIGlmICh2YWx1ZS50cmltKCkgPT09ICcnKSB7IFxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpO1xyXG4gICAgaWYgKGlzTmFOKG51bWVyaWNWYWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVtZXJpY1ZhbHVlO1xyXG4gIH1cclxuICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XHJcbiAgICByZXR1cm4gdmFsdWUgYXMgbnVtYmVyO1xyXG4gIH1cclxuICBlbHNlIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxufVxyXG4iXX0=