verben-ng-ui 1.2.4 → 1.2.6
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.
|
@@ -19,6 +19,7 @@ export class DropDownComponent {
|
|
|
19
19
|
ngControl;
|
|
20
20
|
// INTERNAL
|
|
21
21
|
_options = []; // Internal variable for options
|
|
22
|
+
ignoreSet = false;
|
|
22
23
|
// INPUTS
|
|
23
24
|
set options(value) {
|
|
24
25
|
if (this.group) {
|
|
@@ -32,6 +33,12 @@ export class DropDownComponent {
|
|
|
32
33
|
else {
|
|
33
34
|
this._options = value;
|
|
34
35
|
}
|
|
36
|
+
if (!this.ignoreSet) {
|
|
37
|
+
this.firstSearch = false;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
this.ignoreSet = false;
|
|
41
|
+
}
|
|
35
42
|
}
|
|
36
43
|
get options() {
|
|
37
44
|
return this._options; // Return the internal options variable
|
|
@@ -71,6 +78,7 @@ export class DropDownComponent {
|
|
|
71
78
|
onItemChange = () => { };
|
|
72
79
|
onTouched = () => { };
|
|
73
80
|
isInvalid = false;
|
|
81
|
+
firstSearch = false;
|
|
74
82
|
//TEMPLATING
|
|
75
83
|
dropdownContainer;
|
|
76
84
|
dropdownExpansion;
|
|
@@ -157,7 +165,8 @@ export class DropDownComponent {
|
|
|
157
165
|
const result = await this.search(searchTerm, this.loadTimes);
|
|
158
166
|
this.isLoading = false;
|
|
159
167
|
if (this.searchContext.length > 0) {
|
|
160
|
-
this.
|
|
168
|
+
this._options = this.convertToExpandable(result);
|
|
169
|
+
this.ignoreSet = true;
|
|
161
170
|
this.group
|
|
162
171
|
? this.optionsChange.emit(this.options)
|
|
163
172
|
: this.optionsChange.emit(this.options);
|
|
@@ -198,6 +207,9 @@ export class DropDownComponent {
|
|
|
198
207
|
onInputBlur() {
|
|
199
208
|
this.isInputFocused = false;
|
|
200
209
|
}
|
|
210
|
+
updateOptionsCopy() {
|
|
211
|
+
this.optionsCopy = cloneDeep(this._options);
|
|
212
|
+
}
|
|
201
213
|
onSearch(event) {
|
|
202
214
|
if (this.disabled) {
|
|
203
215
|
return;
|
|
@@ -240,12 +252,17 @@ export class DropDownComponent {
|
|
|
240
252
|
}
|
|
241
253
|
}
|
|
242
254
|
else {
|
|
255
|
+
if (this.firstSearch == false) {
|
|
256
|
+
this.optionsCopy = cloneDeep(this._options);
|
|
257
|
+
this.firstSearch = true;
|
|
258
|
+
}
|
|
243
259
|
if (searchTerm.trim().length == 0) {
|
|
244
|
-
this.
|
|
260
|
+
this._options = cloneDeep(this.optionsCopy);
|
|
245
261
|
this.loadTimes = cloneDeep(this.loadTimesCopy);
|
|
246
262
|
this.group
|
|
247
263
|
? this.optionsChange.emit(this.options)
|
|
248
264
|
: this.optionsChange.emit(this.options);
|
|
265
|
+
this.firstSearch = false;
|
|
249
266
|
return;
|
|
250
267
|
}
|
|
251
268
|
if (this.lazyLoad) {
|
|
@@ -253,14 +270,14 @@ export class DropDownComponent {
|
|
|
253
270
|
}
|
|
254
271
|
else {
|
|
255
272
|
if (this.filterBy) {
|
|
256
|
-
this.
|
|
273
|
+
this._options = this.optionsCopy.filter((x) => typeof x[this.filterBy] == 'string' &&
|
|
257
274
|
new RegExp(searchTerm, 'i').test(x[this.filterBy]));
|
|
258
275
|
this.group
|
|
259
276
|
? this.optionsChange.emit(this.options)
|
|
260
277
|
: this.optionsChange.emit(this.options);
|
|
261
278
|
}
|
|
262
279
|
else {
|
|
263
|
-
this.
|
|
280
|
+
this._options = this.optionsCopy.filter((x) => typeof x == 'string' && new RegExp(searchTerm, 'i').test(x));
|
|
264
281
|
this.group
|
|
265
282
|
? this.optionsChange.emit(this.options)
|
|
266
283
|
: this.optionsChange.emit(this.options);
|
|
@@ -400,7 +417,7 @@ export class DropDownComponent {
|
|
|
400
417
|
this.loadTimes.increaseLoadTime();
|
|
401
418
|
}
|
|
402
419
|
for (let item of result) {
|
|
403
|
-
this.
|
|
420
|
+
this._options.push(item);
|
|
404
421
|
}
|
|
405
422
|
if (this.filter) {
|
|
406
423
|
if (searchContext.length == 0 || !this.search) {
|
|
@@ -572,7 +589,8 @@ export class DropDownComponent {
|
|
|
572
589
|
if (equalityCheck) {
|
|
573
590
|
this.selectedOption = this.getValue(option);
|
|
574
591
|
this.selectedOptionLabel = this.asyncLabel
|
|
575
|
-
? await this.asyncLabel(option)
|
|
592
|
+
? await this.asyncLabel(option)
|
|
593
|
+
: this.getOptionLabel(option);
|
|
576
594
|
break;
|
|
577
595
|
}
|
|
578
596
|
}
|
|
@@ -585,7 +603,9 @@ export class DropDownComponent {
|
|
|
585
603
|
this.selectedOptionLabel = await this.asyncLabel(obj);
|
|
586
604
|
}
|
|
587
605
|
else {
|
|
588
|
-
const item = this.options.find(
|
|
606
|
+
const item = this.options.find((option) => this.selectKey
|
|
607
|
+
? isEqual(this.getValue(option)[this.selectKey], (obj && obj[this.selectKey]) || null)
|
|
608
|
+
: isEqual(this.getValue(option), obj));
|
|
589
609
|
if (item) {
|
|
590
610
|
this.selectedOptionLabel = this.getOptionLabel(item);
|
|
591
611
|
}
|
|
@@ -616,7 +636,8 @@ export class DropDownComponent {
|
|
|
616
636
|
if (equalityCheck) {
|
|
617
637
|
this.selectedOptions.push(this.getValue(option));
|
|
618
638
|
this.selectedOptionLabels.push(this.asyncLabel
|
|
619
|
-
? await this.asyncLabel(object)
|
|
639
|
+
? await this.asyncLabel(object)
|
|
640
|
+
: this.getOptionLabel(option));
|
|
620
641
|
break;
|
|
621
642
|
}
|
|
622
643
|
}
|
|
@@ -793,4 +814,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImpo
|
|
|
793
814
|
type: HostListener,
|
|
794
815
|
args: ['document:click', ['$event']]
|
|
795
816
|
}] } });
|
|
796
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZHJvcC1kb3duL2Ryb3AtZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Ryb3AtZG93bi9kcm9wLWRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBRU4sSUFBSSxFQUVKLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF3QixXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7OztBQXlCMUQsTUFBTSxPQUFPLGlCQUFpQjtJQThGWTtJQTNGeEMsV0FBVztJQUNILFFBQVEsR0FBVSxFQUFFLENBQUMsQ0FBQyxnQ0FBZ0M7SUFFOUQsU0FBUztJQUNULElBQ0ksT0FBTyxDQUFDLEtBQVk7UUFDdEIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMvQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN4QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxvQ0FBb0M7WUFDdkYsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyx1Q0FBdUM7SUFDL0QsQ0FBQztJQUVRLEtBQUssR0FBVyxPQUFPLENBQUM7SUFDeEIsa0JBQWtCLEdBQVksSUFBSSxDQUFDO0lBQ25DLG1CQUFtQixHQUFXLHdCQUF3QixDQUFDO0lBQ3ZELFdBQVcsQ0FBVTtJQUNyQixjQUFjLENBQVU7SUFDeEIsV0FBVyxDQUFVO0lBQ3JCLFdBQVcsQ0FBVTtJQUNyQixjQUFjLENBQVU7SUFDeEIsYUFBYSxHQUFXLEVBQUUsQ0FBQztJQUMzQixlQUFlLEdBQVcsVUFBVSxDQUFDO0lBQ3JDLE9BQU8sR0FBdUIsTUFBTSxDQUFDO0lBQ3JDLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDM0IsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUMxQixTQUFTLEdBQWtCLElBQUksQ0FBQztJQUNoQyxVQUFVLEdBQVcsRUFBRSxDQUFDO0lBQ3hCLEtBQUssR0FBWSxLQUFLLENBQUM7SUFDdkIsV0FBVyxHQUFZLEtBQUssQ0FBQztJQUM3QixNQUFNLEdBQVksS0FBSyxDQUFDO0lBQ3hCLGdCQUFnQixHQUFZLEtBQUssQ0FBQztJQUNsQyxRQUFRLENBQVU7SUFDbEIsWUFBWSxHQUFXLEdBQUcsQ0FBQztJQUMzQixPQUFPLEdBQVcsQ0FBQyxDQUFDO0lBQ3BCLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDMUIsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUMxQixJQUFJLENBQWtEO0lBQ3RELFVBQVUsQ0FBNEM7SUFDdEQsTUFBTSxDQUE2RDtJQUU1RSxVQUFVO0lBQ0EsYUFBYSxHQUF3QixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ3hELFFBQVEsR0FBc0MsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUNqRSxPQUFPLEdBQXdCLElBQUksWUFBWSxFQUFFLENBQUM7SUFDbEQsT0FBTyxHQUF3QixJQUFJLFlBQVksRUFBRSxDQUFDO0lBRTVELFlBQVksR0FBeUIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQzlDLFNBQVMsR0FBZSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFDakMsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUUzQixZQUFZO0lBRVosaUJBQWlCLENBQWM7SUFFL0IsaUJBQWlCLENBQWM7SUFDSyxTQUFTLENBQWdDO0lBRS9DLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDaEQsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUV2QixvQkFBb0IsR0FBNEIsSUFBSSxDQUFDO0lBQ3JELFlBQVksR0FBNEIsSUFBSSxDQUFDLENBQUMsc0NBQXNDO0lBQ3BGLGFBQWEsR0FBNEIsSUFBSSxDQUFDO0lBRTlDLFdBQVc7SUFDWCxVQUFVLEdBQVksS0FBSyxDQUFDO0lBQzVCLFNBQVMsR0FBc0IsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBQ3ZELGdCQUFnQixHQUFZLEtBQUssQ0FBQztJQUNsQyxjQUFjLENBQU07SUFDcEIsZUFBZSxHQUFVLEVBQUUsQ0FBQztJQUM1QixtQkFBbUIsQ0FBTTtJQUN6QixvQkFBb0IsR0FBVSxFQUFFLENBQUM7SUFDakMsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUMzQixXQUFXLEdBQVUsRUFBRSxDQUFDO0lBQ3hCLGFBQWEsR0FBc0IsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBQzNELGdCQUFnQixHQUFVLEVBQUUsQ0FBQztJQUM3QixhQUFhLEdBQWEsRUFBRSxDQUFDO0lBQzdCLFdBQVcsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO0lBQ3BDLGFBQWEsR0FBVyxFQUFFLENBQUM7SUFDM0IsY0FBYyxHQUFZLEtBQUssQ0FBQztJQUNoQyxXQUFXLEdBQVksS0FBSyxDQUFDO0lBRTdCLFlBQXdDLFNBQW9CO1FBQXBCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDMUQsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLENBQUMsOENBQThDO1lBQ25GLElBQUksQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNsRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTztvQkFDckMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPO29CQUNoRCxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ1osQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUNELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztnQkFDN0IsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztvQkFDckIsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQzlCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDOzRCQUNsQixTQUFTLEdBQUcsS0FBSyxDQUFDOzRCQUNsQixNQUFNO3dCQUNSLENBQUM7b0JBQ0gsQ0FBQztvQkFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQztnQkFDbEMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxXQUFXO2lCQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsb0NBQW9DO2lCQUMxRSxTQUFTLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFO2dCQUM5QixJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNyQyxPQUFPO2dCQUNULENBQUM7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNyQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUNOLENBQUM7b0JBQzdCLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7d0JBQ2xDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO3dCQUN0QixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzt3QkFDN0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7d0JBQ3ZCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7NEJBQ2xDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzs0QkFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7NEJBQzlDLElBQUksQ0FBQyxLQUFLO2dDQUNSLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBNkIsQ0FBQztnQ0FDN0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFDNUMsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQzt3QkFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3QkFDdkIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7d0JBQzdELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO3dCQUN2QixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDOzRCQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQzs0QkFDaEQsSUFBSSxDQUFDLEtBQUs7Z0NBQ1IsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUE2QixDQUFDO2dDQUM3RCxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUM1QyxDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFDRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO1lBQzNDLElBQUksaUJBQWlCLENBQUMsU0FBUyxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUMvQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxDQUFDO1lBQ3pELENBQUM7WUFDRCxJQUFJLGlCQUFpQixDQUFDLFNBQVMsS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLENBQUM7WUFDakQsQ0FBQztZQUNELElBQUksaUJBQWlCLENBQUMsU0FBUyxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUM1QyxJQUFJLENBQUMsYUFBYSxHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQztZQUNsRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRXNCLE9BQU87UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVxQixNQUFNO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFVO1FBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDdEMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQ04sQ0FBQztZQUM3QixJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUMvQyxJQUFJLENBQUMsS0FBSztvQkFDUixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQTZCLENBQUM7b0JBQzdELENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzFDLE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3QkFDaEIsT0FBTztvQkFDVCxDQUFDO29CQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQzVCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDSixPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVMsQ0FBQyxJQUFJLFFBQVE7d0JBQzFDLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUyxDQUFDLENBQUMsQ0FDNUQsQ0FBQztvQkFDRixJQUFJLENBQUMsS0FBSzt3QkFDUixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQTZCLENBQUM7d0JBQzdELENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzVDLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUNoQixPQUFPO29CQUNULENBQUM7b0JBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FDM0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNKLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBSSxRQUFRO3dCQUMxQixJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FDNUMsQ0FBQztvQkFDRixJQUFJLENBQUMsS0FBSzt3QkFDUixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQTZCLENBQUM7d0JBQzdELENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzVDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUMvQyxJQUFJLENBQUMsS0FBSztvQkFDUixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQTZCLENBQUM7b0JBQzdELENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzFDLE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FDcEMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNKLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFTLENBQUMsSUFBSSxRQUFRO3dCQUNwQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUyxDQUFDLENBQUMsQ0FDdEQsQ0FBQztvQkFDRixJQUFJLENBQUMsS0FBSzt3QkFDUixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQTZCLENBQUM7d0JBQzdELENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzVDLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUNwQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksUUFBUSxJQUFJLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ25FLENBQUM7b0JBQ0YsSUFBSSxDQUFDLEtBQUs7d0JBQ1IsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUE2QixDQUFDO3dCQUM3RCxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM1QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQVk7UUFDMUIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsVUFBVSxDQUFDLFFBQW1DO1FBQzVDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDekMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6RCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNmLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUNkLElBQTZCLEVBQzdCLFFBQW1DO1FBRW5DLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hCLEtBQUssSUFBSSxFQUFFLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ2xELElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO3dCQUNoQixFQUFFLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQzt3QkFDcEIsRUFBRSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUN2QyxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDL0IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNoQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUMvQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFlBQVksS0FBSyxJQUFJLEVBQUUsQ0FBQzt3QkFDOUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQzt3QkFDcEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FDMUIsWUFBWSxFQUNaLGNBQWMsR0FBRyxZQUFZLENBQzlCLENBQUM7b0JBQ0osQ0FBQztvQkFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNqQyxJQUFJLFlBQVksSUFBSSxJQUFJLEVBQUUsQ0FBQzt3QkFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUM5QyxDQUFDO29CQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO2dCQUMxQixDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDckQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7b0JBQ3RCLElBQUksTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ2pELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO29CQUN2QixJQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDLENBQUM7d0JBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDcEMsQ0FBQztvQkFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDOUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ2hCLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDbEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUNqRCxDQUFDO29CQUNELElBQUksQ0FBQyxLQUFLO3dCQUNSLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBNkIsQ0FBQzt3QkFDN0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDNUMsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDaEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDbEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztvQkFDcEQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDZixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxjQUFjLEdBQUcsS0FBSyxDQUFDLENBQUM7b0JBQzlELENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDdkIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ2hCLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDakQsQ0FBQztnQkFDSCxDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNoQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUNsQyxJQUFJLENBQUMsYUFBYTs0QkFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDcEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUM5RCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBNkI7UUFDbkQsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2xELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxNQUFNLEdBQ1IsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU07Z0JBQ3JDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ2xELENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLElBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3BDLENBQUM7WUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkQsS0FBSyxJQUFJLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkIsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQixJQUFJLGFBQWEsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUM5QyxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2xDLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDakQsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLENBQUMsS0FBSztnQkFDUixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQTZCLENBQUM7Z0JBQzdELENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUTtRQUNaLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNqRCxDQUFDO2dCQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFDL0IsQ0FBQztZQUNELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxNQUFNLEdBQ1IsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU07Z0JBQ3JDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ2xELENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNmLE1BQU0sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUMsQ0FBQztZQUNELElBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3BDLENBQUM7WUFDRCxLQUFLLElBQUksSUFBSSxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQixDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hCLElBQUksYUFBYSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQzlDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNqRCxDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksQ0FBQyxLQUFLO2dCQUNSLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBNkIsQ0FBQztnQkFDN0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQXlCO1FBQzNDLE1BQU0sT0FBTyxHQUE4QixFQUFFLENBQUM7UUFDOUMsS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN2QixNQUFNLGFBQWEsR0FBNEI7Z0JBQzdDLEdBQUcsSUFBSTtnQkFDUCxTQUFTLEVBQUUsS0FBSztnQkFDaEIsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDM0QsYUFBYSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDL0QsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQ3BFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2FBQ3hFLENBQUM7WUFDRixPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVk7UUFDdEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDeEQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLENBQUM7WUFDRCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztZQUMvQixLQUFLLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUNqRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDOUQsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7WUFDL0IsS0FBSyxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2hDLEtBQUssSUFBSSxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUM5QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQy9DLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO3dCQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO29CQUM1RCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBWTtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7WUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVUsRUFBRSxLQUFZO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4QixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqRCxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDbkIsTUFBTSxrQkFBa0IsR0FBRztvQkFDekIsR0FBRyxJQUFJLENBQUMsZUFBZTtvQkFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7aUJBQ3JCLENBQUM7Z0JBQ0YsTUFBTSx1QkFBdUIsR0FBRztvQkFDOUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CO29CQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQztpQkFDM0IsQ0FBQztnQkFDRixJQUFJLENBQUMsZUFBZSxHQUFHLGtCQUFrQixDQUFDO2dCQUMxQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsdUJBQXVCLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO29CQUNqQixhQUFhLEVBQUUsS0FBSztvQkFDcEIsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlO2lCQUM1QixDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQ3pCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDckQsa0JBQWtCLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDckMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7Z0JBQy9ELHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxlQUFlLEdBQUcsa0JBQWtCLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyx1QkFBdUIsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7b0JBQ2pCLGFBQWEsRUFBRSxLQUFLO29CQUNwQixLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWU7aUJBQzVCLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELHVCQUF1QixDQUFDLEtBQWEsRUFBRSxLQUFZO1FBQ2pELE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNyRCxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQy9ELHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQztRQUMxQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsdUJBQXVCLENBQUM7UUFDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELHFCQUFxQixDQUFDLEtBQVU7UUFDOUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDckQsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDM0QsT0FBTyxDQUFDLENBQUM7WUFDWCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBUTtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDO2dCQUMxQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsR0FBRyxDQUFDO2dCQUMvQixPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7WUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xDLEtBQUssSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNoQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUzt3QkFDbEMsQ0FBQyxDQUFDLE9BQU8sQ0FDTCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFDckMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FDckM7d0JBQ0gsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUN4QyxJQUFJLGFBQWEsRUFBRSxDQUFDO3dCQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQzVDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsVUFBVTs0QkFDMUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDOUQsTUFBTTtvQkFDUixDQUFDO2dCQUNILENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztnQkFDbkQsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsQ0FBQztZQUMxQixJQUFHLElBQUksQ0FBQyxVQUFVLEVBQUMsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFBLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFBLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNuTCxJQUFHLElBQUksRUFBRSxDQUFDO29CQUNSLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2RCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLG1CQUFtQixHQUFHLEdBQUcsQ0FBQztnQkFDakMsQ0FBQztZQUNILENBQUM7WUFDRCw2Q0FBNkM7WUFDN0MsaUNBQWlDO1lBQ2pDLGdDQUFnQztZQUNoQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztnQkFDL0IsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQyxLQUFLLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDaEMsS0FBSyxJQUFJLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQzt3QkFDdkIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVM7NEJBQ2xDLENBQUMsQ0FBQyxPQUFPLENBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQ3JDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQ3ZCOzRCQUNILENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQzt3QkFDM0MsSUFBSSxhQUFhLEVBQUUsQ0FBQzs0QkFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDOzRCQUNqRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO2dDQUM1QyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7NEJBQ2hFLE1BQU07d0JBQ1IsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztnQkFDcEQsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQztZQUMzQixLQUFLLElBQUksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUM1QixJQUFJLENBQUMsVUFBVTtvQkFDYixDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztvQkFDL0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQ2hDLENBQUM7WUFDSixDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBVTtRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzFDLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSztZQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQ3BCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDSixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFZLENBQUMsSUFBSSxLQUFLLENBQ3BFO1lBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUNwQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVksQ0FBQyxJQUFJLEtBQUssQ0FDN0QsQ0FBQztRQUNOLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDMUMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBQ0QsZ0JBQWdCLENBQUUsVUFBbUI7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFTO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDeEMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUNELGNBQWMsQ0FBQyxJQUFTO1FBQ3RCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3BCLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVPLDhCQUE4QixDQUFDLEtBQVk7UUFDakQsT0FBTyxDQUNMLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQ3BCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUM1RCxDQUFDO0lBQ0osQ0FBQztJQUVELHdFQUF3RTtJQUNoRSx5QkFBeUIsQ0FBQyxJQUFTO1FBQ3pDLE9BQU8sVUFBVSxJQUFJLElBQUksQ0FBQztJQUM1QixDQUFDO0lBR0QsY0FBYyxDQUFDLEtBQVk7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQ0UsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzVELElBQUksQ0FBQyxVQUFVO1lBQ2YsSUFBSSxDQUFDLGlCQUFpQjtZQUN0QixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFDNUQsQ0FBQztZQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO3dHQWp1QlUsaUJBQWlCOzRGQUFqQixpQkFBaUIsMmxDQW1FWCxpQkFBaUIsNFFDeEhwQyw2K1pBaU1BLDRwS0R0SkksWUFBWSxxZ0JBQ1oscUJBQXFCLDJSQUNyQixZQUFZLDByQ0FDWixXQUFXLCt4QkFDWCxTQUFTLDJLQUNULGFBQWE7OzRGQUtKLGlCQUFpQjtrQkFkN0IsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1oscUJBQXFCO3dCQUNyQixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsU0FBUzt3QkFDVCxhQUFhO3FCQUNkOzswQkFrR1ksUUFBUTs7MEJBQUksSUFBSTt5Q0F0RnpCLE9BQU87c0JBRFYsS0FBSztnQkFpQkcsS0FBSztzQkFBYixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFHSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQVFQLGlCQUFpQjtzQkFEaEIsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBR2hELGlCQUFpQjtzQkFEaEIsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRWIsU0FBUztzQkFBNUMsZUFBZTt1QkFBQyxpQkFBaUI7Z0JBRUosU0FBUztzQkFBdEMsV0FBVzt1QkFBQyxlQUFlO2dCQTRHTCxPQUFPO3NCQUE3QixZQUFZO3VCQUFDLE9BQU87Z0JBSUMsTUFBTTtzQkFBM0IsWUFBWTt1QkFBQyxNQUFNO2dCQWdpQnBCLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2VsZixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEcm9wZG93bk1lbnVJdGVtIH0gZnJvbSAnLi9Ecm9wZG93bk1lbnVJdGVtJztcbmltcG9ydCB7IERyb3Bkb3duTG9hZEV2ZW50IH0gZnJvbSAnLi9Ecm9wZG93bkxvYWRFdmVudCc7XG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uL1RlbXBsYXRlRGlyZWN0aXZlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEcm9wZG93bkNoYW5nZUV2ZW50IH0gZnJvbSAnLi9Ecm9wZG93bkNoYW5nZUV2ZW50JztcbmltcG9ydCB7IERyb3BEb3duSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vZHJvcC1kb3duLWl0ZW0vZHJvcC1kb3duLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IGlzRXF1YWwsIGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC5tb2R1bGUnO1xuaW1wb3J0IHsgU3ZnTW9kdWxlIH0gZnJvbSAnLi4vc3ZnL3N2Zy5tb2R1bGUnO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5tb2R1bGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyIGV4dGVuZHMgRHJvcGRvd25NZW51SXRlbSB7XG4gIGV4cGFuZGVkOiBib29sZWFuO1xuICBpdGVtcz86IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyW107XG4gIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgY29weTogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXTtcbiAgbG9hZFRpbWVzPzogRHJvcGRvd25Mb2FkRXZlbnQ7XG4gIGxvYWRUaW1lc0NvcHk/OiBEcm9wZG93bkxvYWRFdmVudDtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVyYmVuLWRyb3AtZG93bicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRHJvcERvd25JdGVtQ29tcG9uZW50LFxuICAgIFNoYXJlZE1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBTdmdNb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3AtZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kcm9wLWRvd24uY29tcG9uZW50LmNzcycsXG59KVxuZXhwb3J0IGNsYXNzIERyb3BEb3duQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdFxue1xuICAvLyBJTlRFUk5BTFxuICBwcml2YXRlIF9vcHRpb25zOiBhbnlbXSA9IFtdOyAvLyBJbnRlcm5hbCB2YXJpYWJsZSBmb3Igb3B0aW9uc1xuXG4gIC8vIElOUFVUU1xuICBASW5wdXQoKVxuICBzZXQgb3B0aW9ucyh2YWx1ZTogYW55W10pIHtcbiAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgaWYgKHRoaXMuaXNEcm9wZG93bk1lbnVJdGVtV3JhcHBlckFycmF5KHZhbHVlKSkge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5jb252ZXJ0VG9FeHBhbmRhYmxlKHZhbHVlKTsgLy8gU2V0IHRoZSBpbnRlcm5hbCBvcHRpb25zIHZhcmlhYmxlXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX29wdGlvbnMgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXQgb3B0aW9ucygpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7IC8vIFJldHVybiB0aGUgaW50ZXJuYWwgb3B0aW9ucyB2YXJpYWJsZVxuICB9XG5cbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZyA9ICcxMnJlbSc7XG4gIEBJbnB1dCgpIHNob3dIb3Jpem9udGFsTGluZTogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGhvcml6b250YWxMaW5lQ29sb3I6IHN0cmluZyA9ICdyZ2JhKDI1NSwgMjMwLCAxMjksIDEpJztcbiAgQElucHV0KCkgb3B0aW9uTGFiZWw/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIG9wdGlvblN1YkxhYmVsPzogc3RyaW5nO1xuICBASW5wdXQoKSBvcHRpb25WYWx1ZT86IHN0cmluZztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGludmFsaWRNZXNzYWdlPzogc3RyaW5nO1xuICBASW5wdXQoKSBlcnJvclBvc2l0aW9uOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgbG9hZE1vcmVDYXB0aW9uOiBzdHJpbmcgPSAnU2VlIG1vcmUnO1xuICBASW5wdXQoKSBkaXNwbGF5OiAnZGVmYXVsdCcgfCAnY2hpcCcgPSAnY2hpcCc7XG4gIEBJbnB1dCgpIHNob3dDbGVhcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBsYXp5TG9hZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzZWxlY3RLZXk6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZ3JvdXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbXVsdGlzZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZmlsdGVyOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGF2b2lkRHVwbGljYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZmlsdGVyQnk/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRlYm91bmNlVGltZTogbnVtYmVyID0gNTAwO1xuICBASW5wdXQoKSBtaW5DaGFyOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBsb2FkPzogKGNvbnRleHQ6IERyb3Bkb3duTG9hZEV2ZW50KSA9PiBQcm9taXNlPGFueVtdPjtcbiAgQElucHV0KCkgYXN5bmNMYWJlbD86IChjb250ZXh0OiBhbnkpID0+IFByb21pc2U8c3RyaW5nIHwgbnVsbD47XG4gIEBJbnB1dCgpIHNlYXJjaD86IChkYXRhOiBhbnksIGNvbnRleHQ6IERyb3Bkb3duTG9hZEV2ZW50KSA9PiBQcm9taXNlPGFueVtdPjtcblxuICAvLyBPVVRQVVRTXG4gIEBPdXRwdXQoKSBvcHRpb25zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55W10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxEcm9wZG93bkNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkNsZWFyOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIG9uSXRlbUNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIGlzSW52YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vVEVNUExBVElOR1xuICBAVmlld0NoaWxkKCdkcm9wZG93bkNvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGRyb3Bkb3duQ29udGFpbmVyITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25FeHBhbnNpb24nLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgZHJvcGRvd25FeHBhbnNpb24hOiBFbGVtZW50UmVmO1xuICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlRGlyZWN0aXZlKSB0ZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8VGVtcGxhdGVEaXJlY3RpdmU+O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZm9jdXNlZCcpIGlzRm9jdXNlZCA9IGZhbHNlO1xuICBpc0lucHV0Rm9jdXNlZCA9IGZhbHNlO1xuXG4gIHNlbGVjdGVkSXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsOyAvLyBBbGxvdyBudWxsIGZvciBjdXN0b20gaXRlbSB0ZW1wbGF0ZVxuICBncm91cFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG5cbiAgLy9WQVJJQUJMRVNcbiAgaXNFeHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBsb2FkVGltZXM6IERyb3Bkb3duTG9hZEV2ZW50ID0gbmV3IERyb3Bkb3duTG9hZEV2ZW50KCk7XG4gIGluaXRpYWxJbmNyZW1lbnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWRPcHRpb246IGFueTtcbiAgc2VsZWN0ZWRPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBzZWxlY3RlZE9wdGlvbkxhYmVsOiBhbnk7XG4gIHNlbGVjdGVkT3B0aW9uTGFiZWxzOiBhbnlbXSA9IFtdO1xuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgb3B0aW9uc0NvcHk6IGFueVtdID0gW107XG4gIGxvYWRUaW1lc0NvcHk6IERyb3Bkb3duTG9hZEV2ZW50ID0gbmV3IERyb3Bkb3duTG9hZEV2ZW50KCk7XG4gIHNlbGVjdGVkQ29udGV4dHM6IGFueVtdID0gW107XG4gIHNlYXJjaEhpc3Rvcnk6IHN0cmluZ1tdID0gW107XG4gIHNlYXJjaFRlcm0kID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBzZWFyY2hDb250ZXh0OiBzdHJpbmcgPSAnJztcbiAgYWxsb3dTZWxlY3RBbGw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWRBbGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2VsZigpIHByaXZhdGUgbmdDb250cm9sOiBOZ0NvbnRyb2wpIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzOyAvLyBBc3NpZ24gdGhpcyBjb21wb25lbnQgYXMgdGhlIHZhbHVlIGFjY2Vzc29yXG4gICAgICB0aGlzLm5nQ29udHJvbD8uc3RhdHVzQ2hhbmdlcz8uc3Vic2NyaWJlKChzdGF0dXMpID0+IHtcbiAgICAgICAgdGhpcy5pc0ludmFsaWQgPSB0aGlzLm5nQ29udHJvbC50b3VjaGVkXG4gICAgICAgICAgPyBzdGF0dXMgPT09ICdJTlZBTElEJyAmJiB0aGlzLm5nQ29udHJvbC50b3VjaGVkXG4gICAgICAgICAgOiBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgaWYgKCF0aGlzLmxhenlMb2FkKSB7XG4gICAgICAgIGlmICghdGhpcy5ncm91cCkge1xuICAgICAgICAgIHRoaXMuYWxsb3dTZWxlY3RBbGwgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBpc0FsbG93ZWQgPSB0cnVlO1xuICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5vcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAoaXRlbS5sYXp5TG9hZCkge1xuICAgICAgICAgICAgICBpc0FsbG93ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuYWxsb3dTZWxlY3RBbGwgPSBpc0FsbG93ZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5ID0gY2xvbmVEZWVwKHRoaXMuX29wdGlvbnMpO1xuICAgICAgdGhpcy5zZWFyY2hUZXJtJFxuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWUpKSAvLyBBZGp1c3QgZGVib3VuY2UgdGltZSBoZXJlIChpbiBtcylcbiAgICAgICAgLnN1YnNjcmliZShhc3luYyAoc2VhcmNoVGVybSkgPT4ge1xuICAgICAgICAgIGlmIChzZWFyY2hUZXJtLmxlbmd0aCA8IHRoaXMubWluQ2hhcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZENvbnRleHRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnNlbGVjdGVkQ29udGV4dHNbXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggLSAxXG4gICAgICAgICAgICBdIGFzIERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyO1xuICAgICAgICAgICAgaWYgKGl0ZW0uc2VhcmNoICYmIGl0ZW0ubG9hZFRpbWVzKSB7XG4gICAgICAgICAgICAgIGl0ZW0ubG9hZFRpbWVzLnJlc2V0KCk7XG4gICAgICAgICAgICAgIGl0ZW0uaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaXRlbS5zZWFyY2goc2VhcmNoVGVybSwgaXRlbS5sb2FkVGltZXMpO1xuICAgICAgICAgICAgICBpdGVtLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hDb250ZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpdGVtLmxvYWRUaW1lcy5pbmNyZWFzZUxvYWRUaW1lKCk7XG4gICAgICAgICAgICAgICAgaXRlbS5pdGVtcyA9IHRoaXMuY29udmVydFRvRXhwYW5kYWJsZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWFyY2ggJiYgdGhpcy5sb2FkVGltZXMpIHtcbiAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLmxvYWRUaW1lcy5yZXNldCgpO1xuICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnNlYXJjaChzZWFyY2hUZXJtLCB0aGlzLmxvYWRUaW1lcyk7XG4gICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaENvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuY29udmVydFRvRXhwYW5kYWJsZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKCh0ZW1wbGF0ZURpcmVjdGl2ZSkgPT4ge1xuICAgICAgaWYgKHRlbXBsYXRlRGlyZWN0aXZlLnZUZW1wbGF0ZSA9PT0gJ3NlbGVjdGVkJykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbVRlbXBsYXRlID0gdGVtcGxhdGVEaXJlY3RpdmUudGVtcGxhdGU7XG4gICAgICB9XG4gICAgICBpZiAodGVtcGxhdGVEaXJlY3RpdmUudlRlbXBsYXRlID09PSAnaXRlbScpIHtcbiAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSB0ZW1wbGF0ZURpcmVjdGl2ZS50ZW1wbGF0ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0ZW1wbGF0ZURpcmVjdGl2ZS52VGVtcGxhdGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgdGhpcy5ncm91cFRlbXBsYXRlID0gdGVtcGxhdGVEaXJlY3RpdmUudGVtcGxhdGU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1cycpIG9uRm9jdXMoKSB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpIG9uQmx1cigpIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICB9XG5cbiAgb25TZWFyY2hGb2N1cygpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gdHJ1ZTtcbiAgfVxuXG4gIG9uU2VhcmNoQmx1cigpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICBvbklucHV0Rm9jdXMoKSB7XG4gICAgdGhpcy5pc0lucHV0Rm9jdXNlZCA9IHRydWU7XG4gIH1cblxuICBvbklucHV0Qmx1cigpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICBvblNlYXJjaChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2VhcmNoVGVybSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZENvbnRleHRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnNlbGVjdGVkQ29udGV4dHNbXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggLSAxXG4gICAgICBdIGFzIERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyO1xuICAgICAgaWYgKHNlYXJjaFRlcm0udHJpbSgpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIGl0ZW0uaXRlbXMgPSBjbG9uZURlZXAoaXRlbS5jb3B5KTtcbiAgICAgICAgaXRlbS5sb2FkVGltZXMgPSBjbG9uZURlZXAoaXRlbS5sb2FkVGltZXNDb3B5KTtcbiAgICAgICAgdGhpcy5ncm91cFxuICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtLmxhenlMb2FkKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dChzZWFyY2hUZXJtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpdGVtLmZpbHRlckJ5KSB7XG4gICAgICAgICAgaWYgKCFpdGVtLml0ZW1zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGl0ZW0uaXRlbXMgPSBpdGVtLml0ZW1zLmZpbHRlcihcbiAgICAgICAgICAgICh4KSA9PlxuICAgICAgICAgICAgICB0eXBlb2YgeC52YWx1ZVtpdGVtLmZpbHRlckJ5IV0gPT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICAgbmV3IFJlZ0V4cChzZWFyY2hUZXJtLCAnaScpLnRlc3QoeC52YWx1ZVtpdGVtLmZpbHRlckJ5IV0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmdyb3VwXG4gICAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCFpdGVtLml0ZW1zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGl0ZW0uaXRlbXMgPSBpdGVtLmNvcHkuZmlsdGVyKFxuICAgICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICAgIHR5cGVvZiB4LnZhbHVlID09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgIG5ldyBSZWdFeHAoc2VhcmNoVGVybSwgJ2knKS50ZXN0KHgudmFsdWUpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmdyb3VwXG4gICAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHNlYXJjaFRlcm0udHJpbSgpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IGNsb25lRGVlcCh0aGlzLm9wdGlvbnNDb3B5KTtcbiAgICAgICAgdGhpcy5sb2FkVGltZXMgPSBjbG9uZURlZXAodGhpcy5sb2FkVGltZXNDb3B5KTtcbiAgICAgICAgdGhpcy5ncm91cFxuICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmxhenlMb2FkKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dChzZWFyY2hUZXJtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlckJ5KSB7XG4gICAgICAgICAgdGhpcy5vcHRpb25zID0gdGhpcy5vcHRpb25zQ29weS5maWx0ZXIoXG4gICAgICAgICAgICAoeCkgPT5cbiAgICAgICAgICAgICAgdHlwZW9mIHhbdGhpcy5maWx0ZXJCeSFdID09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgIG5ldyBSZWdFeHAoc2VhcmNoVGVybSwgJ2knKS50ZXN0KHhbdGhpcy5maWx0ZXJCeSFdKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5ncm91cFxuICAgICAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICAgICAgOiB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMub3B0aW9uc0NvcHkuZmlsdGVyKFxuICAgICAgICAgICAgKHgpID0+IHR5cGVvZiB4ID09ICdzdHJpbmcnICYmIG5ldyBSZWdFeHAoc2VhcmNoVGVybSwgJ2knKS50ZXN0KHgpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmdyb3VwXG4gICAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbkRyb3Bkb3duQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVEcm9wZG93bigpO1xuICAgIHRoaXMub25DbGljay5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHRvZ2dsZURyb3Bkb3duKCkge1xuICAgIHRoaXMuaXNFeHBhbmRlZCA9ICF0aGlzLmlzRXhwYW5kZWQ7XG4gIH1cblxuICBoYXNTaWJsaW5nKHNpYmxpbmdzOiBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcltdKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaWJsaW5ncy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkQ29udGV4dHMuaW5kZXhPZihzaWJsaW5nc1tpXSk7XG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXN5bmMgZXhwYW5kTWVudShcbiAgICBpdGVtOiBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcixcbiAgICBzaWJsaW5nczogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXVxuICApIHtcbiAgICBpZiAoaXRlbS5pdGVtcykge1xuICAgICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICAgIGZvciAobGV0IGl0IG9mIHNpYmxpbmdzLmZpbHRlcigoeCkgPT4geCAhPT0gaXRlbSkpIHtcbiAgICAgICAgICBpZiAoaXQuZXhwYW5kZWQpIHtcbiAgICAgICAgICAgIGl0LmV4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgICAgICBpdC5sb2FkVGltZXMgJiYgaXQubG9hZFRpbWVzLnJlc2V0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpdGVtLmV4cGFuZGVkID0gIWl0ZW0uZXhwYW5kZWQ7XG4gICAgICBpZiAoaXRlbS5leHBhbmRlZCkge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICBjb25zdCBzaWJsaW5nQ2hlY2sgPSB0aGlzLmhhc1NpYmxpbmcoc2libGluZ3MpO1xuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ29udGV4dHMubGVuZ3RoID4gMCAmJiBzaWJsaW5nQ2hlY2sgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRleHRzTGVuZ3RoID0gdGhpcy5zZWxlY3RlZENvbnRleHRzLmxlbmd0aDtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5zcGxpY2UoXG4gICAgICAgICAgICAgIHNpYmxpbmdDaGVjayxcbiAgICAgICAgICAgICAgY29udGV4dHNMZW5ndGggLSBzaWJsaW5nQ2hlY2tcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5wdXNoKGl0ZW0pO1xuICAgICAgICAgIGlmIChzaWJsaW5nQ2hlY2sgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hIaXN0b3J5LnB1c2godGhpcy5zZWFyY2hDb250ZXh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zZWFyY2hDb250ZXh0ID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0ZW0ubGF6eUxvYWQgJiYgaXRlbS5sb2FkTW9yZSAmJiBpdGVtLmxvYWRUaW1lcykge1xuICAgICAgICAgIGl0ZW0uaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgaXRlbS5sb2FkTW9yZShpdGVtLmxvYWRUaW1lcyk7XG4gICAgICAgICAgaXRlbS5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICBpZihyZXN1bHQubGVuZ3RoID4gMCl7XG4gICAgICAgICAgICBpdGVtLmxvYWRUaW1lcy5pbmNyZWFzZUxvYWRUaW1lKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGl0ZW0uaXRlbXMgPSB0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUocmVzdWx0KTtcbiAgICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICAgIGl0ZW0uY29weSA9IGNsb25lRGVlcChpdGVtLml0ZW1zKTtcbiAgICAgICAgICAgIGl0ZW0ubG9hZFRpbWVzQ29weSA9IGNsb25lRGVlcChpdGVtLmxvYWRUaW1lcyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICAgIDogdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkQ29udGV4dHMuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgICBjb25zdCBjb250ZXh0c0xlbmd0aCA9IHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGg7XG4gICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5zcGxpY2UoaW5kZXgsIGNvbnRleHRzTGVuZ3RoIC0gaW5kZXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXRlbS5sb2FkVGltZXMpIHtcbiAgICAgICAgICBpdGVtLmxvYWRUaW1lcy5yZXNldCgpO1xuICAgICAgICAgIGlmICh0aGlzLmZpbHRlcikge1xuICAgICAgICAgICAgaXRlbS5sb2FkVGltZXNDb3B5ID0gY2xvbmVEZWVwKGl0ZW0ubG9hZFRpbWVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICAgICAgaWYgKHRoaXMuc2VhcmNoSGlzdG9yeS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaENvbnRleHQgPVxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaEhpc3RvcnlbdGhpcy5zZWFyY2hIaXN0b3J5Lmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hIaXN0b3J5LnNwbGljZSh0aGlzLnNlYXJjaEhpc3RvcnkubGVuZ3RoIC0gMSwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZE1vcmVNZW51SXRlbXMoaXRlbTogRHJvcGRvd25NZW51SXRlbVdyYXBwZXIpIHtcbiAgICBpZiAoaXRlbS5sb2FkTW9yZSAmJiBpdGVtLmxvYWRUaW1lcyAmJiBpdGVtLml0ZW1zKSB7XG4gICAgICBjb25zdCBzZWFyY2hDb250ZXh0ID0gdGhpcy5zZWFyY2hDb250ZXh0LnRyaW0oKTtcbiAgICAgIGl0ZW0uaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHZhciByZXN1bHQgPVxuICAgICAgICBzZWFyY2hDb250ZXh0Lmxlbmd0aCA+IDAgJiYgaXRlbS5zZWFyY2hcbiAgICAgICAgICA/IGF3YWl0IGl0ZW0uc2VhcmNoKHNlYXJjaENvbnRleHQsIGl0ZW0ubG9hZFRpbWVzKVxuICAgICAgICAgIDogYXdhaXQgaXRlbS5sb2FkTW9yZShpdGVtLmxvYWRUaW1lcyk7XG4gICAgICBpdGVtLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgaWYocmVzdWx0Lmxlbmd0aCA+IDApe1xuICAgICAgICBpdGVtLmxvYWRUaW1lcy5pbmNyZWFzZUxvYWRUaW1lKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBjb252ZXJ0ZWQgPSB0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUocmVzdWx0KTtcbiAgICAgIGZvciAobGV0IHJlcyBvZiBjb252ZXJ0ZWQpIHtcbiAgICAgICAgaXRlbS5pdGVtcy5wdXNoKHJlcyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgaWYgKHNlYXJjaENvbnRleHQubGVuZ3RoID09IDAgfHwgIWl0ZW0uc2VhcmNoKSB7XG4gICAgICAgICAgaXRlbS5jb3B5ID0gY2xvbmVEZWVwKGl0ZW0uaXRlbXMpO1xuICAgICAgICAgIGl0ZW0ubG9hZFRpbWVzQ29weSA9IGNsb25lRGVlcChpdGVtLmxvYWRUaW1lcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZE1vcmUoKSB7XG4gICAgaWYgKHRoaXMubG9hZCkge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5sZW5ndGggPiAwICYmICF0aGlzLmluaXRpYWxJbmNyZW1lbnQpIHtcbiAgICAgICAgdGhpcy5sb2FkVGltZXMuaW5jcmVhc2VMb2FkVGltZSgpO1xuICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICB0aGlzLmxvYWRUaW1lc0NvcHkgPSBjbG9uZURlZXAodGhpcy5sb2FkVGltZXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5pdGlhbEluY3JlbWVudCA9IHRydWU7XG4gICAgICB9XG4gICAgICBjb25zdCBzZWFyY2hDb250ZXh0ID0gdGhpcy5zZWFyY2hDb250ZXh0LnRyaW0oKTtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHZhciByZXN1bHQgPVxuICAgICAgICBzZWFyY2hDb250ZXh0Lmxlbmd0aCA+IDAgJiYgdGhpcy5zZWFyY2hcbiAgICAgICAgICA/IGF3YWl0IHRoaXMuc2VhcmNoKHNlYXJjaENvbnRleHQsIHRoaXMubG9hZFRpbWVzKVxuICAgICAgICAgIDogYXdhaXQgdGhpcy5sb2FkKHRoaXMubG9hZFRpbWVzKTtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgICByZXN1bHQgPSB0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUocmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGlmKHJlc3VsdC5sZW5ndGggPiAwKXtcbiAgICAgICAgdGhpcy5sb2FkVGltZXMuaW5jcmVhc2VMb2FkVGltZSgpO1xuICAgICAgfVxuICAgICAgZm9yIChsZXQgaXRlbSBvZiByZXN1bHQpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgaWYgKHNlYXJjaENvbnRleHQubGVuZ3RoID09IDAgfHwgIXRoaXMuc2VhcmNoKSB7XG4gICAgICAgICAgdGhpcy5vcHRpb25zQ29weSA9IGNsb25lRGVlcCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICAgIHRoaXMubG9hZFRpbWVzQ29weSA9IGNsb25lRGVlcCh0aGlzLmxvYWRUaW1lcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgY29udmVydFRvRXhwYW5kYWJsZShpdGVtczogRHJvcGRvd25NZW51SXRlbVtdKTogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXSB7XG4gICAgY29uc3Qgd3JhcHBlcjogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXSA9IFtdO1xuICAgIGZvciAobGV0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGNvbnN0IGNvbnZlcnRlZEl0ZW06IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyID0ge1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICBleHBhbmRlZDogZmFsc2UsXG4gICAgICAgIGxvYWRUaW1lczogaXRlbS5pdGVtcyA/IG5ldyBEcm9wZG93bkxvYWRFdmVudCgpIDogdW5kZWZpbmVkLFxuICAgICAgICBsb2FkVGltZXNDb3B5OiBpdGVtLml0ZW1zID8gbmV3IERyb3Bkb3duTG9hZEV2ZW50KCkgOiB1bmRlZmluZWQsXG4gICAgICAgIGl0ZW1zOiBpdGVtLml0ZW1zID8gdGhpcy5jb252ZXJ0VG9FeHBhbmRhYmxlKGl0ZW0uaXRlbXMpIDogdW5kZWZpbmVkLFxuICAgICAgICBjb3B5OiBpdGVtLml0ZW1zID8gY2xvbmVEZWVwKHRoaXMuY29udmVydFRvRXhwYW5kYWJsZShpdGVtLml0ZW1zKSkgOiBbXSxcbiAgICAgIH07XG4gICAgICB3cmFwcGVyLnB1c2goY29udmVydGVkSXRlbSk7XG4gICAgfVxuICAgIHJldHVybiB3cmFwcGVyO1xuICB9XG5cbiAgb25TZWxlY3RBbGwoZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRBbGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gW107XG4gICAgICB0aGlzLm9uSXRlbUNoYW5nZShbXSk7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiBbXSB9KTtcbiAgICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XG4gICAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmdyb3VwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscyA9IFtdO1xuICAgICAgZm9yIChsZXQgb3B0aW9uIG9mIHRoaXMub3B0aW9ucykge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuY2hlY2tNdWx0aXNlbGVjdFZhbHVlKG9wdGlvbik7XG4gICAgICAgIGlmIChpbmRleCA9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMucHVzaCh0aGlzLmdldFZhbHVlKG9wdGlvbikpO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMucHVzaCh0aGlzLmdldE9wdGlvbkxhYmVsKG9wdGlvbikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gW107XG4gICAgICBmb3IgKGxldCBvcHRpb24gb2YgdGhpcy5vcHRpb25zKSB7XG4gICAgICAgIGZvciAobGV0IGl0ZW0gb2Ygb3B0aW9uLml0ZW1zKSB7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmNoZWNrTXVsdGlzZWxlY3RWYWx1ZShpdGVtKTtcbiAgICAgICAgICBpZiAoaW5kZXggPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMucHVzaCh0aGlzLmdldFZhbHVlKGl0ZW0pKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMucHVzaCh0aGlzLmdldE9wdGlvbkxhYmVsKGl0ZW0pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5vbkl0ZW1DaGFuZ2UodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9ucyB9KTtcbiAgfVxuXG4gIGNsZWFyU2VsZWN0aW9uKGV2ZW50OiBFdmVudCkge1xuICAgIGlmICghdGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSBudWxsO1xuICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UobnVsbCk7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiBudWxsIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscyA9IFtdO1xuICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UoW10pO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCB2YWx1ZTogW10gfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XG4gICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgICB0aGlzLm9uQ2xlYXIuZW1pdChldmVudCk7XG4gIH1cblxuICBvblNlbGVjdCh2YWx1ZTogYW55LCBldmVudDogRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSB0aGlzLmdldFZhbHVlKHZhbHVlKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbCA9IHRoaXMuZ2V0T3B0aW9uTGFiZWwodmFsdWUpO1xuICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UodGhpcy5nZXRWYWx1ZSh2YWx1ZSkpO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCB2YWx1ZTogdGhpcy5nZXRWYWx1ZSh2YWx1ZSkgfSk7XG4gICAgICB0aGlzLnRvZ2dsZURyb3Bkb3duKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGV4aXN0cyA9IHRoaXMuY2hlY2tNdWx0aXNlbGVjdFZhbHVlKHZhbHVlKTtcbiAgICAgIGlmIChleGlzdHMgPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbnMgPSBbXG4gICAgICAgICAgLi4udGhpcy5zZWxlY3RlZE9wdGlvbnMsXG4gICAgICAgICAgdGhpcy5nZXRWYWx1ZSh2YWx1ZSksXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkT3B0aW9uTGFiZWxzID0gW1xuICAgICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMsXG4gICAgICAgICAgdGhpcy5nZXRPcHRpb25MYWJlbCh2YWx1ZSksXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gbmV3U2VsZWN0ZWRPcHRpb25zO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gbmV3U2VsZWN0ZWRPcHRpb25MYWJlbHM7XG4gICAgICAgIHRoaXMub25JdGVtQ2hhbmdlKHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5zZWxlY3RlZE9wdGlvbnMsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFsbCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbnMgPSBbLi4udGhpcy5zZWxlY3RlZE9wdGlvbnNdO1xuICAgICAgICBuZXdTZWxlY3RlZE9wdGlvbnMuc3BsaWNlKGV4aXN0cywgMSk7XG4gICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkT3B0aW9uTGFiZWxzID0gWy4uLnRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHNdO1xuICAgICAgICBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscy5zcGxpY2UoZXhpc3RzLCAxKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBuZXdTZWxlY3RlZE9wdGlvbnM7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMgPSBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscztcbiAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgIHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9ucyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaW5kZXg6IG51bWJlciwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgbmV3U2VsZWN0ZWRPcHRpb25zID0gWy4uLnRoaXMuc2VsZWN0ZWRPcHRpb25zXTtcbiAgICBuZXdTZWxlY3RlZE9wdGlvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscyA9IFsuLi50aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzXTtcbiAgICBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gbmV3U2VsZWN0ZWRPcHRpb25zO1xuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMgPSBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscztcbiAgICB0aGlzLm9uSXRlbUNoYW5nZSh0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWU6IHRoaXMuc2VsZWN0ZWRPcHRpb25zIH0pO1xuICB9XG5cbiAgY2hlY2tNdWx0aXNlbGVjdFZhbHVlKHZhbHVlOiBhbnkpOiBudW1iZXIgfCBudWxsIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoaXNFcXVhbCh0aGlzLnNlbGVjdGVkT3B0aW9uc1tpXSwgdGhpcy5nZXRWYWx1ZSh2YWx1ZSkpKSB7XG4gICAgICAgIHJldHVybiBpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIHdyaXRlVmFsdWUob2JqOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIGlmIChvYmogPT0gbnVsbCB8fCBvYmogPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSBvYmo7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbCA9IG9iajtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSBudWxsO1xuICAgICAgaWYgKCF0aGlzLmdyb3VwICYmICF0aGlzLmxhenlMb2FkKSB7XG4gICAgICAgIGZvciAobGV0IG9wdGlvbiBvZiB0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgICBjb25zdCBlcXVhbGl0eUNoZWNrID0gdGhpcy5zZWxlY3RLZXlcbiAgICAgICAgICAgID8gaXNFcXVhbChcbiAgICAgICAgICAgICAgICB0aGlzLmdldFZhbHVlKG9wdGlvbilbdGhpcy5zZWxlY3RLZXldLFxuICAgICAgICAgICAgICAgIChvYmogJiYgb2JqW3RoaXMuc2VsZWN0S2V5XSkgfHwgbnVsbFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IGlzRXF1YWwodGhpcy5nZXRWYWx1ZShvcHRpb24pLCBvYmopO1xuICAgICAgICAgIGlmIChlcXVhbGl0eUNoZWNrKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gdGhpcy5nZXRWYWx1ZShvcHRpb24pO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVsID0gdGhpcy5hc3luY0xhYmVsXG4gICAgICAgICAgICA/IGF3YWl0IHRoaXMuYXN5bmNMYWJlbChvcHRpb24pIDogdGhpcy5nZXRPcHRpb25MYWJlbChvcHRpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9uIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gb2JqO1xuICAgICAgaWYodGhpcy5hc3luY0xhYmVsKXtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVsID0gYXdhaXQgdGhpcy5hc3luY0xhYmVsKG9iaik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5vcHRpb25zLmZpbmQob3B0aW9uID0+IHRoaXMuc2VsZWN0S2V5PyBpc0VxdWFsKHRoaXMuZ2V0VmFsdWUob3B0aW9uKVt0aGlzLnNlbGVjdEtleV0sKG9iaiAmJiBvYmpbdGhpcy5zZWxlY3RLZXldKSB8fCBudWxsKTogaXNFcXVhbCh0aGlzLmdldFZhbHVlKG9wdGlvbiksIG9iaikpO1xuICAgICAgICBpZihpdGVtKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVsID0gdGhpcy5nZXRPcHRpb25MYWJlbChpdGVtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSBvYmo7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbCA9IHRoaXMuYXN5bmNMYWJlbFxuICAgICAgLy8gICA/IGF3YWl0IHRoaXMuYXN5bmNMYWJlbChvYmopXG4gICAgICAvLyAgIDogdGhpcy5nZXRPcHRpb25MYWJlbChvYmopO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9uIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gW107XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gW107XG4gICAgICBpZiAoIXRoaXMuZ3JvdXAgJiYgIXRoaXMubGF6eUxvYWQpIHtcbiAgICAgICAgZm9yIChsZXQgb3B0aW9uIG9mIHRoaXMub3B0aW9ucykge1xuICAgICAgICAgIGZvciAobGV0IG9iamVjdCBvZiBvYmopIHtcbiAgICAgICAgICAgIGNvbnN0IGVxdWFsaXR5Q2hlY2sgPSB0aGlzLnNlbGVjdEtleVxuICAgICAgICAgICAgICA/IGlzRXF1YWwoXG4gICAgICAgICAgICAgICAgICB0aGlzLmdldFZhbHVlKG9wdGlvbilbdGhpcy5zZWxlY3RLZXldLFxuICAgICAgICAgICAgICAgICAgb2JqZWN0W3RoaXMuc2VsZWN0S2V5XVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBpc0VxdWFsKHRoaXMuZ2V0VmFsdWUob3B0aW9uKSwgb2JqZWN0KTtcbiAgICAgICAgICAgIGlmIChlcXVhbGl0eUNoZWNrKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLnB1c2godGhpcy5nZXRWYWx1ZShvcHRpb24pKTtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscy5wdXNoKHRoaXMuYXN5bmNMYWJlbFxuICAgICAgICAgICAgICAgID8gYXdhaXQgdGhpcy5hc3luY0xhYmVsKG9iamVjdCkgOnRoaXMuZ2V0T3B0aW9uTGFiZWwob3B0aW9uKSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyB2YWx1ZTogdGhpcy5zZWxlY3RlZE9wdGlvbnMgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gb2JqO1xuICAgICAgZm9yIChsZXQgb2JqZWN0IG9mIG9iaikge1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzLnB1c2goXG4gICAgICAgICAgdGhpcy5hc3luY0xhYmVsXG4gICAgICAgICAgICA/IGF3YWl0IHRoaXMuYXN5bmNMYWJlbChvYmplY3QpXG4gICAgICAgICAgICA6IHRoaXMuZ2V0T3B0aW9uTGFiZWwob2JqZWN0KVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9ucyB9KTtcbiAgICB9XG4gIH1cblxuICBnZXRPcHRpb25Gcm9tVmFsdWUodmFsdWU6IGFueSk6IGFueSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvblZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5ncm91cCA/IHZhbHVlLnZhbHVlIDogdmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5ncm91cFxuICAgICAgPyB0aGlzLm9wdGlvbnMuZmluZEluZGV4KFxuICAgICAgICAgICh4KSA9PlxuICAgICAgICAgICAgeC52YWx1ZVt0aGlzLm9wdGlvblZhbHVlIV0gJiYgeC52YWx1ZVt0aGlzLm9wdGlvblZhbHVlIV0gPT0gdmFsdWVcbiAgICAgICAgKVxuICAgICAgOiB0aGlzLm9wdGlvbnMuZmluZEluZGV4KFxuICAgICAgICAgICh4KSA9PiB4W3RoaXMub3B0aW9uVmFsdWUhXSAmJiB4W3RoaXMub3B0aW9uVmFsdWUhXSA9PSB2YWx1ZVxuICAgICAgICApO1xuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwID8gdmFsdWUudmFsdWUgOiB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uc1tpbmRleF07XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uSXRlbUNoYW5nZSA9IGZuO1xuICB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIGdldFZhbHVlKGl0ZW06IGFueSk6IGFueSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvblZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5ncm91cCA/IGl0ZW0udmFsdWUgOiBpdGVtO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ncm91cCA/IGl0ZW0udmFsdWVbdGhpcy5vcHRpb25WYWx1ZV0gOiBpdGVtW3RoaXMub3B0aW9uVmFsdWVdO1xuICB9XG4gIGdldE9wdGlvbkxhYmVsKGl0ZW06IGFueSk6IGFueSB7XG4gICAgaWYgKHRoaXMuZ3JvdXApIHtcbiAgICAgIHJldHVybiBpdGVtLmxhYmVsO1xuICAgIH1cbiAgICBpZiAoIXRoaXMub3B0aW9uTGFiZWwpIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cbiAgICByZXR1cm4gdHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnID8gaXRlbSA6IGl0ZW1bdGhpcy5vcHRpb25MYWJlbF07XG4gIH1cblxuICBwcml2YXRlIGlzRHJvcGRvd25NZW51SXRlbVdyYXBwZXJBcnJheSh2YWx1ZTogYW55W10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiZcbiAgICAgIHZhbHVlLmV2ZXJ5KChpdGVtKSA9PiB0aGlzLmlzRHJvcGRvd25NZW51SXRlbVdyYXBwZXIoaXRlbSkpXG4gICAgKTtcbiAgfVxuXG4gIC8vIFR5cGUgZ3VhcmQgZnVuY3Rpb24gdG8gY2hlY2sgaWYgYW4gb2JqZWN0IGlzIG9mIHR5cGUgRHJvcGRvd25NZW51SXRlbVxuICBwcml2YXRlIGlzRHJvcGRvd25NZW51SXRlbVdyYXBwZXIoaXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICdleHBhbmRlZCcgaW4gaXRlbTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgb25DbGlja091dHNpZGUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlzRXhwYW5kZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgIXRoaXMuZHJvcGRvd25Db250YWluZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpICYmXG4gICAgICB0aGlzLmlzRXhwYW5kZWQgJiZcbiAgICAgIHRoaXMuZHJvcGRvd25FeHBhbnNpb24gJiZcbiAgICAgICF0aGlzLmRyb3Bkb3duRXhwYW5zaW9uLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxuICAgICkge1xuICAgICAgdGhpcy5pc0V4cGFuZGVkID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2ICNkcm9wZG93bkNvbnRhaW5lciBbbmdDbGFzc109XCJzdHlsZUNsYXNzXCIgW3N0eWxlLndpZHRoXT1cIndpZHRoXCIgY2xhc3M9XCJkcm9wLWRvd25cIj5cbiAgPGRpdlxuICAgIFtuZ0NsYXNzXT1cInsncmlnaHQtZXJyb3InOiBlcnJvclBvc2l0aW9uID09ICdyaWdodCcsICdsZWZ0LWVycm9yJzogZXJyb3JQb3NpdGlvbiA9PSAnbGVmdCcsICd0b3AtZXJyb3InOiBlcnJvclBvc2l0aW9uID09ICd0b3AnfVwiXG4gICAgY2xhc3M9XCJkcm9wLWRvd24taW5wdXQtd3JhcHBlclwiPlxuICAgIDxkaXYgKGNsaWNrKT1cIm9uRHJvcGRvd25DbGljaygkZXZlbnQpXCIgY2RrT3ZlcmxheU9yaWdpbiAjdHJpZ2dlcj1cImNka092ZXJsYXlPcmlnaW5cIiBbY2xhc3MuZm9jdXNlZF09XCJpc0ZvY3VzZWRcIlxuICAgICAgW25nQ2xhc3NdPVwieyduZy1pbnZhbGlkJzogaXNJbnZhbGlkLCAnZGlzYWJsZWQnOiBkaXNhYmxlZH1cIiAoZm9jdXMpPVwib25Gb2N1cygpXCIgKGJsdXIpPVwib25CbHVyKClcIiB0YWJpbmRleD1cIjBcIlxuICAgICAgY2xhc3M9XCJkcm9wLWRvd24taW5wdXQgdmVyYmVuLWlucHV0IGZsZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkcm9wLWRvd24tbWFpbi1jb250ZW50XCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cIihzZWxlY3RlZEl0ZW1UZW1wbGF0ZSAmJiBzZWxlY3RlZE9wdGlvbikgfHwgKHNlbGVjdGVkSXRlbVRlbXBsYXRlICYmIHNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwKTsgZWxzZSBkZWZhdWx0SXRlbVwiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbXVsdGlzZWxlY3RcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWxlY3RlZEl0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHNlbGVjdGVkT3B0aW9uIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwibXVsdGlzZWxlY3RcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWxlY3RlZEl0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHNlbGVjdGVkT3B0aW9ucyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEl0ZW0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFtdWx0aXNlbGVjdFwiIGNsYXNzPVwiZGVmYXVsdC1pdGVtIGZsZXhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1sYWJlbCBwbGFjZS1ob2xkZXJcIiAqbmdJZj1cIiF0aGlzLnNlbGVjdGVkT3B0aW9uXCI+e3twbGFjZWhvbGRlcn19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhpcy5zZWxlY3RlZE9wdGlvblwiIGNsYXNzPVwiaXRlbS1sYWJlbCBkcm9wZG93bi1sYWJlbFwiPlxuICAgICAgICAgICAgICB7e3RoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm11bHRpc2VsZWN0XCIgY2xhc3M9XCJkZWZhdWx0LWl0ZW0gbXVsdGktc2VsZWN0IGZsZXhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1sYWJlbCBwbGFjZS1ob2xkZXJcIiAqbmdJZj1cInRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA9PSAwXCI+e3twbGFjZWhvbGRlcn19PC9kaXY+XG4gICAgICAgICAgICA8dmVyYmVuLXRvb2x0aXAgY3VzdG9tQ2xhc3M9XCJjdXN0b20tdG9vbHRpcC13aWR0aFwiIGJvcmRlcj1cIjFweCBzb2xpZCAjMzM0MTU1XCIgYmFja2dyb3VuZENvbG9yPVwid2hpdGVcIlxuICAgICAgICAgICAgICBbdG9vbHRpcENvbnRlbnRdPVwibXVsdGlzZWxlY3RUb29sdGlwXCI+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwXCIgY2xhc3M9XCJpdGVtLWxhYmVsIGRyb3Bkb3duLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXkgPT0gJ2NoaXAnXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcy1jb250YWluZXItdHdvIGNoaXBcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkT3B0aW9uTGFiZWxzOyBpbmRleCBhcyBpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtLWNoaXAgbXVsdGktc2VsZWN0IGZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIChjbGljayk9XCJvbk11bHRpc2VsZWN0SXRlbUNsb3NlZChpLCAkZXZlbnQpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCJcbiAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiY2xvc2UtY2lyY2xlLWZ1bGxcIiBbd2lkdGhdPVwiMTVcIiBbaGVpZ2h0XT1cIjE1XCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxzdmcgKGNsaWNrKT1cIm9uTXVsdGlzZWxlY3RJdGVtQ2xvc2VkKGksICRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIlxuICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTAgMTBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk01LjAwMDY1IDkuMzMzMzNDNy4zMDE4NCA5LjMzMzMzIDkuMTY3MzIgNy40Njc4NSA5LjE2NzMyIDUuMTY2NjdDOS4xNjczMiAyLjg2NTQ4IDcuMzAxODQgMSA1LjAwMDY1IDFDMi42OTk0NiAxIDAuODMzOTg0IDIuODY1NDggMC44MzM5ODQgNS4xNjY2N0MwLjgzMzk4NCA3LjQ2Nzg1IDIuNjk5NDYgOS4zMzMzMyA1LjAwMDY1IDkuMzMzMzNaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjI1IDMuOTE3OTdMMy43NSA2LjQxNzk3XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zLjc1IDMuOTE3OTdMNi4yNSA2LjQxNzk3XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPiAtLT5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGlzcGxheSAhPSAnY2hpcCdcIiBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW1zLWNvbnRhaW5lci10d28gbm9ybWFsXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZE9wdGlvbkxhYmVsczsgaW5kZXggYXMgaVwiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICB7e2kgIT09IHNlbGVjdGVkT3B0aW9uTGFiZWxzLmxlbmd0aCAtIDE/IGl0ZW0gKyAnLCAnOml0ZW19fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdmVyYmVuLXRvb2x0aXA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI211bHRpc2VsZWN0VG9vbHRpcD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm11bHRpLXNlbGVjdC1mdWxsLXZpZXdcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoID4gMFwiIGNsYXNzPVwiaXRlbS1sYWJlbCBkcm9wZG93bi1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXkgPT0gJ2NoaXAnXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcy1jb250YWluZXItdHdvLXRvb2x0aXAgY2hpcFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZE9wdGlvbkxhYmVsczsgaW5kZXggYXMgaVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtLWNoaXAgbXVsdGktc2VsZWN0IGZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2l0ZW19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8dmVyYmVuLXN2ZyAoY2xpY2spPVwib25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaSwgJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiY2xvc2UtY2lyY2xlLWZ1bGxcIiBbd2lkdGhdPVwiMTVcIiBbaGVpZ2h0XT1cIjE1XCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHN2ZyAoY2xpY2spPVwib25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaSwgJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEwIDEwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTUuMDAwNjUgOS4zMzMzM0M3LjMwMTg0IDkuMzMzMzMgOS4xNjczMiA3LjQ2Nzg1IDkuMTY3MzIgNS4xNjY2N0M5LjE2NzMyIDIuODY1NDggNy4zMDE4NCAxIDUuMDAwNjUgMUMyLjY5OTQ2IDEgMC44MzM5ODQgMi44NjU0OCAwLjgzMzk4NCA1LjE2NjY3QzAuODMzOTg0IDcuNDY3ODUgMi42OTk0NiA5LjMzMzMzIDUuMDAwNjUgOS4zMzMzM1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjI1IDMuOTE3OTdMMy43NSA2LjQxNzk3XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMy43NSAzLjkxNzk3TDYuMjUgNi40MTc5N1wiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zdmc+IC0tPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkaXNwbGF5ICE9ICdjaGlwJ1wiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbXMtY29udGFpbmVyLXR3by10b29sdGlwLW5vcm1hbFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZE9wdGlvbkxhYmVsczsgaW5kZXggYXMgaVwiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7aSAhPT0gc2VsZWN0ZWRPcHRpb25MYWJlbHMubGVuZ3RoIC0gMT8gaXRlbSArICcsICc6aXRlbX19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzcGFuXG4gICAgICAgICpuZ0lmPVwiKHNob3dDbGVhciAmJiB0aGlzLnNlbGVjdGVkT3B0aW9uICYmICFtdWx0aXNlbGVjdCkgfHwgKHNob3dDbGVhciAmJiB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwICYmIG11bHRpc2VsZWN0KVwiXG4gICAgICAgIChjbGljayk9XCJ0aGlzLmNsZWFyU2VsZWN0aW9uKCRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIGNsYXNzPVwiZHJvcC1kb3duLWljb24taXRlbSBkcm9wLWRvd24tY2xlYXItYnV0dG9uXCI+XG4gICAgICAgIDx2ZXJiZW4tc3ZnIGljb249XCJjbG9zZS1uby1jaXJjbGVcIiBzdHJva2U9XCIjOTRhM2I4XCIgW3dpZHRoXT1cIjEzXCIgW2hlaWdodF09XCIxM1wiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgPCEtLSA8c3ZnIHdpZHRoPVwiOVwiIGhlaWdodD1cIjlcIiB2aWV3Qm94PVwiMCAwIDkgOVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMC44NDM3NSAwLjg0Mzc1TDguMTU2MjUgOC4xNTYyNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMC44NDM3NSA4LjE1NjI1TDguMTU2MjUgMC44NDM3NVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImRyb3AtZG93bi1pY29uLWl0ZW0gZHJvcC1kb3duLWV4cGFuZC1idXR0b25cIj5cbiAgICAgICAgPHZlcmJlbi1zdmcgaWNvbj1cImNoZXZyb24tZG93blwiIGZpbGw9XCIjOTRhM2I4XCIgW3dpZHRoXT1cIjE1XCIgW2hlaWdodF09XCI4XCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICA8IS0tIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjdcIiB2aWV3Qm94PVwiMCAwIDEyIDdcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZD1cIk02LjAwNTA3IDQuODgwMjdDNi4yMDIwNSA0LjYyNzc1IDYuMzA2ODMgNC40NjIyIDYuNDQwOTUgNC4zMjcwNEM3Ljc0MzM0IDMuMDE3MzEgOS4wNTIwMiAxLjcxMzg3IDEwLjM1NzYgMC40MDYyNDJDMTAuNTcxMyAwLjE5MjQ5NSAxMC43ODgyIDAuMDA5MTMzNjcgMTEuMTE5MyAwLjAxMDE4MTRDMTEuNDY5MiAwLjAxMTIyOTIgMTEuNzIyOCAwLjE1NzkyIDExLjg4ODQgMC40NTY1MzdDMTIuMDU3IDAuNzYwMzk0IDEyLjAzMDkgMS4wNjExMSAxMS44MzQ5IDEuMzQyOTZDMTEuNzY1OCAxLjQ0MjUgMTEuNjc2NyAxLjUyNzM3IDExLjU5MDggMS42MTQzM0M5Ljk4ODczIDMuMjE2MzkgOC4zNzMwNSA0LjgwNDgzIDYuNzkzIDYuNDI3ODRDNi4yOTExMSA2Ljk0MzM1IDUuNjg3NTkgNi45MjM0NCA1LjIxMzk5IDYuNDM4MzJDMy42MzE4NCA0LjgxNzQgMi4wMTgyNiAzLjIyNjg3IDAuNDE0MTA5IDEuNjI2OTFDMC4xMTY1MzkgMS4zMjkzNCAtMC4xMTYwNjcgMS4wMTkyIDAuMDYyMDU2MSAwLjU2NTUwN0MwLjI3MTYxMiAwLjAzMTEzOSAwLjg4MzUxOSAtMC4xNjc5NDEgMS4zNTUwMiAwLjE1NzkxOUMxLjQ5NjQ3IDAuMjU1MzYzIDEuNjE1OTIgMC4zODczODUgMS43Mzk1NSAwLjUwOTk3NUMzLjAyMjA0IDEuNzkwMzYgNC4zMDQ1MiAzLjA3MDc1IDUuNTgzODYgNC4zNTUzM0M1LjcwNjQ1IDQuNDc3OTIgNS44MDI4NCA0LjYyNjcxIDYuMDA2MTEgNC44ODEzMkw2LjAwNTA3IDQuODgwMjdaXCJcbiAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIiAvPlxuICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInRoaXMuaXNJbnZhbGlkICYmIHRoaXMuaW52YWxpZE1lc3NhZ2VcIiBjbGFzcz1cInZlcmJlbi1lcnJvci1tZXNzYWdlIGVycm9yLW1lc3NhZ2VcIj57e2ludmFsaWRNZXNzYWdlfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSBjZGtDb25uZWN0ZWRPdmVybGF5IFtjZGtDb25uZWN0ZWRPdmVybGF5V2lkdGhdPVwiZHJvcGRvd25Db250YWluZXIub2Zmc2V0V2lkdGhcIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5TG9ja1Bvc2l0aW9uXT1cImZhbHNlXCIgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiIFtjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25zXT1cIltcbiAgICB7XG4gICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgIG92ZXJsYXlZOiAndG9wJ1xuICAgIH0sXG4gICAge1xuICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICBvdmVybGF5WTogJ2JvdHRvbSdcbiAgICB9XG4gIF1cIiBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiaXNFeHBhbmRlZFwiIChkZXRhY2gpPVwiaXNFeHBhbmRlZCA9IGZhbHNlXCI+XG4gICAgPGRpdiAjZHJvcGRvd25FeHBhbnNpb24gY2xhc3M9XCJkcm9wLWRvd24tbWVudS1pdGVtLXdyYXBwZXJcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJtdWx0aXNlbGVjdCAmJiB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJkaXNwbGF5ID09ICdjaGlwJ1wiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbXMtY29udGFpbmVyIGNoaXAgZmxleFwiPlxuICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkT3B0aW9uTGFiZWxzOyBpbmRleCBhcyBpXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtLWNoaXAgZmxleFwiPlxuICAgICAgICAgICAgPHNwYW4+e3tpdGVtfX08L3NwYW4+XG4gICAgICAgICAgICA8dmVyYmVuLXN2ZyAoY2xpY2spPVwib25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaSwgJGV2ZW50KVwiIGljb249XCJjbG9zZS1jaXJjbGUtZnVsbFwiIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgICA8IS0tIDxzdmcgKGNsaWNrKT1cIm9uTXVsdGlzZWxlY3RJdGVtQ2xvc2VkKGksICRldmVudClcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiB2aWV3Qm94PVwiMCAwIDEwIDEwXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk01LjAwMDY1IDkuMzMzMzNDNy4zMDE4NCA5LjMzMzMzIDkuMTY3MzIgNy40Njc4NSA5LjE2NzMyIDUuMTY2NjdDOS4xNjczMiAyLjg2NTQ4IDcuMzAxODQgMSA1LjAwMDY1IDFDMi42OTk0NiAxIDAuODMzOTg0IDIuODY1NDggMC44MzM5ODQgNS4xNjY2N0MwLjgzMzk4NCA3LjQ2Nzg1IDIuNjk5NDYgOS4zMzMzMyA1LjAwMDY1IDkuMzMzMzNaXCJcbiAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMjUgMy45MTc5N0wzLjc1IDYuNDE3OTdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMuNzUgMy45MTc5N0w2LjI1IDYuNDE3OTdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgPC9zdmc+IC0tPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJkaXNwbGF5ICE9ICdjaGlwJ1wiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbXMtY29udGFpbmVyIG5vcm1hbFwiPlxuICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkT3B0aW9uTGFiZWxzOyBpbmRleCBhcyBpXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtXCI+XG4gICAgICAgICAgICB7e2kgIT09IHNlbGVjdGVkT3B0aW9uTGFiZWxzLmxlbmd0aCAtIDE/IGl0ZW0gKyAnLCAnOml0ZW19fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJhbGxvd1NlbGVjdEFsbCB8fCBmaWx0ZXJcIiBjbGFzcz1cImFjdGlvbnMtc2VjdGlvbiBmbGV4XCI+XG4gICAgICAgIDxpbnB1dCAqbmdJZj1cImFsbG93U2VsZWN0QWxsXCIgKGNsaWNrKT1cIm9uU2VsZWN0QWxsKCRldmVudClcIiB0eXBlPVwiY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkQWxsXCJcbiAgICAgICAgICBjbGFzcz1cImN1c3RvbS1jaGVja2JveFwiIC8+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0LWFsbC1jYXB0aW9uXCIgKm5nSWY9XCJhbGxvd1NlbGVjdEFsbCAmJiAhZmlsdGVyXCI+U2VsZWN0IEFsbDwvc3Bhbj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlclwiIFtuZ0NsYXNzXT1cInsnZm9jdXNlZCc6IGlzSW5wdXRGb2N1c2VkfVwiIHRhYmluZGV4PVwiMFwiIChmb2N1cyk9XCJvblNlYXJjaEZvY3VzKClcIlxuICAgICAgICAgIChibHVyKT1cIm9uU2VhcmNoQmx1cigpXCIgY2xhc3M9XCJzZWFyY2gtc2VjdGlvbiBmbGV4XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWFyY2gtaWNvbiBmbGV4XCI+XG4gICAgICAgICAgICA8dmVyYmVuLXN2ZyBpY29uPVwic2VhcmNoXCIgc3Ryb2tlPVwiIzY0NzQ4YlwiIFt3aWR0aF09XCIxNVwiIFtoZWlnaHRdPVwiMTVcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgICA8IS0tIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiOVwiIHI9XCI4XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGZpbGw9XCJub25lXCI+PC9jaXJjbGU+XG4gICAgICAgICAgICAgIDxsaW5lIHgxPVwiMTRcIiB5MT1cIjE0XCIgeDI9XCIxOVwiIHkyPVwiMTlcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCI+PC9saW5lPlxuICAgICAgICAgICAgPC9zdmc+IC0tPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInRoaXMuc2VsZWN0ZWRDb250ZXh0c1t0aGlzLnNlbGVjdGVkQ29udGV4dHMubGVuZ3RoIC0gMV1cIiBjbGFzcz1cInNlYXJjaC1jb250ZXh0XCI+XG4gICAgICAgICAgICB7e3RoaXMuZ2V0T3B0aW9uTGFiZWwodGhpcy5zZWxlY3RlZENvbnRleHRzW3RoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggLSAxXSl9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGlucHV0IChpbnB1dCk9XCJvblNlYXJjaCgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hDb250ZXh0XCIgKGZvY3VzKT1cIm9uSW5wdXRGb2N1cygpXCJcbiAgICAgICAgICAgICAgKGJsdXIpPVwib25JbnB1dEJsdXIoKVwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCIgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cInNob3dIb3Jpem9udGFsTGluZVwiIGNsYXNzPVwiY29sb3JlZC11bmRlcmxpbmUtc2VjdGlvblwiPlxuICAgICAgICA8aHIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiaG9yaXpvbnRhbExpbmVDb2xvclwiIGNsYXNzPVwiY29sb3JlZC11bmRlcmxpbmVcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHJvcC1kb3duLW1lbnUtaXRlbVwiPlxuICAgICAgICA8ZHJvcC1kb3duLWl0ZW0gW2l0ZW1UZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGVcIiBbZ3JvdXBUZW1wbGF0ZV09XCJncm91cFRlbXBsYXRlXCIgW2FjdGl2ZUl0ZW1dPVwic2VsZWN0ZWRPcHRpb25cIlxuICAgICAgICAgIFthY3RpdmVJdGVtc109XCJzZWxlY3RlZE9wdGlvbnNcIiBbbXVsdGlzZWxlY3RdPVwibXVsdGlzZWxlY3RcIiBbb3B0aW9uVmFsdWVdPVwib3B0aW9uVmFsdWVcIlxuICAgICAgICAgIFtvcHRpb25MYWJlbF09XCJvcHRpb25MYWJlbFwiIFtvcHRpb25TdWJMYWJlbF09XCJvcHRpb25TdWJMYWJlbFwiIFtzZWxlY3RLZXldPVwic2VsZWN0S2V5XCJcbiAgICAgICAgICBbbG9hZE1vcmVDYXB0aW9uXT1cImxvYWRNb3JlQ2FwdGlvblwiIFtvcHRpb25zXT1cIm9wdGlvbnNcIiBbZ3JvdXBdPVwiZ3JvdXBcIiBbb25FeHBhbmRdPVwiZXhwYW5kTWVudS5iaW5kKHRoaXMpXCJcbiAgICAgICAgICBbb25Mb2FkTW9yZV09XCJsb2FkTW9yZU1lbnVJdGVtcy5iaW5kKHRoaXMpXCIgW29uU2VsZWN0XT1cIm9uU2VsZWN0LmJpbmQodGhpcylcIj48L2Ryb3AtZG93bi1pdGVtPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwibGF6eUxvYWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VlLW1vcmUtY29udGFpbmVyIGZsZXgganVzdGlmeS1lbmRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VlLW1vcmUtY2FwdGlvblwiIChjbGljayk9XCJsb2FkTW9yZSgpXCI+e3tsb2FkTW9yZUNhcHRpb259fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmdcIiBjbGFzcz1cImxvYWRpbmctb3ZlcmxheVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkZXJcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
|
|
817
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZHJvcC1kb3duL2Ryb3AtZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Ryb3AtZG93bi9kcm9wLWRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBRU4sSUFBSSxFQUVKLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF3QixXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7OztBQXlCMUQsTUFBTSxPQUFPLGlCQUFpQjtJQXFHWTtJQWxHeEMsV0FBVztJQUNILFFBQVEsR0FBVSxFQUFFLENBQUMsQ0FBQyxnQ0FBZ0M7SUFFdEQsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUMxQixTQUFTO0lBQ1QsSUFDSSxPQUFPLENBQUMsS0FBWTtRQUN0QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksSUFBSSxDQUFDLDhCQUE4QixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLG9DQUFvQztZQUN2RixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN4QixDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUMzQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsdUNBQXVDO0lBQy9ELENBQUM7SUFFUSxLQUFLLEdBQVcsT0FBTyxDQUFDO0lBQ3hCLGtCQUFrQixHQUFZLElBQUksQ0FBQztJQUNuQyxtQkFBbUIsR0FBVyx3QkFBd0IsQ0FBQztJQUN2RCxXQUFXLENBQVU7SUFDckIsY0FBYyxDQUFVO0lBQ3hCLFdBQVcsQ0FBVTtJQUNyQixXQUFXLENBQVU7SUFDckIsY0FBYyxDQUFVO0lBQ3hCLGFBQWEsR0FBVyxFQUFFLENBQUM7SUFDM0IsZUFBZSxHQUFXLFVBQVUsQ0FBQztJQUNyQyxPQUFPLEdBQXVCLE1BQU0sQ0FBQztJQUNyQyxTQUFTLEdBQVksS0FBSyxDQUFDO0lBQzNCLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDMUIsU0FBUyxHQUFrQixJQUFJLENBQUM7SUFDaEMsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUN4QixLQUFLLEdBQVksS0FBSyxDQUFDO0lBQ3ZCLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFDN0IsTUFBTSxHQUFZLEtBQUssQ0FBQztJQUN4QixnQkFBZ0IsR0FBWSxLQUFLLENBQUM7SUFDbEMsUUFBUSxDQUFVO0lBQ2xCLFlBQVksR0FBVyxHQUFHLENBQUM7SUFDM0IsT0FBTyxHQUFXLENBQUMsQ0FBQztJQUNwQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDMUIsSUFBSSxDQUFrRDtJQUN0RCxVQUFVLENBQTRDO0lBQ3RELE1BQU0sQ0FBNkQ7SUFFNUUsVUFBVTtJQUNBLGFBQWEsR0FBd0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUN4RCxRQUFRLEdBQXNDLElBQUksWUFBWSxFQUFFLENBQUM7SUFDakUsT0FBTyxHQUF3QixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ2xELE9BQU8sR0FBd0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUU1RCxZQUFZLEdBQXlCLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUM5QyxTQUFTLEdBQWUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQ2pDLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDM0IsV0FBVyxHQUFZLEtBQUssQ0FBQztJQUU3QixZQUFZO0lBRVosaUJBQWlCLENBQWM7SUFFL0IsaUJBQWlCLENBQWM7SUFDSyxTQUFTLENBQWdDO0lBRS9DLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDaEQsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUV2QixvQkFBb0IsR0FBNEIsSUFBSSxDQUFDO0lBQ3JELFlBQVksR0FBNEIsSUFBSSxDQUFDLENBQUMsc0NBQXNDO0lBQ3BGLGFBQWEsR0FBNEIsSUFBSSxDQUFDO0lBRTlDLFdBQVc7SUFDWCxVQUFVLEdBQVksS0FBSyxDQUFDO0lBQzVCLFNBQVMsR0FBc0IsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBQ3ZELGdCQUFnQixHQUFZLEtBQUssQ0FBQztJQUNsQyxjQUFjLENBQU07SUFDcEIsZUFBZSxHQUFVLEVBQUUsQ0FBQztJQUM1QixtQkFBbUIsQ0FBTTtJQUN6QixvQkFBb0IsR0FBVSxFQUFFLENBQUM7SUFDakMsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUMzQixXQUFXLEdBQVUsRUFBRSxDQUFDO0lBQ3hCLGFBQWEsR0FBc0IsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBQzNELGdCQUFnQixHQUFVLEVBQUUsQ0FBQztJQUM3QixhQUFhLEdBQWEsRUFBRSxDQUFDO0lBQzdCLFdBQVcsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO0lBQ3BDLGFBQWEsR0FBVyxFQUFFLENBQUM7SUFDM0IsY0FBYyxHQUFZLEtBQUssQ0FBQztJQUNoQyxXQUFXLEdBQVksS0FBSyxDQUFDO0lBRTdCLFlBQXdDLFNBQW9CO1FBQXBCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDMUQsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLENBQUMsOENBQThDO1lBQ25GLElBQUksQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNsRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTztvQkFDckMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPO29CQUNoRCxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ1osQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUNELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztnQkFDN0IsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztvQkFDckIsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQzlCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDOzRCQUNsQixTQUFTLEdBQUcsS0FBSyxDQUFDOzRCQUNsQixNQUFNO3dCQUNSLENBQUM7b0JBQ0gsQ0FBQztvQkFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQztnQkFDbEMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxXQUFXO2lCQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsb0NBQW9DO2lCQUMxRSxTQUFTLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFO2dCQUM5QixJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNyQyxPQUFPO2dCQUNULENBQUM7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNyQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUNOLENBQUM7b0JBQzdCLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7d0JBQ2xDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO3dCQUN0QixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzt3QkFDN0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7d0JBQ3ZCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7NEJBQ2xDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzs0QkFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7NEJBQzlDLElBQUksQ0FBQyxLQUFLO2dDQUNSLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBNkIsQ0FBQztnQ0FDN0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFDNUMsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQzt3QkFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3QkFDdkIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7d0JBQzdELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO3dCQUN2QixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDOzRCQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQzs0QkFDakQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7NEJBQ3RCLElBQUksQ0FBQyxLQUFLO2dDQUNSLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBNkIsQ0FBQztnQ0FDN0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFDNUMsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDSCxDQUFDO0lBQ0Qsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsRUFBRTtZQUMzQyxJQUFJLGlCQUFpQixDQUFDLFNBQVMsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQztZQUN6RCxDQUFDO1lBQ0QsSUFBSSxpQkFBaUIsQ0FBQyxTQUFTLEtBQUssTUFBTSxFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxZQUFZLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxDQUFDO1lBQ2pELENBQUM7WUFDRCxJQUFJLGlCQUFpQixDQUFDLFNBQVMsS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLENBQUM7WUFDbEQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVzQixPQUFPO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFcUIsTUFBTTtRQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFVO1FBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDdEMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQ04sQ0FBQztZQUM3QixJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUMvQyxJQUFJLENBQUMsS0FBSztvQkFDUixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQTZCLENBQUM7b0JBQzdELENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzFDLE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3QkFDaEIsT0FBTztvQkFDVCxDQUFDO29CQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQzVCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDSixPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVMsQ0FBQyxJQUFJLFFBQVE7d0JBQzFDLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUyxDQUFDLENBQUMsQ0FDNUQsQ0FBQztvQkFDRixJQUFJLENBQUMsS0FBSzt3QkFDUixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQTZCLENBQUM7d0JBQzdELENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzVDLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUNoQixPQUFPO29CQUNULENBQUM7b0JBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FDM0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNKLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBSSxRQUFRO3dCQUMxQixJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FDNUMsQ0FBQztvQkFDRixJQUFJLENBQUMsS0FBSzt3QkFDUixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQTZCLENBQUM7d0JBQzdELENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzVDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDMUIsQ0FBQztZQUNELElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxLQUFLO29CQUNSLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBNkIsQ0FBQztvQkFDN0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQ3pCLE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FDckMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNKLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFTLENBQUMsSUFBSSxRQUFRO3dCQUNwQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUyxDQUFDLENBQUMsQ0FDdEQsQ0FBQztvQkFDRixJQUFJLENBQUMsS0FBSzt3QkFDUixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQTZCLENBQUM7d0JBQzdELENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzVDLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUNyQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksUUFBUSxJQUFJLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ25FLENBQUM7b0JBQ0YsSUFBSSxDQUFDLEtBQUs7d0JBQ1IsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUE2QixDQUFDO3dCQUM3RCxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM1QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQVk7UUFDMUIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsVUFBVSxDQUFDLFFBQW1DO1FBQzVDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDekMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6RCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNmLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUNkLElBQTZCLEVBQzdCLFFBQW1DO1FBRW5DLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hCLEtBQUssSUFBSSxFQUFFLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ2xELElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO3dCQUNoQixFQUFFLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQzt3QkFDcEIsRUFBRSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUN2QyxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDL0IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNoQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUMvQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFlBQVksS0FBSyxJQUFJLEVBQUUsQ0FBQzt3QkFDOUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQzt3QkFDcEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FDMUIsWUFBWSxFQUNaLGNBQWMsR0FBRyxZQUFZLENBQzlCLENBQUM7b0JBQ0osQ0FBQztvQkFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNqQyxJQUFJLFlBQVksSUFBSSxJQUFJLEVBQUUsQ0FBQzt3QkFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUM5QyxDQUFDO29CQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO2dCQUMxQixDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDckQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7b0JBQ3RCLElBQUksTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ2pELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO29CQUN2QixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDcEMsQ0FBQztvQkFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDOUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ2hCLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDbEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUNqRCxDQUFDO29CQUNELElBQUksQ0FBQyxLQUFLO3dCQUNSLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBNkIsQ0FBQzt3QkFDN0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDNUMsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDaEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDbEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztvQkFDcEQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDZixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxjQUFjLEdBQUcsS0FBSyxDQUFDLENBQUM7b0JBQzlELENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDdkIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ2hCLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDakQsQ0FBQztnQkFDSCxDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNoQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUNsQyxJQUFJLENBQUMsYUFBYTs0QkFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDcEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUM5RCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBNkI7UUFDbkQsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2xELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxNQUFNLEdBQ1IsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU07Z0JBQ3JDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ2xELENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3BDLENBQUM7WUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkQsS0FBSyxJQUFJLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkIsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQixJQUFJLGFBQWEsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUM5QyxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2xDLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDakQsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLENBQUMsS0FBSztnQkFDUixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQTZCLENBQUM7Z0JBQzdELENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUTtRQUNaLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNqRCxDQUFDO2dCQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFDL0IsQ0FBQztZQUNELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxNQUFNLEdBQ1IsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU07Z0JBQ3JDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ2xELENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNmLE1BQU0sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUMsQ0FBQztZQUNELElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3BDLENBQUM7WUFDRCxLQUFLLElBQUksSUFBSSxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hCLElBQUksYUFBYSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQzlDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNqRCxDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksQ0FBQyxLQUFLO2dCQUNSLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBNkIsQ0FBQztnQkFDN0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQXlCO1FBQzNDLE1BQU0sT0FBTyxHQUE4QixFQUFFLENBQUM7UUFDOUMsS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN2QixNQUFNLGFBQWEsR0FBNEI7Z0JBQzdDLEdBQUcsSUFBSTtnQkFDUCxTQUFTLEVBQUUsS0FBSztnQkFDaEIsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDM0QsYUFBYSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDL0QsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQ3BFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2FBQ3hFLENBQUM7WUFDRixPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVk7UUFDdEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDeEQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLENBQUM7WUFDRCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztZQUMvQixLQUFLLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUNqRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDOUQsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7WUFDL0IsS0FBSyxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2hDLEtBQUssSUFBSSxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUM5QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQy9DLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO3dCQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO29CQUM1RCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBWTtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7WUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVUsRUFBRSxLQUFZO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4QixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqRCxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDbkIsTUFBTSxrQkFBa0IsR0FBRztvQkFDekIsR0FBRyxJQUFJLENBQUMsZUFBZTtvQkFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7aUJBQ3JCLENBQUM7Z0JBQ0YsTUFBTSx1QkFBdUIsR0FBRztvQkFDOUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CO29CQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQztpQkFDM0IsQ0FBQztnQkFDRixJQUFJLENBQUMsZUFBZSxHQUFHLGtCQUFrQixDQUFDO2dCQUMxQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsdUJBQXVCLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO29CQUNqQixhQUFhLEVBQUUsS0FBSztvQkFDcEIsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlO2lCQUM1QixDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQ3pCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDckQsa0JBQWtCLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDckMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7Z0JBQy9ELHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxlQUFlLEdBQUcsa0JBQWtCLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyx1QkFBdUIsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7b0JBQ2pCLGFBQWEsRUFBRSxLQUFLO29CQUNwQixLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWU7aUJBQzVCLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELHVCQUF1QixDQUFDLEtBQWEsRUFBRSxLQUFZO1FBQ2pELE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNyRCxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQy9ELHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQztRQUMxQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsdUJBQXVCLENBQUM7UUFDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELHFCQUFxQixDQUFDLEtBQVU7UUFDOUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDckQsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDM0QsT0FBTyxDQUFDLENBQUM7WUFDWCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBUTtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDO2dCQUMxQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsR0FBRyxDQUFDO2dCQUMvQixPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7WUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xDLEtBQUssSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNoQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUzt3QkFDbEMsQ0FBQyxDQUFDLE9BQU8sQ0FDTCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFDckMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FDckM7d0JBQ0gsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUN4QyxJQUFJLGFBQWEsRUFBRSxDQUFDO3dCQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQzVDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsVUFBVTs0QkFDeEMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7NEJBQy9CLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUNoQyxNQUFNO29CQUNSLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRCxPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDO1lBQzFCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hELENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ3hDLElBQUksQ0FBQyxTQUFTO29CQUNaLENBQUMsQ0FBQyxPQUFPLENBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQ3JDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQ3JDO29CQUNILENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FDeEMsQ0FBQztnQkFDRixJQUFJLElBQUksRUFBRSxDQUFDO29CQUNULElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2RCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLG1CQUFtQixHQUFHLEdBQUcsQ0FBQztnQkFDakMsQ0FBQztZQUNILENBQUM7WUFDRCw2Q0FBNkM7WUFDN0MsaUNBQWlDO1lBQ2pDLGdDQUFnQztZQUNoQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztnQkFDL0IsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQyxLQUFLLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDaEMsS0FBSyxJQUFJLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQzt3QkFDdkIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVM7NEJBQ2xDLENBQUMsQ0FBQyxPQUFPLENBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQ3JDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQ3ZCOzRCQUNILENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQzt3QkFDM0MsSUFBSSxhQUFhLEVBQUUsQ0FBQzs0QkFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDOzRCQUNqRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUM1QixJQUFJLENBQUMsVUFBVTtnQ0FDYixDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztnQ0FDL0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQ2hDLENBQUM7NEJBQ0YsTUFBTTt3QkFDUixDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO2dCQUNwRCxPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDO1lBQzNCLEtBQUssSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQzVCLElBQUksQ0FBQyxVQUFVO29CQUNiLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO29CQUMvQixDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FDaEMsQ0FBQztZQUNKLENBQUM7WUFDRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFVO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDMUMsQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLO1lBQ3RCLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FDcEIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNKLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVksQ0FBQyxJQUFJLEtBQUssQ0FDcEU7WUFDSCxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQ3BCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBWSxDQUFDLElBQUksS0FBSyxDQUM3RCxDQUFDO1FBQ04sSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDZCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMxQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxnQkFBZ0IsQ0FBRSxVQUFtQjtRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVM7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN0QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN4QyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBQ0QsY0FBYyxDQUFDLElBQVM7UUFDdEIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDcEIsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRU8sOEJBQThCLENBQUMsS0FBWTtRQUNqRCxPQUFPLENBQ0wsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDcEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQzVELENBQUM7SUFDSixDQUFDO0lBRUQsd0VBQXdFO0lBQ2hFLHlCQUF5QixDQUFDLElBQVM7UUFDekMsT0FBTyxVQUFVLElBQUksSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFHRCxjQUFjLENBQUMsS0FBWTtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFDRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDNUQsSUFBSSxDQUFDLFVBQVU7WUFDZixJQUFJLENBQUMsaUJBQWlCO1lBQ3RCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUM1RCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7d0dBN3ZCVSxpQkFBaUI7NEZBQWpCLGlCQUFpQiwybENBMEVYLGlCQUFpQiw0UUMvSHBDLDYrWkFpTUEsNHBLRHRKSSxZQUFZLHFnQkFDWixxQkFBcUIsMlJBQ3JCLFlBQVksMHJDQUNaLFdBQVcsK3hCQUNYLFNBQVMsMktBQ1QsYUFBYTs7NEZBS0osaUJBQWlCO2tCQWQ3QixTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixxQkFBcUI7d0JBQ3JCLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxTQUFTO3dCQUNULGFBQWE7cUJBQ2Q7OzBCQXlHWSxRQUFROzswQkFBSSxJQUFJO3lDQTVGekIsT0FBTztzQkFEVixLQUFLO2dCQXNCRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUdJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBU1AsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFHaEQsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFYixTQUFTO3NCQUE1QyxlQUFlO3VCQUFDLGlCQUFpQjtnQkFFSixTQUFTO3NCQUF0QyxXQUFXO3VCQUFDLGVBQWU7Z0JBNkdMLE9BQU87c0JBQTdCLFlBQVk7dUJBQUMsT0FBTztnQkFJQyxNQUFNO3NCQUEzQixZQUFZO3VCQUFDLE1BQU07Z0JBb2pCcEIsY0FBYztzQkFEYixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTZWxmLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERyb3Bkb3duTWVudUl0ZW0gfSBmcm9tICcuL0Ryb3Bkb3duTWVudUl0ZW0nO1xuaW1wb3J0IHsgRHJvcGRvd25Mb2FkRXZlbnQgfSBmcm9tICcuL0Ryb3Bkb3duTG9hZEV2ZW50JztcbmltcG9ydCB7IFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vVGVtcGxhdGVEaXJlY3RpdmUuZGlyZWN0aXZlJztcbmltcG9ydCB7IERyb3Bkb3duQ2hhbmdlRXZlbnQgfSBmcm9tICcuL0Ryb3Bkb3duQ2hhbmdlRXZlbnQnO1xuaW1wb3J0IHsgRHJvcERvd25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9kcm9wLWRvd24taXRlbS9kcm9wLWRvd24taXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgaXNFcXVhbCwgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2hhcmVkTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkLm1vZHVsZSc7XG5pbXBvcnQgeyBTdmdNb2R1bGUgfSBmcm9tICcuLi9zdmcvc3ZnLm1vZHVsZSc7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAnLi4vdG9vbHRpcC90b29sdGlwLm1vZHVsZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25NZW51SXRlbVdyYXBwZXIgZXh0ZW5kcyBEcm9wZG93bk1lbnVJdGVtIHtcbiAgZXhwYW5kZWQ6IGJvb2xlYW47XG4gIGl0ZW1zPzogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXTtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBjb3B5OiBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcltdO1xuICBsb2FkVGltZXM/OiBEcm9wZG93bkxvYWRFdmVudDtcbiAgbG9hZFRpbWVzQ29weT86IERyb3Bkb3duTG9hZEV2ZW50O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZXJiZW4tZHJvcC1kb3duJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBEcm9wRG93bkl0ZW1Db21wb25lbnQsXG4gICAgU2hhcmVkTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFN2Z01vZHVsZSxcbiAgICBUb29sdGlwTW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcC1kb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2Ryb3AtZG93bi5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgRHJvcERvd25Db21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0XG57XG4gIC8vIElOVEVSTkFMXG4gIHByaXZhdGUgX29wdGlvbnM6IGFueVtdID0gW107IC8vIEludGVybmFsIHZhcmlhYmxlIGZvciBvcHRpb25zXG5cbiAgcHJpdmF0ZSBpZ25vcmVTZXQgPSBmYWxzZTtcbiAgLy8gSU5QVVRTXG4gIEBJbnB1dCgpXG4gIHNldCBvcHRpb25zKHZhbHVlOiBhbnlbXSkge1xuICAgIGlmICh0aGlzLmdyb3VwKSB7XG4gICAgICBpZiAodGhpcy5pc0Ryb3Bkb3duTWVudUl0ZW1XcmFwcGVyQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUodmFsdWUpOyAvLyBTZXQgdGhlIGludGVybmFsIG9wdGlvbnMgdmFyaWFibGVcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fb3B0aW9ucyA9IHZhbHVlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuaWdub3JlU2V0KSB7XG4gICAgICB0aGlzLmZpcnN0U2VhcmNoID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaWdub3JlU2V0ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG9wdGlvbnMoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zOyAvLyBSZXR1cm4gdGhlIGludGVybmFsIG9wdGlvbnMgdmFyaWFibGVcbiAgfVxuXG4gIEBJbnB1dCgpIHdpZHRoOiBzdHJpbmcgPSAnMTJyZW0nO1xuICBASW5wdXQoKSBzaG93SG9yaXpvbnRhbExpbmU6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBob3Jpem9udGFsTGluZUNvbG9yOiBzdHJpbmcgPSAncmdiYSgyNTUsIDIzMCwgMTI5LCAxKSc7XG4gIEBJbnB1dCgpIG9wdGlvbkxhYmVsPzogc3RyaW5nO1xuICBASW5wdXQoKSBvcHRpb25TdWJMYWJlbD86IHN0cmluZztcbiAgQElucHV0KCkgb3B0aW9uVmFsdWU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBASW5wdXQoKSBpbnZhbGlkTWVzc2FnZT86IHN0cmluZztcbiAgQElucHV0KCkgZXJyb3JQb3NpdGlvbjogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGxvYWRNb3JlQ2FwdGlvbjogc3RyaW5nID0gJ1NlZSBtb3JlJztcbiAgQElucHV0KCkgZGlzcGxheTogJ2RlZmF1bHQnIHwgJ2NoaXAnID0gJ2NoaXAnO1xuICBASW5wdXQoKSBzaG93Q2xlYXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbGF6eUxvYWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2VsZWN0S2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGdyb3VwOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG11bHRpc2VsZWN0OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBhdm9pZER1cGxpY2F0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZpbHRlckJ5Pzogc3RyaW5nO1xuICBASW5wdXQoKSBkZWJvdW5jZVRpbWU6IG51bWJlciA9IDUwMDtcbiAgQElucHV0KCkgbWluQ2hhcjogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbG9hZD86IChjb250ZXh0OiBEcm9wZG93bkxvYWRFdmVudCkgPT4gUHJvbWlzZTxhbnlbXT47XG4gIEBJbnB1dCgpIGFzeW5jTGFiZWw/OiAoY29udGV4dDogYW55KSA9PiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xuICBASW5wdXQoKSBzZWFyY2g/OiAoZGF0YTogYW55LCBjb250ZXh0OiBEcm9wZG93bkxvYWRFdmVudCkgPT4gUHJvbWlzZTxhbnlbXT47XG5cbiAgLy8gT1VUUFVUU1xuICBAT3V0cHV0KCkgb3B0aW9uc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RHJvcGRvd25DaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkNsaWNrOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25DbGVhcjogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBvbkl0ZW1DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG4gIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBpc0ludmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZmlyc3RTZWFyY2g6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvL1RFTVBMQVRJTkdcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25Db250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBkcm9wZG93bkNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duRXhwYW5zaW9uJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGRyb3Bkb3duRXhwYW5zaW9uITogRWxlbWVudFJlZjtcbiAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSkgdGVtcGxhdGVzITogUXVlcnlMaXN0PFRlbXBsYXRlRGlyZWN0aXZlPjtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZvY3VzZWQnKSBpc0ZvY3VzZWQgPSBmYWxzZTtcbiAgaXNJbnB1dEZvY3VzZWQgPSBmYWxzZTtcblxuICBzZWxlY3RlZEl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDsgLy8gQWxsb3cgbnVsbCBmb3IgY3VzdG9tIGl0ZW0gdGVtcGxhdGVcbiAgZ3JvdXBUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gIC8vVkFSSUFCTEVTXG4gIGlzRXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbG9hZFRpbWVzOiBEcm9wZG93bkxvYWRFdmVudCA9IG5ldyBEcm9wZG93bkxvYWRFdmVudCgpO1xuICBpbml0aWFsSW5jcmVtZW50OiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdGVkT3B0aW9uOiBhbnk7XG4gIHNlbGVjdGVkT3B0aW9uczogYW55W10gPSBbXTtcbiAgc2VsZWN0ZWRPcHRpb25MYWJlbDogYW55O1xuICBzZWxlY3RlZE9wdGlvbkxhYmVsczogYW55W10gPSBbXTtcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIG9wdGlvbnNDb3B5OiBhbnlbXSA9IFtdO1xuICBsb2FkVGltZXNDb3B5OiBEcm9wZG93bkxvYWRFdmVudCA9IG5ldyBEcm9wZG93bkxvYWRFdmVudCgpO1xuICBzZWxlY3RlZENvbnRleHRzOiBhbnlbXSA9IFtdO1xuICBzZWFyY2hIaXN0b3J5OiBzdHJpbmdbXSA9IFtdO1xuICBzZWFyY2hUZXJtJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgc2VhcmNoQ29udGV4dDogc3RyaW5nID0gJyc7XG4gIGFsbG93U2VsZWN0QWxsOiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdGVkQWxsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQFNlbGYoKSBwcml2YXRlIG5nQ29udHJvbDogTmdDb250cm9sKSB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpczsgLy8gQXNzaWduIHRoaXMgY29tcG9uZW50IGFzIHRoZSB2YWx1ZSBhY2Nlc3NvclxuICAgICAgdGhpcy5uZ0NvbnRyb2w/LnN0YXR1c0NoYW5nZXM/LnN1YnNjcmliZSgoc3RhdHVzKSA9PiB7XG4gICAgICAgIHRoaXMuaXNJbnZhbGlkID0gdGhpcy5uZ0NvbnRyb2wudG91Y2hlZFxuICAgICAgICAgID8gc3RhdHVzID09PSAnSU5WQUxJRCcgJiYgdGhpcy5uZ0NvbnRyb2wudG91Y2hlZFxuICAgICAgICAgIDogZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIGlmICghdGhpcy5sYXp5TG9hZCkge1xuICAgICAgICBpZiAoIXRoaXMuZ3JvdXApIHtcbiAgICAgICAgICB0aGlzLmFsbG93U2VsZWN0QWxsID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsZXQgaXNBbGxvd2VkID0gdHJ1ZTtcbiAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMub3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKGl0ZW0ubGF6eUxvYWQpIHtcbiAgICAgICAgICAgICAgaXNBbGxvd2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmFsbG93U2VsZWN0QWxsID0gaXNBbGxvd2VkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmZpbHRlcikge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSA9IGNsb25lRGVlcCh0aGlzLl9vcHRpb25zKTtcbiAgICAgIHRoaXMuc2VhcmNoVGVybSRcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lKSkgLy8gQWRqdXN0IGRlYm91bmNlIHRpbWUgaGVyZSAoaW4gbXMpXG4gICAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKHNlYXJjaFRlcm0pID0+IHtcbiAgICAgICAgICBpZiAoc2VhcmNoVGVybS5sZW5ndGggPCB0aGlzLm1pbkNoYXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5zZWxlY3RlZENvbnRleHRzW1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29udGV4dHMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgXSBhcyBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcjtcbiAgICAgICAgICAgIGlmIChpdGVtLnNlYXJjaCAmJiBpdGVtLmxvYWRUaW1lcykge1xuICAgICAgICAgICAgICBpdGVtLmxvYWRUaW1lcy5yZXNldCgpO1xuICAgICAgICAgICAgICBpdGVtLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGl0ZW0uc2VhcmNoKHNlYXJjaFRlcm0sIGl0ZW0ubG9hZFRpbWVzKTtcbiAgICAgICAgICAgICAgaXRlbS5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoQ29udGV4dC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5sb2FkVGltZXMuaW5jcmVhc2VMb2FkVGltZSgpO1xuICAgICAgICAgICAgICAgIGl0ZW0uaXRlbXMgPSB0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwXG4gICAgICAgICAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoICYmIHRoaXMubG9hZFRpbWVzKSB7XG4gICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy5sb2FkVGltZXMucmVzZXQoKTtcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5zZWFyY2goc2VhcmNoVGVybSwgdGhpcy5sb2FkVGltZXMpO1xuICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hDb250ZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5jb252ZXJ0VG9FeHBhbmRhYmxlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pZ25vcmVTZXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKCh0ZW1wbGF0ZURpcmVjdGl2ZSkgPT4ge1xuICAgICAgaWYgKHRlbXBsYXRlRGlyZWN0aXZlLnZUZW1wbGF0ZSA9PT0gJ3NlbGVjdGVkJykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbVRlbXBsYXRlID0gdGVtcGxhdGVEaXJlY3RpdmUudGVtcGxhdGU7XG4gICAgICB9XG4gICAgICBpZiAodGVtcGxhdGVEaXJlY3RpdmUudlRlbXBsYXRlID09PSAnaXRlbScpIHtcbiAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSB0ZW1wbGF0ZURpcmVjdGl2ZS50ZW1wbGF0ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0ZW1wbGF0ZURpcmVjdGl2ZS52VGVtcGxhdGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgdGhpcy5ncm91cFRlbXBsYXRlID0gdGVtcGxhdGVEaXJlY3RpdmUudGVtcGxhdGU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1cycpIG9uRm9jdXMoKSB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpIG9uQmx1cigpIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICB9XG5cbiAgb25TZWFyY2hGb2N1cygpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gdHJ1ZTtcbiAgfVxuXG4gIG9uU2VhcmNoQmx1cigpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICBvbklucHV0Rm9jdXMoKSB7XG4gICAgdGhpcy5pc0lucHV0Rm9jdXNlZCA9IHRydWU7XG4gIH1cblxuICBvbklucHV0Qmx1cigpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICB1cGRhdGVPcHRpb25zQ29weSgpIHtcbiAgICB0aGlzLm9wdGlvbnNDb3B5ID0gY2xvbmVEZWVwKHRoaXMuX29wdGlvbnMpO1xuICB9XG5cbiAgb25TZWFyY2goZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHNlYXJjaFRlcm0gPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5zZWxlY3RlZENvbnRleHRzW1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ29udGV4dHMubGVuZ3RoIC0gMVxuICAgICAgXSBhcyBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcjtcbiAgICAgIGlmIChzZWFyY2hUZXJtLnRyaW0oKS5sZW5ndGggPT0gMCkge1xuICAgICAgICBpdGVtLml0ZW1zID0gY2xvbmVEZWVwKGl0ZW0uY29weSk7XG4gICAgICAgIGl0ZW0ubG9hZFRpbWVzID0gY2xvbmVEZWVwKGl0ZW0ubG9hZFRpbWVzQ29weSk7XG4gICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgOiB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoaXRlbS5sYXp5TG9hZCkge1xuICAgICAgICB0aGlzLnNlYXJjaFRlcm0kLm5leHQoc2VhcmNoVGVybSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaXRlbS5maWx0ZXJCeSkge1xuICAgICAgICAgIGlmICghaXRlbS5pdGVtcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpdGVtLml0ZW1zID0gaXRlbS5pdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAoeCkgPT5cbiAgICAgICAgICAgICAgdHlwZW9mIHgudmFsdWVbaXRlbS5maWx0ZXJCeSFdID09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgIG5ldyBSZWdFeHAoc2VhcmNoVGVybSwgJ2knKS50ZXN0KHgudmFsdWVbaXRlbS5maWx0ZXJCeSFdKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5ncm91cFxuICAgICAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICAgICAgOiB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghaXRlbS5pdGVtcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpdGVtLml0ZW1zID0gaXRlbS5jb3B5LmZpbHRlcihcbiAgICAgICAgICAgICh4KSA9PlxuICAgICAgICAgICAgICB0eXBlb2YgeC52YWx1ZSA9PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgICBuZXcgUmVnRXhwKHNlYXJjaFRlcm0sICdpJykudGVzdCh4LnZhbHVlKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5ncm91cFxuICAgICAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICAgICAgOiB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmZpcnN0U2VhcmNoID09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMub3B0aW9uc0NvcHkgPSBjbG9uZURlZXAodGhpcy5fb3B0aW9ucyk7XG4gICAgICAgIHRoaXMuZmlyc3RTZWFyY2ggPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHNlYXJjaFRlcm0udHJpbSgpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSBjbG9uZURlZXAodGhpcy5vcHRpb25zQ29weSk7XG4gICAgICAgIHRoaXMubG9hZFRpbWVzID0gY2xvbmVEZWVwKHRoaXMubG9hZFRpbWVzQ29weSk7XG4gICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgOiB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICB0aGlzLmZpcnN0U2VhcmNoID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmxhenlMb2FkKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dChzZWFyY2hUZXJtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlckJ5KSB7XG4gICAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMub3B0aW9uc0NvcHkuZmlsdGVyKFxuICAgICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICAgIHR5cGVvZiB4W3RoaXMuZmlsdGVyQnkhXSA9PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgICBuZXcgUmVnRXhwKHNlYXJjaFRlcm0sICdpJykudGVzdCh4W3RoaXMuZmlsdGVyQnkhXSlcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICAgIDogdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5vcHRpb25zQ29weS5maWx0ZXIoXG4gICAgICAgICAgICAoeCkgPT4gdHlwZW9mIHggPT0gJ3N0cmluZycgJiYgbmV3IFJlZ0V4cChzZWFyY2hUZXJtLCAnaScpLnRlc3QoeClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICAgIDogdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uRHJvcGRvd25DbGljayhldmVudDogRXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZURyb3Bkb3duKCk7XG4gICAgdGhpcy5vbkNsaWNrLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgdG9nZ2xlRHJvcGRvd24oKSB7XG4gICAgdGhpcy5pc0V4cGFuZGVkID0gIXRoaXMuaXNFeHBhbmRlZDtcbiAgfVxuXG4gIGhhc1NpYmxpbmcoc2libGluZ3M6IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyW10pOiBudW1iZXIgfCBudWxsIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpYmxpbmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5pbmRleE9mKHNpYmxpbmdzW2ldKTtcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhc3luYyBleHBhbmRNZW51KFxuICAgIGl0ZW06IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyLFxuICAgIHNpYmxpbmdzOiBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcltdXG4gICkge1xuICAgIGlmIChpdGVtLml0ZW1zKSB7XG4gICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgZm9yIChsZXQgaXQgb2Ygc2libGluZ3MuZmlsdGVyKCh4KSA9PiB4ICE9PSBpdGVtKSkge1xuICAgICAgICAgIGlmIChpdC5leHBhbmRlZCkge1xuICAgICAgICAgICAgaXQuZXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGl0LmxvYWRUaW1lcyAmJiBpdC5sb2FkVGltZXMucmVzZXQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGl0ZW0uZXhwYW5kZWQgPSAhaXRlbS5leHBhbmRlZDtcbiAgICAgIGlmIChpdGVtLmV4cGFuZGVkKSB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcikge1xuICAgICAgICAgIGNvbnN0IHNpYmxpbmdDaGVjayA9IHRoaXMuaGFzU2libGluZyhzaWJsaW5ncyk7XG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggPiAwICYmIHNpYmxpbmdDaGVjayAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3QgY29udGV4dHNMZW5ndGggPSB0aGlzLnNlbGVjdGVkQ29udGV4dHMubGVuZ3RoO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbnRleHRzLnNwbGljZShcbiAgICAgICAgICAgICAgc2libGluZ0NoZWNrLFxuICAgICAgICAgICAgICBjb250ZXh0c0xlbmd0aCAtIHNpYmxpbmdDaGVja1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvbnRleHRzLnB1c2goaXRlbSk7XG4gICAgICAgICAgaWYgKHNpYmxpbmdDaGVjayA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaEhpc3RvcnkucHVzaCh0aGlzLnNlYXJjaENvbnRleHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNlYXJjaENvbnRleHQgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXRlbS5sYXp5TG9hZCAmJiBpdGVtLmxvYWRNb3JlICYmIGl0ZW0ubG9hZFRpbWVzKSB7XG4gICAgICAgICAgaXRlbS5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgIHZhciByZXN1bHQgPSBhd2FpdCBpdGVtLmxvYWRNb3JlKGl0ZW0ubG9hZFRpbWVzKTtcbiAgICAgICAgICBpdGVtLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaXRlbS5sb2FkVGltZXMuaW5jcmVhc2VMb2FkVGltZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpdGVtLml0ZW1zID0gdGhpcy5jb252ZXJ0VG9FeHBhbmRhYmxlKHJlc3VsdCk7XG4gICAgICAgICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICAgICAgICBpdGVtLmNvcHkgPSBjbG9uZURlZXAoaXRlbS5pdGVtcyk7XG4gICAgICAgICAgICBpdGVtLmxvYWRUaW1lc0NvcHkgPSBjbG9uZURlZXAoaXRlbS5sb2FkVGltZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmdyb3VwXG4gICAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcikge1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZENvbnRleHRzLmluZGV4T2YoaXRlbSk7XG4gICAgICAgICAgY29uc3QgY29udGV4dHNMZW5ndGggPSB0aGlzLnNlbGVjdGVkQ29udGV4dHMubGVuZ3RoO1xuICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29udGV4dHMuc3BsaWNlKGluZGV4LCBjb250ZXh0c0xlbmd0aCAtIGluZGV4KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0ZW0ubG9hZFRpbWVzKSB7XG4gICAgICAgICAgaXRlbS5sb2FkVGltZXMucmVzZXQoKTtcbiAgICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICAgIGl0ZW0ubG9hZFRpbWVzQ29weSA9IGNsb25lRGVlcChpdGVtLmxvYWRUaW1lcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcikge1xuICAgICAgICAgIGlmICh0aGlzLnNlYXJjaEhpc3RvcnkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250ZXh0ID1cbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hIaXN0b3J5W3RoaXMuc2VhcmNoSGlzdG9yeS5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoSGlzdG9yeS5zcGxpY2UodGhpcy5zZWFyY2hIaXN0b3J5Lmxlbmd0aCAtIDEsIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGxvYWRNb3JlTWVudUl0ZW1zKGl0ZW06IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyKSB7XG4gICAgaWYgKGl0ZW0ubG9hZE1vcmUgJiYgaXRlbS5sb2FkVGltZXMgJiYgaXRlbS5pdGVtcykge1xuICAgICAgY29uc3Qgc2VhcmNoQ29udGV4dCA9IHRoaXMuc2VhcmNoQ29udGV4dC50cmltKCk7XG4gICAgICBpdGVtLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICB2YXIgcmVzdWx0ID1cbiAgICAgICAgc2VhcmNoQ29udGV4dC5sZW5ndGggPiAwICYmIGl0ZW0uc2VhcmNoXG4gICAgICAgICAgPyBhd2FpdCBpdGVtLnNlYXJjaChzZWFyY2hDb250ZXh0LCBpdGVtLmxvYWRUaW1lcylcbiAgICAgICAgICA6IGF3YWl0IGl0ZW0ubG9hZE1vcmUoaXRlbS5sb2FkVGltZXMpO1xuICAgICAgaXRlbS5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMCkge1xuICAgICAgICBpdGVtLmxvYWRUaW1lcy5pbmNyZWFzZUxvYWRUaW1lKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBjb252ZXJ0ZWQgPSB0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUocmVzdWx0KTtcbiAgICAgIGZvciAobGV0IHJlcyBvZiBjb252ZXJ0ZWQpIHtcbiAgICAgICAgaXRlbS5pdGVtcy5wdXNoKHJlcyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgaWYgKHNlYXJjaENvbnRleHQubGVuZ3RoID09IDAgfHwgIWl0ZW0uc2VhcmNoKSB7XG4gICAgICAgICAgaXRlbS5jb3B5ID0gY2xvbmVEZWVwKGl0ZW0uaXRlbXMpO1xuICAgICAgICAgIGl0ZW0ubG9hZFRpbWVzQ29weSA9IGNsb25lRGVlcChpdGVtLmxvYWRUaW1lcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZE1vcmUoKSB7XG4gICAgaWYgKHRoaXMubG9hZCkge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5sZW5ndGggPiAwICYmICF0aGlzLmluaXRpYWxJbmNyZW1lbnQpIHtcbiAgICAgICAgdGhpcy5sb2FkVGltZXMuaW5jcmVhc2VMb2FkVGltZSgpO1xuICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICB0aGlzLmxvYWRUaW1lc0NvcHkgPSBjbG9uZURlZXAodGhpcy5sb2FkVGltZXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5pdGlhbEluY3JlbWVudCA9IHRydWU7XG4gICAgICB9XG4gICAgICBjb25zdCBzZWFyY2hDb250ZXh0ID0gdGhpcy5zZWFyY2hDb250ZXh0LnRyaW0oKTtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHZhciByZXN1bHQgPVxuICAgICAgICBzZWFyY2hDb250ZXh0Lmxlbmd0aCA+IDAgJiYgdGhpcy5zZWFyY2hcbiAgICAgICAgICA/IGF3YWl0IHRoaXMuc2VhcmNoKHNlYXJjaENvbnRleHQsIHRoaXMubG9hZFRpbWVzKVxuICAgICAgICAgIDogYXdhaXQgdGhpcy5sb2FkKHRoaXMubG9hZFRpbWVzKTtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgICByZXN1bHQgPSB0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUocmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmxvYWRUaW1lcy5pbmNyZWFzZUxvYWRUaW1lKCk7XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBpdGVtIG9mIHJlc3VsdCkge1xuICAgICAgICB0aGlzLl9vcHRpb25zLnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgaWYgKHNlYXJjaENvbnRleHQubGVuZ3RoID09IDAgfHwgIXRoaXMuc2VhcmNoKSB7XG4gICAgICAgICAgdGhpcy5vcHRpb25zQ29weSA9IGNsb25lRGVlcCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICAgIHRoaXMubG9hZFRpbWVzQ29weSA9IGNsb25lRGVlcCh0aGlzLmxvYWRUaW1lcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgY29udmVydFRvRXhwYW5kYWJsZShpdGVtczogRHJvcGRvd25NZW51SXRlbVtdKTogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXSB7XG4gICAgY29uc3Qgd3JhcHBlcjogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXSA9IFtdO1xuICAgIGZvciAobGV0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGNvbnN0IGNvbnZlcnRlZEl0ZW06IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyID0ge1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICBleHBhbmRlZDogZmFsc2UsXG4gICAgICAgIGxvYWRUaW1lczogaXRlbS5pdGVtcyA/IG5ldyBEcm9wZG93bkxvYWRFdmVudCgpIDogdW5kZWZpbmVkLFxuICAgICAgICBsb2FkVGltZXNDb3B5OiBpdGVtLml0ZW1zID8gbmV3IERyb3Bkb3duTG9hZEV2ZW50KCkgOiB1bmRlZmluZWQsXG4gICAgICAgIGl0ZW1zOiBpdGVtLml0ZW1zID8gdGhpcy5jb252ZXJ0VG9FeHBhbmRhYmxlKGl0ZW0uaXRlbXMpIDogdW5kZWZpbmVkLFxuICAgICAgICBjb3B5OiBpdGVtLml0ZW1zID8gY2xvbmVEZWVwKHRoaXMuY29udmVydFRvRXhwYW5kYWJsZShpdGVtLml0ZW1zKSkgOiBbXSxcbiAgICAgIH07XG4gICAgICB3cmFwcGVyLnB1c2goY29udmVydGVkSXRlbSk7XG4gICAgfVxuICAgIHJldHVybiB3cmFwcGVyO1xuICB9XG5cbiAgb25TZWxlY3RBbGwoZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRBbGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gW107XG4gICAgICB0aGlzLm9uSXRlbUNoYW5nZShbXSk7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiBbXSB9KTtcbiAgICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XG4gICAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmdyb3VwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscyA9IFtdO1xuICAgICAgZm9yIChsZXQgb3B0aW9uIG9mIHRoaXMub3B0aW9ucykge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuY2hlY2tNdWx0aXNlbGVjdFZhbHVlKG9wdGlvbik7XG4gICAgICAgIGlmIChpbmRleCA9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMucHVzaCh0aGlzLmdldFZhbHVlKG9wdGlvbikpO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMucHVzaCh0aGlzLmdldE9wdGlvbkxhYmVsKG9wdGlvbikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gW107XG4gICAgICBmb3IgKGxldCBvcHRpb24gb2YgdGhpcy5vcHRpb25zKSB7XG4gICAgICAgIGZvciAobGV0IGl0ZW0gb2Ygb3B0aW9uLml0ZW1zKSB7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmNoZWNrTXVsdGlzZWxlY3RWYWx1ZShpdGVtKTtcbiAgICAgICAgICBpZiAoaW5kZXggPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMucHVzaCh0aGlzLmdldFZhbHVlKGl0ZW0pKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMucHVzaCh0aGlzLmdldE9wdGlvbkxhYmVsKGl0ZW0pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5vbkl0ZW1DaGFuZ2UodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9ucyB9KTtcbiAgfVxuXG4gIGNsZWFyU2VsZWN0aW9uKGV2ZW50OiBFdmVudCkge1xuICAgIGlmICghdGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSBudWxsO1xuICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UobnVsbCk7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiBudWxsIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscyA9IFtdO1xuICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UoW10pO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCB2YWx1ZTogW10gfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XG4gICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgICB0aGlzLm9uQ2xlYXIuZW1pdChldmVudCk7XG4gIH1cblxuICBvblNlbGVjdCh2YWx1ZTogYW55LCBldmVudDogRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSB0aGlzLmdldFZhbHVlKHZhbHVlKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbCA9IHRoaXMuZ2V0T3B0aW9uTGFiZWwodmFsdWUpO1xuICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UodGhpcy5nZXRWYWx1ZSh2YWx1ZSkpO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCB2YWx1ZTogdGhpcy5nZXRWYWx1ZSh2YWx1ZSkgfSk7XG4gICAgICB0aGlzLnRvZ2dsZURyb3Bkb3duKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGV4aXN0cyA9IHRoaXMuY2hlY2tNdWx0aXNlbGVjdFZhbHVlKHZhbHVlKTtcbiAgICAgIGlmIChleGlzdHMgPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbnMgPSBbXG4gICAgICAgICAgLi4udGhpcy5zZWxlY3RlZE9wdGlvbnMsXG4gICAgICAgICAgdGhpcy5nZXRWYWx1ZSh2YWx1ZSksXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkT3B0aW9uTGFiZWxzID0gW1xuICAgICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMsXG4gICAgICAgICAgdGhpcy5nZXRPcHRpb25MYWJlbCh2YWx1ZSksXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gbmV3U2VsZWN0ZWRPcHRpb25zO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gbmV3U2VsZWN0ZWRPcHRpb25MYWJlbHM7XG4gICAgICAgIHRoaXMub25JdGVtQ2hhbmdlKHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5zZWxlY3RlZE9wdGlvbnMsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFsbCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbnMgPSBbLi4udGhpcy5zZWxlY3RlZE9wdGlvbnNdO1xuICAgICAgICBuZXdTZWxlY3RlZE9wdGlvbnMuc3BsaWNlKGV4aXN0cywgMSk7XG4gICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkT3B0aW9uTGFiZWxzID0gWy4uLnRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHNdO1xuICAgICAgICBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscy5zcGxpY2UoZXhpc3RzLCAxKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBuZXdTZWxlY3RlZE9wdGlvbnM7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMgPSBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscztcbiAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgIHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9ucyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaW5kZXg6IG51bWJlciwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgbmV3U2VsZWN0ZWRPcHRpb25zID0gWy4uLnRoaXMuc2VsZWN0ZWRPcHRpb25zXTtcbiAgICBuZXdTZWxlY3RlZE9wdGlvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscyA9IFsuLi50aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzXTtcbiAgICBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gbmV3U2VsZWN0ZWRPcHRpb25zO1xuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMgPSBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscztcbiAgICB0aGlzLm9uSXRlbUNoYW5nZSh0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWU6IHRoaXMuc2VsZWN0ZWRPcHRpb25zIH0pO1xuICB9XG5cbiAgY2hlY2tNdWx0aXNlbGVjdFZhbHVlKHZhbHVlOiBhbnkpOiBudW1iZXIgfCBudWxsIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoaXNFcXVhbCh0aGlzLnNlbGVjdGVkT3B0aW9uc1tpXSwgdGhpcy5nZXRWYWx1ZSh2YWx1ZSkpKSB7XG4gICAgICAgIHJldHVybiBpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIHdyaXRlVmFsdWUob2JqOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIGlmIChvYmogPT0gbnVsbCB8fCBvYmogPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSBvYmo7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbCA9IG9iajtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSBudWxsO1xuICAgICAgaWYgKCF0aGlzLmdyb3VwICYmICF0aGlzLmxhenlMb2FkKSB7XG4gICAgICAgIGZvciAobGV0IG9wdGlvbiBvZiB0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgICBjb25zdCBlcXVhbGl0eUNoZWNrID0gdGhpcy5zZWxlY3RLZXlcbiAgICAgICAgICAgID8gaXNFcXVhbChcbiAgICAgICAgICAgICAgICB0aGlzLmdldFZhbHVlKG9wdGlvbilbdGhpcy5zZWxlY3RLZXldLFxuICAgICAgICAgICAgICAgIChvYmogJiYgb2JqW3RoaXMuc2VsZWN0S2V5XSkgfHwgbnVsbFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IGlzRXF1YWwodGhpcy5nZXRWYWx1ZShvcHRpb24pLCBvYmopO1xuICAgICAgICAgIGlmIChlcXVhbGl0eUNoZWNrKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gdGhpcy5nZXRWYWx1ZShvcHRpb24pO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVsID0gdGhpcy5hc3luY0xhYmVsXG4gICAgICAgICAgICAgID8gYXdhaXQgdGhpcy5hc3luY0xhYmVsKG9wdGlvbilcbiAgICAgICAgICAgICAgOiB0aGlzLmdldE9wdGlvbkxhYmVsKG9wdGlvbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgdmFsdWU6IHRoaXMuc2VsZWN0ZWRPcHRpb24gfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSBvYmo7XG4gICAgICBpZiAodGhpcy5hc3luY0xhYmVsKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbCA9IGF3YWl0IHRoaXMuYXN5bmNMYWJlbChvYmopO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMub3B0aW9ucy5maW5kKChvcHRpb24pID0+XG4gICAgICAgICAgdGhpcy5zZWxlY3RLZXlcbiAgICAgICAgICAgID8gaXNFcXVhbChcbiAgICAgICAgICAgICAgICB0aGlzLmdldFZhbHVlKG9wdGlvbilbdGhpcy5zZWxlY3RLZXldLFxuICAgICAgICAgICAgICAgIChvYmogJiYgb2JqW3RoaXMuc2VsZWN0S2V5XSkgfHwgbnVsbFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IGlzRXF1YWwodGhpcy5nZXRWYWx1ZShvcHRpb24pLCBvYmopXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVsID0gdGhpcy5nZXRPcHRpb25MYWJlbChpdGVtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSBvYmo7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbCA9IHRoaXMuYXN5bmNMYWJlbFxuICAgICAgLy8gICA/IGF3YWl0IHRoaXMuYXN5bmNMYWJlbChvYmopXG4gICAgICAvLyAgIDogdGhpcy5nZXRPcHRpb25MYWJlbChvYmopO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9uIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gW107XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gW107XG4gICAgICBpZiAoIXRoaXMuZ3JvdXAgJiYgIXRoaXMubGF6eUxvYWQpIHtcbiAgICAgICAgZm9yIChsZXQgb3B0aW9uIG9mIHRoaXMub3B0aW9ucykge1xuICAgICAgICAgIGZvciAobGV0IG9iamVjdCBvZiBvYmopIHtcbiAgICAgICAgICAgIGNvbnN0IGVxdWFsaXR5Q2hlY2sgPSB0aGlzLnNlbGVjdEtleVxuICAgICAgICAgICAgICA/IGlzRXF1YWwoXG4gICAgICAgICAgICAgICAgICB0aGlzLmdldFZhbHVlKG9wdGlvbilbdGhpcy5zZWxlY3RLZXldLFxuICAgICAgICAgICAgICAgICAgb2JqZWN0W3RoaXMuc2VsZWN0S2V5XVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBpc0VxdWFsKHRoaXMuZ2V0VmFsdWUob3B0aW9uKSwgb2JqZWN0KTtcbiAgICAgICAgICAgIGlmIChlcXVhbGl0eUNoZWNrKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLnB1c2godGhpcy5nZXRWYWx1ZShvcHRpb24pKTtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscy5wdXNoKFxuICAgICAgICAgICAgICAgIHRoaXMuYXN5bmNMYWJlbFxuICAgICAgICAgICAgICAgICAgPyBhd2FpdCB0aGlzLmFzeW5jTGFiZWwob2JqZWN0KVxuICAgICAgICAgICAgICAgICAgOiB0aGlzLmdldE9wdGlvbkxhYmVsKG9wdGlvbilcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9ucyB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBvYmo7XG4gICAgICBmb3IgKGxldCBvYmplY3Qgb2Ygb2JqKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMucHVzaChcbiAgICAgICAgICB0aGlzLmFzeW5jTGFiZWxcbiAgICAgICAgICAgID8gYXdhaXQgdGhpcy5hc3luY0xhYmVsKG9iamVjdClcbiAgICAgICAgICAgIDogdGhpcy5nZXRPcHRpb25MYWJlbChvYmplY3QpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgdmFsdWU6IHRoaXMuc2VsZWN0ZWRPcHRpb25zIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldE9wdGlvbkZyb21WYWx1ZSh2YWx1ZTogYW55KTogYW55IHtcbiAgICBpZiAoIXRoaXMub3B0aW9uVmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwID8gdmFsdWUudmFsdWUgOiB2YWx1ZTtcbiAgICB9XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdyb3VwXG4gICAgICA/IHRoaXMub3B0aW9ucy5maW5kSW5kZXgoXG4gICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICB4LnZhbHVlW3RoaXMub3B0aW9uVmFsdWUhXSAmJiB4LnZhbHVlW3RoaXMub3B0aW9uVmFsdWUhXSA9PSB2YWx1ZVxuICAgICAgICApXG4gICAgICA6IHRoaXMub3B0aW9ucy5maW5kSW5kZXgoXG4gICAgICAgICAgKHgpID0+IHhbdGhpcy5vcHRpb25WYWx1ZSFdICYmIHhbdGhpcy5vcHRpb25WYWx1ZSFdID09IHZhbHVlXG4gICAgICAgICk7XG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAgPyB2YWx1ZS52YWx1ZSA6IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zW2luZGV4XTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25JdGVtQ2hhbmdlID0gZm47XG4gIH1cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgZ2V0VmFsdWUoaXRlbTogYW55KTogYW55IHtcbiAgICBpZiAoIXRoaXMub3B0aW9uVmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwID8gaXRlbS52YWx1ZSA6IGl0ZW07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdyb3VwID8gaXRlbS52YWx1ZVt0aGlzLm9wdGlvblZhbHVlXSA6IGl0ZW1bdGhpcy5vcHRpb25WYWx1ZV07XG4gIH1cbiAgZ2V0T3B0aW9uTGFiZWwoaXRlbTogYW55KTogYW55IHtcbiAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgcmV0dXJuIGl0ZW0ubGFiZWw7XG4gICAgfVxuICAgIGlmICghdGhpcy5vcHRpb25MYWJlbCkge1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyBpdGVtIDogaXRlbVt0aGlzLm9wdGlvbkxhYmVsXTtcbiAgfVxuXG4gIHByaXZhdGUgaXNEcm9wZG93bk1lbnVJdGVtV3JhcHBlckFycmF5KHZhbHVlOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBBcnJheS5pc0FycmF5KHZhbHVlKSAmJlxuICAgICAgdmFsdWUuZXZlcnkoKGl0ZW0pID0+IHRoaXMuaXNEcm9wZG93bk1lbnVJdGVtV3JhcHBlcihpdGVtKSlcbiAgICApO1xuICB9XG5cbiAgLy8gVHlwZSBndWFyZCBmdW5jdGlvbiB0byBjaGVjayBpZiBhbiBvYmplY3QgaXMgb2YgdHlwZSBEcm9wZG93bk1lbnVJdGVtXG4gIHByaXZhdGUgaXNEcm9wZG93bk1lbnVJdGVtV3JhcHBlcihpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gJ2V4cGFuZGVkJyBpbiBpdGVtO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBvbkNsaWNrT3V0c2lkZShldmVudDogRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAhdGhpcy5kcm9wZG93bkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgIHRoaXMuaXNFeHBhbmRlZCAmJlxuICAgICAgdGhpcy5kcm9wZG93bkV4cGFuc2lvbiAmJlxuICAgICAgIXRoaXMuZHJvcGRvd25FeHBhbnNpb24ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXG4gICAgKSB7XG4gICAgICB0aGlzLmlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgI2Ryb3Bkb3duQ29udGFpbmVyIFtuZ0NsYXNzXT1cInN0eWxlQ2xhc3NcIiBbc3R5bGUud2lkdGhdPVwid2lkdGhcIiBjbGFzcz1cImRyb3AtZG93blwiPlxuICA8ZGl2XG4gICAgW25nQ2xhc3NdPVwieydyaWdodC1lcnJvcic6IGVycm9yUG9zaXRpb24gPT0gJ3JpZ2h0JywgJ2xlZnQtZXJyb3InOiBlcnJvclBvc2l0aW9uID09ICdsZWZ0JywgJ3RvcC1lcnJvcic6IGVycm9yUG9zaXRpb24gPT0gJ3RvcCd9XCJcbiAgICBjbGFzcz1cImRyb3AtZG93bi1pbnB1dC13cmFwcGVyXCI+XG4gICAgPGRpdiAoY2xpY2spPVwib25Ecm9wZG93bkNsaWNrKCRldmVudClcIiBjZGtPdmVybGF5T3JpZ2luICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiIFtjbGFzcy5mb2N1c2VkXT1cImlzRm9jdXNlZFwiXG4gICAgICBbbmdDbGFzc109XCJ7J25nLWludmFsaWQnOiBpc0ludmFsaWQsICdkaXNhYmxlZCc6IGRpc2FibGVkfVwiIChmb2N1cyk9XCJvbkZvY3VzKClcIiAoYmx1cik9XCJvbkJsdXIoKVwiIHRhYmluZGV4PVwiMFwiXG4gICAgICBjbGFzcz1cImRyb3AtZG93bi1pbnB1dCB2ZXJiZW4taW5wdXQgZmxleFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImRyb3AtZG93bi1tYWluLWNvbnRlbnRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiKHNlbGVjdGVkSXRlbVRlbXBsYXRlICYmIHNlbGVjdGVkT3B0aW9uKSB8fCAoc2VsZWN0ZWRJdGVtVGVtcGxhdGUgJiYgc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDApOyBlbHNlIGRlZmF1bHRJdGVtXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFtdWx0aXNlbGVjdFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNlbGVjdGVkSXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogc2VsZWN0ZWRPcHRpb24gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJtdWx0aXNlbGVjdFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNlbGVjdGVkSXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogc2VsZWN0ZWRPcHRpb25zIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SXRlbT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW11bHRpc2VsZWN0XCIgY2xhc3M9XCJkZWZhdWx0LWl0ZW0gZmxleFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWxhYmVsIHBsYWNlLWhvbGRlclwiICpuZ0lmPVwiIXRoaXMuc2VsZWN0ZWRPcHRpb25cIj57e3BsYWNlaG9sZGVyfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGlzLnNlbGVjdGVkT3B0aW9uXCIgY2xhc3M9XCJpdGVtLWxhYmVsIGRyb3Bkb3duLWxhYmVsXCI+XG4gICAgICAgICAgICAgIHt7dGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVsfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwibXVsdGlzZWxlY3RcIiBjbGFzcz1cImRlZmF1bHQtaXRlbSBtdWx0aS1zZWxlY3QgZmxleFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWxhYmVsIHBsYWNlLWhvbGRlclwiICpuZ0lmPVwidGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoID09IDBcIj57e3BsYWNlaG9sZGVyfX08L2Rpdj5cbiAgICAgICAgICAgIDx2ZXJiZW4tdG9vbHRpcCBjdXN0b21DbGFzcz1cImN1c3RvbS10b29sdGlwLXdpZHRoXCIgYm9yZGVyPVwiMXB4IHNvbGlkICMzMzQxNTVcIiBiYWNrZ3JvdW5kQ29sb3I9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIFt0b29sdGlwQ29udGVudF09XCJtdWx0aXNlbGVjdFRvb2x0aXBcIj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDBcIiBjbGFzcz1cIml0ZW0tbGFiZWwgZHJvcGRvd24tbGFiZWxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGlzcGxheSA9PSAnY2hpcCdcIiBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW1zLWNvbnRhaW5lci10d28gY2hpcFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRPcHRpb25MYWJlbHM7IGluZGV4IGFzIGlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW0tY2hpcCBtdWx0aS1zZWxlY3QgZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2l0ZW19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHZlcmJlbi1zdmcgKGNsaWNrKT1cIm9uTXVsdGlzZWxlY3RJdGVtQ2xvc2VkKGksICRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIlxuICAgICAgICAgICAgICAgICAgICAgIGljb249XCJjbG9zZS1jaXJjbGUtZnVsbFwiIFt3aWR0aF09XCIxNVwiIFtoZWlnaHRdPVwiMTVcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPHN2ZyAoY2xpY2spPVwib25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaSwgJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxMCAxMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTUuMDAwNjUgOS4zMzMzM0M3LjMwMTg0IDkuMzMzMzMgOS4xNjczMiA3LjQ2Nzg1IDkuMTY3MzIgNS4xNjY2N0M5LjE2NzMyIDIuODY1NDggNy4zMDE4NCAxIDUuMDAwNjUgMUMyLjY5OTQ2IDEgMC44MzM5ODQgMi44NjU0OCAwLjgzMzk4NCA1LjE2NjY3QzAuODMzOTg0IDcuNDY3ODUgMi42OTk0NiA5LjMzMzMzIDUuMDAwNjUgOS4zMzMzM1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMjUgMy45MTc5N0wzLjc1IDYuNDE3OTdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMuNzUgMy45MTc5N0w2LjI1IDYuNDE3OTdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+IC0tPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkaXNwbGF5ICE9ICdjaGlwJ1wiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbXMtY29udGFpbmVyLXR3byBub3JtYWxcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkT3B0aW9uTGFiZWxzOyBpbmRleCBhcyBpXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7aSAhPT0gc2VsZWN0ZWRPcHRpb25MYWJlbHMubGVuZ3RoIC0gMT8gaXRlbSArICcsICc6aXRlbX19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC92ZXJiZW4tdG9vbHRpcD5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbXVsdGlzZWxlY3RUb29sdGlwPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGktc2VsZWN0LWZ1bGwtdmlld1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwXCIgY2xhc3M9XCJpdGVtLWxhYmVsIGRyb3Bkb3duLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGlzcGxheSA9PSAnY2hpcCdcIiBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW1zLWNvbnRhaW5lci10d28tdG9vbHRpcCBjaGlwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkT3B0aW9uTGFiZWxzOyBpbmRleCBhcyBpXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW0tY2hpcCBtdWx0aS1zZWxlY3QgZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIChjbGljayk9XCJvbk11bHRpc2VsZWN0SXRlbUNsb3NlZChpLCAkZXZlbnQpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJjbG9zZS1jaXJjbGUtZnVsbFwiIFt3aWR0aF09XCIxNVwiIFtoZWlnaHRdPVwiMTVcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3ZnIChjbGljayk9XCJvbk11bHRpc2VsZWN0SXRlbUNsb3NlZChpLCAkZXZlbnQpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTAgMTBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNS4wMDA2NSA5LjMzMzMzQzcuMzAxODQgOS4zMzMzMyA5LjE2NzMyIDcuNDY3ODUgOS4xNjczMiA1LjE2NjY3QzkuMTY3MzIgMi44NjU0OCA3LjMwMTg0IDEgNS4wMDA2NSAxQzIuNjk5NDYgMSAwLjgzMzk4NCAyLjg2NTQ4IDAuODMzOTg0IDUuMTY2NjdDMC44MzM5ODQgNy40Njc4NSAyLjY5OTQ2IDkuMzMzMzMgNS4wMDA2NSA5LjMzMzMzWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMjUgMy45MTc5N0wzLjc1IDYuNDE3OTdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zLjc1IDMuOTE3OTdMNi4yNSA2LjQxNzk3XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXkgIT0gJ2NoaXAnXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcy1jb250YWluZXItdHdvLXRvb2x0aXAtbm9ybWFsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkT3B0aW9uTGFiZWxzOyBpbmRleCBhcyBpXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3tpICE9PSBzZWxlY3RlZE9wdGlvbkxhYmVscy5sZW5ndGggLSAxPyBpdGVtICsgJywgJzppdGVtfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW5cbiAgICAgICAgKm5nSWY9XCIoc2hvd0NsZWFyICYmIHRoaXMuc2VsZWN0ZWRPcHRpb24gJiYgIW11bHRpc2VsZWN0KSB8fCAoc2hvd0NsZWFyICYmIHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDAgJiYgbXVsdGlzZWxlY3QpXCJcbiAgICAgICAgKGNsaWNrKT1cInRoaXMuY2xlYXJTZWxlY3Rpb24oJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgY2xhc3M9XCJkcm9wLWRvd24taWNvbi1pdGVtIGRyb3AtZG93bi1jbGVhci1idXR0b25cIj5cbiAgICAgICAgPHZlcmJlbi1zdmcgaWNvbj1cImNsb3NlLW5vLWNpcmNsZVwiIHN0cm9rZT1cIiM5NGEzYjhcIiBbd2lkdGhdPVwiMTNcIiBbaGVpZ2h0XT1cIjEzXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICA8IS0tIDxzdmcgd2lkdGg9XCI5XCIgaGVpZ2h0PVwiOVwiIHZpZXdCb3g9XCIwIDAgOSA5XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk0wLjg0Mzc1IDAuODQzNzVMOC4xNTYyNSA4LjE1NjI1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgPHBhdGggZD1cIk0wLjg0Mzc1IDguMTU2MjVMOC4xNTYyNSAwLjg0Mzc1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgIDwvc3ZnPiAtLT5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1kb3duLWljb24taXRlbSBkcm9wLWRvd24tZXhwYW5kLWJ1dHRvblwiPlxuICAgICAgICA8dmVyYmVuLXN2ZyBpY29uPVwiY2hldnJvbi1kb3duXCIgZmlsbD1cIiM5NGEzYjhcIiBbd2lkdGhdPVwiMTVcIiBbaGVpZ2h0XT1cIjhcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgIDwhLS0gPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiN1wiIHZpZXdCb3g9XCIwIDAgMTIgN1wiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPVwiTTYuMDA1MDcgNC44ODAyN0M2LjIwMjA1IDQuNjI3NzUgNi4zMDY4MyA0LjQ2MjIgNi40NDA5NSA0LjMyNzA0QzcuNzQzMzQgMy4wMTczMSA5LjA1MjAyIDEuNzEzODcgMTAuMzU3NiAwLjQwNjI0MkMxMC41NzEzIDAuMTkyNDk1IDEwLjc4ODIgMC4wMDkxMzM2NyAxMS4xMTkzIDAuMDEwMTgxNEMxMS40NjkyIDAuMDExMjI5MiAxMS43MjI4IDAuMTU3OTIgMTEuODg4NCAwLjQ1NjUzN0MxMi4wNTcgMC43NjAzOTQgMTIuMDMwOSAxLjA2MTExIDExLjgzNDkgMS4zNDI5NkMxMS43NjU4IDEuNDQyNSAxMS42NzY3IDEuNTI3MzcgMTEuNTkwOCAxLjYxNDMzQzkuOTg4NzMgMy4yMTYzOSA4LjM3MzA1IDQuODA0ODMgNi43OTMgNi40Mjc4NEM2LjI5MTExIDYuOTQzMzUgNS42ODc1OSA2LjkyMzQ0IDUuMjEzOTkgNi40MzgzMkMzLjYzMTg0IDQuODE3NCAyLjAxODI2IDMuMjI2ODcgMC40MTQxMDkgMS42MjY5MUMwLjExNjUzOSAxLjMyOTM0IC0wLjExNjA2NyAxLjAxOTIgMC4wNjIwNTYxIDAuNTY1NTA3QzAuMjcxNjEyIDAuMDMxMTM5IDAuODgzNTE5IC0wLjE2Nzk0MSAxLjM1NTAyIDAuMTU3OTE5QzEuNDk2NDcgMC4yNTUzNjMgMS42MTU5MiAwLjM4NzM4NSAxLjczOTU1IDAuNTA5OTc1QzMuMDIyMDQgMS43OTAzNiA0LjMwNDUyIDMuMDcwNzUgNS41ODM4NiA0LjM1NTMzQzUuNzA2NDUgNC40Nzc5MiA1LjgwMjg0IDQuNjI2NzEgNi4wMDYxMSA0Ljg4MTMyTDYuMDA1MDcgNC44ODAyN1pcIlxuICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiIC8+XG4gICAgICAgIDwvc3ZnPiAtLT5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwidGhpcy5pc0ludmFsaWQgJiYgdGhpcy5pbnZhbGlkTWVzc2FnZVwiIGNsYXNzPVwidmVyYmVuLWVycm9yLW1lc3NhZ2UgZXJyb3ItbWVzc2FnZVwiPnt7aW52YWxpZE1lc3NhZ2V9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlIGNka0Nvbm5lY3RlZE92ZXJsYXkgW2Nka0Nvbm5lY3RlZE92ZXJsYXlXaWR0aF09XCJkcm9wZG93bkNvbnRhaW5lci5vZmZzZXRXaWR0aFwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb25dPVwiZmFsc2VcIiBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJ0cmlnZ2VyXCIgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnNdPVwiW1xuICAgIHtcbiAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgb3ZlcmxheVk6ICd0b3AnXG4gICAgfSxcbiAgICB7XG4gICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xuICAgIH1cbiAgXVwiIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJpc0V4cGFuZGVkXCIgKGRldGFjaCk9XCJpc0V4cGFuZGVkID0gZmFsc2VcIj5cbiAgICA8ZGl2ICNkcm9wZG93bkV4cGFuc2lvbiBjbGFzcz1cImRyb3AtZG93bi1tZW51LWl0ZW0td3JhcHBlclwiPlxuICAgICAgPGRpdiAqbmdJZj1cIm11bHRpc2VsZWN0ICYmIHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXkgPT0gJ2NoaXAnXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcy1jb250YWluZXIgY2hpcCBmbGV4XCI+XG4gICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRPcHRpb25MYWJlbHM7IGluZGV4IGFzIGlcIiBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW0tY2hpcCBmbGV4XCI+XG4gICAgICAgICAgICA8c3Bhbj57e2l0ZW19fTwvc3Bhbj5cbiAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIChjbGljayk9XCJvbk11bHRpc2VsZWN0SXRlbUNsb3NlZChpLCAkZXZlbnQpXCIgaWNvbj1cImNsb3NlLWNpcmNsZS1mdWxsXCIgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICAgIDwhLS0gPHN2ZyAoY2xpY2spPVwib25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaSwgJGV2ZW50KVwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMTAgMTBcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTUuMDAwNjUgOS4zMzMzM0M3LjMwMTg0IDkuMzMzMzMgOS4xNjczMiA3LjQ2Nzg1IDkuMTY3MzIgNS4xNjY2N0M5LjE2NzMyIDIuODY1NDggNy4zMDE4NCAxIDUuMDAwNjUgMUMyLjY5OTQ2IDEgMC44MzM5ODQgMi44NjU0OCAwLjgzMzk4NCA1LjE2NjY3QzAuODMzOTg0IDcuNDY3ODUgMi42OTk0NiA5LjMzMzMzIDUuMDAwNjUgOS4zMzMzM1pcIlxuICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4yNSAzLjkxNzk3TDMuNzUgNi40MTc5N1wiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMy43NSAzLjkxNzk3TDYuMjUgNi40MTc5N1wiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXkgIT0gJ2NoaXAnXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcy1jb250YWluZXIgbm9ybWFsXCI+XG4gICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRPcHRpb25MYWJlbHM7IGluZGV4IGFzIGlcIiBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW1cIj5cbiAgICAgICAgICAgIHt7aSAhPT0gc2VsZWN0ZWRPcHRpb25MYWJlbHMubGVuZ3RoIC0gMT8gaXRlbSArICcsICc6aXRlbX19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImFsbG93U2VsZWN0QWxsIHx8IGZpbHRlclwiIGNsYXNzPVwiYWN0aW9ucy1zZWN0aW9uIGZsZXhcIj5cbiAgICAgICAgPGlucHV0ICpuZ0lmPVwiYWxsb3dTZWxlY3RBbGxcIiAoY2xpY2spPVwib25TZWxlY3RBbGwoJGV2ZW50KVwiIHR5cGU9XCJjaGVja2JveFwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRBbGxcIlxuICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWNoZWNrYm94XCIgLz5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3QtYWxsLWNhcHRpb25cIiAqbmdJZj1cImFsbG93U2VsZWN0QWxsICYmICFmaWx0ZXJcIj5TZWxlY3QgQWxsPC9zcGFuPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyXCIgW25nQ2xhc3NdPVwieydmb2N1c2VkJzogaXNJbnB1dEZvY3VzZWR9XCIgdGFiaW5kZXg9XCIwXCIgKGZvY3VzKT1cIm9uU2VhcmNoRm9jdXMoKVwiXG4gICAgICAgICAgKGJsdXIpPVwib25TZWFyY2hCbHVyKClcIiBjbGFzcz1cInNlYXJjaC1zZWN0aW9uIGZsZXhcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlYXJjaC1pY29uIGZsZXhcIj5cbiAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIGljb249XCJzZWFyY2hcIiBzdHJva2U9XCIjNjQ3NDhiXCIgW3dpZHRoXT1cIjE1XCIgW2hlaWdodF09XCIxNVwiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICAgIDwhLS0gPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCI5XCIgcj1cIjhcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgZmlsbD1cIm5vbmVcIj48L2NpcmNsZT5cbiAgICAgICAgICAgICAgPGxpbmUgeDE9XCIxNFwiIHkxPVwiMTRcIiB4Mj1cIjE5XCIgeTI9XCIxOVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIj48L2xpbmU+XG4gICAgICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGhpcy5zZWxlY3RlZENvbnRleHRzW3RoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggLSAxXVwiIGNsYXNzPVwic2VhcmNoLWNvbnRleHRcIj5cbiAgICAgICAgICAgIHt7dGhpcy5nZXRPcHRpb25MYWJlbCh0aGlzLnNlbGVjdGVkQ29udGV4dHNbdGhpcy5zZWxlY3RlZENvbnRleHRzLmxlbmd0aCAtIDFdKX19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8aW5wdXQgKGlucHV0KT1cIm9uU2VhcmNoKCRldmVudClcIiBbKG5nTW9kZWwpXT1cInNlYXJjaENvbnRleHRcIiAoZm9jdXMpPVwib25JbnB1dEZvY3VzKClcIlxuICAgICAgICAgICAgICAoYmx1cik9XCJvbklucHV0Qmx1cigpXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBjbGFzcz1cInNlYXJjaC1pbnB1dFwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd0hvcml6b250YWxMaW5lXCIgY2xhc3M9XCJjb2xvcmVkLXVuZGVybGluZS1zZWN0aW9uXCI+XG4gICAgICAgIDxociBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJob3Jpem9udGFsTGluZUNvbG9yXCIgY2xhc3M9XCJjb2xvcmVkLXVuZGVybGluZVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkcm9wLWRvd24tbWVudS1pdGVtXCI+XG4gICAgICAgIDxkcm9wLWRvd24taXRlbSBbaXRlbVRlbXBsYXRlXT1cIml0ZW1UZW1wbGF0ZVwiIFtncm91cFRlbXBsYXRlXT1cImdyb3VwVGVtcGxhdGVcIiBbYWN0aXZlSXRlbV09XCJzZWxlY3RlZE9wdGlvblwiXG4gICAgICAgICAgW2FjdGl2ZUl0ZW1zXT1cInNlbGVjdGVkT3B0aW9uc1wiIFttdWx0aXNlbGVjdF09XCJtdWx0aXNlbGVjdFwiIFtvcHRpb25WYWx1ZV09XCJvcHRpb25WYWx1ZVwiXG4gICAgICAgICAgW29wdGlvbkxhYmVsXT1cIm9wdGlvbkxhYmVsXCIgW29wdGlvblN1YkxhYmVsXT1cIm9wdGlvblN1YkxhYmVsXCIgW3NlbGVjdEtleV09XCJzZWxlY3RLZXlcIlxuICAgICAgICAgIFtsb2FkTW9yZUNhcHRpb25dPVwibG9hZE1vcmVDYXB0aW9uXCIgW29wdGlvbnNdPVwib3B0aW9uc1wiIFtncm91cF09XCJncm91cFwiIFtvbkV4cGFuZF09XCJleHBhbmRNZW51LmJpbmQodGhpcylcIlxuICAgICAgICAgIFtvbkxvYWRNb3JlXT1cImxvYWRNb3JlTWVudUl0ZW1zLmJpbmQodGhpcylcIiBbb25TZWxlY3RdPVwib25TZWxlY3QuYmluZCh0aGlzKVwiPjwvZHJvcC1kb3duLWl0ZW0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJsYXp5TG9hZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWUtbW9yZS1jb250YWluZXIgZmxleCBqdXN0aWZ5LWVuZFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWUtbW9yZS1jYXB0aW9uXCIgKGNsaWNrKT1cImxvYWRNb3JlKClcIj57e2xvYWRNb3JlQ2FwdGlvbn19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImlzTG9hZGluZ1wiIGNsYXNzPVwibG9hZGluZy1vdmVybGF5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxvYWRlclwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
|