imm-element-ui 0.5.1 → 0.5.3
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/esm2022/lib/form/form-type/rowselector.type.mjs +5 -5
- package/esm2022/lib/grid/actions/actions.component.mjs +3 -2
- package/esm2022/lib/grid/grid/grid.component.mjs +87 -4
- package/esm2022/lib/page-form/page-form.component.mjs +3 -3
- package/esm2022/lib/row-selector/row-selector.component.mjs +14 -6
- package/esm2022/lib/search/search/search.component.mjs +5 -8
- package/esm2022/lib/service/action.service.mjs +227 -28
- package/fesm2022/imm-element-ui.mjs +339 -50
- package/fesm2022/imm-element-ui.mjs.map +1 -1
- package/lib/grid/grid/grid.component.d.ts +6 -2
- package/lib/row-selector/row-selector.component.d.ts +3 -0
- package/lib/service/action.service.d.ts +53 -8
- package/lib/service/themeConfig.service.d.ts +1 -1
- package/package.json +1 -1
- package/src/lib/page-form/page-form.component.scss +1 -1
|
@@ -2,6 +2,145 @@ import { Injectable, signal, untracked } from '@angular/core';
|
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@angular/router";
|
|
4
4
|
export class ActionService {
|
|
5
|
+
constructor(pageAction, popAction) {
|
|
6
|
+
this.pageAction = pageAction;
|
|
7
|
+
this.popAction = popAction;
|
|
8
|
+
this.popMode = false;
|
|
9
|
+
this.page = signal(undefined);
|
|
10
|
+
this.fieldLabelAction = signal(undefined);
|
|
11
|
+
this.fieldAction = signal(undefined);
|
|
12
|
+
this.action = signal(undefined);
|
|
13
|
+
this.saveSignal = signal(false);
|
|
14
|
+
}
|
|
15
|
+
setPopMode(mode) {
|
|
16
|
+
this.popMode = mode;
|
|
17
|
+
}
|
|
18
|
+
clear() {
|
|
19
|
+
if (this.popMode) {
|
|
20
|
+
this.popAction.setSearchItem(undefined);
|
|
21
|
+
this.popAction.setSearchClear(undefined);
|
|
22
|
+
this.popAction.setSortItem(undefined);
|
|
23
|
+
this.popAction.setModelName(undefined);
|
|
24
|
+
this.popAction.clearSearch(undefined);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
this.pageAction.setSearchItem(undefined);
|
|
28
|
+
this.pageAction.setSearchClear(undefined);
|
|
29
|
+
this.pageAction.setSortItem(undefined);
|
|
30
|
+
this.pageAction.setModelName(undefined);
|
|
31
|
+
}
|
|
32
|
+
setModelName(modelNameForSearch) {
|
|
33
|
+
if (this.popMode) {
|
|
34
|
+
this.popAction.setModelName(modelNameForSearch);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
this.pageAction.setModelName(modelNameForSearch);
|
|
38
|
+
}
|
|
39
|
+
getModelName() {
|
|
40
|
+
if (this.popMode) {
|
|
41
|
+
return this.popAction.getModelName();
|
|
42
|
+
}
|
|
43
|
+
return this.pageAction.getModelName();
|
|
44
|
+
}
|
|
45
|
+
clearSearch(modelName) {
|
|
46
|
+
if (this.popMode) {
|
|
47
|
+
this.popAction.clearSearch(modelName);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
this.pageAction.clearSearch(modelName);
|
|
51
|
+
}
|
|
52
|
+
setSearch(search, modelName) {
|
|
53
|
+
if (this.popMode) {
|
|
54
|
+
this.popAction.setSearch(search, modelName);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
this.pageAction.setSearch(search, modelName);
|
|
58
|
+
}
|
|
59
|
+
getSearch(modelName) {
|
|
60
|
+
if (this.popMode) {
|
|
61
|
+
return this.popAction.getSearch(modelName);
|
|
62
|
+
}
|
|
63
|
+
return this.pageAction.getSearch(modelName);
|
|
64
|
+
}
|
|
65
|
+
searchMonitor(modelName) {
|
|
66
|
+
if (this.popMode) {
|
|
67
|
+
return this.popAction.searchMonitor(modelName);
|
|
68
|
+
}
|
|
69
|
+
return this.pageAction.searchMonitor(modelName);
|
|
70
|
+
}
|
|
71
|
+
setSearchItem(searchItem) {
|
|
72
|
+
if (this.popMode) {
|
|
73
|
+
this.popAction.setSearchItem(searchItem);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
this.pageAction.setSearchItem(searchItem);
|
|
77
|
+
}
|
|
78
|
+
getSearchItem() {
|
|
79
|
+
if (this.popMode) {
|
|
80
|
+
return this.popAction.getSearchItem();
|
|
81
|
+
}
|
|
82
|
+
return this.pageAction.getSearchItem();
|
|
83
|
+
}
|
|
84
|
+
setSearchClear(searchClear) {
|
|
85
|
+
if (this.popMode) {
|
|
86
|
+
this.popAction.setSearchClear(searchClear);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
this.pageAction.setSearchClear(searchClear);
|
|
90
|
+
}
|
|
91
|
+
getSearchClear() {
|
|
92
|
+
if (this.popMode) {
|
|
93
|
+
return this.popAction.getSearchClear();
|
|
94
|
+
}
|
|
95
|
+
return this.pageAction.getSearchClear();
|
|
96
|
+
}
|
|
97
|
+
setSortItem(sortItem) {
|
|
98
|
+
if (this.popMode) {
|
|
99
|
+
this.popAction.setSortItem(sortItem);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
this.pageAction.setSortItem(sortItem);
|
|
103
|
+
}
|
|
104
|
+
getSortItem() {
|
|
105
|
+
if (this.popMode) {
|
|
106
|
+
return this.popAction.getSortItem();
|
|
107
|
+
}
|
|
108
|
+
return this.pageAction.getSortItem();
|
|
109
|
+
}
|
|
110
|
+
setPage(page) {
|
|
111
|
+
this.page.set(page);
|
|
112
|
+
}
|
|
113
|
+
getPage() {
|
|
114
|
+
return this.page();
|
|
115
|
+
}
|
|
116
|
+
setFieldLabelAction(key, type) {
|
|
117
|
+
this.fieldLabelAction.set({ key, type });
|
|
118
|
+
}
|
|
119
|
+
getFieldLabelAction() {
|
|
120
|
+
return this.fieldLabelAction();
|
|
121
|
+
}
|
|
122
|
+
setFieldAction(field) {
|
|
123
|
+
this.fieldAction.set(field);
|
|
124
|
+
}
|
|
125
|
+
getFieldAction() {
|
|
126
|
+
return this.fieldAction();
|
|
127
|
+
}
|
|
128
|
+
setAction(action) {
|
|
129
|
+
this.action.set(action);
|
|
130
|
+
}
|
|
131
|
+
getAction() {
|
|
132
|
+
return this.action();
|
|
133
|
+
}
|
|
134
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionService, deps: [{ token: PageActionService }, { token: PopActionService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
135
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionService, providedIn: 'root' }); }
|
|
136
|
+
}
|
|
137
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionService, decorators: [{
|
|
138
|
+
type: Injectable,
|
|
139
|
+
args: [{
|
|
140
|
+
providedIn: 'root',
|
|
141
|
+
}]
|
|
142
|
+
}], ctorParameters: () => [{ type: PageActionService }, { type: PopActionService }] });
|
|
143
|
+
export class PageActionService {
|
|
5
144
|
constructor(router) {
|
|
6
145
|
this.router = router;
|
|
7
146
|
this.modelNameForSearch = signal(undefined);
|
|
@@ -9,12 +148,16 @@ export class ActionService {
|
|
|
9
148
|
this.searchItem = signal(undefined);
|
|
10
149
|
this.searchClear = signal(undefined);
|
|
11
150
|
this.sortItem = signal(undefined);
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
151
|
+
}
|
|
152
|
+
setModelName(modelNameForSearch) {
|
|
153
|
+
if (modelNameForSearch == undefined) {
|
|
154
|
+
this.modelNameForSearch.set(undefined);
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
this.modelNameForSearch.set(new String(modelNameForSearch));
|
|
158
|
+
}
|
|
159
|
+
getModelName() {
|
|
160
|
+
return this.modelNameForSearch();
|
|
18
161
|
}
|
|
19
162
|
clearSearch(modelName) {
|
|
20
163
|
if (modelName == undefined) {
|
|
@@ -31,7 +174,7 @@ export class ActionService {
|
|
|
31
174
|
const searchRow = { key: this.router.url, modelName, search };
|
|
32
175
|
let searchList = untracked(() => this.searchList()).filter((item) => item.key != searchRow.key || item.modelName != searchRow.modelName);
|
|
33
176
|
this.searchList.set([...searchList, searchRow]);
|
|
34
|
-
this.
|
|
177
|
+
this.setModelName(modelName);
|
|
35
178
|
}
|
|
36
179
|
getSearch(modelName) {
|
|
37
180
|
if (modelName == undefined) {
|
|
@@ -75,37 +218,93 @@ export class ActionService {
|
|
|
75
218
|
getSortItem() {
|
|
76
219
|
return this.sortItem();
|
|
77
220
|
}
|
|
78
|
-
|
|
79
|
-
|
|
221
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageActionService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
222
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageActionService, providedIn: 'root' }); }
|
|
223
|
+
}
|
|
224
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageActionService, decorators: [{
|
|
225
|
+
type: Injectable,
|
|
226
|
+
args: [{
|
|
227
|
+
providedIn: 'root',
|
|
228
|
+
}]
|
|
229
|
+
}], ctorParameters: () => [{ type: i1.Router }] });
|
|
230
|
+
export class PopActionService {
|
|
231
|
+
constructor() {
|
|
232
|
+
this.modelNameForSearch = signal(undefined);
|
|
233
|
+
this.searchList = signal([]);
|
|
234
|
+
this.searchItem = signal(undefined);
|
|
235
|
+
this.searchClear = signal(undefined);
|
|
236
|
+
this.sortItem = signal(undefined);
|
|
80
237
|
}
|
|
81
|
-
|
|
82
|
-
|
|
238
|
+
setModelName(modelNameForSearch) {
|
|
239
|
+
if (modelNameForSearch == undefined) {
|
|
240
|
+
this.modelNameForSearch.set(undefined);
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
this.modelNameForSearch.set(new String(modelNameForSearch));
|
|
83
244
|
}
|
|
84
|
-
|
|
85
|
-
this.
|
|
245
|
+
getModelName() {
|
|
246
|
+
return this.modelNameForSearch();
|
|
86
247
|
}
|
|
87
|
-
|
|
88
|
-
|
|
248
|
+
clearSearch(modelName) {
|
|
249
|
+
this.searchList.set([]);
|
|
89
250
|
}
|
|
90
|
-
|
|
91
|
-
|
|
251
|
+
setSearch(search, modelName) {
|
|
252
|
+
if (modelName == undefined) {
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
const searchRow = { modelName, search };
|
|
256
|
+
let searchList = untracked(() => this.searchList()).filter((item) => item.modelName != searchRow.modelName);
|
|
257
|
+
this.searchList.set([...searchList, searchRow]);
|
|
258
|
+
this.setModelName(modelName);
|
|
92
259
|
}
|
|
93
|
-
|
|
94
|
-
|
|
260
|
+
getSearch(modelName) {
|
|
261
|
+
if (modelName == undefined) {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
const result = untracked(() => this.searchList()).filter((item) => item.modelName == modelName);
|
|
265
|
+
return result.length ? result[0].search : undefined;
|
|
95
266
|
}
|
|
96
|
-
|
|
97
|
-
this.
|
|
267
|
+
searchMonitor(modelName) {
|
|
268
|
+
const searchName = this.modelNameForSearch();
|
|
269
|
+
if (searchName === undefined)
|
|
270
|
+
return true;
|
|
271
|
+
if (String(searchName) === modelName)
|
|
272
|
+
return true;
|
|
273
|
+
return false;
|
|
98
274
|
}
|
|
99
|
-
|
|
100
|
-
|
|
275
|
+
setSearchItem(searchItem) {
|
|
276
|
+
if (searchItem == undefined) {
|
|
277
|
+
this.searchItem.set(undefined);
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
this.searchItem.set({ ...searchItem });
|
|
101
281
|
}
|
|
102
|
-
|
|
103
|
-
|
|
282
|
+
getSearchItem() {
|
|
283
|
+
return this.searchItem();
|
|
284
|
+
}
|
|
285
|
+
setSearchClear(searchClear) {
|
|
286
|
+
if (searchClear == undefined) {
|
|
287
|
+
this.searchClear.set(undefined);
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
this.searchClear.set(new String(searchClear));
|
|
291
|
+
}
|
|
292
|
+
getSearchClear() {
|
|
293
|
+
return this.searchClear();
|
|
294
|
+
}
|
|
295
|
+
setSortItem(sortItem) {
|
|
296
|
+
this.sortItem.set(sortItem);
|
|
297
|
+
}
|
|
298
|
+
getSortItem() {
|
|
299
|
+
return this.sortItem();
|
|
300
|
+
}
|
|
301
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PopActionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
302
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PopActionService, providedIn: 'root' }); }
|
|
104
303
|
}
|
|
105
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
304
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PopActionService, decorators: [{
|
|
106
305
|
type: Injectable,
|
|
107
306
|
args: [{
|
|
108
307
|
providedIn: 'root',
|
|
109
308
|
}]
|
|
110
|
-
}], ctorParameters: () => [
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3NlcnZpY2UvYWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUE4QjlELE1BQU0sT0FBTyxhQUFhO0lBYXpCLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBWmxDLHVCQUFrQixHQUFHLE1BQU0sQ0FBcUIsU0FBUyxDQUFDLENBQUM7UUFDM0QsZUFBVSxHQUFHLE1BQU0sQ0FBYyxFQUFFLENBQUMsQ0FBQztRQUNyQyxlQUFVLEdBQUcsTUFBTSxDQUF5QixTQUFTLENBQUMsQ0FBQztRQUN2RCxnQkFBVyxHQUFHLE1BQU0sQ0FBcUIsU0FBUyxDQUFDLENBQUM7UUFDcEQsYUFBUSxHQUFHLE1BQU0sQ0FBdUIsU0FBUyxDQUFDLENBQUM7UUFDbkQsaUJBQVksR0FBRyxNQUFNLENBQVEsRUFBRSxDQUFDLENBQUM7UUFDakMsU0FBSSxHQUFHLE1BQU0sQ0FBbUIsU0FBUyxDQUFDLENBQUM7UUFDM0MscUJBQWdCLEdBQUcsTUFBTSxDQUErQixTQUFTLENBQUMsQ0FBQztRQUNuRSxnQkFBVyxHQUFHLE1BQU0sQ0FBd0IsU0FBUyxDQUFDLENBQUM7UUFDdkQsV0FBTSxHQUFHLE1BQU0sQ0FBcUIsU0FBUyxDQUFDLENBQUM7UUFDL0MsZUFBVSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQTtJQUVFLENBQUM7SUFFdEMsV0FBVyxDQUFDLFNBQTZCO1FBQ3hDLElBQUksU0FBUyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQzVCLE9BQU87UUFDUixDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFD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RU4sYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTZWFyY2hJdGVtIH0gZnJvbSAnLi4vc2VhcmNoL3NlYXJjaC9zZWFyY2guY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2VhcmNoIH0gZnJvbSAnLi4vYW0vYW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybUZpZWxkIH0gZnJvbSAnLi4vZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBQYWdlIH0gZnJvbSAnLi4vZ3JpZC9wYWdlci9wYWdlci5jb21wb25lbnQnO1xyXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbiB7XHJcblx0dHlwZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaFJvdyB7XHJcblx0a2V5Pzogc3RyaW5nO1xyXG5cdG1vZGVsTmFtZT86IHN0cmluZztcclxuXHRzZWFyY2g/OiBTZWFyY2g7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU29ydEl0ZW0ge1xyXG5cdGlzQXNjPzogYm9vbGVhbjtcclxuXHRmaWVsZHM/OiBzdHJpbmdbXTtcclxuXHRsYWJlbHM/OiBzdHJpbmdbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWVsZExhYmVsQWN0aW9uIHtcclxuXHRrZXk/OiBzdHJpbmc7XHJcblx0dHlwZT86ICdtb3VzZWVudGVyJyB8ICdtb3VzZWxlYXZlJyB8ICdjbGljaycgfCAnZGJsY2xpY2snO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWN0aW9uU2VydmljZSB7XHJcblx0bW9kZWxOYW1lRm9yU2VhcmNoID0gc2lnbmFsPFN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHRzZWFyY2hMaXN0ID0gc2lnbmFsPFNlYXJjaFJvd1tdPihbXSk7XHJcblx0c2VhcmNoSXRlbSA9IHNpZ25hbDxTZWFyY2hJdGVtIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG5cdHNlYXJjaENsZWFyID0gc2lnbmFsPFN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHRzb3J0SXRlbSA9IHNpZ25hbDxTb3J0SXRlbSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHRzZWxlY3RlZFJvd3MgPSBzaWduYWw8YW55W10+KFtdKTtcclxuXHRwYWdlID0gc2lnbmFsPFBhZ2UgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcblx0ZmllbGRMYWJlbEFjdGlvbiA9IHNpZ25hbDxGaWVsZExhYmVsQWN0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG5cdGZpZWxkQWN0aW9uID0gc2lnbmFsPEZvcm1GaWVsZCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHRhY3Rpb24gPSBzaWduYWw8QWN0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG5cdHNhdmVTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpXHJcblxyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHt9XHJcblxyXG5cdGNsZWFyU2VhcmNoKG1vZGVsTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcblx0XHRpZiAobW9kZWxOYW1lID09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjb25zdCBrZXkgPSB0aGlzLnJvdXRlci51cmw7XHJcblx0XHRsZXQgc2VhcmNoTGlzdCA9IHVudHJhY2tlZCgoKSA9PiB0aGlzLnNlYXJjaExpc3QoKSkuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmtleSAhPSBrZXkgfHwgaXRlbS5tb2RlbE5hbWUgIT0gbW9kZWxOYW1lKTtcclxuXHRcdHRoaXMuc2VhcmNoTGlzdC5zZXQoWy4uLnNlYXJjaExpc3RdKTtcclxuXHR9XHJcblx0c2V0U2VhcmNoKHNlYXJjaDogU2VhcmNoLCBtb2RlbE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG5cdFx0aWYgKG1vZGVsTmFtZSA9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3Qgc2VhcmNoUm93ID0geyBrZXk6IHRoaXMucm91dGVyLnVybCwgbW9kZWxOYW1lLCBzZWFyY2ggfTtcclxuXHRcdGxldCBzZWFyY2hMaXN0ID0gdW50cmFja2VkKCgpID0+IHRoaXMuc2VhcmNoTGlzdCgpKS5maWx0ZXIoXHJcblx0XHRcdChpdGVtKSA9PiBpdGVtLmtleSAhPSBzZWFyY2hSb3cua2V5IHx8IGl0ZW0ubW9kZWxOYW1lICE9IHNlYXJjaFJvdy5tb2RlbE5hbWUsXHJcblx0XHQpO1xyXG5cdFx0dGhpcy5zZWFyY2hMaXN0LnNldChbLi4uc2VhcmNoTGlzdCwgc2VhcmNoUm93XSk7XHJcblx0XHR0aGlzLm1vZGVsTmFtZUZvclNlYXJjaC5zZXQobmV3IFN0cmluZyhtb2RlbE5hbWUpKTtcclxuXHR9XHJcblx0Z2V0U2VhcmNoKG1vZGVsTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogU2VhcmNoIHwgdW5kZWZpbmVkIHtcclxuXHRcdGlmIChtb2RlbE5hbWUgPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGNvbnN0IGtleSA9IHRoaXMucm91dGVyLnVybDtcclxuXHRcdGNvbnN0IHJlc3VsdCA9IHVudHJhY2tlZCgoKSA9PiB0aGlzLnNlYXJjaExpc3QoKSkuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmtleSA9PSBrZXkgJiYgaXRlbS5tb2RlbE5hbWUgPT0gbW9kZWxOYW1lKTtcclxuXHRcdHJldHVybiByZXN1bHQubGVuZ3RoID8gcmVzdWx0WzBdLnNlYXJjaCA6IHVuZGVmaW5lZDtcclxuXHR9XHJcblx0c2VhcmNoTW9uaXRvcihtb2RlbE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xyXG5cdFx0Y29uc3Qgc2VhcmNoTmFtZSA9IHRoaXMubW9kZWxOYW1lRm9yU2VhcmNoKCk7XHJcblx0XHRpZiAoc2VhcmNoTmFtZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdHJ1ZTtcclxuXHRcdGlmIChTdHJpbmcoc2VhcmNoTmFtZSkgPT09IG1vZGVsTmFtZSkgcmV0dXJuIHRydWU7XHJcblx0XHRyZXR1cm4gZmFsc2U7XHJcblx0fVxyXG5cdHNldFNlYXJjaEl0ZW0oc2VhcmNoSXRlbTogU2VhcmNoSXRlbSB8IHVuZGVmaW5lZCkge1xyXG5cdFx0aWYgKHNlYXJjaEl0ZW0gPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdHRoaXMuc2VhcmNoSXRlbS5zZXQodW5kZWZpbmVkKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5zZWFyY2hJdGVtLnNldCh7IC4uLnNlYXJjaEl0ZW0gfSk7XHJcblx0fVxyXG5cdGdldFNlYXJjaEl0ZW0oKTogU2VhcmNoSXRlbSB8IHVuZGVmaW5lZCB7XHJcblx0XHRyZXR1cm4gdGhpcy5zZWFyY2hJdGVtKCk7XHJcblx0fVxyXG5cdHNldFNlYXJjaENsZWFyKHNlYXJjaENsZWFyOiBTdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuXHRcdGlmIChzZWFyY2hDbGVhciA9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0dGhpcy5zZWFyY2hDbGVhci5zZXQodW5kZWZpbmVkKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5zZWFyY2hDbGVhci5zZXQobmV3IFN0cmluZyhzZWFyY2hDbGVhcikpO1xyXG5cdH1cclxuXHRnZXRTZWFyY2hDbGVhcigpOiBTdHJpbmcgfCB1bmRlZmluZWQge1xyXG5cdFx0cmV0dXJuIHRoaXMuc2VhcmNoQ2xlYXIoKTtcclxuXHR9XHJcblx0c2V0U29ydEl0ZW0oc29ydEl0ZW06IFNvcnRJdGVtIHwgdW5kZWZpbmVkKSB7XHJcblx0XHR0aGlzLnNvcnRJdGVtLnNldChzb3J0SXRlbSk7XHJcblx0fVxyXG5cdGdldFNvcnRJdGVtKCk6IFNvcnRJdGVtIHwgdW5kZWZpbmVkIHtcclxuXHRcdHJldHVybiB0aGlzLnNvcnRJdGVtKCk7XHJcblx0fVxyXG5cdHNldFBhZ2UocGFnZTogUGFnZSkge1xyXG5cdFx0dGhpcy5wYWdlLnNldChwYWdlKTtcclxuXHR9XHJcblx0Z2V0UGFnZSgpOiBQYWdlIHwgdW5kZWZpbmVkIHtcclxuXHRcdHJldHVybiB0aGlzLnBhZ2UoKTtcclxuXHR9XHJcblx0c2V0RmllbGRMYWJlbEFjdGlvbihrZXk6IHN0cmluZywgdHlwZTogJ21vdXNlZW50ZXInIHwgJ21vdXNlbGVhdmUnIHwgJ2NsaWNrJyB8ICdkYmxjbGljaycpIHtcclxuXHRcdHRoaXMuZmllbGRMYWJlbEFjdGlvbi5zZXQoeyBrZXksIHR5cGUgfSk7XHJcblx0fVxyXG5cdGdldEZpZWxkTGFiZWxBY3Rpb24oKTogRmllbGRMYWJlbEFjdGlvbiB8IHVuZGVmaW5lZCB7XHJcblx0XHRyZXR1cm4gdGhpcy5maWVsZExhYmVsQWN0aW9uKCk7XHJcblx0fVxyXG5cdHNldEZpZWxkQWN0aW9uKGZpZWxkOiBGb3JtRmllbGQgfCB1bmRlZmluZWQpIHtcclxuXHRcdHRoaXMuZmllbGRBY3Rpb24uc2V0KGZpZWxkKTtcclxuXHR9XHJcblx0Z2V0RmllbGRBY3Rpb24oKTogRm9ybUZpZWxkIHwgdW5kZWZpbmVkIHtcclxuXHRcdHJldHVybiB0aGlzLmZpZWxkQWN0aW9uKCk7XHJcblx0fVxyXG5cdHNldEFjdGlvbihhY3Rpb246IEFjdGlvbiB8IHVuZGVmaW5lZCkge1xyXG5cdFx0dGhpcy5hY3Rpb24uc2V0KGFjdGlvbik7XHJcblx0fVxyXG5cdGdldEFjdGlvbigpOiBBY3Rpb24gfCB1bmRlZmluZWQge1xyXG5cdFx0cmV0dXJuIHRoaXMuYWN0aW9uKCk7XHJcblx0fVxyXG59XHJcbiJdfQ==
|
|
309
|
+
}], ctorParameters: () => [] });
|
|
310
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3NlcnZpY2UvYWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUE4QjlELE1BQU0sT0FBTyxhQUFhO0lBUXpCLFlBQ1MsVUFBNkIsRUFDN0IsU0FBMkI7UUFEM0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFDN0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFUcEMsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixTQUFJLEdBQUcsTUFBTSxDQUFtQixTQUFTLENBQUMsQ0FBQztRQUMzQyxxQkFBZ0IsR0FBRyxNQUFNLENBQStCLFNBQVMsQ0FBQyxDQUFDO1FBQ25FLGdCQUFXLEdBQUcsTUFBTSxDQUF3QixTQUFTLENBQUMsQ0FBQztRQUN2RCxXQUFNLEdBQUcsTUFBTSxDQUFxQixTQUFTLENBQUMsQ0FBQztRQUMvQyxlQUFVLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBS2pDLENBQUM7SUFDSixVQUFVLENBQUMsSUFBYTtRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0lBQ0QsS0FBSztRQUNKLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lB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QUMsUUFBOEI7UUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUNELFdBQVc7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4QixDQUFDOytHQXJFVyxnQkFBZ0I7bUhBQWhCLGdCQUFnQixjQUZoQixNQUFNOzs0RkFFTixnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsLCB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2VhcmNoSXRlbSB9IGZyb20gJy4uL3NlYXJjaC9zZWFyY2gvc2VhcmNoLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNlYXJjaCB9IGZyb20gJy4uL2FtL2FtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1GaWVsZCB9IGZyb20gJy4uL2Zvcm0vZm9ybS1maWVsZC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUGFnZSB9IGZyb20gJy4uL2dyaWQvcGFnZXIvcGFnZXIuY29tcG9uZW50JztcclxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb24ge1xyXG5cdHR5cGU6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hSb3cge1xyXG5cdGtleT86IHN0cmluZztcclxuXHRtb2RlbE5hbWU/OiBzdHJpbmc7XHJcblx0c2VhcmNoPzogU2VhcmNoO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRJdGVtIHtcclxuXHRpc0FzYz86IGJvb2xlYW47XHJcblx0ZmllbGRzPzogc3RyaW5nW107XHJcblx0bGFiZWxzPzogc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRMYWJlbEFjdGlvbiB7XHJcblx0a2V5Pzogc3RyaW5nO1xyXG5cdHR5cGU/OiAnbW91c2VlbnRlcicgfCAnbW91c2VsZWF2ZScgfCAnY2xpY2snIHwgJ2RibGNsaWNrJztcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFjdGlvblNlcnZpY2Uge1xyXG5cdHBvcE1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRwYWdlID0gc2lnbmFsPFBhZ2UgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcblx0ZmllbGRMYWJlbEFjdGlvbiA9IHNpZ25hbDxGaWVsZExhYmVsQWN0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG5cdGZpZWxkQWN0aW9uID0gc2lnbmFsPEZvcm1GaWVsZCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHRhY3Rpb24gPSBzaWduYWw8QWN0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG5cdHNhdmVTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgcGFnZUFjdGlvbjogUGFnZUFjdGlvblNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHBvcEFjdGlvbjogUG9wQWN0aW9uU2VydmljZSxcclxuXHQpIHt9XHJcblx0c2V0UG9wTW9kZShtb2RlOiBib29sZWFuKSB7XHJcblx0XHR0aGlzLnBvcE1vZGUgPSBtb2RlO1xyXG5cdH1cclxuXHRjbGVhcigpIHtcclxuXHRcdGlmICh0aGlzLnBvcE1vZGUpIHtcclxuXHRcdFx0dGhpcy5wb3BBY3Rpb24uc2V0U2VhcmNoSXRlbSh1bmRlZmluZWQpO1xyXG5cdFx0XHR0aGlzLnBvcEFjdGlvbi5zZXRTZWFyY2hDbGVhcih1bmRlZmluZWQpO1xyXG5cdFx0XHR0aGlzLnBvcEFjdGlvbi5zZXRTb3J0SXRlbSh1bmRlZmluZWQpO1xyXG5cdFx0XHR0aGlzLnBvcEFjdGlvbi5zZXRNb2RlbE5hbWUodW5kZWZpbmVkKTtcclxuXHRcdFx0dGhpcy5wb3BBY3Rpb24uY2xlYXJTZWFyY2godW5kZWZpbmVkKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5wYWdlQWN0aW9uLnNldFNlYXJjaEl0ZW0odW5kZWZpbmVkKTtcclxuXHRcdHRoaXMucGFnZUFjdGlvbi5zZXRTZWFyY2hDbGVhcih1bmRlZmluZWQpO1xyXG5cdFx0dGhpcy5wYWdlQWN0aW9uLnNldFNvcnRJdGVtKHVuZGVmaW5lZCk7XHJcblx0XHR0aGlzLnBhZ2VBY3Rpb24uc2V0TW9kZWxOYW1lKHVuZGVmaW5lZCk7XHJcblx0fVxyXG5cdHNldE1vZGVsTmFtZShtb2RlbE5hbWVGb3JTZWFyY2g6IFN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG5cdFx0aWYgKHRoaXMucG9wTW9kZSkge1xyXG5cdFx0XHR0aGlzLnBvcEFjdGlvbi5zZXRNb2RlbE5hbWUobW9kZWxOYW1lRm9yU2VhcmNoKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5wYWdlQWN0aW9uLnNldE1vZGVsTmFtZShtb2RlbE5hbWVGb3JTZWFyY2gpO1xyXG5cdH1cclxuXHRnZXRNb2RlbE5hbWUoKTogU3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuXHRcdGlmICh0aGlzLnBvcE1vZGUpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMucG9wQWN0aW9uLmdldE1vZGVsTmFtZSgpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRoaXMucGFnZUFjdGlvbi5nZXRNb2RlbE5hbWUoKTtcclxuXHR9XHJcblx0Y2xlYXJTZWFyY2gobW9kZWxOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuXHRcdGlmICh0aGlzLnBvcE1vZGUpIHtcclxuXHRcdFx0dGhpcy5wb3BBY3Rpb24uY2xlYXJTZWFyY2gobW9kZWxOYW1lKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5wYWdlQWN0aW9uLmNsZWFyU2VhcmNoKG1vZGVsTmFtZSk7XHJcblx0fVxyXG5cdHNldFNlYXJjaChzZWFyY2g6IFNlYXJjaCwgbW9kZWxOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuXHRcdGlmICh0aGlzLnBvcE1vZGUpIHtcclxuXHRcdFx0dGhpcy5wb3BBY3Rpb24uc2V0U2VhcmNoKHNlYXJjaCwgbW9kZWxOYW1lKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5wYWdlQWN0aW9uLnNldFNlYXJjaChzZWFyY2gsIG1vZGVsTmFtZSk7XHJcblx0fVxyXG5cdGdldFNlYXJjaChtb2RlbE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFNlYXJjaCB8IHVuZGVmaW5lZCB7XHJcblx0XHRpZiAodGhpcy5wb3BNb2RlKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLnBvcEFjdGlvbi5nZXRTZWFyY2gobW9kZWxOYW1lKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB0aGlzLnBhZ2VBY3Rpb24uZ2V0U2VhcmNoKG1vZGVsTmFtZSk7XHJcblx0fVxyXG5cdHNlYXJjaE1vbml0b3IobW9kZWxOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcclxuXHRcdGlmICh0aGlzLnBvcE1vZGUpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMucG9wQWN0aW9uLnNlYXJjaE1vbml0b3IobW9kZWxOYW1lKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB0aGlzLnBhZ2VBY3Rpb24uc2VhcmNoTW9uaXRvcihtb2RlbE5hbWUpO1xyXG5cdH1cclxuXHRzZXRTZWFyY2hJdGVtKHNlYXJjaEl0ZW06IFNlYXJjaEl0ZW0gfCB1bmRlZmluZWQpIHtcclxuXHRcdGlmICh0aGlzLnBvcE1vZGUpIHtcclxuXHRcdFx0dGhpcy5wb3BBY3Rpb24uc2V0U2VhcmNoSXRlbShzZWFyY2hJdGVtKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5wYWdlQWN0aW9uLnNldFNlYXJjaEl0ZW0oc2VhcmNoSXRlbSk7XHJcblx0fVxyXG5cdGdldFNlYXJjaEl0ZW0oKTogU2VhcmNoSXRlbSB8IHVuZGVmaW5lZCB7XHJcblx0XHRpZiAodGhpcy5wb3BNb2RlKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLnBvcEFjdGlvbi5nZXRTZWFyY2hJdGVtKCk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gdGhpcy5wYWdlQWN0aW9uLmdldFNlYXJjaEl0ZW0oKTtcclxuXHR9XHJcblx0c2V0U2VhcmNoQ2xlYXIoc2VhcmNoQ2xlYXI6IFN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG5cdFx0aWYgKHRoaXMucG9wTW9kZSkge1xyXG5cdFx0XHR0aGlzLnBvcEFjdGlvbi5zZXRTZWFyY2hDbGVhcihzZWFyY2hDbGVhcik7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHRoaXMucGFnZUFjdGlvbi5zZXRTZWFyY2hDbGVhcihzZWFyY2hDbGVhcik7XHJcblx0fVxyXG5cdGdldFNlYXJjaENsZWFyKCk6IFN0cmluZyB8IHVuZGVmaW5lZCB7XHJcblx0XHRpZiAodGhpcy5wb3BNb2RlKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLnBvcEFjdGlvbi5nZXRTZWFyY2hDbGVhcigpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRoaXMucGFnZUFjdGlvbi5nZXRTZWFyY2hDbGVhcigpO1xyXG5cdH1cclxuXHRzZXRTb3J0SXRlbShzb3J0SXRlbTogU29ydEl0ZW0gfCB1bmRlZmluZWQpIHtcclxuXHRcdGlmICh0aGlzLnBvcE1vZGUpIHtcclxuXHRcdFx0dGhpcy5wb3BBY3Rpb24uc2V0U29ydEl0ZW0oc29ydEl0ZW0pO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLnBhZ2VBY3Rpb24uc2V0U29ydEl0ZW0oc29ydEl0ZW0pO1xyXG5cdH1cclxuXHRnZXRTb3J0SXRlbSgpOiBTb3J0SXRlbSB8IHVuZGVmaW5lZCB7XHJcblx0XHRpZiAodGhpcy5wb3BNb2RlKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLnBvcEFjdGlvbi5nZXRTb3J0SXRlbSgpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRoaXMucGFnZUFjdGlvbi5nZXRTb3J0SXRlbSgpO1xyXG5cdH1cclxuXHRzZXRQYWdlKHBhZ2U6IFBhZ2UpIHtcclxuXHRcdHRoaXMucGFnZS5zZXQocGFnZSk7XHJcblx0fVxyXG5cdGdldFBhZ2UoKTogUGFnZSB8IHVuZGVmaW5lZCB7XHJcblx0XHRyZXR1cm4gdGhpcy5wYWdlKCk7XHJcblx0fVxyXG5cdHNldEZpZWxkTGFiZWxBY3Rpb24oa2V5OiBzdHJpbmcsIHR5cGU6ICdtb3VzZWVudGVyJyB8ICdtb3VzZWxlYXZlJyB8ICdjbGljaycgfCAnZGJsY2xpY2snKSB7XHJcblx0XHR0aGlzLmZpZWxkTGFiZWxBY3Rpb24uc2V0KHsga2V5LCB0eXBlIH0pO1xyXG5cdH1cclxuXHRnZXRGaWVsZExhYmVsQWN0aW9uKCk6IEZpZWxkTGFiZWxBY3Rpb24gfCB1bmRlZmluZWQge1xyXG5cdFx0cmV0dXJuIHRoaXMuZmllbGRMYWJlbEFjdGlvbigpO1xyXG5cdH1cclxuXHRzZXRGaWVsZEFjdGlvbihmaWVsZDogRm9ybUZpZWxkIHwgdW5kZWZpbmVkKSB7XHJcblx0XHR0aGlzLmZpZWxkQWN0aW9uLnNldChmaWVsZCk7XHJcblx0fVxyXG5cdGdldEZpZWxkQWN0aW9uKCk6IEZvcm1GaWVsZCB8IHVuZGVmaW5lZCB7XHJcblx0XHRyZXR1cm4gdGhpcy5maWVsZEFjdGlvbigpO1xyXG5cdH1cclxuXHRzZXRBY3Rpb24oYWN0aW9uOiBBY3Rpb24gfCB1bmRlZmluZWQpIHtcclxuXHRcdHRoaXMuYWN0aW9uLnNldChhY3Rpb24pO1xyXG5cdH1cclxuXHRnZXRBY3Rpb24oKTogQWN0aW9uIHwgdW5kZWZpbmVkIHtcclxuXHRcdHJldHVybiB0aGlzLmFjdGlvbigpO1xyXG5cdH1cclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2VBY3Rpb25TZXJ2aWNlIHtcclxuXHRtb2RlbE5hbWVGb3JTZWFyY2ggPSBzaWduYWw8U3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG5cdHNlYXJjaExpc3QgPSBzaWduYWw8U2VhcmNoUm93W10+KFtdKTtcclxuXHRzZWFyY2hJdGVtID0gc2lnbmFsPFNlYXJjaEl0ZW0gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcblx0c2VhcmNoQ2xlYXIgPSBzaWduYWw8U3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG5cdHNvcnRJdGVtID0gc2lnbmFsPFNvcnRJdGVtIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7fVxyXG5cclxuXHRzZXRNb2RlbE5hbWUobW9kZWxOYW1lRm9yU2VhcmNoOiBTdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuXHRcdGlmIChtb2RlbE5hbWVGb3JTZWFyY2ggPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdHRoaXMubW9kZWxOYW1lRm9yU2VhcmNoLnNldCh1bmRlZmluZWQpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLm1vZGVsTmFtZUZvclNlYXJjaC5zZXQobmV3IFN0cmluZyhtb2RlbE5hbWVGb3JTZWFyY2gpKTtcclxuXHR9XHJcblx0Z2V0TW9kZWxOYW1lKCk6IFN0cmluZyB8IHVuZGVmaW5lZCB7XHJcblx0XHRyZXR1cm4gdGhpcy5tb2RlbE5hbWVGb3JTZWFyY2goKTtcclxuXHR9XHJcblx0Y2xlYXJTZWFyY2gobW9kZWxOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuXHRcdGlmIChtb2RlbE5hbWUgPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGNvbnN0IGtleSA9IHRoaXMucm91dGVyLnVybDtcclxuXHRcdGxldCBzZWFyY2hMaXN0ID0gdW50cmFja2VkKCgpID0+IHRoaXMuc2VhcmNoTGlzdCgpKS5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ua2V5ICE9IGtleSB8fCBpdGVtLm1vZGVsTmFtZSAhPSBtb2RlbE5hbWUpO1xyXG5cdFx0dGhpcy5zZWFyY2hMaXN0LnNldChbLi4uc2VhcmNoTGlzdF0pO1xyXG5cdH1cclxuXHRzZXRTZWFyY2goc2VhcmNoOiBTZWFyY2gsIG1vZGVsTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcblx0XHRpZiAobW9kZWxOYW1lID09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjb25zdCBzZWFyY2hSb3cgPSB7IGtleTogdGhpcy5yb3V0ZXIudXJsLCBtb2RlbE5hbWUsIHNlYXJjaCB9O1xyXG5cdFx0bGV0IHNlYXJjaExpc3QgPSB1bnRyYWNrZWQoKCkgPT4gdGhpcy5zZWFyY2hMaXN0KCkpLmZpbHRlcihcclxuXHRcdFx0KGl0ZW0pID0+IGl0ZW0ua2V5ICE9IHNlYXJjaFJvdy5rZXkgfHwgaXRlbS5tb2RlbE5hbWUgIT0gc2VhcmNoUm93Lm1vZGVsTmFtZSxcclxuXHRcdCk7XHJcblx0XHR0aGlzLnNlYXJjaExpc3Quc2V0KFsuLi5zZWFyY2hMaXN0LCBzZWFyY2hSb3ddKTtcclxuXHRcdHRoaXMuc2V0TW9kZWxOYW1lKG1vZGVsTmFtZSk7XHJcblx0fVxyXG5cdGdldFNlYXJjaChtb2RlbE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFNlYXJjaCB8IHVuZGVmaW5lZCB7XHJcblx0XHRpZiAobW9kZWxOYW1lID09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjb25zdCBrZXkgPSB0aGlzLnJvdXRlci51cmw7XHJcblx0XHRjb25zdCByZXN1bHQgPSB1bnRyYWNrZWQoKCkgPT4gdGhpcy5zZWFyY2hMaXN0KCkpLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5rZXkgPT0ga2V5ICYmIGl0ZW0ubW9kZWxOYW1lID09IG1vZGVsTmFtZSk7XHJcblx0XHRyZXR1cm4gcmVzdWx0Lmxlbmd0aCA/IHJlc3VsdFswXS5zZWFyY2ggOiB1bmRlZmluZWQ7XHJcblx0fVxyXG5cdHNlYXJjaE1vbml0b3IobW9kZWxOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcclxuXHRcdGNvbnN0IHNlYXJjaE5hbWUgPSB0aGlzLm1vZGVsTmFtZUZvclNlYXJjaCgpO1xyXG5cdFx0aWYgKHNlYXJjaE5hbWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHRydWU7XHJcblx0XHRpZiAoU3RyaW5nKHNlYXJjaE5hbWUpID09PSBtb2RlbE5hbWUpIHJldHVybiB0cnVlO1xyXG5cdFx0cmV0dXJuIGZhbHNlO1xyXG5cdH1cclxuXHRzZXRTZWFyY2hJdGVtKHNlYXJjaEl0ZW06IFNlYXJjaEl0ZW0gfCB1bmRlZmluZWQpIHtcclxuXHRcdGlmIChzZWFyY2hJdGVtID09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHR0aGlzLnNlYXJjaEl0ZW0uc2V0KHVuZGVmaW5lZCk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHRoaXMuc2VhcmNoSXRlbS5zZXQoeyAuLi5zZWFyY2hJdGVtIH0pO1xyXG5cdH1cclxuXHRnZXRTZWFyY2hJdGVtKCk6IFNlYXJjaEl0ZW0gfCB1bmRlZmluZWQge1xyXG5cdFx0cmV0dXJuIHRoaXMuc2VhcmNoSXRlbSgpO1xyXG5cdH1cclxuXHRzZXRTZWFyY2hDbGVhcihzZWFyY2hDbGVhcjogU3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcblx0XHRpZiAoc2VhcmNoQ2xlYXIgPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdHRoaXMuc2VhcmNoQ2xlYXIuc2V0KHVuZGVmaW5lZCk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHRoaXMuc2VhcmNoQ2xlYXIuc2V0KG5ldyBTdHJpbmcoc2VhcmNoQ2xlYXIpKTtcclxuXHR9XHJcblx0Z2V0U2VhcmNoQ2xlYXIoKTogU3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuXHRcdHJldHVybiB0aGlzLnNlYXJjaENsZWFyKCk7XHJcblx0fVxyXG5cdHNldFNvcnRJdGVtKHNvcnRJdGVtOiBTb3J0SXRlbSB8IHVuZGVmaW5lZCkge1xyXG5cdFx0dGhpcy5zb3J0SXRlbS5zZXQoc29ydEl0ZW0pO1xyXG5cdH1cclxuXHRnZXRTb3J0SXRlbSgpOiBTb3J0SXRlbSB8IHVuZGVmaW5lZCB7XHJcblx0XHRyZXR1cm4gdGhpcy5zb3J0SXRlbSgpO1xyXG5cdH1cclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBvcEFjdGlvblNlcnZpY2Uge1xyXG5cdG1vZGVsTmFtZUZvclNlYXJjaCA9IHNpZ25hbDxTdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcblx0c2VhcmNoTGlzdCA9IHNpZ25hbDxTZWFyY2hSb3dbXT4oW10pO1xyXG5cdHNlYXJjaEl0ZW0gPSBzaWduYWw8U2VhcmNoSXRlbSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHRzZWFyY2hDbGVhciA9IHNpZ25hbDxTdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcblx0c29ydEl0ZW0gPSBzaWduYWw8U29ydEl0ZW0gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkge31cclxuXHJcblx0c2V0TW9kZWxOYW1lKG1vZGVsTmFtZUZvclNlYXJjaDogU3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcblx0XHRpZiAobW9kZWxOYW1lRm9yU2VhcmNoID09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHR0aGlzLm1vZGVsTmFtZUZvclNlYXJjaC5zZXQodW5kZWZpbmVkKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5tb2RlbE5hbWVGb3JTZWFyY2guc2V0KG5ldyBTdHJpbmcobW9kZWxOYW1lRm9yU2VhcmNoKSk7XHJcblx0fVxyXG5cdGdldE1vZGVsTmFtZSgpOiBTdHJpbmcgfCB1bmRlZmluZWQge1xyXG5cdFx0cmV0dXJuIHRoaXMubW9kZWxOYW1lRm9yU2VhcmNoKCk7XHJcblx0fVxyXG5cdGNsZWFyU2VhcmNoKG1vZGVsTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcblx0XHR0aGlzLnNlYXJjaExpc3Quc2V0KFtdKTtcclxuXHR9XHJcblx0c2V0U2VhcmNoKHNlYXJjaDogU2VhcmNoLCBtb2RlbE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG5cdFx0aWYgKG1vZGVsTmFtZSA9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3Qgc2VhcmNoUm93ID0geyBtb2RlbE5hbWUsIHNlYXJjaCB9O1xyXG5cdFx0bGV0IHNlYXJjaExpc3QgPSB1bnRyYWNrZWQoKCkgPT4gdGhpcy5zZWFyY2hMaXN0KCkpLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5tb2RlbE5hbWUgIT0gc2VhcmNoUm93Lm1vZGVsTmFtZSk7XHJcblx0XHR0aGlzLnNlYXJjaExpc3Quc2V0KFsuLi5zZWFyY2hMaXN0LCBzZWFyY2hSb3ddKTtcclxuXHRcdHRoaXMuc2V0TW9kZWxOYW1lKG1vZGVsTmFtZSk7XHJcblx0fVxyXG5cdGdldFNlYXJjaChtb2RlbE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFNlYXJjaCB8IHVuZGVmaW5lZCB7XHJcblx0XHRpZiAobW9kZWxOYW1lID09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjb25zdCByZXN1bHQgPSB1bnRyYWNrZWQoKCkgPT4gdGhpcy5zZWFyY2hMaXN0KCkpLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5tb2RlbE5hbWUgPT0gbW9kZWxOYW1lKTtcclxuXHRcdHJldHVybiByZXN1bHQubGVuZ3RoID8gcmVzdWx0WzBdLnNlYXJjaCA6IHVuZGVmaW5lZDtcclxuXHR9XHJcblx0c2VhcmNoTW9uaXRvcihtb2RlbE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xyXG5cdFx0Y29uc3Qgc2VhcmNoTmFtZSA9IHRoaXMubW9kZWxOYW1lRm9yU2VhcmNoKCk7XHJcblx0XHRpZiAoc2VhcmNoTmFtZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdHJ1ZTtcclxuXHRcdGlmIChTdHJpbmcoc2VhcmNoTmFtZSkgPT09IG1vZGVsTmFtZSkgcmV0dXJuIHRydWU7XHJcblx0XHRyZXR1cm4gZmFsc2U7XHJcblx0fVxyXG5cdHNldFNlYXJjaEl0ZW0oc2VhcmNoSXRlbTogU2VhcmNoSXRlbSB8IHVuZGVmaW5lZCkge1xyXG5cdFx0aWYgKHNlYXJjaEl0ZW0gPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdHRoaXMuc2VhcmNoSXRlbS5zZXQodW5kZWZpbmVkKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5zZWFyY2hJdGVtLnNldCh7IC4uLnNlYXJjaEl0ZW0gfSk7XHJcblx0fVxyXG5cdGdldFNlYXJjaEl0ZW0oKTogU2VhcmNoSXRlbSB8IHVuZGVmaW5lZCB7XHJcblx0XHRyZXR1cm4gdGhpcy5zZWFyY2hJdGVtKCk7XHJcblx0fVxyXG5cdHNldFNlYXJjaENsZWFyKHNlYXJjaENsZWFyOiBTdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuXHRcdGlmIChzZWFyY2hDbGVhciA9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0dGhpcy5zZWFyY2hDbGVhci5zZXQodW5kZWZpbmVkKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5zZWFyY2hDbGVhci5zZXQobmV3IFN0cmluZyhzZWFyY2hDbGVhcikpO1xyXG5cdH1cclxuXHRnZXRTZWFyY2hDbGVhcigpOiBTdHJpbmcgfCB1bmRlZmluZWQge1xyXG5cdFx0cmV0dXJuIHRoaXMuc2VhcmNoQ2xlYXIoKTtcclxuXHR9XHJcblx0c2V0U29ydEl0ZW0oc29ydEl0ZW06IFNvcnRJdGVtIHwgdW5kZWZpbmVkKSB7XHJcblx0XHR0aGlzLnNvcnRJdGVtLnNldChzb3J0SXRlbSk7XHJcblx0fVxyXG5cdGdldFNvcnRJdGVtKCk6IFNvcnRJdGVtIHwgdW5kZWZpbmVkIHtcclxuXHRcdHJldHVybiB0aGlzLnNvcnRJdGVtKCk7XHJcblx0fVxyXG59XHJcbiJdfQ==
|