@rangertechnologies/ngnxt 2.1.108 → 2.1.110
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/environments/version.d.ts +11 -0
- package/esm2022/environments/version.mjs +15 -0
- package/esm2022/lib/pages/builder/element/element.component.mjs +51 -33
- package/esm2022/lib/pages/builder/properties/properties.component.mjs +115 -40
- package/esm2022/lib/services/form-builder.service.mjs +72 -31
- package/fesm2022/rangertechnologies-ngnxt.mjs +249 -101
- package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
- package/lib/pages/builder/element/element.component.d.ts +3 -0
- package/lib/pages/builder/properties/properties.component.d.ts +19 -65
- package/lib/services/form-builder.service.d.ts +8 -0
- package/package.json +1 -1
- package/rangertechnologies-ngnxt-2.1.110.tgz +0 -0
- package/rangertechnologies-ngnxt-2.1.108.tgz +0 -0
|
@@ -7,12 +7,14 @@ export class FormBuilderService {
|
|
|
7
7
|
formElements = [];
|
|
8
8
|
formElementsSubject = new BehaviorSubject([]);
|
|
9
9
|
selectedElementSubject = new BehaviorSubject(-1);
|
|
10
|
+
selectHeaderSubject = new BehaviorSubject(null);
|
|
10
11
|
elementComponent = null;
|
|
11
12
|
book;
|
|
12
13
|
unique_id;
|
|
13
14
|
tempElem;
|
|
14
15
|
formElements$ = this.formElementsSubject.asObservable();
|
|
15
16
|
selectedElement$ = this.selectedElementSubject.asObservable();
|
|
17
|
+
selectHeaderSubject$ = this.selectHeaderSubject.asObservable();
|
|
16
18
|
// book: { bookQuestionsMap: { unique_id: { subQuestions: any[]; }; }; };
|
|
17
19
|
constructor() {
|
|
18
20
|
// Load saved elements from localStorage
|
|
@@ -21,9 +23,30 @@ export class FormBuilderService {
|
|
|
21
23
|
if (savedFormElements) {
|
|
22
24
|
this.formElements = JSON.parse(savedFormElements);
|
|
23
25
|
this.formElementsSubject.next([...this.formElements]);
|
|
24
|
-
// this.book = JSON.parse(localStorage.getItem('book') || '{}');
|
|
25
26
|
this.unique_id = localStorage.getItem('unique_id');
|
|
26
27
|
}
|
|
28
|
+
this.unique_id = localStorage.getItem('unique_id');
|
|
29
|
+
if (localStorage.getItem('status') === "new") {
|
|
30
|
+
this.unique_id = uuidv4();
|
|
31
|
+
this.book = {
|
|
32
|
+
'bookQuestionsMap': {
|
|
33
|
+
[this.unique_id]: {
|
|
34
|
+
'subQuestions': []
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
'questionbook': {
|
|
38
|
+
"action": "[{\"name\": \"Cancel\", \"eventtoemit\": \"close\", \"alt\":\"\"},{\"name\": \"Save\", \"eventtoemit\": \"submit\", \"alt\":\"\",\"endpoint\":\"\",\"method\":\"POST\"}]"
|
|
39
|
+
},
|
|
40
|
+
'records': [{
|
|
41
|
+
'id': this.unique_id,
|
|
42
|
+
'title': 'Untitled',
|
|
43
|
+
'subQuestions': [{}]
|
|
44
|
+
}]
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
intializeBook(book) {
|
|
49
|
+
this.book = book;
|
|
27
50
|
}
|
|
28
51
|
// AP 26FEB25 - clear the form elements
|
|
29
52
|
clearElements() {
|
|
@@ -47,34 +70,27 @@ export class FormBuilderService {
|
|
|
47
70
|
// this.formElements = JSON.parse(savedFormElements);
|
|
48
71
|
// this.formElementsSubject.next([...this.formElements]);
|
|
49
72
|
// this.book = JSON.parse(localStorage.getItem('book') || '{}');
|
|
50
|
-
this.book
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
},
|
|
72
|
-
'records': [{
|
|
73
|
-
'id': this.unique_id,
|
|
74
|
-
'subQuestions': [{}]
|
|
75
|
-
}]
|
|
76
|
-
};
|
|
77
|
-
}
|
|
73
|
+
// if(localStorage.getItem('status') == "edit" && this.book !== undefined){
|
|
74
|
+
// this.unique_id = localStorage.getItem('unique_id');
|
|
75
|
+
// this.book = {
|
|
76
|
+
// 'bookQuestionsMap': {
|
|
77
|
+
// [this.unique_id]: {
|
|
78
|
+
// 'subQuestions': []
|
|
79
|
+
// }
|
|
80
|
+
// }
|
|
81
|
+
// };
|
|
82
|
+
// if(this.book.questionbook == undefined){
|
|
83
|
+
// this.book['questionbook'] = {
|
|
84
|
+
// "action": "[{\"name\": \"Cancel\", \"eventtoemit\": \"close\", \"alt\":\"\"},{\"name\": \"Save\", \"eventtoemit\": \"submit\", \"alt\":\"\",\"endpoint\":\"\",\"method\":\"POST\"}]"
|
|
85
|
+
// }
|
|
86
|
+
// }
|
|
87
|
+
// if(this.book.records == undefined){
|
|
88
|
+
// this.book['records'] = [{
|
|
89
|
+
// 'id': this.unique_id,
|
|
90
|
+
// 'subQuestions': [{}]
|
|
91
|
+
// }]
|
|
92
|
+
// }
|
|
93
|
+
// }
|
|
78
94
|
// this.unique_id = uuidv4();
|
|
79
95
|
// localStorage.setItem('book', JSON.stringify(this.book));
|
|
80
96
|
localStorage.setItem('unique_id', this.unique_id);
|
|
@@ -104,6 +120,11 @@ export class FormBuilderService {
|
|
|
104
120
|
const questionText = updatedElement.questionText.replace(/\s*\*+$/, '');
|
|
105
121
|
updatedElement.questionText = updates.required ? `${questionText} *` : questionText;
|
|
106
122
|
}
|
|
123
|
+
if (elements[index]) {
|
|
124
|
+
elements[index] = { ...elements[index], ...updates };
|
|
125
|
+
this.formElements = elements;
|
|
126
|
+
this.formElementsSubject.next([...this.formElements]);
|
|
127
|
+
}
|
|
107
128
|
}
|
|
108
129
|
// Handle special cases
|
|
109
130
|
if (updates.required === true && updatedElement.questionText && !updatedElement.questionText.endsWith('*')) {
|
|
@@ -117,22 +138,42 @@ export class FormBuilderService {
|
|
|
117
138
|
// localStorage.setItem('formElements', JSON.stringify(this.formElements));
|
|
118
139
|
}
|
|
119
140
|
}
|
|
141
|
+
updateTitle(event) {
|
|
142
|
+
//AP-10MAR25 Updates the title of the first record in the book
|
|
143
|
+
this.book.records[0].title = event;
|
|
144
|
+
}
|
|
120
145
|
setSelectedElement(index) {
|
|
121
146
|
this.selectedElementSubject.next(index);
|
|
122
147
|
}
|
|
148
|
+
selectHeading(event) {
|
|
149
|
+
//AP-10MAR25 Emits the selected heading event
|
|
150
|
+
this.selectHeaderSubject.next(event);
|
|
151
|
+
}
|
|
123
152
|
getElements() {
|
|
124
153
|
return this.formElements.map(element => ({
|
|
125
154
|
...element,
|
|
126
155
|
options: element.options || [],
|
|
127
156
|
}));
|
|
128
157
|
}
|
|
158
|
+
sortElementsByOrder() {
|
|
159
|
+
//AP-10MAR25 Sort elements by current order
|
|
160
|
+
this.formElements.sort((a, b) => a.order - b.order);
|
|
161
|
+
this.formElements.forEach((element, index) => {
|
|
162
|
+
element.order = index + 1;
|
|
163
|
+
});
|
|
164
|
+
this.formElementsSubject.next([...this.formElements]);
|
|
165
|
+
}
|
|
166
|
+
//AP-10MAR25 Returns the current book data
|
|
167
|
+
getBook() {
|
|
168
|
+
return this.book;
|
|
169
|
+
}
|
|
129
170
|
// In FormBuilderService
|
|
130
171
|
downloadElement() {
|
|
131
172
|
this.book.bookQuestionsMap[this.unique_id].subQuestions = this.formElements;
|
|
132
173
|
console.log('book', this.book.bookQuestionsMap[this.unique_id].subQuestions);
|
|
133
174
|
let tempElement = {};
|
|
134
175
|
this.formElements.forEach((element) => {
|
|
135
|
-
if (element.type === 'Dropdown' || element.type === 'Radio' || element.type === '
|
|
176
|
+
if (element.type === 'Dropdown' || element.type === 'Radio' || element.type === 'Checkbox') {
|
|
136
177
|
//AP 25FEB25 - Store the entire question with its options under its ID
|
|
137
178
|
tempElement[element.id] = {
|
|
138
179
|
...element,
|
|
@@ -170,4 +211,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
170
211
|
providedIn: 'root',
|
|
171
212
|
}]
|
|
172
213
|
}], ctorParameters: () => [] });
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idWlsZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvc2VydmljZXMvZm9ybS1idWlsZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYTtBQUNiLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUF1RHBDLE1BQU0sT0FBTyxrQkFBa0I7SUFDckIsWUFBWSxHQUFrQixFQUFFLENBQUM7SUFDakMsbUJBQW1CLEdBQUcsSUFBSSxlQUFlLENBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQzdELHNCQUFzQixHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsZ0JBQWdCLEdBQTRCLElBQUksQ0FBQztJQUN6RCxJQUFJLENBQUs7SUFDVCxTQUFTLENBQU07SUFDZixRQUFRLENBQVE7SUFFaEIsYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4RCxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDOUQseUVBQXlFO0lBRXpFO1FBQ0Usd0NBQXdDO1FBQ3pDLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLE1BQU0saUJBQWlCLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvRCxJQUFJLGlCQUFpQixFQUFHLENBQUM7WUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUks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UCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQVAgMjJKQU4yNVxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFbGVtZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vcGFnZXMvYnVpbGRlci9lbGVtZW50L2VsZW1lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW50ZXJmYWNlIEZvcm1FbGVtZW50IHtcbiAgaWQ6IGFueTtcbiAgbmFtZTogYW55O1xuICB2YWx1ZT86IGFueTtcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICB0eXBlOiBzdHJpbmc7XG4gIHF1ZXN0aW9uVGV4dD86IHN0cmluZztcbiAgcXVlc3Rpb24/OiBzdHJpbmc7XG4gIGhlbHBUZXh0Pzogc3RyaW5nO1xuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG4gIGlzUmVhZE9ubHk/OiBib29sZWFuO1xuICBpc0hpZGRlbj86IGJvb2xlYW47XG4gIGlzRGF0ZUJhY2t3YXJkPzogYm9vbGVhbjtcbiAgaXNEYXRlRm9yd2FyZD86IGJvb2xlYW47XG4gIGlzT3B0aW9uYWw/OiBib29sZWFuO1xuICBpc1RpdGxlPzogYm9vbGVhbjtcbiAgbmV4dFF1ZXN0aW9uPzogc3RyaW5nO1xuICBhbGxvd2VkRmlsZUV4dGVuc2lvbnM/OiBzdHJpbmc7XG4gIHF1ZXN0aW9uTnVtYmVyPzogbnVtYmVyO1xuICBxdWVzdGlvbkJvb2tJZD86IHN0cmluZztcbiAgc2l6ZT86IG51bWJlcjtcbiAgcGFyZW50UXVlc3Rpb24/OiBzdHJpbmc7XG4gIHN1YlRleHQ/OiBzdHJpbmc7XG4gIGZpZWxkc01ldGE/OiBzdHJpbmc7XG4gIHJlY29yZFR5cGVOYW1lPzogc3RyaW5nO1xuICByZWNvcmRUeXBlSWQ/OiBzdHJpbmc7XG4gIHRyYWNraW5nSWQ/OiBzdHJpbmc7XG4gIGRhdGVUZXh0Pzogc3RyaW5nO1xuICB0aW1lVGV4dD86IHN0cmluZztcbiAgcmVjb3JkSWQ/OiBzdHJpbmc7XG4gIHFiUmVmZXJlbmNlPzogc3RyaW5nO1xuICBxYlJlZmVyZW5jZVF1ZXN0aW9ucz86IHN0cmluZztcbiAgcXVlc3Rpb25Cb29rU3ViVGl0bGU/OiBzdHJpbmc7XG4gIHN0eWxlPzogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgc3ViVGl0bGU/OiBzdHJpbmc7XG4gIHJlZmVyZW5jZUZpZWxkPzogc3RyaW5nO1xuICBhZGRpdGlvbmFsUmljaENvbnRlbnQ/OiBzdHJpbmc7XG4gIGdyb3VwTmFtZT86IHN0cmluZztcbiAgeDI0SG91cnM/OiBib29sZWFuO1xuLy8gQVAgMjVGRUIyNSAtIG9wdGlvbnMgYXJyYXlcbiAgb3B0aW9ucz86IEFycmF5PHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZztcbiAgICBxdWVzdGlvbklkOiBzdHJpbmc7XG4gICAgbmV4dFF1ZXN0aW9uOiBhbnk7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGlkOiBzdHJpbmc7XG59PjtcblxufVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1CdWlsZGVyU2VydmljZSB7XG4gIHByaXZhdGUgZm9ybUVsZW1lbnRzOiBGb3JtRWxlbWVudFtdID0gW107XG4gIHByaXZhdGUgZm9ybUVsZW1lbnRzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Rm9ybUVsZW1lbnRbXT4oW10pO1xuICBwcml2YXRlIHNlbGVjdGVkRWxlbWVudFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oLTEpO1xuICBwcml2YXRlIGVsZW1lbnRDb21wb25lbnQ6IEVsZW1lbnRDb21wb25lbnQgfCBudWxsID0gbnVsbDtcbiAgYm9vazphbnk7XG4gIHVuaXF1ZV9pZDogYW55O1xuICB0ZW1wRWxlbTogYW55W107XG5cbiAgZm9ybUVsZW1lbnRzJCA9IHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgc2VsZWN0ZWRFbGVtZW50JCA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgLy8gYm9vazogeyBib29rUXVlc3Rpb25zTWFwOiB7IHVuaXF1ZV9pZDogeyBzdWJRdWVzdGlvbnM6IGFueVtdOyB9OyB9OyB9O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIExvYWQgc2F2ZWQgZWxlbWVudHMgZnJvbSBsb2NhbFN0b3JhZ2VcbiAgIHRoaXMuZm9ybUVsZW1lbnRzID0gW107XG4gICAgY29uc3Qgc2F2ZWRGb3JtRWxlbWVudHMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZm9ybUVsZW1lbnRzJyk7XG4gICAgaWYgKHNhdmVkRm9ybUVsZW1lbnRzICkge1xuICAgICAgdGhpcy5mb3JtRWxlbWVudHMgPSBKU09OLnBhcnNlKHNhdmVkRm9ybUVsZW1lbnRzKTtcbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi50aGlzLmZvcm1FbGVtZW50c10pO1xuICAgICAgLy8gdGhpcy5ib29rID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYm9vaycpIHx8ICd7fScpO1xuICAgICAgdGhpcy51bmlxdWVfaWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndW5pcXVlX2lkJyk7XG4gICAgfVxuICB9XG4gIFxuLy8gQVAgMjZGRUIyNSAtIGNsZWFyIHRoZSBmb3JtIGVsZW1lbnRzIFxuICBjbGVhckVsZW1lbnRzKCkge1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gW107XG4gICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gIH1cbiAgLy8gR2V0IHRoZSBlbGVtZW50IGNvbXBvbmVudCByZWZlcmVuY2VcbiAgZ2V0RWxlbWVudENvbXBvbmVudCgpOiBFbGVtZW50Q29tcG9uZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudENvbXBvbmVudDtcbiAgfVxuXG4gIHNldEVsZW1lbnRDb21wb25lbnQoY29tcG9uZW50OiBFbGVtZW50Q29tcG9uZW50KSB7XG4gICAgdGhpcy5lbGVtZW50Q29tcG9uZW50ID0gY29tcG9uZW50O1xuICB9XG5cbiAgLy8gQWRkIGEgbmV3IGVsZW1lbnQgdG8gdGhlIGZvcm1cbiAgYWRkRWxlbWVudChlbGVtZW50OiBGb3JtRWxlbWVudCk6IHZvaWQge1xuXG4gICAgaWYgKCFlbGVtZW50Lm9wdGlvbnMpIHtcbiAgICAgIGVsZW1lbnQub3B0aW9ucyA9IFtdOyAvLyBvcHRpb25zIGlzIGluaXRpYWxpemVkXG4gICAgfVxuXG4gICAgLy8gY29uc3Qgc2F2ZWRGb3JtRWxlbWVudHMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZm9ybUVsZW1lbnRzJyk7XG4gICAgaWYgKHRoaXMuZm9ybUVsZW1lbnRzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAvLyB0aGlzLmZvcm1FbGVtZW50cyA9IEpTT04ucGFyc2Uoc2F2ZWRGb3JtRWxlbWVudHMpO1xuICAgICAgLy8gdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gICAgICAvLyB0aGlzLmJvb2sgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdib29rJykgfHwgJ3t9Jyk7XG4gICAgICB0aGlzLmJvb2sgPSB7fTtcbiAgICAgIGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzdGF0dXMnKSA9PSBcImVkaXRcIil7XG4gICAgICAgIHRoaXMudW5pcXVlX2lkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VuaXF1ZV9pZCcpO1xuICAgICAgICB0aGlzLmJvb2sgPSB7XG4gICAgICAgICAgJ2Jvb2tRdWVzdGlvbnNNYXAnOiB7XG4gICAgICAgICAgICAgW3RoaXMudW5pcXVlX2lkXToge1xuICAgICAgICAgICAgICdzdWJRdWVzdGlvbnMnOiBbXVxuICAgICAgICAgICAgIH1cbiAgICAgICAgICAgfVxuICAgICAgICAgfTtcblxuICAgICAgIH1lbHNle1xuICAgICAgICB0aGlzLnVuaXF1ZV9pZCA9IHV1aWR2NCgpO1xuICAgICAgICB0aGlzLmJvb2sgPSB7XG4gICAgICAgICAgJ2Jvb2tRdWVzdGlvbnNNYXAnOiB7XG4gICAgICAgICAgICAgW3RoaXMudW5pcXVlX2lkXToge1xuICAgICAgICAgICAgICdzdWJRdWVzdGlvbnMnOiBbXVxuICAgICAgICAgICAgIH1cbiAgICAgICAgICAgfSxcbiAgICAgICAgICAgJ3F1ZXN0aW9uYm9vayc6IHtcbiAgICAgICAgICAgIFwiYWN0aW9uXCI6IFwiW3tcXFwibmFtZVxcXCI6IFxcXCJDYW5jZWxcXFwiLCBcXFwiZXZlbnR0b2VtaXRcXFwiOiBcXFwiY2xvc2VcXFwiLCBcXFwiYWx0XFxcIjpcXFwiXFxcIn0se1xcXCJuYW1lXFxcIjogXFxcIlNhdmVcXFwiLCBcXFwiZXZlbnR0b2VtaXRcXFwiOiBcXFwic3VibWl0XFxcIiwgXFxcImFsdFxcXCI6XFxcIlxcXCIsXFxcImVuZHBvaW50XFxcIjpcXFwiXFxcIixcXFwibWV0aG9kXFxcIjpcXFwiUE9TVFxcXCJ9XVwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAncmVjb3Jkcyc6IFt7XG4gICAgICAgICAgICAnaWQnOiB0aGlzLnVuaXF1ZV9pZCxcbiAgICAgICAgICAgICAnc3ViUXVlc3Rpb25zJzogW3t9XVxuICAgICAgICAgICAgfV1cbiAgICAgICAgIH1cblxuICAgICAgIH1cbiAgICAgIC8vIHRoaXMudW5pcXVlX2lkID0gdXVpZHY0KCk7XG5cbiAgICAgICAgLy8gbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Jvb2snLCBKU09OLnN0cmluZ2lmeSh0aGlzLmJvb2spKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3VuaXF1ZV9pZCcsIHRoaXMudW5pcXVlX2lkKTtcbiAgICB9XG4gICAgZWxlbWVudFsncXVlc3Rpb25Cb29rSWQnXSA9IHRoaXMudW5pcXVlX2lkO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgLy8gbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Zvcm1FbGVtZW50cycsIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybUVsZW1lbnRzKSk7XG4gICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gIH1cblxuICB1cGRhdGVFbGVtZW50KGluZGV4OiBudW1iZXIsIHVwZGF0ZXM6IFBhcnRpYWw8Rm9ybUVsZW1lbnQ+KSB7XG4gICAgY29uc3QgZWxlbWVudHMgPSBbLi4udGhpcy5nZXRFbGVtZW50cygpXTtcbiAgICBpZiAoZWxlbWVudHNbaW5kZXhdKSB7XG4gICAgICAgIGVsZW1lbnRzW2luZGV4XSA9IHtcbiAgICAgICAgICAuLi5lbGVtZW50c1tpbmRleF0sXG4gICAgICAgICAgLi4udXBkYXRlcyxcbiAgICAgICAgICBvcHRpb25zOiB1cGRhdGVzLm9wdGlvbnMgfHwgZWxlbWVudHNbaW5kZXhdLm9wdGlvbnMgfHwgW10sXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KGVsZW1lbnRzKTtcbiAgICAgIH1cblxuICAgIGlmIChpbmRleCA+PSAwICYmIGluZGV4IDwgdGhpcy5mb3JtRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICBjb25zdCB1cGRhdGVkRWxlbWVudCA9IHtcbiAgICAgICAgLi4udGhpcy5mb3JtRWxlbWVudHNbaW5kZXhdLFxuICAgICAgICAuLi51cGRhdGVzXG4gICAgICB9O1xuICAgICAgaWYgKHVwZGF0ZXMucmVxdWlyZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0KSB7XG4gICAgICAgICAgY29uc3QgcXVlc3Rpb25UZXh0ID0gdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0LnJlcGxhY2UoL1xccypcXCorJC8sICcnKTtcbiAgICAgICAgICB1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQgPSB1cGRhdGVzLnJlcXVpcmVkID8gYCR7cXVlc3Rpb25UZXh0fSAqYCA6IHF1ZXN0aW9uVGV4dDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgc3BlY2lhbCBjYXNlc1xuICAgICAgaWYgKHVwZGF0ZXMucmVxdWlyZWQgPT09IHRydWUgJiYgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ICYmICF1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQuZW5kc1dpdGgoJyonKSkge1xuICAgICAgICB1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQgPSBgJHt1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHR9ICpgO1xuICAgICAgfSBlbHNlIGlmICh1cGRhdGVzLnJlcXVpcmVkID09PSBmYWxzZSAmJiB1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQgJiYgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0LmVuZHNXaXRoKCcqJykpIHtcbiAgICAgICAgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ID0gdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0LnNsaWNlKDAsIC0yKTtcbiAgICB9XG5cbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XSA9IHVwZGF0ZWRFbGVtZW50O1xuICAgICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gICAgICAvLyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZm9ybUVsZW1lbnRzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtRWxlbWVudHMpKTtcbiAgICB9XG4gIH1cblxuICBzZXRTZWxlY3RlZEVsZW1lbnQoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50U3ViamVjdC5uZXh0KGluZGV4KTtcbiAgfVxuXG4gIGdldEVsZW1lbnRzKCk6IEZvcm1FbGVtZW50W10ge1xuICAgIHJldHVybiB0aGlzLmZvcm1FbGVtZW50cy5tYXAoZWxlbWVudCA9PiAoe1xuICAgICAgLi4uZWxlbWVudCxcbiAgICAgIG9wdGlvbnM6IGVsZW1lbnQub3B0aW9ucyB8fCBbXSwgICAgIFxuICAgIH0pKTtcbiAgfVxuIC8vIEluIEZvcm1CdWlsZGVyU2VydmljZVxuZG93bmxvYWRFbGVtZW50KCkge1xuICB0aGlzLmJvb2suYm9va1F1ZXN0aW9uc01hcFt0aGlzLnVuaXF1ZV9pZF0uc3ViUXVlc3Rpb25zID0gdGhpcy5mb3JtRWxlbWVudHM7XG4gIGNvbnNvbGUubG9nKCdib29rJywgdGhpcy5ib29rLmJvb2tRdWVzdGlvbnNNYXBbdGhpcy51bmlxdWVfaWRdLnN1YlF1ZXN0aW9ucyk7XG4gIGxldCB0ZW1wRWxlbWVudDogYW55ID0ge307XG5cbiAgdGhpcy5mb3JtRWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgIGlmIChlbGVtZW50LnR5cGUgPT09ICdEcm9wZG93bicgfHwgZWxlbWVudC50eXBlID09PSAnUmFkaW8nIHx8IGVsZW1lbnQudHlwZSA9PT0gJ0NoZWNrQm94Jykge1xuICAgICAgLy9BUCAyNUZFQjI1IC0gU3RvcmUgdGhlIGVudGlyZSBxdWVzdGlvbiB3aXRoIGl0cyBvcHRpb25zIHVuZGVyIGl0cyBJRFxuICAgICAgdGVtcEVsZW1lbnRbZWxlbWVudC5pZF0gPSB7XG4gICAgICAgIC4uLmVsZW1lbnQsXG4gICAgICAgIG9wdGlvbnM6IGVsZW1lbnQub3B0aW9ucyB8fCBbXVxuICAgICAgfTtcbiAgICB9XG4gIH0pO1xuXG4gIHRoaXMuYm9vay5zcU9wdGlvbnMgPSB0ZW1wRWxlbWVudDtcbiAgICByZXR1cm4gdGhpcy5ib29rO1xuICB9XG4gIC8vIEFQLTA2TUFSMjUgLSBFbGVtZW50IG5ldyBvcmRlciB1cGRhdGVcbiAgdXBkYXRlRWxlbWVudHNPcmRlcih1cGRhdGVkRWxlbWVudHM6IEZvcm1FbGVtZW50W10pOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1FbGVtZW50cyA9IFsuLi51cGRhdGVkRWxlbWVudHNdO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KHRoaXMuZm9ybUVsZW1lbnRzKTtcbiAgfVxuICAvLyBSZW1vdmUgYW4gZWxlbWVudCBieSBJRFxuICAvLyBTYXZlIGVsZW1lbnRzIHRvIGxvY2FsU3RvcmFnZSBhbmQgdXBkYXRlIHRoZSBzdWJqZWN0XG4gIHJlbW92ZUVsZW1lbnRDb21wb25lbnQoaWQ6IGFueSkge1xuICAgIHRoaXMudGVtcEVsZW0gPSBbXTtcbiAgICB0aGlzLmZvcm1FbGVtZW50cy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LmlkICE9PSBpZCkge1xuICAgICAgICB0aGlzLnRlbXBFbGVtLnB1c2goZWxlbWVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5mb3JtRWxlbWVudHMgPSB0aGlzLnRlbXBFbGVtO1xuICAgIC8vIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdmb3JtRWxlbWVudHMnLCBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm1FbGVtZW50cykpO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi50aGlzLmZvcm1FbGVtZW50c10pO1xuICB9XG59XG4iXX0=
|
|
214
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idWlsZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvc2VydmljZXMvZm9ybS1idWlsZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYTtBQUNiLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUF3RHBDLE1BQU0sT0FBTyxrQkFBa0I7SUFDckIsWUFBWSxHQUFrQixFQUFFLENBQUM7SUFDakMsbUJBQW1CLEdBQUcsSUFBSSxlQUFlLENBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQzdELHNCQUFzQixHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsbUJBQW1CLEdBQUcsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7SUFDckQsZ0JBQWdCLEdBQTRCLElBQUksQ0FBQztJQUN6RCxJQUFJLENBQUs7SUFDVCxTQUFTLENBQU07SUFDZixRQUFRLENBQVE7SUFFaEIsYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4RCxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDOUQsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQy9ELHlFQUF5RTtJQUV6RTtRQUNFLHdDQUF3QztRQUN6QyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN0QixNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0QsSUFBSSxpQkFBaUIsRUFB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QU8sQ0FBQyxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNsQywyRUFBMkU7UUFDM0UsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQzt3R0EzTlUsa0JBQWtCOzRHQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFQIDIySkFOMjVcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uL3BhZ2VzL2J1aWxkZXIvZWxlbWVudC9lbGVtZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmludGVyZmFjZSBGb3JtRWxlbWVudCB7XG4gIG9yZGVyOiBudW1iZXI7XG4gIGlkOiBhbnk7XG4gIG5hbWU6IGFueTtcbiAgdmFsdWU/OiBhbnk7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgdHlwZTogc3RyaW5nO1xuICBxdWVzdGlvblRleHQ/OiBzdHJpbmc7XG4gIHF1ZXN0aW9uPzogc3RyaW5nO1xuICBoZWxwVGV4dD86IHN0cmluZztcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuICBpc1JlYWRPbmx5PzogYm9vbGVhbjtcbiAgaXNIaWRkZW4/OiBib29sZWFuO1xuICBpc0RhdGVCYWNrd2FyZD86IGJvb2xlYW47XG4gIGlzRGF0ZUZvcndhcmQ/OiBib29sZWFuO1xuICBpc09wdGlvbmFsPzogYm9vbGVhbjtcbiAgaXNUaXRsZT86IGJvb2xlYW47XG4gIG5leHRRdWVzdGlvbj86IHN0cmluZztcbiAgYWxsb3dlZEZpbGVFeHRlbnNpb25zPzogc3RyaW5nO1xuICBxdWVzdGlvbk51bWJlcj86IG51bWJlcjtcbiAgcXVlc3Rpb25Cb29rSWQ/OiBzdHJpbmc7XG4gIHNpemU/OiBudW1iZXI7XG4gIHBhcmVudFF1ZXN0aW9uPzogc3RyaW5nO1xuICBzdWJUZXh0Pzogc3RyaW5nO1xuICBmaWVsZHNNZXRhPzogc3RyaW5nO1xuICByZWNvcmRUeXBlTmFtZT86IHN0cmluZztcbiAgcmVjb3JkVHlwZUlkPzogc3RyaW5nO1xuICB0cmFja2luZ0lkPzogc3RyaW5nO1xuICBkYXRlVGV4dD86IHN0cmluZztcbiAgdGltZVRleHQ/OiBzdHJpbmc7XG4gIHJlY29yZElkPzogc3RyaW5nO1xuICBxYlJlZmVyZW5jZT86IHN0cmluZztcbiAgcWJSZWZlcmVuY2VRdWVzdGlvbnM/OiBzdHJpbmc7XG4gIHF1ZXN0aW9uQm9va1N1YlRpdGxlPzogc3RyaW5nO1xuICBzdHlsZT86IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIHN1YlRpdGxlPzogc3RyaW5nO1xuICByZWZlcmVuY2VGaWVsZD86IHN0cmluZztcbiAgYWRkaXRpb25hbFJpY2hDb250ZW50Pzogc3RyaW5nO1xuICBncm91cE5hbWU/OiBzdHJpbmc7XG4gIHgyNEhvdXJzPzogYm9vbGVhbjtcbi8vIEFQIDI1RkVCMjUgLSBvcHRpb25zIGFycmF5XG4gIG9wdGlvbnM/OiBBcnJheTx7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICB1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmc7XG4gICAgcXVlc3Rpb25JZDogc3RyaW5nO1xuICAgIG5leHRRdWVzdGlvbjogYW55O1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpZDogc3RyaW5nO1xufT47XG5cbn1cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtQnVpbGRlclNlcnZpY2Uge1xuICBwcml2YXRlIGZvcm1FbGVtZW50czogRm9ybUVsZW1lbnRbXSA9IFtdO1xuICBwcml2YXRlIGZvcm1FbGVtZW50c1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZvcm1FbGVtZW50W10+KFtdKTtcbiAgcHJpdmF0ZSBzZWxlY3RlZEVsZW1lbnRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KC0xKTtcbiAgcHJpdmF0ZSBzZWxlY3RIZWFkZXJTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuICBwcml2YXRlIGVsZW1lbnRDb21wb25lbnQ6IEVsZW1lbnRDb21wb25lbnQgfCBudWxsID0gbnVsbDtcbiAgYm9vazphbnk7XG4gIHVuaXF1ZV9pZDogYW55O1xuICB0ZW1wRWxlbTogYW55W107XG5cbiAgZm9ybUVsZW1lbnRzJCA9IHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgc2VsZWN0ZWRFbGVtZW50JCA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgc2VsZWN0SGVhZGVyU3ViamVjdCQgPSB0aGlzLnNlbGVjdEhlYWRlclN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIC8vIGJvb2s6IHsgYm9va1F1ZXN0aW9uc01hcDogeyB1bmlxdWVfaWQ6IHsgc3ViUXVlc3Rpb25zOiBhbnlbXTsgfTsgfTsgfTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBMb2FkIHNhdmVkIGVsZW1lbnRzIGZyb20gbG9jYWxTdG9yYWdlXG4gICB0aGlzLmZvcm1FbGVtZW50cyA9IFtdO1xuICAgIGNvbnN0IHNhdmVkRm9ybUVsZW1lbnRzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2Zvcm1FbGVtZW50cycpO1xuICAgIGlmIChzYXZlZEZvcm1FbGVtZW50cyApIHtcbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gSlNPTi5wYXJzZShzYXZlZEZvcm1FbGVtZW50cyk7XG4gICAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5mb3JtRWxlbWVudHNdKTtcbiAgICAgIHRoaXMudW5pcXVlX2lkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VuaXF1ZV9pZCcpO1xuICAgIH1cbiAgICB0aGlzLnVuaXF1ZV9pZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd1bmlxdWVfaWQnKTtcbiAgICBcbiAgICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3N0YXR1cycpID09PSBcIm5ld1wiKXtcbiAgICAgIHRoaXMudW5pcXVlX2lkID0gdXVpZHY0KCk7XG4gICAgdGhpcy5ib29rID0ge1xuICAgICAgJ2Jvb2tRdWVzdGlvbnNNYXAnOiB7XG4gICAgICAgICBbdGhpcy51bmlxdWVfaWRdOiB7XG4gICAgICAgICAnc3ViUXVlc3Rpb25zJzogW11cbiAgICAgICAgIH1cbiAgICAgICB9LFxuICAgICAgICdxdWVzdGlvbmJvb2snOiB7XG4gICAgICAgIFwiYWN0aW9uXCI6IFwiW3tcXFwibmFtZVxcXCI6IFxcXCJDYW5jZWxcXFwiLCBcXFwiZXZlbnR0b2VtaXRcXFwiOiBcXFwiY2xvc2VcXFwiLCBcXFwiYWx0XFxcIjpcXFwiXFxcIn0se1xcXCJuYW1lXFxcIjogXFxcIlNhdmVcXFwiLCBcXFwiZXZlbnR0b2VtaXRcXFwiOiBcXFwic3VibWl0XFxcIiwgXFxcImFsdFxcXCI6XFxcIlxcXCIsXFxcImVuZHBvaW50XFxcIjpcXFwiXFxcIixcXFwibWV0aG9kXFxcIjpcXFwiUE9TVFxcXCJ9XVwiXG4gICAgICAgIH0sXG4gICAgICAgJ3JlY29yZHMnOiBbe1xuICAgICAgICAnaWQnOiB0aGlzLnVuaXF1ZV9pZCxcbiAgICAgICAgJ3RpdGxlJzogJ1VudGl0bGVkJyxcbiAgICAgICAgICdzdWJRdWVzdGlvbnMnOiBbe31dXG4gICAgICAgIH1dXG4gICAgIH1cbiAgICAgIFxuICAgICB9XG4gIH1cbiAgaW50aWFsaXplQm9vayhib29rIDogYW55KXtcbiAgICB0aGlzLmJvb2sgPSBib29rO1xuICB9XG5cbi8vIEFQIDI2RkVCMjUgLSBjbGVhciB0aGUgZm9ybSBlbGVtZW50cyBcbiAgY2xlYXJFbGVtZW50cygpIHtcbiAgICB0aGlzLmZvcm1FbGVtZW50cyA9IFtdO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi50aGlzLmZvcm1FbGVtZW50c10pO1xuICB9XG4gIC8vIEdldCB0aGUgZWxlbWVudCBjb21wb25lbnQgcmVmZXJlbmNlXG4gIGdldEVsZW1lbnRDb21wb25lbnQoKTogRWxlbWVudENvbXBvbmVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRDb21wb25lbnQ7XG4gIH1cblxuICBzZXRFbGVtZW50Q29tcG9uZW50KGNvbXBvbmVudDogRWxlbWVudENvbXBvbmVudCkge1xuICAgIHRoaXMuZWxlbWVudENvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgfVxuXG4gIC8vIEFkZCBhIG5ldyBlbGVtZW50IHRvIHRoZSBmb3JtXG4gIGFkZEVsZW1lbnQoZWxlbWVudDogRm9ybUVsZW1lbnQpOiB2b2lkIHtcblxuICAgIGlmICghZWxlbWVudC5vcHRpb25zKSB7XG4gICAgICBlbGVtZW50Lm9wdGlvbnMgPSBbXTsgLy8gb3B0aW9ucyBpcyBpbml0aWFsaXplZFxuICAgIH1cblxuICAgIC8vIGNvbnN0IHNhdmVkRm9ybUVsZW1lbnRzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2Zvcm1FbGVtZW50cycpO1xuICAgIGlmICh0aGlzLmZvcm1FbGVtZW50cy5sZW5ndGggPT0gMCkge1xuICAgICAgLy8gdGhpcy5mb3JtRWxlbWVudHMgPSBKU09OLnBhcnNlKHNhdmVkRm9ybUVsZW1lbnRzKTtcbiAgICAgIC8vIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi50aGlzLmZvcm1FbGVtZW50c10pO1xuICAgICAgLy8gdGhpcy5ib29rID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYm9vaycpIHx8ICd7fScpO1xuXG4gICAgICAvLyBpZihsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc3RhdHVzJykgPT0gXCJlZGl0XCIgJiYgdGhpcy5ib29rICE9PSB1bmRlZmluZWQpe1xuICAgICAgLy8gICB0aGlzLnVuaXF1ZV9pZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd1bmlxdWVfaWQnKTtcbiAgICAgIC8vICAgdGhpcy5ib29rID0ge1xuICAgICAgLy8gICAgICdib29rUXVlc3Rpb25zTWFwJzoge1xuICAgICAgLy8gICAgICAgIFt0aGlzLnVuaXF1ZV9pZF06IHtcbiAgICAgIC8vICAgICAgICAnc3ViUXVlc3Rpb25zJzogW11cbiAgICAgIC8vICAgICAgICB9XG4gICAgICAvLyAgICAgIH1cbiAgICAgIC8vICAgIH07XG4gICAgICAvLyAgICBpZih0aGlzLmJvb2sucXVlc3Rpb25ib29rID09IHVuZGVmaW5lZCl7XG4gICAgICAvLyAgICAgdGhpcy5ib29rWydxdWVzdGlvbmJvb2snXSA9IHtcbiAgICAgIC8vICAgICAgIFwiYWN0aW9uXCI6IFwiW3tcXFwibmFtZVxcXCI6IFxcXCJDYW5jZWxcXFwiLCBcXFwiZXZlbnR0b2VtaXRcXFwiOiBcXFwiY2xvc2VcXFwiLCBcXFwiYWx0XFxcIjpcXFwiXFxcIn0se1xcXCJuYW1lXFxcIjogXFxcIlNhdmVcXFwiLCBcXFwiZXZlbnR0b2VtaXRcXFwiOiBcXFwic3VibWl0XFxcIiwgXFxcImFsdFxcXCI6XFxcIlxcXCIsXFxcImVuZHBvaW50XFxcIjpcXFwiXFxcIixcXFwibWV0aG9kXFxcIjpcXFwiUE9TVFxcXCJ9XVwiXG4gICAgICAvLyAgICB9XG4gICAgICAvLyAgICB9XG4gICAgICAgICBcbiAgICAgIC8vICAgIGlmKHRoaXMuYm9vay5yZWNvcmRzID09IHVuZGVmaW5lZCl7XG4gICAgICAvLyAgICAgdGhpcy5ib29rWydyZWNvcmRzJ10gPSBbe1xuICAgICAgLy8gICAgICAgJ2lkJzogdGhpcy51bmlxdWVfaWQsXG4gICAgICAvLyAgICAgICAgJ3N1YlF1ZXN0aW9ucyc6IFt7fV1cbiAgICAgIC8vICAgICAgIH1dXG4gICAgICAvLyAgICB9XG5cbiAgICAgIC8vICB9XG4gICAgICAvLyB0aGlzLnVuaXF1ZV9pZCA9IHV1aWR2NCgpO1xuXG4gICAgICAgIC8vIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdib29rJywgSlNPTi5zdHJpbmdpZnkodGhpcy5ib29rKSk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd1bmlxdWVfaWQnLCB0aGlzLnVuaXF1ZV9pZCk7XG4gICAgfVxuICAgIGVsZW1lbnRbJ3F1ZXN0aW9uQm9va0lkJ10gPSB0aGlzLnVuaXF1ZV9pZDtcbiAgICB0aGlzLmZvcm1FbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgIC8vIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdmb3JtRWxlbWVudHMnLCBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm1FbGVtZW50cykpO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi50aGlzLmZvcm1FbGVtZW50c10pO1xuICB9XG5cbiAgdXBkYXRlRWxlbWVudChpbmRleDogbnVtYmVyLCB1cGRhdGVzOiBQYXJ0aWFsPEZvcm1FbGVtZW50Pikge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gWy4uLnRoaXMuZ2V0RWxlbWVudHMoKV07XG4gICAgaWYgKGVsZW1lbnRzW2luZGV4XSkge1xuICAgICAgICBlbGVtZW50c1tpbmRleF0gPSB7XG4gICAgICAgICAgLi4uZWxlbWVudHNbaW5kZXhdLFxuICAgICAgICAgIC4uLnVwZGF0ZXMsXG4gICAgICAgICAgb3B0aW9uczogdXBkYXRlcy5vcHRpb25zIHx8IGVsZW1lbnRzW2luZGV4XS5vcHRpb25zIHx8IFtdLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChlbGVtZW50cyk7XG4gICAgICB9XG5cbiAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMuZm9ybUVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgY29uc3QgdXBkYXRlZEVsZW1lbnQgPSB7XG4gICAgICAgIC4uLnRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XSxcbiAgICAgICAgLi4udXBkYXRlc1xuICAgICAgfTtcbiAgICAgIGlmICh1cGRhdGVzLnJlcXVpcmVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dCkge1xuICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uVGV4dCA9IHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dC5yZXBsYWNlKC9cXHMqXFwqKyQvLCAnJyk7XG4gICAgICAgICAgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ID0gdXBkYXRlcy5yZXF1aXJlZCA/IGAke3F1ZXN0aW9uVGV4dH0gKmAgOiBxdWVzdGlvblRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsZW1lbnRzW2luZGV4XSkge1xuICAgICAgICAgIGVsZW1lbnRzW2luZGV4XSA9IHsgLi4uZWxlbWVudHNbaW5kZXhdLCAuLi51cGRhdGVzIH07XG4gICAgICAgICAgdGhpcy5mb3JtRWxlbWVudHMgPSBlbGVtZW50cztcbiAgICAgICAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5mb3JtRWxlbWVudHNdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgc3BlY2lhbCBjYXNlc1xuICAgICAgaWYgKHVwZGF0ZXMucmVxdWlyZWQgPT09IHRydWUgJiYgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ICYmICF1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQuZW5kc1dpdGgoJyonKSkge1xuICAgICAgICB1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQgPSBgJHt1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHR9ICpgO1xuICAgICAgfSBlbHNlIGlmICh1cGRhdGVzLnJlcXVpcmVkID09PSBmYWxzZSAmJiB1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQgJiYgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0LmVuZHNXaXRoKCcqJykpIHtcbiAgICAgICAgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ID0gdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0LnNsaWNlKDAsIC0yKTtcbiAgICB9XG5cbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XSA9IHVwZGF0ZWRFbGVtZW50O1xuICAgICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gICAgICAvLyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZm9ybUVsZW1lbnRzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtRWxlbWVudHMpKTtcbiAgICB9XG4gIH1cbnVwZGF0ZVRpdGxlKGV2ZW50OiBhbnkpe1xuICAvL0FQLTEwTUFSMjUgVXBkYXRlcyB0aGUgdGl0bGUgb2YgdGhlIGZpcnN0IHJlY29yZCBpbiB0aGUgYm9vayAgXG4gIHRoaXMuYm9vay5yZWNvcmRzWzBdLnRpdGxlID0gZXZlbnQ7XG59XG4gIHNldFNlbGVjdGVkRWxlbWVudChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRTdWJqZWN0Lm5leHQoaW5kZXgpO1xuICB9XG5cbiAgc2VsZWN0SGVhZGluZyhldmVudDogYW55KSB7XG4gICAgLy9BUC0xME1BUjI1IEVtaXRzIHRoZSBzZWxlY3RlZCBoZWFkaW5nIGV2ZW50ICBcbiAgICB0aGlzLnNlbGVjdEhlYWRlclN1YmplY3QubmV4dChldmVudCk7XG4gIH1cblxuXG4gIGdldEVsZW1lbnRzKCk6IEZvcm1FbGVtZW50W10ge1xuICAgIHJldHVybiB0aGlzLmZvcm1FbGVtZW50cy5tYXAoZWxlbWVudCA9PiAoe1xuICAgICAgLi4uZWxlbWVudCxcbiAgICAgIG9wdGlvbnM6IGVsZW1lbnQub3B0aW9ucyB8fCBbXSwgICAgIFxuICAgIH0pKTtcbiAgfVxuICBzb3J0RWxlbWVudHNCeU9yZGVyKCk6IHZvaWQge1xuICAgIC8vQVAtMTBNQVIyNSBTb3J0IGVsZW1lbnRzIGJ5IGN1cnJlbnQgb3JkZXJcbiAgICB0aGlzLmZvcm1FbGVtZW50cy5zb3J0KChhLCBiKSA9PiBhLm9yZGVyIC0gYi5vcmRlcik7XG4gICAgdGhpcy5mb3JtRWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICAgIGVsZW1lbnQub3JkZXIgPSBpbmRleCArIDE7XG4gICAgfSk7XG4gICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gIH1cbiAgLy9BUC0xME1BUjI1IFJldHVybnMgdGhlIGN1cnJlbnQgYm9vayBkYXRhICBcbiBnZXRCb29rKCl7XG4gICAgcmV0dXJuIHRoaXMuYm9vaztcbiB9XG4gLy8gSW4gRm9ybUJ1aWxkZXJTZXJ2aWNlXG4gZG93bmxvYWRFbGVtZW50KCkge1xuICB0aGlzLmJvb2suYm9va1F1ZXN0aW9uc01hcFt0aGlzLnVuaXF1ZV9pZF0uc3ViUXVlc3Rpb25zID0gdGhpcy5mb3JtRWxlbWVudHM7XG4gIGNvbnNvbGUubG9nKCdib29rJywgdGhpcy5ib29rLmJvb2tRdWVzdGlvbnNNYXBbdGhpcy51bmlxdWVfaWRdLnN1YlF1ZXN0aW9ucyk7XG4gIGxldCB0ZW1wRWxlbWVudDogYW55ID0ge307XG5cbiAgdGhpcy5mb3JtRWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgIGlmIChlbGVtZW50LnR5cGUgPT09ICdEcm9wZG93bicgfHwgZWxlbWVudC50eXBlID09PSAnUmFkaW8nIHx8IGVsZW1lbnQudHlwZSA9PT0gJ0NoZWNrYm94Jykge1xuICAgICAgLy9BUCAyNUZFQjI1IC0gU3RvcmUgdGhlIGVudGlyZSBxdWVzdGlvbiB3aXRoIGl0cyBvcHRpb25zIHVuZGVyIGl0cyBJRFxuICAgICAgdGVtcEVsZW1lbnRbZWxlbWVudC5pZF0gPSB7XG4gICAgICAgIC4uLmVsZW1lbnQsXG4gICAgICAgIG9wdGlvbnM6IGVsZW1lbnQub3B0aW9ucyB8fCBbXVxuICAgICAgfTtcbiAgICB9XG4gIH0pO1xuXG4gIHRoaXMuYm9vay5zcU9wdGlvbnMgPSB0ZW1wRWxlbWVudDtcbiAgICByZXR1cm4gdGhpcy5ib29rO1xuICB9XG4gIC8vIEFQLTA2TUFSMjUgLSBFbGVtZW50IG5ldyBvcmRlciB1cGRhdGVcbiAgdXBkYXRlRWxlbWVudHNPcmRlcih1cGRhdGVkRWxlbWVudHM6IEZvcm1FbGVtZW50W10pOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1FbGVtZW50cyA9IFsuLi51cGRhdGVkRWxlbWVudHNdO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KHRoaXMuZm9ybUVsZW1lbnRzKTtcbiAgfVxuICAvLyBSZW1vdmUgYW4gZWxlbWVudCBieSBJRFxuICAvLyBTYXZlIGVsZW1lbnRzIHRvIGxvY2FsU3RvcmFnZSBhbmQgdXBkYXRlIHRoZSBzdWJqZWN0XG4gIHJlbW92ZUVsZW1lbnRDb21wb25lbnQoaWQ6IGFueSkge1xuICAgIHRoaXMudGVtcEVsZW0gPSBbXTtcbiAgICB0aGlzLmZvcm1FbGVtZW50cy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LmlkICE9PSBpZCkge1xuICAgICAgICB0aGlzLnRlbXBFbGVtLnB1c2goZWxlbWVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5mb3JtRWxlbWVudHMgPSB0aGlzLnRlbXBFbGVtO1xuICAgIC8vIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdmb3JtRWxlbWVudHMnLCBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm1FbGVtZW50cykpO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi50aGlzLmZvcm1FbGVtZW50c10pO1xuICB9XG59XG4iXX0=
|