raain-app 1.5.28 → 1.5.30
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/CHANGELOG.md +10 -0
- package/esm2020/raain-compare-stack/raain-compare-stack.component.mjs +3 -3
- package/esm2020/raain-details/raain-details.component.mjs +22 -19
- package/esm2020/raain-map/raain-map.component.mjs +50 -5
- package/esm2020/shared.pipe.mjs +10 -15
- package/esm2020/tools/CompareManager.mjs +7 -7
- package/esm2020/tools/RefreshManager.mjs +45 -5
- package/esm2020/tools/index.mjs +1 -2
- package/fesm2015/raain-app.mjs +330 -315
- package/fesm2015/raain-app.mjs.map +1 -1
- package/fesm2020/raain-app.mjs +323 -305
- package/fesm2020/raain-app.mjs.map +1 -1
- package/package.json +3 -3
- package/raain-details/raain-details.component.d.ts +5 -5
- package/raain-map/raain-map.component.d.ts +12 -4
- package/tools/RefreshManager.d.ts +8 -2
- package/tools/index.d.ts +0 -1
- package/esm2020/tools/ReportManager.mjs +0 -66
- package/tools/ReportManager.d.ts +0 -23
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- RAD-121: some reorg + details (W)
|
|
13
|
+
|
|
14
|
+
## [1.5.29] - 2025-07-04
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- RAD-121: with raain-ui 2.3.16, no editable charts, local dates everywhere
|
|
19
|
+
|
|
10
20
|
## [1.5.27] - 2025-06-30
|
|
11
21
|
|
|
12
22
|
### Changed
|
|
@@ -13,10 +13,10 @@ export class RaainCompareStackComponent {
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
RaainCompareStackComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RaainCompareStackComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
16
|
-
RaainCompareStackComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RaainCompareStackComponent, selector: "raain-compare-stack", inputs: { compareManager: "compareManager", currentHeight: "currentHeight", cumulative: "cumulative" }, outputs: { selectedPoint: "selectedPoint" }, ngImport: i0, template: "<div *ngIf=\"cumulative\">\n
|
|
16
|
+
RaainCompareStackComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RaainCompareStackComponent, selector: "raain-compare-stack", inputs: { compareManager: "compareManager", currentHeight: "currentHeight", cumulative: "cumulative" }, outputs: { selectedPoint: "selectedPoint" }, ngImport: i0, template: "<div *ngIf=\"cumulative\">\n <ion-col size-md=\"6\" size-xs=\"12\">\n <ion-card class=\"card-compare\">\n <ion-card-header>Cumulative</ion-card-header>\n <ion-card-content *ngIf=\"compareManager.globalComparePoints?.length\">\n <raain-compare\n (selectedPoint)=\"onClick($event)\"\n [compareIndex]=\"0\"\n [currentHeight]=\"500\"\n [pointMax]=\"compareManager.globalComparePointsMax\"\n [points]=\"compareManager.globalComparePoints\"></raain-compare>\n </ion-card-content>\n </ion-card>\n </ion-col>\n</div>\n\n<div *ngIf=\"!cumulative\">\n\n <!--\n <ion-col>\n <ion-card id=\"card-matrix\">\n <div *ngIf=\"compareManager?.compareNames?.length\">\n <raain-speed [compareSpeedMatrix]=\"compareManager.compareSpeedMatrix\"\n [compareTrustedIndicator]=\"compareManager.compareTrustedIndicator\"\n [currentHeight]=\"300\"\n ></raain-speed>\n </div>\n <ion-card-content>\n {{ compareManager?.compareVersion }}\n </ion-card-content>\n </ion-card>\n </ion-col> -->\n\n <ion-col *ngFor=\"let compare of compareManager?.uiCompares; index as compareIndex\" size-md=\"6\" size-xs=\"12\">\n <ion-card class=\"card-compare\">\n <ion-card-header>{{ compare.name }} {{ compare.remarks }}\n </ion-card-header>\n <ion-card-content *ngIf=\"compare.comparePoints?.length\">\n <raain-compare\n (selectedPoint)=\"onClick($event)\"\n [compareIndex]=\"compareIndex\"\n [currentHeight]=\"500\"\n [pointMax]=\"compare.comparePointsMax\"\n [points]=\"compare.comparePoints\"></raain-compare>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!--\n <ion-card id=\"card-selected-gauge\" slot=\"end\">\n <ion-card-content>\n <ion-accordion-group>\n\n <ion-accordion value=\"selected\">\n <ion-item color=\"light\" slot=\"header\">\n <ion-label>debug</ion-label>\n </ion-item>\n\n <div class=\"ion-padding\" slot=\"content\">\n date: {{ currentTimeframeTarget.date | date:'yyyy-MM-dd HH:mm:ss' }}<br>\n radarMeasureId: {{ currentTimeframeTarget.radarMeasureId }}<br>\n rainComputationId: {{ currentTimeframeTarget.rainComputationId }}<br>\n rainComputationVersion: {{ currentTimeframeTarget.rainComputationVersion }}<br>\n rainComputationQualitiesPerDate :\n <ul>\n <li *ngFor=\"let rcq of currentTimeframeTarget.rainComputationQualitiesPerDate\">\n {{ rcq.version }} - {{ rcq.id }}\n </li>\n </ul>\n </div>\n\n </ion-accordion>\n <ion-accordion *ngIf=\"selectedGauge\" value=\"context\">\n <ion-item color=\"light\" slot=\"header\">\n <ion-label>{{ selectedGaugeInPointsDetail }}</ion-label>\n </ion-item>\n <div [innerHTML]=\"formatLabelOfSelectedGauge(selectedGaugeInPoints)\" class=\"ion-padding\"\n slot=\"content\"></div>\n </ion-accordion>\n </ion-accordion-group>\n </ion-card-content>\n </ion-card>\n -->\n</div>\n", styles: ["#card-matrix{width:170px}.card-compare{min-width:300px}ion-card-header{padding:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i2.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i3.RaainCompareComponent, selector: "raain-compare", inputs: ["points", "pointMax", "remarks", "compareIndex", "currentHeight", "currentWidth"], outputs: ["selectedPoint"] }] });
|
|
17
17
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RaainCompareStackComponent, decorators: [{
|
|
18
18
|
type: Component,
|
|
19
|
-
args: [{ selector: 'raain-compare-stack', template: "<div *ngIf=\"cumulative\">\n
|
|
19
|
+
args: [{ selector: 'raain-compare-stack', template: "<div *ngIf=\"cumulative\">\n <ion-col size-md=\"6\" size-xs=\"12\">\n <ion-card class=\"card-compare\">\n <ion-card-header>Cumulative</ion-card-header>\n <ion-card-content *ngIf=\"compareManager.globalComparePoints?.length\">\n <raain-compare\n (selectedPoint)=\"onClick($event)\"\n [compareIndex]=\"0\"\n [currentHeight]=\"500\"\n [pointMax]=\"compareManager.globalComparePointsMax\"\n [points]=\"compareManager.globalComparePoints\"></raain-compare>\n </ion-card-content>\n </ion-card>\n </ion-col>\n</div>\n\n<div *ngIf=\"!cumulative\">\n\n <!--\n <ion-col>\n <ion-card id=\"card-matrix\">\n <div *ngIf=\"compareManager?.compareNames?.length\">\n <raain-speed [compareSpeedMatrix]=\"compareManager.compareSpeedMatrix\"\n [compareTrustedIndicator]=\"compareManager.compareTrustedIndicator\"\n [currentHeight]=\"300\"\n ></raain-speed>\n </div>\n <ion-card-content>\n {{ compareManager?.compareVersion }}\n </ion-card-content>\n </ion-card>\n </ion-col> -->\n\n <ion-col *ngFor=\"let compare of compareManager?.uiCompares; index as compareIndex\" size-md=\"6\" size-xs=\"12\">\n <ion-card class=\"card-compare\">\n <ion-card-header>{{ compare.name }} {{ compare.remarks }}\n </ion-card-header>\n <ion-card-content *ngIf=\"compare.comparePoints?.length\">\n <raain-compare\n (selectedPoint)=\"onClick($event)\"\n [compareIndex]=\"compareIndex\"\n [currentHeight]=\"500\"\n [pointMax]=\"compare.comparePointsMax\"\n [points]=\"compare.comparePoints\"></raain-compare>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!--\n <ion-card id=\"card-selected-gauge\" slot=\"end\">\n <ion-card-content>\n <ion-accordion-group>\n\n <ion-accordion value=\"selected\">\n <ion-item color=\"light\" slot=\"header\">\n <ion-label>debug</ion-label>\n </ion-item>\n\n <div class=\"ion-padding\" slot=\"content\">\n date: {{ currentTimeframeTarget.date | date:'yyyy-MM-dd HH:mm:ss' }}<br>\n radarMeasureId: {{ currentTimeframeTarget.radarMeasureId }}<br>\n rainComputationId: {{ currentTimeframeTarget.rainComputationId }}<br>\n rainComputationVersion: {{ currentTimeframeTarget.rainComputationVersion }}<br>\n rainComputationQualitiesPerDate :\n <ul>\n <li *ngFor=\"let rcq of currentTimeframeTarget.rainComputationQualitiesPerDate\">\n {{ rcq.version }} - {{ rcq.id }}\n </li>\n </ul>\n </div>\n\n </ion-accordion>\n <ion-accordion *ngIf=\"selectedGauge\" value=\"context\">\n <ion-item color=\"light\" slot=\"header\">\n <ion-label>{{ selectedGaugeInPointsDetail }}</ion-label>\n </ion-item>\n <div [innerHTML]=\"formatLabelOfSelectedGauge(selectedGaugeInPoints)\" class=\"ion-padding\"\n slot=\"content\"></div>\n </ion-accordion>\n </ion-accordion-group>\n </ion-card-content>\n </ion-card>\n -->\n</div>\n", styles: ["#card-matrix{width:170px}.card-compare{min-width:300px}ion-card-header{padding:0}\n"] }]
|
|
20
20
|
}], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { compareManager: [{
|
|
21
21
|
type: Input
|
|
22
22
|
}], currentHeight: [{
|
|
@@ -26,4 +26,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
26
26
|
}], cumulative: [{
|
|
27
27
|
type: Input
|
|
28
28
|
}] } });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tY29tcGFyZS1zdGFjay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9zaGFyZWQvcmFhaW4tY29tcGFyZS1zdGFjay9yYWFpbi1jb21wYXJlLXN0YWNrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9jb3JlL3NoYXJlZC9yYWFpbi1jb21wYXJlLXN0YWNrL3JhYWluLWNvbXBhcmUtc3RhY2suY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFTN0UsTUFBTSxPQUFPLDBCQUEwQjtJQWFuQyxZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUwzQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUF5QyxDQUFDO0lBSzVDLENBQUM7SUFFNUIsT0FBTyxDQUFDLENBQXdDO1FBQ3RELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7O3dIQWpCUSwwQkFBMEI7NEdBQTFCLDBCQUEwQixnTkNUdkMsdThHQW9GQTs0RkQzRWEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNJLHFCQUFxQjs2RkFNeEIsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLE1BQU07Z0JBSUEsVUFBVTtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBOZ1pvbmUsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1hZVHlwZX0gZnJvbSAnLi4veHl0eXBlJztcbmltcG9ydCB7Q29tcGFyZU1hbmFnZXJ9IGZyb20gJy4uL3Rvb2xzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdyYWFpbi1jb21wYXJlLXN0YWNrJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmFhaW4tY29tcGFyZS1zdGFjay5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcmFhaW4tY29tcGFyZS1zdGFjay5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBSYWFpbkNvbXBhcmVTdGFja0NvbXBvbmVudCB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY29tcGFyZU1hbmFnZXI6IENvbXBhcmVNYW5hZ2VyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY3VycmVudEhlaWdodDogbnVtYmVyO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHNlbGVjdGVkUG9pbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHtwb2ludDogWFlUeXBlOyBjb21wYXJlSW5kZXg6IG51bWJlcn0+KCk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjdW11bGF0aXZlOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge31cblxuICAgIHByb3RlY3RlZCBvbkNsaWNrKGU6IHtwb2ludDogWFlUeXBlOyBjb21wYXJlSW5kZXg6IG51bWJlcn0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFBvaW50LmVtaXQoe3BvaW50OiBlLnBvaW50LCBjb21wYXJlSW5kZXg6IGUuY29tcGFyZUluZGV4fSk7XG4gICAgfVxufVxuIiwiPGRpdiAqbmdJZj1cImN1bXVsYXRpdmVcIj5cbiAgICA8aW9uLWNvbCBzaXplLW1kPVwiNlwiIHNpemUteHM9XCIxMlwiPlxuICAgICAgICA8aW9uLWNhcmQgY2xhc3M9XCJjYXJkLWNvbXBhcmVcIj5cbiAgICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+Q3VtdWxhdGl2ZTwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQgKm5nSWY9XCJjb21wYXJlTWFuYWdlci5nbG9iYWxDb21wYXJlUG9pbnRzPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICA8cmFhaW4tY29tcGFyZVxuICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkUG9pbnQpPVwib25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb21wYXJlSW5kZXhdPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudEhlaWdodF09XCI1MDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3BvaW50TWF4XT1cImNvbXBhcmVNYW5hZ2VyLmdsb2JhbENvbXBhcmVQb2ludHNNYXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3BvaW50c109XCJjb21wYXJlTWFuYWdlci5nbG9iYWxDb21wYXJlUG9pbnRzXCI+PC9yYWFpbi1jb21wYXJlPlxuICAgICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgICAgICA8L2lvbi1jYXJkPlxuICAgIDwvaW9uLWNvbD5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiIWN1bXVsYXRpdmVcIj5cblxuICAgIDwhLS1cbiAgICA8aW9uLWNvbD5cbiAgICAgIDxpb24tY2FyZCBpZD1cImNhcmQtbWF0cml4XCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJjb21wYXJlTWFuYWdlcj8uY29tcGFyZU5hbWVzPy5sZW5ndGhcIj5cbiAgICAgICAgICA8cmFhaW4tc3BlZWQgW2NvbXBhcmVTcGVlZE1hdHJpeF09XCJjb21wYXJlTWFuYWdlci5jb21wYXJlU3BlZWRNYXRyaXhcIlxuICAgICAgICAgICAgICAgICAgICAgICBbY29tcGFyZVRydXN0ZWRJbmRpY2F0b3JdPVwiY29tcGFyZU1hbmFnZXIuY29tcGFyZVRydXN0ZWRJbmRpY2F0b3JcIlxuICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudEhlaWdodF09XCIzMDBcIlxuICAgICAgICAgID48L3JhYWluLXNwZWVkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAge3sgY29tcGFyZU1hbmFnZXI/LmNvbXBhcmVWZXJzaW9uIH19XG4gICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgIDwvaW9uLWNhcmQ+XG4gICAgPC9pb24tY29sPiAtLT5cblxuICAgIDxpb24tY29sICpuZ0Zvcj1cImxldCBjb21wYXJlIG9mICBjb21wYXJlTWFuYWdlcj8udWlDb21wYXJlczsgaW5kZXggYXMgY29tcGFyZUluZGV4XCIgc2l6ZS1tZD1cIjZcIiBzaXplLXhzPVwiMTJcIj5cbiAgICAgICAgPGlvbi1jYXJkIGNsYXNzPVwiY2FyZC1jb21wYXJlXCI+XG4gICAgICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPnt7IGNvbXBhcmUubmFtZSB9fSB7eyBjb21wYXJlLnJlbWFya3MgfX1cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQgKm5nSWY9XCJjb21wYXJlLmNvbXBhcmVQb2ludHM/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgIDxyYWFpbi1jb21wYXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRQb2ludCk9XCJvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbXBhcmVJbmRleF09XCJjb21wYXJlSW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2N1cnJlbnRIZWlnaHRdPVwiNTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwb2ludE1heF09XCJjb21wYXJlLmNvbXBhcmVQb2ludHNNYXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3BvaW50c109XCJjb21wYXJlLmNvbXBhcmVQb2ludHNcIj48L3JhYWluLWNvbXBhcmU+XG4gICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgPC9pb24tY29sPlxuXG4gICAgPCEtLVxuICAgIDxpb24tY2FyZCAgaWQ9XCJjYXJkLXNlbGVjdGVkLWdhdWdlXCIgc2xvdD1cImVuZFwiPlxuICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDxpb24tYWNjb3JkaW9uLWdyb3VwPlxuXG4gICAgICAgICAgPGlvbi1hY2NvcmRpb24gdmFsdWU9XCJzZWxlY3RlZFwiPlxuICAgICAgICAgICAgPGlvbi1pdGVtIGNvbG9yPVwibGlnaHRcIiBzbG90PVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgIDxpb24tbGFiZWw+ZGVidWc8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgIDwvaW9uLWl0ZW0+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZ1wiIHNsb3Q9XCJjb250ZW50XCI+XG4gICAgICAgICAgICAgIGRhdGU6IHt7IGN1cnJlbnRUaW1lZnJhbWVUYXJnZXQuZGF0ZSB8ICBkYXRlOid5eXl5LU1NLWRkIEhIOm1tOnNzJyB9fTxicj5cbiAgICAgICAgICAgICAgcmFkYXJNZWFzdXJlSWQ6IHt7IGN1cnJlbnRUaW1lZnJhbWVUYXJnZXQucmFkYXJNZWFzdXJlSWQgfX08YnI+XG4gICAgICAgICAgICAgIHJhaW5Db21wdXRhdGlvbklkOiB7eyBjdXJyZW50VGltZWZyYW1lVGFyZ2V0LnJhaW5Db21wdXRhdGlvbklkIH19PGJyPlxuICAgICAgICAgICAgICByYWluQ29tcHV0YXRpb25WZXJzaW9uOiB7eyBjdXJyZW50VGltZWZyYW1lVGFyZ2V0LnJhaW5Db21wdXRhdGlvblZlcnNpb24gfX08YnI+XG4gICAgICAgICAgICAgIHJhaW5Db21wdXRhdGlvblF1YWxpdGllc1BlckRhdGUgOlxuICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCByY3Egb2YgY3VycmVudFRpbWVmcmFtZVRhcmdldC5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXNQZXJEYXRlXCI+XG4gICAgICAgICAgICAgICAgICB7eyByY3EudmVyc2lvbiB9fSAtIHt7IHJjcS5pZCB9fVxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwvaW9uLWFjY29yZGlvbj5cbiAgICAgICAgICA8aW9uLWFjY29yZGlvbiAqbmdJZj1cInNlbGVjdGVkR2F1Z2VcIiB2YWx1ZT1cImNvbnRleHRcIj5cbiAgICAgICAgICAgIDxpb24taXRlbSBjb2xvcj1cImxpZ2h0XCIgc2xvdD1cImhlYWRlclwiPlxuICAgICAgICAgICAgICA8aW9uLWxhYmVsPnt7IHNlbGVjdGVkR2F1Z2VJblBvaW50c0RldGFpbCB9fTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJmb3JtYXRMYWJlbE9mU2VsZWN0ZWRHYXVnZShzZWxlY3RlZEdhdWdlSW5Qb2ludHMpXCIgY2xhc3M9XCJpb24tcGFkZGluZ1wiXG4gICAgICAgICAgICAgICAgIHNsb3Q9XCJjb250ZW50XCI+PC9kaXY+XG4gICAgICAgICAgPC9pb24tYWNjb3JkaW9uPlxuICAgICAgICA8L2lvbi1hY2NvcmRpb24tZ3JvdXA+XG4gICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgPC9pb24tY2FyZD5cbiAgICAtLT5cbjwvZGl2PlxuIl19
|