ngx-tethys 18.2.8 → 18.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/date-picker/lib/date-carousel/date-carousel.component.d.ts +1 -1
- package/date-picker/picker.component.d.ts +1 -0
- package/date-picker/picker.pipes.d.ts +1 -0
- package/date-picker/picker.util.d.ts +3 -1
- package/date-picker/styles/quarter-panel.scss +3 -0
- package/esm2022/date-picker/lib/date-carousel/date-carousel.component.mjs +5 -5
- package/esm2022/date-picker/picker.component.mjs +4 -2
- package/esm2022/date-picker/picker.pipes.mjs +4 -2
- package/esm2022/date-picker/picker.util.mjs +12 -8
- package/esm2022/util/date/functions.mjs +7 -6
- package/esm2022/version.mjs +2 -2
- package/fesm2022/ngx-tethys-date-picker.mjs +16 -11
- package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-util.mjs +6 -6
- package/fesm2022/ngx-tethys-util.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/package.json +7 -7
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [18.2.9](https://github.com/atinc/ngx-tethys/compare/18.2.8...18.2.9) (2025-03-25)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* **date-picker:** handle zh-cn format show ([#3315](https://github.com/atinc/ngx-tethys/issues/3315)) ([95afd8f](https://github.com/atinc/ngx-tethys/commit/95afd8f03c588f2a3e9584170418be217d801706))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
5
14
|
## [18.2.8](https://github.com/atinc/ngx-tethys/compare/18.2.7...18.2.8) (2025-03-25)
|
|
6
15
|
|
|
7
16
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { OnDestroy, OnInit, Signal } from '@angular/core';
|
|
2
2
|
import { ControlValueAccessor } from '@angular/forms';
|
|
3
|
+
import { ThyDatePickerLocale } from 'ngx-tethys/i18n';
|
|
3
4
|
import { TinyDate } from 'ngx-tethys/util';
|
|
4
5
|
import { AdvancedSelectableCell, RangeAdvancedValue } from '../../inner-types';
|
|
5
6
|
import { ThyDateGranularity } from '../../standard-types';
|
|
6
|
-
import { ThyDatePickerLocale } from 'ngx-tethys/i18n';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
/**
|
|
9
9
|
* @private
|
|
@@ -9,6 +9,7 @@ import * as i0 from "@angular/core";
|
|
|
9
9
|
export declare class ThyDatePickerFormatPipe implements PipeTransform {
|
|
10
10
|
private dateHelper;
|
|
11
11
|
private datePickerConfigService;
|
|
12
|
+
private i18n;
|
|
12
13
|
transform(originalValue: CompatibleDate | DateEntry | ThyDateRangeEntry, formatStr?: string, separator?: string): string;
|
|
13
14
|
static ɵfac: i0.ɵɵFactoryDeclaration<ThyDatePickerFormatPipe, never>;
|
|
14
15
|
static ɵpipe: i0.ɵɵPipeDeclaration<ThyDatePickerFormatPipe, "thyDatePickerFormat", true>;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { Signal } from '@angular/core';
|
|
2
|
+
import { ThyI18nLocale } from 'ngx-tethys/i18n';
|
|
1
3
|
import { SafeAny } from 'ngx-tethys/types';
|
|
2
4
|
import { TinyDate } from 'ngx-tethys/util';
|
|
3
5
|
import { CompatibleValue, RangeAdvancedValue } from './inner-types';
|
|
@@ -7,7 +9,7 @@ export declare function transformDateValue(value: CompatibleDate | CompatibleVal
|
|
|
7
9
|
withTime?: boolean;
|
|
8
10
|
flexibleDateGranularity?: ThyDateGranularity;
|
|
9
11
|
};
|
|
10
|
-
export declare function getFlexibleAdvancedReadableValue(tinyDates: TinyDate[], flexibleDateGranularity: ThyDateGranularity, separator: string): string;
|
|
12
|
+
export declare function getFlexibleAdvancedReadableValue(tinyDates: TinyDate[], flexibleDateGranularity: ThyDateGranularity, separator: string, locale: Signal<ThyI18nLocale>): string;
|
|
11
13
|
export declare function convertDate(date: Date | number | TinyDate): Date;
|
|
12
14
|
export declare function hasValue(value: CompatibleValue): boolean;
|
|
13
15
|
export declare function makeValue(value: CompatibleDate | null, isRange?: boolean): CompatibleValue;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { NgClass, NgTemplateOutlet } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, HostBinding,
|
|
2
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, HostBinding, inject, Input } from '@angular/core';
|
|
3
3
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
4
|
import { ThyButton } from 'ngx-tethys/button';
|
|
5
|
+
import { injectLocale } from 'ngx-tethys/i18n';
|
|
5
6
|
import { ThyIcon } from 'ngx-tethys/icon';
|
|
6
7
|
import { TinyDate } from 'ngx-tethys/util';
|
|
7
8
|
import { Subject } from 'rxjs';
|
|
8
|
-
import { DatePickerAdvancedShowYearTipPipe } from '../../picker.pipes';
|
|
9
|
-
import { injectLocale } from 'ngx-tethys/i18n';
|
|
10
9
|
import { DateHelperService } from '../../date-helper.service';
|
|
10
|
+
import { DatePickerAdvancedShowYearTipPipe } from '../../picker.pipes';
|
|
11
11
|
import * as i0 from "@angular/core";
|
|
12
12
|
/**
|
|
13
13
|
* @private
|
|
@@ -212,7 +212,7 @@ export class DateCarousel {
|
|
|
212
212
|
currentDate = currentDate || this.activeDate || new TinyDate().startOfQuarter();
|
|
213
213
|
return {
|
|
214
214
|
type: 'quarter',
|
|
215
|
-
content:
|
|
215
|
+
content: `${currentDate.addQuarters(preOrNextcount).format('qqq')}`,
|
|
216
216
|
startValue: currentDate.startOfQuarter().addQuarters(preOrNextcount),
|
|
217
217
|
endValue: currentDate.endOfQuarter().addQuarters(preOrNextcount),
|
|
218
218
|
classMap: {}
|
|
@@ -385,4 +385,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
385
385
|
}], activeDate: [{
|
|
386
386
|
type: Input
|
|
387
387
|
}] } });
|
|
388
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1jYXJvdXNlbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvZGF0ZS1waWNrZXIvbGliL2RhdGUtY2Fyb3VzZWwvZGF0ZS1jYXJvdXNlbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvZGF0ZS1waWNrZXIvbGliL2RhdGUtY2Fyb3VzZWwvZGF0ZS1jYXJvdXNlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUdMLE1BQU0sRUFFVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV2RSxPQUFPLEVBQUUsWUFBWSxFQUF1QixNQUFNLGlCQUFpQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQUU5RDs7R0FFRztBQWdCSCxNQUFNLE9BQU8sWUFBWTtJQWZ6QjtRQWdCWSxRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFD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QUFLLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQzNDLFVBQVUsR0FBRyxXQUFXLENBQUM7WUFDekIsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDOUIsQ0FBQztRQUNELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDekMsQ0FBQzsrR0F2WFEsWUFBWTttR0FBWixZQUFZLHVKQVZWO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUM7YUFDOUM7U0FDSiwwQkN0Q0wscTlEQWlEQSw0Q0RUYyxnQkFBZ0Isb0pBQUUsU0FBUyxvTEFBRSxPQUFPLHNNQUFFLE9BQU8sK0VBQUUsaUNBQWlDOzs0RkFFakYsWUFBWTtrQkFmeEIsU0FBUzsrQkFFSSxlQUFlLG1CQUVSLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsS0FBSyxFQUFFLElBQUk7NEJBQ1gsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDO3lCQUM5QztxQkFDSixjQUNXLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGlDQUFpQyxDQUFDOzhCQU9yRSxTQUFTO3NCQUE5QixXQUFXO3VCQUFDLE9BQU87Z0JBRVgsVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIGluamVjdCxcbiAgICBTaWduYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUaHlCdXR0b24gfSBmcm9tICduZ3gtdGV0aHlzL2J1dHRvbic7XG5pbXBvcnQgeyBUaHlJY29uIH0gZnJvbSAnbmd4LXRldGh5cy9pY29uJztcbmltcG9ydCB7IFRpbnlEYXRlIH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGwsIFJhbmdlQWR2YW5jZWRWYWx1ZSB9IGZyb20gJy4uLy4uL2lubmVyLXR5cGVzJztcbmltcG9ydCB7IERhdGVQaWNrZXJBZHZhbmNlZFNob3dZZWFyVGlwUGlwZSB9IGZyb20gJy4uLy4uL3BpY2tlci5waXBlcyc7XG5pbXBvcnQgeyBUaHlEYXRlR3JhbnVsYXJpdHkgfSBmcm9tICcuLi8uLi9zdGFuZGFyZC10eXBlcyc7XG5pbXBvcnQgeyBpbmplY3RMb2NhbGUsIFRoeURhdGVQaWNrZXJMb2NhbGUgfSBmcm9tICduZ3gtdGV0aHlzL2kxOG4nO1xuaW1wb3J0IHsgRGF0ZUhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9kYXRlLWhlbHBlci5zZXJ2aWNlJztcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnZGF0ZS1jYXJvdXNlbCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtY2Fyb3VzZWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZUNhcm91c2VsKVxuICAgICAgICB9XG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ1RlbXBsYXRlT3V0bGV0LCBUaHlCdXR0b24sIFRoeUljb24sIE5nQ2xhc3MsIERhdGVQaWNrZXJBZHZhbmNlZFNob3dZZWFyVGlwUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZUNhcm91c2VsIGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcHJpdmF0ZSBkYXRlSGVscGVyID0gaW5qZWN0KERhdGVIZWxwZXJTZXJ2aWNlKTtcbiAgICBsb2NhbGU6IFNpZ25hbDxUaHlEYXRlUGlja2VyTG9jYWxlPiA9IGluamVjdExvY2FsZSgnZGF0ZVBpY2tlcicpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzTmFtZSA9ICd0aHktZGF0ZS1waWNrZXItYWR2YW5jZWQtY2Fyb3VzZWwnO1xuXG4gICAgQElucHV0KCkgYWN0aXZlRGF0ZTogVGlueURhdGU7XG5cbiAgICBzZXQgZGVmYXVsdFZhbHVlKHZhbHVlOiBSYW5nZUFkdmFuY2VkVmFsdWUpIHtcbiAgICAgICAgdGhpcy5kYXRlR3JhbnVsYXJpdHkgPSB2YWx1ZS5kYXRlR3JhbnVsYXJpdHk7XG4gICAgICAgIHRoaXMuYnVpbGRTZWxlY3RhYmxlRGF0YSh2YWx1ZS5iZWdpbik7XG5cbiAgICAgICAgaWYgKHZhbHVlLmJlZ2luICYmIHZhbHVlLmVuZCkge1xuICAgICAgICAgICAgY29uc3Qgc2hvdWxkQmVTZWxlY3RWYWx1ZSA9IHRoaXMuZ2V0U2hvdWxkQmVUb2dnbGVWYWx1ZSh2YWx1ZS5iZWdpbiwgdmFsdWUuZW5kKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0KC4uLnNob3VsZEJlU2VsZWN0VmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jbGVhclNlbGVjdCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBzZWxlY3RhYmxlRGF0YTogeyB5ZWFyPzogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbFtdOyBxdWFydGVyPzogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbFtdOyBtb250aD86IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGxbXSB9ID0ge307XG5cbiAgICBkYXRlR3JhbnVsYXJpdHk6IFRoeURhdGVHcmFudWxhcml0eTtcblxuICAgIHNlbGVjdGVkVmFsdWU6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGxbXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBzZWxlY3RlZFZhbHVlQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PFJhbmdlQWR2YW5jZWRWYWx1ZT4oKTtcblxuICAgIHByaXZhdGUgX29uQ2hhbmdlOiAodmFsdWU6IFJhbmdlQWR2YW5jZWRWYWx1ZSkgPT4gdm9pZDtcblxuICAgIHByaXZhdGUgX29uVG91Y2hlZDogKHZhbHVlOiBSYW5nZUFkdmFuY2VkVmFsdWUpID0+IHZvaWQ7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlQ2hhbmdlJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRWYWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkU2VsZWN0YWJsZURhdGEodGhpcy5zZWxlY3RlZFZhbHVlWzBdPy5zdGFydFZhbHVlLCB0aGlzLmRhdGVHcmFudWxhcml0eSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhLnllYXIuZm9yRWFjaChpdGVtID0+IChpdGVtLmNsYXNzTWFwID0gdGhpcy5nZXRDbGFzc01hcChpdGVtKSkpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YS5xdWFydGVyLmZvckVhY2goaXRlbSA9PiAoaXRlbS5jbGFzc01hcCA9IHRoaXMuZ2V0Q2xhc3NNYXAoaXRlbSkpKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGEubW9udGguZm9yRWFjaChpdGVtID0+IChpdGVtLmNsYXNzTWFwID0gdGhpcy5nZXRDbGFzc01hcChpdGVtKSkpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1NlbGVjdEVtcHR5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUdyYW51bGFyaXR5OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsY3RlZFZhbHVlID0gdGhpcy5zZWxlY3RlZFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbkNoYW5nZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlR3JhbnVsYXJpdHk6IHRoaXMuZGF0ZUdyYW51bGFyaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IHNlbGN0ZWRWYWx1ZVswXT8uc3RhcnRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogc2VsY3RlZFZhbHVlW3NlbGN0ZWRWYWx1ZS5sZW5ndGggLSAxXT8uZW5kVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBSYW5nZUFkdmFuY2VkVmFsdWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBnZXRDbGFzc01hcChjZWxsOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBbYGFjdGl2ZWBdOiB0aGlzLmlzU2VsZWN0ZWQoY2VsbCksXG4gICAgICAgICAgICBbYGluZGV0ZXJtaW5hdGVgXTogdGhpcy5pc0NlbGxJbmRldGVybWluYXRlKHRoaXMuc2VsZWN0ZWRWYWx1ZSwgY2VsbCksXG4gICAgICAgICAgICBbYHR5cGUtYWN0aXZlYF06IHRoaXMuaXNUeXBlQWN0aXZlKHRoaXMuc2VsZWN0ZWRWYWx1ZSwgY2VsbCksXG4gICAgICAgICAgICBbJ2luLWhvdmVyLXJhbmdlJ106IGNlbGwuaXNJblJhbmdlLFxuICAgICAgICAgICAgWydvdXQtcmFuZ2UnXTogY2VsbC5pc091dFJhbmdlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaXNUeXBlQWN0aXZlKG9yaWdpbmFsVmFsdWU6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGxbXSwgdmFsdWU6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGwpIHtcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsVmFsdWU/Lmxlbmd0aCAmJiBvcmlnaW5hbFZhbHVlWzBdLnR5cGUgPT09IHZhbHVlLnR5cGU7XG4gICAgfVxuXG4gICAgaXNDZWxsSW5kZXRlcm1pbmF0ZShvcmlnaW5hbFZhbHVlOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsW10sIHZhbHVlOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsKSB7XG4gICAgICAgIGlmIChvcmlnaW5hbFZhbHVlWzBdPy50eXBlID09PSB2YWx1ZS50eXBlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAob3JpZ2luYWxWYWx1ZVswXT8udHlwZSA9PT0gJ3llYXInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICEhb3JpZ2luYWxWYWx1ZS5maW5kKGl0ZW0gPT4gaXRlbS5zdGFydFZhbHVlLmlzU2FtZVllYXIodmFsdWUuc3RhcnRWYWx1ZSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudHlwZSA9PT0gJ3llYXInXG4gICAgICAgICAgICAgICAgICAgID8gISFvcmlnaW5hbFZhbHVlLmZpbmQoaXRlbSA9PiBpdGVtLnN0YXJ0VmFsdWUuaXNTYW1lWWVhcih2YWx1ZS5zdGFydFZhbHVlKSlcbiAgICAgICAgICAgICAgICAgICAgOiAhIW9yaWdpbmFsVmFsdWUuZmluZChpdGVtID0+IGl0ZW0uc3RhcnRWYWx1ZS5pc1NhbWVRdWFydGVyKHZhbHVlLnN0YXJ0VmFsdWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzU2VsZWN0ZWQodmFsdWU6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRWYWx1ZS5maW5kKGl0ZW0gPT4gaXRlbS5zdGFydFZhbHVlLmlzU2FtZURheSh2YWx1ZS5zdGFydFZhbHVlKSkgJiYgdGhpcy5kYXRlR3JhbnVsYXJpdHkgPT09IHZhbHVlLnR5cGU7XG4gICAgfVxuXG4gICAgaXNTZWxlY3RFbXB0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRWYWx1ZS5sZW5ndGggPT0gMDtcbiAgICB9XG5cbiAgICBzZWxlY3RTb3J0KCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUuc29ydCgoYSwgYikgPT4gYS5zdGFydFZhbHVlLmdldFRpbWUoKSAtIGIuc3RhcnRWYWx1ZS5nZXRUaW1lKCkpO1xuICAgIH1cblxuICAgIHNlbGVjdCguLi52YWx1ZTogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbFtdKSB7XG4gICAgICAgIHZhbHVlLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNTZWxlY3RlZChpdGVtKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5wdXNoKC4uLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2VsZWN0U29ydCgpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVDaGFuZ2UkLm5leHQodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBkZXNlbGVjdCguLi52YWx1ZTogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbFtdKSB7XG4gICAgICAgIHZhbHVlLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSB0aGlzLnNlbGVjdGVkVmFsdWUuZmlsdGVyKHNlbGVjdGVkID0+ICFzZWxlY3RlZC5zdGFydFZhbHVlLmlzU2FtZURheShpdGVtLnN0YXJ0VmFsdWUpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2VsZWN0U29ydCgpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVDaGFuZ2UkLm5leHQodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBjbGVhclNlbGVjdChoaWRkZW4/OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IFtdO1xuICAgICAgICBpZiAoIWhpZGRlbikge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlQ2hhbmdlJC5uZXh0KHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRTaG91bGRCZVRvZ2dsZVZhbHVlKGJlZ2luOiBUaW55RGF0ZSwgZW5kOiBUaW55RGF0ZSkge1xuICAgICAgICBsZXQgc2VsZWN0ZWRWYWx1ZTogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbFtdID0gW107XG4gICAgICAgIHN3aXRjaCAodGhpcy5kYXRlR3JhbnVsYXJpdHkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUdyYW51bGFyaXR5ID0gJ3llYXInO1xuICAgICAgICAgICAgICAgIGlmIChiZWdpbi5pc1NhbWVZZWFyKGVuZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZS5wdXNoKHRoaXMuZ2V0U2VsZWN0YWJsZVllYXIoYmVnaW4pKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlLnB1c2godGhpcy5nZXRTZWxlY3RhYmxlWWVhcihiZWdpbikpO1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIWJlZ2luLmlzU2FtZVllYXIoZW5kKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4gPSBiZWdpbi5hZGRZZWFycygxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUucHVzaCh0aGlzLmdldFNlbGVjdGFibGVZZWFyKGJlZ2luKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlR3JhbnVsYXJpdHkgPSAnbW9udGgnO1xuICAgICAgICAgICAgICAgIGlmIChiZWdpbi5pc1NhbWVNb250aChlbmQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUucHVzaCh0aGlzLmdldFNlbGVjdGFibGVNb250aChiZWdpbikpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUucHVzaCh0aGlzLmdldFNlbGVjdGFibGVNb250aChiZWdpbikpO1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIWJlZ2luLmlzU2FtZU1vbnRoKGVuZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luID0gYmVnaW4uYWRkTW9udGhzKDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZS5wdXNoKHRoaXMuZ2V0U2VsZWN0YWJsZU1vbnRoKGJlZ2luKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdxdWFydGVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVHcmFudWxhcml0eSA9ICdxdWFydGVyJztcbiAgICAgICAgICAgICAgICBpZiAoYmVnaW4uaXNTYW1lUXVhcnRlcihlbmQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUucHVzaCh0aGlzLmdldFNlbGVjdGFibGVRdWFydGVyKGJlZ2luKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZS5wdXNoKHRoaXMuZ2V0U2VsZWN0YWJsZVF1YXJ0ZXIoYmVnaW4pKTtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFiZWdpbi5pc1NhbWVRdWFydGVyKGVuZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luID0gYmVnaW4uYWRkUXVhcnRlcnMoMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlLnB1c2godGhpcy5nZXRTZWxlY3RhYmxlUXVhcnRlcihiZWdpbikpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZWxlY3RlZFZhbHVlO1xuICAgIH1cblxuICAgIGJ1aWxkU2VsZWN0YWJsZURhdGEoc3RhcnREYXRlOiBUaW55RGF0ZSwgZXhjbHVkZUdyYW51bGFyaXR5PzogVGh5RGF0ZUdyYW51bGFyaXR5KSB7XG4gICAgICAgIGNvbnN0IGJ1aWxkR3JhbnVsYXJpdHkgPSBbJ3llYXInLCAnbW9udGgnLCAncXVhcnRlciddLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IGV4Y2x1ZGVHcmFudWxhcml0eSk7XG4gICAgICAgIGJ1aWxkR3JhbnVsYXJpdHkuZm9yRWFjaChncmFudWxhcml0eSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7XG4gICAgICAgICAgICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGEueWVhciA9IFsuLi5BcnJheSgzKS5rZXlzKCldLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFNlbGVjdGFibGVZZWFyKHN0YXJ0RGF0ZSwgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGEucXVhcnRlciA9IFsuLi5BcnJheSg0KS5rZXlzKCldLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFNlbGVjdGFibGVRdWFydGVyKHN0YXJ0RGF0ZSwgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhLm1vbnRoID0gWy4uLkFycmF5KDQpLmtleXMoKV0ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U2VsZWN0YWJsZU1vbnRoKHN0YXJ0RGF0ZSwgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBnZXRTZWxlY3RhYmxlWWVhcihjdXJyZW50RGF0ZTogVGlueURhdGUsIHByZU9yTmV4dGNvdW50OiBudW1iZXIgPSAwKTogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbCB7XG4gICAgICAgIGN1cnJlbnREYXRlID0gY3VycmVudERhdGUgfHwgdGhpcy5hY3RpdmVEYXRlIHx8IG5ldyBUaW55RGF0ZSgpLnN0YXJ0T2ZZZWFyKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAneWVhcicsXG4gICAgICAgICAgICBjb250ZW50OiBgJHtjdXJyZW50RGF0ZS5hZGRZZWFycyhwcmVPck5leHRjb3VudCkuZ2V0WWVhcigpfWAsXG4gICAgICAgICAgICBzdGFydFZhbHVlOiBjdXJyZW50RGF0ZS5zdGFydE9mWWVhcigpLmFkZFllYXJzKHByZU9yTmV4dGNvdW50KSxcbiAgICAgICAgICAgIGVuZFZhbHVlOiBjdXJyZW50RGF0ZS5lbmRPZlllYXIoKS5hZGRZZWFycyhwcmVPck5leHRjb3VudCksXG4gICAgICAgICAgICBjbGFzc01hcDoge31cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnZXRTZWxlY3RhYmxlUXVhcnRlcihjdXJyZW50RGF0ZTogVGlueURhdGUsIHByZU9yTmV4dGNvdW50OiBudW1iZXIgPSAwKTogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbCB7XG4gICAgICAgIGN1cnJlbnREYXRlID0gY3VycmVudERhdGUgfHwgdGhpcy5hY3RpdmVEYXRlIHx8IG5ldyBUaW55RGF0ZSgpLnN0YXJ0T2ZRdWFydGVyKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAncXVhcnRlcicsXG4gICAgICAgICAgICBjb250ZW50OiBgUSR7Y3VycmVudERhdGUuYWRkUXVhcnRlcnMocHJlT3JOZXh0Y291bnQpLmdldFF1YXJ0ZXIoKX1gLFxuICAgICAgICAgICAgc3RhcnRWYWx1ZTogY3VycmVudERhdGUuc3RhcnRPZlF1YXJ0ZXIoKS5hZGRRdWFydGVycyhwcmVPck5leHRjb3VudCksXG4gICAgICAgICAgICBlbmRWYWx1ZTogY3VycmVudERhdGUuZW5kT2ZRdWFydGVyKCkuYWRkUXVhcnRlcnMocHJlT3JOZXh0Y291bnQpLFxuICAgICAgICAgICAgY2xhc3NNYXA6IHt9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0YWJsZU1vbnRoKGN1cnJlbnREYXRlOiBUaW55RGF0ZSwgcHJlT3JOZXh0Y291bnQ6IG51bWJlciA9IDApOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsIHtcbiAgICAgICAgY3VycmVudERhdGUgPSBjdXJyZW50RGF0ZSB8fCB0aGlzLmFjdGl2ZURhdGUgfHwgbmV3IFRpbnlEYXRlKCkuc3RhcnRPZk1vbnRoKCk7XG4gICAgICAgIC8vIFNlbGVjdGFibGUgbW9udGhzIGZvciBhZHZhbmNlZCByYW5nZSBzZWxlY3RvclxuICAgICAgICBjb25zdCBjZWxsOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsID0ge1xuICAgICAgICAgICAgdHlwZTogJ21vbnRoJyxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHRoaXMuZGF0ZUhlbHBlci5mb3JtYXQoY3VycmVudERhdGUuYWRkTW9udGhzKHByZU9yTmV4dGNvdW50KS5uYXRpdmVEYXRlLCB0aGlzLmxvY2FsZSgpLm1vbnRoRm9ybWF0KSxcbiAgICAgICAgICAgIHN0YXJ0VmFsdWU6IGN1cnJlbnREYXRlLnN0YXJ0T2ZNb250aCgpLmFkZE1vbnRocyhwcmVPck5leHRjb3VudCksXG4gICAgICAgICAgICBlbmRWYWx1ZTogY3VycmVudERhdGUuZW5kT2ZNb250aCgpLmFkZE1vbnRocyhwcmVPck5leHRjb3VudCksXG4gICAgICAgICAgICBjbGFzc01hcDoge31cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGNlbGw7XG4gICAgfVxuXG4gICAgcHJldkNsaWNrKHR5cGU6IFRoeURhdGVHcmFudWxhcml0eSkge1xuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGEueWVhciA9IHRoaXMuc2VsZWN0YWJsZURhdGEueWVhci5tYXAoaXRlbSA9PiB0aGlzLmdldFNlbGVjdGFibGVZZWFyKGl0ZW0uc3RhcnRWYWx1ZSwgLTEpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3F1YXJ0ZXInOlxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGEucXVhcnRlciA9IHRoaXMuc2VsZWN0YWJsZURhdGEucXVhcnRlci5tYXAoaXRlbSA9PiB0aGlzLmdldFNlbGVjdGFibGVRdWFydGVyKGl0ZW0uc3RhcnRWYWx1ZSwgLTIpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhLm1vbnRoID0gdGhpcy5zZWxlY3RhYmxlRGF0YS5tb250aC5tYXAoaXRlbSA9PiB0aGlzLmdldFNlbGVjdGFibGVNb250aChpdGVtLnN0YXJ0VmFsdWUsIC0yKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YVt0eXBlXS5mb3JFYWNoKGl0ZW0gPT4gKGl0ZW0uY2xhc3NNYXAgPSB0aGlzLmdldENsYXNzTWFwKGl0ZW0pKSk7XG4gICAgfVxuXG4gICAgbmV4dENsaWNrKHR5cGU6IFRoeURhdGVHcmFudWxhcml0eSkge1xuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGEueWVhciA9IHRoaXMuc2VsZWN0YWJsZURhdGEueWVhci5tYXAoaXRlbSA9PiB0aGlzLmdldFNlbGVjdGFibGVZZWFyKGl0ZW0uc3RhcnRWYWx1ZSwgMSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YS5xdWFydGVyID0gdGhpcy5zZWxlY3RhYmxlRGF0YS5xdWFydGVyLm1hcChpdGVtID0+IHRoaXMuZ2V0U2VsZWN0YWJsZVF1YXJ0ZXIoaXRlbS5zdGFydFZhbHVlLCAyKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YS5tb250aCA9IHRoaXMuc2VsZWN0YWJsZURhdGEubW9udGgubWFwKGl0ZW0gPT4gdGhpcy5nZXRTZWxlY3RhYmxlTW9udGgoaXRlbS5zdGFydFZhbHVlLCAyKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YVt0eXBlXS5mb3JFYWNoKGl0ZW0gPT4gKGl0ZW0uY2xhc3NNYXAgPSB0aGlzLmdldENsYXNzTWFwKGl0ZW0pKSk7XG4gICAgfVxuXG4gICAgc2VsZWN0RGF0ZSh0eXBlOiBUaHlEYXRlR3JhbnVsYXJpdHksIHZhbHVlOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGFbdHlwZV0uZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGl0ZW0uaXNJblJhbmdlID0gZmFsc2U7XG4gICAgICAgICAgICBpdGVtLmlzT3V0UmFuZ2UgPSBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RFbXB0eSgpKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGVHcmFudWxhcml0eSA9IHR5cGU7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdCh2YWx1ZSk7XG4gICAgICAgICAgICAvLyB0aGlzLnNlbGVjdGVkVmFsdWVDaGFuZ2UkLm5leHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVTZWxlY3QodmFsdWUpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RFbXB0eSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlR3JhbnVsYXJpdHkgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0ZUdyYW51bGFyaXR5ID09PSB2YWx1ZS50eXBlKSB7XG4gICAgICAgICAgICBjb25zdCB7IHJhbmdlU3RhcnQsIHJhbmdlRW5kIH0gPSB0aGlzLmdldEFjdHVhbFN0YXJ0QW5kRW5kKHZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZEJlU2VsZWN0VmFsdWUgPSB0aGlzLmdldFNob3VsZEJlVG9nZ2xlVmFsdWUocmFuZ2VTdGFydCwgcmFuZ2VFbmQpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3QoLi4uc2hvdWxkQmVTZWxlY3RWYWx1ZSk7XG4gICAgICAgICAgICAvLyB0aGlzLnNlbGVjdGVkVmFsdWVDaGFuZ2UkLm5leHQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZUdyYW51bGFyaXR5ID0gdHlwZTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJTZWxlY3QodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdCh2YWx1ZSk7XG4gICAgICAgICAgICAvLyB0aGlzLnNlbGVjdGVkVmFsdWVDaGFuZ2UkLm5leHQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0b2dnbGVTZWxlY3QodmFsdWU6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGwpIHtcbiAgICAgICAgaWYgKHZhbHVlLnN0YXJ0VmFsdWUuaXNTYW1lRGF5KHRoaXMuc2VsZWN0ZWRWYWx1ZVswXS5zdGFydFZhbHVlKSkge1xuICAgICAgICAgICAgLy8gb25seSBkZXNlbGVjdCBmaXJzdCBvbmVcbiAgICAgICAgICAgIHRoaXMuZGVzZWxlY3QodmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gZGVzZWxlY3QgY3VycmVudCBhbmQgYWxsIGFmdGVyIGN1cnJlbnRcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlU3RhcnQgPSB2YWx1ZS5zdGFydFZhbHVlO1xuICAgICAgICAgICAgY29uc3QgcmFuZ2VFbmQgPSB0aGlzLnNlbGVjdGVkVmFsdWVbdGhpcy5zZWxlY3RlZFZhbHVlLmxlbmd0aCAtIDFdLmVuZFZhbHVlO1xuICAgICAgICAgICAgY29uc3Qgc2hvdWxkQmVEZXNlbGVjdFZhbHVlID0gdGhpcy5nZXRTaG91bGRCZVRvZ2dsZVZhbHVlKHJhbmdlU3RhcnQsIHJhbmdlRW5kKTtcbiAgICAgICAgICAgIHRoaXMuZGVzZWxlY3QoLi4uc2hvdWxkQmVEZXNlbGVjdFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW91c2VlbnRlcihldmVudDogRXZlbnQsIHR5cGU6IFRoeURhdGVHcmFudWxhcml0eSwgdmFsdWU6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGwpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RFbXB0eSgpIHx8IHRoaXMuZGF0ZUdyYW51bGFyaXR5ICE9PSB0eXBlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlLmlzSW5SYW5nZSA9IHRydWU7XG4gICAgICAgICAgICBpZiAodmFsdWUuc3RhcnRWYWx1ZS5pc1NhbWVEYXkodGhpcy5zZWxlY3RlZFZhbHVlWzBdLnN0YXJ0VmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUuaXNPdXRSYW5nZSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJhbmdlU3RhcnQgPSB2YWx1ZS5zdGFydFZhbHVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJhbmdlRW5kID0gdGhpcy5zZWxlY3RlZFZhbHVlW3RoaXMuc2VsZWN0ZWRWYWx1ZS5sZW5ndGggLSAxXS5lbmRWYWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhW3R5cGVdLmZvckVhY2goKGl0ZW06IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uc3RhcnRWYWx1ZS5nZXRUaW1lKCkgPj0gcmFuZ2VTdGFydC5nZXRUaW1lKCkgJiYgaXRlbS5zdGFydFZhbHVlLmdldFRpbWUoKSA8IHJhbmdlRW5kLmdldFRpbWUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5pc091dFJhbmdlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaXNPdXRSYW5nZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB7IHJhbmdlU3RhcnQsIHJhbmdlRW5kIH0gPSB0aGlzLmdldEFjdHVhbFN0YXJ0QW5kRW5kKHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGFbdHlwZV0uZm9yRWFjaCgoaXRlbTogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLnN0YXJ0VmFsdWUuZ2V0VGltZSgpID49IHJhbmdlU3RhcnQuZ2V0VGltZSgpICYmIGl0ZW0uc3RhcnRWYWx1ZS5nZXRUaW1lKCkgPCByYW5nZUVuZC5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5pc0luUmFuZ2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uaXNJblJhbmdlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YVt0eXBlXS5mb3JFYWNoKGl0ZW0gPT4gKGl0ZW0uY2xhc3NNYXAgPSB0aGlzLmdldENsYXNzTWFwKGl0ZW0pKSk7XG4gICAgfVxuXG4gICAgb25Nb3VzZWxlYXZlKGV2ZW50OiBFdmVudCwgdHlwZTogVGh5RGF0ZUdyYW51bGFyaXR5LCB2YWx1ZTogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbCkge1xuICAgICAgICBpZiAodmFsdWUuaXNJblJhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhW3R5cGVdLmZvckVhY2goaXRlbSA9PiAoaXRlbS5pc0luUmFuZ2UgPSBmYWxzZSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZS5pc091dFJhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhW3R5cGVdLmZvckVhY2goaXRlbSA9PiAoaXRlbS5pc091dFJhbmdlID0gZmFsc2UpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhW3R5cGVdLmZvckVhY2goaXRlbSA9PiAoaXRlbS5jbGFzc01hcCA9IHRoaXMuZ2V0Q2xhc3NNYXAoaXRlbSkpKTtcbiAgICB9XG5cbiAgICBnZXRBY3R1YWxTdGFydEFuZEVuZCh2YWx1ZTogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZFN0YXJ0ID0gdGhpcy5zZWxlY3RlZFZhbHVlWzBdLnN0YXJ0VmFsdWU7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRW5kID0gdGhpcy5zZWxlY3RlZFZhbHVlW3RoaXMuc2VsZWN0ZWRWYWx1ZS5sZW5ndGggLSAxXS5lbmRWYWx1ZTtcbiAgICAgICAgbGV0IHJhbmdlU3RhcnQ6IFRpbnlEYXRlLCByYW5nZUVuZDogVGlueURhdGU7XG4gICAgICAgIGlmICh2YWx1ZS5zdGFydFZhbHVlLmlzQmVmb3JlRGF5KHNlbGVjdGVkU3RhcnQpKSB7XG4gICAgICAgICAgICByYW5nZVN0YXJ0ID0gdmFsdWUuc3RhcnRWYWx1ZTtcbiAgICAgICAgICAgIHJhbmdlRW5kID0gc2VsZWN0ZWRTdGFydDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUuc3RhcnRWYWx1ZS5pc0FmdGVyRGF5KHNlbGVjdGVkRW5kKSkge1xuICAgICAgICAgICAgcmFuZ2VTdGFydCA9IHNlbGVjdGVkRW5kO1xuICAgICAgICAgICAgcmFuZ2VFbmQgPSB2YWx1ZS5lbmRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyByYW5nZVN0YXJ0LCByYW5nZUVuZCB9O1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVDaGFuZ2UkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lclxuICAqbmdUZW1wbGF0ZU91dGxldD1cImNhcm91c2VsSXRlbTsgY29udGV4dDogeyB0aXRsZTogbG9jYWxlKCkueWVhclRleHQsIHR5cGU6ICd5ZWFyJywgc2VsZWN0YWJsZURhdGE6IHNlbGVjdGFibGVEYXRhLnllYXIgfVwiPjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyXG4gICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgY2Fyb3VzZWxJdGVtO1xuICAgIGNvbnRleHQ6IHsgdGl0bGU6IGxvY2FsZSgpLnF1YXJ0ZXJUZXh0LCB0eXBlOiAncXVhcnRlcicsIHNlbGVjdGFibGVEYXRhOiBzZWxlY3RhYmxlRGF0YS5xdWFydGVyIH1cbiAgXCI+PC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXJcbiAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICBjYXJvdXNlbEl0ZW07XG4gICAgY29udGV4dDogeyB0aXRsZTogbG9jYWxlKCkubW9udGhUZXh0LCB0eXBlOiAnbW9udGgnLCBzZWxlY3RhYmxlRGF0YTogc2VsZWN0YWJsZURhdGEubW9udGggfVxuICBcIj48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNjYXJvdXNlbEl0ZW0gbGV0LXRpdGxlPVwidGl0bGVcIiBsZXQtc2VsZWN0YWJsZURhdGE9XCJzZWxlY3RhYmxlRGF0YVwiIGxldC10eXBlPVwidHlwZVwiPlxuICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaXRlbSBjYXJvdXNlbC1pdGVtLXt7IHR5cGUgfX1cIj5cbiAgICA8cCBjbGFzcz1cImNhcm91c2VsLWl0ZW0tdGl0bGVcIj57eyB0aXRsZSB9fTwvcD5cbiAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaXRlbS1jb250ZW50XCI+XG4gICAgICA8YnV0dG9uIHRoeUJ1dHRvbj1cIm91dGxpbmUtZGVmYXVsdFwiIHRoeVNpemU9XCJzbVwiIGNsYXNzPVwicmlnaHQtc3BhY2VcIiAoY2xpY2spPVwicHJldkNsaWNrKHR5cGUpXCI+XG4gICAgICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cImFuZ2xlLWxlZnRcIj48L3RoeS1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgICBAZm9yIChpdGVtIG9mIHNlbGVjdGFibGVEYXRhOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0YWJsZS1idXR0b24gcmlnaHQtc3BhY2VcIlxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXRlKHR5cGUsIGl0ZW0pXCJcbiAgICAgICAgICAobW91c2VlbnRlcik9XCJvbk1vdXNlZW50ZXIoJGV2ZW50LCB0eXBlLCBpdGVtKVwiXG4gICAgICAgICAgKG1vdXNlbGVhdmUpPVwib25Nb3VzZWxlYXZlKCRldmVudCwgdHlwZSwgaXRlbSlcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3NNYXBcIj5cbiAgICAgICAgICBAaWYgKGl0ZW0gfCBzaG93WWVhclRpcDogdHlwZSkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ5ZWFyLXRpcFwiPnt7IGl0ZW0/LnN0YXJ0VmFsdWU/LmdldFllYXIoKSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChpdGVtLmlzSW5SYW5nZSAmJiBpc1NlbGVjdGVkKGl0ZW0pKSB7XG4gICAgICAgICAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJjbG9zZVwiPjwvdGh5LWljb24+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoaXRlbS5pc0luUmFuZ2UgJiYgIWlzU2VsZWN0ZWQoaXRlbSkpIHtcbiAgICAgICAgICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cInBsdXNcIj48L3RoeS1pY29uPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKCFpdGVtLmlzSW5SYW5nZSkge1xuICAgICAgICAgICAgPHNwYW4+e3sgaXRlbT8uY29udGVudCB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgPGJ1dHRvbiB0aHlCdXR0b249XCJvdXRsaW5lLWRlZmF1bHRcIiB0aHlTaXplPVwic21cIiAoY2xpY2spPVwibmV4dENsaWNrKHR5cGUpXCI+XG4gICAgICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cImFuZ2xlLXJpZ2h0XCI+PC90aHktaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
388
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1jYXJvdXNlbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvZGF0ZS1waWNrZXIvbGliL2RhdGUtY2Fyb3VzZWwvZGF0ZS1jYXJvdXNlbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvZGF0ZS1waWNrZXIvbGliL2RhdGUtY2Fyb3VzZWwvZGF0ZS1jYXJvdXNlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFJUixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQXVCLE1BQU0saUJBQWlCLENBQUM7QUFDcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTlELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUd2RTs7R0FFRztBQWdCSCxNQUFNLE9BQU8sWUFBWTtJQWZ6QjtRQWdCWSxRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFD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QUNELElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUMzQyxVQUFVLEdBQUcsV0FBVyxDQUFDO1lBQ3pCLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQzlCLENBQUM7UUFDRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3pDLENBQUM7K0dBdlhRLFlBQVk7bUdBQVosWUFBWSx1SkFWVjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLEtBQUssRUFBRSxJQUFJO2dCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDO2FBQzlDO1NBQ0osMEJDdENMLHE5REFpREEsNENEVGMsZ0JBQWdCLG9KQUFFLFNBQVMsb0xBQUUsT0FBTyxzTUFBRSxPQUFPLCtFQUFFLGlDQUFpQzs7NEZBRWpGLFlBQVk7a0JBZnhCLFNBQVM7K0JBRUksZUFBZSxtQkFFUix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQzt5QkFDOUM7cUJBQ0osY0FDVyxJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxpQ0FBaUMsQ0FBQzs4QkFPckUsU0FBUztzQkFBOUIsV0FBVzt1QkFBQyxPQUFPO2dCQUVYLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgU2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGh5QnV0dG9uIH0gZnJvbSAnbmd4LXRldGh5cy9idXR0b24nO1xuaW1wb3J0IHsgaW5qZWN0TG9jYWxlLCBUaHlEYXRlUGlja2VyTG9jYWxlIH0gZnJvbSAnbmd4LXRldGh5cy9pMThuJztcbmltcG9ydCB7IFRoeUljb24gfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgVGlueURhdGUgfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0ZUhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9kYXRlLWhlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGwsIFJhbmdlQWR2YW5jZWRWYWx1ZSB9IGZyb20gJy4uLy4uL2lubmVyLXR5cGVzJztcbmltcG9ydCB7IERhdGVQaWNrZXJBZHZhbmNlZFNob3dZZWFyVGlwUGlwZSB9IGZyb20gJy4uLy4uL3BpY2tlci5waXBlcyc7XG5pbXBvcnQgeyBUaHlEYXRlR3JhbnVsYXJpdHkgfSBmcm9tICcuLi8uLi9zdGFuZGFyZC10eXBlcyc7XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2RhdGUtY2Fyb3VzZWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kYXRlLWNhcm91c2VsLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVDYXJvdXNlbClcbiAgICAgICAgfVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdUZW1wbGF0ZU91dGxldCwgVGh5QnV0dG9uLCBUaHlJY29uLCBOZ0NsYXNzLCBEYXRlUGlja2VyQWR2YW5jZWRTaG93WWVhclRpcFBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIERhdGVDYXJvdXNlbCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHByaXZhdGUgZGF0ZUhlbHBlciA9IGluamVjdChEYXRlSGVscGVyU2VydmljZSk7XG4gICAgbG9jYWxlOiBTaWduYWw8VGh5RGF0ZVBpY2tlckxvY2FsZT4gPSBpbmplY3RMb2NhbGUoJ2RhdGVQaWNrZXInKTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzc05hbWUgPSAndGh5LWRhdGUtcGlja2VyLWFkdmFuY2VkLWNhcm91c2VsJztcblxuICAgIEBJbnB1dCgpIGFjdGl2ZURhdGU6IFRpbnlEYXRlO1xuXG4gICAgc2V0IGRlZmF1bHRWYWx1ZSh2YWx1ZTogUmFuZ2VBZHZhbmNlZFZhbHVlKSB7XG4gICAgICAgIHRoaXMuZGF0ZUdyYW51bGFyaXR5ID0gdmFsdWUuZGF0ZUdyYW51bGFyaXR5O1xuICAgICAgICB0aGlzLmJ1aWxkU2VsZWN0YWJsZURhdGEodmFsdWUuYmVnaW4pO1xuXG4gICAgICAgIGlmICh2YWx1ZS5iZWdpbiAmJiB2YWx1ZS5lbmQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZEJlU2VsZWN0VmFsdWUgPSB0aGlzLmdldFNob3VsZEJlVG9nZ2xlVmFsdWUodmFsdWUuYmVnaW4sIHZhbHVlLmVuZCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdCguLi5zaG91bGRCZVNlbGVjdFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJTZWxlY3QodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgc2VsZWN0YWJsZURhdGE6IHsgeWVhcj86IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGxbXTsgcXVhcnRlcj86IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGxbXTsgbW9udGg/OiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsW10gfSA9IHt9O1xuXG4gICAgZGF0ZUdyYW51bGFyaXR5OiBUaHlEYXRlR3JhbnVsYXJpdHk7XG5cbiAgICBzZWxlY3RlZFZhbHVlOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsW10gPSBbXTtcblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgc2VsZWN0ZWRWYWx1ZUNoYW5nZSQgPSBuZXcgU3ViamVjdDxSYW5nZUFkdmFuY2VkVmFsdWU+KCk7XG5cbiAgICBwcml2YXRlIF9vbkNoYW5nZTogKHZhbHVlOiBSYW5nZUFkdmFuY2VkVmFsdWUpID0+IHZvaWQ7XG5cbiAgICBwcml2YXRlIF9vblRvdWNoZWQ6ICh2YWx1ZTogUmFuZ2VBZHZhbmNlZFZhbHVlKSA9PiB2b2lkO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZUNoYW5nZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZFNlbGVjdGFibGVEYXRhKHRoaXMuc2VsZWN0ZWRWYWx1ZVswXT8uc3RhcnRWYWx1ZSwgdGhpcy5kYXRlR3JhbnVsYXJpdHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YS55ZWFyLmZvckVhY2goaXRlbSA9PiAoaXRlbS5jbGFzc01hcCA9IHRoaXMuZ2V0Q2xhc3NNYXAoaXRlbSkpKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGEucXVhcnRlci5mb3JFYWNoKGl0ZW0gPT4gKGl0ZW0uY2xhc3NNYXAgPSB0aGlzLmdldENsYXNzTWFwKGl0ZW0pKSk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhLm1vbnRoLmZvckVhY2goaXRlbSA9PiAoaXRlbS5jbGFzc01hcCA9IHRoaXMuZ2V0Q2xhc3NNYXAoaXRlbSkpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RFbXB0eSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVHcmFudWxhcml0eTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGN0ZWRWYWx1ZSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUdyYW51bGFyaXR5OiB0aGlzLmRhdGVHcmFudWxhcml0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBzZWxjdGVkVmFsdWVbMF0/LnN0YXJ0VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IHNlbGN0ZWRWYWx1ZVtzZWxjdGVkVmFsdWUubGVuZ3RoIC0gMV0/LmVuZFZhbHVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogUmFuZ2VBZHZhbmNlZFZhbHVlKTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5kZWZhdWx0VmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgZ2V0Q2xhc3NNYXAoY2VsbDogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgW2BhY3RpdmVgXTogdGhpcy5pc1NlbGVjdGVkKGNlbGwpLFxuICAgICAgICAgICAgW2BpbmRldGVybWluYXRlYF06IHRoaXMuaXNDZWxsSW5kZXRlcm1pbmF0ZSh0aGlzLnNlbGVjdGVkVmFsdWUsIGNlbGwpLFxuICAgICAgICAgICAgW2B0eXBlLWFjdGl2ZWBdOiB0aGlzLmlzVHlwZUFjdGl2ZSh0aGlzLnNlbGVjdGVkVmFsdWUsIGNlbGwpLFxuICAgICAgICAgICAgWydpbi1ob3Zlci1yYW5nZSddOiBjZWxsLmlzSW5SYW5nZSxcbiAgICAgICAgICAgIFsnb3V0LXJhbmdlJ106IGNlbGwuaXNPdXRSYW5nZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGlzVHlwZUFjdGl2ZShvcmlnaW5hbFZhbHVlOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsW10sIHZhbHVlOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsKSB7XG4gICAgICAgIHJldHVybiBvcmlnaW5hbFZhbHVlPy5sZW5ndGggJiYgb3JpZ2luYWxWYWx1ZVswXS50eXBlID09PSB2YWx1ZS50eXBlO1xuICAgIH1cblxuICAgIGlzQ2VsbEluZGV0ZXJtaW5hdGUob3JpZ2luYWxWYWx1ZTogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbFtdLCB2YWx1ZTogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbCkge1xuICAgICAgICBpZiAob3JpZ2luYWxWYWx1ZVswXT8udHlwZSA9PT0gdmFsdWUudHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG9yaWdpbmFsVmFsdWVbMF0/LnR5cGUgPT09ICd5ZWFyJykge1xuICAgICAgICAgICAgICAgIHJldHVybiAhIW9yaWdpbmFsVmFsdWUuZmluZChpdGVtID0+IGl0ZW0uc3RhcnRWYWx1ZS5pc1NhbWVZZWFyKHZhbHVlLnN0YXJ0VmFsdWUpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnR5cGUgPT09ICd5ZWFyJ1xuICAgICAgICAgICAgICAgICAgICA/ICEhb3JpZ2luYWxWYWx1ZS5maW5kKGl0ZW0gPT4gaXRlbS5zdGFydFZhbHVlLmlzU2FtZVllYXIodmFsdWUuc3RhcnRWYWx1ZSkpXG4gICAgICAgICAgICAgICAgICAgIDogISFvcmlnaW5hbFZhbHVlLmZpbmQoaXRlbSA9PiBpdGVtLnN0YXJ0VmFsdWUuaXNTYW1lUXVhcnRlcih2YWx1ZS5zdGFydFZhbHVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKHZhbHVlOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVmFsdWUuZmluZChpdGVtID0+IGl0ZW0uc3RhcnRWYWx1ZS5pc1NhbWVEYXkodmFsdWUuc3RhcnRWYWx1ZSkpICYmIHRoaXMuZGF0ZUdyYW51bGFyaXR5ID09PSB2YWx1ZS50eXBlO1xuICAgIH1cblxuICAgIGlzU2VsZWN0RW1wdHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoID09IDA7XG4gICAgfVxuXG4gICAgc2VsZWN0U29ydCgpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlLnNvcnQoKGEsIGIpID0+IGEuc3RhcnRWYWx1ZS5nZXRUaW1lKCkgLSBiLnN0YXJ0VmFsdWUuZ2V0VGltZSgpKTtcbiAgICB9XG5cbiAgICBzZWxlY3QoLi4udmFsdWU6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGxbXSkge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzU2VsZWN0ZWQoaXRlbSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUucHVzaCguLi52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNlbGVjdFNvcnQoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlQ2hhbmdlJC5uZXh0KHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgZGVzZWxlY3QoLi4udmFsdWU6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGxbXSkge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy5zZWxlY3RlZFZhbHVlLmZpbHRlcihzZWxlY3RlZCA9PiAhc2VsZWN0ZWQuc3RhcnRWYWx1ZS5pc1NhbWVEYXkoaXRlbS5zdGFydFZhbHVlKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNlbGVjdFNvcnQoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlQ2hhbmdlJC5uZXh0KHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgY2xlYXJTZWxlY3QoaGlkZGVuPzogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBbXTtcbiAgICAgICAgaWYgKCFoaWRkZW4pIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZUNoYW5nZSQubmV4dCh1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0U2hvdWxkQmVUb2dnbGVWYWx1ZShiZWdpbjogVGlueURhdGUsIGVuZDogVGlueURhdGUpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkVmFsdWU6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGxbXSA9IFtdO1xuICAgICAgICBzd2l0Y2ggKHRoaXMuZGF0ZUdyYW51bGFyaXR5KSB7XG4gICAgICAgICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVHcmFudWxhcml0eSA9ICd5ZWFyJztcbiAgICAgICAgICAgICAgICBpZiAoYmVnaW4uaXNTYW1lWWVhcihlbmQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUucHVzaCh0aGlzLmdldFNlbGVjdGFibGVZZWFyKGJlZ2luKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZS5wdXNoKHRoaXMuZ2V0U2VsZWN0YWJsZVllYXIoYmVnaW4pKTtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFiZWdpbi5pc1NhbWVZZWFyKGVuZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luID0gYmVnaW4uYWRkWWVhcnMoMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlLnB1c2godGhpcy5nZXRTZWxlY3RhYmxlWWVhcihiZWdpbikpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUdyYW51bGFyaXR5ID0gJ21vbnRoJztcbiAgICAgICAgICAgICAgICBpZiAoYmVnaW4uaXNTYW1lTW9udGgoZW5kKSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlLnB1c2godGhpcy5nZXRTZWxlY3RhYmxlTW9udGgoYmVnaW4pKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlLnB1c2godGhpcy5nZXRTZWxlY3RhYmxlTW9udGgoYmVnaW4pKTtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFiZWdpbi5pc1NhbWVNb250aChlbmQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZWdpbiA9IGJlZ2luLmFkZE1vbnRocygxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUucHVzaCh0aGlzLmdldFNlbGVjdGFibGVNb250aChiZWdpbikpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlR3JhbnVsYXJpdHkgPSAncXVhcnRlcic7XG4gICAgICAgICAgICAgICAgaWYgKGJlZ2luLmlzU2FtZVF1YXJ0ZXIoZW5kKSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlLnB1c2godGhpcy5nZXRTZWxlY3RhYmxlUXVhcnRlcihiZWdpbikpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUucHVzaCh0aGlzLmdldFNlbGVjdGFibGVRdWFydGVyKGJlZ2luKSk7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlICghYmVnaW4uaXNTYW1lUXVhcnRlcihlbmQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZWdpbiA9IGJlZ2luLmFkZFF1YXJ0ZXJzKDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZS5wdXNoKHRoaXMuZ2V0U2VsZWN0YWJsZVF1YXJ0ZXIoYmVnaW4pKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBidWlsZFNlbGVjdGFibGVEYXRhKHN0YXJ0RGF0ZTogVGlueURhdGUsIGV4Y2x1ZGVHcmFudWxhcml0eT86IFRoeURhdGVHcmFudWxhcml0eSkge1xuICAgICAgICBjb25zdCBidWlsZEdyYW51bGFyaXR5ID0gWyd5ZWFyJywgJ21vbnRoJywgJ3F1YXJ0ZXInXS5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBleGNsdWRlR3JhbnVsYXJpdHkpO1xuICAgICAgICBidWlsZEdyYW51bGFyaXR5LmZvckVhY2goZ3JhbnVsYXJpdHkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChncmFudWxhcml0eSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhLnllYXIgPSBbLi4uQXJyYXkoMykua2V5cygpXS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWxlY3RhYmxlWWVhcihzdGFydERhdGUsIGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3F1YXJ0ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhLnF1YXJ0ZXIgPSBbLi4uQXJyYXkoNCkua2V5cygpXS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWxlY3RhYmxlUXVhcnRlcihzdGFydERhdGUsIGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YS5tb250aCA9IFsuLi5BcnJheSg0KS5rZXlzKCldLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFNlbGVjdGFibGVNb250aChzdGFydERhdGUsIGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0YWJsZVllYXIoY3VycmVudERhdGU6IFRpbnlEYXRlLCBwcmVPck5leHRjb3VudDogbnVtYmVyID0gMCk6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGwge1xuICAgICAgICBjdXJyZW50RGF0ZSA9IGN1cnJlbnREYXRlIHx8IHRoaXMuYWN0aXZlRGF0ZSB8fCBuZXcgVGlueURhdGUoKS5zdGFydE9mWWVhcigpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ3llYXInLFxuICAgICAgICAgICAgY29udGVudDogYCR7Y3VycmVudERhdGUuYWRkWWVhcnMocHJlT3JOZXh0Y291bnQpLmdldFllYXIoKX1gLFxuICAgICAgICAgICAgc3RhcnRWYWx1ZTogY3VycmVudERhdGUuc3RhcnRPZlllYXIoKS5hZGRZZWFycyhwcmVPck5leHRjb3VudCksXG4gICAgICAgICAgICBlbmRWYWx1ZTogY3VycmVudERhdGUuZW5kT2ZZZWFyKCkuYWRkWWVhcnMocHJlT3JOZXh0Y291bnQpLFxuICAgICAgICAgICAgY2xhc3NNYXA6IHt9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0YWJsZVF1YXJ0ZXIoY3VycmVudERhdGU6IFRpbnlEYXRlLCBwcmVPck5leHRjb3VudDogbnVtYmVyID0gMCk6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGwge1xuICAgICAgICBjdXJyZW50RGF0ZSA9IGN1cnJlbnREYXRlIHx8IHRoaXMuYWN0aXZlRGF0ZSB8fCBuZXcgVGlueURhdGUoKS5zdGFydE9mUXVhcnRlcigpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ3F1YXJ0ZXInLFxuICAgICAgICAgICAgY29udGVudDogYCR7Y3VycmVudERhdGUuYWRkUXVhcnRlcnMocHJlT3JOZXh0Y291bnQpLmZvcm1hdCgncXFxJyl9YCxcbiAgICAgICAgICAgIHN0YXJ0VmFsdWU6IGN1cnJlbnREYXRlLnN0YXJ0T2ZRdWFydGVyKCkuYWRkUXVhcnRlcnMocHJlT3JOZXh0Y291bnQpLFxuICAgICAgICAgICAgZW5kVmFsdWU6IGN1cnJlbnREYXRlLmVuZE9mUXVhcnRlcigpLmFkZFF1YXJ0ZXJzKHByZU9yTmV4dGNvdW50KSxcbiAgICAgICAgICAgIGNsYXNzTWFwOiB7fVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldFNlbGVjdGFibGVNb250aChjdXJyZW50RGF0ZTogVGlueURhdGUsIHByZU9yTmV4dGNvdW50OiBudW1iZXIgPSAwKTogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbCB7XG4gICAgICAgIGN1cnJlbnREYXRlID0gY3VycmVudERhdGUgfHwgdGhpcy5hY3RpdmVEYXRlIHx8IG5ldyBUaW55RGF0ZSgpLnN0YXJ0T2ZNb250aCgpO1xuICAgICAgICAvLyBTZWxlY3RhYmxlIG1vbnRocyBmb3IgYWR2YW5jZWQgcmFuZ2Ugc2VsZWN0b3JcbiAgICAgICAgY29uc3QgY2VsbDogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbCA9IHtcbiAgICAgICAgICAgIHR5cGU6ICdtb250aCcsXG4gICAgICAgICAgICBjb250ZW50OiB0aGlzLmRhdGVIZWxwZXIuZm9ybWF0KGN1cnJlbnREYXRlLmFkZE1vbnRocyhwcmVPck5leHRjb3VudCkubmF0aXZlRGF0ZSwgdGhpcy5sb2NhbGUoKS5tb250aEZvcm1hdCksXG4gICAgICAgICAgICBzdGFydFZhbHVlOiBjdXJyZW50RGF0ZS5zdGFydE9mTW9udGgoKS5hZGRNb250aHMocHJlT3JOZXh0Y291bnQpLFxuICAgICAgICAgICAgZW5kVmFsdWU6IGN1cnJlbnREYXRlLmVuZE9mTW9udGgoKS5hZGRNb250aHMocHJlT3JOZXh0Y291bnQpLFxuICAgICAgICAgICAgY2xhc3NNYXA6IHt9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBjZWxsO1xuICAgIH1cblxuICAgIHByZXZDbGljayh0eXBlOiBUaHlEYXRlR3JhbnVsYXJpdHkpIHtcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhLnllYXIgPSB0aGlzLnNlbGVjdGFibGVEYXRhLnllYXIubWFwKGl0ZW0gPT4gdGhpcy5nZXRTZWxlY3RhYmxlWWVhcihpdGVtLnN0YXJ0VmFsdWUsIC0xKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdxdWFydGVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhLnF1YXJ0ZXIgPSB0aGlzLnNlbGVjdGFibGVEYXRhLnF1YXJ0ZXIubWFwKGl0ZW0gPT4gdGhpcy5nZXRTZWxlY3RhYmxlUXVhcnRlcihpdGVtLnN0YXJ0VmFsdWUsIC0yKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YS5tb250aCA9IHRoaXMuc2VsZWN0YWJsZURhdGEubW9udGgubWFwKGl0ZW0gPT4gdGhpcy5nZXRTZWxlY3RhYmxlTW9udGgoaXRlbS5zdGFydFZhbHVlLCAtMikpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGFbdHlwZV0uZm9yRWFjaChpdGVtID0+IChpdGVtLmNsYXNzTWFwID0gdGhpcy5nZXRDbGFzc01hcChpdGVtKSkpO1xuICAgIH1cblxuICAgIG5leHRDbGljayh0eXBlOiBUaHlEYXRlR3JhbnVsYXJpdHkpIHtcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhLnllYXIgPSB0aGlzLnNlbGVjdGFibGVEYXRhLnllYXIubWFwKGl0ZW0gPT4gdGhpcy5nZXRTZWxlY3RhYmxlWWVhcihpdGVtLnN0YXJ0VmFsdWUsIDEpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3F1YXJ0ZXInOlxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGEucXVhcnRlciA9IHRoaXMuc2VsZWN0YWJsZURhdGEucXVhcnRlci5tYXAoaXRlbSA9PiB0aGlzLmdldFNlbGVjdGFibGVRdWFydGVyKGl0ZW0uc3RhcnRWYWx1ZSwgMikpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGEubW9udGggPSB0aGlzLnNlbGVjdGFibGVEYXRhLm1vbnRoLm1hcChpdGVtID0+IHRoaXMuZ2V0U2VsZWN0YWJsZU1vbnRoKGl0ZW0uc3RhcnRWYWx1ZSwgMikpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGFbdHlwZV0uZm9yRWFjaChpdGVtID0+IChpdGVtLmNsYXNzTWFwID0gdGhpcy5nZXRDbGFzc01hcChpdGVtKSkpO1xuICAgIH1cblxuICAgIHNlbGVjdERhdGUodHlwZTogVGh5RGF0ZUdyYW51bGFyaXR5LCB2YWx1ZTogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbCkge1xuICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhW3R5cGVdLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpdGVtLmlzSW5SYW5nZSA9IGZhbHNlO1xuICAgICAgICAgICAgaXRlbS5pc091dFJhbmdlID0gZmFsc2U7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmlzU2VsZWN0RW1wdHkoKSkge1xuICAgICAgICAgICAgdGhpcy5kYXRlR3JhbnVsYXJpdHkgPSB0eXBlO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3QodmFsdWUpO1xuICAgICAgICAgICAgLy8gdGhpcy5zZWxlY3RlZFZhbHVlQ2hhbmdlJC5uZXh0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlU2VsZWN0KHZhbHVlKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0RW1wdHkoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUdyYW51bGFyaXR5ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRhdGVHcmFudWxhcml0eSA9PT0gdmFsdWUudHlwZSkge1xuICAgICAgICAgICAgY29uc3QgeyByYW5nZVN0YXJ0LCByYW5nZUVuZCB9ID0gdGhpcy5nZXRBY3R1YWxTdGFydEFuZEVuZCh2YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBzaG91bGRCZVNlbGVjdFZhbHVlID0gdGhpcy5nZXRTaG91bGRCZVRvZ2dsZVZhbHVlKHJhbmdlU3RhcnQsIHJhbmdlRW5kKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0KC4uLnNob3VsZEJlU2VsZWN0VmFsdWUpO1xuICAgICAgICAgICAgLy8gdGhpcy5zZWxlY3RlZFZhbHVlQ2hhbmdlJC5uZXh0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRhdGVHcmFudWxhcml0eSA9IHR5cGU7XG4gICAgICAgICAgICB0aGlzLmNsZWFyU2VsZWN0KHRydWUpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3QodmFsdWUpO1xuICAgICAgICAgICAgLy8gdGhpcy5zZWxlY3RlZFZhbHVlQ2hhbmdlJC5uZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdG9nZ2xlU2VsZWN0KHZhbHVlOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsKSB7XG4gICAgICAgIGlmICh2YWx1ZS5zdGFydFZhbHVlLmlzU2FtZURheSh0aGlzLnNlbGVjdGVkVmFsdWVbMF0uc3RhcnRWYWx1ZSkpIHtcbiAgICAgICAgICAgIC8vIG9ubHkgZGVzZWxlY3QgZmlyc3Qgb25lXG4gICAgICAgICAgICB0aGlzLmRlc2VsZWN0KHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGRlc2VsZWN0IGN1cnJlbnQgYW5kIGFsbCBhZnRlciBjdXJyZW50XG4gICAgICAgICAgICBjb25zdCByYW5nZVN0YXJ0ID0gdmFsdWUuc3RhcnRWYWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlRW5kID0gdGhpcy5zZWxlY3RlZFZhbHVlW3RoaXMuc2VsZWN0ZWRWYWx1ZS5sZW5ndGggLSAxXS5lbmRWYWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZEJlRGVzZWxlY3RWYWx1ZSA9IHRoaXMuZ2V0U2hvdWxkQmVUb2dnbGVWYWx1ZShyYW5nZVN0YXJ0LCByYW5nZUVuZCk7XG4gICAgICAgICAgICB0aGlzLmRlc2VsZWN0KC4uLnNob3VsZEJlRGVzZWxlY3RWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vdXNlZW50ZXIoZXZlbnQ6IEV2ZW50LCB0eXBlOiBUaHlEYXRlR3JhbnVsYXJpdHksIHZhbHVlOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsKSB7XG4gICAgICAgIGlmICh0aGlzLmlzU2VsZWN0RW1wdHkoKSB8fCB0aGlzLmRhdGVHcmFudWxhcml0eSAhPT0gdHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQodmFsdWUpKSB7XG4gICAgICAgICAgICB2YWx1ZS5pc0luUmFuZ2UgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHZhbHVlLnN0YXJ0VmFsdWUuaXNTYW1lRGF5KHRoaXMuc2VsZWN0ZWRWYWx1ZVswXS5zdGFydFZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlLmlzT3V0UmFuZ2UgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCByYW5nZVN0YXJ0ID0gdmFsdWUuc3RhcnRWYWx1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCByYW5nZUVuZCA9IHRoaXMuc2VsZWN0ZWRWYWx1ZVt0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoIC0gMV0uZW5kVmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YVt0eXBlXS5mb3JFYWNoKChpdGVtOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLnN0YXJ0VmFsdWUuZ2V0VGltZSgpID49IHJhbmdlU3RhcnQuZ2V0VGltZSgpICYmIGl0ZW0uc3RhcnRWYWx1ZS5nZXRUaW1lKCkgPCByYW5nZUVuZC5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaXNPdXRSYW5nZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmlzT3V0UmFuZ2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgeyByYW5nZVN0YXJ0LCByYW5nZUVuZCB9ID0gdGhpcy5nZXRBY3R1YWxTdGFydEFuZEVuZCh2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhW3R5cGVdLmZvckVhY2goKGl0ZW06IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5zdGFydFZhbHVlLmdldFRpbWUoKSA+PSByYW5nZVN0YXJ0LmdldFRpbWUoKSAmJiBpdGVtLnN0YXJ0VmFsdWUuZ2V0VGltZSgpIDwgcmFuZ2VFbmQuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uaXNJblJhbmdlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmlzSW5SYW5nZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGFbdHlwZV0uZm9yRWFjaChpdGVtID0+IChpdGVtLmNsYXNzTWFwID0gdGhpcy5nZXRDbGFzc01hcChpdGVtKSkpO1xuICAgIH1cblxuICAgIG9uTW91c2VsZWF2ZShldmVudDogRXZlbnQsIHR5cGU6IFRoeURhdGVHcmFudWxhcml0eSwgdmFsdWU6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGwpIHtcbiAgICAgICAgaWYgKHZhbHVlLmlzSW5SYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YVt0eXBlXS5mb3JFYWNoKGl0ZW0gPT4gKGl0ZW0uaXNJblJhbmdlID0gZmFsc2UpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUuaXNPdXRSYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YVt0eXBlXS5mb3JFYWNoKGl0ZW0gPT4gKGl0ZW0uaXNPdXRSYW5nZSA9IGZhbHNlKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YVt0eXBlXS5mb3JFYWNoKGl0ZW0gPT4gKGl0ZW0uY2xhc3NNYXAgPSB0aGlzLmdldENsYXNzTWFwKGl0ZW0pKSk7XG4gICAgfVxuXG4gICAgZ2V0QWN0dWFsU3RhcnRBbmRFbmQodmFsdWU6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGwpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRTdGFydCA9IHRoaXMuc2VsZWN0ZWRWYWx1ZVswXS5zdGFydFZhbHVlO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVuZCA9IHRoaXMuc2VsZWN0ZWRWYWx1ZVt0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoIC0gMV0uZW5kVmFsdWU7XG4gICAgICAgIGxldCByYW5nZVN0YXJ0OiBUaW55RGF0ZSwgcmFuZ2VFbmQ6IFRpbnlEYXRlO1xuICAgICAgICBpZiAodmFsdWUuc3RhcnRWYWx1ZS5pc0JlZm9yZURheShzZWxlY3RlZFN0YXJ0KSkge1xuICAgICAgICAgICAgcmFuZ2VTdGFydCA9IHZhbHVlLnN0YXJ0VmFsdWU7XG4gICAgICAgICAgICByYW5nZUVuZCA9IHNlbGVjdGVkU3RhcnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlLnN0YXJ0VmFsdWUuaXNBZnRlckRheShzZWxlY3RlZEVuZCkpIHtcbiAgICAgICAgICAgIHJhbmdlU3RhcnQgPSBzZWxlY3RlZEVuZDtcbiAgICAgICAgICAgIHJhbmdlRW5kID0gdmFsdWUuZW5kVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgcmFuZ2VTdGFydCwgcmFuZ2VFbmQgfTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlQ2hhbmdlJC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXJcbiAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYXJvdXNlbEl0ZW07IGNvbnRleHQ6IHsgdGl0bGU6IGxvY2FsZSgpLnllYXJUZXh0LCB0eXBlOiAneWVhcicsIHNlbGVjdGFibGVEYXRhOiBzZWxlY3RhYmxlRGF0YS55ZWFyIH1cIj48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lclxuICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgIGNhcm91c2VsSXRlbTtcbiAgICBjb250ZXh0OiB7IHRpdGxlOiBsb2NhbGUoKS5xdWFydGVyVGV4dCwgdHlwZTogJ3F1YXJ0ZXInLCBzZWxlY3RhYmxlRGF0YTogc2VsZWN0YWJsZURhdGEucXVhcnRlciB9XG4gIFwiPjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyXG4gICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgY2Fyb3VzZWxJdGVtO1xuICAgIGNvbnRleHQ6IHsgdGl0bGU6IGxvY2FsZSgpLm1vbnRoVGV4dCwgdHlwZTogJ21vbnRoJywgc2VsZWN0YWJsZURhdGE6IHNlbGVjdGFibGVEYXRhLm1vbnRoIH1cbiAgXCI+PC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjY2Fyb3VzZWxJdGVtIGxldC10aXRsZT1cInRpdGxlXCIgbGV0LXNlbGVjdGFibGVEYXRhPVwic2VsZWN0YWJsZURhdGFcIiBsZXQtdHlwZT1cInR5cGVcIj5cbiAgPGRpdiBjbGFzcz1cImNhcm91c2VsLWl0ZW0gY2Fyb3VzZWwtaXRlbS17eyB0eXBlIH19XCI+XG4gICAgPHAgY2xhc3M9XCJjYXJvdXNlbC1pdGVtLXRpdGxlXCI+e3sgdGl0bGUgfX08L3A+XG4gICAgPGRpdiBjbGFzcz1cImNhcm91c2VsLWl0ZW0tY29udGVudFwiPlxuICAgICAgPGJ1dHRvbiB0aHlCdXR0b249XCJvdXRsaW5lLWRlZmF1bHRcIiB0aHlTaXplPVwic21cIiBjbGFzcz1cInJpZ2h0LXNwYWNlXCIgKGNsaWNrKT1cInByZXZDbGljayh0eXBlKVwiPlxuICAgICAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJhbmdsZS1sZWZ0XCI+PC90aHktaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgQGZvciAoaXRlbSBvZiBzZWxlY3RhYmxlRGF0YTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGFibGUtYnV0dG9uIHJpZ2h0LXNwYWNlXCJcbiAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF0ZSh0eXBlLCBpdGVtKVwiXG4gICAgICAgICAgKG1vdXNlZW50ZXIpPVwib25Nb3VzZWVudGVyKCRldmVudCwgdHlwZSwgaXRlbSlcIlxuICAgICAgICAgIChtb3VzZWxlYXZlKT1cIm9uTW91c2VsZWF2ZSgkZXZlbnQsIHR5cGUsIGl0ZW0pXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJpdGVtLmNsYXNzTWFwXCI+XG4gICAgICAgICAgQGlmIChpdGVtIHwgc2hvd1llYXJUaXA6IHR5cGUpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwieWVhci10aXBcIj57eyBpdGVtPy5zdGFydFZhbHVlPy5nZXRZZWFyKCkgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoaXRlbS5pc0luUmFuZ2UgJiYgaXNTZWxlY3RlZChpdGVtKSkge1xuICAgICAgICAgICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiY2xvc2VcIj48L3RoeS1pY29uPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGl0ZW0uaXNJblJhbmdlICYmICFpc1NlbGVjdGVkKGl0ZW0pKSB7XG4gICAgICAgICAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJwbHVzXCI+PC90aHktaWNvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmICghaXRlbS5pc0luUmFuZ2UpIHtcbiAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0/LmNvbnRlbnQgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIDxidXR0b24gdGh5QnV0dG9uPVwib3V0bGluZS1kZWZhdWx0XCIgdGh5U2l6ZT1cInNtXCIgKGNsaWNrKT1cIm5leHRDbGljayh0eXBlKVwiPlxuICAgICAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJhbmdsZS1yaWdodFwiPjwvdGh5LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -4,6 +4,7 @@ import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';
|
|
|
4
4
|
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, inject, Input, Output, ViewChild } from '@angular/core';
|
|
5
5
|
import { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';
|
|
6
6
|
import { scaleMotion, scaleXMotion, scaleYMotion } from 'ngx-tethys/core';
|
|
7
|
+
import { ThyI18nService } from 'ngx-tethys/i18n';
|
|
7
8
|
import { ThyIcon } from 'ngx-tethys/icon';
|
|
8
9
|
import { ThyInputDirective } from 'ngx-tethys/input';
|
|
9
10
|
import { ThyEnterDirective } from 'ngx-tethys/shared';
|
|
@@ -17,6 +18,7 @@ export class ThyPicker {
|
|
|
17
18
|
constructor() {
|
|
18
19
|
this.changeDetector = inject(ChangeDetectorRef);
|
|
19
20
|
this.dateHelper = inject(DateHelperService);
|
|
21
|
+
this.i18n = inject(ThyI18nService);
|
|
20
22
|
this.isRange = false;
|
|
21
23
|
this.open = undefined;
|
|
22
24
|
this.placement = 'bottomLeft';
|
|
@@ -173,7 +175,7 @@ export class ThyPicker {
|
|
|
173
175
|
let value;
|
|
174
176
|
if (this.isRange) {
|
|
175
177
|
if (this.flexible && this.innerflexibleDateGranularity !== 'day') {
|
|
176
|
-
return getFlexibleAdvancedReadableValue(tinyDate, this.innerflexibleDateGranularity, this.separator);
|
|
178
|
+
return getFlexibleAdvancedReadableValue(tinyDate, this.innerflexibleDateGranularity, this.separator, this.i18n.getLocale());
|
|
177
179
|
}
|
|
178
180
|
else {
|
|
179
181
|
const start = tinyDate[0] ? this.formatDate(tinyDate[0]) : '';
|
|
@@ -272,4 +274,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
272
274
|
}], value: [{
|
|
273
275
|
type: Input
|
|
274
276
|
}] } });
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRlLXBpY2tlci9waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2RhdGUtcGlja2VyL3BpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQWdCLE1BQU0saUJBQWlCLENBQUM7QUFDckUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBa0MsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RyxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUdqRTs7R0FFRztBQVVILE1BQU0sT0FBTyxTQUFTO0lBVHRCO1FBVVksbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlC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QUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFHNUMsTUFBTTtzQkFEVCxLQUFLO2dCQVdGLHVCQUF1QjtzQkFEMUIsS0FBSztnQkFXRixLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRGbGV4aWJsZVBvc2l0aW9ucywgVGh5UGxhY2VtZW50IH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgVGlueURhdGUgfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuXG5pbXBvcnQgeyBDZGtDb25uZWN0ZWRPdmVybGF5LCBDZGtPdmVybGF5T3JpZ2luLCBDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25DaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgc2NhbGVNb3Rpb24sIHNjYWxlWE1vdGlvbiwgc2NhbGVZTW90aW9uIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IFRoeUljb24gfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgVGh5SW5wdXREaXJlY3RpdmUgfSBmcm9tICduZ3gtdGV0aHlzL2lucHV0JztcbmltcG9ydCB7IFRoeUVudGVyRGlyZWN0aXZlIH0gZnJvbSAnbmd4LXRldGh5cy9zaGFyZWQnO1xuaW1wb3J0IHsgRGF0ZUhlbHBlclNlcnZpY2UgfSBmcm9tICcuL2RhdGUtaGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcGF0aWJsZVZhbHVlLCBSYW5nZVBhcnRUeXBlIH0gZnJvbSAnLi9pbm5lci10eXBlcyc7XG5pbXBvcnQgeyBnZXRGbGV4aWJsZUFkdmFuY2VkUmVhZGFibGVWYWx1ZSB9IGZyb20gJy4vcGlja2VyLnV0aWwnO1xuaW1wb3J0IHsgVGh5RGF0ZUdyYW51bGFyaXR5IH0gZnJvbSAnLi9zdGFuZGFyZC10eXBlcyc7XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktcGlja2VyJyxcbiAgICBleHBvcnRBczogJ3RoeVBpY2tlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ2RrT3ZlcmxheU9yaWdpbiwgVGh5SW5wdXREaXJlY3RpdmUsIFRoeUVudGVyRGlyZWN0aXZlLCBBc3luY1BpcGUsIE5nVGVtcGxhdGVPdXRsZXQsIFRoeUljb24sIE5nQ2xhc3MsIENka0Nvbm5lY3RlZE92ZXJsYXldLFxuICAgIGFuaW1hdGlvbnM6IFtzY2FsZVhNb3Rpb24sIHNjYWxlWU1vdGlvbiwgc2NhbGVNb3Rpb25dXG59KVxuZXhwb3J0IGNsYXNzIFRoeVBpY2tlciBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcHJpdmF0ZSBkYXRlSGVscGVyID0gaW5qZWN0KERhdGVIZWxwZXJTZXJ2aWNlKTtcblxuICAgIEBJbnB1dCgpIGlzUmFuZ2UgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBvcGVuOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBhbGxvd0NsZWFyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGF1dG9Gb2N1czogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBjbGFzc05hbWU6IHN0cmluZztcbiAgICBASW5wdXQoKSBzaXplOiAnc20nIHwgJ3hzJyB8ICdsZycgfCAnbWQnIHwgJ2RlZmF1bHQnO1xuICAgIEBJbnB1dCgpIHN1ZmZpeEljb246IHN0cmluZztcbiAgICBASW5wdXQoKSBwbGFjZW1lbnQ6IFRoeVBsYWNlbWVudCA9ICdib3R0b21MZWZ0JztcbiAgICBASW5wdXQoKSBmbGV4aWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIG1vZGU6IHN0cmluZztcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSBoYXNCYWNrZHJvcDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBzZXBhcmF0b3I6IHN0cmluZztcbiAgICBAT3V0cHV0KCkgYmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUaW55RGF0ZSB8IFRpbnlEYXRlW10gfCBudWxsPigpO1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBvcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpOyAvLyBFbWl0dGVkIHdoZW4gb3ZlcmxheSdzIG9wZW4gc3RhdGUgY2hhbmdlXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGlucHV0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdvcmlnaW4nLCB7IHN0YXRpYzogdHJ1ZSB9KSBvcmlnaW46IENka092ZXJsYXlPcmlnaW47XG4gICAgQFZpZXdDaGlsZChDZGtDb25uZWN0ZWRPdmVybGF5LCB7IHN0YXRpYzogdHJ1ZSB9KSBjZGtDb25uZWN0ZWRPdmVybGF5OiBDZGtDb25uZWN0ZWRPdmVybGF5O1xuICAgIEBWaWV3Q2hpbGQoJ3BpY2tlcklucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgcGlja2VySW5wdXQ6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnb3ZlcmxheUNvbnRhaW5lcicsIHsgc3RhdGljOiBmYWxzZSB9KSBvdmVybGF5Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGZvcm1hdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5uZXJGb3JtYXQ7XG4gICAgfVxuXG4gICAgc2V0IGZvcm1hdCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuaW5uZXJGb3JtYXQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy51cGRhdGVSZWFkYWJsZURhdGUodGhpcy5pbm5lclZhbHVlKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBmbGV4aWJsZURhdGVHcmFudWxhcml0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5uZXJmbGV4aWJsZURhdGVHcmFudWxhcml0eTtcbiAgICB9XG5cbiAgICBzZXQgZmxleGlibGVEYXRlR3JhbnVsYXJpdHkoZ3JhbnVsYXJpdHk6IFRoeURhdGVHcmFudWxhcml0eSkge1xuICAgICAgICB0aGlzLmlubmVyZmxleGlibGVEYXRlR3JhbnVsYXJpdHkgPSBncmFudWxhcml0eTtcbiAgICAgICAgdGhpcy51cGRhdGVSZWFkYWJsZURhdGUodGhpcy5pbm5lclZhbHVlKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCB2YWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5uZXJWYWx1ZTtcbiAgICB9XG5cbiAgICBzZXQgdmFsdWUodmFsdWU6IFRpbnlEYXRlIHwgVGlueURhdGVbXSB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5pbm5lclZhbHVlID0gdmFsdWU7XG4gICAgICAgIGlmICghdGhpcy5lbnRlcmluZykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVSZWFkYWJsZURhdGUodGhpcy5pbm5lclZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5uZXJmbGV4aWJsZURhdGVHcmFudWxhcml0eTogVGh5RGF0ZUdyYW51bGFyaXR5O1xuXG4gICAgcHJpdmF0ZSBpbm5lckZvcm1hdDogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBpbm5lclZhbHVlOiBUaW55RGF0ZSB8IFRpbnlEYXRlW10gfCBudWxsO1xuXG4gICAgZW50ZXJpbmcgPSBmYWxzZTtcblxuICAgIHByZWZpeENscyA9ICd0aHktY2FsZW5kYXInO1xuXG4gICAgaXNTaG93RGF0ZVBvcHVwID0gZmFsc2U7XG5cbiAgICBvdmVybGF5T3BlbiA9IGZhbHNlOyAvLyBBdmFpbGFibGUgd2hlbiBcIm9wZW5cIj11bmRlZmluZWRcblxuICAgIG92ZXJsYXlQb3NpdGlvbnMgPSBnZXRGbGV4aWJsZVBvc2l0aW9ucyh0aGlzLnBsYWNlbWVudCwgNCk7XG5cbiAgICBnZXQgcmVhbE9wZW5TdGF0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgLy8gVGhlIHZhbHVlIHRoYXQgcmVhbGx5IGRlY2lkZSB0aGUgb3BlbiBzdGF0ZSBvZiBvdmVybGF5XG4gICAgICAgIHJldHVybiB0aGlzLmlzT3BlbkhhbmRsZWRCeVVzZXIoKSA/ICEhdGhpcy5vcGVuIDogdGhpcy5vdmVybGF5T3BlbjtcbiAgICB9XG5cbiAgICBnZXQgcmVhZG9ubHlTdGF0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNSYW5nZSB8fCB0aGlzLnJlYWRvbmx5IHx8IHRoaXMubW9kZSAhPT0gJ2RhdGUnO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgLy8gb3BlbiBieSB1c2VyXG4gICAgICAgIGlmIChjaGFuZ2VzLm9wZW4gJiYgY2hhbmdlcy5vcGVuLmN1cnJlbnRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoY2hhbmdlcy5vcGVuLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0RhdGVQb3B1cCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlRGF0ZVBvcHVwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3ZlcmxheVBvc2l0aW9ucyA9IGdldEZsZXhpYmxlUG9zaXRpb25zKHRoaXMucGxhY2VtZW50LCA0KTtcbiAgICAgICAgaWYgKHRoaXMuYXV0b0ZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5waWNrZXJJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgb25CbHVyKGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIHRoaXMuYmx1ci5lbWl0KGV2ZW50KTtcbiAgICAgICAgaWYgKHRoaXMuZW50ZXJpbmcpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnBpY2tlcklucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW50ZXJpbmcgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbklucHV0KGV2ZW50OiBJbnB1dEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZW50ZXJpbmcgPSB0cnVlO1xuICAgICAgICBjb25zdCBpbnB1dFZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudClbJ3ZhbHVlJ107XG4gICAgICAgIHRoaXMuaW5wdXRDaGFuZ2UuZW1pdChpbnB1dFZhbHVlKTtcbiAgICB9XG5cbiAgICBvbkVudGVyKCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seVN0YXRlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMucGlja2VySW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSB8fCB0aGlzLmdldFJlYWRhYmxlVmFsdWUobmV3IFRpbnlEYXRlKCkpKTtcbiAgICAgICAgdGhpcy5lbnRlcmluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHNob3dPdmVybGF5KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMucmVhbE9wZW5TdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5T3BlbiA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnNob3dEYXRlUG9wdXAoKTtcblxuICAgICAgICAgICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQodGhpcy5vdmVybGF5T3Blbik7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jZGtDb25uZWN0ZWRPdmVybGF5ICYmIHRoaXMuY2RrQ29ubmVjdGVkT3ZlcmxheS5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RrQ29ubmVjdGVkT3ZlcmxheS5vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoaWRlT3ZlcmxheSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhbE9wZW5TdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5T3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jbG9zZURhdGVQb3B1cCgpO1xuXG4gICAgICAgICAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdCh0aGlzLm92ZXJsYXlPcGVuKTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNob3dEYXRlUG9wdXAoKSB7XG4gICAgICAgIHRoaXMuaXNTaG93RGF0ZVBvcHVwID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBjbG9zZURhdGVQb3B1cCgpIHtcbiAgICAgICAgLy8gRGVsYXkgMjAwbXMgYmVmb3JlIGRlc3Ryb3lpbmcgdGhlIGRhdGUtcG9wdXAsIG90aGVyd2lzZSB5b3Ugd2lsbCBub3Qgc2VlIHRoZSBjbG9zaW5nIGFuaW1hdGlvbi5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzU2hvd0RhdGVQb3B1cCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSwgMjAwKTtcbiAgICB9XG5cbiAgICBvbkNsaWNrSW5wdXRCb3goKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5yZWFkb25seSAmJiAhdGhpcy5pc09wZW5IYW5kbGVkQnlVc2VyKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd092ZXJsYXkoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ2xpY2tCYWNrZHJvcCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oaWRlT3ZlcmxheSgpO1xuICAgIH1cblxuICAgIG9uT3ZlcmxheURldGFjaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oaWRlT3ZlcmxheSgpO1xuICAgIH1cblxuICAgIG9uUG9zaXRpb25DaGFuZ2UocG9zaXRpb246IENvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbkNoYW5nZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBvbkNsaWNrQ2xlYXIoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5pbm5lclZhbHVlID0gdGhpcy5pc1JhbmdlID8gW10gOiBudWxsO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5pbm5lclZhbHVlKTtcbiAgICB9XG5cbiAgICBnZXRQYXJ0VHlwZUluZGV4KHBhcnRUeXBlOiBSYW5nZVBhcnRUeXBlKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHsgbGVmdDogMCwgcmlnaHQ6IDEgfVtwYXJ0VHlwZV07XG4gICAgfVxuXG4gICAgaXNFbXB0eVZhbHVlKHZhbHVlOiBDb21wYXRpYmxlVmFsdWUgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1JhbmdlKSB7XG4gICAgICAgICAgICByZXR1cm4gIXZhbHVlIHx8ICFBcnJheS5pc0FycmF5KHZhbHVlKSB8fCB2YWx1ZS5ldmVyeSh2YWwgPT4gIXZhbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gIXZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gV2hldGhlciBvcGVuIHN0YXRlIGlzIHBlcm1hbmVudGx5IGNvbnRyb2xsZWQgYnkgdXNlciBoaW1zZWxmXG4gICAgaXNPcGVuSGFuZGxlZEJ5VXNlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3BlbiAhPT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldFJlYWRhYmxlVmFsdWUodGlueURhdGU6IFRpbnlEYXRlIHwgVGlueURhdGVbXSk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBsZXQgdmFsdWU6IFRpbnlEYXRlO1xuICAgICAgICBpZiAodGhpcy5pc1JhbmdlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5mbGV4aWJsZSAmJiB0aGlzLmlubmVyZmxleGlibGVEYXRlR3JhbnVsYXJpdHkgIT09ICdkYXknKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldEZsZXhpYmxlQWR2YW5jZWRSZWFkYWJsZVZhbHVlKHRpbnlEYXRlIGFzIFRpbnlEYXRlW10sIHRoaXMuaW5uZXJmbGV4aWJsZURhdGVHcmFudWxhcml0eSwgdGhpcy5zZXBhcmF0b3IpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydCA9IHRpbnlEYXRlWzBdID8gdGhpcy5mb3JtYXREYXRlKHRpbnlEYXRlWzBdKSA6ICcnO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZCA9IHRpbnlEYXRlWzFdID8gdGhpcy5mb3JtYXREYXRlKHRpbnlEYXRlWzFdKSA6ICcnO1xuICAgICAgICAgICAgICAgIHJldHVybiBzdGFydCAmJiBlbmQgPyBgJHtzdGFydH0ke3RoaXMuc2VwYXJhdG9yfSR7ZW5kfWAgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWUgPSB0aW55RGF0ZSBhcyBUaW55RGF0ZTtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSA/IHRoaXMuZm9ybWF0RGF0ZSh2YWx1ZSkgOiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9ybWF0RGF0ZSh2YWx1ZTogVGlueURhdGUpIHtcbiAgICAgICAgLy8gZGF0ZUhlbHBlci5mb3JtYXQoKSDkvb/nlKjnmoTmmK8gYW5ndWxhciDnmoQgZm9ybWF077yM5LiN5pSv5oyB5a2j5bqm77yM5L+u5pS555qE6K+d77yM5pS55Yqo5q+U6L6D5aSn44CCXG4gICAgICAgIC8vIOatpOWkhOmAmui/h+WvuSBpbm5lckZvcm1hdCDlgZrkuIvliKTmlq3vvIzlpoLmnpzmmK/lraPluqbnmoQgZm9ybWF077yM5L2/55SoIGRhdGUtZm5zIOeahCBmb3JtYXQoKVxuICAgICAgICBpZiAodGhpcy5pbm5lckZvcm1hdCAmJiAodGhpcy5pbm5lckZvcm1hdC5pbmNsdWRlcygncScpIHx8IHRoaXMuaW5uZXJGb3JtYXQuaW5jbHVkZXMoJ1EnKSkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5mb3JtYXQodGhpcy5pbm5lckZvcm1hdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRlSGVscGVyLmZvcm1hdCh2YWx1ZS5uYXRpdmVEYXRlLCB0aGlzLmlubmVyRm9ybWF0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzUmFuZ2UgJiYgdGhpcy5wbGFjZWhvbGRlciAmJiBBcnJheS5pc0FycmF5KHRoaXMucGxhY2Vob2xkZXIpXG4gICAgICAgICAgICA/ICh0aGlzLnBsYWNlaG9sZGVyIGFzIHN0cmluZ1tdKS5qb2luKHRoaXMuc2VwYXJhdG9yKVxuICAgICAgICAgICAgOiAodGhpcy5wbGFjZWhvbGRlciBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlUmVhZGFibGVEYXRlKHNldFZhbHVlOiBUaW55RGF0ZSB8IFRpbnlEYXRlW10gfCBudWxsKSB7XG4gICAgICAgIGNvbnN0IHJlYWRhYmxlVmFsdWUgPSB0aGlzLmdldFJlYWRhYmxlVmFsdWUoc2V0VmFsdWUpO1xuICAgICAgICBpZiAocmVhZGFibGVWYWx1ZSA9PT0gdGhpcy5waWNrZXJJbnB1dC5uYXRpdmVFbGVtZW50Wyd2YWx1ZSddKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBpY2tlcklucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSByZWFkYWJsZVZhbHVlO1xuICAgIH1cbn1cbiIsIjxzcGFuXG4gIGNka092ZXJsYXlPcmlnaW5cbiAgI29yaWdpbj1cImNka092ZXJsYXlPcmlnaW5cIlxuICBjbGFzcz1cInt7IHByZWZpeENscyB9fS1waWNrZXIge3sgc2l6ZSA/IHByZWZpeENscyArICctcGlja2VyLScgKyBzaXplIDogJycgfX0ge3sgY2xhc3NOYW1lIH19XCJcbiAgKGNsaWNrKT1cIm9uQ2xpY2tJbnB1dEJveCgpXCI+XG4gIDxuZy1jb250YWluZXI+XG4gICAgPGlucHV0XG4gICAgICAjcGlja2VySW5wdXRcbiAgICAgIHRoeUlucHV0XG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbC17eyBzaXplIH19IGZvcm0tY29udHJvbCB7eyBwcmVmaXhDbHMgfX0tcGlja2VyLWlucHV0XCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ3BhbmVsLWlzLW9wZW5lZCc6IHJlYWxPcGVuU3RhdGUgfVwiXG4gICAgICBbdGh5U2l6ZV09XCJzaXplXCJcbiAgICAgIFt0YWJpbmRleF09XCItMVwiXG4gICAgICBbY2xhc3MudGh5LWlucHV0LWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtjbGFzcy50aHktaW5wdXQtcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVN0YXRlXCJcbiAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcbiAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBnZXRQbGFjZWhvbGRlcigpIH19XCJcbiAgICAgIHRoeUVudGVyXG4gICAgICAodGh5RW50ZXIpPVwib25FbnRlcigpXCIgLz5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHBsUmlnaHRSZXN0XCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9zcGFuPlxuXG48IS0tIFJpZ2h0IG9wZXJhdG9yIGljb25zIC0tPlxuPG5nLXRlbXBsYXRlICN0cGxSaWdodFJlc3Q+XG4gIDxzcGFuIGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LXBpY2tlci1jbGVhclwiPlxuICAgIEBpZiAoIWRpc2FibGVkICYmICFpc0VtcHR5VmFsdWUodmFsdWUpICYmIGFsbG93Q2xlYXIgJiYgIXJlYWRvbmx5KSB7XG4gICAgICA8dGh5LWljb25cbiAgICAgICAgdGh5SWNvbk5hbWU9XCJjbG9zZS1jaXJjbGUtYm9sZC1maWxsXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tDbGVhcigkZXZlbnQpXCJcbiAgICAgIG5nQ2xhc3M9XCJyZW1vdmUtbGluayByZW1vdmUtbGluay17eyBzaXplIH19XCI+PC90aHktaWNvbj5cbiAgICB9XG4gIDwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tcGlja2VyLWljb25cIj5cbiAgICA8dGh5LWljb24gW3RoeUljb25OYW1lXT1cInN1ZmZpeEljb25cIiBuZ0NsYXNzPVwicmVtb3ZlLWxpbmste3sgc2l6ZSA/IHNpemUgOiAnZGVmYXVsdCcgfX1cIj48L3RoeS1pY29uPlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIE92ZXJsYXkgLS0+XG48bmctdGVtcGxhdGVcbiAgY2RrQ29ubmVjdGVkT3ZlcmxheVxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJvcmlnaW5cIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwicmVhbE9wZW5TdGF0ZVwiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3BdPVwiaGFzQmFja2Ryb3BcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uc109XCJvdmVybGF5UG9zaXRpb25zXCJcbiAgY2RrQ29ubmVjdGVkT3ZlcmxheUJhY2tkcm9wQ2xhc3M9XCJjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFwiXG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlUcmFuc2Zvcm1PcmlnaW5Pbj1cIi50aHktcGlja2VyLWNvbnRhaW5lclwiXG4gIChwb3NpdGlvbkNoYW5nZSk9XCJvblBvc2l0aW9uQ2hhbmdlKCRldmVudClcIlxuICAoYmFja2Ryb3BDbGljayk9XCJvbkNsaWNrQmFja2Ryb3AoKVwiXG4gIChkZXRhY2gpPVwib25PdmVybGF5RGV0YWNoKClcIj5cbiAgPGRpdlxuICAgICNvdmVybGF5Q29udGFpbmVyXG4gICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIlxuICAgIGNsYXNzPVwidGh5LXBpY2tlci1jb250YWluZXJcIlxuICAgIFtAc2NhbGVYTW90aW9uXT1cInBsYWNlbWVudCA9PT0gJ2xlZnQnIHx8IHBsYWNlbWVudCA9PT0gJ3JpZ2h0JyA/ICdlbnRlcicgOiAndm9pZCdcIlxuICAgIFtAc2NhbGVZTW90aW9uXT1cInBsYWNlbWVudCA9PT0gJ3RvcCcgfHwgcGxhY2VtZW50ID09PSAnYm90dG9tJyA/ICdlbnRlcicgOiAndm9pZCdcIlxuICAgIFtAc2NhbGVNb3Rpb25dPVwicGxhY2VtZW50ICE9PSAnbGVmdCcgJiYgcGxhY2VtZW50ICE9PSAncmlnaHQnICYmIHBsYWNlbWVudCAhPT0gJ3RvcCcgJiYgcGxhY2VtZW50ICE9PSAnYm90dG9tJyA/ICdlbnRlcicgOiAndm9pZCdcIj5cbiAgICA8IS0tIENvbXBhdGlibGUgZm9yIG92ZXJsYXkgdGhhdCBub3Qgc3VwcG9ydCBvZmZzZXQgZHluYW1pY2FsbHkgYW5kIGltbWVkaWF0ZWx5IC0tPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
277
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRlLXBpY2tlci9waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2RhdGUtcGlja2VyL3BpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQWdCLE1BQU0saUJBQWlCLENBQUM7QUFDckUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBa0MsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RyxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHakU7O0dBRUc7QUFVSCxNQUFNLE9BQU8s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LEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNKLFdBQVc7c0JBQXRELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDUSxnQkFBZ0I7c0JBQWpFLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUc1QyxNQUFNO3NCQURULEtBQUs7Z0JBV0YsdUJBQXVCO3NCQUQxQixLQUFLO2dCQVdGLEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldEZsZXhpYmxlUG9zaXRpb25zLCBUaHlQbGFjZW1lbnQgfSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBUaW55RGF0ZSB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5cbmltcG9ydCB7IENka0Nvbm5lY3RlZE92ZXJsYXksIENka092ZXJsYXlPcmlnaW4sIENvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbkNoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBzY2FsZU1vdGlvbiwgc2NhbGVYTW90aW9uLCBzY2FsZVlNb3Rpb24gfSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuaW1wb3J0IHsgVGh5STE4blNlcnZpY2UgfSBmcm9tICduZ3gtdGV0aHlzL2kxOG4nO1xuaW1wb3J0IHsgVGh5SWNvbiB9IGZyb20gJ25neC10ZXRoeXMvaWNvbic7XG5pbXBvcnQgeyBUaHlJbnB1dERpcmVjdGl2ZSB9IGZyb20gJ25neC10ZXRoeXMvaW5wdXQnO1xuaW1wb3J0IHsgVGh5RW50ZXJEaXJlY3RpdmUgfSBmcm9tICduZ3gtdGV0aHlzL3NoYXJlZCc7XG5pbXBvcnQgeyBEYXRlSGVscGVyU2VydmljZSB9IGZyb20gJy4vZGF0ZS1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDb21wYXRpYmxlVmFsdWUsIFJhbmdlUGFydFR5cGUgfSBmcm9tICcuL2lubmVyLXR5cGVzJztcbmltcG9ydCB7IGdldEZsZXhpYmxlQWR2YW5jZWRSZWFkYWJsZVZhbHVlIH0gZnJvbSAnLi9waWNrZXIudXRpbCc7XG5pbXBvcnQgeyBUaHlEYXRlR3JhbnVsYXJpdHkgfSBmcm9tICcuL3N0YW5kYXJkLXR5cGVzJztcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1waWNrZXInLFxuICAgIGV4cG9ydEFzOiAndGh5UGlja2VyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDZGtPdmVybGF5T3JpZ2luLCBUaHlJbnB1dERpcmVjdGl2ZSwgVGh5RW50ZXJEaXJlY3RpdmUsIEFzeW5jUGlwZSwgTmdUZW1wbGF0ZU91dGxldCwgVGh5SWNvbiwgTmdDbGFzcywgQ2RrQ29ubmVjdGVkT3ZlcmxheV0sXG4gICAgYW5pbWF0aW9uczogW3NjYWxlWE1vdGlvbiwgc2NhbGVZTW90aW9uLCBzY2FsZU1vdGlvbl1cbn0pXG5leHBvcnQgY2xhc3MgVGh5UGlja2VyIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgICBwcml2YXRlIGRhdGVIZWxwZXIgPSBpbmplY3QoRGF0ZUhlbHBlclNlcnZpY2UpO1xuICAgIHByaXZhdGUgaTE4biA9IGluamVjdChUaHlJMThuU2VydmljZSk7XG5cbiAgICBASW5wdXQoKSBpc1JhbmdlID0gZmFsc2U7XG4gICAgQElucHV0KCkgb3BlbjogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW47XG4gICAgQElucHV0KCkgYWxsb3dDbGVhcjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBhdXRvRm9jdXM6IGJvb2xlYW47XG4gICAgQElucHV0KCkgY2xhc3NOYW1lOiBzdHJpbmc7XG4gICAgQElucHV0KCkgc2l6ZTogJ3NtJyB8ICd4cycgfCAnbGcnIHwgJ21kJyB8ICdkZWZhdWx0JztcbiAgICBASW5wdXQoKSBzdWZmaXhJY29uOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcGxhY2VtZW50OiBUaHlQbGFjZW1lbnQgPSAnYm90dG9tTGVmdCc7XG4gICAgQElucHV0KCkgZmxleGlibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBtb2RlOiBzdHJpbmc7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgaGFzQmFja2Ryb3A6IGJvb2xlYW47XG4gICAgQElucHV0KCkgc2VwYXJhdG9yOiBzdHJpbmc7XG4gICAgQE91dHB1dCgpIGJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VGlueURhdGUgfCBUaW55RGF0ZVtdIHwgbnVsbD4oKTtcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgb3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTsgLy8gRW1pdHRlZCB3aGVuIG92ZXJsYXkncyBvcGVuIHN0YXRlIGNoYW5nZVxuICAgIEBPdXRwdXQoKSByZWFkb25seSBpbnB1dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgQFZpZXdDaGlsZCgnb3JpZ2luJywgeyBzdGF0aWM6IHRydWUgfSkgb3JpZ2luOiBDZGtPdmVybGF5T3JpZ2luO1xuICAgIEBWaWV3Q2hpbGQoQ2RrQ29ubmVjdGVkT3ZlcmxheSwgeyBzdGF0aWM6IHRydWUgfSkgY2RrQ29ubmVjdGVkT3ZlcmxheTogQ2RrQ29ubmVjdGVkT3ZlcmxheTtcbiAgICBAVmlld0NoaWxkKCdwaWNrZXJJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pIHBpY2tlcklucHV0OiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ292ZXJsYXlDb250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgb3ZlcmxheUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBmb3JtYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlubmVyRm9ybWF0O1xuICAgIH1cblxuICAgIHNldCBmb3JtYXQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmlubmVyRm9ybWF0ID0gdmFsdWU7XG4gICAgICAgIHRoaXMudXBkYXRlUmVhZGFibGVEYXRlKHRoaXMuaW5uZXJWYWx1ZSk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBnZXQgZmxleGlibGVEYXRlR3JhbnVsYXJpdHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlubmVyZmxleGlibGVEYXRlR3JhbnVsYXJpdHk7XG4gICAgfVxuXG4gICAgc2V0IGZsZXhpYmxlRGF0ZUdyYW51bGFyaXR5KGdyYW51bGFyaXR5OiBUaHlEYXRlR3JhbnVsYXJpdHkpIHtcbiAgICAgICAgdGhpcy5pbm5lcmZsZXhpYmxlRGF0ZUdyYW51bGFyaXR5ID0gZ3JhbnVsYXJpdHk7XG4gICAgICAgIHRoaXMudXBkYXRlUmVhZGFibGVEYXRlKHRoaXMuaW5uZXJWYWx1ZSk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlubmVyVmFsdWU7XG4gICAgfVxuXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBUaW55RGF0ZSB8IFRpbnlEYXRlW10gfCBudWxsKSB7XG4gICAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHZhbHVlO1xuICAgICAgICBpZiAoIXRoaXMuZW50ZXJpbmcpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUmVhZGFibGVEYXRlKHRoaXMuaW5uZXJWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlubmVyZmxleGlibGVEYXRlR3JhbnVsYXJpdHk6IFRoeURhdGVHcmFudWxhcml0eTtcblxuICAgIHByaXZhdGUgaW5uZXJGb3JtYXQ6IHN0cmluZztcblxuICAgIHByaXZhdGUgaW5uZXJWYWx1ZTogVGlueURhdGUgfCBUaW55RGF0ZVtdIHwgbnVsbDtcblxuICAgIGVudGVyaW5nID0gZmFsc2U7XG5cbiAgICBwcmVmaXhDbHMgPSAndGh5LWNhbGVuZGFyJztcblxuICAgIGlzU2hvd0RhdGVQb3B1cCA9IGZhbHNlO1xuXG4gICAgb3ZlcmxheU9wZW4gPSBmYWxzZTsgLy8gQXZhaWxhYmxlIHdoZW4gXCJvcGVuXCI9dW5kZWZpbmVkXG5cbiAgICBvdmVybGF5UG9zaXRpb25zID0gZ2V0RmxleGlibGVQb3NpdGlvbnModGhpcy5wbGFjZW1lbnQsIDQpO1xuXG4gICAgZ2V0IHJlYWxPcGVuU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIFRoZSB2YWx1ZSB0aGF0IHJlYWxseSBkZWNpZGUgdGhlIG9wZW4gc3RhdGUgb2Ygb3ZlcmxheVxuICAgICAgICByZXR1cm4gdGhpcy5pc09wZW5IYW5kbGVkQnlVc2VyKCkgPyAhIXRoaXMub3BlbiA6IHRoaXMub3ZlcmxheU9wZW47XG4gICAgfVxuXG4gICAgZ2V0IHJlYWRvbmx5U3RhdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzUmFuZ2UgfHwgdGhpcy5yZWFkb25seSB8fCB0aGlzLm1vZGUgIT09ICdkYXRlJztcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIC8vIG9wZW4gYnkgdXNlclxuICAgICAgICBpZiAoY2hhbmdlcy5vcGVuICYmIGNoYW5nZXMub3Blbi5jdXJyZW50VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKGNoYW5nZXMub3Blbi5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dEYXRlUG9wdXAoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZURhdGVQb3B1cCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm92ZXJsYXlQb3NpdGlvbnMgPSBnZXRGbGV4aWJsZVBvc2l0aW9ucyh0aGlzLnBsYWNlbWVudCwgNCk7XG4gICAgICAgIGlmICh0aGlzLmF1dG9Gb2N1cykge1xuICAgICAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGlja2VySW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIG9uQmx1cihldmVudDogRm9jdXNFdmVudCkge1xuICAgICAgICB0aGlzLmJsdXIuZW1pdChldmVudCk7XG4gICAgICAgIGlmICh0aGlzLmVudGVyaW5nKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5waWNrZXJJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVudGVyaW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb25JbnB1dChldmVudDogSW5wdXRFdmVudCkge1xuICAgICAgICB0aGlzLmVudGVyaW5nID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgaW5wdXRWYWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpWyd2YWx1ZSddO1xuICAgICAgICB0aGlzLmlucHV0Q2hhbmdlLmVtaXQoaW5wdXRWYWx1ZSk7XG4gICAgfVxuXG4gICAgb25FbnRlcigpIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHlTdGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnBpY2tlcklucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgfHwgdGhpcy5nZXRSZWFkYWJsZVZhbHVlKG5ldyBUaW55RGF0ZSgpKSk7XG4gICAgICAgIHRoaXMuZW50ZXJpbmcgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBzaG93T3ZlcmxheSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnJlYWxPcGVuU3RhdGUpIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheU9wZW4gPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zaG93RGF0ZVBvcHVwKCk7XG5cbiAgICAgICAgICAgIHRoaXMub3BlbkNoYW5nZS5lbWl0KHRoaXMub3ZlcmxheU9wZW4pO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2RrQ29ubmVjdGVkT3ZlcmxheSAmJiB0aGlzLmNka0Nvbm5lY3RlZE92ZXJsYXkub3ZlcmxheVJlZikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNka0Nvbm5lY3RlZE92ZXJsYXkub3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGlkZU92ZXJsYXkoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlYWxPcGVuU3RhdGUpIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheU9wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEYXRlUG9wdXAoKTtcblxuICAgICAgICAgICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQodGhpcy5vdmVybGF5T3Blbik7XG4gICAgICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaG93RGF0ZVBvcHVwKCkge1xuICAgICAgICB0aGlzLmlzU2hvd0RhdGVQb3B1cCA9IHRydWU7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgY2xvc2VEYXRlUG9wdXAoKSB7XG4gICAgICAgIC8vIERlbGF5IDIwMG1zIGJlZm9yZSBkZXN0cm95aW5nIHRoZSBkYXRlLXBvcHVwLCBvdGhlcndpc2UgeW91IHdpbGwgbm90IHNlZSB0aGUgY2xvc2luZyBhbmltYXRpb24uXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc1Nob3dEYXRlUG9wdXAgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0sIDIwMCk7XG4gICAgfVxuXG4gICAgb25DbGlja0lucHV0Qm94KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMucmVhZG9ubHkgJiYgIXRoaXMuaXNPcGVuSGFuZGxlZEJ5VXNlcigpKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dPdmVybGF5KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNsaWNrQmFja2Ryb3AoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGlkZU92ZXJsYXkoKTtcbiAgICB9XG5cbiAgICBvbk92ZXJsYXlEZXRhY2goKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGlkZU92ZXJsYXkoKTtcbiAgICB9XG5cbiAgICBvblBvc2l0aW9uQ2hhbmdlKHBvc2l0aW9uOiBDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25DaGFuZ2UpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgb25DbGlja0NsZWFyKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHRoaXMuaXNSYW5nZSA/IFtdIDogbnVsbDtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuaW5uZXJWYWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0UGFydFR5cGVJbmRleChwYXJ0VHlwZTogUmFuZ2VQYXJ0VHlwZSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB7IGxlZnQ6IDAsIHJpZ2h0OiAxIH1bcGFydFR5cGVdO1xuICAgIH1cblxuICAgIGlzRW1wdHlWYWx1ZSh2YWx1ZTogQ29tcGF0aWJsZVZhbHVlIHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNSYW5nZSkge1xuICAgICAgICAgICAgcmV0dXJuICF2YWx1ZSB8fCAhQXJyYXkuaXNBcnJheSh2YWx1ZSkgfHwgdmFsdWUuZXZlcnkodmFsID0+ICF2YWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuICF2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFdoZXRoZXIgb3BlbiBzdGF0ZSBpcyBwZXJtYW5lbnRseSBjb250cm9sbGVkIGJ5IHVzZXIgaGltc2VsZlxuICAgIGlzT3BlbkhhbmRsZWRCeVVzZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZW4gIT09IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBnZXRSZWFkYWJsZVZhbHVlKHRpbnlEYXRlOiBUaW55RGF0ZSB8IFRpbnlEYXRlW10pOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgbGV0IHZhbHVlOiBUaW55RGF0ZTtcbiAgICAgICAgaWYgKHRoaXMuaXNSYW5nZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZmxleGlibGUgJiYgdGhpcy5pbm5lcmZsZXhpYmxlRGF0ZUdyYW51bGFyaXR5ICE9PSAnZGF5Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXRGbGV4aWJsZUFkdmFuY2VkUmVhZGFibGVWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgdGlueURhdGUgYXMgVGlueURhdGVbXSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbm5lcmZsZXhpYmxlRGF0ZUdyYW51bGFyaXR5LFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlcGFyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pMThuLmdldExvY2FsZSgpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSB0aW55RGF0ZVswXSA/IHRoaXMuZm9ybWF0RGF0ZSh0aW55RGF0ZVswXSkgOiAnJztcbiAgICAgICAgICAgICAgICBjb25zdCBlbmQgPSB0aW55RGF0ZVsxXSA/IHRoaXMuZm9ybWF0RGF0ZSh0aW55RGF0ZVsxXSkgOiAnJztcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RhcnQgJiYgZW5kID8gYCR7c3RhcnR9JHt0aGlzLnNlcGFyYXRvcn0ke2VuZH1gIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlID0gdGlueURhdGUgYXMgVGlueURhdGU7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgPyB0aGlzLmZvcm1hdERhdGUodmFsdWUpIDogbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvcm1hdERhdGUodmFsdWU6IFRpbnlEYXRlKSB7XG4gICAgICAgIC8vIGRhdGVIZWxwZXIuZm9ybWF0KCkg5L2/55So55qE5pivIGFuZ3VsYXIg55qEIGZvcm1hdO+8jOS4jeaUr+aMgeWto+W6pu+8jOS/ruaUueeahOivne+8jOaUueWKqOavlOi+g+Wkp+OAglxuICAgICAgICAvLyDmraTlpITpgJrov4flr7kgaW5uZXJGb3JtYXQg5YGa5LiL5Yik5pat77yM5aaC5p6c5piv5a2j5bqm55qEIGZvcm1hdO+8jOS9v+eUqCBkYXRlLWZucyDnmoQgZm9ybWF0KClcbiAgICAgICAgaWYgKHRoaXMuaW5uZXJGb3JtYXQgJiYgKHRoaXMuaW5uZXJGb3JtYXQuaW5jbHVkZXMoJ3EnKSB8fCB0aGlzLmlubmVyRm9ybWF0LmluY2x1ZGVzKCdRJykpKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUuZm9ybWF0KHRoaXMuaW5uZXJGb3JtYXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZUhlbHBlci5mb3JtYXQodmFsdWUubmF0aXZlRGF0ZSwgdGhpcy5pbm5lckZvcm1hdCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1JhbmdlICYmIHRoaXMucGxhY2Vob2xkZXIgJiYgQXJyYXkuaXNBcnJheSh0aGlzLnBsYWNlaG9sZGVyKVxuICAgICAgICAgICAgPyAodGhpcy5wbGFjZWhvbGRlciBhcyBzdHJpbmdbXSkuam9pbih0aGlzLnNlcGFyYXRvcilcbiAgICAgICAgICAgIDogKHRoaXMucGxhY2Vob2xkZXIgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVJlYWRhYmxlRGF0ZShzZXRWYWx1ZTogVGlueURhdGUgfCBUaW55RGF0ZVtdIHwgbnVsbCkge1xuICAgICAgICBjb25zdCByZWFkYWJsZVZhbHVlID0gdGhpcy5nZXRSZWFkYWJsZVZhbHVlKHNldFZhbHVlKTtcbiAgICAgICAgaWYgKHJlYWRhYmxlVmFsdWUgPT09IHRoaXMucGlja2VySW5wdXQubmF0aXZlRWxlbWVudFsndmFsdWUnXSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5waWNrZXJJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gcmVhZGFibGVWYWx1ZTtcbiAgICB9XG59XG4iLCI8c3BhblxuICBjZGtPdmVybGF5T3JpZ2luXG4gICNvcmlnaW49XCJjZGtPdmVybGF5T3JpZ2luXCJcbiAgY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tcGlja2VyIHt7IHNpemUgPyBwcmVmaXhDbHMgKyAnLXBpY2tlci0nICsgc2l6ZSA6ICcnIH19IHt7IGNsYXNzTmFtZSB9fVwiXG4gIChjbGljayk9XCJvbkNsaWNrSW5wdXRCb3goKVwiPlxuICA8bmctY29udGFpbmVyPlxuICAgIDxpbnB1dFxuICAgICAgI3BpY2tlcklucHV0XG4gICAgICB0aHlJbnB1dFxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wte3sgc2l6ZSB9fSBmb3JtLWNvbnRyb2wge3sgcHJlZml4Q2xzIH19LXBpY2tlci1pbnB1dFwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdwYW5lbC1pcy1vcGVuZWQnOiByZWFsT3BlblN0YXRlIH1cIlxuICAgICAgW3RoeVNpemVdPVwic2l6ZVwiXG4gICAgICBbdGFiaW5kZXhdPVwiLTFcIlxuICAgICAgW2NsYXNzLnRoeS1pbnB1dC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbY2xhc3MudGh5LWlucHV0LXJlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlTdGF0ZVwiXG4gICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwie3sgZ2V0UGxhY2Vob2xkZXIoKSB9fVwiXG4gICAgICB0aHlFbnRlclxuICAgICAgKHRoeUVudGVyKT1cIm9uRW50ZXIoKVwiIC8+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRwbFJpZ2h0UmVzdFwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvc3Bhbj5cblxuPCEtLSBSaWdodCBvcGVyYXRvciBpY29ucyAtLT5cbjxuZy10ZW1wbGF0ZSAjdHBsUmlnaHRSZXN0PlxuICA8c3BhbiBjbGFzcz1cInt7IHByZWZpeENscyB9fS1waWNrZXItY2xlYXJcIj5cbiAgICBAaWYgKCFkaXNhYmxlZCAmJiAhaXNFbXB0eVZhbHVlKHZhbHVlKSAmJiBhbGxvd0NsZWFyICYmICFyZWFkb25seSkge1xuICAgICAgPHRoeS1pY29uXG4gICAgICAgIHRoeUljb25OYW1lPVwiY2xvc2UtY2lyY2xlLWJvbGQtZmlsbFwiXG4gICAgICAgIChjbGljayk9XCJvbkNsaWNrQ2xlYXIoJGV2ZW50KVwiXG4gICAgICBuZ0NsYXNzPVwicmVtb3ZlLWxpbmsgcmVtb3ZlLWxpbmste3sgc2l6ZSB9fVwiPjwvdGh5LWljb24+XG4gICAgfVxuICA8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LXBpY2tlci1pY29uXCI+XG4gICAgPHRoeS1pY29uIFt0aHlJY29uTmFtZV09XCJzdWZmaXhJY29uXCIgbmdDbGFzcz1cInJlbW92ZS1saW5rLXt7IHNpemUgPyBzaXplIDogJ2RlZmF1bHQnIH19XCI+PC90aHktaWNvbj5cbiAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBPdmVybGF5IC0tPlxuPG5nLXRlbXBsYXRlXG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwib3JpZ2luXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT1cInJlYWxPcGVuU3RhdGVcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wXT1cImhhc0JhY2tkcm9wXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnNdPVwib3ZlcmxheVBvc2l0aW9uc1wiXG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzPVwiY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BcIlxuICBjZGtDb25uZWN0ZWRPdmVybGF5VHJhbnNmb3JtT3JpZ2luT249XCIudGh5LXBpY2tlci1jb250YWluZXJcIlxuICAocG9zaXRpb25DaGFuZ2UpPVwib25Qb3NpdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgKGJhY2tkcm9wQ2xpY2spPVwib25DbGlja0JhY2tkcm9wKClcIlxuICAoZGV0YWNoKT1cIm9uT3ZlcmxheURldGFjaCgpXCI+XG4gIDxkaXZcbiAgICAjb3ZlcmxheUNvbnRhaW5lclxuICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCJcbiAgICBjbGFzcz1cInRoeS1waWNrZXItY29udGFpbmVyXCJcbiAgICBbQHNjYWxlWE1vdGlvbl09XCJwbGFjZW1lbnQgPT09ICdsZWZ0JyB8fCBwbGFjZW1lbnQgPT09ICdyaWdodCcgPyAnZW50ZXInIDogJ3ZvaWQnXCJcbiAgICBbQHNjYWxlWU1vdGlvbl09XCJwbGFjZW1lbnQgPT09ICd0b3AnIHx8IHBsYWNlbWVudCA9PT0gJ2JvdHRvbScgPyAnZW50ZXInIDogJ3ZvaWQnXCJcbiAgICBbQHNjYWxlTW90aW9uXT1cInBsYWNlbWVudCAhPT0gJ2xlZnQnICYmIHBsYWNlbWVudCAhPT0gJ3JpZ2h0JyAmJiBwbGFjZW1lbnQgIT09ICd0b3AnICYmIHBsYWNlbWVudCAhPT0gJ2JvdHRvbScgPyAnZW50ZXInIDogJ3ZvaWQnXCI+XG4gICAgPCEtLSBDb21wYXRpYmxlIGZvciBvdmVybGF5IHRoYXQgbm90IHN1cHBvcnQgb2Zmc2V0IGR5bmFtaWNhbGx5IGFuZCBpbW1lZGlhdGVseSAtLT5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Pipe, inject } from '@angular/core';
|
|
2
|
+
import { ThyI18nService } from 'ngx-tethys/i18n';
|
|
2
3
|
import { TinyDate } from 'ngx-tethys/util';
|
|
3
4
|
import { DateHelperService } from './date-helper.service';
|
|
4
5
|
import { ThyDatePickerConfigService } from './date-picker.service';
|
|
@@ -12,6 +13,7 @@ export class ThyDatePickerFormatPipe {
|
|
|
12
13
|
constructor() {
|
|
13
14
|
this.dateHelper = inject(DateHelperService);
|
|
14
15
|
this.datePickerConfigService = inject(ThyDatePickerConfigService);
|
|
16
|
+
this.i18n = inject(ThyI18nService);
|
|
15
17
|
}
|
|
16
18
|
transform(originalValue, formatStr, separator) {
|
|
17
19
|
const { value, withTime, flexibleDateGranularity } = transformDateValue(originalValue);
|
|
@@ -25,7 +27,7 @@ export class ThyDatePickerFormatPipe {
|
|
|
25
27
|
else {
|
|
26
28
|
if (flexibleDateGranularity && flexibleDateGranularity !== 'day') {
|
|
27
29
|
const tinyDates = [new TinyDate(value[0]), new TinyDate(value[1])];
|
|
28
|
-
return getFlexibleAdvancedReadableValue(tinyDates, flexibleDateGranularity, currentSeparator);
|
|
30
|
+
return getFlexibleAdvancedReadableValue(tinyDates, flexibleDateGranularity, currentSeparator, this.i18n.getLocale());
|
|
29
31
|
}
|
|
30
32
|
else {
|
|
31
33
|
return value.map(date => this.dateHelper.format(date, formatStr)).join(currentSeparator);
|
|
@@ -116,4 +118,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
116
118
|
standalone: true
|
|
117
119
|
}]
|
|
118
120
|
}], ctorParameters: () => [] });
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLnBpcGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RhdGUtcGlja2VyL3BpY2tlci5waXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUdyRjs7R0FFRztBQUtILE1BQU0sT0FBTyx1QkFBdUI7SUFKcEM7UUFLWSxlQUFVLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdkMsNEJBQXVCLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDN0QsU0FBSSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztLQW9CekM7SUFsQkcsU0FBUyxDQUFDLGFBQTZELEVBQUUsU0FBa0IsRUFBRSxTQUFrQjtRQUMzRyxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSx1QkFBdUIsRUFBRSxHQUFHLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXZGLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNiLFNBQVMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDN0QsQ0FBQztRQUNELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFD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UUFBUSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO0lBQ3hELENBQUM7K0dBUFEsNkJBQTZCOzZHQUE3Qiw2QkFBNkI7OzRGQUE3Qiw2QkFBNkI7a0JBSnpDLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLDJCQUEyQjtvQkFDakMsVUFBVSxFQUFFLElBQUk7aUJBQ25COztBQVdEOztHQUVHO0FBS0gsTUFBTSxPQUFPLGlDQUFpQztJQUMxQyxnQkFBZSxDQUFDO0lBQ2hCLFNBQVMsQ0FBQyxLQUE2QixFQUFFLElBQXdCO1FBQzdELE9BQU8sSUFBSSxLQUFLLE1BQU0sSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQzsrR0FKUSxpQ0FBaUM7NkdBQWpDLGlDQUFpQzs7NEZBQWpDLGlDQUFpQztrQkFKN0MsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsYUFBYTtvQkFDbkIsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlJMThuU2VydmljZSB9IGZyb20gJ25neC10ZXRoeXMvaTE4bic7XG5pbXBvcnQgeyBUaW55RGF0ZSB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyBEYXRlSGVscGVyU2VydmljZSB9IGZyb20gJy4vZGF0ZS1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBUaHlEYXRlUGlja2VyQ29uZmlnU2VydmljZSB9IGZyb20gJy4vZGF0ZS1waWNrZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBZHZhbmNlZFNlbGVjdGFibGVDZWxsIH0gZnJvbSAnLi9pbm5lci10eXBlcyc7XG5pbXBvcnQgeyBnZXRGbGV4aWJsZUFkdmFuY2VkUmVhZGFibGVWYWx1ZSwgdHJhbnNmb3JtRGF0ZVZhbHVlIH0gZnJvbSAnLi9waWNrZXIudXRpbCc7XG5pbXBvcnQgeyBDb21wYXRpYmxlRGF0ZSwgRGF0ZUVudHJ5LCBUaHlEYXRlR3JhbnVsYXJpdHksIFRoeURhdGVSYW5nZUVudHJ5IH0gZnJvbSAnLi9zdGFuZGFyZC10eXBlcyc7XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICd0aHlEYXRlUGlja2VyRm9ybWF0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRoeURhdGVQaWNrZXJGb3JtYXRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgcHJpdmF0ZSBkYXRlSGVscGVyID0gaW5qZWN0KERhdGVIZWxwZXJTZXJ2aWNlKTtcbiAgICBwcml2YXRlIGRhdGVQaWNrZXJDb25maWdTZXJ2aWNlID0gaW5qZWN0KFRoeURhdGVQaWNrZXJDb25maWdTZXJ2aWNlKTtcbiAgICBwcml2YXRlIGkxOG4gPSBpbmplY3QoVGh5STE4blNlcnZpY2UpO1xuXG4gICAgdHJhbnNmb3JtKG9yaWdpbmFsVmFsdWU6IENvbXBhdGlibGVEYXRlIHwgRGF0ZUVudHJ5IHwgVGh5RGF0ZVJhbmdlRW50cnksIGZvcm1hdFN0cj86IHN0cmluZywgc2VwYXJhdG9yPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgeyB2YWx1ZSwgd2l0aFRpbWUsIGZsZXhpYmxlRGF0ZUdyYW51bGFyaXR5IH0gPSB0cmFuc2Zvcm1EYXRlVmFsdWUob3JpZ2luYWxWYWx1ZSk7XG5cbiAgICAgICAgaWYgKCFmb3JtYXRTdHIpIHtcbiAgICAgICAgICAgIGZvcm1hdFN0ciA9IHdpdGhUaW1lID8gJ3l5eXktTU0tZGQgSEg6bW0nIDogJ3l5eXktTU0tZGQnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTZXBhcmF0b3IgPSBgICR7KHNlcGFyYXRvciA/PyB0aGlzLmRhdGVQaWNrZXJDb25maWdTZXJ2aWNlLnNlcGFyYXRvcik/LnRyaW0oKX0gYDtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZUhlbHBlci5mb3JtYXQodmFsdWUsIGZvcm1hdFN0cik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZmxleGlibGVEYXRlR3JhbnVsYXJpdHkgJiYgZmxleGlibGVEYXRlR3JhbnVsYXJpdHkgIT09ICdkYXknKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGlueURhdGVzID0gW25ldyBUaW55RGF0ZSh2YWx1ZVswXSksIG5ldyBUaW55RGF0ZSh2YWx1ZVsxXSldO1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXRGbGV4aWJsZUFkdmFuY2VkUmVhZGFibGVWYWx1ZSh0aW55RGF0ZXMsIGZsZXhpYmxlRGF0ZUdyYW51bGFyaXR5LCBjdXJyZW50U2VwYXJhdG9yLCB0aGlzLmkxOG4uZ2V0TG9jYWxlKCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUubWFwKGRhdGUgPT4gdGhpcy5kYXRlSGVscGVyLmZvcm1hdChkYXRlLCBmb3JtYXRTdHIpKS5qb2luKGN1cnJlbnRTZXBhcmF0b3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ3RoeVF1YXJ0ZXJQaWNrZXJGb3JtYXQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVGh5UXVhcnRlclBpY2tlckZvcm1hdFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGVQaWNrZXJDb25maWdTZXJ2aWNlOiBUaHlEYXRlUGlja2VyQ29uZmlnU2VydmljZSkge31cblxuICAgIHRyYW5zZm9ybShvcmlnaW5hbFZhbHVlOiBDb21wYXRpYmxlRGF0ZSB8IERhdGVFbnRyeSB8IFRoeURhdGVSYW5nZUVudHJ5LCBmb3JtYXRTdHI/OiBzdHJpbmcsIHNlcGFyYXRvcj86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHsgdmFsdWUsIHdpdGhUaW1lIH0gPSB0cmFuc2Zvcm1EYXRlVmFsdWUob3JpZ2luYWxWYWx1ZSk7XG5cbiAgICAgICAgaWYgKCFmb3JtYXRTdHIpIHtcbiAgICAgICAgICAgIGZvcm1hdFN0ciA9ICd5eXl5LXFxcSc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICBjb25zdCBfdmFsdWUgPSBuZXcgVGlueURhdGUodmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIF92YWx1ZS5mb3JtYXQoZm9ybWF0U3RyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgICAgIC5tYXAoZGF0ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IF9kYXRlID0gbmV3IFRpbnlEYXRlKGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2RhdGUuZm9ybWF0KGZvcm1hdFN0cik7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuam9pbihgICR7KHNlcGFyYXRvciA/PyB0aGlzLmRhdGVQaWNrZXJDb25maWdTZXJ2aWNlLnNlcGFyYXRvcik/LnRyaW0oKX0gYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICd0aHlEYXRlUGlja2VyRm9ybWF0U3RyaW5nJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRoeURhdGVQaWNrZXJGb3JtYXRTdHJpbmdQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgcHJpdmF0ZSBkYXRlSGVscGVyID0gaW5qZWN0KERhdGVIZWxwZXJTZXJ2aWNlKTtcblxuICAgIHRyYW5zZm9ybShvcmlnaW5hbFZhbHVlOiBDb21wYXRpYmxlRGF0ZSB8IERhdGVFbnRyeSB8IFRoeURhdGVSYW5nZUVudHJ5KTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgeyB3aXRoVGltZSB9ID0gdHJhbnNmb3JtRGF0ZVZhbHVlKG9yaWdpbmFsVmFsdWUpO1xuXG4gICAgICAgIHJldHVybiB3aXRoVGltZSA/ICd5eXl5LU1NLWRkIEhIOm1tJyA6ICd5eXl5LU1NLWRkJztcbiAgICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICdzaG93WWVhclRpcCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyQWR2YW5jZWRTaG93WWVhclRpcFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICBjb25zdHJ1Y3RvcigpIHt9XG4gICAgdHJhbnNmb3JtKHZhbHVlOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsLCB0eXBlOiBUaHlEYXRlR3JhbnVsYXJpdHkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR5cGUgIT09ICd5ZWFyJyAmJiB2YWx1ZS5zdGFydFZhbHVlLmlzU2FtZURheSh2YWx1ZS5zdGFydFZhbHVlLnN0YXJ0T2ZZZWFyKCkpO1xuICAgIH1cbn1cbiJdfQ==
|