@tsi-developpement/tsi-shared-ui 1.10.2 → 1.10.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/functions/index.mjs +2 -1
- package/esm2022/lib/functions/number.functions.mjs +93 -0
- package/esm2022/lib/guards/index.mjs +1 -2
- package/esm2022/lib/tsi-components/create-or-edit-modele-import/create-or-edit-modele-import.component.mjs +3 -3
- package/esm2022/lib/tsi-components/input-components/editable-grid/editable-grid.component.mjs +5 -14
- package/esm2022/lib/tsi-components/output-components/tsi-display-grid/tsi-display-grid.component.mjs +4 -6
- package/esm2022/lib/tsi-components/output-components/tsi-view-grid/tsi-view-grid.component.mjs +3 -6
- package/fesm2022/tsi-developpement-tsi-shared-ui.mjs +218 -172
- package/fesm2022/tsi-developpement-tsi-shared-ui.mjs.map +1 -1
- package/lib/consts/app-providers.d.ts +1 -1
- package/lib/functions/index.d.ts +1 -0
- package/lib/functions/number.functions.d.ts +49 -0
- package/lib/guards/index.d.ts +0 -1
- package/lib/providers/shared-ui-tsi.provider.d.ts +1 -1
- package/package.json +1 -1
- package/esm2022/lib/guards/admin.guard.mjs +0 -37
- package/lib/guards/admin.guard.d.ts +0 -14
package/esm2022/lib/tsi-components/output-components/tsi-display-grid/tsi-display-grid.component.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
2
|
import { DisplayTypes, GridSelectionMode } from '../../../enums';
|
|
3
|
+
import { preciseSum } from '../../../functions';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
import * as i1 from "@angular/common";
|
|
5
6
|
import * as i2 from "primeng/button";
|
|
@@ -56,13 +57,10 @@ export class TsiDisplayGridComponent {
|
|
|
56
57
|
return this.gridData ? this.gridData : [];
|
|
57
58
|
}
|
|
58
59
|
getSummary(col) {
|
|
59
|
-
let sum = 0;
|
|
60
60
|
if (col.haveSummary == true) {
|
|
61
|
-
this.gridData
|
|
62
|
-
sum += row[col.field];
|
|
63
|
-
});
|
|
61
|
+
return preciseSum((this.gridData ?? []).map((row) => row[col.field]));
|
|
64
62
|
}
|
|
65
|
-
return
|
|
63
|
+
return 0;
|
|
66
64
|
}
|
|
67
65
|
onSelectedItemsChanged() {
|
|
68
66
|
if (this.selectKeyOnly) {
|
|
@@ -136,4 +134,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
136
134
|
}], buttonColumnClicked: [{
|
|
137
135
|
type: Output
|
|
138
136
|
}] } });
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWRpc3BsYXktZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvb3V0cHV0LWNvbXBvbmVudHMvdHNpLWRpc3BsYXktZ3JpZC90c2ktZGlzcGxheS1ncmlkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9vdXRwdXQtY29tcG9uZW50cy90c2ktZGlzcGxheS1ncmlkL3RzaS1kaXNwbGF5LWdyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRakUsTUFBTSxPQUFPLHVCQUF1QjtJQUxwQztRQVNFLGlCQUFZLEdBQUcsWUFBWSxDQUFDO1FBQzVCLHNCQUFpQixHQUFlLEVBQUUsQ0FBQztRQUNuQyxjQUFTLEdBQVEsS0FBSyxDQUFDO1FBRXZCLDhCQUF5QixHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQztRQUV2RCxZQUFZO1FBRVosZ0JBQWdCO1FBRVAsWUFBTyxHQUFzQixFQUFFLENBQUM7UUFDaEMsZUFBVSxHQUFXLElBQUksQ0FBQztRQUMxQixXQUFNLEdBQVEsbUJBQW1CLENBQUM7UUFDbEMsUUFBRyxHQUFXLEtBQUssQ0FBQztRQUNwQixhQUFRLEdBQWdCLEVBQUUsQ0FBQztRQUkzQixtQkFBYyxHQUFhLEtBQUssQ0FBQztRQUNqQyxrQkFBYSxHQUFZLElBQUksQ0FBQztRQUM5QixrQkFBYSxHQUE0QixpQkFBaUIsQ0FB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QkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUlJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGlzcGxheVR5cGVzLCBHcmlkU2VsZWN0aW9uTW9kZSB9IGZyb20gJy4uLy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgR3JpZENvbHVtbiwgQnV0dG9uQ2xpY2tSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnVHNpLURpc3BsYXktR3JpZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RzaS1kaXNwbGF5LWdyaWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RzaS1kaXNwbGF5LWdyaWQuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRzaURpc3BsYXlHcmlkQ29tcG9uZW50IHtcclxuXHJcbiAgLy8jcmVnaW9uIGxvY2FsIHZhcnNcclxuICBmaWVsZHM/OiBzdHJpbmdbXTtcclxuICBkaXNwbGF5VHlwZXMgPSBEaXNwbGF5VHlwZXM7XHJcbiAgc2VsZWN0ZWRGdWxsSXRlbXM6IEFycmF5PGFueT4gPSBbXTtcclxuICBzZWxlY3RBbGw6IGFueSA9IGZhbHNlO1xyXG4gIGtleXdvcmQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBtdWx0aXBsZUdyaWRTZWxlY3Rpb25Nb2RlID0gR3JpZFNlbGVjdGlvbk1vZGUuTXVsdGlwbGU7XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gaW5wdXRzXHJcblxyXG4gIEBJbnB1dCgpIGNvbHVtbnM6IEFycmF5PEdyaWRDb2x1bW4+ID0gW107XHJcbiAgQElucHV0KCkgc2hvd0hlYWRlcjpib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBoZWFkZXI6c3RyaW5nPVwiTGlzdF9kZXNfZWxlbWVudHNcIjtcclxuICBASW5wdXQoKSBrZXk6IHN0cmluZyA9ICd1aWQnO1xyXG4gIEBJbnB1dCgpIGdyaWREYXRhPzogQXJyYXk8YW55PiA9IFtdO1xyXG4gIEBJbnB1dCgpIGdyaWRTdW1tYXJ5RGF0YTogYW55O1xyXG5cclxuICBASW5wdXQoKSBpc1RhYmxlTG9hZGluZz86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc2hvd0hhdmVTdW1hcnk/OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2VsZWN0S2V5T25seTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2VsZWN0aW9uTW9kZTogR3JpZFNlbGVjdGlvbk1vZGUgfCBhbnkgPSBHcmlkU2VsZWN0aW9uTW9kZS5Ob25lO1xyXG5cclxuICBASW5wdXQoKSBwYXJlbnQ6IGFueTtcclxuXHJcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIEBJbnB1dCgpIHNob3dGaWx0ZXJzOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93U29ydDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgcGFnaW5hdG9yOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93U3VtbWFyeUZvb3RlcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgZ2xvYmFsRmlsdGVyRmllbGRzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIG91dHB1dHNcclxuICBAT3V0cHV0KCkgcm93Q2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByb3dEb3VibGVDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBcnJheTxhbnk+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8YW55Pj4oKTtcclxuICBAT3V0cHV0KCkgYnV0dG9uQ29sdW1uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPEJ1dHRvbkNsaWNrUmVzdWx0PiA9IG5ldyBFdmVudEVtaXR0ZXI8QnV0dG9uQ2xpY2tSZXN1bHQ+KCk7XHJcbiAgLy8jZW5kcmVnaW9uXHJcbiAgdG90YWxDb3VudCgpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMuZ3JpZERhdGEgIT0gbnVsbCAmJiB0aGlzLmdyaWREYXRhICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ncmlkRGF0YS5sZW5ndGg7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldERhdGEoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLmdyaWREYXRhID8gdGhpcy5ncmlkRGF0YSA6IFtdO1xyXG4gIH1cclxuICBnZXRTdW1tYXJ5KGNvbDogR3JpZENvbHVtbik6IG51bWJlciB7XHJcbiAgICBsZXQgc3VtID0gMDtcclxuICAgIGlmIChjb2wuaGF2ZVN1bW1hcnkgPT0gdHJ1ZSkge1xyXG5cclxuICAgICAgdGhpcy5ncmlkRGF0YT8uZm9yRWFjaCgocm93OiBhbnkpID0+IHtcclxuICAgICAgICBzdW0gKz0gcm93W2NvbC5maWVsZF07XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3VtO1xyXG4gIH1cclxuICBvblNlbGVjdGVkSXRlbXNDaGFuZ2VkKCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0S2V5T25seSkge1xyXG4gICAgICBsZXQga2V5czogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRnVsbEl0ZW1zLmZvckVhY2godiA9PiB7IGtleXMucHVzaCh2W3RoaXMua2V5XSkgfSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KGtleXMpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRGdWxsSXRlbXMpO1xyXG4gICAgfVxyXG4gIH1cclxuICBvblNlbGVjdEFsbENoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdEFsbCA9IGV2ZW50LmNoZWNrZWQ7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RBbGwpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZ1bGxJdGVtcyA9IHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGdWxsSXRlbXMgPSBbXTtcclxuICAgIH1cclxuICAgIHRoaXMub25TZWxlY3RlZEl0ZW1zQ2hhbmdlZCgpO1xyXG4gIH1cclxuICBidXR0b25DbGlja2VkKGtleTogc3RyaW5nLCBmaWVsZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmJ1dHRvbkNvbHVtbkNsaWNrZWQuZW1pdCh7IGZpZWxkOiBmaWVsZCwga2V5OiBrZXkgLCBzZWxlY3RLZXlPbmx5OiB0aGlzLnNlbGVjdEtleU9ubHl9KTtcclxuICB9XHJcbn1cclxuIiwiPHAtdGFibGUgI2R0MSBkYXRhS2V5PVwie3trZXl9fVwiIFsoc2VsZWN0QWxsKV09XCJzZWxlY3RBbGxcIiBbc2VsZWN0aW9uTW9kZV09XCJzZWxlY3Rpb25Nb2RlXCIgWyhzZWxlY3Rpb24pXT1cInNlbGVjdGVkRnVsbEl0ZW1zXCJcclxuKG9uUm93VW5zZWxlY3QpPVwib25TZWxlY3RlZEl0ZW1zQ2hhbmdlZCgpXCIgKHNlbGVjdEFsbENoYW5nZSk9XCJvblNlbGVjdEFsbENoYW5nZSgkZXZlbnQpXCIgKG9uUm93U2VsZWN0KT1cIm9uU2VsZWN0ZWRJdGVtc0NoYW5nZWQoKVwiXHJcbiBbdG90YWxSZWNvcmRzXT1cInRvdGFsQ291bnQoKVwiIFtyZW9yZGVyYWJsZUNvbHVtbnNdPVwidHJ1ZVwiIFtjb2x1bW5zXT1cImNvbHVtbnNcIiBbcGFnaW5hdG9yXT1cInBhZ2luYXRvclwiIFtyb3dzXT1cIjEwXCJcclxuICAgIFt2YWx1ZV09XCJnZXREYXRhKClcIiBbZ2xvYmFsRmlsdGVyRmllbGRzXT1cImdsb2JhbEZpbHRlckZpZWxkcyA/PyBbXVwiIFtyZXNpemFibGVDb2x1bW5zXT1cInRydWVcIiBbc2Nyb2xsYWJsZV09XCJ0cnVlXCIgYXBwZW5kVG89XCJib2R5XCIgc3R5bGVDbGFzcz1cInAtZGF0YXRhYmxlLXNtIHAtZGF0YXRhYmxlLWdyaWRsaW5lc1wiXHJcbiAgICBjb2x1bW5SZXNpemVNb2RlPVwiZXhwYW5kXCIgc2Nyb2xsSGVpZ2h0PVwiNjAwcHhcIj5cclxuICAgIDwhLS0gPG5nLXRlbXBsYXRlICpuZ0lmPVwic2hvd0hlYWRlclwiIHBUZW1wbGF0ZT1cImNhcHRpb25cIj5cclxuICAgICAgICB7e2hlYWRlciB8IGxvY2FsaXplfX1cclxuICAgIDwvbmctdGVtcGxhdGU+IC0tPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNhcHRpb25cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0hlYWRlclwiPlxyXG4gICAgICAgICAgICB7e2hlYWRlciB8IGxvY2FsaXplfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInAtaW5wdXQtaWNvbi1sZWZ0IG1sLWF1dG9cIj5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cclxuICAgICAgICAgICAgICA8aW5wdXQgcElucHV0VGV4dCBzdHlsZT1cInBhZGRpbmctbGVmdDogMi41cmVtIWltcG9ydGFudDsgXCIgY2xhc3M9XCJwLWlucHV0dGV4dCBwLWNvbXBvbmVudCBwLWVsZW1lbnQgcC1maWxsZWRcIiB0eXBlPVwidGV4dFwiICNmaWx0ZXJHbG9iYWxJbnB1dCAoaW5wdXQpPVwiZHQxLmZpbHRlckdsb2JhbChmaWx0ZXJHbG9iYWxJbnB1dC52YWx1ZSwgJ2NvbnRhaW5zJylcIiBwbGFjZWhvbGRlcj1cInt7JycgfCBsb2NhbGl6ZX19XCIgLz5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiBsZXQtY29sdW1ucz5cclxuICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgIDx0aCAqbmdJZj1cInNlbGVjdGlvbk1vZGUgPT0gbXVsdGlwbGVHcmlkU2VsZWN0aW9uTW9kZVwiIHN0eWxlPVwid2lkdGg6IDRyZW1cIj5cclxuICAgICAgICAgICAgICAgIDxwLXRhYmxlSGVhZGVyQ2hlY2tib3g+PC9wLXRhYmxlSGVhZGVyQ2hlY2tib3g+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBwRnJvemVuQ29sdW1uICpuZ0lmPVwic2hvd0hhdmVTdW1hcnlcIiBzY29wZT1cImNvbFwiIHN0eWxlPVwid2lkdGg6M3JlbVwiPjwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBwRnJvemVuQ29sdW1uIFtmcm96ZW5dPVwiY29sLmlzRnJvemVuXCIgc2NvcGU9XCJjb2xcIiBbc3R5bGUud2lkdGhdPVwiY29sLmlzQnV0dG9uID8gJzRyZW0nIDogKGNvbC53aWR0aD8gY29sLndpZHRoLmdldENTU1ZhbHVlKCkgOiAnJylcIiBbc3R5bGVdPVwiY29sLnN0eWxlXCIgcFRvb2x0aXA9XCJ7e2NvbC50b29sVGlwVGV4dCB8IGxvY2FsaXplIH19XCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCIgcFJlb3JkZXJhYmxlQ29sdW1uIHBTb3J0YWJsZUNvbHVtbj1cInt7Y29sLmZpZWxkfX1cIj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY29sLmlzQnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwicC0wIG0tMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjb2wgcC0wIG0tMFwiPnt7IGNvbC5oZWFkZXIgfCBsb2NhbGl6ZSB9fVxyXG5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY29sLWZpeGVkIHAtMCBtLTBcIiBzdHlsZT1cIndpZHRoOiAxcmVtXCI+PHAtc29ydEljb24gY2xhc3M9XCJ3LTFyZW0gbS0wIHAtMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBmaWVsZD1cInt7Y29sLmZpZWxkfX1cIj48L3Atc29ydEljb24+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8L3RhYmxlPlxyXG5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC90aD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICAgIDx0ciAgKm5nSWY9XCJzaG93RmlsdGVyczsgZWxzZSBub3RTaG93RmlsdGVyc1wiPlxyXG4gICAgICAgICAgPHRoICpuZ0lmPVwic2VsZWN0aW9uTW9kZSA9PSBtdWx0aXBsZUdyaWRTZWxlY3Rpb25Nb2RlXCIgc3R5bGU9XCJ3aWR0aDogNHJlbVwiPlxyXG5cclxuICAgICAgPC90aD5cclxuICAgICAgICAgICAgPHRoIHBGcm96ZW5Db2x1bW4gY2xhc3M9XCJzdGlja1wiICpuZ0lmPVwic2hvd0hhdmVTdW1hcnlcIiBzdHlsZT1cIndpZHRoOjNyZW1cIj48L3RoPlxyXG4gICAgICAgICAgICA8dGggcEZyb3plbkNvbHVtbiBbZnJvemVuXT1cImNvbC5pc0Zyb3plblwiIHNjb3BlPVwiY29sXCIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCI+XHJcbiAgICAgICAgICAgICAgPHAtY29sdW1uRmlsdGVyICpuZ0lmPVwiIWNvbC5pc0J1dHRvblwiIHR5cGU9XCJ0ZXh0XCIgZmllbGQ9XCJ7e2NvbC5maWVsZH19XCI+PC9wLWNvbHVtbkZpbHRlcj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICA8L3RyPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI25vdFNob3dGaWx0ZXJzPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPHRoIHBGcm96ZW5Db2x1bW4gY2xhc3M9XCJzdGlja1wiICpuZ0lmPVwic2hvd0hhdmVTdW1hcnlcIiBzdHlsZT1cIndpZHRoOjNyZW1cIj48L3RoPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1pdGVtIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiIGxldC1pbmRleD1cInJvd0luZGV4XCI+XHJcbiAgICAgICAgPHRyIFtwUmVvcmRlcmFibGVSb3ddPVwiaW5kZXhcIj5cclxuICAgICAgICAgICAgPHRkICpuZ0lmPVwic2VsZWN0aW9uTW9kZSA9PSBtdWx0aXBsZUdyaWRTZWxlY3Rpb25Nb2RlXCI+XHJcbiAgICAgICAgICAgICAgICA8cC10YWJsZUNoZWNrYm94IFt2YWx1ZV09XCJpdGVtXCI+PC9wLXRhYmxlQ2hlY2tib3g+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBwRnJvemVuQ29sdW1uICpuZ0lmPVwic2hvd0hhdmVTdW1hcnlcIiBzY29wZT1cImNvbFwiIHN0eWxlPVwid2lkdGg6M3JlbVwiPjwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBwVG9vbHRpcD1cInt7Y29sLnRvb2xUaXBUZXh0IHwgbG9jYWxpemUgfX1cIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIiBwRnJvemVuQ29sdW1uIFtmcm96ZW5dPVwiY29sLmlzRnJvemVuXCIgc3R5bGU9XCJ3aWR0aDogbWF4LWNvbnRlbnRcIiAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1DdXJyZW5jeS1Tb2NpZXRlLUlucHV0IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2wudHlwZSA9PSBkaXNwbGF5VHlwZXMuQ1VSUkVOQ1lfU09DSUVURV9ESVNQTEFZOyBlbHNlIGN1cnJlbmN5T3RoZXJPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktU29jaWV0ZS1EaXNwbGF5IFtpbnB1dERhdGFdPVwiaXRlbVtjb2wuZmllbGRdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktQ3VycmVuY3ktU29jaWV0ZS1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLUN1cnJlbmN5LU90aGVyLUlucHV0IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjdXJyZW5jeU90aGVyT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGRpc3BsYXlUeXBlcy5DVVJSRU5DWV9PVEhFUl9ESVNQTEFZOyBlbHNlIGRhdGVQaWNrZXJPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8VHNpLUN1cnJlbmN5LU90aGVyLURpc3BsYXkgW2N1cnJlbmN5XT1cImNvbC5jdXJyZW5jeU90aGVyQ29kZVwiIFtpbnB1dERhdGFdPVwiaXRlbVtjb2wuZmllbGRdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVHNpLUN1cnJlbmN5LU90aGVyLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLURhdGUtUGlja2VyIC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkYXRlUGlja2VyT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGRpc3BsYXlUeXBlcy5EQVRFX0RJU1BMQVk7IGVsc2UgY2hlY2tCb3hPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8VHNpLURhdGUtRGlzcGxheSBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L1RzaS1EYXRlLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLUNoZWNrQm94IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjaGVja0JveE91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBkaXNwbGF5VHlwZXMuQ0hFQ0tCT1hfRElTUExBWTsgZWxzZSBkZWNpbWFsT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1DaGVja2JveC1EaXNwbGF5IFtpbnB1dERhdGFdPVwiaXRlbVtjb2wuZmllbGRdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVHNpLUNoZWNrYm94LURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLURlY2ltYWwtSW5wdXQgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlY2ltYWxPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gZGlzcGxheVR5cGVzLkRFQ0lNQUxfRElTUExBWTsgZWxzZSBpbnRlZ2VyT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1EZWNpbWFsLURpc3BsYXkgW2Zvcm1hdERlY2ltYWxdPVwiY29sLmZvcm1hdERlY2ltYWxcIiBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiIFtudW1PZkRlY2ltYWxdPVwiY29sLm51bU9mRGVjaW1hbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L1RzaS1EZWNpbWFsLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLUludGVnZXIgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ludGVnZXJPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gZGlzcGxheVR5cGVzLklOVEVHRVJfRElTUExBWTsgZWxzZSByYXRlT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1JbnRlZ2VyLURpc3BsYXkgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Uc2ktSW50ZWdlci1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1SYXRlLUlucHV0IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNyYXRlT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGRpc3BsYXlUeXBlcy5SQVRFX0RJU1BMQVk7IGVsc2UgZGlzcGxheUJ1dHRvbkJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUc2ktUmF0ZS1EaXNwbGF5IFtpc0ZyYWN0aW9uXT1cImNvbC5pc0ZyYWN0aW9uXCIgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIiBbbnVtT2ZEZWNpbWFsXT1cImNvbC5udW1PZkRlY2ltYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Uc2ktUmF0ZS1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIEJ1dHRvbiAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGlzcGxheUJ1dHRvbkJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmlzQnV0dG9uOyBlbHNlIGRlZmF1bHRUZXh0T3V0cHV0QmxvY2tcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicC0wXCIgcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBpY29uPVwie3tjb2wuYnV0dG9uSWNvbn19XCIgY2xhc3M9XCJ7e2NvbC5zdHlsZUNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYnV0dG9uQ2xpY2tlZChpdGVtW2tleV0sIGNvbC5maWVsZClcIj57e2NvbC5idXR0b25MYWJlbCB8IGxvY2FsaXplfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLVRleHQtQm94IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGV4dE91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtW2NvbC5maWVsZF19fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInNob3dIYXZlU3VtYXJ5XCIgcFRlbXBsYXRlPVwiZm9vdGVyXCIgbGV0LWNvbHVtbnM+XHJcbiAgICAgICAgPHRyIGNsYXNzPVwidGZvb3RlclwiPlxyXG4gICAgICAgICAgICA8dGQgcEZyb3plbkNvbHVtbiBzY29wZT1cImNvbFwiIHN0eWxlPVwid2lkdGg6M3JlbVwiPlRvdGFsczwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBwRnJvemVuQ29sdW1uIFtmcm96ZW5dPVwiY29sLmlzRnJvemVuXCIgW3N0eWxlXT1cImNvbC5zdHlsZVwiIHNjb3BlPVwiY29sXCJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbC5oYXZlU3VtbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVHNpLUN1cnJlbmN5LVNvY2lldGUtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sLnR5cGUgPT0gZGlzcGxheVR5cGVzLkNVUlJFTkNZX1NPQ0lFVEVfRElTUExBWTsgZWxzZSBjdXJyZW5jeU90aGVyT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1DdXJyZW5jeS1Tb2NpZXRlLURpc3BsYXkgW2lucHV0RGF0YV09XCJnZXRTdW1tYXJ5KGNvbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Uc2ktQ3VycmVuY3ktU29jaWV0ZS1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFRzaS1DdXJyZW5jeS1PdGhlci1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY3VycmVuY3lPdGhlck91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gZGlzcGxheVR5cGVzLkNVUlJFTkNZX09USEVSX0RJU1BMQVk7IGVsc2UgZGVjaW1hbE91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHNpLUN1cnJlbmN5LU90aGVyLURpc3BsYXkgW2N1cnJlbmN5XT1cImNvbC5jdXJyZW5jeU90aGVyQ29kZVwiIFtpbnB1dERhdGFdPVwiZ2V0U3VtbWFyeShjb2wpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RzaS1DdXJyZW5jeS1PdGhlci1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFRzaS1EZWNpbWFsLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWNpbWFsT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBkaXNwbGF5VHlwZXMuREVDSU1BTF9ESVNQTEFZOyBlbHNlIGludGVnZXJPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1EZWNpbWFsLURpc3BsYXkgW2Zvcm1hdERlY2ltYWxdPVwiY29sLmZvcm1hdERlY2ltYWxcIiBbaW5wdXREYXRhXT1cImdldFN1bW1hcnkoY29sKVwiIFtudW1PZkRlY2ltYWxdPVwiY29sLm51bU9mRGVjaW1hbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Uc2ktRGVjaW1hbC1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFRzaS1JbnRlZ2VyLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpbnRlZ2VyT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBkaXNwbGF5VHlwZXMuSU5URUdFUl9ESVNQTEFZOyBlbHNlIHJhdGVPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1JbnRlZ2VyLURpc3BsYXkgW2lucHV0RGF0YV09XCJnZXRTdW1tYXJ5KGNvbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVHNpLUludGVnZXItRGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBUc2ktUmF0ZS1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmF0ZU91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gZGlzcGxheVR5cGVzLlJBVEVfRElTUExBWTsgZWxzZSBkZWZhdWx0VGV4dE91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHNpLVJhdGUtRGlzcGxheSBbaXNGcmFjdGlvbl09XCJjb2wuaXNGcmFjdGlvblwiIFtpbnB1dERhdGFdPVwiZ2V0U3VtbWFyeShjb2wpXCIgW251bU9mRGVjaW1hbF09XCJjb2wubnVtT2ZEZWNpbWFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RzaS1SYXRlLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gRGVmYXVsdCAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUZXh0T3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2dldFN1bW1hcnkoY29sKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInNob3dTdW1tYXJ5Rm9vdGVyXCIgcFRlbXBsYXRlPVwic3VtbWFyeVwiPlxyXG4gICAgICAgIFRoZXJlIGFyZSB7e3RvdGFsQ291bnQoKX19XHJcbiAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9wLXRhYmxlPlxyXG4iXX0=
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWRpc3BsYXktZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvb3V0cHV0LWNvbXBvbmVudHMvdHNpLWRpc3BsYXktZ3JpZC90c2ktZGlzcGxheS1ncmlkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9vdXRwdXQtY29tcG9uZW50cy90c2ktZGlzcGxheS1ncmlkL3RzaS1kaXNwbGF5LWdyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBUWhELE1BQU0sT0FBTyx1QkFBdUI7SUFMcEM7UUFTRSxpQkFBWSxHQUFHLFlBQVksQ0FBQztRQUM1QixzQkFBaUIsR0FBZSxFQUFFLENBQUM7UUFDbkMsY0FBUyxHQUFRLEtBQUssQ0FBQztRQUV2Qiw4QkFBeUIsR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLENBQUM7UUFFdkQsWUFBWTtRQUVaLGdCQUFnQjtRQUVQLFlBQU8sR0FBc0IsRUFBRSxDQUFDO1FBQ2hDLGVBQVUsR0FBVyxJQUFJLENBQUM7UUFDMUIsV0FBTSxHQUFRLG1CQUFtQixDQUFDO1FBQ2xDLFFBQUcsR0FBVyxLQUFLLENBQUM7UUFDcEIsYUFBUSxHQUFnQixFQUFFLENBQUM7UUFJM0IsbUJBQWMsR0FBYSxLQUFLLENBQUM7UUFDakMsa0JBQWEs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QkFDRSxrQkFBa0I7OEJBa0JuQixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBSUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEaXNwbGF5VHlwZXMsIEdyaWRTZWxlY3Rpb25Nb2RlIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBwcmVjaXNlU3VtIH0gZnJvbSAnLi4vLi4vLi4vZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgR3JpZENvbHVtbiwgQnV0dG9uQ2xpY2tSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnVHNpLURpc3BsYXktR3JpZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RzaS1kaXNwbGF5LWdyaWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RzaS1kaXNwbGF5LWdyaWQuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRzaURpc3BsYXlHcmlkQ29tcG9uZW50IHtcclxuXHJcbiAgLy8jcmVnaW9uIGxvY2FsIHZhcnNcclxuICBmaWVsZHM/OiBzdHJpbmdbXTtcclxuICBkaXNwbGF5VHlwZXMgPSBEaXNwbGF5VHlwZXM7XHJcbiAgc2VsZWN0ZWRGdWxsSXRlbXM6IEFycmF5PGFueT4gPSBbXTtcclxuICBzZWxlY3RBbGw6IGFueSA9IGZhbHNlO1xyXG4gIGtleXdvcmQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBtdWx0aXBsZUdyaWRTZWxlY3Rpb25Nb2RlID0gR3JpZFNlbGVjdGlvbk1vZGUuTXVsdGlwbGU7XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gaW5wdXRzXHJcblxyXG4gIEBJbnB1dCgpIGNvbHVtbnM6IEFycmF5PEdyaWRDb2x1bW4+ID0gW107XHJcbiAgQElucHV0KCkgc2hvd0hlYWRlcjpib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBoZWFkZXI6c3RyaW5nPVwiTGlzdF9kZXNfZWxlbWVudHNcIjtcclxuICBASW5wdXQoKSBrZXk6IHN0cmluZyA9ICd1aWQnO1xyXG4gIEBJbnB1dCgpIGdyaWREYXRhPzogQXJyYXk8YW55PiA9IFtdO1xyXG4gIEBJbnB1dCgpIGdyaWRTdW1tYXJ5RGF0YTogYW55O1xyXG5cclxuICBASW5wdXQoKSBpc1RhYmxlTG9hZGluZz86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc2hvd0hhdmVTdW1hcnk/OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2VsZWN0S2V5T25seTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2VsZWN0aW9uTW9kZTogR3JpZFNlbGVjdGlvbk1vZGUgfCBhbnkgPSBHcmlkU2VsZWN0aW9uTW9kZS5Ob25lO1xyXG5cclxuICBASW5wdXQoKSBwYXJlbnQ6IGFueTtcclxuXHJcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIEBJbnB1dCgpIHNob3dGaWx0ZXJzOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93U29ydDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgcGFnaW5hdG9yOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93U3VtbWFyeUZvb3RlcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgZ2xvYmFsRmlsdGVyRmllbGRzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIG91dHB1dHNcclxuICBAT3V0cHV0KCkgcm93Q2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByb3dEb3VibGVDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBcnJheTxhbnk+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8YW55Pj4oKTtcclxuICBAT3V0cHV0KCkgYnV0dG9uQ29sdW1uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPEJ1dHRvbkNsaWNrUmVzdWx0PiA9IG5ldyBFdmVudEVtaXR0ZXI8QnV0dG9uQ2xpY2tSZXN1bHQ+KCk7XHJcbiAgLy8jZW5kcmVnaW9uXHJcbiAgdG90YWxDb3VudCgpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMuZ3JpZERhdGEgIT0gbnVsbCAmJiB0aGlzLmdyaWREYXRhICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ncmlkRGF0YS5sZW5ndGg7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldERhdGEoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLmdyaWREYXRhID8gdGhpcy5ncmlkRGF0YSA6IFtdO1xyXG4gIH1cclxuICBnZXRTdW1tYXJ5KGNvbDogR3JpZENvbHVtbik6IG51bWJlciB7XHJcbiAgICBpZiAoY29sLmhhdmVTdW1tYXJ5ID09IHRydWUpIHtcclxuICAgICAgcmV0dXJuIHByZWNpc2VTdW0oKHRoaXMuZ3JpZERhdGEgPz8gW10pLm1hcCgocm93OiBhbnkpID0+IHJvd1tjb2wuZmllbGRdKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gMDtcclxuICB9XHJcbiAgb25TZWxlY3RlZEl0ZW1zQ2hhbmdlZCgpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdEtleU9ubHkpIHtcclxuICAgICAgbGV0IGtleXM6IEFycmF5PGFueT4gPSBbXTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZ1bGxJdGVtcy5mb3JFYWNoKHYgPT4geyBrZXlzLnB1c2godlt0aGlzLmtleV0pIH0pO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdChrZXlzKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkRnVsbEl0ZW1zKTtcclxuICAgIH1cclxuICB9XHJcbiAgb25TZWxlY3RBbGxDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RBbGwgPSBldmVudC5jaGVja2VkO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0QWxsKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGdWxsSXRlbXMgPSB0aGlzLmdldERhdGEoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRnVsbEl0ZW1zID0gW107XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uU2VsZWN0ZWRJdGVtc0NoYW5nZWQoKTtcclxuICB9XHJcbiAgYnV0dG9uQ2xpY2tlZChrZXk6IHN0cmluZywgZmllbGQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5idXR0b25Db2x1bW5DbGlja2VkLmVtaXQoeyBmaWVsZDogZmllbGQsIGtleToga2V5ICwgc2VsZWN0S2V5T25seTogdGhpcy5zZWxlY3RLZXlPbmx5fSk7XHJcbiAgfVxyXG59XHJcbiIsIjxwLXRhYmxlICNkdDEgZGF0YUtleT1cInt7a2V5fX1cIiBbKHNlbGVjdEFsbCldPVwic2VsZWN0QWxsXCIgW3NlbGVjdGlvbk1vZGVdPVwic2VsZWN0aW9uTW9kZVwiIFsoc2VsZWN0aW9uKV09XCJzZWxlY3RlZEZ1bGxJdGVtc1wiXHJcbihvblJvd1Vuc2VsZWN0KT1cIm9uU2VsZWN0ZWRJdGVtc0NoYW5nZWQoKVwiIChzZWxlY3RBbGxDaGFuZ2UpPVwib25TZWxlY3RBbGxDaGFuZ2UoJGV2ZW50KVwiIChvblJvd1NlbGVjdCk9XCJvblNlbGVjdGVkSXRlbXNDaGFuZ2VkKClcIlxyXG4gW3RvdGFsUmVjb3Jkc109XCJ0b3RhbENvdW50KClcIiBbcmVvcmRlcmFibGVDb2x1bW5zXT1cInRydWVcIiBbY29sdW1uc109XCJjb2x1bW5zXCIgW3BhZ2luYXRvcl09XCJwYWdpbmF0b3JcIiBbcm93c109XCIxMFwiXHJcbiAgICBbdmFsdWVdPVwiZ2V0RGF0YSgpXCIgW2dsb2JhbEZpbHRlckZpZWxkc109XCJnbG9iYWxGaWx0ZXJGaWVsZHMgPz8gW11cIiBbcmVzaXphYmxlQ29sdW1uc109XCJ0cnVlXCIgW3Njcm9sbGFibGVdPVwidHJ1ZVwiIGFwcGVuZFRvPVwiYm9keVwiIHN0eWxlQ2xhc3M9XCJwLWRhdGF0YWJsZS1zbSBwLWRhdGF0YWJsZS1ncmlkbGluZXNcIlxyXG4gICAgY29sdW1uUmVzaXplTW9kZT1cImV4cGFuZFwiIHNjcm9sbEhlaWdodD1cIjYwMHB4XCI+XHJcbiAgICA8IS0tIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInNob3dIZWFkZXJcIiBwVGVtcGxhdGU9XCJjYXB0aW9uXCI+XHJcbiAgICAgICAge3toZWFkZXIgfCBsb2NhbGl6ZX19XHJcbiAgICA8L25nLXRlbXBsYXRlPiAtLT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjYXB0aW9uXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dIZWFkZXJcIj5cclxuICAgICAgICAgICAge3toZWFkZXIgfCBsb2NhbGl6ZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWlucHV0LWljb24tbGVmdCBtbC1hdXRvXCI+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2hcIj48L2k+XHJcbiAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDIuNXJlbSFpbXBvcnRhbnQ7IFwiIGNsYXNzPVwicC1pbnB1dHRleHQgcC1jb21wb25lbnQgcC1lbGVtZW50IHAtZmlsbGVkXCIgdHlwZT1cInRleHRcIiAjZmlsdGVyR2xvYmFsSW5wdXQgKGlucHV0KT1cImR0MS5maWx0ZXJHbG9iYWwoZmlsdGVyR2xvYmFsSW5wdXQudmFsdWUsICdjb250YWlucycpXCIgcGxhY2Vob2xkZXI9XCJ7eycnIHwgbG9jYWxpemV9fVwiIC8+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCIgbGV0LWNvbHVtbnM+XHJcbiAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8dGggKm5nSWY9XCJzZWxlY3Rpb25Nb2RlID09IG11bHRpcGxlR3JpZFNlbGVjdGlvbk1vZGVcIiBzdHlsZT1cIndpZHRoOiA0cmVtXCI+XHJcbiAgICAgICAgICAgICAgICA8cC10YWJsZUhlYWRlckNoZWNrYm94PjwvcC10YWJsZUhlYWRlckNoZWNrYm94PlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8dGggcEZyb3plbkNvbHVtbiAqbmdJZj1cInNob3dIYXZlU3VtYXJ5XCIgc2NvcGU9XCJjb2xcIiBzdHlsZT1cIndpZHRoOjNyZW1cIj48L3RoPlxyXG4gICAgICAgICAgICA8dGggcEZyb3plbkNvbHVtbiBbZnJvemVuXT1cImNvbC5pc0Zyb3plblwiIHNjb3BlPVwiY29sXCIgW3N0eWxlLndpZHRoXT1cImNvbC5pc0J1dHRvbiA/ICc0cmVtJyA6IChjb2wud2lkdGg/IGNvbC53aWR0aC5nZXRDU1NWYWx1ZSgpIDogJycpXCIgW3N0eWxlXT1cImNvbC5zdHlsZVwiIHBUb29sdGlwPVwie3tjb2wudG9vbFRpcFRleHQgfCBsb2NhbGl6ZSB9fVwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiIHBSZW9yZGVyYWJsZUNvbHVtbiBwU29ydGFibGVDb2x1bW49XCJ7e2NvbC5maWVsZH19XCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbC5pc0J1dHRvblwiPlxyXG4gICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInAtMCBtLTBcIj5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY29sIHAtMCBtLTBcIj57eyBjb2wuaGVhZGVyIHwgbG9jYWxpemUgfX1cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNvbC1maXhlZCBwLTAgbS0wXCIgc3R5bGU9XCJ3aWR0aDogMXJlbVwiPjxwLXNvcnRJY29uIGNsYXNzPVwidy0xcmVtIG0tMCBwLTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZmllbGQ9XCJ7e2NvbC5maWVsZH19XCI+PC9wLXNvcnRJY29uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90YWJsZT5cclxuXHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgICA8dHIgICpuZ0lmPVwic2hvd0ZpbHRlcnM7IGVsc2Ugbm90U2hvd0ZpbHRlcnNcIj5cclxuICAgICAgICAgIDx0aCAqbmdJZj1cInNlbGVjdGlvbk1vZGUgPT0gbXVsdGlwbGVHcmlkU2VsZWN0aW9uTW9kZVwiIHN0eWxlPVwid2lkdGg6IDRyZW1cIj5cclxuXHJcbiAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBwRnJvemVuQ29sdW1uIGNsYXNzPVwic3RpY2tcIiAqbmdJZj1cInNob3dIYXZlU3VtYXJ5XCIgc3R5bGU9XCJ3aWR0aDozcmVtXCI+PC90aD5cclxuICAgICAgICAgICAgPHRoIHBGcm96ZW5Db2x1bW4gW2Zyb3plbl09XCJjb2wuaXNGcm96ZW5cIiBzY29wZT1cImNvbFwiICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiPlxyXG4gICAgICAgICAgICAgIDxwLWNvbHVtbkZpbHRlciAqbmdJZj1cIiFjb2wuaXNCdXR0b25cIiB0eXBlPVwidGV4dFwiIGZpZWxkPVwie3tjb2wuZmllbGR9fVwiPjwvcC1jb2x1bW5GaWx0ZXI+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNub3RTaG93RmlsdGVycz5cclxuICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDx0aCBwRnJvemVuQ29sdW1uIGNsYXNzPVwic3RpY2tcIiAqbmdJZj1cInNob3dIYXZlU3VtYXJ5XCIgc3R5bGU9XCJ3aWR0aDozcmVtXCI+PC90aD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtaXRlbSBsZXQtY29sdW1ucz1cImNvbHVtbnNcIiBsZXQtaW5kZXg9XCJyb3dJbmRleFwiPlxyXG4gICAgICAgIDx0ciBbcFJlb3JkZXJhYmxlUm93XT1cImluZGV4XCI+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cInNlbGVjdGlvbk1vZGUgPT0gbXVsdGlwbGVHcmlkU2VsZWN0aW9uTW9kZVwiPlxyXG4gICAgICAgICAgICAgICAgPHAtdGFibGVDaGVja2JveCBbdmFsdWVdPVwiaXRlbVwiPjwvcC10YWJsZUNoZWNrYm94PlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQgcEZyb3plbkNvbHVtbiAqbmdJZj1cInNob3dIYXZlU3VtYXJ5XCIgc2NvcGU9XCJjb2xcIiBzdHlsZT1cIndpZHRoOjNyZW1cIj48L3RkPlxyXG4gICAgICAgICAgICA8dGQgcFRvb2x0aXA9XCJ7e2NvbC50b29sVGlwVGV4dCB8IGxvY2FsaXplIH19XCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCIgcEZyb3plbkNvbHVtbiBbZnJvemVuXT1cImNvbC5pc0Zyb3plblwiIHN0eWxlPVwid2lkdGg6IG1heC1jb250ZW50XCIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktQ3VycmVuY3ktU29jaWV0ZS1JbnB1dCAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sLnR5cGUgPT0gZGlzcGxheVR5cGVzLkNVUlJFTkNZX1NPQ0lFVEVfRElTUExBWTsgZWxzZSBjdXJyZW5jeU90aGVyT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUN1cnJlbmN5LVNvY2lldGUtRGlzcGxheSBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLUN1cnJlbmN5LVNvY2lldGUtRGlzcGxheT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1DdXJyZW5jeS1PdGhlci1JbnB1dCAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY3VycmVuY3lPdGhlck91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBkaXNwbGF5VHlwZXMuQ1VSUkVOQ1lfT1RIRVJfRElTUExBWTsgZWxzZSBkYXRlUGlja2VyT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1DdXJyZW5jeS1PdGhlci1EaXNwbGF5IFtjdXJyZW5jeV09XCJjb2wuY3VycmVuY3lPdGhlckNvZGVcIiBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L1RzaS1DdXJyZW5jeS1PdGhlci1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1EYXRlLVBpY2tlciAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGF0ZVBpY2tlck91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBkaXNwbGF5VHlwZXMuREFURV9ESVNQTEFZOyBlbHNlIGNoZWNrQm94T3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1EYXRlLURpc3BsYXkgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Uc2ktRGF0ZS1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1DaGVja0JveCAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2hlY2tCb3hPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gZGlzcGxheVR5cGVzLkNIRUNLQk9YX0RJU1BMQVk7IGVsc2UgZGVjaW1hbE91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUc2ktQ2hlY2tib3gtRGlzcGxheSBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L1RzaS1DaGVja2JveC1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1EZWNpbWFsLUlucHV0IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWNpbWFsT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGRpc3BsYXlUeXBlcy5ERUNJTUFMX0RJU1BMQVk7IGVsc2UgaW50ZWdlck91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUc2ktRGVjaW1hbC1EaXNwbGF5IFtmb3JtYXREZWNpbWFsXT1cImNvbC5mb3JtYXREZWNpbWFsXCIgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIiBbbnVtT2ZEZWNpbWFsXT1cImNvbC5udW1PZkRlY2ltYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Uc2ktRGVjaW1hbC1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1JbnRlZ2VyIC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpbnRlZ2VyT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGRpc3BsYXlUeXBlcy5JTlRFR0VSX0RJU1BMQVk7IGVsc2UgcmF0ZU91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUc2ktSW50ZWdlci1EaXNwbGF5IFtpbnB1dERhdGFdPVwiaXRlbVtjb2wuZmllbGRdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVHNpLUludGVnZXItRGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktUmF0ZS1JbnB1dCAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmF0ZU91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBkaXNwbGF5VHlwZXMuUkFURV9ESVNQTEFZOyBlbHNlIGRpc3BsYXlCdXR0b25CbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8VHNpLVJhdGUtRGlzcGxheSBbaXNGcmFjdGlvbl09XCJjb2wuaXNGcmFjdGlvblwiIFtpbnB1dERhdGFdPVwiaXRlbVtjb2wuZmllbGRdXCIgW251bU9mRGVjaW1hbF09XCJjb2wubnVtT2ZEZWNpbWFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVHNpLVJhdGUtRGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBCdXR0b24gLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Rpc3BsYXlCdXR0b25CbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5pc0J1dHRvbjsgZWxzZSBkZWZhdWx0VGV4dE91dHB1dEJsb2NrXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInAtMFwiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgaWNvbj1cInt7Y29sLmJ1dHRvbkljb259fVwiIGNsYXNzPVwie3tjb2wuc3R5bGVDbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJ1dHRvbkNsaWNrZWQoaXRlbVtrZXldLCBjb2wuZmllbGQpXCI+e3tjb2wuYnV0dG9uTGFiZWwgfCBsb2NhbGl6ZX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1UZXh0LUJveCAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRleHRPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbVtjb2wuZmllbGRdfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJzaG93SGF2ZVN1bWFyeVwiIHBUZW1wbGF0ZT1cImZvb3RlclwiIGxldC1jb2x1bW5zPlxyXG4gICAgICAgIDx0ciBjbGFzcz1cInRmb290ZXJcIj5cclxuICAgICAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gc2NvcGU9XCJjb2xcIiBzdHlsZT1cIndpZHRoOjNyZW1cIj5Ub3RhbHM8L3RkPlxyXG4gICAgICAgICAgICA8dGQgcEZyb3plbkNvbHVtbiBbZnJvemVuXT1cImNvbC5pc0Zyb3plblwiIFtzdHlsZV09XCJjb2wuc3R5bGVcIiBzY29wZT1cImNvbFwiXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2wuaGF2ZVN1bW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFRzaS1DdXJyZW5jeS1Tb2NpZXRlLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbC50eXBlID09IGRpc3BsYXlUeXBlcy5DVVJSRU5DWV9TT0NJRVRFX0RJU1BMQVk7IGVsc2UgY3VycmVuY3lPdGhlck91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktU29jaWV0ZS1EaXNwbGF5IFtpbnB1dERhdGFdPVwiZ2V0U3VtbWFyeShjb2wpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVHNpLUN1cnJlbmN5LVNvY2lldGUtRGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBUc2ktQ3VycmVuY3ktT3RoZXItRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2N1cnJlbmN5T3RoZXJPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGRpc3BsYXlUeXBlcy5DVVJSRU5DWV9PVEhFUl9ESVNQTEFZOyBlbHNlIGRlY2ltYWxPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1DdXJyZW5jeS1PdGhlci1EaXNwbGF5IFtjdXJyZW5jeV09XCJjb2wuY3VycmVuY3lPdGhlckNvZGVcIiBbaW5wdXREYXRhXT1cImdldFN1bW1hcnkoY29sKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Uc2ktQ3VycmVuY3ktT3RoZXItRGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBUc2ktRGVjaW1hbC1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVjaW1hbE91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gZGlzcGxheVR5cGVzLkRFQ0lNQUxfRElTUExBWTsgZWxzZSBpbnRlZ2VyT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUc2ktRGVjaW1hbC1EaXNwbGF5IFtmb3JtYXREZWNpbWFsXT1cImNvbC5mb3JtYXREZWNpbWFsXCIgW2lucHV0RGF0YV09XCJnZXRTdW1tYXJ5KGNvbClcIiBbbnVtT2ZEZWNpbWFsXT1cImNvbC5udW1PZkRlY2ltYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVHNpLURlY2ltYWwtRGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBUc2ktSW50ZWdlci1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaW50ZWdlck91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gZGlzcGxheVR5cGVzLklOVEVHRVJfRElTUExBWTsgZWxzZSByYXRlT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUc2ktSW50ZWdlci1EaXNwbGF5IFtpbnB1dERhdGFdPVwiZ2V0U3VtbWFyeShjb2wpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RzaS1JbnRlZ2VyLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVHNpLVJhdGUtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3JhdGVPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGRpc3BsYXlUeXBlcy5SQVRFX0RJU1BMQVk7IGVsc2UgZGVmYXVsdFRleHRPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1SYXRlLURpc3BsYXkgW2lzRnJhY3Rpb25dPVwiY29sLmlzRnJhY3Rpb25cIiBbaW5wdXREYXRhXT1cImdldFN1bW1hcnkoY29sKVwiIFtudW1PZkRlY2ltYWxdPVwiY29sLm51bU9mRGVjaW1hbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Uc2ktUmF0ZS1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIERlZmF1bHQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGV4dE91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tnZXRTdW1tYXJ5KGNvbCl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJzaG93U3VtbWFyeUZvb3RlclwiIHBUZW1wbGF0ZT1cInN1bW1hcnlcIj5cclxuICAgICAgICBUaGVyZSBhcmUge3t0b3RhbENvdW50KCl9fVxyXG4gICAgICAgIDxzcGFuPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvcC10YWJsZT5cclxuIl19
|
package/esm2022/lib/tsi-components/output-components/tsi-view-grid/tsi-view-grid.component.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
2
|
import { Component_Modes, GridSelectionMode, GridSizingMode, GridSortMode, TooltipPosition } from '../../../enums';
|
|
3
|
+
import { preciseSum } from '../../../functions';
|
|
3
4
|
import { TsiGenericGridComponent } from '../tsi-generic-grid/tsi-generic-grid.component';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "../../../services/notification/error-response-manager.service";
|
|
@@ -218,11 +219,7 @@ export class TsiViewGridComponent {
|
|
|
218
219
|
}
|
|
219
220
|
}
|
|
220
221
|
getSummary(col, gridData) {
|
|
221
|
-
|
|
222
|
-
gridData?.forEach((row) => {
|
|
223
|
-
sum += row[col.field];
|
|
224
|
-
});
|
|
225
|
-
return sum;
|
|
222
|
+
return preciseSum((gridData ?? []).map((row) => row[col.field]));
|
|
226
223
|
}
|
|
227
224
|
onSelectedItemsChange(event) {
|
|
228
225
|
this.selectedItemsChange.emit(event);
|
|
@@ -427,4 +424,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
427
424
|
}], getAllPagedResultChanged: [{
|
|
428
425
|
type: Output
|
|
429
426
|
}] } });
|
|
430
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLXZpZXctZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvb3V0cHV0LWNvbXBvbmVudHMvdHNpLXZpZXctZ3JpZC90c2ktdmlldy1ncmlkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9vdXRwdXQtY29tcG9uZW50cy90c2ktdmlldy1ncmlkL3RzaS12aWV3LWdyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdHLE9BQU8sRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU9uSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7Ozs7Ozs7Ozs7QUFPekYsTUFBTSxPQUFPLG9CQUFvQjtJQTRCL0IsSUFBSSxJQUFJLENBQUMsS0FBaUI7UUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBa0JELElBQWEsT0FBTyxDQUFDLEtBQW1CO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxPQUFPLEtBQW1CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFVckQsSUFBYSxZQUFZLENBQUMsS0FBeUI7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QWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRU8sWUFBWTtzQkFBeEIsS0FBSztnQkFhSSxlQUFlO3NCQUF4QixNQUFNO2dCQUVHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFFRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csd0JBQXdCO3NCQUFqQyxNQUFNO2dCQUNHLHdCQUF3QjtzQkFBakMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IER5bmFtaWNEaWFsb2dDb25maWcsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRfTW9kZXMsIEdyaWRTZWxlY3Rpb25Nb2RlLCBHcmlkU2l6aW5nTW9kZSwgR3JpZFNvcnRNb2RlLCBUb29sdGlwUG9zaXRpb24gfSBmcm9tICcuLi8uLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IEJ1dHRvbkNsaWNrUmVzdWx0LCBHcmlkQ29sdW1uLCBJR3JpZENvbmZpZ3VyYXRpb24sIElNb2RhbFNpemUgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgSVBhZ2UsIElQYWdlZFJlcXVlc3QsIElQYWdlZFJlc3BvbnNlLCBJU3VtbWFyeUZvclByb3ByZXR5IH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9wYWdpbmF0aW9uL3BhZ2luYXRpb24tYmFzZSc7XHJcbmltcG9ydCB7IFNlYXJjaEZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgQ3J1ZEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYmFzZS9jcnVkLWJhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFRzaU1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZGFsL3RzaS1tb2RhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbm90aWZpY2F0aW9uL2Vycm9yLXJlc3BvbnNlLW1hbmFnZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFRzaUdlbmVyaWNHcmlkQ29tcG9uZW50IH0gZnJvbSAnLi4vdHNpLWdlbmVyaWMtZ3JpZC90c2ktZ2VuZXJpYy1ncmlkLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RzaS12aWV3LWdyaWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90c2ktdmlldy1ncmlkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90c2ktdmlldy1ncmlkLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUc2lWaWV3R3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIC8vI3JlZ2lvbiBsb2NhbCB2YXJzXHJcbiAgcHJpdmF0ZSBfZGlhbG9nUmVmPzogRHluYW1pY0RpYWxvZ1JlZjtcclxuICBwcml2YXRlIF9mb3JtRW5kcG9pbnQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICB0b29sdGlwUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb247XHJcbiAgaXRlbXM/OiBhbnlbXTtcclxuXHJcbiAgcGFnZWRSZXF1ZXN0OiBJUGFnZWRSZXF1ZXN0ID0ge1xyXG4gICAgbWF4UmVzdWx0Q291bnQ6IDEwLFxyXG4gICAgc2tpcENvdW50OiAwLFxyXG4gICAgc29ydGluZzogW10sXHJcbiAgICBrZXl3b3JkOiAnJyxcclxuICAgIGZpbHRlcnM6IFtdLFxyXG4gICAgZ2V0QWxsRGF0YTogZmFsc2UsXHJcbiAgICBzdW1tYXJpZXM6IFtdLFxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgX3BhZ2U6IElQYWdlPGFueT4gPSB7XHJcbiAgICBpdGVtczogW10sXHJcbiAgICBwYWdlU2l6ZTogMTAsXHJcbiAgICBwYWdlTnVtYmVyOiAxLFxyXG4gICAgdG90YWxDb3VudDogMCxcclxuICAgIHRvdGFsUGFnZXM6IDAsXHJcbiAgICBzdW1tYXJpZXM6IFtdLFxyXG4gICAgbG9hZGluZzogZmFsc2UsXHJcbiAgfTtcclxuXHJcbiAgc2V0IHBhZ2UodmFsdWU6IElQYWdlPGFueT4pIHtcclxuICAgIHRoaXMuX3BhZ2UgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBwYWdlKCk6IElQYWdlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BhZ2U7XHJcbiAgfVxyXG4gIGZpcnN0OiBudW1iZXIgPSAwO1xyXG4gIHJvd3MgPSAxO1xyXG4gIGZvcm1FbmRwb2ludEJvZHk6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBmaWx0ZXJzSHRtbFRlbXBsYXRlPzogc3RyaW5nID0gJyc7XHJcblxyXG4gIGNvbmZpZ01vZGVCdXR0b25JZDogc3RyaW5nID0gXCJjb25mZy1tb2RlLWJ1dHRvbi1mcm9tLWxpc3RcIlxyXG5cclxuICBwdWJsaWMgYnVzaW5lc3NDbGFzcz86IHN0cmluZztcclxuXHJcbiAgX3NlYXJjaE9uSW5pdDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBWaWV3Q2hpbGQoVHNpR2VuZXJpY0dyaWRDb21wb25lbnQpIGdlbmVyaWNHcmlkQ29tcG9uZW50PzogVHNpR2VuZXJpY0dyaWRDb21wb25lbnQ7XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gSW5wdXRzXHJcbiAgcHJpdmF0ZSBfY29sdW1uczogR3JpZENvbHVtbltdID0gW107XHJcbiAgQElucHV0KCkgc2V0IGNvbHVtbnModmFsdWU6IEdyaWRDb2x1bW5bXSkge1xyXG4gICAgdGhpcy5fY29sdW1ucyA9IHZhbHVlID8/IFtdO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbHVtbnMoKTogR3JpZENvbHVtbltdIHsgcmV0dXJuIHRoaXMuX2NvbHVtbnM7IH1cclxuXHJcbiAgQElucHV0KCkgZ3JpZENvbmZpZ3VyYXRpb24/OiBJR3JpZENvbmZpZ3VyYXRpb247XHJcbiAgQElucHV0KCkgdmlld0NvbXBvbmVudDogYW55O1xyXG4gIEBJbnB1dCgpIGNydWRTZXJ2aWNlPzogQ3J1ZEJhc2VTZXJ2aWNlPGFueSwgYW55LCBhbnksIGFueT47XHJcbiAgQElucHV0KCkgaGVhZGVyOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBtb2RhbFNpemU/OiBJTW9kYWxTaXplO1xyXG4gIEBJbnB1dCgpIHNob3dDb25zdWx0QnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd1NlYXJjaEZpZWxkOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzZWFyY2hGaWVsZHM6IFNlYXJjaEZpZWxkW10gfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgc2V0IGZvcm1FbmRwb2ludCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5fZm9ybUVuZHBvaW50ID0gYCR7dmFsdWV9L2dldGFsbHBhZ2VkYDtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGZvcm1FbmRwb2ludCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9mb3JtRW5kcG9pbnQ7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBmb3JtTmFtZT86IHN0cmluZztcclxuICBASW5wdXQoKSBpZD86IHN0cmluZztcclxuICBASW5wdXQoKSBzaG93SW1wb3J0RXhwb3J0QnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdGFyZ2V0QnVzaW5lc3NDbGFzcz86IHN0cmluZztcclxuXHJcbiAgX2dyaWREYXRhOiBBcnJheTxhbnk+ID0gW107XHJcblxyXG4gIC8vZ3JpZCBzZWxlY3Rpb25cclxuICBASW5wdXQoKSBnZXREYXRhRnJvbUFwaTogYm9vbGVhbiA9IHRydWVcclxuXHJcbiAgLy8gQElucHV0KCkgZ3JpZERhdGE/OiBBcnJheTxhbnk+XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBnZXQgZ3JpZERhdGEoKTogQXJyYXk8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZ3JpZERhdGE7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IGdyaWREYXRhKGRhdGE6IEFycmF5PGFueT4pIHtcclxuICAgIHRoaXMuX2dyaWREYXRhID0gW107XHJcbiAgICB0aGlzLl9ncmlkRGF0YSA9IGRhdGE7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuX2dyaWREYXRhICE9IHVuZGVmaW5lZCAmJlxyXG4gICAgICB0aGlzLl9ncmlkRGF0YSAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX2luaXRQYWdlRnJvbUdyaWREYXRhKGRhdGEpO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgdGhpcy5fZ3JpZERhdGEgPT0gdW5kZWZpbmVkIHx8IHRoaXMuX2dyaWREYXRhID09IG51bGxcclxuICAgICkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgISB5b3UgbXVzdCBwcm92aWRlIGdyaWQgRGF0YSFcIilcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2lzU2VhcmNoQnV0dG9uRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgc2V0IGlzU2VhcmNoQnV0dG9uRGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2lzU2VhcmNoQnV0dG9uRGlzYWJsZWQgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNTZWFyY2hCdXR0b25EaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9pc1NlYXJjaEJ1dHRvbkRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2VsZWN0S2V5T25seTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2VsZWN0aW9uTW9kZTogR3JpZFNlbGVjdGlvbk1vZGUgPSBHcmlkU2VsZWN0aW9uTW9kZS5Ob25lO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbXM6IEFycmF5PGFueT4gPSBbXTtcclxuICBASW5wdXQoKSBrZXk6IHN0cmluZyA9ICd1aWQnO1xyXG4gIEBJbnB1dCgpIHNob3dHbG9iYWxTZWFyY2g6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dFeHBvcnRCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dDYWxlbmRlclZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93SGVhZGVyRmlsdGVyczogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0ZpbHRlckJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2VsZWN0QWxsOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjaGVja2VkQnlGaWVsZDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgc29ydE1vZGU6IEdyaWRTb3J0TW9kZSB8IGFueSA9IEdyaWRTb3J0TW9kZS5NdWx0aXBsZTtcclxuICBASW5wdXQoKSBzaXppbmdNb2RlOiBHcmlkU2l6aW5nTW9kZSA9IEdyaWRTaXppbmdNb2RlLkZpbGw7XHJcblxyXG4gIEBJbnB1dCgpIHNldCBzZWFyY2hPbkluaXQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIGlmICh2YWx1ZSA9PSB1bmRlZmluZWQgfHwgdmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9zZWFyY2hPbkluaXQgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fc2VhcmNoT25Jbml0ID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgc2VhcmNoT25Jbml0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaE9uSW5pdDtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIE91dHB1dHNcclxuXHJcbiAgQE91dHB1dCgpIHN1bW1hcmllc0NoYW5nZTogRXZlbnRFbWl0dGVyPEFycmF5PElTdW1tYXJ5Rm9yUHJvcHJldHk+PiA9XHJcbiAgICBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PElTdW1tYXJ5Rm9yUHJvcHJldHk+PigpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW1zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QXJyYXk8YW55Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PGFueT4+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBidXR0b25Db2x1bW5DbGlja2VkOiBFdmVudEVtaXR0ZXI8QnV0dG9uQ2xpY2tSZXN1bHQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxCdXR0b25DbGlja1Jlc3VsdD4oKTtcclxuICBAT3V0cHV0KCkgc2VhcmNoRmllbGRzVmFsdWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QXJyYXk8U2VhcmNoRmllbGQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8U2VhcmNoRmllbGQ+PigpO1xyXG4gIEBPdXRwdXQoKSBnZXRBbGxQYWdlZFJlc3VsdENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIC8vI3JlZ2lvbiBPdXRwdXRzXHJcbiAgLy8jZW5kcmVnaW9uXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlOiBFcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90c2lNb2RhbFNlcnZpY2U6IFRzaU1vZGFsU2VydmljZSwgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jb2x1bW5zID09IG51bGwgJiYgdGhpcy5jb2x1bW5zID09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgJ2NvbHVtbnMgY2FudCBiZSBudWxsIG9yIHVuZGVmaW5lZCwgZGV2ZWxvcHBlciBtdXN0IHNldCBjb2x1bW5zIG9mIGdyaWQgISdcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zaG93Q29uc3VsdEJ1dHRvbiA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuY29sdW1ucyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uc19jb25zdWx0JyxcclxuICAgICAgICAgIGZpZWxkOiAnY29uc3VsdCcsXHJcbiAgICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1leWUnLFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCcsXHJcbiAgICAgICAgICB0b29sVGlwVGV4dDogXCJzaGFyZWRfYWN0aW9uX2NvbnN1bHRcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGhpcy5jb2x1bW5zLFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gI3JlZ2lvbiBncmlkIHN0YXRlXHJcblxyXG4gIGdldFN0YXRlKCkge1xyXG4gICAgaWYgKHRoaXMuZ2VuZXJpY0dyaWRDb21wb25lbnQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJpY0dyaWRDb21wb25lbnQuZ2V0U3RhdGUoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsXHJcbiAgfVxyXG5cclxuICByZXN0b3JlU3RhdGUoY29uZmlndXJhdGlvbjogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5nZW5lcmljR3JpZENvbXBvbmVudCkge1xyXG4gICAgICB0aGlzLmdlbmVyaWNHcmlkQ29tcG9uZW50LnJlc3RvcmVTdGF0ZShjb25maWd1cmF0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0U2VsZWN0ZWRDb2x1bW5zKGNvbmZpZ3VyYXRpb246IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuZ2VuZXJpY0dyaWRDb21wb25lbnQpIHtcclxuICAgICAgdGhpcy5nZW5lcmljR3JpZENvbXBvbmVudC5yZXNldFNlbGVjdGVkQ29sdW1ucyhjb25maWd1cmF0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxuXHJcbiAgaXNMYXN0UGFnZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2VcclxuICAgICAgPyB0aGlzLnBhZ2UucGFnZU51bWJlciA9PT0gdGhpcy5wYWdlLnRvdGFsQ291bnQgLSB0aGlzLnBhZ2UucGFnZVNpemVcclxuICAgICAgOiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgaXNGaXJzdFBhZ2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5wYWdlID8gdGhpcy5wYWdlLnBhZ2VOdW1iZXIgPT09IDAgOiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoRmllbGRzVmFsdWVDaGFuZ2VzKG5ld1NlYXJjaEZpZWxkVmFsdWVzOiBBcnJheTxTZWFyY2hGaWVsZD4pIHtcclxuICAgIHRoaXMuc2VhcmNoRmllbGRzVmFsdWVDaGFuZ2VkLmVtaXQobmV3U2VhcmNoRmllbGRWYWx1ZXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTGF6eUxvYWRcclxuICAgKi9cclxuICAvL2ZpcnN0ID09PiBwYWdlLnBhZ2VOdW1iZXJcclxuICAvL3Jvd3MgPT0+IHBhZ2UucGFnZVNpemVcclxuICAvL3RoaXMucGFnZS5pdGVtcy5sZW5ndGggPT0+IHRvdGFsIGNvdW50XHJcblxyXG4gIGhhbmRsZUJ1dHRvbkNvbHVtbkNsaWNrZWQoZXZlbnQ6IEJ1dHRvbkNsaWNrUmVzdWx0KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5nZXREYXRhRnJvbUFwaSkge1xyXG4gICAgICBpZiAoZXZlbnQuZmllbGQgPT0gJ2NvbnN1bHQnICYmIHRoaXMudmlld0NvbXBvbmVudCAhPSB1bmRlZmluZWQgJiYgdGhpcy52aWV3Q29tcG9uZW50ICE9IG51bGwpIHtcclxuICAgICAgICBsZXQgaXRlbUtleTogYW55ID0gdGhpcy5zZWxlY3RLZXlPbmx5ID8gZXZlbnQua2V5IDogZXZlbnQua2V5W3RoaXMua2V5XTtcclxuICAgICAgICB0aGlzLl9jb25zdWx0Um93KGl0ZW1LZXkpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYnV0dG9uQ29sdW1uQ2xpY2tlZC5lbWl0KHtcclxuICAgICAgICBrZXk6IGV2ZW50LmtleSxcclxuICAgICAgICBmaWVsZDogZXZlbnQuZmllbGQsXHJcbiAgICAgICAgc2VsZWN0S2V5T25seTogdGhpcy5zZWxlY3RLZXlPbmx5LFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYnV0dG9uQ29sdW1uQ2xpY2tlZC5lbWl0KHtcclxuICAgICAgICBrZXk6IGV2ZW50LmtleSxcclxuICAgICAgICBmaWVsZDogZXZlbnQuZmllbGQsXHJcbiAgICAgICAgc2VsZWN0S2V5T25seTogdGhpcy5zZWxlY3RLZXlPbmx5LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvYWQoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuZ2V0RGF0YUZyb21BcGkpIHtcclxuICAgICAgdGhpcy5wYWdlZFJlcXVlc3QgPSBldmVudC5yZXF1ZXN0O1xyXG4gICAgICB0aGlzLl9zZXRmb3JtRW5kcG9pbnRCb2R5KCk7XHJcbiAgICAgIHRoaXMuX2xvYWREUygpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBrZXl3b3JkID0gdGhpcy5wYWdlZFJlcXVlc3Q/LmtleXdvcmQ/LnRvTG9jYWxlTG93ZXJDYXNlKClcclxuICAgICAgaWYgKCFrZXl3b3JkIHx8IGtleXdvcmQgPT0gXCJcIikge1xyXG4gICAgICAgIHRoaXMuX2luaXRQYWdlRnJvbUdyaWREYXRhKClcclxuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGRhdGEgPSBbLi4udGhpcy5fZ3JpZERhdGFdO1xyXG4gICAgICBsZXQgZmlsdGVyZWREYXRhID0gZGF0YS5maWx0ZXIoaXRlbSA9PlxyXG4gICAgICAgIE9iamVjdC52YWx1ZXMoaXRlbSkuc29tZSh2YWx1ZSA9PlxyXG4gICAgICAgICAgdmFsdWUgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgdmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGtleXdvcmQpXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLl9pbml0UGFnZUZyb21HcmlkRGF0YShmaWx0ZXJlZERhdGEpXHJcbiAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFN1bW1hcnkoY29sOiBHcmlkQ29sdW1uLCBncmlkRGF0YT86IEFycmF5PGFueT4pOiBudW1iZXIge1xyXG4gICAgbGV0IHN1bSA9IDA7XHJcbiAgICBncmlkRGF0YT8uZm9yRWFjaCgocm93OiBhbnkpID0+IHtcclxuICAgICAgc3VtICs9IHJvd1tjb2wuZmllbGRdO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc3VtO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RlZEl0ZW1zQ2hhbmdlKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KGV2ZW50KTtcclxuICB9XHJcbiAgLy8jcmVnaW9uIHByaXZhdGUgbWV0aG9kc1xyXG4gIHByaXZhdGUgX3NldGZvcm1FbmRwb2ludEJvZHkoKTogdm9pZCB7XHJcbiAgICBsZXQgb3g6IGFueSA9IHRoaXMuX2Nsb25lUGFnZWRSZXF1ZXN0KHRoaXMucGFnZWRSZXF1ZXN0KTtcclxuICAgIG94WydnZXRBbGxEYXRhJ10gPSB0cnVlO1xyXG4gICAgdGhpcy5mb3JtRW5kcG9pbnRCb2R5ID0gSlNPTi5zdHJpbmdpZnkob3gpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbG9hZERTKGlzRm9yQ2FsZW5kZXI6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgdGhpcy5wYWdlLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5wYWdlZFJlcXVlc3QgPSB7XHJcbiAgICAgIC4uLnRoaXMucGFnZWRSZXF1ZXN0LFxyXG4gICAgICBnZXRBbGxEYXRhOiBpc0ZvckNhbGVuZGVyLFxyXG4gICAgfTtcclxuICAgIGlmICh0aGlzLmNydWRTZXJ2aWNlICE9IG51bGwgJiYgdGhpcy5jcnVkU2VydmljZSAhPSB1bmRlZmluZWQpXHJcbiAgICAgIHRoaXMuY3J1ZFNlcnZpY2UuZ2V0QWxsUGFnZWQodGhpcy5wYWdlZFJlcXVlc3QpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHZhbHVlOiBJUGFnZWRSZXNwb25zZTxhbnk+KSA9PiB7XHJcbiAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5wYWdlID0ge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMucGFnZSxcclxuICAgICAgICAgICAgICBpdGVtcyA6IHZhbHVlLml0ZW1zLFxyXG4gICAgICAgICAgICAgIHRvdGFsQ291bnQ6IHZhbHVlLnRvdGFsQ291bnQsXHJcbiAgICAgICAgICAgICAgc3VtbWFyaWVzOiB2YWx1ZS5zdW1tYXJpZXMgPyB2YWx1ZS5zdW1tYXJpZXMgOiBbXSxcclxuICAgICAgICAgICAgICBncm91cHM6IHZhbHVlLmdyb3VwcyxcclxuICAgICAgICAgICAgICB0b3RhbFBhZ2VzOiAodGhpcy5wYWdlLnRvdGFsQ291bnQgLSAodGhpcy5wYWdlLnRvdGFsQ291bnQgJSB0aGlzLnBhZ2UucGFnZVNpemUpKSAvIHRoaXMucGFnZS5wYWdlU2l6ZSArIDEsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnN1bW1hcmllc0NoYW5nZS5lbWl0KHRoaXMucGFnZS5zdW1tYXJpZXMpO1xyXG4gICAgICAgICAgdGhpcy5nZXRBbGxQYWdlZFJlc3VsdENoYW5nZWQuZW1pdCh2YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLnBhZ2UubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZS5zaG93RXJyb3JNZXNzYWdlKGVycm9yKTtcclxuICAgICAgICAgIHRoaXMucGFnZS5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jb25zdWx0Um93KGl0ZW1LZXk6IGFueSkge1xyXG4gICAgdGhpcy5fb3Blbk1vZGFsKENvbXBvbmVudF9Nb2Rlcy5DT05TVUxULCBpdGVtS2V5KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX29wZW5Nb2RhbChtb2RlOiBzdHJpbmcsIGl0ZW1LZXk/OiBhbnkpOiB2b2lkIHtcclxuICAgIGxldCBjb25mOiBEeW5hbWljRGlhbG9nQ29uZmlnO1xyXG4gICAgaWYgKHRoaXMubW9kYWxTaXplICE9IG51bGwgJiYgdGhpcy5tb2RhbFNpemUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGNvbmYgPSB7XHJcbiAgICAgICAgZGF0YTogeyBpZDogaXRlbUtleSwgbW9kZTogbW9kZSB9LFxyXG4gICAgICAgIHN0eWxlQ2xhc3M6ICcnLFxyXG4gICAgICAgIHdpZHRoOiB0aGlzLm1vZGFsU2l6ZS53aWR0aCxcclxuICAgICAgICBoZWlnaHQ6IHRoaXMubW9kYWxTaXplLmhlaWdodCxcclxuICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbmYgPSB7IGRhdGE6IHsgaWQ6IGl0ZW1LZXksIG1vZGU6IG1vZGUgfSwgbWF4aW1pemFibGU6IHRydWUgfTtcclxuICAgIH1cclxuICAgIHRoaXMuX2RpYWxvZ1JlZiA9IHRoaXMuX3RzaU1vZGFsU2VydmljZS5vcGVuKHRoaXMudmlld0NvbXBvbmVudCwgY29uZik7XHJcblxyXG4gICAgdGhpcy5fZGlhbG9nUmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCh2YWw/OiBhbnkpID0+IHRoaXMuX2Nsb3NlTW9kYWwodmFsKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2Nsb3NlTW9kYWwodmFsPzogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl9sb2FkRFMoKTtcclxuICAgIHRoaXMuX2RpYWxvZ1JlZj8uZGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaChldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQgPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLl9sb2FkRFMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Nsb25lUGFnZWRSZXF1ZXN0KHJlcXVlc3Q6IElQYWdlZFJlcXVlc3QpOiBJUGFnZWRSZXF1ZXN0IHtcclxuICAgIGxldCBjbG9uZTogSVBhZ2VkUmVxdWVzdCA9IHtcclxuICAgICAgbWF4UmVzdWx0Q291bnQ6IHJlcXVlc3QubWF4UmVzdWx0Q291bnQsXHJcbiAgICAgIHNraXBDb3VudDogcmVxdWVzdC5za2lwQ291bnQsXHJcbiAgICAgIHNvcnRpbmc6IHJlcXVlc3Quc29ydGluZyxcclxuICAgICAga2V5d29yZDogcmVxdWVzdC5rZXl3b3JkLFxyXG4gICAgICBmaWx0ZXJzOiByZXF1ZXN0LmZpbHRlcnMsXHJcbiAgICAgIGdldEFsbERhdGE6IHJlcXVlc3QuZ2V0QWxsRGF0YSxcclxuICAgICAgc3VtbWFyaWVzOiByZXF1ZXN0LnN1bW1hcmllcyxcclxuICAgIH07XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0UGFnZUZyb21HcmlkRGF0YShncmlkRGF0YSA9IHRoaXMuX2dyaWREYXRhKSB7XHJcbiAgICB0aGlzLnBhZ2UgPSB7XHJcbiAgICAgIC4uLnRoaXMucGFnZSxcclxuICAgICAgaXRlbXM6IFsuLi5ncmlkRGF0YV0sXHJcbiAgICAgIHRvdGFsQ291bnQ6IGdyaWREYXRhLmxlbmd0aCxcclxuICAgICAgdG90YWxQYWdlczpcclxuICAgICAgICAoZ3JpZERhdGEubGVuZ3RoIC0gKGdyaWREYXRhLmxlbmd0aCAlIHRoaXMucGFnZS5wYWdlU2l6ZSkpIC9cclxuICAgICAgICB0aGlzLnBhZ2UucGFnZVNpemUgK1xyXG4gICAgICAgIDEsXHJcbiAgICAgIHBhZ2VOdW1iZXI6IDEsXHJcbiAgICAgIHBhZ2VTaXplOiAxMCxcclxuICAgICAgc3VtbWFyaWVzOiB0aGlzLmNvbHVtbnNcclxuICAgICAgICAuZmlsdGVyKGNvbCA9PiBjb2wuaGF2ZVN1bW1hcnkpXHJcbiAgICAgICAgLm1hcChjb2wgPT4gKHtcclxuICAgICAgICAgIHByb3ByZXR5OiBjb2wuZmllbGQsXHJcbiAgICAgICAgICBzdW1tYXJ5OiB0aGlzLmdldFN1bW1hcnkoY29sLCBncmlkRGF0YSlcclxuICAgICAgICB9KSksXHJcbiAgICAgIGxvYWRpbmc6IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zdW1tYXJpZXNDaGFuZ2UuZW1pdCh0aGlzLnBhZ2Uuc3VtbWFyaWVzKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIGRpc3BsYXlTZWFyY2hGaWVsZHMoKSB7XHJcbiAgICB0aGlzLnNob3dTZWFyY2hGaWVsZCA9ICF0aGlzLnNob3dTZWFyY2hGaWVsZDtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBjYWxlbmRlclxyXG4gIHRvZ2dsZUNhbGVuZGVyVmlldygpIHtcclxuICAgIHRoaXMuc2hvd0NhbGVuZGVyVmlldyA9ICF0aGlzLnNob3dDYWxlbmRlclZpZXc7XHJcbiAgICB0aGlzLl9sb2FkRFModGhpcy5zaG93Q2FsZW5kZXJWaWV3KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUNhbGVuZGFyRXZlbnRDbGljayhpdGVtOiBhbnkpIHtcclxuICAgIHN3aXRjaCAoaXRlbS5tb2RlKSB7XHJcbiAgICAgIGNhc2UgQ29tcG9uZW50X01vZGVzLkNPTlNVTFQ6XHJcbiAgICAgICAgdGhpcy5fY29uc3VsdFJvdyhpdGVtLmlkKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgLy8gY2FzZSBDb21wb25lbnRfTW9kZXMuQ1JFQVRFIDpcclxuICAgICAgLy8gICB0aGlzLl9vcGVuTW9kYWwoQ29tcG9uZW50X01vZGVzLkNSRUFURSxudWxsLG51bGwpO1xyXG4gICAgICAvLyBicmVhaztcclxuICAgICAgLy8gY2FzZSBDb21wb25lbnRfTW9kZXMuRURJVCA6XHJcbiAgICAgIC8vICAgdGhpcy5fZWRpdFJvdyhpdGVtLmlkKTtcclxuICAgICAgLy8gYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG59IiwiPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICBcclxuICA8cC10b29sYmFyICpuZ0lmPVwiZm9ybUVuZHBvaW50XCIgc3R5bGVDbGFzcz1cImJvcmRlci1yYWRpdXMtNyBtYi0xIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwibGVmdFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMiBtbC0yXCI+XHJcbiAgICAgICAgPFRzaS1CdXR0b24gIGljb249XCJwaSBwaS1zbGlkZXJzLWhcIiBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIiB0b29sdGlwVGV4dD1cInNoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfbWVudV92aWV3XCIgKm5nSWY9XCJzZWFyY2hGaWVsZHNcIlxyXG4gICAgICAgIHN0eWxlQ2xhc3M9XCJoLTJyZW0gaG92ZXI6c2hhZG93LTYgcC1idXR0b24taWNvbi1vbmx5IHt7c2hvd1NlYXJjaEZpZWxkID8gJ3AtYnV0dG9uLXNlY29uZGFyeScgOiAncC1idXR0b24tc3VjY2Vzcyd9fVwiIFxyXG4gICAgICAgICAgKGNsaWNrKT1cImRpc3BsYXlTZWFyY2hGaWVsZHMoKVwiPlxyXG4gICAgICAgIDwvVHNpLUJ1dHRvbj5cclxuICAgICAgICA8VHNpLUJ1dHRvbiBpY29uPVwicC1idXR0b24taWNvbiBwaSBwaS1jYWxlbmRhciB7e3Nob3dDYWxlbmRlclZpZXcgPyAncGkgcGktYWxpZ24tanVzdGlmeScgOiAncGkgcGktY2FsZW5kYXInfX1cIiBcclxuICAgICAgICBzdHlsZUNsYXNzPVwicC1lbGVtZW50IHAtYnV0dG9uLXByaW1hcnkgaG92ZXI6c2hhZG93LTYgaC0ycmVtIHAtYnV0dG9uIHAtY29tcG9uZW50IHAtYnV0dG9uLWljb24tb25seVwiIChjbGljayk9XCJ0b2dnbGVDYWxlbmRlclZpZXcoKVwiIFxyXG4gICAgICAgIHRvb2x0aXBUZXh0PVwie3soc2hvd0NhbGVuZGVyVmlldyA/ICdzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2xpc3RfdmlldycgOiAnc2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9jYWxlbmRlcl92aWV3JykgfCBsb2NhbGl6ZX19XCIgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb24uVG9wXCI+PC9Uc2ktQnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICBcclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJyaWdodFwiPlxyXG4gICAgICAgIDxhcHAtcmVwb3J0aW5nICpuZ0lmPVwiZm9ybUVuZHBvaW50IHx8IGJ1c2luZXNzQ2xhc3NcIlxyXG4gICAgICAgICAgW2Zvcm1FbmRwb2ludF09XCJmb3JtRW5kcG9pbnRcIlxyXG4gICAgICAgICAgW2Zvcm1OYW1lXT1cImZvcm1OYW1lXCJcclxuICAgICAgICAgIFtmb3JtRW5kcG9pbnRCb2R5XT1cImZvcm1FbmRwb2ludEJvZHlcIlxyXG4gICAgICAgICAgW2lzRm9ybUVuZHBvaW50UGFnZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbc2hvd0ltcG9ydEV4cG9ydEJ1dHRvbl09XCJzaG93SW1wb3J0RXhwb3J0QnV0dG9uXCJcclxuICAgICAgICAgIChyZWZyZXNoRGF0YSk9XCJyZWZyZXNoKCRldmVudClcIlxyXG4gICAgICAgICAgW2ZpbHRlcnNIdG1sVGVtcGxhdGVdPVwiZmlsdGVyc0h0bWxUZW1wbGF0ZVwiXHJcbiAgICAgICAgICBbYnVzaW5lc3NDbGFzc109XCJidXNpbmVzc0NsYXNzXCJcclxuICAgICAgICAgIFtwYWdlZFJlcXVlc3RdPVwicGFnZWRSZXF1ZXN0XCJcclxuICAgICAgICAgIFtjb25maWdNb2RlQnV0dG9uSWRdPVwiY29uZmlnTW9kZUJ1dHRvbklkXCJcclxuICAgICAgICAgIFtzaG93Tm90ZUJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbc2hvd0FjdGlvbkJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbc2hvd0luZm9CdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW3Nob3dVcGxvYWRCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW3NlbGVjdGVkSXRlbVVpZHNdPVwic2VsZWN0ZWRJdGVtc1wiXHJcbiAgICAgICAgICA+PC9hcHAtcmVwb3J0aW5nPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L3AtdG9vbGJhcj5cclxuICBcclxuICA8ZGl2PlxyXG5cclxuICAgIDxUc2ktR2VuZXJpYy1HcmlkIFxyXG4gICAgICBbZm9ybU5hbWVdPVwiZm9ybU5hbWVcIiBcclxuICAgICAgW2hlYWRlcl09XCJoZWFkZXJcIiBcclxuICAgICAgW3BhZ2VdPVwicGFnZVwiIFxyXG4gICAgICBbcGFnZWRSZXF1ZXN0XT1cInBhZ2VkUmVxdWVzdFwiIFxyXG4gICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcclxuICAgICAgW3NlYXJjaEZpZWxkc109XCJzZWFyY2hGaWVsZHNcIiBcclxuICAgICAgW3Nob3dTZWFyY2hGaWVsZF09XCJzaG93U2VhcmNoRmllbGRcIiBcclxuICAgICAgKGxvYWQpPVwibG9hZCgkZXZlbnQpXCJcclxuICAgICAgKHNlYXJjaEZpZWxkc1ZhbHVlQ2hhbmdlZCk9XCJzZWFyY2hGaWVsZHNWYWx1ZUNoYW5nZXMoJGV2ZW50KVwiXHJcbiAgICAgIChidXR0b25Db2x1bW5DbGlja2VkKT1cImhhbmRsZUJ1dHRvbkNvbHVtbkNsaWNrZWQoJGV2ZW50KVwiXHJcbiAgICAgIFsoZmlsdGVyc0h0bWxUZW1wbGF0ZSldPVwiZmlsdGVyc0h0bWxUZW1wbGF0ZVwiXHJcbiAgICAgIFtzZWxlY3RLZXlPbmx5XT1cInNlbGVjdEtleU9ubHlcIlxyXG4gICAgICBbc2VsZWN0aW9uTW9kZV09XCJzZWxlY3Rpb25Nb2RlXCJcclxuICAgICAgW3Nob3dJbXBvcnRFeHBvcnRCdXR0b25dPVwic2hvd0ltcG9ydEV4cG9ydEJ1dHRvblwiXHJcbiAgICAgIFtrZXldPVwia2V5XCJcclxuICAgICAgW2NydWRTZXJ2aWNlXT1cImNydWRTZXJ2aWNlXCJcclxuICAgICAgWyhzZWxlY3RlZEl0ZW1zKV09XCJzZWxlY3RlZEl0ZW1zXCJcclxuICAgICAgKHNlbGVjdGVkSXRlbXNDaGFuZ2UpPVwib25TZWxlY3RlZEl0ZW1zQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICBbaXNHcmlkRGF0YVBhZ2VkSW5BcGldPVwiZ2V0RGF0YUZyb21BcGlcIlxyXG4gICAgICBbc2VhcmNoT25Jbml0XT1cInNlYXJjaE9uSW5pdFwiXHJcbiAgICAgIFtzaG93RXhwb3J0QnV0dG9uXT1cInNob3dFeHBvcnRCdXR0b25cIlxyXG4gICAgICBbc2hvd0hlYWRlckZpbHRlcnNdPVwic2hvd0hlYWRlckZpbHRlcnNcIlxyXG4gICAgICBbc2hvd0ZpbHRlckJ1dHRvbl09XCJzaG93RmlsdGVyQnV0dG9uXCJcclxuICAgICAgW3Nob3dHbG9iYWxTZWFyY2hdPVwic2hvd0dsb2JhbFNlYXJjaFwiXHJcbiAgICAgIFtpc1NlYXJjaEJ1dHRvbkRpc2FibGVkXT1cImlzU2VhcmNoQnV0dG9uRGlzYWJsZWRcIlxyXG4gICAgICBbc2hvd0NhbGVuZGVyVmlld109XCJzaG93Q2FsZW5kZXJWaWV3XCJcclxuICAgICAgKGNhbGVuZGFyRXZlbnRDbGljayk9XCJoYW5kbGVDYWxlbmRhckV2ZW50Q2xpY2soJGV2ZW50KVwiXHJcbiAgICAgIFtzZWxlY3RBbGxdPVwic2VsZWN0QWxsXCJcclxuICAgICAgW2NoZWNrZWRCeUZpZWxkXT1cImNoZWNrZWRCeUZpZWxkXCJcclxuICAgICAgW3RhcmdldEJ1c2luZXNzQ2xhc3NdPVwidGFyZ2V0QnVzaW5lc3NDbGFzc1wiXHJcbiAgICAgIFtzb3J0TW9kZV09XCJzb3J0TW9kZVwiXHJcbiAgICAgIFtzaXppbmdNb2RlXT1cInNpemluZ01vZGVcIlxyXG4gICAgICA+PC9Uc2ktR2VuZXJpYy1HcmlkPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
427
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLXZpZXctZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvb3V0cHV0LWNvbXBvbmVudHMvdHNpLXZpZXctZ3JpZC90c2ktdmlldy1ncmlkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9vdXRwdXQtY29tcG9uZW50cy90c2ktdmlldy1ncmlkL3RzaS12aWV3LWdyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdHLE9BQU8sRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFPaEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7Ozs7Ozs7Ozs7O0FBT3pGLE1BQU0sT0FBTyxvQkFBb0I7SUE0Qi9CLElBQUksSUFBSSxDQUFDLEtBQWlCO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQWtCRCxJQUFhLE9BQU8sQ0FBQyxLQUFtQjtRQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksT0FBTyxLQUFtQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBVXJELElBQWEsWUFBWSxDQUFDLEtBQXlCO1FBQ2pELElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsS0FBSyxjQUFjLENBQUM7UUFDOUMsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQVlELGlDQUFpQztJQUVqQyxJQUFvQixRQUFRO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBVyxRQUFRLENBQUMsSUFBZ0I7UUFDbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFDRSxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVM7WUFDM0IsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsQ0FBQzthQUFNLElBQ0wsSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQ3JELENBQUM7WUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUE7UUFDdEQsQ0FBQztJQUNILENBQUM7SUFHRCxJQUFvQixzQkFBc0IsQ0FBQyxLQUFjO1FBQ3ZELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQVcsc0JBQXNCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDO0lBQ3RDLENBQUM7SUFnQkQsSUFBYSxZQUFZLENBQUMsS0FBYztRQUN0QyxJQUFJLEtBQUssSUFBSSxTQUFTLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzVCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQVVELGlCQUFpQjtJQUNqQixZQUFZO0lBQ1osWUFBb0IsNEJBQXlELEVBQ25FLGdCQUFpQyxFQUFVLElBQXVCO1FBRHhELGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBNkI7UUFDbkUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUFVLFNBQUksR0FBSixJQUFJLENBQW1CO1FBbkpwRSxrQkFBYSxHQUF1QixTQUFTLENBQUM7UUFDdEQsb0JBQWUsR0FBRyxlQUFlLENBQUM7UUFHbEMsaUJBQVksR0FBa0I7WUFDNUIsY0FBYyxFQUFFLEVBQUU7WUFDbEIsU0FBUyxFQUFFLENBQUM7WUFDWixPQUFPLEVBQUUsRUFBRTtZQUNYLE9BQU8sRUFBRSxFQUFFO1lBQ1gsT0FBTyxFQUFFLEVBQUU7WUFDWCxVQUFVLEVBQUUsS0FBSztZQUNqQixTQUFTLEVBQUUsRUFBRTtTQUNkLENBQUM7UUFFTSxVQUFLLEdBQWU7WUFDMUIsS0FBSyxFQUFFLEVBQUU7WUFDVCxRQUFRLEVBQUUsRUFBRTtZQUNaLFVBQVUsRUFBRSxDQUFDO1lBQ2IsVUFBVSxFQUFFLENBQUM7WUFDYixVQUFVLEVBQUUsQ0FBQztZQUNiLFNBQVMsRUFBRSxFQUFFO1lBQ2IsT0FBTyxFQUFFLEtBQUs7U0FDZixDQUFDO1FBU0YsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUNsQixTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBRVQsd0JBQW1CLEdBQVksRUFBRSxDQUFDO1FBRWxDLHVCQUFrQixHQUFXLDZCQUE2QixDQUFBO1FBSTFELGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBSTlCLFlBQVk7UUFFWixnQkFBZ0I7UUFDUixhQUFRLEdBQWlCLEVBQUUsQ0FBQztRQVUzQixXQUFNLEdBQVcsRUFBRSxDQUFDO1FBRXBCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyxvQkFBZSxHQUFZLElBQUksQ0FBQztRQWFoQywyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFHakQsY0FBUyxHQUFlLEVBQUUsQ0FBQztRQUUzQixnQkFBZ0I7UUFDUCxtQkFBYyxHQUFZLElBQUksQ0FBQTtRQXNCL0IsNEJBQXVCLEdBQVksS0FBSyxDQUFDO1FBU3hDLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBQzlCLGtCQUFhLEdBQXNCLGlCQUFpQixDQUFDLElBQUksQ0FBQztRQUMxRCxrQkFBYSxHQUFlLEVBQUUsQ0FBQztRQUMvQixRQUFHLEdBQVcsS0FBSyxDQUFDO1FBQ3BCLHFCQUFnQixHQUFZLElBQUksQ0FBQztRQUNqQyxxQkFBZ0IsR0FBWSxJQUFJLENBQUM7UUFDakMscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLHNCQUFpQixHQUFZLElBQUksQ0FBQztRQUNsQyxxQkFBZ0IsR0FBWSxJQUFJLENBQUM7UUFDakMsY0FBUyxHQUFZLElBQUksQ0FBQztRQUMxQixtQkFBYyxHQUFXLEVBQUUsQ0FBQztRQUM1QixhQUFRLEdBQXVCLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFDckQsZUFBVSxHQUFtQixjQUFjLENBQUMsSUFBSSxDQUFDO1FBYTFELG9CQUFvQjtRQUVWLG9CQUFlLEdBQ3ZCLElBQUksWUFBWSxFQUE4QixDQUFDO1FBQ3ZDLHdCQUFtQixHQUE2QixJQUFJLFlBQVksRUFBYyxDQUFDO1FBRS9FLHdCQUFtQixHQUFvQyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUM3Riw2QkFBd0IsR0FBcUMsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFDcEcsNkJBQXdCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFLM0UsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksU0FBUyxFQUFFLENBQUM7WUFDdEQsTUFBTSxJQUFJLEtBQUssQ0FDYiwwRUFBMEUsQ0FDM0UsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHO2dCQUNiO29CQUNFLE1BQU0sRUFBRSx3QkFBd0I7b0JBQ2hDLEtBQUssRUFBRSxTQUFTO29CQUNoQixRQUFRLEVBQUUsSUFBSTtvQkFDZCxVQUFVLEVBQUUsV0FBVztvQkFDdkIsVUFBVSxFQUFFLGdDQUFnQztvQkFDNUMsV0FBVyxFQUFFLHVCQUF1QjtpQkFDckM7Z0JBQ0QsR0FBRyxJQUFJLENBQUMsT0FBTzthQUNoQixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxxQkFBcUI7SUFFckIsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDOUIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELFlBQVksQ0FBQyxhQUFxQjtRQUNoQyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEQsQ0FBQztJQUNILENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxhQUFxQjtRQUN4QyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoRSxDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWE7SUFFYixVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSTtZQUNkLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFDcEUsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNYLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN2RCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsb0JBQXdDO1FBQy9ELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCwyQkFBMkI7SUFDM0Isd0JBQXdCO0lBQ3hCLHdDQUF3QztJQUV4Qyx5QkFBeUIsQ0FBQyxLQUF3QjtRQUNoRCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQzlGLElBQUksT0FBTyxHQUFRLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN4RSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVCLENBQUM7WUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDO2dCQUM1QixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7Z0JBQ2QsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO2dCQUNsQixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7YUFDbEMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDO2dCQUM1QixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7Z0JBQ2QsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO2dCQUNsQixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7YUFDbEMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsS0FBVTtRQUNiLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUNsQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsQ0FBQzthQUNJLENBQUM7WUFDSixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxDQUFBO1lBQzdELElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUM5QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQTtnQkFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtnQkFDekIsT0FBTTtZQUNSLENBQUM7WUFDRCxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQy9CLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDcEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDL0IsS0FBSyxJQUFJLElBQUk7Z0JBQ2IsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FDakQsQ0FDRixDQUFDO1lBQ0YsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFBO1lBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsR0FBZSxFQUFFLFFBQXFCO1FBQy9DLE9BQU8sVUFBVSxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELHFCQUFxQixDQUFDLEtBQVU7UUFDOUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ0QseUJBQXlCO0lBQ2pCLG9CQUFvQjtRQUMxQixJQUFJLEVBQUUsR0FBUSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3pELEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLE9BQU8sQ0FBQyxnQkFBeUIsS0FBSztRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRztZQUNsQixHQUFHLElBQUksQ0FBQyxZQUFZO1lBQ3BCLFVBQVUsRUFBRSxhQUFhO1NBQzFCLENBQUM7UUFDRixJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksU0FBUztZQUMzRCxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUN4RCxJQUFJLEVBQUUsQ0FBQyxLQUEwQixFQUFFLEVBQUU7b0JBQ25DLElBQUksS0FBSyxFQUFFLENBQUM7d0JBQ1YsSUFBSSxDQUFDLElBQUksR0FBRzs0QkFDVixHQUFHLElBQUksQ0FBQyxJQUFJOzRCQUNaLEtBQUssRUFBRyxLQUFLLENBQUMsS0FBSzs0QkFDbkIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVOzRCQUM1QixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTs0QkFDakQsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNOzRCQUNwQixVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDO3lCQUMxRyxDQUFDO29CQUNKLENBQUM7b0JBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDL0MsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUM1QixDQUFDO2dCQUNELEtBQUssRUFBRSxDQUFDLEtBQXdCLEVBQUUsRUFBRTtvQkFDbEMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMxRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQzVCLENBQUM7YUFDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sV0FBVyxDQUFDLE9BQVk7UUFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTyxVQUFVLENBQUMsSUFBWSxFQUFFLE9BQWE7UUFDNUMsSUFBSSxJQUF5QixDQUFDO1FBQzlCLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUMxRCxJQUFJLEdBQUc7Z0JBQ0wsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO2dCQUNqQyxVQUFVLEVBQUUsRUFBRTtnQkFDZCxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLO2dCQUMzQixNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNO2dCQUM3QixXQUFXLEVBQUUsSUFBSTthQUNsQixDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDbEUsQ0FBQztRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXZFLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFDTyxXQUFXLENBQUMsR0FBUztRQUMzQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBVTtRQUNoQixJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsQ0FBQztJQUNILENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxPQUFzQjtRQUMvQyxJQUFJLEtBQUssR0FBa0I7WUFDekIsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjO1lBQ3RDLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztZQUM1QixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87WUFDeEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1lBQ3hCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztZQUN4QixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7WUFDOUIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO1NBQzdCLENBQUM7UUFDRixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVM7UUFDckQsSUFBSSxDQUFDLElBQUksR0FBRztZQUNWLEdBQUcsSUFBSSxDQUFDLElBQUk7WUFDWixLQUFLLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztZQUNwQixVQUFVLEVBQUUsUUFBUSxDQUFDLE1BQU07WUFDM0IsVUFBVSxFQUNSLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDMUQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO2dCQUNsQixDQUFDO1lBQ0gsVUFBVSxFQUFFLENBQUM7WUFDYixRQUFRLEVBQUUsRUFBRTtZQUNaLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTztpQkFDcEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztpQkFDOUIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDWCxRQUFRLEVBQUUsR0FBRyxDQUFDLEtBQUs7Z0JBQ25CLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUM7YUFDeEMsQ0FBQyxDQUFDO1lBQ0wsT0FBTyxFQUFFLEtBQUs7U0FDZixDQUFDO1FBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBQ0QsWUFBWTtJQUVaLG1CQUFtQjtRQUNqQixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUMvQyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGtCQUFrQjtRQUNoQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsd0JBQXdCLENBQUMsSUFBUztRQUNoQyxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQixLQUFLLGVBQWUsQ0FBQyxPQUFPO2dCQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDMUIsTUFBTTtZQUNSLGdDQUFnQztZQUNoQyx1REFBdUQ7WUFDdkQsU0FBUztZQUNULDhCQUE4QjtZQUM5Qiw0QkFBNEI7WUFDNUIsU0FBUztRQUNYLENBQUM7SUFDSCxDQUFDOytHQS9ZVSxvQkFBb0I7bUdBQXBCLG9CQUFvQixrekNBOENwQix1QkFBdUIsZ0RDaEVwQyxzL0dBeUVNOzs0RkR2RE8sb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGVBQWU7OEpBa0RXLG9CQUFvQjtzQkFBdkQsU0FBUzt1QkFBQyx1QkFBdUI7Z0JBTXJCLE9BQU87c0JBQW5CLEtBQUs7Z0JBTUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBU0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFLRyxjQUFjO3NCQUF0QixLQUFLO2dCQUljLFFBQVE7c0JBQTNCLEtBQUs7Z0JBbUJjLHNCQUFzQjtzQkFBekMsS0FBSztnQkFRRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBYUksZUFBZTtzQkFBeEIsTUFBTTtnQkFFRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBRUcsbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLHdCQUF3QjtzQkFBakMsTUFBTTtnQkFDRyx3QkFBd0I7c0JBQWpDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEeW5hbWljRGlhbG9nQ29uZmlnLCBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuaW1wb3J0IHsgQ29tcG9uZW50X01vZGVzLCBHcmlkU2VsZWN0aW9uTW9kZSwgR3JpZFNpemluZ01vZGUsIEdyaWRTb3J0TW9kZSwgVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBwcmVjaXNlU3VtIH0gZnJvbSAnLi4vLi4vLi4vZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgQnV0dG9uQ2xpY2tSZXN1bHQsIEdyaWRDb2x1bW4sIElHcmlkQ29uZmlndXJhdGlvbiwgSU1vZGFsU2l6ZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBJUGFnZSwgSVBhZ2VkUmVxdWVzdCwgSVBhZ2VkUmVzcG9uc2UsIElTdW1tYXJ5Rm9yUHJvcHJldHkgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL3BhZ2luYXRpb24vcGFnaW5hdGlvbi1iYXNlJztcclxuaW1wb3J0IHsgU2VhcmNoRmllbGQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBDcnVkQmFzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9iYXNlL2NydWQtYmFzZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHNpTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbW9kYWwvdHNpLW1vZGFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24vZXJyb3ItcmVzcG9uc2UtbWFuYWdlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHNpR2VuZXJpY0dyaWRDb21wb25lbnQgfSBmcm9tICcuLi90c2ktZ2VuZXJpYy1ncmlkL3RzaS1nZW5lcmljLWdyaWQuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHNpLXZpZXctZ3JpZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RzaS12aWV3LWdyaWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RzaS12aWV3LWdyaWQuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRzaVZpZXdHcmlkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgLy8jcmVnaW9uIGxvY2FsIHZhcnNcclxuICBwcml2YXRlIF9kaWFsb2dSZWY/OiBEeW5hbWljRGlhbG9nUmVmO1xyXG4gIHByaXZhdGUgX2Zvcm1FbmRwb2ludDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gIHRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbjtcclxuICBpdGVtcz86IGFueVtdO1xyXG5cclxuICBwYWdlZFJlcXVlc3Q6IElQYWdlZFJlcXVlc3QgPSB7XHJcbiAgICBtYXhSZXN1bHRDb3VudDogMTAsXHJcbiAgICBza2lwQ291bnQ6IDAsXHJcbiAgICBzb3J0aW5nOiBbXSxcclxuICAgIGtleXdvcmQ6ICcnLFxyXG4gICAgZmlsdGVyczogW10sXHJcbiAgICBnZXRBbGxEYXRhOiBmYWxzZSxcclxuICAgIHN1bW1hcmllczogW10sXHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBfcGFnZTogSVBhZ2U8YW55PiA9IHtcclxuICAgIGl0ZW1zOiBbXSxcclxuICAgIHBhZ2VTaXplOiAxMCxcclxuICAgIHBhZ2VOdW1iZXI6IDEsXHJcbiAgICB0b3RhbENvdW50OiAwLFxyXG4gICAgdG90YWxQYWdlczogMCxcclxuICAgIHN1bW1hcmllczogW10sXHJcbiAgICBsb2FkaW5nOiBmYWxzZSxcclxuICB9O1xyXG5cclxuICBzZXQgcGFnZSh2YWx1ZTogSVBhZ2U8YW55Pikge1xyXG4gICAgdGhpcy5fcGFnZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBhZ2UoKTogSVBhZ2U8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFnZTtcclxuICB9XHJcbiAgZmlyc3Q6IG51bWJlciA9IDA7XHJcbiAgcm93cyA9IDE7XHJcbiAgZm9ybUVuZHBvaW50Qm9keTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIGZpbHRlcnNIdG1sVGVtcGxhdGU/OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgY29uZmlnTW9kZUJ1dHRvbklkOiBzdHJpbmcgPSBcImNvbmZnLW1vZGUtYnV0dG9uLWZyb20tbGlzdFwiXHJcblxyXG4gIHB1YmxpYyBidXNpbmVzc0NsYXNzPzogc3RyaW5nO1xyXG5cclxuICBfc2VhcmNoT25Jbml0OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQFZpZXdDaGlsZChUc2lHZW5lcmljR3JpZENvbXBvbmVudCkgZ2VuZXJpY0dyaWRDb21wb25lbnQ/OiBUc2lHZW5lcmljR3JpZENvbXBvbmVudDtcclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBJbnB1dHNcclxuICBwcml2YXRlIF9jb2x1bW5zOiBHcmlkQ29sdW1uW10gPSBbXTtcclxuICBASW5wdXQoKSBzZXQgY29sdW1ucyh2YWx1ZTogR3JpZENvbHVtbltdKSB7XHJcbiAgICB0aGlzLl9jb2x1bW5zID0gdmFsdWUgPz8gW107XHJcbiAgfVxyXG5cclxuICBnZXQgY29sdW1ucygpOiBHcmlkQ29sdW1uW10geyByZXR1cm4gdGhpcy5fY29sdW1uczsgfVxyXG5cclxuICBASW5wdXQoKSBncmlkQ29uZmlndXJhdGlvbj86IElHcmlkQ29uZmlndXJhdGlvbjtcclxuICBASW5wdXQoKSB2aWV3Q29tcG9uZW50OiBhbnk7XHJcbiAgQElucHV0KCkgY3J1ZFNlcnZpY2U/OiBDcnVkQmFzZVNlcnZpY2U8YW55LCBhbnksIGFueSwgYW55PjtcclxuICBASW5wdXQoKSBoZWFkZXI6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIG1vZGFsU2l6ZT86IElNb2RhbFNpemU7XHJcbiAgQElucHV0KCkgc2hvd0NvbnN1bHRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93U2VhcmNoRmllbGQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNlYXJjaEZpZWxkczogU2VhcmNoRmllbGRbXSB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBzZXQgZm9ybUVuZHBvaW50KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLl9mb3JtRW5kcG9pbnQgPSBgJHt2YWx1ZX0vZ2V0YWxscGFnZWRgO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgZm9ybUVuZHBvaW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1FbmRwb2ludDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGZvcm1OYW1lPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGlkPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNob3dJbXBvcnRFeHBvcnRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB0YXJnZXRCdXNpbmVzc0NsYXNzPzogc3RyaW5nO1xyXG5cclxuICBfZ3JpZERhdGE6IEFycmF5PGFueT4gPSBbXTtcclxuXHJcbiAgLy9ncmlkIHNlbGVjdGlvblxyXG4gIEBJbnB1dCgpIGdldERhdGFGcm9tQXBpOiBib29sZWFuID0gdHJ1ZVxyXG5cclxuICAvLyBASW5wdXQoKSBncmlkRGF0YT86IEFycmF5PGFueT5cclxuXHJcbiAgQElucHV0KCkgcHVibGljIGdldCBncmlkRGF0YSgpOiBBcnJheTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9ncmlkRGF0YTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgZ3JpZERhdGEoZGF0YTogQXJyYXk8YW55Pikge1xyXG4gICAgdGhpcy5fZ3JpZERhdGEgPSBbXTtcclxuICAgIHRoaXMuX2dyaWREYXRhID0gZGF0YTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5fZ3JpZERhdGEgIT0gdW5kZWZpbmVkICYmXHJcbiAgICAgIHRoaXMuX2dyaWREYXRhICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5faW5pdFBhZ2VGcm9tR3JpZERhdGEoZGF0YSk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLl9ncmlkRGF0YSA9PSB1bmRlZmluZWQgfHwgdGhpcy5fZ3JpZERhdGEgPT0gbnVsbFxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciAhIHlvdSBtdXN0IHByb3ZpZGUgZ3JpZCBEYXRhIVwiKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaXNTZWFyY2hCdXR0b25EaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgaXNTZWFyY2hCdXR0b25EaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5faXNTZWFyY2hCdXR0b25EaXNhYmxlZCA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc1NlYXJjaEJ1dHRvbkRpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzU2VhcmNoQnV0dG9uRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZWxlY3RLZXlPbmx5OiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzZWxlY3Rpb25Nb2RlOiBHcmlkU2VsZWN0aW9uTW9kZSA9IEdyaWRTZWxlY3Rpb25Nb2RlLk5vbmU7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIEBJbnB1dCgpIGtleTogc3RyaW5nID0gJ3VpZCc7XHJcbiAgQElucHV0KCkgc2hvd0dsb2JhbFNlYXJjaDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0V4cG9ydEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0NhbGVuZGVyVmlldzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dIZWFkZXJGaWx0ZXJzOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93RmlsdGVyQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzZWxlY3RBbGw6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGNoZWNrZWRCeUZpZWxkOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBzb3J0TW9kZTogR3JpZFNvcnRNb2RlIHwgYW55ID0gR3JpZFNvcnRNb2RlLk11bHRpcGxlO1xyXG4gIEBJbnB1dCgpIHNpemluZ01vZGU6IEdyaWRTaXppbmdNb2RlID0gR3JpZFNpemluZ01vZGUuRmlsbDtcclxuXHJcbiAgQElucHV0KCkgc2V0IHNlYXJjaE9uSW5pdCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgaWYgKHZhbHVlID09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX3NlYXJjaE9uSW5pdCA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9zZWFyY2hPbkluaXQgPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBzZWFyY2hPbkluaXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoT25Jbml0O1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gT3V0cHV0c1xyXG5cclxuICBAT3V0cHV0KCkgc3VtbWFyaWVzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QXJyYXk8SVN1bW1hcnlGb3JQcm9wcmV0eT4+ID1cclxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8SVN1bW1hcnlGb3JQcm9wcmV0eT4+KCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBcnJheTxhbnk+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8YW55Pj4oKTtcclxuXHJcbiAgQE91dHB1dCgpIGJ1dHRvbkNvbHVtbkNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxCdXR0b25DbGlja1Jlc3VsdD4gPSBuZXcgRXZlbnRFbWl0dGVyPEJ1dHRvbkNsaWNrUmVzdWx0PigpO1xyXG4gIEBPdXRwdXQoKSBzZWFyY2hGaWVsZHNWYWx1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBcnJheTxTZWFyY2hGaWVsZD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBcnJheTxTZWFyY2hGaWVsZD4+KCk7XHJcbiAgQE91dHB1dCgpIGdldEFsbFBhZ2VkUmVzdWx0Q2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgLy8jcmVnaW9uIE91dHB1dHNcclxuICAvLyNlbmRyZWdpb25cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2U6IEVycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RzaU1vZGFsU2VydmljZTogVHNpTW9kYWxTZXJ2aWNlLCBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbHVtbnMgPT0gbnVsbCAmJiB0aGlzLmNvbHVtbnMgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAnY29sdW1ucyBjYW50IGJlIG51bGwgb3IgdW5kZWZpbmVkLCBkZXZlbG9wcGVyIG11c3Qgc2V0IGNvbHVtbnMgb2YgZ3JpZCAhJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNob3dDb25zdWx0QnV0dG9uID09IHRydWUpIHtcclxuICAgICAgdGhpcy5jb2x1bW5zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25zX2NvbnN1bHQnLFxyXG4gICAgICAgICAgZmllbGQ6ICdjb25zdWx0JyxcclxuICAgICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWV5ZScsXHJcbiAgICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0JyxcclxuICAgICAgICAgIHRvb2xUaXBUZXh0OiBcInNoYXJlZF9hY3Rpb25fY29uc3VsdFwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLmNvbHVtbnMsXHJcbiAgICAgIF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyAjcmVnaW9uIGdyaWQgc3RhdGVcclxuXHJcbiAgZ2V0U3RhdGUoKSB7XHJcbiAgICBpZiAodGhpcy5nZW5lcmljR3JpZENvbXBvbmVudCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZW5lcmljR3JpZENvbXBvbmVudC5nZXRTdGF0ZSgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGxcclxuICB9XHJcblxyXG4gIHJlc3RvcmVTdGF0ZShjb25maWd1cmF0aW9uOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmdlbmVyaWNHcmlkQ29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuZ2VuZXJpY0dyaWRDb21wb25lbnQucmVzdG9yZVN0YXRlKGNvbmZpZ3VyYXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRTZWxlY3RlZENvbHVtbnMoY29uZmlndXJhdGlvbjogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5nZW5lcmljR3JpZENvbXBvbmVudCkge1xyXG4gICAgICB0aGlzLmdlbmVyaWNHcmlkQ29tcG9uZW50LnJlc2V0U2VsZWN0ZWRDb2x1bW5zKGNvbmZpZ3VyYXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvblxyXG5cclxuICBpc0xhc3RQYWdlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucGFnZVxyXG4gICAgICA/IHRoaXMucGFnZS5wYWdlTnVtYmVyID09PSB0aGlzLnBhZ2UudG90YWxDb3VudCAtIHRoaXMucGFnZS5wYWdlU2l6ZVxyXG4gICAgICA6IHRydWU7XHJcbiAgfVxyXG5cclxuICBpc0ZpcnN0UGFnZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2UgPyB0aGlzLnBhZ2UucGFnZU51bWJlciA9PT0gMCA6IHRydWU7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hGaWVsZHNWYWx1ZUNoYW5nZXMobmV3U2VhcmNoRmllbGRWYWx1ZXM6IEFycmF5PFNlYXJjaEZpZWxkPikge1xyXG4gICAgdGhpcy5zZWFyY2hGaWVsZHNWYWx1ZUNoYW5nZWQuZW1pdChuZXdTZWFyY2hGaWVsZFZhbHVlcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMYXp5TG9hZFxyXG4gICAqL1xyXG4gIC8vZmlyc3QgPT0+IHBhZ2UucGFnZU51bWJlclxyXG4gIC8vcm93cyA9PT4gcGFnZS5wYWdlU2l6ZVxyXG4gIC8vdGhpcy5wYWdlLml0ZW1zLmxlbmd0aCA9PT4gdG90YWwgY291bnRcclxuXHJcbiAgaGFuZGxlQnV0dG9uQ29sdW1uQ2xpY2tlZChldmVudDogQnV0dG9uQ2xpY2tSZXN1bHQpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmdldERhdGFGcm9tQXBpKSB7XHJcbiAgICAgIGlmIChldmVudC5maWVsZCA9PSAnY29uc3VsdCcgJiYgdGhpcy52aWV3Q29tcG9uZW50ICE9IHVuZGVmaW5lZCAmJiB0aGlzLnZpZXdDb21wb25lbnQgIT0gbnVsbCkge1xyXG4gICAgICAgIGxldCBpdGVtS2V5OiBhbnkgPSB0aGlzLnNlbGVjdEtleU9ubHkgPyBldmVudC5rZXkgOiBldmVudC5rZXlbdGhpcy5rZXldO1xyXG4gICAgICAgIHRoaXMuX2NvbnN1bHRSb3coaXRlbUtleSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5idXR0b25Db2x1bW5DbGlja2VkLmVtaXQoe1xyXG4gICAgICAgIGtleTogZXZlbnQua2V5LFxyXG4gICAgICAgIGZpZWxkOiBldmVudC5maWVsZCxcclxuICAgICAgICBzZWxlY3RLZXlPbmx5OiB0aGlzLnNlbGVjdEtleU9ubHksXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5idXR0b25Db2x1bW5DbGlja2VkLmVtaXQoe1xyXG4gICAgICAgIGtleTogZXZlbnQua2V5LFxyXG4gICAgICAgIGZpZWxkOiBldmVudC5maWVsZCxcclxuICAgICAgICBzZWxlY3RLZXlPbmx5OiB0aGlzLnNlbGVjdEtleU9ubHksXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9hZChldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5nZXREYXRhRnJvbUFwaSkge1xyXG4gICAgICB0aGlzLnBhZ2VkUmVxdWVzdCA9IGV2ZW50LnJlcXVlc3Q7XHJcbiAgICAgIHRoaXMuX3NldGZvcm1FbmRwb2ludEJvZHkoKTtcclxuICAgICAgdGhpcy5fbG9hZERTKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGtleXdvcmQgPSB0aGlzLnBhZ2VkUmVxdWVzdD8ua2V5d29yZD8udG9Mb2NhbGVMb3dlckNhc2UoKVxyXG4gICAgICBpZiAoIWtleXdvcmQgfHwga2V5d29yZCA9PSBcIlwiKSB7XHJcbiAgICAgICAgdGhpcy5faW5pdFBhZ2VGcm9tR3JpZERhdGEoKVxyXG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBsZXQgZGF0YSA9IFsuLi50aGlzLl9ncmlkRGF0YV07XHJcbiAgICAgIGxldCBmaWx0ZXJlZERhdGEgPSBkYXRhLmZpbHRlcihpdGVtID0+XHJcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhpdGVtKS5zb21lKHZhbHVlID0+XHJcbiAgICAgICAgICB2YWx1ZSAhPSBudWxsICYmXHJcbiAgICAgICAgICB2YWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoa2V5d29yZClcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuX2luaXRQYWdlRnJvbUdyaWREYXRhKGZpbHRlcmVkRGF0YSlcclxuICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0U3VtbWFyeShjb2w6IEdyaWRDb2x1bW4sIGdyaWREYXRhPzogQXJyYXk8YW55Pik6IG51bWJlciB7XHJcbiAgICByZXR1cm4gcHJlY2lzZVN1bSgoZ3JpZERhdGEgPz8gW10pLm1hcCgocm93OiBhbnkpID0+IHJvd1tjb2wuZmllbGRdKSk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGVkSXRlbXNDaGFuZ2UoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zQ2hhbmdlLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuICAvLyNyZWdpb24gcHJpdmF0ZSBtZXRob2RzXHJcbiAgcHJpdmF0ZSBfc2V0Zm9ybUVuZHBvaW50Qm9keSgpOiB2b2lkIHtcclxuICAgIGxldCBveDogYW55ID0gdGhpcy5fY2xvbmVQYWdlZFJlcXVlc3QodGhpcy5wYWdlZFJlcXVlc3QpO1xyXG4gICAgb3hbJ2dldEFsbERhdGEnXSA9IHRydWU7XHJcbiAgICB0aGlzLmZvcm1FbmRwb2ludEJvZHkgPSBKU09OLnN0cmluZ2lmeShveCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2FkRFMoaXNGb3JDYWxlbmRlcjogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLnBhZ2UubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnBhZ2VkUmVxdWVzdCA9IHtcclxuICAgICAgLi4udGhpcy5wYWdlZFJlcXVlc3QsXHJcbiAgICAgIGdldEFsbERhdGE6IGlzRm9yQ2FsZW5kZXIsXHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMuY3J1ZFNlcnZpY2UgIT0gbnVsbCAmJiB0aGlzLmNydWRTZXJ2aWNlICE9IHVuZGVmaW5lZClcclxuICAgICAgdGhpcy5jcnVkU2VydmljZS5nZXRBbGxQYWdlZCh0aGlzLnBhZ2VkUmVxdWVzdCkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAodmFsdWU6IElQYWdlZFJlc3BvbnNlPGFueT4pID0+IHtcclxuICAgICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnBhZ2UgPSB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5wYWdlLFxyXG4gICAgICAgICAgICAgIGl0ZW1zIDogdmFsdWUuaXRlbXMsXHJcbiAgICAgICAgICAgICAgdG90YWxDb3VudDogdmFsdWUudG90YWxDb3VudCxcclxuICAgICAgICAgICAgICBzdW1tYXJpZXM6IHZhbHVlLnN1bW1hcmllcyA/IHZhbHVlLnN1bW1hcmllcyA6IFtdLFxyXG4gICAgICAgICAgICAgIGdyb3VwczogdmFsdWUuZ3JvdXBzLFxyXG4gICAgICAgICAgICAgIHRvdGFsUGFnZXM6ICh0aGlzLnBhZ2UudG90YWxDb3VudCAtICh0aGlzLnBhZ2UudG90YWxDb3VudCAlIHRoaXMucGFnZS5wYWdlU2l6ZSkpIC8gdGhpcy5wYWdlLnBhZ2VTaXplICsgMSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc3VtbWFyaWVzQ2hhbmdlLmVtaXQodGhpcy5wYWdlLnN1bW1hcmllcyk7XHJcbiAgICAgICAgICB0aGlzLmdldEFsbFBhZ2VkUmVzdWx0Q2hhbmdlZC5lbWl0KHZhbHVlKTtcclxuICAgICAgICAgIHRoaXMucGFnZS5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2UoZXJyb3IpO1xyXG4gICAgICAgICAgdGhpcy5wYWdlLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NvbnN1bHRSb3coaXRlbUtleTogYW55KSB7XHJcbiAgICB0aGlzLl9vcGVuTW9kYWwoQ29tcG9uZW50X01vZGVzLkNPTlNVTFQsIGl0ZW1LZXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfb3Blbk1vZGFsKG1vZGU6IHN0cmluZywgaXRlbUtleT86IGFueSk6IHZvaWQge1xyXG4gICAgbGV0IGNvbmY6IER5bmFtaWNEaWFsb2dDb25maWc7XHJcbiAgICBpZiAodGhpcy5tb2RhbFNpemUgIT0gbnVsbCAmJiB0aGlzLm1vZGFsU2l6ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgY29uZiA9IHtcclxuICAgICAgICBkYXRhOiB7IGlkOiBpdGVtS2V5LCBtb2RlOiBtb2RlIH0sXHJcbiAgICAgICAgc3R5bGVDbGFzczogJycsXHJcbiAgICAgICAgd2lkdGg6IHRoaXMubW9kYWxTaXplLndpZHRoLFxyXG4gICAgICAgIGhlaWdodDogdGhpcy5tb2RhbFNpemUuaGVpZ2h0LFxyXG4gICAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uZiA9IHsgZGF0YTogeyBpZDogaXRlbUtleSwgbW9kZTogbW9kZSB9LCBtYXhpbWl6YWJsZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZGlhbG9nUmVmID0gdGhpcy5fdHNpTW9kYWxTZXJ2aWNlLm9wZW4odGhpcy52aWV3Q29tcG9uZW50LCBjb25mKTtcclxuXHJcbiAgICB0aGlzLl9kaWFsb2dSZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT4gdGhpcy5fY2xvc2VNb2RhbCh2YWwpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfY2xvc2VNb2RhbCh2YWw/OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX2xvYWREUygpO1xyXG4gICAgdGhpcy5fZGlhbG9nUmVmPy5kZXN0cm95KCk7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudCA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuX2xvYWREUygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xvbmVQYWdlZFJlcXVlc3QocmVxdWVzdDogSVBhZ2VkUmVxdWVzdCk6IElQYWdlZFJlcXVlc3Qge1xyXG4gICAgbGV0IGNsb25lOiBJUGFnZWRSZXF1ZXN0ID0ge1xyXG4gICAgICBtYXhSZXN1bHRDb3VudDogcmVxdWVzdC5tYXhSZXN1bHRDb3VudCxcclxuICAgICAgc2tpcENvdW50OiByZXF1ZXN0LnNraXBDb3VudCxcclxuICAgICAgc29ydGluZzogcmVxdWVzdC5zb3J0aW5nLFxyXG4gICAgICBrZXl3b3JkOiByZXF1ZXN0LmtleXdvcmQsXHJcbiAgICAgIGZpbHRlcnM6IHJlcXVlc3QuZmlsdGVycyxcclxuICAgICAgZ2V0QWxsRGF0YTogcmVxdWVzdC5nZXRBbGxEYXRhLFxyXG4gICAgICBzdW1tYXJpZXM6IHJlcXVlc3Quc3VtbWFyaWVzLFxyXG4gICAgfTtcclxuICAgIHJldHVybiBjbG9uZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luaXRQYWdlRnJvbUdyaWREYXRhKGdyaWREYXRhID0gdGhpcy5fZ3JpZERhdGEpIHtcclxuICAgIHRoaXMucGFnZSA9IHtcclxuICAgICAgLi4udGhpcy5wYWdlLFxyXG4gICAgICBpdGVtczogWy4uLmdyaWREYXRhXSxcclxuICAgICAgdG90YWxDb3VudDogZ3JpZERhdGEubGVuZ3RoLFxyXG4gICAgICB0b3RhbFBhZ2VzOlxyXG4gICAgICAgIChncmlkRGF0YS5sZW5ndGggLSAoZ3JpZERhdGEubGVuZ3RoICUgdGhpcy5wYWdlLnBhZ2VTaXplKSkgL1xyXG4gICAgICAgIHRoaXMucGFnZS5wYWdlU2l6ZSArXHJcbiAgICAgICAgMSxcclxuICAgICAgcGFnZU51bWJlcjogMSxcclxuICAgICAgcGFnZVNpemU6IDEwLFxyXG4gICAgICBzdW1tYXJpZXM6IHRoaXMuY29sdW1uc1xyXG4gICAgICAgIC5maWx0ZXIoY29sID0+IGNvbC5oYXZlU3VtbWFyeSlcclxuICAgICAgICAubWFwKGNvbCA9PiAoe1xyXG4gICAgICAgICAgcHJvcHJldHk6IGNvbC5maWVsZCxcclxuICAgICAgICAgIHN1bW1hcnk6IHRoaXMuZ2V0U3VtbWFyeShjb2wsIGdyaWREYXRhKVxyXG4gICAgICAgIH0pKSxcclxuICAgICAgbG9hZGluZzogZmFsc2VcclxuICAgIH07XHJcbiAgICB0aGlzLnN1bW1hcmllc0NoYW5nZS5lbWl0KHRoaXMucGFnZS5zdW1tYXJpZXMpO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgZGlzcGxheVNlYXJjaEZpZWxkcygpIHtcclxuICAgIHRoaXMuc2hvd1NlYXJjaEZpZWxkID0gIXRoaXMuc2hvd1NlYXJjaEZpZWxkO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIGNhbGVuZGVyXHJcbiAgdG9nZ2xlQ2FsZW5kZXJWaWV3KCkge1xyXG4gICAgdGhpcy5zaG93Q2FsZW5kZXJWaWV3ID0gIXRoaXMuc2hvd0NhbGVuZGVyVmlldztcclxuICAgIHRoaXMuX2xvYWREUyh0aGlzLnNob3dDYWxlbmRlclZpZXcpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlQ2FsZW5kYXJFdmVudENsaWNrKGl0ZW06IGFueSkge1xyXG4gICAgc3dpdGNoIChpdGVtLm1vZGUpIHtcclxuICAgICAgY2FzZSBDb21wb25lbnRfTW9kZXMuQ09OU1VMVDpcclxuICAgICAgICB0aGlzLl9jb25zdWx0Um93KGl0ZW0uaWQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAvLyBjYXNlIENvbXBvbmVudF9Nb2Rlcy5DUkVBVEUgOlxyXG4gICAgICAvLyAgIHRoaXMuX29wZW5Nb2RhbChDb21wb25lbnRfTW9kZXMuQ1JFQVRFLG51bGwsbnVsbCk7XHJcbiAgICAgIC8vIGJyZWFrO1xyXG4gICAgICAvLyBjYXNlIENvbXBvbmVudF9Nb2Rlcy5FRElUIDpcclxuICAgICAgLy8gICB0aGlzLl9lZGl0Um93KGl0ZW0uaWQpO1xyXG4gICAgICAvLyBicmVhaztcclxuICAgIH1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcbn0iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gIFxyXG4gIDxwLXRvb2xiYXIgKm5nSWY9XCJmb3JtRW5kcG9pbnRcIiBzdHlsZUNsYXNzPVwiYm9yZGVyLXJhZGl1cy03IG1iLTEgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJsZWZ0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yIG1sLTJcIj5cclxuICAgICAgICA8VHNpLUJ1dHRvbiAgaWNvbj1cInBpIHBpLXNsaWRlcnMtaFwiIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiIHRvb2x0aXBUZXh0PVwic2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9tZW51X3ZpZXdcIiAqbmdJZj1cInNlYXJjaEZpZWxkc1wiXHJcbiAgICAgICAgc3R5bGVDbGFzcz1cImgtMnJlbSBob3ZlcjpzaGFkb3ctNiBwLWJ1dHRvbi1pY29uLW9ubHkge3tzaG93U2VhcmNoRmllbGQgPyAncC1idXR0b24tc2Vjb25kYXJ5JyA6ICdwLWJ1dHRvbi1zdWNjZXNzJ319XCIgXHJcbiAgICAgICAgICAoY2xpY2spPVwiZGlzcGxheVNlYXJjaEZpZWxkcygpXCI+XHJcbiAgICAgICAgPC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgIDxUc2ktQnV0dG9uIGljb249XCJwLWJ1dHRvbi1pY29uIHBpIHBpLWNhbGVuZGFyIHt7c2hvd0NhbGVuZGVyVmlldyA/ICdwaSBwaS1hbGlnbi1qdXN0aWZ5JyA6ICdwaSBwaS1jYWxlbmRhcid9fVwiIFxyXG4gICAgICAgIHN0eWxlQ2xhc3M9XCJwLWVsZW1lbnQgcC1idXR0b24tcHJpbWFyeSBob3ZlcjpzaGFkb3ctNiBoLTJyZW0gcC1idXR0b24gcC1jb21wb25lbnQgcC1idXR0b24taWNvbi1vbmx5XCIgKGNsaWNrKT1cInRvZ2dsZUNhbGVuZGVyVmlldygpXCIgXHJcbiAgICAgICAgdG9vbHRpcFRleHQ9XCJ7eyhzaG93Q2FsZW5kZXJWaWV3ID8gJ3NoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfbGlzdF92aWV3JyA6ICdzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2NhbGVuZGVyX3ZpZXcnKSB8IGxvY2FsaXplfX1cIiBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIj48L1RzaS1CdXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIFxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInJpZ2h0XCI+XHJcbiAgICAgICAgPGFwcC1yZXBvcnRpbmcgKm5nSWY9XCJmb3JtRW5kcG9pbnQgfHwgYnVzaW5lc3NDbGFzc1wiXHJcbiAgICAgICAgICBbZm9ybUVuZHBvaW50XT1cImZvcm1FbmRwb2ludFwiXHJcbiAgICAgICAgICBbZm9ybU5hbWVdPVwiZm9ybU5hbWVcIlxyXG4gICAgICAgICAgW2Zvcm1FbmRwb2ludEJvZHldPVwiZm9ybUVuZHBvaW50Qm9keVwiXHJcbiAgICAgICAgICBbaXNGb3JtRW5kcG9pbnRQYWdlZF09XCJ0cnVlXCJcclxuICAgICAgICAgIFtzaG93SW1wb3J0RXhwb3J0QnV0dG9uXT1cInNob3dJbXBvcnRFeHBvcnRCdXR0b25cIlxyXG4gICAgICAgICAgKHJlZnJlc2hEYXRhKT1cInJlZnJlc2goJGV2ZW50KVwiXHJcbiAgICAgICAgICBbZmlsdGVyc0h0bWxUZW1wbGF0ZV09XCJmaWx0ZXJzSHRtbFRlbXBsYXRlXCJcclxuICAgICAgICAgIFtidXNpbmVzc0NsYXNzXT1cImJ1c2luZXNzQ2xhc3NcIlxyXG4gICAgICAgICAgW3BhZ2VkUmVxdWVzdF09XCJwYWdlZFJlcXVlc3RcIlxyXG4gICAgICAgICAgW2NvbmZpZ01vZGVCdXR0b25JZF09XCJjb25maWdNb2RlQnV0dG9uSWRcIlxyXG4gICAgICAgICAgW3Nob3dOb3RlQnV0dG9uXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtzaG93QWN0aW9uQnV0dG9uXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtzaG93SW5mb0J1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbc2hvd1VwbG9hZEJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbc2VsZWN0ZWRJdGVtVWlkc109XCJzZWxlY3RlZEl0ZW1zXCJcclxuICAgICAgICAgID48L2FwcC1yZXBvcnRpbmc+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC10b29sYmFyPlxyXG4gIFxyXG4gIDxkaXY+XHJcblxyXG4gICAgPFRzaS1HZW5lcmljLUdyaWQgXHJcbiAgICAgIFtmb3JtTmFtZV09XCJmb3JtTmFtZVwiIFxyXG4gICAgICBbaGVhZGVyXT1cImhlYWRlclwiIFxyXG4gICAgICBbcGFnZV09XCJwYWdlXCIgXHJcbiAgICAgIFtwYWdlZFJlcXVlc3RdPVwicGFnZWRSZXF1ZXN0XCIgXHJcbiAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxyXG4gICAgICBbc2VhcmNoRmllbGRzXT1cInNlYXJjaEZpZWxkc1wiIFxyXG4gICAgICBbc2hvd1NlYXJjaEZpZWxkXT1cInNob3dTZWFyY2hGaWVsZFwiIFxyXG4gICAgICAobG9hZCk9XCJsb2FkKCRldmVudClcIlxyXG4gICAgICAoc2VhcmNoRmllbGRzVmFsdWVDaGFuZ2VkKT1cInNlYXJjaEZpZWxkc1ZhbHVlQ2hhbmdlcygkZXZlbnQpXCJcclxuICAgICAgKGJ1dHRvbkNvbHVtbkNsaWNrZWQpPVwiaGFuZGxlQnV0dG9uQ29sdW1uQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgWyhmaWx0ZXJzSHRtbFRlbXBsYXRlKV09XCJmaWx0ZXJzSHRtbFRlbXBsYXRlXCJcclxuICAgICAgW3NlbGVjdEtleU9ubHldPVwic2VsZWN0S2V5T25seVwiXHJcbiAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cInNlbGVjdGlvbk1vZGVcIlxyXG4gICAgICBbc2hvd0ltcG9ydEV4cG9ydEJ1dHRvbl09XCJzaG93SW1wb3J0RXhwb3J0QnV0dG9uXCJcclxuICAgICAgW2tleV09XCJrZXlcIlxyXG4gICAgICBbY3J1ZFNlcnZpY2VdPVwiY3J1ZFNlcnZpY2VcIlxyXG4gICAgICBbKHNlbGVjdGVkSXRlbXMpXT1cInNlbGVjdGVkSXRlbXNcIlxyXG4gICAgICAoc2VsZWN0ZWRJdGVtc0NoYW5nZSk9XCJvblNlbGVjdGVkSXRlbXNDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgIFtpc0dyaWREYXRhUGFnZWRJbkFwaV09XCJnZXREYXRhRnJvbUFwaVwiXHJcbiAgICAgIFtzZWFyY2hPbkluaXRdPVwic2VhcmNoT25Jbml0XCJcclxuICAgICAgW3Nob3dFeHBvcnRCdXR0b25dPVwic2hvd0V4cG9ydEJ1dHRvblwiXHJcbiAgICAgIFtzaG93SGVhZGVyRmlsdGVyc109XCJzaG93SGVhZGVyRmlsdGVyc1wiXHJcbiAgICAgIFtzaG93RmlsdGVyQnV0dG9uXT1cInNob3dGaWx0ZXJCdXR0b25cIlxyXG4gICAgICBbc2hvd0dsb2JhbFNlYXJjaF09XCJzaG93R2xvYmFsU2VhcmNoXCJcclxuICAgICAgW2lzU2VhcmNoQnV0dG9uRGlzYWJsZWRdPVwiaXNTZWFyY2hCdXR0b25EaXNhYmxlZFwiXHJcbiAgICAgIFtzaG93Q2FsZW5kZXJWaWV3XT1cInNob3dDYWxlbmRlclZpZXdcIlxyXG4gICAgICAoY2FsZW5kYXJFdmVudENsaWNrKT1cImhhbmRsZUNhbGVuZGFyRXZlbnRDbGljaygkZXZlbnQpXCJcclxuICAgICAgW3NlbGVjdEFsbF09XCJzZWxlY3RBbGxcIlxyXG4gICAgICBbY2hlY2tlZEJ5RmllbGRdPVwiY2hlY2tlZEJ5RmllbGRcIlxyXG4gICAgICBbdGFyZ2V0QnVzaW5lc3NDbGFzc109XCJ0YXJnZXRCdXNpbmVzc0NsYXNzXCJcclxuICAgICAgW3NvcnRNb2RlXT1cInNvcnRNb2RlXCJcclxuICAgICAgW3NpemluZ01vZGVdPVwic2l6aW5nTW9kZVwiXHJcbiAgICAgID48L1RzaS1HZW5lcmljLUdyaWQ+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|