speechrecorderng 3.3.2 → 3.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/speechrecorder/session/audiorecorder.mjs +92 -77
- package/esm2020/lib/speechrecorder/session/basicrecorder.mjs +11 -5
- package/esm2020/lib/speechrecorder/session/controlpanel.mjs +50 -37
- package/esm2020/lib/speechrecorder/session/prompting.mjs +19 -15
- package/esm2020/lib/speechrecorder/session/recorder_combi_pane.mjs +14 -11
- package/esm2020/lib/speechrecorder/session/recording_list.mjs +2 -2
- package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-navi.component.mjs +9 -9
- package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.mjs +3 -3
- package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-view.component.mjs +3 -3
- package/esm2020/lib/speechrecorder/session/sessionmanager.mjs +77 -62
- package/esm2020/lib/speechrecorderng.component.mjs +2 -1
- package/esm2020/lib/speechrecorderng.module.mjs +5 -5
- package/esm2020/lib/spr.module.version.mjs +2 -2
- package/esm2020/lib/ui/recordingitem_display.mjs +29 -25
- package/esm2020/lib/ui/responsive_component.mjs +24 -0
- package/fesm2015/speechrecorderng.mjs +282 -204
- package/fesm2015/speechrecorderng.mjs.map +1 -1
- package/fesm2020/speechrecorderng.mjs +282 -204
- package/fesm2020/speechrecorderng.mjs.map +1 -1
- package/lib/speechrecorder/session/audiorecorder.d.ts +5 -3
- package/lib/speechrecorder/session/basicrecorder.d.ts +6 -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/sessionmanager.d.ts +5 -3
- package/lib/speechrecorderng.component.d.ts +1 -1
- package/lib/speechrecorderng.module.d.ts +18 -19
- 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 -2
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { Component, ViewChild, Input, Output, EventEmitter, HostListener, HostBinding } from "@angular/core";
|
|
2
2
|
import { SimpleTrafficLight } from "../startstopsignal/ui/simpletrafficlight";
|
|
3
3
|
import { AudioDisplay } from "../../audio/audio_display";
|
|
4
|
+
import { ResponsiveComponent } from "../../ui/responsive_component";
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "../project/project.service";
|
|
6
|
-
import * as i2 from "@angular/
|
|
7
|
-
import * as i3 from "
|
|
8
|
-
import * as i4 from "
|
|
9
|
-
import * as i5 from "
|
|
7
|
+
import * as i2 from "@angular/cdk/layout";
|
|
8
|
+
import * as i3 from "@angular/common";
|
|
9
|
+
import * as i4 from "../../audio/audio_display";
|
|
10
|
+
import * as i5 from "./progress";
|
|
11
|
+
import * as i6 from "../startstopsignal/ui/simpletrafficlight";
|
|
10
12
|
export class Recinstructions {
|
|
11
13
|
displayText() {
|
|
12
14
|
let riTxt = '';
|
|
@@ -521,8 +523,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
521
523
|
type: HostListener,
|
|
522
524
|
args: ['touchcancel', ['$event']]
|
|
523
525
|
}] } });
|
|
524
|
-
export class Prompting {
|
|
525
|
-
constructor() {
|
|
526
|
+
export class Prompting extends ResponsiveComponent {
|
|
527
|
+
constructor(bpo) {
|
|
528
|
+
super(bpo);
|
|
529
|
+
this.bpo = bpo;
|
|
526
530
|
this.promptItem = null;
|
|
527
531
|
this.showPrompt = false;
|
|
528
532
|
this.items = undefined;
|
|
@@ -543,16 +547,16 @@ export class Prompting {
|
|
|
543
547
|
this.onPrevItem.emit();
|
|
544
548
|
}
|
|
545
549
|
}
|
|
546
|
-
Prompting.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Prompting, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
547
|
-
Prompting.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: Prompting, selector: "app-sprprompting", inputs: { projectName: "projectName", startStopSignalState: "startStopSignalState", promptItem: "promptItem", showPrompt: "showPrompt", items: "items", selectedItemIdx: "selectedItemIdx", transportActions: "transportActions", enableDownload: "enableDownload", audioSignalCollapsed: "audioSignalCollapsed", displayAudioClip: "displayAudioClip", playStartAction: "playStartAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", playStopAction: "playStopAction" }, outputs: { onItemSelect: "onItemSelect", onNextItem: "onNextItem", onPrevItem: "onPrevItem" }, viewQueries: [{ propertyName: "simpleTrafficLight", first: true, predicate: SimpleTrafficLight, descendants: true, static: true }, { propertyName: "audioDisplay", first: true, predicate: AudioDisplay, descendants: true, static: true }], ngImport: i0, template: `
|
|
550
|
+
Prompting.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Prompting, deps: [{ token: i2.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
|
|
551
|
+
Prompting.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: Prompting, selector: "app-sprprompting", inputs: { projectName: "projectName", startStopSignalState: "startStopSignalState", promptItem: "promptItem", showPrompt: "showPrompt", items: "items", selectedItemIdx: "selectedItemIdx", transportActions: "transportActions", enableDownload: "enableDownload", audioSignalCollapsed: "audioSignalCollapsed", displayAudioClip: "displayAudioClip", playStartAction: "playStartAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", playStopAction: "playStopAction" }, outputs: { onItemSelect: "onItemSelect", onNextItem: "onNextItem", onPrevItem: "onPrevItem" }, viewQueries: [{ propertyName: "simpleTrafficLight", first: true, predicate: SimpleTrafficLight, descendants: true, static: true }, { propertyName: "audioDisplay", first: true, predicate: AudioDisplay, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
548
552
|
|
|
549
553
|
<app-simpletrafficlight [status]="startStopSignalState"></app-simpletrafficlight>
|
|
550
554
|
<app-sprpromptingcontainer [projectName]="projectName" [promptItem]="promptItem" [showPrompt]="showPrompt"
|
|
551
555
|
[itemCount]="items?.length" [selectedItemIdx]="selectedItemIdx"
|
|
552
556
|
[transportActions]="transportActions"></app-sprpromptingcontainer>
|
|
553
|
-
<app-sprprogress
|
|
557
|
+
<app-sprprogress *ngIf="!screenXs" [items]="items" [selectedItemIdx]="selectedItemIdx"
|
|
554
558
|
(onRowSelect)="itemSelect($event)"></app-sprprogress>
|
|
555
|
-
<div
|
|
559
|
+
<div #asCt [class.active]="!audioSignalCollapsed && !screenXs">
|
|
556
560
|
|
|
557
561
|
<app-audiodisplay #audioSignalContainer [class.active]="!audioSignalCollapsed"
|
|
558
562
|
[audioClip]="displayAudioClip"
|
|
@@ -566,7 +570,7 @@ Prompting.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14
|
|
|
566
570
|
|
|
567
571
|
|
|
568
572
|
|
|
569
|
-
`, isInline: true, styles: [":host{position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;min-height:0px;display:flex;flex-direction:row;flex-wrap:nowrap}\n", "app-simpletrafficlight{margin:10px;min-height:0px;z-index:3}\n", "app-sprprogress{z-index:3}\n", "div{display:none;position:absolute;z-index:5}\n", "div.active{display:flex;position:absolute;bottom:0px;height:90%;width:100%;overflow:hidden;padding:0;z-index:5;box-sizing:border-box;background-color:#0000}\n"], dependencies: [{ kind: "directive", type:
|
|
573
|
+
`, isInline: true, styles: [":host{position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;min-height:0px;display:flex;flex-direction:row;flex-wrap:nowrap}\n", "app-simpletrafficlight{margin:10px;min-height:0px;z-index:3}\n", "app-sprprogress{z-index:3}\n", "div{display:none;position:absolute;z-index:5}\n", "div.active{display:flex;position:absolute;bottom:0px;height:90%;width:100%;overflow:hidden;padding:0;z-index:5;box-sizing:border-box;background-color:#0000}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.AudioDisplay, selector: "app-audiodisplay", inputs: ["playStartAction", "playStopAction", "playSelectionAction", "autoPlayOnSelectToggleAction", "audioData", "audioClip"] }, { kind: "component", type: i5.Progress, selector: "app-sprprogress", inputs: ["items", "selectedItemIdx", "enableDownload"], outputs: ["onRowSelect", "rowSelect", "onShowDoneAction", "clickDone", "onDownloadDoneAction", "clickDownloadDone"] }, { kind: "component", type: i6.SimpleTrafficLight, selector: "app-simpletrafficlight", inputs: ["status"] }, { kind: "component", type: PromptingContainer, selector: "app-sprpromptingcontainer", inputs: ["projectName", "promptItem", "showPrompt", "selectedItemIdx", "itemCount", "transportActions"] }] });
|
|
570
574
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Prompting, decorators: [{
|
|
571
575
|
type: Component,
|
|
572
576
|
args: [{ selector: 'app-sprprompting', template: `
|
|
@@ -575,9 +579,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
575
579
|
<app-sprpromptingcontainer [projectName]="projectName" [promptItem]="promptItem" [showPrompt]="showPrompt"
|
|
576
580
|
[itemCount]="items?.length" [selectedItemIdx]="selectedItemIdx"
|
|
577
581
|
[transportActions]="transportActions"></app-sprpromptingcontainer>
|
|
578
|
-
<app-sprprogress
|
|
582
|
+
<app-sprprogress *ngIf="!screenXs" [items]="items" [selectedItemIdx]="selectedItemIdx"
|
|
579
583
|
(onRowSelect)="itemSelect($event)"></app-sprprogress>
|
|
580
|
-
<div
|
|
584
|
+
<div #asCt [class.active]="!audioSignalCollapsed && !screenXs">
|
|
581
585
|
|
|
582
586
|
<app-audiodisplay #audioSignalContainer [class.active]="!audioSignalCollapsed"
|
|
583
587
|
[audioClip]="displayAudioClip"
|
|
@@ -592,7 +596,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
592
596
|
|
|
593
597
|
|
|
594
598
|
`, styles: [":host{position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;min-height:0px;display:flex;flex-direction:row;flex-wrap:nowrap}\n", "app-simpletrafficlight{margin:10px;min-height:0px;z-index:3}\n", "app-sprprogress{z-index:3}\n", "div{display:none;position:absolute;z-index:5}\n", "div.active{display:flex;position:absolute;bottom:0px;height:90%;width:100%;overflow:hidden;padding:0;z-index:5;box-sizing:border-box;background-color:#0000}\n"] }]
|
|
595
|
-
}], propDecorators: { simpleTrafficLight: [{
|
|
599
|
+
}], ctorParameters: function () { return [{ type: i2.BreakpointObserver }]; }, propDecorators: { simpleTrafficLight: [{
|
|
596
600
|
type: ViewChild,
|
|
597
601
|
args: [SimpleTrafficLight, { static: true }]
|
|
598
602
|
}], audioDisplay: [{
|
|
@@ -633,4 +637,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
633
637
|
}], onPrevItem: [{
|
|
634
638
|
type: Output
|
|
635
639
|
}] } });
|
|
636
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3NwZWVjaHJlY29yZGVyL3Nlc3Npb24vcHJvbXB0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFlBQVksRUFJWixXQUFXLEVBRVosTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFNNUUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7O0FBd0J2RCxNQUFNLE9BQU8sZUFBZTtJQUsxQixXQUFXO1FBQ1QsSUFBSSxLQUFLLEdBQVEsRUFBRSxDQUFDO1FBQ3BCLElBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFDO1lBQ3hDLEtBQUssR0FBQyxLQUFLLEdBQUMsSUFBSSxDQUFDLGVBQWUsR0FBQyxHQUFHLEdBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3pEO1FBQ0QsSUFBRyxJQUFJLENBQUMsZUFBZSxFQUFDO1lBQ3RCLEtBQUssR0FBQyxLQUFLLEdBQUMsSUFBSSxHQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7U0FDdkM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OzZHQWRVLGVBQWU7aUdBQWYsZUFBZSx1S0FoQmhCOzs7R0FHVDs0RkFhVSxlQUFlO2tCQXBCM0IsU0FBUzsrQkFFRSxxQkFBcUIsWUFFckI7OztHQUdUOzhCQWNRLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLOztBQStDUixNQUFNLE9BQU8sUUFBUTtJQWFuQixZQUFvQixL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O3NCQUFiLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLDRCQUE0QjtzQkFBcEMsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgT25Jbml0LFxyXG4gIFJlbmRlcmVyMixcclxuICBIb3N0QmluZGluZyxcclxuICBBZnRlckNvbnRlbnRDaGVja2VkXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7U2ltcGxlVHJhZmZpY0xpZ2h0fSBmcm9tIFwiLi4vc3RhcnRzdG9wc2lnbmFsL3VpL3NpbXBsZXRyYWZmaWNsaWdodFwiO1xyXG5pbXBvcnQge1N0YXRlIGFzIFN0YXJ0U3RvcFNpZ25hbFN0YXRlfSBmcm9tIFwiLi4vc3RhcnRzdG9wc2lnbmFsL3N0YXJ0c3RvcHNpZ25hbFwiO1xyXG5pbXBvcnQge0l0ZW19IGZyb20gXCIuL2l0ZW1cIjtcclxuaW1wb3J0IHtCbG9jaywgVGV4dCwgTWVkaWFpdGVtLCBQcm9tcHRJdGVtfSBmcm9tIFwiLi4vc2NyaXB0L3NjcmlwdFwiO1xyXG5pbXBvcnQge1RyYW5zcG9ydEFjdGlvbnN9IGZyb20gXCIuL2NvbnRyb2xwYW5lbFwiO1xyXG5pbXBvcnQge0FjdGlvbn0gZnJvbSBcIi4uLy4uL2FjdGlvbi9hY3Rpb25cIjtcclxuaW1wb3J0IHtBdWRpb0Rpc3BsYXl9IGZyb20gXCIuLi8uLi9hdWRpby9hdWRpb19kaXNwbGF5XCI7XHJcbmltcG9ydCB7UHJvamVjdFNlcnZpY2V9IGZyb20gXCIuLi9wcm9qZWN0L3Byb2plY3Quc2VydmljZVwiO1xyXG5pbXBvcnQge0F1ZGlvQ2xpcH0gZnJvbSBcIi4uLy4uL2F1ZGlvL3BlcnNpc3RvclwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblxyXG4gIHNlbGVjdG9yOiAnc3ByLXJlY2luc3RydWN0aW9ucycsXHJcblxyXG4gIHRlbXBsYXRlOiBgXHJcblxyXG4gICAge3tkaXNwbGF5VGV4dCgpfX1cclxuICBgLFxyXG4gIHN0eWxlczogW2A6aG9zdCB7XHJcblxyXG4gICAganVzdGlmeS1jb250ZW50OiBsZWZ0OyAvKiBhbGlnbiBob3Jpem9udGFsIGNlbnRlciAqL1xyXG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IC8qIGFsaWduIHZlcnRpY2FsICBjZW50ZXIgKi9cclxuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgIGZvbnQtc2l6ZTogMWVtO1xyXG4gICAgZmxleDogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gIH1cclxuICBgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVjaW5zdHJ1Y3Rpb25zIHtcclxuICBASW5wdXQoKSByZWNpbnN0cnVjdGlvbnM6IHN0cmluZ3xudWxsfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtSWR4OiBudW1iZXJ8bnVsbHx1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgaXRlbUNvdW50OiBudW1iZXJ8dW5kZWZpbmVkO1xyXG5cclxuICBkaXNwbGF5VGV4dCgpOnN0cmluZ3tcclxuICAgIGxldCByaVR4dDpzdHJpbmc9Jyc7XHJcbiAgICBpZih0aGlzLml0ZW1Db3VudCAmJiB0aGlzLnNlbGVjdGVkSXRlbUlkeCl7XHJcbiAgICAgIHJpVHh0PXJpVHh0K3RoaXMuc2VsZWN0ZWRJdGVtSWR4KycvJysodGhpcy5pdGVtQ291bnQtMSk7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLnJlY2luc3RydWN0aW9ucyl7XHJcbiAgICAgIHJpVHh0PXJpVHh0Kyc6ICcrdGhpcy5yZWNpbnN0cnVjdGlvbnM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmlUeHQ7XHJcbiAgfVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHJcbiAgc2VsZWN0b3I6ICdhcHAtc3BycHJvbXB0ZXInLFxyXG5cclxuICB0ZW1wbGF0ZTogYFxyXG5cclxuICAgIDwhLS08bmctdGVtcGxhdGUgW25nSWZdPVwidGV4dFwiPnt7dGV4dH19PC9uZy10ZW1wbGF0ZT4tLT5cclxuICAgIDwhLS0gPGltZyAqbmdJZj1cInNyY1wiICNwcm9tcHRJbWFnZSBbc3JjXT1cInNyY1VybCgpXCIgW2hlaWdodF09XCJwcm9tcHRlckhlaWdodC0yMFwiIC8+IC0tPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYDpob3N0IHtcclxuXHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgLyogYWxpZ24gaG9yaXpvbnRhbCBjZW50ZXIgKi9cclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IC8qIGFsaWduIHZlcnRpY2FsICBjZW50ZXIgKi9cclxuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgLyogZm9udC1zaXplOiAyZW07ICovXHJcbiAgICBsaW5lLWhlaWdodDogMS4yZW07XHJcbiAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIC8qIFVzZSBvbmx5IG5hdHVyYWwgc2l6ZSBvZiB0aGUgcHJvbXB0ICovXHJcbiAgICAvKiBUaGUgcHJvbXB0ZXIgY29tcG5lbnQgdGhlbiBldHMgYWxpZ25lZCB2ZXJ0aWNhbGx5IGNlbnRlcmVkICovXHJcbiAgICBmbGV4OiAwIDE7XHJcblxyXG4gIH1gLCBgOmhvc3QoLmZpbGwpIHtcclxuICAgIC8qIFVzZSBhbGwgc3BhY2UgdG8gc2NhbGUgaW1hZ2VzICovXHJcbiAgICBmbGV4OiAzO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xyXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgLyogQSBzZXBhcmF0ZSBmbGV4IGNvbnRhaW5lciBtaWdodCBiZSBuZWNlc3NheXIgdG8gYWxpZ2huIGNlbnRlcmVkICovXHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyAvKiBUT0RPIGRvZXMgbm90IHdvcmssIGltYWdlIGlzIG5vdCB2ZXJ0aWNhbGx5IGNlbnRlcmVkICovXHJcbiAgfWBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9tcHRlciB7XHJcbiAgQElucHV0KCkgcHJvamVjdE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBwcml2YXRlIF9wcm9tcHRNZWRpYUl0ZW1zOiBBcnJheTxNZWRpYWl0ZW0+fG51bGx8dW5kZWZpbmVkPW51bGxcclxuXHJcbiAgQElucHV0KCkgcHJvbXB0ZXJIZWlnaHQ6IG51bWJlcj0wO1xyXG4gIHByaXZhdGUgX3RleHQ6IHN0cmluZ3x1bmRlZmluZWR8bnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfc3JjOiBzdHJpbmd8dW5kZWZpbmVkfG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX2Jsb2NrczogQXJyYXk8QmxvY2s+fHVuZGVmaW5lZDtcclxuICBtaW1ldHlwZSE6IHN0cmluZztcclxuICBwcml2YXRlIGN1cnJQcm9tcHRDaGlsZDogSFRNTEVsZW1lbnR8bnVsbCA9IG51bGw7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZmlsbCcpIHB1YmxpYyBwcm9tcHRlclN0eWxlRmlsbCA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgcHJvamVjdFNlcnZpY2U6IFByb2plY3RTZXJ2aWNlKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0IHRleHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGV4dDtcclxuICB9XHJcblxyXG4gIGdldCBzcmMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3JjO1xyXG4gIH1cclxuXHJcbiAgc3JjVXJsKCk6IHN0cmluZ3xudWxse1xyXG4gICAgaWYgKHRoaXMucHJvamVjdE5hbWUgJiYgdGhpcy5fc3JjKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3RSZXNvdXJjZVVybCh0aGlzLnByb2plY3ROYW1lLCB0aGlzLl9zcmMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAgIHdpZHRoKCk6bnVtYmVyfG51bGx7XHJcbiAgICAgIGlmKHRoaXMuZWxSZWYpe1xyXG4gICAgICAgIGlmKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCl7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGhcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBoZWlnaHQoKTpudW1iZXJ8bnVsbHtcclxuICAgICAgICBpZih0aGlzLmVsUmVmKXtcclxuICAgICAgICAgICAgaWYodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50KXtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhcHBlbmRUZXh0RWxlbWVudChwYXJlbnRFbDpIVE1MRWxlbWVudCx0eHQ6VGV4dCl7XHJcbiAgICAgIGxldCB0OiBzdHJpbmcgPSA8c3RyaW5nPnR4dC50ZXh0XHJcbiAgICAgIGxldCB0eHROZCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dCh0KVxyXG4gICAgICBpZih0eHQuZGVjb3JhdGlvbiB8fCB0eHQuY29sb3Ipe1xyXG4gICAgICAgIGxldCBzcEVsID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJylcclxuICAgICAgICBsZXQgc3R5bGVTdHI9JydcclxuICAgICAgICBpZih0eHQuZGVjb3JhdGlvbikge1xyXG4gICAgICAgICAgc3R5bGVTdHIgPSBzdHlsZVN0ciArJ3RleHQtZGVjb3JhdGlvbjogJyArIHR4dC5kZWNvcmF0aW9uKyc7J1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0eHQuY29sb3Ipe1xyXG4gICAgICAgICAgc3R5bGVTdHIgPSBzdHlsZVN0ciArJ2NvbG9yOiAnICsgdHh0LmNvbG9yKyc7J1xyXG4gICAgICAgIH1cclxuICAgICAgICBzcEVsLnN0eWxlPXN0eWxlU3RyXHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChwYXJlbnRFbCwgc3BFbClcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHNwRWwsIHR4dE5kKVxyXG4gICAgICB9ZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChwYXJlbnRFbCwgdHh0TmQpXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IHByb21wdE1lZGlhSXRlbXMocE1pczogQXJyYXk8TWVkaWFpdGVtPnxudWxsKSB7XHJcbiAgICB0aGlzLl9wcm9tcHRNZWRpYUl0ZW1zID0gcE1pc1xyXG4gICAgaWYgKHRoaXMuY3VyclByb21wdENoaWxkICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMuY3VyclByb21wdENoaWxkKVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX3Byb21wdE1lZGlhSXRlbXMgJiYgdGhpcy5fcHJvbXB0TWVkaWFJdGVtcy5sZW5ndGggPT0gMSkge1xyXG4gICAgICBsZXQgbWkgPSB0aGlzLl9wcm9tcHRNZWRpYUl0ZW1zWzBdXHJcbiAgICAgIHRoaXMubWltZXR5cGUgPSAndGV4dC9wbGFpbidcclxuICAgICAgaWYgKG1pLm1pbWV0eXBlKSB7XHJcbiAgICAgICAgdGhpcy5taW1ldHlwZSA9IG1pLm1pbWV0eXBlLnRyaW0oKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5taW1ldHlwZSA9PT0gJ3RleHQvcGxhaW4nKSB7XHJcbiAgICAgICAgdGhpcy5fdGV4dCA9IG1pLnRleHRcclxuICAgICAgICB0aGlzLl9zcmMgPSBudWxsO1xyXG4gICAgICAgIGxldCBwclR4dD0nJztcclxuICAgICAgICBpZih0aGlzLl90ZXh0KXtcclxuICAgICAgICAgIHByVHh0PXRoaXMuX3RleHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY3VyclByb21wdENoaWxkID0gdGhpcy5yZW5kZXJlci5jcmVhdGVUZXh0KHByVHh0KTtcclxuICAgICAgICB0aGlzLnByb21wdGVyU3R5bGVGaWxsID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMuY3VyclByb21wdENoaWxkKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLm1pbWV0eXBlID09PSAndGV4dC94LXByb21wdCcpIHtcclxuICAgICAgICAvL3RoaXMucmVuZGVyaW5nPXRydWVcclxuICAgICAgICB0aGlzLl90ZXh0PW51bGw7XHJcbiAgICAgICAgdGhpcy5fc3JjPW51bGw7XHJcbiAgICAgICAgdGhpcy5fYmxvY2tzPW5ldyBBcnJheTxCbG9jaz4oKTtcclxuICAgICAgICBsZXQgcGQ9bWkucHJvbXB0RG9jXHJcbiAgICAgICAgaWYocGQpe1xyXG4gICAgICAgICAgbGV0IHBkQm9keT1wZC5ib2R5XHJcbiAgICAgICAgICBpZihwZEJvZHkpe1xyXG4gICAgICAgICAgICB0aGlzLl9ibG9ja3M9cGRCb2R5LmJsb2NrcztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucHJvbXB0ZXJTdHlsZUZpbGwgPSBmYWxzZVxyXG4gICAgICAgIHRoaXMuY3VyclByb21wdENoaWxkID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKVxyXG4gICAgICAgIGlmKHRoaXMuX2Jsb2Nrcykge1xyXG4gICAgICAgICAgZm9yIChsZXQgYmkgPSAwOyBiaSA8IHRoaXMuX2Jsb2Nrcy5sZW5ndGg7IGJpKyspIHtcclxuICAgICAgICAgICAgbGV0IGJsID0gdGhpcy5fYmxvY2tzW2JpXVxyXG4gICAgICAgICAgICBpZiAoJ3AnID09PSBibC50eXBlKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHBCbEVsID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdwJylcclxuICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuY3VyclByb21wdENoaWxkLCBwQmxFbClcclxuICAgICAgICAgICAgICBmb3IgKGxldCB0aSA9IDA7IHRpIDwgYmwudGV4dHMubGVuZ3RoOyB0aSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdHh0ID0gYmwudGV4dHNbdGldXHJcbiAgICAgICAgICAgICAgICBpZiAodHh0KSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICgndGV4dCcgPT09IHR4dC50eXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRUZXh0RWxlbWVudChwQmxFbCwgdHh0KVxyXG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdmb250JyA9PT0gdHh0LnR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgc3BFbCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc3BhbicpXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0eWxlU3RyID0gJydcclxuICAgICAgICAgICAgICAgICAgICBpZiAodHh0LnN0eWxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZVN0ciA9IHN0eWxlU3RyICsgJ2ZvbnQtc3R5bGU6ICcgKyB0eHQuc3R5bGUgKyAnOydcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR4dC5zaXplKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZVN0ciA9IHN0eWxlU3RyICsgJ2ZvbnQtc2l6ZTogJyArIHR4dC5zaXplICsgJzsnXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eHQud2VpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZVN0ciA9IHN0eWxlU3RyICsgJ2ZvbnQtd2VpZ2h0OiAnICsgdHh0LndlaWdodCArICc7J1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBzcEVsLnN0eWxlID0gc3R5bGVTdHJcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHBCbEVsLCBzcEVsKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kVGV4dEVsZW1lbnQoc3BFbCwgPFRleHQ+dHh0LnRleHQpXHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2xpbmVicmVhaycgPT09IHR4dC50eXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGJyRWwgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2JyJylcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHBCbEVsLCBickVsKVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLmN1cnJQcm9tcHRDaGlsZClcclxuICAgICAgICAvL3RoaXMucmVuZGVyaW5nPWZhbHNlXHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5taW1ldHlwZS5zdGFydHNXaXRoKCdpbWFnZScpKSB7XHJcbiAgICAgICAgdGhpcy5fdGV4dCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fc3JjID0gbWkuc3JjXHJcbiAgICAgICAgbGV0IHByb21wdEltYWdlID0gbmV3IEltYWdlKClcclxuXHJcbiAgICAgICAgdGhpcy5jdXJyUHJvbXB0Q2hpbGQgPSBwcm9tcHRJbWFnZVxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLmN1cnJQcm9tcHRDaGlsZClcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuY3VyclByb21wdENoaWxkLCBcIm1heC13aWR0aFwiLCBcIjEwMCVcIilcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuY3VyclByb21wdENoaWxkLCBcIm1heC1oZWlnaHRcIiwgXCIxMDAlXCIpXHJcbiAgICAgICAgdGhpcy5wcm9tcHRlclN0eWxlRmlsbCA9IHRydWVcclxuICAgICAgICAvLyBUT0RPIHZlcnRpY2FsIGFsaWdubWVudFxyXG4gICAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzcyNzMzMzgvaG93LXRvLXZlcnRpY2FsbHktYWxpZ24tYW4taW1hZ2UtaW5zaWRlLWEtZGl2XHJcblxyXG4gICAgICAgIC8vY29uc29sZS5sb2cocHJvbXB0SW1hZ2UubmF0dXJhbFdpZHRoICsgXCJ4XCIrcHJvbXB0SW1hZ2UubmF0dXJhbEhlaWdodCk7XHJcbiAgICAgICAgcHJvbXB0SW1hZ2Uub25sb2FkID0gKGV2OiBFdmVudCkgPT4ge31cclxuICAgICAgICBsZXQgc3JjVXJsPXRoaXMuc3JjVXJsKCk7XHJcbiAgICAgICAgaWYoc3JjVXJsKSB7XHJcbiAgICAgICAgICBwcm9tcHRJbWFnZS5zcmMgPSBzcmNVcmw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fdGV4dCA9IG51bGxcclxuICAgICAgdGhpcy5fc3JjID0gbnVsbFxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFZJUlRVQUxfSEVJR0hUID0gNjAwO1xyXG5leHBvcnQgY29uc3QgREVGQVVMVF9QUk9NUFRfRk9OVFNJWkUgPSA0ODtcclxuZXhwb3J0IGNvbnN0IE1JTl9GT05UX1NJWkU9NjtcclxuZXhwb3J0IGNvbnN0IEZBTExCQUNLX0RFRl9VU0VSX0FHRU5UX0ZPTlRfU0laRSA9IDE0O1xyXG5cclxuQENvbXBvbmVudCh7XHJcblxyXG4gIHNlbGVjdG9yOiAnYXBwLXNwcnByb21wdGNvbnRhaW5lcicsXHJcblxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8YXBwLXNwcnByb21wdGVyICNwcm9tcHRlciBbcHJvamVjdE5hbWVdPVwicHJvamVjdE5hbWVcIiBbcHJvbXB0TWVkaWFJdGVtc109XCJtZWRpYWl0ZW1zXCIgW3N0eWxlLmZvbnQtc2l6ZV09XCJmb250U2l6ZSsncHgnXCIgW3N0eWxlLnZpc2liaWxpdHldPVwicHJEaXNwbGF5XCIgW3Byb21wdGVySGVpZ2h0XT1cInByb21wdGVySGVpZ2h0XCI+PC9hcHAtc3BycHJvbXB0ZXI+XHJcbiAgYFxyXG4gICxcclxuICBzdHlsZXM6IFtgOmhvc3Qge1xyXG5cclxuICAgIGZsZXg6IDM7IC8qIHRoZSBjb250YWluZXIgY29uc3VtZXMgYWxsIGF2YWlsYWJsZSBzcGFjZSAqL1xyXG4gICAgcGFkZGluZzogMTBwdDtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG1heC1oZWlnaHQ6IDEwMCU7XHJcblxyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IC8qIGFsaWduIGhvcml6b250YWwgY2VudGVyKi9cclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IC8qIGFsaWduIHZlcnRpY2FsIGNlbnRlciAqL1xyXG4gICAgYmFja2dyb3VuZDogd2hpdGU7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIG1pbi1oZWlnaHQ6IDBweDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gIH1cclxuICBgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvbXB0Q29udGFpbmVyIGltcGxlbWVudHMgT25Jbml0LEFmdGVyQ29udGVudENoZWNrZWQge1xyXG4gIEBJbnB1dCgpIHByb2plY3ROYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBfbWVkaWFpdGVtczogQXJyYXk8TWVkaWFpdGVtPnxudWxsPW51bGw7XHJcblxyXG4gIHByb21wdGVySGVpZ2h0OiBudW1iZXIgPSBWSVJUVUFMX0hFSUdIVFxyXG4gIGZvbnRTaXplITogbnVtYmVyO1xyXG4gIGZvbnRTaXplQ2hhbmdlPWZhbHNlXHJcbiAgY29udGVudENoZWNrZWQ9ZmFsc2U7XHJcbiAgcHJEaXNwbGF5PSdoaWRkZW4nO1xyXG4gIGRlZmF1bHRTdHlsZSE6IENTU1N0eWxlRGVjbGFyYXRpb247XHJcbiAgZGVmYXVsdEZvbnRTaXplUHghOiBudW1iZXI7XHJcblxyXG4gIGF1dG9Gb250U2l6ZT1mYWxzZTtcclxuICBAVmlld0NoaWxkKFByb21wdGVyLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcm9tcHRlciE6IFByb21wdGVyO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsUmVmOkVsZW1lbnRSZWYpe31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgLy8gZmFsbGJhY2tcclxuICAgIHRoaXMuZGVmYXVsdEZvbnRTaXplUHggPSBGQUxMQkFDS19ERUZfVVNFUl9BR0VOVF9GT05UX1NJWkU7XHJcbiAgICAvLyB0cnkgdG8gcGFyc2UgZGVmYXVsdCB1c2VyIGFnZW50IGZvbnQgc2l6ZSAobm8gY29tbWVudCBhYm91dCBET00gQVBJIGRlc2lnbiA7KSApXHJcbiAgICB0aGlzLmRlZmF1bHRTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgICBsZXQgZGVmRm9udFNpemVTdHIgPSB0aGlzLmRlZmF1bHRTdHlsZS5mb250U2l6ZTtcclxuICAgIGlmIChkZWZGb250U2l6ZVN0cikge1xyXG4gICAgICBkZWZGb250U2l6ZVN0ciA9IGRlZkZvbnRTaXplU3RyLnRyaW0oKTtcclxuICAgICAgaWYgKGRlZkZvbnRTaXplU3RyLmVuZHNXaXRoKCdweCcpKSB7XHJcbiAgICAgICAgLy8gcGFyc2VGbG9hdCBpZ25vcmVzIG5vbiBudW1iZXIgY2hhcmFjdGVycyBhdCB0aGUgZW5kIChhZ2FpbiBubyBjb21tZW50IDspIClcclxuICAgICAgICB0aGlzLmRlZmF1bHRGb250U2l6ZVB4ID0gcGFyc2VGbG9hdChkZWZGb250U2l6ZVN0cik7XHJcbiAgICAgICAgICAvL2NvbnNvbGUuaW5mbyhcIkRlZmF1bHQgZm9udCBzaXplOiBcIit0aGlzLmRlZmF1bHRGb250U2l6ZVB4KVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbnRlbnRDaGVja2VkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XHJcbiAgICBpZih0aGlzLmF1dG9Gb250U2l6ZSkge1xyXG4gICAgICBpZiAodGhpcy5mb250U2l6ZUNoYW5nZSkge1xyXG4gICAgICAgIC8vY29uc29sZS5sb2coXCJuZ2FmdGVyY29udGVudGNoZWNrZWQsIGNhbGwgZm9udFNpemVUb0ZpdCBcIik7XHJcbiAgICAgICAgLy8gY2hlY2sgcHJvbXB0ZXIgc2l6ZSBhZ2FpblxyXG4gICAgICAgIHRoaXMuZm9udFNpemVUb0ZpdCgpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gZm9udCBzaXplIHdhcyBjaGVja2VkLCBidXQgd2UgbmVlZCB0byBjaGVjayBhZ2FpbiBhZnRlciBhbmd1bGFyIGNvbnRlbnQgY2hlY2tcclxuICAgICAgICBpZiAoIXRoaXMuY29udGVudENoZWNrZWQpIHtcclxuICAgICAgICAgIHRoaXMuY29udGVudENoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhcIm5nYWZ0ZXJjb250ZW50Y2hlY2tlZCwgbm90IGZvbnQgc2l6ZSBjaGFuZ2VkLCBjYWxsIFwiKTtcclxuICAgICAgICAgIHRoaXMuZm9udFNpemVUb0ZpdCgpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgQElucHV0KCkgc2V0IG1lZGlhaXRlbXMobWVkaWFpdGVtczpBcnJheTxNZWRpYWl0ZW0+fG51bGwpe1xyXG5cclxuICAgIHRoaXMuX21lZGlhaXRlbXMgPSBtZWRpYWl0ZW1zXHJcblxyXG4gICAgbGV0IG1pbWV0eXBlOnN0cmluZ3xudWxsPW51bGw7XHJcbiAgICBpZiAodGhpcy5fbWVkaWFpdGVtcyAmJiB0aGlzLl9tZWRpYWl0ZW1zLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgIGxldCBtaSA9IHRoaXMuX21lZGlhaXRlbXNbMF1cclxuICAgICAgbWltZXR5cGUgPSAndGV4dC9wbGFpbidcclxuICAgICAgaWYgKG1pLm1pbWV0eXBlKSB7XHJcbiAgICAgICAgbWltZXR5cGUgPSBtaS5taW1ldHlwZS50cmltKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYobWkuZGVmYXVsdFZpcnR1YWxWaWV3Qm94KXtcclxuICAgICAgICB0aGlzLnByb21wdGVySGVpZ2h0PW1pLmRlZmF1bHRWaXJ0dWFsVmlld0JveC5oZWlnaHRcclxuICAgICAgfVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMucHJvbXB0ZXJIZWlnaHQ9VklSVFVBTF9IRUlHSFRcclxuICAgIH1cclxuICAgIHRoaXMucHJvbXB0ZXIucHJvbXB0TWVkaWFJdGVtcz10aGlzLl9tZWRpYWl0ZW1zXHJcbiAgICB0aGlzLmF1dG9Gb250U2l6ZT0obWltZXR5cGUhPW51bGwgJiYgbWltZXR5cGUuc3RhcnRzV2l0aCgndGV4dC8nKSk7XHJcbiAgICBpZih0aGlzLmF1dG9Gb250U2l6ZSl7XHJcbiAgICAgICAgdGhpcy5mb250U2l6ZUNoYW5nZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jb250ZW50Q2hlY2tlZCA9IGZhbHNlXHJcbiAgICAgICAgdGhpcy5wckRpc3BsYXkgPSAnaGlkZGVuJ1xyXG4gICAgICAgIHRoaXMubGF5b3V0KClcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IG1lZGlhaXRlbXMoKTpBcnJheTxNZWRpYWl0ZW0+fG51bGx7XHJcbiAgICAgIHJldHVybiB0aGlzLl9tZWRpYWl0ZW1zO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBvblJlc2l6ZShldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIC8vY29uc29sZS5kZWJ1ZyhcIm9ucmVzaXplLCBjYWxsIGZvbnRTaXplVG9GaXQgaG9vayBcIik7XHJcbiAgICB0aGlzLmxheW91dCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsYXlvdXQoKSB7XHJcbiAgICBpZih0aGlzLmF1dG9Gb250U2l6ZSAmJiB0aGlzLmVsUmVmKSB7XHJcblxyXG4gICAgICB0aGlzLmZvbnRTaXplQ2hhbmdlPXRydWU7XHJcbiAgICAgIHRoaXMuY29udGVudENoZWNrZWQgPSBmYWxzZVxyXG4gICAgICB0aGlzLnByRGlzcGxheSA9ICdoaWRkZW4nXHJcbiAgICAgIGxldCBlbEggPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgICAvLyBwcm9tcHQgdGV4dCBmb250IHNpemUgc2hvdWxkIHNjYWxlIGFjY29yZGluZyB0byBwcm9tcHQgY29udGFpbmVyIGhlaWdodFxyXG4gICAgICBsZXQgc2NhbGVkU2l6ZSA9IE1hdGgucm91bmQoKGVsSCAvIHRoaXMucHJvbXB0ZXJIZWlnaHQpICogREVGQVVMVF9QUk9NUFRfRk9OVFNJWkUpO1xyXG5cclxuICAgICAgLy8gbWluIHByb21wdCBmb250IHNpemUgaXMgZGVmYXVsdCB1c2VyIGFnZW50IHNpemVcclxuICAgICAgbGV0IG5ld1NpemUgPSBNYXRoLm1heChzY2FsZWRTaXplLCB0aGlzLmRlZmF1bHRGb250U2l6ZVB4KTtcclxuICAgICAgaWYgKHRoaXMuZm9udFNpemUgIT09IG5ld1NpemUpIHtcclxuICAgICAgICB0aGlzLmZvbnRTaXplID0gbmV3U2l6ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy9jb25zb2xlLmxvZyhcImxheW91dCwgY2FsbCBmb250U2l6ZVRvRml0IGhvb2sgXCIpO1xyXG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB0aGlzLmZvbnRTaXplVG9GaXQoKSlcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBmb250U2l6ZVRvRml0KCl7XHJcbiAgICAgIGlmKHRoaXMucHJvbXB0ZXIpIHtcclxuICAgICAgICBsZXQgcFc9dGhpcy5wcm9tcHRlci53aWR0aCgpO1xyXG4gICAgICAgIGxldCBwSD10aGlzLnByb21wdGVyLmhlaWdodCgpO1xyXG4gICAgICAgIGlmICh0aGlzLl9tZWRpYWl0ZW1zICYmIHRoaXMuZWxSZWYgJiYgcFcgJiYgcEgpIHtcclxuICAgICAgICAgIGxldCBuRWwgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnRcclxuICAgICAgICAgIC8vY29uc29sZS5sb2coXCJwcm9tcHRlcjogXCIgKyB0aGlzLnByb21wdGVyLndpZHRoKCkgKyBcInhcIiArIHRoaXMucHJvbXB0ZXIuaGVpZ2h0KCkrIFwiIGZvbnQgc2l6ZTogXCIrdGhpcy5mb250U2l6ZSlcclxuICAgICAgICAgIGlmICh0aGlzLmZvbnRTaXplID49IE1JTl9GT05UX1NJWkUgJiYgKHBXID4gbkVsLm9mZnNldFdpZHRoIHx8IHBIID4gbkVsLm9mZnNldEhlaWdodCkpIHtcclxuICAgICAgICAgICAgLy8gcHJvbXB0ZXIgb3ZlcnNpemVzIHByb21wdGVyIGNvbnRhaW5lci4gRGVjcmVhc2UgZm9udCBzaXplLlxyXG4gICAgICAgICAgICAvLyBzZXQgaW52aXNpYmxlIGR1cmluZyBmb250IHNpemUgY2hlY2tzXHJcbiAgICAgICAgICAgIHRoaXMucHJEaXNwbGF5ID0gJ2hpZGRlbidcclxuICAgICAgICAgICAgLy8gZGVjcmVhc2UgZm9udCBzaXplXHJcbiAgICAgICAgICAgIHRoaXMuZm9udFNpemUgPSB0aGlzLmZvbnRTaXplIC0gMVxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkRlY3JlYXNlZCBmb250IHNpemU6IFwiK3RoaXMuZm9udFNpemUgKVxyXG4gICAgICAgICAgICAvLyBTZXQgZmxhZ3NcclxuICAgICAgICAgICAgdGhpcy5mb250U2l6ZUNoYW5nZSA9IHRydWVcclxuICAgICAgICAgICAgdGhpcy5jb250ZW50Q2hlY2tlZCA9IGZhbHNlXHJcbiAgICAgICAgICAgIC8vIGhvb2sgdGhlIG5leHQgY2hlY2tcclxuICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdGhpcy5mb250U2l6ZVRvRml0KCkpXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBwcm9tcHRlciBmaXRzIGluICBwcm9tcHRlciBjb250YWluZXIsIGZvbnQgc2l6ZSBzaG91bGQgYmUgZmluZVxyXG5cclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInByRGlzcGxheTogXCIrdGhpcy5wckRpc3BsYXkpXHJcblxyXG4gICAgICAgICAgICAvL2lmKHRoaXMuY29udGVudENoZWNrZWQgJiYgISB0aGlzLmZvbnRTaXplQ2hhbmdlKSB7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJEaXNwbGF5IVwiKVxyXG4gICAgICAgICAgICAvLyBzZXQgcHJvbXB0ZXIgdmlzaWJsZSBub3dcclxuICAgICAgICAgICAgdGhpcy5wckRpc3BsYXkgPSAndmlzaWJsZSdcclxuICAgICAgICAgICAgLy99XHJcbiAgICAgICAgICAgIHRoaXMuZm9udFNpemVDaGFuZ2UgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhcIlByb21wdCB0ZXh0IHdpZHRoOiBcIit0ZXh0U2l6ZS53aWR0aCtcIiBcIit0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgrXCJ4XCIrdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodClcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2FwcC1zcHJwcm9tcHRpbmdjb250YWluZXInLFxyXG5cclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPHNwci1yZWNpbnN0cnVjdGlvbnMgW3NlbGVjdGVkSXRlbUlkeF09XCJzZWxlY3RlZEl0ZW1JZHhcIiBbaXRlbUNvdW50XT1cIml0ZW1Db3VudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcmVjaW5zdHJ1Y3Rpb25zXT1cInByb21wdEl0ZW0/LnJlY2luc3RydWN0aW9ucz8ucmVjaW5zdHJ1Y3Rpb25zXCI+PC9zcHItcmVjaW5zdHJ1Y3Rpb25zPlxyXG4gICAgPGFwcC1zcHJwcm9tcHRjb250YWluZXIgW3Byb2plY3ROYW1lXT1cInByb2plY3ROYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttZWRpYWl0ZW1zXT1cInNob3dQcm9tcHQ/KHByb21wdEl0ZW0/cHJvbXB0SXRlbS5tZWRpYWl0ZW1zOm51bGwpOm51bGxcIj48L2FwcC1zcHJwcm9tcHRjb250YWluZXI+XHJcblxyXG4gIGBcclxuICAsXHJcbiAgc3R5bGVzOiBbYDpob3N0IHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIGZsZXg6IDM7IC8qIHRoZSBjb250YWluZXIgY29uc3VtZXMgYWxsIGF2YWlsYWJsZSBzcGFjZSAqL1xyXG4gICAgcGFkZGluZzogMTBwdDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOyAvKiBhbGlnbiBob3Jpem9udGFsIGNlbnRlciovXHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyOyAvKiBhbGlnbiB2ZXJ0aWNhbCBjZW50ZXIgKi9cclxuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBtaW4taGVpZ2h0OiAwcHg7XHJcbiAgfVxyXG4gIGBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9tcHRpbmdDb250YWluZXIge1xyXG4gIEBJbnB1dCgpIHByb2plY3ROYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgcHJvbXB0SXRlbTogUHJvbXB0SXRlbXxudWxsPW51bGw7XHJcbiAgQElucHV0KCkgc2hvd1Byb21wdDogYm9vbGVhbj1mYWxzZTtcclxuICBASW5wdXQoKSBzZWxlY3RlZEl0ZW1JZHghOiBudW1iZXI7XHJcbiAgQElucHV0KCkgaXRlbUNvdW50OiBudW1iZXJ8dW5kZWZpbmVkO1xyXG5cclxuICBASW5wdXQoKSB0cmFuc3BvcnRBY3Rpb25zITogVHJhbnNwb3J0QWN0aW9ucztcclxuXHJcbiAgcHJpdmF0ZSBlITogSFRNTERpdkVsZW1lbnQ7XHJcbiAgcHJpdmF0ZSBzdGFydFg6IG51bWJlciB8IG51bGwgPSBudWxsXHJcbiAgcHJpdmF0ZSB0b3VjaFN0YXJ0VGltZVN0YW1wOiBudW1iZXIgfCBudWxsPW51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBFbGVtZW50UmVmKSB7XHJcbiAgICB0eXBlIFRvdWNoU3RhcnQgPSB7fVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmUgPSB0aGlzLnJlZi5uYXRpdmVFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcigndG91Y2hzdGFydCcsIFsnJGV2ZW50J10pXHJcbiAgb25Ub3VjaHN0YXJ0KGV2OiBUb3VjaEV2ZW50IHwgYW55KSB7XHJcbiAgICAvL2NvbnNvbGUubG9nKFwiVG91Y2ggc3RhcnQhIFwiKVxyXG4gICAgaWYgKCEodGhpcy50cmFuc3BvcnRBY3Rpb25zLmZ3ZEFjdGlvbi5kaXNhYmxlZCAmJlxyXG4gICAgICB0aGlzLnRyYW5zcG9ydEFjdGlvbnMuYndkQWN0aW9uLmRpc2FibGVkICYmXHJcbiAgICAgIHRoaXMudHJhbnNwb3J0QWN0aW9ucy5uZXh0QWN0aW9uLmRpc2FibGVkKSkge1xyXG4gICAgICBsZXQgdGFyZ2V0VG91Y2hlc0xlbiA9IGV2LnRhcmdldFRvdWNoZXMubGVuZ3RoO1xyXG4gICAgICAvL2ZvcihsZXQgdGk9MDt0aTxldi50YXJnZXRUb3VjaGVzLmxlbmd0aDt0aSsrKXtcclxuICAgICAgLy9sZXQgdD1ldi50YXJnZXRUb3VjaGVzLml0ZW0odGkpO1xyXG4gICAgICAvLyBBbGwgeCB2YWx1ZXMgYXJlIHRoZSBzYW1lID8/XHJcbiAgICAgIC8vY29uc29sZS5sb2coXCJUb3VjaCAjXCIrdGkrXCI6IHBhZ2VYOiBcIit0LnBhZ2VYK1wiIGNsaWVudFg6IFwiK3QuY2xpZW50WCtcIiBzY3JlZW5YOiBcIit0LnNjcmVlblgpXHJcbiAgICAgIC8vfVxyXG4gICAgICBpZiAodGFyZ2V0VG91Y2hlc0xlbiA9PSAxKSB7XHJcbiAgICAgICAgLy8gc2luZ2xlIHRvdWNoXHJcbiAgICAgICAgbGV0IHQgPSBldi50YXJnZXRUb3VjaGVzLml0ZW0oMCk7XHJcbiAgICAgICAgaWYgKHQpIHtcclxuICAgICAgICAgIHRoaXMuc3RhcnRYID0gTWF0aC5yb3VuZCh0LnNjcmVlblgpO1xyXG4gICAgICAgICAgdGhpcy50b3VjaFN0YXJ0VGltZVN0YW1wID0gZXYudGltZVN0YW1wO1xyXG4gICAgICAgICAgdGhpcy5lLnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7XHJcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiVG91Y2ggc3RhcnQgeDogXCIrdGhpcy5zdGFydFgpXHJcbiAgICAgICAgICAvL2V2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcigndG91Y2hlbmQnLCBbJyRldmVudCddKVxyXG4gIG9uVG91Y2hFbmQoZXY6IFRvdWNoRXZlbnQgfCBhbnkpIHtcclxuICAgIC8vY29uc29sZS5sb2coXCJUb3VjaCBlbmQhXCIpXHJcbiAgICAvLyBSZXNldCBvZmZzZXQgc2hpZnRcclxuICAgIGlmICghKHRoaXMudHJhbnNwb3J0QWN0aW9ucy5md2RBY3Rpb24uZGlzYWJsZWQgJiYgdGhpcy50cmFuc3BvcnRBY3Rpb25zLmJ3ZEFjdGlvbi5kaXNhYmxlZCAmJlxyXG4gICAgICB0aGlzLnRyYW5zcG9ydEFjdGlvbnMubmV4dEFjdGlvbi5kaXNhYmxlZCkpIHtcclxuXHJcbiAgICAgIGxldCBjaGFuZ2VkVG91Y2hlc0xlbiA9IGV2LmNoYW5nZWRUb3VjaGVzLmxlbmd0aDtcclxuICAgICAgLy9jb25zb2xlLmxvZyhjaGFuZ2VkVG91Y2hlc0xlbitcIiBcIit0aGlzLnN0YXJ0WClcclxuICAgICAgaWYgKGNoYW5nZWRUb3VjaGVzTGVuID09IDEgJiYgdGhpcy5zdGFydFgpIHtcclxuICAgICAgICAvLyBzaW5nbGUgdG91Y2hcclxuICAgICAgICBsZXQgdCA9IGV2LmNoYW5nZWRUb3VjaGVzLml0ZW0oMCk7XHJcbiAgICAgICAgaWYgKHQpIHtcclxuICAgICAgICAgIGxldCBkZWx0YVggPSBNYXRoLnJvdW5kKHQuY2xpZW50WCAtIHRoaXMuc3RhcnRYKTtcclxuICAgICAgICAgIGxldCB0b3VjaE1vdmVTcGVlZCA9IDA7XHJcbiAgICAgICAgICBpZiAodGhpcy50b3VjaFN0YXJ0VGltZVN0YW1wKSB7XHJcbiAgICAgICAgICAgIHRvdWNoTW92ZVNwZWVkID0gZGVsdGFYIC8gKGV2LnRpbWVTdGFtcCAtIHRoaXMudG91Y2hTdGFydFRpbWVTdGFtcCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgZnV0dXJlRGVsdGFYID0gZGVsdGFYICsgKDgwMCAqIHRvdWNoTW92ZVNwZWVkKTtcclxuICAgICAgICAgIC8vY29uc29sZS5sb2coXCJEZWx0YVg6IFwiICsgZGVsdGFYICsgXCIgRnV0dXJlIGRlbHRhWDogXCIgKyBmdXR1cmVEZWx0YVggKyBcIiAgd2lkdGg6IFwiICsgdGhpcy5lLm9mZnNldFdpZHRoKVxyXG4gICAgICAgICAgaWYgKGZ1dHVyZURlbHRhWCA+IHRoaXMuZS5vZmZzZXRXaWR0aCAvIDIpIHtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIlN3aXBlIHJpZ2h0IGRldGVjdGVkISFcIilcclxuICAgICAgICAgICAgLy90aGlzLnN3aXBlZFJpZ2h0LmVtaXQoKVxyXG4gICAgICAgICAgICBpZiAoIXRoaXMudHJhbnNwb3J0QWN0aW9ucy5id2RBY3Rpb24uZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLnRyYW5zcG9ydEFjdGlvbnMuYndkQWN0aW9uLnBlcmZvcm0oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmUuc3R5bGUubGVmdCA9IC10aGlzLmUub2Zmc2V0TGVmdCArIFwicHhcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICgtZnV0dXJlRGVsdGFYID4gdGhpcy5lLm9mZnNldFdpZHRoIC8gMikge1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiU3dpcGUgbGVmdCBkZXRlY3RlZCEhXCIpXHJcbiAgICAgICAgICAgIHRoaXMuZS5zdHlsZS5sZWZ0ID0gLXRoaXMuZS5vZmZzZXRMZWZ0ICsgXCJweFwiO1xyXG4gICAgICAgICAgICAvL3RoaXMuc3dpcGVkTGVmdC5lbWl0KClcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnRyYW5zcG9ydEFjdGlvbnMubmV4dEFjdGlvbi5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMudHJhbnNwb3J0QWN0aW9ucy5uZXh0QWN0aW9uLnBlcmZvcm0oKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy50cmFuc3BvcnRBY3Rpb25zLmZ3ZEFjdGlvbi5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMudHJhbnNwb3J0QWN0aW9ucy5md2RBY3Rpb24ucGVyZm9ybSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHJlc2V0IGFuaW1hdGVkXHJcbiAgICAgIHRoaXMuZS5zdHlsZS50cmFuc2l0aW9uID0gXCJsZWZ0IDAuOHNcIjtcclxuICAgIH1cclxuICAgIHRoaXMuc3RhcnRYID0gbnVsbDtcclxuICAgIHRoaXMudG91Y2hTdGFydFRpbWVTdGFtcCA9IG51bGw7XHJcbiAgICB0aGlzLmUuc3R5bGUubGVmdCA9IFwiMHB4XCI7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCd0b3VjaG1vdmUnLCBbJyRldmVudCddKVxyXG4gIG9uVG91Y2hNb3ZlKGV2OiBUb3VjaEV2ZW50IHwgYW55KSB7XHJcbiAgICAvL2NvbnNvbGUubG9nKFwiVG91Y2ggbW92ZSFcIilcclxuICAgIGlmICghKHRoaXMudHJhbnNwb3J0QWN0aW9ucy5md2RBY3Rpb24uZGlzYWJsZWQgJiYgdGhpcy50cmFuc3BvcnRBY3Rpb25zLmJ3ZEFjdGlvbi5kaXNhYmxlZCAmJlxyXG4gICAgICB0aGlzLnRyYW5zcG9ydEFjdGlvbnMubmV4dEFjdGlvbi5kaXNhYmxlZCkpIHtcclxuICAgICAgbGV0IHRhcmdldFRvdWNoZXNMZW4gPSBldi50YXJnZXRUb3VjaGVzLmxlbmd0aDtcclxuICAgICAgaWYgKHRhcmdldFRvdWNoZXNMZW4gPT0gMSAmJiB0aGlzLnN0YXJ0WCkge1xyXG4gICAgICAgIC8vIHNpbmdsZSB0b3VjaFxyXG4gICAgICAgIGxldCB0ID0gZXYudGFyZ2V0VG91Y2hlcy5pdGVtKDApO1xyXG4gICAgICAgIGlmICh0KSB7XHJcbiAgICAgICAgICBsZXQgZGVsdGFYID0gTWF0aC5yb3VuZCh0LnNjcmVlblggLSB0aGlzLnN0YXJ0WCk7XHJcbiAgICAgICAgICB0aGlzLmUuc3R5bGUubGVmdCA9IGRlbHRhWCArIFwicHhcIjtcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiVG91Y2ggbW92ZSBkZWx0YSB4OiBcIitkZWx0YVgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3RvdWNoY2FuY2VsJywgWyckZXZlbnQnXSlcclxuICBvblRvdWNoQ2FuY2VsKGV2OiBUb3VjaEV2ZW50IHwgYW55KSB7XHJcbiAgICAvL2NvbnNvbGUubG9nKFwiVG91Y2ggY2FuY2VsIVwiKVxyXG4gICAgdGhpcy5lLnN0eWxlLmxlZnQgPSBcIjBweFwiO1xyXG4gICAgLy9ldi5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHJcbiAgc2VsZWN0b3I6ICdhcHAtc3BycHJvbXB0aW5nJyxcclxuXHJcbiAgdGVtcGxhdGU6IGBcclxuXHJcbiAgICA8YXBwLXNpbXBsZXRyYWZmaWNsaWdodCBbc3RhdHVzXT1cInN0YXJ0U3RvcFNpZ25hbFN0YXRlXCI+PC9hcHAtc2ltcGxldHJhZmZpY2xpZ2h0PlxyXG4gICAgPGFwcC1zcHJwcm9tcHRpbmdjb250YWluZXIgW3Byb2plY3ROYW1lXT1cInByb2plY3ROYW1lXCIgW3Byb21wdEl0ZW1dPVwicHJvbXB0SXRlbVwiIFtzaG93UHJvbXB0XT1cInNob3dQcm9tcHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1Db3VudF09XCJpdGVtcz8ubGVuZ3RoXCIgW3NlbGVjdGVkSXRlbUlkeF09XCJzZWxlY3RlZEl0ZW1JZHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RyYW5zcG9ydEFjdGlvbnNdPVwidHJhbnNwb3J0QWN0aW9uc1wiPjwvYXBwLXNwcnByb21wdGluZ2NvbnRhaW5lcj5cclxuICAgIDxhcHAtc3BycHJvZ3Jlc3MgZnhIaWRlLnhzIFtpdGVtc109XCJpdGVtc1wiIFtzZWxlY3RlZEl0ZW1JZHhdPVwic2VsZWN0ZWRJdGVtSWR4XCJcclxuICAgICAgICAgICAgICAgICAgICAgKG9uUm93U2VsZWN0KT1cIml0ZW1TZWxlY3QoJGV2ZW50KVwiPjwvYXBwLXNwcnByb2dyZXNzPlxyXG4gICAgPGRpdiBmeEhpZGUueHMgI2FzQ3QgW2NsYXNzLmFjdGl2ZV09XCIhYXVkaW9TaWduYWxDb2xsYXBzZWRcIj5cclxuXHJcbiAgICAgIDxhcHAtYXVkaW9kaXNwbGF5ICNhdWRpb1NpZ25hbENvbnRhaW5lciBbY2xhc3MuYWN0aXZlXT1cIiFhdWRpb1NpZ25hbENvbGxhcHNlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdWRpb0NsaXBdPVwiZGlzcGxheUF1ZGlvQ2xpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGF5U3RhcnRBY3Rpb25dPVwicGxheVN0YXJ0QWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BsYXlTZWxlY3Rpb25BY3Rpb25dPVwicGxheVNlbGVjdGlvbkFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvUGxheU9uU2VsZWN0VG9nZ2xlQWN0aW9uXT1cImF1dG9QbGF5T25TZWxlY3RUb2dnbGVBY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxheVN0b3BBY3Rpb25dPVwicGxheVN0b3BBY3Rpb25cIj48L2FwcC1hdWRpb2Rpc3BsYXk+XHJcblxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYDpob3N0IHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICBiYWNrZ3JvdW5kOiBsaWdodGdyZXk7XHJcbiAgICB3aWR0aDogMTAwJTsgLyogdXNlIGFsbCBob3Jpem9udGFsIGF2YWlsYWJsZSBzcGFjZSAqL1xyXG4gICAgZmxleDogMTsgLyogLi4uIGFuZCBmaWxsIHJlc3Qgb2YgdmVydGljYWwgYXZhaWxhYmxlIHNwYWNlIChvdGhlciBjb21wb25lbnRzIGhhdmUgZmxleCAwKSAqL1xyXG5cclxuICAgIC8qIFdvcmthcm91bmQgZm9yIEZpcmVmb3hcclxuICAgIElmIHRoZSBwcm9ncmVzcyB0YWJsZSBnZXRzIGxvbmcgKHNjcmlwdCB3aXRoIG1hbnkgaXRlbXMpIEZGIGluY3JlYXNlcyB0aGUgaGVpZ2h0IG9mIHRoZSBvdmVyZmxvdyBwcm9ncmVzc0NvbnRhaW5lciBhbmRcclxuICAgIHRoZSB3aG9sZSBhcHAgZG9lcyBub3QgZml0IGludG8gdGhlIHBhZ2UgYW55bW9yZS4gVGhlIGFwcCBvdmVyZmxvd3MgYW5kIHNob3dzIGEgdmVydGljYWwgc2Nyb2xsYmFyIGZvciB0aGUgd2hvbGUgYXBwLlxyXG4gICAgU2VlIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjg2MzY4MzIvZmlyZWZveC1vdmVyZmxvdy15LW5vdC13b3JraW5nLXdpdGgtbmVzdGVkLWZsZXhib3hcclxuICAgICovXHJcbiAgICBtaW4taGVpZ2h0OiAwcHg7XHJcblxyXG4gICAgZGlzcGxheTogZmxleDsgLyogZmxleCBjb250YWluZXI6IGxlZnQgdHJhZmZpYyBsaWdodCwgcmlnaHQgcHJvbXB0ZXIgKGNvbnRhaW5lcikgKi9cclxuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDsgLyogd3JhcCBjb3VsZCBjb21wbGV0ZWx5IGRlc3Ryb3kgdGhlIGxheW91dCAqL1xyXG4gIH1gLCBgXHJcbiAgICBhcHAtc2ltcGxldHJhZmZpY2xpZ2h0IHtcclxuICAgICAgbWFyZ2luOiAxMHB4O1xyXG4gICAgICBtaW4taGVpZ2h0OiAwcHg7XHJcbiAgICAgIHotaW5kZXg6IDM7XHJcbiAgICB9XHJcbiAgYCwgYFxyXG4gICAgYXBwLXNwcnByb2dyZXNzIHtcclxuICAgICAgei1pbmRleDogMztcclxuICAgIH1cclxuICBgLCBgXHJcbiAgICBkaXYge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcblxyXG5cclxuICAgICAgLyogaGVpZ2h0OiA1MCU7ICovXHJcbiAgICAgIC8qIHdpZHRoOiAxMDAlOyAqL1xyXG5cclxuICAgICAgLyogb3ZlcmZsb3c6IGhpZGRlbjsgKi9cclxuXHJcbiAgICAgIC8qIG1hcmdpbjogMjBweDsgKi9cclxuICAgICAgLyogYm9yZGVyOiAyMHB4OyAqL1xyXG4gICAgICB6LWluZGV4OiA1O1xyXG4gICAgICAvKmJhY2tncm91bmQtY29sb3I6IHJlZDsgKi9cclxuICAgIH1gLCBgXHJcbiAgICBkaXYuYWN0aXZlIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBib3R0b206IDBweDtcclxuICAgICAgLypsZWZ0OiAwcHg7ICovXHJcblxyXG4gICAgICBoZWlnaHQ6IDkwJTtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcblxyXG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAgICAgcGFkZGluZzogMHB4O1xyXG4gICAgICAvKiBtYXJnaW46IDIwcHg7ICovXHJcbiAgICAgIC8qIGJvcmRlcjogMjBweDsgKi9cclxuICAgICAgei1pbmRleDogNTtcclxuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKVxyXG5cclxuICAgIH1gXHJcbiAgXVxyXG5cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBQcm9tcHRpbmcge1xyXG4gIEBWaWV3Q2hpbGQoU2ltcGxlVHJhZmZpY0xpZ2h0LCB7IHN0YXRpYzogdHJ1ZSB9KSBzaW1wbGVUcmFmZmljTGlnaHQhOiBTaW1wbGVUcmFmZmljTGlnaHQ7XHJcbiAgQFZpZXdDaGlsZChBdWRpb0Rpc3BsYXksIHsgc3RhdGljOiB0cnVlIH0pIGF1ZGlvRGlzcGxheSE6IEF1ZGlvRGlzcGxheTtcclxuICBASW5wdXQoKSBwcm9qZWN0TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHN0YXJ0U3RvcFNpZ25hbFN0YXRlITogU3RhcnRTdG9wU2lnbmFsU3RhdGU7XHJcbiAgQElucHV0KCkgcHJvbXB0SXRlbTogUHJvbXB0SXRlbSB8IG51bGw9bnVsbDtcclxuICBASW5wdXQoKSBzaG93UHJvbXB0OiBib29sZWFuPWZhbHNlO1xyXG4gIEBJbnB1dCgpIGl0ZW1zOiBBcnJheTxJdGVtPnx1bmRlZmluZWQ9dW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbUlkeCE6IG51bWJlcjtcclxuICBASW5wdXQoKSB0cmFuc3BvcnRBY3Rpb25zITogVHJhbnNwb3J0QWN0aW9ucztcclxuICBASW5wdXQoKSBlbmFibGVEb3dubG9hZDogYm9vbGVhbj1mYWxzZTtcclxuXHJcbiAgQElucHV0KCkgYXVkaW9TaWduYWxDb2xsYXBzZWQ6IGJvb2xlYW49dHJ1ZTtcclxuICBASW5wdXQoKSBkaXNwbGF5QXVkaW9DbGlwOiBBdWRpb0NsaXAgfCBudWxsPW51bGw7XHJcbiAgQElucHV0KCkgcGxheVN0YXJ0QWN0aW9uOiBBY3Rpb248dm9pZD58dW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHBsYXlTZWxlY3Rpb25BY3Rpb246IEFjdGlvbjx2b2lkPnx1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgYXV0b1BsYXlPblNlbGVjdFRvZ2dsZUFjdGlvbjpBY3Rpb248Ym9vbGVhbj58dW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHBsYXlTdG9wQWN0aW9uOiBBY3Rpb248dm9pZD58dW5kZWZpbmVkO1xyXG4gIEBPdXRwdXQoKSBvbkl0ZW1TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICBAT3V0cHV0KCkgb25OZXh0SXRlbSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25QcmV2SXRlbSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgaXRlbVNlbGVjdChyb3dJZHg6IG51bWJlcikge1xyXG4gICAgdGhpcy5vbkl0ZW1TZWxlY3QuZW1pdChyb3dJZHgpO1xyXG4gIH1cclxuXHJcbiAgbmV4dEl0ZW0oKSB7XHJcbiAgICB0aGlzLm9uTmV4dEl0ZW0uZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHJldkl0ZW0oKSB7XHJcbiAgICB0aGlzLm9uUHJldkl0ZW0uZW1pdCgpO1xyXG4gIH1cclxufVxyXG5cclxuIl19
|
|
640
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3NwZWVjaHJlY29yZGVyL3Nlc3Npb24vcHJvbXB0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFlBQVksRUFJWixXQUFXLEVBRVosTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFNNUUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBR3ZELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7Ozs7OztBQTZCbEUsTUFBTSxPQUFPLGVBQWU7SUFLMUIsV0FBVztRQUNULElBQUksS0FBSyxHQUFRLEVBQUUsQ0FBQztRQUNwQixJQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBQztZQUN4QyxLQUFLLEdBQUMsS0FBSyxHQUFDLElBQUksQ0FBQyxlQUFlLEdBQUMsR0FBRyxHQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBQyxDQUFDLENBQUMsQ0FBQztTQUN6RDtRQUNELElBQUcsSUFBSSxDQUFDLGVBQWUsRUFBQztZQUN0QixLQUFLLEdBQUMsS0FBSyxHQUFDLElBQUksR0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO1NBQ3ZDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs2R0FkVSxlQUFlO2lHQUFmLGVBQWUsdUtBaEJoQjs7O0dBR1Q7NEZBYVUsZUFBZTtrQkFwQjNCLFNBQVM7K0JBRUUscUJBQXFCLFlBRXJCOzs7R0FHVDs4QkFjUSxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csU0FBUztz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QUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNoQyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyw0QkFBNEI7c0JBQXBDLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdDaGlsZCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBFbGVtZW50UmVmLFxyXG4gIE9uSW5pdCxcclxuICBSZW5kZXJlcjIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEluamVjdFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5pbXBvcnQge1NpbXBsZVRyYWZmaWNMaWdodH0gZnJvbSBcIi4uL3N0YXJ0c3RvcHNpZ25hbC91aS9zaW1wbGV0cmFmZmljbGlnaHRcIjtcclxuaW1wb3J0IHtTdGF0ZSBhcyBTdGFydFN0b3BTaWduYWxTdGF0ZX0gZnJvbSBcIi4uL3N0YXJ0c3RvcHNpZ25hbC9zdGFydHN0b3BzaWduYWxcIjtcclxuaW1wb3J0IHtJdGVtfSBmcm9tIFwiLi9pdGVtXCI7XHJcbmltcG9ydCB7QmxvY2ssIFRleHQsIE1lZGlhaXRlbSwgUHJvbXB0SXRlbX0gZnJvbSBcIi4uL3NjcmlwdC9zY3JpcHRcIjtcclxuaW1wb3J0IHtUcmFuc3BvcnRBY3Rpb25zfSBmcm9tIFwiLi9jb250cm9scGFuZWxcIjtcclxuaW1wb3J0IHtBY3Rpb259IGZyb20gXCIuLi8uLi9hY3Rpb24vYWN0aW9uXCI7XHJcbmltcG9ydCB7QXVkaW9EaXNwbGF5fSBmcm9tIFwiLi4vLi4vYXVkaW8vYXVkaW9fZGlzcGxheVwiO1xyXG5pbXBvcnQge1Byb2plY3RTZXJ2aWNlfSBmcm9tIFwiLi4vcHJvamVjdC9wcm9qZWN0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHtBdWRpb0NsaXB9IGZyb20gXCIuLi8uLi9hdWRpby9wZXJzaXN0b3JcIjtcclxuaW1wb3J0IHtSZXNwb25zaXZlQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vdWkvcmVzcG9uc2l2ZV9jb21wb25lbnRcIjtcclxuaW1wb3J0IHtCcmVha3BvaW50T2JzZXJ2ZXJ9IGZyb20gXCJAYW5ndWxhci9jZGsvbGF5b3V0XCI7XHJcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHtNYXREaWFsb2d9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHtTZXNzaW9uU2VydmljZX0gZnJvbSBcIi4vc2Vzc2lvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7UmVjb3JkaW5nU2VydmljZX0gZnJvbSBcIi4uL3JlY29yZGluZ3MvcmVjb3JkaW5ncy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7U3BlZWNoUmVjb3JkZXJVcGxvYWRlcn0gZnJvbSBcIi4uL3NwcnVwbG9hZGVyXCI7XHJcbmltcG9ydCB7U1BFRUNIUkVDT1JERVJfQ09ORklHLCBTcGVlY2hSZWNvcmRlckNvbmZpZ30gZnJvbSBcIi4uLy4uL3Nwci5jb25maWdcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ3Nwci1yZWNpbnN0cnVjdGlvbnMnLFxyXG5cclxuICB0ZW1wbGF0ZTogYFxyXG5cclxuICAgIHt7ZGlzcGxheVRleHQoKX19XHJcbiAgYCxcclxuICBzdHlsZXM6IFtgOmhvc3Qge1xyXG5cclxuICAgIGp1c3RpZnktY29udGVudDogbGVmdDsgLyogYWxpZ24gaG9yaXpvbnRhbCBjZW50ZXIgKi9cclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyAvKiBhbGlnbiB2ZXJ0aWNhbCAgY2VudGVyICovXHJcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICBmb250LXNpemU6IDFlbTtcclxuICAgIGZsZXg6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICB9XHJcbiAgYF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFJlY2luc3RydWN0aW9ucyB7XHJcbiAgQElucHV0KCkgcmVjaW5zdHJ1Y3Rpb25zOiBzdHJpbmd8bnVsbHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbUlkeDogbnVtYmVyfG51bGx8dW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGl0ZW1Db3VudDogbnVtYmVyfHVuZGVmaW5lZDtcclxuXHJcbiAgZGlzcGxheVRleHQoKTpzdHJpbmd7XHJcbiAgICBsZXQgcmlUeHQ6c3RyaW5nPScnO1xyXG4gICAgaWYodGhpcy5pdGVtQ291bnQgJiYgdGhpcy5zZWxlY3RlZEl0ZW1JZHgpe1xyXG4gICAgICByaVR4dD1yaVR4dCt0aGlzLnNlbGVjdGVkSXRlbUlkeCsnLycrKHRoaXMuaXRlbUNvdW50LTEpO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5yZWNpbnN0cnVjdGlvbnMpe1xyXG4gICAgICByaVR4dD1yaVR4dCsnOiAnK3RoaXMucmVjaW5zdHJ1Y3Rpb25zO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJpVHh0O1xyXG4gIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblxyXG4gIHNlbGVjdG9yOiAnYXBwLXNwcnByb21wdGVyJyxcclxuXHJcbiAgdGVtcGxhdGU6IGBcclxuXHJcbiAgICA8IS0tPG5nLXRlbXBsYXRlIFtuZ0lmXT1cInRleHRcIj57e3RleHR9fTwvbmctdGVtcGxhdGU+LS0+XHJcbiAgICA8IS0tIDxpbWcgKm5nSWY9XCJzcmNcIiAjcHJvbXB0SW1hZ2UgW3NyY109XCJzcmNVcmwoKVwiIFtoZWlnaHRdPVwicHJvbXB0ZXJIZWlnaHQtMjBcIiAvPiAtLT5cclxuICBgLFxyXG4gIHN0eWxlczogW2A6aG9zdCB7XHJcblxyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IC8qIGFsaWduIGhvcml6b250YWwgY2VudGVyICovXHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyOyAvKiBhbGlnbiB2ZXJ0aWNhbCAgY2VudGVyICovXHJcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIC8qIGZvbnQtc2l6ZTogMmVtOyAqL1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuMmVtO1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAvKiBVc2Ugb25seSBuYXR1cmFsIHNpemUgb2YgdGhlIHByb21wdCAqL1xyXG4gICAgLyogVGhlIHByb21wdGVyIGNvbXBuZW50IHRoZW4gZXRzIGFsaWduZWQgdmVydGljYWxseSBjZW50ZXJlZCAqL1xyXG4gICAgZmxleDogMCAxO1xyXG5cclxuICB9YCwgYDpob3N0KC5maWxsKSB7XHJcbiAgICAvKiBVc2UgYWxsIHNwYWNlIHRvIHNjYWxlIGltYWdlcyAqL1xyXG4gICAgZmxleDogMztcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgbWF4LWhlaWdodDogMTAwJTtcclxuICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgIC8qIEEgc2VwYXJhdGUgZmxleCBjb250YWluZXIgbWlnaHQgYmUgbmVjZXNzYXlyIHRvIGFsaWdobiBjZW50ZXJlZCAqL1xyXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgLyogVE9ETyBkb2VzIG5vdCB3b3JrLCBpbWFnZSBpcyBub3QgdmVydGljYWxseSBjZW50ZXJlZCAqL1xyXG4gIH1gXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvbXB0ZXIge1xyXG4gIEBJbnB1dCgpIHByb2plY3ROYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBfcHJvbXB0TWVkaWFJdGVtczogQXJyYXk8TWVkaWFpdGVtPnxudWxsfHVuZGVmaW5lZD1udWxsXHJcblxyXG4gIEBJbnB1dCgpIHByb21wdGVySGVpZ2h0OiBudW1iZXI9MDtcclxuICBwcml2YXRlIF90ZXh0OiBzdHJpbmd8dW5kZWZpbmVkfG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX3NyYzogc3RyaW5nfHVuZGVmaW5lZHxudWxsID0gbnVsbDtcclxuICBwcml2YXRlIF9ibG9ja3M6IEFycmF5PEJsb2NrPnx1bmRlZmluZWQ7XHJcbiAgbWltZXR5cGUhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBjdXJyUHJvbXB0Q2hpbGQ6IEhUTUxFbGVtZW50fG51bGwgPSBudWxsO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZpbGwnKSBwdWJsaWMgcHJvbXB0ZXJTdHlsZUZpbGwgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIHByb2plY3RTZXJ2aWNlOiBQcm9qZWN0U2VydmljZSkge1xyXG5cclxuICB9XHJcblxyXG4gIGdldCB0ZXh0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RleHQ7XHJcbiAgfVxyXG5cclxuICBnZXQgc3JjKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NyYztcclxuICB9XHJcblxyXG4gIHNyY1VybCgpOiBzdHJpbmd8bnVsbHtcclxuICAgIGlmICh0aGlzLnByb2plY3ROYW1lICYmIHRoaXMuX3NyYykge1xyXG4gICAgICByZXR1cm4gdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0UmVzb3VyY2VVcmwodGhpcy5wcm9qZWN0TmFtZSwgdGhpcy5fc3JjKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgICB3aWR0aCgpOm51bWJlcnxudWxse1xyXG4gICAgICBpZih0aGlzLmVsUmVmKXtcclxuICAgICAgICBpZih0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQpe1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgaGVpZ2h0KCk6bnVtYmVyfG51bGx7XHJcbiAgICAgICAgaWYodGhpcy5lbFJlZil7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCl7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXBwZW5kVGV4dEVsZW1lbnQocGFyZW50RWw6SFRNTEVsZW1lbnQsdHh0OlRleHQpe1xyXG4gICAgICBsZXQgdDogc3RyaW5nID0gPHN0cmluZz50eHQudGV4dFxyXG4gICAgICBsZXQgdHh0TmQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZVRleHQodClcclxuICAgICAgaWYodHh0LmRlY29yYXRpb24gfHwgdHh0LmNvbG9yKXtcclxuICAgICAgICBsZXQgc3BFbCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc3BhbicpXHJcbiAgICAgICAgbGV0IHN0eWxlU3RyPScnXHJcbiAgICAgICAgaWYodHh0LmRlY29yYXRpb24pIHtcclxuICAgICAgICAgIHN0eWxlU3RyID0gc3R5bGVTdHIgKyd0ZXh0LWRlY29yYXRpb246ICcgKyB0eHQuZGVjb3JhdGlvbisnOydcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodHh0LmNvbG9yKXtcclxuICAgICAgICAgIHN0eWxlU3RyID0gc3R5bGVTdHIgKydjb2xvcjogJyArIHR4dC5jb2xvcisnOydcclxuICAgICAgICB9XHJcbiAgICAgICAgc3BFbC5zdHlsZT1zdHlsZVN0clxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQocGFyZW50RWwsIHNwRWwpXHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChzcEVsLCB0eHROZClcclxuICAgICAgfWVsc2Uge1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQocGFyZW50RWwsIHR4dE5kKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCBwcm9tcHRNZWRpYUl0ZW1zKHBNaXM6IEFycmF5PE1lZGlhaXRlbT58bnVsbCkge1xyXG4gICAgdGhpcy5fcHJvbXB0TWVkaWFJdGVtcyA9IHBNaXNcclxuICAgIGlmICh0aGlzLmN1cnJQcm9tcHRDaGlsZCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLmN1cnJQcm9tcHRDaGlsZClcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9wcm9tcHRNZWRpYUl0ZW1zICYmIHRoaXMuX3Byb21wdE1lZGlhSXRlbXMubGVuZ3RoID09IDEpIHtcclxuICAgICAgbGV0IG1pID0gdGhpcy5fcHJvbXB0TWVkaWFJdGVtc1swXVxyXG4gICAgICB0aGlzLm1pbWV0eXBlID0gJ3RleHQvcGxhaW4nXHJcbiAgICAgIGlmIChtaS5taW1ldHlwZSkge1xyXG4gICAgICAgIHRoaXMubWltZXR5cGUgPSBtaS5taW1ldHlwZS50cmltKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMubWltZXR5cGUgPT09ICd0ZXh0L3BsYWluJykge1xyXG4gICAgICAgIHRoaXMuX3RleHQgPSBtaS50ZXh0XHJcbiAgICAgICAgdGhpcy5fc3JjID0gbnVsbDtcclxuICAgICAgICBsZXQgcHJUeHQ9Jyc7XHJcbiAgICAgICAgaWYodGhpcy5fdGV4dCl7XHJcbiAgICAgICAgICBwclR4dD10aGlzLl90ZXh0O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmN1cnJQcm9tcHRDaGlsZCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dChwclR4dCk7XHJcbiAgICAgICAgdGhpcy5wcm9tcHRlclN0eWxlRmlsbCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLmN1cnJQcm9tcHRDaGlsZCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5taW1ldHlwZSA9PT0gJ3RleHQveC1wcm9tcHQnKSB7XHJcbiAgICAgICAgLy90aGlzLnJlbmRlcmluZz10cnVlXHJcbiAgICAgICAgdGhpcy5fdGV4dD1udWxsO1xyXG4gICAgICAgIHRoaXMuX3NyYz1udWxsO1xyXG4gICAgICAgIHRoaXMuX2Jsb2Nrcz1uZXcgQXJyYXk8QmxvY2s+KCk7XHJcbiAgICAgICAgbGV0IHBkPW1pLnByb21wdERvY1xyXG4gICAgICAgIGlmKHBkKXtcclxuICAgICAgICAgIGxldCBwZEJvZHk9cGQuYm9keVxyXG4gICAgICAgICAgaWYocGRCb2R5KXtcclxuICAgICAgICAgICAgdGhpcy5fYmxvY2tzPXBkQm9keS5ibG9ja3M7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnByb21wdGVyU3R5bGVGaWxsID0gZmFsc2VcclxuICAgICAgICB0aGlzLmN1cnJQcm9tcHRDaGlsZCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2JylcclxuICAgICAgICBpZih0aGlzLl9ibG9ja3MpIHtcclxuICAgICAgICAgIGZvciAobGV0IGJpID0gMDsgYmkgPCB0aGlzLl9ibG9ja3MubGVuZ3RoOyBiaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBibCA9IHRoaXMuX2Jsb2Nrc1tiaV1cclxuICAgICAgICAgICAgaWYgKCdwJyA9PT0gYmwudHlwZSkge1xyXG4gICAgICAgICAgICAgIGxldCBwQmxFbCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgncCcpXHJcbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmN1cnJQcm9tcHRDaGlsZCwgcEJsRWwpXHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgdGkgPSAwOyB0aSA8IGJsLnRleHRzLmxlbmd0aDsgdGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHR4dCA9IGJsLnRleHRzW3RpXVxyXG4gICAgICAgICAgICAgICAgaWYgKHR4dCkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoJ3RleHQnID09PSB0eHQudHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kVGV4dEVsZW1lbnQocEJsRWwsIHR4dClcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgnZm9udCcgPT09IHR4dC50eXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNwRWwgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBzdHlsZVN0ciA9ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR4dC5zdHlsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGVTdHIgPSBzdHlsZVN0ciArICdmb250LXN0eWxlOiAnICsgdHh0LnN0eWxlICsgJzsnXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eHQuc2l6ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGVTdHIgPSBzdHlsZVN0ciArICdmb250LXNpemU6ICcgKyB0eHQuc2l6ZSArICc7J1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodHh0LndlaWdodCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGVTdHIgPSBzdHlsZVN0ciArICdmb250LXdlaWdodDogJyArIHR4dC53ZWlnaHQgKyAnOydcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgc3BFbC5zdHlsZSA9IHN0eWxlU3RyXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChwQmxFbCwgc3BFbClcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZFRleHRFbGVtZW50KHNwRWwsIDxUZXh0PnR4dC50ZXh0KVxyXG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdsaW5lYnJlYWsnID09PSB0eHQudHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBickVsID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdicicpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChwQmxFbCwgYnJFbClcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5jdXJyUHJvbXB0Q2hpbGQpXHJcbiAgICAgICAgLy90aGlzLnJlbmRlcmluZz1mYWxzZVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMubWltZXR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UnKSkge1xyXG4gICAgICAgIHRoaXMuX3RleHQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX3NyYyA9IG1pLnNyY1xyXG4gICAgICAgIGxldCBwcm9tcHRJbWFnZSA9IG5ldyBJbWFnZSgpXHJcblxyXG4gICAgICAgIHRoaXMuY3VyclByb21wdENoaWxkID0gcHJvbXB0SW1hZ2VcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5jdXJyUHJvbXB0Q2hpbGQpXHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmN1cnJQcm9tcHRDaGlsZCwgXCJtYXgtd2lkdGhcIiwgXCIxMDAlXCIpXHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmN1cnJQcm9tcHRDaGlsZCwgXCJtYXgtaGVpZ2h0XCIsIFwiMTAwJVwiKVxyXG4gICAgICAgIHRoaXMucHJvbXB0ZXJTdHlsZUZpbGwgPSB0cnVlXHJcbiAgICAgICAgLy8gVE9ETyB2ZXJ0aWNhbCBhbGlnbm1lbnRcclxuICAgICAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy83MjczMzM4L2hvdy10by12ZXJ0aWNhbGx5LWFsaWduLWFuLWltYWdlLWluc2lkZS1hLWRpdlxyXG5cclxuICAgICAgICAvL2NvbnNvbGUubG9nKHByb21wdEltYWdlLm5hdHVyYWxXaWR0aCArIFwieFwiK3Byb21wdEltYWdlLm5hdHVyYWxIZWlnaHQpO1xyXG4gICAgICAgIHByb21wdEltYWdlLm9ubG9hZCA9IChldjogRXZlbnQpID0+IHt9XHJcbiAgICAgICAgbGV0IHNyY1VybD10aGlzLnNyY1VybCgpO1xyXG4gICAgICAgIGlmKHNyY1VybCkge1xyXG4gICAgICAgICAgcHJvbXB0SW1hZ2Uuc3JjID0gc3JjVXJsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3RleHQgPSBudWxsXHJcbiAgICAgIHRoaXMuX3NyYyA9IG51bGxcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBWSVJUVUFMX0hFSUdIVCA9IDYwMDtcclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfUFJPTVBUX0ZPTlRTSVpFID0gNDg7XHJcbmV4cG9ydCBjb25zdCBNSU5fRk9OVF9TSVpFPTY7XHJcbmV4cG9ydCBjb25zdCBGQUxMQkFDS19ERUZfVVNFUl9BR0VOVF9GT05UX1NJWkUgPSAxNDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2FwcC1zcHJwcm9tcHRjb250YWluZXInLFxyXG5cclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGFwcC1zcHJwcm9tcHRlciAjcHJvbXB0ZXIgW3Byb2plY3ROYW1lXT1cInByb2plY3ROYW1lXCIgW3Byb21wdE1lZGlhSXRlbXNdPVwibWVkaWFpdGVtc1wiIFtzdHlsZS5mb250LXNpemVdPVwiZm9udFNpemUrJ3B4J1wiIFtzdHlsZS52aXNpYmlsaXR5XT1cInByRGlzcGxheVwiIFtwcm9tcHRlckhlaWdodF09XCJwcm9tcHRlckhlaWdodFwiPjwvYXBwLXNwcnByb21wdGVyPlxyXG4gIGBcclxuICAsXHJcbiAgc3R5bGVzOiBbYDpob3N0IHtcclxuXHJcbiAgICBmbGV4OiAzOyAvKiB0aGUgY29udGFpbmVyIGNvbnN1bWVzIGFsbCBhdmFpbGFibGUgc3BhY2UgKi9cclxuICAgIHBhZGRpbmc6IDEwcHQ7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xyXG5cclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOyAvKiBhbGlnbiBob3Jpem9udGFsIGNlbnRlciovXHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyOyAvKiBhbGlnbiB2ZXJ0aWNhbCBjZW50ZXIgKi9cclxuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBtaW4taGVpZ2h0OiAwcHg7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICB9XHJcbiAgYF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFByb21wdENvbnRhaW5lciBpbXBsZW1lbnRzIE9uSW5pdCxBZnRlckNvbnRlbnRDaGVja2VkIHtcclxuICBASW5wdXQoKSBwcm9qZWN0TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgX21lZGlhaXRlbXM6IEFycmF5PE1lZGlhaXRlbT58bnVsbD1udWxsO1xyXG5cclxuICBwcm9tcHRlckhlaWdodDogbnVtYmVyID0gVklSVFVBTF9IRUlHSFRcclxuICBmb250U2l6ZSE6IG51bWJlcjtcclxuICBmb250U2l6ZUNoYW5nZT1mYWxzZVxyXG4gIGNvbnRlbnRDaGVja2VkPWZhbHNlO1xyXG4gIHByRGlzcGxheT0naGlkZGVuJztcclxuICBkZWZhdWx0U3R5bGUhOiBDU1NTdHlsZURlY2xhcmF0aW9uO1xyXG4gIGRlZmF1bHRGb250U2l6ZVB4ITogbnVtYmVyO1xyXG5cclxuICBhdXRvRm9udFNpemU9ZmFsc2U7XHJcbiAgQFZpZXdDaGlsZChQcm9tcHRlciwgeyBzdGF0aWM6IHRydWUgfSkgcHJvbXB0ZXIhOiBQcm9tcHRlcjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbFJlZjpFbGVtZW50UmVmKXt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG5cclxuICAgIC8vIGZhbGxiYWNrXHJcbiAgICB0aGlzLmRlZmF1bHRGb250U2l6ZVB4ID0gRkFMTEJBQ0tfREVGX1VTRVJfQUdFTlRfRk9OVF9TSVpFO1xyXG4gICAgLy8gdHJ5IHRvIHBhcnNlIGRlZmF1bHQgdXNlciBhZ2VudCBmb250IHNpemUgKG5vIGNvbW1lbnQgYWJvdXQgRE9NIEFQSSBkZXNpZ24gOykgKVxyXG4gICAgdGhpcy5kZWZhdWx0U3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgbGV0IGRlZkZvbnRTaXplU3RyID0gdGhpcy5kZWZhdWx0U3R5bGUuZm9udFNpemU7XHJcbiAgICBpZiAoZGVmRm9udFNpemVTdHIpIHtcclxuICAgICAgZGVmRm9udFNpemVTdHIgPSBkZWZGb250U2l6ZVN0ci50cmltKCk7XHJcbiAgICAgIGlmIChkZWZGb250U2l6ZVN0ci5lbmRzV2l0aCgncHgnKSkge1xyXG4gICAgICAgIC8vIHBhcnNlRmxvYXQgaWdub3JlcyBub24gbnVtYmVyIGNoYXJhY3RlcnMgYXQgdGhlIGVuZCAoYWdhaW4gbm8gY29tbWVudCA7KSApXHJcbiAgICAgICAgdGhpcy5kZWZhdWx0Rm9udFNpemVQeCA9IHBhcnNlRmxvYXQoZGVmRm9udFNpemVTdHIpO1xyXG4gICAgICAgICAgLy9jb25zb2xlLmluZm8oXCJEZWZhdWx0IGZvbnQgc2l6ZTogXCIrdGhpcy5kZWZhdWx0Rm9udFNpemVQeClcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb250ZW50Q2hlY2tlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy5hdXRvRm9udFNpemUpIHtcclxuICAgICAgaWYgKHRoaXMuZm9udFNpemVDaGFuZ2UpIHtcclxuICAgICAgICAvL2NvbnNvbGUubG9nKFwibmdhZnRlcmNvbnRlbnRjaGVja2VkLCBjYWxsIGZvbnRTaXplVG9GaXQgXCIpO1xyXG4gICAgICAgIC8vIGNoZWNrIHByb21wdGVyIHNpemUgYWdhaW5cclxuICAgICAgICB0aGlzLmZvbnRTaXplVG9GaXQoKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGZvbnQgc2l6ZSB3YXMgY2hlY2tlZCwgYnV0IHdlIG5lZWQgdG8gY2hlY2sgYWdhaW4gYWZ0ZXIgYW5ndWxhciBjb250ZW50IGNoZWNrXHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRlbnRDaGVja2VkKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbnRlbnRDaGVja2VkID0gdHJ1ZTtcclxuICAgICAgICAgIC8vY29uc29sZS5sb2coXCJuZ2FmdGVyY29udGVudGNoZWNrZWQsIG5vdCBmb250IHNpemUgY2hhbmdlZCwgY2FsbCBcIik7XHJcbiAgICAgICAgICB0aGlzLmZvbnRTaXplVG9GaXQoKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIEBJbnB1dCgpIHNldCBtZWRpYWl0ZW1zKG1lZGlhaXRlbXM6QXJyYXk8TWVkaWFpdGVtPnxudWxsKXtcclxuXHJcbiAgICB0aGlzLl9tZWRpYWl0ZW1zID0gbWVkaWFpdGVtc1xyXG5cclxuICAgIGxldCBtaW1ldHlwZTpzdHJpbmd8bnVsbD1udWxsO1xyXG4gICAgaWYgKHRoaXMuX21lZGlhaXRlbXMgJiYgdGhpcy5fbWVkaWFpdGVtcy5sZW5ndGggPT0gMSkge1xyXG4gICAgICBsZXQgbWkgPSB0aGlzLl9tZWRpYWl0ZW1zWzBdXHJcbiAgICAgIG1pbWV0eXBlID0gJ3RleHQvcGxhaW4nXHJcbiAgICAgIGlmIChtaS5taW1ldHlwZSkge1xyXG4gICAgICAgIG1pbWV0eXBlID0gbWkubWltZXR5cGUudHJpbSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKG1pLmRlZmF1bHRWaXJ0dWFsVmlld0JveCl7XHJcbiAgICAgICAgdGhpcy5wcm9tcHRlckhlaWdodD1taS5kZWZhdWx0VmlydHVhbFZpZXdCb3guaGVpZ2h0XHJcbiAgICAgIH1cclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLnByb21wdGVySGVpZ2h0PVZJUlRVQUxfSEVJR0hUXHJcbiAgICB9XHJcbiAgICB0aGlzLnByb21wdGVyLnByb21wdE1lZGlhSXRlbXM9dGhpcy5fbWVkaWFpdGVtc1xyXG4gICAgdGhpcy5hdXRvRm9udFNpemU9KG1pbWV0eXBlIT1udWxsICYmIG1pbWV0eXBlLnN0YXJ0c1dpdGgoJ3RleHQvJykpO1xyXG4gICAgaWYodGhpcy5hdXRvRm9udFNpemUpe1xyXG4gICAgICAgIHRoaXMuZm9udFNpemVDaGFuZ2UgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY29udGVudENoZWNrZWQgPSBmYWxzZVxyXG4gICAgICAgIHRoaXMucHJEaXNwbGF5ID0gJ2hpZGRlbidcclxuICAgICAgICB0aGlzLmxheW91dCgpXHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBtZWRpYWl0ZW1zKCk6QXJyYXk8TWVkaWFpdGVtPnxudWxse1xyXG4gICAgICByZXR1cm4gdGhpcy5fbWVkaWFpdGVtcztcclxuICB9XHJcblxyXG5cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25SZXNpemUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICAvL2NvbnNvbGUuZGVidWcoXCJvbnJlc2l6ZSwgY2FsbCBmb250U2l6ZVRvRml0IGhvb2sgXCIpO1xyXG4gICAgdGhpcy5sYXlvdXQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbGF5b3V0KCkge1xyXG4gICAgaWYodGhpcy5hdXRvRm9udFNpemUgJiYgdGhpcy5lbFJlZikge1xyXG5cclxuICAgICAgdGhpcy5mb250U2l6ZUNoYW5nZT10cnVlO1xyXG4gICAgICB0aGlzLmNvbnRlbnRDaGVja2VkID0gZmFsc2VcclxuICAgICAgdGhpcy5wckRpc3BsYXkgPSAnaGlkZGVuJ1xyXG4gICAgICBsZXQgZWxIID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcclxuICAgICAgLy8gcHJvbXB0IHRleHQgZm9udCBzaXplIHNob3VsZCBzY2FsZSBhY2NvcmRpbmcgdG8gcHJvbXB0IGNvbnRhaW5lciBoZWlnaHRcclxuICAgICAgbGV0IHNjYWxlZFNpemUgPSBNYXRoLnJvdW5kKChlbEggLyB0aGlzLnByb21wdGVySGVpZ2h0KSAqIERFRkFVTFRfUFJPTVBUX0ZPTlRTSVpFKTtcclxuXHJcbiAgICAgIC8vIG1pbiBwcm9tcHQgZm9udCBzaXplIGlzIGRlZmF1bHQgdXNlciBhZ2VudCBzaXplXHJcbiAgICAgIGxldCBuZXdTaXplID0gTWF0aC5tYXgoc2NhbGVkU2l6ZSwgdGhpcy5kZWZhdWx0Rm9udFNpemVQeCk7XHJcbiAgICAgIGlmICh0aGlzLmZvbnRTaXplICE9PSBuZXdTaXplKSB7XHJcbiAgICAgICAgdGhpcy5mb250U2l6ZSA9IG5ld1NpemU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vY29uc29sZS5sb2coXCJsYXlvdXQsIGNhbGwgZm9udFNpemVUb0ZpdCBob29rIFwiKTtcclxuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdGhpcy5mb250U2l6ZVRvRml0KCkpXHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgZm9udFNpemVUb0ZpdCgpe1xyXG4gICAgICBpZih0aGlzLnByb21wdGVyKSB7XHJcbiAgICAgICAgbGV0IHBXPXRoaXMucHJvbXB0ZXIud2lkdGgoKTtcclxuICAgICAgICBsZXQgcEg9dGhpcy5wcm9tcHRlci5oZWlnaHQoKTtcclxuICAgICAgICBpZiAodGhpcy5fbWVkaWFpdGVtcyAmJiB0aGlzLmVsUmVmICYmIHBXICYmIHBIKSB7XHJcbiAgICAgICAgICBsZXQgbkVsID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50XHJcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKFwicHJvbXB0ZXI6IFwiICsgdGhpcy5wcm9tcHRlci53aWR0aCgpICsgXCJ4XCIgKyB0aGlzLnByb21wdGVyLmhlaWdodCgpKyBcIiBmb250IHNpemU6IFwiK3RoaXMuZm9udFNpemUpXHJcbiAgICAgICAgICBpZiAodGhpcy5mb250U2l6ZSA+PSBNSU5fRk9OVF9TSVpFICYmIChwVyA+IG5FbC5vZmZzZXRXaWR0aCB8fCBwSCA+IG5FbC5vZmZzZXRIZWlnaHQpKSB7XHJcbiAgICAgICAgICAgIC8vIHByb21wdGVyIG92ZXJzaXplcyBwcm9tcHRlciBjb250YWluZXIuIERlY3JlYXNlIGZvbnQgc2l6ZS5cclxuICAgICAgICAgICAgLy8gc2V0IGludmlzaWJsZSBkdXJpbmcgZm9udCBzaXplIGNoZWNrc1xyXG4gICAgICAgICAgICB0aGlzLnByRGlzcGxheSA9ICdoaWRkZW4nXHJcbiAgICAgICAgICAgIC8vIGRlY3JlYXNlIGZvbnQgc2l6ZVxyXG4gICAgICAgICAgICB0aGlzLmZvbnRTaXplID0gdGhpcy5mb250U2l6ZSAtIDFcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJEZWNyZWFzZWQgZm9udCBzaXplOiBcIit0aGlzLmZvbnRTaXplIClcclxuICAgICAgICAgICAgLy8gU2V0IGZsYWdzXHJcbiAgICAgICAgICAgIHRoaXMuZm9udFNpemVDaGFuZ2UgPSB0cnVlXHJcbiAgICAgICAgICAgIHRoaXMuY29udGVudENoZWNrZWQgPSBmYWxzZVxyXG4gICAgICAgICAgICAvLyBob29rIHRoZSBuZXh0IGNoZWNrXHJcbiAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHRoaXMuZm9udFNpemVUb0ZpdCgpKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gcHJvbXB0ZXIgZml0cyBpbiAgcHJvbXB0ZXIgY29udGFpbmVyLCBmb250IHNpemUgc2hvdWxkIGJlIGZpbmVcclxuXHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJwckRpc3BsYXk6IFwiK3RoaXMucHJEaXNwbGF5KVxyXG5cclxuICAgICAgICAgICAgLy9pZih0aGlzLmNvbnRlbnRDaGVja2VkICYmICEgdGhpcy5mb250U2l6ZUNoYW5nZSkge1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiRGlzcGxheSFcIilcclxuICAgICAgICAgICAgLy8gc2V0IHByb21wdGVyIHZpc2libGUgbm93XHJcbiAgICAgICAgICAgIHRoaXMucHJEaXNwbGF5ID0gJ3Zpc2libGUnXHJcbiAgICAgICAgICAgIC8vfVxyXG4gICAgICAgICAgICB0aGlzLmZvbnRTaXplQ2hhbmdlID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vY29uc29sZS5sb2coXCJQcm9tcHQgdGV4dCB3aWR0aDogXCIrdGV4dFNpemUud2lkdGgrXCIgXCIrdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoK1wieFwiK3RoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHJcbiAgc2VsZWN0b3I6ICdhcHAtc3BycHJvbXB0aW5nY29udGFpbmVyJyxcclxuXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxzcHItcmVjaW5zdHJ1Y3Rpb25zIFtzZWxlY3RlZEl0ZW1JZHhdPVwic2VsZWN0ZWRJdGVtSWR4XCIgW2l0ZW1Db3VudF09XCJpdGVtQ291bnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3JlY2luc3RydWN0aW9uc109XCJwcm9tcHRJdGVtPy5yZWNpbnN0cnVjdGlvbnM/LnJlY2luc3RydWN0aW9uc1wiPjwvc3ByLXJlY2luc3RydWN0aW9ucz5cclxuICAgIDxhcHAtc3BycHJvbXB0Y29udGFpbmVyIFtwcm9qZWN0TmFtZV09XCJwcm9qZWN0TmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWVkaWFpdGVtc109XCJzaG93UHJvbXB0Pyhwcm9tcHRJdGVtP3Byb21wdEl0ZW0ubWVkaWFpdGVtczpudWxsKTpudWxsXCI+PC9hcHAtc3BycHJvbXB0Y29udGFpbmVyPlxyXG5cclxuICBgXHJcbiAgLFxyXG4gIHN0eWxlczogW2A6aG9zdCB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBmbGV4OiAzOyAvKiB0aGUgY29udGFpbmVyIGNvbnN1bWVzIGFsbCBhdmFpbGFibGUgc3BhY2UgKi9cclxuICAgIHBhZGRpbmc6IDEwcHQ7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgLyogYWxpZ24gaG9yaXpvbnRhbCBjZW50ZXIqL1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjsgLyogYWxpZ24gdmVydGljYWwgY2VudGVyICovXHJcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgbWluLWhlaWdodDogMHB4O1xyXG4gIH1cclxuICBgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvbXB0aW5nQ29udGFpbmVyIHtcclxuICBASW5wdXQoKSBwcm9qZWN0TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHByb21wdEl0ZW06IFByb21wdEl0ZW18bnVsbD1udWxsO1xyXG4gIEBJbnB1dCgpIHNob3dQcm9tcHQ6IGJvb2xlYW49ZmFsc2U7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtSWR4ITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGl0ZW1Db3VudDogbnVtYmVyfHVuZGVmaW5lZDtcclxuXHJcbiAgQElucHV0KCkgdHJhbnNwb3J0QWN0aW9ucyE6IFRyYW5zcG9ydEFjdGlvbnM7XHJcblxyXG4gIHByaXZhdGUgZSE6IEhUTUxEaXZFbGVtZW50O1xyXG4gIHByaXZhdGUgc3RhcnRYOiBudW1iZXIgfCBudWxsID0gbnVsbFxyXG4gIHByaXZhdGUgdG91Y2hTdGFydFRpbWVTdGFtcDogbnVtYmVyIHwgbnVsbD1udWxsO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogRWxlbWVudFJlZikge1xyXG4gICAgdHlwZSBUb3VjaFN0YXJ0ID0ge31cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5lID0gdGhpcy5yZWYubmF0aXZlRWxlbWVudDtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBbJyRldmVudCddKVxyXG4gIG9uVG91Y2hzdGFydChldjogVG91Y2hFdmVudCB8IGFueSkge1xyXG4gICAgLy9jb25zb2xlLmxvZyhcIlRvdWNoIHN0YXJ0ISBcIilcclxuICAgIGlmICghKHRoaXMudHJhbnNwb3J0QWN0aW9ucy5md2RBY3Rpb24uZGlzYWJsZWQgJiZcclxuICAgICAgdGhpcy50cmFuc3BvcnRBY3Rpb25zLmJ3ZEFjdGlvbi5kaXNhYmxlZCAmJlxyXG4gICAgICB0aGlzLnRyYW5zcG9ydEFjdGlvbnMubmV4dEFjdGlvbi5kaXNhYmxlZCkpIHtcclxuICAgICAgbGV0IHRhcmdldFRvdWNoZXNMZW4gPSBldi50YXJnZXRUb3VjaGVzLmxlbmd0aDtcclxuICAgICAgLy9mb3IobGV0IHRpPTA7dGk8ZXYudGFyZ2V0VG91Y2hlcy5sZW5ndGg7dGkrKyl7XHJcbiAgICAgIC8vbGV0IHQ9ZXYudGFyZ2V0VG91Y2hlcy5pdGVtKHRpKTtcclxuICAgICAgLy8gQWxsIHggdmFsdWVzIGFyZSB0aGUgc2FtZSA/P1xyXG4gICAgICAvL2NvbnNvbGUubG9nKFwiVG91Y2ggI1wiK3RpK1wiOiBwYWdlWDogXCIrdC5wYWdlWCtcIiBjbGllbnRYOiBcIit0LmNsaWVudFgrXCIgc2NyZWVuWDogXCIrdC5zY3JlZW5YKVxyXG4gICAgICAvL31cclxuICAgICAgaWYgKHRhcmdldFRvdWNoZXNMZW4gPT0gMSkge1xyXG4gICAgICAgIC8vIHNpbmdsZSB0b3VjaFxyXG4gICAgICAgIGxldCB0ID0gZXYudGFyZ2V0VG91Y2hlcy5pdGVtKDApO1xyXG4gICAgICAgIGlmICh0KSB7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0WCA9IE1hdGgucm91bmQodC5zY3JlZW5YKTtcclxuICAgICAgICAgIHRoaXMudG91Y2hTdGFydFRpbWVTdGFtcCA9IGV2LnRpbWVTdGFtcDtcclxuICAgICAgICAgIHRoaXMuZS5zdHlsZS50cmFuc2l0aW9uID0gJ25vbmUnO1xyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhcIlRvdWNoIHN0YXJ0IHg6IFwiK3RoaXMuc3RhcnRYKVxyXG4gICAgICAgICAgLy9ldi5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3RvdWNoZW5kJywgWyckZXZlbnQnXSlcclxuICBvblRvdWNoRW5kKGV2OiBUb3VjaEV2ZW50IHwgYW55KSB7XHJcbiAgICAvL2NvbnNvbGUubG9nKFwiVG91Y2ggZW5kIVwiKVxyXG4gICAgLy8gUmVzZXQgb2Zmc2V0IHNoaWZ0XHJcbiAgICBpZiAoISh0aGlzLnRyYW5zcG9ydEFjdGlvbnMuZndkQWN0aW9uLmRpc2FibGVkICYmIHRoaXMudHJhbnNwb3J0QWN0aW9ucy5id2RBY3Rpb24uZGlzYWJsZWQgJiZcclxuICAgICAgdGhpcy50cmFuc3BvcnRBY3Rpb25zLm5leHRBY3Rpb24uZGlzYWJsZWQpKSB7XHJcblxyXG4gICAgICBsZXQgY2hhbmdlZFRvdWNoZXNMZW4gPSBldi5jaGFuZ2VkVG91Y2hlcy5sZW5ndGg7XHJcbiAgICAgIC8vY29uc29sZS5sb2coY2hhbmdlZFRvdWNoZXNMZW4rXCIgXCIrdGhpcy5zdGFydFgpXHJcbiAgICAgIGlmIChjaGFuZ2VkVG91Y2hlc0xlbiA9PSAxICYmIHRoaXMuc3RhcnRYKSB7XHJcbiAgICAgICAgLy8gc2luZ2xlIHRvdWNoXHJcbiAgICAgICAgbGV0IHQgPSBldi5jaGFuZ2VkVG91Y2hlcy5pdGVtKDApO1xyXG4gICAgICAgIGlmICh0KSB7XHJcbiAgICAgICAgICBsZXQgZGVsdGFYID0gTWF0aC5yb3VuZCh0LmNsaWVudFggLSB0aGlzLnN0YXJ0WCk7XHJcbiAgICAgICAgICBsZXQgdG91Y2hNb3ZlU3BlZWQgPSAwO1xyXG4gICAgICAgICAgaWYgKHRoaXMudG91Y2hTdGFydFRpbWVTdGFtcCkge1xyXG4gICAgICAgICAgICB0b3VjaE1vdmVTcGVlZCA9IGRlbHRhWCAvIChldi50aW1lU3RhbXAgLSB0aGlzLnRvdWNoU3RhcnRUaW1lU3RhbXApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IGZ1dHVyZURlbHRhWCA9IGRlbHRhWCArICg4MDAgKiB0b3VjaE1vdmVTcGVlZCk7XHJcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiRGVsdGFYOiBcIiArIGRlbHRhWCArIFwiIEZ1dHVyZSBkZWx0YVg6IFwiICsgZnV0dXJlRGVsdGFYICsgXCIgIHdpZHRoOiBcIiArIHRoaXMuZS5vZmZzZXRXaWR0aClcclxuICAgICAgICAgIGlmIChmdXR1cmVEZWx0YVggPiB0aGlzLmUub2Zmc2V0V2lkdGggLyAyKSB7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJTd2lwZSByaWdodCBkZXRlY3RlZCEhXCIpXHJcbiAgICAgICAgICAgIC8vdGhpcy5zd2lwZWRSaWdodC5lbWl0KClcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnRyYW5zcG9ydEFjdGlvbnMuYndkQWN0aW9uLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50cmFuc3BvcnRBY3Rpb25zLmJ3ZEFjdGlvbi5wZXJmb3JtKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5lLnN0eWxlLmxlZnQgPSAtdGhpcy5lLm9mZnNldExlZnQgKyBcInB4XCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoLWZ1dHVyZURlbHRhWCA+IHRoaXMuZS5vZmZzZXRXaWR0aCAvIDIpIHtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIlN3aXBlIGxlZnQgZGV0ZWN0ZWQhIVwiKVxyXG4gICAgICAgICAgICB0aGlzLmUuc3R5bGUubGVmdCA9IC10aGlzLmUub2Zmc2V0TGVmdCArIFwicHhcIjtcclxuICAgICAgICAgICAgLy90aGlzLnN3aXBlZExlZnQuZW1pdCgpXHJcbiAgICAgICAgICAgIGlmICghdGhpcy50cmFuc3BvcnRBY3Rpb25zLm5leHRBY3Rpb24uZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLnRyYW5zcG9ydEFjdGlvbnMubmV4dEFjdGlvbi5wZXJmb3JtKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMudHJhbnNwb3J0QWN0aW9ucy5md2RBY3Rpb24uZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLnRyYW5zcG9ydEFjdGlvbnMuZndkQWN0aW9uLnBlcmZvcm0oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyByZXNldCBhbmltYXRlZFxyXG4gICAgICB0aGlzLmUuc3R5bGUudHJhbnNpdGlvbiA9IFwibGVmdCAwLjhzXCI7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0YXJ0WCA9IG51bGw7XHJcbiAgICB0aGlzLnRvdWNoU3RhcnRUaW1lU3RhbXAgPSBudWxsO1xyXG4gICAgdGhpcy5lLnN0eWxlLmxlZnQgPSBcIjBweFwiO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcigndG91Y2htb3ZlJywgWyckZXZlbnQnXSlcclxuICBvblRvdWNoTW92ZShldjogVG91Y2hFdmVudCB8IGFueSkge1xyXG4gICAgLy9jb25zb2xlLmxvZyhcIlRvdWNoIG1vdmUhXCIpXHJcbiAgICBpZiAoISh0aGlzLnRyYW5zcG9ydEFjdGlvbnMuZndkQWN0aW9uLmRpc2FibGVkICYmIHRoaXMudHJhbnNwb3J0QWN0aW9ucy5id2RBY3Rpb24uZGlzYWJsZWQgJiZcclxuICAgICAgdGhpcy50cmFuc3BvcnRBY3Rpb25zLm5leHRBY3Rpb24uZGlzYWJsZWQpKSB7XHJcbiAgICAgIGxldCB0YXJnZXRUb3VjaGVzTGVuID0gZXYudGFyZ2V0VG91Y2hlcy5sZW5ndGg7XHJcbiAgICAgIGlmICh0YXJnZXRUb3VjaGVzTGVuID09IDEgJiYgdGhpcy5zdGFydFgpIHtcclxuICAgICAgICAvLyBzaW5nbGUgdG91Y2hcclxuICAgICAgICBsZXQgdCA9IGV2LnRhcmdldFRvdWNoZXMuaXRlbSgwKTtcclxuICAgICAgICBpZiAodCkge1xyXG4gICAgICAgICAgbGV0IGRlbHRhWCA9IE1hdGgucm91bmQodC5zY3JlZW5YIC0gdGhpcy5zdGFydFgpO1xyXG4gICAgICAgICAgdGhpcy5lLnN0eWxlLmxlZnQgPSBkZWx0YVggKyBcInB4XCI7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIlRvdWNoIG1vdmUgZGVsdGEgeDogXCIrZGVsdGFYKVxyXG4gICAgICAgIH1cclxuICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCd0b3VjaGNhbmNlbCcsIFsnJGV2ZW50J10pXHJcbiAgb25Ub3VjaENhbmNlbChldjogVG91Y2hFdmVudCB8IGFueSkge1xyXG4gICAgLy9jb25zb2xlLmxvZyhcIlRvdWNoIGNhbmNlbCFcIilcclxuICAgIHRoaXMuZS5zdHlsZS5sZWZ0ID0gXCIwcHhcIjtcclxuICAgIC8vZXYucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcblxyXG4gIHNlbGVjdG9yOiAnYXBwLXNwcnByb21wdGluZycsXHJcblxyXG4gIHRlbXBsYXRlOiBgXHJcblxyXG4gICAgPGFwcC1zaW1wbGV0cmFmZmljbGlnaHQgW3N0YXR1c109XCJzdGFydFN0b3BTaWduYWxTdGF0ZVwiPjwvYXBwLXNpbXBsZXRyYWZmaWNsaWdodD5cclxuICAgIDxhcHAtc3BycHJvbXB0aW5nY29udGFpbmVyIFtwcm9qZWN0TmFtZV09XCJwcm9qZWN0TmFtZVwiIFtwcm9tcHRJdGVtXT1cInByb21wdEl0ZW1cIiBbc2hvd1Byb21wdF09XCJzaG93UHJvbXB0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtQ291bnRdPVwiaXRlbXM/Lmxlbmd0aFwiIFtzZWxlY3RlZEl0ZW1JZHhdPVwic2VsZWN0ZWRJdGVtSWR4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0cmFuc3BvcnRBY3Rpb25zXT1cInRyYW5zcG9ydEFjdGlvbnNcIj48L2FwcC1zcHJwcm9tcHRpbmdjb250YWluZXI+XHJcbiAgICA8YXBwLXNwcnByb2dyZXNzICpuZ0lmPVwiIXNjcmVlblhzXCIgW2l0ZW1zXT1cIml0ZW1zXCIgW3NlbGVjdGVkSXRlbUlkeF09XCJzZWxlY3RlZEl0ZW1JZHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAob25Sb3dTZWxlY3QpPVwiaXRlbVNlbGVjdCgkZXZlbnQpXCI+PC9hcHAtc3BycHJvZ3Jlc3M+XHJcbiAgICA8ZGl2ICNhc0N0IFtjbGFzcy5hY3RpdmVdPVwiIWF1ZGlvU2lnbmFsQ29sbGFwc2VkICYmICFzY3JlZW5Yc1wiPlxyXG5cclxuICAgICAgPGFwcC1hdWRpb2Rpc3BsYXkgI2F1ZGlvU2lnbmFsQ29udGFpbmVyIFtjbGFzcy5hY3RpdmVdPVwiIWF1ZGlvU2lnbmFsQ29sbGFwc2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2F1ZGlvQ2xpcF09XCJkaXNwbGF5QXVkaW9DbGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BsYXlTdGFydEFjdGlvbl09XCJwbGF5U3RhcnRBY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxheVNlbGVjdGlvbkFjdGlvbl09XCJwbGF5U2VsZWN0aW9uQWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9QbGF5T25TZWxlY3RUb2dnbGVBY3Rpb25dPVwiYXV0b1BsYXlPblNlbGVjdFRvZ2dsZUFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGF5U3RvcEFjdGlvbl09XCJwbGF5U3RvcEFjdGlvblwiPjwvYXBwLWF1ZGlvZGlzcGxheT5cclxuXHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuXHJcbiAgYCxcclxuICBzdHlsZXM6IFtgOmhvc3Qge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIGJhY2tncm91bmQ6IGxpZ2h0Z3JleTtcclxuICAgIHdpZHRoOiAxMDAlOyAvKiB1c2UgYWxsIGhvcml6b250YWwgYXZhaWxhYmxlIHNwYWNlICovXHJcbiAgICBmbGV4OiAxOyAvKiAuLi4gYW5kIGZpbGwgcmVzdCBvZiB2ZXJ0aWNhbCBhdmFpbGFibGUgc3BhY2UgKG90aGVyIGNvbXBvbmVudHMgaGF2ZSBmbGV4IDApICovXHJcblxyXG4gICAgLyogV29ya2Fyb3VuZCBmb3IgRmlyZWZveFxyXG4gICAgSWYgdGhlIHByb2dyZXNzIHRhYmxlIGdldHMgbG9uZyAoc2NyaXB0IHdpdGggbWFueSBpdGVtcykgRkYgaW5jcmVhc2VzIHRoZSBoZWlnaHQgb2YgdGhlIG92ZXJmbG93IHByb2dyZXNzQ29udGFpbmVyIGFuZFxyXG4gICAgdGhlIHdob2xlIGFwcCBkb2VzIG5vdCBmaXQgaW50byB0aGUgcGFnZSBhbnltb3JlLiBUaGUgYXBwIG92ZXJmbG93cyBhbmQgc2hvd3MgYSB2ZXJ0aWNhbCBzY3JvbGxiYXIgZm9yIHRoZSB3aG9sZSBhcHAuXHJcbiAgICBTZWUgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yODYzNjgzMi9maXJlZm94LW92ZXJmbG93LXktbm90LXdvcmtpbmctd2l0aC1uZXN0ZWQtZmxleGJveFxyXG4gICAgKi9cclxuICAgIG1pbi1oZWlnaHQ6IDBweDtcclxuXHJcbiAgICBkaXNwbGF5OiBmbGV4OyAvKiBmbGV4IGNvbnRhaW5lcjogbGVmdCB0cmFmZmljIGxpZ2h0LCByaWdodCBwcm9tcHRlciAoY29udGFpbmVyKSAqL1xyXG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuICAgIGZsZXgtd3JhcDogbm93cmFwOyAvKiB3cmFwIGNvdWxkIGNvbXBsZXRlbHkgZGVzdHJveSB0aGUgbGF5b3V0ICovXHJcbiAgfWAsIGBcclxuICAgIGFwcC1zaW1wbGV0cmFmZmljbGlnaHQge1xyXG4gICAgICBtYXJnaW46IDEwcHg7XHJcbiAgICAgIG1pbi1oZWlnaHQ6IDBweDtcclxuICAgICAgei1pbmRleDogMztcclxuICAgIH1cclxuICBgLCBgXHJcbiAgICBhcHAtc3BycHJvZ3Jlc3Mge1xyXG4gICAgICB6LWluZGV4OiAzO1xyXG4gICAgfVxyXG4gIGAsIGBcclxuICAgIGRpdiB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHJcblxyXG4gICAgICAvKiBoZWlnaHQ6IDUwJTsgKi9cclxuICAgICAgLyogd2lkdGg6IDEwMCU7ICovXHJcblxyXG4gICAgICAvKiBvdmVyZmxvdzogaGlkZGVuOyAqL1xyXG5cclxuICAgICAgLyogbWFyZ2luOiAyMHB4OyAqL1xyXG4gICAgICAvKiBib3JkZXI6IDIwcHg7ICovXHJcbiAgICAgIHotaW5kZXg6IDU7XHJcbiAgICAgIC8qYmFja2dyb3VuZC1jb2xvcjogcmVkOyAqL1xyXG4gICAgfWAsIGBcclxuICAgIGRpdi5hY3RpdmUge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIGJvdHRvbTogMHB4O1xyXG4gICAgICAvKmxlZnQ6IDBweDsgKi9cclxuXHJcbiAgICAgIGhlaWdodDogOTAlO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICAgICBwYWRkaW5nOiAwcHg7XHJcbiAgICAgIC8qIG1hcmdpbjogMjBweDsgKi9cclxuICAgICAgLyogYm9yZGVyOiAyMHB4OyAqL1xyXG4gICAgICB6LWluZGV4OiA1O1xyXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApXHJcblxyXG4gICAgfWBcclxuICBdXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvbXB0aW5nIGV4dGVuZHMgUmVzcG9uc2l2ZUNvbXBvbmVudHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGJwbzpCcmVha3BvaW50T2JzZXJ2ZXIpIHtcclxuICAgIHN1cGVyKGJwbyk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKFNpbXBsZVRyYWZmaWNMaWdodCwgeyBzdGF0aWM6IHRydWUgfSkgc2ltcGxlVHJhZmZpY0xpZ2h0ITogU2ltcGxlVHJhZmZpY0xpZ2h0O1xyXG4gIEBWaWV3Q2hpbGQoQXVkaW9EaXNwbGF5LCB7IHN0YXRpYzogdHJ1ZSB9KSBhdWRpb0Rpc3BsYXkhOiBBdWRpb0Rpc3BsYXk7XHJcbiAgQElucHV0KCkgcHJvamVjdE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBzdGFydFN0b3BTaWduYWxTdGF0ZSE6IFN0YXJ0U3RvcFNpZ25hbFN0YXRlO1xyXG4gIEBJbnB1dCgpIHByb21wdEl0ZW06IFByb21wdEl0ZW0gfCBudWxsPW51bGw7XHJcbiAgQElucHV0KCkgc2hvd1Byb21wdDogYm9vbGVhbj1mYWxzZTtcclxuICBASW5wdXQoKSBpdGVtczogQXJyYXk8SXRlbT58dW5kZWZpbmVkPXVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBzZWxlY3RlZEl0ZW1JZHghOiBudW1iZXI7XHJcbiAgQElucHV0KCkgdHJhbnNwb3J0QWN0aW9ucyE6IFRyYW5zcG9ydEFjdGlvbnM7XHJcbiAgQElucHV0KCkgZW5hYmxlRG93bmxvYWQ6IGJvb2xlYW49ZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIGF1ZGlvU2lnbmFsQ29sbGFwc2VkOiBib29sZWFuPXRydWU7XHJcbiAgQElucHV0KCkgZGlzcGxheUF1ZGlvQ2xpcDogQXVkaW9DbGlwIHwgbnVsbD1udWxsO1xyXG4gIEBJbnB1dCgpIHBsYXlTdGFydEFjdGlvbjogQWN0aW9uPHZvaWQ+fHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBwbGF5U2VsZWN0aW9uQWN0aW9uOiBBY3Rpb248dm9pZD58dW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGF1dG9QbGF5T25TZWxlY3RUb2dnbGVBY3Rpb246QWN0aW9uPGJvb2xlYW4+fHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBwbGF5U3RvcEFjdGlvbjogQWN0aW9uPHZvaWQ+fHVuZGVmaW5lZDtcclxuICBAT3V0cHV0KCkgb25JdGVtU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbiAgQE91dHB1dCgpIG9uTmV4dEl0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uUHJldkl0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGl0ZW1TZWxlY3Qocm93SWR4OiBudW1iZXIpIHtcclxuICAgIHRoaXMub25JdGVtU2VsZWN0LmVtaXQocm93SWR4KTtcclxuICB9XHJcblxyXG4gIG5leHRJdGVtKCkge1xyXG4gICAgdGhpcy5vbk5leHRJdGVtLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHByZXZJdGVtKCkge1xyXG4gICAgdGhpcy5vblByZXZJdGVtLmVtaXQoKTtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output, ViewChild } from "@angular/core";
|
|
2
2
|
import { RecordingList } from "./recording_list";
|
|
3
3
|
import { AudioDisplay } from "../../audio/audio_display";
|
|
4
|
+
import { ResponsiveComponent } from "../../ui/responsive_component";
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/
|
|
6
|
+
import * as i1 from "@angular/cdk/layout";
|
|
6
7
|
import * as i2 from "../../audio/audio_display";
|
|
7
8
|
import * as i3 from "./recording_list";
|
|
8
|
-
export class RecorderCombiPane {
|
|
9
|
-
constructor() {
|
|
9
|
+
export class RecorderCombiPane extends ResponsiveComponent {
|
|
10
|
+
constructor(bpo) {
|
|
11
|
+
super(bpo);
|
|
12
|
+
this.bpo = bpo;
|
|
10
13
|
this.selectDisabled = false;
|
|
11
14
|
this.selectedRecordingFileChanged = new EventEmitter();
|
|
12
15
|
this.selectedRecordingFile = null;
|
|
@@ -28,12 +31,12 @@ export class RecorderCombiPane {
|
|
|
28
31
|
this.recordingListComp.selectTop();
|
|
29
32
|
}
|
|
30
33
|
}
|
|
31
|
-
RecorderCombiPane.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecorderCombiPane, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
-
RecorderCombiPane.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: RecorderCombiPane, selector: "app-recordercombipane", inputs: { selectDisabled: "selectDisabled", selectedRecordingFile: "selectedRecordingFile", audioSignalCollapsed: "audioSignalCollapsed", displayAudioClip: "displayAudioClip", playStartAction: "playStartAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", playStopAction: "playStopAction" }, outputs: { selectedRecordingFileChanged: "selectedRecordingFileChanged" }, viewQueries: [{ propertyName: "recordingListComp", first: true, predicate: RecordingList, descendants: true }, { propertyName: "audioDisplay", first: true, predicate: AudioDisplay, descendants: true, static: true }], ngImport: i0, template: `
|
|
34
|
+
RecorderCombiPane.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecorderCombiPane, deps: [{ token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
|
|
35
|
+
RecorderCombiPane.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: RecorderCombiPane, selector: "app-recordercombipane", inputs: { selectDisabled: "selectDisabled", selectedRecordingFile: "selectedRecordingFile", audioSignalCollapsed: "audioSignalCollapsed", displayAudioClip: "displayAudioClip", playStartAction: "playStartAction", playSelectionAction: "playSelectionAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction", playStopAction: "playStopAction" }, outputs: { selectedRecordingFileChanged: "selectedRecordingFileChanged" }, viewQueries: [{ propertyName: "recordingListComp", first: true, predicate: RecordingList, descendants: true }, { propertyName: "audioDisplay", first: true, predicate: AudioDisplay, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
33
36
|
<div class="scrollList">
|
|
34
37
|
<app-recordinglist [selectedRecordingFile]="selectedRecordingFile" [selectDisabled]="selectDisabled" (selectedRecordingFileChanged)="selectRecordingFile($event)"></app-recordinglist>
|
|
35
38
|
</div>
|
|
36
|
-
<div class="collapsable"
|
|
39
|
+
<div class="collapsable" #asCt [class.active]="!audioSignalCollapsed && !screenXs">
|
|
37
40
|
<app-audiodisplay #audioSignalContainer [class.active]="!audioSignalCollapsed"
|
|
38
41
|
[audioClip]="displayAudioClip"
|
|
39
42
|
[playStartAction]="playStartAction"
|
|
@@ -41,14 +44,14 @@ RecorderCombiPane.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
|
|
|
41
44
|
[autoPlayOnSelectToggleAction]="autoPlayOnSelectToggleAction"
|
|
42
45
|
[playStopAction]="playStopAction"></app-audiodisplay>
|
|
43
46
|
</div>
|
|
44
|
-
`, isInline: true, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}\n", ":host{background-color:#ff0;position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;min-height:0px}\n", ".scrollList{margin:0;padding:0;background:lightgrey;width:100%;height:100%;overflow-y:auto}\n", ".collapsable{display:none;position:absolute;z-index:5}\n", ".collapsable.active{display:flex;position:absolute;bottom:0px;height:90%;width:100%;overflow:hidden;padding:0;z-index:200;box-sizing:border-box;background-color:#0000}\n"], dependencies: [{ kind: "
|
|
47
|
+
`, isInline: true, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}.flexFill{margin:0;width:100%;height:100%;min-width:100%;min-height:100%}\n", ":host{background-color:#ff0;position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;min-height:0px}\n", ".scrollList{margin:0;padding:0;background:lightgrey;width:100%;height:100%;overflow-y:auto}\n", ".collapsable{display:none;position:absolute;z-index:5}\n", ".collapsable.active{display:flex;position:absolute;bottom:0px;height:90%;width:100%;overflow:hidden;padding:0;z-index:200;box-sizing:border-box;background-color:#0000}\n"], dependencies: [{ kind: "component", type: i2.AudioDisplay, selector: "app-audiodisplay", inputs: ["playStartAction", "playStopAction", "playSelectionAction", "autoPlayOnSelectToggleAction", "audioData", "audioClip"] }, { kind: "component", type: i3.RecordingList, selector: "app-recordinglist", inputs: ["selectDisabled", "selectedRecordingFile"], outputs: ["selectedRecordingFileChanged"] }] });
|
|
45
48
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecorderCombiPane, decorators: [{
|
|
46
49
|
type: Component,
|
|
47
50
|
args: [{ selector: 'app-recordercombipane', template: `
|
|
48
51
|
<div class="scrollList">
|
|
49
52
|
<app-recordinglist [selectedRecordingFile]="selectedRecordingFile" [selectDisabled]="selectDisabled" (selectedRecordingFileChanged)="selectRecordingFile($event)"></app-recordinglist>
|
|
50
53
|
</div>
|
|
51
|
-
<div class="collapsable"
|
|
54
|
+
<div class="collapsable" #asCt [class.active]="!audioSignalCollapsed && !screenXs">
|
|
52
55
|
<app-audiodisplay #audioSignalContainer [class.active]="!audioSignalCollapsed"
|
|
53
56
|
[audioClip]="displayAudioClip"
|
|
54
57
|
[playStartAction]="playStartAction"
|
|
@@ -56,8 +59,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
56
59
|
[autoPlayOnSelectToggleAction]="autoPlayOnSelectToggleAction"
|
|
57
60
|
[playStopAction]="playStopAction"></app-audiodisplay>
|
|
58
61
|
</div>
|
|
59
|
-
`, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}\n", ":host{background-color:#ff0;position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;min-height:0px}\n", ".scrollList{margin:0;padding:0;background:lightgrey;width:100%;height:100%;overflow-y:auto}\n", ".collapsable{display:none;position:absolute;z-index:5}\n", ".collapsable.active{display:flex;position:absolute;bottom:0px;height:90%;width:100%;overflow:hidden;padding:0;z-index:200;box-sizing:border-box;background-color:#0000}\n"] }]
|
|
60
|
-
}], ctorParameters: function () { return []; }, propDecorators: { recordingListComp: [{
|
|
62
|
+
`, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}.flexFill{margin:0;width:100%;height:100%;min-width:100%;min-height:100%}\n", ":host{background-color:#ff0;position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;min-height:0px}\n", ".scrollList{margin:0;padding:0;background:lightgrey;width:100%;height:100%;overflow-y:auto}\n", ".collapsable{display:none;position:absolute;z-index:5}\n", ".collapsable.active{display:flex;position:absolute;bottom:0px;height:90%;width:100%;overflow:hidden;padding:0;z-index:200;box-sizing:border-box;background-color:#0000}\n"] }]
|
|
63
|
+
}], ctorParameters: function () { return [{ type: i1.BreakpointObserver }]; }, propDecorators: { recordingListComp: [{
|
|
61
64
|
type: ViewChild,
|
|
62
65
|
args: [RecordingList]
|
|
63
66
|
}], selectDisabled: [{
|
|
@@ -82,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
82
85
|
}], playStopAction: [{
|
|
83
86
|
type: Input
|
|
84
87
|
}] } });
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkZXJfY29tYmlfcGFuZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWVjaHJlY29yZGVybmcvc3JjL2xpYi9zcGVlY2hyZWNvcmRlci9zZXNzaW9uL3JlY29yZGVyX2NvbWJpX3BhbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBSy9GLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUcvQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFHdkQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sK0JBQStCLENBQUM7Ozs7O0FBK0RsRSxNQUFNLE9BQU8saUJBQWtCLFNBQVEsbUJBQW1CO0lBZXhELFlBQXNCLEdBQXNCO1FBQzFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQURTLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBWm5DLG1CQUFjLEdBQVMsS0FBSyxDQUFDO1FBQzVCLGlDQUE0QixHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBQ2xFLDBCQUFxQixHQUFvQixJQUFJLENBQUM7UUFHOUMseUJBQW9CLEdBQVUsSUFBSSxDQUFDO1FBQ25DLHFCQUFnQixHQUFtQixJQUFJLENBQUM7SUFRakQsQ0FBQztJQUVELGVBQWU7SUFFZixDQUFDO0lBRUQsVUFBVSxDQUFDLEVBQWdCO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELG1CQUFtQixDQUFDLE9BQXFCLEVBQUMsR0FBd0I7UUFDaEUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBR0QsbUJBQW1CLENBQUMsRUFBZ0I7UUFDbEMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQyxDQUFDOzsrR0F0Q1UsaUJBQWlCO21HQUFqQixpQkFBaUIsNmhCQUVqQixhQUFhLCtFQUtiLFlBQVkscUZBL0RiOzs7Ozs7Ozs7Ozs7R0FZVDs0RkE0Q1UsaUJBQWlCO2tCQTVEN0IsU0FBUzsrQkFFRSx1QkFBdUIsWUFFdkI7Ozs7Ozs7Ozs7OztHQVlUO3lHQThDeUIsaUJBQWlCO3NCQUExQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ2YsY0FBYztzQkFBdEIsS0FBSztnQkFDSSw0QkFBNEI7c0JBQXJDLE1BQU07Z0JBQ0UscUJBQXFCO3NCQUE3QixLQUFLO2dCQUVxQyxZQUFZO3NCQUF0RCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ2hDLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csNEJBQTRCO3NCQUFwQyxLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7UmVjb3JkaW5nRmlsZSwgU3ByUmVjb3JkaW5nRmlsZX0gZnJvbSBcIi4uL3JlY29yZGluZ1wiO1xyXG5pbXBvcnQge01lZGlhVXRpbHN9IGZyb20gXCIuLi8uLi9tZWRpYS91dGlsc1wiO1xyXG5pbXBvcnQge01hdFRhYmxlLCBNYXRUYWJsZURhdGFTb3VyY2V9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90YWJsZVwiO1xyXG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7UmVjb3JkaW5nTGlzdH0gZnJvbSBcIi4vcmVjb3JkaW5nX2xpc3RcIjtcclxuaW1wb3J0IHtBdWRpb0NsaXB9IGZyb20gXCIuLi8uLi9hdWRpby9wZXJzaXN0b3JcIjtcclxuaW1wb3J0IHtBY3Rpb259IGZyb20gXCIuLi8uLi9hY3Rpb24vYWN0aW9uXCI7XHJcbmltcG9ydCB7QXVkaW9EaXNwbGF5fSBmcm9tIFwiLi4vLi4vYXVkaW8vYXVkaW9fZGlzcGxheVwiO1xyXG5pbXBvcnQge1JlY0ZpbGVzQ2FjaGV9IGZyb20gXCIuL3JlY29yZGluZ19maWxlX2NhY2hlXCI7XHJcbmltcG9ydCB7QXVkaW9EYXRhSG9sZGVyfSBmcm9tIFwiLi4vLi4vYXVkaW8vYXVkaW9fZGF0YV9ob2xkZXJcIjtcclxuaW1wb3J0IHtSZXNwb25zaXZlQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vdWkvcmVzcG9uc2l2ZV9jb21wb25lbnRcIjtcclxuaW1wb3J0IHtCcmVha3BvaW50T2JzZXJ2ZXJ9IGZyb20gXCJAYW5ndWxhci9jZGsvbGF5b3V0XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHJcbiAgc2VsZWN0b3I6ICdhcHAtcmVjb3JkZXJjb21iaXBhbmUnLFxyXG5cclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cInNjcm9sbExpc3RcIj5cclxuICAgICAgICA8YXBwLXJlY29yZGluZ2xpc3QgW3NlbGVjdGVkUmVjb3JkaW5nRmlsZV09XCJzZWxlY3RlZFJlY29yZGluZ0ZpbGVcIiBbc2VsZWN0RGlzYWJsZWRdPVwic2VsZWN0RGlzYWJsZWRcIiAoc2VsZWN0ZWRSZWNvcmRpbmdGaWxlQ2hhbmdlZCk9XCJzZWxlY3RSZWNvcmRpbmdGaWxlKCRldmVudClcIj48L2FwcC1yZWNvcmRpbmdsaXN0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sbGFwc2FibGVcIiAgI2FzQ3QgW2NsYXNzLmFjdGl2ZV09XCIhYXVkaW9TaWduYWxDb2xsYXBzZWQgJiYgIXNjcmVlblhzXCI+XHJcbiAgICAgIDxhcHAtYXVkaW9kaXNwbGF5ICNhdWRpb1NpZ25hbENvbnRhaW5lciBbY2xhc3MuYWN0aXZlXT1cIiFhdWRpb1NpZ25hbENvbGxhcHNlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdWRpb0NsaXBdPVwiZGlzcGxheUF1ZGlvQ2xpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGF5U3RhcnRBY3Rpb25dPVwicGxheVN0YXJ0QWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BsYXlTZWxlY3Rpb25BY3Rpb25dPVwicGxheVNlbGVjdGlvbkFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvUGxheU9uU2VsZWN0VG9nZ2xlQWN0aW9uXT1cImF1dG9QbGF5T25TZWxlY3RUb2dnbGVBY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxheVN0b3BBY3Rpb25dPVwicGxheVN0b3BBY3Rpb25cIj48L2FwcC1hdWRpb2Rpc3BsYXk+XHJcbiAgICA8L2Rpdj5cclxuICBgLFxyXG4gIHN0eWxlczogW2A6aG9zdCB7XHJcbiAgIGJhY2tncm91bmQtY29sb3I6IHllbGxvdztcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICBiYWNrZ3JvdW5kOiBsaWdodGdyZXk7XHJcbiAgICB3aWR0aDogMTAwJTsgLyogdXNlIGFsbCBob3Jpem9udGFsIGF2YWlsYWJsZSBzcGFjZSAqL1xyXG4gICAgZmxleDogMTsgLyogLi4uIGFuZCBmaWxsIHJlc3Qgb2YgdmVydGljYWwgYXZhaWxhYmxlIHNwYWNlIChvdGhlciBjb21wb25lbnRzIGhhdmUgZmxleCAwKSAqL1xyXG4gICAgLyogV29ya2Fyb3VuZCBmb3IgRmlyZWZveFxyXG4gICAgSWYgdGhlIHByb2dyZXNzIHRhYmxlIGdldHMgbG9uZyAoc2NyaXB0IHdpdGggbWFueSBpdGVtcykgRkYgaW5jcmVhc2VzIHRoZSBoZWlnaHQgb2YgdGhlIG92ZXJmbG93IHByb2dyZXNzQ29udGFpbmVyIGFuZFxyXG4gICAgdGhlIHdob2xlIGFwcCBkb2VzIG5vdCBmaXQgaW50byB0aGUgcGFnZSBhbnltb3JlLiBUaGUgYXBwIG92ZXJmbG93cyBhbmQgc2hvd3MgYSB2ZXJ0aWNhbCBzY3JvbGxiYXIgZm9yIHRoZSB3aG9sZSBhcHAuXHJcbiAgICBTZWUgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yODYzNjgzMi9maXJlZm94LW92ZXJmbG93LXktbm90LXdvcmtpbmctd2l0aC1uZXN0ZWQtZmxleGJveFxyXG4gICAgKi9cclxuICAgIG1pbi1oZWlnaHQ6IDBweDtcclxuXHJcbiAgfWAsYC5zY3JvbGxMaXN0e1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIGJhY2tncm91bmQ6IGxpZ2h0Z3JleTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3cteTogYXV0bztcclxuICB9YCwgYFxyXG4gICAgLmNvbGxhcHNhYmxlIHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB6LWluZGV4OiA1O1xyXG4gICAgfWAsIGBcclxuICAgIC5jb2xsYXBzYWJsZS5hY3RpdmUge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIGJvdHRvbTogMHB4O1xyXG4gICAgICBoZWlnaHQ6IDkwJTtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgIHBhZGRpbmc6IDBweDtcclxuICAgICAgei1pbmRleDogMjAwOyAgLyogTmVlZHMgYSBoaWdoZXIgdmFsdWUgdGhlbiB0aGUgc3RpY2t5IE1hdGVyaWFsIHRhYmxlIGhlYWRlciAod2hpY2ggaXMgei1pbmRleDogMTAwKSAqL1xyXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApXHJcbiAgICB9YF0sXHJcbiAgc3R5bGVVcmxzOiBbJy4uLy4uL3NwZWVjaHJlY29yZGVyX21hdC5zY3NzJ11cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWNvcmRlckNvbWJpUGFuZSBleHRlbmRzIFJlc3BvbnNpdmVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0e1xyXG5cclxuICBAVmlld0NoaWxkKFJlY29yZGluZ0xpc3QpIHJlY29yZGluZ0xpc3RDb21wITpSZWNvcmRpbmdMaXN0O1xyXG4gIEBJbnB1dCgpIHNlbGVjdERpc2FibGVkOmJvb2xlYW49ZmFsc2U7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkUmVjb3JkaW5nRmlsZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZGluZ0ZpbGU+KCk7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRSZWNvcmRpbmdGaWxlOlJlY29yZGluZ0ZpbGV8bnVsbD1udWxsO1xyXG5cclxuICBAVmlld0NoaWxkKEF1ZGlvRGlzcGxheSwgeyBzdGF0aWM6IHRydWUgfSkgYXVkaW9EaXNwbGF5ITogQXVkaW9EaXNwbGF5O1xyXG4gIEBJbnB1dCgpIGF1ZGlvU2lnbmFsQ29sbGFwc2VkOiBib29sZWFuPXRydWU7XHJcbiAgQElucHV0KCkgZGlzcGxheUF1ZGlvQ2xpcDogQXVkaW9DbGlwIHwgbnVsbD1udWxsO1xyXG4gIEBJbnB1dCgpIHBsYXlTdGFydEFjdGlvbjogQWN0aW9uPHZvaWQ+fHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBwbGF5U2VsZWN0aW9uQWN0aW9uOiBBY3Rpb248dm9pZD58dW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGF1dG9QbGF5T25TZWxlY3RUb2dnbGVBY3Rpb246QWN0aW9uPGJvb2xlYW4+fHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBwbGF5U3RvcEFjdGlvbjogQWN0aW9uPHZvaWQ+fHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGJwbzpCcmVha3BvaW50T2JzZXJ2ZXIpIHtcclxuICAgIHN1cGVyKGJwbyk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgYWRkUmVjRmlsZShyZjpSZWNvcmRpbmdGaWxlKXtcclxuICAgIHRoaXMucmVjb3JkaW5nTGlzdENvbXAuYWRkUmVjRmlsZShyZik7XHJcbiAgfVxyXG5cclxuICBzZXRSZWNGaWxlQXVkaW9EYXRhKHJlY0ZpbGU6UmVjb3JkaW5nRmlsZSxhZGg6QXVkaW9EYXRhSG9sZGVyfG51bGwpIHtcclxuICAgIHRoaXMucmVjb3JkaW5nTGlzdENvbXAuc2V0UmVjRmlsZUF1ZGlvRGF0YShyZWNGaWxlLCBhZGgpO1xyXG4gIH1cclxuXHJcblxyXG4gIHNlbGVjdFJlY29yZGluZ0ZpbGUocmY6UmVjb3JkaW5nRmlsZSl7XHJcbiAgICB0aGlzLnNlbGVjdGVkUmVjb3JkaW5nRmlsZUNoYW5nZWQuZW1pdChyZik7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RUb3AoKSB7XHJcbiAgICB0aGlzLnJlY29yZGluZ0xpc3RDb21wLnNlbGVjdFRvcCgpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -130,7 +130,7 @@ RecordingList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
|
|
|
130
130
|
</mat-card-content>
|
|
131
131
|
</mat-card>
|
|
132
132
|
|
|
133
|
-
`, isInline: true, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}\n", ":host{position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;overflow-y:auto;min-height:0px}\n", ".selected{font-weight:700}\n"], dependencies: [{ kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "component", type: i3.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "component", type: i4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i4.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i4.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i4.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i4.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i4.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i4.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i5.ScrollIntoViewDirective, selector: "[scrollIntoViewToBottom]", inputs: ["scrollIntoViewToBottom"] }, { kind: "pipe", type: i6.DatePipe, name: "date" }] });
|
|
133
|
+
`, isInline: true, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}.flexFill{margin:0;width:100%;height:100%;min-width:100%;min-height:100%}\n", ":host{position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;overflow-y:auto;min-height:0px}\n", ".selected{font-weight:700}\n"], dependencies: [{ kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "component", type: i3.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "component", type: i4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i4.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i4.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i4.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i4.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i4.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i4.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i5.ScrollIntoViewDirective, selector: "[scrollIntoViewToBottom]", inputs: ["scrollIntoViewToBottom"] }, { kind: "pipe", type: i6.DatePipe, name: "date" }] });
|
|
134
134
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RecordingList, decorators: [{
|
|
135
135
|
type: Component,
|
|
136
136
|
args: [{ selector: 'app-recordinglist', template: `
|
|
@@ -177,7 +177,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
177
177
|
</mat-card-content>
|
|
178
178
|
</mat-card>
|
|
179
179
|
|
|
180
|
-
`, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}\n", ":host{position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;overflow-y:auto;min-height:0px}\n", ".selected{font-weight:700}\n"] }]
|
|
180
|
+
`, styles: [".monospaced{font-family:monospace}.mat-cell,.mat-header-cell{padding-left:5px;padding-right:5px}.mat-card,.mat-card-header,.mat-card-content{width:auto}.flexForm{display:flex;flex-direction:column;width:auto}.flexFill{margin:0;width:100%;height:100%;min-width:100%;min-height:100%}\n", ":host{position:relative;margin:0;padding:0;background:lightgrey;width:100%;flex:1;overflow-y:auto;min-height:0px}\n", ".selected{font-weight:700}\n"] }]
|
|
181
181
|
}], ctorParameters: function () { return []; }, propDecorators: { selectDisabled: [{
|
|
182
182
|
type: Input
|
|
183
183
|
}], selectedRecordingFileChanged: [{
|
|
@@ -36,16 +36,16 @@ RecordingFileNaviComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0
|
|
|
36
36
|
<legend>Navigate</legend>
|
|
37
37
|
<mat-progress-spinner *ngIf="naviInfoLoading" mode="indeterminate" [diameter]="15"></mat-progress-spinner>
|
|
38
38
|
<div *ngIf="!naviInfoLoading" style="flex: 0;display:flex;flex-direction: row;flex-wrap: nowrap">
|
|
39
|
-
<button (click)="firstAction?.perform()" [disabled]="!firstAction || firstAction
|
|
39
|
+
<button (click)="firstAction?.perform()" [disabled]="!firstAction || firstAction.disabled" matTooltip="First recording file">
|
|
40
40
|
<mat-icon>first_page</mat-icon>
|
|
41
41
|
</button>
|
|
42
|
-
<button (click)="prevAction?.perform()" [disabled]="!prevAction || prevAction
|
|
42
|
+
<button (click)="prevAction?.perform()" [disabled]="!prevAction || prevAction.disabled" matTooltip="Previous recording file">
|
|
43
43
|
<mat-icon>chevron_left</mat-icon>
|
|
44
44
|
</button>
|
|
45
|
-
<button (click)="nextAction?.perform()" [disabled]="!nextAction || nextAction
|
|
45
|
+
<button (click)="nextAction?.perform()" [disabled]="!nextAction || nextAction.disabled" matTooltip="Next recording file">
|
|
46
46
|
<mat-icon>chevron_right</mat-icon>
|
|
47
47
|
</button>
|
|
48
|
-
<button (click)="lastAction?.perform()" [disabled]="!lastAction || lastAction
|
|
48
|
+
<button (click)="lastAction?.perform()" [disabled]="!lastAction || lastAction.disabled" matTooltip="Last recording file">
|
|
49
49
|
<mat-icon>last_page</mat-icon>
|
|
50
50
|
</button>
|
|
51
51
|
</div>
|
|
@@ -71,16 +71,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
71
71
|
<legend>Navigate</legend>
|
|
72
72
|
<mat-progress-spinner *ngIf="naviInfoLoading" mode="indeterminate" [diameter]="15"></mat-progress-spinner>
|
|
73
73
|
<div *ngIf="!naviInfoLoading" style="flex: 0;display:flex;flex-direction: row;flex-wrap: nowrap">
|
|
74
|
-
<button (click)="firstAction?.perform()" [disabled]="!firstAction || firstAction
|
|
74
|
+
<button (click)="firstAction?.perform()" [disabled]="!firstAction || firstAction.disabled" matTooltip="First recording file">
|
|
75
75
|
<mat-icon>first_page</mat-icon>
|
|
76
76
|
</button>
|
|
77
|
-
<button (click)="prevAction?.perform()" [disabled]="!prevAction || prevAction
|
|
77
|
+
<button (click)="prevAction?.perform()" [disabled]="!prevAction || prevAction.disabled" matTooltip="Previous recording file">
|
|
78
78
|
<mat-icon>chevron_left</mat-icon>
|
|
79
79
|
</button>
|
|
80
|
-
<button (click)="nextAction?.perform()" [disabled]="!nextAction || nextAction
|
|
80
|
+
<button (click)="nextAction?.perform()" [disabled]="!nextAction || nextAction.disabled" matTooltip="Next recording file">
|
|
81
81
|
<mat-icon>chevron_right</mat-icon>
|
|
82
82
|
</button>
|
|
83
|
-
<button (click)="lastAction?.perform()" [disabled]="!lastAction || lastAction
|
|
83
|
+
<button (click)="lastAction?.perform()" [disabled]="!lastAction || lastAction.disabled" matTooltip="Last recording file">
|
|
84
84
|
<mat-icon>last_page</mat-icon>
|
|
85
85
|
</button>
|
|
86
86
|
</div>
|
|
@@ -111,4 +111,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
111
111
|
}], naviInfoLoading: [{
|
|
112
112
|
type: Input
|
|
113
113
|
}] } });
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5nLWZpbGUtbmF2aS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvc3BlZWNocmVjb3JkZXIvc2Vzc2lvbi9yZWNvcmRpbmdmaWxlL3JlY29yZGluZy1maWxlLW5hdmkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFvQixNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBNENsRSxNQUFNLE9BQU8sMEJBQTBCO0lBYXJDO1FBTFMsYUFBUSxHQUFxQixJQUFJLENBQUM7UUFDbEMsWUFBTyxHQUFjLElBQUksQ0FBQztRQUUxQixvQkFBZSxHQUFDLEtBQUssQ0FBQztJQUVmLENBQUM7SUFFakIsUUFBUTtJQUNSLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxFQUFRO1FBQzFCLHlFQUF5RTtRQUV2RSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsTUFBMkIsQ0FBQztRQUM3QyxJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLElBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN2QztJQUNMLENBQUM7O3dIQTFCVSwwQkFBMEI7NEdBQTFCLDBCQUEwQix1VUF2QzNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXQWdDRDs0RkFPRSwwQkFBMEI7a0JBekN0QyxTQUFTOytCQUNFLHlCQUF5QixZQUN6Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7V0FnQ0Q7MEVBUUEsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0FjdGlvbn0gZnJvbSBcIi4uLy4uLy4uL2FjdGlvbi9hY3Rpb25cIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXJlY29yZGluZy1maWxlLW5hdmknLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPGRpdiAjY29udHJvbFBhbmVsIHN0eWxlPVwiZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOiByb3c7XCI+XHJcbiAgICAgICAgICA8ZGl2ICNuYXZpIHN0eWxlPVwiZmxleDogMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246IHJvdztmbGV4LXdyYXA6IG5vd3JhcFwiPlxyXG4gICAgICAgICAgICA8ZmllbGRzZXQ+XHJcbiAgICAgICAgICAgICAgPGxlZ2VuZD5WZXJzaW9uczwvbGVnZW5kPlxyXG4gICAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciAqbmdJZj1cIm5hdmlJbmZvTG9hZGluZ1wiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgW2RpYW1ldGVyXT1cIjE1XCI+PC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3QgKm5nSWY9XCIhbmF2aUluZm9Mb2FkaW5nXCIgW2Rpc2FibGVkXT1cInZlcnNpb25zPT1udWxsIHx8IHZlcnNpb25zLmxlbmd0aD09MVwiIChjaGFuZ2UpPVwic2VsZWN0VmVyc2lvbkNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHYgb2YgdmVyc2lvbnM7IGxldCBpID0gaW5kZXhcIiBbc2VsZWN0ZWRdPVwidj09PXZlcnNpb25cIiB2YWx1ZT1cInt7dn19XCI+e3t2fX08c3BhbiAqbmdJZj1cImk9PTBcIj4gKGxhdGVzdCk8L3NwYW4+PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgPC9maWVsZHNldD5cclxuICAgICAgICAgICAgPGZpZWxkc2V0PlxyXG4gICAgICAgICAgICAgIDxsZWdlbmQ+TmF2aWdhdGU8L2xlZ2VuZD5cclxuICAgICAgICAgICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXIgKm5nSWY9XCJuYXZpSW5mb0xvYWRpbmdcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIFtkaWFtZXRlcl09XCIxNVwiPjwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFuYXZpSW5mb0xvYWRpbmdcIiAgc3R5bGU9XCJmbGV4OiAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjogcm93O2ZsZXgtd3JhcDogbm93cmFwXCI+
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5nLWZpbGUtbmF2aS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvc3BlZWNocmVjb3JkZXIvc2Vzc2lvbi9yZWNvcmRpbmdmaWxlL3JlY29yZGluZy1maWxlLW5hdmkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFvQixNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBNENsRSxNQUFNLE9BQU8sMEJBQTBCO0lBYXJDO1FBTFMsYUFBUSxHQUFxQixJQUFJLENBQUM7UUFDbEMsWUFBTyxHQUFjLElBQUksQ0FBQztRQUUxQixvQkFBZSxHQUFDLEtBQUssQ0FBQztJQUVmLENBQUM7SUFFakIsUUFBUTtJQUNSLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxFQUFRO1FBQzFCLHlFQUF5RTtRQUV2RSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsTUFBMkIsQ0FBQztRQUM3QyxJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLElBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN2QztJQUNMLENBQUM7O3dIQTFCVSwwQkFBMEI7NEdBQTFCLDBCQUEwQix1VUF2QzNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXQWdDRDs0RkFPRSwwQkFBMEI7a0JBekN0QyxTQUFTOytCQUNFLHlCQUF5QixZQUN6Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7V0FnQ0Q7MEVBUUEsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0FjdGlvbn0gZnJvbSBcIi4uLy4uLy4uL2FjdGlvbi9hY3Rpb25cIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXJlY29yZGluZy1maWxlLW5hdmknLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPGRpdiAjY29udHJvbFBhbmVsIHN0eWxlPVwiZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOiByb3c7XCI+XHJcbiAgICAgICAgICA8ZGl2ICNuYXZpIHN0eWxlPVwiZmxleDogMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246IHJvdztmbGV4LXdyYXA6IG5vd3JhcFwiPlxyXG4gICAgICAgICAgICA8ZmllbGRzZXQ+XHJcbiAgICAgICAgICAgICAgPGxlZ2VuZD5WZXJzaW9uczwvbGVnZW5kPlxyXG4gICAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciAqbmdJZj1cIm5hdmlJbmZvTG9hZGluZ1wiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgW2RpYW1ldGVyXT1cIjE1XCI+PC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3QgKm5nSWY9XCIhbmF2aUluZm9Mb2FkaW5nXCIgW2Rpc2FibGVkXT1cInZlcnNpb25zPT1udWxsIHx8IHZlcnNpb25zLmxlbmd0aD09MVwiIChjaGFuZ2UpPVwic2VsZWN0VmVyc2lvbkNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHYgb2YgdmVyc2lvbnM7IGxldCBpID0gaW5kZXhcIiBbc2VsZWN0ZWRdPVwidj09PXZlcnNpb25cIiB2YWx1ZT1cInt7dn19XCI+e3t2fX08c3BhbiAqbmdJZj1cImk9PTBcIj4gKGxhdGVzdCk8L3NwYW4+PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgPC9maWVsZHNldD5cclxuICAgICAgICAgICAgPGZpZWxkc2V0PlxyXG4gICAgICAgICAgICAgIDxsZWdlbmQ+TmF2aWdhdGU8L2xlZ2VuZD5cclxuICAgICAgICAgICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXIgKm5nSWY9XCJuYXZpSW5mb0xvYWRpbmdcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIFtkaWFtZXRlcl09XCIxNVwiPjwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFuYXZpSW5mb0xvYWRpbmdcIiAgc3R5bGU9XCJmbGV4OiAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjogcm93O2ZsZXgtd3JhcDogbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJmaXJzdEFjdGlvbj8ucGVyZm9ybSgpXCIgW2Rpc2FibGVkXT1cIiFmaXJzdEFjdGlvbiB8fCBmaXJzdEFjdGlvbi5kaXNhYmxlZFwiIG1hdFRvb2x0aXA9XCJGaXJzdCByZWNvcmRpbmcgZmlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24+Zmlyc3RfcGFnZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInByZXZBY3Rpb24/LnBlcmZvcm0oKVwiIFtkaXNhYmxlZF09XCIhcHJldkFjdGlvbiB8fCBwcmV2QWN0aW9uLmRpc2FibGVkXCIgbWF0VG9vbHRpcD1cIlByZXZpb3VzIHJlY29yZGluZyBmaWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jaGV2cm9uX2xlZnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJuZXh0QWN0aW9uPy5wZXJmb3JtKClcIiBbZGlzYWJsZWRdPVwiIW5leHRBY3Rpb24gfHwgbmV4dEFjdGlvbi5kaXNhYmxlZFwiIG1hdFRvb2x0aXA9XCJOZXh0IHJlY29yZGluZyBmaWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jaGV2cm9uX3JpZ2h0PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwibGFzdEFjdGlvbj8ucGVyZm9ybSgpXCIgW2Rpc2FibGVkXT1cIiFsYXN0QWN0aW9uIHx8IGxhc3RBY3Rpb24uZGlzYWJsZWRcIiBtYXRUb29sdGlwPVwiTGFzdCByZWNvcmRpbmcgZmlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24+bGFzdF9wYWdlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxwICpuZ0lmPVwiaXRlbXMgJiYgaXRlbVBvcyE9PW51bGwgJiYgaXRlbVBvcyE9PXVuZGVmaW5lZFwiPkl0ZW0ge3tpdGVtUG9zKzF9fSBvZiB7e2l0ZW1zfX08L3A+XHJcbiAgICAgICAgICAgICAgPHA+KExpc3Qgb3JkZXJlZCBieSBkYXRlKTwvcD5cclxuICAgICAgICAgICAgPC9maWVsZHNldD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgYCxcclxuICBzdHlsZXM6IFtcclxuICAgIGA6aG9zdCB7XHJcbiAgICAgICAgZmxleDogMDtcclxuXHJcbiAgICAgIH1gXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVjb3JkaW5nRmlsZU5hdmlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGZpcnN0QWN0aW9uOiBBY3Rpb248dm9pZD58dW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHByZXZBY3Rpb246IEFjdGlvbjx2b2lkPnx1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgbmV4dEFjdGlvbjogQWN0aW9uPHZvaWQ+fHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBsYXN0QWN0aW9uOiBBY3Rpb248dm9pZD58dW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGl0ZW1zOm51bWJlciB8IG51bGx8dW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGl0ZW1Qb3M6bnVtYmVyIHwgbnVsbHx1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgc2VsZWN0VmVyc2lvbjogQWN0aW9uPG51bWJlcj58dW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHZlcnNpb25zOiBBcnJheTxudW1iZXI+fG51bGw9bnVsbDtcclxuICBASW5wdXQoKSB2ZXJzaW9uOiBudW1iZXJ8bnVsbD1udWxsO1xyXG5cclxuICBASW5wdXQoKSBuYXZpSW5mb0xvYWRpbmc9ZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0VmVyc2lvbkNoYW5nZShldjpFdmVudCl7XHJcbiAgICAvL2NvbnNvbGUuZGVidWcoXCJDaGFuZ2UgZXZlbnQ6IFwiK2V2LnRhcmdldC52YWx1ZSsgXCIsIGFzIE5yOiBcIit2ZXJzaW9uTnIpO1xyXG5cclxuICAgICAgY29uc3Qgc2VsRWwgPSBldi50YXJnZXQgYXMgSFRNTFNlbGVjdEVsZW1lbnQ7XHJcbiAgICAgIGxldCB2ZXJzaW9uTnIgPSBwYXJzZUludChzZWxFbC52YWx1ZSk7XHJcbiAgICAgIGlmKHRoaXMuc2VsZWN0VmVyc2lvbikge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0VmVyc2lvbi5wZXJmb3JtKHZlcnNpb25Ocik7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|