@firestitch/system 13.0.4 → 13.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/modules/system/components/cron-next-run/cron-next-run.component.d.ts +18 -0
- package/app/modules/system/components/cron-next-run/index.d.ts +1 -0
- package/app/modules/system/components/process/process.component.d.ts +9 -4
- package/app/modules/system/fs-system.module.d.ts +38 -36
- package/esm2020/app/modules/system/components/cron-next-run/cron-next-run.component.mjs +99 -0
- package/esm2020/app/modules/system/components/cron-next-run/index.mjs +2 -0
- package/esm2020/app/modules/system/components/crons/crons.component.mjs +5 -4
- package/esm2020/app/modules/system/components/process/process.component.mjs +41 -19
- package/esm2020/app/modules/system/components/processes/processes.component.mjs +2 -1
- package/esm2020/app/modules/system/fs-system.module.mjs +8 -1
- package/fesm2015/firestitch-system.mjs +151 -32
- package/fesm2015/firestitch-system.mjs.map +1 -1
- package/fesm2020/firestitch-system.mjs +151 -32
- package/fesm2020/firestitch-system.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class CronNextRunComponent implements OnInit, OnDestroy {
|
|
4
|
+
private _cdRef;
|
|
5
|
+
cron: any;
|
|
6
|
+
duration: any;
|
|
7
|
+
private _destroy$;
|
|
8
|
+
constructor(_cdRef: ChangeDetectorRef);
|
|
9
|
+
ngOnInit(): void;
|
|
10
|
+
calculateDuration(): void;
|
|
11
|
+
update(): void;
|
|
12
|
+
ngOnDestroy(): void;
|
|
13
|
+
private _getNextMinutes;
|
|
14
|
+
private _getNextHours;
|
|
15
|
+
private _getNextDays;
|
|
16
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CronNextRunComponent, never>;
|
|
17
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CronNextRunComponent, "app-next-run", never, { "cron": "cron"; }, {}, never, never>;
|
|
18
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './cron-next-run.component';
|
|
@@ -1,19 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ProcessState } from './../../enums/process-state.enum';
|
|
1
|
+
import { ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';
|
|
3
2
|
import { FsMessage } from '@firestitch/message';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import { ProcessState } from './../../enums/process-state.enum';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class ProcessComponent implements OnInit {
|
|
6
|
+
export declare class ProcessComponent implements OnInit, OnDestroy {
|
|
6
7
|
data: any;
|
|
7
8
|
private _message;
|
|
8
9
|
private _cdRef;
|
|
9
10
|
process: any;
|
|
10
11
|
ProcessStates: {};
|
|
11
12
|
ProcessState: typeof ProcessState;
|
|
13
|
+
private _destroy$;
|
|
12
14
|
constructor(data: any, _message: FsMessage, _cdRef: ChangeDetectorRef);
|
|
13
15
|
ngOnInit(): void;
|
|
14
|
-
load():
|
|
16
|
+
load$(): Observable<any>;
|
|
17
|
+
runningRefresh(): void;
|
|
18
|
+
kill(): void;
|
|
15
19
|
run(): void;
|
|
16
20
|
download(): void;
|
|
21
|
+
ngOnDestroy(): void;
|
|
17
22
|
static ɵfac: i0.ɵɵFactoryDeclaration<ProcessComponent, never>;
|
|
18
23
|
static ɵcmp: i0.ɵɵComponentDeclaration<ProcessComponent, "ng-component", never, {}, {}, never, never>;
|
|
19
24
|
}
|
|
@@ -2,44 +2,46 @@ import { ModuleWithProviders } from '@angular/core';
|
|
|
2
2
|
import { FsSystemConfig } from './interfaces/system-config';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "./components/dashboard/dashboard.component";
|
|
5
|
-
import * as i2 from "./components/
|
|
6
|
-
import * as i3 from "./components/
|
|
7
|
-
import * as i4 from "./
|
|
8
|
-
import * as i5 from "./
|
|
9
|
-
import * as i6 from "./components/
|
|
10
|
-
import * as i7 from "./components/server-
|
|
11
|
-
import * as i8 from "./components/
|
|
12
|
-
import * as i9 from "./components/
|
|
13
|
-
import * as i10 from "./components/api-
|
|
14
|
-
import * as i11 from "./components/
|
|
15
|
-
import * as i12 from "./components/
|
|
16
|
-
import * as i13 from "./components/
|
|
17
|
-
import * as i14 from "./components/cron
|
|
18
|
-
import * as i15 from "
|
|
19
|
-
import * as i16 from "@angular/
|
|
20
|
-
import * as i17 from "@angular/
|
|
21
|
-
import * as i18 from "@angular/material/
|
|
22
|
-
import * as i19 from "@angular/material/
|
|
23
|
-
import * as i20 from "@angular/material/
|
|
24
|
-
import * as i21 from "@angular/material/
|
|
25
|
-
import * as i22 from "@angular/material/
|
|
26
|
-
import * as i23 from "@angular/material/
|
|
27
|
-
import * as i24 from "@angular/material/
|
|
28
|
-
import * as i25 from "@angular/material/
|
|
29
|
-
import * as i26 from "@
|
|
30
|
-
import * as i27 from "@
|
|
31
|
-
import * as i28 from "@firestitch/
|
|
32
|
-
import * as i29 from "@firestitch/
|
|
33
|
-
import * as i30 from "@firestitch/
|
|
34
|
-
import * as i31 from "@firestitch/
|
|
35
|
-
import * as i32 from "@firestitch/
|
|
36
|
-
import * as i33 from "@firestitch/
|
|
37
|
-
import * as i34 from "@firestitch/
|
|
38
|
-
import * as i35 from "@firestitch/
|
|
39
|
-
import * as i36 from "@firestitch/
|
|
5
|
+
import * as i2 from "./components/cron-next-run/cron-next-run.component";
|
|
6
|
+
import * as i3 from "./components/crons/crons.component";
|
|
7
|
+
import * as i4 from "./components/settings/settings.component";
|
|
8
|
+
import * as i5 from "./pipes/key-name-value.pipe";
|
|
9
|
+
import * as i6 from "./components/processes/processes.component";
|
|
10
|
+
import * as i7 from "./components/server-log/server-log.component";
|
|
11
|
+
import * as i8 from "./components/server-logs/server-logs.component";
|
|
12
|
+
import * as i9 from "./components/upgrade-logs/upgrade-logs.component";
|
|
13
|
+
import * as i10 from "./components/api-logs/api-logs.component";
|
|
14
|
+
import * as i11 from "./components/api-log/api-log.component";
|
|
15
|
+
import * as i12 from "./components/info/info.component";
|
|
16
|
+
import * as i13 from "./components/process/process.component";
|
|
17
|
+
import * as i14 from "./components/cron/cron.component";
|
|
18
|
+
import * as i15 from "./components/cron-log/cron-log.component";
|
|
19
|
+
import * as i16 from "@angular/common";
|
|
20
|
+
import * as i17 from "@angular/forms";
|
|
21
|
+
import * as i18 from "@angular/material/button";
|
|
22
|
+
import * as i19 from "@angular/material/expansion";
|
|
23
|
+
import * as i20 from "@angular/material/tooltip";
|
|
24
|
+
import * as i21 from "@angular/material/icon";
|
|
25
|
+
import * as i22 from "@angular/material/form-field";
|
|
26
|
+
import * as i23 from "@angular/material/input";
|
|
27
|
+
import * as i24 from "@angular/material/select";
|
|
28
|
+
import * as i25 from "@angular/material/dialog";
|
|
29
|
+
import * as i26 from "@angular/material/progress-spinner";
|
|
30
|
+
import * as i27 from "@angular/material/tabs";
|
|
31
|
+
import * as i28 from "@firestitch/date";
|
|
32
|
+
import * as i29 from "@firestitch/skeleton";
|
|
33
|
+
import * as i30 from "@firestitch/list";
|
|
34
|
+
import * as i31 from "@firestitch/file";
|
|
35
|
+
import * as i32 from "@firestitch/file-manager";
|
|
36
|
+
import * as i33 from "@firestitch/label";
|
|
37
|
+
import * as i34 from "@firestitch/dialog";
|
|
38
|
+
import * as i35 from "@firestitch/datepicker";
|
|
39
|
+
import * as i36 from "@firestitch/menu";
|
|
40
|
+
import * as i37 from "@firestitch/popover";
|
|
41
|
+
import * as i38 from "@firestitch/colorpicker";
|
|
40
42
|
export declare class FsSystemModule {
|
|
41
43
|
static forRoot(config: FsSystemConfig): ModuleWithProviders<FsSystemModule>;
|
|
42
44
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsSystemModule, never>;
|
|
43
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<FsSystemModule, [typeof i1.DashboardComponent, typeof i2.
|
|
45
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<FsSystemModule, [typeof i1.DashboardComponent, typeof i2.CronNextRunComponent, typeof i3.CronsComponent, typeof i4.SettingsComponent, typeof i5.KeyNameValuePipe, typeof i6.ProcessesComponent, typeof i7.ServerLogComponent, typeof i8.ServerLogsComponent, typeof i9.UpgradeLogsComponent, typeof i10.ApiLogsComponent, typeof i11.ApiLogComponent, typeof i12.InfoComponent, typeof i13.ProcessComponent, typeof i14.CronComponent, typeof i15.CronLogComponent], [typeof i16.CommonModule, typeof i17.FormsModule, typeof i18.MatButtonModule, typeof i19.MatExpansionModule, typeof i20.MatTooltipModule, typeof i21.MatIconModule, typeof i22.MatFormFieldModule, typeof i23.MatInputModule, typeof i24.MatSelectModule, typeof i25.MatDialogModule, typeof i26.MatProgressSpinnerModule, typeof i27.MatTabsModule, typeof i28.FsDateModule, typeof i29.FsSkeletonModule, typeof i30.FsListModule, typeof i31.FsFileModule, typeof i32.FsFileManagerModule, typeof i33.FsLabelModule, typeof i34.FsDialogModule, typeof i35.FsDatePickerModule, typeof i36.FsMenuModule, typeof i37.FsPopoverModule, typeof i38.FsColorPickerModule], [typeof i1.DashboardComponent, typeof i3.CronsComponent, typeof i4.SettingsComponent, typeof i6.ProcessesComponent, typeof i8.ServerLogsComponent, typeof i9.UpgradeLogsComponent, typeof i10.ApiLogsComponent, typeof i12.InfoComponent]>;
|
|
44
46
|
static ɵinj: i0.ɵɵInjectorDeclaration<FsSystemModule>;
|
|
45
47
|
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, } from '@angular/core';
|
|
2
|
+
import { Subject, timer } from 'rxjs';
|
|
3
|
+
import { takeUntil, tap } from 'rxjs/operators';
|
|
4
|
+
import { addDays, addHours, addMinutes, differenceInSeconds, getDaysInMonth, subSeconds } from 'date-fns';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
import * as i2 from "@firestitch/date";
|
|
8
|
+
export class CronNextRunComponent {
|
|
9
|
+
constructor(_cdRef) {
|
|
10
|
+
this._cdRef = _cdRef;
|
|
11
|
+
this._destroy$ = new Subject();
|
|
12
|
+
}
|
|
13
|
+
ngOnInit() {
|
|
14
|
+
this.update();
|
|
15
|
+
}
|
|
16
|
+
calculateDuration() {
|
|
17
|
+
const now = new Date();
|
|
18
|
+
const nextMinutes = this._getNextMinutes(now);
|
|
19
|
+
const nextHours = this._getNextHours(now);
|
|
20
|
+
const nextDays = this._getNextDays(now);
|
|
21
|
+
if (this.cron.cronSetting.minutes.length ||
|
|
22
|
+
this.cron.cronSetting.hours.length ||
|
|
23
|
+
this.cron.cronSetting.days.length) {
|
|
24
|
+
let next = new Date();
|
|
25
|
+
next = addMinutes(next, nextMinutes);
|
|
26
|
+
next = addHours(next, nextHours);
|
|
27
|
+
next = addDays(next, nextDays);
|
|
28
|
+
next = subSeconds(next, next.getSeconds());
|
|
29
|
+
this.duration = differenceInSeconds(next, now);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
this.duration = 60 - now.getSeconds();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
update() {
|
|
36
|
+
this.calculateDuration();
|
|
37
|
+
timer(0, 1000)
|
|
38
|
+
.pipe(tap(() => {
|
|
39
|
+
this.duration -= 1;
|
|
40
|
+
if (this.duration % 60 === 0 || this.duration < (60 * 5)) {
|
|
41
|
+
this._cdRef.markForCheck();
|
|
42
|
+
}
|
|
43
|
+
if (this.duration <= 0) {
|
|
44
|
+
this.calculateDuration();
|
|
45
|
+
this._cdRef.markForCheck();
|
|
46
|
+
}
|
|
47
|
+
}), takeUntil(this._destroy$))
|
|
48
|
+
.subscribe();
|
|
49
|
+
}
|
|
50
|
+
ngOnDestroy() {
|
|
51
|
+
this._destroy$.next();
|
|
52
|
+
this._destroy$.complete();
|
|
53
|
+
}
|
|
54
|
+
_getNextMinutes(now) {
|
|
55
|
+
const minutes = this.cron.cronSetting.minutes;
|
|
56
|
+
if (minutes.length) {
|
|
57
|
+
for (let i = minutes.length - 1; i >= 0; i--) {
|
|
58
|
+
if (now.getUTCMinutes() >= minutes[i]) {
|
|
59
|
+
return (minutes[i + 1] ? minutes[i + 1] - now.getUTCMinutes() : (60 - now.getUTCMinutes() + minutes[i]));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return minutes[0] - now.getMinutes();
|
|
63
|
+
}
|
|
64
|
+
return 0;
|
|
65
|
+
}
|
|
66
|
+
_getNextHours(now) {
|
|
67
|
+
const hours = this.cron.cronSetting.hours;
|
|
68
|
+
if (hours.length) {
|
|
69
|
+
for (let i = hours.length - 1; i >= 0; i--) {
|
|
70
|
+
if (now.getUTCHours() >= hours[i]) {
|
|
71
|
+
return (hours[i + 1] ? hours[i + 1] - now.getUTCHours() : (24 - now.getUTCHours() + hours[i]));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return hours[0] - now.getUTCHours();
|
|
75
|
+
}
|
|
76
|
+
return 0;
|
|
77
|
+
}
|
|
78
|
+
_getNextDays(now) {
|
|
79
|
+
const days = this.cron.cronSetting.days;
|
|
80
|
+
if (days.length) {
|
|
81
|
+
for (let i = days.length - 1; i >= 0; i--) {
|
|
82
|
+
if (now.getDate() >= days[i]) {
|
|
83
|
+
return (days[i + 1] ? days[i + 1] : getDaysInMonth(now)) - now.getDate();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return days[0] - getDaysInMonth(now);
|
|
87
|
+
}
|
|
88
|
+
return 0;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
CronNextRunComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CronNextRunComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
92
|
+
CronNextRunComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: CronNextRunComponent, selector: "app-next-run", inputs: { cron: "cron" }, ngImport: i0, template: "<ng-container *ngIf=\"duration > 60; else seconds\">\n {{duration | fsDateDuration: { hours: true, seconds: true, minutes: true, days: true} }}\n</ng-container>\n\n<ng-template #seconds>\n {{duration}}s\n</ng-template>\n\n", styles: [""], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "fsDateDuration": i2.FsDateDurationPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
93
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CronNextRunComponent, decorators: [{
|
|
94
|
+
type: Component,
|
|
95
|
+
args: [{ selector: 'app-next-run', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"duration > 60; else seconds\">\n {{duration | fsDateDuration: { hours: true, seconds: true, minutes: true, days: true} }}\n</ng-container>\n\n<ng-template #seconds>\n {{duration}}s\n</ng-template>\n\n", styles: [""] }]
|
|
96
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { cron: [{
|
|
97
|
+
type: Input
|
|
98
|
+
}] } });
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvbi1uZXh0LXJ1bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc3lzdGVtL2NvbXBvbmVudHMvY3Jvbi1uZXh0LXJ1bi9jcm9uLW5leHQtcnVuLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vY29tcG9uZW50cy9jcm9uLW5leHQtcnVuL2Nyb24tbmV4dC1ydW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEdBQzdELE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7QUFTMUcsTUFBTSxPQUFPLG9CQUFvQjtJQVMvQixZQUNVLE1BQXlCO1FBQXpCLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBSjNCLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBSy9CLENBQUM7SUFHRyxRQUFRO1FBQ2IsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENB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LENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7aUJBQzFFO2FBQ0Y7WUFFRCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdEM7UUFFRCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7O2lIQS9HVSxvQkFBb0I7cUdBQXBCLG9CQUFvQiw4RUNqQmpDLGtPQVFBOzJGRFNhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxjQUFjLG1CQUdQLHVCQUF1QixDQUFDLE1BQU07d0dBSS9CLElBQUk7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuXG5pbXBvcnQgeyBTdWJqZWN0LCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IGFkZERheXMsIGFkZEhvdXJzLCBhZGRNaW51dGVzLCBkaWZmZXJlbmNlSW5TZWNvbmRzLCBnZXREYXlzSW5Nb250aCwgc3ViU2Vjb25kcyB9IGZyb20gJ2RhdGUtZm5zJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbmV4dC1ydW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vY3Jvbi1uZXh0LXJ1bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nyb24tbmV4dC1ydW4uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENyb25OZXh0UnVuQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBjcm9uO1xuXG4gIHB1YmxpYyBkdXJhdGlvbjtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gIFxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7fVxuXG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMudXBkYXRlKCk7XG4gIH1cblxuICBwdWJsaWMgY2FsY3VsYXRlRHVyYXRpb24oKSB7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBuZXh0TWludXRlcyA9IHRoaXMuX2dldE5leHRNaW51dGVzKG5vdyk7XG4gICAgY29uc3QgbmV4dEhvdXJzID0gdGhpcy5fZ2V0TmV4dEhvdXJzKG5vdyk7XG4gICAgY29uc3QgbmV4dERheXMgPSB0aGlzLl9nZXROZXh0RGF5cyhub3cpO1xuXG4gICAgaWYoXG4gICAgICB0aGlzLmNyb24uY3JvblNldHRpbmcubWludXRlcy5sZW5ndGggfHxcbiAgICAgIHRoaXMuY3Jvbi5jcm9uU2V0dGluZy5ob3Vycy5sZW5ndGggfHxcbiAgICAgIHRoaXMuY3Jvbi5jcm9uU2V0dGluZy5kYXlzLmxlbmd0aCBcbiAgICApIHtcbiAgICAgIGxldCBuZXh0ID0gbmV3IERhdGUoKTtcbiAgICAgIG5leHQgPSBhZGRNaW51dGVzKG5leHQsIG5leHRNaW51dGVzKTtcbiAgICAgIG5leHQgPSBhZGRIb3VycyhuZXh0LCBuZXh0SG91cnMpO1xuICAgICAgbmV4dCA9IGFkZERheXMobmV4dCwgbmV4dERheXMpO1xuICAgICAgbmV4dCA9IHN1YlNlY29uZHMobmV4dCwgbmV4dC5nZXRTZWNvbmRzKCkpO1xuXG4gICAgICB0aGlzLmR1cmF0aW9uID0gZGlmZmVyZW5jZUluU2Vjb25kcyhuZXh0LCBub3cpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmR1cmF0aW9uID0gNjAgLSBub3cuZ2V0U2Vjb25kcygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGUoKSB7XG4gICAgdGhpcy5jYWxjdWxhdGVEdXJhdGlvbigpO1xuICAgIHRpbWVyKDAsIDEwMDApXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmR1cmF0aW9uIC09IDE7ICAgIFxuXG4gICAgICAgICAgaWYodGhpcy5kdXJhdGlvbiAlIDYwID09PSAwIHx8IHRoaXMuZHVyYXRpb24gPCAoNjAgKiA1KSkge1xuICAgICAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYodGhpcy5kdXJhdGlvbiA8PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZUR1cmF0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIF9nZXROZXh0TWludXRlcyhub3c6IERhdGUpIHtcbiAgICBjb25zdCBtaW51dGVzOiBudW1iZXJbXSA9IHRoaXMuY3Jvbi5jcm9uU2V0dGluZy5taW51dGVzO1xuICAgIGlmKG1pbnV0ZXMubGVuZ3RoKSB7XG4gICAgICBmb3IobGV0IGkgPSBtaW51dGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGlmKG5vdy5nZXRVVENNaW51dGVzKCkgPj0gbWludXRlc1tpXSkge1xuICAgICAgICAgIHJldHVybiAobWludXRlc1tpICsgMV0gPyBtaW51dGVzW2kgKyAxXSAtIG5vdy5nZXRVVENNaW51dGVzKCkgOiAoNjAgLSBub3cuZ2V0VVRDTWludXRlcygpICsgbWludXRlc1tpXSkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtaW51dGVzWzBdIC0gbm93LmdldE1pbnV0ZXMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE5leHRIb3Vycyhub3c6IERhdGUpIHtcbiAgICBjb25zdCBob3VyczogbnVtYmVyW10gPSB0aGlzLmNyb24uY3JvblNldHRpbmcuaG91cnM7XG4gICAgaWYoaG91cnMubGVuZ3RoKSB7XG4gICAgICBmb3IobGV0IGkgPSBob3Vycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBpZihub3cuZ2V0VVRDSG91cnMoKSA+PSBob3Vyc1tpXSkge1xuICAgICAgICAgIHJldHVybiAoaG91cnNbaSArIDFdID8gaG91cnNbaSArIDFdIC0gbm93LmdldFVUQ0hvdXJzKCkgOiAoMjQgLSBub3cuZ2V0VVRDSG91cnMoKSArIGhvdXJzW2ldKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGhvdXJzWzBdIC0gbm93LmdldFVUQ0hvdXJzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBwcml2YXRlIF9nZXROZXh0RGF5cyhub3c6IERhdGUpIHtcbiAgICBjb25zdCBkYXlzID0gdGhpcy5jcm9uLmNyb25TZXR0aW5nLmRheXM7XG4gICAgaWYoZGF5cy5sZW5ndGgpIHtcbiAgICAgIGZvcihsZXQgaSA9IGRheXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgaWYobm93LmdldERhdGUoKSA+PSBkYXlzW2ldKSB7XG4gICAgICAgICAgcmV0dXJuIChkYXlzW2kgKyAxXSA/IGRheXNbaSArIDFdIDogZ2V0RGF5c0luTW9udGgobm93KSkgLSBub3cuZ2V0RGF0ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkYXlzWzBdIC0gZ2V0RGF5c0luTW9udGgobm93KTtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImR1cmF0aW9uID4gNjA7IGVsc2Ugc2Vjb25kc1wiPlxuICB7e2R1cmF0aW9uIHwgZnNEYXRlRHVyYXRpb246IHsgaG91cnM6IHRydWUsIHNlY29uZHM6IHRydWUsIG1pbnV0ZXM6IHRydWUsIGRheXM6IHRydWV9IH19XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNzZWNvbmRzPlxuICB7e2R1cmF0aW9ufX1zXG48L25nLXRlbXBsYXRlPlxuXG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './cron-next-run.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc3lzdGVtL2NvbXBvbmVudHMvY3Jvbi1uZXh0LXJ1bi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jcm9uLW5leHQtcnVuLmNvbXBvbmVudCc7XG5cbiJdfQ==
|
|
@@ -20,7 +20,8 @@ import * as i3 from "@firestitch/prompt";
|
|
|
20
20
|
import * as i4 from "@firestitch/list";
|
|
21
21
|
import * as i5 from "@firestitch/popover";
|
|
22
22
|
import * as i6 from "@firestitch/date";
|
|
23
|
-
import * as i7 from "
|
|
23
|
+
import * as i7 from "../cron-next-run/cron-next-run.component";
|
|
24
|
+
import * as i8 from "@angular/common";
|
|
24
25
|
export class CronsComponent {
|
|
25
26
|
constructor(_message, _dialog, _prompt) {
|
|
26
27
|
this._message = _message;
|
|
@@ -206,10 +207,10 @@ export class CronsComponent {
|
|
|
206
207
|
}
|
|
207
208
|
}
|
|
208
209
|
CronsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CronsComponent, deps: [{ token: i1.FsMessage }, { token: i2.MatDialog }, { token: i3.FsPrompt }], target: i0.ɵɵFactoryTarget.Component });
|
|
209
|
-
CronsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: CronsComponent, selector: "fs-system-crons", inputs: { enable: "enable", disable: "disable", kill: "kill", queue: "queue", run: "run", loadCrons: "loadCrons", loadCron: "loadCron", loadCronLogs: "loadCronLogs", bulk: "bulk" }, viewQueries: [{ propertyName: "list", first: true, predicate: FsListComponent, descendants: true, static: true }], ngImport: i0, template: "<fs-list [config]=\"config\">\n <fs-list-column>\n <ng-template fs-list-header>Name</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"open(row)\">{{row.name}}</a>\n <div *ngIf=\"row.cronSetting\">\n <small>{{row.cronSetting.summary}}</small>\n </div>\n </ng-template>\n </fs-list-column>\n <fs-list-column align=\"center\">\n <ng-template fs-list-header>Status</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <ng-container *ngIf=\"row.host || row.processId; else status\">\n <fs-popover \n [maxWidth]=\"null\"\n [template]=\"statusPopover\" \n size=\"small\">\n <ng-container *ngTemplateOutlet=\"status\"></ng-container>\n </fs-popover>\n <ng-template #statusPopover>\n <div *ngIf=\"row.host\">Host: {{row.host}}</div>\n <div *ngIf=\"row.processId\">Process ID: {{row.processId}}</div>\n <div *ngIf=\"row.processState\">Process State: {{CronProcessStates[row.processState]}}</div>\n </ng-template>\n </ng-container>\n <ng-template #status>\n {{CronStates[row.state]}}\n </ng-template>\n <ng-container *ngIf=\"row.state === CronState.Running\">\n <div class=\"small\">\n Duration: {{ row.runningDuration | fsDateDuration: { hours: true, minutes: true, seconds: true } }}\n </div>\n </ng-container> \n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Last Ran</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <ng-container *ngIf=\"row.duration===null; else lastRan\">\n Never\n </ng-container>\n <ng-template #lastRan>\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\n <div class=\"small\" *ngIf=\"row.duration\">\n Duration: {{ row.duration | fsDateDuration: { hours: true, minutes: true, seconds: true } }}\n </div>\n </ng-template>\n </ng-template>\n </fs-list-column>\n</fs-list>\n", styles: [""], components: [{ type: i4.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i5.FsPopoverComponent, selector: "fs-popover" }, { type: i6.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }], directives: [{ type: i4.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i4.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }, { type: i4.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type:
|
|
210
|
+
CronsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: CronsComponent, selector: "fs-system-crons", inputs: { enable: "enable", disable: "disable", kill: "kill", queue: "queue", run: "run", loadCrons: "loadCrons", loadCron: "loadCron", loadCronLogs: "loadCronLogs", bulk: "bulk" }, viewQueries: [{ propertyName: "list", first: true, predicate: FsListComponent, descendants: true, static: true }], ngImport: i0, template: "<fs-list [config]=\"config\">\n <fs-list-column>\n <ng-template fs-list-header>Name</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"open(row)\">{{row.name}}</a>\n <div *ngIf=\"row.cronSetting\">\n <small>{{row.cronSetting.summary}}</small>\n </div>\n </ng-template>\n </fs-list-column>\n <fs-list-column align=\"center\">\n <ng-template fs-list-header>Status</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <ng-container *ngIf=\"row.host || row.processId; else status\">\n <fs-popover \n [maxWidth]=\"null\"\n [template]=\"statusPopover\" \n size=\"small\">\n <ng-container *ngTemplateOutlet=\"status\"></ng-container>\n </fs-popover>\n <ng-template #statusPopover>\n <div *ngIf=\"row.host\">Host: {{row.host}}</div>\n <div *ngIf=\"row.processId\">Process ID: {{row.processId}}</div>\n <div *ngIf=\"row.processState\">Process State: {{CronProcessStates[row.processState]}}</div>\n </ng-template>\n </ng-container>\n <ng-template #status>\n {{CronStates[row.state]}}\n </ng-template>\n <ng-container *ngIf=\"row.state === CronState.Running\">\n <div class=\"small\">\n Duration: {{ row.runningDuration | fsDateDuration: { hours: true, minutes: true, seconds: true } }}\n </div>\n </ng-container> \n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Last Ran</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <ng-container *ngIf=\"row.duration===null; else lastRan\">\n Never\n </ng-container>\n <ng-template #lastRan>\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\n <div class=\"small\" *ngIf=\"row.duration\">\n Duration: {{ row.duration | fsDateDuration: { hours: true, minutes: true, seconds: true } }}\n </div>\n </ng-template>\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Next Run</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <ng-container *ngIf=\"row.state !== CronState.Disabled\">\n <app-next-run [cron]=\"row\"></app-next-run>\n </ng-container>\n </ng-template>\n </fs-list-column>\n</fs-list>\n", styles: [""], components: [{ type: i4.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i5.FsPopoverComponent, selector: "fs-popover" }, { type: i6.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }, { type: i7.CronNextRunComponent, selector: "app-next-run", inputs: ["cron"] }], directives: [{ type: i4.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i4.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }, { type: i4.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "fsDateDuration": i6.FsDateDurationPipe } });
|
|
210
211
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CronsComponent, decorators: [{
|
|
211
212
|
type: Component,
|
|
212
|
-
args: [{ selector: 'fs-system-crons', template: "<fs-list [config]=\"config\">\n <fs-list-column>\n <ng-template fs-list-header>Name</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"open(row)\">{{row.name}}</a>\n <div *ngIf=\"row.cronSetting\">\n <small>{{row.cronSetting.summary}}</small>\n </div>\n </ng-template>\n </fs-list-column>\n <fs-list-column align=\"center\">\n <ng-template fs-list-header>Status</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <ng-container *ngIf=\"row.host || row.processId; else status\">\n <fs-popover \n [maxWidth]=\"null\"\n [template]=\"statusPopover\" \n size=\"small\">\n <ng-container *ngTemplateOutlet=\"status\"></ng-container>\n </fs-popover>\n <ng-template #statusPopover>\n <div *ngIf=\"row.host\">Host: {{row.host}}</div>\n <div *ngIf=\"row.processId\">Process ID: {{row.processId}}</div>\n <div *ngIf=\"row.processState\">Process State: {{CronProcessStates[row.processState]}}</div>\n </ng-template>\n </ng-container>\n <ng-template #status>\n {{CronStates[row.state]}}\n </ng-template>\n <ng-container *ngIf=\"row.state === CronState.Running\">\n <div class=\"small\">\n Duration: {{ row.runningDuration | fsDateDuration: { hours: true, minutes: true, seconds: true } }}\n </div>\n </ng-container> \n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Last Ran</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <ng-container *ngIf=\"row.duration===null; else lastRan\">\n Never\n </ng-container>\n <ng-template #lastRan>\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\n <div class=\"small\" *ngIf=\"row.duration\">\n Duration: {{ row.duration | fsDateDuration: { hours: true, minutes: true, seconds: true } }}\n </div>\n </ng-template>\n </ng-template>\n </fs-list-column>\n</fs-list>\n", styles: [""] }]
|
|
213
|
+
args: [{ selector: 'fs-system-crons', template: "<fs-list [config]=\"config\">\n <fs-list-column>\n <ng-template fs-list-header>Name</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"open(row)\">{{row.name}}</a>\n <div *ngIf=\"row.cronSetting\">\n <small>{{row.cronSetting.summary}}</small>\n </div>\n </ng-template>\n </fs-list-column>\n <fs-list-column align=\"center\">\n <ng-template fs-list-header>Status</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <ng-container *ngIf=\"row.host || row.processId; else status\">\n <fs-popover \n [maxWidth]=\"null\"\n [template]=\"statusPopover\" \n size=\"small\">\n <ng-container *ngTemplateOutlet=\"status\"></ng-container>\n </fs-popover>\n <ng-template #statusPopover>\n <div *ngIf=\"row.host\">Host: {{row.host}}</div>\n <div *ngIf=\"row.processId\">Process ID: {{row.processId}}</div>\n <div *ngIf=\"row.processState\">Process State: {{CronProcessStates[row.processState]}}</div>\n </ng-template>\n </ng-container>\n <ng-template #status>\n {{CronStates[row.state]}}\n </ng-template>\n <ng-container *ngIf=\"row.state === CronState.Running\">\n <div class=\"small\">\n Duration: {{ row.runningDuration | fsDateDuration: { hours: true, minutes: true, seconds: true } }}\n </div>\n </ng-container> \n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Last Ran</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <ng-container *ngIf=\"row.duration===null; else lastRan\">\n Never\n </ng-container>\n <ng-template #lastRan>\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\n <div class=\"small\" *ngIf=\"row.duration\">\n Duration: {{ row.duration | fsDateDuration: { hours: true, minutes: true, seconds: true } }}\n </div>\n </ng-template>\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Next Run</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <ng-container *ngIf=\"row.state !== CronState.Disabled\">\n <app-next-run [cron]=\"row\"></app-next-run>\n </ng-container>\n </ng-template>\n </fs-list-column>\n</fs-list>\n", styles: [""] }]
|
|
213
214
|
}], ctorParameters: function () { return [{ type: i1.FsMessage }, { type: i2.MatDialog }, { type: i3.FsPrompt }]; }, propDecorators: { list: [{
|
|
214
215
|
type: ViewChild,
|
|
215
216
|
args: [FsListComponent, { static: true }]
|
|
@@ -232,4 +233,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
232
233
|
}], bulk: [{
|
|
233
234
|
type: Input
|
|
234
235
|
}] } });
|
|
235
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3N5c3RlbS9jb21wb25lbnRzL2Nyb25zL2Nyb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vY29tcG9uZW50cy9jcm9ucy9jcm9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBd0IsZUFBZSxFQUFnQixNQUFNLGtCQUFrQixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFNUQsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRS9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7QUFRdkQsTUFBTSxPQUFPLGNBQWM7SUFxQnpCLFlBQ1UsUUFBbUIsRUFDbkIsT0FBa0IsRUFDbEIsT0FBaUI7UUFGakIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixZQUFPLEdBQVAsT0FBTyxDQUFXO1FBQ2xCLFlBQU8sR0FBUCxPQUFPLENBQVU7UUFWcEIsV0FBTSxHQUFpQixJQUFJLENBQUM7UUFDNUIsZUFBVSxHQUFHLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QyxzQkFBaUIsR0FBRyxjQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN0RCxjQUFTLEdBQUcsU0FBUyxDQUFDO1FBRXJCLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBTTlCLENBQUM7SUFFRSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTSxJQUFJLENBQUMsSUFBSTtRQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMvQixJQUFJLEVBQUU7Z0JBQ0osSUFBSTtnQkFDSixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7Z0JBQy9CLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDdkIsV0FBVyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUU7YUFDbkM7WUFDRCxLQUFLLEVBQUUsS0FBSztTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxjQUFjO1FBQ25CLE9BQU87WUFDTDtnQkFDRSxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDZixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO3lCQUNwQixJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRTt3QkFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQzt3QkFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDckIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztnQkFDTixDQUFDO2dCQUNELEtBQUssRUFBRSxPQUFPO2dCQUNkLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO29CQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLE1BQU0sQ0FBQztnQkFDMUUsQ0FBQzthQUNGO1lBQ0Q7Z0JBQ0UsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ2YsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQzt5QkFDbEIsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLEVBQUU7d0JBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3JCLENBQUMsQ0FBQyxDQUNILENBQUM7Z0JBQ04sQ0FBQztnQkFDRCxLQUFLLEVBQUUsS0FBSztnQkFDWixJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDYixPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxNQUFNLENBQUM7Z0JBQzFFLENBQUM7YUFDRjtZQUNEO2dCQUNFLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO29CQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7eUJBQ3JCLElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxFQUFFO3dCQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO3dCQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNyQixDQUFDLENBQUMsQ0FDSCxDQUFDO2dCQUNOLENBQUM7Z0JBQ0QsS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxRQUFRLENBQUM7Z0JBQzNDLENBQUM7YUFDRjtZQUNEO2dCQUNFLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO29CQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7eUJBQ3RCLElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxFQUFFO3dCQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO3dCQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNyQixDQUFDLENBQUMsQ0FDSCxDQUFDO2dCQUNOLENBQUM7Z0JBQ0QsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO29CQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLE1BQU0sQ0FBQztnQkFDMUUsQ0FBQzthQUNGO1lBQ0Q7Z0JBQ0UsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQzt3QkFDMUIsS0FBSyxFQUFFLFNBQVM7d0JBQ2hCLFFBQVEsRUFBRSwrQ0FBK0M7cUJBQzFELENBQUM7eUJBQ0MsSUFBSSxDQUNILFNBQVMsQ0FBQyxHQUFHLEVBQUU7d0JBQ2IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN6QixDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsR0FBRyxFQUFFO3dCQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNyQixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQixDQUFDO2dCQUNOLENBQUM7Z0JBQ0QsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxPQUFPLENBQUM7Z0JBQzFDLENBQUM7YUFDRjtZQUNEO2dCQUNFLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO29CQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7d0JBQzFCLEtBQUssRUFBRSxTQUFTO3dCQUNoQixRQUFRLEVBQUUsZ0RBQWdEO3FCQUMzRCxDQUFDO3lCQUNDLElBQUksQ0FDSCxTQUFTLENBQUMsR0FBRyxFQUFFO3dCQUNiLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDM0IsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRTt3QkFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQzt3QkFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDckIsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUIsQ0FBQztnQkFDTixDQUFDO2dCQUNELEtBQUssRUFBRSxPQUFPO2dCQUNkLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO29CQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsTUFBTSxDQUFDO2dCQUNwSixDQUFDO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixNQUFNLEVBQUUsS0FBSztZQUNiLE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLEVBQUUsUUFBUSxDQUFDLE9BQU87b0JBQ3RCLElBQUksRUFBRSxTQUFTO29CQUNmLEtBQUssRUFBRSxRQUFRO2lCQUNoQjthQUNGO1lBQ0QsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUU7aUJBQzlCLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUNqQixPQUFPO29CQUNMLEdBQUcsU0FBUztvQkFDWixLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTt3QkFDZCxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQzs2QkFDbkIsU0FBUyxFQUFFLENBQUM7b0JBQ2pCLENBQUM7aUJBQ0YsQ0FBQztZQUNKLENBQUMsQ0FBQztZQUNKLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNmLEtBQUssR0FBRztvQkFDTixHQUFHLEtBQUs7b0JBQ1IsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRO2lCQUMzRCxDQUFDO2dCQUVGLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7cUJBQ3pCLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2QsSUFBSSxFQUFFLEtBQUs7eUJBQ1IsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7d0JBQ1osT0FBTzs0QkFDTCxHQUFHLElBQUk7NEJBQ1AsZUFBZSxFQUFFLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQzt5QkFDekUsQ0FBQztvQkFDSixDQUFDLENBQUM7aUJBQ0wsQ0FBQyxDQUFDLENBQ0osQ0FBQztZQUNOLENBQUM7U0FDRixDQUFDO1FBRUYsSUFBRyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUc7Z0JBQ3RCLFNBQVMsRUFBRSxLQUFLO2dCQUNoQixPQUFPLEVBQUU7b0JBQ1A7d0JBQ0UsSUFBSSxFQUFFLG1CQUFtQixDQUFDLE1BQU07d0JBQ2hDLElBQUksRUFBRSxTQUFTO3dCQUNmLEtBQUssRUFBRSxTQUFTO3FCQUNqQjtvQkFDRDt3QkFDRSxJQUFJLEVBQUUsbUJBQW1CLENBQUMsTUFBTTt3QkFDaEMsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsS0FBSyxFQUFFLFFBQVE7cUJBQ2hCO2lCQUNGO2dCQUNELGNBQWMsRUFBRSxDQUFDLE1BQTRCLEVBQUUsRUFBRTtvQkFDL0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUM7eUJBQ2xELElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxFQUFFO3dCQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7b0JBQzNDLENBQUMsQ0FBQyxDQUNILENBQUM7Z0JBQ04sQ0FBQzthQUNGLENBQUM7U0FDSDtJQUNILENBQUM7OzJHQWhPVSxjQUFjOytGQUFkLGNBQWMsbVJBRWQsZUFBZSw4REM3QjVCLG1nRUFtREE7MkZEeEJhLGNBQWM7a0JBTDFCLFNBQVM7K0JBQ0UsaUJBQWlCOytJQU0wQixJQUFJO3NCQUF4RCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRTVCLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsR0FBRztzQkFBbEIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2RhdGUnO1xuaW1wb3J0IHsgSXRlbVR5cGUgfSBmcm9tICdAZmlyZXN0aXRjaC9maWx0ZXInO1xuaW1wb3J0IHsgRnNMaXN0QWN0aW9uU2VsZWN0ZWQsIEZzTGlzdENvbXBvbmVudCwgRnNMaXN0Q29uZmlnIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbGlzdCc7XG5pbXBvcnQgeyBGc01lc3NhZ2UgfSBmcm9tICdAZmlyZXN0aXRjaC9tZXNzYWdlJztcbmltcG9ydCB7IEZzUHJvbXB0IH0gZnJvbSAnQGZpcmVzdGl0Y2gvcHJvbXB0JztcbmltcG9ydCB7IFNlbGVjdGlvbkFjdGlvblR5cGUgfSBmcm9tICdAZmlyZXN0aXRjaC9zZWxlY3Rpb24nO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IGRpZmZlcmVuY2VJblNlY29uZHMgfSBmcm9tICdkYXRlLWZucyc7XG5cbmltcG9ydCB7IENyb25Qcm9jZXNzU3RhdGVzLCBDcm9uU3RhdGVzIH0gZnJvbSAnLi4vLi4vY29uc3RzJztcbmltcG9ydCB7IENyb25TdGF0ZSB9IGZyb20gJy4uLy4uL2VudW1zJztcbmltcG9ydCB7IGluZGV4TmFtZVZhbHVlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pbmRleC1uYW1lLXZhbHVlJztcbmltcG9ydCB7IENyb25Db21wb25lbnQgfSBmcm9tICcuLi9jcm9uL2Nyb24uY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1zeXN0ZW0tY3JvbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vY3JvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jcm9ucy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDcm9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBAVmlld0NoaWxkKEZzTGlzdENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIGxpc3Q6IEZzTGlzdENvbXBvbmVudDtcblxuICBASW5wdXQoKSBwdWJsaWMgZW5hYmxlOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPGFueT47XG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPGFueT47XG4gIEBJbnB1dCgpIHB1YmxpYyBraWxsOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPGFueT47XG4gIEBJbnB1dCgpIHB1YmxpYyBxdWV1ZTogKGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xuICBASW5wdXQoKSBwdWJsaWMgcnVuOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPGFueT47XG4gIEBJbnB1dCgpIHB1YmxpYyBsb2FkQ3JvbnM6IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8YW55W10+O1xuICBASW5wdXQoKSBwdWJsaWMgbG9hZENyb246IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8YW55PjtcbiAgQElucHV0KCkgcHVibGljIGxvYWRDcm9uTG9nczogKGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTx7IGRhdGE6IGFueVtdOyBwYWdpbmc6IGFueSB9PjtcbiAgQElucHV0KCkgcHVibGljIGJ1bGs6IChhY3Rpb25OYW1lOiBzdHJpbmcsIGRhdGE6IGFueVtdKSA9PiBPYnNlcnZhYmxlPGFueT47XG5cbiAgcHVibGljIGNvbmZpZzogRnNMaXN0Q29uZmlnID0gbnVsbDtcbiAgcHVibGljIENyb25TdGF0ZXMgPSBpbmRleE5hbWVWYWx1ZShDcm9uU3RhdGVzKTtcbiAgcHVibGljIENyb25Qcm9jZXNzU3RhdGVzID0gaW5kZXhOYW1lVmFsdWUoQ3JvblByb2Nlc3NTdGF0ZXMpO1xuICBwdWJsaWMgQ3JvblN0YXRlID0gQ3JvblN0YXRlO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9tZXNzYWdlOiBGc01lc3NhZ2UsXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBfcHJvbXB0OiBGc1Byb21wdCxcbiAgKSB7IH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fY29uZmlnTGlzdCgpO1xuICB9XG5cbiAgcHVibGljIG9wZW4oY3Jvbikge1xuICAgIHRoaXMuX2RpYWxvZy5vcGVuKENyb25Db21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgY3JvbixcbiAgICAgICAgbG9hZENyb25Mb2dzOiB0aGlzLmxvYWRDcm9uTG9ncyxcbiAgICAgICAgbG9hZENyb246IHRoaXMubG9hZENyb24sXG4gICAgICAgIGNyb25BY3Rpb25zOiB0aGlzLmdldENyb25BY3Rpb25zKCksXG4gICAgICB9LFxuICAgICAgd2lkdGg6ICc4NSUnLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldENyb25BY3Rpb25zKCkge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIGFjdGlvbjogKGRhdGEpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5xdWV1ZShkYXRhKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdRdWV1ZWQgY3JvbicpO1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICBsYWJlbDogJ1F1ZXVlJyxcbiAgICAgICAgc2hvdzogKGNyb24pID0+IHtcbiAgICAgICAgICByZXR1cm4gY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLklkbGUgfHwgY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLkZhaWxlZDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGFjdGlvbjogKGRhdGEpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5ydW4oZGF0YSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnQ3JvbiByYW4nKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3QucmVsb2FkKCk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWw6ICdSdW4nLFxuICAgICAgICBzaG93OiAoY3JvbikgPT4ge1xuICAgICAgICAgIHJldHVybiBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuSWRsZSB8fCBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuRmFpbGVkO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYWN0aW9uOiAoZGF0YSkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmVuYWJsZShkYXRhKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdFbmFibGVkIGNyb24nKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3QucmVsb2FkKCk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWw6ICdFbmFibGUnLFxuICAgICAgICBzaG93OiAoY3JvbikgPT4ge1xuICAgICAgICAgIHJldHVybiBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuRGlzYWJsZWQ7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBhY3Rpb246IChkYXRhKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZShkYXRhKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdEaXNhYmxlZCBjcm9uJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIGxhYmVsOiAnRGlzYWJsZScsXG4gICAgICAgIHNob3c6IChjcm9uKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5JZGxlIHx8IGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5GYWlsZWQ7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBhY3Rpb246IChkYXRhKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb21wdC5jb25maXJtKHtcbiAgICAgICAgICAgIHRpdGxlOiAnQ29uZmlybScsXG4gICAgICAgICAgICB0ZW1wbGF0ZTogJ0FyZSB5b3Ugc3VyZSB5b3Ugd291bGQgbGlrZSB0byBraWxsIHRoZSBjcm9uPycsXG4gICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmtpbGwoZGF0YSk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnS2lsbGVkIGNyb24nKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3QucmVsb2FkKCk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWw6ICdLaWxsJyxcbiAgICAgICAgc2hvdzogKGNyb24pID0+IHtcbiAgICAgICAgICByZXR1cm4gY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLlJ1bm5pbmc7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBhY3Rpb246IChkYXRhKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb21wdC5jb25maXJtKHtcbiAgICAgICAgICAgIHRpdGxlOiAnQ29uZmlybScsXG4gICAgICAgICAgICB0ZW1wbGF0ZTogJ0FyZSB5b3Ugc3VyZSB5b3Ugd291bGQgbGlrZSB0byByZXNldCB0aGUgY3Jvbj8nLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbmFibGUoZGF0YSk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnUmVzZXQgY3JvbicpO1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICBsYWJlbDogJ1Jlc2V0JyxcbiAgICAgICAgc2hvdzogKGNyb24pID0+IHtcbiAgICAgICAgICByZXR1cm4gY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLktpbGxpbmcgfHwgY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLlJ1bm5pbmcgfHwgY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLkZhaWxlZCB8fCBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuUXVldWVkO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uZmlnTGlzdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIHBhZ2luZzogZmFsc2UsXG4gICAgICBmaWx0ZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBJdGVtVHlwZS5LZXl3b3JkLFxuICAgICAgICAgIG5hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgICBsYWJlbDogJ1NlYXJjaCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgcm93QWN0aW9uczogdGhpcy5nZXRDcm9uQWN0aW9ucygpXG4gICAgICAgIC5tYXAoKHJvd0FjdGlvbikgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5yb3dBY3Rpb24sXG4gICAgICAgICAgICBjbGljazogKGNyb24pID0+IHtcbiAgICAgICAgICAgICAgcm93QWN0aW9uLmFjdGlvbihjcm9uKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSksXG4gICAgICBmZXRjaDogKHF1ZXJ5KSA9PiB7XG4gICAgICAgIHF1ZXJ5ID0geyBcbiAgICAgICAgICAuLi5xdWVyeSxcbiAgICAgICAgICB0aW1lem9uZTogSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRDcm9ucyhxdWVyeSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoY3JvbnMpID0+ICh7XG4gICAgICAgICAgICAgIGRhdGE6IGNyb25zXG4gICAgICAgICAgICAgICAgLm1hcCgoY3JvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY3JvbixcbiAgICAgICAgICAgICAgICAgICAgcnVubmluZ0R1cmF0aW9uOiBkaWZmZXJlbmNlSW5TZWNvbmRzKHBhcnNlKGNyb24uY3JlYXRlRGF0ZSksIG5ldyBEYXRlKCkpLFxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICApO1xuICAgICAgfSxcbiAgICB9O1xuXG4gICAgaWYodGhpcy5idWxrKSB7XG4gICAgICB0aGlzLmNvbmZpZy5zZWxlY3Rpb24gPSB7XG4gICAgICAgIHNlbGVjdEFsbDogZmFsc2UsXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBTZWxlY3Rpb25BY3Rpb25UeXBlLkFjdGlvbixcbiAgICAgICAgICAgIG5hbWU6ICdkaXNhYmxlJyxcbiAgICAgICAgICAgIGxhYmVsOiAnRGlzYWJsZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBTZWxlY3Rpb25BY3Rpb25UeXBlLkFjdGlvbixcbiAgICAgICAgICAgIG5hbWU6ICdlbmFibGUnLFxuICAgICAgICAgICAgbGFiZWw6ICdFbmFibGUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFjdGlvblNlbGVjdGVkOiAoYWN0aW9uOiBGc0xpc3RBY3Rpb25TZWxlY3RlZCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmJ1bGsoYWN0aW9uLmFjdGlvbi5uYW1lLCBhY3Rpb24uc2VsZWN0ZWQpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3QucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdBcHBsaWVkIENoYW5nZXMnKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cbiIsIjxmcy1saXN0IFtjb25maWddPVwiY29uZmlnXCI+XG4gIDxmcy1saXN0LWNvbHVtbj5cbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1oZWFkZXI+TmFtZTwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XG4gICAgICA8YSAoY2xpY2spPVwib3Blbihyb3cpXCI+e3tyb3cubmFtZX19PC9hPlxuICAgICAgPGRpdiAqbmdJZj1cInJvdy5jcm9uU2V0dGluZ1wiPlxuICAgICAgICA8c21hbGw+e3tyb3cuY3JvblNldHRpbmcuc3VtbWFyeX19PC9zbWFsbD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZnMtbGlzdC1jb2x1bW4+XG4gIDxmcy1saXN0LWNvbHVtbiBhbGlnbj1cImNlbnRlclwiPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWhlYWRlcj5TdGF0dXM8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvdy5ob3N0IHx8IHJvdy5wcm9jZXNzSWQ7IGVsc2Ugc3RhdHVzXCI+XG4gICAgICAgIDxmcy1wb3BvdmVyIFxuICAgICAgICAgICAgW21heFdpZHRoXT1cIm51bGxcIlxuICAgICAgICAgICAgW3RlbXBsYXRlXT1cInN0YXR1c1BvcG92ZXJcIiBcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdGF0dXNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9mcy1wb3BvdmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3N0YXR1c1BvcG92ZXI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInJvdy5ob3N0XCI+SG9zdDoge3tyb3cuaG9zdH19PC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInJvdy5wcm9jZXNzSWRcIj5Qcm9jZXNzIElEOiB7e3Jvdy5wcm9jZXNzSWR9fTwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJyb3cucHJvY2Vzc1N0YXRlXCI+UHJvY2VzcyBTdGF0ZToge3tDcm9uUHJvY2Vzc1N0YXRlc1tyb3cucHJvY2Vzc1N0YXRlXX19PC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjc3RhdHVzPlxuICAgICAgICB7e0Nyb25TdGF0ZXNbcm93LnN0YXRlXX19XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvdy5zdGF0ZSA9PT0gQ3JvblN0YXRlLlJ1bm5pbmdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsXCI+XG4gICAgICAgICAgRHVyYXRpb246IHt7IHJvdy5ydW5uaW5nRHVyYXRpb24gfCBmc0RhdGVEdXJhdGlvbjogeyBob3VyczogdHJ1ZSwgbWludXRlczogdHJ1ZSwgc2Vjb25kczogdHJ1ZSB9IH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+ICAgICAgXG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9mcy1saXN0LWNvbHVtbj5cbiAgPGZzLWxpc3QtY29sdW1uPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWhlYWRlcj5MYXN0IFJhbjwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93LmR1cmF0aW9uPT09bnVsbDsgZWxzZSBsYXN0UmFuXCI+XG4gICAgICAgIE5ldmVyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbGFzdFJhbj5cbiAgICAgICAgPGZzLWRhdGUtYWdvIFtkYXRlXT1cInJvdy5jcmVhdGVEYXRlXCI+PC9mcy1kYXRlLWFnbz5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsXCIgKm5nSWY9XCJyb3cuZHVyYXRpb25cIj5cbiAgICAgICAgICBEdXJhdGlvbjoge3sgcm93LmR1cmF0aW9uIHwgZnNEYXRlRHVyYXRpb246IHsgaG91cnM6IHRydWUsIG1pbnV0ZXM6IHRydWUsIHNlY29uZHM6IHRydWUgfSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9mcy1saXN0LWNvbHVtbj5cbjwvZnMtbGlzdD5cbiJdfQ==
|
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3N5c3RlbS9jb21wb25lbnRzL2Nyb25zL2Nyb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vY29tcG9uZW50cy9jcm9ucy9jcm9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBd0IsZUFBZSxFQUFnQixNQUFNLGtCQUFrQixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFNUQsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRS9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFF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QUFwQixLQUFLO2dCQUNVLEdBQUc7c0JBQWxCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgcGFyc2UgfSBmcm9tICdAZmlyZXN0aXRjaC9kYXRlJztcbmltcG9ydCB7IEl0ZW1UeXBlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZmlsdGVyJztcbmltcG9ydCB7IEZzTGlzdEFjdGlvblNlbGVjdGVkLCBGc0xpc3RDb21wb25lbnQsIEZzTGlzdENvbmZpZyB9IGZyb20gJ0BmaXJlc3RpdGNoL2xpc3QnO1xuaW1wb3J0IHsgRnNNZXNzYWdlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbWVzc2FnZSc7XG5pbXBvcnQgeyBGc1Byb21wdCB9IGZyb20gJ0BmaXJlc3RpdGNoL3Byb21wdCc7XG5pbXBvcnQgeyBTZWxlY3Rpb25BY3Rpb25UeXBlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvc2VsZWN0aW9uJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBkaWZmZXJlbmNlSW5TZWNvbmRzIH0gZnJvbSAnZGF0ZS1mbnMnO1xuXG5pbXBvcnQgeyBDcm9uUHJvY2Vzc1N0YXRlcywgQ3JvblN0YXRlcyB9IGZyb20gJy4uLy4uL2NvbnN0cyc7XG5pbXBvcnQgeyBDcm9uU3RhdGUgfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBpbmRleE5hbWVWYWx1ZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaW5kZXgtbmFtZS12YWx1ZSc7XG5pbXBvcnQgeyBDcm9uQ29tcG9uZW50IH0gZnJvbSAnLi4vY3Jvbi9jcm9uLmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtc3lzdGVtLWNyb25zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nyb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3JvbnMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ3JvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQFZpZXdDaGlsZChGc0xpc3RDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBsaXN0OiBGc0xpc3RDb21wb25lbnQ7XG5cbiAgQElucHV0KCkgcHVibGljIGVuYWJsZTogKGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZTogKGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xuICBASW5wdXQoKSBwdWJsaWMga2lsbDogKGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xuICBASW5wdXQoKSBwdWJsaWMgcXVldWU6IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8YW55PjtcbiAgQElucHV0KCkgcHVibGljIHJ1bjogKGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xuICBASW5wdXQoKSBwdWJsaWMgbG9hZENyb25zOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPGFueVtdPjtcbiAgQElucHV0KCkgcHVibGljIGxvYWRDcm9uOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPGFueT47XG4gIEBJbnB1dCgpIHB1YmxpYyBsb2FkQ3JvbkxvZ3M6IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8eyBkYXRhOiBhbnlbXTsgcGFnaW5nOiBhbnkgfT47XG4gIEBJbnB1dCgpIHB1YmxpYyBidWxrOiAoYWN0aW9uTmFtZTogc3RyaW5nLCBkYXRhOiBhbnlbXSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xuXG4gIHB1YmxpYyBjb25maWc6IEZzTGlzdENvbmZpZyA9IG51bGw7XG4gIHB1YmxpYyBDcm9uU3RhdGVzID0gaW5kZXhOYW1lVmFsdWUoQ3JvblN0YXRlcyk7XG4gIHB1YmxpYyBDcm9uUHJvY2Vzc1N0YXRlcyA9IGluZGV4TmFtZVZhbHVlKENyb25Qcm9jZXNzU3RhdGVzKTtcbiAgcHVibGljIENyb25TdGF0ZSA9IENyb25TdGF0ZTtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfbWVzc2FnZTogRnNNZXNzYWdlLFxuICAgIHByaXZhdGUgX2RpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgX3Byb21wdDogRnNQcm9tcHQsXG4gICkgeyB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2NvbmZpZ0xpc3QoKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuKGNyb24pIHtcbiAgICB0aGlzLl9kaWFsb2cub3BlbihDcm9uQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIGNyb24sXG4gICAgICAgIGxvYWRDcm9uTG9nczogdGhpcy5sb2FkQ3JvbkxvZ3MsXG4gICAgICAgIGxvYWRDcm9uOiB0aGlzLmxvYWRDcm9uLFxuICAgICAgICBjcm9uQWN0aW9uczogdGhpcy5nZXRDcm9uQWN0aW9ucygpLFxuICAgICAgfSxcbiAgICAgIHdpZHRoOiAnODUlJyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDcm9uQWN0aW9ucygpIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBhY3Rpb246IChkYXRhKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucXVldWUoZGF0YSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnUXVldWVkIGNyb24nKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3QucmVsb2FkKCk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWw6ICdRdWV1ZScsXG4gICAgICAgIHNob3c6IChjcm9uKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5JZGxlIHx8IGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5GYWlsZWQ7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBhY3Rpb246IChkYXRhKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucnVuKGRhdGEpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ0Nyb24gcmFuJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIGxhYmVsOiAnUnVuJyxcbiAgICAgICAgc2hvdzogKGNyb24pID0+IHtcbiAgICAgICAgICByZXR1cm4gY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLklkbGUgfHwgY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLkZhaWxlZDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGFjdGlvbjogKGRhdGEpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5lbmFibGUoZGF0YSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnRW5hYmxlZCBjcm9uJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIGxhYmVsOiAnRW5hYmxlJyxcbiAgICAgICAgc2hvdzogKGNyb24pID0+IHtcbiAgICAgICAgICByZXR1cm4gY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLkRpc2FibGVkO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYWN0aW9uOiAoZGF0YSkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmRpc2FibGUoZGF0YSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnRGlzYWJsZWQgY3JvbicpO1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICBsYWJlbDogJ0Rpc2FibGUnLFxuICAgICAgICBzaG93OiAoY3JvbikgPT4ge1xuICAgICAgICAgIHJldHVybiBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuSWRsZSB8fCBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuRmFpbGVkO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYWN0aW9uOiAoZGF0YSkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9wcm9tcHQuY29uZmlybSh7XG4gICAgICAgICAgICB0aXRsZTogJ0NvbmZpcm0nLFxuICAgICAgICAgICAgdGVtcGxhdGU6ICdBcmUgeW91IHN1cmUgeW91IHdvdWxkIGxpa2UgdG8ga2lsbCB0aGUgY3Jvbj8nLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5raWxsKGRhdGEpO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ0tpbGxlZCBjcm9uJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIGxhYmVsOiAnS2lsbCcsXG4gICAgICAgIHNob3c6IChjcm9uKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5SdW5uaW5nO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYWN0aW9uOiAoZGF0YSkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9wcm9tcHQuY29uZmlybSh7XG4gICAgICAgICAgICB0aXRsZTogJ0NvbmZpcm0nLFxuICAgICAgICAgICAgdGVtcGxhdGU6ICdBcmUgeW91IHN1cmUgeW91IHdvdWxkIGxpa2UgdG8gcmVzZXQgdGhlIGNyb24/JyxcbiAgICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZW5hYmxlKGRhdGEpO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ1Jlc2V0IGNyb24nKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3QucmVsb2FkKCk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWw6ICdSZXNldCcsXG4gICAgICAgIHNob3c6IChjcm9uKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5LaWxsaW5nIHx8IGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5SdW5uaW5nIHx8IGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5GYWlsZWQgfHwgY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLlF1ZXVlZDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbmZpZ0xpc3QoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICBwYWdpbmc6IGZhbHNlLFxuICAgICAgZmlsdGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogSXRlbVR5cGUuS2V5d29yZCxcbiAgICAgICAgICBuYW1lOiAna2V5d29yZCcsXG4gICAgICAgICAgbGFiZWw6ICdTZWFyY2gnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHJvd0FjdGlvbnM6IHRoaXMuZ2V0Q3JvbkFjdGlvbnMoKVxuICAgICAgICAubWFwKChyb3dBY3Rpb24pID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucm93QWN0aW9uLFxuICAgICAgICAgICAgY2xpY2s6IChjcm9uKSA9PiB7XG4gICAgICAgICAgICAgIHJvd0FjdGlvbi5hY3Rpb24oY3JvbilcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgICAgZmV0Y2g6IChxdWVyeSkgPT4ge1xuICAgICAgICBxdWVyeSA9IHsgXG4gICAgICAgICAgLi4ucXVlcnksXG4gICAgICAgICAgdGltZXpvbmU6IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZSxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkQ3JvbnMocXVlcnkpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGNyb25zKSA9PiAoe1xuICAgICAgICAgICAgICBkYXRhOiBjcm9uc1xuICAgICAgICAgICAgICAgIC5tYXAoKGNyb24pID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNyb24sXG4gICAgICAgICAgICAgICAgICAgIHJ1bm5pbmdEdXJhdGlvbjogZGlmZmVyZW5jZUluU2Vjb25kcyhwYXJzZShjcm9uLmNyZWF0ZURhdGUpLCBuZXcgRGF0ZSgpKSxcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGlmKHRoaXMuYnVsaykge1xuICAgICAgdGhpcy5jb25maWcuc2VsZWN0aW9uID0ge1xuICAgICAgICBzZWxlY3RBbGw6IGZhbHNlLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogU2VsZWN0aW9uQWN0aW9uVHlwZS5BY3Rpb24sXG4gICAgICAgICAgICBuYW1lOiAnZGlzYWJsZScsXG4gICAgICAgICAgICBsYWJlbDogJ0Rpc2FibGUnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogU2VsZWN0aW9uQWN0aW9uVHlwZS5BY3Rpb24sXG4gICAgICAgICAgICBuYW1lOiAnZW5hYmxlJyxcbiAgICAgICAgICAgIGxhYmVsOiAnRW5hYmxlJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBhY3Rpb25TZWxlY3RlZDogKGFjdGlvbjogRnNMaXN0QWN0aW9uU2VsZWN0ZWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5idWxrKGFjdGlvbi5hY3Rpb24ubmFtZSwgYWN0aW9uLnNlbGVjdGVkKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnQXBwbGllZCBDaGFuZ2VzJyk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICB9XG59XG4iLCI8ZnMtbGlzdCBbY29uZmlnXT1cImNvbmZpZ1wiPlxuICA8ZnMtbGlzdC1jb2x1bW4+XG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtaGVhZGVyPk5hbWU8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAgPGEgKGNsaWNrKT1cIm9wZW4ocm93KVwiPnt7cm93Lm5hbWV9fTwvYT5cbiAgICAgIDxkaXYgKm5nSWY9XCJyb3cuY3JvblNldHRpbmdcIj5cbiAgICAgICAgPHNtYWxsPnt7cm93LmNyb25TZXR0aW5nLnN1bW1hcnl9fTwvc21hbGw+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPlxuICA8ZnMtbGlzdC1jb2x1bW4gYWxpZ249XCJjZW50ZXJcIj5cbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1oZWFkZXI+U3RhdHVzPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1jZWxsIGxldC1yb3c9XCJyb3dcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cuaG9zdCB8fCByb3cucHJvY2Vzc0lkOyBlbHNlIHN0YXR1c1wiPlxuICAgICAgICA8ZnMtcG9wb3ZlciBcbiAgICAgICAgICAgIFttYXhXaWR0aF09XCJudWxsXCJcbiAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJzdGF0dXNQb3BvdmVyXCIgXG4gICAgICAgICAgICBzaXplPVwic21hbGxcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RhdHVzXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZnMtcG9wb3Zlcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzdGF0dXNQb3BvdmVyPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJyb3cuaG9zdFwiPkhvc3Q6IHt7cm93Lmhvc3R9fTwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJyb3cucHJvY2Vzc0lkXCI+UHJvY2VzcyBJRDoge3tyb3cucHJvY2Vzc0lkfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicm93LnByb2Nlc3NTdGF0ZVwiPlByb2Nlc3MgU3RhdGU6IHt7Q3JvblByb2Nlc3NTdGF0ZXNbcm93LnByb2Nlc3NTdGF0ZV19fTwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI3N0YXR1cz5cbiAgICAgICAge3tDcm9uU3RhdGVzW3Jvdy5zdGF0ZV19fVxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cuc3RhdGUgPT09IENyb25TdGF0ZS5SdW5uaW5nXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbFwiPlxuICAgICAgICAgIER1cmF0aW9uOiB7eyByb3cucnVubmluZ0R1cmF0aW9uIHwgZnNEYXRlRHVyYXRpb246IHsgaG91cnM6IHRydWUsIG1pbnV0ZXM6IHRydWUsIHNlY29uZHM6IHRydWUgfSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPiAgICAgIFxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZnMtbGlzdC1jb2x1bW4+XG4gIDxmcy1saXN0LWNvbHVtbj5cbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1oZWFkZXI+TGFzdCBSYW48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvdy5kdXJhdGlvbj09PW51bGw7IGVsc2UgbGFzdFJhblwiPlxuICAgICAgICBOZXZlclxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2xhc3RSYW4+XG4gICAgICAgIDxmcy1kYXRlLWFnbyBbZGF0ZV09XCJyb3cuY3JlYXRlRGF0ZVwiPjwvZnMtZGF0ZS1hZ28+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbFwiICpuZ0lmPVwicm93LmR1cmF0aW9uXCI+XG4gICAgICAgICAgRHVyYXRpb246IHt7IHJvdy5kdXJhdGlvbiB8IGZzRGF0ZUR1cmF0aW9uOiB7IGhvdXJzOiB0cnVlLCBtaW51dGVzOiB0cnVlLCBzZWNvbmRzOiB0cnVlIH0gfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZnMtbGlzdC1jb2x1bW4+XG4gIDxmcy1saXN0LWNvbHVtbj5cbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1oZWFkZXI+TmV4dCBSdW48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvdy5zdGF0ZSAhPT0gQ3JvblN0YXRlLkRpc2FibGVkXCI+XG4gICAgICAgIDxhcHAtbmV4dC1ydW4gW2Nyb25dPVwicm93XCI+PC9hcHAtbmV4dC1ydW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPlxuPC9mcy1saXN0PlxuIl19
|