verben-authentication-ui 1.0.13 → 1.0.14

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.
@@ -0,0 +1,248 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { ObjectState } from '../models/object-state';
3
+ import { ErrorResponse } from '../models/ErrorResponse';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./util.service";
6
+ import * as i2 from "./http-web-request.service";
7
+ export class ImportService {
8
+ utilService;
9
+ server;
10
+ constructor(utilService, server //private cdr: ChangeDetectorRef
11
+ ) {
12
+ this.utilService = utilService;
13
+ this.server = server;
14
+ }
15
+ // onComplete(
16
+ // event: any[],
17
+ // defaults: T,
18
+ // endpoint: string | null,
19
+ // baseUrl: string,
20
+ // dataRef: T[],
21
+ // cardDataRef: CardData[],
22
+ // pagedState: PagedResult<T> | null = null,
23
+ // stringProps: (keyof T)[] = []
24
+ // ) {
25
+ // const normalized = event.map((raw) => {
26
+ // const def = defaults;
27
+ // let merged: T = {
28
+ // ...def,
29
+ // ...raw,
30
+ // Code: raw.Code ? String(raw.Code) : '',
31
+ // };
32
+ // stringProps.forEach((key) => {
33
+ // const value = raw[key];
34
+ // merged[key] = value != null ? String(value) : ('' as any);
35
+ // });
36
+ // const dateProps: (keyof T)[] = ['CreatedAt', 'UpdatedAt'];
37
+ // dateProps.forEach((key) => {
38
+ // const val = merged[key];
39
+ // let dateObj: Date;
40
+ // if (val instanceof Date) {
41
+ // dateObj = val;
42
+ // } else if (typeof val === 'number') {
43
+ // dateObj = this.excelSerialToDate(val);
44
+ // } else if (typeof val === 'string') {
45
+ // dateObj = new Date(val);
46
+ // } else {
47
+ // dateObj = new Date();
48
+ // }
49
+ // if (isNaN(dateObj.getTime())) {
50
+ // dateObj = new Date();
51
+ // }
52
+ // merged[key] = dateObj.toISOString() as any;
53
+ // });
54
+ // return merged;
55
+ // });
56
+ // if (normalized && normalized.length > 0) {
57
+ // this.saveImportedDataBatch(
58
+ // normalized,
59
+ // endpoint,
60
+ // baseUrl,
61
+ // dataRef,
62
+ // cardDataRef,
63
+ // pagedState
64
+ // );
65
+ // }
66
+ // }
67
+ // async saveImportedDataBatch(
68
+ // items: T[],
69
+ // endpoint: string | null,
70
+ // baseUrl: string,
71
+ // dataRef: T[],
72
+ // cardDataRef: CardData[],
73
+ // pagedState: PagedResult<T> | null = null
74
+ // ) {
75
+ // if (!items?.length) return;
76
+ // const preparedItems = items.map((item) => ({
77
+ // ...item,
78
+ // DataState: ObjectState.New,
79
+ // Id: '',
80
+ // }));
81
+ // if (!endpoint) {
82
+ // preparedItems.forEach((srv, idx) => {
83
+ // const newItem = {
84
+ // ...srv,
85
+ // Id: dataRef.length.toString(),
86
+ // id: dataRef.length.toString(),
87
+ // };
88
+ // const cardData: CardData = {
89
+ // selected: false,
90
+ // title: newItem.Id.toString(),
91
+ // data: newItem,
92
+ // body: [],
93
+ // children: [],
94
+ // };
95
+ // dataRef.push(newItem);
96
+ // cardDataRef.push(cardData);
97
+ // if (pagedState) {
98
+ // pagedState.Skip += 1;
99
+ // }
100
+ // });
101
+ // return;
102
+ // }
103
+ // this.utilService.sendBI(true);
104
+ // const res = await this.server.post(endpoint, preparedItems, baseUrl);
105
+ // this.utilService.sendBI(false);
106
+ // if (res instanceof ErrorResponse) {
107
+ // return;
108
+ // } else {
109
+ // this.utilService.showSuccess('Operation Account saved successfully');
110
+ // const result = res as T[];
111
+ // result.forEach((srv, idx) => {
112
+ // const newItem = {
113
+ // ...srv,
114
+ // Id: srv.Code,
115
+ // id: srv.Code,
116
+ // };
117
+ // const cardData: CardData = {
118
+ // selected: false,
119
+ // title: newItem.Id.toString(),
120
+ // data: newItem,
121
+ // body: [],
122
+ // children: [],
123
+ // };
124
+ // dataRef.push(newItem);
125
+ // // this.cdr.detectChanges();
126
+ // cardDataRef.push(cardData);
127
+ // if (pagedState) {
128
+ // pagedState.Skip += 1;
129
+ // }
130
+ // });
131
+ // }
132
+ // }
133
+ onComplete(event, defaults, endpoint, baseUrl, entity, updateCallback, pagedState = null, stringProps = [], numberProps = [], datePropsExtras = []) {
134
+ const normalized = event.map((raw) => {
135
+ const def = defaults;
136
+ let merged = {
137
+ ...def,
138
+ ...raw,
139
+ Code: raw.Code ? String(raw.Code) : '',
140
+ };
141
+ stringProps.forEach((key) => {
142
+ const value = raw[key];
143
+ merged[key] = value != null ? String(value) : '';
144
+ });
145
+ numberProps.forEach((key) => {
146
+ const value = raw[key];
147
+ if (typeof value === 'string') {
148
+ // Only parse if it's a valid number
149
+ const num = value === '' || isNaN(Number(value)) ? 0 : Number(value);
150
+ merged[key] = num;
151
+ }
152
+ else {
153
+ merged[key] = value;
154
+ }
155
+ });
156
+ const dateProps = ['CreatedAt', 'UpdatedAt'].concat(datePropsExtras);
157
+ dateProps.forEach((key) => {
158
+ const val = merged[key];
159
+ let dateObj;
160
+ if (val instanceof Date) {
161
+ dateObj = val;
162
+ }
163
+ else if (typeof val === 'number') {
164
+ dateObj = this.excelSerialToDate(val);
165
+ }
166
+ else if (typeof val === 'string') {
167
+ dateObj = new Date(val);
168
+ }
169
+ else {
170
+ dateObj = new Date();
171
+ }
172
+ if (isNaN(dateObj.getTime())) {
173
+ dateObj = new Date();
174
+ }
175
+ merged[key] = dateObj.toISOString();
176
+ });
177
+ return merged;
178
+ });
179
+ if (normalized && normalized.length > 0) {
180
+ this.saveImportedDataBatch(normalized, endpoint, baseUrl, entity, updateCallback, pagedState);
181
+ }
182
+ }
183
+ async saveImportedDataBatch(items, endpoint, baseUrl, entity, updateCallback, pagedState = null) {
184
+ if (!items?.length)
185
+ return;
186
+ const preparedItems = items.map((item) => ({
187
+ ...item,
188
+ DataState: ObjectState.New,
189
+ Id: '',
190
+ }));
191
+ if (!endpoint) {
192
+ preparedItems.forEach((srv, idx) => {
193
+ srv.Id = `UPLOAD ${idx}`;
194
+ srv.id = `UPLOAD ${idx}`;
195
+ });
196
+ updateCallback(preparedItems);
197
+ if (pagedState) {
198
+ pagedState.Skip += preparedItems.length;
199
+ }
200
+ return;
201
+ }
202
+ this.utilService.sendBI(true);
203
+ const res = await this.server.post(endpoint, preparedItems, baseUrl);
204
+ this.utilService.sendBI(false);
205
+ if (res instanceof ErrorResponse) {
206
+ return;
207
+ }
208
+ else {
209
+ this.utilService.showSuccess(`${entity} upload successful`);
210
+ const result = res;
211
+ result.forEach((srv, idx) => {
212
+ srv.Id = srv.Code;
213
+ srv.id = srv.Code;
214
+ // const newItem = {
215
+ // ...srv,
216
+ // Id: srv.Code,
217
+ // id: srv.Code,
218
+ // };
219
+ // const cardData: CardData = {
220
+ // selected: false,
221
+ // title: newItem.Id.toString(),
222
+ // data: newItem,
223
+ // body: [],
224
+ // children: [],
225
+ // };
226
+ });
227
+ updateCallback(result);
228
+ if (pagedState) {
229
+ pagedState.Skip += result.length;
230
+ }
231
+ }
232
+ }
233
+ excelSerialToDate(serial) {
234
+ 1;
235
+ const excelEpoch = new Date(Date.UTC(1899, 11, 30));
236
+ const millisPerDay = 24 * 60 * 60 * 1000;
237
+ return new Date(excelEpoch.getTime() + serial * millisPerDay);
238
+ }
239
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportService, deps: [{ token: i1.UtilService }, { token: i2.HttpWebRequestService }], target: i0.ɵɵFactoryTarget.Injectable });
240
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportService, providedIn: 'root' });
241
+ }
242
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportService, decorators: [{
243
+ type: Injectable,
244
+ args: [{
245
+ providedIn: 'root',
246
+ }]
247
+ }], ctorParameters: () => [{ type: i1.UtilService }, { type: i2.HttpWebRequestService }] });
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9zZXJ2aWNlcy9pbXBvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFNeEQsTUFBTSxPQUFPLGFBQWE7SUFFZDtJQUNBO0lBRlYsWUFDVSxXQUF3QixFQUN4QixNQUE2QixDQUFDLGdDQUFnQzs7UUFEOUQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBdUI7SUFDcEMsQ0FBQztJQUVKLGNBQWM7SUFDZCxrQkFBa0I7SUFDbEIsaUJBQWlCO0lBQ2pCLDZCQUE2QjtJQUM3QixxQkFBcUI7SUFDckIsa0JBQWtCO0lBQ2xCLDZCQUE2QjtJQUM3Qiw4Q0FBOEM7SUFDOUMsa0NBQWtDO0lBQ2xDLE1BQU07SUFDTiw0Q0FBNEM7SUFDNUMsNEJBQTRCO0lBQzVCLHdCQUF3QjtJQUN4QixnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLGdEQUFnRDtJQUNoRCxTQUFTO0lBRVQscUNBQXFDO0lBQ3JDLGdDQUFnQztJQUNoQyxtRUFBbUU7SUFDbkUsVUFBVTtJQUNWLGlFQUFpRTtJQUNqRSxtQ0FBbUM7SUFDbkMsaUNBQWlDO0lBRWpDLDJCQUEyQjtJQUUzQixtQ0FBbUM7SUFDbkMseUJBQXlCO0lBQ3pCLDhDQUE4QztJQUM5QyxpREFBaUQ7SUFDakQsOENBQThDO0lBQzlDLG1DQUFtQztJQUNuQyxpQkFBaUI7SUFDakIsZ0NBQWdDO0lBQ2hDLFVBQVU7SUFDVix3Q0FBd0M7SUFDeEMsZ0NBQWdDO0lBQ2hD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RSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sWUFBWSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztRQUV6QyxPQUFPLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFDaEUsQ0FBQzt3R0E5UlUsYUFBYTs0R0FBYixhQUFhLGNBRlosTUFBTTs7NEZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwV2ViUmVxdWVzdFNlcnZpY2UgfSBmcm9tICcuL2h0dHAtd2ViLXJlcXVlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvYmFzZSc7XG5pbXBvcnQgeyBQYWdlZFJlc3VsdCB9IGZyb20gJy4uL21vZGVscy9QYWdlZFJlc3VsdCc7XG5pbXBvcnQgeyBPYmplY3RTdGF0ZSB9IGZyb20gJy4uL21vZGVscy9vYmplY3Qtc3RhdGUnO1xuaW1wb3J0IHsgRXJyb3JSZXNwb25zZSB9IGZyb20gJy4uL21vZGVscy9FcnJvclJlc3BvbnNlJztcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi91dGlsLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSW1wb3J0U2VydmljZTxUIGV4dGVuZHMgQmFzZU1vZGVsPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdXRpbFNlcnZpY2U6IFV0aWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VydmVyOiBIdHRwV2ViUmVxdWVzdFNlcnZpY2UgLy9wcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIC8vIG9uQ29tcGxldGUoXG4gIC8vICAgZXZlbnQ6IGFueVtdLFxuICAvLyAgIGRlZmF1bHRzOiBULFxuICAvLyAgIGVuZHBvaW50OiBzdHJpbmcgfCBudWxsLFxuICAvLyAgIGJhc2VVcmw6IHN0cmluZyxcbiAgLy8gICBkYXRhUmVmOiBUW10sXG4gIC8vICAgY2FyZERhdGFSZWY6IENhcmREYXRhW10sXG4gIC8vICAgcGFnZWRTdGF0ZTogUGFnZWRSZXN1bHQ8VD4gfCBudWxsID0gbnVsbCxcbiAgLy8gICBzdHJpbmdQcm9wczogKGtleW9mIFQpW10gPSBbXVxuICAvLyApIHtcbiAgLy8gICBjb25zdCBub3JtYWxpemVkID0gZXZlbnQubWFwKChyYXcpID0+IHtcbiAgLy8gICAgIGNvbnN0IGRlZiA9IGRlZmF1bHRzO1xuICAvLyAgICAgbGV0IG1lcmdlZDogVCA9IHtcbiAgLy8gICAgICAgLi4uZGVmLFxuICAvLyAgICAgICAuLi5yYXcsXG4gIC8vICAgICAgIENvZGU6IHJhdy5Db2RlID8gU3RyaW5nKHJhdy5Db2RlKSA6ICcnLFxuICAvLyAgICAgfTtcblxuICAvLyAgICAgc3RyaW5nUHJvcHMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gIC8vICAgICAgIGNvbnN0IHZhbHVlID0gcmF3W2tleV07XG4gIC8vICAgICAgIG1lcmdlZFtrZXldID0gdmFsdWUgIT0gbnVsbCA/IFN0cmluZyh2YWx1ZSkgOiAoJycgYXMgYW55KTtcbiAgLy8gICAgIH0pO1xuICAvLyAgICAgY29uc3QgZGF0ZVByb3BzOiAoa2V5b2YgVClbXSA9IFsnQ3JlYXRlZEF0JywgJ1VwZGF0ZWRBdCddO1xuICAvLyAgICAgZGF0ZVByb3BzLmZvckVhY2goKGtleSkgPT4ge1xuICAvLyAgICAgICBjb25zdCB2YWwgPSBtZXJnZWRba2V5XTtcblxuICAvLyAgICAgICBsZXQgZGF0ZU9iajogRGF0ZTtcblxuICAvLyAgICAgICBpZiAodmFsIGluc3RhbmNlb2YgRGF0ZSkge1xuICAvLyAgICAgICAgIGRhdGVPYmogPSB2YWw7XG4gIC8vICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgLy8gICAgICAgICBkYXRlT2JqID0gdGhpcy5leGNlbFNlcmlhbFRvRGF0ZSh2YWwpO1xuICAvLyAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gIC8vICAgICAgICAgZGF0ZU9iaiA9IG5ldyBEYXRlKHZhbCk7XG4gIC8vICAgICAgIH0gZWxzZSB7XG4gIC8vICAgICAgICAgZGF0ZU9iaiA9IG5ldyBEYXRlKCk7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgaWYgKGlzTmFOKGRhdGVPYmouZ2V0VGltZSgpKSkge1xuICAvLyAgICAgICAgIGRhdGVPYmogPSBuZXcgRGF0ZSgpO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIG1lcmdlZFtrZXldID0gZGF0ZU9iai50b0lTT1N0cmluZygpIGFzIGFueTtcbiAgLy8gICAgIH0pO1xuXG4gIC8vICAgICByZXR1cm4gbWVyZ2VkO1xuICAvLyAgIH0pO1xuXG4gIC8vICAgaWYgKG5vcm1hbGl6ZWQgJiYgbm9ybWFsaXplZC5sZW5ndGggPiAwKSB7XG4gIC8vICAgICB0aGlzLnNhdmVJbXBvcnRlZERhdGFCYXRjaChcbiAgLy8gICAgICAgbm9ybWFsaXplZCxcbiAgLy8gICAgICAgZW5kcG9pbnQsXG4gIC8vICAgICAgIGJhc2VVcmwsXG4gIC8vICAgICAgIGRhdGFSZWYsXG4gIC8vICAgICAgIGNhcmREYXRhUmVmLFxuICAvLyAgICAgICBwYWdlZFN0YXRlXG4gIC8vICAgICApO1xuICAvLyAgIH1cbiAgLy8gfVxuXG4gIC8vIGFzeW5jIHNhdmVJbXBvcnRlZERhdGFCYXRjaChcbiAgLy8gICBpdGVtczogVFtdLFxuICAvLyAgIGVuZHBvaW50OiBzdHJpbmcgfCBudWxsLFxuICAvLyAgIGJhc2VVcmw6IHN0cmluZyxcbiAgLy8gICBkYXRhUmVmOiBUW10sXG4gIC8vICAgY2FyZERhdGFSZWY6IENhcmREYXRhW10sXG4gIC8vICAgcGFnZWRTdGF0ZTogUGFnZWRSZXN1bHQ8VD4gfCBudWxsID0gbnVsbFxuICAvLyApIHtcbiAgLy8gICBpZiAoIWl0ZW1zPy5sZW5ndGgpIHJldHVybjtcblxuICAvLyAgIGNvbnN0IHByZXBhcmVkSXRlbXMgPSBpdGVtcy5tYXAoKGl0ZW0pID0+ICh7XG4gIC8vICAgICAuLi5pdGVtLFxuICAvLyAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gIC8vICAgICBJZDogJycsXG4gIC8vICAgfSkpO1xuXG4gIC8vICAgaWYgKCFlbmRwb2ludCkge1xuICAvLyAgICAgcHJlcGFyZWRJdGVtcy5mb3JFYWNoKChzcnYsIGlkeCkgPT4ge1xuICAvLyAgICAgICBjb25zdCBuZXdJdGVtID0ge1xuICAvLyAgICAgICAgIC4uLnNydixcbiAgLy8gICAgICAgICBJZDogZGF0YVJlZi5sZW5ndGgudG9TdHJpbmcoKSxcbiAgLy8gICAgICAgICBpZDogZGF0YVJlZi5sZW5ndGgudG9TdHJpbmcoKSxcbiAgLy8gICAgICAgfTtcblxuICAvLyAgICAgICBjb25zdCBjYXJkRGF0YTogQ2FyZERhdGEgPSB7XG4gIC8vICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAvLyAgICAgICAgIHRpdGxlOiBuZXdJdGVtLklkLnRvU3RyaW5nKCksXG4gIC8vICAgICAgICAgZGF0YTogbmV3SXRlbSxcbiAgLy8gICAgICAgICBib2R5OiBbXSxcbiAgLy8gICAgICAgICBjaGlsZHJlbjogW10sXG4gIC8vICAgICAgIH07XG5cbiAgLy8gICAgICAgZGF0YVJlZi5wdXNoKG5ld0l0ZW0pO1xuICAvLyAgICAgICBjYXJkRGF0YVJlZi5wdXNoKGNhcmREYXRhKTtcbiAgLy8gICAgICAgaWYgKHBhZ2VkU3RhdGUpIHtcbiAgLy8gICAgICAgICBwYWdlZFN0YXRlLlNraXAgKz0gMTtcbiAgLy8gICAgICAgfVxuICAvLyAgICAgfSk7XG4gIC8vICAgICByZXR1cm47XG4gIC8vICAgfVxuXG4gIC8vICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkodHJ1ZSk7XG4gIC8vICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5zZXJ2ZXIucG9zdChlbmRwb2ludCwgcHJlcGFyZWRJdGVtcywgYmFzZVVybCk7XG4gIC8vICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuXG4gIC8vICAgaWYgKHJlcyBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgLy8gICAgIHJldHVybjtcbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgdGhpcy51dGlsU2VydmljZS5zaG93U3VjY2VzcygnT3BlcmF0aW9uIEFjY291bnQgc2F2ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gIC8vICAgICBjb25zdCByZXN1bHQgPSByZXMgYXMgVFtdO1xuXG4gIC8vICAgICByZXN1bHQuZm9yRWFjaCgoc3J2LCBpZHgpID0+IHtcbiAgLy8gICAgICAgY29uc3QgbmV3SXRlbSA9IHtcbiAgLy8gICAgICAgICAuLi5zcnYsXG4gIC8vICAgICAgICAgSWQ6IHNydi5Db2RlLFxuICAvLyAgICAgICAgIGlkOiBzcnYuQ29kZSxcbiAgLy8gICAgICAgfTtcblxuICAvLyAgICAgICBjb25zdCBjYXJkRGF0YTogQ2FyZERhdGEgPSB7XG4gIC8vICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAvLyAgICAgICAgIHRpdGxlOiBuZXdJdGVtLklkLnRvU3RyaW5nKCksXG4gIC8vICAgICAgICAgZGF0YTogbmV3SXRlbSxcbiAgLy8gICAgICAgICBib2R5OiBbXSxcbiAgLy8gICAgICAgICBjaGlsZHJlbjogW10sXG4gIC8vICAgICAgIH07XG5cbiAgLy8gICAgICAgZGF0YVJlZi5wdXNoKG5ld0l0ZW0pO1xuICAvLyAgICAgICAvLyB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIC8vICAgICAgIGNhcmREYXRhUmVmLnB1c2goY2FyZERhdGEpO1xuICAvLyAgICAgICBpZiAocGFnZWRTdGF0ZSkge1xuICAvLyAgICAgICAgIHBhZ2VkU3RhdGUuU2tpcCArPSAxO1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9KTtcbiAgLy8gICB9XG4gIC8vIH1cbiAgb25Db21wbGV0ZShcbiAgICBldmVudDogYW55W10sXG4gICAgZGVmYXVsdHM6IFQsXG4gICAgZW5kcG9pbnQ6IHN0cmluZyB8IG51bGwsXG4gICAgYmFzZVVybDogc3RyaW5nLFxuICAgIGVudGl0eTogc3RyaW5nLFxuICAgIHVwZGF0ZUNhbGxiYWNrOiAoaXRlbXM6IFRbXSkgPT4gdm9pZCxcbiAgICBwYWdlZFN0YXRlOiBQYWdlZFJlc3VsdDxUPiB8IG51bGwgPSBudWxsLFxuICAgIHN0cmluZ1Byb3BzOiAoa2V5b2YgVClbXSA9IFtdLFxuICAgIG51bWJlclByb3BzOiAoa2V5b2YgVClbXSA9IFtdLFxuICAgIGRhdGVQcm9wc0V4dHJhczogKGtleW9mIFQpW10gPSBbXVxuICApIHtcbiAgICBjb25zdCBub3JtYWxpemVkID0gZXZlbnQubWFwKChyYXcpID0+IHtcbiAgICAgIGNvbnN0IGRlZiA9IGRlZmF1bHRzO1xuICAgICAgbGV0IG1lcmdlZDogVCA9IHtcbiAgICAgICAgLi4uZGVmLFxuICAgICAgICAuLi5yYXcsXG4gICAgICAgIENvZGU6IHJhdy5Db2RlID8gU3RyaW5nKHJhdy5Db2RlKSA6ICcnLFxuICAgICAgfTtcblxuICAgICAgc3RyaW5nUHJvcHMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcmF3W2tleV07XG4gICAgICAgIG1lcmdlZFtrZXldID0gdmFsdWUgIT0gbnVsbCA/IFN0cmluZyh2YWx1ZSkgOiAoJycgYXMgYW55KTtcbiAgICAgIH0pO1xuXG4gICAgICBudW1iZXJQcm9wcy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSByYXdba2V5XTtcblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIC8vIE9ubHkgcGFyc2UgaWYgaXQncyBhIHZhbGlkIG51bWJlclxuICAgICAgICAgIGNvbnN0IG51bSA9IHZhbHVlID09PSAnJyB8fCBpc05hTihOdW1iZXIodmFsdWUpKSA/IDAgOiBOdW1iZXIodmFsdWUpO1xuICAgICAgICAgIG1lcmdlZFtrZXldID0gbnVtIGFzIGFueTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtZXJnZWRba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgZGF0ZVByb3BzOiAoa2V5b2YgVClbXSA9IChcbiAgICAgICAgWydDcmVhdGVkQXQnLCAnVXBkYXRlZEF0J10gYXMgKGtleW9mIFQpW11cbiAgICAgICkuY29uY2F0KGRhdGVQcm9wc0V4dHJhcyk7XG4gICAgICBkYXRlUHJvcHMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbCA9IG1lcmdlZFtrZXldO1xuXG4gICAgICAgIGxldCBkYXRlT2JqOiBEYXRlO1xuXG4gICAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgZGF0ZU9iaiA9IHZhbDtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIGRhdGVPYmogPSB0aGlzLmV4Y2VsU2VyaWFsVG9EYXRlKHZhbCk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBkYXRlT2JqID0gbmV3IERhdGUodmFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkYXRlT2JqID0gbmV3IERhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOYU4oZGF0ZU9iai5nZXRUaW1lKCkpKSB7XG4gICAgICAgICAgZGF0ZU9iaiA9IG5ldyBEYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgbWVyZ2VkW2tleV0gPSBkYXRlT2JqLnRvSVNPU3RyaW5nKCkgYXMgYW55O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBtZXJnZWQ7XG4gICAgfSk7XG5cbiAgICBpZiAobm9ybWFsaXplZCAmJiBub3JtYWxpemVkLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2F2ZUltcG9ydGVkRGF0YUJhdGNoKFxuICAgICAgICBub3JtYWxpemVkLFxuICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgYmFzZVVybCxcbiAgICAgICAgZW50aXR5LFxuICAgICAgICB1cGRhdGVDYWxsYmFjayxcbiAgICAgICAgcGFnZWRTdGF0ZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzYXZlSW1wb3J0ZWREYXRhQmF0Y2goXG4gICAgaXRlbXM6IFRbXSxcbiAgICBlbmRwb2ludDogc3RyaW5nIHwgbnVsbCxcbiAgICBiYXNlVXJsOiBzdHJpbmcsXG4gICAgZW50aXR5OiBzdHJpbmcsXG4gICAgdXBkYXRlQ2FsbGJhY2s6IChpdGVtczogVFtdKSA9PiB2b2lkLFxuICAgIHBhZ2VkU3RhdGU6IFBhZ2VkUmVzdWx0PFQ+IHwgbnVsbCA9IG51bGxcbiAgKSB7XG4gICAgaWYgKCFpdGVtcz8ubGVuZ3RoKSByZXR1cm47XG5cbiAgICBjb25zdCBwcmVwYXJlZEl0ZW1zID0gaXRlbXMubWFwKChpdGVtKSA9PiAoe1xuICAgICAgLi4uaXRlbSxcbiAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuTmV3LFxuICAgICAgSWQ6ICcnLFxuICAgIH0pKTtcblxuICAgIGlmICghZW5kcG9pbnQpIHtcbiAgICAgIHByZXBhcmVkSXRlbXMuZm9yRWFjaCgoc3J2LCBpZHgpID0+IHtcbiAgICAgICAgc3J2LklkID0gYFVQTE9BRCAke2lkeH1gO1xuICAgICAgICBzcnYuaWQgPSBgVVBMT0FEICR7aWR4fWA7XG4gICAgICB9KTtcbiAgICAgIHVwZGF0ZUNhbGxiYWNrKHByZXBhcmVkSXRlbXMpO1xuXG4gICAgICBpZiAocGFnZWRTdGF0ZSkge1xuICAgICAgICBwYWdlZFN0YXRlLlNraXAgKz0gcHJlcGFyZWRJdGVtcy5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSSh0cnVlKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnNlcnZlci5wb3N0KGVuZHBvaW50LCBwcmVwYXJlZEl0ZW1zLCBiYXNlVXJsKTtcbiAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSShmYWxzZSk7XG5cbiAgICBpZiAocmVzIGluc3RhbmNlb2YgRXJyb3JSZXNwb25zZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNob3dTdWNjZXNzKGAke2VudGl0eX0gdXBsb2FkIHN1Y2Nlc3NmdWxgKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlcyBhcyBUW107XG5cbiAgICAgIHJlc3VsdC5mb3JFYWNoKChzcnYsIGlkeCkgPT4ge1xuICAgICAgICBzcnYuSWQgPSBzcnYuQ29kZTtcbiAgICAgICAgc3J2LmlkID0gc3J2LkNvZGU7XG4gICAgICAgIC8vIGNvbnN0IG5ld0l0ZW0gPSB7XG4gICAgICAgIC8vICAgLi4uc3J2LFxuICAgICAgICAvLyAgIElkOiBzcnYuQ29kZSxcbiAgICAgICAgLy8gICBpZDogc3J2LkNvZGUsXG4gICAgICAgIC8vIH07XG5cbiAgICAgICAgLy8gY29uc3QgY2FyZERhdGE6IENhcmREYXRhID0ge1xuICAgICAgICAvLyAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgLy8gICB0aXRsZTogbmV3SXRlbS5JZC50b1N0cmluZygpLFxuICAgICAgICAvLyAgIGRhdGE6IG5ld0l0ZW0sXG4gICAgICAgIC8vICAgYm9keTogW10sXG4gICAgICAgIC8vICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAvLyB9O1xuICAgICAgfSk7XG5cbiAgICAgIHVwZGF0ZUNhbGxiYWNrKHJlc3VsdCk7XG5cbiAgICAgIGlmIChwYWdlZFN0YXRlKSB7XG4gICAgICAgIHBhZ2VkU3RhdGUuU2tpcCArPSByZXN1bHQubGVuZ3RoO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGV4Y2VsU2VyaWFsVG9EYXRlKHNlcmlhbDogbnVtYmVyKTogRGF0ZSB7XG4gICAgMTtcbiAgICBjb25zdCBleGNlbEVwb2NoID0gbmV3IERhdGUoRGF0ZS5VVEMoMTg5OSwgMTEsIDMwKSk7XG4gICAgY29uc3QgbWlsbGlzUGVyRGF5ID0gMjQgKiA2MCAqIDYwICogMTAwMDtcblxuICAgIHJldHVybiBuZXcgRGF0ZShleGNlbEVwb2NoLmdldFRpbWUoKSArIHNlcmlhbCAqIG1pbGxpc1BlckRheSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { NgModule } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
- import { CardDataViewModule, CardModule, DataExportModule, DataTableModule, DataViewModule, DropDownModule, SortTableModule, SvgModule, TableFilterModule, VerbenaBadgeModule, VerbenaButtonModule, VerbenaInputModule, VerbenaSwitchModule, VerbenDialogueModule, VisibleColumnModule, VerbenaTextareaModule, VerbenPopUpModule, ChipModule, } from 'verben-ng-ui';
3
+ import { CardDataViewModule, CardModule, DataExportModule, DataTableModule, DataViewModule, DropDownModule, SortTableModule, SvgModule, TableFilterModule, VerbenaBadgeModule, VerbenaButtonModule, VerbenaInputModule, VerbenaSwitchModule, VerbenDialogueModule, VisibleColumnModule, VerbenaTextareaModule, VerbenPopUpModule, ChipModule, DataXportModule, DataImportModule, } from 'verben-ng-ui';
4
4
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
5
5
  import { AsyncLabelPipe } from '../pipes/async-label.pipe';
