@dereekb/dbx-form 9.25.2 → 9.25.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/calendar/lib/calendar.schedule.selection.component.d.ts +1 -0
- package/calendar/lib/calendar.schedule.selection.range.component.d.ts +1 -1
- package/calendar/lib/calendar.schedule.selection.store.d.ts +28 -4
- package/calendar/lib/field/schedule/calendar.schedule.field.component.d.ts +9 -1
- package/esm2020/calendar/lib/calendar.schedule.selection.component.mjs +7 -6
- package/esm2020/calendar/lib/calendar.schedule.selection.range.component.mjs +4 -4
- package/esm2020/calendar/lib/calendar.schedule.selection.store.mjs +74 -37
- package/esm2020/calendar/lib/field/schedule/calendar.schedule.field.component.mjs +6 -6
- package/esm2020/calendar/lib/field/schedule/calendar.schedule.field.mjs +3 -2
- package/fesm2015/dereekb-dbx-form-calendar.mjs +87 -46
- package/fesm2015/dereekb-dbx-form-calendar.mjs.map +1 -1
- package/fesm2020/dereekb-dbx-form-calendar.mjs +89 -50
- package/fesm2020/dereekb-dbx-form-calendar.mjs.map +1 -1
- package/mapbox/package.json +4 -4
- package/package.json +4 -4
|
@@ -44,6 +44,7 @@ export declare class DbxScheduleSelectionCalendarComponent<T> implements OnInit,
|
|
|
44
44
|
private _inputReadonly;
|
|
45
45
|
private _config;
|
|
46
46
|
private _centerRangeSub;
|
|
47
|
+
readonly config$: Observable<DbxScheduleSelectionCalendarComponentConfig>;
|
|
47
48
|
readonly readonly$: Observable<boolean>;
|
|
48
49
|
readonly showButtonsOnReadonly$: Observable<boolean>;
|
|
49
50
|
readonly showButtons$: Observable<boolean>;
|
|
@@ -14,7 +14,7 @@ export declare class DbxScheduleSelectionCalendarDateRangeComponent implements O
|
|
|
14
14
|
readonly matFormFieldDefaultOptions: MatFormFieldDefaultOptions;
|
|
15
15
|
private _required;
|
|
16
16
|
readonly required$: Observable<boolean>;
|
|
17
|
-
readonly timezone$: Observable<
|
|
17
|
+
readonly timezone$: Observable<string>;
|
|
18
18
|
openPickerOnTextClick: boolean;
|
|
19
19
|
picker: MatDateRangePicker<Date>;
|
|
20
20
|
label?: Maybe<string>;
|
|
@@ -29,7 +29,9 @@ export interface CalendarScheduleSelectionState extends PartialCalendarScheduleS
|
|
|
29
29
|
/**
|
|
30
30
|
* Filters the days of the schedule to only allow selecting days in the schedule.
|
|
31
31
|
*
|
|
32
|
-
*
|
|
32
|
+
* The output will be relative to this filter, and in it's timezone unless computeSelectionResultRelativeToFilter is false.
|
|
33
|
+
*
|
|
34
|
+
* This is a copy of any set/configured input filter and will have a start date set from start or startsAt.
|
|
33
35
|
*/
|
|
34
36
|
filter?: Maybe<DateCellScheduleDateFilterConfig>;
|
|
35
37
|
/**
|
|
@@ -157,8 +159,18 @@ export declare class DbxCalendarScheduleSelectionStore extends ComponentStore<Ca
|
|
|
157
159
|
}>;
|
|
158
160
|
readonly scheduleDays$: Observable<Set<DateCellScheduleDayCode>>;
|
|
159
161
|
readonly outputTimezone$: Observable<Maybe<TimezoneString>>;
|
|
160
|
-
|
|
161
|
-
|
|
162
|
+
/**
|
|
163
|
+
* The timezone of the output values.
|
|
164
|
+
*
|
|
165
|
+
* If an outputTimezone is not specified, this defaults to the system timezone.
|
|
166
|
+
*/
|
|
167
|
+
readonly effectiveOutputTimezone$: Observable<TimezoneString>;
|
|
168
|
+
/**
|
|
169
|
+
* An outputTimezoneNormal to use.
|
|
170
|
+
*
|
|
171
|
+
* If an outputTimezone is not specified, this is undefined.
|
|
172
|
+
*/
|
|
173
|
+
readonly effectiveOutputTimezoneNormal$: Observable<Maybe<DateTimezoneUtcNormalInstance>>;
|
|
162
174
|
readonly currentSelectionValue$: Observable<Maybe<CalendarScheduleSelectionValue>>;
|
|
163
175
|
readonly currentSelectionValueStart$: Observable<Maybe<Date>>;
|
|
164
176
|
readonly currentSelectionValueDateCellTimingDateFactory$: Observable<import("@dereekb/date").DateCellTimingDateFactory<{
|
|
@@ -185,6 +197,9 @@ export declare class DbxCalendarScheduleSelectionStore extends ComponentStore<Ca
|
|
|
185
197
|
readonly setComputeSelectionResultRelativeToFilter: (() => void) | ((observableOrValue: Maybe<boolean> | Observable<Maybe<boolean>>) => import("rxjs").Subscription);
|
|
186
198
|
readonly clearFilter: () => void;
|
|
187
199
|
readonly setOutputTimezone: (() => void) | ((observableOrValue: Maybe<string> | Observable<Maybe<string>>) => import("rxjs").Subscription);
|
|
200
|
+
/**
|
|
201
|
+
* Sets the "input" date range. This is the range that gets displayed on the date range picker.
|
|
202
|
+
*/
|
|
188
203
|
readonly setInputRange: (observableOrValue: CalendarScheduleSelectionInputDateRange | Observable<CalendarScheduleSelectionInputDateRange>) => import("rxjs").Subscription;
|
|
189
204
|
readonly toggleSelectedDates: (observableOrValue: IterableOrValue<DateCellTimingRelativeIndexFactoryInput> | Observable<IterableOrValue<DateCellTimingRelativeIndexFactoryInput>>) => import("rxjs").Subscription;
|
|
190
205
|
readonly addSelectedDates: (observableOrValue: IterableOrValue<DateCellTimingRelativeIndexFactoryInput> | Observable<IterableOrValue<DateCellTimingRelativeIndexFactoryInput>>) => import("rxjs").Subscription;
|
|
@@ -219,7 +234,7 @@ export declare class DbxCalendarScheduleSelectionStore extends ComponentStore<Ca
|
|
|
219
234
|
/**
|
|
220
235
|
* @deprecated use effectiveOuputTimezoneNormal$
|
|
221
236
|
*/
|
|
222
|
-
readonly effectiveTimezoneNormal$: Observable<DateTimezoneUtcNormalInstance
|
|
237
|
+
readonly effectiveTimezoneNormal$: Observable<Maybe<DateTimezoneUtcNormalInstance>>;
|
|
223
238
|
/**
|
|
224
239
|
* @deprecated use currentSelectionValueDateCellDurationSpanExpansion$
|
|
225
240
|
*/
|
|
@@ -261,8 +276,17 @@ export declare function updateStateWithChangedRange(state: CalendarScheduleSelec
|
|
|
261
276
|
export declare function finalizeNewCalendarScheduleSelectionState(nextState: CalendarScheduleSelectionState): CalendarScheduleSelectionState;
|
|
262
277
|
export declare function isEnabledDayInCalendarScheduleSelectionState(state: CalendarScheduleSelectionState): DecisionFunction<DateCellTimingRelativeIndexFactoryInput>;
|
|
263
278
|
export declare function computeScheduleSelectionValue(state: CalendarScheduleSelectionState): Maybe<CalendarScheduleSelectionValue>;
|
|
279
|
+
/**
|
|
280
|
+
* The selected date range and the corresponding cell range.
|
|
281
|
+
*/
|
|
264
282
|
export interface CalendarScheduleSelectionRangeAndExclusion extends DateRange {
|
|
283
|
+
/**
|
|
284
|
+
* Corresponds to the start and end indexes in the date range.
|
|
285
|
+
*/
|
|
265
286
|
dateCellRange: DateCellRangeWithRange;
|
|
287
|
+
/**
|
|
288
|
+
* All excluded indexes.
|
|
289
|
+
*/
|
|
266
290
|
excluded: DateCellIndex[];
|
|
267
291
|
}
|
|
268
292
|
export declare function computeScheduleSelectionRangeAndExclusion(state: CalendarScheduleSelectionState): Maybe<CalendarScheduleSelectionRangeAndExclusion>;
|
|
@@ -33,8 +33,16 @@ export interface DbxFormCalendarDateCellScheduleRangeFieldProps extends Pick<For
|
|
|
33
33
|
allowCustomizeWithoutDateRange?: boolean;
|
|
34
34
|
/**
|
|
35
35
|
* (Optional) Timezone to use for the output start date.
|
|
36
|
+
*
|
|
37
|
+
* @deprecated use 'outputTimezone' instead.
|
|
36
38
|
*/
|
|
37
39
|
timezone?: ObservableOrValue<Maybe<TimezoneString>>;
|
|
40
|
+
/**
|
|
41
|
+
* (Optional) Timezone to use for the output start date.
|
|
42
|
+
*
|
|
43
|
+
* If a filter is provided, this timezone overrides the filter's timezone output.
|
|
44
|
+
*/
|
|
45
|
+
outputTimezone?: ObservableOrValue<Maybe<TimezoneString>>;
|
|
38
46
|
/**
|
|
39
47
|
* (Optional) Default schedule days to allow.
|
|
40
48
|
*/
|
|
@@ -88,7 +96,7 @@ export declare class DbxFormCalendarDateScheduleRangeFieldComponent<T extends Db
|
|
|
88
96
|
get minMaxDateRange(): ObservableOrValue<Maybe<Partial<DateRange>>>;
|
|
89
97
|
get filter(): ObservableOrValue<Maybe<DateCellScheduleDateFilterConfig>>;
|
|
90
98
|
get exclusions(): ObservableOrValue<Maybe<ArrayOrValue<DateOrDateRangeOrDateCellIndexOrDateCellRange>>>;
|
|
91
|
-
get
|
|
99
|
+
get outputTimezone(): ObservableOrValue<Maybe<string>>;
|
|
92
100
|
get initialSelectionState(): Maybe<import("@dereekb/util").AllOrNoneSelection>;
|
|
93
101
|
get computeSelectionResultRelativeToFilter(): Maybe<boolean>;
|
|
94
102
|
get dialogContentConfig(): Maybe<DbxScheduleSelectionCalendarDatePopupContentConfig>;
|
|
@@ -66,10 +66,11 @@ export class DbxScheduleSelectionCalendarComponent {
|
|
|
66
66
|
this._inputReadonly = new BehaviorSubject(undefined);
|
|
67
67
|
this._config = new BehaviorSubject({});
|
|
68
68
|
this._centerRangeSub = new SubscriptionObject();
|
|
69
|
-
this.
|
|
69
|
+
this.config$ = this._config.pipe(distinctUntilChanged(), shareReplay(1));
|
|
70
|
+
this.readonly$ = this.config$.pipe(switchMap((x) => (x.readonly != null ? asObservableFromGetter(x.readonly) : of(undefined))), combineLatestWith(this._inputReadonly), map(([configReadonly, inputReadonly]) => {
|
|
70
71
|
return (configReadonly ?? false) || (inputReadonly ?? false);
|
|
71
72
|
}), shareReplay(1));
|
|
72
|
-
this.showButtonsOnReadonly$ = this.
|
|
73
|
+
this.showButtonsOnReadonly$ = this.config$.pipe(map((x) => x.showButtonsOnReadonly ?? false), distinctUntilChanged(), shareReplay(1));
|
|
73
74
|
this.showButtons$ = this.showButtonsOnReadonly$.pipe(switchMap((x) => {
|
|
74
75
|
if (x) {
|
|
75
76
|
return of(true);
|
|
@@ -78,12 +79,12 @@ export class DbxScheduleSelectionCalendarComponent {
|
|
|
78
79
|
return this.readonly$.pipe(map((x) => !x));
|
|
79
80
|
}
|
|
80
81
|
}), distinctUntilChanged(), shareReplay(1));
|
|
81
|
-
this.showClearSelectionButton$ = this.
|
|
82
|
-
this.datePopoverButtonInjectionConfig$ = this.
|
|
82
|
+
this.showClearSelectionButton$ = this.config$.pipe(map((config) => config.showClearSelectionButton ?? true), combineLatestWith(this.showButtons$), map((x) => reduceBooleansWithAnd(x)), distinctUntilChanged(), shareReplay(1));
|
|
83
|
+
this.datePopoverButtonInjectionConfig$ = this.config$.pipe(map((x) => x.buttonInjectionConfig), switchMapDbxInjectionComponentConfig(DbxScheduleSelectionCalendarDatePopoverButtonComponent), combineLatestWith(this.showButtons$), map(([config, showButton]) => (showButton ? config : undefined)), shareReplay(1));
|
|
83
84
|
this.clickEvent = new EventEmitter();
|
|
84
85
|
// refresh any time the selected day function updates
|
|
85
86
|
this.state$ = this.dbxCalendarScheduleSelectionStore.state$;
|
|
86
|
-
this.beforeMonthViewRender$ = this.
|
|
87
|
+
this.beforeMonthViewRender$ = this.config$.pipe(switchMap((x) => {
|
|
87
88
|
let factory;
|
|
88
89
|
if (x.beforeMonthViewRenderFunctionFactory) {
|
|
89
90
|
factory = asObservable(x.beforeMonthViewRenderFunctionFactory);
|
|
@@ -172,4 +173,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
172
173
|
}], readonly: [{
|
|
173
174
|
type: Input
|
|
174
175
|
}] } });
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL2NhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL2NhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBYSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFMUYsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQVcsS0FBSyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQWMsYUFBYSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQVMsTUFBTSxNQUFNLENBQUM7QUFDakwsT0FBTyxFQUFvQixnQkFBZ0IsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdHLE9BQU8sRUFBb0IscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFrQyxpQ0FBaUMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hILE9BQU8sRUFBRSxpQ0FBaUMsRUFBcUMsTUFBTSwrQkFBK0IsQ0FBQztBQUNySCxPQUFPLEVBQStCLG9DQUFvQyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEcsT0FBTyxFQUE4QyxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckksT0FBTyxFQUFFLHNEQUFzRCxFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDaEksT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUs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QUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDeEQsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7bUlBaktVLHFDQUFxQzt1SEFBckMscUNBQXFDLHFKQUZyQyxDQUFDLGdCQUFnQixDQUFDLDBCQzdGL0IsMjZDQXFCQTs0RkQwRWEscUNBQXFDO2tCQUxqRCxTQUFTOytCQUNFLGlDQUFpQyxhQUVoQyxDQUFDLGdCQUFnQixDQUFDO3VKQW1EN0IsVUFBVTtzQkFEVCxNQUFNO2dCQW9GSCxNQUFNO3NCQURULEtBQUs7Z0JBVUYsUUFBUTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgT25EZXN0cm95LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYWxlbmRhckV2ZW50LCBDYWxlbmRhck1vbnRoVmlld0JlZm9yZVJlbmRlckV2ZW50LCBDYWxlbmRhck1vbnRoVmlld0RheSB9IGZyb20gJ2FuZ3VsYXItY2FsZW5kYXInO1xuaW1wb3J0IHsgbWFwLCBzaGFyZVJlcGxheSwgU3ViamVjdCwgZmlyc3QsIHRocm90dGxlVGltZSwgQmVoYXZpb3JTdWJqZWN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgc3dpdGNoTWFwLCBvZiwgY29tYmluZUxhdGVzdFdpdGgsIHNoYXJlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYnhDYWxlbmRhckV2ZW50LCBEYnhDYWxlbmRhclN0b3JlLCBwcmVwYXJlQW5kU29ydENhbGVuZGFyRXZlbnRzIH0gZnJvbSAnQGRlcmVla2IvZGJ4LXdlYi9jYWxlbmRhcic7XG5pbXBvcnQgeyBEYXlPZldlZWssIE1heWJlLCByZWR1Y2VCb29sZWFuc1dpdGhBbmQgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSwgRGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlIH0gZnJvbSAnLi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24uc3RvcmUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvbkRheVN0YXRlLCBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uTWV0YWRhdGEgfSBmcm9tICcuL2NhbGVuZGFyLnNjaGVkdWxlLnNlbGVjdGlvbic7XG5pbXBvcnQgeyBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWcsIHN3aXRjaE1hcERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZyB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGVPclZhbHVlLCBPYnNlcnZhYmxlT3JWYWx1ZUdldHRlciwgU3Vic2NyaXB0aW9uT2JqZWN0LCBhc09ic2VydmFibGUsIGFzT2JzZXJ2YWJsZUZyb21HZXR0ZXIgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlUG9wb3ZlckJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnBvcG92ZXIuYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRlUmFuZ2VUeXBlLCBkYXRlUmFuZ2UsIGlzU2FtZURhdGUgfSBmcm9tICdAZGVyZWVrYi9kYXRlJztcbmltcG9ydCB7IGVuZE9mV2VlayB9IGZyb20gJ2RhdGUtZm5zJztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyQ29tcG9uZW50Q29uZmlnIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoZSBzZWxlY3Rpb24gY2FsZW5kYXIgaXMgcmVhZG9ubHkuIERlZmF1bHRzIHRvICdmYWxzZScuXG4gICAqL1xuICByZWFkb25seSByZWFkb25seT86IE1heWJlPE9ic2VydmFibGVPclZhbHVlR2V0dGVyPE1heWJlPGJvb2xlYW4+Pj47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBzaG93IHRoZSBjb25maWd1cmVkIGJ1dHRvbnMgd2hlbiByZWFkb25seSBpcyB0cnVlLiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICovXG4gIHJlYWRvbmx5IHNob3dCdXR0b25zT25SZWFkb25seT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBzaG93IHRoZSBjbGVhciBzZWxlY3Rpb24gYnV0dG9uLiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqL1xuICByZWFkb25seSBzaG93Q2xlYXJTZWxlY3Rpb25CdXR0b24/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgZGlzcGxheWluZyBhIGN1c3RvbSBzZWxlY3Rpb24gYnV0dG9uLiBXaGVuIG51bGwvdW5kZWZpbmVkL3RydWUgaXMgcGFzc2VkLCB3aWxsIHNob3cgdGhlIGRlZmF1bHQgRGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckRhdGVQb3BvdmVyQnV0dG9uQ29tcG9uZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYnV0dG9uSW5qZWN0aW9uQ29uZmlnPzogTWF5YmU8T2JzZXJ2YWJsZU9yVmFsdWVHZXR0ZXI8TWF5YmU8RGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnPGFueT4gfCBib29sZWFuPj4+O1xuICAvKipcbiAgICogQ3VzdG9taXplIGRheSBmdW5jdGlvbi4gV2hlbiBhIG5ldyBmdW5jdGlvbiBpcyBwaXBlZCB0aHJvdWdoIHRoZSBjYWxlbmRhciBpcyByZWZyZXNoZWQuXG4gICAqL1xuICByZWFkb25seSBjdXN0b21pemVEYXk/OiBNYXliZTxPYnNlcnZhYmxlT3JWYWx1ZTxNYXliZTxEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyQmVmb3JlTW9udGhWaWV3UmVuZGVyTW9kaWZ5RGF5RnVuY3Rpb24+Pj47XG4gIC8qKlxuICAgKiBPcHRpb25hbCBmdWxsIGNvbnRyb2wgb3ZlciB0aGUgYmVmb3JlTW9udGhWaWV3UmVuZGVyXG4gICAqL1xuICByZWFkb25seSBiZWZvcmVNb250aFZpZXdSZW5kZXJGdW5jdGlvbkZhY3Rvcnk/OiBNYXliZTxPYnNlcnZhYmxlT3JWYWx1ZTxEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyQmVmb3JlTW9udGhWaWV3UmVuZGVyRnVuY3Rpb25GYWN0b3J5Pj47XG59XG5cbmV4cG9ydCB0eXBlIERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJCZWZvcmVNb250aFZpZXdSZW5kZXJNb2RpZnlEYXlGdW5jdGlvbiA9ICh2aWV3RGF5OiBDYWxlbmRhck1vbnRoVmlld0RheTxDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uTWV0YWRhdGE+LCBzdGF0ZTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlKSA9PiB2b2lkO1xuXG5leHBvcnQgdHlwZSBEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyQmVmb3JlTW9udGhWaWV3UmVuZGVyRnVuY3Rpb24gPSAocmVuZGVyRXZlbnQ6IENhbGVuZGFyTW9udGhWaWV3QmVmb3JlUmVuZGVyRXZlbnQpID0+IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJCZWZvcmVNb250aFZpZXdSZW5kZXJGdW5jdGlvbkZhY3RvcnkgPSAoc3RhdGU6IE9ic2VydmFibGU8Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlPikgPT4gRGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckJlZm9yZU1vbnRoVmlld1JlbmRlckZ1bmN0aW9uO1xuXG5leHBvcnQgZnVuY3Rpb24gZGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckJlZm9yZU1vbnRoVmlld1JlbmRlckZhY3RvcnkoaW5wdXRNb2RpZnlGbj86IE1heWJlPERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJCZWZvcmVNb250aFZpZXdSZW5kZXJNb2RpZnlEYXlGdW5jdGlvbj4pOiBEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyQmVmb3JlTW9udGhWaWV3UmVuZGVyRnVuY3Rpb25GYWN0b3J5IHtcbiAgY29uc3QgbW9kaWZ5Rm4gPSBpbnB1dE1vZGlmeUZuIHx8ICgoKSA9PiB7fSk7XG5cbiAgcmV0dXJuIChzdGF0ZSQ6IE9ic2VydmFibGU8Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlPikgPT4ge1xuICAgIHJldHVybiAocmVuZGVyRXZlbnQ6IENhbGVuZGFyTW9udGhWaWV3QmVmb3JlUmVuZGVyRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgYm9keSB9OiB7IGJvZHk6IENhbGVuZGFyTW9udGhWaWV3RGF5PENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25NZXRhZGF0YT5bXSB9ID0gcmVuZGVyRXZlbnQ7XG5cbiAgICAgIC8vIHVzZSBsYXRlc3QvY3VycmVudCBzdGF0ZVxuICAgICAgc3RhdGUkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKChjYWxlbmRhclNjaGVkdWxlU3RhdGU6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSkgPT4ge1xuICAgICAgICBjb25zdCB7IGlzRW5hYmxlZERheSwgaW5kZXhGYWN0b3J5LCBpc0VuYWJsZWRGaWx0ZXJEYXksIGFsbG93ZWREYXlzT2ZXZWVrIH0gPSBjYWxlbmRhclNjaGVkdWxlU3RhdGU7XG4gICAgICAgIGJvZHkuZm9yRWFjaCgodmlld0RheSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgZGF0ZSB9ID0gdmlld0RheTtcbiAgICAgICAgICBjb25zdCBpID0gaW5kZXhGYWN0b3J5KGRhdGUpO1xuICAgICAgICAgIGNvbnN0IGRheSA9IGRhdGUuZ2V0RGF5KCk7XG5cbiAgICAgICAgICBsZXQgc3RhdGU6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25EYXlTdGF0ZTtcblxuICAgICAgICAgIGlmICghaXNFbmFibGVkRmlsdGVyRGF5KGkpKSB7XG4gICAgICAgICAgICB2aWV3RGF5LmNzc0NsYXNzID0gJ2NhbC1kYXktbm90LWFwcGxpY2FibGUnO1xuICAgICAgICAgICAgc3RhdGUgPSBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uRGF5U3RhdGUuTk9UX0FQUExJQ0FCTEU7XG4gICAgICAgICAgfSBlbHNlIGlmICghYWxsb3dlZERheXNPZldlZWsuaGFzKGRheSBhcyBEYXlPZldlZWspKSB7XG4gICAgICAgICAgICB2aWV3RGF5LmNzc0NsYXNzID0gJ2NhbC1kYXktZGlzYWJsZWQnO1xuICAgICAgICAgICAgc3RhdGUgPSBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uRGF5U3RhdGUuRElTQUJMRUQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc0VuYWJsZWREYXkoaSkpIHtcbiAgICAgICAgICAgIHZpZXdEYXkuY3NzQ2xhc3MgPSAnY2FsLWRheS1zZWxlY3RlZCc7XG4gICAgICAgICAgICBzdGF0ZSA9IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25EYXlTdGF0ZS5TRUxFQ1RFRDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmlld0RheS5jc3NDbGFzcyA9ICdjYWwtZGF5LW5vdC1zZWxlY3RlZCc7XG4gICAgICAgICAgICBzdGF0ZSA9IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25EYXlTdGF0ZS5OT1RfU0VMRUNURUQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgbWV0YSA9IHtcbiAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgaVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICB2aWV3RGF5Lm1ldGEgPSBtZXRhO1xuICAgICAgICAgIG1vZGlmeUZuKHZpZXdEYXksIGNhbGVuZGFyU2NoZWR1bGVTdGF0ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtEYnhDYWxlbmRhclN0b3JlXVxufSlcbmV4cG9ydCBjbGFzcyBEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9pbnB1dFJlYWRvbmx5ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxib29sZWFuPj4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBfY29uZmlnID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyQ29tcG9uZW50Q29uZmlnPih7fSk7XG4gIHByaXZhdGUgX2NlbnRlclJhbmdlU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHJlYWRvbmx5IHJlYWRvbmx5JDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuX2NvbmZpZy5waXBlKFxuICAgIHN3aXRjaE1hcCgoeCkgPT4gKHgucmVhZG9ubHkgIT0gbnVsbCA/IGFzT2JzZXJ2YWJsZUZyb21HZXR0ZXIoeC5yZWFkb25seSkgOiBvZih1bmRlZmluZWQpKSksXG4gICAgY29tYmluZUxhdGVzdFdpdGgodGhpcy5faW5wdXRSZWFkb25seSksXG4gICAgbWFwKChbY29uZmlnUmVhZG9ubHksIGlucHV0UmVhZG9ubHldKSA9PiB7XG4gICAgICByZXR1cm4gKGNvbmZpZ1JlYWRvbmx5ID8/IGZhbHNlKSB8fCAoaW5wdXRSZWFkb25seSA/PyBmYWxzZSk7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzaG93QnV0dG9uc09uUmVhZG9ubHkkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5fY29uZmlnLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LnNob3dCdXR0b25zT25SZWFkb25seSA/PyBmYWxzZSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHNob3dCdXR0b25zJCA9IHRoaXMuc2hvd0J1dHRvbnNPblJlYWRvbmx5JC5waXBlKFxuICAgIHN3aXRjaE1hcCgoeCkgPT4ge1xuICAgICAgaWYgKHgpIHtcbiAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZG9ubHkkLnBpcGUobWFwKCh4KSA9PiAheCkpO1xuICAgICAgfVxuICAgIH0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzaG93Q2xlYXJTZWxlY3Rpb25CdXR0b24kID0gdGhpcy5fY29uZmlnLnBpcGUoXG4gICAgbWFwKChjb25maWcpID0+IGNvbmZpZy5zaG93Q2xlYXJTZWxlY3Rpb25CdXR0b24gPz8gdHJ1ZSksXG4gICAgY29tYmluZUxhdGVzdFdpdGgodGhpcy5zaG93QnV0dG9ucyQpLFxuICAgIG1hcCgoeCkgPT4gcmVkdWNlQm9vbGVhbnNXaXRoQW5kKHgpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZGF0ZVBvcG92ZXJCdXR0b25JbmplY3Rpb25Db25maWckOiBPYnNlcnZhYmxlPE1heWJlPERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZzxhbnk+Pj4gPSB0aGlzLl9jb25maWcucGlwZShcbiAgICBtYXAoKHgpID0+IHguYnV0dG9uSW5qZWN0aW9uQ29uZmlnKSxcbiAgICBzd2l0Y2hNYXBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWcoRGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckRhdGVQb3BvdmVyQnV0dG9uQ29tcG9uZW50KSxcbiAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLnNob3dCdXR0b25zJCksXG4gICAgbWFwKChbY29uZmlnLCBzaG93QnV0dG9uXSkgPT4gKHNob3dCdXR0b24gPyBjb25maWcgOiB1bmRlZmluZWQpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIEBPdXRwdXQoKVxuICBjbGlja0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxEYnhDYWxlbmRhckV2ZW50PFQ+PigpO1xuXG4gIC8vIHJlZnJlc2ggYW55IHRpbWUgdGhlIHNlbGVjdGVkIGRheSBmdW5jdGlvbiB1cGRhdGVzXG4gIHJlYWRvbmx5IHN0YXRlJCA9IHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLnN0YXRlJDtcblxuICByZWFkb25seSBiZWZvcmVNb250aFZpZXdSZW5kZXIkID0gdGhpcy5fY29uZmlnLnBpcGUoXG4gICAgc3dpdGNoTWFwKCh4KSA9PiB7XG4gICAgICBsZXQgZmFjdG9yeTogT2JzZXJ2YWJsZTxEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyQmVmb3JlTW9udGhWaWV3UmVuZGVyRnVuY3Rpb25GYWN0b3J5PjtcblxuICAgICAgaWYgKHguYmVmb3JlTW9udGhWaWV3UmVuZGVyRnVuY3Rpb25GYWN0b3J5KSB7XG4gICAgICAgIGZhY3RvcnkgPSBhc09ic2VydmFibGUoeC5iZWZvcmVNb250aFZpZXdSZW5kZXJGdW5jdGlvbkZhY3RvcnkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmFjdG9yeSA9IGFzT2JzZXJ2YWJsZSh4LmN1c3RvbWl6ZURheSkucGlwZShtYXAoKHgpID0+IGRieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJCZWZvcmVNb250aFZpZXdSZW5kZXJGYWN0b3J5KHgpKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWN0b3J5LnBpcGUobWFwKCh4KSA9PiB4KHRoaXMuc3RhdGUkKSkpO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgcmVmcmVzaCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnN0YXRlJCwgdGhpcy5iZWZvcmVNb250aFZpZXdSZW5kZXIkXSkucGlwZShcbiAgICB0aHJvdHRsZVRpbWUoMjAsIHVuZGVmaW5lZCwgeyBsZWFkaW5nOiB0cnVlLCB0cmFpbGluZzogdHJ1ZSB9KSxcbiAgICBtYXAoKCkgPT4gdW5kZWZpbmVkKVxuICApIGFzIFN1YmplY3Q8dW5kZWZpbmVkPjtcblxuICByZWFkb25seSBldmVudHMkID0gdGhpcy5jYWxlbmRhclN0b3JlLnZpc2libGVFdmVudHMkLnBpcGUobWFwKHByZXBhcmVBbmRTb3J0Q2FsZW5kYXJFdmVudHMpLCBzaGFyZVJlcGxheSgxKSk7XG4gIHJlYWRvbmx5IHZpZXdEYXRlJCA9IHRoaXMuY2FsZW5kYXJTdG9yZS5kYXRlJDtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBjYWxlbmRhclN0b3JlOiBEYnhDYWxlbmRhclN0b3JlPFQ+LCByZWFkb25seSBkYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmU6IERieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5zZXRWaWV3UmVhZG9ubHlTdGF0ZSh0aGlzLnJlYWRvbmx5JCk7IC8vIHN5bmMgdGhlIHJlYWRvbmx5IHN0YXRlXG5cbiAgICB0aGlzLmNhbGVuZGFyU3RvcmUuc2V0TmF2aWdhdGlvblJhbmdlTGltaXQodGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUubWluTWF4RGF0ZVJhbmdlJCk7IC8vIHNldCBuYXZpZ2F0aW9uIGxpbWl0IHRvIHRoZSBtaW4vbWF4IGFsbG93ZWQgZGF0ZXMuXG4gICAgdGhpcy5jYWxlbmRhclN0b3JlLnNldFNob3dQYWdlQnV0dG9ucyh0cnVlKTtcblxuICAgIC8vIHdoZW4gYSBuZXcgZmlsdGVyIGlzIHNldCwgaWYgdGhlIGZpcnN0IHR3byBwYWdlcyBvZiBzZWxlY3RhYmxlIGluZGV4ZXMgZml0IHdpdGhpbiB0aGUgY2FsZW5kYXIgbW9udGgsIGZvY3VzIG9uIHRoYXQgY2FsZW5kYXIgbW9udGguXG4gICAgdGhpcy5fY2VudGVyUmFuZ2VTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuY3VycmVudERhdGVSYW5nZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaXJzdCgpLFxuICAgICAgICBzd2l0Y2hNYXAoKHgpID0+IHtcbiAgICAgICAgICBsZXQgcmVzdWx0OiBPYnNlcnZhYmxlPFt0eXBlb2YgeCwgYm9vbGVhbl0+ID0geFxuICAgICAgICAgICAgPyBvZihbeCwgdHJ1ZV0pXG4gICAgICAgICAgICA6IHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLm1pbk1heERhdGVSYW5nZSQucGlwZShcbiAgICAgICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgICAgIG1hcCgoeSkgPT4gW3ksIGZhbHNlXSBhcyBbdHlwZW9mIHgsIGJvb2xlYW5dKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChbeCwgaXNGcm9tU2VsZWN0ZWREYXRlUmFuZ2VdKSA9PiB7XG4gICAgICAgIGlmICh4Py5zdGFydCkge1xuICAgICAgICAgIGxldCB0YXBEYXk6IE1heWJlPERhdGU+O1xuICAgICAgICAgIGNvbnN0IHN0YXJ0TW9udGggPSBkYXRlUmFuZ2UoeyBkYXRlOiB4LnN0YXJ0LCB0eXBlOiBEYXRlUmFuZ2VUeXBlLkNBTEVOREFSX01PTlRIIH0pO1xuICAgICAgICAgIGNvbnN0IG1vbnRoVG9Gb2N1cyA9IGVuZE9mV2VlayhzdGFydE1vbnRoLnN0YXJ0KTtcblxuICAgICAgICAgIGlmICh4LmVuZCAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBlbmRNb250aCA9IGRhdGVSYW5nZSh7IGRhdGU6IHguZW5kLCB0eXBlOiBEYXRlUmFuZ2VUeXBlLkNBTEVOREFSX01PTlRIIH0pO1xuXG4gICAgICAgICAgICBpZiAoaXNTYW1lRGF0ZShzdGFydE1vbnRoLnN0YXJ0LCBlbmRNb250aC5zdGFydCkpIHtcbiAgICAgICAgICAgICAgdGFwRGF5ID0gbW9udGhUb0ZvY3VzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghdGFwRGF5ICYmIGlzRnJvbVNlbGVjdGVkRGF0ZVJhbmdlKSB7XG4gICAgICAgICAgICB0YXBEYXkgPSBtb250aFRvRm9jdXM7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRhcERheSkge1xuICAgICAgICAgICAgdGhpcy5jYWxlbmRhclN0b3JlLnRhcERheSh0YXBEYXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsaWNrRXZlbnQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9pbnB1dFJlYWRvbmx5LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fY29uZmlnLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fY2VudGVyUmFuZ2VTdWIuZGVzdHJveSgpO1xuICB9XG5cbiAgQElucHV0KClcbiAgZ2V0IGNvbmZpZygpIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnLnZhbHVlO1xuICB9XG5cbiAgc2V0IGNvbmZpZyhjb25maWc6IE1heWJlPERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJDb21wb25lbnRDb25maWc+KSB7XG4gICAgdGhpcy5fY29uZmlnLm5leHQoY29uZmlnID8/IHt9KTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCByZWFkb25seShyZWFkb25seTogTWF5YmU8Ym9vbGVhbj4pIHtcbiAgICB0aGlzLl9pbnB1dFJlYWRvbmx5Lm5leHQocmVhZG9ubHkpO1xuICB9XG5cbiAgZGF5Q2xpY2tlZCh7IGRhdGUgfTogeyBkYXRlOiBEYXRlIH0pOiB2b2lkIHtcbiAgICB0aGlzLnJlYWRvbmx5JC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgocmVhZG9ubHkpID0+IHtcbiAgICAgIGlmICghcmVhZG9ubHkpIHtcbiAgICAgICAgdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUudG9nZ2xlU2VsZWN0ZWREYXRlcyhkYXRlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGV2ZW50Q2xpY2tlZChhY3Rpb246IHN0cmluZywgZXZlbnQ6IENhbGVuZGFyRXZlbnQ8VD4pOiB2b2lkIHtcbiAgICB0aGlzLmNsaWNrRXZlbnQuZW1pdCh7IGFjdGlvbiwgZXZlbnQgfSk7XG4gIH1cblxuICBiZWZvcmVNb250aFZpZXdSZW5kZXIocmVuZGVyRXZlbnQ6IENhbGVuZGFyTW9udGhWaWV3QmVmb3JlUmVuZGVyRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmJlZm9yZU1vbnRoVmlld1JlbmRlciQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKHgpID0+IHtcbiAgICAgIHgocmVuZGVyRXZlbnQpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGJ4LWNhbGVuZGFyLWJhc2UgY2xhc3M9XCJkYngtc2NoZWR1bGUtc2VsZWN0aW9uLWNhbGVuZGFyXCIgW25nQ2xhc3NdPVwiKHJlYWRvbmx5JCB8IGFzeW5jKSA/ICdkYngtc2NoZWR1bGUtc2VsZWN0aW9uLWNhbGVuZGFyLXJlYWRvbmx5JyA6ICcnXCI+XG4gIDxuZy1jb250YWluZXIgY29udHJvbHM+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dDbGVhclNlbGVjdGlvbkJ1dHRvbiQgfCBhc3luY1wiPlxuICAgICAgPGRieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItc2VsZWN0aW9uLXRvZ2dsZS1idXR0b24gW2Rpc2FibGVkXT1cInJlYWRvbmx5JCB8IGFzeW5jXCI+PC9kYngtc2NoZWR1bGUtc2VsZWN0aW9uLWNhbGVuZGFyLXNlbGVjdGlvbi10b2dnbGUtYnV0dG9uPlxuICAgICAgPGRieC1idXR0b24tc3BhY2VyPjwvZGJ4LWJ1dHRvbi1zcGFjZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRieC1pbmplY3Rpb24gW2NvbmZpZ109XCJkYXRlUG9wb3ZlckJ1dHRvbkluamVjdGlvbkNvbmZpZyQgfCBhc3luY1wiPjwvZGJ4LWluamVjdGlvbj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxkaXYgY2xhc3M9XCJkYngtY2FsZW5kYXItY29udGVudCBkYngtY2FsZW5kYXItY29udGVudC1tb250aFwiPlxuICAgIDxtd2wtY2FsZW5kYXItbW9udGgtdmlldyBbcmVmcmVzaF09XCJyZWZyZXNoJFwiIFt2aWV3RGF0ZV09XCIodmlld0RhdGUkIHwgYXN5bmMpIVwiIFtldmVudHNdPVwiKGV2ZW50cyQgfCBhc3luYykhXCIgKGRheUNsaWNrZWQpPVwiZGF5Q2xpY2tlZCgkZXZlbnQuZGF5KVwiIChldmVudENsaWNrZWQpPVwiZXZlbnRDbGlja2VkKCdDbGlja2VkJywgJGV2ZW50LmV2ZW50KVwiIChiZWZvcmVWaWV3UmVuZGVyKT1cImJlZm9yZU1vbnRoVmlld1JlbmRlcigkZXZlbnQpXCIgW2NlbGxUZW1wbGF0ZV09XCJtb250aERheUNlbGxUZW1wbGF0ZVwiPjwvbXdsLWNhbGVuZGFyLW1vbnRoLXZpZXc+XG4gIDwvZGl2PlxuPC9kYngtY2FsZW5kYXItYmFzZT5cblxuPCEtLSBDZWxsIC0tPlxuPG5nLXRlbXBsYXRlICNtb250aERheUNlbGxUZW1wbGF0ZSBsZXQtZGF5PVwiZGF5XCIgbGV0LWxvY2FsZT1cImxvY2FsZVwiPlxuICA8ZGl2IGNsYXNzPVwiY2FsLWNlbGwtdG9wXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJjYWwtZGF5LWJhZGdlXCIgKm5nSWY9XCJkYXkuYmFkZ2VUb3RhbCA+IDBcIj57eyBkYXkuYmFkZ2VUb3RhbCB9fTwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cImNhbC1kYXktbnVtYmVyXCI+e3sgZGF5LmRhdGUgfCBjYWxlbmRhckRhdGU6ICdtb250aFZpZXdEYXlOdW1iZXInOmxvY2FsZSB9fTwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkYngtc2NoZWR1bGUtc2VsZWN0aW9uLWNhbGVuZGFyLWNlbGwgW2RheV09XCJkYXlcIj48L2RieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItY2VsbD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL2NhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL2NhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBYSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFMUYsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQVcsS0FBSyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQWMsYUFBYSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQVMsTUFBTSxNQUFNLENBQUM7QUFDakwsT0FBTyxFQUFvQixnQkFBZ0IsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdHLE9BQU8sRUFBb0IscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFrQyxpQ0FBaUMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hILE9BQU8sRUFBRSxpQ0FBaUMsRUFBcUMsTUFBTSwrQkFBK0IsQ0FBQztBQUNySCxPQUFPLEVBQStCLG9DQUFvQyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEcsT0FBTyxFQUE4QyxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckksT0FBTyxFQUFFLHNEQUFzRCxFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDaEksT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUs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QUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxXQUErQztRQUNuRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDeEQsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7bUlBbktVLHFDQUFxQzt1SEFBckMscUNBQXFDLHFKQUZyQyxDQUFDLGdCQUFnQixDQUFDLDBCQzdGL0IsMjZDQXFCQTs0RkQwRWEscUNBQXFDO2tCQUxqRCxTQUFTOytCQUNFLGlDQUFpQyxhQUVoQyxDQUFDLGdCQUFnQixDQUFDO3VKQXFEN0IsVUFBVTtzQkFEVCxNQUFNO2dCQW9GSCxNQUFNO3NCQURULEtBQUs7Z0JBVUYsUUFBUTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgT25EZXN0cm95LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYWxlbmRhckV2ZW50LCBDYWxlbmRhck1vbnRoVmlld0JlZm9yZVJlbmRlckV2ZW50LCBDYWxlbmRhck1vbnRoVmlld0RheSB9IGZyb20gJ2FuZ3VsYXItY2FsZW5kYXInO1xuaW1wb3J0IHsgbWFwLCBzaGFyZVJlcGxheSwgU3ViamVjdCwgZmlyc3QsIHRocm90dGxlVGltZSwgQmVoYXZpb3JTdWJqZWN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgc3dpdGNoTWFwLCBvZiwgY29tYmluZUxhdGVzdFdpdGgsIHNoYXJlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYnhDYWxlbmRhckV2ZW50LCBEYnhDYWxlbmRhclN0b3JlLCBwcmVwYXJlQW5kU29ydENhbGVuZGFyRXZlbnRzIH0gZnJvbSAnQGRlcmVla2IvZGJ4LXdlYi9jYWxlbmRhcic7XG5pbXBvcnQgeyBEYXlPZldlZWssIE1heWJlLCByZWR1Y2VCb29sZWFuc1dpdGhBbmQgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSwgRGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlIH0gZnJvbSAnLi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24uc3RvcmUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvbkRheVN0YXRlLCBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uTWV0YWRhdGEgfSBmcm9tICcuL2NhbGVuZGFyLnNjaGVkdWxlLnNlbGVjdGlvbic7XG5pbXBvcnQgeyBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWcsIHN3aXRjaE1hcERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZyB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGVPclZhbHVlLCBPYnNlcnZhYmxlT3JWYWx1ZUdldHRlciwgU3Vic2NyaXB0aW9uT2JqZWN0LCBhc09ic2VydmFibGUsIGFzT2JzZXJ2YWJsZUZyb21HZXR0ZXIgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlUG9wb3ZlckJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnBvcG92ZXIuYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRlUmFuZ2VUeXBlLCBkYXRlUmFuZ2UsIGlzU2FtZURhdGUgfSBmcm9tICdAZGVyZWVrYi9kYXRlJztcbmltcG9ydCB7IGVuZE9mV2VlayB9IGZyb20gJ2RhdGUtZm5zJztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyQ29tcG9uZW50Q29uZmlnIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoZSBzZWxlY3Rpb24gY2FsZW5kYXIgaXMgcmVhZG9ubHkuIERlZmF1bHRzIHRvICdmYWxzZScuXG4gICAqL1xuICByZWFkb25seSByZWFkb25seT86IE1heWJlPE9ic2VydmFibGVPclZhbHVlR2V0dGVyPE1heWJlPGJvb2xlYW4+Pj47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBzaG93IHRoZSBjb25maWd1cmVkIGJ1dHRvbnMgd2hlbiByZWFkb25seSBpcyB0cnVlLiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICovXG4gIHJlYWRvbmx5IHNob3dCdXR0b25zT25SZWFkb25seT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBzaG93IHRoZSBjbGVhciBzZWxlY3Rpb24gYnV0dG9uLiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqL1xuICByZWFkb25seSBzaG93Q2xlYXJTZWxlY3Rpb25CdXR0b24/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgZGlzcGxheWluZyBhIGN1c3RvbSBzZWxlY3Rpb24gYnV0dG9uLiBXaGVuIG51bGwvdW5kZWZpbmVkL3RydWUgaXMgcGFzc2VkLCB3aWxsIHNob3cgdGhlIGRlZmF1bHQgRGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckRhdGVQb3BvdmVyQnV0dG9uQ29tcG9uZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYnV0dG9uSW5qZWN0aW9uQ29uZmlnPzogTWF5YmU8T2JzZXJ2YWJsZU9yVmFsdWVHZXR0ZXI8TWF5YmU8RGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnPGFueT4gfCBib29sZWFuPj4+O1xuICAvKipcbiAgICogQ3VzdG9taXplIGRheSBmdW5jdGlvbi4gV2hlbiBhIG5ldyBmdW5jdGlvbiBpcyBwaXBlZCB0aHJvdWdoIHRoZSBjYWxlbmRhciBpcyByZWZyZXNoZWQuXG4gICAqL1xuICByZWFkb25seSBjdXN0b21pemVEYXk/OiBNYXliZTxPYnNlcnZhYmxlT3JWYWx1ZTxNYXliZTxEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyQmVmb3JlTW9udGhWaWV3UmVuZGVyTW9kaWZ5RGF5RnVuY3Rpb24+Pj47XG4gIC8qKlxuICAgKiBPcHRpb25hbCBmdWxsIGNvbnRyb2wgb3ZlciB0aGUgYmVmb3JlTW9udGhWaWV3UmVuZGVyXG4gICAqL1xuICByZWFkb25seSBiZWZvcmVNb250aFZpZXdSZW5kZXJGdW5jdGlvbkZhY3Rvcnk/OiBNYXliZTxPYnNlcnZhYmxlT3JWYWx1ZTxEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyQmVmb3JlTW9udGhWaWV3UmVuZGVyRnVuY3Rpb25GYWN0b3J5Pj47XG59XG5cbmV4cG9ydCB0eXBlIERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJCZWZvcmVNb250aFZpZXdSZW5kZXJNb2RpZnlEYXlGdW5jdGlvbiA9ICh2aWV3RGF5OiBDYWxlbmRhck1vbnRoVmlld0RheTxDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uTWV0YWRhdGE+LCBzdGF0ZTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlKSA9PiB2b2lkO1xuXG5leHBvcnQgdHlwZSBEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyQmVmb3JlTW9udGhWaWV3UmVuZGVyRnVuY3Rpb24gPSAocmVuZGVyRXZlbnQ6IENhbGVuZGFyTW9udGhWaWV3QmVmb3JlUmVuZGVyRXZlbnQpID0+IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJCZWZvcmVNb250aFZpZXdSZW5kZXJGdW5jdGlvbkZhY3RvcnkgPSAoc3RhdGU6IE9ic2VydmFibGU8Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlPikgPT4gRGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckJlZm9yZU1vbnRoVmlld1JlbmRlckZ1bmN0aW9uO1xuXG5leHBvcnQgZnVuY3Rpb24gZGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckJlZm9yZU1vbnRoVmlld1JlbmRlckZhY3RvcnkoaW5wdXRNb2RpZnlGbj86IE1heWJlPERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJCZWZvcmVNb250aFZpZXdSZW5kZXJNb2RpZnlEYXlGdW5jdGlvbj4pOiBEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyQmVmb3JlTW9udGhWaWV3UmVuZGVyRnVuY3Rpb25GYWN0b3J5IHtcbiAgY29uc3QgbW9kaWZ5Rm4gPSBpbnB1dE1vZGlmeUZuIHx8ICgoKSA9PiB7fSk7XG5cbiAgcmV0dXJuIChzdGF0ZSQ6IE9ic2VydmFibGU8Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlPikgPT4ge1xuICAgIHJldHVybiAocmVuZGVyRXZlbnQ6IENhbGVuZGFyTW9udGhWaWV3QmVmb3JlUmVuZGVyRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgYm9keSB9OiB7IGJvZHk6IENhbGVuZGFyTW9udGhWaWV3RGF5PENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25NZXRhZGF0YT5bXSB9ID0gcmVuZGVyRXZlbnQ7XG5cbiAgICAgIC8vIHVzZSBsYXRlc3QvY3VycmVudCBzdGF0ZVxuICAgICAgc3RhdGUkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKChjYWxlbmRhclNjaGVkdWxlU3RhdGU6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSkgPT4ge1xuICAgICAgICBjb25zdCB7IGlzRW5hYmxlZERheSwgaW5kZXhGYWN0b3J5LCBpc0VuYWJsZWRGaWx0ZXJEYXksIGFsbG93ZWREYXlzT2ZXZWVrIH0gPSBjYWxlbmRhclNjaGVkdWxlU3RhdGU7XG4gICAgICAgIGJvZHkuZm9yRWFjaCgodmlld0RheSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgZGF0ZSB9ID0gdmlld0RheTtcbiAgICAgICAgICBjb25zdCBpID0gaW5kZXhGYWN0b3J5KGRhdGUpO1xuICAgICAgICAgIGNvbnN0IGRheSA9IGRhdGUuZ2V0RGF5KCk7XG5cbiAgICAgICAgICBsZXQgc3RhdGU6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25EYXlTdGF0ZTtcblxuICAgICAgICAgIGlmICghaXNFbmFibGVkRmlsdGVyRGF5KGkpKSB7XG4gICAgICAgICAgICB2aWV3RGF5LmNzc0NsYXNzID0gJ2NhbC1kYXktbm90LWFwcGxpY2FibGUnO1xuICAgICAgICAgICAgc3RhdGUgPSBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uRGF5U3RhdGUuTk9UX0FQUExJQ0FCTEU7XG4gICAgICAgICAgfSBlbHNlIGlmICghYWxsb3dlZERheXNPZldlZWsuaGFzKGRheSBhcyBEYXlPZldlZWspKSB7XG4gICAgICAgICAgICB2aWV3RGF5LmNzc0NsYXNzID0gJ2NhbC1kYXktZGlzYWJsZWQnO1xuICAgICAgICAgICAgc3RhdGUgPSBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uRGF5U3RhdGUuRElTQUJMRUQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc0VuYWJsZWREYXkoaSkpIHtcbiAgICAgICAgICAgIHZpZXdEYXkuY3NzQ2xhc3MgPSAnY2FsLWRheS1zZWxlY3RlZCc7XG4gICAgICAgICAgICBzdGF0ZSA9IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25EYXlTdGF0ZS5TRUxFQ1RFRDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmlld0RheS5jc3NDbGFzcyA9ICdjYWwtZGF5LW5vdC1zZWxlY3RlZCc7XG4gICAgICAgICAgICBzdGF0ZSA9IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25EYXlTdGF0ZS5OT1RfU0VMRUNURUQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgbWV0YSA9IHtcbiAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgaVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICB2aWV3RGF5Lm1ldGEgPSBtZXRhO1xuICAgICAgICAgIG1vZGlmeUZuKHZpZXdEYXksIGNhbGVuZGFyU2NoZWR1bGVTdGF0ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtEYnhDYWxlbmRhclN0b3JlXVxufSlcbmV4cG9ydCBjbGFzcyBEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9pbnB1dFJlYWRvbmx5ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxib29sZWFuPj4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBfY29uZmlnID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyQ29tcG9uZW50Q29uZmlnPih7fSk7XG4gIHByaXZhdGUgX2NlbnRlclJhbmdlU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHJlYWRvbmx5IGNvbmZpZyQgPSB0aGlzLl9jb25maWcucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgcmVhZG9ubHkkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5jb25maWckLnBpcGUoXG4gICAgc3dpdGNoTWFwKCh4KSA9PiAoeC5yZWFkb25seSAhPSBudWxsID8gYXNPYnNlcnZhYmxlRnJvbUdldHRlcih4LnJlYWRvbmx5KSA6IG9mKHVuZGVmaW5lZCkpKSxcbiAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLl9pbnB1dFJlYWRvbmx5KSxcbiAgICBtYXAoKFtjb25maWdSZWFkb25seSwgaW5wdXRSZWFkb25seV0pID0+IHtcbiAgICAgIHJldHVybiAoY29uZmlnUmVhZG9ubHkgPz8gZmFsc2UpIHx8IChpbnB1dFJlYWRvbmx5ID8/IGZhbHNlKTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHNob3dCdXR0b25zT25SZWFkb25seSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmNvbmZpZyQucGlwZShcbiAgICBtYXAoKHgpID0+IHguc2hvd0J1dHRvbnNPblJlYWRvbmx5ID8/IGZhbHNlKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgc2hvd0J1dHRvbnMkID0gdGhpcy5zaG93QnV0dG9uc09uUmVhZG9ubHkkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCh4KSA9PiB7XG4gICAgICBpZiAoeCkge1xuICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkb25seSQucGlwZShtYXAoKHgpID0+ICF4KSk7XG4gICAgICB9XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHNob3dDbGVhclNlbGVjdGlvbkJ1dHRvbiQgPSB0aGlzLmNvbmZpZyQucGlwZShcbiAgICBtYXAoKGNvbmZpZykgPT4gY29uZmlnLnNob3dDbGVhclNlbGVjdGlvbkJ1dHRvbiA/PyB0cnVlKSxcbiAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLnNob3dCdXR0b25zJCksXG4gICAgbWFwKCh4KSA9PiByZWR1Y2VCb29sZWFuc1dpdGhBbmQoeCkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkYXRlUG9wb3ZlckJ1dHRvbkluamVjdGlvbkNvbmZpZyQ6IE9ic2VydmFibGU8TWF5YmU8RGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnPGFueT4+PiA9IHRoaXMuY29uZmlnJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5idXR0b25JbmplY3Rpb25Db25maWcpLFxuICAgIHN3aXRjaE1hcERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZyhEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyRGF0ZVBvcG92ZXJCdXR0b25Db21wb25lbnQpLFxuICAgIGNvbWJpbmVMYXRlc3RXaXRoKHRoaXMuc2hvd0J1dHRvbnMkKSxcbiAgICBtYXAoKFtjb25maWcsIHNob3dCdXR0b25dKSA9PiAoc2hvd0J1dHRvbiA/IGNvbmZpZyA6IHVuZGVmaW5lZCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgQE91dHB1dCgpXG4gIGNsaWNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPERieENhbGVuZGFyRXZlbnQ8VD4+KCk7XG5cbiAgLy8gcmVmcmVzaCBhbnkgdGltZSB0aGUgc2VsZWN0ZWQgZGF5IGZ1bmN0aW9uIHVwZGF0ZXNcbiAgcmVhZG9ubHkgc3RhdGUkID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuc3RhdGUkO1xuXG4gIHJlYWRvbmx5IGJlZm9yZU1vbnRoVmlld1JlbmRlciQgPSB0aGlzLmNvbmZpZyQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+IHtcbiAgICAgIGxldCBmYWN0b3J5OiBPYnNlcnZhYmxlPERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJCZWZvcmVNb250aFZpZXdSZW5kZXJGdW5jdGlvbkZhY3Rvcnk+O1xuXG4gICAgICBpZiAoeC5iZWZvcmVNb250aFZpZXdSZW5kZXJGdW5jdGlvbkZhY3RvcnkpIHtcbiAgICAgICAgZmFjdG9yeSA9IGFzT2JzZXJ2YWJsZSh4LmJlZm9yZU1vbnRoVmlld1JlbmRlckZ1bmN0aW9uRmFjdG9yeSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmYWN0b3J5ID0gYXNPYnNlcnZhYmxlKHguY3VzdG9taXplRGF5KS5waXBlKG1hcCgoeCkgPT4gZGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckJlZm9yZU1vbnRoVmlld1JlbmRlckZhY3RvcnkoeCkpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhY3RvcnkucGlwZShtYXAoKHgpID0+IHgodGhpcy5zdGF0ZSQpKSk7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSByZWZyZXNoJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuc3RhdGUkLCB0aGlzLmJlZm9yZU1vbnRoVmlld1JlbmRlciRdKS5waXBlKFxuICAgIHRocm90dGxlVGltZSgyMCwgdW5kZWZpbmVkLCB7IGxlYWRpbmc6IHRydWUsIHRyYWlsaW5nOiB0cnVlIH0pLFxuICAgIG1hcCgoKSA9PiB1bmRlZmluZWQpXG4gICkgYXMgU3ViamVjdDx1bmRlZmluZWQ+O1xuXG4gIHJlYWRvbmx5IGV2ZW50cyQgPSB0aGlzLmNhbGVuZGFyU3RvcmUudmlzaWJsZUV2ZW50cyQucGlwZShtYXAocHJlcGFyZUFuZFNvcnRDYWxlbmRhckV2ZW50cyksIHNoYXJlUmVwbGF5KDEpKTtcbiAgcmVhZG9ubHkgdmlld0RhdGUkID0gdGhpcy5jYWxlbmRhclN0b3JlLmRhdGUkO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNhbGVuZGFyU3RvcmU6IERieENhbGVuZGFyU3RvcmU8VD4sIHJlYWRvbmx5IGRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZTogRGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLnNldFZpZXdSZWFkb25seVN0YXRlKHRoaXMucmVhZG9ubHkkKTsgLy8gc3luYyB0aGUgcmVhZG9ubHkgc3RhdGVcblxuICAgIHRoaXMuY2FsZW5kYXJTdG9yZS5zZXROYXZpZ2F0aW9uUmFuZ2VMaW1pdCh0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5taW5NYXhEYXRlUmFuZ2UkKTsgLy8gc2V0IG5hdmlnYXRpb24gbGltaXQgdG8gdGhlIG1pbi9tYXggYWxsb3dlZCBkYXRlcy5cbiAgICB0aGlzLmNhbGVuZGFyU3RvcmUuc2V0U2hvd1BhZ2VCdXR0b25zKHRydWUpO1xuXG4gICAgLy8gd2hlbiBhIG5ldyBmaWx0ZXIgaXMgc2V0LCBpZiB0aGUgZmlyc3QgdHdvIHBhZ2VzIG9mIHNlbGVjdGFibGUgaW5kZXhlcyBmaXQgd2l0aGluIHRoZSBjYWxlbmRhciBtb250aCwgZm9jdXMgb24gdGhhdCBjYWxlbmRhciBtb250aC5cbiAgICB0aGlzLl9jZW50ZXJSYW5nZVN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5jdXJyZW50RGF0ZVJhbmdlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIHN3aXRjaE1hcCgoeCkgPT4ge1xuICAgICAgICAgIGxldCByZXN1bHQ6IE9ic2VydmFibGU8W3R5cGVvZiB4LCBib29sZWFuXT4gPSB4XG4gICAgICAgICAgICA/IG9mKFt4LCB0cnVlXSlcbiAgICAgICAgICAgIDogdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUubWluTWF4RGF0ZVJhbmdlJC5waXBlKFxuICAgICAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICAgICAgbWFwKCh5KSA9PiBbeSwgZmFsc2VdIGFzIFt0eXBlb2YgeCwgYm9vbGVhbl0pXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKFt4LCBpc0Zyb21TZWxlY3RlZERhdGVSYW5nZV0pID0+IHtcbiAgICAgICAgaWYgKHg/LnN0YXJ0KSB7XG4gICAgICAgICAgbGV0IHRhcERheTogTWF5YmU8RGF0ZT47XG4gICAgICAgICAgY29uc3Qgc3RhcnRNb250aCA9IGRhdGVSYW5nZSh7IGRhdGU6IHguc3RhcnQsIHR5cGU6IERhdGVSYW5nZVR5cGUuQ0FMRU5EQVJfTU9OVEggfSk7XG4gICAgICAgICAgY29uc3QgbW9udGhUb0ZvY3VzID0gZW5kT2ZXZWVrKHN0YXJ0TW9udGguc3RhcnQpO1xuXG4gICAgICAgICAgaWYgKHguZW5kICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IGVuZE1vbnRoID0gZGF0ZVJhbmdlKHsgZGF0ZTogeC5lbmQsIHR5cGU6IERhdGVSYW5nZVR5cGUuQ0FMRU5EQVJfTU9OVEggfSk7XG5cbiAgICAgICAgICAgIGlmIChpc1NhbWVEYXRlKHN0YXJ0TW9udGguc3RhcnQsIGVuZE1vbnRoLnN0YXJ0KSkge1xuICAgICAgICAgICAgICB0YXBEYXkgPSBtb250aFRvRm9jdXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCF0YXBEYXkgJiYgaXNGcm9tU2VsZWN0ZWREYXRlUmFuZ2UpIHtcbiAgICAgICAgICAgIHRhcERheSA9IG1vbnRoVG9Gb2N1cztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGFwRGF5KSB7XG4gICAgICAgICAgICB0aGlzLmNhbGVuZGFyU3RvcmUudGFwRGF5KHRhcERheSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2xpY2tFdmVudC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2lucHV0UmVhZG9ubHkuY29tcGxldGUoKTtcbiAgICB0aGlzLl9jb25maWcuY29tcGxldGUoKTtcbiAgICB0aGlzLl9jZW50ZXJSYW5nZVN1Yi5kZXN0cm95KCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgY29uZmlnKCkge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcudmFsdWU7XG4gIH1cblxuICBzZXQgY29uZmlnKGNvbmZpZzogTWF5YmU8RGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckNvbXBvbmVudENvbmZpZz4pIHtcbiAgICB0aGlzLl9jb25maWcubmV4dChjb25maWcgPz8ge30pO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHJlYWRvbmx5KHJlYWRvbmx5OiBNYXliZTxib29sZWFuPikge1xuICAgIHRoaXMuX2lucHV0UmVhZG9ubHkubmV4dChyZWFkb25seSk7XG4gIH1cblxuICBkYXlDbGlja2VkKHsgZGF0ZSB9OiB7IGRhdGU6IERhdGUgfSk6IHZvaWQge1xuICAgIHRoaXMucmVhZG9ubHkkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKChyZWFkb25seSkgPT4ge1xuICAgICAgaWYgKCFyZWFkb25seSkge1xuICAgICAgICB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS50b2dnbGVTZWxlY3RlZERhdGVzKGRhdGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZXZlbnRDbGlja2VkKGFjdGlvbjogc3RyaW5nLCBldmVudDogQ2FsZW5kYXJFdmVudDxUPik6IHZvaWQge1xuICAgIHRoaXMuY2xpY2tFdmVudC5lbWl0KHsgYWN0aW9uLCBldmVudCB9KTtcbiAgfVxuXG4gIGJlZm9yZU1vbnRoVmlld1JlbmRlcihyZW5kZXJFdmVudDogQ2FsZW5kYXJNb250aFZpZXdCZWZvcmVSZW5kZXJFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuYmVmb3JlTW9udGhWaWV3UmVuZGVyJC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgeChyZW5kZXJFdmVudCk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkYngtY2FsZW5kYXItYmFzZSBjbGFzcz1cImRieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXJcIiBbbmdDbGFzc109XCIocmVhZG9ubHkkIHwgYXN5bmMpID8gJ2RieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItcmVhZG9ubHknIDogJydcIj5cbiAgPG5nLWNvbnRhaW5lciBjb250cm9scz5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0NsZWFyU2VsZWN0aW9uQnV0dG9uJCB8IGFzeW5jXCI+XG4gICAgICA8ZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1jYWxlbmRhci1zZWxlY3Rpb24tdG9nZ2xlLWJ1dHRvbiBbZGlzYWJsZWRdPVwicmVhZG9ubHkkIHwgYXN5bmNcIj48L2RieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItc2VsZWN0aW9uLXRvZ2dsZS1idXR0b24+XG4gICAgICA8ZGJ4LWJ1dHRvbi1zcGFjZXI+PC9kYngtYnV0dG9uLXNwYWNlcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGJ4LWluamVjdGlvbiBbY29uZmlnXT1cImRhdGVQb3BvdmVyQnV0dG9uSW5qZWN0aW9uQ29uZmlnJCB8IGFzeW5jXCI+PC9kYngtaW5qZWN0aW9uPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGRpdiBjbGFzcz1cImRieC1jYWxlbmRhci1jb250ZW50IGRieC1jYWxlbmRhci1jb250ZW50LW1vbnRoXCI+XG4gICAgPG13bC1jYWxlbmRhci1tb250aC12aWV3IFtyZWZyZXNoXT1cInJlZnJlc2gkXCIgW3ZpZXdEYXRlXT1cIih2aWV3RGF0ZSQgfCBhc3luYykhXCIgW2V2ZW50c109XCIoZXZlbnRzJCB8IGFzeW5jKSFcIiAoZGF5Q2xpY2tlZCk9XCJkYXlDbGlja2VkKCRldmVudC5kYXkpXCIgKGV2ZW50Q2xpY2tlZCk9XCJldmVudENsaWNrZWQoJ0NsaWNrZWQnLCAkZXZlbnQuZXZlbnQpXCIgKGJlZm9yZVZpZXdSZW5kZXIpPVwiYmVmb3JlTW9udGhWaWV3UmVuZGVyKCRldmVudClcIiBbY2VsbFRlbXBsYXRlXT1cIm1vbnRoRGF5Q2VsbFRlbXBsYXRlXCI+PC9td2wtY2FsZW5kYXItbW9udGgtdmlldz5cbiAgPC9kaXY+XG48L2RieC1jYWxlbmRhci1iYXNlPlxuXG48IS0tIENlbGwgLS0+XG48bmctdGVtcGxhdGUgI21vbnRoRGF5Q2VsbFRlbXBsYXRlIGxldC1kYXk9XCJkYXlcIiBsZXQtbG9jYWxlPVwibG9jYWxlXCI+XG4gIDxkaXYgY2xhc3M9XCJjYWwtY2VsbC10b3BcIj5cbiAgICA8c3BhbiBjbGFzcz1cImNhbC1kYXktYmFkZ2VcIiAqbmdJZj1cImRheS5iYWRnZVRvdGFsID4gMFwiPnt7IGRheS5iYWRnZVRvdGFsIH19PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwiY2FsLWRheS1udW1iZXJcIj57eyBkYXkuZGF0ZSB8IGNhbGVuZGFyRGF0ZTogJ21vbnRoVmlld0RheU51bWJlcic6bG9jYWxlIH19PC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItY2VsbCBbZGF5XT1cImRheVwiPjwvZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1jYWxlbmRhci1jZWxsPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -3,7 +3,7 @@ import { Component, Inject, Input, ViewChild } from '@angular/core';
|
|
|
3
3
|
import { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';
|
|
4
4
|
import { DbxCalendarStore } from '@dereekb/dbx-web/calendar';
|
|
5
5
|
import { FormGroup, FormControl } from '@angular/forms';
|
|
6
|
-
import { switchMap, throttleTime, distinctUntilChanged, filter, BehaviorSubject, startWith,
|
|
6
|
+
import { switchMap, throttleTime, distinctUntilChanged, filter, BehaviorSubject, startWith, map, shareReplay, combineLatest, EMPTY } from 'rxjs';
|
|
7
7
|
import { isSameDateDay } from '@dereekb/date';
|
|
8
8
|
import { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';
|
|
9
9
|
import { MatDateRangePicker } from '@angular/material/datepicker';
|
|
@@ -23,7 +23,7 @@ export class DbxScheduleSelectionCalendarDateRangeComponent {
|
|
|
23
23
|
this.matFormFieldDefaultOptions = matFormFieldDefaultOptions;
|
|
24
24
|
this._required = new BehaviorSubject(false);
|
|
25
25
|
this.required$ = this._required.asObservable();
|
|
26
|
-
this.timezone$ = this.dbxCalendarScheduleSelectionStore.
|
|
26
|
+
this.timezone$ = this.dbxCalendarScheduleSelectionStore.effectiveOutputTimezone$;
|
|
27
27
|
this.openPickerOnTextClick = true;
|
|
28
28
|
this.label = 'Enter a date range';
|
|
29
29
|
this.showCustomize = false;
|
|
@@ -108,7 +108,7 @@ export class DbxScheduleSelectionCalendarDateRangeComponent {
|
|
|
108
108
|
.pipe(distinctUntilChanged(), switchMap((opened) => {
|
|
109
109
|
let obs;
|
|
110
110
|
if (opened) {
|
|
111
|
-
obs =
|
|
111
|
+
obs = EMPTY;
|
|
112
112
|
}
|
|
113
113
|
else {
|
|
114
114
|
obs = this.range.valueChanges.pipe(startWith(this.range.value));
|
|
@@ -185,4 +185,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
185
185
|
}], required: [{
|
|
186
186
|
type: Input
|
|
187
187
|
}] } });
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnJhbmdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL2NhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnJhbmdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL2NhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnJhbmdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBbUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUosT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQThCLDhCQUE4QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFMUcsT0FBTyxFQUFnQixrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7Ozs7O0FBV2hGLE1BQU0sT0FBTyw4Q0FBOEM7SUF5R3pELFlBQXFCLGdCQUFr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K0JBQ0UsNENBQTRDOzswQkE0R21GLE1BQU07MkJBQUMsOEJBQThCOzRDQWxHOUsscUJBQXFCO3NCQURwQixLQUFLO2dCQUlOLE1BQU07c0JBREwsU0FBUzt1QkFBQyxRQUFRO2dCQUluQixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlGLFFBQVE7c0JBRFgsS0FBSztnQkFVTixhQUFhO3NCQURaLEtBQUs7Z0JBNklGLFFBQVE7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YnNjcmlwdGlvbk9iamVjdCB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUgfSBmcm9tICcuL2NhbGVuZGFyLnNjaGVkdWxlLnNlbGVjdGlvbi5zdG9yZSc7XG5pbXBvcnQgeyBEYnhDYWxlbmRhclN0b3JlIH0gZnJvbSAnQGRlcmVla2IvZGJ4LXdlYi9jYWxlbmRhcic7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Db250cm9sLCBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0aHJvdHRsZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIEJlaGF2aW9yU3ViamVjdCwgc3RhcnRXaXRoLCBPYnNlcnZhYmxlLCBvZiwgbWFwLCBzaGFyZVJlcGxheSwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaXNTYW1lRGF0ZURheSB9IGZyb20gJ0BkZXJlZWtiL2RhdGUnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkRGVmYXVsdE9wdGlvbnMsIE1BVF9GT1JNX0ZJRUxEX0RFRkFVTFRfT1BUSU9OUyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgRXJyb3JTdGF0ZU1hdGNoZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IERhdGVGaWx0ZXJGbiwgTWF0RGF0ZVJhbmdlUGlja2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5cbmludGVyZmFjZSBSYW5nZVZhbHVlIHtcbiAgc3RhcnQ/OiBNYXliZTxEYXRlPjtcbiAgZW5kPzogTWF5YmU8RGF0ZT47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItZGF0ZS1yYW5nZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24ucmFuZ2UuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlUmFuZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX3JlcXVpcmVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgcmVxdWlyZWQkID0gdGhpcy5fcmVxdWlyZWQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IHRpbWV6b25lJCA9IHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLmN1cnJlbnRUaW1lem9uZSQ7XG5cbiAgQElucHV0KClcbiAgb3BlblBpY2tlck9uVGV4dENsaWNrOiBib29sZWFuID0gdHJ1ZTtcblxuICBAVmlld0NoaWxkKCdwaWNrZXInKVxuICBwaWNrZXIhOiBNYXREYXRlUmFuZ2VQaWNrZXI8RGF0ZT47XG5cbiAgQElucHV0KClcbiAgbGFiZWw/OiBNYXliZTxzdHJpbmc+ID0gJ0VudGVyIGEgZGF0ZSByYW5nZSc7XG5cbiAgQElucHV0KClcbiAgaGludD86IE1heWJlPHN0cmluZz47XG5cbiAgQElucHV0KClcbiAgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBNYXliZTxib29sZWFuPikge1xuICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgdGhpcy5yYW5nZS5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmFuZ2UuZW5hYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgc2hvd0N1c3RvbWl6ZSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX3BpY2tlck9wZW5lZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgX3JlcXVpcmVkU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF9zeW5jU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF92YWx1ZVN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICByZWFkb25seSByYW5nZSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIHN0YXJ0OiBuZXcgRm9ybUNvbnRyb2w8TWF5YmU8RGF0ZT4+KG51bGwpLFxuICAgIGVuZDogbmV3IEZvcm1Db250cm9sPE1heWJlPERhdGU+PihudWxsKVxuICB9KTtcblxuICByZWFkb25seSBlcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIgPSB7XG4gICAgaXNFcnJvclN0YXRlOiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCwgZm9ybSkgPT4ge1xuICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgcmV0dXJuIChjb250cm9sLmludmFsaWQgJiYgKGNvbnRyb2wuZGlydHkgfHwgY29udHJvbC50b3VjaGVkKSkgfHwgKGNvbnRyb2wudG91Y2hlZCAmJiB0aGlzLnJhbmdlLmludmFsaWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICByZWFkb25seSBtaW5EYXRlJCA9IHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLm1pbkRhdGUkO1xuICByZWFkb25seSBtYXhEYXRlJCA9IHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLm1heERhdGUkO1xuICByZWFkb25seSB0aW1lem9uZVJlbGV2ZW50RGF0ZSQgPSB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5jdXJyZW50RGF0ZVJhbmdlJC5waXBlKFxuICAgIG1hcCgoY3VycmVudERhdGVSYW5nZSkgPT4ge1xuICAgICAgcmV0dXJuIGN1cnJlbnREYXRlUmFuZ2UgPyBjdXJyZW50RGF0ZVJhbmdlLnN0YXJ0ID8/IGN1cnJlbnREYXRlUmFuZ2UuZW5kIDogdW5kZWZpbmVkID8/IG5ldyBEYXRlKCk7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpc0N1c3RvbWl6ZWQkID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuaXNDdXN0b21pemVkJDtcbiAgcmVhZG9ubHkgY3VycmVudEVycm9yTWVzc2FnZSQgPSB0aGlzLnJhbmdlLnN0YXR1c0NoYW5nZXMucGlwZShcbiAgICBmaWx0ZXIoKHgpID0+IHggPT09ICdJTlZBTElEJyB8fCB4ID09PSAnVkFMSUQnKSxcbiAgICBtYXAoKHgpID0+IHtcbiAgICAgIGxldCBjdXJyZW50RXJyb3JNZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICh4ID09PSAnSU5WQUxJRCcpIHtcbiAgICAgICAgY29uc3QgeyBzdGFydCwgZW5kIH0gPSB0aGlzLnJhbmdlLmNvbnRyb2xzO1xuXG4gICAgICAgIGlmICh0aGlzLnJhbmdlLmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XG4gICAgICAgICAgY3VycmVudEVycm9yTWVzc2FnZSA9ICdEYXRlIHJhbmdlIGlzIHJlcXVpcmVkJztcbiAgICAgICAgfSBlbHNlIGlmIChzdGFydC5oYXNFcnJvcignbWF0U3RhcnREYXRlSW52YWxpZCcpKSB7XG4gICAgICAgICAgY3VycmVudEVycm9yTWVzc2FnZSA9ICdJbnZhbGlkIHN0YXJ0IGRhdGUnO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0Lmhhc0Vycm9yKCdtYXREYXRlcGlja2VyTWluJykpIHtcbiAgICAgICAgICBjdXJyZW50RXJyb3JNZXNzYWdlID0gJ1N0YXJ0IGRhdGUgaXMgdG9vIGVhcmx5JztcbiAgICAgICAgfSBlbHNlIGlmIChzdGFydC5oYXNFcnJvcignbWF0RGF0ZXBpY2tlck1heCcpKSB7XG4gICAgICAgICAgY3VycmVudEVycm9yTWVzc2FnZSA9ICdTdGFydCBkYXRlIGlzIHRvbyBsYXRlJztcbiAgICAgICAgfSBlbHNlIGlmIChlbmQuaGFzRXJyb3IoJ21hdFN0YXJ0RGF0ZUludmFsaWQnKSkge1xuICAgICAgICAgIGN1cnJlbnRFcnJvck1lc3NhZ2UgPSAnSW52YWxpZCBlbmQgZGF0ZSc7XG4gICAgICAgIH0gZWxzZSBpZiAoZW5kLmhhc0Vycm9yKCdtYXREYXRlcGlja2VyTWluJykpIHtcbiAgICAgICAgICBjdXJyZW50RXJyb3JNZXNzYWdlID0gJ0VuZCBkYXRlIGlzIHRvbyBlYXJseSc7XG4gICAgICAgIH0gZWxzZSBpZiAoZW5kLmhhc0Vycm9yKCdtYXREYXRlcGlja2VyTWF4JykpIHtcbiAgICAgICAgICBjdXJyZW50RXJyb3JNZXNzYWdlID0gJ0VuZCBkYXRlIGlzIHRvbyBsYXRlJztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY3VycmVudEVycm9yTWVzc2FnZTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHBpY2tlck9wZW5lZCQgPSB0aGlzLl9waWNrZXJPcGVuZWQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcmVhZG9ubHkgZGVmYXVsdERhdGVQaWNrZXJGaWx0ZXI6IERhdGVGaWx0ZXJGbjxEYXRlPiA9ICgpID0+IHRydWU7XG4gIHJlYWRvbmx5IGRhdGVQaWNrZXJGaWx0ZXIkOiBPYnNlcnZhYmxlPERhdGVGaWx0ZXJGbjxEYXRlPj4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5pc0VuYWJsZWRGaWx0ZXJEYXlGdW5jdGlvbiQsIHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLmlzSW5BbGxvd2VkRGF5c09mV2Vla0Z1bmN0aW9uJF0pLnBpcGUoXG4gICAgbWFwKChbaXNFbmFibGVkLCBpc0FsbG93ZWREYXlPZldlZWtdKSA9PiB7XG4gICAgICBjb25zdCBmbiA9IChkYXRlOiBEYXRlIHwgbnVsbCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBkYXRlID8gaXNBbGxvd2VkRGF5T2ZXZWVrKGRhdGUpICYmIGlzRW5hYmxlZChkYXRlKSA6IHRydWU7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIGZuO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZGJ4Q2FsZW5kYXJTdG9yZTogRGJ4Q2FsZW5kYXJTdG9yZSwgcmVhZG9ubHkgZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlOiBEYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUsIEBJbmplY3QoTUFUX0ZPUk1fRklFTERfREVGQVVMVF9PUFRJT05TKSByZWFkb25seSBtYXRGb3JtRmllbGREZWZhdWx0T3B0aW9uczogTWF0Rm9ybUZpZWxkRGVmYXVsdE9wdGlvbnMpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fc3luY1N1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5jdXJyZW50SW5wdXRSYW5nZSQuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICB0aGlzLnJhbmdlLnNldFZhbHVlKHtcbiAgICAgICAgc3RhcnQ6IHg/LmlucHV0U3RhcnQgPz8gbnVsbCxcbiAgICAgICAgZW5kOiB4Py5pbnB1dEVuZCA/PyBudWxsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3ZhbHVlU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuX3BpY2tlck9wZW5lZFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHN3aXRjaE1hcCgob3BlbmVkKSA9PiB7XG4gICAgICAgICAgbGV0IG9iczogT2JzZXJ2YWJsZTxSYW5nZVZhbHVlPjtcblxuICAgICAgICAgIGlmIChvcGVuZWQpIHtcbiAgICAgICAgICAgIG9icyA9IG9mKHt9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb2JzID0gdGhpcy5yYW5nZS52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5yYW5nZS52YWx1ZSkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBvYnM7XG4gICAgICAgIH0pLFxuICAgICAgICBmaWx0ZXIoKHgpID0+IEJvb2xlYW4oeC5zdGFydCAmJiB4LmVuZCkpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gaXNTYW1lRGF0ZURheShhLnN0YXJ0LCBiLnN0YXJ0KSAmJiBpc1NhbWVEYXRlRGF5KGEuZW5kLCBiLmVuZCkpLFxuICAgICAgICB0aHJvdHRsZVRpbWUoMTAwLCB1bmRlZmluZWQsIHsgdHJhaWxpbmc6IHRydWUgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcbiAgICAgICAgaWYgKHguc3RhcnQgJiYgeC5lbmQpIHtcbiAgICAgICAgICB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5zZXRJbnB1dFJhbmdlKHsgaW5wdXRTdGFydDogeC5zdGFydCwgaW5wdXRFbmQ6IHguZW5kIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIC8vIGFkZCBhIHJlcXVpcmVkIHZhbGlkYXRvciB3aGVuIG5lZWRlZFxuICAgIHRoaXMuX3JlcXVpcmVkU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuX3JlcXVpcmVkLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHhcbiAgICAgICAgPyBbXG4gICAgICAgICAgICAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gY29udHJvbC52YWx1ZTtcblxuICAgICAgICAgICAgICBpZiAoIXJhbmdlIHx8ICFyYW5nZS5zdGFydCB8fCAhcmFuZ2UuZW5kKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgcmVxdWlyZWQ6IHRydWUgfTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXTtcblxuICAgICAgdGhpcy5yYW5nZS5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fcmVxdWlyZWQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9waWNrZXJPcGVuZWQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9yZXF1aXJlZFN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fc3luY1N1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fdmFsdWVTdWIuZGVzdHJveSgpO1xuICB9XG5cbiAgQElucHV0KClcbiAgZ2V0IHJlcXVpcmVkKCkge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZC52YWx1ZTtcbiAgfVxuXG4gIHNldCByZXF1aXJlZChyZXF1aXJlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkLm5leHQocmVxdWlyZWQpO1xuICB9XG5cbiAgY2xpY2tlZERhdGVSYW5nZUlucHV0KCkge1xuICAgIGlmICh0aGlzLm9wZW5QaWNrZXJPblRleHRDbGljaykge1xuICAgICAgdGhpcy5waWNrZXIub3BlbigpO1xuICAgIH1cbiAgfVxuXG4gIHBpY2tlck9wZW5lZCgpIHtcbiAgICB0aGlzLl9waWNrZXJPcGVuZWQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHBpY2tlckNsb3NlZCgpIHtcbiAgICB0aGlzLl9waWNrZXJPcGVuZWQubmV4dChmYWxzZSk7XG4gIH1cbn1cbiIsIjxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItZGF0ZS1yYW5nZS1maWVsZFwiPlxuICA8bWF0LWxhYmVsICpuZ0lmPVwibGFiZWxcIj57eyBsYWJlbCB9fTwvbWF0LWxhYmVsPlxuICA8ZGl2IGNsYXNzPVwiZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1jYWxlbmRhci1kYXRlLXJhbmdlLWZpZWxkLWNvbnRlbnRcIj5cbiAgICA8IS0tIFByaW1hcnkgQ29udGVudCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZGJ4LWZsZXhcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJzaG93Q3VzdG9taXplICYmIChpc0N1c3RvbWl6ZWQkIHwgYXN5bmMpXCIgY2xhc3M9XCJkYXRlLXJhbmdlLWZpZWxkLWN1c3RvbWl6ZWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkYngtYWNjZW50LWJnIGRhdGUtcmFuZ2UtZmllbGQtY3VzdG9taXplZC10ZXh0XCI+Q3VzdG9tPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGJ4LWJ1dHRvbi1zcGFjZXI+PC9kYngtYnV0dG9uLXNwYWNlcj5cbiAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgY2xhc3M9XCJtYXQtZGF0ZXBpY2tlci1idXR0b24taGlnaGxpZ2h0XCIgbWF0SWNvblN1ZmZpeCBbZm9yXT1cInBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgPGRieC1idXR0b24tc3BhY2VyPjwvZGJ4LWJ1dHRvbi1zcGFjZXI+XG4gICAgICA8bWF0LWRhdGUtcmFuZ2UtaW5wdXQgKGNsaWNrKT1cImNsaWNrZWREYXRlUmFuZ2VJbnB1dCgpXCIgW3JlcXVpcmVkXT1cInJlcXVpcmVkJCB8IGFzeW5jXCIgW2RhdGVGaWx0ZXJdPVwiKGRhdGVQaWNrZXJGaWx0ZXIkIHwgYXN5bmMpID8/IGRlZmF1bHREYXRlUGlja2VyRmlsdGVyXCIgW2Zvcm1Hcm91cF09XCJyYW5nZVwiIFtyYW5nZVBpY2tlcl09XCJwaWNrZXJcIj5cbiAgICAgICAgPGlucHV0IFtlcnJvclN0YXRlTWF0Y2hlcl09XCJlcnJvclN0YXRlTWF0Y2hlclwiIG1hdFN0YXJ0RGF0ZSBmb3JtQ29udHJvbE5hbWU9XCJzdGFydFwiIHBsYWNlaG9sZGVyPVwiU3RhcnQgZGF0ZVwiIC8+XG4gICAgICAgIDxpbnB1dCBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwiZXJyb3JTdGF0ZU1hdGNoZXJcIiBtYXRFbmREYXRlIGZvcm1Db250cm9sTmFtZT1cImVuZFwiIHBsYWNlaG9sZGVyPVwiRW5kIGRhdGVcIiAvPlxuICAgICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cbiAgICAgIDxzcGFuICpuZ0lmPVwidGltZXpvbmUkIHwgYXN5bmNcIiBjbGFzcz1cImRieC1mbGV4LWJhciBkYngtZmFpbnQgZGJ4LW5vd3JhcCBkYngtaWNvbi1zcGFjZXJcIj57eyB0aW1lem9uZSQgfCBhc3luYyB8IHRpbWV6b25lQWJicmV2aWF0aW9uOiAodGltZXpvbmVSZWxldmVudERhdGUkIHwgYXN5bmMpIH19PC9zcGFuPlxuICAgICAgPGRpdiAqbmdJZj1cInNob3dDdXN0b21pemVcIj5cbiAgICAgICAgPGRieC1idXR0b24tc3BhY2VyPjwvZGJ4LWJ1dHRvbi1zcGFjZXI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjdXN0b21pemVCdXR0b25dXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG4gICAgICA8bWF0LWRhdGUtcmFuZ2UtcGlja2VyICNwaWNrZXIgKG9wZW5lZCk9XCJwaWNrZXJPcGVuZWQoKVwiIChjbG9zZWQpPVwicGlja2VyQ2xvc2VkKClcIj48L21hdC1kYXRlLXJhbmdlLXBpY2tlcj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIEN1c3RvbSBDb250ZW50IC0tPlxuICAgIDxkaXY+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8bWF0LWVycm9yICpuZ0lmPVwiY3VycmVudEVycm9yTWVzc2FnZSQgfCBhc3luY1wiPnt7IGN1cnJlbnRFcnJvck1lc3NhZ2UkIHwgYXN5bmMgfX08L21hdC1lcnJvcj5cbiAgPG1hdC1oaW50Pnt7IGhpbnQgfX08L21hdC1oaW50PlxuPC9tYXQtZm9ybS1maWVsZD5cbiJdfQ==
|
|
188
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnJhbmdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL2NhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnJhbmdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL2NhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnJhbmdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBbUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBa0IsR0FBRyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pLLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUE4Qiw4QkFBOEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTFHLE9BQU8sRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7Ozs7OztBQVdoRixNQUFNLE9BQU8sOENBQThDO0lBeUd6RCxZQUFxQixnQkFB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MEJBNEdtRixNQUFNOzJCQUFDLDhCQUE4Qjs0Q0FsRzlLLHFCQUFxQjtzQkFEcEIsS0FBSztnQkFJTixNQUFNO3NCQURMLFNBQVM7dUJBQUMsUUFBUTtnQkFJbkIsS0FBSztzQkFESixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFJRixRQUFRO3NCQURYLEtBQUs7Z0JBVU4sYUFBYTtzQkFEWixLQUFLO2dCQTZJRixRQUFRO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJzY3JpcHRpb25PYmplY3QgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlIH0gZnJvbSAnLi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24uc3RvcmUnO1xuaW1wb3J0IHsgRGJ4Q2FsZW5kYXJTdG9yZSB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWIvY2FsZW5kYXInO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCwgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGhyb3R0bGVUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBCZWhhdmlvclN1YmplY3QsIHN0YXJ0V2l0aCwgT2JzZXJ2YWJsZSwgb2YsIG1hcCwgc2hhcmVSZXBsYXksIGNvbWJpbmVMYXRlc3QsIEVNUFRZIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBpc1NhbWVEYXRlRGF5IH0gZnJvbSAnQGRlcmVla2IvZGF0ZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGREZWZhdWx0T3B0aW9ucywgTUFUX0ZPUk1fRklFTERfREVGQVVMVF9PUFRJT05TIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBFcnJvclN0YXRlTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgRGF0ZUZpbHRlckZuLCBNYXREYXRlUmFuZ2VQaWNrZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcblxuaW50ZXJmYWNlIFJhbmdlVmFsdWUge1xuICBzdGFydD86IE1heWJlPERhdGU+O1xuICBlbmQ/OiBNYXliZTxEYXRlPjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1jYWxlbmRhci1kYXRlLXJhbmdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLnNjaGVkdWxlLnNlbGVjdGlvbi5yYW5nZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckRhdGVSYW5nZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfcmVxdWlyZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSByZXF1aXJlZCQgPSB0aGlzLl9yZXF1aXJlZC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgdGltZXpvbmUkID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuZWZmZWN0aXZlT3V0cHV0VGltZXpvbmUkO1xuXG4gIEBJbnB1dCgpXG4gIG9wZW5QaWNrZXJPblRleHRDbGljazogYm9vbGVhbiA9IHRydWU7XG5cbiAgQFZpZXdDaGlsZCgncGlja2VyJylcbiAgcGlja2VyITogTWF0RGF0ZVJhbmdlUGlja2VyPERhdGU+O1xuXG4gIEBJbnB1dCgpXG4gIGxhYmVsPzogTWF5YmU8c3RyaW5nPiA9ICdFbnRlciBhIGRhdGUgcmFuZ2UnO1xuXG4gIEBJbnB1dCgpXG4gIGhpbnQ/OiBNYXliZTxzdHJpbmc+O1xuXG4gIEBJbnB1dCgpXG4gIHNldCBkaXNhYmxlZChkaXNhYmxlZDogTWF5YmU8Ym9vbGVhbj4pIHtcbiAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMucmFuZ2UuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJhbmdlLmVuYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNob3dDdXN0b21pemUgPSBmYWxzZTtcblxuICBwcml2YXRlIF9waWNrZXJPcGVuZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcml2YXRlIF9yZXF1aXJlZFN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfc3luY1N1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfdmFsdWVTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG5cbiAgcmVhZG9ubHkgcmFuZ2UgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICBzdGFydDogbmV3IEZvcm1Db250cm9sPE1heWJlPERhdGU+PihudWxsKSxcbiAgICBlbmQ6IG5ldyBGb3JtQ29udHJvbDxNYXliZTxEYXRlPj4obnVsbClcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyID0ge1xuICAgIGlzRXJyb3JTdGF0ZTogKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGwsIGZvcm0pID0+IHtcbiAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgIHJldHVybiAoY29udHJvbC5pbnZhbGlkICYmIChjb250cm9sLmRpcnR5IHx8IGNvbnRyb2wudG91Y2hlZCkpIHx8IChjb250cm9sLnRvdWNoZWQgJiYgdGhpcy5yYW5nZS5pbnZhbGlkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgcmVhZG9ubHkgbWluRGF0ZSQgPSB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5taW5EYXRlJDtcbiAgcmVhZG9ubHkgbWF4RGF0ZSQgPSB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5tYXhEYXRlJDtcbiAgcmVhZG9ubHkgdGltZXpvbmVSZWxldmVudERhdGUkID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuY3VycmVudERhdGVSYW5nZSQucGlwZShcbiAgICBtYXAoKGN1cnJlbnREYXRlUmFuZ2UpID0+IHtcbiAgICAgIHJldHVybiBjdXJyZW50RGF0ZVJhbmdlID8gY3VycmVudERhdGVSYW5nZS5zdGFydCA/PyBjdXJyZW50RGF0ZVJhbmdlLmVuZCA6IHVuZGVmaW5lZCA/PyBuZXcgRGF0ZSgpO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaXNDdXN0b21pemVkJCA9IHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLmlzQ3VzdG9taXplZCQ7XG4gIHJlYWRvbmx5IGN1cnJlbnRFcnJvck1lc3NhZ2UkID0gdGhpcy5yYW5nZS5zdGF0dXNDaGFuZ2VzLnBpcGUoXG4gICAgZmlsdGVyKCh4KSA9PiB4ID09PSAnSU5WQUxJRCcgfHwgeCA9PT0gJ1ZBTElEJyksXG4gICAgbWFwKCh4KSA9PiB7XG4gICAgICBsZXQgY3VycmVudEVycm9yTWVzc2FnZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoeCA9PT0gJ0lOVkFMSUQnKSB7XG4gICAgICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gdGhpcy5yYW5nZS5jb250cm9scztcblxuICAgICAgICBpZiAodGhpcy5yYW5nZS5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xuICAgICAgICAgIGN1cnJlbnRFcnJvck1lc3NhZ2UgPSAnRGF0ZSByYW5nZSBpcyByZXF1aXJlZCc7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhcnQuaGFzRXJyb3IoJ21hdFN0YXJ0RGF0ZUludmFsaWQnKSkge1xuICAgICAgICAgIGN1cnJlbnRFcnJvck1lc3NhZ2UgPSAnSW52YWxpZCBzdGFydCBkYXRlJztcbiAgICAgICAgfSBlbHNlIGlmIChzdGFydC5oYXNFcnJvcignbWF0RGF0ZXBpY2tlck1pbicpKSB7XG4gICAgICAgICAgY3VycmVudEVycm9yTWVzc2FnZSA9ICdTdGFydCBkYXRlIGlzIHRvbyBlYXJseSc7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhcnQuaGFzRXJyb3IoJ21hdERhdGVwaWNrZXJNYXgnKSkge1xuICAgICAgICAgIGN1cnJlbnRFcnJvck1lc3NhZ2UgPSAnU3RhcnQgZGF0ZSBpcyB0b28gbGF0ZSc7XG4gICAgICAgIH0gZWxzZSBpZiAoZW5kLmhhc0Vycm9yKCdtYXRTdGFydERhdGVJbnZhbGlkJykpIHtcbiAgICAgICAgICBjdXJyZW50RXJyb3JNZXNzYWdlID0gJ0ludmFsaWQgZW5kIGRhdGUnO1xuICAgICAgICB9IGVsc2UgaWYgKGVuZC5oYXNFcnJvcignbWF0RGF0ZXBpY2tlck1pbicpKSB7XG4gICAgICAgICAgY3VycmVudEVycm9yTWVzc2FnZSA9ICdFbmQgZGF0ZSBpcyB0b28gZWFybHknO1xuICAgICAgICB9IGVsc2UgaWYgKGVuZC5oYXNFcnJvcignbWF0RGF0ZXBpY2tlck1heCcpKSB7XG4gICAgICAgICAgY3VycmVudEVycm9yTWVzc2FnZSA9ICdFbmQgZGF0ZSBpcyB0b28gbGF0ZSc7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGN1cnJlbnRFcnJvck1lc3NhZ2U7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBwaWNrZXJPcGVuZWQkID0gdGhpcy5fcGlja2VyT3BlbmVkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHJlYWRvbmx5IGRlZmF1bHREYXRlUGlja2VyRmlsdGVyOiBEYXRlRmlsdGVyRm48RGF0ZT4gPSAoKSA9PiB0cnVlO1xuICByZWFkb25seSBkYXRlUGlja2VyRmlsdGVyJDogT2JzZXJ2YWJsZTxEYXRlRmlsdGVyRm48RGF0ZT4+ID0gY29tYmluZUxhdGVzdChbdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuaXNFbmFibGVkRmlsdGVyRGF5RnVuY3Rpb24kLCB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5pc0luQWxsb3dlZERheXNPZldlZWtGdW5jdGlvbiRdKS5waXBlKFxuICAgIG1hcCgoW2lzRW5hYmxlZCwgaXNBbGxvd2VkRGF5T2ZXZWVrXSkgPT4ge1xuICAgICAgY29uc3QgZm4gPSAoZGF0ZTogRGF0ZSB8IG51bGwpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZGF0ZSA/IGlzQWxsb3dlZERheU9mV2VlayhkYXRlKSAmJiBpc0VuYWJsZWQoZGF0ZSkgOiB0cnVlO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICAgIHJldHVybiBmbjtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGRieENhbGVuZGFyU3RvcmU6IERieENhbGVuZGFyU3RvcmUsIHJlYWRvbmx5IGRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZTogRGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLCBASW5qZWN0KE1BVF9GT1JNX0ZJRUxEX0RFRkFVTFRfT1BUSU9OUykgcmVhZG9ubHkgbWF0Rm9ybUZpZWxkRGVmYXVsdE9wdGlvbnM6IE1hdEZvcm1GaWVsZERlZmF1bHRPcHRpb25zKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3N5bmNTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuY3VycmVudElucHV0UmFuZ2UkLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgdGhpcy5yYW5nZS5zZXRWYWx1ZSh7XG4gICAgICAgIHN0YXJ0OiB4Py5pbnB1dFN0YXJ0ID8/IG51bGwsXG4gICAgICAgIGVuZDogeD8uaW5wdXRFbmQgPz8gbnVsbFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl92YWx1ZVN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLl9waWNrZXJPcGVuZWRcbiAgICAgIC5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBzd2l0Y2hNYXAoKG9wZW5lZCkgPT4ge1xuICAgICAgICAgIGxldCBvYnM6IE9ic2VydmFibGU8UmFuZ2VWYWx1ZT47XG5cbiAgICAgICAgICBpZiAob3BlbmVkKSB7XG4gICAgICAgICAgICBvYnMgPSBFTVBUWTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb2JzID0gdGhpcy5yYW5nZS52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5yYW5nZS52YWx1ZSkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBvYnM7XG4gICAgICAgIH0pLFxuICAgICAgICBmaWx0ZXIoKHgpID0+IEJvb2xlYW4oeC5zdGFydCAmJiB4LmVuZCkpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gaXNTYW1lRGF0ZURheShhLnN0YXJ0LCBiLnN0YXJ0KSAmJiBpc1NhbWVEYXRlRGF5KGEuZW5kLCBiLmVuZCkpLFxuICAgICAgICB0aHJvdHRsZVRpbWUoMTAwLCB1bmRlZmluZWQsIHsgdHJhaWxpbmc6IHRydWUgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcbiAgICAgICAgaWYgKHguc3RhcnQgJiYgeC5lbmQpIHtcbiAgICAgICAgICB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5zZXRJbnB1dFJhbmdlKHsgaW5wdXRTdGFydDogeC5zdGFydCwgaW5wdXRFbmQ6IHguZW5kIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIC8vIGFkZCBhIHJlcXVpcmVkIHZhbGlkYXRvciB3aGVuIG5lZWRlZFxuICAgIHRoaXMuX3JlcXVpcmVkU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuX3JlcXVpcmVkLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHhcbiAgICAgICAgPyBbXG4gICAgICAgICAgICAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gY29udHJvbC52YWx1ZTtcblxuICAgICAgICAgICAgICBpZiAoIXJhbmdlIHx8ICFyYW5nZS5zdGFydCB8fCAhcmFuZ2UuZW5kKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgcmVxdWlyZWQ6IHRydWUgfTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXTtcblxuICAgICAgdGhpcy5yYW5nZS5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fcmVxdWlyZWQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9waWNrZXJPcGVuZWQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9yZXF1aXJlZFN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fc3luY1N1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fdmFsdWVTdWIuZGVzdHJveSgpO1xuICB9XG5cbiAgQElucHV0KClcbiAgZ2V0IHJlcXVpcmVkKCkge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZC52YWx1ZTtcbiAgfVxuXG4gIHNldCByZXF1aXJlZChyZXF1aXJlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkLm5leHQocmVxdWlyZWQpO1xuICB9XG5cbiAgY2xpY2tlZERhdGVSYW5nZUlucHV0KCkge1xuICAgIGlmICh0aGlzLm9wZW5QaWNrZXJPblRleHRDbGljaykge1xuICAgICAgdGhpcy5waWNrZXIub3BlbigpO1xuICAgIH1cbiAgfVxuXG4gIHBpY2tlck9wZW5lZCgpIHtcbiAgICB0aGlzLl9waWNrZXJPcGVuZWQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHBpY2tlckNsb3NlZCgpIHtcbiAgICB0aGlzLl9waWNrZXJPcGVuZWQubmV4dChmYWxzZSk7XG4gIH1cbn1cbiIsIjxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItZGF0ZS1yYW5nZS1maWVsZFwiPlxuICA8bWF0LWxhYmVsICpuZ0lmPVwibGFiZWxcIj57eyBsYWJlbCB9fTwvbWF0LWxhYmVsPlxuICA8ZGl2IGNsYXNzPVwiZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1jYWxlbmRhci1kYXRlLXJhbmdlLWZpZWxkLWNvbnRlbnRcIj5cbiAgICA8IS0tIFByaW1hcnkgQ29udGVudCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZGJ4LWZsZXhcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJzaG93Q3VzdG9taXplICYmIChpc0N1c3RvbWl6ZWQkIHwgYXN5bmMpXCIgY2xhc3M9XCJkYXRlLXJhbmdlLWZpZWxkLWN1c3RvbWl6ZWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkYngtYWNjZW50LWJnIGRhdGUtcmFuZ2UtZmllbGQtY3VzdG9taXplZC10ZXh0XCI+Q3VzdG9tPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGJ4LWJ1dHRvbi1zcGFjZXI+PC9kYngtYnV0dG9uLXNwYWNlcj5cbiAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgY2xhc3M9XCJtYXQtZGF0ZXBpY2tlci1idXR0b24taGlnaGxpZ2h0XCIgbWF0SWNvblN1ZmZpeCBbZm9yXT1cInBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgPGRieC1idXR0b24tc3BhY2VyPjwvZGJ4LWJ1dHRvbi1zcGFjZXI+XG4gICAgICA8bWF0LWRhdGUtcmFuZ2UtaW5wdXQgKGNsaWNrKT1cImNsaWNrZWREYXRlUmFuZ2VJbnB1dCgpXCIgW3JlcXVpcmVkXT1cInJlcXVpcmVkJCB8IGFzeW5jXCIgW2RhdGVGaWx0ZXJdPVwiKGRhdGVQaWNrZXJGaWx0ZXIkIHwgYXN5bmMpID8/IGRlZmF1bHREYXRlUGlja2VyRmlsdGVyXCIgW2Zvcm1Hcm91cF09XCJyYW5nZVwiIFtyYW5nZVBpY2tlcl09XCJwaWNrZXJcIj5cbiAgICAgICAgPGlucHV0IFtlcnJvclN0YXRlTWF0Y2hlcl09XCJlcnJvclN0YXRlTWF0Y2hlclwiIG1hdFN0YXJ0RGF0ZSBmb3JtQ29udHJvbE5hbWU9XCJzdGFydFwiIHBsYWNlaG9sZGVyPVwiU3RhcnQgZGF0ZVwiIC8+XG4gICAgICAgIDxpbnB1dCBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwiZXJyb3JTdGF0ZU1hdGNoZXJcIiBtYXRFbmREYXRlIGZvcm1Db250cm9sTmFtZT1cImVuZFwiIHBsYWNlaG9sZGVyPVwiRW5kIGRhdGVcIiAvPlxuICAgICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cbiAgICAgIDxzcGFuICpuZ0lmPVwidGltZXpvbmUkIHwgYXN5bmNcIiBjbGFzcz1cImRieC1mbGV4LWJhciBkYngtZmFpbnQgZGJ4LW5vd3JhcCBkYngtaWNvbi1zcGFjZXJcIj57eyB0aW1lem9uZSQgfCBhc3luYyB8IHRpbWV6b25lQWJicmV2aWF0aW9uOiAodGltZXpvbmVSZWxldmVudERhdGUkIHwgYXN5bmMpIH19PC9zcGFuPlxuICAgICAgPGRpdiAqbmdJZj1cInNob3dDdXN0b21pemVcIj5cbiAgICAgICAgPGRieC1idXR0b24tc3BhY2VyPjwvZGJ4LWJ1dHRvbi1zcGFjZXI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjdXN0b21pemVCdXR0b25dXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG4gICAgICA8bWF0LWRhdGUtcmFuZ2UtcGlja2VyICNwaWNrZXIgKG9wZW5lZCk9XCJwaWNrZXJPcGVuZWQoKVwiIChjbG9zZWQpPVwicGlja2VyQ2xvc2VkKClcIj48L21hdC1kYXRlLXJhbmdlLXBpY2tlcj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIEN1c3RvbSBDb250ZW50IC0tPlxuICAgIDxkaXY+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8bWF0LWVycm9yICpuZ0lmPVwiY3VycmVudEVycm9yTWVzc2FnZSQgfCBhc3luY1wiPnt7IGN1cnJlbnRFcnJvck1lc3NhZ2UkIHwgYXN5bmMgfX08L21hdC1lcnJvcj5cbiAgPG1hdC1oaW50Pnt7IGhpbnQgfX08L21hdC1oaW50PlxuPC9tYXQtZm9ybS1maWVsZD5cbiJdfQ==
|