@rangertechnologies/ngnxt 2.1.211 → 2.1.213
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/environments/version.mjs +2 -2
- package/esm2022/lib/pages/builder/element/element.component.mjs +133 -146
- package/esm2022/lib/pages/builder/properties/common-fields.constants.mjs +68 -0
- package/esm2022/lib/pages/builder/properties/properties.component.mjs +91 -1117
- package/esm2022/lib/pages/pdfDesigner/pdf-designer/pdf-designer.component.mjs +5 -5
- package/esm2022/lib/services/form-builder.service.mjs +11 -8
- package/esm2022/lib/services/pdf-designer.service.mjs +6 -11
- package/fesm2022/rangertechnologies-ngnxt.mjs +306 -1281
- package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
- package/lib/pages/builder/element/element.component.d.ts +5 -4
- package/lib/pages/builder/properties/common-fields.constants.d.ts +79 -0
- package/lib/pages/builder/properties/properties.component.d.ts +105 -1395
- package/lib/services/form-builder.service.d.ts +1 -0
- package/package.json +1 -1
- package/rangertechnologies-ngnxt-2.1.213.tgz +0 -0
- package/rangertechnologies-ngnxt-2.1.211.tgz +0 -0
|
@@ -28,10 +28,13 @@ export class FormBuilderService {
|
|
|
28
28
|
const savedFormElements = localStorage.getItem('formElements');
|
|
29
29
|
if (savedFormElements) {
|
|
30
30
|
this.formElements = JSON.parse(savedFormElements);
|
|
31
|
-
this.
|
|
31
|
+
this.emitFormElements();
|
|
32
32
|
// this.book = JSON.parse(localStorage.getItem('book') || '{}');
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
+
emitFormElements() {
|
|
36
|
+
this.formElementsSubject.next([...this.formElements]);
|
|
37
|
+
}
|
|
35
38
|
intializeBook(book) {
|
|
36
39
|
// AP 13MAR25 - Get the unique id in the bookQuestionsMap
|
|
37
40
|
this.unique_id = Object.keys(book.bookQuestionsMap)[0];
|
|
@@ -127,7 +130,7 @@ export class FormBuilderService {
|
|
|
127
130
|
// AP 26FEB25 - clear the form elements
|
|
128
131
|
clearElements() {
|
|
129
132
|
this.formElements = [];
|
|
130
|
-
this.
|
|
133
|
+
this.emitFormElements();
|
|
131
134
|
}
|
|
132
135
|
// Get the element component reference
|
|
133
136
|
getElementComponent() {
|
|
@@ -143,7 +146,7 @@ export class FormBuilderService {
|
|
|
143
146
|
}
|
|
144
147
|
element['questionBookId'] = this.unique_id;
|
|
145
148
|
this.formElements.push(element);
|
|
146
|
-
this.
|
|
149
|
+
this.emitFormElements();
|
|
147
150
|
}
|
|
148
151
|
// SKS13MAR25 add table element
|
|
149
152
|
addTableElement(element, ind) {
|
|
@@ -205,7 +208,7 @@ export class FormBuilderService {
|
|
|
205
208
|
if (elements[index]) {
|
|
206
209
|
elements[index] = { ...elements[index], ...updates };
|
|
207
210
|
this.formElements = elements;
|
|
208
|
-
this.
|
|
211
|
+
this.emitFormElements();
|
|
209
212
|
}
|
|
210
213
|
}
|
|
211
214
|
// Handle special cases
|
|
@@ -216,7 +219,7 @@ export class FormBuilderService {
|
|
|
216
219
|
updatedElement.questionText = updatedElement.questionText.slice(0, -2);
|
|
217
220
|
}
|
|
218
221
|
this.formElements[index] = updatedElement;
|
|
219
|
-
this.
|
|
222
|
+
this.emitFormElements();
|
|
220
223
|
// localStorage.setItem('formElements', JSON.stringify(this.formElements));
|
|
221
224
|
}
|
|
222
225
|
}
|
|
@@ -273,7 +276,7 @@ export class FormBuilderService {
|
|
|
273
276
|
this.formElements.forEach((element, index) => {
|
|
274
277
|
element.questionNumber = index + 1;
|
|
275
278
|
});
|
|
276
|
-
this.
|
|
279
|
+
this.emitFormElements();
|
|
277
280
|
}
|
|
278
281
|
//AP-10MAR25 Returns the current book data
|
|
279
282
|
getBook() {
|
|
@@ -330,7 +333,7 @@ export class FormBuilderService {
|
|
|
330
333
|
});
|
|
331
334
|
this.formElements = this.tempElem;
|
|
332
335
|
// localStorage.setItem('formElements', JSON.stringify(this.formElements));
|
|
333
|
-
this.
|
|
336
|
+
this.emitFormElements();
|
|
334
337
|
}
|
|
335
338
|
// SKS19MAR25 update the element
|
|
336
339
|
elementUpdate(index, element) {
|
|
@@ -351,4 +354,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
351
354
|
providedIn: 'root',
|
|
352
355
|
}]
|
|
353
356
|
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
|
354
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idWlsZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvc2VydmljZXMvZm9ybS1idWlsZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYTtBQUNiLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7O0FBK0RuRCxNQUFNLE9BQU8sa0JBQWtCO0lBbUJUO0lBbEJaLFlBQVksR0FBa0IsRUFBRSxDQUFDO0lBQ2pDLG1CQUFtQixHQUFHLElBQUksZUFBZSxDQUFnQixFQUFFLENBQUMsQ0FBQztJQUM3RCxzQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELG1CQUFtQixHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO0lBQ3JELGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztJQUMvQyxnQkFBZ0IsR0FBNEIsSUFBSSxDQUFDO0lBQ3pELElBQUksQ0FBTTtJQUNWLFNBQVMsQ0FBTTtJQUNmLFFBQVEsQ0FBUTtJQUVoQixhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hELGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5RCxvQkFBb0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0QsY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbkQsY0FBYyxDQUFNO0lBQ3BCLGlCQUFpQixDQUFNO0lBQ3ZCLHlFQUF5RTtJQUV6RSxZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FB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Q0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUE7WUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUM7WUFDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO3dHQXZXVSxrQkFBa0I7NEdBQWxCLGtCQUFrQixjQUZqQixNQUFNOzs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQVAgMjJKQU4yNVxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFbGVtZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vcGFnZXMvYnVpbGRlci9lbGVtZW50L2VsZW1lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmludGVyZmFjZSBGb3JtRWxlbWVudCB7XG4gIGFjdGlvbjogYW55O1xuICBpZDogYW55O1xuICB0eXBlOiBzdHJpbmc7XG4gIG5hbWU6IGFueTtcbiAgcXVlc3Rpb25UZXh0Pzogc3RyaW5nO1xuICBxdWVzdGlvbj86IHN0cmluZztcbiAgaGVscFRleHQ/OiBzdHJpbmc7XG4gIGVycm9yTWVzc2FnZT86IHN0cmluZztcbiAgaXNSZWFkT25seT86IGJvb2xlYW47XG4gIGlzSGlkZGVuPzogYm9vbGVhbjtcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICByZWZlcmVuY2VGaWVsZD86IGFueTtcbiAgYWRkaXRpb25hbFJpY2hDb250ZW50PzogYW55O1xuICBncm91cE5hbWU/OiBhbnk7XG4gIGlzRGF0ZUJhY2t3YXJkPzogYm9vbGVhbjtcbiAgdGl0bGU/OiBhbnk7XG4gIHN1YlRpdGxlPzogYW55O1xuICBzaXplPzogbnVtYmVyO1xuICBpc0RhdGVGb3J3YXJkPzogYm9vbGVhbjtcbiAgaXNPcHRpb25hbD86IGJvb2xlYW47XG4gIGlzVGl0bGU/OiBib29sZWFuO1xuICBuZXh0UXVlc3Rpb24/OiBhbnk7XG4gIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucz86IGFueTtcbiAgcXVlc3Rpb25OdW1iZXI/OiBudW1iZXI7XG4gIG9yZGVyOiBudW1iZXI7XG4gIHF1ZXN0aW9uQm9va0lkPzogYW55O1xuICBmaWVsZHNNZXRhPzogYW55O1xuICB0cmFja2luZ0lkPzogYW55O1xuICByZWNvcmRJZD86IGFueTtcbiAgcWJSZWZlcmVuY2U/OiBhbnk7XG4gIHFiUmVmZXJlbmNlUXVlc3Rpb25zPzogYW55O1xuICBwcmltYXJ5S2V5OiBib29sZWFuLFxuICBzdHlsZToge1xuICAgIGxhYmVsQ2xhc3M6IGFueSxcbiAgICBsYWJlbFN0eWxlOiBhbnksXG4gICAgbGFiZWxWYWx1ZVN0eWxlOiBhbnksXG4gICAgaW5wdXRDbGFzczogYW55LFxuICAgIGlucHV0U3R5bGU6IGFueSxcbiAgICBzaG93TGFiZWw6IGJvb2xlYW4sXG4gICAgYm9va1N0eWxlOiBhbnksXG4gICAgZGlyZWN0aW9uOiBhbnksXG4gICAgcXVlc3Rpb25TdHlsZTogYW55LFxuICB9LFxuICAgIC8vIEFQIDI1RkVCMjUgLSBvcHRpb25zIGFycmF5XG4gIG9wdGlvbnM/OiBBcnJheTx7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICB1bmlxdWVJZGVudGlmaWVyOiBhbnk7XG4gICAgcXVlc3Rpb25JZDogYW55O1xuICAgIG5leHRRdWVzdGlvbjogYW55O1xuICAgIG5hbWU6IGFueTtcbiAgICBpZDogYW55O1xuICB9PjtcbiAgc3ViVGV4dDogYW55LFxuICBjb2x1bW5zPzogYW55O1xufVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1CdWlsZGVyU2VydmljZSB7XG4gIHByaXZhdGUgZm9ybUVsZW1lbnRzOiBGb3JtRWxlbWVudFtdID0gW107XG4gIHByaXZhdGUgZm9ybUVsZW1lbnRzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Rm9ybUVsZW1lbnRbXT4oW10pO1xuICBwcml2YXRlIHNlbGVjdGVkRWxlbWVudFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oLTEpO1xuICBwcml2YXRlIHNlbGVjdEhlYWRlclN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gIHByaXZhdGUgYWN0aW9uU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgcHJpdmF0ZSBlbGVtZW50Q29tcG9uZW50OiBFbGVtZW50Q29tcG9uZW50IHwgbnVsbCA9IG51bGw7XG4gIGJvb2s6IGFueTtcbiAgdW5pcXVlX2lkOiBhbnk7XG4gIHRlbXBFbGVtOiBhbnlbXTtcblxuICBmb3JtRWxlbWVudHMkID0gdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBzZWxlY3RlZEVsZW1lbnQkID0gdGhpcy5zZWxlY3RlZEVsZW1lbnRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBzZWxlY3RIZWFkZXJTdWJqZWN0JCA9IHRoaXMuc2VsZWN0SGVhZGVyU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgYWN0aW9uU3ViamVjdCQgPSB0aGlzLmFjdGlvblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIGN1cnJlbnRFbGVtZW50OiBhbnk7XG4gIHNlbGVjdFRhYmxlQ29sdW1uOiBhbnk7XG4gIC8vIGJvb2s6IHsgYm9va1F1ZXN0aW9uc01hcDogeyB1bmlxdWVfaWQ6IHsgc3ViUXVlc3Rpb25zOiBhbnlbXTsgfTsgfTsgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHtcbiAgICAvLyBMb2FkIHNhdmVkIGVsZW1lbnRzIGZyb20gbG9jYWxTdG9yYWdlXG4gICAgdGhpcy5mb3JtRWxlbWVudHMgPSBbXTtcbiAgICBjb25zdCBzYXZlZEZvcm1FbGVtZW50cyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmb3JtRWxlbWVudHMnKTtcbiAgICBpZiAoc2F2ZWRGb3JtRWxlbWVudHMpIHtcbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gSlNPTi5wYXJzZShzYXZlZEZvcm1FbGVtZW50cyk7XG4gICAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5mb3JtRWxlbWVudHNdKTtcbiAgICAgIC8vIHRoaXMuYm9vayA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2Jvb2snKSB8fCAne30nKTtcbiAgICB9XG4gIH1cbiAgaW50aWFsaXplQm9vayhib29rOiBhbnkpIHtcbiAgICAvLyBBUCAxM01BUjI1IC0gR2V0IHRoZSB1bmlxdWUgaWQgaW4gdGhlIGJvb2tRdWVzdGlvbnNNYXAgXG4gICAgdGhpcy51bmlxdWVfaWQgPSBPYmplY3Qua2V5cyhib29rLmJvb2tRdWVzdGlvbnNNYXApWzBdO1xuICAgIGxldCB0ZW1wYm9vayA9IGJvb2suYm9va1F1ZXN0aW9uc01hcFt0aGlzLnVuaXF1ZV9pZF0uc3ViUXVlc3Rpb25zO1xuLy8gU0tTMjhNQVIyNSB1cGRhdGUgbmVzdGVkIGJvb2sgUXVlc3Rpb25zTWFwXG4gICAgdGVtcGJvb2suZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gXCJib29rXCIgJiYgZWxlbWVudC5xYlJlZmVyZW5jZSkge1xuICAgICAgICB0aGlzLmdldFJlZlFiRGF0YShlbGVtZW50LnFiUmVmZXJlbmNlKS5zdWJzY3JpYmUoXG4gICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBlbGVtZW50WydxYlJlZmVyZW5jZVF1ZXN0aW9ucyddID0gcmVzcG9uc2U7IC8vIEFzc2lnbiByZXNwb25zZSB0byBxYlJlZmVyZW5jZVF1ZXN0aW9uc1xuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiQVBJIEVycm9yOlwiLCBlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGJvb2suYm9va1F1ZXN0aW9uc01hcFt0aGlzLnVuaXF1ZV9pZF0uc3ViUXVlc3Rpb25zID0gdGVtcGJvb2tcbiAgICB0aGlzLmJvb2sgPSBib29rXG5cbiAgICB0aGlzLmJvb2suYm9va1F1ZXN0aW9uc01hcFt0aGlzLnVuaXF1ZV9pZF0/LnN1YlF1ZXN0aW9ucz8uZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGlmICh0aGlzLmJvb2suc3FPcHRpb25zPy5bZWxlbWVudC5pZF0pIHtcbiAgICAgICAgZWxlbWVudC5vcHRpb25zID0gdGhpcy5ib29rLnNxT3B0aW9uc1tlbGVtZW50LmlkXS5vcHRpb25zO1xuICAgICAgfVxuICAgICAgdGhpcy5hZGRFbGVtZW50KGVsZW1lbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgLy9TS1MyOE1BUjI1IEZ1bmN0aW9uIHRvIGZldGNoIHJlZnFiIGRhdGFcbiAgZ2V0UmVmUWJEYXRhKHJlZnFiaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgaHR0cHM6Ly9kZXYtYXBpLnZhbGFyaHIuY29tL254dD9uYW1lPSR7cmVmcWJpZH1gKTtcbiAgfVxuXG4gICAvL0FQLTE3QVBSMjUgRnVuY3Rpb24gdG8gZ2VuZXJhdGUgdW5pcXVlIGlkXG4gICBhZGRFbGVtZW50V2l0aElkKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcHJlZml4ID0gJ25nbnh0JzsgXG4gICAgY29uc3QgY2hhcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknO1xuICAgIGxldCBjb3JlID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNDsgaSsrKSB7XG4gICAgICBjb3JlICs9IGNoYXJzLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFycy5sZW5ndGgpKTtcbiAgICB9XG4gICAgcmV0dXJuIHByZWZpeCArIGNvcmU7IFxuICB9XG4gIC8vIEFQIDIzTUFZMjUgVXBkYXRlcyB0aGUgcXVlc3Rpb25ib29rIGFjdGlvbiBidXR0b25zOiBhZGRzIG9yIHJlbW92ZXMgYmFzZWQgb24gYWN0aW9uIHR5cGVcbiAgdXBkYXRlUXVlc3Rpb25Cb29rQWN0aW9uQnV0dG9ucyhidXR0b246IGFueSxhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5ib29rLnF1ZXN0aW9uYm9vaykge1xuICAgICAgdGhpcy5ib29rLnF1ZXN0aW9uYm9vayA9IHt9O1xuICAgIH1cbiAgICBpZihhY3Rpb24gPT09ICdhZGQnKSB7XG4gICAgICB0aGlzLmJvb2sucXVlc3Rpb25ib29rLmFjdGlvbi5wdXNoKGJ1dHRvbik7XG4gICAgfWVsc2UgaWYoYWN0aW9uID09PSAncmVtb3ZlJykge1xuICAgICAgdGhpcy5ib29rLnF1ZXN0aW9uYm9vay5hY3Rpb24gPSB0aGlzLmJvb2sucXVlc3Rpb25ib29rLmFjdGlvbi5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5pZCAhPT0gYnV0dG9uLmlkKTtcbiAgICB9XG4gICAgdGhpcy5hY3Rpb25TdWJqZWN0Lm5leHQodGhpcy5ib29rKTtcbiAgfVxuICBcbiAgbmV3Qm9vaygpIHtcbiAgICB0aGlzLnVuaXF1ZV9pZCA9IHRoaXMuYWRkRWxlbWVudFdpdGhJZCgpO1xuICAgIHRoaXMuYm9vayA9IHtcbiAgICAgICdib29rUXVlc3Rpb25zTWFwJzoge1xuICAgICAgICBbdGhpcy51bmlxdWVfaWRdOiB7XG4gICAgICAgICAgJ3N1YlF1ZXN0aW9ucyc6IFtdLFxuICAgICAgICAgICd0eXBlJzogJ0Jvb2snXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAncXVlc3Rpb25ib29rJzoge1xuICAgICAgICBcImFjdGlvblwiOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQ2FuY2VsXCIsXG4gICAgICAgICAgICBcImV2ZW50dG9lbWl0XCI6IFwiY2xvc2VcIixcbiAgICAgICAgICAgIFwiYWx0XCI6IFwiXCIsXG4gICAgICAgICAgICBcInBvc2l0aW9uUGVyY2VudFwiOiAzLFxuICAgICAgICAgICAgXCJ3aWR0aFwiOiAxMDAsXG4gICAgICAgICAgICBcInRleHRDb2xvclwiOiBcIiNmZmZmZmZcIixcbiAgICAgICAgICAgIFwiYm9yZGVyUmFkaXVzXCI6IDYsXG4gICAgICAgICAgICAnaWQnOiAxLFxuXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJTYXZlXCIsXG4gICAgICAgICAgICBcImV2ZW50dG9lbWl0XCI6IFwic3VibWl0XCIsXG4gICAgICAgICAgICBcImFsdFwiOiBcIlwiLFxuICAgICAgICAgICAgXCJlbmRwb2ludFwiOiBcIlwiLFxuICAgICAgICAgICAgXCJtZXRob2RcIjogXCJQT1NUXCIsXG4gICAgICAgICAgICBcInBvc2l0aW9uUGVyY2VudFwiOiAxNCwgIFxuICAgICAgICAgICAgXCJ3aWR0aFwiOiAxMDAsXG4gICAgICAgICAgICBcInRleHRDb2xvclwiOiBcIiNmZmZmZmZcIixcbiAgICAgICAgICAgIFwiYm9yZGVyUmFkaXVzXCI6IDYsXG4gICAgICAgICAgICAnaWQnOiAxLFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgICdyZWNvcmRzJzogW3tcbiAgICAgICAgJ2lkJzogdGhpcy51bmlxdWVfaWQsXG4gICAgICAgICd0aXRsZSc6ICdVbnRpdGxlZCcsXG4gICAgICAgICdzdWJRdWVzdGlvbnMnOiBbe31dXG4gICAgICB9XVxuICAgIH1cbiAgfVxuICAvLyBBUCAyNkZFQjI1IC0gY2xlYXIgdGhlIGZvcm0gZWxlbWVudHMgXG4gIGNsZWFyRWxlbWVudHMoKSB7XG4gICAgdGhpcy5mb3JtRWxlbWVudHMgPSBbXTtcbiAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5mb3JtRWxlbWVudHNdKTtcbiAgfVxuICAvLyBHZXQgdGhlIGVsZW1lbnQgY29tcG9uZW50IHJlZmVyZW5jZVxuICBnZXRFbGVtZW50Q29tcG9uZW50KCk6IEVsZW1lbnRDb21wb25lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50Q29tcG9uZW50O1xuICB9XG5cbiAgc2V0RWxlbWVudENvbXBvbmVudChjb21wb25lbnQ6IEVsZW1lbnRDb21wb25lbnQpIHtcbiAgICB0aGlzLmVsZW1lbnRDb21wb25lbnQgPSBjb21wb25lbnQ7XG4gIH1cblxuICAvLyBBZGQgYSBuZXcgZWxlbWVudCB0byB0aGUgZm9ybVxuICBhZGRFbGVtZW50KGVsZW1lbnQ6IEZvcm1FbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKCFlbGVtZW50Lm9wdGlvbnMpIHtcbiAgICAgIGVsZW1lbnQub3B0aW9ucyA9IFtdOyAvLyBvcHRpb25zIGlzIGluaXRpYWxpemVkXG4gICAgfVxuICAgIGVsZW1lbnRbJ3F1ZXN0aW9uQm9va0lkJ10gPSB0aGlzLnVuaXF1ZV9pZDtcbiAgICB0aGlzLmZvcm1FbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi50aGlzLmZvcm1FbGVtZW50c10pO1xuICB9XG4gIC8vIFNLUzEzTUFSMjUgYWRkIHRhYmxlIGVsZW1lbnRcbiAgYWRkVGFibGVFbGVtZW50KGVsZW1lbnQ6IGFueSwgaW5kIDphbnkpIHtcbiAgICAvL1NLUzEzTUFSMjUgRW5zdXJlIGN1cnJlbnRFbGVtZW50IGV4aXN0c1xuICAgIGlmICghdGhpcy5jdXJyZW50RWxlbWVudCkgcmV0dXJuO1xuICAgIC8vIENsb25lIGVsZW1lbnRzIGFycmF5XG4gICAgY29uc3QgZWxlbWVudHMgPSBbLi4udGhpcy5nZXRFbGVtZW50cygpXTtcblxuICAgIC8vIFNLUzEzTUFSMjUgRmluZCB0aGUgZWxlbWVudCBhbmQgdXBkYXRlIGl0cyBjb2x1bW5zXG4gICAgY29uc3QgaW5kZXggPSBlbGVtZW50cy5maW5kSW5kZXgoZWwgPT4gZWwuaWQgPT09IHRoaXMuY3VycmVudEVsZW1lbnQuaWQpO1xuXG4gICAgLy8gQ2xvbmUgY29sdW1ucyBhcnJheSB0byB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb25cbiAgICBjb25zdCB1cGRhdGVkQ29sdW1ucyA9IFsuLi4odGhpcy5mb3JtRWxlbWVudHNbaW5kZXhdLmNvbHVtbnMgfHwgW10pLCBlbGVtZW50XTtcbiAgICBsZXQgdGVtcEZpZWxkc01ldGEgPSB7XG4gICAgICAnbGFiZWwnOiBlbGVtZW50LmxhYmVsLFxuICAgICAgJ2FwaU5hbWUnOiBlbGVtZW50LmZpZWxkTmFtZSxcbiAgICAgIFwiaXNkZWxldGVkXCI6IGZhbHNlLFxuICAgICAgXCJvcmRlcmJ5ZmxhZ1wiOiBmYWxzZSxcbiAgICAgIFwiZmlsdGVyZmxhZ1wiOiBmYWxzZSxcbiAgICAgIFwib3V0cHV0RmxhZ1wiOiB0cnVlLFxuICAgICAgXCJpc2NoaWxkXCI6IGZhbHNlLFxuICAgICAgXCJyZXN1bHRhbnRmbGFnXCI6IGZhbHNlLFxuICAgICAgXCJzZWFyY2hmbGFnXCI6IGZhbHNlLFxuICAgICAgXCJmbGRUeXBlXCI6IGVsZW1lbnQudHlwZSxcbiAgICAgIFwicmVhZE9ubHlcIjogZmFsc2UsXG4gICAgICBcInVuaXF1ZUlkZW50aWZpZXJcIjogZWxlbWVudC5pZFxuICAgIH1cbiAgICBsZXQgZmllbGRzTWV0YSA9IFsuLi4oQXJyYXkuaXNBcnJheSh0aGlzLmZvcm1FbGVtZW50c1tpbmRleF0uZmllbGRzTWV0YSkgPyB0aGlzLmZvcm1FbGVtZW50c1tpbmRleF0uZmllbGRzTWV0YSA6ICh0eXBlb2YgdGhpcy5mb3JtRWxlbWVudHNbaW5kZXhdLmZpZWxkc01ldGEgPT09ICdzdHJpbmcnID8gKEpTT04ucGFyc2UodGhpcy5mb3JtRWxlbWVudHNbaW5kZXhdLmZpZWxkc01ldGEpKSA6IFt0aGlzLmZvcm1FbGVtZW50c1tpbmRleF0uZmllbGRzTWV0YV0pKSwgdGVtcEZpZWxkc01ldGFdO1xuXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgZWxlbWVudHNbaW5kZXhdID0geyAuLi5lbGVtZW50c1tpbmRleF0sIGNvbHVtbnM6IHVwZGF0ZWRDb2x1bW5zLCBmaWVsZHNNZXRhOiBmaWVsZHNNZXRhIH07XG4gICAgfVxuXG4gICAgLy8gRW1pdCB0aGUgdXBkYXRlZCBmb3JtIGVsZW1lbnRzXG4gICAgLy8gdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoZWxlbWVudHMpO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gZWxlbWVudHM7XG4gICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLmVsZW1lbnRzXSk7XG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRTdWJqZWN0Lm5leHQoaW5kKTtcbiAgICAvLyBMb2cgZm9yIGRlYnVnZ2luZ1xuICAgIC8vIGNvbnNvbGUubG9nKFwiVXBkYXRlZCBmb3JtIGVsZW1lbnRzOlwiLCAgdGhpcy5mb3JtRWxlbWVudHMpO1xuICB9XG5cbiAgdXBkYXRlRWxlbWVudChpbmRleDogbnVtYmVyLCB1cGRhdGVzOiBQYXJ0aWFsPEZvcm1FbGVtZW50Pikge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gWy4uLnRoaXMuZ2V0RWxlbWVudHMoKV07XG4gICAgaWYgKGVsZW1lbnRzW2luZGV4XSkge1xuICAgICAgZWxlbWVudHNbaW5kZXhdID0ge1xuICAgICAgICAuLi5lbGVtZW50c1tpbmRleF0sXG4gICAgICAgIC4uLnVwZGF0ZXMsXG4gICAgICAgIG9wdGlvbnM6IHVwZGF0ZXMub3B0aW9ucyB8fCBlbGVtZW50c1tpbmRleF0ub3B0aW9ucyB8fCBbXSxcbiAgICAgIH07XG4gICAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChlbGVtZW50cyk7XG4gICAgfVxuXG4gICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCB0aGlzLmZvcm1FbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRFbGVtZW50ID0ge1xuICAgICAgICAuLi50aGlzLmZvcm1FbGVtZW50c1tpbmRleF0sXG4gICAgICAgIC4uLnVwZGF0ZXNcbiAgICAgIH07XG4gICAgICBpZiAodXBkYXRlcy5yZXF1aXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQpIHtcbiAgICAgICAgICBjb25zdCBxdWVzdGlvblRleHQgPSB1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQucmVwbGFjZSgvXFxzKlxcKiskLywgJycpO1xuICAgICAgICAgIHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dCA9IHVwZGF0ZXMucmVxdWlyZWQgPyBgJHtxdWVzdGlvblRleHR9ICpgIDogcXVlc3Rpb25UZXh0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtZW50c1tpbmRleF0pIHtcbiAgICAgICAgICBlbGVtZW50c1tpbmRleF0gPSB7IC4uLmVsZW1lbnRzW2luZGV4XSwgLi4udXBkYXRlcyB9O1xuICAgICAgICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gZWxlbWVudHM7XG4gICAgICAgICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIHNwZWNpYWwgY2FzZXNcbiAgICAgIGlmICh1cGRhdGVzLnJlcXVpcmVkID09PSB0cnVlICYmIHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dCAmJiAhdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0LmVuZHNXaXRoKCcqJykpIHtcbiAgICAgICAgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ID0gYCR7dXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0fSAqYDtcbiAgICAgIH0gZWxzZSBpZiAodXBkYXRlcy5yZXF1aXJlZCA9PT0gZmFsc2UgJiYgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ICYmIHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dC5lbmRzV2l0aCgnKicpKSB7XG4gICAgICAgIHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dCA9IHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dC5zbGljZSgwLCAtMik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XSA9IHVwZGF0ZWRFbGVtZW50O1xuICAgICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gICAgICAvLyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZm9ybUVsZW1lbnRzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtRWxlbWVudHMpKTtcbiAgICB9XG4gIH1cbiAgdXBkYXRlVGl0bGUoZXZlbnQ6IGFueSkge1xuICAgIC8vQVAtMTBNQVIyNSBVcGRhdGVzIHRoZSB0aXRsZSBvZiB0aGUgZmlyc3QgcmVjb3JkIGluIHRoZSBib29rICBcbiAgICB0aGlzLmJvb2sucmVjb3Jkc1swXS50aXRsZSA9IGV2ZW50O1xuICB9XG4gIHNldFNlbGVjdGVkRWxlbWVudChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRTdWJqZWN0Lm5leHQoaW5kZXgpO1xuICAgIHRoaXMuY3VycmVudEVsZW1lbnQgPSB0aGlzLmZvcm1FbGVtZW50c1tpbmRleF1cbiAgICB0aGlzLnNlbGVjdFRhYmxlQ29sdW1uID0gbnVsbFxuICB9XG4gIC8vIFNLUzE5TUFSMjUgc2V0IHRoZSBzZWxlY3RlZCB0YWJsZSBjb2x1bW5cbiAgc2V0U2VsZWN0ZWRUYWJsZUVsZW1lbnQoaW5kZXg6IGFueSwgZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuY3VycmVudEVsZW1lbnQgPSB0aGlzLmZvcm1FbGVtZW50c1tpbmRleF1cbiAgICBpZiAodGhpcy5jdXJyZW50RWxlbWVudD8udHlwZSA9PT0gJ1RhYmxlJykge1xuICAgICAgdGhpcy5jdXJyZW50RWxlbWVudFsnZmllbGRzTWV0YSddID0gdHlwZW9mIHRoaXMuY3VycmVudEVsZW1lbnQ/LmZpZWxkc01ldGEgPT09ICdvYmplY3QnID8gdGhpcy5jdXJyZW50RWxlbWVudD8uZmllbGRzTWV0YSA6IEpTT04ucGFyc2UodGhpcy5jdXJyZW50RWxlbWVudC5maWVsZHNNZXRhKTtcbiAgICB9XG4gICAgY29uc3QgZm91bmRJdGVtID0gdGhpcy5jdXJyZW50RWxlbWVudD8udHlwZSA9PT0gJ1RhYmxlJyA/IHRoaXMuY3VycmVudEVsZW1lbnRbJ2ZpZWxkc01ldGEnXS5maW5kKGl0ZW0gPT4gaXRlbVsnYXBpTmFtZSddID09PSBldmVudD8uY29sdW1uKSA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNlbGVjdFRhYmxlQ29sdW1uID0gZm91bmRJdGVtPy51bmlxdWVJZGVudGlmaWVyXG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRTdWJqZWN0Lm5leHQoaW5kZXgpO1xuICB9XG4gIHJlbW92ZVNlbGVjdGVkVGFibGVFbGVtZW50KGluZGV4OiBudW1iZXIsIGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmN1cnJlbnRFbGVtZW50ID0gdGhpcy5mb3JtRWxlbWVudHNbaW5kZXhdO1xuXG4gICAgaWYgKHRoaXMuY3VycmVudEVsZW1lbnQ/LnR5cGUgPT09ICdUYWJsZScpIHtcbiAgICAgIHRoaXMuY3VycmVudEVsZW1lbnRbJ2ZpZWxkc01ldGEnXSA9IHR5cGVvZiB0aGlzLmN1cnJlbnRFbGVtZW50Py5maWVsZHNNZXRhID09PSAnb2JqZWN0JyA/IHRoaXMuY3VycmVudEVsZW1lbnQ/LmZpZWxkc01ldGEgOiBKU09OLnBhcnNlKHRoaXMuY3VycmVudEVsZW1lbnQuZmllbGRzTWV0YSk7XG4gICAgICAvLyBGaW5kIHRoZSBpbmRleCBvZiB0aGUgaXRlbVxuICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5jdXJyZW50RWxlbWVudFsnZmllbGRzTWV0YSddLmZpbmRJbmRleChpdGVtID0+IGl0ZW1bJ2FwaU5hbWUnXSA9PT0gZXZlbnQ/LmNvbHVtbik7XG4gICAgICAvLyBSZW1vdmUgdGhlIGl0ZW0gaWYgZm91bmRcbiAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7XG4gICAgICAgIHRoaXMuY3VycmVudEVsZW1lbnRbJ2ZpZWxkc01ldGEnXS5zcGxpY2UoaXRlbUluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zZWxlY3RUYWJsZUNvbHVtbiA9IG51bGxcbiAgICB0aGlzLmVsZW1lbnRVcGRhdGUoaW5kZXgsIHRoaXMuY3VycmVudEVsZW1lbnQpXG4gIH1cbiAgLy8gU0tTMTlNQVIyNSBnZXQgdGhlIHNlbGVjdGVkIHRhYmxlIGNvbHVtblxuICBnZXRTZWxlY3RUYWJsZUNvbHVtbigpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RUYWJsZUNvbHVtbjtcbiAgfVxuICBzZWxlY3RIZWFkaW5nKGV2ZW50OiBhbnkpIHtcbiAgICAvL0FQLTEwTUFSMjUgRW1pdHMgdGhlIHNlbGVjdGVkIGhlYWRpbmcgZXZlbnQgIFxuICAgIHRoaXMuc2VsZWN0SGVhZGVyU3ViamVjdC5uZXh0KGV2ZW50KTtcbiAgfVxuXG5cbiAgZ2V0RWxlbWVudHMoKTogRm9ybUVsZW1lbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUVsZW1lbnRzLm1hcChlbGVtZW50ID0+ICh7XG4gICAgICAuLi5lbGVtZW50LFxuICAgICAgb3B0aW9uczogZWxlbWVudC5vcHRpb25zIHx8IFtdLFxuICAgIH0pKTtcbiAgfVxuICBzb3J0RWxlbWVudHNCeU9yZGVyKCk6IHZvaWQge1xuICAgIC8vQVAtMTBNQVIyNSBTb3J0IGVsZW1lbnRzIGJ5IGN1cnJlbnQgb3JkZXJcbiAgICB0aGlzLmZvcm1FbGVtZW50cy5zb3J0KChhLCBiKSA9PiBhLnF1ZXN0aW9uTnVtYmVyIC0gYi5xdWVzdGlvbk51bWJlcik7XG4gICAgdGhpcy5mb3JtRWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICAgIGVsZW1lbnQucXVlc3Rpb25OdW1iZXIgPSBpbmRleCArIDE7XG4gICAgfSk7XG4gICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gIH1cbiAgLy9BUC0xME1BUjI1IFJldHVybnMgdGhlIGN1cnJlbnQgYm9vayBkYXRhICBcbiAgZ2V0Qm9vaygpIHtcbiAgICByZXR1cm4gdGhpcy5ib29rO1xuICB9XG4gIC8vIEluIEZvcm1CdWlsZGVyU2VydmljZVxuICBkb3dubG9hZEVsZW1lbnQoKSB7XG4gICAgLy8gU0tTMjhNQVIyNSByZW1vdmUgcWJSZWZlcmVuY2VRdWVzdGlvbnMgZm9yIGRvd25sb2FkIHRpbWUgYW5kIHN1YnRleHQgdG8gY29udmVydCB0b28gc3RyaW5nXG4gICAgdGhpcy5mb3JtRWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09ICdib29rJykge1xuICAgICAgICBkZWxldGUgZWxlbWVudC5xYlJlZmVyZW5jZVF1ZXN0aW9ucztcbiAgICAgIH1cbiAgICAgIGlmKCBlbGVtZW50LnN1YlRleHQpe1xuICAgICAgICBlbGVtZW50LnN1YlRleHQgPSB0eXBlb2YgZWxlbWVudD8uc3ViVGV4dCA9PT0gJ29iamVjdCcgPyBlbGVtZW50Py5zdWJUZXh0IDogSlNPTi5wYXJzZShlbGVtZW50WydzdWJUZXh0J10pO1xuICAgICAgICBpZiAodHlwZW9mIGVsZW1lbnQuc3ViVGV4dC5maWVsZCAgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgLy8gQ29udmVydCB0byBhbiBhcnJheSBpZiBpdCdzIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZ1xuICAgICAgICAgIGVsZW1lbnQuc3ViVGV4dC5maWVsZCAgPSBlbGVtZW50LnN1YlRleHQuZmllbGQuc3BsaXQoJywnKS5tYXAoaXRlbSA9PiBpdGVtLnRyaW0oKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmKCBlbGVtZW50LnN1YlRleHQpe1xuICAgICAgICBlbGVtZW50LnN1YlRleHQgPSB0eXBlb2YgZWxlbWVudD8uc3ViVGV4dCAhPT0gJ29iamVjdCcgPyBlbGVtZW50Py5zdWJUZXh0IDogSlNPTi5zdHJpbmdpZnkoZWxlbWVudFsnc3ViVGV4dCddKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBcbiAgICB0aGlzLmJvb2suYm9va1F1ZXN0aW9uc01hcFt0aGlzLnVuaXF1ZV9pZF0uc3ViUXVlc3Rpb25zID0gdGhpcy5mb3JtRWxlbWVudHM7XG4gICAgY29uc29sZS5sb2coJ2Jvb2snLCB0aGlzLmJvb2spO1xuICAgIGxldCB0ZW1wRWxlbWVudDogYW55ID0ge307XG5cbiAgICB0aGlzLmZvcm1FbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICBpZiAoZWxlbWVudC50eXBlID09PSAnRHJvcGRvd24nIHx8IGVsZW1lbnQudHlwZSA9PT0gJ1JhZGlvJyB8fCBlbGVtZW50LnR5cGUgPT09ICdDaGVja2JveCcpIHtcbiAgICAgICAgLy9BUCAyNUZFQjI1IC0gU3RvcmUgdGhlIGVudGlyZSBxdWVzdGlvbiB3aXRoIGl0cyBvcHRpb25zIHVuZGVyIGl0cyBJRFxuICAgICAgICB0ZW1wRWxlbWVudFtlbGVtZW50LmlkXSA9IHtcbiAgICAgICAgICAuLi5lbGVtZW50LFxuICAgICAgICAgIG9wdGlvbnM6IGVsZW1lbnQub3B0aW9ucyB8fCBbXVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5ib29rLnNxT3B0aW9ucyA9IHRlbXBFbGVtZW50O1xuICAgIHJldHVybiB0aGlzLmJvb2s7XG4gIH1cbiAgLy8gQVAtMDZNQVIyNSAtIEVsZW1lbnQgbmV3IG9yZGVyIHVwZGF0ZVxuICB1cGRhdGVFbGVtZW50c09yZGVyKHVwZGF0ZWRFbGVtZW50czogRm9ybUVsZW1lbnRbXSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gWy4uLnVwZGF0ZWRFbGVtZW50c107XG4gICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQodGhpcy5mb3JtRWxlbWVudHMpO1xuICB9XG4gIC8vIFJlbW92ZSBhbiBlbGVtZW50IGJ5IElEXG4gIC8vIFNhdmUgZWxlbWVudHMgdG8gbG9jYWxTdG9yYWdlIGFuZCB1cGRhdGUgdGhlIHN1YmplY3RcbiAgcmVtb3ZlRWxlbWVudENvbXBvbmVudChpZDogYW55KSB7XG4gICAgdGhpcy50ZW1wRWxlbSA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50U3ViamVjdC5uZXh0KG51bGwpO1xuICAgIHRoaXMuY3VycmVudEVsZW1lbnQgPSB7fVxuICAgIHRoaXMuZm9ybUVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQuaWQgIT09IGlkKSB7XG4gICAgICAgIHRoaXMudGVtcEVsZW0ucHVzaChlbGVtZW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmZvcm1FbGVtZW50cyA9IHRoaXMudGVtcEVsZW07XG4gICAgLy8gbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Zvcm1FbGVtZW50cycsIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybUVsZW1lbnRzKSk7XG4gICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gIH1cbiAgLy8gU0tTMTlNQVIyNSB1cGRhdGUgdGhlIGVsZW1lbnRcbiAgZWxlbWVudFVwZGF0ZShpbmRleDogYW55LCBlbGVtZW50OiBhbnkpIHtcbiAgICBjb25zdCBlbGVtZW50cyA9IFsuLi50aGlzLmdldEVsZW1lbnRzKCldO1xuICAgIGlmIChlbGVtZW50c1tpbmRleF0pIHtcbiAgICAgIGVsZW1lbnRzW2luZGV4XSA9IGVsZW1lbnRcbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gZWxlbWVudHM7XG4gICAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4uZWxlbWVudHNdKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50U3ViamVjdC5uZXh0KGluZGV4KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
357
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idWlsZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvc2VydmljZXMvZm9ybS1idWlsZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYTtBQUNiLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7O0FBK0RuRCxNQUFNLE9BQU8sa0JBQWtCO0lBbUJUO0lBbEJaLFlBQVksR0FBa0IsRUFBRSxDQUFDO0lBQ2pDLG1CQUFtQixHQUFHLElBQUksZUFBZSxDQUFnQixFQUFFLENBQUMsQ0FBQztJQUM3RCxzQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELG1CQUFtQixHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO0lBQ3JELGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztJQUMvQyxnQkFBZ0IsR0FBNEIsSUFBSSxDQUFDO0lBQ3pELElBQUksQ0FBTTtJQUNWLFNBQVMsQ0FBTTtJQUNmLFFBQVEsQ0FBUTtJQUVoQixhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hELGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5RCxvQkFBb0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0QsY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbkQsY0FBYyxDQUFNO0lBQ3BCLGlCQUFpQixDQUFNO0lBQ3ZCLHlFQUF5RTtJQUV6RSxZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FB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LGtCQUFrQjs0R0FBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBUCAyMkpBTjI1XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuLi9wYWdlcy9idWlsZGVyL2VsZW1lbnQvZWxlbWVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW50ZXJmYWNlIEZvcm1FbGVtZW50IHtcbiAgYWN0aW9uOiBhbnk7XG4gIGlkOiBhbnk7XG4gIHR5cGU6IHN0cmluZztcbiAgbmFtZTogYW55O1xuICBxdWVzdGlvblRleHQ/OiBzdHJpbmc7XG4gIHF1ZXN0aW9uPzogc3RyaW5nO1xuICBoZWxwVGV4dD86IHN0cmluZztcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuICBpc1JlYWRPbmx5PzogYm9vbGVhbjtcbiAgaXNIaWRkZW4/OiBib29sZWFuO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHJlZmVyZW5jZUZpZWxkPzogYW55O1xuICBhZGRpdGlvbmFsUmljaENvbnRlbnQ/OiBhbnk7XG4gIGdyb3VwTmFtZT86IGFueTtcbiAgaXNEYXRlQmFja3dhcmQ/OiBib29sZWFuO1xuICB0aXRsZT86IGFueTtcbiAgc3ViVGl0bGU/OiBhbnk7XG4gIHNpemU/OiBudW1iZXI7XG4gIGlzRGF0ZUZvcndhcmQ/OiBib29sZWFuO1xuICBpc09wdGlvbmFsPzogYm9vbGVhbjtcbiAgaXNUaXRsZT86IGJvb2xlYW47XG4gIG5leHRRdWVzdGlvbj86IGFueTtcbiAgYWxsb3dlZEZpbGVFeHRlbnNpb25zPzogYW55O1xuICBxdWVzdGlvbk51bWJlcj86IG51bWJlcjtcbiAgb3JkZXI6IG51bWJlcjtcbiAgcXVlc3Rpb25Cb29rSWQ/OiBhbnk7XG4gIGZpZWxkc01ldGE/OiBhbnk7XG4gIHRyYWNraW5nSWQ/OiBhbnk7XG4gIHJlY29yZElkPzogYW55O1xuICBxYlJlZmVyZW5jZT86IGFueTtcbiAgcWJSZWZlcmVuY2VRdWVzdGlvbnM/OiBhbnk7XG4gIHByaW1hcnlLZXk6IGJvb2xlYW4sXG4gIHN0eWxlOiB7XG4gICAgbGFiZWxDbGFzczogYW55LFxuICAgIGxhYmVsU3R5bGU6IGFueSxcbiAgICBsYWJlbFZhbHVlU3R5bGU6IGFueSxcbiAgICBpbnB1dENsYXNzOiBhbnksXG4gICAgaW5wdXRTdHlsZTogYW55LFxuICAgIHNob3dMYWJlbDogYm9vbGVhbixcbiAgICBib29rU3R5bGU6IGFueSxcbiAgICBkaXJlY3Rpb246IGFueSxcbiAgICBxdWVzdGlvblN0eWxlOiBhbnksXG4gIH0sXG4gICAgLy8gQVAgMjVGRUIyNSAtIG9wdGlvbnMgYXJyYXlcbiAgb3B0aW9ucz86IEFycmF5PHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIHVuaXF1ZUlkZW50aWZpZXI6IGFueTtcbiAgICBxdWVzdGlvbklkOiBhbnk7XG4gICAgbmV4dFF1ZXN0aW9uOiBhbnk7XG4gICAgbmFtZTogYW55O1xuICAgIGlkOiBhbnk7XG4gIH0+O1xuICBzdWJUZXh0OiBhbnksXG4gIGNvbHVtbnM/OiBhbnk7XG59XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUJ1aWxkZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBmb3JtRWxlbWVudHM6IEZvcm1FbGVtZW50W10gPSBbXTtcbiAgcHJpdmF0ZSBmb3JtRWxlbWVudHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGb3JtRWxlbWVudFtdPihbXSk7XG4gIHByaXZhdGUgc2VsZWN0ZWRFbGVtZW50U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigtMSk7XG4gIHByaXZhdGUgc2VsZWN0SGVhZGVyU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgcHJpdmF0ZSBhY3Rpb25TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuICBwcml2YXRlIGVsZW1lbnRDb21wb25lbnQ6IEVsZW1lbnRDb21wb25lbnQgfCBudWxsID0gbnVsbDtcbiAgYm9vazogYW55O1xuICB1bmlxdWVfaWQ6IGFueTtcbiAgdGVtcEVsZW06IGFueVtdO1xuXG4gIGZvcm1FbGVtZW50cyQgPSB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIHNlbGVjdGVkRWxlbWVudCQgPSB0aGlzLnNlbGVjdGVkRWxlbWVudFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIHNlbGVjdEhlYWRlclN1YmplY3QkID0gdGhpcy5zZWxlY3RIZWFkZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBhY3Rpb25TdWJqZWN0JCA9IHRoaXMuYWN0aW9uU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgY3VycmVudEVsZW1lbnQ6IGFueTtcbiAgc2VsZWN0VGFibGVDb2x1bW46IGFueTtcbiAgLy8gYm9vazogeyBib29rUXVlc3Rpb25zTWFwOiB7IHVuaXF1ZV9pZDogeyBzdWJRdWVzdGlvbnM6IGFueVtdOyB9OyB9OyB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge1xuICAgIC8vIExvYWQgc2F2ZWQgZWxlbWVudHMgZnJvbSBsb2NhbFN0b3JhZ2VcbiAgICB0aGlzLmZvcm1FbGVtZW50cyA9IFtdO1xuICAgIGNvbnN0IHNhdmVkRm9ybUVsZW1lbnRzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2Zvcm1FbGVtZW50cycpO1xuICAgIGlmIChzYXZlZEZvcm1FbGVtZW50cykge1xuICAgICAgdGhpcy5mb3JtRWxlbWVudHMgPSBKU09OLnBhcnNlKHNhdmVkRm9ybUVsZW1lbnRzKTtcbiAgICAgIHRoaXMuZW1pdEZvcm1FbGVtZW50cygpO1xuICAgICAgLy8gdGhpcy5ib29rID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYm9vaycpIHx8ICd7fScpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIGVtaXRGb3JtRWxlbWVudHMoKSB7XG4gICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gIH0gIFxuICBpbnRpYWxpemVCb29rKGJvb2s6IGFueSkge1xuICAgIC8vIEFQIDEzTUFSMjUgLSBHZXQgdGhlIHVuaXF1ZSBpZCBpbiB0aGUgYm9va1F1ZXN0aW9uc01hcCBcbiAgICB0aGlzLnVuaXF1ZV9pZCA9IE9iamVjdC5rZXlzKGJvb2suYm9va1F1ZXN0aW9uc01hcClbMF07XG4gICAgbGV0IHRlbXBib29rID0gYm9vay5ib29rUXVlc3Rpb25zTWFwW3RoaXMudW5pcXVlX2lkXS5zdWJRdWVzdGlvbnM7XG4vLyBTS1MyOE1BUjI1IHVwZGF0ZSBuZXN0ZWQgYm9vayBRdWVzdGlvbnNNYXBcbiAgICB0ZW1wYm9vay5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICBpZiAoZWxlbWVudC50eXBlID09PSBcImJvb2tcIiAmJiBlbGVtZW50LnFiUmVmZXJlbmNlKSB7XG4gICAgICAgIHRoaXMuZ2V0UmVmUWJEYXRhKGVsZW1lbnQucWJSZWZlcmVuY2UpLnN1YnNjcmliZShcbiAgICAgICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGVsZW1lbnRbJ3FiUmVmZXJlbmNlUXVlc3Rpb25zJ10gPSByZXNwb25zZTsgLy8gQXNzaWduIHJlc3BvbnNlIHRvIHFiUmVmZXJlbmNlUXVlc3Rpb25zXG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJBUEkgRXJyb3I6XCIsIGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgYm9vay5ib29rUXVlc3Rpb25zTWFwW3RoaXMudW5pcXVlX2lkXS5zdWJRdWVzdGlvbnMgPSB0ZW1wYm9va1xuICAgIHRoaXMuYm9vayA9IGJvb2tcblxuICAgIHRoaXMuYm9vay5ib29rUXVlc3Rpb25zTWFwW3RoaXMudW5pcXVlX2lkXT8uc3ViUXVlc3Rpb25zPy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgaWYgKHRoaXMuYm9vay5zcU9wdGlvbnM/LltlbGVtZW50LmlkXSkge1xuICAgICAgICBlbGVtZW50Lm9wdGlvbnMgPSB0aGlzLmJvb2suc3FPcHRpb25zW2VsZW1lbnQuaWRdLm9wdGlvbnM7XG4gICAgICB9XG4gICAgICB0aGlzLmFkZEVsZW1lbnQoZWxlbWVudCk7XG4gICAgfSk7XG4gIH1cblxuICAvL1NLUzI4TUFSMjUgRnVuY3Rpb24gdG8gZmV0Y2ggcmVmcWIgZGF0YVxuICBnZXRSZWZRYkRhdGEocmVmcWJpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGBodHRwczovL2Rldi1hcGkudmFsYXJoci5jb20vbnh0P25hbWU9JHtyZWZxYmlkfWApO1xuICB9XG5cbiAgIC8vQVAtMTdBUFIyNSBGdW5jdGlvbiB0byBnZW5lcmF0ZSB1bmlxdWUgaWRcbiAgIGFkZEVsZW1lbnRXaXRoSWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwcmVmaXggPSAnbmdueHQnOyBcbiAgICBjb25zdCBjaGFycyA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSc7XG4gICAgbGV0IGNvcmUgPSAnJztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDE0OyBpKyspIHtcbiAgICAgIGNvcmUgKz0gY2hhcnMuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoYXJzLmxlbmd0aCkpO1xuICAgIH1cbiAgICByZXR1cm4gcHJlZml4ICsgY29yZTsgXG4gIH1cbiAgLy8gQVAgMjNNQVkyNSBVcGRhdGVzIHRoZSBxdWVzdGlvbmJvb2sgYWN0aW9uIGJ1dHRvbnM6IGFkZHMgb3IgcmVtb3ZlcyBiYXNlZCBvbiBhY3Rpb24gdHlwZVxuICB1cGRhdGVRdWVzdGlvbkJvb2tBY3Rpb25CdXR0b25zKGJ1dHRvbjogYW55LGFjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmJvb2sucXVlc3Rpb25ib29rKSB7XG4gICAgICB0aGlzLmJvb2sucXVlc3Rpb25ib29rID0ge307XG4gICAgfVxuICAgIGlmKGFjdGlvbiA9PT0gJ2FkZCcpIHtcbiAgICAgIHRoaXMuYm9vay5xdWVzdGlvbmJvb2suYWN0aW9uLnB1c2goYnV0dG9uKTtcbiAgICB9ZWxzZSBpZihhY3Rpb24gPT09ICdyZW1vdmUnKSB7XG4gICAgICB0aGlzLmJvb2sucXVlc3Rpb25ib29rLmFjdGlvbiA9IHRoaXMuYm9vay5xdWVzdGlvbmJvb2suYWN0aW9uLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLmlkICE9PSBidXR0b24uaWQpO1xuICAgIH1cbiAgICB0aGlzLmFjdGlvblN1YmplY3QubmV4dCh0aGlzLmJvb2spO1xuICB9XG4gIFxuICBuZXdCb29rKCkge1xuICAgIHRoaXMudW5pcXVlX2lkID0gdGhpcy5hZGRFbGVtZW50V2l0aElkKCk7XG4gICAgdGhpcy5ib29rID0ge1xuICAgICAgJ2Jvb2tRdWVzdGlvbnNNYXAnOiB7XG4gICAgICAgIFt0aGlzLnVuaXF1ZV9pZF06IHtcbiAgICAgICAgICAnc3ViUXVlc3Rpb25zJzogW10sXG4gICAgICAgICAgJ3R5cGUnOiAnQm9vaydcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgICdxdWVzdGlvbmJvb2snOiB7XG4gICAgICAgIFwiYWN0aW9uXCI6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJDYW5jZWxcIixcbiAgICAgICAgICAgIFwiZXZlbnR0b2VtaXRcIjogXCJjbG9zZVwiLFxuICAgICAgICAgICAgXCJhbHRcIjogXCJcIixcbiAgICAgICAgICAgIFwicG9zaXRpb25QZXJjZW50XCI6IDMsXG4gICAgICAgICAgICBcIndpZHRoXCI6IDEwMCxcbiAgICAgICAgICAgIFwidGV4dENvbG9yXCI6IFwiI2ZmZmZmZlwiLFxuICAgICAgICAgICAgXCJib3JkZXJSYWRpdXNcIjogNixcbiAgICAgICAgICAgICdpZCc6IDEsXG5cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlNhdmVcIixcbiAgICAgICAgICAgIFwiZXZlbnR0b2VtaXRcIjogXCJzdWJtaXRcIixcbiAgICAgICAgICAgIFwiYWx0XCI6IFwiXCIsXG4gICAgICAgICAgICBcImVuZHBvaW50XCI6IFwiXCIsXG4gICAgICAgICAgICBcIm1ldGhvZFwiOiBcIlBPU1RcIixcbiAgICAgICAgICAgIFwicG9zaXRpb25QZXJjZW50XCI6IDE0LCAgXG4gICAgICAgICAgICBcIndpZHRoXCI6IDEwMCxcbiAgICAgICAgICAgIFwidGV4dENvbG9yXCI6IFwiI2ZmZmZmZlwiLFxuICAgICAgICAgICAgXCJib3JkZXJSYWRpdXNcIjogNixcbiAgICAgICAgICAgICdpZCc6IDEsXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgJ3JlY29yZHMnOiBbe1xuICAgICAgICAnaWQnOiB0aGlzLnVuaXF1ZV9pZCxcbiAgICAgICAgJ3RpdGxlJzogJ1VudGl0bGVkJyxcbiAgICAgICAgJ3N1YlF1ZXN0aW9ucyc6IFt7fV1cbiAgICAgIH1dXG4gICAgfVxuICB9XG4gIC8vIEFQIDI2RkVCMjUgLSBjbGVhciB0aGUgZm9ybSBlbGVtZW50cyBcbiAgY2xlYXJFbGVtZW50cygpIHtcbiAgICB0aGlzLmZvcm1FbGVtZW50cyA9IFtdO1xuICAgIHRoaXMuZW1pdEZvcm1FbGVtZW50cygpO1xuICB9XG4gIC8vIEdldCB0aGUgZWxlbWVudCBjb21wb25lbnQgcmVmZXJlbmNlXG4gIGdldEVsZW1lbnRDb21wb25lbnQoKTogRWxlbWVudENvbXBvbmVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRDb21wb25lbnQ7XG4gIH1cblxuICBzZXRFbGVtZW50Q29tcG9uZW50KGNvbXBvbmVudDogRWxlbWVudENvbXBvbmVudCkge1xuICAgIHRoaXMuZWxlbWVudENvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgfVxuXG4gIC8vIEFkZCBhIG5ldyBlbGVtZW50IHRvIHRoZSBmb3JtXG4gIGFkZEVsZW1lbnQoZWxlbWVudDogRm9ybUVsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAoIWVsZW1lbnQub3B0aW9ucykge1xuICAgICAgZWxlbWVudC5vcHRpb25zID0gW107IC8vIG9wdGlvbnMgaXMgaW5pdGlhbGl6ZWRcbiAgICB9XG4gICAgZWxlbWVudFsncXVlc3Rpb25Cb29rSWQnXSA9IHRoaXMudW5pcXVlX2lkO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgdGhpcy5lbWl0Rm9ybUVsZW1lbnRzKCk7XG4gIH1cbiAgLy8gU0tTMTNNQVIyNSBhZGQgdGFibGUgZWxlbWVudFxuICBhZGRUYWJsZUVsZW1lbnQoZWxlbWVudDogYW55LCBpbmQgOmFueSkge1xuICAgIC8vU0tTMTNNQVIyNSBFbnN1cmUgY3VycmVudEVsZW1lbnQgZXhpc3RzXG4gICAgaWYgKCF0aGlzLmN1cnJlbnRFbGVtZW50KSByZXR1cm47XG4gICAgLy8gQ2xvbmUgZWxlbWVudHMgYXJyYXlcbiAgICBjb25zdCBlbGVtZW50cyA9IFsuLi50aGlzLmdldEVsZW1lbnRzKCldO1xuXG4gICAgLy8gU0tTMTNNQVIyNSBGaW5kIHRoZSBlbGVtZW50IGFuZCB1cGRhdGUgaXRzIGNvbHVtbnNcbiAgICBjb25zdCBpbmRleCA9IGVsZW1lbnRzLmZpbmRJbmRleChlbCA9PiBlbC5pZCA9PT0gdGhpcy5jdXJyZW50RWxlbWVudC5pZCk7XG5cbiAgICAvLyBDbG9uZSBjb2x1bW5zIGFycmF5IHRvIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvblxuICAgIGNvbnN0IHVwZGF0ZWRDb2x1bW5zID0gWy4uLih0aGlzLmZvcm1FbGVtZW50c1tpbmRleF0uY29sdW1ucyB8fCBbXSksIGVsZW1lbnRdO1xuICAgIGxldCB0ZW1wRmllbGRzTWV0YSA9IHtcbiAgICAgICdsYWJlbCc6IGVsZW1lbnQubGFiZWwsXG4gICAgICAnYXBpTmFtZSc6IGVsZW1lbnQuZmllbGROYW1lLFxuICAgICAgXCJpc2RlbGV0ZWRcIjogZmFsc2UsXG4gICAgICBcIm9yZGVyYnlmbGFnXCI6IGZhbHNlLFxuICAgICAgXCJmaWx0ZXJmbGFnXCI6IGZhbHNlLFxuICAgICAgXCJvdXRwdXRGbGFnXCI6IHRydWUsXG4gICAgICBcImlzY2hpbGRcIjogZmFsc2UsXG4gICAgICBcInJlc3VsdGFudGZsYWdcIjogZmFsc2UsXG4gICAgICBcInNlYXJjaGZsYWdcIjogZmFsc2UsXG4gICAgICBcImZsZFR5cGVcIjogZWxlbWVudC50eXBlLFxuICAgICAgXCJyZWFkT25seVwiOiBmYWxzZSxcbiAgICAgIFwidW5pcXVlSWRlbnRpZmllclwiOiBlbGVtZW50LmlkXG4gICAgfVxuICAgIGxldCBmaWVsZHNNZXRhID0gWy4uLihBcnJheS5pc0FycmF5KHRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XS5maWVsZHNNZXRhKSA/IHRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XS5maWVsZHNNZXRhIDogKHR5cGVvZiB0aGlzLmZvcm1FbGVtZW50c1tpbmRleF0uZmllbGRzTWV0YSA9PT0gJ3N0cmluZycgPyAoSlNPTi5wYXJzZSh0aGlzLmZvcm1FbGVtZW50c1tpbmRleF0uZmllbGRzTWV0YSkpIDogW3RoaXMuZm9ybUVsZW1lbnRzW2luZGV4XS5maWVsZHNNZXRhXSkpLCB0ZW1wRmllbGRzTWV0YV07XG5cbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICBlbGVtZW50c1tpbmRleF0gPSB7IC4uLmVsZW1lbnRzW2luZGV4XSwgY29sdW1uczogdXBkYXRlZENvbHVtbnMsIGZpZWxkc01ldGE6IGZpZWxkc01ldGEgfTtcbiAgICB9XG5cbiAgICAvLyBFbWl0IHRoZSB1cGRhdGVkIGZvcm0gZWxlbWVudHNcbiAgICAvLyB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChlbGVtZW50cyk7XG4gICAgdGhpcy5mb3JtRWxlbWVudHMgPSBlbGVtZW50cztcbiAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4uZWxlbWVudHNdKTtcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFN1YmplY3QubmV4dChpbmQpO1xuICAgIC8vIExvZyBmb3IgZGVidWdnaW5nXG4gICAgLy8gY29uc29sZS5sb2coXCJVcGRhdGVkIGZvcm0gZWxlbWVudHM6XCIsICB0aGlzLmZvcm1FbGVtZW50cyk7XG4gIH1cblxuICB1cGRhdGVFbGVtZW50KGluZGV4OiBudW1iZXIsIHVwZGF0ZXM6IFBhcnRpYWw8Rm9ybUVsZW1lbnQ+KSB7XG4gICAgY29uc3QgZWxlbWVudHMgPSBbLi4udGhpcy5nZXRFbGVtZW50cygpXTtcbiAgICBpZiAoZWxlbWVudHNbaW5kZXhdKSB7XG4gICAgICBlbGVtZW50c1tpbmRleF0gPSB7XG4gICAgICAgIC4uLmVsZW1lbnRzW2luZGV4XSxcbiAgICAgICAgLi4udXBkYXRlcyxcbiAgICAgICAgb3B0aW9uczogdXBkYXRlcy5vcHRpb25zIHx8IGVsZW1lbnRzW2luZGV4XS5vcHRpb25zIHx8IFtdLFxuICAgICAgfTtcbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KGVsZW1lbnRzKTtcbiAgICB9XG5cbiAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMuZm9ybUVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgY29uc3QgdXBkYXRlZEVsZW1lbnQgPSB7XG4gICAgICAgIC4uLnRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XSxcbiAgICAgICAgLi4udXBkYXRlc1xuICAgICAgfTtcbiAgICAgIGlmICh1cGRhdGVzLnJlcXVpcmVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dCkge1xuICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uVGV4dCA9IHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dC5yZXBsYWNlKC9cXHMqXFwqKyQvLCAnJyk7XG4gICAgICAgICAgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ID0gdXBkYXRlcy5yZXF1aXJlZCA/IGAke3F1ZXN0aW9uVGV4dH0gKmAgOiBxdWVzdGlvblRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsZW1lbnRzW2luZGV4XSkge1xuICAgICAgICAgIGVsZW1lbnRzW2luZGV4XSA9IHsgLi4uZWxlbWVudHNbaW5kZXhdLCAuLi51cGRhdGVzIH07XG4gICAgICAgICAgdGhpcy5mb3JtRWxlbWVudHMgPSBlbGVtZW50cztcbiAgICAgICAgICB0aGlzLmVtaXRGb3JtRWxlbWVudHMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgc3BlY2lhbCBjYXNlc1xuICAgICAgaWYgKHVwZGF0ZXMucmVxdWlyZWQgPT09IHRydWUgJiYgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ICYmICF1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQuZW5kc1dpdGgoJyonKSkge1xuICAgICAgICB1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQgPSBgJHt1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHR9ICpgO1xuICAgICAgfSBlbHNlIGlmICh1cGRhdGVzLnJlcXVpcmVkID09PSBmYWxzZSAmJiB1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQgJiYgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0LmVuZHNXaXRoKCcqJykpIHtcbiAgICAgICAgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ID0gdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0LnNsaWNlKDAsIC0yKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5mb3JtRWxlbWVudHNbaW5kZXhdID0gdXBkYXRlZEVsZW1lbnQ7XG4gICAgICB0aGlzLmVtaXRGb3JtRWxlbWVudHMoKTtcbiAgICAgIC8vIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdmb3JtRWxlbWVudHMnLCBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm1FbGVtZW50cykpO1xuICAgIH1cbiAgfVxuICB1cGRhdGVUaXRsZShldmVudDogYW55KSB7XG4gICAgLy9BUC0xME1BUjI1IFVwZGF0ZXMgdGhlIHRpdGxlIG9mIHRoZSBmaXJzdCByZWNvcmQgaW4gdGhlIGJvb2sgIFxuICAgIHRoaXMuYm9vay5yZWNvcmRzWzBdLnRpdGxlID0gZXZlbnQ7XG4gIH1cbiAgc2V0U2VsZWN0ZWRFbGVtZW50KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFN1YmplY3QubmV4dChpbmRleCk7XG4gICAgdGhpcy5jdXJyZW50RWxlbWVudCA9IHRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XVxuICAgIHRoaXMuc2VsZWN0VGFibGVDb2x1bW4gPSBudWxsXG4gIH1cbiAgLy8gU0tTMTlNQVIyNSBzZXQgdGhlIHNlbGVjdGVkIHRhYmxlIGNvbHVtblxuICBzZXRTZWxlY3RlZFRhYmxlRWxlbWVudChpbmRleDogYW55LCBldmVudDogYW55KSB7XG4gICAgdGhpcy5jdXJyZW50RWxlbWVudCA9IHRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XVxuICAgIGlmICh0aGlzLmN1cnJlbnRFbGVtZW50Py50eXBlID09PSAnVGFibGUnKSB7XG4gICAgICB0aGlzLmN1cnJlbnRFbGVtZW50WydmaWVsZHNNZXRhJ10gPSB0eXBlb2YgdGhpcy5jdXJyZW50RWxlbWVudD8uZmllbGRzTWV0YSA9PT0gJ29iamVjdCcgPyB0aGlzLmN1cnJlbnRFbGVtZW50Py5maWVsZHNNZXRhIDogSlNPTi5wYXJzZSh0aGlzLmN1cnJlbnRFbGVtZW50LmZpZWxkc01ldGEpO1xuICAgIH1cbiAgICBjb25zdCBmb3VuZEl0ZW0gPSB0aGlzLmN1cnJlbnRFbGVtZW50Py50eXBlID09PSAnVGFibGUnID8gdGhpcy5jdXJyZW50RWxlbWVudFsnZmllbGRzTWV0YSddLmZpbmQoaXRlbSA9PiBpdGVtWydhcGlOYW1lJ10gPT09IGV2ZW50Py5jb2x1bW4pIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuc2VsZWN0VGFibGVDb2x1bW4gPSBmb3VuZEl0ZW0/LnVuaXF1ZUlkZW50aWZpZXJcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFN1YmplY3QubmV4dChpbmRleCk7XG4gIH1cbiAgcmVtb3ZlU2VsZWN0ZWRUYWJsZUVsZW1lbnQoaW5kZXg6IG51bWJlciwgZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuY3VycmVudEVsZW1lbnQgPSB0aGlzLmZvcm1FbGVtZW50c1tpbmRleF07XG5cbiAgICBpZiAodGhpcy5jdXJyZW50RWxlbWVudD8udHlwZSA9PT0gJ1RhYmxlJykge1xuICAgICAgdGhpcy5jdXJyZW50RWxlbWVudFsnZmllbGRzTWV0YSddID0gdHlwZW9mIHRoaXMuY3VycmVudEVsZW1lbnQ/LmZpZWxkc01ldGEgPT09ICdvYmplY3QnID8gdGhpcy5jdXJyZW50RWxlbWVudD8uZmllbGRzTWV0YSA6IEpTT04ucGFyc2UodGhpcy5jdXJyZW50RWxlbWVudC5maWVsZHNNZXRhKTtcbiAgICAgIC8vIEZpbmQgdGhlIGluZGV4IG9mIHRoZSBpdGVtXG4gICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmN1cnJlbnRFbGVtZW50WydmaWVsZHNNZXRhJ10uZmluZEluZGV4KGl0ZW0gPT4gaXRlbVsnYXBpTmFtZSddID09PSBldmVudD8uY29sdW1uKTtcbiAgICAgIC8vIFJlbW92ZSB0aGUgaXRlbSBpZiBmb3VuZFxuICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50RWxlbWVudFsnZmllbGRzTWV0YSddLnNwbGljZShpdGVtSW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlbGVjdFRhYmxlQ29sdW1uID0gbnVsbFxuICAgIHRoaXMuZWxlbWVudFVwZGF0ZShpbmRleCwgdGhpcy5jdXJyZW50RWxlbWVudClcbiAgfVxuICAvLyBTS1MxOU1BUjI1IGdldCB0aGUgc2VsZWN0ZWQgdGFibGUgY29sdW1uXG4gIGdldFNlbGVjdFRhYmxlQ29sdW1uKCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdFRhYmxlQ29sdW1uO1xuICB9XG4gIHNlbGVjdEhlYWRpbmcoZXZlbnQ6IGFueSkge1xuICAgIC8vQVAtMTBNQVIyNSBFbWl0cyB0aGUgc2VsZWN0ZWQgaGVhZGluZyBldmVudCAgXG4gICAgdGhpcy5zZWxlY3RIZWFkZXJTdWJqZWN0Lm5leHQoZXZlbnQpO1xuICB9XG5cblxuICBnZXRFbGVtZW50cygpOiBGb3JtRWxlbWVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtRWxlbWVudHMubWFwKGVsZW1lbnQgPT4gKHtcbiAgICAgIC4uLmVsZW1lbnQsXG4gICAgICBvcHRpb25zOiBlbGVtZW50Lm9wdGlvbnMgfHwgW10sXG4gICAgfSkpO1xuICB9XG4gIHNvcnRFbGVtZW50c0J5T3JkZXIoKTogdm9pZCB7XG4gICAgLy9BUC0xME1BUjI1IFNvcnQgZWxlbWVudHMgYnkgY3VycmVudCBvcmRlclxuICAgIHRoaXMuZm9ybUVsZW1lbnRzLnNvcnQoKGEsIGIpID0+IGEucXVlc3Rpb25OdW1iZXIgLSBiLnF1ZXN0aW9uTnVtYmVyKTtcbiAgICB0aGlzLmZvcm1FbGVtZW50cy5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgICAgZWxlbWVudC5xdWVzdGlvbk51bWJlciA9IGluZGV4ICsgMTtcbiAgICB9KTtcbiAgICB0aGlzLmVtaXRGb3JtRWxlbWVudHMoKTtcbiAgfVxuICAvL0FQLTEwTUFSMjUgUmV0dXJucyB0aGUgY3VycmVudCBib29rIGRhdGEgIFxuICBnZXRCb29rKCkge1xuICAgIHJldHVybiB0aGlzLmJvb2s7XG4gIH1cbiAgLy8gSW4gRm9ybUJ1aWxkZXJTZXJ2aWNlXG4gIGRvd25sb2FkRWxlbWVudCgpIHtcbiAgICAvLyBTS1MyOE1BUjI1IHJlbW92ZSBxYlJlZmVyZW5jZVF1ZXN0aW9ucyBmb3IgZG93bmxvYWQgdGltZSBhbmQgc3VidGV4dCB0byBjb252ZXJ0IHRvbyBzdHJpbmdcbiAgICB0aGlzLmZvcm1FbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ2Jvb2snKSB7XG4gICAgICAgIGRlbGV0ZSBlbGVtZW50LnFiUmVmZXJlbmNlUXVlc3Rpb25zO1xuICAgICAgfVxuICAgICAgaWYoIGVsZW1lbnQuc3ViVGV4dCl7XG4gICAgICAgIGVsZW1lbnQuc3ViVGV4dCA9IHR5cGVvZiBlbGVtZW50Py5zdWJUZXh0ID09PSAnb2JqZWN0JyA/IGVsZW1lbnQ/LnN1YlRleHQgOiBKU09OLnBhcnNlKGVsZW1lbnRbJ3N1YlRleHQnXSk7XG4gICAgICAgIGlmICh0eXBlb2YgZWxlbWVudC5zdWJUZXh0LmZpZWxkICA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAvLyBDb252ZXJ0IHRvIGFuIGFycmF5IGlmIGl0J3MgYSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nXG4gICAgICAgICAgZWxlbWVudC5zdWJUZXh0LmZpZWxkICA9IGVsZW1lbnQuc3ViVGV4dC5maWVsZC5zcGxpdCgnLCcpLm1hcChpdGVtID0+IGl0ZW0udHJpbSgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYoIGVsZW1lbnQuc3ViVGV4dCl7XG4gICAgICAgIGVsZW1lbnQuc3ViVGV4dCA9IHR5cGVvZiBlbGVtZW50Py5zdWJUZXh0ICE9PSAnb2JqZWN0JyA/IGVsZW1lbnQ/LnN1YlRleHQgOiBKU09OLnN0cmluZ2lmeShlbGVtZW50WydzdWJUZXh0J10pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIFxuICAgIHRoaXMuYm9vay5ib29rUXVlc3Rpb25zTWFwW3RoaXMudW5pcXVlX2lkXS5zdWJRdWVzdGlvbnMgPSB0aGlzLmZvcm1FbGVtZW50cztcbiAgICBjb25zb2xlLmxvZygnYm9vaycsIHRoaXMuYm9vayk7XG4gICAgbGV0IHRlbXBFbGVtZW50OiBhbnkgPSB7fTtcblxuICAgIHRoaXMuZm9ybUVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09ICdEcm9wZG93bicgfHwgZWxlbWVudC50eXBlID09PSAnUmFkaW8nIHx8IGVsZW1lbnQudHlwZSA9PT0gJ0NoZWNrYm94Jykge1xuICAgICAgICAvL0FQIDI1RkVCMjUgLSBTdG9yZSB0aGUgZW50aXJlIHF1ZXN0aW9uIHdpdGggaXRzIG9wdGlvbnMgdW5kZXIgaXRzIElEXG4gICAgICAgIHRlbXBFbGVtZW50W2VsZW1lbnQuaWRdID0ge1xuICAgICAgICAgIC4uLmVsZW1lbnQsXG4gICAgICAgICAgb3B0aW9uczogZWxlbWVudC5vcHRpb25zIHx8IFtdXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmJvb2suc3FPcHRpb25zID0gdGVtcEVsZW1lbnQ7XG4gICAgcmV0dXJuIHRoaXMuYm9vaztcbiAgfVxuICAvLyBBUC0wNk1BUjI1IC0gRWxlbWVudCBuZXcgb3JkZXIgdXBkYXRlXG4gIHVwZGF0ZUVsZW1lbnRzT3JkZXIodXBkYXRlZEVsZW1lbnRzOiBGb3JtRWxlbWVudFtdKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtRWxlbWVudHMgPSBbLi4udXBkYXRlZEVsZW1lbnRzXTtcbiAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dCh0aGlzLmZvcm1FbGVtZW50cyk7XG4gIH1cbiAgLy8gUmVtb3ZlIGFuIGVsZW1lbnQgYnkgSURcbiAgLy8gU2F2ZSBlbGVtZW50cyB0byBsb2NhbFN0b3JhZ2UgYW5kIHVwZGF0ZSB0aGUgc3ViamVjdFxuICByZW1vdmVFbGVtZW50Q29tcG9uZW50KGlkOiBhbnkpIHtcbiAgICB0aGlzLnRlbXBFbGVtID0gW107XG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgdGhpcy5jdXJyZW50RWxlbWVudCA9IHt9XG4gICAgdGhpcy5mb3JtRWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICBpZiAoZWxlbWVudC5pZCAhPT0gaWQpIHtcbiAgICAgICAgdGhpcy50ZW1wRWxlbS5wdXNoKGVsZW1lbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gdGhpcy50ZW1wRWxlbTtcbiAgICAvLyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZm9ybUVsZW1lbnRzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtRWxlbWVudHMpKTtcbiAgICB0aGlzLmVtaXRGb3JtRWxlbWVudHMoKTtcbiAgfVxuICAvLyBTS1MxOU1BUjI1IHVwZGF0ZSB0aGUgZWxlbWVudFxuICBlbGVtZW50VXBkYXRlKGluZGV4OiBhbnksIGVsZW1lbnQ6IGFueSkge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gWy4uLnRoaXMuZ2V0RWxlbWVudHMoKV07XG4gICAgaWYgKGVsZW1lbnRzW2luZGV4XSkge1xuICAgICAgZWxlbWVudHNbaW5kZXhdID0gZWxlbWVudFxuICAgICAgdGhpcy5mb3JtRWxlbWVudHMgPSBlbGVtZW50cztcbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi5lbGVtZW50c10pO1xuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRTdWJqZWN0Lm5leHQoaW5kZXgpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -310,24 +310,19 @@ export class PdfDesignerService {
|
|
|
310
310
|
width: item.width || 520,
|
|
311
311
|
table: {
|
|
312
312
|
body,
|
|
313
|
-
widths: new Array(mainColumns.length).fill('auto')
|
|
313
|
+
widths: ['*', ...new Array(mainColumns.length - 1).fill('auto')]
|
|
314
314
|
},
|
|
315
315
|
};
|
|
316
316
|
currentRow.columns.push(element);
|
|
317
317
|
// AP-24JUNE 25 - Adjust image width to compensate for external *5.2 scaling
|
|
318
318
|
}
|
|
319
319
|
else if (item.type === 'image') {
|
|
320
|
-
const
|
|
321
|
-
const
|
|
322
|
-
const pdfWidth = 520;
|
|
323
|
-
const baseFit = 300;
|
|
324
|
-
const widthMultiplier = pdfWidth / baseFit; // 1.7333...
|
|
325
|
-
// Since another function multiplies width * 5.2, we pre-divide it here
|
|
326
|
-
const adjustedWidth = (fitWidth * widthMultiplier) / 5.2;
|
|
320
|
+
const originalWidth = item?.imageSize?.width || 100;
|
|
321
|
+
const originalHeight = item?.imageSize?.height || 100;
|
|
327
322
|
currentRow.columns.push({
|
|
328
|
-
width:
|
|
323
|
+
width: '*', //AP-26JUN25 auto-adjust column width
|
|
329
324
|
image: item.imageData || '',
|
|
330
|
-
fit: [
|
|
325
|
+
fit: [originalWidth, originalHeight], // scales image proportionally within this box
|
|
331
326
|
style: item.styleClass
|
|
332
327
|
});
|
|
333
328
|
}
|
|
@@ -403,4 +398,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
403
398
|
providedIn: 'root'
|
|
404
399
|
}]
|
|
405
400
|
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
|
406
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLWRlc2lnbmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvc2VydmljZXMvcGRmLWRlc2lnbmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7QUFPbkQsTUFBTSxPQUFPLGtCQUFrQjtJQWdCVDtJQWZaLFdBQVcsR0FBVSxFQUFFLENBQUM7SUFDeEIsa0JBQWtCLEdBQUcsSUFBSSxlQUFlLENBQVEsRUFBRSxDQUFDLENBQUM7SUFDcEQsc0JBQXNCLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxtQkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztJQUNyRCxnQkFBZ0IsR0FBNEIsSUFBSSxDQUFDO0lBQ3pELEdBQUcsQ0FBTTtJQUNULFNBQVMsQ0FBTTtJQUNmLFFBQVEsQ0FBUTtJQUVoQixZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RELGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5RCxvQkFBb0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0QsY0FBYyxDQUFNO0lBQ3BCLGlCQUFpQixDQUFNO0lBRXZCLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDbEMsd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM3RCxJQUFJLGdCQUFnQixF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QUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNqQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsZ0NBQWdDO0lBQ2hDLGFBQWEsQ0FBRSxPQUFZLEVBQUUsSUFBUztRQUNwQyxJQUFJLFFBQVEsQ0FBQTtRQUNaLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDbEMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxLQUFhLEVBQUUsRUFBRTtZQUMzQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUMxQixRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDO2dCQUMxQixRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ25CLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDO1FBQzVCLElBQUcsSUFBSSxLQUFLLGFBQWEsRUFBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQzt3R0E1YVUsa0JBQWtCOzRHQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uL3BhZ2VzL2J1aWxkZXIvZWxlbWVudC9lbGVtZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQZGZEZXNpZ25lclNlcnZpY2Uge1xuICBwcml2YXRlIHBkZkVsZW1lbnRzOiBhbnlbXSA9IFtdO1xuICBwcml2YXRlIHBkZkVsZW1lbnRzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcbiAgcHJpdmF0ZSBzZWxlY3RlZEVsZW1lbnRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KC0xKTtcbiAgcHJpdmF0ZSBzZWxlY3RIZWFkZXJTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuICBwcml2YXRlIGVsZW1lbnRDb21wb25lbnQ6IEVsZW1lbnRDb21wb25lbnQgfCBudWxsID0gbnVsbDtcbiAgcGRmOiBhbnk7XG4gIHVuaXF1ZV9pZDogYW55O1xuICB0ZW1wRWxlbTogYW55W107XG5cbiAgcGRmRWxlbWVudHMkID0gdGhpcy5wZGZFbGVtZW50c1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIHNlbGVjdGVkRWxlbWVudCQgPSB0aGlzLnNlbGVjdGVkRWxlbWVudFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIHNlbGVjdEhlYWRlclN1YmplY3QkID0gdGhpcy5zZWxlY3RIZWFkZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBjdXJyZW50RWxlbWVudDogYW55O1xuICBzZWxlY3RUYWJsZUNvbHVtbjogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge1xuICAgIC8vIExvYWQgc2F2ZWQgZWxlbWVudHMgZnJvbSBsb2NhbFN0b3JhZ2VcbiAgICB0aGlzLnBkZkVsZW1lbnRzID0gW107XG4gICAgY29uc3Qgc2F2ZWRQZGZFbGVtZW50cyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwZGZFbGVtZW50cycpO1xuICAgIGlmIChzYXZlZFBkZkVsZW1lbnRzKSB7XG4gICAgICB0aGlzLnBkZkVsZW1lbnRzID0gSlNPTi5wYXJzZShzYXZlZFBkZkVsZW1lbnRzKTtcbiAgICAgIHRoaXMucGRmRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMucGRmRWxlbWVudHNdKTtcbiAgICB9XG4gIH1cbiAgaW50aWFsaXplQm9vayhwZGY6IGFueSkge1xuICAgIC8vICAtIEdldCB0aGUgdW5pcXVlIGlkIGluIHRoZSBwZGYgXG4gICAgdGhpcy51bmlxdWVfaWQgPSBPYmplY3Qua2V5cyhwZGYpWzBdO1xuICAgIGxldCB0ZW1wYm9vayA9IHBkZlt0aGlzLnVuaXF1ZV9pZF07XG4vLyBTS1MyOE1BUjI1IHVwZGF0ZSBuZXN0ZWQgcGRmIFF1ZXN0aW9uc01hcFxuICAgIHRlbXBib29rLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09IFwicGRmXCIgJiYgZWxlbWVudC5wZGZSZWZlcmVuY2UpIHtcbiAgICAgICAgdGhpcy5nZXRSZWZRYkRhdGEoZWxlbWVudC5wZGZSZWZlcmVuY2UpLnN1YnNjcmliZShcbiAgICAgICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGVsZW1lbnRbJ3BkZlJlZmVyZW5jZVF1ZXN0aW9ucyddID0gcmVzcG9uc2U7IC8vIEFzc2lnbiByZXNwb25zZSB0byBwZGZSZWZlcmVuY2VRdWVzdGlvbnNcbiAgICAgICAgICB9LFxuICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkFQSSBFcnJvcjpcIiwgZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBwZGZbdGhpcy51bmlxdWVfaWRdID0gdGVtcGJvb2tcbiAgICB0aGlzLnBkZiA9IHBkZlxuXG4gICAgdGhpcy5wZGZbdGhpcy51bmlxdWVfaWRdPy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgLy8gaWYgKHRoaXMucGRmLnNxT3B0aW9ucz8uW2VsZW1lbnQuaWRdKSB7XG4gICAgICAvLyAgIGVsZW1lbnQub3B0aW9ucyA9IHRoaXMucGRmLnNxT3B0aW9uc1tlbGVtZW50LmlkXS5vcHRpb25zO1xuICAgICAgLy8gfVxuICAgICAgdGhpcy5hZGRFbGVtZW50KGVsZW1lbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgLy9TS1MyOE1BUjI1IEZ1bmN0aW9uIHRvIGZldGNoIHJlZnFiIGRhdGFcbiAgZ2V0UmVmUWJEYXRhKHJlZnFiaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgaHR0cHM6Ly9kZXYtYXBpLnZhbGFyaHIuY29tL254dD9uYW1lPSR7cmVmcWJpZH1gKTtcbiAgfVxuXG4gICAvL0FQLTE3QVBSMjUgRnVuY3Rpb24gdG8gZ2VuZXJhdGUgdW5pcXVlIGlkXG4gICBhZGRFbGVtZW50V2l0aElkKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcHJlZml4ID0gJ25nbnh0JzsgXG4gICAgY29uc3QgY2hhcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODktXyc7XG4gICAgbGV0IGlkID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMTsgaSsrKSB7XG4gICAgICBpZCArPSBjaGFycy5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcnMubGVuZ3RoKSk7XG4gICAgfVxuICAgIHJldHVybiBwcmVmaXgraWQ7XG4gIH1cblxuICBuZXdCb29rKCkge1xuICAgIHRoaXMudW5pcXVlX2lkID0gdGhpcy5hZGRFbGVtZW50V2l0aElkKCk7XG4gICAgdGhpcy5wZGYgPSB7XG4gICAgICAgIFt0aGlzLnVuaXF1ZV9pZF06IFtdLFxuICAgICAgICAndGl0bGUnOiAnVW50aXRsZWQnLFxuICAgIH1cbiAgfVxuICAvLyBBUCAyNkZFQjI1IC0gY2xlYXIgdGhlIGZvcm0gZWxlbWVudHMgXG4gIGNsZWFyRWxlbWVudHMoKSB7XG4gICAgdGhpcy5wZGZFbGVtZW50cyA9IFtdO1xuICAgIHRoaXMucGRmRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMucGRmRWxlbWVudHNdKTtcbiAgfVxuICAvLyBHZXQgdGhlIGVsZW1lbnQgY29tcG9uZW50IHJlZmVyZW5jZVxuICBnZXRFbGVtZW50Q29tcG9uZW50KCk6IEVsZW1lbnRDb21wb25lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50Q29tcG9uZW50O1xuICB9XG5cbiAgc2V0RWxlbWVudENvbXBvbmVudChjb21wb25lbnQ6IEVsZW1lbnRDb21wb25lbnQpIHtcbiAgICB0aGlzLmVsZW1lbnRDb21wb25lbnQgPSBjb21wb25lbnQ7XG4gIH1cblxuICAvLyBBZGQgYSBuZXcgZWxlbWVudCB0byB0aGUgZm9ybVxuICBhZGRFbGVtZW50KGVsZW1lbnQ6IGFueSk6IHZvaWQge1xuICAgIFxuICAgIHRoaXMucGRmRWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICB0aGlzLnBkZkVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi50aGlzLnBkZkVsZW1lbnRzXSk7XG4gIH1cbiAgLy8gU0tTMTNNQVIyNSBhZGQgdGFibGUgZWxlbWVudFxuICBhZGRUYWJsZUVsZW1lbnQoZWxlbWVudDogYW55LCBpbmQgOmFueSkge1xuICAgIC8vU0tTMTNNQVIyNSBFbnN1cmUgY3VycmVudEVsZW1lbnQgZXhpc3RzXG4gICAgaWYgKCF0aGlzLmN1cnJlbnRFbGVtZW50KSByZXR1cm47XG4gICAgLy8gQ2xvbmUgZWxlbWVudHMgYXJyYXlcbiAgICBjb25zdCBlbGVtZW50cyA9IFsuLi50aGlzLmdldEVsZW1lbnRzKCldO1xuXG4gICAgLy8gU0tTMTNNQVIyNSBGaW5kIHRoZSBlbGVtZW50IGFuZCB1cGRhdGUgaXRzIGNvbHVtbnNcbiAgICBjb25zdCBpbmRleCA9IGVsZW1lbnRzLmZpbmRJbmRleChlbCA9PiBlbC5pZCA9PT0gdGhpcy5jdXJyZW50RWxlbWVudC5pZCk7XG5cbiAgICAvLyBDbG9uZSBjb2x1bW5zIGFycmF5IHRvIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvblxuICAgIGNvbnN0IHVwZGF0ZWRDb2x1bW5zID0gWy4uLih0aGlzLnBkZkVsZW1lbnRzW2luZGV4XS5jb2x1bW5zIHx8IFtdKSwgZWxlbWVudF07XG4gICAgbGV0IHRlbXBGaWVsZHNNZXRhID0ge1xuICAgICAgJ2xhYmVsJzogZWxlbWVudC5sYWJlbCxcbiAgICAgICdhcGlOYW1lJzogZWxlbWVudC5maWVsZE5hbWUsXG4gICAgICBcImlzZGVsZXRlZFwiOiBmYWxzZSxcbiAgICAgIFwib3JkZXJieWZsYWdcIjogZmFsc2UsXG4gICAgICBcImZpbHRlcmZsYWdcIjogZmFsc2UsXG4gICAgICBcIm91dHB1dEZsYWdcIjogdHJ1ZSxcbiAgICAgIFwiaXNjaGlsZFwiOiBmYWxzZSxcbiAgICAgIFwicmVzdWx0YW50ZmxhZ1wiOiBmYWxzZSxcbiAgICAgIFwic2VhcmNoZmxhZ1wiOiBmYWxzZSxcbiAgICAgIFwiZmxkVHlwZVwiOiBlbGVtZW50LnR5cGUsXG4gICAgICBcInJlYWRPbmx5XCI6IGZhbHNlLFxuICAgICAgXCJ1bmlxdWVJZGVudGlmaWVyXCI6IGVsZW1lbnQuaWRcbiAgICB9XG4gICAgbGV0IGZpZWxkc01ldGEgPSBbLi4udGhpcy5wZGZFbGVtZW50c1tpbmRleF0uZmllbGRzTWV0YSwgdGVtcEZpZWxkc01ldGFdO1xuXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgZWxlbWVudHNbaW5kZXhdID0geyAuLi5lbGVtZW50c1tpbmRleF0sIGNvbHVtbnM6IHVwZGF0ZWRDb2x1bW5zLCBmaWVsZHNNZXRhOiBmaWVsZHNNZXRhIH07XG4gICAgfVxuXG4gICAgLy8gRW1pdCB0aGUgdXBkYXRlZCBmb3JtIGVsZW1lbnRzXG4gICAgLy8gdGhpcy5wZGZFbGVtZW50c1N1YmplY3QubmV4dChlbGVtZW50cyk7XG4gICAgdGhpcy5wZGZFbGVtZW50cyA9IGVsZW1lbnRzO1xuICAgIHRoaXMucGRmRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLmVsZW1lbnRzXSk7XG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRTdWJqZWN0Lm5leHQoaW5kKTtcbiAgICAvLyBMb2cgZm9yIGRlYnVnZ2luZ1xuICAgIC8vIGNvbnNvbGUubG9nKFwiVXBkYXRlZCBmb3JtIGVsZW1lbnRzOlwiLCAgdGhpcy5wZGZFbGVtZW50cyk7XG4gIH1cblxuICB1cGRhdGVFbGVtZW50KGluZGV4OiBudW1iZXIsIHVwZGF0ZXM6IFBhcnRpYWw8YW55Pikge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gWy4uLnRoaXMuZ2V0RWxlbWVudHMoKV07XG4gICAgaWYgKGVsZW1lbnRzW2luZGV4XSkge1xuICAgICAgZWxlbWVudHNbaW5kZXhdID0ge1xuICAgICAgICAuLi5lbGVtZW50c1tpbmRleF0sXG4gICAgICAgIC4uLnVwZGF0ZXMsXG4gICAgICB9O1xuICAgICAgdGhpcy5wZGZFbGVtZW50c1N1YmplY3QubmV4dChlbGVtZW50cyk7XG4gICAgfVxuXG4gICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCB0aGlzLnBkZkVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgY29uc3QgdXBkYXRlZEVsZW1lbnQgPSB7XG4gICAgICAgIC4uLnRoaXMucGRmRWxlbWVudHNbaW5kZXhdLFxuICAgICAgICAuLi51cGRhdGVzXG4gICAgICB9O1xuICAgICAgICBpZiAoZWxlbWVudHNbaW5kZXhdKSB7XG4gICAgICAgICAgZWxlbWVudHNbaW5kZXhdID0geyAuLi5lbGVtZW50c1tpbmRleF0sIC4uLnVwZGF0ZXMgfTtcbiAgICAgICAgICB0aGlzLnBkZkVsZW1lbnRzID0gZWxlbWVudHM7XG4gICAgICAgICAgdGhpcy5wZGZFbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5wZGZFbGVtZW50c10pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnBkZkVsZW1lbnRzW2luZGV4XSA9IHVwZGF0ZWRFbGVtZW50O1xuICAgICAgdGhpcy5wZGZFbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5wZGZFbGVtZW50c10pO1xuICAgIH1cbiAgfVxuICB1cGRhdGVUaXRsZShldmVudDogYW55KSB7XG4gICAgLy9BUC0xME1BUjI1IFVwZGF0ZXMgdGhlIHRpdGxlIG9mIHRoZSBmaXJzdCByZWNvcmQgaW4gdGhlIHBkZiAgXG4gICAgdGhpcy5wZGYudGl0bGUgPSBldmVudDtcbiAgfVxuICBzZXRTZWxlY3RlZEVsZW1lbnQoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50U3ViamVjdC5uZXh0KGluZGV4KTtcbiAgICB0aGlzLmN1cnJlbnRFbGVtZW50ID0gdGhpcy5wZGZFbGVtZW50c1tpbmRleF1cbiAgICB0aGlzLnNlbGVjdFRhYmxlQ29sdW1uID0gbnVsbFxuICB9XG4gIC8vIFNLUzE5TUFSMjUgc2V0IHRoZSBzZWxlY3RlZCB0YWJsZSBjb2x1bW5cbiAgc2V0U2VsZWN0ZWRUYWJsZUVsZW1lbnQoaW5kZXg6IGFueSwgZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuY3VycmVudEVsZW1lbnQgPSB0aGlzLnBkZkVsZW1lbnRzW2luZGV4XVxuICAgIGlmICh0aGlzLmN1cnJlbnRFbGVtZW50Py50eXBlID09PSAnVGFibGUnKSB7XG4gICAgfVxuICAgIGNvbnN0IGZvdW5kSXRlbSA9IHRoaXMuY3VycmVudEVsZW1lbnQ/LnR5cGUgPT09ICdUYWJsZScgPyB0aGlzLmN1cnJlbnRFbGVtZW50WydmaWVsZHNNZXRhJ10uZmluZChpdGVtID0+IGl0ZW1bJ2FwaU5hbWUnXSA9PT0gZXZlbnQ/LmNvbHVtbikgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5zZWxlY3RUYWJsZUNvbHVtbiA9IGZvdW5kSXRlbT8udW5pcXVlSWRlbnRpZmllclxuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50U3ViamVjdC5uZXh0KGluZGV4KTtcbiAgfVxuICByZW1vdmVTZWxlY3RlZFRhYmxlRWxlbWVudChpbmRleDogbnVtYmVyLCBldmVudDogYW55KSB7XG4gICAgLy8gY29uc29sZS5sb2coXCJkZGRcIixpbmRleCwgZXZlbnQpXG4gICAgdGhpcy5jdXJyZW50RWxlbWVudCA9IHRoaXMucGRmRWxlbWVudHNbaW5kZXhdO1xuXG4gICAgaWYgKHRoaXMuY3VycmVudEVsZW1lbnQ/LnR5cGUgPT09ICdUYWJsZScpIHtcbiAgICAgIC8vIEZpbmQgdGhlIGluZGV4IG9mIHRoZSBpdGVtXG4gICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmN1cnJlbnRFbGVtZW50WydmaWVsZHNNZXRhJ10uZmluZEluZGV4KGl0ZW0gPT4gaXRlbVsnYXBpTmFtZSddID09PSBldmVudD8uY29sdW1uKTtcbiAgICAgIC8vIFJlbW92ZSB0aGUgaXRlbSBpZiBmb3VuZFxuICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50RWxlbWVudFsnZmllbGRzTWV0YSddLnNwbGljZShpdGVtSW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlbGVjdFRhYmxlQ29sdW1uID0gbnVsbFxuICAgIHRoaXMuZWxlbWVudFVwZGF0ZSggdGhpcy5jdXJyZW50RWxlbWVudClcbiAgfVxuICAvLyBTS1MxOU1BUjI1IGdldCB0aGUgc2VsZWN0ZWQgdGFibGUgY29sdW1uXG4gIGdldFNlbGVjdFRhYmxlQ29sdW1uKCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdFRhYmxlQ29sdW1uO1xuICB9XG4gIHNlbGVjdEhlYWRpbmcoZXZlbnQ6IGFueSkge1xuICAgIC8vQVAtMTBNQVIyNSBFbWl0cyB0aGUgc2VsZWN0ZWQgaGVhZGluZyBldmVudCAgXG4gICAgdGhpcy5zZWxlY3RIZWFkZXJTdWJqZWN0Lm5leHQoZXZlbnQpO1xuICB9XG5cbiAgZ2V0RWxlbWVudHMoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLnBkZkVsZW1lbnRzLm1hcChlbGVtZW50ID0+ICh7XG4gICAgICAuLi5lbGVtZW50XG4gICAgfSkpO1xuICB9XG4gIHNvcnRFbGVtZW50c0J5T3JkZXIoKTogdm9pZCB7XG4gICAgLy9BUC0xME1BUjI1IFNvcnQgZWxlbWVudHMgYnkgY3VycmVudCBvcmRlclxuICAgIHRoaXMucGRmRWxlbWVudHMuc29ydCgoYSwgYikgPT4gYS5xdWVzdGlvbk51bWJlciAtIGIucXVlc3Rpb25OdW1iZXIpO1xuICAgIHRoaXMucGRmRWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICAgIGVsZW1lbnQucXVlc3Rpb25OdW1iZXIgPSBpbmRleCArIDE7XG4gICAgfSk7XG4gICAgdGhpcy5wZGZFbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5wZGZFbGVtZW50c10pO1xuICB9XG4gIC8vQVAtMTBNQVIyNSBSZXR1cm5zIHRoZSBjdXJyZW50IHBkZiBkYXRhICBcbiAgZ2V0Qm9vaygpIHtcbiAgICByZXR1cm4gdGhpcy5wZGY7XG4gIH1cblxuZG93bmxvYWRFbGVtZW50KCkge1xuICB0aGlzLnBkZkVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgLy9BUC0wMkpVTjI1IC0gU2V0IGEgZGVmYXVsdCB2YWx1ZSBmb3IgJ2RhdGUnIHR5cGUgZWxlbWVudHMgaWYgbm8gdmFsdWUgaXMgcHJvdmlkZWRcbiAgICAvLyBjb25zdCBkZWZhdWx0RGF0ZSA9ICdkYXRlJ1xuICAgIC8vIGlmIChlbGVtZW50LnR5cGUgPT09ICcnICYmICFlbGVtZW50LnZhbHVlKSB7XG4gICAgLy8gICAgZWxlbWVudC52YWx1ZSA9IGRlZmF1bHREYXRlOzExXG4gICAgLy8gfVxuICAgIGlmIChlbGVtZW50LnR5cGUgPT09ICd0ZXh0JyB8fCAnaW5wdXQnKSB7XG4gICAgICAvLyBlbGVtZW50LnZhbHVlID0gKGVsZW1lbnQucXVlc3Rpb24gfHwgZWxlbWVudC52YWx1ZSB8fCAnJykucmVwbGFjZSgvXFxcXG4vZywgJ1xcbicpO1xuICAgIH1cbiAgICBpZiAoZWxlbWVudC5zdWJUZXh0ICYmIHR5cGVvZiBlbGVtZW50LnN1YlRleHQgPT09ICdvYmplY3QnKSB7XG4gICAgICBlbGVtZW50LnN1YlRleHQgPSBKU09OLnN0cmluZ2lmeShlbGVtZW50LnN1YlRleHQpO1xuICAgIH1cbiAgICAvLyBpZiAoZWxlbWVudC5wZGZSZWZlcmVuY2VRdWVzdGlvbnMpIHtcbiAgICAvLyAgIGRlbGV0ZSBlbGVtZW50LnBkZlJlZmVyZW5jZVF1ZXN0aW9ucztcbiAgICAvLyB9XG4gIH0pO1xuXG4gIHRoaXMucGRmW3RoaXMudW5pcXVlX2lkXSA9IHRoaXMucGRmRWxlbWVudHM7XG4gIHRoaXMucGRmWydwZGZKc29uJ10gPSB0aGlzLmNvbnZlcnRUb1BkZkxheW91dCh0aGlzLnBkZik7XG5cbiAgLy8gU2NhbGUgd2lkdGhzIGZvciBjb2x1bW5zXG4gIHRoaXMucGRmPy5wZGZKc29uPy5jb250ZW50Py5mb3JFYWNoKChyb3c6IGFueSkgPT4ge1xuICAgIHJvdy5jb2x1bW5zPy5mb3JFYWNoKChjb2w6IGFueSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBjb2wud2lkdGggPT09ICdudW1iZXInICYmIGNvbC53aWR0aCA8IDUyMCkge1xuICAgICAgICBjb2wud2lkdGggPSBjb2wud2lkdGggKiA1LjI7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnNvbGUubG9nKCdwZGYnLCB0aGlzLnBkZik7XG4gIHJldHVybiB0aGlzLnBkZjtcbn1cblxuY29udmVydFRvUGRmTGF5b3V0KGlucHV0OiBhbnkpOiBhbnkge1xuICBjb25zdCByZXN1bHQgPSB7IGNvbnRlbnQ6IFtdIH07XG4gIGNvbnN0IGl0ZW1zID0gaW5wdXRbdGhpcy51bmlxdWVfaWRdO1xuICBjb25zdCBwcm9jZXNzSXRlbXMgPSAoaXRlbXM6IGFueVtdKTogYW55W10gPT4ge1xuICAgIGNvbnN0IHJvd3MgPSBbXTtcbiAgICBsZXQgY3VycmVudFJvdyA9IHsgY29sdW1uczogW10gfTtcbiAgICBsZXQgY3VycmVudFdpZHRoID0gMDtcblxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgY29uc3Qgd2lkdGggPSBpdGVtLndpZHRoIHx8IDEwMDtcbiAgICAgIGxldCBlbGVtZW50OiBhbnkgPSB7IHdpZHRoLCBcIm1hcmdpblwiOiBbMCwgMTAsIDAsIDEwXSx9O1xuXG4gICAgICBpZiAoY3VycmVudFdpZHRoICsgd2lkdGggPiAxMDApIHtcbiAgICAgICAgcm93cy5wdXNoKGN1cnJlbnRSb3cpO1xuICAgICAgICBjdXJyZW50Um93ID0geyBjb2x1bW5zOiBbXSB9O1xuICAgICAgICBjdXJyZW50V2lkdGggPSAwO1xuICAgICAgfSAgICAgXG4gICAgICBpZiAoaXRlbS50eXBlID09PSBcIlNwYWNlXCIpIHtcbiAgICAgICAgY3VycmVudFJvdy5jb2x1bW5zLnB1c2goeyB3aWR0aCwgdGV4dDogJyd9KTtcblxuICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT09ICdMaW5lJykge1xuICAgICAgICBlbGVtZW50LmNhbnZhcyA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgICAgICB4MTogaXRlbS54MSA/PyAwLFxuICAgICAgICAgICAgeTE6IGl0ZW0ueTEgPz8gMCxcbiAgICAgICAgICAgIHgyOiBpdGVtLngyID8/IDUyMCxcbiAgICAgICAgICAgIHkyOiBpdGVtLnkyID8/IDAsXG4gICAgICAgICAgICBsaW5lV2lkdGg6IGl0ZW0ubGluZVdpZHRoID8/IDEsXG4gICAgICAgICAgICBsaW5lQ29sb3I6IGl0ZW0ubGluZUNvbG9yID8/ICcjMDAwMDAwJywgIFxuICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICAgICAgY3VycmVudFJvdy5jb2x1bW5zLnB1c2goZWxlbWVudCwpO1xuXG4gICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gXCJQZGZcIiAmJiBpdGVtLnBkZlJlZmVyZW5jZVF1ZXN0aW9ucykge1xuICAgICAgICBjb25zdCBuZXN0ZWRRdWVzdGlvbnMgPSBpdGVtLnBkZlJlZmVyZW5jZVF1ZXN0aW9uc1tpdGVtLnBkZlJlZmVyZW5jZV07XG4gICAgICAgIGNvbnN0IG5lc3RlZENvbnRlbnQgPSBwcm9jZXNzSXRlbXMobmVzdGVkUXVlc3Rpb25zKTsgLy8gcmVjdXJzaXZlIHByb2Nlc3NpbmdcbiAgICAgICAgY3VycmVudFJvdy5jb2x1bW5zLnB1c2goIG5lc3RlZENvbnRlbnQpO1xuICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT09ICdUYWJsZScpIHtcbiAgICAgICAgbGV0IHN1bW1hcnlSb3dQb3NpdGlvbiA9IDA7XG4gICAgICAgIGNvbnN0IHRhYmxlQ29sdW1ucyA9IGl0ZW0uZmllbGRzTWV0YSB8fCBbXTtcbiAgICAgICAgY29uc3QgbWFpbkNvbHVtbnMgPSB0YWJsZUNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uc3VtbWFyeVJvdyAhPT0gdHJ1ZSk7XG4gICAgICAgIGNvbnN0IHN1bW1hcnlSb3cgPSB0YWJsZUNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uc3VtbWFyeVJvdyA9PT0gdHJ1ZSk7XG4gICAgICAgIHRhYmxlQ29sdW1ucy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgIGlmIChlbGVtZW50LmNvbHVtbikge1xuICAgICAgICAgICAgbWFpbkNvbHVtbnMuZm9yRWFjaCgobUNvbCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29sdW1uID09PSBtQ29sLmFwaU5hbWUpIHtcbiAgICAgICAgICAgICAgICBzdW1tYXJ5Um93UG9zaXRpb24gPSBpbmRleDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTsgICAgICAgIFxuICAgICAgICBjb25zdCBib2R5OiBhbnlbXVtdID0gW107XG5cbiAgICAgICAgLy8gVGFibGUgaGVhZGVyc1xuICAgICAgICBib2R5LnB1c2gobWFpbkNvbHVtbnMubWFwKGNvbCA9PiAoe1xuICAgICAgICAgIHRleHQ6IGNvbC5sYWJlbCxzdHlsZTppdGVtLnN0eWxlQ2xhc3NcbiAgICAgICAgfSkpKTtcblxuICAgICAgICAvLyBUYWJsZSBkYXRhXG4gICAgICAgIGl0ZW0/LnZhbHVlPy5kYXRhPy5mb3JFYWNoKHRhYmxlRGF0YSA9PiB7XG4gICAgICAgICAgYm9keS5wdXNoKFxuICAgICAgICAgICAgbWFpbkNvbHVtbnMubWFwKGNvbCA9PiAoe1xuICAgICAgICAgICAgICB0ZXh0OiB0YWJsZURhdGFbY29sLmFwaU5hbWVdLFwibm93cmFwXCI6IGZhbHNlXG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU3VtbWFyeSByb3dzXG4gICAgICAgIHN1bW1hcnlSb3cuZm9yRWFjaCgoY29sKSA9PiB7XG4gICAgICAgICAgIC8vQVAtMTRKVU4yNSAtIENyZWF0ZSBhbiBlbXB0eSByb3cgd2l0aCBzYW1lIG51bWJlciBvZiBjb2x1bW5zIGFzIG1haW4gdGFibGUsIGZpbGxlZCB3aXRoIGJsYW5rIGNlbGxzIChubyBib3JkZXJzKVxuICAgICAgICAgIGNvbnN0IHJvdyA9IG5ldyBBcnJheShtYWluQ29sdW1ucy5sZW5ndGgpLmZpbGwoeyB0ZXh0OiAnJyxcImJvcmRlclwiOiBbZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2VdfSk7XG4gICAgICAgICAgLy9BUC0xNEpVTjI1IC0gU2V0IHRoZSBsYWJlbCB0ZXh0IGF0IHRoZSBsZWZ0IHN1bW1hcnkgcG9zaXRpb24gd2l0aCBib3R0b20tc2lkZSBib3JkZXJcbiAgICAgICAgICByb3dbc3VtbWFyeVJvd1Bvc2l0aW9uIC0gMV0gPSB7IHRleHQ6IGNvbC5sYWJlbCxcImJvcmRlclwiOiBbZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZV0gfTtcbiAgICAgICAgICByb3dbc3VtbWFyeVJvd1Bvc2l0aW9uXSA9IHsgdGV4dDogaXRlbT8udmFsdWU/LnN1bW1hcnlWYWx1ZXM/Lltjb2wuYXBpTmFtZV0gfHwgJycsXCJib3JkZXJcIjogW2ZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWVdfTtcbiAgICAgICAgICBib2R5LnB1c2gocm93KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZWxlbWVudCA9IHtcbiAgICAgICAgICB3aWR0aDogaXRlbS53aWR0aCB8fCA1MjAsXG4gICAgICAgICAgdGFibGU6IHtcbiAgICAgICAgICAgIGJvZHksXG4gICAgICAgICAgICB3aWR0aHM6IG5ldyBBcnJheShtYWluQ29sdW1ucy5sZW5ndGgpLmZpbGwoJ2F1dG8nKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXG4gICAgICAgIH07XG4gICAgICAgIGN1cnJlbnRSb3cuY29sdW1ucy5wdXNoKGVsZW1lbnQpO1xuICAgICAgLy8gQVAtMjRKVU5FIDI1IC0gQWRqdXN0IGltYWdlIHdpZHRoIHRvIGNvbXBlbnNhdGUgZm9yIGV4dGVybmFsICo1LjIgc2NhbGluZ1xuICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT09ICdpbWFnZScpIHtcbiAgICAgICAgY29uc3QgZml0V2lkdGggPSBpdGVtPy5pbWFnZVNpemU/LndpZHRoIHx8IDEwMDtcbiAgICAgICAgY29uc3QgZml0SGVpZ2h0ID0gaXRlbT8uaW1hZ2VTaXplPy5oZWlnaHQgfHwgMTAwO1xuICAgICAgXG4gICAgICAgIGNvbnN0IHBkZldpZHRoID0gNTIwO1xuICAgICAgICBjb25zdCBiYXNlRml0ID0gMzAwO1xuICAgICAgICBjb25zdCB3aWR0aE11bHRpcGxpZXIgPSBwZGZXaWR0aCAvIGJhc2VGaXQ7IC8vIDEuNzMzMy4uLlxuICAgICAgXG4gICAgICAgIC8vIFNpbmNlIGFub3RoZXIgZnVuY3Rpb24gbXVsdGlwbGllcyB3aWR0aCAqIDUuMiwgd2UgcHJlLWRpdmlkZSBpdCBoZXJlXG4gICAgICAgIGNvbnN0IGFkanVzdGVkV2lkdGggPSAoZml0V2lkdGggKiB3aWR0aE11bHRpcGxpZXIpIC8gNS4yO1xuICAgICAgXG4gICAgICAgIGN1cnJlbnRSb3cuY29sdW1ucy5wdXNoKHtcbiAgICAgICAgICB3aWR0aDogYWRqdXN0ZWRXaWR0aCwgICAgICAgICAgIC8vIGFmdGVyICo1LjIgYmVjb21lcyBjb3JyZWN0XG4gICAgICAgICAgaW1hZ2U6IGl0ZW0uaW1hZ2VEYXRhIHx8ICcnLFxuICAgICAgICAgIGZpdDogW2ZpdFdpZHRoLCBmaXRIZWlnaHRdLFxuICAgICAgICAgIHN0eWxlOiBpdGVtLnN0eWxlQ2xhc3NcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB2YWwgPSBpdGVtLnZhbHVlIHx8ICcnO1xuICAgICAgICBjdXJyZW50Um93LmNvbHVtbnMucHVzaCh7XG4gICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgdGV4dDogdmFsLHN0eWxlOml0ZW0uc3R5bGVDbGFzcyxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnRXaWR0aCArPSB3aWR0aDtcblxuICAgICAgaWYgKGN1cnJlbnRXaWR0aCA9PT0gMTAwKSB7XG4gICAgICAgIHJvd3MucHVzaChjdXJyZW50Um93KTtcbiAgICAgICAgY3VycmVudFJvdyA9IHsgY29sdW1uczogW10gfTtcbiAgICAgICAgY3VycmVudFdpZHRoID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFJvdy5jb2x1bW5zLmxlbmd0aCA+IDApIHtcbiAgICAgIHJvd3MucHVzaChjdXJyZW50Um93KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm93cztcbiAgfTtcbiAgcmVzdWx0LmNvbnRlbnQgPSBwcm9jZXNzSXRlbXMoaXRlbXMpO1xuICBsZXQgc3R5bGVKc29uID0ge307XG5mb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgc3R5bGVKc29uW2l0ZW0uc3R5bGVDbGFzc10gPSBpdGVtLnN0eWxlO1xufVxucmVzdWx0WydzdHlsZXMnXSA9IHN0eWxlSnNvbjtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiAgLy8gQVAtMDZNQVIyNSAtIEVsZW1lbnQgbmV3IG9yZGVyIHVwZGF0ZVxuICB1cGRhdGVFbGVtZW50c09yZGVyKHVwZGF0ZWRFbGVtZW50czogYW55W10pOiB2b2lkIHtcbiAgICB0aGlzLnBkZkVsZW1lbnRzID0gWy4uLnVwZGF0ZWRFbGVtZW50c107XG4gICAgdGhpcy5wZGZFbGVtZW50c1N1YmplY3QubmV4dCh0aGlzLnBkZkVsZW1lbnRzKTtcbiAgfVxuICAvLyBSZW1vdmUgYW4gZWxlbWVudCBieSBJRFxuICAvLyBTYXZlIGVsZW1lbnRzIHRvIGxvY2FsU3RvcmFnZSBhbmQgdXBkYXRlIHRoZSBzdWJqZWN0XG4gIHJlbW92ZUVsZW1lbnRDb21wb25lbnQoaWQ6IGFueSkge1xuICAgIHRoaXMudGVtcEVsZW0gPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFN1YmplY3QubmV4dChudWxsKTtcbiAgICB0aGlzLmN1cnJlbnRFbGVtZW50ID0ge31cbiAgICB0aGlzLnBkZkVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQuaWQgIT09IGlkKSB7XG4gICAgICAgIHRoaXMudGVtcEVsZW0ucHVzaChlbGVtZW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnBkZkVsZW1lbnRzID0gdGhpcy50ZW1wRWxlbTtcbiAgICB0aGlzLnBkZkVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi50aGlzLnBkZkVsZW1lbnRzXSk7XG4gIH1cbiAgLy8gU0tTMTlNQVIyNSB1cGRhdGUgdGhlIGVsZW1lbnRcbiAgZWxlbWVudFVwZGF0ZSggZWxlbWVudDogYW55LCBmcm9tPzphbnkpIHtcbiAgICBsZXQgZWxlSW5kZXhcbiAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMucGRmRWxlbWVudHM7XG4gICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGlmIChlbGUuaWQgPT09IGVsZW1lbnQuaWQpIHtcbiAgICAgICAgZWxlbWVudHNbaW5kZXhdID0gZWxlbWVudDsgXG4gICAgICAgIGVsZUluZGV4ID0gaW5kZXg7XG4gICAgICB9XG4gICAgfSk7ICAgIFxuICAgIHRoaXMucGRmRWxlbWVudHMgPSBlbGVtZW50cztcbiAgICBpZihmcm9tICE9PSAndmFsdWVDaGFuZ2UnKXtcbiAgICAgIHRoaXMuc29ydEVsZW1lbnRzQnlPcmRlcigpO1xuICAgICAgdGhpcy5wZGZFbGVtZW50c1N1YmplY3QubmV4dChbLi4uZWxlbWVudHNdKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50U3ViamVjdC5uZXh0KGVsZUluZGV4KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
401
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLWRlc2lnbmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvc2VydmljZXMvcGRmLWRlc2lnbmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7QUFPbkQsTUFBTSxPQUFPLGtCQUFrQjtJQWdCVDtJQWZaLFdBQVcsR0FBVSxFQUFFLENBQUM7SUFDeEIsa0JBQWtCLEdBQUcsSUFBSSxlQUFlLENBQVEsRUFBRSxDQUFDLENBQUM7SUFDcEQsc0JBQXNCLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxtQkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztJQUNyRCxnQkFBZ0IsR0FBNEIsSUFBSSxDQUFDO0lBQ3pELEdBQUcsQ0FBTTtJQUNULFNBQVMsQ0FBTTtJQUNmLFFBQVEsQ0FBUTtJQUVoQixZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RELGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5RCxvQkFBb0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0QsY0FBYyxDQUFNO0lBQ3BCLGlCQUFpQixDQUFNO0lBRXZCLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDbEMsd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM3RCxJQUFJLGdCQUFnQixF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YUFBYSxDQUFFLE9BQVksRUFBRSxJQUFTO1FBQ3BDLElBQUksUUFBUSxDQUFBO1FBQ1osTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNsQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQzNDLElBQUksR0FBRyxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzFCLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUM7Z0JBQzFCLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDbkIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUM7UUFDNUIsSUFBRyxJQUFJLEtBQUssYUFBYSxFQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO3dHQXBhVSxrQkFBa0I7NEdBQWxCLGtCQUFrQixjQUZqQixNQUFNOzs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFbGVtZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vcGFnZXMvYnVpbGRlci9lbGVtZW50L2VsZW1lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBkZkRlc2lnbmVyU2VydmljZSB7XG4gIHByaXZhdGUgcGRmRWxlbWVudHM6IGFueVtdID0gW107XG4gIHByaXZhdGUgcGRmRWxlbWVudHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pO1xuICBwcml2YXRlIHNlbGVjdGVkRWxlbWVudFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oLTEpO1xuICBwcml2YXRlIHNlbGVjdEhlYWRlclN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gIHByaXZhdGUgZWxlbWVudENvbXBvbmVudDogRWxlbWVudENvbXBvbmVudCB8IG51bGwgPSBudWxsO1xuICBwZGY6IGFueTtcbiAgdW5pcXVlX2lkOiBhbnk7XG4gIHRlbXBFbGVtOiBhbnlbXTtcblxuICBwZGZFbGVtZW50cyQgPSB0aGlzLnBkZkVsZW1lbnRzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgc2VsZWN0ZWRFbGVtZW50JCA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgc2VsZWN0SGVhZGVyU3ViamVjdCQgPSB0aGlzLnNlbGVjdEhlYWRlclN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIGN1cnJlbnRFbGVtZW50OiBhbnk7XG4gIHNlbGVjdFRhYmxlQ29sdW1uOiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7XG4gICAgLy8gTG9hZCBzYXZlZCBlbGVtZW50cyBmcm9tIGxvY2FsU3RvcmFnZVxuICAgIHRoaXMucGRmRWxlbWVudHMgPSBbXTtcbiAgICBjb25zdCBzYXZlZFBkZkVsZW1lbnRzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3BkZkVsZW1lbnRzJyk7XG4gICAgaWYgKHNhdmVkUGRmRWxlbWVudHMpIHtcbiAgICAgIHRoaXMucGRmRWxlbWVudHMgPSBKU09OLnBhcnNlKHNhdmVkUGRmRWxlbWVudHMpO1xuICAgICAgdGhpcy5wZGZFbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5wZGZFbGVtZW50c10pO1xuICAgIH1cbiAgfVxuICBpbnRpYWxpemVCb29rKHBkZjogYW55KSB7XG4gICAgLy8gIC0gR2V0IHRoZSB1bmlxdWUgaWQgaW4gdGhlIHBkZiBcbiAgICB0aGlzLnVuaXF1ZV9pZCA9IE9iamVjdC5rZXlzKHBkZilbMF07XG4gICAgbGV0IHRlbXBib29rID0gcGRmW3RoaXMudW5pcXVlX2lkXTtcbi8vIFNLUzI4TUFSMjUgdXBkYXRlIG5lc3RlZCBwZGYgUXVlc3Rpb25zTWFwXG4gICAgdGVtcGJvb2suZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gXCJwZGZcIiAmJiBlbGVtZW50LnBkZlJlZmVyZW5jZSkge1xuICAgICAgICB0aGlzLmdldFJlZlFiRGF0YShlbGVtZW50LnBkZlJlZmVyZW5jZSkuc3Vic2NyaWJlKFxuICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgZWxlbWVudFsncGRmUmVmZXJlbmNlUXVlc3Rpb25zJ10gPSByZXNwb25zZTsgLy8gQXNzaWduIHJlc3BvbnNlIHRvIHBkZlJlZmVyZW5jZVF1ZXN0aW9uc1xuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiQVBJIEVycm9yOlwiLCBlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHBkZlt0aGlzLnVuaXF1ZV9pZF0gPSB0ZW1wYm9va1xuICAgIHRoaXMucGRmID0gcGRmXG5cbiAgICB0aGlzLnBkZlt0aGlzLnVuaXF1ZV9pZF0/LmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAvLyBpZiAodGhpcy5wZGYuc3FPcHRpb25zPy5bZWxlbWVudC5pZF0pIHtcbiAgICAgIC8vICAgZWxlbWVudC5vcHRpb25zID0gdGhpcy5wZGYuc3FPcHRpb25zW2VsZW1lbnQuaWRdLm9wdGlvbnM7XG4gICAgICAvLyB9XG4gICAgICB0aGlzLmFkZEVsZW1lbnQoZWxlbWVudCk7XG4gICAgfSk7XG4gIH1cblxuICAvL1NLUzI4TUFSMjUgRnVuY3Rpb24gdG8gZmV0Y2ggcmVmcWIgZGF0YVxuICBnZXRSZWZRYkRhdGEocmVmcWJpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGBodHRwczovL2Rldi1hcGkudmFsYXJoci5jb20vbnh0P25hbWU9JHtyZWZxYmlkfWApO1xuICB9XG5cbiAgIC8vQVAtMTdBUFIyNSBGdW5jdGlvbiB0byBnZW5lcmF0ZSB1bmlxdWUgaWRcbiAgIGFkZEVsZW1lbnRXaXRoSWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwcmVmaXggPSAnbmdueHQnOyBcbiAgICBjb25zdCBjaGFycyA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1fJztcbiAgICBsZXQgaWQgPSAnJztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDExOyBpKyspIHtcbiAgICAgIGlkICs9IGNoYXJzLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFycy5sZW5ndGgpKTtcbiAgICB9XG4gICAgcmV0dXJuIHByZWZpeCtpZDtcbiAgfVxuXG4gIG5ld0Jvb2soKSB7XG4gICAgdGhpcy51bmlxdWVfaWQgPSB0aGlzLmFkZEVsZW1lbnRXaXRoSWQoKTtcbiAgICB0aGlzLnBkZiA9IHtcbiAgICAgICAgW3RoaXMudW5pcXVlX2lkXTogW10sXG4gICAgICAgICd0aXRsZSc6ICdVbnRpdGxlZCcsXG4gICAgfVxuICB9XG4gIC8vIEFQIDI2RkVCMjUgLSBjbGVhciB0aGUgZm9ybSBlbGVtZW50cyBcbiAgY2xlYXJFbGVtZW50cygpIHtcbiAgICB0aGlzLnBkZkVsZW1lbnRzID0gW107XG4gICAgdGhpcy5wZGZFbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5wZGZFbGVtZW50c10pO1xuICB9XG4gIC8vIEdldCB0aGUgZWxlbWVudCBjb21wb25lbnQgcmVmZXJlbmNlXG4gIGdldEVsZW1lbnRDb21wb25lbnQoKTogRWxlbWVudENvbXBvbmVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRDb21wb25lbnQ7XG4gIH1cblxuICBzZXRFbGVtZW50Q29tcG9uZW50KGNvbXBvbmVudDogRWxlbWVudENvbXBvbmVudCkge1xuICAgIHRoaXMuZWxlbWVudENvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgfVxuXG4gIC8vIEFkZCBhIG5ldyBlbGVtZW50IHRvIHRoZSBmb3JtXG4gIGFkZEVsZW1lbnQoZWxlbWVudDogYW55KTogdm9pZCB7XG4gICAgXG4gICAgdGhpcy5wZGZFbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgIHRoaXMucGRmRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMucGRmRWxlbWVudHNdKTtcbiAgfVxuICAvLyBTS1MxM01BUjI1IGFkZCB0YWJsZSBlbGVtZW50XG4gIGFkZFRhYmxlRWxlbWVudChlbGVtZW50OiBhbnksIGluZCA6YW55KSB7XG4gICAgLy9TS1MxM01BUjI1IEVuc3VyZSBjdXJyZW50RWxlbWVudCBleGlzdHNcbiAgICBpZiAoIXRoaXMuY3VycmVudEVsZW1lbnQpIHJldHVybjtcbiAgICAvLyBDbG9uZSBlbGVtZW50cyBhcnJheVxuICAgIGNvbnN0IGVsZW1lbnRzID0gWy4uLnRoaXMuZ2V0RWxlbWVudHMoKV07XG5cbiAgICAvLyBTS1MxM01BUjI1IEZpbmQgdGhlIGVsZW1lbnQgYW5kIHVwZGF0ZSBpdHMgY29sdW1uc1xuICAgIGNvbnN0IGluZGV4ID0gZWxlbWVudHMuZmluZEluZGV4KGVsID0+IGVsLmlkID09PSB0aGlzLmN1cnJlbnRFbGVtZW50LmlkKTtcblxuICAgIC8vIENsb25lIGNvbHVtbnMgYXJyYXkgdG8gdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAgY29uc3QgdXBkYXRlZENvbHVtbnMgPSBbLi4uKHRoaXMucGRmRWxlbWVudHNbaW5kZXhdLmNvbHVtbnMgfHwgW10pLCBlbGVtZW50XTtcbiAgICBsZXQgdGVtcEZpZWxkc01ldGEgPSB7XG4gICAgICAnbGFiZWwnOiBlbGVtZW50LmxhYmVsLFxuICAgICAgJ2FwaU5hbWUnOiBlbGVtZW50LmZpZWxkTmFtZSxcbiAgICAgIFwiaXNkZWxldGVkXCI6IGZhbHNlLFxuICAgICAgXCJvcmRlcmJ5ZmxhZ1wiOiBmYWxzZSxcbiAgICAgIFwiZmlsdGVyZmxhZ1wiOiBmYWxzZSxcbiAgICAgIFwib3V0cHV0RmxhZ1wiOiB0cnVlLFxuICAgICAgXCJpc2NoaWxkXCI6IGZhbHNlLFxuICAgICAgXCJyZXN1bHRhbnRmbGFnXCI6IGZhbHNlLFxuICAgICAgXCJzZWFyY2hmbGFnXCI6IGZhbHNlLFxuICAgICAgXCJmbGRUeXBlXCI6IGVsZW1lbnQudHlwZSxcbiAgICAgIFwicmVhZE9ubHlcIjogZmFsc2UsXG4gICAgICBcInVuaXF1ZUlkZW50aWZpZXJcIjogZWxlbWVudC5pZFxuICAgIH1cbiAgICBsZXQgZmllbGRzTWV0YSA9IFsuLi50aGlzLnBkZkVsZW1lbnRzW2luZGV4XS5maWVsZHNNZXRhLCB0ZW1wRmllbGRzTWV0YV07XG5cbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICBlbGVtZW50c1tpbmRleF0gPSB7IC4uLmVsZW1lbnRzW2luZGV4XSwgY29sdW1uczogdXBkYXRlZENvbHVtbnMsIGZpZWxkc01ldGE6IGZpZWxkc01ldGEgfTtcbiAgICB9XG5cbiAgICAvLyBFbWl0IHRoZSB1cGRhdGVkIGZvcm0gZWxlbWVudHNcbiAgICAvLyB0aGlzLnBkZkVsZW1lbnRzU3ViamVjdC5uZXh0KGVsZW1lbnRzKTtcbiAgICB0aGlzLnBkZkVsZW1lbnRzID0gZWxlbWVudHM7XG4gICAgdGhpcy5wZGZFbGVtZW50c1N1YmplY3QubmV4dChbLi4uZWxlbWVudHNdKTtcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFN1YmplY3QubmV4dChpbmQpO1xuICAgIC8vIExvZyBmb3IgZGVidWdnaW5nXG4gICAgLy8gY29uc29sZS5sb2coXCJVcGRhdGVkIGZvcm0gZWxlbWVudHM6XCIsICB0aGlzLnBkZkVsZW1lbnRzKTtcbiAgfVxuXG4gIHVwZGF0ZUVsZW1lbnQoaW5kZXg6IG51bWJlciwgdXBkYXRlczogUGFydGlhbDxhbnk+KSB7XG4gICAgY29uc3QgZWxlbWVudHMgPSBbLi4udGhpcy5nZXRFbGVtZW50cygpXTtcbiAgICBpZiAoZWxlbWVudHNbaW5kZXhdKSB7XG4gICAgICBlbGVtZW50c1tpbmRleF0gPSB7XG4gICAgICAgIC4uLmVsZW1lbnRzW2luZGV4XSxcbiAgICAgICAgLi4udXBkYXRlcyxcbiAgICAgIH07XG4gICAgICB0aGlzLnBkZkVsZW1lbnRzU3ViamVjdC5uZXh0KGVsZW1lbnRzKTtcbiAgICB9XG5cbiAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMucGRmRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICBjb25zdCB1cGRhdGVkRWxlbWVudCA9IHtcbiAgICAgICAgLi4udGhpcy5wZGZFbGVtZW50c1tpbmRleF0sXG4gICAgICAgIC4uLnVwZGF0ZXNcbiAgICAgIH07XG4gICAgICAgIGlmIChlbGVtZW50c1tpbmRleF0pIHtcbiAgICAgICAgICBlbGVtZW50c1tpbmRleF0gPSB7IC4uLmVsZW1lbnRzW2luZGV4XSwgLi4udXBkYXRlcyB9O1xuICAgICAgICAgIHRoaXMucGRmRWxlbWVudHMgPSBlbGVtZW50cztcbiAgICAgICAgICB0aGlzLnBkZkVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi50aGlzLnBkZkVsZW1lbnRzXSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucGRmRWxlbWVudHNbaW5kZXhdID0gdXBkYXRlZEVsZW1lbnQ7XG4gICAgICB0aGlzLnBkZkVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi50aGlzLnBkZkVsZW1lbnRzXSk7XG4gICAgfVxuICB9XG4gIHVwZGF0ZVRpdGxlKGV2ZW50OiBhbnkpIHtcbiAgICAvL0FQLTEwTUFSMjUgVXBkYXRlcyB0aGUgdGl0bGUgb2YgdGhlIGZpcnN0IHJlY29yZCBpbiB0aGUgcGRmICBcbiAgICB0aGlzLnBkZi50aXRsZSA9IGV2ZW50O1xuICB9XG4gIHNldFNlbGVjdGVkRWxlbWVudChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRTdWJqZWN0Lm5leHQoaW5kZXgpO1xuICAgIHRoaXMuY3VycmVudEVsZW1lbnQgPSB0aGlzLnBkZkVsZW1lbnRzW2luZGV4XVxuICAgIHRoaXMuc2VsZWN0VGFibGVDb2x1bW4gPSBudWxsXG4gIH1cbiAgLy8gU0tTMTlNQVIyNSBzZXQgdGhlIHNlbGVjdGVkIHRhYmxlIGNvbHVtblxuICBzZXRTZWxlY3RlZFRhYmxlRWxlbWVudChpbmRleDogYW55LCBldmVudDogYW55KSB7XG4gICAgdGhpcy5jdXJyZW50RWxlbWVudCA9IHRoaXMucGRmRWxlbWVudHNbaW5kZXhdXG4gICAgaWYgKHRoaXMuY3VycmVudEVsZW1lbnQ/LnR5cGUgPT09ICdUYWJsZScpIHtcbiAgICB9XG4gICAgY29uc3QgZm91bmRJdGVtID0gdGhpcy5jdXJyZW50RWxlbWVudD8udHlwZSA9PT0gJ1RhYmxlJyA/IHRoaXMuY3VycmVudEVsZW1lbnRbJ2ZpZWxkc01ldGEnXS5maW5kKGl0ZW0gPT4gaXRlbVsnYXBpTmFtZSddID09PSBldmVudD8uY29sdW1uKSA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNlbGVjdFRhYmxlQ29sdW1uID0gZm91bmRJdGVtPy51bmlxdWVJZGVudGlmaWVyXG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRTdWJqZWN0Lm5leHQoaW5kZXgpO1xuICB9XG4gIHJlbW92ZVNlbGVjdGVkVGFibGVFbGVtZW50KGluZGV4OiBudW1iZXIsIGV2ZW50OiBhbnkpIHtcbiAgICAvLyBjb25zb2xlLmxvZyhcImRkZFwiLGluZGV4LCBldmVudClcbiAgICB0aGlzLmN1cnJlbnRFbGVtZW50ID0gdGhpcy5wZGZFbGVtZW50c1tpbmRleF07XG5cbiAgICBpZiAodGhpcy5jdXJyZW50RWxlbWVudD8udHlwZSA9PT0gJ1RhYmxlJykge1xuICAgICAgLy8gRmluZCB0aGUgaW5kZXggb2YgdGhlIGl0ZW1cbiAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMuY3VycmVudEVsZW1lbnRbJ2ZpZWxkc01ldGEnXS5maW5kSW5kZXgoaXRlbSA9PiBpdGVtWydhcGlOYW1lJ10gPT09IGV2ZW50Py5jb2x1bW4pO1xuICAgICAgLy8gUmVtb3ZlIHRoZSBpdGVtIGlmIGZvdW5kXG4gICAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRFbGVtZW50WydmaWVsZHNNZXRhJ10uc3BsaWNlKGl0ZW1JbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0VGFibGVDb2x1bW4gPSBudWxsXG4gICAgdGhpcy5lbGVtZW50VXBkYXRlKCB0aGlzLmN1cnJlbnRFbGVtZW50KVxuICB9XG4gIC8vIFNLUzE5TUFSMjUgZ2V0IHRoZSBzZWxlY3RlZCB0YWJsZSBjb2x1bW5cbiAgZ2V0U2VsZWN0VGFibGVDb2x1bW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0VGFibGVDb2x1bW47XG4gIH1cbiAgc2VsZWN0SGVhZGluZyhldmVudDogYW55KSB7XG4gICAgLy9BUC0xME1BUjI1IEVtaXRzIHRoZSBzZWxlY3RlZCBoZWFkaW5nIGV2ZW50ICBcbiAgICB0aGlzLnNlbGVjdEhlYWRlclN1YmplY3QubmV4dChldmVudCk7XG4gIH1cblxuICBnZXRFbGVtZW50cygpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMucGRmRWxlbWVudHMubWFwKGVsZW1lbnQgPT4gKHtcbiAgICAgIC4uLmVsZW1lbnRcbiAgICB9KSk7XG4gIH1cbiAgc29ydEVsZW1lbnRzQnlPcmRlcigpOiB2b2lkIHtcbiAgICAvL0FQLTEwTUFSMjUgU29ydCBlbGVtZW50cyBieSBjdXJyZW50IG9yZGVyXG4gICAgdGhpcy5wZGZFbGVtZW50cy5zb3J0KChhLCBiKSA9PiBhLnF1ZXN0aW9uTnVtYmVyIC0gYi5xdWVzdGlvbk51bWJlcik7XG4gICAgdGhpcy5wZGZFbGVtZW50cy5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgICAgZWxlbWVudC5xdWVzdGlvbk51bWJlciA9IGluZGV4ICsgMTtcbiAgICB9KTtcbiAgICB0aGlzLnBkZkVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi50aGlzLnBkZkVsZW1lbnRzXSk7XG4gIH1cbiAgLy9BUC0xME1BUjI1IFJldHVybnMgdGhlIGN1cnJlbnQgcGRmIGRhdGEgIFxuICBnZXRCb29rKCkge1xuICAgIHJldHVybiB0aGlzLnBkZjtcbiAgfVxuXG5kb3dubG9hZEVsZW1lbnQoKSB7XG4gIHRoaXMucGRmRWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAvL0FQLTAySlVOMjUgLSBTZXQgYSBkZWZhdWx0IHZhbHVlIGZvciAnZGF0ZScgdHlwZSBlbGVtZW50cyBpZiBubyB2YWx1ZSBpcyBwcm92aWRlZFxuICAgIC8vIGNvbnN0IGRlZmF1bHREYXRlID0gJ2RhdGUnXG4gICAgLy8gaWYgKGVsZW1lbnQudHlwZSA9PT0gJycgJiYgIWVsZW1lbnQudmFsdWUpIHtcbiAgICAvLyAgICBlbGVtZW50LnZhbHVlID0gZGVmYXVsdERhdGU7MTFcbiAgICAvLyB9XG4gICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ3RleHQnIHx8ICdpbnB1dCcpIHtcbiAgICAgIC8vIGVsZW1lbnQudmFsdWUgPSAoZWxlbWVudC5xdWVzdGlvbiB8fCBlbGVtZW50LnZhbHVlIHx8ICcnKS5yZXBsYWNlKC9cXFxcbi9nLCAnXFxuJyk7XG4gICAgfVxuICAgIGlmIChlbGVtZW50LnN1YlRleHQgJiYgdHlwZW9mIGVsZW1lbnQuc3ViVGV4dCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGVsZW1lbnQuc3ViVGV4dCA9IEpTT04uc3RyaW5naWZ5KGVsZW1lbnQuc3ViVGV4dCk7XG4gICAgfVxuICAgIC8vIGlmIChlbGVtZW50LnBkZlJlZmVyZW5jZVF1ZXN0aW9ucykge1xuICAgIC8vICAgZGVsZXRlIGVsZW1lbnQucGRmUmVmZXJlbmNlUXVlc3Rpb25zO1xuICAgIC8vIH1cbiAgfSk7XG5cbiAgdGhpcy5wZGZbdGhpcy51bmlxdWVfaWRdID0gdGhpcy5wZGZFbGVtZW50cztcbiAgdGhpcy5wZGZbJ3BkZkpzb24nXSA9IHRoaXMuY29udmVydFRvUGRmTGF5b3V0KHRoaXMucGRmKTtcblxuICAvLyBTY2FsZSB3aWR0aHMgZm9yIGNvbHVtbnNcbiAgdGhpcy5wZGY/LnBkZkpzb24/LmNvbnRlbnQ/LmZvckVhY2goKHJvdzogYW55KSA9PiB7XG4gICAgcm93LmNvbHVtbnM/LmZvckVhY2goKGNvbDogYW55KSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGNvbC53aWR0aCA9PT0gJ251bWJlcicgJiYgY29sLndpZHRoIDwgNTIwKSB7XG4gICAgICAgIGNvbC53aWR0aCA9IGNvbC53aWR0aCAqIDUuMjtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgY29uc29sZS5sb2coJ3BkZicsIHRoaXMucGRmKTtcbiAgcmV0dXJuIHRoaXMucGRmO1xufVxuXG5jb252ZXJ0VG9QZGZMYXlvdXQoaW5wdXQ6IGFueSk6IGFueSB7XG4gIGNvbnN0IHJlc3VsdCA9IHsgY29udGVudDogW10gfTtcbiAgY29uc3QgaXRlbXMgPSBpbnB1dFt0aGlzLnVuaXF1ZV9pZF07XG4gIGNvbnN0IHByb2Nlc3NJdGVtcyA9IChpdGVtczogYW55W10pOiBhbnlbXSA9PiB7XG4gICAgY29uc3Qgcm93cyA9IFtdO1xuICAgIGxldCBjdXJyZW50Um93ID0geyBjb2x1bW5zOiBbXSB9O1xuICAgIGxldCBjdXJyZW50V2lkdGggPSAwO1xuXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBjb25zdCB3aWR0aCA9IGl0ZW0ud2lkdGggfHwgMTAwO1xuICAgICAgbGV0IGVsZW1lbnQ6IGFueSA9IHsgd2lkdGgsIFwibWFyZ2luXCI6IFswLCAxMCwgMCwgMTBdLH07XG5cbiAgICAgIGlmIChjdXJyZW50V2lkdGggKyB3aWR0aCA+IDEwMCkge1xuICAgICAgICByb3dzLnB1c2goY3VycmVudFJvdyk7XG4gICAgICAgIGN1cnJlbnRSb3cgPSB7IGNvbHVtbnM6IFtdIH07XG4gICAgICAgIGN1cnJlbnRXaWR0aCA9IDA7XG4gICAgICB9ICAgICBcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09IFwiU3BhY2VcIikge1xuICAgICAgICBjdXJyZW50Um93LmNvbHVtbnMucHVzaCh7IHdpZHRoLCB0ZXh0OiAnJ30pO1xuXG4gICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gJ0xpbmUnKSB7XG4gICAgICAgIGVsZW1lbnQuY2FudmFzID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6ICdsaW5lJyxcbiAgICAgICAgICAgIHgxOiBpdGVtLngxID8/IDAsXG4gICAgICAgICAgICB5MTogaXRlbS55MSA/PyAwLFxuICAgICAgICAgICAgeDI6IGl0ZW0ueDIgPz8gNTIwLFxuICAgICAgICAgICAgeTI6IGl0ZW0ueTIgPz8gMCxcbiAgICAgICAgICAgIGxpbmVXaWR0aDogaXRlbS5saW5lV2lkdGggPz8gMSxcbiAgICAgICAgICAgIGxpbmVDb2xvcjogaXRlbS5saW5lQ29sb3IgPz8gJyMwMDAwMDAnLCAgXG4gICAgICAgICAgfVxuICAgICAgICBdO1xuICAgICAgICBjdXJyZW50Um93LmNvbHVtbnMucHVzaChlbGVtZW50LCk7XG5cbiAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSBcIlBkZlwiICYmIGl0ZW0ucGRmUmVmZXJlbmNlUXVlc3Rpb25zKSB7XG4gICAgICAgIGNvbnN0IG5lc3RlZFF1ZXN0aW9ucyA9IGl0ZW0ucGRmUmVmZXJlbmNlUXVlc3Rpb25zW2l0ZW0ucGRmUmVmZXJlbmNlXTtcbiAgICAgICAgY29uc3QgbmVzdGVkQ29udGVudCA9IHByb2Nlc3NJdGVtcyhuZXN0ZWRRdWVzdGlvbnMpOyAvLyByZWN1cnNpdmUgcHJvY2Vzc2luZ1xuICAgICAgICBjdXJyZW50Um93LmNvbHVtbnMucHVzaCggbmVzdGVkQ29udGVudCk7XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gJ1RhYmxlJykge1xuICAgICAgICBsZXQgc3VtbWFyeVJvd1Bvc2l0aW9uID0gMDtcbiAgICAgICAgY29uc3QgdGFibGVDb2x1bW5zID0gaXRlbS5maWVsZHNNZXRhIHx8IFtdO1xuICAgICAgICBjb25zdCBtYWluQ29sdW1ucyA9IHRhYmxlQ29sdW1ucy5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5zdW1tYXJ5Um93ICE9PSB0cnVlKTtcbiAgICAgICAgY29uc3Qgc3VtbWFyeVJvdyA9IHRhYmxlQ29sdW1ucy5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5zdW1tYXJ5Um93ID09PSB0cnVlKTtcbiAgICAgICAgdGFibGVDb2x1bW5zLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgaWYgKGVsZW1lbnQuY29sdW1uKSB7XG4gICAgICAgICAgICBtYWluQ29sdW1ucy5mb3JFYWNoKChtQ29sLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoZWxlbWVudC5jb2x1bW4gPT09IG1Db2wuYXBpTmFtZSkge1xuICAgICAgICAgICAgICAgIHN1bW1hcnlSb3dQb3NpdGlvbiA9IGluZGV4O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pOyAgICAgICAgXG4gICAgICAgIGNvbnN0IGJvZHk6IGFueVtdW10gPSBbXTtcblxuICAgICAgICAvLyBUYWJsZSBoZWFkZXJzXG4gICAgICAgIGJvZHkucHVzaChtYWluQ29sdW1ucy5tYXAoY29sID0+ICh7XG4gICAgICAgICAgdGV4dDogY29sLmxhYmVsLHN0eWxlOml0ZW0uc3R5bGVDbGFzc1xuICAgICAgICB9KSkpO1xuXG4gICAgICAgIC8vIFRhYmxlIGRhdGFcbiAgICAgICAgaXRlbT8udmFsdWU/LmRhdGE/LmZvckVhY2godGFibGVEYXRhID0+IHtcbiAgICAgICAgICBib2R5LnB1c2goXG4gICAgICAgICAgICBtYWluQ29sdW1ucy5tYXAoY29sID0+ICh7XG4gICAgICAgICAgICAgIHRleHQ6IHRhYmxlRGF0YVtjb2wuYXBpTmFtZV0sXCJub3dyYXBcIjogZmFsc2VcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTdW1tYXJ5IHJvd3NcbiAgICAgICAgc3VtbWFyeVJvdy5mb3JFYWNoKChjb2wpID0+IHtcbiAgICAgICAgICAgLy9BUC0xNEpVTjI1IC0gQ3JlYXRlIGFuIGVtcHR5IHJvdyB3aXRoIHNhbWUgbnVtYmVyIG9mIGNvbHVtbnMgYXMgbWFpbiB0YWJsZSwgZmlsbGVkIHdpdGggYmxhbmsgY2VsbHMgKG5vIGJvcmRlcnMpXG4gICAgICAgICAgY29uc3Qgcm93ID0gbmV3IEFycmF5KG1haW5Db2x1bW5zLmxlbmd0aCkuZmlsbCh7IHRleHQ6ICcnLFwiYm9yZGVyXCI6IFtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZV19KTtcbiAgICAgICAgICAvL0FQLTE0SlVOMjUgLSBTZXQgdGhlIGxhYmVsIHRleHQgYXQgdGhlIGxlZnQgc3VtbWFyeSBwb3NpdGlvbiB3aXRoIGJvdHRvbS1zaWRlIGJvcmRlclxuICAgICAgICAgIHJvd1tzdW1tYXJ5Um93UG9zaXRpb24gLSAxXSA9IHsgdGV4dDogY29sLmxhYmVsLFwiYm9yZGVyXCI6IFtmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlXSB9O1xuICAgICAgICAgIHJvd1tzdW1tYXJ5Um93UG9zaXRpb25dID0geyB0ZXh0OiBpdGVtPy52YWx1ZT8uc3VtbWFyeVZhbHVlcz8uW2NvbC5hcGlOYW1lXSB8fCAnJyxcImJvcmRlclwiOiBbZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZV19O1xuICAgICAgICAgIGJvZHkucHVzaChyb3cpO1xuICAgICAgICB9KTtcblxuICAgICAgICBlbGVtZW50ID0ge1xuICAgICAgICAgIHdpZHRoOiBpdGVtLndpZHRoIHx8IDUyMCxcbiAgICAgICAgICB0YWJsZToge1xuICAgICAgICAgICAgYm9keSxcbiAgICAgICAgICAgIHdpZHRoczogWycqJywgLi4ubmV3IEFycmF5KG1haW5Db2x1bW5zLmxlbmd0aCAtIDEpLmZpbGwoJ2F1dG8nKV1cbiAgICAgICAgICB9LFxuICAgICAgICB9OyAgICAgICAgXG4gICAgICAgIGN1cnJlbnRSb3cuY29sdW1ucy5wdXNoKGVsZW1lbnQpO1xuICAgICAgLy8gQVAtMjRKVU5FIDI1IC0gQWRqdXN0IGltYWdlIHdpZHRoIHRvIGNvbXBlbnNhdGUgZm9yIGV4dGVybmFsICo1LjIgc2NhbGluZ1xuICAgICAgfWVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gJ2ltYWdlJykge1xuICAgICAgICBjb25zdCBvcmlnaW5hbFdpZHRoID0gaXRlbT8uaW1hZ2VTaXplPy53aWR0aCB8fCAxMDA7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsSGVpZ2h0ID0gaXRlbT8uaW1hZ2VTaXplPy5oZWlnaHQgfHwgMTAwO1xuICAgICAgICBjdXJyZW50Um93LmNvbHVtbnMucHVzaCh7XG4gICAgICAgICAgd2lkdGg6ICcqJywgLy9BUC0yNkpVTjI1IGF1dG8tYWRqdXN0IGNvbHVtbiB3aWR0aFxuICAgICAgICAgIGltYWdlOiBpdGVtLmltYWdlRGF0YSB8fCAnJyxcbiAgICAgICAgICBmaXQ6IFtvcmlnaW5hbFdpZHRoLCBvcmlnaW5hbEhlaWdodF0sIC8vIHNjYWxlcyBpbWFnZSBwcm9wb3J0aW9uYWxseSB3aXRoaW4gdGhpcyBib3hcbiAgICAgICAgICBzdHlsZTogaXRlbS5zdHlsZUNsYXNzXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgIGVsc2Uge1xuICAgICAgICBjb25zdCB2YWwgPSBpdGVtLnZhbHVlIHx8ICcnO1xuICAgICAgICBjdXJyZW50Um93LmNvbHVtbnMucHVzaCh7XG4gICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgdGV4dDogdmFsLHN0eWxlOml0ZW0uc3R5bGVDbGFzcyxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnRXaWR0aCArPSB3aWR0aDtcblxuICAgICAgaWYgKGN1cnJlbnRXaWR0aCA9PT0gMTAwKSB7XG4gICAgICAgIHJvd3MucHVzaChjdXJyZW50Um93KTtcbiAgICAgICAgY3VycmVudFJvdyA9IHsgY29sdW1uczogW10gfTtcbiAgICAgICAgY3VycmVudFdpZHRoID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFJvdy5jb2x1bW5zLmxlbmd0aCA+IDApIHtcbiAgICAgIHJvd3MucHVzaChjdXJyZW50Um93KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm93cztcbiAgfTtcbiAgcmVzdWx0LmNvbnRlbnQgPSBwcm9jZXNzSXRlbXMoaXRlbXMpO1xuICBsZXQgc3R5bGVKc29uID0ge307XG5mb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgc3R5bGVKc29uW2l0ZW0uc3R5bGVDbGFzc10gPSBpdGVtLnN0eWxlO1xufVxucmVzdWx0WydzdHlsZXMnXSA9IHN0eWxlSnNvbjtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiAgLy8gQVAtMDZNQVIyNSAtIEVsZW1lbnQgbmV3IG9yZGVyIHVwZGF0ZVxuICB1cGRhdGVFbGVtZW50c09yZGVyKHVwZGF0ZWRFbGVtZW50czogYW55W10pOiB2b2lkIHtcbiAgICB0aGlzLnBkZkVsZW1lbnRzID0gWy4uLnVwZGF0ZWRFbGVtZW50c107XG4gICAgdGhpcy5wZGZFbGVtZW50c1N1YmplY3QubmV4dCh0aGlzLnBkZkVsZW1lbnRzKTtcbiAgfVxuICAvLyBSZW1vdmUgYW4gZWxlbWVudCBieSBJRFxuICAvLyBTYXZlIGVsZW1lbnRzIHRvIGxvY2FsU3RvcmFnZSBhbmQgdXBkYXRlIHRoZSBzdWJqZWN0XG4gIHJlbW92ZUVsZW1lbnRDb21wb25lbnQoaWQ6IGFueSkge1xuICAgIHRoaXMudGVtcEVsZW0gPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFN1YmplY3QubmV4dChudWxsKTtcbiAgICB0aGlzLmN1cnJlbnRFbGVtZW50ID0ge31cbiAgICB0aGlzLnBkZkVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQuaWQgIT09IGlkKSB7XG4gICAgICAgIHRoaXMudGVtcEVsZW0ucHVzaChlbGVtZW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnBkZkVsZW1lbnRzID0gdGhpcy50ZW1wRWxlbTtcbiAgICB0aGlzLnBkZkVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi50aGlzLnBkZkVsZW1lbnRzXSk7XG4gIH1cbiAgLy8gU0tTMTlNQVIyNSB1cGRhdGUgdGhlIGVsZW1lbnRcbiAgZWxlbWVudFVwZGF0ZSggZWxlbWVudDogYW55LCBmcm9tPzphbnkpIHtcbiAgICBsZXQgZWxlSW5kZXhcbiAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMucGRmRWxlbWVudHM7XG4gICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGlmIChlbGUuaWQgPT09IGVsZW1lbnQuaWQpIHtcbiAgICAgICAgZWxlbWVudHNbaW5kZXhdID0gZWxlbWVudDsgXG4gICAgICAgIGVsZUluZGV4ID0gaW5kZXg7XG4gICAgICB9XG4gICAgfSk7ICAgIFxuICAgIHRoaXMucGRmRWxlbWVudHMgPSBlbGVtZW50cztcbiAgICBpZihmcm9tICE9PSAndmFsdWVDaGFuZ2UnKXtcbiAgICAgIHRoaXMuc29ydEVsZW1lbnRzQnlPcmRlcigpO1xuICAgICAgdGhpcy5wZGZFbGVtZW50c1N1YmplY3QubmV4dChbLi4uZWxlbWVudHNdKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50U3ViamVjdC5uZXh0KGVsZUluZGV4KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|