6
6
  import * as i0 from "@angular/core";
@@ -27,7 +27,9 @@ export class SharedModule {
27
27
  VerbenaSwitchModule,
28
28
  VerbenPopUpModule,
29
29
  ChipModule,
30
- AsyncLabelPipe] });
30
+ AsyncLabelPipe,
31
+ DataXportModule,
32
+ DataImportModule] });
31
33
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedModule, imports: [CommonModule, CommonModule,
32
34
  DataTableModule,
33
35
  CardModule,
@@ -48,7 +50,9 @@ export class SharedModule {
48
50
  VerbenaTextareaModule,
49
51
  VerbenaSwitchModule,
50
52
  VerbenPopUpModule,
51
- ChipModule] });
53
+ ChipModule,
54
+ DataXportModule,
55
+ DataImportModule] });
52
56
  }
53
57
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedModule, decorators: [{
54
58
  type: NgModule,
@@ -77,8 +81,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
77
81
  VerbenaSwitchModule,
78
82
  VerbenPopUpModule,
79
83
  ChipModule,
80
- AsyncLabelPipe
84
+ AsyncLabelPipe,
85
+ DataXportModule,
86
+ DataImportModule,
81
87
  ],
82
88
  }]
83
89
  }] });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL3NoYXJlZC9zaGFyZWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsY0FBYyxFQUNkLGNBQWMsRUFDZCxlQUFlLEVBQ2YsU0FBUyxFQUNULGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLFVBQVUsR0FDWCxNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQThCM0QsTUFBTSxPQUFPLFlBQVk7d0dBQVosWUFBWTt5R0FBWixZQUFZLFlBMUJiLFlBQVksRUFBRSxjQUFjLGFBRXBDLFlBQVk7WUFDWixlQUFlO1lBQ2YsVUFBVTtZQUNWLFNBQVM7WUFDVCxjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLGVBQWU7WUFDZixtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGtCQUFrQjtZQUNsQixtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLG9CQUFvQjtZQUNwQixjQUFjO1lBQ2QscUJBQXFCO1lBQ3JCLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIsVUFBVTtZQUNWLGNBQWM7eUdBR0wsWUFBWSxZQTFCYixZQUFZLEVBRXBCLFlBQVk7WUFDWixlQUFlO1lBQ2YsVUFBVTtZQUNWLFNBQVM7WUFDVCxjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLGVBQWU7WUFDZixtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGtCQUFrQjtZQUNsQixtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLG9CQUFvQjtZQUNwQixjQUFjO1lBQ2QscUJBQXFCO1lBQ3JCLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIsVUFBVTs7NEZBSUQsWUFBWTtrQkE1QnhCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUM7b0JBQ3ZDLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsVUFBVTt3QkFDVixTQUFTO3dCQUNULGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLGNBQWM7d0JBQ2QscUJBQXFCO3dCQUNyQixtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsVUFBVTt3QkFDVixjQUFjO3FCQUNmO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDYXJkRGF0YVZpZXdNb2R1bGUsXG4gIENhcmRNb2R1bGUsXG4gIERhdGFFeHBvcnRNb2R1bGUsXG4gIERhdGFUYWJsZU1vZHVsZSxcbiAgRGF0YVZpZXdNb2R1bGUsXG4gIERyb3BEb3duTW9kdWxlLFxuICBTb3J0VGFibGVNb2R1bGUsXG4gIFN2Z01vZHVsZSxcbiAgVGFibGVGaWx0ZXJNb2R1bGUsXG4gIFZlcmJlbmFCYWRnZU1vZHVsZSxcbiAgVmVyYmVuYUJ1dHRvbk1vZHVsZSxcbiAgVmVyYmVuYUlucHV0TW9kdWxlLFxuICBWZXJiZW5hU3dpdGNoTW9kdWxlLFxuICBWZXJiZW5EaWFsb2d1ZU1vZHVsZSxcbiAgVmlzaWJsZUNvbHVtbk1vZHVsZSxcbiAgVmVyYmVuYVRleHRhcmVhTW9kdWxlLFxuICBWZXJiZW5Qb3BVcE1vZHVsZSxcbiAgQ2hpcE1vZHVsZSxcbn0gZnJvbSAndmVyYmVuLW5nLXVpJztcblxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBc3luY0xhYmVsUGlwZSB9IGZyb20gJy4uL3BpcGVzL2FzeW5jLWxhYmVsLnBpcGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBc3luY0xhYmVsUGlwZV0sXG4gIGV4cG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRGF0YVRhYmxlTW9kdWxlLFxuICAgIENhcmRNb2R1bGUsXG4gICAgU3ZnTW9kdWxlLFxuICAgIERhdGFWaWV3TW9kdWxlLFxuICAgIENhcmREYXRhVmlld01vZHVsZSxcbiAgICBTb3J0VGFibGVNb2R1bGUsXG4gICAgVmlzaWJsZUNvbHVtbk1vZHVsZSxcbiAgICBUYWJsZUZpbHRlck1vZHVsZSxcbiAgICBEYXRhRXhwb3J0TW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVmVyYmVuYUlucHV0TW9kdWxlLFxuICAgIFZlcmJlbmFCdXR0b25Nb2R1bGUsXG4gICAgVmVyYmVuYUJhZGdlTW9kdWxlLFxuICAgIFZlcmJlbkRpYWxvZ3VlTW9kdWxlLFxuICAgIERyb3BEb3duTW9kdWxlLFxuICAgIFZlcmJlbmFUZXh0YXJlYU1vZHVsZSxcbiAgICBWZXJiZW5hU3dpdGNoTW9kdWxlLFxuICAgIFZlcmJlblBvcFVwTW9kdWxlLFxuICAgIENoaXBNb2R1bGUsXG4gICAgQXN5bmNMYWJlbFBpcGVcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2hhcmVkTW9kdWxlIHt9XG4iXX0=
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL3NoYXJlZC9zaGFyZWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsY0FBYyxFQUNkLGNBQWMsRUFDZCxlQUFlLEVBQ2YsU0FBUyxFQUNULGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixlQUFlLEVBQ2YsZ0JBQWdCLEdBQ2pCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBZ0MzRCxNQUFNLE9BQU8sWUFBWTt3R0FBWixZQUFZO3lHQUFaLFlBQVksWUE1QmIsWUFBWSxFQUFFLGNBQWMsYUFFcEMsWUFBWTtZQUNaLGVBQWU7WUFDZixVQUFVO1lBQ1YsU0FBUztZQUNULGNBQWM7WUFDZCxrQkFBa0I7WUFDbEIsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIsZ0JBQWdCO1lBQ2hCLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLG1CQUFtQjtZQUNuQixrQkFBa0I7WUFDbEIsb0JBQW9CO1lBQ3BCLGNBQWM7WUFDZCxxQkFBcUI7WUFDckIsbUJBQW1CO1lBQ25CLGlCQUFpQjtZQUNqQixVQUFVO1lBQ1YsY0FBYztZQUNkLGVBQWU7WUFDZixnQkFBZ0I7eUdBR1AsWUFBWSxZQTVCYixZQUFZLEVBRXBCLFlBQVk7WUFDWixlQUFlO1lBQ2YsVUFBVTtZQUNWLFNBQVM7WUFDVCxjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLGVBQWU7WUFDZixtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGtCQUFrQjtZQUNsQixtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLG9CQUFvQjtZQUNwQixjQUFjO1lBQ2QscUJBQXFCO1lBQ3JCLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIsVUFBVTtZQUVWLGVBQWU7WUFDZixnQkFBZ0I7OzRGQUdQLFlBQVk7a0JBOUJ4QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDO29CQUN2QyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixlQUFlO3dCQUNmLFVBQVU7d0JBQ1YsU0FBUzt3QkFDVCxjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsb0JBQW9CO3dCQUNwQixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsbUJBQW1CO3dCQUNuQixpQkFBaUI7d0JBQ2pCLFVBQVU7d0JBQ1YsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGdCQUFnQjtxQkFDakI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENhcmREYXRhVmlld01vZHVsZSxcbiAgQ2FyZE1vZHVsZSxcbiAgRGF0YUV4cG9ydE1vZHVsZSxcbiAgRGF0YVRhYmxlTW9kdWxlLFxuICBEYXRhVmlld01vZHVsZSxcbiAgRHJvcERvd25Nb2R1bGUsXG4gIFNvcnRUYWJsZU1vZHVsZSxcbiAgU3ZnTW9kdWxlLFxuICBUYWJsZUZpbHRlck1vZHVsZSxcbiAgVmVyYmVuYUJhZGdlTW9kdWxlLFxuICBWZXJiZW5hQnV0dG9uTW9kdWxlLFxuICBWZXJiZW5hSW5wdXRNb2R1bGUsXG4gIFZlcmJlbmFTd2l0Y2hNb2R1bGUsXG4gIFZlcmJlbkRpYWxvZ3VlTW9kdWxlLFxuICBWaXNpYmxlQ29sdW1uTW9kdWxlLFxuICBWZXJiZW5hVGV4dGFyZWFNb2R1bGUsXG4gIFZlcmJlblBvcFVwTW9kdWxlLFxuICBDaGlwTW9kdWxlLFxuICBEYXRhWHBvcnRNb2R1bGUsXG4gIERhdGFJbXBvcnRNb2R1bGUsXG59IGZyb20gJ3ZlcmJlbi1uZy11aSc7XG5cbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQXN5bmNMYWJlbFBpcGUgfSBmcm9tICcuLi9waXBlcy9hc3luYy1sYWJlbC5waXBlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQXN5bmNMYWJlbFBpcGVdLFxuICBleHBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIERhdGFUYWJsZU1vZHVsZSxcbiAgICBDYXJkTW9kdWxlLFxuICAgIFN2Z01vZHVsZSxcbiAgICBEYXRhVmlld01vZHVsZSxcbiAgICBDYXJkRGF0YVZpZXdNb2R1bGUsXG4gICAgU29ydFRhYmxlTW9kdWxlLFxuICAgIFZpc2libGVDb2x1bW5Nb2R1bGUsXG4gICAgVGFibGVGaWx0ZXJNb2R1bGUsXG4gICAgRGF0YUV4cG9ydE1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFZlcmJlbmFJbnB1dE1vZHVsZSxcbiAgICBWZXJiZW5hQnV0dG9uTW9kdWxlLFxuICAgIFZlcmJlbmFCYWRnZU1vZHVsZSxcbiAgICBWZXJiZW5EaWFsb2d1ZU1vZHVsZSxcbiAgICBEcm9wRG93bk1vZHVsZSxcbiAgICBWZXJiZW5hVGV4dGFyZWFNb2R1bGUsXG4gICAgVmVyYmVuYVN3aXRjaE1vZHVsZSxcbiAgICBWZXJiZW5Qb3BVcE1vZHVsZSxcbiAgICBDaGlwTW9kdWxlLFxuICAgIEFzeW5jTGFiZWxQaXBlLFxuICAgIERhdGFYcG9ydE1vZHVsZSxcbiAgICBEYXRhSW1wb3J0TW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTaGFyZWRNb2R1bGUge31cbiJdfQ==