speechrecorderng 2.25.6 → 2.25.7
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/esm2020/lib/audio/audio_display.mjs +6 -6
- package/esm2020/lib/audio/audio_player.mjs +6 -6
- package/esm2020/lib/audio/format.mjs +1 -1
- package/esm2020/lib/audio/ui/audio_canvas_layer_comp.mjs +7 -7
- package/esm2020/lib/audio/ui/audio_display_control.mjs +4 -4
- package/esm2020/lib/audio/ui/audio_display_scroll_pane.mjs +4 -4
- package/esm2020/lib/audio/ui/audiosignal.mjs +4 -4
- package/esm2020/lib/audio/ui/container.mjs +4 -4
- package/esm2020/lib/audio/ui/livelevel.mjs +4 -4
- package/esm2020/lib/audio/ui/scroll_pane_horizontal.mjs +4 -4
- package/esm2020/lib/audio/ui/sonagram.mjs +4 -4
- package/esm2020/lib/dsp/utils.mjs +1 -1
- package/esm2020/lib/io/BinaryWriter.mjs +1 -1
- package/esm2020/lib/math/complex.mjs +1 -1
- package/esm2020/lib/math/dft.mjs +1 -1
- package/esm2020/lib/math/utils.mjs +1 -1
- package/esm2020/lib/speechrecorder/project/project.service.mjs +4 -4
- package/esm2020/lib/speechrecorder/recordings/recordings.service.mjs +4 -4
- package/esm2020/lib/speechrecorder/script/script.service.mjs +4 -4
- package/esm2020/lib/speechrecorder/session/audiorecorder.mjs +82 -77
- package/esm2020/lib/speechrecorder/session/basicrecorder.mjs +10 -5
- package/esm2020/lib/speechrecorder/session/controlpanel.mjs +67 -54
- package/esm2020/lib/speechrecorder/session/progress.mjs +4 -4
- package/esm2020/lib/speechrecorder/session/prompting.mjs +33 -29
- package/esm2020/lib/speechrecorder/session/recorder_combi_pane.mjs +15 -12
- package/esm2020/lib/speechrecorder/session/recording_list.mjs +4 -4
- package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-meta.component.mjs +4 -4
- package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-navi.component.mjs +12 -12
- package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.mjs +4 -4
- package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-view.component.mjs +7 -6
- package/esm2020/lib/speechrecorder/session/recordingfile/recordingfile-service.mjs +4 -4
- package/esm2020/lib/speechrecorder/session/session.service.mjs +4 -4
- package/esm2020/lib/speechrecorder/session/session_finished_dialog.mjs +4 -4
- package/esm2020/lib/speechrecorder/session/sessionmanager.mjs +76 -72
- package/esm2020/lib/speechrecorder/session/warning_bar.mjs +4 -4
- package/esm2020/lib/speechrecorder/spruploader.mjs +4 -4
- package/esm2020/lib/speechrecorder/startstopsignal/startstopsignal.mjs +1 -1
- package/esm2020/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.mjs +4 -4
- package/esm2020/lib/speechrecorderng.component.mjs +4 -4
- package/esm2020/lib/speechrecorderng.module.mjs +8 -8
- package/esm2020/lib/spr.config.mjs +4 -4
- package/esm2020/lib/spr.module.version.mjs +2 -2
- package/esm2020/lib/ui/canvas_layer_comp.mjs +4 -4
- package/esm2020/lib/ui/message_dialog.mjs +4 -4
- package/esm2020/lib/ui/recordingitem_display.mjs +31 -27
- package/esm2020/lib/ui/responsive_component.mjs +24 -0
- package/esm2020/lib/utils/css_utils.mjs +1 -1
- package/esm2020/lib/utils/scrollIntoViewToBottom.mjs +4 -4
- package/fesm2015/speechrecorderng.mjs +401 -345
- package/fesm2015/speechrecorderng.mjs.map +1 -1
- package/fesm2020/speechrecorderng.mjs +401 -345
- package/fesm2020/speechrecorderng.mjs.map +1 -1
- package/lib/speechrecorder/session/audiorecorder.d.ts +6 -4
- package/lib/speechrecorder/session/basicrecorder.d.ts +8 -3
- package/lib/speechrecorder/session/controlpanel.d.ts +9 -3
- package/lib/speechrecorder/session/prompting.d.ts +5 -1
- package/lib/speechrecorder/session/recorder_combi_pane.d.ts +5 -2
- package/lib/speechrecorder/session/recordingfile/recording-file-view.component.d.ts +1 -1
- package/lib/speechrecorder/session/sessionmanager.d.ts +6 -6
- package/lib/speechrecorderng.module.d.ts +17 -18
- package/lib/spr.module.version.d.ts +1 -1
- package/lib/ui/recordingitem_display.d.ts +8 -4
- package/lib/ui/responsive_component.d.ts +9 -0
- package/package.json +1 -1
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output, ViewChild } from "@angular/core";
|
|
2
2
|
import { LevelBar } from "../audio/ui/livelevel";
|
|
3
|
+
import { ResponsiveComponent } from "./responsive_component";
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/
|
|
5
|
+
import * as i1 from "@angular/cdk/layout";
|
|
5
6
|
import * as i2 from "@angular/common";
|
|
6
7
|
import * as i3 from "@angular/material/icon";
|
|
7
8
|
import * as i4 from "@angular/material/tooltip";
|
|
8
|
-
import * as i5 from "
|
|
9
|
-
import * as i6 from "../audio/ui/livelevel";
|
|
9
|
+
import * as i5 from "../audio/ui/livelevel";
|
|
10
10
|
export const MIN_DB_LEVEL = -40.0;
|
|
11
11
|
export const DEFAULT_WARN_DB_LEVEL = -2;
|
|
12
|
-
export class RecordingItemControls {
|
|
13
|
-
constructor(ref, changeDetectorRef) {
|
|
12
|
+
export class RecordingItemControls extends ResponsiveComponent {
|
|
13
|
+
constructor(bpo, ref, changeDetectorRef) {
|
|
14
|
+
super(bpo);
|
|
15
|
+
this.bpo = bpo;
|
|
14
16
|
this.ref = ref;
|
|
15
17
|
this.changeDetectorRef = changeDetectorRef;
|
|
16
18
|
this.ce = null;
|
|
@@ -62,8 +64,8 @@ export class RecordingItemControls {
|
|
|
62
64
|
// this.status = 'ERROR';
|
|
63
65
|
}
|
|
64
66
|
}
|
|
65
|
-
RecordingItemControls.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
66
|
-
RecordingItemControls.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
67
|
+
RecordingItemControls.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RecordingItemControls, deps: [{ token: i1.BreakpointObserver }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
68
|
+
RecordingItemControls.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: RecordingItemControls, selector: "spr-recordingitemcontrols", inputs: { audioSignalCollapsed: "audioSignalCollapsed", enableDownload: "enableDownload", peakDbLvl: "peakDbLvl", agc: "agc", audioLoaded: "audioLoaded", playStartAction: "playStartAction", playStopAction: "playStopAction", displayLevelInfos: "displayLevelInfos" }, outputs: { onShowRecordingDetails: "onShowRecordingDetails", onDownloadRecording: "onDownloadRecording" }, usesInheritance: true, ngImport: i0, template: `
|
|
67
69
|
<button matTooltip="Start playback" (click)="playStartAction?.perform()"
|
|
68
70
|
[disabled]="playStartAction?.disabled"
|
|
69
71
|
[style.color]="playStartAction?.disabled ? 'grey' : 'green'">
|
|
@@ -74,7 +76,7 @@ RecordingItemControls.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
74
76
|
[style.color]="playStopAction?.disabled ? 'grey' : 'yellow'">
|
|
75
77
|
<mat-icon>stop</mat-icon>
|
|
76
78
|
</button>
|
|
77
|
-
<button
|
|
79
|
+
<button *ngIf="!screenXs" matTooltip="Toggle detailed audio display" [disabled]="!audioLoaded"
|
|
78
80
|
(click)="showRecordingDetails()">
|
|
79
81
|
<mat-icon>{{(audioSignalCollapsed) ? "expand_less" : "expand_more"}}</mat-icon>
|
|
80
82
|
</button>
|
|
@@ -85,8 +87,8 @@ RecordingItemControls.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
85
87
|
<div style="min-width: 14ch;padding:2px"><table style="border-style: none"><tr><td>Peak:</td><td><span matTooltip="Peak level"
|
|
86
88
|
[style.color]="(peakDbLvl > warnDbLevel)?'red':'black'">{{peakDbLvl | number:'1.1-1'}} dB </span></td></tr>
|
|
87
89
|
<tr *ngIf="_agc"><td>AGC:</td><td><span matTooltip="Auto gain control">{{agcString}}</span></td></tr></table></div>
|
|
88
|
-
`, isInline: true, styles: [":host{flex:0;width:100%;background:darkgray;padding:4px;box-sizing:border-box;height:100%;display:flex;flex-direction:row;flex-wrap:nowrap}\n", "span{flex:0;font-weight:700;display:inline-block;white-space:nowrap;box-sizing:border-box}\n", "button{touch-action:manipulation}\n"], dependencies: [{ kind: "directive", type:
|
|
89
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
90
|
+
`, isInline: true, styles: [":host{flex:0;width:100%;background:darkgray;padding:4px;box-sizing:border-box;height:100%;display:flex;flex-direction:row;flex-wrap:nowrap}\n", "span{flex:0;font-weight:700;display:inline-block;white-space:nowrap;box-sizing:border-box}\n", "button{touch-action:manipulation}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "pipe", type: i2.DecimalPipe, name: "number" }] });
|
|
91
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RecordingItemControls, decorators: [{
|
|
90
92
|
type: Component,
|
|
91
93
|
args: [{ selector: 'spr-recordingitemcontrols', template: `
|
|
92
94
|
<button matTooltip="Start playback" (click)="playStartAction?.perform()"
|
|
@@ -99,7 +101,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
99
101
|
[style.color]="playStopAction?.disabled ? 'grey' : 'yellow'">
|
|
100
102
|
<mat-icon>stop</mat-icon>
|
|
101
103
|
</button>
|
|
102
|
-
<button
|
|
104
|
+
<button *ngIf="!screenXs" matTooltip="Toggle detailed audio display" [disabled]="!audioLoaded"
|
|
103
105
|
(click)="showRecordingDetails()">
|
|
104
106
|
<mat-icon>{{(audioSignalCollapsed) ? "expand_less" : "expand_more"}}</mat-icon>
|
|
105
107
|
</button>
|
|
@@ -111,7 +113,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
111
113
|
[style.color]="(peakDbLvl > warnDbLevel)?'red':'black'">{{peakDbLvl | number:'1.1-1'}} dB </span></td></tr>
|
|
112
114
|
<tr *ngIf="_agc"><td>AGC:</td><td><span matTooltip="Auto gain control">{{agcString}}</span></td></tr></table></div>
|
|
113
115
|
`, styles: [":host{flex:0;width:100%;background:darkgray;padding:4px;box-sizing:border-box;height:100%;display:flex;flex-direction:row;flex-wrap:nowrap}\n", "span{flex:0;font-weight:700;display:inline-block;white-space:nowrap;box-sizing:border-box}\n", "button{touch-action:manipulation}\n"] }]
|
|
114
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { audioSignalCollapsed: [{
|
|
116
|
+
}], ctorParameters: function () { return [{ type: i1.BreakpointObserver }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { audioSignalCollapsed: [{
|
|
115
117
|
type: Input
|
|
116
118
|
}], enableDownload: [{
|
|
117
119
|
type: Input
|
|
@@ -132,8 +134,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
132
134
|
}], displayLevelInfos: [{
|
|
133
135
|
type: Input
|
|
134
136
|
}] } });
|
|
135
|
-
export class RecordingItemDisplay {
|
|
136
|
-
constructor(ref, changeDetectorRef) {
|
|
137
|
+
export class RecordingItemDisplay extends ResponsiveComponent {
|
|
138
|
+
constructor(bpo, ref, changeDetectorRef) {
|
|
139
|
+
super(bpo);
|
|
140
|
+
this.bpo = bpo;
|
|
137
141
|
this.ref = ref;
|
|
138
142
|
this.changeDetectorRef = changeDetectorRef;
|
|
139
143
|
this.ce = null;
|
|
@@ -204,22 +208,22 @@ export class RecordingItemDisplay {
|
|
|
204
208
|
this.changeDetectorRef.detectChanges();
|
|
205
209
|
}
|
|
206
210
|
}
|
|
207
|
-
RecordingItemDisplay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
208
|
-
RecordingItemDisplay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
209
|
-
<div
|
|
210
|
-
<audio-levelbar
|
|
211
|
-
<spr-recordingitemcontrols
|
|
211
|
+
RecordingItemDisplay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RecordingItemDisplay, deps: [{ token: i1.BreakpointObserver }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
212
|
+
RecordingItemDisplay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: RecordingItemDisplay, selector: "spr-recordingitemdisplay", inputs: { streamingMode: "streamingMode", audioSignalCollapsed: "audioSignalCollapsed", enableDownload: "enableDownload", agc: "agc", playStartAction: "playStartAction", playStopAction: "playStopAction", displayAudioBuffer: "displayAudioBuffer", displayLevelInfos: "displayLevelInfos" }, outputs: { onShowRecordingDetails: "onShowRecordingDetails", onDownloadRecording: "onDownloadRecording" }, viewQueries: [{ propertyName: "liveLevel", first: true, predicate: LevelBar, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
213
|
+
<div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
|
|
214
|
+
<audio-levelbar style="flex:1 0 1%" [streamingMode]="streamingMode" [displayLevelInfos]="_displayLevelInfos"></audio-levelbar>
|
|
215
|
+
<spr-recordingitemcontrols style="flex:0 0 0px" [audioLoaded]="displayAudioBuffer!==null" [playStartAction]="playStartAction" [playStopAction]="playStopAction" [peakDbLvl]="peakDbLvl" [agc]="_agc" (onShowRecordingDetails)="onShowRecordingDetails.emit()"></spr-recordingitemcontrols>
|
|
212
216
|
</div>
|
|
213
|
-
`, isInline: true, styles: ["div{width:100%;background:darkgray;padding:4px;box-sizing:border-box;flex-wrap:nowrap}\n", "audio-levelbar{box-sizing:border-box}\n"
|
|
214
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
217
|
+
`, isInline: true, styles: ["div{width:100%;background:darkgray;padding:4px;box-sizing:border-box;flex-wrap:nowrap}\n", "audio-levelbar{box-sizing:border-box}\n", ".audioStatusDisplay{display:flex;flex-direction:row;height:100px;min-height:100px}\n", ".audioStatusDisplayXs{display:flex;flex-direction:column;height:125px;min-height:125px}\n"], dependencies: [{ kind: "component", type: i5.LevelBar, selector: "audio-levelbar", inputs: ["streamingMode", "displayLevelInfos"] }, { kind: "component", type: RecordingItemControls, selector: "spr-recordingitemcontrols", inputs: ["audioSignalCollapsed", "enableDownload", "peakDbLvl", "agc", "audioLoaded", "playStartAction", "playStopAction", "displayLevelInfos"], outputs: ["onShowRecordingDetails", "onDownloadRecording"] }] });
|
|
218
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RecordingItemDisplay, decorators: [{
|
|
215
219
|
type: Component,
|
|
216
220
|
args: [{ selector: 'spr-recordingitemdisplay', template: `
|
|
217
|
-
<div
|
|
218
|
-
<audio-levelbar
|
|
219
|
-
<spr-recordingitemcontrols
|
|
221
|
+
<div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
|
|
222
|
+
<audio-levelbar style="flex:1 0 1%" [streamingMode]="streamingMode" [displayLevelInfos]="_displayLevelInfos"></audio-levelbar>
|
|
223
|
+
<spr-recordingitemcontrols style="flex:0 0 0px" [audioLoaded]="displayAudioBuffer!==null" [playStartAction]="playStartAction" [playStopAction]="playStopAction" [peakDbLvl]="peakDbLvl" [agc]="_agc" (onShowRecordingDetails)="onShowRecordingDetails.emit()"></spr-recordingitemcontrols>
|
|
220
224
|
</div>
|
|
221
|
-
`, styles: ["div{width:100%;background:darkgray;padding:4px;box-sizing:border-box;flex-wrap:nowrap}\n", "audio-levelbar{box-sizing:border-box}\n"] }]
|
|
222
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { liveLevel: [{
|
|
225
|
+
`, styles: ["div{width:100%;background:darkgray;padding:4px;box-sizing:border-box;flex-wrap:nowrap}\n", "audio-levelbar{box-sizing:border-box}\n", ".audioStatusDisplay{display:flex;flex-direction:row;height:100px;min-height:100px}\n", ".audioStatusDisplayXs{display:flex;flex-direction:column;height:125px;min-height:125px}\n"] }]
|
|
226
|
+
}], ctorParameters: function () { return [{ type: i1.BreakpointObserver }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { liveLevel: [{
|
|
223
227
|
type: ViewChild,
|
|
224
228
|
args: [LevelBar, { static: true }]
|
|
225
229
|
}], streamingMode: [{
|
|
@@ -243,4 +247,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
243
247
|
}], displayLevelInfos: [{
|
|
244
248
|
type: Input
|
|
245
249
|
}] } });
|
|
246
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5naXRlbV9kaXNwbGF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3VpL3JlY29yZGluZ2l0ZW1fZGlzcGxheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ2dCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFDaEYsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7QUFJL0MsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxDQUFDO0FBa0R4QyxNQUFNLE9BQU8scUJBQXFCO0lBMENoQyxZQUFvQixHQUFlLEVBQVUsaUJBQW9DO1FBQTdELFFBQUcsR0FBSCxHQUFHLENBQVk7UUFBVSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBeENqRixPQUFFLEdBQXNCLElBQUksQ0FBQztRQUNwQix5QkFBb0IsR0FBVSxJQUFJLENBQUM7UUFFbkMsbUJBQWMsR0FBVSxLQUFLLENBQUM7UUFFOUIsY0FBUyxHQUFHLFlBQVksQ0FBQztRQUVsQyx1QkFBa0IsR0FBb0IsSUFBSSxDQUFDO1FBRTNDLFNBQUksR0FBd0IsU0FBUyxDQUFDO1FBQ3RDLGNBQVMsR0FBQyxLQUFLLENBQUM7UUFlTiwyQkFBc0IsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN0RSx3QkFBbUIsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVwRSxnQkFBVyxHQUFDLEtBQUssQ0FBQztRQUkzQixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDekIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDaEIsa0JBQWEsR0FBYyxJQUFJLENBQUM7UUFFaEMsY0FB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LE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsS0FBSztRQUNELHlCQUF5QjtJQUM3QixDQUFDO0lBRUQsY0FBYztRQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQztRQUM5QixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0MsQ0FBQzs7a0hBcEdRLG9CQUFvQjtzR0FBcEIsb0JBQW9CLHNmQUdsQixRQUFRLDhEQXBCVDs7Ozs7S0FLVCxvNkRBakZRLHFCQUFxQjs0RkE2RnJCLG9CQUFvQjtrQkFuQmhDLFNBQVM7K0JBQ0ksMEJBQTBCLFlBQzFCOzs7OztLQUtUO2lJQWVzQyxTQUFTO3NCQUEvQyxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQzVCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBU08sR0FBRztzQkFBZixLQUFLO2dCQUlJLHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBR0UsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQW1CRixrQkFBa0I7c0JBRHJCLEtBQUs7Z0JBdUJGLGlCQUFpQjtzQkFEcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCxcclxuICAgIFZpZXdDaGlsZFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcclxuaW1wb3J0IHtMZXZlbEluZm8sIExldmVsSW5mb3MsIExldmVsTGlzdGVuZXJ9IGZyb20gXCIuLi9hdWRpby9kc3AvbGV2ZWxfbWVhc3VyZVwiO1xyXG5pbXBvcnQge0xldmVsQmFyfSBmcm9tIFwiLi4vYXVkaW8vdWkvbGl2ZWxldmVsXCI7XHJcbmltcG9ydCB7QWN0aW9ufSBmcm9tIFwiLi4vYWN0aW9uL2FjdGlvblwiO1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBNSU5fREJfTEVWRUwgPSAtNDAuMDtcclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfV0FSTl9EQl9MRVZFTCA9IC0yO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzcHItcmVjb3JkaW5naXRlbWNvbnRyb2xzJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxidXR0b24gbWF0VG9vbHRpcD1cIlN0YXJ0IHBsYXliYWNrXCIgKGNsaWNrKT1cInBsYXlTdGFydEFjdGlvbj8ucGVyZm9ybSgpXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwbGF5U3RhcnRBY3Rpb24/LmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJwbGF5U3RhcnRBY3Rpb24/LmRpc2FibGVkID8gJ2dyZXknIDogJ2dyZWVuJ1wiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+cGxheV9hcnJvdzwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXRUb29sdGlwPVwiU3RvcCBwbGF5YmFja1wiIChjbGljayk9XCJwbGF5U3RvcEFjdGlvbj8ucGVyZm9ybSgpXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwbGF5U3RvcEFjdGlvbj8uZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInBsYXlTdG9wQWN0aW9uPy5kaXNhYmxlZCA/ICdncmV5JyA6ICd5ZWxsb3cnXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5zdG9wPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGZ4SGlkZS54cyBtYXRUb29sdGlwPVwiVG9nZ2xlIGRldGFpbGVkIGF1ZGlvIGRpc3BsYXlcIiBbZGlzYWJsZWRdPVwiIWF1ZGlvTG9hZGVkXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93UmVjb3JkaW5nRGV0YWlscygpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj57eyhhdWRpb1NpZ25hbENvbGxhcHNlZCkgPyBcImV4cGFuZF9sZXNzXCIgOiBcImV4cGFuZF9tb3JlXCJ9fTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXRUb29sdGlwPVwiRG93bmxvYWQgY3VycmVudCByZWNvcmRpbmdcIiAqbmdJZj1cImVuYWJsZURvd25sb2FkXCIgW2Rpc2FibGVkXT1cIiFhdWRpb0xvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRSZWNvcmRpbmcoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cIm1pbi13aWR0aDogMTRjaDtwYWRkaW5nOjJweFwiPjx0YWJsZSBzdHlsZT1cImJvcmRlci1zdHlsZTogbm9uZVwiPjx0cj48dGQ+UGVhazo8L3RkPjx0ZD48c3BhbiBtYXRUb29sdGlwPVwiUGVhayBsZXZlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCIocGVha0RiTHZsID4gd2FybkRiTGV2ZWwpPydyZWQnOidibGFjaydcIj57e3BlYWtEYkx2bCB8IG51bWJlcjonMS4xLTEnfX0gZEIgPC9zcGFuPjwvdGQ+PC90cj5cclxuICAgICAgICAgIDx0ciAqbmdJZj1cIl9hZ2NcIj48dGQ+QUdDOjwvdGQ+PHRkPjxzcGFuIG1hdFRvb2x0aXA9XCJBdXRvIGdhaW4gY29udHJvbFwiPnt7YWdjU3RyaW5nfX08L3NwYW4+PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+XHJcbiAgICBgLFxyXG4gIHN0eWxlczogW2A6aG9zdCB7XHJcbiAgICAgICAgZmxleDogMDsgLyogb25seSByZXF1aXJlZCB2ZXJ0aWNhbCBzcGFjZSAqL1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGJhY2tncm91bmQ6IGRhcmtncmF5O1xyXG4gICAgICAgIHBhZGRpbmc6IDRweDtcclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICAgIGhlaWdodDogMTAwJTtcclxuXHJcbiAgICAgICAgZGlzcGxheTogZmxleDsgLyogZmxleCBjb250YWluZXI6IGxlZnQgbGV2ZWwgYmFyLCByaWdodCBkZWNpbWFsIHBlYWsgbGV2ZWwgdmFsdWUgKi9cclxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwOyAvKiB3cmFwIGNvdWxkIGNvbXBsZXRlbHkgZGVzdHJveSB0aGUgbGF5b3V0ICovXHJcbiAgICB9YCwgYHNwYW4ge1xyXG4gICAgICAgIGZsZXg6IDA7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIH1gLGBcclxuICAgICBidXR0b24ge1xyXG4gICAgICAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XHJcbiAgICAgfWBdXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVjb3JkaW5nSXRlbUNvbnRyb2xzIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgY2U6IEhUTUxEaXZFbGVtZW50fG51bGw9bnVsbDtcclxuICBASW5wdXQoKSBhdWRpb1NpZ25hbENvbGxhcHNlZDogYm9vbGVhbj10cnVlO1xyXG4gIHByaXZhdGUgX2Rpc3BsYXlBdWRpb0J1ZmZlcjogQXVkaW9CdWZmZXIgfCBudWxsfHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBlbmFibGVEb3dubG9hZDogYm9vbGVhbj1mYWxzZTtcclxuXHJcbiAgQElucHV0KCkgcGVha0RiTHZsID0gTUlOX0RCX0xFVkVMO1xyXG5cclxuICBfZGlzcGxheUxldmVsSW5mb3M6IExldmVsSW5mb3MgfCBudWxsPW51bGw7XHJcblxyXG4gIF9hZ2M6Ym9vbGVhbnxudWxsfHVuZGVmaW5lZD11bmRlZmluZWQ7XHJcbiAgYWdjU3RyaW5nPSduL2EnO1xyXG5cclxuICBASW5wdXQoKSBzZXQgYWdjKGFnYzpib29sZWFufG51bGx8dW5kZWZpbmVkKXtcclxuICAgIHRoaXMuX2FnYz1hZ2M7XHJcbiAgICBpZih0aGlzLl9hZ2M9PT11bmRlZmluZWQgfHwgdGhpcy5fYWdjPT09bnVsbCl7XHJcbiAgICAgIHRoaXMuYWdjU3RyaW5nPSduL2EnO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIGlmKHRoaXMuX2FnYz09PXRydWUpe1xyXG4gICAgICAgIHRoaXMuYWdjU3RyaW5nPSdPbic7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMuYWdjU3RyaW5nPSdPZmYnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgb25TaG93UmVjb3JkaW5nRGV0YWlsczogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBvbkRvd25sb2FkUmVjb3JkaW5nOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBJbnB1dCgpIGF1ZGlvTG9hZGVkPWZhbHNlO1xyXG4gIC8vQElucHV0KCkgY29udHJvbEF1ZGlvUGxheWVyOiBBdWRpb1BsYXllcjtcclxuICBASW5wdXQoKSBwbGF5U3RhcnRBY3Rpb246QWN0aW9uPHZvaWQ+fHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBwbGF5U3RvcEFjdGlvbjpBY3Rpb248dm9pZD58dW5kZWZpbmVkO1xyXG4gIHBsYXlTdGFydEVuYWJsZWQgPSBmYWxzZTtcclxuICBwbGF5U3RvcEVuYWJsZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIHVwZGF0ZVRpbWVySWQ6IG51bWJlcnxudWxsPW51bGw7XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveWVkID0gZmFsc2U7XHJcblxyXG4gIHdhcm5EYkxldmVsID0gREVGQVVMVF9XQVJOX0RCX0xFVkVMO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHNob3dSZWNvcmRpbmdEZXRhaWxzKCkge1xyXG4gICAgdGhpcy5vblNob3dSZWNvcmRpbmdEZXRhaWxzLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIGRvd25sb2FkUmVjb3JkaW5nKCkge1xyXG4gICAgdGhpcy5vbkRvd25sb2FkUmVjb3JkaW5nLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuY2UgPSB0aGlzLnJlZi5uYXRpdmVFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgZGlzcGxheUxldmVsSW5mb3MobGV2ZWxJbmZvczogTGV2ZWxJbmZvcyB8IG51bGwpIHtcclxuICAgIHRoaXMuX2Rpc3BsYXlMZXZlbEluZm9zID0gbGV2ZWxJbmZvcztcclxuICB9XHJcblxyXG4gIGVycm9yKCkge1xyXG4gICAgLy8gdGhpcy5zdGF0dXMgPSAnRVJST1InO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc3ByLXJlY29yZGluZ2l0ZW1kaXNwbGF5JyxcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dC54cz1cImNvbHVtblwiIFtuZ1N0eWxlXT1cInsnaGVpZ2h0LnB4JzoxMDAsJ21pbi1oZWlnaHQucHgnOiAxMDB9XCIgW25nU3R5bGUueHNdPVwieydoZWlnaHQucHgnOjEyNSwnbWluLWhlaWdodC5weCc6IDEyNX1cIj5cclxuICAgICAgICA8YXVkaW8tbGV2ZWxiYXIgZnhGbGV4PVwiMSAwIDFcIiBbc3RyZWFtaW5nTW9kZV09XCJzdHJlYW1pbmdNb2RlXCIgW2Rpc3BsYXlMZXZlbEluZm9zXT1cIl9kaXNwbGF5TGV2ZWxJbmZvc1wiPjwvYXVkaW8tbGV2ZWxiYXI+XHJcbiAgICAgICAgPHNwci1yZWNvcmRpbmdpdGVtY29udHJvbHMgZnhGbGV4PVwiMCAwIDBcIiBbYXVkaW9Mb2FkZWRdPVwiZGlzcGxheUF1ZGlvQnVmZmVyIT09bnVsbFwiIFtwbGF5U3RhcnRBY3Rpb25dPVwicGxheVN0YXJ0QWN0aW9uXCIgW3BsYXlTdG9wQWN0aW9uXT1cInBsYXlTdG9wQWN0aW9uXCIgW3BlYWtEYkx2bF09XCJwZWFrRGJMdmxcIiBbYWdjXT1cIl9hZ2NcIiAob25TaG93UmVjb3JkaW5nRGV0YWlscyk9XCJvblNob3dSZWNvcmRpbmdEZXRhaWxzLmVtaXQoKVwiPjwvc3ByLXJlY29yZGluZ2l0ZW1jb250cm9scz5cclxuICAgICAgPC9kaXY+XHJcbiAgICBgLFxyXG4gICAgc3R5bGVzOiBbYGRpdiB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgYmFja2dyb3VuZDogZGFya2dyYXk7XHJcbiAgICAgICAgcGFkZGluZzogNHB4O1xyXG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7IC8qIHdyYXAgY291bGQgY29tcGxldGVseSBkZXN0cm95IHRoZSBsYXlvdXQgKi9cclxuICAgIH1gLCBgYXVkaW8tbGV2ZWxiYXIge1xyXG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICB9YF1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWNvcmRpbmdJdGVtRGlzcGxheSBpbXBsZW1lbnRzIExldmVsTGlzdGVuZXIsIE9uRGVzdHJveSB7XHJcblxyXG4gICAgY2U6IEhUTUxEaXZFbGVtZW50fG51bGw9bnVsbDtcclxuICAgIEBWaWV3Q2hpbGQoTGV2ZWxCYXIsIHsgc3RhdGljOiB0cnVlIH0pIGxpdmVMZXZlbCE6IExldmVsQmFyO1xyXG4gICAgQElucHV0KCkgc3RyZWFtaW5nTW9kZTogYm9vbGVhbj1mYWxzZTtcclxuICAgIEBJbnB1dCgpIGF1ZGlvU2lnbmFsQ29sbGFwc2VkOiBib29sZWFuPXRydWU7XHJcbiAgICBwcml2YXRlIF9kaXNwbGF5QXVkaW9CdWZmZXI6IEF1ZGlvQnVmZmVyIHwgbnVsbHx1bmRlZmluZWQ7XHJcbiAgICBASW5wdXQoKSBlbmFibGVEb3dubG9hZDogYm9vbGVhbj1mYWxzZTtcclxuXHJcbiAgICBwZWFrRGJMdmwgPSBNSU5fREJfTEVWRUw7XHJcblxyXG4gICAgX2Rpc3BsYXlMZXZlbEluZm9zOiBMZXZlbEluZm9zIHwgbnVsbD1udWxsO1xyXG5cclxuICAgIF9hZ2M6Ym9vbGVhbnxudWxsfHVuZGVmaW5lZD11bmRlZmluZWQ7XHJcbiAgICBhZ2NTdHJpbmc9J24vYSc7XHJcblxyXG4gICAgQElucHV0KCkgc2V0IGFnYyhhZ2M6Ym9vbGVhbnxudWxsfHVuZGVmaW5lZCl7XHJcbiAgICAgIHRoaXMuX2FnYz1hZ2M7XHJcbiAgICB9XHJcblxyXG4gICAgQE91dHB1dCgpIG9uU2hvd1JlY29yZGluZ0RldGFpbHM6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkRvd25sb2FkUmVjb3JkaW5nOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgLy9ASW5wdXQoKSBjb250cm9sQXVkaW9QbGF5ZXI6IEF1ZGlvUGxheWVyO1xyXG4gICAgQElucHV0KCkgcGxheVN0YXJ0QWN0aW9uOkFjdGlvbjx2b2lkPnx1bmRlZmluZWQ7XHJcbiAgICBASW5wdXQoKSBwbGF5U3RvcEFjdGlvbjpBY3Rpb248dm9pZD58dW5kZWZpbmVkO1xyXG4gICAgcGxheVN0YXJ0RW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgcGxheVN0b3BFbmFibGVkID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIHVwZGF0ZVRpbWVySWQ6IG51bWJlcnxudWxsPW51bGw7XHJcblxyXG4gICAgcHJpdmF0ZSBkZXN0cm95ZWQgPSBmYWxzZTtcclxuXHJcbiAgICB3YXJuRGJMZXZlbCA9IERFRkFVTFRfV0FSTl9EQl9MRVZFTDtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IGRpc3BsYXlBdWRpb0J1ZmZlcihkaXNwbGF5QXVkaW9CdWZmZXI6IEF1ZGlvQnVmZmVyIHwgbnVsbHwgdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5fZGlzcGxheUF1ZGlvQnVmZmVyID0gZGlzcGxheUF1ZGlvQnVmZmVyO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBkaXNwbGF5QXVkaW9CdWZmZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlBdWRpb0J1ZmZlcjtcclxuICAgIH1cclxuXHJcbiAgICBzaG93UmVjb3JkaW5nRGV0YWlscygpIHtcclxuICAgICAgICB0aGlzLm9uU2hvd1JlY29yZGluZ0RldGFpbHMuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGRvd25sb2FkUmVjb3JkaW5nKCkge1xyXG4gICAgICAgIHRoaXMub25Eb3dubG9hZFJlY29yZGluZy5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIHRoaXMuY2UgPSB0aGlzLnJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIC8vdGhpcy5jb250cm9sQXVkaW9QbGF5ZXIubGlzdGVuZXI9dGhpcztcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IGRpc3BsYXlMZXZlbEluZm9zKGxldmVsSW5mb3M6IExldmVsSW5mb3MgfCBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5fZGlzcGxheUxldmVsSW5mb3MgPSBsZXZlbEluZm9zO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBjaGFubmVsQ291bnQoY2hhbm5lbENvdW50OiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICAgICAgdGhpcy5saXZlTGV2ZWwuY2hhbm5lbENvdW50ID0gY2hhbm5lbENvdW50O1xyXG4gICAgfVxyXG5cclxuICBzZXQgcGxheUZyYW1lUG9zaXRpb24ocGxheUZyYW1lUG9zaXRpb246IG51bWJlcikge1xyXG4gICAgdGhpcy5saXZlTGV2ZWwucGxheUZyYW1lUG9zaXRpb249cGxheUZyYW1lUG9zaXRpb247XHJcbiAgfVxyXG5cclxuICAgIHVwZGF0ZShsZXZlbEluZm86IExldmVsSW5mbywgcGVha0xldmVsSW5mbzogTGV2ZWxJbmZvKSB7XHJcbiAgICAgICAgbGV0IHBlYWtEQlZhbCA9IGxldmVsSW5mby5wb3dlckxldmVsREIoKTtcclxuICAgICAgICBpZiAodGhpcy5wZWFrRGJMdmwgPCBwZWFrREJWYWwpIHtcclxuICAgICAgICAgICAgdGhpcy5wZWFrRGJMdmwgPSBwZWFrREJWYWw7XHJcbiAgICAgICAgICAgIC8vIHRoZSBldmVudCBjb21lcyBmcm9tIG91dHNpZGUgb2YgYW4gQW5ndWxhciB6b25lXHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxpdmVMZXZlbC51cGRhdGUobGV2ZWxJbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICBlcnJvcigpIHtcclxuICAgICAgICAvLyB0aGlzLnN0YXR1cyA9ICdFUlJPUic7XHJcbiAgICB9XHJcblxyXG4gICAgc3RyZWFtRmluaXNoZWQoKSB7XHJcbiAgICAgICAgdGhpcy5saXZlTGV2ZWwuc3RyZWFtRmluaXNoZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldCgpIHtcclxuICAgICAgICB0aGlzLnBlYWtEYkx2bCA9IE1JTl9EQl9MRVZFTDtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcblxyXG59XHJcbiJdfQ==
|
|
250
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5naXRlbV9kaXNwbGF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3VpL3JlY29yZGluZ2l0ZW1fZGlzcGxheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ2dCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFDaEYsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7OztBQUkzRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDbEMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFrRHhDLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxtQkFBbUI7SUEwQzVELFlBQXNCLEdBQXNCLEVBQVMsR0FBZSxFQUFVLGlCQUFvQztRQUNoSCxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFEUyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUFTLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFBVSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBeENsSCxPQUFFLEdBQXNCLElBQUksQ0FBQztRQUNwQix5QkFBb0IsR0FBVSxJQUFJLENBQUM7UUFFbkMsbUJBQWMsR0FBVSxLQUFLLENBQUM7UUFFOUIsY0FBUyxHQUFHLFlBQVksQ0FBQztRQUVsQyx1QkFBa0IsR0FBb0IsSUFBSSxDQUFDO1FBRTNDLFNBQUksR0FBd0IsU0FBUyxDQUFDO1FBQ3RDLGNBQVMsR0FBQyxLQUFLLENBQUM7UUFlTiwyQkFBc0IsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN0RSx3QkFBbUIsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVwRSxnQkFBVyxHQUFDLEtBQUssQ0FBQztRQUkzQixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDekIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDaEIsa0JBQWEsR0FBYyxJQUFJLENBQUM7UUFFaEMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUUxQixnQkFBVyxHQUFHLHFCQUFxQixDQUFDO0lBSXBDLENBQUM7SUE5QkQsSUFBYSxHQUFHLENBQUMsR0FBMEI7UUFDekMsSUFBSSxDQUFDLElBQUksR0FBQyxHQUFHLENBQUM7UUFDZCxJQUFHLElBQUksQ0FBQyxJQUFJLEtBQUcsU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUcsSUFBSSxFQUFDO1lBQzNDLElBQUksQ0FBQyxTQUFTLEdBQUMsS0FBSyxDQUFDO1NBQ3RCO2FBQUk7WUFDSCxJQUFHLElBQUksQ0FBQyxJQUFJLEtBQUcsSUFBSSxFQUFDO2dCQUNsQixJQUFJLENBQUMsU0FBUyxHQUFDLElBQUksQ0FBQzthQUNyQjtpQkFBSTtnQkFDSCxJQUFJLENBQUMsU0FBUyxHQUFDLEtBQUssQ0FBQzthQUN0QjtTQUNGO0lBQ0gsQ0FBQztJQXFCRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQ0ksaUJBQWlCLENBQUMsVUFBNkI7UUFDakQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFVBQVUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsS0FBSztRQUNILHlCQUF5QjtJQUMzQixDQUFDOztrSEFyRVUscUJBQXFCO3NHQUFyQixxQkFBcUIsNmNBOUN0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXNCUDsyRkF3QlEscUJBQXFCO2tCQWhEakMsU0FBUzsrQkFDRSwyQkFBMkIsWUFDM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FzQlA7a0tBMkJNLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT08sR0FBRztzQkFBZixLQUFLO2dCQWFJLHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBRUUsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBOEJGLGlCQUFpQjtzQkFEcEIsS0FBSzs7QUF5Q1IsTUFBTSxPQUFPLG9CQUFxQixTQUFRLG1CQUFtQjtJQWtDekQsWUFBc0IsR0FBc0IsRUFBUyxHQUFlLEVBQVUsaUJBQW9DO1FBQzlHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQURPLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVMsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQUFVLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFoQ2xILE9BQUUsR0FBc0IsSUFBSSxDQUFDO1FBRXBCLGtCQUFhLEdBQVUsS0FBSyxDQUFDO1FBQzdCLHlCQUFvQixHQUFVLElBQUksQ0FBQztRQUVuQyxtQkFBYyxHQUFVLEtBQUssQ0FBQztRQUV2QyxjQUFTLEdBQUcsWUFBWSxDQUFDO1FBRXpCLHVCQUFrQixHQUFvQixJQUFJLENBQUM7UUFFM0MsU0FBSSxHQUF3QixTQUFTLENBQUM7UUFDdEMsY0FBUyxHQUFDLEtBQUssQ0FBQztRQU1OLDJCQUFzQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3RFLHdCQUFtQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBSzdFLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUNoQixrQkFBYSxHQUFjLElBQUksQ0FBQztRQUVoQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRTFCLGdCQUFXLEdBQUcscUJBQXFCLENBQUM7SUFJcEMsQ0FBQztJQXBCRCxJQUFhLEdBQUcsQ0FBQyxHQUEwQjtRQUN6QyxJQUFJLENBQUMsSUFBSSxHQUFDLEdBQUcsQ0FBQztJQUNoQixDQUFDO0lBb0JELFdBQVc7UUFDUCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBR0QsSUFDSSxrQkFBa0IsQ0FBQyxrQkFBaUQ7UUFDcEUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLGtCQUFrQixDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNsQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNwQyxDQUFDO0lBRUQsb0JBQW9CO1FBQ2hCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztRQUNqQyx3Q0FBd0M7SUFDNUMsQ0FBQztJQUVELElBQ0ksaUJBQWlCLENBQUMsVUFBNkI7UUFDL0MsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFVBQVUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxZQUFZLENBQUMsWUFBb0I7UUFDakMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQy9DLENBQUM7SUFFSCxJQUFJLGlCQUFpQixDQUFDLGlCQUF5QjtRQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixHQUFDLGlCQUFpQixDQUFDO0lBQ3JELENBQUM7SUFFQyxNQUFNLENBQUMsU0FBb0IsRUFBRSxhQUF3QjtRQUNqRCxJQUFJLFNBQVMsR0FBRyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDekMsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRTtZQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUMzQixrREFBa0Q7WUFDbEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQzFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELEtBQUs7UUFDRCx5QkFBeUI7SUFDN0IsQ0FBQztJQUVELGNBQWM7UUFDVixJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUM7UUFDOUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNDLENBQUM7O2lIQXBHUSxvQkFBb0I7cUdBQXBCLG9CQUFvQixzZkFHbEIsUUFBUSxxRkE5QlQ7Ozs7O0tBS1Qsd2ZBakZRLHFCQUFxQjsyRkF1R3JCLG9CQUFvQjtrQkE3QmhDLFNBQVM7K0JBQ0ksMEJBQTBCLFlBQzFCOzs7OztLQUtUO2tLQXlCc0MsU0FBUztzQkFBL0MsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUM1QixhQUFhO3NCQUFyQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQVNPLEdBQUc7c0JBQWYsS0FBSztnQkFJSSxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUdFLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFtQkYsa0JBQWtCO3NCQURyQixLQUFLO2dCQXVCRixpQkFBaUI7c0JBRHBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsXHJcbiAgICBWaWV3Q2hpbGRcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXHJcbmltcG9ydCB7TGV2ZWxJbmZvLCBMZXZlbEluZm9zLCBMZXZlbExpc3RlbmVyfSBmcm9tIFwiLi4vYXVkaW8vZHNwL2xldmVsX21lYXN1cmVcIjtcclxuaW1wb3J0IHtMZXZlbEJhcn0gZnJvbSBcIi4uL2F1ZGlvL3VpL2xpdmVsZXZlbFwiO1xyXG5pbXBvcnQge0FjdGlvbn0gZnJvbSBcIi4uL2FjdGlvbi9hY3Rpb25cIjtcclxuaW1wb3J0IHtSZXNwb25zaXZlQ29tcG9uZW50fSBmcm9tIFwiLi9yZXNwb25zaXZlX2NvbXBvbmVudFwiO1xyXG5pbXBvcnQge0JyZWFrcG9pbnRPYnNlcnZlcn0gZnJvbSBcIkBhbmd1bGFyL2Nkay9sYXlvdXRcIjtcclxuXHJcblxyXG5leHBvcnQgY29uc3QgTUlOX0RCX0xFVkVMID0gLTQwLjA7XHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX1dBUk5fREJfTEVWRUwgPSAtMjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3ByLXJlY29yZGluZ2l0ZW1jb250cm9scycsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8YnV0dG9uIG1hdFRvb2x0aXA9XCJTdGFydCBwbGF5YmFja1wiIChjbGljayk9XCJwbGF5U3RhcnRBY3Rpb24/LnBlcmZvcm0oKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicGxheVN0YXJ0QWN0aW9uPy5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwicGxheVN0YXJ0QWN0aW9uPy5kaXNhYmxlZCA/ICdncmV5JyA6ICdncmVlbidcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPnBsYXlfYXJyb3c8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0VG9vbHRpcD1cIlN0b3AgcGxheWJhY2tcIiAoY2xpY2spPVwicGxheVN0b3BBY3Rpb24/LnBlcmZvcm0oKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicGxheVN0b3BBY3Rpb24/LmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJwbGF5U3RvcEFjdGlvbj8uZGlzYWJsZWQgPyAnZ3JleScgOiAneWVsbG93J1wiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+c3RvcDwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFzY3JlZW5Yc1wiIG1hdFRvb2x0aXA9XCJUb2dnbGUgZGV0YWlsZWQgYXVkaW8gZGlzcGxheVwiIFtkaXNhYmxlZF09XCIhYXVkaW9Mb2FkZWRcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dSZWNvcmRpbmdEZXRhaWxzKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPnt7KGF1ZGlvU2lnbmFsQ29sbGFwc2VkKSA/IFwiZXhwYW5kX2xlc3NcIiA6IFwiZXhwYW5kX21vcmVcIn19PC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIG1hdFRvb2x0aXA9XCJEb3dubG9hZCBjdXJyZW50IHJlY29yZGluZ1wiICpuZ0lmPVwiZW5hYmxlRG93bmxvYWRcIiBbZGlzYWJsZWRdPVwiIWF1ZGlvTG9hZGVkXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZFJlY29yZGluZygpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwibWluLXdpZHRoOiAxNGNoO3BhZGRpbmc6MnB4XCI+PHRhYmxlIHN0eWxlPVwiYm9yZGVyLXN0eWxlOiBub25lXCI+PHRyPjx0ZD5QZWFrOjwvdGQ+PHRkPjxzcGFuIG1hdFRvb2x0aXA9XCJQZWFrIGxldmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cIihwZWFrRGJMdmwgPiB3YXJuRGJMZXZlbCk/J3JlZCc6J2JsYWNrJ1wiPnt7cGVha0RiTHZsIHwgbnVtYmVyOicxLjEtMSd9fSBkQiA8L3NwYW4+PC90ZD48L3RyPlxyXG4gICAgICAgICAgPHRyICpuZ0lmPVwiX2FnY1wiPjx0ZD5BR0M6PC90ZD48dGQ+PHNwYW4gbWF0VG9vbHRpcD1cIkF1dG8gZ2FpbiBjb250cm9sXCI+e3thZ2NTdHJpbmd9fTwvc3Bhbj48L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5cclxuICAgIGAsXHJcbiAgc3R5bGVzOiBbYDpob3N0IHtcclxuICAgICAgICBmbGV4OiAwOyAvKiBvbmx5IHJlcXVpcmVkIHZlcnRpY2FsIHNwYWNlICovXHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgYmFja2dyb3VuZDogZGFya2dyYXk7XHJcbiAgICAgICAgcGFkZGluZzogNHB4O1xyXG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG5cclxuICAgICAgICBkaXNwbGF5OiBmbGV4OyAvKiBmbGV4IGNvbnRhaW5lcjogbGVmdCBsZXZlbCBiYXIsIHJpZ2h0IGRlY2ltYWwgcGVhayBsZXZlbCB2YWx1ZSAqL1xyXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7IC8qIHdyYXAgY291bGQgY29tcGxldGVseSBkZXN0cm95IHRoZSBsYXlvdXQgKi9cclxuICAgIH1gLCBgc3BhbiB7XHJcbiAgICAgICAgZmxleDogMDtcclxuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgfWAsYFxyXG4gICAgIGJ1dHRvbiB7XHJcbiAgICAgICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcclxuICAgICB9YF1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWNvcmRpbmdJdGVtQ29udHJvbHMgZXh0ZW5kcyBSZXNwb25zaXZlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgY2U6IEhUTUxEaXZFbGVtZW50fG51bGw9bnVsbDtcclxuICBASW5wdXQoKSBhdWRpb1NpZ25hbENvbGxhcHNlZDogYm9vbGVhbj10cnVlO1xyXG4gIHByaXZhdGUgX2Rpc3BsYXlBdWRpb0J1ZmZlcjogQXVkaW9CdWZmZXIgfCBudWxsfHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBlbmFibGVEb3dubG9hZDogYm9vbGVhbj1mYWxzZTtcclxuXHJcbiAgQElucHV0KCkgcGVha0RiTHZsID0gTUlOX0RCX0xFVkVMO1xyXG5cclxuICBfZGlzcGxheUxldmVsSW5mb3M6IExldmVsSW5mb3MgfCBudWxsPW51bGw7XHJcblxyXG4gIF9hZ2M6Ym9vbGVhbnxudWxsfHVuZGVmaW5lZD11bmRlZmluZWQ7XHJcbiAgYWdjU3RyaW5nPSduL2EnO1xyXG5cclxuICBASW5wdXQoKSBzZXQgYWdjKGFnYzpib29sZWFufG51bGx8dW5kZWZpbmVkKXtcclxuICAgIHRoaXMuX2FnYz1hZ2M7XHJcbiAgICBpZih0aGlzLl9hZ2M9PT11bmRlZmluZWQgfHwgdGhpcy5fYWdjPT09bnVsbCl7XHJcbiAgICAgIHRoaXMuYWdjU3RyaW5nPSduL2EnO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIGlmKHRoaXMuX2FnYz09PXRydWUpe1xyXG4gICAgICAgIHRoaXMuYWdjU3RyaW5nPSdPbic7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMuYWdjU3RyaW5nPSdPZmYnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgb25TaG93UmVjb3JkaW5nRGV0YWlsczogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBvbkRvd25sb2FkUmVjb3JkaW5nOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBJbnB1dCgpIGF1ZGlvTG9hZGVkPWZhbHNlO1xyXG4gIC8vQElucHV0KCkgY29udHJvbEF1ZGlvUGxheWVyOiBBdWRpb1BsYXllcjtcclxuICBASW5wdXQoKSBwbGF5U3RhcnRBY3Rpb246QWN0aW9uPHZvaWQ+fHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBwbGF5U3RvcEFjdGlvbjpBY3Rpb248dm9pZD58dW5kZWZpbmVkO1xyXG4gIHBsYXlTdGFydEVuYWJsZWQgPSBmYWxzZTtcclxuICBwbGF5U3RvcEVuYWJsZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIHVwZGF0ZVRpbWVySWQ6IG51bWJlcnxudWxsPW51bGw7XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveWVkID0gZmFsc2U7XHJcblxyXG4gIHdhcm5EYkxldmVsID0gREVGQVVMVF9XQVJOX0RCX0xFVkVMO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgYnBvOkJyZWFrcG9pbnRPYnNlcnZlcixwcml2YXRlIHJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHN1cGVyKGJwbyk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHNob3dSZWNvcmRpbmdEZXRhaWxzKCkge1xyXG4gICAgdGhpcy5vblNob3dSZWNvcmRpbmdEZXRhaWxzLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIGRvd25sb2FkUmVjb3JkaW5nKCkge1xyXG4gICAgdGhpcy5vbkRvd25sb2FkUmVjb3JkaW5nLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuY2UgPSB0aGlzLnJlZi5uYXRpdmVFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgZGlzcGxheUxldmVsSW5mb3MobGV2ZWxJbmZvczogTGV2ZWxJbmZvcyB8IG51bGwpIHtcclxuICAgIHRoaXMuX2Rpc3BsYXlMZXZlbEluZm9zID0gbGV2ZWxJbmZvcztcclxuICB9XHJcblxyXG4gIGVycm9yKCkge1xyXG4gICAgLy8gdGhpcy5zdGF0dXMgPSAnRVJST1InO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc3ByLXJlY29yZGluZ2l0ZW1kaXNwbGF5JyxcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgIDxkaXYgW2NsYXNzXT1cInthdWRpb1N0YXR1c0Rpc3BsYXk6IXNjcmVlblhzLGF1ZGlvU3RhdHVzRGlzcGxheVhzOnNjcmVlblhzfVwiPlxyXG4gICAgICAgIDxhdWRpby1sZXZlbGJhciBzdHlsZT1cImZsZXg6MSAwIDElXCIgW3N0cmVhbWluZ01vZGVdPVwic3RyZWFtaW5nTW9kZVwiIFtkaXNwbGF5TGV2ZWxJbmZvc109XCJfZGlzcGxheUxldmVsSW5mb3NcIj48L2F1ZGlvLWxldmVsYmFyPlxyXG4gICAgICAgIDxzcHItcmVjb3JkaW5naXRlbWNvbnRyb2xzIHN0eWxlPVwiZmxleDowIDAgMHB4XCIgW2F1ZGlvTG9hZGVkXT1cImRpc3BsYXlBdWRpb0J1ZmZlciE9PW51bGxcIiBbcGxheVN0YXJ0QWN0aW9uXT1cInBsYXlTdGFydEFjdGlvblwiIFtwbGF5U3RvcEFjdGlvbl09XCJwbGF5U3RvcEFjdGlvblwiIFtwZWFrRGJMdmxdPVwicGVha0RiTHZsXCIgW2FnY109XCJfYWdjXCIgKG9uU2hvd1JlY29yZGluZ0RldGFpbHMpPVwib25TaG93UmVjb3JkaW5nRGV0YWlscy5lbWl0KClcIj48L3Nwci1yZWNvcmRpbmdpdGVtY29udHJvbHM+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgYCxcclxuICAgIHN0eWxlczogW2BkaXYge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGJhY2tncm91bmQ6IGRhcmtncmF5O1xyXG4gICAgICAgIHBhZGRpbmc6IDRweDtcclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwOyAvKiB3cmFwIGNvdWxkIGNvbXBsZXRlbHkgZGVzdHJveSB0aGUgbGF5b3V0ICovXHJcbiAgICB9YCwgYGF1ZGlvLWxldmVsYmFyIHtcclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgfWAsYC5hdWRpb1N0YXR1c0Rpc3BsYXl7XHJcbiAgICBkaXNwbGF5OmZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gICAgaGVpZ2h0OjEwMHB4O1xyXG4gICAgbWluLWhlaWdodDogMTAwcHg7XHJcbiAgfWAsYC5hdWRpb1N0YXR1c0Rpc3BsYXlYc3tcclxuICAgIGRpc3BsYXk6ZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBoZWlnaHQ6MTI1cHg7XHJcbiAgICBtaW4taGVpZ2h0OiAxMjVweDtcclxuICB9YF1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWNvcmRpbmdJdGVtRGlzcGxheSBleHRlbmRzIFJlc3BvbnNpdmVDb21wb25lbnQgaW1wbGVtZW50cyBMZXZlbExpc3RlbmVyLCBPbkRlc3Ryb3kge1xyXG5cclxuICAgIGNlOiBIVE1MRGl2RWxlbWVudHxudWxsPW51bGw7XHJcbiAgICBAVmlld0NoaWxkKExldmVsQmFyLCB7IHN0YXRpYzogdHJ1ZSB9KSBsaXZlTGV2ZWwhOiBMZXZlbEJhcjtcclxuICAgIEBJbnB1dCgpIHN0cmVhbWluZ01vZGU6IGJvb2xlYW49ZmFsc2U7XHJcbiAgICBASW5wdXQoKSBhdWRpb1NpZ25hbENvbGxhcHNlZDogYm9vbGVhbj10cnVlO1xyXG4gICAgcHJpdmF0ZSBfZGlzcGxheUF1ZGlvQnVmZmVyOiBBdWRpb0J1ZmZlciB8IG51bGx8dW5kZWZpbmVkO1xyXG4gICAgQElucHV0KCkgZW5hYmxlRG93bmxvYWQ6IGJvb2xlYW49ZmFsc2U7XHJcblxyXG4gICAgcGVha0RiTHZsID0gTUlOX0RCX0xFVkVMO1xyXG5cclxuICAgIF9kaXNwbGF5TGV2ZWxJbmZvczogTGV2ZWxJbmZvcyB8IG51bGw9bnVsbDtcclxuXHJcbiAgICBfYWdjOmJvb2xlYW58bnVsbHx1bmRlZmluZWQ9dW5kZWZpbmVkO1xyXG4gICAgYWdjU3RyaW5nPSduL2EnO1xyXG5cclxuICAgIEBJbnB1dCgpIHNldCBhZ2MoYWdjOmJvb2xlYW58bnVsbHx1bmRlZmluZWQpe1xyXG4gICAgICB0aGlzLl9hZ2M9YWdjO1xyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoKSBvblNob3dSZWNvcmRpbmdEZXRhaWxzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25Eb3dubG9hZFJlY29yZGluZzogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIC8vQElucHV0KCkgY29udHJvbEF1ZGlvUGxheWVyOiBBdWRpb1BsYXllcjtcclxuICAgIEBJbnB1dCgpIHBsYXlTdGFydEFjdGlvbjpBY3Rpb248dm9pZD58dW5kZWZpbmVkO1xyXG4gICAgQElucHV0KCkgcGxheVN0b3BBY3Rpb246QWN0aW9uPHZvaWQ+fHVuZGVmaW5lZDtcclxuICAgIHBsYXlTdGFydEVuYWJsZWQgPSBmYWxzZTtcclxuICAgIHBsYXlTdG9wRW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVUaW1lcklkOiBudW1iZXJ8bnVsbD1udWxsO1xyXG5cclxuICAgIHByaXZhdGUgZGVzdHJveWVkID0gZmFsc2U7XHJcblxyXG4gICAgd2FybkRiTGV2ZWwgPSBERUZBVUxUX1dBUk5fREJfTEVWRUw7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGJwbzpCcmVha3BvaW50T2JzZXJ2ZXIscHJpdmF0ZSByZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICAgICAgc3VwZXIoYnBvKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgZGlzcGxheUF1ZGlvQnVmZmVyKGRpc3BsYXlBdWRpb0J1ZmZlcjogQXVkaW9CdWZmZXIgfCBudWxsfCB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLl9kaXNwbGF5QXVkaW9CdWZmZXIgPSBkaXNwbGF5QXVkaW9CdWZmZXI7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGRpc3BsYXlBdWRpb0J1ZmZlcigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheUF1ZGlvQnVmZmVyO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dSZWNvcmRpbmdEZXRhaWxzKCkge1xyXG4gICAgICAgIHRoaXMub25TaG93UmVjb3JkaW5nRGV0YWlscy5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZG93bmxvYWRSZWNvcmRpbmcoKSB7XHJcbiAgICAgICAgdGhpcy5vbkRvd25sb2FkUmVjb3JkaW5nLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5jZSA9IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgLy90aGlzLmNvbnRyb2xBdWRpb1BsYXllci5saXN0ZW5lcj10aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgZGlzcGxheUxldmVsSW5mb3MobGV2ZWxJbmZvczogTGV2ZWxJbmZvcyB8IG51bGwpIHtcclxuICAgICAgICB0aGlzLl9kaXNwbGF5TGV2ZWxJbmZvcyA9IGxldmVsSW5mb3M7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGNoYW5uZWxDb3VudChjaGFubmVsQ291bnQ6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMucmVzZXQoKTtcclxuICAgICAgICB0aGlzLmxpdmVMZXZlbC5jaGFubmVsQ291bnQgPSBjaGFubmVsQ291bnQ7XHJcbiAgICB9XHJcblxyXG4gIHNldCBwbGF5RnJhbWVQb3NpdGlvbihwbGF5RnJhbWVQb3NpdGlvbjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmxpdmVMZXZlbC5wbGF5RnJhbWVQb3NpdGlvbj1wbGF5RnJhbWVQb3NpdGlvbjtcclxuICB9XHJcblxyXG4gICAgdXBkYXRlKGxldmVsSW5mbzogTGV2ZWxJbmZvLCBwZWFrTGV2ZWxJbmZvOiBMZXZlbEluZm8pIHtcclxuICAgICAgICBsZXQgcGVha0RCVmFsID0gbGV2ZWxJbmZvLnBvd2VyTGV2ZWxEQigpO1xyXG4gICAgICAgIGlmICh0aGlzLnBlYWtEYkx2bCA8IHBlYWtEQlZhbCkge1xyXG4gICAgICAgICAgICB0aGlzLnBlYWtEYkx2bCA9IHBlYWtEQlZhbDtcclxuICAgICAgICAgICAgLy8gdGhlIGV2ZW50IGNvbWVzIGZyb20gb3V0c2lkZSBvZiBhbiBBbmd1bGFyIHpvbmVcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGl2ZUxldmVsLnVwZGF0ZShsZXZlbEluZm8pO1xyXG4gICAgfVxyXG5cclxuICAgIGVycm9yKCkge1xyXG4gICAgICAgIC8vIHRoaXMuc3RhdHVzID0gJ0VSUk9SJztcclxuICAgIH1cclxuXHJcbiAgICBzdHJlYW1GaW5pc2hlZCgpIHtcclxuICAgICAgICB0aGlzLmxpdmVMZXZlbC5zdHJlYW1GaW5pc2hlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlc2V0KCkge1xyXG4gICAgICAgIHRoaXMucGVha0RiTHZsID0gTUlOX0RCX0xFVkVMO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuXHJcbn1cclxuIl19
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Breakpoints } from "@angular/cdk/layout";
|
|
2
|
+
import { Directive } from "@angular/core";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/cdk/layout";
|
|
5
|
+
export class ResponsiveComponent {
|
|
6
|
+
constructor(breakpointObserver) {
|
|
7
|
+
this.breakpointObserver = breakpointObserver;
|
|
8
|
+
this.screenXs = false;
|
|
9
|
+
breakpointObserver
|
|
10
|
+
.observe([
|
|
11
|
+
Breakpoints.XSmall
|
|
12
|
+
])
|
|
13
|
+
.subscribe(result => {
|
|
14
|
+
this.screenXs = (result.matches);
|
|
15
|
+
//console.debug("Screen XS: "+this.screenXs);
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
ResponsiveComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ResponsiveComponent, deps: [{ token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Directive });
|
|
20
|
+
ResponsiveComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: ResponsiveComponent, ngImport: i0 });
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ResponsiveComponent, decorators: [{
|
|
22
|
+
type: Directive
|
|
23
|
+
}], ctorParameters: function () { return [{ type: i1.BreakpointObserver }]; } });
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2l2ZV9jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvdWkvcmVzcG9uc2l2ZV9jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixXQUFXLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7QUFHeEMsTUFBTSxPQUFPLG1CQUFtQjtJQUk5QixZQUFzQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUY1RCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBR2Ysa0JBQWtCO2FBQ2YsT0FBTyxDQUFDO1lBQ1AsV0FBVyxDQUFDLE1BQU07U0FDbkIsQ0FBQzthQUNELFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pDLDZDQUE2QztRQUMvQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O2dIQWJVLG1CQUFtQjtvR0FBbkIsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBRC9CLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0JyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHN9IGZyb20gXCJAYW5ndWxhci9jZGsvbGF5b3V0XCI7XHJcbmltcG9ydCB7RGlyZWN0aXZlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBjbGFzcyBSZXNwb25zaXZlQ29tcG9uZW50IHtcclxuXHJcbiAgc2NyZWVuWHMgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyKSB7XHJcbiAgICBicmVha3BvaW50T2JzZXJ2ZXJcclxuICAgICAgLm9ic2VydmUoW1xyXG4gICAgICAgIEJyZWFrcG9pbnRzLlhTbWFsbFxyXG4gICAgICBdKVxyXG4gICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgdGhpcy5zY3JlZW5YcyA9IChyZXN1bHQubWF0Y2hlcyk7XHJcbiAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiU2NyZWVuIFhTOiBcIit0aGlzLnNjcmVlblhzKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -4,4 +4,4 @@ export class CSSUtils {
|
|
|
4
4
|
return '#' + Utils.toHexString(red, 16, 2) + Utils.toHexString(green, 16, 2) + Utils.toHexString(blue, 16, 2);
|
|
5
5
|
}
|
|
6
6
|
}
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzX3V0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3V0aWxzL2Nzc191dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxDLE1BQU0sT0FBTyxRQUFRO0lBRWpCLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBVyxFQUFFLEtBQWEsRUFBRSxJQUFZO1FBQ3pELE9BQU8sR0FBRyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xILENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vbWF0aC91dGlscyc7XHJcblxyXG4gICAgZXhwb3J0IGNsYXNzIENTU1V0aWxzIHtcclxuXHJcbiAgICAgICAgc3RhdGljIHRvQ29sb3JTdHJpbmcocmVkOiBudW1iZXIsIGdyZWVuOiBudW1iZXIsIGJsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAgICAgICAgIHJldHVybiAnIycgKyBVdGlscy50b0hleFN0cmluZyhyZWQsIDE2LCAyKSArIFV0aWxzLnRvSGV4U3RyaW5nKGdyZWVuLCAxNiwgMikgKyBVdGlscy50b0hleFN0cmluZyhibHVlLCAxNiwgMik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4iXX0=
|
|
@@ -10,9 +10,9 @@ export class ScrollIntoViewDirective {
|
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
-
ScrollIntoViewDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
14
|
-
ScrollIntoViewDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
13
|
+
ScrollIntoViewDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScrollIntoViewDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
14
|
+
ScrollIntoViewDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: ScrollIntoViewDirective, selector: "[scrollIntoViewToBottom]", inputs: { scrollIntoViewToBottom: "scrollIntoViewToBottom" }, ngImport: i0 });
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScrollIntoViewDirective, decorators: [{
|
|
16
16
|
type: Directive,
|
|
17
17
|
args: [{
|
|
18
18
|
selector: "[scrollIntoViewToBottom]"
|
|
@@ -20,4 +20,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
20
20
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { scrollIntoViewToBottom: [{
|
|
21
21
|
type: Input
|
|
22
22
|
}] } });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsSW50b1ZpZXdUb0JvdHRvbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWVjaHJlY29yZGVybmcvc3JjL2xpYi91dGlscy9zY3JvbGxJbnRvVmlld1RvQm90dG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxTQUFTLEVBQWMsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQUkzRCxNQUFNLE9BQU8sdUJBQXVCO0lBRWxDLFlBQW9CLEtBQWdCO1FBQWhCLFVBQUssR0FBTCxLQUFLLENBQVc7SUFBRSxDQUFDO0lBQ3ZDLElBQ0ksc0JBQXNCLENBQUMsR0FBVztRQUNsQyxJQUFHLEdBQUcsRUFBQztZQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNoRDtJQUNMLENBQUM7O29IQVJVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBSG5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDBCQUEwQjtpQkFDckM7aUdBS0ssc0JBQXNCO3NCQUR6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiXHJcblxyXG5pbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiBcIltzY3JvbGxJbnRvVmlld1RvQm90dG9tXVwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTY3JvbGxJbnRvVmlld0RpcmVjdGl2ZXtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbFJlZjpFbGVtZW50UmVmKXt9XHJcbiAgQElucHV0KClcclxuICBzZXQgc2Nyb2xsSW50b1ZpZXdUb0JvdHRvbShzaXY6Ym9vbGVhbil7XHJcbiAgICAgIGlmKHNpdil7XHJcbiAgICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KGZhbHNlKTtcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIl19
|