@natec/mef-dev-ui-kit 16.2.3 → 16.2.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.
@@ -0,0 +1,120 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/forms";
4
+ /**
5
+ * Component for a slider that allows selecting a range of values.
6
+ * @example
7
+ * <mefdev-slider
8
+ * [disabled]="false"
9
+ * [range] = "{min: 1, max: 10000}"
10
+ * [id]= "'slider1'"
11
+ * (valueChange)="onChildValueChange($event)"
12
+ * ></mefdev-slider>
13
+ *
14
+ * <example-url>https://mef.dev/ui_kit_demo/view/typography/slider</example-url>
15
+ */
16
+ export class MefDevSliderComponent {
17
+ _range = { min: 1, max: 1000 };
18
+ /**
19
+ * Unique id for each slider. Use it, if u need more than one slider independent from another on the same page.
20
+ * @example
21
+ * <mefdev-slider
22
+ * [id]= "'slider1'"
23
+ * ></mefdev-slider>
24
+ */
25
+ id;
26
+ /**
27
+ * Input Object {min, max} container of the slider
28
+ * @example
29
+ * @interval
30
+ * <mefdev-slider
31
+ * [range] = "{min: 1, max: 10000}"
32
+ * ></mefdev-slider>
33
+ */
34
+ set range(range) {
35
+ this._range = range;
36
+ this.minValue = range.min;
37
+ this.maxValue = range.max;
38
+ }
39
+ get range() {
40
+ return this._range;
41
+ }
42
+ /**
43
+ * The minimum value of the slider.
44
+ */
45
+ minValue = this.range.min;
46
+ /**
47
+ * The maximum value of the slider.
48
+ */
49
+ maxValue = this.range.max;
50
+ /**
51
+ * Property indicating whether the component is disabled.
52
+ * @example
53
+ * <mefdev-slider
54
+ * [disabled]="true"
55
+ * ></mefdev-slider>
56
+ */
57
+ disabled = false;
58
+ /**
59
+ * Event emitted when the values of the slider change.
60
+ * It passes an object with `minValue` and `maxValue` properties.
61
+ * @event MefDevSliderComponent#valueChange
62
+ * @type {EventEmitter<{ minValue: number; maxValue: number }>}
63
+ * @example
64
+ * <mefdev-slider
65
+ * (valueChange)="onChildValueChange($event)"
66
+ * ></mefdev-slider>
67
+ */
68
+ valueChange = new EventEmitter();
69
+ /**
70
+ * Method called when the values of the slider change.
71
+ * Emits the `valueChange` event and calls methods to handle changes in the minimum and maximum values.
72
+ * @fires MefDevSliderComponent#valueChange
73
+ */
74
+ onValueChange() {
75
+ this.valueChange.emit({ minValue: this.minValue, maxValue: this.maxValue });
76
+ this.minValue = this.minValue;
77
+ this.onMinValueChange();
78
+ this.onMaxValueChange();
79
+ }
80
+ /**
81
+ * Method to handle changes in the minimum value.
82
+ * Converts a string to a number and removes all non-numeric characters.
83
+ * Then, emits the `valueChange` event and updates the value of the "fromSlider" slider.
84
+ * @fires MefDevSliderComponent#valueChange
85
+ */
86
+ onMinValueChange() {
87
+ const numericValue = parseFloat(this.minValue.toString().replace(/[^\d.]/g, ''));
88
+ this.minValue = isNaN(numericValue) ? 0 : numericValue;
89
+ this.valueChange.emit({ minValue: this.minValue, maxValue: this.maxValue });
90
+ const fromSlider = document.getElementById(`fromSlider-${this.id}`);
91
+ }
92
+ /**
93
+ * Method to handle changes in the maximum value.
94
+ * Converts a string to a number and removes all non-numeric characters.
95
+ * Then, emits the `valueChange` event and updates the value of the "toSlider" slider.
96
+ * @fires MefDevSliderComponent#valueChange
97
+ */
98
+ onMaxValueChange() {
99
+ const numericValue = parseFloat(this.maxValue.toString().replace(/[^\d.]/g, ''));
100
+ this.maxValue = isNaN(numericValue) ? 0 : numericValue; // Перевірка на NaN і присвоєння 0, якщо не вдалося конвертувати в число
101
+ this.valueChange.emit({ minValue: this.minValue, maxValue: this.maxValue });
102
+ const toSlider = document.getElementById(`toSlider-${this.id}`);
103
+ }
104
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: MefDevSliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
105
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: MefDevSliderComponent, selector: "mefdev-slider", inputs: { id: "id", range: "range", disabled: "disabled" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"range_container row\">\r\n <div class=\"inputs_control \">\r\n <input class=\"form_control_container__time__input h3\" [(ngModel)]=\"'\u20B4'+ minValue\" [disabled]=\"disabled\" (ngModelChange)=\"onMinValueChange()\">\r\n <input class=\"form_control_container__time__input h3\" [(ngModel)]=\"'\u20B4'+ maxValue\" [disabled]=\"disabled\" (ngModelChange)=\"onMaxValueChange()\">\r\n </div>\r\n <div class=\"sliders_control\">\r\n <input id=\"fromSlider\" type=\"range\" [(ngModel)]=\"minValue\" [min]=\"range.min\" [max]=\"range.max\" (ngModelChange)=\"onValueChange()\">\r\n <input id=\"toSlider\" type=\"range\" [(ngModel)]=\"maxValue\" [min]=\"range.min\" [max]=\"range.max\" (ngModelChange)=\"onValueChange()\" \r\n [style]=\"{'--minValue': minValue, '--maxValue': maxValue, '--minFromValue': range.min, '--maxToValue': range.max}\">\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.color-Dark-Gray-1{color:#373737!important}.color-Dark-Gray-2{color:#4d4d4d!important}.color-Red{color:#cf0106!important}.color-Green{color:#28b446!important}.color-Light-Gray-1{color:#929292!important}.color-Light-Gray-2{color:#eaeaea!important}.color-Light-Gray-3{color:#f3f3f3!important}.color-White{color:#fff!important}.color-Link{color:#0185cf!important}.b-color-Dark-Gray-1{background-color:#373737!important}.b-color-Dark-Gray-2{background-color:#4d4d4d!important}.b-color-Red{background-color:#cf0106!important}.b-color-Green{background-color:#28b446!important}.b-color-Light-Gray-1{background-color:#929292!important}.b-color-Light-Gray-2{background-color:#eaeaea!important}.b-color-Light-Gray-3{background-color:#f3f3f3!important}.b-color-White{background-color:#fff!important}.b-color-Link{background-color:#0185cf!important}.h1,h1{font-family:Montserrat;font-size:24px;line-height:29px;font-weight:700;text-transform:uppercase;color:#000}.h2,h2{font-family:Montserrat;font-size:24px;line-height:29px;font-weight:700;color:#000}.h3,h3{font-family:Montserrat;font-size:14px;line-height:20px;font-weight:400;text-transform:uppercase;color:#000}.h4,h4{font-family:Montserrat;font-weight:300;font-size:13px;line-height:20px;text-transform:uppercase;color:#000}.h5,h5{font-family:Montserrat;font-weight:600;font-size:13px;line-height:20px;color:#000}.h6,h6{font-family:Montserrat;font-weight:500;font-size:12px;line-height:20px;text-transform:capitalize;color:#000}.body-1,body-1{font-family:Lato;font-size:18px;line-height:20px;font-weight:700;color:#000}.body-2,body-2{font-family:Lato;font-size:16px;line-height:28px;font-weight:400;color:#000}.body-3,body-3{font-family:Lato;font-size:14px;line-height:22px;font-weight:700;color:#000}.body-4,body-4{font-family:Lato;font-size:14px;line-height:22px;font-weight:400;color:#000}.body-5,body-5{font-family:Lato;font-weight:600;font-size:13px;line-height:18px;color:#000}.body-6,body-6{font-family:Lato;font-size:13px;line-height:16px;font-weight:400;color:#000}.sliders_control{position:relative;min-height:50px}.inputs_control{position:relative;display:flex;justify-content:space-between;font-size:24px;color:#635a5a}.inputs_control .form_control_container__time__input{width:80px;height:28px;border-radius:5px;border:none;background:#FFF;text-align:center;box-shadow:2px 2px 2px #0000001a}#fromSlider::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:all;width:16px;height:16px;background-color:#cf0106;border-radius:50%;cursor:pointer;margin-top:13px}#toSlider::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:all;width:16px;height:16px;background-color:#cf0106;border-radius:50%;cursor:pointer;margin-top:-7px}input[type=range]::-moz-range-thumb{pointer-events:all;width:16px;height:16px;background-color:#cf0106;border-radius:50%;cursor:pointer}input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(to right,#929292 0%,#929292 calc((var(--minValue) - var(--minFromValue)) / (var(--maxToValue) - var(--minFromValue)) * 100%),transparent calc((var(--minValue) - var(--minFromValue)) / (var(--maxToValue) - var(--minFromValue)) * 100%),transparent calc((var(--maxValue) - var(--minFromValue)) / (var(--maxToValue) - var(--minFromValue)) * 100%),#929292 calc((var(--maxValue) - var(--minFromValue)) / (var(--maxToValue) - var(--minFromValue)) * 100%),#929292 100%);height:3px}input[type=range]::-moz-range-track{background:linear-gradient(to right,#929292 0%,#929292 calc((var(--minValue) - var(--minFromValue)) / (var(--maxToValue) - var(--minFromValue)) * 100%),transparent calc((var(--minValue) - var(--minFromValue)) / (var(--maxToValue) - var(--minFromValue)) * 100%),transparent calc((var(--maxValue) - var(--minFromValue)) / (var(--maxToValue) - var(--minFromValue)) * 100%),#929292 calc((var(--maxValue) - var(--minFromValue)) / (var(--maxToValue) - var(--minFromValue)) * 100%),#929292 100%);height:3px}input[type=range]::-webkit-slider-thumb:active{box-shadow:inset 0 0 3px #cf0106,0 0 9px #cf0106;-webkit-box-shadow:inset 0 0 3px #CF0106,0 0 9px #CF0106}input[type=number]{color:red;width:50px;height:30px;font-size:20px;border:none}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{opacity:.2}input[type=range]{-webkit-appearance:none;appearance:none;height:3px;width:100%;position:relative;background-color:#cf0106;pointer-events:none}input[type=range]::-moz-range-progress{background-color:transparent;height:3px}#fromSlider{height:0;z-index:9999}\n"], dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
106
+ }
107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: MefDevSliderComponent, decorators: [{
108
+ type: Component,
109
+ args: [{ selector: 'mefdev-slider', template: "<div class=\"range_container row\">\r\n <div class=\"inputs_control \">\r\n <input class=\"form_control_container__time__input h3\" [(ngModel)]=\"'\u20B4'+ minValue\" [disabled]=\"disabled\" (ngModelChange)=\"onMinValueChange()\">\r\n <input class=\"form_control_container__time__input h3\" [(ngModel)]=\"'\u20B4'+ maxValue\" [disabled]=\"disabled\" (ngModelChange)=\"onMaxValueChange()\">\r\n </div>\r\n <div class=\"sliders_control\">\r\n <input id=\"fromSlider\" type=\"range\" [(ngModel)]=\"minValue\" [min]=\"range.min\" [max]=\"range.max\" (ngModelChange)=\"onValueChange()\">\r\n <input id=\"toSlider\" type=\"range\" [(ngModel)]=\"maxValue\" [min]=\"range.min\" [max]=\"range.max\" (ngModelChange)=\"onValueChange()\" \r\n [style]=\"{'--minValue': minValue, '--maxValue': maxValue, '--minFromValue': range.min, '--maxToValue': range.max}\">\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.color-Dark-Gray-1{color:#373737!important}.color-Dark-Gray-2{color:#4d4d4d!important}.color-Red{color:#cf0106!important}.color-Green{color:#28b446!important}.color-Light-Gray-1{color:#929292!important}.color-Light-Gray-2{color:#eaeaea!important}.color-Light-Gray-3{color:#f3f3f3!important}.color-White{color:#fff!important}.color-Link{color:#0185cf!important}.b-color-Dark-Gray-1{background-color:#373737!important}.b-color-Dark-Gray-2{background-color:#4d4d4d!important}.b-color-Red{background-color:#cf0106!important}.b-color-Green{background-color:#28b446!important}.b-color-Light-Gray-1{background-color:#929292!important}.b-color-Light-Gray-2{background-color:#eaeaea!important}.b-color-Light-Gray-3{background-color:#f3f3f3!important}.b-color-White{background-color:#fff!important}.b-color-Link{background-color:#0185cf!important}.h1,h1{font-family:Montserrat;font-size:24px;line-height:29px;font-weight:700;text-transform:uppercase;color:#000}.h2,h2{font-family:Montserrat;font-size:24px;line-height:29px;font-weight:700;color:#000}.h3,h3{font-family:Montserrat;font-size:14px;line-height:20px;font-weight:400;text-transform:uppercase;color:#000}.h4,h4{font-family:Montserrat;font-weight:300;font-size:13px;line-height:20px;text-transform:uppercase;color:#000}.h5,h5{font-family:Montserrat;font-weight:600;font-size:13px;line-height:20px;color:#000}.h6,h6{font-family:Montserrat;font-weight:500;font-size:12px;line-height:20px;text-transform:capitalize;color:#000}.body-1,body-1{font-family:Lato;font-size:18px;line-height:20px;font-weight:700;color:#000}.body-2,body-2{font-family:Lato;font-size:16px;line-height:28px;font-weight:400;color:#000}.body-3,body-3{font-family:Lato;font-size:14px;line-height:22px;font-weight:700;color:#000}.body-4,body-4{font-family:Lato;font-size:14px;line-height:22px;font-weight:400;color:#000}.body-5,body-5{font-family:Lato;font-weight:600;font-size:13px;line-height:18px;color:#000}.body-6,body-6{font-family:Lato;font-size:13px;line-height:16px;font-weight:400;color:#000}.sliders_control{position:relative;min-height:50px}.inputs_control{position:relative;display:flex;justify-content:space-between;font-size:24px;color:#635a5a}.inputs_control .form_control_container__time__input{width:80px;height:28px;border-radius:5px;border:none;background:#FFF;text-align:center;box-shadow:2px 2px 2px #0000001a}#fromSlider::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:all;width:16px;height:16px;background-color:#cf0106;border-radius:50%;cursor:pointer;margin-top:13px}#toSlider::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:all;width:16px;height:16px;background-color:#cf0106;border-radius:50%;cursor:pointer;margin-top:-7px}input[type=range]::-moz-range-thumb{pointer-events:all;width:16px;height:16px;background-color:#cf0106;border-radius:50%;cursor:pointer}input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(to right,#929292 0%,#929292 calc((var(--minValue) - var(--minFromValue)) / (var(--maxToValue) - var(--minFromValue)) * 100%),transparent calc((var(--minValue) - var(--minFromValue)) / (var(--maxToValue) - var(--minFromValue)) * 100%),transparent calc((var(--maxValue) - var(--minFromValue)) / (var(--maxToValue) - var(--minFromValue)) * 100%),#929292 calc((var(--maxValue) - var(--minFromValue)) / (var(--maxToValue) - var(--minFromValue)) * 100%),#929292 100%);height:3px}input[type=range]::-moz-range-track{background:linear-gradient(to right,#929292 0%,#929292 calc((var(--minValue) - var(--minFromValue)) / (var(--maxToValue) - var(--minFromValue)) * 100%),transparent calc((var(--minValue) - var(--minFromValue)) / (var(--maxToValue) - var(--minFromValue)) * 100%),transparent calc((var(--maxValue) - var(--minFromValue)) / (var(--maxToValue) - var(--minFromValue)) * 100%),#929292 calc((var(--maxValue) - var(--minFromValue)) / (var(--maxToValue) - var(--minFromValue)) * 100%),#929292 100%);height:3px}input[type=range]::-webkit-slider-thumb:active{box-shadow:inset 0 0 3px #cf0106,0 0 9px #cf0106;-webkit-box-shadow:inset 0 0 3px #CF0106,0 0 9px #CF0106}input[type=number]{color:red;width:50px;height:30px;font-size:20px;border:none}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{opacity:.2}input[type=range]{-webkit-appearance:none;appearance:none;height:3px;width:100%;position:relative;background-color:#cf0106;pointer-events:none}input[type=range]::-moz-range-progress{background-color:transparent;height:3px}#fromSlider{height:0;z-index:9999}\n"] }]
110
+ }], propDecorators: { id: [{
111
+ type: Input
112
+ }], range: [{
113
+ type: Input,
114
+ args: ['range']
115
+ }], disabled: [{
116
+ type: Input
117
+ }], valueChange: [{
118
+ type: Output
119
+ }] } });
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWtpdC1saWIvc3JjL2xpYi9tYXJrdXAta2l0L3NsaWRlci9zbGlkZXIvc2xpZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWtpdC1saWIvc3JjL2xpYi9tYXJrdXAta2l0L3NsaWRlci9zbGlkZXIvc2xpZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUV2RTs7Ozs7Ozs7Ozs7RUFXRTtBQU1GLE1BQU0sT0FBTyxxQkFBcUI7SUFFeEIsTUFBTSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFFdkM7Ozs7OztNQU1FO0lBQ08sRUFBRSxDQUFTO0lBR3BCOzs7Ozs7O01BT0U7SUFDRixJQUVJLEtBQUssQ0FBQyxLQUFtQztRQUMzQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO0lBQzVCLENBQUM7SUFDRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVEOztNQUVFO0lBQ0YsUUFBUSxHQUFVLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFBO0lBRWhDOztNQUVFO0lBQ0YsUUFBUSxHQUFVLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFBO0lBSWhDOzs7Ozs7TUFNRTtJQUNPLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFFbkM7Ozs7Ozs7OztNQVNFO0lBQ1EsV0FBVyxHQUF5RCxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRWpHOzs7O01BSUU7SUFDRixhQUFhO1FBQ1gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFBO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO0lBQ3pCLENBQUM7SUFFRDs7Ozs7TUFLRTtJQUNGLGdCQUFnQjtRQUNkLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDdkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDNUUsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxjQUFjLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBcUIsQ0FBQztJQUMxRixDQUFDO0lBRUQ7Ozs7O01BS0U7SUFDRixnQkFBZ0I7UUFDZCxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsd0VBQXdFO1FBQ2hJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsWUFBWSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQXFCLENBQUM7SUFDdEYsQ0FBQzt1R0F0R1UscUJBQXFCOzJGQUFyQixxQkFBcUIsMEpDbkJsQyx5NUJBV0E7OzJGRFFhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxlQUFlOzhCQWVoQixFQUFFO3NCQUFWLEtBQUs7Z0JBYUYsS0FBSztzQkFGUixLQUFLO3VCQUFDLE9BQU87Z0JBOEJMLFFBQVE7c0JBQWhCLEtBQUs7Z0JBWUksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKipcclxuICogQ29tcG9uZW50IGZvciBhIHNsaWRlciB0aGF0IGFsbG93cyBzZWxlY3RpbmcgYSByYW5nZSBvZiB2YWx1ZXMuXHJcbiAqIEBleGFtcGxlXHJcbiAqIDxtZWZkZXYtc2xpZGVyXHJcbiAqICBbZGlzYWJsZWRdPVwiZmFsc2VcIlxyXG4gKiAgW3JhbmdlXSA9IFwie21pbjogMSwgbWF4OiAxMDAwMH1cIlxyXG4gKiAgW2lkXT0gXCInc2xpZGVyMSdcIlxyXG4gKiAgKHZhbHVlQ2hhbmdlKT1cIm9uQ2hpbGRWYWx1ZUNoYW5nZSgkZXZlbnQpXCJcclxuICogID48L21lZmRldi1zbGlkZXI+XHJcbiAqXHJcbiAqIDxleGFtcGxlLXVybD5odHRwczovL21lZi5kZXYvdWlfa2l0X2RlbW8vdmlldy90eXBvZ3JhcGh5L3NsaWRlcjwvZXhhbXBsZS11cmw+ICAgIFxyXG4qL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21lZmRldi1zbGlkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zbGlkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NsaWRlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZWZEZXZTbGlkZXJDb21wb25lbnQge1xyXG5cclxuICBwcml2YXRlIF9yYW5nZSA9IHsgbWluOiAxLCBtYXg6IDEwMDAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogVW5pcXVlIGlkIGZvciBlYWNoIHNsaWRlci4gVXNlIGl0LCBpZiB1IG5lZWQgbW9yZSB0aGFuIG9uZSBzbGlkZXIgaW5kZXBlbmRlbnQgZnJvbSBhbm90aGVyIG9uIHRoZSBzYW1lIHBhZ2UuIFxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogPG1lZmRldi1zbGlkZXJcclxuICAgKiAgW2lkXT0gXCInc2xpZGVyMSdcIlxyXG4gICAqID48L21lZmRldi1zbGlkZXI+XHJcbiAgKi9cclxuICBASW5wdXQoKSBpZDogc3RyaW5nO1xyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogSW5wdXQgT2JqZWN0IHttaW4sIG1heH0gY29udGFpbmVyIG9mIHRoZSBzbGlkZXJcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIEBpbnRlcnZhbFxyXG4gICAqIDxtZWZkZXYtc2xpZGVyXHJcbiAgICogIFtyYW5nZV0gPSBcInttaW46IDEsIG1heDogMTAwMDB9XCJcclxuICAgKiA+PC9tZWZkZXYtc2xpZGVyPlxyXG4gICovXHJcbiAgQElucHV0KCdyYW5nZScpXHJcbiAgXHJcbiAgc2V0IHJhbmdlKHJhbmdlOiB7IG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciB9KSB7XHJcbiAgICB0aGlzLl9yYW5nZSA9IHJhbmdlO1xyXG4gICAgdGhpcy5taW5WYWx1ZSA9IHJhbmdlLm1pbjtcclxuICAgIHRoaXMubWF4VmFsdWUgPSByYW5nZS5tYXg7XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXQgcmFuZ2UoKTogeyBtaW46IG51bWJlciwgbWF4OiBudW1iZXIgfSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgbWluaW11bSB2YWx1ZSBvZiB0aGUgc2xpZGVyLlxyXG4gICovXHJcbiAgbWluVmFsdWU6bnVtYmVyID0gdGhpcy5yYW5nZS5taW5cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIHNsaWRlci5cclxuICAqL1xyXG4gIG1heFZhbHVlOm51bWJlciA9IHRoaXMucmFuZ2UubWF4XHJcblxyXG4gIFxyXG5cclxuICAvKipcclxuICAgKiBQcm9wZXJ0eSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC5cclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIDxtZWZkZXYtc2xpZGVyXHJcbiAgICogIFtkaXNhYmxlZF09XCJ0cnVlXCJcclxuICAgKiA+PC9tZWZkZXYtc2xpZGVyPlxyXG4gICovXHJcbiAgQElucHV0KCkgZGlzYWJsZWQgOiBib29sZWFuPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB2YWx1ZXMgb2YgdGhlIHNsaWRlciBjaGFuZ2UuXHJcbiAgICogSXQgcGFzc2VzIGFuIG9iamVjdCB3aXRoIGBtaW5WYWx1ZWAgYW5kIGBtYXhWYWx1ZWAgcHJvcGVydGllcy5cclxuICAgKiBAZXZlbnQgTWVmRGV2U2xpZGVyQ29tcG9uZW50I3ZhbHVlQ2hhbmdlXHJcbiAgICogQHR5cGUge0V2ZW50RW1pdHRlcjx7IG1pblZhbHVlOiBudW1iZXI7IG1heFZhbHVlOiBudW1iZXIgfT59XHJcbiAgICogQGV4YW1wbGVcclxuICAgKiA8bWVmZGV2LXNsaWRlclxyXG4gICAqICAodmFsdWVDaGFuZ2UpPVwib25DaGlsZFZhbHVlQ2hhbmdlKCRldmVudClcIlxyXG4gICAqID48L21lZmRldi1zbGlkZXI+XHJcbiAgKi9cclxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjx7IG1pblZhbHVlOiBudW1iZXI7IG1heFZhbHVlOiBudW1iZXIgfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGhvZCBjYWxsZWQgd2hlbiB0aGUgdmFsdWVzIG9mIHRoZSBzbGlkZXIgY2hhbmdlLlxyXG4gICAqIEVtaXRzIHRoZSBgdmFsdWVDaGFuZ2VgIGV2ZW50IGFuZCBjYWxscyBtZXRob2RzIHRvIGhhbmRsZSBjaGFuZ2VzIGluIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcy5cclxuICAgKiBAZmlyZXMgTWVmRGV2U2xpZGVyQ29tcG9uZW50I3ZhbHVlQ2hhbmdlXHJcbiAgKi9cclxuICBvblZhbHVlQ2hhbmdlKCkge1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHsgbWluVmFsdWU6IHRoaXMubWluVmFsdWUsIG1heFZhbHVlOiB0aGlzLm1heFZhbHVlIH0pO1xyXG4gICAgdGhpcy5taW5WYWx1ZSA9IHRoaXMubWluVmFsdWVcclxuICAgIHRoaXMub25NaW5WYWx1ZUNoYW5nZSgpXHJcbiAgICB0aGlzLm9uTWF4VmFsdWVDaGFuZ2UoKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0aG9kIHRvIGhhbmRsZSBjaGFuZ2VzIGluIHRoZSBtaW5pbXVtIHZhbHVlLlxyXG4gICAqIENvbnZlcnRzIGEgc3RyaW5nIHRvIGEgbnVtYmVyIGFuZCByZW1vdmVzIGFsbCBub24tbnVtZXJpYyBjaGFyYWN0ZXJzLlxyXG4gICAqIFRoZW4sIGVtaXRzIHRoZSBgdmFsdWVDaGFuZ2VgIGV2ZW50IGFuZCB1cGRhdGVzIHRoZSB2YWx1ZSBvZiB0aGUgXCJmcm9tU2xpZGVyXCIgc2xpZGVyLlxyXG4gICAqIEBmaXJlcyBNZWZEZXZTbGlkZXJDb21wb25lbnQjdmFsdWVDaGFuZ2VcclxuICAqL1xyXG4gIG9uTWluVmFsdWVDaGFuZ2UoKSB7XHJcbiAgICBjb25zdCBudW1lcmljVmFsdWUgPSBwYXJzZUZsb2F0KHRoaXMubWluVmFsdWUudG9TdHJpbmcoKS5yZXBsYWNlKC9bXlxcZC5dL2csICcnKSk7XHJcbiAgICB0aGlzLm1pblZhbHVlID0gaXNOYU4obnVtZXJpY1ZhbHVlKSA/IDAgOiBudW1lcmljVmFsdWU7IFxyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHsgbWluVmFsdWU6IHRoaXMubWluVmFsdWUsIG1heFZhbHVlOiB0aGlzLm1heFZhbHVlIH0pO1xyXG4gICAgY29uc3QgZnJvbVNsaWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBmcm9tU2xpZGVyLSR7dGhpcy5pZH1gKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0aG9kIHRvIGhhbmRsZSBjaGFuZ2VzIGluIHRoZSBtYXhpbXVtIHZhbHVlLlxyXG4gICAqIENvbnZlcnRzIGEgc3RyaW5nIHRvIGEgbnVtYmVyIGFuZCByZW1vdmVzIGFsbCBub24tbnVtZXJpYyBjaGFyYWN0ZXJzLlxyXG4gICAqIFRoZW4sIGVtaXRzIHRoZSBgdmFsdWVDaGFuZ2VgIGV2ZW50IGFuZCB1cGRhdGVzIHRoZSB2YWx1ZSBvZiB0aGUgXCJ0b1NsaWRlclwiIHNsaWRlci5cclxuICAgKiBAZmlyZXMgTWVmRGV2U2xpZGVyQ29tcG9uZW50I3ZhbHVlQ2hhbmdlXHJcbiAgKi9cclxuICBvbk1heFZhbHVlQ2hhbmdlKCkge1xyXG4gICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gcGFyc2VGbG9hdCh0aGlzLm1heFZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZSgvW15cXGQuXS9nLCAnJykpO1xyXG4gICAgdGhpcy5tYXhWYWx1ZSA9IGlzTmFOKG51bWVyaWNWYWx1ZSkgPyAwIDogbnVtZXJpY1ZhbHVlOyAvLyDQn9C10YDQtdCy0ZbRgNC60LAg0L3QsCBOYU4g0ZYg0L/RgNC40YHQstC+0ZTQvdC90Y8gMCwg0Y/QutGJ0L4g0L3QtSDQstC00LDQu9C+0YHRjyDQutC+0L3QstC10YDRgtGD0LLQsNGC0Lgg0LIg0YfQuNGB0LvQvlxyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHsgbWluVmFsdWU6IHRoaXMubWluVmFsdWUsIG1heFZhbHVlOiB0aGlzLm1heFZhbHVlIH0pO1xyXG4gICAgY29uc3QgdG9TbGlkZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgdG9TbGlkZXItJHt0aGlzLmlkfWApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJyYW5nZV9jb250YWluZXIgcm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXRzX2NvbnRyb2wgXCI+XHJcbiAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm1fY29udHJvbF9jb250YWluZXJfX3RpbWVfX2lucHV0IGgzXCIgIFsobmdNb2RlbCldPVwiJ+KCtCcrIG1pblZhbHVlXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25NaW5WYWx1ZUNoYW5nZSgpXCI+XHJcbiAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm1fY29udHJvbF9jb250YWluZXJfX3RpbWVfX2lucHV0IGgzXCIgIFsobmdNb2RlbCldPVwiJ+KCtCcrIG1heFZhbHVlXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25NYXhWYWx1ZUNoYW5nZSgpXCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzbGlkZXJzX2NvbnRyb2xcIj5cclxuICAgICAgPGlucHV0IGlkPVwiZnJvbVNsaWRlclwiIHR5cGU9XCJyYW5nZVwiICBbKG5nTW9kZWwpXT1cIm1pblZhbHVlXCIgW21pbl09XCJyYW5nZS5taW5cIiBbbWF4XT1cInJhbmdlLm1heFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoKVwiPlxyXG4gICAgICA8aW5wdXQgaWQ9XCJ0b1NsaWRlclwiIHR5cGU9XCJyYW5nZVwiICBbKG5nTW9kZWwpXT1cIm1heFZhbHVlXCIgW21pbl09XCJyYW5nZS5taW5cIiBbbWF4XT1cInJhbmdlLm1heFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoKVwiIFxyXG4gICAgICAgICAgW3N0eWxlXT1cInsnLS1taW5WYWx1ZSc6IG1pblZhbHVlLCAgJy0tbWF4VmFsdWUnOiBtYXhWYWx1ZSwgJy0tbWluRnJvbVZhbHVlJzogcmFuZ2UubWluLCAnLS1tYXhUb1ZhbHVlJzogcmFuZ2UubWF4fVwiPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,28 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { MefDevSliderComponent } from './slider/slider.component';
4
+ import { FormsModule } from '@angular/forms';
5
+ import * as i0 from "@angular/core";
6
+ export class MefDevSliderModule {
7
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: MefDevSliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.6", ngImport: i0, type: MefDevSliderModule, declarations: [MefDevSliderComponent], imports: [CommonModule,
9
+ FormsModule], exports: [MefDevSliderComponent] });
10
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: MefDevSliderModule, imports: [CommonModule,
11
+ FormsModule] });
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: MefDevSliderModule, decorators: [{
14
+ type: NgModule,
15
+ args: [{
16
+ declarations: [
17
+ MefDevSliderComponent
18
+ ],
19
+ exports: [
20
+ MefDevSliderComponent
21
+ ],
22
+ imports: [
23
+ CommonModule,
24
+ FormsModule,
25
+ ]
26
+ }]
27
+ }] });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWtpdC1saWIvc3JjL2xpYi9tYXJrdXAta2l0L3NsaWRlci9zbGlkZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFnQjdDLE1BQU0sT0FBTyxrQkFBa0I7dUdBQWxCLGtCQUFrQjt3R0FBbEIsa0JBQWtCLGlCQVYzQixxQkFBcUIsYUFNckIsWUFBWTtZQUNaLFdBQVcsYUFKWCxxQkFBcUI7d0dBT1osa0JBQWtCLFlBSjNCLFlBQVk7WUFDWixXQUFXOzsyRkFHRixrQkFBa0I7a0JBWjlCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLHFCQUFxQjtxQkFDdEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLHFCQUFxQjtxQkFDdEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVztxQkFDWjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1lZkRldlNsaWRlckNvbXBvbmVudCB9IGZyb20gJy4vc2xpZGVyL3NsaWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcblxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIE1lZkRldlNsaWRlckNvbXBvbmVudFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgTWVmRGV2U2xpZGVyQ29tcG9uZW50XHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZWZEZXZTbGlkZXJNb2R1bGUgeyB9XHJcbiJdfQ==
@@ -162,10 +162,15 @@ export class DatepickerComponent {
162
162
  */
163
163
  onClick(event) {
164
164
  const targetElement = event.target;
165
- const calendarElement = this.elementRef.nativeElement.querySelector('.calendar');
165
+ const calendar = this.elementRef.nativeElement.querySelector('.calendar');
166
+ const monthDropdown = this.elementRef.nativeElement.querySelector('.monthDropdown');
167
+ const yearDropdown = this.elementRef.nativeElement.querySelector('.yearDropdown');
166
168
  const inputElement = this.elementRef.nativeElement.querySelector('input');
167
- if (calendarElement && calendarElement.contains(targetElement)) {
168
- // Клік відбувся на елементі календаря, нічого не робимо
169
+ if (monthDropdown.contains(targetElement) && yearDropdown.contains(targetElement)) {
170
+ this.toggleMonthDropdown(event);
171
+ this.toggleYearDropdown(event);
172
+ }
173
+ if (calendar && calendar.contains(targetElement)) {
169
174
  return;
170
175
  }
171
176
  if (inputElement && inputElement.contains(targetElement) && !this.isEditing) {
@@ -175,6 +180,7 @@ export class DatepickerComponent {
175
180
  else {
176
181
  // Клік відбувся поза календарем та input, закриваємо календар
177
182
  this.isCalendarOpen = false;
183
+ this.isEditing = false;
178
184
  }
179
185
  }
180
186
  /**
@@ -234,8 +240,9 @@ export class DatepickerComponent {
234
240
  * This method sets the 'isEditing' flag to true and stores the current formatted date for editing.
235
241
  */
236
242
  toggleEdit() {
237
- this.isEditing = true;
243
+ this.isEditing = !this.isEditing;
238
244
  this.editedDate = this.formatSelectedDate(); // Store the current formatted date for editing
245
+ this.isCalendarOpen = false;
239
246
  }
240
247
  /**
241
248
  * Get a list of month names in the specified language and format.
@@ -284,7 +291,12 @@ export class DatepickerComponent {
284
291
  * ```
285
292
  */
286
293
  toggleCalendar() {
287
- this.isCalendarOpen = !this.isCalendarOpen;
294
+ if (this.isEditing) {
295
+ this.isCalendarOpen = false;
296
+ }
297
+ else {
298
+ this.isCalendarOpen = !this.isCalendarOpen;
299
+ }
288
300
  }
289
301
  /**
290
302
  * Save the edited date input by the user, provided it matches the specified date format.
@@ -301,7 +313,6 @@ export class DatepickerComponent {
301
313
  const [day, month, year] = this.editedDate.split('/');
302
314
  this.selectedDate = new Date(+year, +month - 1, +day);
303
315
  this.formatDate();
304
- this.toggleCalendar();
305
316
  }
306
317
  }
307
318
  /**
@@ -588,4 +599,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
588
599
  type: HostListener,
589
600
  args: ['document:click', ['$event']]
590
601
  }] } });
591
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1raXQtbGliL3NyYy9saWIvbWFya3VwLWtpdC91dGlscy9kYXRlcGlja2VyL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1raXQtbGliL3NyYy9saWIvbWFya3VwLWtpdC91dGlscy9kYXRlcGlja2VyL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF5QixZQUFZLEVBQWEsS0FBSyxFQUFxQixNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFJMUk7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWtCRTtBQVFGLE1BQU0sT0FBTyxtQkFBbUI7SUFxTFY7SUFBNEI7SUFuTGxEOzs7TUFHRTtJQUNGLGNBQWMsR0FBWSxLQUFLLENBQUM7SUFFaEM7OztNQUdFO0lBQ0YsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUUzQjs7O01BR0U7SUFDRixZQUFZLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUUvQjs7O0tBR0M7SUFDRixhQUFhLENBQU87SUFFbkI7OztLQUdDO0lBQ0YsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUV4Qjs7O01BR0U7SUFDRixtQkFBbUIsR0FBWSxJQUFJLENBQUM7SUFFcEM7OztNQUdFO0lBQ0Ysa0JBQWtCLEdBQVksSUFBSSxDQUFDO0lBRW5DOzs7TUFHRTtJQUNGLGlCQUFpQixHQUFXLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFFekQ7OztNQUdFO0lBQ0YsZ0JBQWdCLEdBQVcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUUxRDs7O0tBR0M7SUFDRixLQUFLLENBQVU7SUFFZjs7Ozs7OztNQU9FO0lBQ08sSUFBSSxHQUFXLElBQUksQ0FBQztJQUU3Qjs7Ozs7OztNQU9FO0lBQ08sVUFBVSxHQUFXLGlCQUFpQixDQUFDO0lBRWhEOzs7Ozs7O01BT0U7SUFDYyxVQUFVLEdBQXFDLEVBQUMsU0FBUyxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFDLENBQUM7SUFFNUY7Ozs7Ozs7TUFPRTtJQUNPLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFFbkM7Ozs7Ozs7TUFPRTtJQUNPLFNBQVMsR0FBVyxJQUFJLENBQUM7SUFFbEM7Ozs7Ozs7TUFPRTtJQUNPLFVBQVUsR0FBVyxJQUFJLENBQUMsQ0FBQyxlQUFlO0lBRW5EOzs7Ozs7O01BT0U7SUFDUSxXQUFXLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7SUFFckU7Ozs7O01BS0U7SUFDUSxVQUFVLEdBQVcsb0RBQW9ELENBQUM7SUFFcEY7OztNQUdFO0lBQ0EsU0FBUyxHQUFXLEVBQUUsQ0FBQztJQUV6Qjs7Ozs7Ozs7TUFRRTtJQUVBLE9BQU8sQ0FBQyxLQUFpQjtRQUN2QixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsTUFBcUIsQ0FBQztRQUNsRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakYsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFFLElBQUksZUFBZSxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDOUQsd0RBQXdEO1lBQ3hELE9BQU87U0FDUjtRQUVELElBQUksWUFBWSxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzNFLHdEQUF3RDtZQUN4RCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztTQUM1QjthQUFNO1lBQ0wsOERBQThEO1lBQzlELElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUVIOzs7OztNQUtFO0lBQ0EsWUFBb0IsUUFBa0IsRUFBVSxVQUFzQjtRQUFsRCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNwRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtJQUN6QixDQUFDO0lBRUg7OztNQUdFO0lBQ0EsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBQ0g7OztNQUdFO0lBQ0EsV0FBVztRQUNULElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFSDs7O01BR0U7SUFDQSxJQUFZLE1BQU07UUFDaEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUg7OztNQUdFO0lBQ0EsSUFBWSxRQUFRO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVIOzs7Ozs7Ozs7TUFTRTtJQUNRLGVBQWU7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvRyxDQUFDO0lBRUg7OztNQUdFO0lBQ0EsVUFBVTtRQUNSLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQywrQ0FBK0M7SUFDOUYsQ0FBQztJQUVIOzs7Ozs7Ozs7TUFTRTtJQUNRLFlBQVksQ0FBRyxPQUEyQixFQUFHLFNBQTJCLE1BQU07UUFDcEYsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0QyxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxFQUFLLEtBQUssRUFBRSxNQUFNLEVBQUcsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sWUFBWSxHQUFHLENBQUMsVUFBa0IsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUN6RixPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVIOzs7Ozs7Ozs7TUFTRTtJQUNRLGNBQWMsQ0FBQyxPQUEyQixFQUFFLFNBQTJCLE9BQU87UUFDbEYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQixNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDeEUsTUFBTSxjQUFjLEdBQUcsQ0FBQyxZQUFvQixFQUFFLEVBQUU7WUFDOUMsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFHSDs7Ozs7OztNQU9FO0lBQ1EsY0FBYztRQUNuQixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQTtJQUM3QyxDQUFDO0lBRUg7Ozs7Ozs7O01BUUU7SUFDUSxjQUFjO1FBQ3BCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVIOzs7Ozs7Ozs7TUFTRTtJQUNRLFdBQVcsQ0FBQyxLQUFVO1FBQzVCLE1BQU0sU0FBUyxHQUFXLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQzdDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztZQUM1QixNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztJQUVIOzs7Ozs7OztNQVFFO0lBQ1EsbUJBQW1CLENBQUMsS0FBWTtRQUN0QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDdkQsQ0FBQztJQUVIOzs7Ozs7OztNQVFFO0lBQ1Esa0JBQWtCLENBQUMsS0FBWTtRQUNyQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDckQsQ0FBQztJQUVIOzs7Ozs7OztNQVFFO0lBQ1EsYUFBYTtRQUNuQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVIOzs7Ozs7OztNQVFFO0lBQ1EsWUFBWTtRQUNsQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFSDs7Ozs7TUFLRTtJQUNBLFVBQVUsQ0FBQyxJQUFVO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUVIOzs7Ozs7O01BT0U7SUFDUSxVQUFVO1FBQ2hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pGLENBQUM7SUFFSDs7Ozs7Ozs7TUFRRTtJQUNRLGtCQUFrQjtRQUN4QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RGLENBQUM7SUFFSDs7Ozs7Ozs7TUFRRTtJQUNRLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ3BGLENBQUM7SUFFSDs7Ozs7Ozs7TUFRRTtJQUNBLElBQVksWUFBWTtRQUN0QixPQUFPLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFSDs7Ozs7Ozs7OztNQVVFO0lBQ1Esb0JBQW9CLENBQUMsSUFBVTtRQUNyQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUNELE1BQU0sV0FBVyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDL0IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssV0FBVyxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxXQUFXLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDbEcsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDbEM7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzVDO0lBQ0gsQ0FBQztJQUVIOzs7Ozs7O01BT0U7SUFDUSxnQkFBZ0I7UUFDdEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLEVBQUUsWUFBWSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVIOzs7Ozs7O01BT0U7SUFDUSxZQUFZO1FBQ2xCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUFFLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFSDs7Ozs7TUFLRTtJQUNRLFdBQVcsQ0FBQyxJQUFZLEVBQUUsS0FBYTtRQUM3QyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFSDs7Ozs7TUFLRTtJQUNRLDJCQUEyQjtRQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzdDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDM0MsTUFBTSxlQUFlLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRCxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDOUMsTUFBTSxRQUFRLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUM7UUFDNUQsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQztRQUMxQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzFCLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNoQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUM5QyxNQUFNLE9BQU8sR0FBRztvQkFDZCxJQUFJLEVBQUUsR0FBRztvQkFDVCxjQUFjLEVBQUUsVUFBVSxJQUFJLENBQUMsSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO2lCQUMvRSxDQUFDO2dCQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ25CLFVBQVUsRUFBRSxDQUFDO2FBQ2Q7WUFDRCxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVIOzs7Ozs7OztNQVFFO0lBQ1EsY0FBYyxDQUFDLElBQVU7UUFDL0IsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsRSxDQUFDO0lBRUg7Ozs7Ozs7O01BUUU7SUFDUSxXQUFXLENBQUMsU0FBaUI7UUFDbkMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUg7Ozs7Ozs7O01BUUU7SUFDUSxXQUFXLENBQUMsSUFBVTtRQUM1QixNQUFNLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0RCxDQUFDO3VHQXprQlUsbUJBQW1COzJGQUFuQixtQkFBbUIsc1ZDOUJoQyw2dkhBeUdBOzsyRkQzRWEsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLG1CQUFtQjt3SEEyRXRCLElBQUk7c0JBQVosS0FBSztnQkFVRyxVQUFVO3NCQUFsQixLQUFLO2dCQVVVLFVBQVU7c0JBQXpCLEtBQUs7dUJBQUMsT0FBTztnQkFVTCxRQUFRO3NCQUFoQixLQUFLO2dCQVVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBVUcsVUFBVTtzQkFBbEIsS0FBSztnQkFVSSxXQUFXO3NCQUFwQixNQUFNO2dCQTBCTCxPQUFPO3NCQUROLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3ksIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuXHJcbi8qKlxyXG4gICogRGF0ZXBpY2tlciBDb21wb25lbnQgZm9yIHNlbGVjdGluZyBkYXRlcy5cclxuICAqXHJcbiAgKiBUaGlzIGNvbXBvbmVudCBhbGxvd3MgdXNlcnMgdG8gcGljayBhIGRhdGUgZnJvbSBhIGNhbGVuZGFyIGludGVyZmFjZS5cclxuICAqIEl0IHN1cHBvcnRzIHZhcmlvdXMgY29uZmlndXJhdGlvbiBvcHRpb25zIHN1Y2ggYXMgbGFuZ3VhZ2UsIGRhdGUgZm9ybWF0LCBhbmQgZGF0ZSByYW5nZS5cclxuICAqXHJcbiAgKiBAZXhhbXBsZVxyXG4gICogPG1lZmRldi1kYXRlcGlja2VyXHJcbiAgKiAgIFtsYW5nXT1cIid1aydcIlxyXG4gICogICBbZGF0ZUZvcm1hdF09XCInZGQvTU0veXl5eSdcIlxyXG4gICogICBbcmFuZ2VdPVwie3N0YXJ0WWVhcjogMTkwMCwgdG9ZZWFyOiAzMDB9XCJcclxuICAqICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcclxuICAqICAgKGRhdGVDaGFuZ2VkKT1cIm9uRGF0ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgKiAgIFt0b3BPZmZzZXRdPVwiJzIwJ1wiXHJcbiAgKiAgIFtsZWZ0T2Zmc2V0XT1cIicxMCdcIj5cclxuICAqIDwvbWVmZGV2LWRhdGVwaWNrZXI+XHJcbiAgKlxyXG4gICogPGV4YW1wbGUtdXJsPmh0dHBzOi8vbWVmLmRldi91aV9raXRfZGVtby92aWV3L3V0aWxzL2RhdGVwaWNrZXI8L2V4YW1wbGUtdXJsPlxyXG4qL1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtZWZkZXYtZGF0ZXBpY2tlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RhdGVwaWNrZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIERhdGVwaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyAgT25DaGFuZ2VzLCBPbkluaXQge1xyXG5cclxuLyoqXHJcbiAqIEZsYWcgdG8gZGV0ZXJtaW5lIGlmIHRoZSBjYWxlbmRhciBpcyBvcGVuIG9yIGNsb3NlZC5cclxuICogRGVmYXVsdCB2YWx1ZTogZmFsc2UgKGNsb3NlZCkuXHJcbiovXHJcbmlzQ2FsZW5kYXJPcGVuOiBib29sZWFuID0gZmFsc2U7IFxyXG5cclxuLyoqXHJcbiAqIEZsYWcgdG8gZGV0ZXJtaW5lIGlmIHRoZSBjb21wb25lbnQgaXMgaW4gZWRpdGluZyBtb2RlLlxyXG4gKiBEZWZhdWx0IHZhbHVlOiBmYWxzZSAobm90IGluIGVkaXRpbmcgbW9kZSkuXHJcbiovXHJcbmlzRWRpdGluZzogYm9vbGVhbiA9IGZhbHNlOyAgXHJcblxyXG4vKipcclxuICogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBkYXRlLlxyXG4gKiBEZWZhdWx0IHZhbHVlOiBUb2RheSdzIGRhdGUuXHJcbiovXHJcbnNlbGVjdGVkRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7IFxyXG5cclxuIC8qKlxyXG4gKiBUaGUgZm9ybWF0dGVkIGRhdGUgZm9yIGRpc3BsYXkgaW4gdGhlIGlucHV0LlxyXG4gKiBEZWZhdWx0IHZhbHVlOiBGb3JtYXR0ZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNlbGVjdGVkIGRhdGUuXHJcbiovXHJcbmZvcm1hdHRlZERhdGU6IGFueSA7IFxyXG5cclxuIC8qKlxyXG4gKiBUcmFjayB0aGUgZWRpdGVkIGRhdGUgc2VwYXJhdGVseSB3aGVuIGluIGVkaXRpbmcgbW9kZS5cclxuICogRGVmYXVsdCB2YWx1ZTogQW4gZW1wdHkgc3RyaW5nLlxyXG4qL1xyXG5lZGl0ZWREYXRlOiBzdHJpbmcgPSAnJzsgXHJcblxyXG4vKipcclxuICogRmxhZyB0byBkZXRlcm1pbmUgaWYgdGhlIG1vbnRoIGRyb3Bkb3duIGlzIG9wZW4gb3IgY2xvc2VkLlxyXG4gKiBEZWZhdWx0IHZhbHVlOiB0cnVlIChvcGVuKS5cclxuKi9cclxuaXNNb250aERyb3Bkb3duT3BlbjogYm9vbGVhbiA9IHRydWU7IFxyXG5cclxuLyoqXHJcbiAqIEZsYWcgdG8gZGV0ZXJtaW5lIGlmIHRoZSB5ZWFyIGRyb3Bkb3duIGlzIG9wZW4gb3IgY2xvc2VkLlxyXG4gKiBEZWZhdWx0IHZhbHVlOiB0cnVlIChvcGVuKS5cclxuKi9cclxuaXNZZWFyRHJvcGRvd25PcGVuOiBib29sZWFuID0gdHJ1ZTsgXHJcblxyXG4vKipcclxuICogVGhlIHNlbGVjdGVkIG1vbnRoICgwLTExKS5cclxuICogRGVmYXVsdCB2YWx1ZTogVGhlIG1vbnRoIG9mIHRoZSBzZWxlY3RlZCBkYXRlLlxyXG4qL1xyXG5zZWxlY3RlZERhdGVNb250aDogbnVtYmVyID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0TW9udGgoKTsgXHJcblxyXG4vKipcclxuICogVGhlIHNlbGVjdGVkIHllYXIuXHJcbiAqIERlZmF1bHQgdmFsdWU6IFRoZSB5ZWFyIG9mIHRoZSBzZWxlY3RlZCBkYXRlLlxyXG4qL1xyXG5zZWxlY3RlZERhdGVZZWFyOiBudW1iZXIgPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpOyBcclxuXHJcbiAvKipcclxuICogQW4gYXJyYXkgb2YgeWVhcnMgZm9yIHRoZSB5ZWFyIGRyb3Bkb3duLlxyXG4gKiBEZWZhdWx0IHZhbHVlOiBBbiBhcnJheSBvZiB5ZWFycyB3aXRoaW4gdGhlIHNwZWNpZmllZCByYW5nZS5cclxuKi9cclxueWVhcnM6IG51bWJlcltdIFxyXG5cclxuLyoqXHJcbiAqIFRoZSBsYW5ndWFnZS9sb2NhbGUgZm9yIHRoZSBkYXRlcGlja2VyLlxyXG4gKiBEZWZhdWx0IHZhbHVlOiAnZW4nIChFbmdsaXNoKS5cclxuICogQGV4YW1wbGVcclxuICogPG1lZmRldi1kYXRlcGlja2VyXHJcbiAqICAgW2xhbmddID0gXCIndWsnXCI+XHJcbiAqIDwvbWVmZGV2LWRhdGVwaWNrZXI+XHJcbiovXHJcbkBJbnB1dCgpIGxhbmc6IHN0cmluZyA9ICdlbic7IFxyXG5cclxuLyoqXHJcbiAqIFRoZSBkYXRlIGZvcm1hdCBmb3IgZGlzcGxheWluZyB0aGUgc2VsZWN0ZWQgZGF0ZS5cclxuICogRGVmYXVsdCB2YWx1ZTogJ0VFRSBNTU0gZGQgeXl5eScuXHJcbiAqIEBleGFtcGxlXHJcbiAqIDxtZWZkZXYtZGF0ZXBpY2tlclxyXG4gKiAgIFtkYXRlRm9ybWF0XT1cIidkZC9NTS95eXl5J1wiPlxyXG4gKiA8L21lZmRldi1kYXRlcGlja2VyPlxyXG4qL1xyXG5ASW5wdXQoKSBkYXRlRm9ybWF0OiBzdHJpbmcgPSAnRUVFIE1NTSBkZCB5eXl5JzsgXHJcblxyXG4vKipcclxuICogVGhlIHJhbmdlIG9mIHllYXJzIGF2YWlsYWJsZSBpbiB0aGUgeWVhciBkcm9wZG93bi5cclxuICogRGVmYXVsdCB2YWx1ZTogeyBzdGFydFllYXI6IDE5MDAsIHRvWWVhcjogMzAwIH0uXHJcbiAqIEBleGFtcGxlXHJcbiAqIDxtZWZkZXYtZGF0ZXBpY2tlclxyXG4gKiAgIFtyYW5nZV09XCJ7c3RhcnRZZWFyOiAxOTAwLCB0b1llYXI6IDMwMH1cIj5cclxuICogPC9tZWZkZXYtZGF0ZXBpY2tlcj5cclxuKi9cclxuQElucHV0KCdyYW5nZScpIHllYXJzUmFuZ2U6e3N0YXJ0WWVhcjpudW1iZXIsIHRvWWVhcjpudW1iZXJ9ID0ge3N0YXJ0WWVhcjoxOTAwLCB0b1llYXI6MzAwfTsgXHJcblxyXG4vKipcclxuICogV2hldGhlciB0aGUgZGF0ZXBpY2tlciBpcyBkaXNhYmxlZCBvciBub3QuXHJcbiAqIERlZmF1bHQgdmFsdWU6IGZhbHNlIChlbmFibGVkKS5cclxuICogQGV4YW1wbGVcclxuICogPG1lZmRldi1kYXRlcGlja2VyXHJcbiAqICAgW2Rpc2FibGVkXT1cImZhbHNlXCI+XHJcbiAqIDwvbWVmZGV2LWRhdGVwaWNrZXI+XHJcbiovXHJcbkBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7IFxyXG5cclxuLyoqXHJcbiAqIFRoZSB0b3Agb2Zmc2V0IGZvciBwb3NpdGlvbmluZyB0aGUgZGF0ZXBpY2tlci5cclxuICogRGVmYXVsdCB2YWx1ZTogJzIwJy5cclxuICogQGV4YW1wbGVcclxuICogPG1lZmRldi1kYXRlcGlja2VyXHJcbiAqICAgW3RvcE9mZnNldF09XCInMjAnXCI+XHJcbiAqIDwvbWVmZGV2LWRhdGVwaWNrZXI+XHJcbiovXHJcbkBJbnB1dCgpIHRvcE9mZnNldDogc3RyaW5nID0gJzIwJztcclxuXHJcbi8qKlxyXG4gKiBUaGUgbGVmdCBvZmZzZXQgZm9yIHBvc2l0aW9uaW5nIHRoZSBkYXRlcGlja2VyLlxyXG4gKiBEZWZhdWx0IHZhbHVlOiAnMTAnLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiA8bWVmZGV2LWRhdGVwaWNrZXJcclxuICogICBbbGVmdE9mZnNldF09XCInMTAnXCI+XHJcbiAqIDwvbWVmZGV2LWRhdGVwaWNrZXI+XHJcbiovXHJcbkBJbnB1dCgpIGxlZnRPZmZzZXQ6IHN0cmluZyA9ICcxMCc7IC8vRGVmYXVsdCB2YWx1ZVxyXG5cclxuLyoqXHJcbiAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0ZWQgZGF0ZSBpbiB0aGUgZGF0ZXBpY2tlciBjaGFuZ2VzLlxyXG4gKiBJdCBlbWl0cyBhIGBEYXRlYCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBzZWxlY3RlZCBkYXRlLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiA8bWVmZGV2LWRhdGVwaWNrZXJcclxuICogICAoZGF0ZUNoYW5nZWQpPVwib25EYXRlQ2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAqIDwvbWVmZGV2LWRhdGVwaWNrZXI+XHJcbiovXHJcbkBPdXRwdXQoKSBkYXRlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xyXG5cclxuLyoqXHJcbiAqIFJlZ3VsYXIgZXhwcmVzc2lvbiB0byB2YWxpZGF0ZSB1c2VyIGlucHV0IGZvciBkYXRlIGluIHRoZSBmb3JtYXQgXCJkZC9NTS95eXl5XCIuXHJcbiAqIC0gVGhlIGRheSAoZGQpIHNob3VsZCBiZSBiZXR3ZWVuIDAxIGFuZCAzMS5cclxuICogLSBUaGUgbW9udGggKE1NKSBzaG91bGQgYmUgYmV0d2VlbiAwMSBhbmQgMTIuXHJcbiAqIC0gVGhlIHllYXIgKHl5eXkpIHNob3VsZCBiZSBhIDQtZGlnaXQgbnVtYmVyLlxyXG4qL1xyXG4gIHByaXZhdGUgZGF0ZVJlZ0V4cDogUmVnRXhwID0gL14oMFsxLTldfFsxMl1bMC05XXwzWzAxXSlcXC8oMFsxLTldfDFbMC0yXSlcXC9cXGR7NH0kLztcclxuXHJcbi8qKlxyXG4gKiBUaGUgc3RyaW5nIGVudGVyZWQgYnkgdGhlIHVzZXIgZm9yIGRhdGUgaW5wdXQuXHJcbiAqIFRoaXMgdmFyaWFibGUgc3RvcmVzIHRoZSB1c2VyJ3MgaW5wdXQgYXMgdGhleSB0eXBlIGluIHRoZSBkYXRlIGZpZWxkLlxyXG4qL1xyXG4gIHVzZXJJbnB1dDogc3RyaW5nID0gJyc7XHJcbiAgXHJcbi8qKlxyXG4gKiBIb3N0IGxpc3RlbmVyIGZvciBkb2N1bWVudCBjbGljayBldmVudHMgdG8gaGFuZGxlIGNhbGVuZGFyIGludGVyYWN0aW9uLlxyXG4gKiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiBhIGNsaWNrIGV2ZW50IG9jY3VycmVkIHdpdGhpbiB0aGUgY2FsZW5kYXIgb3IgaW5wdXQgZWxlbWVudHMuXHJcbiAqIC0gSWYgdGhlIGNsaWNrIG9jY3VycmVkIHdpdGhpbiB0aGUgY2FsZW5kYXIsIG5vIGFjdGlvbiBpcyB0YWtlbi5cclxuICogLSBJZiB0aGUgY2xpY2sgb2NjdXJyZWQgd2l0aGluIHRoZSBpbnB1dCBlbGVtZW50IGFuZCB0aGUgY29tcG9uZW50IGlzIG5vdCBpbiBlZGl0aW5nIG1vZGUsXHJcbiAqICAgaXQgb3BlbnMgdGhlIGNhbGVuZGFyLlxyXG4gKiAtIElmIHRoZSBjbGljayBvY2N1cnJlZCBvdXRzaWRlIHRoZSBjYWxlbmRhciBhbmQgaW5wdXQsIGl0IGNsb3NlcyB0aGUgY2FsZW5kYXIuXHJcbiAqIEBwYXJhbSBldmVudCBUaGUgTW91c2VFdmVudCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBjbGljayBldmVudC5cclxuKi9cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25DbGljayhldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IGNhbGVuZGFyRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jYWxlbmRhcicpO1xyXG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcclxuXHJcbiAgICBpZiAoY2FsZW5kYXJFbGVtZW50ICYmIGNhbGVuZGFyRWxlbWVudC5jb250YWlucyh0YXJnZXRFbGVtZW50KSkge1xyXG4gICAgICAvLyDQmtC70ZbQuiDQstGW0LTQsdGD0LLRgdGPINC90LAg0LXQu9C10LzQtdC90YLRliDQutCw0LvQtdC90LTQsNGA0Y8sINC90ZbRh9C+0LPQviDQvdC1INGA0L7QsdC40LzQvlxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGlucHV0RWxlbWVudCAmJiBpbnB1dEVsZW1lbnQuY29udGFpbnModGFyZ2V0RWxlbWVudCkgJiYgIXRoaXMuaXNFZGl0aW5nKSB7XHJcbiAgICAgIC8vINCa0LvRltC6INCy0ZbQtNCx0YPQstGB0Y8g0L3QsCDQtdC70LXQvNC10L3RgtGWIGlucHV0LCDQstGW0LTQutGA0LjQstCw0ZTQvNC+INC60LDQu9C10L3QtNCw0YBcclxuICAgICAgdGhpcy5pc0NhbGVuZGFyT3BlbiA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyDQmtC70ZbQuiDQstGW0LTQsdGD0LLRgdGPINC/0L7Qt9CwINC60LDQu9C10L3QtNCw0YDQtdC8INGC0LAgaW5wdXQsINC30LDQutGA0LjQstCw0ZTQvNC+INC60LDQu9C10L3QtNCw0YBcclxuICAgICAgdGhpcy5pc0NhbGVuZGFyT3BlbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbi8qKlxyXG4gKiBDb25zdHJ1Y3RvciBmb3IgdGhlIERhdGVwaWNrZXJDb21wb25lbnQgY2xhc3MuXHJcbiAqIEBwYXJhbSBkYXRlUGlwZSBBIHNlcnZpY2UgZm9yIGZvcm1hdHRpbmcgYW5kIHBhcnNpbmcgZGF0ZXMuXHJcbiAqIEBwYXJhbSBlbGVtZW50UmVmIEEgcmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IG9uIHdoaWNoIHRoaXMgY29tcG9uZW50IGlzIGF0dGFjaGVkLlxyXG4gKiBJdCBpcyB1c2VkIHRvIGFjY2VzcyBET00gZWxlbWVudHMuXHJcbiovXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUsIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xyXG4gICAgdGhpcy51cGRhdGVJbnB1dFZhbHVlKClcclxuICB9XHJcbiAgXHJcbi8qKlxyXG4gKiBMaWZlY3ljbGUgaG9vayBjYWxsZWQgYWZ0ZXIgdGhlIGNvbXBvbmVudCBpcyBpbml0aWFsaXplZC5cclxuICogSXQgaW5pdGlhbGl6ZXMgdGhlIHllYXJzIGZvciB0aGUgeWVhciBzZWxlY3QgZHJvcGRvd24uXHJcbiovXHJcbiAgbmdPbkluaXQoKXtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZVllYXJzKCk7XHJcbiAgfVxyXG4vKipcclxuICogTGlmZWN5Y2xlIGhvb2sgY2FsbGVkIHdoZW5ldmVyIHRoZSBpbnB1dCBwcm9wZXJ0aWVzIG9mIHRoZSBjb21wb25lbnQgY2hhbmdlLlxyXG4gKiBJdCB1cGRhdGVzIHRoZSBpbnB1dCB2YWx1ZS5cclxuKi9cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIHRoaXMudXBkYXRlSW5wdXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbi8qKlxyXG4gKiBBbiBhcnJheSBvZiBtb250aCBuYW1lcyBiYXNlZCBvbiB0aGUgc2VsZWN0ZWQgbGFuZ3VhZ2UuXHJcbiAqIEl0IHByb3ZpZGVzIGxvY2FsaXplZCBtb250aCBuYW1lcyBmb3IgZGlzcGxheSBpbiB0aGUgZGF0ZXBpY2tlci5cclxuKi9cclxuICBwcml2YXRlIGdldCBtb250aHMoKXtcclxuICAgIHJldHVybiB0aGlzLmdldE1vbnRoTGlzdCh0aGlzLmxhbmcpO1xyXG4gIH0gIFxyXG5cclxuLyoqXHJcbiAqIEFuIGFycmF5IG9mIHdlZWtkYXkgbmFtZXMgYmFzZWQgb24gdGhlIHNlbGVjdGVkIGxhbmd1YWdlLlxyXG4gKiBJdCBwcm92aWRlcyBsb2NhbGl6ZWQgd2Vla2RheSBuYW1lcyBmb3IgZGlzcGxheSBpbiB0aGUgZGF0ZXBpY2tlci5cclxuKi9cclxuICBwcml2YXRlIGdldCB3ZWVrZGF5cygpIHtcclxuICAgIHJldHVybiB0aGlzLmdldFdlZWtkYXlMaXN0KHRoaXMubGFuZyk7XHJcbiAgfVxyXG5cclxuLyoqXHJcbiAqIEluaXRpYWxpemUgdGhlIGxpc3Qgb2YgeWVhcnMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSB5ZWFyIGRyb3Bkb3duLlxyXG4gKiBUaGlzIG1ldGhvZCBwb3B1bGF0ZXMgdGhlICd5ZWFycycgYXJyYXkgd2l0aCBhIHJhbmdlIG9mIHllYXJzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCAneWVhcnNSYW5nZScgY29uZmlndXJhdGlvbi5cclxuICogQGV4YW1wbGVcclxuICogYGBgXHJcbiAqIC8vIEFzc3VtaW5nICd5ZWFyc1JhbmdlJyBpcyB7IHN0YXJ0WWVhcjogMTkwMCwgdG9ZZWFyOiAzMDAgfVxyXG4gKiAvLyBBZnRlciBjYWxsaW5nIGluaXRpYWxpemVZZWFycygpLCAneWVhcnMnIG1pZ2h0IGNvbnRhaW4gWzE5MDAsIDE5MDEsIC4uLiwgMzAwXVxyXG4gKiB0aGlzLmluaXRpYWxpemVZZWFycygpO1xyXG4gKiBgYGBcclxuKi9cclxuICBwcml2YXRlIGluaXRpYWxpemVZZWFycygpIHtcclxuICAgIHRoaXMueWVhcnMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLnllYXJzUmFuZ2UudG9ZZWFyIH0sIChfLCBpbmRleCkgPT4gaW5kZXggKyB0aGlzLnllYXJzUmFuZ2Uuc3RhcnRZZWFyKTtcclxuICB9XHJcblxyXG4vKipcclxuICogVG9nZ2xlIHRoZSBlZGl0aW5nIG1vZGUgZm9yIHRoZSBkYXRlIGlucHV0LiBXaGVuIGVuYWJsZWQsIHRoZSB1c2VyIGNhbiBlZGl0IHRoZSBkYXRlIGRpcmVjdGx5IGluIHRoZSBpbnB1dCBmaWVsZC5cclxuICogVGhpcyBtZXRob2Qgc2V0cyB0aGUgJ2lzRWRpdGluZycgZmxhZyB0byB0cnVlIGFuZCBzdG9yZXMgdGhlIGN1cnJlbnQgZm9ybWF0dGVkIGRhdGUgZm9yIGVkaXRpbmcuXHJcbiovXHJcbiAgdG9nZ2xlRWRpdCgpIHtcclxuICAgIHRoaXMuaXNFZGl0aW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuZWRpdGVkRGF0ZSA9IHRoaXMuZm9ybWF0U2VsZWN0ZWREYXRlKCk7IC8vIFN0b3JlIHRoZSBjdXJyZW50IGZvcm1hdHRlZCBkYXRlIGZvciBlZGl0aW5nXHJcbiAgfVxyXG5cclxuLyoqXHJcbiAqIEdldCBhIGxpc3Qgb2YgbW9udGggbmFtZXMgaW4gdGhlIHNwZWNpZmllZCBsYW5ndWFnZSBhbmQgZm9ybWF0LlxyXG4gKiBAcGFyYW0gbG9jYWxlcyAtIEFuIG9wdGlvbmFsIHBhcmFtZXRlciBzcGVjaWZ5aW5nIHRoZSBsb2NhbGUgb3IgbG9jYWxlcyB0byB1c2UgZm9yIGZvcm1hdHRpbmcuXHJcbiAqIEBwYXJhbSBmb3JtYXQgLSBUaGUgZm9ybWF0IGZvciBtb250aCBuYW1lcywgZWl0aGVyIFwibG9uZ1wiIChkZWZhdWx0KSBvciBcInNob3J0XCIuXHJcbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIG1vbnRoIG5hbWVzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBmb3JtYXQgYW5kIGxvY2FsZS5cclxuICogYGBgXHJcbiAqIC8vIEdldCBhIGxpc3Qgb2YgbW9udGggbmFtZXMgaW4gdGhlIGRlZmF1bHQgbGFuZ3VhZ2UgYW5kIGxvbmcgZm9ybWF0XHJcbiAqIGNvbnN0IG1vbnRocyA9IHRoaXMuZ2V0TW9udGhMaXN0KHRoaXMubGFuZyk7XHJcbiAqIGBgYFxyXG4qL1xyXG4gIHByaXZhdGUgZ2V0TW9udGhMaXN0KCAgbG9jYWxlcz86IHN0cmluZyB8IHN0cmluZ1tdLCAgZm9ybWF0OiBcImxvbmdcIiB8IFwic2hvcnRcIiA9IFwibG9uZ1wiKTogc3RyaW5nW10geyAgXHJcbiAgICBjb25zdCB5ZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xyXG4gICAgY29uc3QgbW9udGhMaXN0ID0gWy4uLkFycmF5KDEyKS5rZXlzKCldO1xyXG4gICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlcywgeyAgICBtb250aDogZm9ybWF0ICB9KTtcclxuICAgIGNvbnN0IGdldE1vbnRoTmFtZSA9IChtb250aEluZGV4OiBudW1iZXIpID0+IGZvcm1hdHRlci5mb3JtYXQobmV3IERhdGUoeWVhciwgbW9udGhJbmRleCkpO1xyXG4gICAgIHJldHVybiBtb250aExpc3QubWFwKGdldE1vbnRoTmFtZSk7XHJcbiAgfVxyXG4gIFxyXG4vKipcclxuICogR2V0IGEgbGlzdCBvZiB3ZWVrZGF5IG5hbWVzIGluIHRoZSBzcGVjaWZpZWQgbGFuZ3VhZ2UgYW5kIGZvcm1hdC5cclxuICogQHBhcmFtIGxvY2FsZXMgLSBBbiBvcHRpb25hbCBwYXJhbWV0ZXIgc3BlY2lmeWluZyB0aGUgbG9jYWxlIG9yIGxvY2FsZXMgdG8gdXNlIGZvciBmb3JtYXR0aW5nLlxyXG4gKiBAcGFyYW0gZm9ybWF0IC0gVGhlIGZvcm1hdCBmb3Igd2Vla2RheSBuYW1lcywgZWl0aGVyIFwic2hvcnRcIiAoZGVmYXVsdCkgb3IgXCJsb25nXCIuXHJcbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHdlZWtkYXkgbmFtZXMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGZvcm1hdCBhbmQgbG9jYWxlLlxyXG4gKiBgYGBcclxuICogLy8gR2V0IGEgbGlzdCBvZiB3ZWVrZGF5IG5hbWVzIGluIHRoZSBkZWZhdWx0IGxhbmd1YWdlIGFuZCBzaG9ydCBmb3JtYXRcclxuICogY29uc3Qgd2Vla2RheXMgPSB0aGlzLmdldFdlZWtkYXlMaXN0KCk7XHJcbiAqIGBgYFxyXG4qL1xyXG4gIHByaXZhdGUgZ2V0V2Vla2RheUxpc3QobG9jYWxlcz86IHN0cmluZyB8IHN0cmluZ1tdLCBmb3JtYXQ6IFwic2hvcnRcIiB8IFwibG9uZ1wiID0gXCJzaG9ydFwiKTogc3RyaW5nW10ge1xyXG4gICAgICBjb25zdCB3ZWVrZGF5cyA9IFsuLi5BcnJheSg3KS5rZXlzKCldO1xyXG4gICAgICBjb25zdCBtb25kYXlJbmRleCA9IHdlZWtkYXlzLmluZGV4T2YoMCk7XHJcbiAgICAgIHdlZWtkYXlzLnNwbGljZShtb25kYXlJbmRleCwgMSk7IFxyXG4gICAgICB3ZWVrZGF5cy5wdXNoKDApOyBcclxuICAgICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlcywgeyB3ZWVrZGF5OiBmb3JtYXQgfSk7ICAgIFxyXG4gICAgICBjb25zdCBnZXRXZWVrZGF5TmFtZSA9ICh3ZWVrZGF5SW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KG5ldyBEYXRlKDIwMjMsIDksIHdlZWtkYXlJbmRleCArIDEpKTsgXHJcbiAgICAgIH07XHJcbiAgICAgIHJldHVybiB3ZWVrZGF5cy5tYXAoZ2V0V2Vla2RheU5hbWUpO1xyXG4gIH1cclxuICAgIFxyXG4gICAgXHJcbi8qKlxyXG4gKiBUb2dnbGUgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGNhbGVuZGFyIGNvbXBvbmVudC4gV2hlbiBjYWxsZWQsIHRoaXMgbWV0aG9kIGNoYW5nZXMgdGhlICdpc0NhbGVuZGFyT3BlbicgZmxhZ1xyXG4gKiB0byBzaG93IG9yIGhpZGUgdGhlIGNhbGVuZGFyIGludGVyZmFjZS5cclxuICogYGBgXHJcbiAqIC8vIFRvZ2dsZSB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgY2FsZW5kYXJcclxuICogdGhpcy50b2dnbGVDYWxlbmRhcigpO1xyXG4gKiBgYGBcclxuKi9cclxuICBwcml2YXRlIHRvZ2dsZUNhbGVuZGFyKCkge1xyXG4gICAgIHRoaXMuaXNDYWxlbmRhck9wZW4gPSAhdGhpcy5pc0NhbGVuZGFyT3BlblxyXG4gIH1cclxuXHJcbi8qKlxyXG4gKiBTYXZlIHRoZSBlZGl0ZWQgZGF0ZSBpbnB1dCBieSB0aGUgdXNlciwgcHJvdmlkZWQgaXQgbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIGRhdGUgZm9ybWF0LlxyXG4gKiBUaGlzIG1ldGhvZCBjaGVja3MgaWYgdGhlIGVudGVyZWQgZGF0ZSBpcyBpbiBhIHZhbGlkIGZvcm1hdCwgZGlzYWJsZXMgdGhlIGVkaXRpbmcgbW9kZSwgYW5kIGFwcGxpZXNcclxuICogdGhlIGVkaXRlZCBkYXRlIHRvIHRoZSAnc2VsZWN0ZWREYXRlJy4gSXQgdGhlbiByZWZvcm1hdHMgdGhlIHNlbGVjdGVkIGRhdGUgYW5kIGNsb3NlcyB0aGUgY2FsZW5kYXIuXHJcbiAqIGBgYFxyXG4gKiAvLyBTYXZlIHRoZSBlZGl0ZWQgZGF0ZSBhbmQgdXBkYXRlIHRoZSBzZWxlY3RlZCBkYXRlXHJcbiAqIHRoaXMuc2F2ZUVkaXRlZERhdGUoKTtcclxuICogYGBgXHJcbiovXHJcbiAgcHJpdmF0ZSBzYXZlRWRpdGVkRGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLmlzRGF0ZVZhbGlkKHRoaXMuZWRpdGVkRGF0ZSkpIHtcclxuICAgICAgdGhpcy5pc0VkaXRpbmcgPSBmYWxzZTsgXHJcbiAgICAgIGNvbnN0IFtkYXksIG1vbnRoLCB5ZWFyXSA9IHRoaXMuZWRpdGVkRGF0ZS5zcGxpdCgnLycpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKCt5ZWFyLCArbW9udGggLSAxLCArZGF5KTtcclxuICAgICAgdGhpcy5mb3JtYXREYXRlKCk7IFxyXG4gICAgICB0aGlzLnRvZ2dsZUNhbGVuZGFyKCk7IFxyXG4gICAgfSBcclxuICB9XHJcblxyXG4vKipcclxuICAqIEhhbmRsZSB1c2VyIGlucHV0IGluIHRoZSBlZGl0YWJsZSBpbnB1dCBmaWVsZCBmb3IgZGF0ZSBlZGl0aW5nLiBUaGlzIG1ldGhvZCBjYXB0dXJlcyB0aGUgaW5wdXQgdmFsdWVcclxuICAqIGFuZCBzdG9yZXMgaXQgaW4gdGhlICdlZGl0ZWREYXRlJyB2YXJpYWJsZS4gSWYgdGhlIGlucHV0IG1hdGNoZXMgdGhlIHZhbGlkIGRhdGUgZm9ybWF0LCBpdCB1cGRhdGVzXHJcbiAgKiAnc2VsZWN0ZWREYXRlTW9udGgnIGFuZCAnc2VsZWN0ZWREYXRlWWVhcicgYWNjb3JkaW5nbHkuXHJcbiAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgaW5wdXQgZXZlbnQgY29udGFpbmluZyB0aGUgdXNlcidzIGlucHV0LlxyXG4gICogYGBgXHJcbiAgKiAvLyBIYW5kbGUgdXNlciBpbnB1dCBpbiB0aGUgZWRpdGFibGUgaW5wdXQgZmllbGRcclxuICAqIHRoaXMub25EYXRlSW5wdXQoZXZlbnQpO1xyXG4gICogYGBgXHJcbiovXHJcbiAgcHJpdmF0ZSBvbkRhdGVJbnB1dChldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBpbnB1dERhdGU6IHN0cmluZyA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgIGlmICh0aGlzLmlzRGF0ZVZhbGlkKGlucHV0RGF0ZSkpIHtcclxuICAgICAgdGhpcy5lZGl0ZWREYXRlID0gaW5wdXREYXRlO1xyXG4gICAgICBjb25zdCBwYXJzZWREYXRlID0gaW5wdXREYXRlLnNwbGl0KCcvJyk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlTW9udGggPSArcGFyc2VkRGF0ZVsxXSAtIDE7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlWWVhciA9ICtwYXJzZWREYXRlWzJdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbi8qKlxyXG4gKiBUb2dnbGUgdGhlIHZpc2liaWxpdHkgb2YgdGhlIG1vbnRoIGRyb3Bkb3duIGluIHRoZSBjYWxlbmRhciBpbnRlcmZhY2UuXHJcbiAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gb3BlbiBvciBjbG9zZSB0aGUgZHJvcGRvd24gZm9yIHNlbGVjdGluZyBtb250aHMuXHJcbiAqIEBwYXJhbSBldmVudCAtIFRoZSBldmVudCB0cmlnZ2VyaW5nIHRoZSB0b2dnbGUgYWN0aW9uIChlLmcuLCBhIGNsaWNrIGV2ZW50KS5cclxuICogYGBgXHJcbiAqIC8vIFRvZ2dsZSB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgbW9udGggZHJvcGRvd25cclxuICogdGhpcy50b2dnbGVNb250aERyb3Bkb3duKGV2ZW50KTtcclxuICogYGBgXHJcbiovXHJcbiAgcHJpdmF0ZSB0b2dnbGVNb250aERyb3Bkb3duKGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5pc01vbnRoRHJvcGRvd25PcGVuID0gIXRoaXMuaXNNb250aERyb3Bkb3duT3BlbjtcclxuICB9XHJcblxyXG4vKipcclxuICAqIFRvZ2dsZSB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgeWVhciBkcm9wZG93biBpbiB0aGUgY2FsZW5kYXIgaW50ZXJmYWNlLlxyXG4gICogVGhpcyBtZXRob2QgaXMgdXNlZCB0byBvcGVuIG9yIGNsb3NlIHRoZSBkcm9wZG93biBmb3Igc2VsZWN0aW5nIHllYXJzLlxyXG4gICogQHBhcmFtIGV2ZW50IC0gVGhlIGV2ZW50IHRyaWdnZXJpbmcgdGhlIHRvZ2dsZSBhY3Rpb24gKGUuZy4sIGEgY2xpY2sgZXZlbnQpLlxyXG4gICogYGBgXHJcbiAgKiAvLyBUb2dnbGUgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHllYXIgZHJvcGRvd25cclxuICAqIHRoaXMudG9nZ2xlWWVhckRyb3Bkb3duKGV2ZW50KTtcclxuICAqIGBgYFxyXG4qL1xyXG4gIHByaXZhdGUgdG9nZ2xlWWVhckRyb3Bkb3duKGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5pc1llYXJEcm9wZG93bk9wZW4gPSAhdGhpcy5pc1llYXJEcm9wZG93bk9wZW47XHJcbiAgfVxyXG5cclxuLyoqXHJcbiAqIEhhbmRsZSB0aGUgY2hhbmdlIG9mIHRoZSBzZWxlY3RlZCBtb250aCBpbiB0aGUgY2FsZW5kYXIgaW50ZXJmYWNlLlxyXG4gKiBUaGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBpbnB1dCB2YWx1ZSwgc2V0cyB0aGUgc2VsZWN0ZWQgZGF0ZSB0byB0aGUgZmlyc3QgZGF5IG9mIHRoZSBjaG9zZW4gbW9udGgsXHJcbiAqIGFuZCByZWNhbGN1bGF0ZXMgdGhlIGNhbGVuZGFyIGRpc3BsYXkgYWNjb3JkaW5nbHkuXHJcbiAqIGBgYFxyXG4gKiAvLyBIYW5kbGUgdGhlIGNoYW5nZSBvZiB0aGUgc2VsZWN0ZWQgbW9udGhcclxuICogdGhpcy5vbk1vbnRoQ2hhbmdlKCk7XHJcbiAqIGBgYFxyXG4qL1xyXG4gIHByaXZhdGUgb25Nb250aENoYW5nZSgpIHtcclxuICAgIHRoaXMudXBkYXRlSW5wdXRWYWx1ZSgpO1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZVllYXIsIHRoaXMuc2VsZWN0ZWREYXRlTW9udGgsIDEpO1xyXG4gICAgdGhpcy5jYWxjdWxhdGVGaXJzdERheU9mQ2FsZW5kYXIoKTtcclxuICB9XHJcblxyXG4vKipcclxuICogSGFuZGxlIHRoZSBjaGFuZ2Ugb2YgdGhlIHNlbGVjdGVkIHllYXIgaW4gdGhlIGNhbGVuZGFyIGludGVyZmFjZS5cclxuICogVGhpcyBtZXRob2QgdXBkYXRlcyB0aGUgaW5wdXQgdmFsdWUsIHNldHMgdGhlIHNlbGVjdGVkIGRhdGUgdG8gdGhlIGZpcnN0IGRheSBvZiB0aGUgY2hvc2VuIHllYXIsXHJcbiAqIHJlZm9ybWF0cyB0aGUgc2VsZWN0ZWQgZGF0ZSwgYW5kIHJlY2FsY3VsYXRlcyB0aGUgY2FsZW5kYXIgZGlzcGxheS5cclxuICogYGBgXHJcbiAqIC8vIEhhbmRsZSB0aGUgY2hhbmdlIG9mIHRoZSBzZWxlY3RlZCB5ZWFyXHJcbiAqIHRoaXMub25ZZWFyQ2hhbmdlKCk7XHJcbiAqIGBgYFxyXG4qL1xyXG4gIHByaXZhdGUgb25ZZWFyQ2hhbmdlKCkge1xyXG4gICAgdGhpcy51cGRhdGVJbnB1dFZhbHVlKCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlWWVhciwgdGhpcy5zZWxlY3RlZERhdGVNb250aCwgMSk7XHJcbiAgICB0aGlzLmZvcm1hdERhdGUoKTtcclxuICAgIHRoaXMuY2FsY3VsYXRlRmlyc3REYXlPZkNhbGVuZGFyKCk7XHJcbiAgfVxyXG5cclxuLyoqXHJcbiAqIFNlbGVjdCBhIGRhdGUgaW4gdGhlIGNhbGVuZGFyIGludGVyZmFjZSBhbmQgcGVyZm9ybSBuZWNlc3NhcnkgdXBkYXRlcy5cclxuICogVGhpcyBtZXRob2Qgc2V0cyB0aGUgc2VsZWN0ZWQgZGF0ZSwgZm9ybWF0cyBpdCwgY2xvc2VzIHRoZSBjYWxlbmRhciwgYW5kIGVtaXRzIGEgZGF0ZUNoYW5nZWQgZXZlbnQuXHJcbiAqIEl0IGFsc28gdXBkYXRlcyB0aGUgc2VsZWN0ZWQgbW9udGggYW5kIHllYXIgZHJvcGRvd24gdmFsdWVzLlxyXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIHNlbGVjdGVkIGluIHRoZSBjYWxlbmRhci5cclxuKi9cclxuICBzZWxlY3REYXRlKGRhdGU6IERhdGUpIHtcclxuICB0aGlzLnNlbGVjdGVkRGF0ZSA9IGRhdGU7XHJcbiAgdGhpcy5mb3JtYXREYXRlKCk7XHJcbiAgdGhpcy5pc0NhbGVuZGFyT3BlbiA9IGZhbHNlO1xyXG4gIHRoaXMuZGF0ZUNoYW5nZWQubmV4dCh0aGlzLnNlbGVjdGVkRGF0ZSk7XHJcbiAgdGhpcy5zZWxlY3RlZERhdGVNb250aCA9IHRoaXMuc2VsZWN0ZWREYXRlLmdldE1vbnRoKCk7XHJcbiAgdGhpcy5zZWxlY3RlZERhdGVZZWFyID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKTtcclxuICB9XHJcblxyXG4vKipcclxuICogRm9ybWF0IHRoZSBzZWxlY3RlZCBkYXRlIGJhc2VkIG9uIHRoZSBjaG9zZW4gZGF0ZSBmb3JtYXQgYW5kIGxhbmd1YWdlLlxyXG4gKiBUaGlzIG1ldGhvZCB1c2VzIHRoZSBBbmd1bGFyIERhdGVQaXBlIHRvIGZvcm1hdCB0aGUgc2VsZWN0ZWQgZGF0ZSBhbmQgdXBkYXRlcyB0aGUgZm9ybWF0dGVkRGF0ZSB2YXJpYWJsZS5cclxuICogYGBgXHJcbiAqIC8vIEZvcm1hdCB0aGUgc2VsZWN0ZWQgZGF0ZVxyXG4gKiB0aGlzLmZvcm1hdERhdGUoKTtcclxuICogYGBgXHJcbiovXHJcbiAgcHJpdmF0ZSBmb3JtYXREYXRlKCkge1xyXG4gICAgdGhpcy5mb3JtYXR0ZWREYXRlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5zZWxlY3RlZERhdGUsIHRoaXMuZGF0ZUZvcm1hdCkgfHwgJyc7XHJcbiAgfVxyXG5cclxuLyoqXHJcbiAqIEZvcm1hdCB0aGUgc2VsZWN0ZWQgZGF0ZSBiYXNlZCBvbiB0aGUgY2hvc2VuIGRhdGUgZm9ybWF0LCBsYW5ndWFnZSwgYW5kIGxvY2FsZS5cclxuICogVGhpcyBtZXRob2QgdXNlcyB0aGUgQW5ndWxhciBEYXRlUGlwZSB0byBmb3JtYXQgdGhlIHNlbGVjdGVkIGRhdGUgd2l0aCB0aGUgc3BlY2lmaWVkIGxhbmd1YWdlIGFuZCB1cGRhdGVzIHRoZSBmb3JtYXR0ZWQgZGF0ZSBhcyBhIHN0cmluZy5cclxuICogQHJldHVybnMgQSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcuXHJcbiAqIGBgYFxyXG4gKiAvLyBGb3JtYXQgdGhlIHNlbGVjdGVkIGRhdGUgd2l0aCBsYW5ndWFnZVxyXG4gKiBjb25zdCBmb3JtYXR0ZWQgPSB0aGlzLmZvcm1hdFNlbGVjdGVkRGF0ZSgpO1xyXG4gKiBgYGBcclxuKi9cclxuICBwcml2YXRlIGZvcm1hdFNlbGVjdGVkRGF0ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuc2VsZWN0ZWREYXRlLCB0aGlzLmRhdGVGb3JtYXQsIHRoaXMubGFuZykgfHwgJyc7XHJcbiAgfVxyXG5cclxuLyoqXHJcbiAqIFVwZGF0ZSB0aGUgaW5wdXQgdmFsdWUgZGlzcGxheWVkIGluIHRoZSBjYWxlbmRhciBpbnRlcmZhY2UuXHJcbiAqIFRoaXMgbWV0aG9kIHVwZGF0ZXMgdGhlIGlucHV0IHZhbHVlIHRvIGVpdGhlciB0aGUgZWRpdGVkIGRhdGUgb3IgdGhlIGZvcm1hdHRlZCBzZWxlY3RlZCBkYXRlLFxyXG4gKiBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgdXNlciBpcyBpbiBlZGl0IG1vZGUgb3Igbm90LlxyXG4gKiBgYGBcclxuICogLy8gVXBkYXRlIHRoZSBpbnB1dCB2YWx1ZVxyXG4gKiB0aGlzLnVwZGF0ZUlucHV0VmFsdWUoKTtcclxuICogYGBgXHJcbiovXHJcbiAgcHJpdmF0ZSB1cGRhdGVJbnB1dFZhbHVlKCkge1xyXG4gICAgdGhpcy5mb3JtYXR0ZWREYXRlID0gdGhpcy5pc0VkaXRpbmcgPyB0aGlzLmVkaXRlZERhdGUgOiB0aGlzLmZvcm1hdFNlbGVjdGVkRGF0ZSgpO1xyXG4gIH1cclxuXHJcbi8qKlxyXG4gKiBHZXQgYW4gYXJyYXkgb2YgYXJyYXlzIHJlcHJlc2VudGluZyB0aGUgZGF5cyBvZiB0aGUgY3VycmVudCBtb250aC5cclxuICogRWFjaCBzdWItYXJyYXkgY29udGFpbnMgdGhlIGRheSBkYXRhIGZvciBhIHdlZWssIGFuZCBlYWNoIGRheSBkYXRhIG9iamVjdCBpbmNsdWRlcyB0aGUgZGF0ZSBhbmQgd2hldGhlciBpdCBiZWxvbmdzIHRvIHRoZSBjdXJyZW50IG1vbnRoLlxyXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBhcnJheXMgcmVwcmVzZW50aW5nIHRoZSBkYXlzIG9mIHRoZSBjdXJyZW50IG1vbnRoLlxyXG4gKiBgYGBcclxuICogLy8gR2V0IGFuIGFycmF5IG9mIGFycmF5cyByZXByZXNlbnRpbmcgdGhlIGRheXMgb2YgdGhlIGN1cnJlbnQgbW9udGhcclxuICogY29uc3QgY2FsZW5kYXIgPSB0aGlzLmNhbGVuZGFyRGF5cztcclxuICogYGBgXHJcbiovXHJcbiAgcHJpdmF0ZSBnZXQgY2FsZW5kYXJEYXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlRmlyc3REYXlPZkNhbGVuZGFyKCk7XHJcbiAgfVxyXG5cclxuLyoqXHJcbiAqIEdldCB0aGUgZGF0ZSBvZiB0aGUgcHJldmlvdXMgbW9udGggdG8gZGlzcGxheSBpbiBlbXB0eSBjZWxscyBvZiB0aGUgY3VycmVudCBtb250aC5cclxuICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZGF0ZSBvZiB0aGUgcHJldmlvdXMgbW9udGggaWYgdGhlIHByb3ZpZGVkIGRhdGUgaXMgbm90IGluIHRoZSBjdXJyZW50IG1vbnRoLlxyXG4gKiBJZiB0aGUgcHJvdmlkZWQgZGF0ZSBpcyBpbiB0aGUgY3VycmVudCBtb250aCwgaXQgcmV0dXJucyB0aGUgZGF0ZSdzIGRheSBhcyBhIHN0cmluZy5cclxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBldmFsdWF0ZS5cclxuICogQHJldHVybnMgVGhlIGRhdGUgb2YgdGhlIHByZXZpb3VzIG1vbnRoIG9yIGEgZGF5IHN0cmluZy5cclxuICogYGBgXHJcbiAqIC8vIEdldCB0aGUgcHJldmlvdXMgbW9udGgncyBkYXRlIHRvIGRpc3BsYXkgaW4gZW1wdHkgY2VsbHNcclxuICogY29uc3QgcHJldmlvdXNNb250aERhdGUgPSB0aGlzLmdldFByZXZpb3VzTW9udGhEYXRlKG5ldyBEYXRlKDIwMjMsIDgsIDEpKTtcclxuICogYGBgXHJcbiovXHJcbiAgcHJpdmF0ZSBnZXRQcmV2aW91c01vbnRoRGF0ZShkYXRlOiBEYXRlKTogYW55IHtcclxuICAgIGlmICghZGF0ZSkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICBpZiAoZGF0ZS5nZXRNb250aCgpID09PSBjdXJyZW50RGF0ZS5nZXRNb250aCgpICYmIGRhdGUuZ2V0RnVsbFllYXIoKSA9PT0gY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSkge1xyXG4gICAgICByZXR1cm4gZGF0ZS5nZXREYXRlKCkudG9TdHJpbmcoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShkYXRlLCAnZGQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4vKipcclxuICogTmF2aWdhdGUgdG8gdGhlIHByZXZpb3VzIG1vbnRoIGluIHRoZSBjYWxlbmRhciBpbnRlcmZhY2UuXHJcbiAqIFRoaXMgbWV0aG9kIHVwZGF0ZXMgdGhlIHNlbGVjdGVkRGF0ZSwgZm9ybWF0cyBpdCwgYW5kIHJlY2FsY3VsYXRlcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSBjYWxlbmRhci5cclxuICogYGBgXHJcbiAqIC8vIE5hdmlnYXRlIHRvIHRoZSBwcmV2aW91cyBtb250aFxyXG4gKiB0aGlzLmdldFByZXZpb3VzTW9udGgoKTtcclxuICogYGBgXHJcbiovXHJcbiAgcHJpdmF0ZSBnZXRQcmV2aW91c01vbnRoKCkge1xyXG4gICAgY29uc3QgY3VycmVudE1vbnRoID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0TW9udGgoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKSwgY3VycmVudE1vbnRoIC0gMSwgMSk7XHJcbiAgICB0aGlzLmZvcm1hdERhdGUoKTtcclxuICAgIHRoaXMuY2FsY3VsYXRlRmlyc3REYXlPZkNhbGVuZGFyKCk7XHJcbiAgfVxyXG5cclxuLyoqXHJcbiAqIE5hdmlnYXRlIHRvIHRoZSBuZXh0IG1vbnRoIGluIHRoZSBjYWxlbmRhciBpbnRlcmZhY2UuXHJcbiAqIFRoaXMgbWV0aG9kIHVwZGF0ZXMgdGhlIHNlbGVjdGVkRGF0ZSwgZm9ybWF0cyBpdCwgYW5kIHJlY2FsY3VsYXRlcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSBjYWxlbmRhci5cclxuICogYGBgXHJcbiAqIC8vIE5hdmlnYXRlIHRvIHRoZSBuZXh0IG1vbnRoXHJcbiAqIHRoaXMuZ2V0TmV4dE1vbnRoKCk7XHJcbiAqIGBgYFxyXG4qL1xyXG4gIHByaXZhdGUgZ2V0TmV4dE1vbnRoKCkge1xyXG4gICAgY29uc3QgY3VycmVudE1vbnRoID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0TW9udGgoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKSwgY3VycmVudE1vbnRoICsgMSwgMSk7XHJcbiAgICB0aGlzLmZvcm1hdERhdGUoKTtcclxuICAgIHRoaXMuY2FsY3VsYXRlRmlyc3REYXlPZkNhbGVuZGFyKCk7XHJcbiAgfVxyXG5cclxuLyoqXHJcbiAqIEdldCB0aGUgbnVtYmVyIG9mIGRheXMgaW4gYSBnaXZlbiBtb250aCBvZiBhIHNwZWNpZmljIHllYXIuXHJcbiAqIEBwYXJhbSB5ZWFyIC0gVGhlIHllYXIgZm9yIHdoaWNoIHlvdSB3YW50IHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGRheXMuXHJcbiAqIEBwYXJhbSBtb250aCAtIFRoZSBtb250aCAoMC1iYXNlZCBpbmRleCkgZm9yIHdoaWNoIHlvdSB3YW50IHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGRheXMuXHJcbiAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGUgc3BlY2lmaWVkIG1vbnRoIG9mIHRoZSBnaXZlbiB5ZWFyLlxyXG4qL1xyXG4gIHByaXZhdGUgZGF5c0luTW9udGgoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCArIDEsIDApLmdldERhdGUoKTtcclxuICB9XHJcblxyXG4vKipcclxuICogQ2FsY3VsYXRlIHRoZSBzdHJ1Y3R1cmUgb2YgZGF5cyBpbiBhIG1vbnRoIGZvciB0aGUgY2FsZW5kYXIgZGlzcGxheS5cclxuICogVGhpcyBtZXRob2QgZ2VuZXJhdGVzIGEgbWF0cml4IG9mIGRheSBkYXRhIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSBkYXlzIGluIHRoZSBjYWxlbmRhci5cclxuICogRWFjaCBkYXkgZGF0YSBvYmplY3QgY29udGFpbnMgdGhlIGRhdGUgYW5kIHdoZXRoZXIgaXQgYmVsb25ncyB0byB0aGUgY3VycmVudCBtb250aC5cclxuICogQHJldHVybnMgQSBtYXRyaXggb2YgZGF5IGRhdGEgb2JqZWN0cyBmb3IgdGhlIGNhbGVuZGFyIGRpc3BsYXkuXHJcbiovXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVGaXJzdERheU9mQ2FsZW5kYXIoKSB7XHJcbiAgICBjb25zdCB5ZWFyID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0TW9udGgoKTtcclxuICAgIGNvbnN0IGZpcnN0RGF5T2ZNb250aCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAxKTtcclxuICAgIGNvbnN0IGZpcnN0V2Vla2RheSA9IGZpcnN0RGF5T2ZNb250aC5nZXREYXkoKTtcclxuICAgIGNvbnN0IHN0YXJ0RGF5ID0gZmlyc3RXZWVrZGF5ID09PSAwID8gLTUgOiAyIC0gZmlyc3RXZWVrZGF5O1xyXG4gICAgY29uc3QgY2FsZW5kYXJEYXlzID0gW107XHJcbiAgICBsZXQgY3VycmVudERheSA9IHN0YXJ0RGF5O1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA2OyBpKyspIHtcclxuICAgICAgY29uc3Qgd2VlayA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IDc7IGorKykge1xyXG4gICAgICAgIGNvbnN0IGRheSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBjdXJyZW50RGF5KTtcclxuICAgICAgICBjb25zdCBkYXlEYXRhID0ge1xyXG4gICAgICAgICAgZGF0ZTogZGF5LFxyXG4gICAgICAgICAgaXNDdXJyZW50TW9udGg6IGN1cnJlbnREYXkgPj0gMSAmJiBjdXJyZW50RGF5IDw9IHRoaXMuZGF5c0luTW9udGgoeWVhciwgbW9udGgpLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgd2Vlay5wdXNoKGRheURhdGEpO1xyXG4gICAgICAgIGN1cnJlbnREYXkrKztcclxuICAgICAgfVxyXG4gICAgICBjYWxlbmRhckRheXMucHVzaCh3ZWVrKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjYWxlbmRhckRheXM7XHJcbiAgfVxyXG4gIFxyXG4vKipcclxuICogQ2hlY2sgaWYgYSBnaXZlbiBkYXRlIGlzIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZGF0ZSBpbiB0aGUgY2FsZW5kYXIuXHJcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gY2hlY2suXHJcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJvdmlkZWQgZGF0ZSBtYXRjaGVzIHRoZSBzZWxlY3RlZCBkYXRlLCBvdGhlcndpc2UgYGZhbHNlYC5cclxuICogYGBgXHJcbiAqIC8vIENoZWNrIGlmIGEgZGF0ZSBpcyBzZWxlY3RlZFxyXG4gKiBjb25zdCBpc1NlbGVjdGVkID0gdGhpcy5pc0RhdGVTZWxlY3RlZChzb21lRGF0ZSk7XHJcbiAqIGBgYFxyXG4qL1xyXG4gIHByaXZhdGUgaXNEYXRlU2VsZWN0ZWQoZGF0ZTogRGF0ZSkge1xyXG4gICAgcmV0dXJuIGRhdGUudG9EYXRlU3RyaW5nKCkgPT09IHRoaXMuc2VsZWN0ZWREYXRlLnRvRGF0ZVN0cmluZygpO1xyXG4gIH1cclxuXHJcbi8qKlxyXG4gKiBDaGVjayBpZiBhIGRhdGUgc3RyaW5nIGlzIHZhbGlkIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgZGF0ZSBmb3JtYXQuXHJcbiAqIEBwYXJhbSBpbnB1dERhdGUgLSBUaGUgZGF0ZSBzdHJpbmcgdG8gdmFsaWRhdGUuXHJcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgaW5wdXQgZGF0ZSBzdHJpbmcgaXMgdmFsaWQsIG90aGVyd2lzZSBgZmFsc2VgLlxyXG4gKiBgYGBcclxuICogLy8gQ2hlY2sgaWYgYSBkYXRlIHN0cmluZyBpcyB2YWxpZFxyXG4gKiBjb25zdCBpc1ZhbGlkRGF0ZSA9IHRoaXMuaXNEYXRlVmFsaWQoJzA1LzI1LzIwMjMnKTtcclxuICogYGBgXHJcbiovXHJcbiAgcHJpdmF0ZSBpc0RhdGVWYWxpZChpbnB1dERhdGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZVJlZ0V4cC50ZXN0KGlucHV0RGF0ZSk7XHJcbiAgfVxyXG4gIFxyXG4vKipcclxuICogQ2hlY2sgaWYgYSBnaXZlbiBkYXRlIGlzIHRvZGF5J3MgZGF0ZS5cclxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBjaGVjay5cclxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBwcm92aWRlZCBkYXRlIGlzIHRvZGF5J3MgZGF0ZSwgb3RoZXJ3aXNlIGBmYWxzZWAuXHJcbiAqIGBgYFxyXG4gKiAvLyBDaGVjayBpZiBhIGRhdGUgaXMgdG9kYXkncyBkYXRlXHJcbiAqIGNvbnN0IGlzVG9kYXkgPSB0aGlzLmlzRGF0ZVRvZGF5KHNvbWVEYXRlKTtcclxuICogYGBgXHJcbiovXHJcbiAgcHJpdmF0ZSBpc0RhdGVUb2RheShkYXRlOiBEYXRlKSB7XHJcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICByZXR1cm4gZGF0ZS50b0RhdGVTdHJpbmcoKSA9PT0gdG9kYXkudG9EYXRlU3RyaW5nKCk7XHJcbiAgfVxyXG59IiwiPGRpdiBjbGFzcz1cImRhdGVwaWNrZXItY29udGFpbmVyXCJcclxuW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCJcclxuPlxyXG5cclxuICA8IS0tIElucHV0LCBzYXZlICYgZWRpdCBidXR0b25zIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxyXG5cclxuICAgICAgPGRpdiAqbmdJZj1cIiFpc0VkaXRpbmdcIj5cclxuXHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVDYWxlbmRhcigpXCJcclxuICAgICAgICBbdmFsdWVdPVwiZm9ybWF0dGVkRGF0ZVwiXHJcbiAgICAgICAgW3JlYWRPbmx5XT1cInRydWVcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0VkaXRpbmdcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS0gRWRpdCAtLT5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBlbmNpbC1zcXVhcmUtbyBlZGl0LWJ1dHRvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIChjbGljayk9XCJ0b2dnbGVFZGl0KClcIj48L2k+IFxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNFZGl0aW5nXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJlZGl0ZWREYXRlXCJcclxuICAgICAgICAgICAgKGlucHV0KT1cIm9uRGF0ZUlucHV0KCRldmVudClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJvcmRlci0zXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNhbGVuZGFyKClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZmxvcHB5LW8gZWRpdC1idXR0b25cIiAoY2xpY2spPVwic2F2ZUVkaXRlZERhdGUoKVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICA8L2Rpdj4gICAgIFxyXG4gICAgPC9kaXY+XHJcblxyXG48IS0tIENhbGVuZGFyKERyb3Bkb3ducywgZGF0ZXMpIC0tPlxyXG4gIDxkaXYgKm5nSWY9XCJpc0NhbGVuZGFyT3BlblwiIGNsYXNzPVwiY2FsZW5kYXJcIiAjY2FsZW5kYXJDb250YWluZXIgXHJcbiAgW3N0eWxlLnRvcF09XCJ0b3BPZmZzZXRcIlxyXG4gIFtzdHlsZS5sZWZ0XT1cImxlZnRPZmZzZXRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9udGhCdXR0b25Db250YWluZXJcIj5cclxuICAgICAgICAgICAgPCEtLSBNb250aCBkcm9wZG93biAtLT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTW9udGhEcm9wZG93bk9wZW47IGVsc2UgbW9udGhMYWJlbFwiPlxyXG4gICAgICAgICAgICAgIDxtZWZkZXYtc2VsZWN0ICAgIFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibW9udGhEcm9wZG93blwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZERhdGVNb250aFwiIFxyXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uTW9udGhDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgW1BsYWNlSG9sZGVyXT1cIidtb250aCdcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxtZWZkZXYtb3B0aW9uIFxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG1vbnRoIG9mIG1vbnRoczsgbGV0IGkgPSBpbmRleFwiIFxyXG4gICAgICAgICAgICAgICAgW1ZhbHVlXT1cImlcIlxyXG4gICAgICAgICAgICAgICAgW0xhYmVsXSA9IFwibW9udGhcIiBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPnt7IG1vbnRoIH19PC9tZWZkZXYtb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvbWVmZGV2LXNlbGVjdD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbW9udGhMYWJlbD5cclxuICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwidG9nZ2xlTW9udGhEcm9wZG93bigkZXZlbnQpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBZZWFyIGRyb3Bkb3duIC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNZZWFyRHJvcGRvd25PcGVuOyBlbHNlIHllYXJMYWJlbFwiPlxyXG4gICAgICAgICAgICAgIDxtZWZkZXYtc2VsZWN0IFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwieWVhckRyb3Bkb3duXCIgXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZERhdGVZZWFyXCIgXHJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25ZZWFyQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgIFtQbGFjZUhvbGRlcl09XCIneWVhcidcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPG1lZmRldi1vcHRpb24gXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB5ZWFyIG9mIHllYXJzXCIgXHJcbiAgICAgICAgICAgICAgICAgIFtMYWJlbF0gPSBcInllYXJcIiBcclxuICAgICAgICAgICAgICAgICAgW1ZhbHVlXT1cInllYXJcIiBcclxuICAgICAgICAgICAgICAgICAgPnt7eWVhcn19PC9tZWZkZXYtb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvbWVmZGV2LXNlbGVjdD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjeWVhckxhYmVsPlxyXG4gICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJ0b2dnbGVZZWFyRHJvcGRvd24oJGV2ZW50KVwiPnt7IHNlbGVjdGVkRGF0ZVllYXIgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgPCEtLSBDYWxlbmRhciBleGl0IGJ1dHRvbiAtLT5cclxuICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRpbWVzIHRvZ2dsZUNhbGVuZGFyQnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZUNhbGVuZGFyKClcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ib2R5XCI+XHJcbiAgICAgIDx0YWJsZT5cclxuICAgICAgICA8dHI+XHJcbiAgICAgICAgICA8dGggY2xhc3M9XCJhbGlnbi1pdGVtcy1jZW50ZXJcIiAqbmdGb3I9XCJsZXQgd2Vla2RheSBvZiB3ZWVrZGF5c1wiPnt7IHdlZWtkYXkgfX08L3RoPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgICAgPHRyICpuZ0Zvcj1cImxldCB3ZWVrIG9mIGNhbGVuZGFyRGF5c1wiPlxyXG4gICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBkYXlEYXRhIG9mIHdlZWtcIiBcclxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF0ZShkYXlEYXRhLmRhdGUpXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZCc6IGlzRGF0ZVNlbGVjdGVkKGRheURhdGEuZGF0ZSksICdwcmV2LW1vbnRoJzogIWRheURhdGEuaXNDdXJyZW50TW9udGggfVwiPlxyXG5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlXCIgXHJcbiAgICAgICAgICAgICAgW2NsYXNzLnByZXYtbW9udGhdPVwiIWRheURhdGEuaXNDdXJyZW50TW9udGhcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyBkYXlEYXRhLmRhdGUuZ2V0RGF0ZSgpIH19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbiJdfQ==
602
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1raXQtbGliL3NyYy9saWIvbWFya3VwLWtpdC91dGlscy9kYXRlcGlja2VyL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1raXQtbGliL3NyYy9saWIvbWFya3VwLWtpdC91dGlscy9kYXRlcGlja2VyL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF5QixZQUFZLEVBQWEsS0FBSyxFQUFxQixNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFJMUk7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWtCRTtBQVFGLE1BQU0sT0FBTyxtQkFBbUI7SUEwTFY7SUFBNEI7SUF4TGxEOzs7TUFHRTtJQUNGLGNBQWMsR0FBWSxLQUFLLENBQUM7SUFFaEM7OztNQUdFO0lBQ0YsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUUzQjs7O01BR0U7SUFDRixZQUFZLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUUvQjs7O0tBR0M7SUFDRixhQUFhLENBQU87SUFFbkI7OztLQUdDO0lBQ0YsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUV4Qjs7O01BR0U7SUFDRixtQkFBbUIsR0FBWSxJQUFJLENBQUM7SUFFcEM7OztNQUdFO0lBQ0Ysa0JBQWtCLEdBQVksSUFBSSxDQUFDO0lBRW5DOzs7TUFHRTtJQUNGLGlCQUFpQixHQUFXLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFFekQ7OztNQUdFO0lBQ0YsZ0JBQWdCLEdBQVcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUUxRDs7O0tBR0M7SUFD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QUFJO3NCQUFaLEtBQUs7Z0JBVUcsVUFBVTtzQkFBbEIsS0FBSztnQkFVVSxVQUFVO3NCQUF6QixLQUFLO3VCQUFDLE9BQU87Z0JBVUwsUUFBUTtzQkFBaEIsS0FBSztnQkFVRyxTQUFTO3NCQUFqQixLQUFLO2dCQVVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBVUksV0FBVztzQkFBcEIsTUFBTTtnQkEwQkwsT0FBTztzQkFETixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgT25EZXN0cm95LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcblxyXG4vKipcclxuICAqIERhdGVwaWNrZXIgQ29tcG9uZW50IGZvciBzZWxlY3RpbmcgZGF0ZXMuXHJcbiAgKlxyXG4gICogVGhpcyBjb21wb25lbnQgYWxsb3dzIHVzZXJzIHRvIHBpY2sgYSBkYXRlIGZyb20gYSBjYWxlbmRhciBpbnRlcmZhY2UuXHJcbiAgKiBJdCBzdXBwb3J0cyB2YXJpb3VzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzdWNoIGFzIGxhbmd1YWdlLCBkYXRlIGZvcm1hdCwgYW5kIGRhdGUgcmFuZ2UuXHJcbiAgKlxyXG4gICogQGV4YW1wbGVcclxuICAqIDxtZWZkZXYtZGF0ZXBpY2tlclxyXG4gICogICBbbGFuZ109XCIndWsnXCJcclxuICAqICAgW2RhdGVGb3JtYXRdPVwiJ2RkL01NL3l5eXknXCJcclxuICAqICAgW3JhbmdlXT1cIntzdGFydFllYXI6IDE5MDAsIHRvWWVhcjogMzAwfVwiXHJcbiAgKiAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgKiAgIChkYXRlQ2hhbmdlZCk9XCJvbkRhdGVDaGFuZ2VkKCRldmVudClcIlxyXG4gICogICBbdG9wT2Zmc2V0XT1cIicyMCdcIlxyXG4gICogICBbbGVmdE9mZnNldF09XCInMTAnXCI+XHJcbiAgKiA8L21lZmRldi1kYXRlcGlja2VyPlxyXG4gICpcclxuICAqIDxleGFtcGxlLXVybD5odHRwczovL21lZi5kZXYvdWlfa2l0X2RlbW8vdmlldy91dGlscy9kYXRlcGlja2VyPC9leGFtcGxlLXVybD5cclxuKi9cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbWVmZGV2LWRhdGVwaWNrZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRlcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgIE9uQ2hhbmdlcywgT25Jbml0IHtcclxuXHJcbi8qKlxyXG4gKiBGbGFnIHRvIGRldGVybWluZSBpZiB0aGUgY2FsZW5kYXIgaXMgb3BlbiBvciBjbG9zZWQuXHJcbiAqIERlZmF1bHQgdmFsdWU6IGZhbHNlIChjbG9zZWQpLlxyXG4qL1xyXG5pc0NhbGVuZGFyT3BlbjogYm9vbGVhbiA9IGZhbHNlOyBcclxuXHJcbi8qKlxyXG4gKiBGbGFnIHRvIGRldGVybWluZSBpZiB0aGUgY29tcG9uZW50IGlzIGluIGVkaXRpbmcgbW9kZS5cclxuICogRGVmYXVsdCB2YWx1ZTogZmFsc2UgKG5vdCBpbiBlZGl0aW5nIG1vZGUpLlxyXG4qL1xyXG5pc0VkaXRpbmc6IGJvb2xlYW4gPSBmYWxzZTsgIFxyXG5cclxuLyoqXHJcbiAqIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZGF0ZS5cclxuICogRGVmYXVsdCB2YWx1ZTogVG9kYXkncyBkYXRlLlxyXG4qL1xyXG5zZWxlY3RlZERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpOyBcclxuXHJcbiAvKipcclxuICogVGhlIGZvcm1hdHRlZCBkYXRlIGZvciBkaXNwbGF5IGluIHRoZSBpbnB1dC5cclxuICogRGVmYXVsdCB2YWx1ZTogRm9ybWF0dGVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzZWxlY3RlZCBkYXRlLlxyXG4qL1xyXG5mb3JtYXR0ZWREYXRlOiBhbnkgOyBcclxuXHJcbiAvKipcclxuICogVHJhY2sgdGhlIGVkaXRlZCBkYXRlIHNlcGFyYXRlbHkgd2hlbiBpbiBlZGl0aW5nIG1vZGUuXHJcbiAqIERlZmF1bHQgdmFsdWU6IEFuIGVtcHR5IHN0cmluZy5cclxuKi9cclxuZWRpdGVkRGF0ZTogc3RyaW5nID0gJyc7IFxyXG5cclxuLyoqXHJcbiAqIEZsYWcgdG8gZGV0ZXJtaW5lIGlmIHRoZSBtb250aCBkcm9wZG93biBpcyBvcGVuIG9yIGNsb3NlZC5cclxuICogRGVmYXVsdCB2YWx1ZTogdHJ1ZSAob3BlbikuXHJcbiovXHJcbmlzTW9udGhEcm9wZG93bk9wZW46IGJvb2xlYW4gPSB0cnVlOyBcclxuXHJcbi8qKlxyXG4gKiBGbGFnIHRvIGRldGVybWluZSBpZiB0aGUgeWVhciBkcm9wZG93biBpcyBvcGVuIG9yIGNsb3NlZC5cclxuICogRGVmYXVsdCB2YWx1ZTogdHJ1ZSAob3BlbikuXHJcbiovXHJcbmlzWWVhckRyb3Bkb3duT3BlbjogYm9vbGVhbiA9IHRydWU7IFxyXG5cclxuLyoqXHJcbiAqIFRoZSBzZWxlY3RlZCBtb250aCAoMC0xMSkuXHJcbiAqIERlZmF1bHQgdmFsdWU6IFRoZSBtb250aCBvZiB0aGUgc2VsZWN0ZWQgZGF0ZS5cclxuKi9cclxuc2VsZWN0ZWREYXRlTW9udGg6IG51bWJlciA9IHRoaXMuc2VsZWN0ZWREYXRlLmdldE1vbnRoKCk7IFxyXG5cclxuLyoqXHJcbiAqIFRoZSBzZWxlY3RlZCB5ZWFyLlxyXG4gKiBEZWZhdWx0IHZhbHVlOiBUaGUgeWVhciBvZiB0aGUgc2VsZWN0ZWQgZGF0ZS5cclxuKi9cclxuc2VsZWN0ZWREYXRlWWVhcjogbnVtYmVyID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKTsgXHJcblxyXG4gLyoqXHJcbiAqIEFuIGFycmF5IG9mIHllYXJzIGZvciB0aGUgeWVhciBkcm9wZG93bi5cclxuICogRGVmYXVsdCB2YWx1ZTogQW4gYXJyYXkgb2YgeWVhcnMgd2l0aGluIHRoZSBzcGVjaWZpZWQgcmFuZ2UuXHJcbiovXHJcbnllYXJzOiBudW1iZXJbXSBcclxuXHJcbi8qKlxyXG4gKiBUaGUgbGFuZ3VhZ2UvbG9jYWxlIGZvciB0aGUgZGF0ZXBpY2tlci5cclxuICogRGVmYXVsdCB2YWx1ZTogJ2VuJyAoRW5nbGlzaCkuXHJcbiAqIEBleGFtcGxlXHJcbiAqIDxtZWZkZXYtZGF0ZXBpY2tlclxyXG4gKiAgIFtsYW5nXSA9IFwiJ3VrJ1wiPlxyXG4gKiA8L21lZmRldi1kYXRlcGlja2VyPlxyXG4qL1xyXG5ASW5wdXQoKSBsYW5nOiBzdHJpbmcgPSAnZW4nOyBcclxuXHJcbi8qKlxyXG4gKiBUaGUgZGF0ZSBmb3JtYXQgZm9yIGRpc3BsYXlpbmcgdGhlIHNlbGVjdGVkIGRhdGUuXHJcbiAqIERlZmF1bHQgdmFsdWU6ICdFRUUgTU1NIGRkIHl5eXknLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiA8bWVmZGV2LWRhdGVwaWNrZXJcclxuICogICBbZGF0ZUZvcm1hdF09XCInZGQvTU0veXl5eSdcIj5cclxuICogPC9tZWZkZXYtZGF0ZXBpY2tlcj5cclxuKi9cclxuQElucHV0KCkgZGF0ZUZvcm1hdDogc3RyaW5nID0gJ0VFRSBNTU0gZGQgeXl5eSc7IFxyXG5cclxuLyoqXHJcbiAqIFRoZSByYW5nZSBvZiB5ZWFycyBhdmFpbGFibGUgaW4gdGhlIHllYXIgZHJvcGRvd24uXHJcbiAqIERlZmF1bHQgdmFsdWU6IHsgc3RhcnRZZWFyOiAxOTAwLCB0b1llYXI6IDMwMCB9LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiA8bWVmZGV2LWRhdGVwaWNrZXJcclxuICogICBbcmFuZ2VdPVwie3N0YXJ0WWVhcjogMTkwMCwgdG9ZZWFyOiAzMDB9XCI+XHJcbiAqIDwvbWVmZGV2LWRhdGVwaWNrZXI+XHJcbiovXHJcbkBJbnB1dCgncmFuZ2UnKSB5ZWFyc1JhbmdlOntzdGFydFllYXI6bnVtYmVyLCB0b1llYXI6bnVtYmVyfSA9IHtzdGFydFllYXI6MTkwMCwgdG9ZZWFyOjMwMH07IFxyXG5cclxuLyoqXHJcbiAqIFdoZXRoZXIgdGhlIGRhdGVwaWNrZXIgaXMgZGlzYWJsZWQgb3Igbm90LlxyXG4gKiBEZWZhdWx0IHZhbHVlOiBmYWxzZSAoZW5hYmxlZCkuXHJcbiAqIEBleGFtcGxlXHJcbiAqIDxtZWZkZXYtZGF0ZXBpY2tlclxyXG4gKiAgIFtkaXNhYmxlZF09XCJmYWxzZVwiPlxyXG4gKiA8L21lZmRldi1kYXRlcGlja2VyPlxyXG4qL1xyXG5ASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlOyBcclxuXHJcbi8qKlxyXG4gKiBUaGUgdG9wIG9mZnNldCBmb3IgcG9zaXRpb25pbmcgdGhlIGRhdGVwaWNrZXIuXHJcbiAqIERlZmF1bHQgdmFsdWU6ICcyMCcuXHJcbiAqIEBleGFtcGxlXHJcbiAqIDxtZWZkZXYtZGF0ZXBpY2tlclxyXG4gKiAgIFt0b3BPZmZzZXRdPVwiJzIwJ1wiPlxyXG4gKiA8L21lZmRldi1kYXRlcGlja2VyPlxyXG4qL1xyXG5ASW5wdXQoKSB0b3BPZmZzZXQ6IHN0cmluZyA9ICcyMCc7XHJcblxyXG4vKipcclxuICogVGhlIGxlZnQgb2Zmc2V0IGZvciBwb3NpdGlvbmluZyB0aGUgZGF0ZXBpY2tlci5cclxuICogRGVmYXVsdCB2YWx1ZTogJzEwJy5cclxuICogQGV4YW1wbGVcclxuICogPG1lZmRldi1kYXRlcGlja2VyXHJcbiAqICAgW2xlZnRPZmZzZXRdPVwiJzEwJ1wiPlxyXG4gKiA8L21lZmRldi1kYXRlcGlja2VyPlxyXG4qL1xyXG5ASW5wdXQoKSBsZWZ0T2Zmc2V0OiBzdHJpbmcgPSAnMTAnOyAvL0RlZmF1bHQgdmFsdWVcclxuXHJcbi8qKlxyXG4gKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGVkIGRhdGUgaW4gdGhlIGRhdGVwaWNrZXIgY2hhbmdlcy5cclxuICogSXQgZW1pdHMgYSBgRGF0ZWAgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgc2VsZWN0ZWQgZGF0ZS5cclxuICogQGV4YW1wbGVcclxuICogPG1lZmRldi1kYXRlcGlja2VyXHJcbiAqICAgKGRhdGVDaGFuZ2VkKT1cIm9uRGF0ZUNoYW5nZWQoJGV2ZW50KVwiPlxyXG4gKiA8L21lZmRldi1kYXRlcGlja2VyPlxyXG4qL1xyXG5AT3V0cHV0KCkgZGF0ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcclxuXHJcbi8qKlxyXG4gKiBSZWd1bGFyIGV4cHJlc3Npb24gdG8gdmFsaWRhdGUgdXNlciBpbnB1dCBmb3IgZGF0ZSBpbiB0aGUgZm9ybWF0IFwiZGQvTU0veXl5eVwiLlxyXG4gKiAtIFRoZSBkYXkgKGRkKSBzaG91bGQgYmUgYmV0d2VlbiAwMSBhbmQgMzEuXHJcbiAqIC0gVGhlIG1vbnRoIChNTSkgc2hvdWxkIGJlIGJldHdlZW4gMDEgYW5kIDEyLlxyXG4gKiAtIFRoZSB5ZWFyICh5eXl5KSBzaG91bGQgYmUgYSA0LWRpZ2l0IG51bWJlci5cclxuKi9cclxuICBwcml2YXRlIGRhdGVSZWdFeHA6IFJlZ0V4cCA9IC9eKDBbMS05XXxbMTJdWzAtOV18M1swMV0pXFwvKDBbMS05XXwxWzAtMl0pXFwvXFxkezR9JC87XHJcblxyXG4vKipcclxuICogVGhlIHN0cmluZyBlbnRlcmVkIGJ5IHRoZSB1c2VyIGZvciBkYXRlIGlucHV0LlxyXG4gKiBUaGlzIHZhcmlhYmxlIHN0b3JlcyB0aGUgdXNlcidzIGlucHV0IGFzIHRoZXkgdHlwZSBpbiB0aGUgZGF0ZSBmaWVsZC5cclxuKi9cclxuICB1c2VySW5wdXQ6IHN0cmluZyA9ICcnO1xyXG4gIFxyXG4vKipcclxuICogSG9zdCBsaXN0ZW5lciBmb3IgZG9jdW1lbnQgY2xpY2sgZXZlbnRzIHRvIGhhbmRsZSBjYWxlbmRhciBpbnRlcmFjdGlvbi5cclxuICogVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgYSBjbGljayBldmVudCBvY2N1cnJlZCB3aXRoaW4gdGhlIGNhbGVuZGFyIG9yIGlucHV0IGVsZW1lbnRzLlxyXG4gKiAtIElmIHRoZSBjbGljayBvY2N1cnJlZCB3aXRoaW4gdGhlIGNhbGVuZGFyLCBubyBhY3Rpb24gaXMgdGFrZW4uXHJcbiAqIC0gSWYgdGhlIGNsaWNrIG9jY3VycmVkIHdpdGhpbiB0aGUgaW5wdXQgZWxlbWVudCBhbmQgdGhlIGNvbXBvbmVudCBpcyBub3QgaW4gZWRpdGluZyBtb2RlLFxyXG4gKiAgIGl0IG9wZW5zIHRoZSBjYWxlbmRhci5cclxuICogLSBJZiB0aGUgY2xpY2sgb2NjdXJyZWQgb3V0c2lkZSB0aGUgY2FsZW5kYXIgYW5kIGlucHV0LCBpdCBjbG9zZXMgdGhlIGNhbGVuZGFyLlxyXG4gKiBAcGFyYW0gZXZlbnQgVGhlIE1vdXNlRXZlbnQgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgY2xpY2sgZXZlbnQuXHJcbiovXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBjYWxlbmRhciA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jYWxlbmRhcicpO1xyXG4gICAgY29uc3QgbW9udGhEcm9wZG93biA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tb250aERyb3Bkb3duJyk7XHJcbiAgICBjb25zdCB5ZWFyRHJvcGRvd24gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcueWVhckRyb3Bkb3duJyk7XHJcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xyXG4gICAgaWYobW9udGhEcm9wZG93bi5jb250YWlucyh0YXJnZXRFbGVtZW50KSAmJiB5ZWFyRHJvcGRvd24uY29udGFpbnModGFyZ2V0RWxlbWVudCkgKXtcclxuICAgICAgdGhpcy50b2dnbGVNb250aERyb3Bkb3duKGV2ZW50KVxyXG4gICAgICB0aGlzLnRvZ2dsZVllYXJEcm9wZG93bihldmVudClcclxuICAgIH1cclxuICAgIGlmIChjYWxlbmRhciAmJiBjYWxlbmRhci5jb250YWlucyh0YXJnZXRFbGVtZW50KSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoaW5wdXRFbGVtZW50ICYmIGlucHV0RWxlbWVudC5jb250YWlucyh0YXJnZXRFbGVtZW50KSAmJiAhdGhpcy5pc0VkaXRpbmcpIHtcclxuICAgICAgLy8g0JrQu9GW0Log0LLRltC00LHRg9Cy0YHRjyDQvdCwINC10LvQtdC80LXQvdGC0ZYgaW5wdXQsINCy0ZbQtNC60YDQuNCy0LDRlNC80L4g0LrQsNC70LXQvdC00LDRgFxyXG4gICAgICB0aGlzLmlzQ2FsZW5kYXJPcGVuID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vINCa0LvRltC6INCy0ZbQtNCx0YPQstGB0Y8g0L/QvtC30LAg0LrQsNC70LXQvdC00LDRgNC10Lwg0YLQsCBpbnB1dCwg0LfQsNC60YDQuNCy0LDRlNC80L4g0LrQsNC70LXQvdC00LDRgFxyXG4gICAgICAgIHRoaXMuaXNDYWxlbmRhck9wZW4gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRWRpdGluZyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuLyoqXHJcbiAqIENvbnN0cnVjdG9yIGZvciB0aGUgRGF0ZXBpY2tlckNvbXBvbmVudCBjbGFzcy5cclxuICogQHBhcmFtIGRhdGVQaXBlIEEgc2VydmljZSBmb3IgZm9ybWF0dGluZyBhbmQgcGFyc2luZyBkYXRlcy5cclxuICogQHBhcmFtIGVsZW1lbnRSZWYgQSByZWZlcmVuY2UgdG8gdGhlIGVsZW1lbnQgb24gd2hpY2ggdGhpcyBjb21wb25lbnQgaXMgYXR0YWNoZWQuXHJcbiAqIEl0IGlzIHVzZWQgdG8gYWNjZXNzIERPTSBlbGVtZW50cy5cclxuKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSwgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XHJcbiAgICB0aGlzLnVwZGF0ZUlucHV0VmFsdWUoKVxyXG4gIH1cclxuICBcclxuLyoqXHJcbiAqIExpZmVjeWNsZSBob29rIGNhbGxlZCBhZnRlciB0aGUgY29tcG9uZW50IGlzIGluaXRpYWxpemVkLlxyXG4gKiBJdCBpbml0aWFsaXplcyB0aGUgeWVhcnMgZm9yIHRoZSB5ZWFyIHNlbGVjdCBkcm9wZG93bi5cclxuKi9cclxuICBuZ09uSW5pdCgpe1xyXG4gICAgdGhpcy5pbml0aWFsaXplWWVhcnMoKTtcclxuICB9XHJcbi8qKlxyXG4gKiBMaWZlY3ljbGUgaG9vayBjYWxsZWQgd2hlbmV2ZXIgdGhlIGlucHV0IHByb3BlcnRpZXMgb2YgdGhlIGNvbXBvbmVudCBjaGFuZ2UuXHJcbiAqIEl0IHVwZGF0ZXMgdGhlIGlucHV0IHZhbHVlLlxyXG4qL1xyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgdGhpcy51cGRhdGVJbnB1dFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuLyoqXHJcbiAqIEFuIGFycmF5IG9mIG1vbnRoIG5hbWVzIGJhc2VkIG9uIHRoZSBzZWxlY3RlZCBsYW5ndWFnZS5cclxuICogSXQgcHJvdmlkZXMgbG9jYWxpemVkIG1vbnRoIG5hbWVzIGZvciBkaXNwbGF5IGluIHRoZSBkYXRlcGlja2VyLlxyXG4qL1xyXG4gIHByaXZhdGUgZ2V0IG1vbnRocygpe1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0TW9udGhMaXN0KHRoaXMubGFuZyk7XHJcbiAgfSAgXHJcblxyXG4vKipcclxuICogQW4gYXJyYXkgb2Ygd2Vla2RheSBuYW1lcyBiYXNlZCBvbiB0aGUgc2VsZWN0ZWQgbGFuZ3VhZ2UuXHJcbiAqIEl0IHByb3ZpZGVzIGxvY2FsaXplZCB3ZWVrZGF5IG5hbWVzIGZvciBkaXNwbGF5IGluIHRoZSBkYXRlcGlja2VyLlxyXG4qL1xyXG4gIHByaXZhdGUgZ2V0IHdlZWtkYXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0V2Vla2RheUxpc3QodGhpcy5sYW5nKTtcclxuICB9XHJcblxyXG4vKipcclxuICogSW5pdGlhbGl6ZSB0aGUgbGlzdCBvZiB5ZWFycyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHllYXIgZHJvcGRvd24uXHJcbiAqIFRoaXMgbWV0aG9kIHBvcHVsYXRlcyB0aGUgJ3llYXJzJyBhcnJheSB3aXRoIGEgcmFuZ2Ugb2YgeWVhcnMgYmFzZWQgb24gdGhlIHByb3ZpZGVkICd5ZWFyc1JhbmdlJyBjb25maWd1cmF0aW9uLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBcclxuICogLy8gQXNzdW1pbmcgJ3llYXJzUmFuZ2UnIGlzIHsgc3RhcnRZZWFyOiAxOTAwLCB0b1llYXI6IDMwMCB9XHJcbiAqIC8vIEFmdGVyIGNhbGxpbmcgaW5pdGlhbGl6ZVllYXJzKCksICd5ZWFycycgbWlnaHQgY29udGFpbiBbMTkwMCwgMTkwMSwgLi4uLCAzMDBdXHJcbiAqIHRoaXMuaW5pdGlhbGl6ZVllYXJzKCk7XHJcbiAqIGBgYFxyXG4qL1xyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVllYXJzKCkge1xyXG4gICAgdGhpcy55ZWFycyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMueWVhcnNSYW5nZS50b1llYXIgfSwgKF8sIGluZGV4KSA9PiBpbmRleCArIHRoaXMueWVhcnNSYW5nZS5zdGFydFllYXIpO1xyXG4gIH1cclxuXHJcbi8qKlxyXG4gKiBUb2dnbGUgdGhlIGVkaXRpbmcgbW9kZSBmb3IgdGhlIGRhdGUgaW5wdXQuIFdoZW4gZW5hYmxlZCwgdGhlIHVzZXIgY2FuIGVkaXQgdGhlIGRhdGUgZGlyZWN0bHkgaW4gdGhlIGlucHV0IGZpZWxkLlxyXG4gKiBUaGlzIG1ldGhvZCBzZXRzIHRoZSAnaXNFZGl0aW5nJyBmbGFnIHRvIHRydWUgYW5kIHN0b3JlcyB0aGUgY3VycmVudCBmb3JtYXR0ZWQgZGF0ZSBmb3IgZWRpdGluZy5cclxuKi9cclxuICB0b2dnbGVFZGl0KCkge1xyXG4gICAgdGhpcy5pc0VkaXRpbmcgPSAhdGhpcy5pc0VkaXRpbmc7XHJcbiAgICB0aGlzLmVkaXRlZERhdGUgPSB0aGlzLmZvcm1hdFNlbGVjdGVkRGF0ZSgpOyAvLyBTdG9yZSB0aGUgY3VycmVudCBmb3JtYXR0ZWQgZGF0ZSBmb3IgZWRpdGluZ1xyXG4gICAgdGhpcy5pc0NhbGVuZGFyT3BlbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbi8qKlxyXG4gKiBHZXQgYSBsaXN0IG9mIG1vbnRoIG5hbWVzIGluIHRoZSBzcGVjaWZpZWQgbGFuZ3VhZ2UgYW5kIGZvcm1hdC5cclxuICogQHBhcmFtIGxvY2FsZXMgLSBBbiBvcHRpb25hbCBwYXJhbWV0ZXIgc3BlY2lmeWluZyB0aGUgbG9jYWxlIG9yIGxvY2FsZXMgdG8gdXNlIGZvciBmb3JtYXR0aW5nLlxyXG4gKiBAcGFyYW0gZm9ybWF0IC0gVGhlIGZvcm1hdCBmb3IgbW9udGggbmFtZXMsIGVpdGhlciBcImxvbmdcIiAoZGVmYXVsdCkgb3IgXCJzaG9ydFwiLlxyXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBtb250aCBuYW1lcyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgZm9ybWF0IGFuZCBsb2NhbGUuXHJcbiAqIGBgYFxyXG4gKiAvLyBHZXQgYSBsaXN0IG9mIG1vbnRoIG5hbWVzIGluIHRoZSBkZWZhdWx0IGxhbmd1YWdlIGFuZCBsb25nIGZvcm1hdFxyXG4gKiBjb25zdCBtb250aHMgPSB0aGlzLmdldE1vbnRoTGlzdCh0aGlzLmxhbmcpO1xyXG4gKiBgYGBcclxuKi9cclxuICBwcml2YXRlIGdldE1vbnRoTGlzdCggIGxvY2FsZXM/OiBzdHJpbmcgfCBzdHJpbmdbXSwgIGZvcm1hdDogXCJsb25nXCIgfCBcInNob3J0XCIgPSBcImxvbmdcIik6IHN0cmluZ1tdIHsgIFxyXG4gICAgY29uc3QgeWVhciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcclxuICAgIGNvbnN0IG1vbnRoTGlzdCA9IFsuLi5BcnJheSgxMikua2V5cygpXTtcclxuICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZXMsIHsgICAgbW9udGg6IGZvcm1hdCAgfSk7XHJcbiAgICBjb25zdCBnZXRNb250aE5hbWUgPSAobW9udGhJbmRleDogbnVtYmVyKSA9PiBmb3JtYXR0ZXIuZm9ybWF0KG5ldyBEYXRlKHllYXIsIG1vbnRoSW5kZXgpKTtcclxuICAgICByZXR1cm4gbW9udGhMaXN0Lm1hcChnZXRNb250aE5hbWUpO1xyXG4gIH1cclxuICBcclxuLyoqXHJcbiAqIEdldCBhIGxpc3Qgb2Ygd2Vla2RheSBuYW1lcyBpbiB0aGUgc3BlY2lmaWVkIGxhbmd1YWdlIGFuZCBmb3JtYXQuXHJcbiAqIEBwYXJhbSBsb2NhbGVzIC0gQW4gb3B0aW9uYWwgcGFyYW1ldGVyIHNwZWNpZnlpbmcgdGhlIGxvY2FsZSBvciBsb2NhbGVzIHRvIHVzZSBmb3IgZm9ybWF0dGluZy5cclxuICogQHBhcmFtIGZvcm1hdCAtIFRoZSBmb3JtYXQgZm9yIHdlZWtkYXkgbmFtZXMsIGVpdGhlciBcInNob3J0XCIgKGRlZmF1bHQpIG9yIFwibG9uZ1wiLlxyXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiB3ZWVrZGF5IG5hbWVzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBmb3JtYXQgYW5kIGxvY2FsZS5cclxuICogYGBgXHJcbiAqIC8vIEdldCBhIGxpc3Qgb2Ygd2Vla2RheSBuYW1lcyBpbiB0aGUgZGVmYXVsdCBsYW5ndWFnZSBhbmQgc2hvcnQgZm9ybWF0XHJcbiAqIGNvbnN0IHdlZWtkYXlzID0gdGhpcy5nZXRXZWVrZGF5TGlzdCgpO1xyXG4gKiBgYGBcclxuKi9cclxuICBwcml2YXRlIGdldFdlZWtkYXlMaXN0KGxvY2FsZXM/OiBzdHJpbmcgfCBzdHJpbmdbXSwgZm9ybWF0OiBcInNob3J0XCIgfCBcImxvbmdcIiA9IFwic2hvcnRcIik6IHN0cmluZ1tdIHtcclxuICAgICAgY29uc3Qgd2Vla2RheXMgPSBbLi4uQXJyYXkoNykua2V5cygpXTtcclxuICAgICAgY29uc3QgbW9uZGF5SW5kZXggPSB3ZWVrZGF5cy5pbmRleE9mKDApO1xyXG4gICAgICB3ZWVrZGF5cy5zcGxpY2UobW9uZGF5SW5kZXgsIDEpOyBcclxuICAgICAgd2Vla2RheXMucHVzaCgwKTsgXHJcbiAgICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZXMsIHsgd2Vla2RheTogZm9ybWF0IH0pOyAgICBcclxuICAgICAgY29uc3QgZ2V0V2Vla2RheU5hbWUgPSAod2Vla2RheUluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdChuZXcgRGF0ZSgyMDIzLCA5LCB3ZWVrZGF5SW5kZXggKyAxKSk7IFxyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm4gd2Vla2RheXMubWFwKGdldFdlZWtkYXlOYW1lKTtcclxuICB9XHJcbiAgICBcclxuICAgIFxyXG4vKipcclxuICogVG9nZ2xlIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBjYWxlbmRhciBjb21wb25lbnQuIFdoZW4gY2FsbGVkLCB0aGlzIG1ldGhvZCBjaGFuZ2VzIHRoZSAnaXNDYWxlbmRhck9wZW4nIGZsYWdcclxuICogdG8gc2hvdyBvciBoaWRlIHRoZSBjYWxlbmRhciBpbnRlcmZhY2UuXHJcbiAqIGBgYFxyXG4gKiAvLyBUb2dnbGUgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGNhbGVuZGFyXHJcbiAqIHRoaXMudG9nZ2xlQ2FsZW5kYXIoKTtcclxuICogYGBgXHJcbiovXHJcbiAgcHJpdmF0ZSB0b2dnbGVDYWxlbmRhcigpIHtcclxuICAgIGlmKHRoaXMuaXNFZGl0aW5nKXtcclxuICAgICAgdGhpcy5pc0NhbGVuZGFyT3BlbiA9IGZhbHNlO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuaXNDYWxlbmRhck9wZW4gPSAhdGhpcy5pc0NhbGVuZGFyT3BlblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbi8qKlxyXG4gKiBTYXZlIHRoZSBlZGl0ZWQgZGF0ZSBpbnB1dCBieSB0aGUgdXNlciwgcHJvdmlkZWQgaXQgbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIGRhdGUgZm9ybWF0LlxyXG4gKiBUaGlzIG1ldGhvZCBjaGVja3MgaWYgdGhlIGVudGVyZWQgZGF0ZSBpcyBpbiBhIHZhbGlkIGZvcm1hdCwgZGlzYWJsZXMgdGhlIGVkaXRpbmcgbW9kZSwgYW5kIGFwcGxpZXNcclxuICogdGhlIGVkaXRlZCBkYXRlIHRvIHRoZSAnc2VsZWN0ZWREYXRlJy4gSXQgdGhlbiByZWZvcm1hdHMgdGhlIHNlbGVjdGVkIGRhdGUgYW5kIGNsb3NlcyB0aGUgY2FsZW5kYXIuXHJcbiAqIGBgYFxyXG4gKiAvLyBTYXZlIHRoZSBlZGl0ZWQgZGF0ZSBhbmQgdXBkYXRlIHRoZSBzZWxlY3RlZCBkYXRlXHJcbiAqIHRoaXMuc2F2ZUVkaXRlZERhdGUoKTtcclxuICogYGBgXHJcbiovXHJcbiAgcHJpdmF0ZSBzYXZlRWRpdGVkRGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLmlzRGF0ZVZhbGlkKHRoaXMuZWRpdGVkRGF0ZSkpIHtcclxuICAgICAgdGhpcy5pc0VkaXRpbmcgPSBmYWxzZTsgXHJcbiAgICAgIGNvbnN0IFtkYXksIG1vbnRoLCB5ZWFyXSA9IHRoaXMuZWRpdGVkRGF0ZS5zcGxpdCgnLycpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKCt5ZWFyLCArbW9udGggLSAxLCArZGF5KTtcclxuICAgICAgdGhpcy5mb3JtYXREYXRlKCk7IFxyXG4gICAgfSBcclxuICB9XHJcblxyXG4vKipcclxuICAqIEhhbmRsZSB1c2VyIGlucHV0IGluIHRoZSBlZGl0YWJsZSBpbnB1dCBmaWVsZCBmb3IgZGF0ZSBlZGl0aW5nLiBUaGlzIG1ldGhvZCBjYXB0dXJlcyB0aGUgaW5wdXQgdmFsdWVcclxuICAqIGFuZCBzdG9yZXMgaXQgaW4gdGhlICdlZGl0ZWREYXRlJyB2YXJpYWJsZS4gSWYgdGhlIGlucHV0IG1hdGNoZXMgdGhlIHZhbGlkIGRhdGUgZm9ybWF0LCBpdCB1cGRhdGVzXHJcbiAgKiAnc2VsZWN0ZWREYXRlTW9udGgnIGFuZCAnc2VsZWN0ZWREYXRlWWVhcicgYWNjb3JkaW5nbHkuXHJcbiAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgaW5wdXQgZXZlbnQgY29udGFpbmluZyB0aGUgdXNlcidzIGlucHV0LlxyXG4gICogYGBgXHJcbiAgKiAvLyBIYW5kbGUgdXNlciBpbnB1dCBpbiB0aGUgZWRpdGFibGUgaW5wdXQgZmllbGRcclxuICAqIHRoaXMub25EYXRlSW5wdXQoZXZlbnQpO1xyXG4gICogYGBgXHJcbiovXHJcbiAgcHJpdmF0ZSBvbkRhdGVJbnB1dChldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBpbnB1dERhdGU6IHN0cmluZyA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgIGlmICh0aGlzLmlzRGF0ZVZhbGlkKGlucHV0RGF0ZSkpIHtcclxuICAgICAgdGhpcy5lZGl0ZWREYXRlID0gaW5wdXREYXRlO1xyXG4gICAgICBjb25zdCBwYXJzZWREYXRlID0gaW5wdXREYXRlLnNwbGl0KCcvJyk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlTW9udGggPSArcGFyc2VkRGF0ZVsxXSAtIDE7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlWWVhciA9ICtwYXJzZWREYXRlWzJdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbi8qKlxyXG4gKiBUb2dnbGUgdGhlIHZpc2liaWxpdHkgb2YgdGhlIG1vbnRoIGRyb3Bkb3duIGluIHRoZSBjYWxlbmRhciBpbnRlcmZhY2UuXHJcbiAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gb3BlbiBvciBjbG9zZSB0aGUgZHJvcGRvd24gZm9yIHNlbGVjdGluZyBtb250aHMuXHJcbiAqIEBwYXJhbSBldmVudCAtIFRoZSBldmVudCB0cmlnZ2VyaW5nIHRoZSB0b2dnbGUgYWN0aW9uIChlLmcuLCBhIGNsaWNrIGV2ZW50KS5cclxuICogYGBgXHJcbiAqIC8vIFRvZ2dsZSB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgbW9udGggZHJvcGRvd25cclxuICogdGhpcy50b2dnbGVNb250aERyb3Bkb3duKGV2ZW50KTtcclxuICogYGBgXHJcbiovXHJcbiAgcHJpdmF0ZSB0b2dnbGVNb250aERyb3Bkb3duKGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5pc01vbnRoRHJvcGRvd25PcGVuID0gIXRoaXMuaXNNb250aERyb3Bkb3duT3BlbjtcclxuICB9XHJcblxyXG4vKipcclxuICAqIFRvZ2dsZSB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgeWVhciBkcm9wZG93biBpbiB0aGUgY2FsZW5kYXIgaW50ZXJmYWNlLlxyXG4gICogVGhpcyBtZXRob2QgaXMgdXNlZCB0byBvcGVuIG9yIGNsb3NlIHRoZSBkcm9wZG93biBmb3Igc2VsZWN0aW5nIHllYXJzLlxyXG4gICogQHBhcmFtIGV2ZW50IC0gVGhlIGV2ZW50IHRyaWdnZXJpbmcgdGhlIHRvZ2dsZSBhY3Rpb24gKGUuZy4sIGEgY2xpY2sgZXZlbnQpLlxyXG4gICogYGBgXHJcbiAgKiAvLyBUb2dnbGUgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHllYXIgZHJvcGRvd25cclxuICAqIHRoaXMudG9nZ2xlWWVhckRyb3Bkb3duKGV2ZW50KTtcclxuICAqIGBgYFxyXG4qL1xyXG4gIHByaXZhdGUgdG9nZ2xlWWVhckRyb3Bkb3duKGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5pc1llYXJEcm9wZG93bk9wZW4gPSAhdGhpcy5pc1llYXJEcm9wZG93bk9wZW47XHJcbiAgfVxyXG5cclxuLyoqXHJcbiAqIEhhbmRsZSB0aGUgY2hhbmdlIG9mIHRoZSBzZWxlY3RlZCBtb250aCBpbiB0aGUgY2FsZW5kYXIgaW50ZXJmYWNlLlxyXG4gKiBUaGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBpbnB1dCB2YWx1ZSwgc2V0cyB0aGUgc2VsZWN0ZWQgZGF0ZSB0byB0aGUgZmlyc3QgZGF5IG9mIHRoZSBjaG9zZW4gbW9udGgsXHJcbiAqIGFuZCByZWNhbGN1bGF0ZXMgdGhlIGNhbGVuZGFyIGRpc3BsYXkgYWNjb3JkaW5nbHkuXHJcbiAqIGBgYFxyXG4gKiAvLyBIYW5kbGUgdGhlIGNoYW5nZSBvZiB0aGUgc2VsZWN0ZWQgbW9udGhcclxuICogdGhpcy5vbk1vbnRoQ2hhbmdlKCk7XHJcbiAqIGBgYFxyXG4qL1xyXG4gIHByaXZhdGUgb25Nb250aENoYW5nZSgpIHtcclxuICAgIHRoaXMudXBkYXRlSW5wdXRWYWx1ZSgpO1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZVllYXIsIHRoaXMuc2VsZWN0ZWREYXRlTW9udGgsIDEpO1xyXG4gICAgdGhpcy5jYWxjdWxhdGVGaXJzdERheU9mQ2FsZW5kYXIoKTtcclxuICB9XHJcblxyXG4vKipcclxuICogSGFuZGxlIHRoZSBjaGFuZ2Ugb2YgdGhlIHNlbGVjdGVkIHllYXIgaW4gdGhlIGNhbGVuZGFyIGludGVyZmFjZS5cclxuICogVGhpcyBtZXRob2QgdXBkYXRlcyB0aGUgaW5wdXQgdmFsdWUsIHNldHMgdGhlIHNlbGVjdGVkIGRhdGUgdG8gdGhlIGZpcnN0IGRheSBvZiB0aGUgY2hvc2VuIHllYXIsXHJcbiAqIHJlZm9ybWF0cyB0aGUgc2VsZWN0ZWQgZGF0ZSwgYW5kIHJlY2FsY3VsYXRlcyB0aGUgY2FsZW5kYXIgZGlzcGxheS5cclxuICogYGBgXHJcbiAqIC8vIEhhbmRsZSB0aGUgY2hhbmdlIG9mIHRoZSBzZWxlY3RlZCB5ZWFyXHJcbiAqIHRoaXMub25ZZWFyQ2hhbmdlKCk7XHJcbiAqIGBgYFxyXG4qL1xyXG4gIHByaXZhdGUgb25ZZWFyQ2hhbmdlKCkge1xyXG4gICAgdGhpcy51cGRhdGVJbnB1dFZhbHVlKCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlWWVhciwgdGhpcy5zZWxlY3RlZERhdGVNb250aCwgMSk7XHJcbiAgICB0aGlzLmZvcm1hdERhdGUoKTtcclxuICAgIHRoaXMuY2FsY3VsYXRlRmlyc3REYXlPZkNhbGVuZGFyKCk7XHJcbiAgfVxyXG5cclxuLyoqXHJcbiAqIFNlbGVjdCBhIGRhdGUgaW4gdGhlIGNhbGVuZGFyIGludGVyZmFjZSBhbmQgcGVyZm9ybSBuZWNlc3NhcnkgdXBkYXRlcy5cclxuICogVGhpcyBtZXRob2Qgc2V0cyB0aGUgc2VsZWN0ZWQgZGF0ZSwgZm9ybWF0cyBpdCwgY2xvc2VzIHRoZSBjYWxlbmRhciwgYW5kIGVtaXRzIGEgZGF0ZUNoYW5nZWQgZXZlbnQuXHJcbiAqIEl0IGFsc28gdXBkYXRlcyB0aGUgc2VsZWN0ZWQgbW9udGggYW5kIHllYXIgZHJvcGRvd24gdmFsdWVzLlxyXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIHNlbGVjdGVkIGluIHRoZSBjYWxlbmRhci5cclxuKi9cclxuICBzZWxlY3REYXRlKGRhdGU6IERhdGUpIHtcclxuICB0aGlzLnNlbGVjdGVkRGF0ZSA9IGRhdGU7XHJcbiAgdGhpcy5mb3JtYXREYXRlKCk7XHJcbiAgdGhpcy5pc0NhbGVuZGFyT3BlbiA9IGZhbHNlO1xyXG4gIHRoaXMuZGF0ZUNoYW5nZWQubmV4dCh0aGlzLnNlbGVjdGVkRGF0ZSk7XHJcbiAgdGhpcy5zZWxlY3RlZERhdGVNb250aCA9IHRoaXMuc2VsZWN0ZWREYXRlLmdldE1vbnRoKCk7XHJcbiAgdGhpcy5zZWxlY3RlZERhdGVZZWFyID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKTtcclxuICB9XHJcblxyXG4vKipcclxuICogRm9ybWF0IHRoZSBzZWxlY3RlZCBkYXRlIGJhc2VkIG9uIHRoZSBjaG9zZW4gZGF0ZSBmb3JtYXQgYW5kIGxhbmd1YWdlLlxyXG4gKiBUaGlzIG1ldGhvZCB1c2VzIHRoZSBBbmd1bGFyIERhdGVQaXBlIHRvIGZvcm1hdCB0aGUgc2VsZWN0ZWQgZGF0ZSBhbmQgdXBkYXRlcyB0aGUgZm9ybWF0dGVkRGF0ZSB2YXJpYWJsZS5cclxuICogYGBgXHJcbiAqIC8vIEZvcm1hdCB0aGUgc2VsZWN0ZWQgZGF0ZVxyXG4gKiB0aGlzLmZvcm1hdERhdGUoKTtcclxuICogYGBgXHJcbiovXHJcbiAgcHJpdmF0ZSBmb3JtYXREYXRlKCkge1xyXG4gICAgdGhpcy5mb3JtYXR0ZWREYXRlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5zZWxlY3RlZERhdGUsIHRoaXMuZGF0ZUZvcm1hdCkgfHwgJyc7XHJcbiAgfVxyXG5cclxuLyoqXHJcbiAqIEZvcm1hdCB0aGUgc2VsZWN0ZWQgZGF0ZSBiYXNlZCBvbiB0aGUgY2hvc2VuIGRhdGUgZm9ybWF0LCBsYW5ndWFnZSwgYW5kIGxvY2FsZS5cclxuICogVGhpcyBtZXRob2QgdXNlcyB0aGUgQW5ndWxhciBEYXRlUGlwZSB0byBmb3JtYXQgdGhlIHNlbGVjdGVkIGRhdGUgd2l0aCB0aGUgc3BlY2lmaWVkIGxhbmd1YWdlIGFuZCB1cGRhdGVzIHRoZSBmb3JtYXR0ZWQgZGF0ZSBhcyBhIHN0cmluZy5cclxuICogQHJldHVybnMgQSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcuXHJcbiAqIGBgYFxyXG4gKiAvLyBGb3JtYXQgdGhlIHNlbGVjdGVkIGRhdGUgd2l0aCBsYW5ndWFnZVxyXG4gKiBjb25zdCBmb3JtYXR0ZWQgPSB0aGlzLmZvcm1hdFNlbGVjdGVkRGF0ZSgpO1xyXG4gKiBgYGBcclxuKi9cclxuICBwcml2YXRlIGZvcm1hdFNlbGVjdGVkRGF0ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuc2VsZWN0ZWREYXRlLCB0aGlzLmRhdGVGb3JtYXQsIHRoaXMubGFuZykgfHwgJyc7XHJcbiAgfVxyXG5cclxuLyoqXHJcbiAqIFVwZGF0ZSB0aGUgaW5wdXQgdmFsdWUgZGlzcGxheWVkIGluIHRoZSBjYWxlbmRhciBpbnRlcmZhY2UuXHJcbiAqIFRoaXMgbWV0aG9kIHVwZGF0ZXMgdGhlIGlucHV0IHZhbHVlIHRvIGVpdGhlciB0aGUgZWRpdGVkIGRhdGUgb3IgdGhlIGZvcm1hdHRlZCBzZWxlY3RlZCBkYXRlLFxyXG4gKiBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgdXNlciBpcyBpbiBlZGl0IG1vZGUgb3Igbm90LlxyXG4gKiBgYGBcclxuICogLy8gVXBkYXRlIHRoZSBpbnB1dCB2YWx1ZVxyXG4gKiB0aGlzLnVwZGF0ZUlucHV0VmFsdWUoKTtcclxuICogYGBgXHJcbiovXHJcbiAgcHJpdmF0ZSB1cGRhdGVJbnB1dFZhbHVlKCkge1xyXG4gICAgdGhpcy5mb3JtYXR0ZWREYXRlID0gdGhpcy5pc0VkaXRpbmcgPyB0aGlzLmVkaXRlZERhdGUgOiB0aGlzLmZvcm1hdFNlbGVjdGVkRGF0ZSgpO1xyXG4gIH1cclxuXHJcbi8qKlxyXG4gKiBHZXQgYW4gYXJyYXkgb2YgYXJyYXlzIHJlcHJlc2VudGluZyB0aGUgZGF5cyBvZiB0aGUgY3VycmVudCBtb250aC5cclxuICogRWFjaCBzdWItYXJyYXkgY29udGFpbnMgdGhlIGRheSBkYXRhIGZvciBhIHdlZWssIGFuZCBlYWNoIGRheSBkYXRhIG9iamVjdCBpbmNsdWRlcyB0aGUgZGF0ZSBhbmQgd2hldGhlciBpdCBiZWxvbmdzIHRvIHRoZSBjdXJyZW50IG1vbnRoLlxyXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBhcnJheXMgcmVwcmVzZW50aW5nIHRoZSBkYXlzIG9mIHRoZSBjdXJyZW50IG1vbnRoLlxyXG4gKiBgYGBcclxuICogLy8gR2V0IGFuIGFycmF5IG9mIGFycmF5cyByZXByZXNlbnRpbmcgdGhlIGRheXMgb2YgdGhlIGN1cnJlbnQgbW9udGhcclxuICogY29uc3QgY2FsZW5kYXIgPSB0aGlzLmNhbGVuZGFyRGF5cztcclxuICogYGBgXHJcbiovXHJcbiAgcHJpdmF0ZSBnZXQgY2FsZW5kYXJEYXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlRmlyc3REYXlPZkNhbGVuZGFyKCk7XHJcbiAgfVxyXG5cclxuLyoqXHJcbiAqIEdldCB0aGUgZGF0ZSBvZiB0aGUgcHJldmlvdXMgbW9udGggdG8gZGlzcGxheSBpbiBlbXB0eSBjZWxscyBvZiB0aGUgY3VycmVudCBtb250aC5cclxuICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZGF0ZSBvZiB0aGUgcHJldmlvdXMgbW9udGggaWYgdGhlIHByb3ZpZGVkIGRhdGUgaXMgbm90IGluIHRoZSBjdXJyZW50IG1vbnRoLlxyXG4gKiBJZiB0aGUgcHJvdmlkZWQgZGF0ZSBpcyBpbiB0aGUgY3VycmVudCBtb250aCwgaXQgcmV0dXJucyB0aGUgZGF0ZSdzIGRheSBhcyBhIHN0cmluZy5cclxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBldmFsdWF0ZS5cclxuICogQHJldHVybnMgVGhlIGRhdGUgb2YgdGhlIHByZXZpb3VzIG1vbnRoIG9yIGEgZGF5IHN0cmluZy5cclxuICogYGBgXHJcbiAqIC8vIEdldCB0aGUgcHJldmlvdXMgbW9udGgncyBkYXRlIHRvIGRpc3BsYXkgaW4gZW1wdHkgY2VsbHNcclxuICogY29uc3QgcHJldmlvdXNNb250aERhdGUgPSB0aGlzLmdldFByZXZpb3VzTW9udGhEYXRlKG5ldyBEYXRlKDIwMjMsIDgsIDEpKTtcclxuICogYGBgXHJcbiovXHJcbiAgcHJpdmF0ZSBnZXRQcmV2aW91c01vbnRoRGF0ZShkYXRlOiBEYXRlKTogYW55IHtcclxuICAgIGlmICghZGF0ZSkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICBpZiAoZGF0ZS5nZXRNb250aCgpID09PSBjdXJyZW50RGF0ZS5nZXRNb250aCgpICYmIGRhdGUuZ2V0RnVsbFllYXIoKSA9PT0gY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSkge1xyXG4gICAgICByZXR1cm4gZGF0ZS5nZXREYXRlKCkudG9TdHJpbmcoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShkYXRlLCAnZGQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4vKipcclxuICogTmF2aWdhdGUgdG8gdGhlIHByZXZpb3VzIG1vbnRoIGluIHRoZSBjYWxlbmRhciBpbnRlcmZhY2UuXHJcbiAqIFRoaXMgbWV0aG9kIHVwZGF0ZXMgdGhlIHNlbGVjdGVkRGF0ZSwgZm9ybWF0cyBpdCwgYW5kIHJlY2FsY3VsYXRlcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSBjYWxlbmRhci5cclxuICogYGBgXHJcbiAqIC8vIE5hdmlnYXRlIHRvIHRoZSBwcmV2aW91cyBtb250aFxyXG4gKiB0aGlzLmdldFByZXZpb3VzTW9udGgoKTtcclxuICogYGBgXHJcbiovXHJcbiAgcHJpdmF0ZSBnZXRQcmV2aW91c01vbnRoKCkge1xyXG4gICAgY29uc3QgY3VycmVudE1vbnRoID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0TW9udGgoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKSwgY3VycmVudE1vbnRoIC0gMSwgMSk7XHJcbiAgICB0aGlzLmZvcm1hdERhdGUoKTtcclxuICAgIHRoaXMuY2FsY3VsYXRlRmlyc3REYXlPZkNhbGVuZGFyKCk7XHJcbiAgfVxyXG5cclxuLyoqXHJcbiAqIE5hdmlnYXRlIHRvIHRoZSBuZXh0IG1vbnRoIGluIHRoZSBjYWxlbmRhciBpbnRlcmZhY2UuXHJcbiAqIFRoaXMgbWV0aG9kIHVwZGF0ZXMgdGhlIHNlbGVjdGVkRGF0ZSwgZm9ybWF0cyBpdCwgYW5kIHJlY2FsY3VsYXRlcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSBjYWxlbmRhci5cclxuICogYGBgXHJcbiAqIC8vIE5hdmlnYXRlIHRvIHRoZSBuZXh0IG1vbnRoXHJcbiAqIHRoaXMuZ2V0TmV4dE1vbnRoKCk7XHJcbiAqIGBgYFxyXG4qL1xyXG4gIHByaXZhdGUgZ2V0TmV4dE1vbnRoKCkge1xyXG4gICAgY29uc3QgY3VycmVudE1vbnRoID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0TW9udGgoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKSwgY3VycmVudE1vbnRoICsgMSwgMSk7XHJcbiAgICB0aGlzLmZvcm1hdERhdGUoKTtcclxuICAgIHRoaXMuY2FsY3VsYXRlRmlyc3REYXlPZkNhbGVuZGFyKCk7XHJcbiAgfVxyXG5cclxuLyoqXHJcbiAqIEdldCB0aGUgbnVtYmVyIG9mIGRheXMgaW4gYSBnaXZlbiBtb250aCBvZiBhIHNwZWNpZmljIHllYXIuXHJcbiAqIEBwYXJhbSB5ZWFyIC0gVGhlIHllYXIgZm9yIHdoaWNoIHlvdSB3YW50IHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGRheXMuXHJcbiAqIEBwYXJhbSBtb250aCAtIFRoZSBtb250aCAoMC1iYXNlZCBpbmRleCkgZm9yIHdoaWNoIHlvdSB3YW50IHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGRheXMuXHJcbiAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGUgc3BlY2lmaWVkIG1vbnRoIG9mIHRoZSBnaXZlbiB5ZWFyLlxyXG4qL1xyXG4gIHByaXZhdGUgZGF5c0luTW9udGgoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCArIDEsIDApLmdldERhdGUoKTtcclxuICB9XHJcblxyXG4vKipcclxuICogQ2FsY3VsYXRlIHRoZSBzdHJ1Y3R1cmUgb2YgZGF5cyBpbiBhIG1vbnRoIGZvciB0aGUgY2FsZW5kYXIgZGlzcGxheS5cclxuICogVGhpcyBtZXRob2QgZ2VuZXJhdGVzIGEgbWF0cml4IG9mIGRheSBkYXRhIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSBkYXlzIGluIHRoZSBjYWxlbmRhci5cclxuICogRWFjaCBkYXkgZGF0YSBvYmplY3QgY29udGFpbnMgdGhlIGRhdGUgYW5kIHdoZXRoZXIgaXQgYmVsb25ncyB0byB0aGUgY3VycmVudCBtb250aC5cclxuICogQHJldHVybnMgQSBtYXRyaXggb2YgZGF5IGRhdGEgb2JqZWN0cyBmb3IgdGhlIGNhbGVuZGFyIGRpc3BsYXkuXHJcbiovXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVGaXJzdERheU9mQ2FsZW5kYXIoKSB7XHJcbiAgICBjb25zdCB5ZWFyID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0TW9udGgoKTtcclxuICAgIGNvbnN0IGZpcnN0RGF5T2ZNb250aCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAxKTtcclxuICAgIGNvbnN0IGZpcnN0V2Vla2RheSA9IGZpcnN0RGF5T2ZNb250aC5nZXREYXkoKTtcclxuICAgIGNvbnN0IHN0YXJ0RGF5ID0gZmlyc3RXZWVrZGF5ID09PSAwID8gLTUgOiAyIC0gZmlyc3RXZWVrZGF5O1xyXG4gICAgY29uc3QgY2FsZW5kYXJEYXlzID0gW107XHJcbiAgICBsZXQgY3VycmVudERheSA9IHN0YXJ0RGF5O1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA2OyBpKyspIHtcclxuICAgICAgY29uc3Qgd2VlayA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IDc7IGorKykge1xyXG4gICAgICAgIGNvbnN0IGRheSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBjdXJyZW50RGF5KTtcclxuICAgICAgICBjb25zdCBkYXlEYXRhID0ge1xyXG4gICAgICAgICAgZGF0ZTogZGF5LFxyXG4gICAgICAgICAgaXNDdXJyZW50TW9udGg6IGN1cnJlbnREYXkgPj0gMSAmJiBjdXJyZW50RGF5IDw9IHRoaXMuZGF5c0luTW9udGgoeWVhciwgbW9udGgpLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgd2Vlay5wdXNoKGRheURhdGEpO1xyXG4gICAgICAgIGN1cnJlbnREYXkrKztcclxuICAgICAgfVxyXG4gICAgICBjYWxlbmRhckRheXMucHVzaCh3ZWVrKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjYWxlbmRhckRheXM7XHJcbiAgfVxyXG4gIFxyXG4vKipcclxuICogQ2hlY2sgaWYgYSBnaXZlbiBkYXRlIGlzIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZGF0ZSBpbiB0aGUgY2FsZW5kYXIuXHJcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gY2hlY2suXHJcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJvdmlkZWQgZGF0ZSBtYXRjaGVzIHRoZSBzZWxlY3RlZCBkYXRlLCBvdGhlcndpc2UgYGZhbHNlYC5cclxuICogYGBgXHJcbiAqIC8vIENoZWNrIGlmIGEgZGF0ZSBpcyBzZWxlY3RlZFxyXG4gKiBjb25zdCBpc1NlbGVjdGVkID0gdGhpcy5pc0RhdGVTZWxlY3RlZChzb21lRGF0ZSk7XHJcbiAqIGBgYFxyXG4qL1xyXG4gIHByaXZhdGUgaXNEYXRlU2VsZWN0ZWQoZGF0ZTogRGF0ZSkge1xyXG4gICAgcmV0dXJuIGRhdGUudG9EYXRlU3RyaW5nKCkgPT09IHRoaXMuc2VsZWN0ZWREYXRlLnRvRGF0ZVN0cmluZygpO1xyXG4gIH1cclxuXHJcbi8qKlxyXG4gKiBDaGVjayBpZiBhIGRhdGUgc3RyaW5nIGlzIHZhbGlkIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgZGF0ZSBmb3JtYXQuXHJcbiAqIEBwYXJhbSBpbnB1dERhdGUgLSBUaGUgZGF0ZSBzdHJpbmcgdG8gdmFsaWRhdGUuXHJcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgaW5wdXQgZGF0ZSBzdHJpbmcgaXMgdmFsaWQsIG90aGVyd2lzZSBgZmFsc2VgLlxyXG4gKiBgYGBcclxuICogLy8gQ2hlY2sgaWYgYSBkYXRlIHN0cmluZyBpcyB2YWxpZFxyXG4gKiBjb25zdCBpc1ZhbGlkRGF0ZSA9IHRoaXMuaXNEYXRlVmFsaWQoJzA1LzI1LzIwMjMnKTtcclxuICogYGBgXHJcbiovXHJcbiAgcHJpdmF0ZSBpc0RhdGVWYWxpZChpbnB1dERhdGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZVJlZ0V4cC50ZXN0KGlucHV0RGF0ZSk7XHJcbiAgfVxyXG4gIFxyXG4vKipcclxuICogQ2hlY2sgaWYgYSBnaXZlbiBkYXRlIGlzIHRvZGF5J3MgZGF0ZS5cclxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBjaGVjay5cclxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBwcm92aWRlZCBkYXRlIGlzIHRvZGF5J3MgZGF0ZSwgb3RoZXJ3aXNlIGBmYWxzZWAuXHJcbiAqIGBgYFxyXG4gKiAvLyBDaGVjayBpZiBhIGRhdGUgaXMgdG9kYXkncyBkYXRlXHJcbiAqIGNvbnN0IGlzVG9kYXkgPSB0aGlzLmlzRGF0ZVRvZGF5KHNvbWVEYXRlKTtcclxuICogYGBgXHJcbiovXHJcbiAgcHJpdmF0ZSBpc0RhdGVUb2RheShkYXRlOiBEYXRlKSB7XHJcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICByZXR1cm4gZGF0ZS50b0RhdGVTdHJpbmcoKSA9PT0gdG9kYXkudG9EYXRlU3RyaW5nKCk7XHJcbiAgfVxyXG59IiwiPGRpdiBjbGFzcz1cImRhdGVwaWNrZXItY29udGFpbmVyXCJcclxuW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCJcclxuPlxyXG5cclxuICA8IS0tIElucHV0LCBzYXZlICYgZWRpdCBidXR0b25zIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxyXG5cclxuICAgICAgPGRpdiAqbmdJZj1cIiFpc0VkaXRpbmdcIj5cclxuXHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVDYWxlbmRhcigpXCJcclxuICAgICAgICBbdmFsdWVdPVwiZm9ybWF0dGVkRGF0ZVwiXHJcbiAgICAgICAgW3JlYWRPbmx5XT1cInRydWVcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0VkaXRpbmdcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS0gRWRpdCAtLT5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBlbmNpbC1zcXVhcmUtbyBlZGl0LWJ1dHRvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIChjbGljayk9XCJ0b2dnbGVFZGl0KClcIj48L2k+IFxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNFZGl0aW5nXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJlZGl0ZWREYXRlXCJcclxuICAgICAgICAgICAgKGlucHV0KT1cIm9uRGF0ZUlucHV0KCRldmVudClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJvcmRlci0zXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNhbGVuZGFyKClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZmxvcHB5LW8gZWRpdC1idXR0b25cIiAoY2xpY2spPVwic2F2ZUVkaXRlZERhdGUoKVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICA8L2Rpdj4gICAgIFxyXG4gICAgPC9kaXY+XHJcblxyXG48IS0tIENhbGVuZGFyKERyb3Bkb3ducywgZGF0ZXMpIC0tPlxyXG4gIDxkaXYgKm5nSWY9XCJpc0NhbGVuZGFyT3BlblwiIGNsYXNzPVwiY2FsZW5kYXJcIiAjY2FsZW5kYXJDb250YWluZXIgXHJcbiAgW3N0eWxlLnRvcF09XCJ0b3BPZmZzZXRcIlxyXG4gIFtzdHlsZS5sZWZ0XT1cImxlZnRPZmZzZXRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9udGhCdXR0b25Db250YWluZXJcIj5cclxuICAgICAgICAgICAgPCEtLSBNb250aCBkcm9wZG93biAtLT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTW9udGhEcm9wZG93bk9wZW47IGVsc2UgbW9udGhMYWJlbFwiPlxyXG4gICAgICAgICAgICAgIDxtZWZkZXYtc2VsZWN0ICAgIFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibW9udGhEcm9wZG93blwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZERhdGVNb250aFwiIFxyXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uTW9udGhDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgW1BsYWNlSG9sZGVyXT1cIidtb250aCdcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxtZWZkZXYtb3B0aW9uIFxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG1vbnRoIG9mIG1vbnRoczsgbGV0IGkgPSBpbmRleFwiIFxyXG4gICAgICAgICAgICAgICAgW1ZhbHVlXT1cImlcIlxyXG4gICAgICAgICAgICAgICAgW0xhYmVsXSA9IFwibW9udGhcIiBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPnt7IG1vbnRoIH19PC9tZWZkZXYtb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvbWVmZGV2LXNlbGVjdD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbW9udGhMYWJlbD5cclxuICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwidG9nZ2xlTW9udGhEcm9wZG93bigkZXZlbnQpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBZZWFyIGRyb3Bkb3duIC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNZZWFyRHJvcGRvd25PcGVuOyBlbHNlIHllYXJMYWJlbFwiPlxyXG4gICAgICAgICAgICAgIDxtZWZkZXYtc2VsZWN0IFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwieWVhckRyb3Bkb3duXCIgXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZERhdGVZZWFyXCIgXHJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25ZZWFyQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgIFtQbGFjZUhvbGRlcl09XCIneWVhcidcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPG1lZmRldi1vcHRpb24gXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB5ZWFyIG9mIHllYXJzXCIgXHJcbiAgICAgICAgICAgICAgICAgIFtMYWJlbF0gPSBcInllYXJcIiBcclxuICAgICAgICAgICAgICAgICAgW1ZhbHVlXT1cInllYXJcIiBcclxuICAgICAgICAgICAgICAgICAgPnt7eWVhcn19PC9tZWZkZXYtb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvbWVmZGV2LXNlbGVjdD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjeWVhckxhYmVsPlxyXG4gICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJ0b2dnbGVZZWFyRHJvcGRvd24oJGV2ZW50KVwiPnt7IHNlbGVjdGVkRGF0ZVllYXIgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgPCEtLSBDYWxlbmRhciBleGl0IGJ1dHRvbiAtLT5cclxuICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRpbWVzIHRvZ2dsZUNhbGVuZGFyQnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZUNhbGVuZGFyKClcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ib2R5XCI+XHJcbiAgICAgIDx0YWJsZT5cclxuICAgICAgICA8dHI+XHJcbiAgICAgICAgICA8dGggY2xhc3M9XCJhbGlnbi1pdGVtcy1jZW50ZXJcIiAqbmdGb3I9XCJsZXQgd2Vla2RheSBvZiB3ZWVrZGF5c1wiPnt7IHdlZWtkYXkgfX08L3RoPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgICAgPHRyICpuZ0Zvcj1cImxldCB3ZWVrIG9mIGNhbGVuZGFyRGF5c1wiPlxyXG4gICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBkYXlEYXRhIG9mIHdlZWtcIiBcclxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF0ZShkYXlEYXRhLmRhdGUpXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZCc6IGlzRGF0ZVNlbGVjdGVkKGRheURhdGEuZGF0ZSksICdwcmV2LW1vbnRoJzogIWRheURhdGEuaXNDdXJyZW50TW9udGggfVwiPlxyXG5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlXCIgXHJcbiAgICAgICAgICAgICAgW2NsYXNzLnByZXYtbW9udGhdPVwiIWRheURhdGEuaXNDdXJyZW50TW9udGhcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyBkYXlEYXRhLmRhdGUuZ2V0RGF0ZSgpIH19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbiJdfQ==
@@ -6,6 +6,7 @@ export * from './lib/markup-kit/card/index';
6
6
  export * from './lib/markup-kit/modals/index';
7
7
  export * from './lib/markup-kit/page-layouts/index';
8
8
  export * from './lib/markup-kit/executors';
9
+ export * from './lib/markup-kit/slider/index';
9
10
  // pg modules
10
11
  export * from './lib/pg-components/card/index';
11
12
  export * from './lib/pg-components/progress/index';
@@ -13,4 +14,4 @@ export * from './lib/pg-components/select/index';
13
14
  export * from './lib/pg-components/spec-flow-test/index';
14
15
  export * from './lib/pg-components/switch/index';
15
16
  export * from './lib/pg-components/tabs/index';
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3VpLWtpdC1saWIvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDRCQUE0QixDQUFDO0FBRzNDLGFBQWE7QUFDYixjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxnQ0FBZ0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL21hcmt1cC1raXQvY29sbGFwc2UvaW5kZXgnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tYXJrdXAta2l0L3V0aWxzL2ZpbHRlcmVkLWZpZWxkL2luZGV4JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbWFya3VwLWtpdC91dGlscy9oZWxwLWJsb2NrL2luZGV4JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbWFya3VwLWtpdC91dGlscy9kYXRlcGlja2VyL2luZGV4JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbWFya3VwLWtpdC9jYXJkL2luZGV4JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbWFya3VwLWtpdC9tb2RhbHMvaW5kZXgnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tYXJrdXAta2l0L3BhZ2UtbGF5b3V0cy9pbmRleCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21hcmt1cC1raXQvZXhlY3V0b3JzJztcclxuXHJcblxyXG4vLyBwZyBtb2R1bGVzXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BnLWNvbXBvbmVudHMvY2FyZC9pbmRleCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BnLWNvbXBvbmVudHMvcHJvZ3Jlc3MvaW5kZXgnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wZy1jb21wb25lbnRzL3NlbGVjdC9pbmRleCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BnLWNvbXBvbmVudHMvc3BlYy1mbG93LXRlc3QvaW5kZXgnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wZy1jb21wb25lbnRzL3N3aXRjaC9pbmRleCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BnLWNvbXBvbmVudHMvdGFicy9pbmRleCc7XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4iXX0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3VpLWtpdC1saWIvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDRCQUE0QixDQUFDO0FBRTNDLGNBQWMsK0JBQStCLENBQUM7QUFFOUMsYUFBYTtBQUNiLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGdDQUFnQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvbWFya3VwLWtpdC9jb2xsYXBzZS9pbmRleCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21hcmt1cC1raXQvdXRpbHMvZmlsdGVyZWQtZmllbGQvaW5kZXgnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tYXJrdXAta2l0L3V0aWxzL2hlbHAtYmxvY2svaW5kZXgnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tYXJrdXAta2l0L3V0aWxzL2RhdGVwaWNrZXIvaW5kZXgnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tYXJrdXAta2l0L2NhcmQvaW5kZXgnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tYXJrdXAta2l0L21vZGFscy9pbmRleCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21hcmt1cC1raXQvcGFnZS1sYXlvdXRzL2luZGV4JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbWFya3VwLWtpdC9leGVjdXRvcnMnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbWFya3VwLWtpdC9zbGlkZXIvaW5kZXgnO1xyXG5cclxuLy8gcGcgbW9kdWxlc1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wZy1jb21wb25lbnRzL2NhcmQvaW5kZXgnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wZy1jb21wb25lbnRzL3Byb2dyZXNzL2luZGV4JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGctY29tcG9uZW50cy9zZWxlY3QvaW5kZXgnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wZy1jb21wb25lbnRzL3NwZWMtZmxvdy10ZXN0L2luZGV4JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGctY29tcG9uZW50cy9zd2l0Y2gvaW5kZXgnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wZy1jb21wb25lbnRzL3RhYnMvaW5kZXgnO1xyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuIl19