@ptsecurity/mosaic 13.8.4 → 13.9.0

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.
@@ -40,6 +40,7 @@ export interface FormatterRelativeTemplate {
40
40
  export interface DateTimeOptions {
41
41
  seconds?: boolean;
42
42
  milliseconds?: boolean;
43
+ currYear?: boolean;
43
44
  }
44
45
  export interface FormatterConfig {
45
46
  relativeTemplates: {
@@ -103,14 +104,15 @@ export declare class DateFormatter<D> {
103
104
  * @param datetime - should time be shown as well
104
105
  * @param seconds - should time with seconds be shown as well
105
106
  * @param milliseconds - should time with milliseconds be shown as well
106
- * @returns absolute date in common format
107
+ * @param currYear - should current year be shown as well
107
108
  */
108
- absoluteDate(date: D, params: FormatterAbsoluteTemplate, datetime?: boolean, seconds?: boolean, milliseconds?: boolean): string;
109
+ absoluteDate(date: D, params: FormatterAbsoluteTemplate, datetime?: boolean, seconds?: boolean, milliseconds?: boolean, currYear?: boolean): string;
109
110
  /**
110
111
  * @param date - date
112
+ * @param currYear - should the year be shown forced
111
113
  * @returns absolute date in short format
112
114
  */
113
- absoluteShortDate(date: D): string;
115
+ absoluteShortDate(date: D, currYear?: boolean): string;
114
116
  /**
115
117
  * @param date - date
116
118
  * @param options - DateTimeOptions
@@ -119,9 +121,10 @@ export declare class DateFormatter<D> {
119
121
  absoluteShortDateTime(date: D, options?: DateTimeOptions): string;
120
122
  /**
121
123
  * @param date - date
124
+ * @param currYear - should the year be shown forced
122
125
  * @returns absolute date in long format
123
126
  */
124
- absoluteLongDate(date: D): string;
127
+ absoluteLongDate(date: D, currYear?: boolean): string;
125
128
  /**
126
129
  * @param date - date
127
130
  * @param options - DateTimeOptions
@@ -191,6 +194,12 @@ export declare class DateFormatter<D> {
191
194
  * @returns range middle date with time
192
195
  */
193
196
  rangeMiddleDateTime(startDate: D, endDate: D, options?: DateTimeOptions): string;
197
+ /**
198
+ * @param date
199
+ * @param variables - date template variables
200
+ * @param currYearForced - param for absolute days formatting
201
+ * @private
202
+ */
194
203
  private compileVariables;
195
204
  private isBeforeYesterday;
196
205
  private isYesterday;
@@ -1,74 +1,2 @@
1
- export declare const enUS: {
2
- relativeTemplates: {
3
- short: {
4
- BEFORE_YESTERDAY: string;
5
- YESTERDAY: string;
6
- TODAY: string;
7
- TOMORROW: string;
8
- AFTER_TOMORROW: string;
9
- };
10
- long: {
11
- BEFORE_YESTERDAY: string;
12
- YESTERDAY: string;
13
- TODAY: string;
14
- TOMORROW: string;
15
- AFTER_TOMORROW: string;
16
- };
17
- };
18
- absoluteTemplates: {
19
- short: {
20
- DATE: string;
21
- DATETIME: string;
22
- };
23
- long: {
24
- DATE: string;
25
- DATETIME: string;
26
- };
27
- };
28
- rangeTemplates: {
29
- closedRange: {
30
- short: {
31
- START_DATE: string;
32
- END_DATE: string;
33
- DATE: string;
34
- START_DATETIME: string;
35
- END_DATETIME: string;
36
- DATETIME: string;
37
- };
38
- middle: {
39
- START_DATE: string;
40
- END_DATE: string;
41
- DATE: string;
42
- START_DATETIME: string;
43
- END_DATETIME: string;
44
- DATETIME: string;
45
- };
46
- long: {
47
- START_DATE: string;
48
- END_DATE: string;
49
- DATE: string;
50
- START_DATETIME: string;
51
- END_DATETIME: string;
52
- DATETIME: string;
53
- };
54
- };
55
- openedRange: {
56
- short: {
57
- START_DATE: string;
58
- END_DATE: string;
59
- DATE: string;
60
- START_DATETIME: string;
61
- END_DATETIME: string;
62
- DATETIME: string;
63
- };
64
- long: {
65
- START_DATE: string;
66
- END_DATE: string;
67
- DATE: string;
68
- START_DATETIME: string;
69
- END_DATETIME: string;
70
- DATETIME: string;
71
- };
72
- };
73
- };
74
- };
1
+ import { FormatterConfig } from '../formatter';
2
+ export declare const enUS: FormatterConfig;
@@ -1,74 +1,2 @@
1
- export declare const ruRU: {
2
- relativeTemplates: {
3
- short: {
4
- BEFORE_YESTERDAY: string;
5
- YESTERDAY: string;
6
- TODAY: string;
7
- TOMORROW: string;
8
- AFTER_TOMORROW: string;
9
- };
10
- long: {
11
- BEFORE_YESTERDAY: string;
12
- YESTERDAY: string;
13
- TODAY: string;
14
- TOMORROW: string;
15
- AFTER_TOMORROW: string;
16
- };
17
- };
18
- absoluteTemplates: {
19
- short: {
20
- DATE: string;
21
- DATETIME: string;
22
- };
23
- long: {
24
- DATE: string;
25
- DATETIME: string;
26
- };
27
- };
28
- rangeTemplates: {
29
- closedRange: {
30
- short: {
31
- START_DATE: string;
32
- END_DATE: string;
33
- DATE: string;
34
- START_DATETIME: string;
35
- END_DATETIME: string;
36
- DATETIME: string;
37
- };
38
- middle: {
39
- START_DATE: string;
40
- END_DATE: string;
41
- DATE: string;
42
- START_DATETIME: string;
43
- END_DATETIME: string;
44
- DATETIME: string;
45
- };
46
- long: {
47
- START_DATE: string;
48
- END_DATE: string;
49
- DATE: string;
50
- START_DATETIME: string;
51
- END_DATETIME: string;
52
- DATETIME: string;
53
- };
54
- };
55
- openedRange: {
56
- short: {
57
- START_DATE: string;
58
- END_DATE: string;
59
- DATE: string;
60
- START_DATETIME: string;
61
- END_DATETIME: string;
62
- DATETIME: string;
63
- };
64
- long: {
65
- START_DATE: string;
66
- END_DATE: string;
67
- DATE: string;
68
- START_DATETIME: string;
69
- END_DATETIME: string;
70
- DATETIME: string;
71
- };
72
- };
73
- };
74
- };
1
+ import { FormatterConfig } from '../formatter';
2
+ export declare const ruRU: FormatterConfig;
@@ -85,13 +85,13 @@ export class DateFormatter {
85
85
  * @param datetime - should time be shown as well
86
86
  * @param seconds - should time with seconds be shown as well
87
87
  * @param milliseconds - should time with milliseconds be shown as well
88
- * @returns absolute date in common format
88
+ * @param currYear - should current year be shown as well
89
89
  */
90
- absoluteDate(date, params, datetime = false, seconds = false, milliseconds = false) {
90
+ absoluteDate(date, params, datetime = false, seconds = false, milliseconds = false, currYear = false) {
91
91
  if (!this.adapter.isDateInstance(date)) {
92
92
  throw new Error(this.invalidDateErrorText);
93
93
  }
94
- const variables = this.compileVariables(date, { ...this.adapter.config.variables, ...params.variables });
94
+ const variables = this.compileVariables(date, { ...this.adapter.config.variables, ...params.variables }, currYear);
95
95
  variables.SHOW_SECONDS = seconds ? 'yes' : 'no';
96
96
  variables.SHOW_MILLISECONDS = milliseconds ? 'yes' : 'no';
97
97
  const template = datetime ? params.DATETIME : params.DATE;
@@ -99,10 +99,11 @@ export class DateFormatter {
99
99
  }
100
100
  /**
101
101
  * @param date - date
102
+ * @param currYear - should the year be shown forced
102
103
  * @returns absolute date in short format
103
104
  */
104
- absoluteShortDate(date) {
105
- return this.absoluteDate(date, this.config.absoluteTemplates.short);
105
+ absoluteShortDate(date, currYear = false) {
106
+ return this.absoluteDate(date, this.config.absoluteTemplates.short, false, false, false, currYear);
106
107
  }
107
108
  /**
108
109
  * @param date - date
@@ -110,14 +111,15 @@ export class DateFormatter {
110
111
  * @returns absolute date in short format with time
111
112
  */
112
113
  absoluteShortDateTime(date, options) {
113
- return this.absoluteDate(date, this.config.absoluteTemplates.short, true, options?.seconds, options?.milliseconds);
114
+ return this.absoluteDate(date, this.config.absoluteTemplates.short, true, options?.seconds, options?.milliseconds, options?.currYear);
114
115
  }
115
116
  /**
116
117
  * @param date - date
118
+ * @param currYear - should the year be shown forced
117
119
  * @returns absolute date in long format
118
120
  */
119
- absoluteLongDate(date) {
120
- return this.absoluteDate(date, this.config.absoluteTemplates.long);
121
+ absoluteLongDate(date, currYear = false) {
122
+ return this.absoluteDate(date, this.config.absoluteTemplates.long, false, false, false, currYear);
121
123
  }
122
124
  /**
123
125
  * @param date - date
@@ -125,7 +127,7 @@ export class DateFormatter {
125
127
  * @returns absolute date in long format with time
126
128
  */
127
129
  absoluteLongDateTime(date, options) {
128
- return this.absoluteDate(date, this.config.absoluteTemplates.long, true, options?.seconds, options?.milliseconds);
130
+ return this.absoluteDate(date, this.config.absoluteTemplates.long, true, options?.seconds, options?.milliseconds, options?.currYear);
129
131
  }
130
132
  /**
131
133
  * @param startDate - start date
@@ -314,7 +316,13 @@ export class DateFormatter {
314
316
  rangeMiddleDateTime(startDate, endDate, options) {
315
317
  return this.rangeDateTime(startDate, endDate, this.config.rangeTemplates.closedRange.middle, options?.seconds, options?.milliseconds);
316
318
  }
317
- compileVariables(date, variables) {
319
+ /**
320
+ * @param date
321
+ * @param variables - date template variables
322
+ * @param currYearForced - param for absolute days formatting
323
+ * @private
324
+ */
325
+ compileVariables(date, variables, currYearForced = false) {
318
326
  const compiledVariables = {};
319
327
  // tslint:disable-next-line:no-for-in
320
328
  for (const key in variables) {
@@ -324,22 +332,20 @@ export class DateFormatter {
324
332
  const value = variables[key];
325
333
  compiledVariables[key] = this.adapter.format(date, value);
326
334
  }
327
- compiledVariables.CURRENT_YEAR = this.hasSame(date, this.adapter.today(), 'year');
335
+ compiledVariables.CURRENT_YEAR = (currYearForced && 'no') || this.hasSame(date, this.adapter.today(), 'year');
328
336
  return compiledVariables;
329
337
  }
330
338
  isBeforeYesterday(date) {
331
339
  return this.adapter.daysFromToday(date) <= -2;
332
340
  }
333
341
  isYesterday(date) {
334
- const interval = this.adapter.daysFromToday(date);
335
- return interval > -2 && interval <= -1;
342
+ return this.adapter.daysFromToday(date) === -1;
336
343
  }
337
344
  isToday(date) {
338
345
  return this.adapter.daysFromToday(date) === 0;
339
346
  }
340
347
  isTomorrow(date) {
341
- const interval = this.adapter.daysFromToday(date);
342
- return interval >= 1 && interval < 2;
348
+ return this.adapter.daysFromToday(date) === 1;
343
349
  }
344
350
  isAfterTomorrow(date) {
345
351
  return this.adapter.daysFromToday(date) >= 2;
@@ -356,4 +362,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
356
362
  type: Inject,
357
363
  args: [MC_DATE_LOCALE]
358
364
  }] }]; } });
359
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbW9zYWljL2NvcmUvZm9ybWF0dGVycy9kYXRlL2Zvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQ0FBa0M7QUFDbEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsNkJBQTZCO0FBQzdCLE9BQU8sYUFBYSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdkUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBdUV6QyxNQUFNLE9BQU8sYUFBYTtJQU90QixZQUNxQixPQUF1QixFQUNoQixNQUFjO1FBRHJCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBTDNCLHlCQUFvQixHQUFXLGNBQWMsQ0FBQztRQVEzRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRTVDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFjO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxZQUFZLENBQ1IsSUFBTyxFQUNQLFFBQW1DLEVBQ25DLE9BQU8sR0FBRyxLQUFLLEVB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Q0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTyxPQUFPLENBQUMsU0FBWSxFQUFFLE9BQVUsRUFBRSxJQUFZO1FBQ2xELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDekUsQ0FBQzs7aUpBdmJRLGFBQWEsNkNBU1YsY0FBYztxSkFUakIsYUFBYTs0RkFBYixhQUFhO2tCQUR6QixVQUFVOzswQkFVRixNQUFNOzJCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0c2xpbnQ6ZGlzYWJsZTpuby1tYWdpYy1udW1iZXJzXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbi8vIHRzbGludDpkaXNhYmxlOmltcG9ydC1uYW1lXG5pbXBvcnQgTWVzc2FnZUZvcm1hdCBmcm9tICdAbWVzc2FnZWZvcm1hdC9jb3JlJztcbmltcG9ydCB7IERhdGVBZGFwdGVyLCBNQ19EQVRFX0xPQ0FMRSB9IGZyb20gJ0BwdHNlY3VyaXR5L2Nkay9kYXRldGltZSc7XG5cbmltcG9ydCB7IGVuVVMgfSBmcm9tICcuL3RlbXBsYXRlcy9lbi1VUyc7XG5pbXBvcnQgeyBydVJVIH0gZnJvbSAnLi90ZW1wbGF0ZXMvcnUtUlUnO1xuXG5cbi8qKlxuICogaW50ZXJmYWNlIGZvciBhYnNvbHV0ZSBkYXRlIG9yIGRhdGV0aW1lIGZvcm1hdHRlciB0ZW1wbGF0ZVxuICovXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0dGVyQWJzb2x1dGVUZW1wbGF0ZSB7XG4gICAgdmFyaWFibGVzPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgREFURTogc3RyaW5nO1xuICAgIERBVEVUSU1FOiBzdHJpbmc7XG59XG5cbi8qKlxuICogaW50ZXJmYWNlIGZvciByYW5nZSBkYXRlIG9yIGRhdGV0aW1lIGZvcm1hdHRlciB0ZW1wbGF0ZVxuICovXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0dGVyUmFuZ2VUZW1wbGF0ZSB7XG4gICAgdmFyaWFibGVzPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgU1RBUlRfREFURTogc3RyaW5nO1xuICAgIEVORF9EQVRFOiBzdHJpbmc7XG4gICAgREFURTogc3RyaW5nO1xuICAgIFNUQVJUX0RBVEVUSU1FOiBzdHJpbmc7XG4gICAgRU5EX0RBVEVUSU1FOiBzdHJpbmc7XG4gICAgREFURVRJTUU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBpbnRlcmZhY2UgZm9yIHJlbGF0aXZlIGRhdGUgb3IgZGF0ZXRpbWUgZm9ybWF0dGVyIHRlbXBsYXRlXG4gKi9cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuYW1pbmctY29udmVudGlvblxuZXhwb3J0IGludGVyZmFjZSBGb3JtYXR0ZXJSZWxhdGl2ZVRlbXBsYXRlIHtcbiAgICB2YXJpYWJsZXM/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICBCRUZPUkVfWUVTVEVSREFZOiBzdHJpbmc7XG4gICAgWUVTVEVSREFZOiBzdHJpbmc7XG4gICAgVE9EQVk6IHN0cmluZztcbiAgICBUT01PUlJPVzogc3RyaW5nO1xuICAgIEFGVEVSX1RPTU9SUk9XOiBzdHJpbmc7XG59XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuYW1pbmctY29udmVudGlvblxuZXhwb3J0IGludGVyZmFjZSBEYXRlVGltZU9wdGlvbnMge1xuICAgIHNlY29uZHM/OiBib29sZWFuO1xuICAgIG1pbGxpc2Vjb25kcz86IGJvb2xlYW47XG59XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuYW1pbmctY29udmVudGlvblxuZXhwb3J0IGludGVyZmFjZSBGb3JtYXR0ZXJDb25maWcge1xuICAgIHJlbGF0aXZlVGVtcGxhdGVzOiB7XG4gICAgICAgIHNob3J0OiBGb3JtYXR0ZXJSZWxhdGl2ZVRlbXBsYXRlO1xuICAgICAgICBsb25nOiBGb3JtYXR0ZXJSZWxhdGl2ZVRlbXBsYXRlO1xuICAgIH07XG4gICAgYWJzb2x1dGVUZW1wbGF0ZXM6IHtcbiAgICAgICAgc2hvcnQ6IEZvcm1hdHRlckFic29sdXRlVGVtcGxhdGU7XG4gICAgICAgIGxvbmc6IEZvcm1hdHRlckFic29sdXRlVGVtcGxhdGU7XG4gICAgfTtcbiAgICByYW5nZVRlbXBsYXRlczoge1xuICAgICAgICBjbG9zZWRSYW5nZToge1xuICAgICAgICAgICAgc2hvcnQ6IEZvcm1hdHRlclJhbmdlVGVtcGxhdGU7XG4gICAgICAgICAgICBtaWRkbGU6IEZvcm1hdHRlclJhbmdlVGVtcGxhdGU7XG4gICAgICAgICAgICBsb25nOiBGb3JtYXR0ZXJSYW5nZVRlbXBsYXRlO1xuICAgICAgICB9O1xuICAgICAgICBvcGVuZWRSYW5nZToge1xuICAgICAgICAgICAgc2hvcnQ6IEZvcm1hdHRlclJhbmdlVGVtcGxhdGU7XG4gICAgICAgICAgICBsb25nOiBGb3JtYXR0ZXJSYW5nZVRlbXBsYXRlO1xuICAgICAgICB9O1xuICAgIH07XG59XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhdGVGb3JtYXR0ZXI8RD4ge1xuICAgIGNvbmZpZzogRm9ybWF0dGVyQ29uZmlnO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnZhbGlkRGF0ZUVycm9yVGV4dDogc3RyaW5nID0gJ0ludmFsaWQgZGF0ZSc7XG5cbiAgICBwcml2YXRlIG1lc3NhZ2VGb3JtYXQ6IE1lc3NhZ2VGb3JtYXQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhZGFwdGVyOiBEYXRlQWRhcHRlcjxEPixcbiAgICAgICAgQEluamVjdChNQ19EQVRFX0xPQ0FMRSkgbG9jYWxlOiBzdHJpbmdcbiAgICApIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSBsb2NhbGUgPT09ICdlbicgPyBlblVTIDogcnVSVTtcblxuICAgICAgICB0aGlzLm1lc3NhZ2VGb3JtYXQgPSBuZXcgTWVzc2FnZUZvcm1hdChsb2NhbGUpO1xuICAgIH1cblxuICAgIHNldExvY2FsZShsb2NhbGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGxvY2FsZSA9PT0gJ2VuJyA/IGVuVVMgOiBydVJVO1xuXG4gICAgICAgIHRoaXMuYWRhcHRlci5zZXRMb2NhbGUobG9jYWxlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZGF0ZSAtIGRhdGVcbiAgICAgKiBAcGFyYW0gdGVtcGxhdGUgLSB0ZW1wbGF0ZVxuICAgICAqIEByZXR1cm5zIHJlbGF0aXZlIGRhdGUgYnkgdGVtcGxhdGVcbiAgICAgKi9cbiAgICByZWxhdGl2ZURhdGUoXG4gICAgICAgIGRhdGU6IEQsXG4gICAgICAgIHRlbXBsYXRlOiBGb3JtYXR0ZXJSZWxhdGl2ZVRlbXBsYXRlLFxuICAgICAgICBzZWNvbmRzID0gZmFsc2UsXG4gICAgICAgIG1pbGxpc2Vjb25kcyA9IGZhbHNlXG4gICAgKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLmFkYXB0ZXIuaXNEYXRlSW5zdGFuY2UoZGF0ZSkpIHsgdGhyb3cgbmV3IEVycm9yKHRoaXMuaW52YWxpZERhdGVFcnJvclRleHQpOyB9XG5cbiAgICAgICAgbGV0IG5ld1RlbXBsYXRlO1xuXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlVmFyaWFibGVzID0gey4uLnRoaXMuYWRhcHRlci5jb25maWcudmFyaWFibGVzLCAuLi50ZW1wbGF0ZS52YXJpYWJsZXN9O1xuXG4gICAgICAgIGlmICh0aGlzLmlzQmVmb3JlWWVzdGVyZGF5KGRhdGUpKSB7XG4gICAgICAgICAgICBuZXdUZW1wbGF0ZSA9IHRlbXBsYXRlLkJFRk9SRV9ZRVNURVJEQVk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1llc3RlcmRheShkYXRlKSkge1xuICAgICAgICAgICAgbmV3VGVtcGxhdGUgPSB0ZW1wbGF0ZS5ZRVNURVJEQVk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1RvZGF5KGRhdGUpKSB7XG4gICAgICAgICAgICBuZXdUZW1wbGF0ZSA9IHRlbXBsYXRlLlRPREFZO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNUb21vcnJvdyhkYXRlKSkge1xuICAgICAgICAgICAgbmV3VGVtcGxhdGUgPSB0ZW1wbGF0ZS5UT01PUlJPVztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzQWZ0ZXJUb21vcnJvdyhkYXRlKSkge1xuICAgICAgICAgICAgbmV3VGVtcGxhdGUgPSB0ZW1wbGF0ZS5BRlRFUl9UT01PUlJPVztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlcyA9IHRoaXMuY29tcGlsZVZhcmlhYmxlcyhkYXRlLCB0ZW1wbGF0ZVZhcmlhYmxlcyk7XG5cbiAgICAgICAgdmFyaWFibGVzLlNIT1dfU0VDT05EUyA9IHNlY29uZHMgPyAneWVzJyA6ICdubyc7XG4gICAgICAgIHZhcmlhYmxlcy5TSE9XX01JTExJU0VDT05EUyA9IG1pbGxpc2Vjb25kcyA/ICd5ZXMnIDogJ25vJztcblxuICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlRm9ybWF0LmNvbXBpbGUobmV3VGVtcGxhdGUpKHZhcmlhYmxlcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGRhdGUgLSBkYXRlXG4gICAgICogQHJldHVybnMgcmVsYXRpdmUgZGF0ZSBpbiBzaG9ydCBmb3JtYXRcbiAgICAgKi9cbiAgICByZWxhdGl2ZVNob3J0RGF0ZShkYXRlOiBEKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVsYXRpdmVEYXRlKGRhdGUsIHRoaXMuY29uZmlnLnJlbGF0aXZlVGVtcGxhdGVzLnNob3J0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZGF0ZSAtIGRhdGVcbiAgICAgKiBAcmV0dXJucyByZWxhdGl2ZSBkYXRlIGluIGxvbmcgZm9ybWF0XG4gICAgICovXG4gICAgcmVsYXRpdmVMb25nRGF0ZShkYXRlOiBEKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVsYXRpdmVEYXRlKGRhdGUsIHRoaXMuY29uZmlnLnJlbGF0aXZlVGVtcGxhdGVzLmxvbmcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkYXRlIC0gZGF0ZVxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gRGF0ZVRpbWVPcHRpb25zXG4gICAgICogQHJldHVybnMgcmVsYXRpdmUgZGF0ZSBpbiBzaG9ydCBmb3JtYXQgd2l0aCB0aW1lXG4gICAgICovXG4gICAgcmVsYXRpdmVTaG9ydERhdGVUaW1lKGRhdGU6IEQsIG9wdGlvbnM/OiBEYXRlVGltZU9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWxhdGl2ZURhdGUoZGF0ZSwgdGhpcy5jb25maWcucmVsYXRpdmVUZW1wbGF0ZXMuc2hvcnQsIG9wdGlvbnM/LnNlY29uZHMsIG9wdGlvbnM/Lm1pbGxpc2Vjb25kcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGRhdGUgLSBkYXRlXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBEYXRlVGltZU9wdGlvbnNcbiAgICAgKiBAcmV0dXJucyByZWxhdGl2ZSBkYXRlIGluIGxvbmcgZm9ybWF0IHdpdGggdGltZVxuICAgICAqL1xuICAgIHJlbGF0aXZlTG9uZ0RhdGVUaW1lKGRhdGU6IEQsIG9wdGlvbnM/OiBEYXRlVGltZU9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWxhdGl2ZURhdGUoZGF0ZSwgdGhpcy5jb25maWcucmVsYXRpdmVUZW1wbGF0ZXMubG9uZywgb3B0aW9ucz8uc2Vjb25kcywgb3B0aW9ucz8ubWlsbGlzZWNvbmRzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZGF0ZSAtIGRhdGVcbiAgICAgKiBAcGFyYW0gcGFyYW1zIC0gcGFyYW1ldGVyc1xuICAgICAqIEBwYXJhbSBkYXRldGltZSAtIHNob3VsZCB0aW1lIGJlIHNob3duIGFzIHdlbGxcbiAgICAgKiBAcGFyYW0gc2Vjb25kcyAtIHNob3VsZCB0aW1lIHdpdGggc2Vjb25kcyBiZSBzaG93biBhcyB3ZWxsXG4gICAgICogQHBhcmFtIG1pbGxpc2Vjb25kcyAtIHNob3VsZCB0aW1lIHdpdGggbWlsbGlzZWNvbmRzIGJlIHNob3duIGFzIHdlbGxcbiAgICAgKiBAcmV0dXJucyBhYnNvbHV0ZSBkYXRlIGluIGNvbW1vbiBmb3JtYXRcbiAgICAgKi9cbiAgICBhYnNvbHV0ZURhdGUoXG4gICAgICAgIGRhdGU6IEQsXG4gICAgICAgIHBhcmFtczogRm9ybWF0dGVyQWJzb2x1dGVUZW1wbGF0ZSxcbiAgICAgICAgZGF0ZXRpbWUgPSBmYWxzZSxcbiAgICAgICAgc2Vjb25kcyA9IGZhbHNlLFxuICAgICAgICBtaWxsaXNlY29uZHMgPSBmYWxzZVxuICAgICk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdGhpcy5hZGFwdGVyLmlzRGF0ZUluc3RhbmNlKGRhdGUpKSB7IHRocm93IG5ldyBFcnJvcih0aGlzLmludmFsaWREYXRlRXJyb3JUZXh0KTsgfVxuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlcyA9IHRoaXMuY29tcGlsZVZhcmlhYmxlcyhkYXRlLCB7IC4uLnRoaXMuYWRhcHRlci5jb25maWcudmFyaWFibGVzLCAuLi5wYXJhbXMudmFyaWFibGVzIH0pO1xuXG4gICAgICAgIHZhcmlhYmxlcy5TSE9XX1NFQ09ORFMgPSBzZWNvbmRzID8gJ3llcycgOiAnbm8nO1xuICAgICAgICB2YXJpYWJsZXMuU0hPV19NSUxMSVNFQ09ORFMgPSBtaWxsaXNlY29uZHMgPyAneWVzJyA6ICdubyc7XG5cbiAgICAgICAgY29uc3QgdGVtcGxhdGUgPSBkYXRldGltZSA/IHBhcmFtcy5EQVRFVElNRSA6IHBhcmFtcy5EQVRFO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2VGb3JtYXQuY29tcGlsZSh0ZW1wbGF0ZSkodmFyaWFibGVzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZGF0ZSAtIGRhdGVcbiAgICAgKiBAcmV0dXJucyBhYnNvbHV0ZSBkYXRlIGluIHNob3J0IGZvcm1hdFxuICAgICAqL1xuICAgIGFic29sdXRlU2hvcnREYXRlKGRhdGU6IEQpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5hYnNvbHV0ZURhdGUoZGF0ZSwgdGhpcy5jb25maWcuYWJzb2x1dGVUZW1wbGF0ZXMuc2hvcnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkYXRlIC0gZGF0ZVxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gRGF0ZVRpbWVPcHRpb25zXG4gICAgICogQHJldHVybnMgYWJzb2x1dGUgZGF0ZSBpbiBzaG9ydCBmb3JtYXQgd2l0aCB0aW1lXG4gICAgICovXG4gICAgYWJzb2x1dGVTaG9ydERhdGVUaW1lKGRhdGU6IEQsIG9wdGlvbnM/OiBEYXRlVGltZU9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5hYnNvbHV0ZURhdGUoZGF0ZSwgdGhpcy5jb25maWcuYWJzb2x1dGVUZW1wbGF0ZXMuc2hvcnQsIHRydWUsIG9wdGlvbnM/LnNlY29uZHMsIG9wdGlvbnM/Lm1pbGxpc2Vjb25kcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGRhdGUgLSBkYXRlXG4gICAgICogQHJldHVybnMgYWJzb2x1dGUgZGF0ZSBpbiBsb25nIGZvcm1hdFxuICAgICAqL1xuICAgIGFic29sdXRlTG9uZ0RhdGUoZGF0ZTogRCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFic29sdXRlRGF0ZShkYXRlLCB0aGlzLmNvbmZpZy5hYnNvbHV0ZVRlbXBsYXRlcy5sb25nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZGF0ZSAtIGRhdGVcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIERhdGVUaW1lT3B0aW9uc1xuICAgICAqIEByZXR1cm5zIGFic29sdXRlIGRhdGUgaW4gbG9uZyBmb3JtYXQgd2l0aCB0aW1lXG4gICAgICovXG4gICAgYWJzb2x1dGVMb25nRGF0ZVRpbWUoZGF0ZTogRCwgb3B0aW9ucz86IERhdGVUaW1lT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFic29sdXRlRGF0ZShkYXRlLCB0aGlzLmNvbmZpZy5hYnNvbHV0ZVRlbXBsYXRlcy5sb25nLCB0cnVlLCBvcHRpb25zPy5zZWNvbmRzLCBvcHRpb25zPy5taWxsaXNlY29uZHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBzdGFydERhdGUgLSBzdGFydCBkYXRlXG4gICAgICogQHBhcmFtIGVuZERhdGUgLSBlbmQgZGF0ZVxuICAgICAqIEBwYXJhbSB0ZW1wbGF0ZSAtIHRlbXBsYXRlXG4gICAgICogQHJldHVybnMgb3BlbmVkIGRhdGVcbiAgICAgKi9cbiAgICBvcGVuZWRSYW5nZURhdGUoc3RhcnREYXRlOiBEIHwgbnVsbCwgZW5kRGF0ZTogRCB8IG51bGwsIHRlbXBsYXRlOiBGb3JtYXR0ZXJSYW5nZVRlbXBsYXRlKSB7XG4gICAgICAgIGlmICghdGhpcy5hZGFwdGVyLmlzRGF0ZUluc3RhbmNlKHN0YXJ0RGF0ZSkgJiYgIXRoaXMuYWRhcHRlci5pc0RhdGVJbnN0YW5jZShlbmREYXRlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMuaW52YWxpZERhdGVFcnJvclRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFyaWFibGVzID0geyAuLi50aGlzLmFkYXB0ZXIuY29uZmlnLnZhcmlhYmxlcywgLi4udGVtcGxhdGUudmFyaWFibGVzIH07XG4gICAgICAgIGxldCBwYXJhbXMgPSB7fTtcblxuICAgICAgICBpZiAoc3RhcnREYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBzdGFydERhdGVWYXJpYWJsZXMgPSB0aGlzLmNvbXBpbGVWYXJpYWJsZXMoc3RhcnREYXRlLCB2YXJpYWJsZXMpO1xuXG4gICAgICAgICAgICBwYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgLi4udmFyaWFibGVzLFxuICAgICAgICAgICAgICAgIFNUQVJUX0RBVEU6IHRoaXMubWVzc2FnZUZvcm1hdC5jb21waWxlKHRlbXBsYXRlLlNUQVJUX0RBVEUpKHN0YXJ0RGF0ZVZhcmlhYmxlcyksXG4gICAgICAgICAgICAgICAgUkFOR0VfVFlQRTogJ29ubHlTdGFydCdcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAoZW5kRGF0ZSkge1xuICAgICAgICAgICAgY29uc3QgZW5kRGF0ZVZhcmlhYmxlcyA9IHRoaXMuY29tcGlsZVZhcmlhYmxlcyhlbmREYXRlLCB2YXJpYWJsZXMpO1xuXG4gICAgICAgICAgICBwYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgLi4udmFyaWFibGVzLFxuICAgICAgICAgICAgICAgIEVORF9EQVRFOiB0aGlzLm1lc3NhZ2VGb3JtYXQuY29tcGlsZSh0ZW1wbGF0ZS5FTkRfREFURSkoZW5kRGF0ZVZhcmlhYmxlcyksXG4gICAgICAgICAgICAgICAgUkFOR0VfVFlQRTogJ29ubHlFbmQnXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZUZvcm1hdC5jb21waWxlKHRlbXBsYXRlLkRBVEUpKHBhcmFtcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHN0YXJ0RGF0ZSAtIHN0YXJ0IGRhdGVcbiAgICAgKiBAcGFyYW0gZW5kRGF0ZSAtIGVuZCBkYXRlXG4gICAgICogQHBhcmFtIHRlbXBsYXRlIC0gdGVtcGxhdGVcbiAgICAgKiBAcGFyYW0gc2Vjb25kcyAtIHNob3VsZCB0aW1lIHdpdGggc2Vjb25kcyBiZSBzaG93biBhcyB3ZWxsXG4gICAgICogQHBhcmFtIG1pbGxpc2Vjb25kcyAtIHNob3VsZCB0aW1lIHdpdGggbWlsbGlzZWNvbmRzIGJlIHNob3duIGFzIHdlbGxcbiAgICAgKiBAcmV0dXJucyBvcGVuZWQgZGF0ZVxuICAgICAqL1xuICAgIG9wZW5lZFJhbmdlRGF0ZVRpbWUoXG4gICAgICAgIHN0YXJ0RGF0ZTogRCB8IG51bGwsXG4gICAgICAgIGVuZERhdGU6IEQgfCBudWxsLFxuICAgICAgICB0ZW1wbGF0ZTogRm9ybWF0dGVyUmFuZ2VUZW1wbGF0ZSxcbiAgICAgICAgc2Vjb25kcyA9IGZhbHNlLFxuICAgICAgICBtaWxsaXNlY29uZHMgPSBmYWxzZVxuICAgICkge1xuICAgICAgICBpZiAoIXRoaXMuYWRhcHRlci5pc0RhdGVJbnN0YW5jZShzdGFydERhdGUpICYmICF0aGlzLmFkYXB0ZXIuaXNEYXRlSW5zdGFuY2UoZW5kRGF0ZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLmludmFsaWREYXRlRXJyb3JUZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlcyA9IHsgLi4udGhpcy5hZGFwdGVyLmNvbmZpZy52YXJpYWJsZXMsIC4uLnRlbXBsYXRlLnZhcmlhYmxlcyB9O1xuICAgICAgICBsZXQgcGFyYW1zID0ge307XG5cbiAgICAgICAgaWYgKHN0YXJ0RGF0ZSkge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnREYXRlVmFyaWFibGVzID0gdGhpcy5jb21waWxlVmFyaWFibGVzKHN0YXJ0RGF0ZSwgdmFyaWFibGVzKTtcbiAgICAgICAgICAgIHN0YXJ0RGF0ZVZhcmlhYmxlcy5TSE9XX1NFQ09ORFMgPSBzZWNvbmRzID8gJ3llcycgOiAnbm8nO1xuICAgICAgICAgICAgc3RhcnREYXRlVmFyaWFibGVzLlNIT1dfTUlMTElTRUNPTkRTID0gbWlsbGlzZWNvbmRzID8gJ3llcycgOiAnbm8nO1xuXG4gICAgICAgICAgICBwYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgLi4udmFyaWFibGVzLFxuICAgICAgICAgICAgICAgIFNUQVJUX0RBVEVUSU1FOiB0aGlzLm1lc3NhZ2VGb3JtYXQuY29tcGlsZSh0ZW1wbGF0ZS5TVEFSVF9EQVRFVElNRSkoc3RhcnREYXRlVmFyaWFibGVzKSxcbiAgICAgICAgICAgICAgICBSQU5HRV9UWVBFOiAnb25seVN0YXJ0J1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmIChlbmREYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBlbmREYXRlVmFyaWFibGVzID0gdGhpcy5jb21waWxlVmFyaWFibGVzKGVuZERhdGUsIHZhcmlhYmxlcyk7XG4gICAgICAgICAgICBlbmREYXRlVmFyaWFibGVzLlNIT1dfU0VDT05EUyA9IHNlY29uZHMgPyAneWVzJyA6ICdubyc7XG4gICAgICAgICAgICBlbmREYXRlVmFyaWFibGVzLlNIT1dfTUlMTElTRUNPTkRTID0gbWlsbGlzZWNvbmRzID8gJ3llcycgOiAnbm8nO1xuXG4gICAgICAgICAgICBwYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgLi4udmFyaWFibGVzLFxuICAgICAgICAgICAgICAgIEVORF9EQVRFVElNRTogdGhpcy5tZXNzYWdlRm9ybWF0LmNvbXBpbGUodGVtcGxhdGUuRU5EX0RBVEVUSU1FKShlbmREYXRlVmFyaWFibGVzKSxcbiAgICAgICAgICAgICAgICBSQU5HRV9UWVBFOiAnb25seUVuZCdcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlRm9ybWF0LmNvbXBpbGUodGVtcGxhdGUuREFURVRJTUUpKHBhcmFtcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHN0YXJ0RGF0ZSAtIHN0YXJ0IGRhdGVcbiAgICAgKiBAcGFyYW0gZW5kRGF0ZSAtIGVuZCBkYXRlXG4gICAgICogQHBhcmFtIHRlbXBsYXRlIC0gdGVtcGxhdGVcbiAgICAgKiBAcmV0dXJucyByYW5nZSBkYXRlIGluIHRlbXBsYXRlIGZvcm1hdFxuICAgICAqL1xuICAgIHJhbmdlRGF0ZShzdGFydERhdGU6IEQsIGVuZERhdGU6IEQsIHRlbXBsYXRlOiBGb3JtYXR0ZXJSYW5nZVRlbXBsYXRlKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLmFkYXB0ZXIuaXNEYXRlSW5zdGFuY2Uoc3RhcnREYXRlKSB8fCAhdGhpcy5hZGFwdGVyLmlzRGF0ZUluc3RhbmNlKGVuZERhdGUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5pbnZhbGlkRGF0ZUVycm9yVGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YXJpYWJsZXMgPSB7IC4uLnRoaXMuYWRhcHRlci5jb25maWcudmFyaWFibGVzLCAuLi50ZW1wbGF0ZS52YXJpYWJsZXMgfTtcbiAgICAgICAgY29uc3Qgc2FtZU1vbnRoID0gdGhpcy5oYXNTYW1lKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgJ21vbnRoJyk7XG5cbiAgICAgICAgY29uc3Qgc3RhcnREYXRlVmFyaWFibGVzID0gdGhpcy5jb21waWxlVmFyaWFibGVzKHN0YXJ0RGF0ZSwgdmFyaWFibGVzKTtcbiAgICAgICAgc3RhcnREYXRlVmFyaWFibGVzLlNBTUVfTU9OVEggPSBzYW1lTW9udGg7XG5cbiAgICAgICAgY29uc3QgZW5kRGF0ZVZhcmlhYmxlcyA9IHRoaXMuY29tcGlsZVZhcmlhYmxlcyhlbmREYXRlLCB2YXJpYWJsZXMpO1xuICAgICAgICBlbmREYXRlVmFyaWFibGVzLlNBTUVfTU9OVEggPSBzYW1lTW9udGg7XG5cbiAgICAgICAgY29uc3QgYm90aEN1cnJlbnRZZWFyID0gc3RhcnREYXRlVmFyaWFibGVzLkNVUlJFTlRfWUVBUiA9PT0gJ3llcycgJiYgZW5kRGF0ZVZhcmlhYmxlcy5DVVJSRU5UX1lFQVIgPT09ICd5ZXMnO1xuICAgICAgICBzdGFydERhdGVWYXJpYWJsZXMuQ1VSUkVOVF9ZRUFSID0gYm90aEN1cnJlbnRZZWFyID8gJ3llcycgOiAnbm8nO1xuICAgICAgICBlbmREYXRlVmFyaWFibGVzLkNVUlJFTlRfWUVBUiA9IGJvdGhDdXJyZW50WWVhciA/ICd5ZXMnIDogJ25vJztcblxuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICAuLi52YXJpYWJsZXMsXG4gICAgICAgICAgICBTVEFSVF9EQVRFOiB0aGlzLm1lc3NhZ2VGb3JtYXQuY29tcGlsZSh0ZW1wbGF0ZS5TVEFSVF9EQVRFKShzdGFydERhdGVWYXJpYWJsZXMpLFxuICAgICAgICAgICAgRU5EX0RBVEU6IHRoaXMubWVzc2FnZUZvcm1hdC5jb21waWxlKHRlbXBsYXRlLkVORF9EQVRFKShlbmREYXRlVmFyaWFibGVzKSxcbiAgICAgICAgICAgIFNBTUVfTU9OVEg6IHNhbWVNb250aFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2VGb3JtYXQuY29tcGlsZSh0ZW1wbGF0ZS5EQVRFKShwYXJhbXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBzdGFydERhdGUgLSBzdGFydCBkYXRlXG4gICAgICogQHBhcmFtIGVuZERhdGUgLSBlbmQgZGF0ZVxuICAgICAqIEBwYXJhbSB0ZW1wbGF0ZSAtIHRlbXBsYXRlXG4gICAgICogQHJldHVybnMgcmFuZ2UgZGF0ZSBpbiB0ZW1wbGF0ZSBmb3JtYXQgd2l0aCB0aW1lXG4gICAgICovXG4gICAgcmFuZ2VEYXRlVGltZShzdGFydERhdGU6IEQsIGVuZERhdGU6IEQsIHRlbXBsYXRlOiBGb3JtYXR0ZXJSYW5nZVRlbXBsYXRlLCBzZWNvbmRzID0gZmFsc2UsIG1pbGxpc2Vjb25kcyA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLmFkYXB0ZXIuaXNEYXRlSW5zdGFuY2Uoc3RhcnREYXRlKSB8fCAhdGhpcy5hZGFwdGVyLmlzRGF0ZUluc3RhbmNlKGVuZERhdGUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5pbnZhbGlkRGF0ZUVycm9yVGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YXJpYWJsZXMgPSB7Li4udGhpcy5hZGFwdGVyLmNvbmZpZy52YXJpYWJsZXMsIC4uLnRlbXBsYXRlLnZhcmlhYmxlc307XG5cbiAgICAgICAgY29uc3Qgc2FtZU1vbnRoID0gdGhpcy5oYXNTYW1lKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgJ21vbnRoJyk7XG4gICAgICAgIGNvbnN0IHNhbWVEYXkgPSB0aGlzLmhhc1NhbWUoc3RhcnREYXRlLCBlbmREYXRlLCAnZGF5Jyk7XG5cbiAgICAgICAgY29uc3Qgc3RhcnREYXRlVmFyaWFibGVzID0gdGhpcy5jb21waWxlVmFyaWFibGVzKHN0YXJ0RGF0ZSwgdmFyaWFibGVzKTtcbiAgICAgICAgc3RhcnREYXRlVmFyaWFibGVzLlNBTUVfTU9OVEggPSBzYW1lTW9udGg7XG4gICAgICAgIHN0YXJ0RGF0ZVZhcmlhYmxlcy5TQU1FX0RBWSA9IHNhbWVEYXk7XG4gICAgICAgIHN0YXJ0RGF0ZVZhcmlhYmxlcy5TSE9XX1NFQ09ORFMgPSBzZWNvbmRzID8gJ3llcycgOiAnbm8nO1xuICAgICAgICBzdGFydERhdGVWYXJpYWJsZXMuU0hPV19NSUxMSVNFQ09ORFMgPSBtaWxsaXNlY29uZHMgPyAneWVzJyA6ICdubyc7XG5cbiAgICAgICAgY29uc3QgZW5kRGF0ZVZhcmlhYmxlcyA9IHRoaXMuY29tcGlsZVZhcmlhYmxlcyhlbmREYXRlLCB2YXJpYWJsZXMpO1xuICAgICAgICBlbmREYXRlVmFyaWFibGVzLlNBTUVfTU9OVEggPSBzYW1lTW9udGg7XG4gICAgICAgIGVuZERhdGVWYXJpYWJsZXMuU0FNRV9EQVkgPSBzYW1lRGF5O1xuICAgICAgICBlbmREYXRlVmFyaWFibGVzLlNIT1dfU0VDT05EUyA9IHNlY29uZHMgPyAneWVzJyA6ICdubyc7XG4gICAgICAgIGVuZERhdGVWYXJpYWJsZXMuU0hPV19NSUxMSVNFQ09ORFMgPSBtaWxsaXNlY29uZHMgPyAneWVzJyA6ICdubyc7XG5cbiAgICAgICAgY29uc3QgYm90aEN1cnJlbnRZZWFyID0gc3RhcnREYXRlVmFyaWFibGVzLkNVUlJFTlRfWUVBUiA9PT0gJ3llcycgJiYgZW5kRGF0ZVZhcmlhYmxlcy5DVVJSRU5UX1lFQVIgPT09ICd5ZXMnO1xuICAgICAgICBzdGFydERhdGVWYXJpYWJsZXMuQ1VSUkVOVF9ZRUFSID0gYm90aEN1cnJlbnRZZWFyID8gJ3llcycgOiAnbm8nO1xuICAgICAgICBlbmREYXRlVmFyaWFibGVzLkNVUlJFTlRfWUVBUiA9IGJvdGhDdXJyZW50WWVhciA/ICd5ZXMnIDogJ25vJztcblxuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICAuLi52YXJpYWJsZXMsXG4gICAgICAgICAgICBTVEFSVF9EQVRFVElNRTogdGhpcy5tZXNzYWdlRm9ybWF0LmNvbXBpbGUodGVtcGxhdGUuU1RBUlRfREFURVRJTUUpKHN0YXJ0RGF0ZVZhcmlhYmxlcyksXG4gICAgICAgICAgICBFTkRfREFURVRJTUU6IHRoaXMubWVzc2FnZUZvcm1hdC5jb21waWxlKHRlbXBsYXRlLkVORF9EQVRFVElNRSkoZW5kRGF0ZVZhcmlhYmxlcyksXG4gICAgICAgICAgICBTQU1FX01PTlRIOiBzYW1lTW9udGgsXG4gICAgICAgICAgICBTQU1FX0RBWTogc2FtZURheVxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2VGb3JtYXQuY29tcGlsZSh0ZW1wbGF0ZS5EQVRFVElNRSkocGFyYW1zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gc3RhcnREYXRlIC0gc3RhcnQgZGF0ZVxuICAgICAqIEBwYXJhbSBlbmREYXRlIC0gZW5kIGRhdGVcbiAgICAgKiBAcmV0dXJucyByYW5nZSBkYXRlIGluIHNob3J0IGZvcm1hdFxuICAgICAqL1xuICAgIHJhbmdlU2hvcnREYXRlKHN0YXJ0RGF0ZTogRCB8IG51bGwsIGVuZERhdGU/OiBEKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcmFuZ2VUZW1wbGF0ZXMgPSB0aGlzLmNvbmZpZy5yYW5nZVRlbXBsYXRlcztcblxuICAgICAgICBpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJhbmdlRGF0ZShzdGFydERhdGUsIGVuZERhdGUsIHJhbmdlVGVtcGxhdGVzLmNsb3NlZFJhbmdlLnNob3J0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5lZFJhbmdlRGF0ZShzdGFydERhdGUsIGVuZERhdGUgfHwgbnVsbCwgcmFuZ2VUZW1wbGF0ZXMub3BlbmVkUmFuZ2Uuc2hvcnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBzdGFydERhdGUgLSBzdGFydCBkYXRlXG4gICAgICogQHBhcmFtIGVuZERhdGUgLSBlbmQgZGF0ZVxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gRGF0ZVRpbWVPcHRpb25zXG4gICAgICogQHJldHVybnMgcmFuZ2UgZGF0ZSBpbiBzaG9ydCBmb3JtYXQgd2l0aCB0aW1lXG4gICAgICovXG4gICAgcmFuZ2VTaG9ydERhdGVUaW1lKHN0YXJ0RGF0ZTogRCB8IG51bGwsIGVuZERhdGU/OiBEIHwgbnVsbCwgb3B0aW9ucz86IERhdGVUaW1lT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHJhbmdlVGVtcGxhdGVzID0gdGhpcy5jb25maWcucmFuZ2VUZW1wbGF0ZXM7XG5cbiAgICAgICAgaWYgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yYW5nZURhdGVUaW1lKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgcmFuZ2VUZW1wbGF0ZXMuY2xvc2VkUmFuZ2Uuc2hvcnQsIG9wdGlvbnM/LnNlY29uZHMsIG9wdGlvbnM/Lm1pbGxpc2Vjb25kcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5vcGVuZWRSYW5nZURhdGVUaW1lKFxuICAgICAgICAgICAgc3RhcnREYXRlLFxuICAgICAgICAgICAgZW5kRGF0ZSB8fCBudWxsLFxuICAgICAgICAgICAgcmFuZ2VUZW1wbGF0ZXMub3BlbmVkUmFuZ2Uuc2hvcnQsXG4gICAgICAgICAgICBvcHRpb25zPy5zZWNvbmRzLFxuICAgICAgICAgICAgb3B0aW9ucz8ubWlsbGlzZWNvbmRzXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHN0YXJ0RGF0ZSAtIHN0YXJ0IGRhdGVcbiAgICAgKiBAcGFyYW0gZW5kRGF0ZSAtIGVuZCBkYXRlXG4gICAgICogQHJldHVybnMgcmFuZ2UgZGF0ZSBpbiBsb25nIGZvcm1hdFxuICAgICAqL1xuICAgIHJhbmdlTG9uZ0RhdGUoc3RhcnREYXRlOiBEIHwgbnVsbCwgZW5kRGF0ZT86IEQgfCBudWxsKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcmFuZ2VUZW1wbGF0ZXMgPSB0aGlzLmNvbmZpZy5yYW5nZVRlbXBsYXRlcztcblxuICAgICAgICBpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJhbmdlRGF0ZShzdGFydERhdGUsIGVuZERhdGUsIHJhbmdlVGVtcGxhdGVzLmNsb3NlZFJhbmdlLmxvbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMub3BlbmVkUmFuZ2VEYXRlKHN0YXJ0RGF0ZSwgZW5kRGF0ZSB8fCBudWxsLCByYW5nZVRlbXBsYXRlcy5vcGVuZWRSYW5nZS5sb25nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gc3RhcnREYXRlIC0gc3RhcnQgZGF0ZVxuICAgICAqIEBwYXJhbSBlbmREYXRlIC0gZW5kIGRhdGVcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIERhdGVUaW1lT3B0aW9uc1xuICAgICAqIEByZXR1cm5zIHJhbmdlIGRhdGUgaW4gbG9uZyBmb3JtYXQgd2l0aCB0aW1lXG4gICAgICovXG4gICAgcmFuZ2VMb25nRGF0ZVRpbWUoc3RhcnREYXRlOiBEIHwgbnVsbCwgZW5kRGF0ZT86IEQsIG9wdGlvbnM/OiBEYXRlVGltZU9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCByYW5nZVRlbXBsYXRlcyA9IHRoaXMuY29uZmlnLnJhbmdlVGVtcGxhdGVzO1xuXG4gICAgICAgIGlmIChzdGFydERhdGUgJiYgZW5kRGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmFuZ2VEYXRlVGltZShzdGFydERhdGUsIGVuZERhdGUsIHJhbmdlVGVtcGxhdGVzLmNsb3NlZFJhbmdlLmxvbmcsIG9wdGlvbnM/LnNlY29uZHMsIG9wdGlvbnM/Lm1pbGxpc2Vjb25kcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5vcGVuZWRSYW5nZURhdGVUaW1lKHN0YXJ0RGF0ZSwgZW5kRGF0ZSB8fCBudWxsLCByYW5nZVRlbXBsYXRlcy5vcGVuZWRSYW5nZS5sb25nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gc3RhcnREYXRlIC0gc3RhcnQgZGF0ZVxuICAgICAqIEBwYXJhbSBlbmREYXRlIC0gZW5kIGRhdGVcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIERhdGVUaW1lT3B0aW9uc1xuICAgICAqIEByZXR1cm5zIHJhbmdlIG1pZGRsZSBkYXRlIHdpdGggdGltZVxuICAgICAqL1xuICAgIHJhbmdlTWlkZGxlRGF0ZVRpbWUoc3RhcnREYXRlOiBELCBlbmREYXRlOiBELCBvcHRpb25zPzogRGF0ZVRpbWVPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmFuZ2VEYXRlVGltZShcbiAgICAgICAgICAgIHN0YXJ0RGF0ZSxcbiAgICAgICAgICAgIGVuZERhdGUsXG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5yYW5nZVRlbXBsYXRlcy5jbG9zZWRSYW5nZS5taWRkbGUsXG4gICAgICAgICAgICBvcHRpb25zPy5zZWNvbmRzLFxuICAgICAgICAgICAgb3B0aW9ucz8ubWlsbGlzZWNvbmRzXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21waWxlVmFyaWFibGVzKGRhdGU6IEQsIHZhcmlhYmxlczogYW55KTogYW55IHtcbiAgICAgICAgY29uc3QgY29tcGlsZWRWYXJpYWJsZXM6IGFueSA9IHt9O1xuXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1mb3ItaW5cbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdmFyaWFibGVzKSB7XG4gICAgICAgICAgICBpZiAoIXZhcmlhYmxlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7IGNvbnRpbnVlOyB9XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdmFyaWFibGVzW2tleV07XG4gICAgICAgICAgICBjb21waWxlZFZhcmlhYmxlc1trZXldID0gdGhpcy5hZGFwdGVyLmZvcm1hdChkYXRlLCB2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb21waWxlZFZhcmlhYmxlcy5DVVJSRU5UX1lFQVIgPSB0aGlzLmhhc1NhbWUoZGF0ZSwgdGhpcy5hZGFwdGVyLnRvZGF5KCksICd5ZWFyJyk7XG5cbiAgICAgICAgcmV0dXJuIGNvbXBpbGVkVmFyaWFibGVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNCZWZvcmVZZXN0ZXJkYXkoZGF0ZTogRCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmRheXNGcm9tVG9kYXkoZGF0ZSkgPD0gLTI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1llc3RlcmRheShkYXRlOiBEKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGludGVydmFsID0gdGhpcy5hZGFwdGVyLmRheXNGcm9tVG9kYXkoZGF0ZSk7XG5cbiAgICAgICAgcmV0dXJuIGludGVydmFsID4gLTIgJiYgaW50ZXJ2YWwgPD0gLTE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1RvZGF5KGRhdGU6IEQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5kYXlzRnJvbVRvZGF5KGRhdGUpID09PSAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNUb21vcnJvdyhkYXRlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgaW50ZXJ2YWwgPSB0aGlzLmFkYXB0ZXIuZGF5c0Zyb21Ub2RheShkYXRlKTtcblxuICAgICAgICByZXR1cm4gaW50ZXJ2YWwgPj0gMSAmJiBpbnRlcnZhbCA8IDI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0FmdGVyVG9tb3Jyb3coZGF0ZTogRCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmRheXNGcm9tVG9kYXkoZGF0ZSkgPj0gMjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc1NhbWUoc3RhcnREYXRlOiBELCBlbmREYXRlOiBELCB1bml0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmhhc1NhbWUoc3RhcnREYXRlLCBlbmREYXRlLCB1bml0KSA/ICd5ZXMnIDogJ25vJztcbiAgICB9XG59XG4iXX0=
365
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbW9zYWljL2NvcmUvZm9ybWF0dGVycy9kYXRlL2Zvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQ0FBa0M7QUFDbEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsNkJBQTZCO0FBQzdCLE9BQU8sYUFBYSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdkUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBd0V6QyxNQUFNLE9BQU8sYUFBYTtJQU90QixZQUNxQixPQUF1QixFQUNoQixNQUFjO1FBRHJCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBTDNCLHlCQUFvQixHQUFXLGNBQWMsQ0FBQztRQVEzRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRTVDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFjO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxZQUFZLENBQ1IsSUFBTyxFQUNQLFFBQW1DLEVBQ25DLE9BQU8sR0FBRyxLQUFLLEVB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O0lBQ2xELENBQUM7SUFFTyxVQUFVLENBQUMsSUFBUztRQUN4QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU8sZUFBZSxDQUFDLElBQU87UUFDM0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVPLE9BQU8sQ0FBQyxTQUFZLEVBQUUsT0FBVSxFQUFFLElBQVk7UUFDbEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN6RSxDQUFDOztpSkExY1EsYUFBYSw2Q0FTVixjQUFjO3FKQVRqQixhQUFhOzRGQUFiLGFBQWE7a0JBRHpCLFVBQVU7OzBCQVVGLE1BQU07MkJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlOm5vLW1hZ2ljLW51bWJlcnNcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuLy8gdHNsaW50OmRpc2FibGU6aW1wb3J0LW5hbWVcbmltcG9ydCBNZXNzYWdlRm9ybWF0IGZyb20gJ0BtZXNzYWdlZm9ybWF0L2NvcmUnO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIE1DX0RBVEVfTE9DQUxFIH0gZnJvbSAnQHB0c2VjdXJpdHkvY2RrL2RhdGV0aW1lJztcblxuaW1wb3J0IHsgZW5VUyB9IGZyb20gJy4vdGVtcGxhdGVzL2VuLVVTJztcbmltcG9ydCB7IHJ1UlUgfSBmcm9tICcuL3RlbXBsYXRlcy9ydS1SVSc7XG5cblxuLyoqXG4gKiBpbnRlcmZhY2UgZm9yIGFic29sdXRlIGRhdGUgb3IgZGF0ZXRpbWUgZm9ybWF0dGVyIHRlbXBsYXRlXG4gKi9cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuYW1pbmctY29udmVudGlvblxuZXhwb3J0IGludGVyZmFjZSBGb3JtYXR0ZXJBYnNvbHV0ZVRlbXBsYXRlIHtcbiAgICB2YXJpYWJsZXM/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICBEQVRFOiBzdHJpbmc7XG4gICAgREFURVRJTUU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBpbnRlcmZhY2UgZm9yIHJhbmdlIGRhdGUgb3IgZGF0ZXRpbWUgZm9ybWF0dGVyIHRlbXBsYXRlXG4gKi9cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuYW1pbmctY29udmVudGlvblxuZXhwb3J0IGludGVyZmFjZSBGb3JtYXR0ZXJSYW5nZVRlbXBsYXRlIHtcbiAgICB2YXJpYWJsZXM/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICBTVEFSVF9EQVRFOiBzdHJpbmc7XG4gICAgRU5EX0RBVEU6IHN0cmluZztcbiAgICBEQVRFOiBzdHJpbmc7XG4gICAgU1RBUlRfREFURVRJTUU6IHN0cmluZztcbiAgICBFTkRfREFURVRJTUU6IHN0cmluZztcbiAgICBEQVRFVElNRTogc3RyaW5nO1xufVxuXG4vKipcbiAqIGludGVyZmFjZSBmb3IgcmVsYXRpdmUgZGF0ZSBvciBkYXRldGltZSBmb3JtYXR0ZXIgdGVtcGxhdGVcbiAqL1xuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5hbWluZy1jb252ZW50aW9uXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdHRlclJlbGF0aXZlVGVtcGxhdGUge1xuICAgIHZhcmlhYmxlcz86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIEJFRk9SRV9ZRVNURVJEQVk6IHN0cmluZztcbiAgICBZRVNURVJEQVk6IHN0cmluZztcbiAgICBUT0RBWTogc3RyaW5nO1xuICAgIFRPTU9SUk9XOiBzdHJpbmc7XG4gICAgQUZURVJfVE9NT1JST1c6IHN0cmluZztcbn1cblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5hbWluZy1jb252ZW50aW9uXG5leHBvcnQgaW50ZXJmYWNlIERhdGVUaW1lT3B0aW9ucyB7XG4gICAgc2Vjb25kcz86IGJvb2xlYW47XG4gICAgbWlsbGlzZWNvbmRzPzogYm9vbGVhbjtcbiAgICBjdXJyWWVhcj86IGJvb2xlYW47XG59XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuYW1pbmctY29udmVudGlvblxuZXhwb3J0IGludGVyZmFjZSBGb3JtYXR0ZXJDb25maWcge1xuICAgIHJlbGF0aXZlVGVtcGxhdGVzOiB7XG4gICAgICAgIHNob3J0OiBGb3JtYXR0ZXJSZWxhdGl2ZVRlbXBsYXRlO1xuICAgICAgICBsb25nOiBGb3JtYXR0ZXJSZWxhdGl2ZVRlbXBsYXRlO1xuICAgIH07XG4gICAgYWJzb2x1dGVUZW1wbGF0ZXM6IHtcbiAgICAgICAgc2hvcnQ6IEZvcm1hdHRlckFic29sdXRlVGVtcGxhdGU7XG4gICAgICAgIGxvbmc6IEZvcm1hdHRlckFic29sdXRlVGVtcGxhdGU7XG4gICAgfTtcbiAgICByYW5nZVRlbXBsYXRlczoge1xuICAgICAgICBjbG9zZWRSYW5nZToge1xuICAgICAgICAgICAgc2hvcnQ6IEZvcm1hdHRlclJhbmdlVGVtcGxhdGU7XG4gICAgICAgICAgICBtaWRkbGU6IEZvcm1hdHRlclJhbmdlVGVtcGxhdGU7XG4gICAgICAgICAgICBsb25nOiBGb3JtYXR0ZXJSYW5nZVRlbXBsYXRlO1xuICAgICAgICB9O1xuICAgICAgICBvcGVuZWRSYW5nZToge1xuICAgICAgICAgICAgc2hvcnQ6IEZvcm1hdHRlclJhbmdlVGVtcGxhdGU7XG4gICAgICAgICAgICBsb25nOiBGb3JtYXR0ZXJSYW5nZVRlbXBsYXRlO1xuICAgICAgICB9O1xuICAgIH07XG59XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhdGVGb3JtYXR0ZXI8RD4ge1xuICAgIGNvbmZpZzogRm9ybWF0dGVyQ29uZmlnO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnZhbGlkRGF0ZUVycm9yVGV4dDogc3RyaW5nID0gJ0ludmFsaWQgZGF0ZSc7XG5cbiAgICBwcml2YXRlIG1lc3NhZ2VGb3JtYXQ6IE1lc3NhZ2VGb3JtYXQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhZGFwdGVyOiBEYXRlQWRhcHRlcjxEPixcbiAgICAgICAgQEluamVjdChNQ19EQVRFX0xPQ0FMRSkgbG9jYWxlOiBzdHJpbmdcbiAgICApIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSBsb2NhbGUgPT09ICdlbicgPyBlblVTIDogcnVSVTtcblxuICAgICAgICB0aGlzLm1lc3NhZ2VGb3JtYXQgPSBuZXcgTWVzc2FnZUZvcm1hdChsb2NhbGUpO1xuICAgIH1cblxuICAgIHNldExvY2FsZShsb2NhbGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGxvY2FsZSA9PT0gJ2VuJyA/IGVuVVMgOiBydVJVO1xuXG4gICAgICAgIHRoaXMuYWRhcHRlci5zZXRMb2NhbGUobG9jYWxlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZGF0ZSAtIGRhdGVcbiAgICAgKiBAcGFyYW0gdGVtcGxhdGUgLSB0ZW1wbGF0ZVxuICAgICAqIEByZXR1cm5zIHJlbGF0aXZlIGRhdGUgYnkgdGVtcGxhdGVcbiAgICAgKi9cbiAgICByZWxhdGl2ZURhdGUoXG4gICAgICAgIGRhdGU6IEQsXG4gICAgICAgIHRlbXBsYXRlOiBGb3JtYXR0ZXJSZWxhdGl2ZVRlbXBsYXRlLFxuICAgICAgICBzZWNvbmRzID0gZmFsc2UsXG4gICAgICAgIG1pbGxpc2Vjb25kcyA9IGZhbHNlXG4gICAgKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLmFkYXB0ZXIuaXNEYXRlSW5zdGFuY2UoZGF0ZSkpIHsgdGhyb3cgbmV3IEVycm9yKHRoaXMuaW52YWxpZERhdGVFcnJvclRleHQpOyB9XG5cbiAgICAgICAgbGV0IG5ld1RlbXBsYXRlO1xuXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlVmFyaWFibGVzID0gey4uLnRoaXMuYWRhcHRlci5jb25maWcudmFyaWFibGVzLCAuLi50ZW1wbGF0ZS52YXJpYWJsZXN9O1xuXG4gICAgICAgIGlmICh0aGlzLmlzQmVmb3JlWWVzdGVyZGF5KGRhdGUpKSB7XG4gICAgICAgICAgICBuZXdUZW1wbGF0ZSA9IHRlbXBsYXRlLkJFRk9SRV9ZRVNURVJEQVk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1llc3RlcmRheShkYXRlKSkge1xuICAgICAgICAgICAgbmV3VGVtcGxhdGUgPSB0ZW1wbGF0ZS5ZRVNURVJEQVk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1RvZGF5KGRhdGUpKSB7XG4gICAgICAgICAgICBuZXdUZW1wbGF0ZSA9IHRlbXBsYXRlLlRPREFZO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNUb21vcnJvdyhkYXRlKSkge1xuICAgICAgICAgICAgbmV3VGVtcGxhdGUgPSB0ZW1wbGF0ZS5UT01PUlJPVztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzQWZ0ZXJUb21vcnJvdyhkYXRlKSkge1xuICAgICAgICAgICAgbmV3VGVtcGxhdGUgPSB0ZW1wbGF0ZS5BRlRFUl9UT01PUlJPVztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlcyA9IHRoaXMuY29tcGlsZVZhcmlhYmxlcyhkYXRlLCB0ZW1wbGF0ZVZhcmlhYmxlcyk7XG5cbiAgICAgICAgdmFyaWFibGVzLlNIT1dfU0VDT05EUyA9IHNlY29uZHMgPyAneWVzJyA6ICdubyc7XG4gICAgICAgIHZhcmlhYmxlcy5TSE9XX01JTExJU0VDT05EUyA9IG1pbGxpc2Vjb25kcyA/ICd5ZXMnIDogJ25vJztcblxuICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlRm9ybWF0LmNvbXBpbGUobmV3VGVtcGxhdGUpKHZhcmlhYmxlcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGRhdGUgLSBkYXRlXG4gICAgICogQHJldHVybnMgcmVsYXRpdmUgZGF0ZSBpbiBzaG9ydCBmb3JtYXRcbiAgICAgKi9cbiAgICByZWxhdGl2ZVNob3J0RGF0ZShkYXRlOiBEKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVsYXRpdmVEYXRlKGRhdGUsIHRoaXMuY29uZmlnLnJlbGF0aXZlVGVtcGxhdGVzLnNob3J0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZGF0ZSAtIGRhdGVcbiAgICAgKiBAcmV0dXJucyByZWxhdGl2ZSBkYXRlIGluIGxvbmcgZm9ybWF0XG4gICAgICovXG4gICAgcmVsYXRpdmVMb25nRGF0ZShkYXRlOiBEKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVsYXRpdmVEYXRlKGRhdGUsIHRoaXMuY29uZmlnLnJlbGF0aXZlVGVtcGxhdGVzLmxvbmcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkYXRlIC0gZGF0ZVxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gRGF0ZVRpbWVPcHRpb25zXG4gICAgICogQHJldHVybnMgcmVsYXRpdmUgZGF0ZSBpbiBzaG9ydCBmb3JtYXQgd2l0aCB0aW1lXG4gICAgICovXG4gICAgcmVsYXRpdmVTaG9ydERhdGVUaW1lKGRhdGU6IEQsIG9wdGlvbnM/OiBEYXRlVGltZU9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWxhdGl2ZURhdGUoZGF0ZSwgdGhpcy5jb25maWcucmVsYXRpdmVUZW1wbGF0ZXMuc2hvcnQsIG9wdGlvbnM/LnNlY29uZHMsIG9wdGlvbnM/Lm1pbGxpc2Vjb25kcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGRhdGUgLSBkYXRlXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBEYXRlVGltZU9wdGlvbnNcbiAgICAgKiBAcmV0dXJucyByZWxhdGl2ZSBkYXRlIGluIGxvbmcgZm9ybWF0IHdpdGggdGltZVxuICAgICAqL1xuICAgIHJlbGF0aXZlTG9uZ0RhdGVUaW1lKGRhdGU6IEQsIG9wdGlvbnM/OiBEYXRlVGltZU9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWxhdGl2ZURhdGUoZGF0ZSwgdGhpcy5jb25maWcucmVsYXRpdmVUZW1wbGF0ZXMubG9uZywgb3B0aW9ucz8uc2Vjb25kcywgb3B0aW9ucz8ubWlsbGlzZWNvbmRzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZGF0ZSAtIGRhdGVcbiAgICAgKiBAcGFyYW0gcGFyYW1zIC0gcGFyYW1ldGVyc1xuICAgICAqIEBwYXJhbSBkYXRldGltZSAtIHNob3VsZCB0aW1lIGJlIHNob3duIGFzIHdlbGxcbiAgICAgKiBAcGFyYW0gc2Vjb25kcyAtIHNob3VsZCB0aW1lIHdpdGggc2Vjb25kcyBiZSBzaG93biBhcyB3ZWxsXG4gICAgICogQHBhcmFtIG1pbGxpc2Vjb25kcyAtIHNob3VsZCB0aW1lIHdpdGggbWlsbGlzZWNvbmRzIGJlIHNob3duIGFzIHdlbGxcbiAgICAgKiBAcGFyYW0gY3VyclllYXIgLSBzaG91bGQgY3VycmVudCB5ZWFyIGJlIHNob3duIGFzIHdlbGxcbiAgICAgKi9cbiAgICBhYnNvbHV0ZURhdGUoXG4gICAgICAgIGRhdGU6IEQsXG4gICAgICAgIHBhcmFtczogRm9ybWF0dGVyQWJzb2x1dGVUZW1wbGF0ZSxcbiAgICAgICAgZGF0ZXRpbWUgPSBmYWxzZSxcbiAgICAgICAgc2Vjb25kcyA9IGZhbHNlLFxuICAgICAgICBtaWxsaXNlY29uZHMgPSBmYWxzZSxcbiAgICAgICAgY3VyclllYXIgPSBmYWxzZVxuICAgICk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdGhpcy5hZGFwdGVyLmlzRGF0ZUluc3RhbmNlKGRhdGUpKSB7IHRocm93IG5ldyBFcnJvcih0aGlzLmludmFsaWREYXRlRXJyb3JUZXh0KTsgfVxuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlcyA9IHRoaXMuY29tcGlsZVZhcmlhYmxlcyhkYXRlLCB7IC4uLnRoaXMuYWRhcHRlci5jb25maWcudmFyaWFibGVzLCAuLi5wYXJhbXMudmFyaWFibGVzIH0sIGN1cnJZZWFyKTtcblxuICAgICAgICB2YXJpYWJsZXMuU0hPV19TRUNPTkRTID0gc2Vjb25kcyA/ICd5ZXMnIDogJ25vJztcbiAgICAgICAgdmFyaWFibGVzLlNIT1dfTUlMTElTRUNPTkRTID0gbWlsbGlzZWNvbmRzID8gJ3llcycgOiAnbm8nO1xuXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlID0gZGF0ZXRpbWUgPyBwYXJhbXMuREFURVRJTUUgOiBwYXJhbXMuREFURTtcblxuICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlRm9ybWF0LmNvbXBpbGUodGVtcGxhdGUpKHZhcmlhYmxlcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGRhdGUgLSBkYXRlXG4gICAgICogQHBhcmFtIGN1cnJZZWFyIC0gc2hvdWxkIHRoZSB5ZWFyIGJlIHNob3duIGZvcmNlZFxuICAgICAqIEByZXR1cm5zIGFic29sdXRlIGRhdGUgaW4gc2hvcnQgZm9ybWF0XG4gICAgICovXG4gICAgYWJzb2x1dGVTaG9ydERhdGUoZGF0ZTogRCwgY3VyclllYXIgPSBmYWxzZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFic29sdXRlRGF0ZShkYXRlLCB0aGlzLmNvbmZpZy5hYnNvbHV0ZVRlbXBsYXRlcy5zaG9ydCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY3VyclllYXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkYXRlIC0gZGF0ZVxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gRGF0ZVRpbWVPcHRpb25zXG4gICAgICogQHJldHVybnMgYWJzb2x1dGUgZGF0ZSBpbiBzaG9ydCBmb3JtYXQgd2l0aCB0aW1lXG4gICAgICovXG4gICAgYWJzb2x1dGVTaG9ydERhdGVUaW1lKGRhdGU6IEQsIG9wdGlvbnM/OiBEYXRlVGltZU9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5hYnNvbHV0ZURhdGUoXG4gICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgdGhpcy5jb25maWcuYWJzb2x1dGVUZW1wbGF0ZXMuc2hvcnQsXG4gICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgb3B0aW9ucz8uc2Vjb25kcyxcbiAgICAgICAgICAgIG9wdGlvbnM/Lm1pbGxpc2Vjb25kcyxcbiAgICAgICAgICAgIG9wdGlvbnM/LmN1cnJZZWFyXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGRhdGUgLSBkYXRlXG4gICAgICogQHBhcmFtIGN1cnJZZWFyIC0gc2hvdWxkIHRoZSB5ZWFyIGJlIHNob3duIGZvcmNlZFxuICAgICAqIEByZXR1cm5zIGFic29sdXRlIGRhdGUgaW4gbG9uZyBmb3JtYXRcbiAgICAgKi9cbiAgICBhYnNvbHV0ZUxvbmdEYXRlKGRhdGU6IEQsIGN1cnJZZWFyID0gZmFsc2UpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5hYnNvbHV0ZURhdGUoZGF0ZSwgdGhpcy5jb25maWcuYWJzb2x1dGVUZW1wbGF0ZXMubG9uZywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY3VyclllYXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkYXRlIC0gZGF0ZVxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gRGF0ZVRpbWVPcHRpb25zXG4gICAgICogQHJldHVybnMgYWJzb2x1dGUgZGF0ZSBpbiBsb25nIGZvcm1hdCB3aXRoIHRpbWVcbiAgICAgKi9cbiAgICBhYnNvbHV0ZUxvbmdEYXRlVGltZShkYXRlOiBELCBvcHRpb25zPzogRGF0ZVRpbWVPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWJzb2x1dGVEYXRlKFxuICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmFic29sdXRlVGVtcGxhdGVzLmxvbmcsXG4gICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgb3B0aW9ucz8uc2Vjb25kcyxcbiAgICAgICAgICAgIG9wdGlvbnM/Lm1pbGxpc2Vjb25kcyxcbiAgICAgICAgICAgIG9wdGlvbnM/LmN1cnJZZWFyXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHN0YXJ0RGF0ZSAtIHN0YXJ0IGRhdGVcbiAgICAgKiBAcGFyYW0gZW5kRGF0ZSAtIGVuZCBkYXRlXG4gICAgICogQHBhcmFtIHRlbXBsYXRlIC0gdGVtcGxhdGVcbiAgICAgKiBAcmV0dXJucyBvcGVuZWQgZGF0ZVxuICAgICAqL1xuICAgIG9wZW5lZFJhbmdlRGF0ZShzdGFydERhdGU6IEQgfCBudWxsLCBlbmREYXRlOiBEIHwgbnVsbCwgdGVtcGxhdGU6IEZvcm1hdHRlclJhbmdlVGVtcGxhdGUpIHtcbiAgICAgICAgaWYgKCF0aGlzLmFkYXB0ZXIuaXNEYXRlSW5zdGFuY2Uoc3RhcnREYXRlKSAmJiAhdGhpcy5hZGFwdGVyLmlzRGF0ZUluc3RhbmNlKGVuZERhdGUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5pbnZhbGlkRGF0ZUVycm9yVGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YXJpYWJsZXMgPSB7IC4uLnRoaXMuYWRhcHRlci5jb25maWcudmFyaWFibGVzLCAuLi50ZW1wbGF0ZS52YXJpYWJsZXMgfTtcbiAgICAgICAgbGV0IHBhcmFtcyA9IHt9O1xuXG4gICAgICAgIGlmIChzdGFydERhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0RGF0ZVZhcmlhYmxlcyA9IHRoaXMuY29tcGlsZVZhcmlhYmxlcyhzdGFydERhdGUsIHZhcmlhYmxlcyk7XG5cbiAgICAgICAgICAgIHBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICAuLi52YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgU1RBUlRfREFURTogdGhpcy5tZXNzYWdlRm9ybWF0LmNvbXBpbGUodGVtcGxhdGUuU1RBUlRfREFURSkoc3RhcnREYXRlVmFyaWFibGVzKSxcbiAgICAgICAgICAgICAgICBSQU5HRV9UWVBFOiAnb25seVN0YXJ0J1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmIChlbmREYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBlbmREYXRlVmFyaWFibGVzID0gdGhpcy5jb21waWxlVmFyaWFibGVzKGVuZERhdGUsIHZhcmlhYmxlcyk7XG5cbiAgICAgICAgICAgIHBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICAuLi52YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgRU5EX0RBVEU6IHRoaXMubWVzc2FnZUZvcm1hdC5jb21waWxlKHRlbXBsYXRlLkVORF9EQVRFKShlbmREYXRlVmFyaWFibGVzKSxcbiAgICAgICAgICAgICAgICBSQU5HRV9UWVBFOiAnb25seUVuZCdcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlRm9ybWF0LmNvbXBpbGUodGVtcGxhdGUuREFURSkocGFyYW1zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gc3RhcnREYXRlIC0gc3RhcnQgZGF0ZVxuICAgICAqIEBwYXJhbSBlbmREYXRlIC0gZW5kIGRhdGVcbiAgICAgKiBAcGFyYW0gdGVtcGxhdGUgLSB0ZW1wbGF0ZVxuICAgICAqIEBwYXJhbSBzZWNvbmRzIC0gc2hvdWxkIHRpbWUgd2l0aCBzZWNvbmRzIGJlIHNob3duIGFzIHdlbGxcbiAgICAgKiBAcGFyYW0gbWlsbGlzZWNvbmRzIC0gc2hvdWxkIHRpbWUgd2l0aCBtaWxsaXNlY29uZHMgYmUgc2hvd24gYXMgd2VsbFxuICAgICAqIEByZXR1cm5zIG9wZW5lZCBkYXRlXG4gICAgICovXG4gICAgb3BlbmVkUmFuZ2VEYXRlVGltZShcbiAgICAgICAgc3RhcnREYXRlOiBEIHwgbnVsbCxcbiAgICAgICAgZW5kRGF0ZTogRCB8IG51bGwsXG4gICAgICAgIHRlbXBsYXRlOiBGb3JtYXR0ZXJSYW5nZVRlbXBsYXRlLFxuICAgICAgICBzZWNvbmRzID0gZmFsc2UsXG4gICAgICAgIG1pbGxpc2Vjb25kcyA9IGZhbHNlXG4gICAgKSB7XG4gICAgICAgIGlmICghdGhpcy5hZGFwdGVyLmlzRGF0ZUluc3RhbmNlKHN0YXJ0RGF0ZSkgJiYgIXRoaXMuYWRhcHRlci5pc0RhdGVJbnN0YW5jZShlbmREYXRlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMuaW52YWxpZERhdGVFcnJvclRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFyaWFibGVzID0geyAuLi50aGlzLmFkYXB0ZXIuY29uZmlnLnZhcmlhYmxlcywgLi4udGVtcGxhdGUudmFyaWFibGVzIH07XG4gICAgICAgIGxldCBwYXJhbXMgPSB7fTtcblxuICAgICAgICBpZiAoc3RhcnREYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBzdGFydERhdGVWYXJpYWJsZXMgPSB0aGlzLmNvbXBpbGVWYXJpYWJsZXMoc3RhcnREYXRlLCB2YXJpYWJsZXMpO1xuICAgICAgICAgICAgc3RhcnREYXRlVmFyaWFibGVzLlNIT1dfU0VDT05EUyA9IHNlY29uZHMgPyAneWVzJyA6ICdubyc7XG4gICAgICAgICAgICBzdGFydERhdGVWYXJpYWJsZXMuU0hPV19NSUxMSVNFQ09ORFMgPSBtaWxsaXNlY29uZHMgPyAneWVzJyA6ICdubyc7XG5cbiAgICAgICAgICAgIHBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICAuLi52YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgU1RBUlRfREFURVRJTUU6IHRoaXMubWVzc2FnZUZvcm1hdC5jb21waWxlKHRlbXBsYXRlLlNUQVJUX0RBVEVUSU1FKShzdGFydERhdGVWYXJpYWJsZXMpLFxuICAgICAgICAgICAgICAgIFJBTkdFX1RZUEU6ICdvbmx5U3RhcnQnXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKGVuZERhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGVuZERhdGVWYXJpYWJsZXMgPSB0aGlzLmNvbXBpbGVWYXJpYWJsZXMoZW5kRGF0ZSwgdmFyaWFibGVzKTtcbiAgICAgICAgICAgIGVuZERhdGVWYXJpYWJsZXMuU0hPV19TRUNPTkRTID0gc2Vjb25kcyA/ICd5ZXMnIDogJ25vJztcbiAgICAgICAgICAgIGVuZERhdGVWYXJpYWJsZXMuU0hPV19NSUxMSVNFQ09ORFMgPSBtaWxsaXNlY29uZHMgPyAneWVzJyA6ICdubyc7XG5cbiAgICAgICAgICAgIHBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICAuLi52YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgRU5EX0RBVEVUSU1FOiB0aGlzLm1lc3NhZ2VGb3JtYXQuY29tcGlsZSh0ZW1wbGF0ZS5FTkRfREFURVRJTUUpKGVuZERhdGVWYXJpYWJsZXMpLFxuICAgICAgICAgICAgICAgIFJBTkdFX1RZUEU6ICdvbmx5RW5kJ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2VGb3JtYXQuY29tcGlsZSh0ZW1wbGF0ZS5EQVRFVElNRSkocGFyYW1zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gc3RhcnREYXRlIC0gc3RhcnQgZGF0ZVxuICAgICAqIEBwYXJhbSBlbmREYXRlIC0gZW5kIGRhdGVcbiAgICAgKiBAcGFyYW0gdGVtcGxhdGUgLSB0ZW1wbGF0ZVxuICAgICAqIEByZXR1cm5zIHJhbmdlIGRhdGUgaW4gdGVtcGxhdGUgZm9ybWF0XG4gICAgICovXG4gICAgcmFuZ2VEYXRlKHN0YXJ0RGF0ZTogRCwgZW5kRGF0ZTogRCwgdGVtcGxhdGU6IEZvcm1hdHRlclJhbmdlVGVtcGxhdGUpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMuYWRhcHRlci5pc0RhdGVJbnN0YW5jZShzdGFydERhdGUpIHx8ICF0aGlzLmFkYXB0ZXIuaXNEYXRlSW5zdGFuY2UoZW5kRGF0ZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLmludmFsaWREYXRlRXJyb3JUZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlcyA9IHsgLi4udGhpcy5hZGFwdGVyLmNvbmZpZy52YXJpYWJsZXMsIC4uLnRlbXBsYXRlLnZhcmlhYmxlcyB9O1xuICAgICAgICBjb25zdCBzYW1lTW9udGggPSB0aGlzLmhhc1NhbWUoc3RhcnREYXRlLCBlbmREYXRlLCAnbW9udGgnKTtcblxuICAgICAgICBjb25zdCBzdGFydERhdGVWYXJpYWJsZXMgPSB0aGlzLmNvbXBpbGVWYXJpYWJsZXMoc3RhcnREYXRlLCB2YXJpYWJsZXMpO1xuICAgICAgICBzdGFydERhdGVWYXJpYWJsZXMuU0FNRV9NT05USCA9IHNhbWVNb250aDtcblxuICAgICAgICBjb25zdCBlbmREYXRlVmFyaWFibGVzID0gdGhpcy5jb21waWxlVmFyaWFibGVzKGVuZERhdGUsIHZhcmlhYmxlcyk7XG4gICAgICAgIGVuZERhdGVWYXJpYWJsZXMuU0FNRV9NT05USCA9IHNhbWVNb250aDtcblxuICAgICAgICBjb25zdCBib3RoQ3VycmVudFllYXIgPSBzdGFydERhdGVWYXJpYWJsZXMuQ1VSUkVOVF9ZRUFSID09PSAneWVzJyAmJiBlbmREYXRlVmFyaWFibGVzLkNVUlJFTlRfWUVBUiA9PT0gJ3llcyc7XG4gICAgICAgIHN0YXJ0RGF0ZVZhcmlhYmxlcy5DVVJSRU5UX1lFQVIgPSBib3RoQ3VycmVudFllYXIgPyAneWVzJyA6ICdubyc7XG4gICAgICAgIGVuZERhdGVWYXJpYWJsZXMuQ1VSUkVOVF9ZRUFSID0gYm90aEN1cnJlbnRZZWFyID8gJ3llcycgOiAnbm8nO1xuXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICAgIC4uLnZhcmlhYmxlcyxcbiAgICAgICAgICAgIFNUQVJUX0RBVEU6IHRoaXMubWVzc2FnZUZvcm1hdC5jb21waWxlKHRlbXBsYXRlLlNUQVJUX0RBVEUpKHN0YXJ0RGF0ZVZhcmlhYmxlcyksXG4gICAgICAgICAgICBFTkRfREFURTogdGhpcy5tZXNzYWdlRm9ybWF0LmNvbXBpbGUodGVtcGxhdGUuRU5EX0RBVEUpKGVuZERhdGVWYXJpYWJsZXMpLFxuICAgICAgICAgICAgU0FNRV9NT05USDogc2FtZU1vbnRoXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZUZvcm1hdC5jb21waWxlKHRlbXBsYXRlLkRBVEUpKHBhcmFtcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHN0YXJ0RGF0ZSAtIHN0YXJ0IGRhdGVcbiAgICAgKiBAcGFyYW0gZW5kRGF0ZSAtIGVuZCBkYXRlXG4gICAgICogQHBhcmFtIHRlbXBsYXRlIC0gdGVtcGxhdGVcbiAgICAgKiBAcmV0dXJucyByYW5nZSBkYXRlIGluIHRlbXBsYXRlIGZvcm1hdCB3aXRoIHRpbWVcbiAgICAgKi9cbiAgICByYW5nZURhdGVUaW1lKHN0YXJ0RGF0ZTogRCwgZW5kRGF0ZTogRCwgdGVtcGxhdGU6IEZvcm1hdHRlclJhbmdlVGVtcGxhdGUsIHNlY29uZHMgPSBmYWxzZSwgbWlsbGlzZWNvbmRzID0gZmFsc2UpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMuYWRhcHRlci5pc0RhdGVJbnN0YW5jZShzdGFydERhdGUpIHx8ICF0aGlzLmFkYXB0ZXIuaXNEYXRlSW5zdGFuY2UoZW5kRGF0ZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLmludmFsaWREYXRlRXJyb3JUZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlcyA9IHsuLi50aGlzLmFkYXB0ZXIuY29uZmlnLnZhcmlhYmxlcywgLi4udGVtcGxhdGUudmFyaWFibGVzfTtcblxuICAgICAgICBjb25zdCBzYW1lTW9udGggPSB0aGlzLmhhc1NhbWUoc3RhcnREYXRlLCBlbmREYXRlLCAnbW9udGgnKTtcbiAgICAgICAgY29uc3Qgc2FtZURheSA9IHRoaXMuaGFzU2FtZShzdGFydERhdGUsIGVuZERhdGUsICdkYXknKTtcblxuICAgICAgICBjb25zdCBzdGFydERhdGVWYXJpYWJsZXMgPSB0aGlzLmNvbXBpbGVWYXJpYWJsZXMoc3RhcnREYXRlLCB2YXJpYWJsZXMpO1xuICAgICAgICBzdGFydERhdGVWYXJpYWJsZXMuU0FNRV9NT05USCA9IHNhbWVNb250aDtcbiAgICAgICAgc3RhcnREYXRlVmFyaWFibGVzLlNBTUVfREFZID0gc2FtZURheTtcbiAgICAgICAgc3RhcnREYXRlVmFyaWFibGVzLlNIT1dfU0VDT05EUyA9IHNlY29uZHMgPyAneWVzJyA6ICdubyc7XG4gICAgICAgIHN0YXJ0RGF0ZVZhcmlhYmxlcy5TSE9XX01JTExJU0VDT05EUyA9IG1pbGxpc2Vjb25kcyA/ICd5ZXMnIDogJ25vJztcblxuICAgICAgICBjb25zdCBlbmREYXRlVmFyaWFibGVzID0gdGhpcy5jb21waWxlVmFyaWFibGVzKGVuZERhdGUsIHZhcmlhYmxlcyk7XG4gICAgICAgIGVuZERhdGVWYXJpYWJsZXMuU0FNRV9NT05USCA9IHNhbWVNb250aDtcbiAgICAgICAgZW5kRGF0ZVZhcmlhYmxlcy5TQU1FX0RBWSA9IHNhbWVEYXk7XG4gICAgICAgIGVuZERhdGVWYXJpYWJsZXMuU0hPV19TRUNPTkRTID0gc2Vjb25kcyA/ICd5ZXMnIDogJ25vJztcbiAgICAgICAgZW5kRGF0ZVZhcmlhYmxlcy5TSE9XX01JTExJU0VDT05EUyA9IG1pbGxpc2Vjb25kcyA/ICd5ZXMnIDogJ25vJztcblxuICAgICAgICBjb25zdCBib3RoQ3VycmVudFllYXIgPSBzdGFydERhdGVWYXJpYWJsZXMuQ1VSUkVOVF9ZRUFSID09PSAneWVzJyAmJiBlbmREYXRlVmFyaWFibGVzLkNVUlJFTlRfWUVBUiA9PT0gJ3llcyc7XG4gICAgICAgIHN0YXJ0RGF0ZVZhcmlhYmxlcy5DVVJSRU5UX1lFQVIgPSBib3RoQ3VycmVudFllYXIgPyAneWVzJyA6ICdubyc7XG4gICAgICAgIGVuZERhdGVWYXJpYWJsZXMuQ1VSUkVOVF9ZRUFSID0gYm90aEN1cnJlbnRZZWFyID8gJ3llcycgOiAnbm8nO1xuXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICAgIC4uLnZhcmlhYmxlcyxcbiAgICAgICAgICAgIFNUQVJUX0RBVEVUSU1FOiB0aGlzLm1lc3NhZ2VGb3JtYXQuY29tcGlsZSh0ZW1wbGF0ZS5TVEFSVF9EQVRFVElNRSkoc3RhcnREYXRlVmFyaWFibGVzKSxcbiAgICAgICAgICAgIEVORF9EQVRFVElNRTogdGhpcy5tZXNzYWdlRm9ybWF0LmNvbXBpbGUodGVtcGxhdGUuRU5EX0RBVEVUSU1FKShlbmREYXRlVmFyaWFibGVzKSxcbiAgICAgICAgICAgIFNBTUVfTU9OVEg6IHNhbWVNb250aCxcbiAgICAgICAgICAgIFNBTUVfREFZOiBzYW1lRGF5XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZUZvcm1hdC5jb21waWxlKHRlbXBsYXRlLkRBVEVUSU1FKShwYXJhbXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBzdGFydERhdGUgLSBzdGFydCBkYXRlXG4gICAgICogQHBhcmFtIGVuZERhdGUgLSBlbmQgZGF0ZVxuICAgICAqIEByZXR1cm5zIHJhbmdlIGRhdGUgaW4gc2hvcnQgZm9ybWF0XG4gICAgICovXG4gICAgcmFuZ2VTaG9ydERhdGUoc3RhcnREYXRlOiBEIHwgbnVsbCwgZW5kRGF0ZT86IEQpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCByYW5nZVRlbXBsYXRlcyA9IHRoaXMuY29uZmlnLnJhbmdlVGVtcGxhdGVzO1xuXG4gICAgICAgIGlmIChzdGFydERhdGUgJiYgZW5kRGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmFuZ2VEYXRlKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgcmFuZ2VUZW1wbGF0ZXMuY2xvc2VkUmFuZ2Uuc2hvcnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMub3BlbmVkUmFuZ2VEYXRlKHN0YXJ0RGF0ZSwgZW5kRGF0ZSB8fCBudWxsLCByYW5nZVRlbXBsYXRlcy5vcGVuZWRSYW5nZS5zaG9ydCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHN0YXJ0RGF0ZSAtIHN0YXJ0IGRhdGVcbiAgICAgKiBAcGFyYW0gZW5kRGF0ZSAtIGVuZCBkYXRlXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBEYXRlVGltZU9wdGlvbnNcbiAgICAgKiBAcmV0dXJucyByYW5nZSBkYXRlIGluIHNob3J0IGZvcm1hdCB3aXRoIHRpbWVcbiAgICAgKi9cbiAgICByYW5nZVNob3J0RGF0ZVRpbWUoc3RhcnREYXRlOiBEIHwgbnVsbCwgZW5kRGF0ZT86IEQgfCBudWxsLCBvcHRpb25zPzogRGF0ZVRpbWVPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcmFuZ2VUZW1wbGF0ZXMgPSB0aGlzLmNvbmZpZy5yYW5nZVRlbXBsYXRlcztcblxuICAgICAgICBpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJhbmdlRGF0ZVRpbWUoc3RhcnREYXRlLCBlbmREYXRlLCByYW5nZVRlbXBsYXRlcy5jbG9zZWRSYW5nZS5zaG9ydCwgb3B0aW9ucz8uc2Vjb25kcywgb3B0aW9ucz8ubWlsbGlzZWNvbmRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5lZFJhbmdlRGF0ZVRpbWUoXG4gICAgICAgICAgICBzdGFydERhdGUsXG4gICAgICAgICAgICBlbmREYXRlIHx8IG51bGwsXG4gICAgICAgICAgICByYW5nZVRlbXBsYXRlcy5vcGVuZWRSYW5nZS5zaG9ydCxcbiAgICAgICAgICAgIG9wdGlvbnM/LnNlY29uZHMsXG4gICAgICAgICAgICBvcHRpb25zPy5taWxsaXNlY29uZHNcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gc3RhcnREYXRlIC0gc3RhcnQgZGF0ZVxuICAgICAqIEBwYXJhbSBlbmREYXRlIC0gZW5kIGRhdGVcbiAgICAgKiBAcmV0dXJucyByYW5nZSBkYXRlIGluIGxvbmcgZm9ybWF0XG4gICAgICovXG4gICAgcmFuZ2VMb25nRGF0ZShzdGFydERhdGU6IEQgfCBudWxsLCBlbmREYXRlPzogRCB8IG51bGwpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCByYW5nZVRlbXBsYXRlcyA9IHRoaXMuY29uZmlnLnJhbmdlVGVtcGxhdGVzO1xuXG4gICAgICAgIGlmIChzdGFydERhdGUgJiYgZW5kRGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmFuZ2VEYXRlKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgcmFuZ2VUZW1wbGF0ZXMuY2xvc2VkUmFuZ2UubG9uZyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5vcGVuZWRSYW5nZURhdGUoc3RhcnREYXRlLCBlbmREYXRlIHx8IG51bGwsIHJhbmdlVGVtcGxhdGVzLm9wZW5lZFJhbmdlLmxvbmcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBzdGFydERhdGUgLSBzdGFydCBkYXRlXG4gICAgICogQHBhcmFtIGVuZERhdGUgLSBlbmQgZGF0ZVxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gRGF0ZVRpbWVPcHRpb25zXG4gICAgICogQHJldHVybnMgcmFuZ2UgZGF0ZSBpbiBsb25nIGZvcm1hdCB3aXRoIHRpbWVcbiAgICAgKi9cbiAgICByYW5nZUxvbmdEYXRlVGltZShzdGFydERhdGU6IEQgfCBudWxsLCBlbmREYXRlPzogRCwgb3B0aW9ucz86IERhdGVUaW1lT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHJhbmdlVGVtcGxhdGVzID0gdGhpcy5jb25maWcucmFuZ2VUZW1wbGF0ZXM7XG5cbiAgICAgICAgaWYgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yYW5nZURhdGVUaW1lKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgcmFuZ2VUZW1wbGF0ZXMuY2xvc2VkUmFuZ2UubG9uZywgb3B0aW9ucz8uc2Vjb25kcywgb3B0aW9ucz8ubWlsbGlzZWNvbmRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5lZFJhbmdlRGF0ZVRpbWUoc3RhcnREYXRlLCBlbmREYXRlIHx8IG51bGwsIHJhbmdlVGVtcGxhdGVzLm9wZW5lZFJhbmdlLmxvbmcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBzdGFydERhdGUgLSBzdGFydCBkYXRlXG4gICAgICogQHBhcmFtIGVuZERhdGUgLSBlbmQgZGF0ZVxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gRGF0ZVRpbWVPcHRpb25zXG4gICAgICogQHJldHVybnMgcmFuZ2UgbWlkZGxlIGRhdGUgd2l0aCB0aW1lXG4gICAgICovXG4gICAgcmFuZ2VNaWRkbGVEYXRlVGltZShzdGFydERhdGU6IEQsIGVuZERhdGU6IEQsIG9wdGlvbnM/OiBEYXRlVGltZU9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5yYW5nZURhdGVUaW1lKFxuICAgICAgICAgICAgc3RhcnREYXRlLFxuICAgICAgICAgICAgZW5kRGF0ZSxcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnJhbmdlVGVtcGxhdGVzLmNsb3NlZFJhbmdlLm1pZGRsZSxcbiAgICAgICAgICAgIG9wdGlvbnM/LnNlY29uZHMsXG4gICAgICAgICAgICBvcHRpb25zPy5taWxsaXNlY29uZHNcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZGF0ZVxuICAgICAqIEBwYXJhbSB2YXJpYWJsZXMgLSBkYXRlIHRlbXBsYXRlIHZhcmlhYmxlc1xuICAgICAqIEBwYXJhbSBjdXJyWWVhckZvcmNlZCAtIHBhcmFtIGZvciBhYnNvbHV0ZSBkYXlzIGZvcm1hdHRpbmdcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgY29tcGlsZVZhcmlhYmxlcyhkYXRlOiBELCB2YXJpYWJsZXM6IGFueSwgY3VyclllYXJGb3JjZWQ6IGJvb2xlYW4gPSBmYWxzZSk6IGFueSB7XG4gICAgICAgIGNvbnN0IGNvbXBpbGVkVmFyaWFibGVzOiBhbnkgPSB7fTtcblxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tZm9yLWluXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHZhcmlhYmxlcykge1xuICAgICAgICAgICAgaWYgKCF2YXJpYWJsZXMuaGFzT3duUHJvcGVydHkoa2V5KSkgeyBjb250aW51ZTsgfVxuXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHZhcmlhYmxlc1trZXldO1xuICAgICAgICAgICAgY29tcGlsZWRWYXJpYWJsZXNba2V5XSA9IHRoaXMuYWRhcHRlci5mb3JtYXQoZGF0ZSwgdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29tcGlsZWRWYXJpYWJsZXMuQ1VSUkVOVF9ZRUFSID0gKGN1cnJZZWFyRm9yY2VkICYmICdubycpIHx8IHRoaXMuaGFzU2FtZShkYXRlLCB0aGlzLmFkYXB0ZXIudG9kYXkoKSwgJ3llYXInKTtcblxuICAgICAgICByZXR1cm4gY29tcGlsZWRWYXJpYWJsZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0JlZm9yZVllc3RlcmRheShkYXRlOiBEKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZGF5c0Zyb21Ub2RheShkYXRlKSA8PSAtMjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzWWVzdGVyZGF5KGRhdGU6IEQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5kYXlzRnJvbVRvZGF5KGRhdGUpID09PSAtMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVG9kYXkoZGF0ZTogRCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmRheXNGcm9tVG9kYXkoZGF0ZSkgPT09IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1RvbW9ycm93KGRhdGU6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmRheXNGcm9tVG9kYXkoZGF0ZSkgPT09IDE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0FmdGVyVG9tb3Jyb3coZGF0ZTogRCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmRheXNGcm9tVG9kYXkoZGF0ZSkgPj0gMjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc1NhbWUoc3RhcnREYXRlOiBELCBlbmREYXRlOiBELCB1bml0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmhhc1NhbWUoc3RhcnREYXRlLCBlbmREYXRlLCB1bml0KSA/ICd5ZXMnIDogJ25vJztcbiAgICB9XG59XG4iXX0=
@@ -278,4 +278,4 @@ export const enUS = {
278
278
  }
279
279
  }
280
280
  };
281
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW4tVVMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9tb3NhaWMvY29yZS9mb3JtYXR0ZXJzL2RhdGUvdGVtcGxhdGVzL2VuLVVTLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sZ0JBQWdCLEdBQUc7Ozs7Ozs7Ozs7RUFVdkIsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRztJQUNoQixpQkFBaUIsRUFBRTtRQUNmLEtBQUssRUFBRTtZQUNILGdCQUFnQixFQUFFLGdGQUFnRixnQkFBZ0IsRUFBRTtZQUNwSCxTQUFTLEVBQUUsb0JBQW9CLGdCQUFnQixFQUFFO1lBQ2pELEtBQUssRUFBRSxnQkFBZ0IsZ0JBQWdCLEVBQUU7WUFDekMsUUFBUSxFQUFFLG1CQUFtQixnQkFBZ0IsRUFBRTtZQUMvQyxjQUFjLEVBQUUsZ0ZBQWdGLGdCQUFnQixFQUFFO1NBQ3JIO1FBQ0QsSUFBSSxFQUFFO1lBQ0YsZ0JBQWdCLEVBQUUsb0VBQW9FLGdCQUFnQixFQUFFO1lBQ3hHLFNBQVMsRUFBRSxvQkFBb0IsZ0JBQWdCLEVBQUU7WUFDakQsS0FBSyxFQUFFLGdCQUFnQixnQkFBZ0IsRUFBRTtZQUN6QyxRQUFRLEVBQUUsbUJBQW1CLGdCQUFnQixFQUFFO1lBQy9DLGNBQWMsRUFBRSxvRUFBb0UsZ0JBQWdCLEVBQUU7U0FDekc7S0FDSjtJQUNELGlCQUFpQixFQUFFO1FBQ2YsS0FBSyxFQUFFO1lBQ0gsSUFBSSxFQUFFLHVFQUF1RTtZQUM3RSxRQUFRLEVBQUU7Ozs7O2VBS1AsZ0JBQWdCLEVBQUU7U0FDeEI7UUFDRCxJQUFJLEVBQUU7WUFDRixJQUFJLEVBQUUsMkRBQTJEO1lBQ2pFLFFBQVEsRUFBRTs7Ozs7ZUFLUCxnQkFBZ0IsRUFBRTtTQUN4QjtLQUNKO0lBQ0QsY0FBYyxFQUFFO1FBQ1osV0FBVyxFQUFFO1lBQ1QsS0FBSyxFQUFFO2dCQUNILFVBQVUsRUFBRSx1RUFBdUU7Z0JBQ25GLFFBQVEsRUFBRTs7Ozs7Ozs7OztrQkFVUjtnQkFDRixJQUFJLEVBQUU7Ozs7O2tCQUtKO2dCQUVGLGNBQWMsRUFBRTs7Ozs7Ozs7OzttQkFVYixnQkFBZ0IsRUFBRTtnQkFDckIsWUFBWSxFQUFFOzs7Ozs7NENBTWMsZ0JBQWdCOzhDQUNkLGdCQUFnQjs7Ozs7OzsyQkFPbkMsZ0JBQWdCO2tCQUN6QjtnQkFDRixRQUFRLEVBQUU7Ozs7O2tCQUtSO2FBQ0w7WUFDRCxNQUFNLEVBQUU7Z0JBQ0osVUFBVSxFQUFFOzs7Ozs7Ozs7O2tCQVVWO2dCQUNGLFFBQVEsRUFBRSwyREFBMkQ7Z0JBQ3JFLElBQUksRUFBRTs7Ozs7a0JBS0o7Z0JBRUYsY0FBYyxFQUFFOzs7Ozs7Ozs7O21CQVViLGdCQUFnQixFQUFFO2dCQUNyQixZQUFZLEVBQUU7Ozs7Ozs0Q0FNYyxnQkFBZ0I7OENBQ2QsZ0JBQWdCOzs7Ozs7OzJCQU9uQyxnQkFBZ0I7a0JBQ3pCO2dCQUNGLFFBQVEsRUFBRTs7Ozs7a0JBS1I7YUFDTDtZQUNELElBQUksRUFBRTtnQkFDRixVQUFVLEVBQUUsMkRBQTJEO2dCQUN2RSxRQUFRLEVBQUU7Ozs7Ozs7Ozs7a0JBVVI7Z0JBQ0YsSUFBSSxFQUFFOzs7OztrQkFLSjtnQkFFRixjQUFjLEVBQUU7Ozs7Ozs7Ozs7Ozs7OzttQkFlYixnQkFBZ0IsRUFBRTtnQkFDckIsWUFBWSxFQUFFOzs7Ozs7Ozs7O21CQVVYLGdCQUFnQixFQUFFO2dCQUNyQixRQUFRLEVBQUU7Ozs7O2tCQUtSO2FBQ0w7U0FDSjtRQUNELFdBQVcsRUFBRTtZQUNULEtBQUssRUFBRTtnQkFDSCxVQUFVLEVBQUU7Ozs7O2tCQUtWO2dCQUNGLFFBQVEsRUFBRSxzRUFBc0U7Z0JBQ2hGLElBQUksRUFBRTs7Ozs7a0JBS0o7Z0JBRUYsY0FBYyxFQUFFOzs7OzttQkFLYixnQkFBZ0IsRUFBRTtnQkFDckIsWUFBWSxFQUFFOzs7OzttQkFLWCxnQkFBZ0IsRUFBRTtnQkFDckIsUUFBUSxFQUFFOzs7OztrQkFLUjthQUNMO1lBQ0QsSUFBSSxFQUFFO2dCQUNGLFVBQVUsRUFBRTs7Ozs7a0JBS1Y7Z0JBQ0YsUUFBUSxFQUFFLDBEQUEwRDtnQkFDcEUsSUFBSSxFQUFFOzs7OztrQkFLSjtnQkFFRixjQUFjLEVBQUU7Ozs7O21CQUtiLGdCQUFnQixFQUFFO2dCQUNyQixZQUFZLEVBQUU7Ozs7O21CQUtYLGdCQUFnQixFQUFFO2dCQUNyQixRQUFRLEVBQUU7Ozs7O2tCQUtSO2FBQ0w7U0FDSjtLQUNKO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFNFQ09ORFNfVEVNUExBVEUgPSBge1xuICAgIFNIT1dfTUlMTElTRUNPTkRTLFxuICAgIHNlbGVjdCxcbiAgICAgICAgeWVzezp7U0VDT05EU317TUlMTElTRUNPTkRTfX1cbiAgICAgICAgb3RoZXJ7e1xuICAgICAgICAgICAgU0hPV19TRUNPTkRTLFxuICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgIHllc3s6e1NFQ09ORFN9fVxuICAgICAgICAgICAgICAgIG90aGVye31cbiAgICAgICAgfX1cbn1gO1xuXG5leHBvcnQgY29uc3QgZW5VUyA9IHtcbiAgICByZWxhdGl2ZVRlbXBsYXRlczoge1xuICAgICAgICBzaG9ydDoge1xuICAgICAgICAgICAgQkVGT1JFX1lFU1RFUkRBWTogYHtDVVJSRU5UX1lFQVIsIHNlbGVjdCwgeWVze3tTSE9SVF9EQVRFfSwge1RJTUV9fSBvdGhlcnt7U0hPUlRfREFURX0sIHtZRUFSfX19JHtTRUNPTkRTX1RFTVBMQVRFfWAsXG4gICAgICAgICAgICBZRVNURVJEQVk6IGBZZXN0ZXJkYXksIHtUSU1FfSR7U0VDT05EU19URU1QTEFURX1gLFxuICAgICAgICAgICAgVE9EQVk6IGBUb2RheSwge1RJTUV9JHtTRUNPTkRTX1RFTVBMQVRFfWAsXG4gICAgICAgICAgICBUT01PUlJPVzogYFRvbW9ycm93LCB7VElNRX0ke1NFQ09ORFNfVEVNUExBVEV9YCxcbiAgICAgICAgICAgIEFGVEVSX1RPTU9SUk9XOiBge0NVUlJFTlRfWUVBUiwgc2VsZWN0LCB5ZXN7e1NIT1JUX0RBVEV9LCB7VElNRX19IG90aGVye3tTSE9SVF9EQVRFfSwge1lFQVJ9fX0ke1NFQ09ORFNfVEVNUExBVEV9YFxuICAgICAgICB9LFxuICAgICAgICBsb25nOiB7XG4gICAgICAgICAgICBCRUZPUkVfWUVTVEVSREFZOiBge0NVUlJFTlRfWUVBUiwgc2VsZWN0LCB5ZXN7e0RBVEV9LCB7VElNRX19IG90aGVye3tEQVRFfSwge1lFQVJ9fX0ke1NFQ09ORFNfVEVNUExBVEV9YCxcbiAgICAgICAgICAgIFlFU1RFUkRBWTogYFllc3RlcmRheSwge1RJTUV9JHtTRUNPTkRTX1RFTVBMQVRFfWAsXG4gICAgICAgICAgICBUT0RBWTogYFRvZGF5LCB7VElNRX0ke1NFQ09ORFNfVEVNUExBVEV9YCxcbiAgICAgICAgICAgIFRPTU9SUk9XOiBgVG9tb3Jyb3csIHtUSU1FfSR7U0VDT05EU19URU1QTEFURX1gLFxuICAgICAgICAgICAgQUZURVJfVE9NT1JST1c6IGB7Q1VSUkVOVF9ZRUFSLCBzZWxlY3QsIHllc3t7REFURX0sIHtUSU1FfX0gb3RoZXJ7e0RBVEV9LCB7WUVBUn19fSR7U0VDT05EU19URU1QTEFURX1gXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFic29sdXRlVGVtcGxhdGVzOiB7XG4gICAgICAgIHNob3J0OiB7XG4gICAgICAgICAgICBEQVRFOiAne0NVUlJFTlRfWUVBUiwgc2VsZWN0LCB5ZXN7e1NIT1JUX0RBVEV9fSBvdGhlcnt7U0hPUlRfREFURX0sIHtZRUFSfX19JyxcbiAgICAgICAgICAgIERBVEVUSU1FOiBge1xuICAgICAgICAgICAgICAgIENVUlJFTlRfWUVBUixcbiAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgIHllc3t7U0hPUlRfREFURX0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1NIT1JUX0RBVEV9LCB7WUVBUn0sIHtUSU1FfX1cbiAgICAgICAgICAgIH0ke1NFQ09ORFNfVEVNUExBVEV9YFxuICAgICAgICB9LFxuICAgICAgICBsb25nOiB7XG4gICAgICAgICAgICBEQVRFOiAne0NVUlJFTlRfWUVBUiwgc2VsZWN0LCB5ZXN7e0RBVEV9fSBvdGhlcnt7REFURX0sIHtZRUFSfX19JyxcbiAgICAgICAgICAgIERBVEVUSU1FOiBge1xuICAgICAgICAgICAgICAgIENVUlJFTlRfWUVBUixcbiAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgIHllc3t7REFURX0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e0RBVEV9LCB7WUVBUn0sIHtUSU1FfX1cbiAgICAgICAgICAgIH0ke1NFQ09ORFNfVEVNUExBVEV9YFxuICAgICAgICB9XG4gICAgfSxcbiAgICByYW5nZVRlbXBsYXRlczoge1xuICAgICAgICBjbG9zZWRSYW5nZToge1xuICAgICAgICAgICAgc2hvcnQ6IHtcbiAgICAgICAgICAgICAgICBTVEFSVF9EQVRFOiAne0NVUlJFTlRfWUVBUiwgc2VsZWN0LCB5ZXN7e1NIT1JUX0RBVEV9fSBvdGhlcnt7U0hPUlRfREFURX0sIHtZRUFSfX19JyxcbiAgICAgICAgICAgICAgICBFTkRfREFURTogYHtcbiAgICAgICAgICAgICAgICAgICAgU0FNRV9NT05USCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tEQVl9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUlJFTlRfWUVBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7U0hPUlRfREFURX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tTSE9SVF9EQVRFfSwge1lFQVJ9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICBEQVRFOiBge1xuICAgICAgICAgICAgICAgICAgICBTQU1FX01PTlRILFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e1NUQVJUX0RBVEV9e0RBU0h9e0VORF9EQVRFfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tTVEFSVF9EQVRFfXtMT05HX0RBU0h9e0VORF9EQVRFfX1cbiAgICAgICAgICAgICAgICB9YCxcblxuICAgICAgICAgICAgICAgIFNUQVJUX0RBVEVUSU1FOiBge1xuICAgICAgICAgICAgICAgICAgICBTQU1FX0RBWSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e1NIT1JUX0RBVEV9LCB7VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tTSE9SVF9EQVRFfSwge1lFQVJ9LCB7VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIH0ke1NFQ09ORFNfVEVNUExBVEV9YCxcbiAgICAgICAgICAgICAgICBFTkRfREFURVRJTUU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFNBTUVfREFZLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUlJFTlRfWUVBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7VElNRX0ke1NFQ09ORFNfVEVNUExBVEV9LCB7U0hPUlRfREFURX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tUSU1FfSR7U0VDT05EU19URU1QTEFURX0sIHtTSE9SVF9EQVRFfSwge1lFQVJ9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e1NIT1JUX0RBVEV9LCB7VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tTSE9SVF9EQVRFfSwge1lFQVJ9LCB7VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICB9JHtTRUNPTkRTX1RFTVBMQVRFfX1cbiAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICBEQVRFVElNRTogYHtcbiAgICAgICAgICAgICAgICAgICAgU0FNRV9EQVksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7U1RBUlRfREFURVRJTUV9e0RBU0h9e0VORF9EQVRFVElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7U1RBUlRfREFURVRJTUV9e0xPTkdfREFTSH17RU5EX0RBVEVUSU1FfX1cbiAgICAgICAgICAgICAgICB9YFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1pZGRsZToge1xuICAgICAgICAgICAgICAgIFNUQVJUX0RBVEU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFNBTUVfTU9OVEgsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7REFZfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e0RBVEV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7REFURX0sIHtZRUFSfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgRU5EX0RBVEU6ICd7Q1VSUkVOVF9ZRUFSLCBzZWxlY3QsIHllc3t7REFURX19IG90aGVye3tEQVRFfSwge1lFQVJ9fX0nLFxuICAgICAgICAgICAgICAgIERBVEU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFNBTUVfTU9OVEgsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7U1RBUlRfREFURX17REFTSH17RU5EX0RBVEV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1NUQVJUX0RBVEV9e0xPTkdfREFTSH17RU5EX0RBVEV9fVxuICAgICAgICAgICAgICAgIH1gLFxuXG4gICAgICAgICAgICAgICAgU1RBUlRfREFURVRJTUU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFNBTUVfREFZLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUlJFTlRfWUVBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7REFURX0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e0RBVEV9LCB7WUVBUn0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgfSR7U0VDT05EU19URU1QTEFURX1gLFxuICAgICAgICAgICAgICAgIEVORF9EQVRFVElNRTogYHtcbiAgICAgICAgICAgICAgICAgICAgU0FNRV9EQVksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tUSU1FfSR7U0VDT05EU19URU1QTEFURX0sIHtEQVRFfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1RJTUV9JHtTRUNPTkRTX1RFTVBMQVRFfSwge0RBVEV9LCB7WUVBUn19XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUlJFTlRfWUVBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7REFURX0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e0RBVEV9LCB7WUVBUn0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0ke1NFQ09ORFNfVEVNUExBVEV9fVxuICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIERBVEVUSU1FOiBge1xuICAgICAgICAgICAgICAgICAgICBTQU1FX0RBWSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tTVEFSVF9EQVRFVElNRX17REFTSH17RU5EX0RBVEVUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tTVEFSVF9EQVRFVElNRX17TE9OR19EQVNIfXtFTkRfREFURVRJTUV9fVxuICAgICAgICAgICAgICAgIH1gXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9uZzoge1xuICAgICAgICAgICAgICAgIFNUQVJUX0RBVEU6ICd7Q1VSUkVOVF9ZRUFSLCBzZWxlY3QsIHllc3t7REFURX19IG90aGVye3tEQVRFfSwge1lFQVJ9fX0nLFxuICAgICAgICAgICAgICAgIEVORF9EQVRFOiBge1xuICAgICAgICAgICAgICAgICAgICBTQU1FX01PTlRILFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e0RBWX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tEQVRFfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e0RBVEV9LCB7WUVBUn19XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIERBVEU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFNBTUVfTU9OVEgsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7U1RBUlRfREFURX17REFTSH17RU5EX0RBVEV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1NUQVJUX0RBVEV9e0xPTkdfREFTSH17RU5EX0RBVEV9fVxuICAgICAgICAgICAgICAgIH1gLFxuXG4gICAgICAgICAgICAgICAgU1RBUlRfREFURVRJTUU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFNBTUVfREFZLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUlJFTlRfWUVBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7REFURX0sIGZyb217TkJTUH17VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tEQVRFfSwge1lFQVJ9LCBmcm9te05CU1B9e1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e0RBVEV9LCB7VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tEQVRFfSwge1lFQVJ9LCB7VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIH0ke1NFQ09ORFNfVEVNUExBVEV9YCxcbiAgICAgICAgICAgICAgICBFTkRfREFURVRJTUU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFNBTUVfREFZLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7dG97TkJTUH17VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tEQVRFfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7REFURX0sIHtZRUFSfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICB9JHtTRUNPTkRTX1RFTVBMQVRFfWAsXG4gICAgICAgICAgICAgICAgREFURVRJTUU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFNBTUVfREFZLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e1NUQVJUX0RBVEVUSU1FfSB7RU5EX0RBVEVUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye0Zyb20ge1NUQVJUX0RBVEVUSU1FfSB0b3tOQlNQfXtFTkRfREFURVRJTUV9fVxuICAgICAgICAgICAgICAgIH1gXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9wZW5lZFJhbmdlOiB7XG4gICAgICAgICAgICBzaG9ydDoge1xuICAgICAgICAgICAgICAgIFNUQVJUX0RBVEU6IGB7XG4gICAgICAgICAgICAgICAgICAgIENVUlJFTlRfWUVBUixcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tTSE9SVF9EQVRFfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tTSE9SVF9EQVRFfSB7WUVBUn19XG4gICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgRU5EX0RBVEU6ICd7Q1VSUkVOVF9ZRUFSLCBzZWxlY3QsIHllc3t7U0hPUlRfREFURX19IG90aGVye3tTSE9SVF9EQVRFfSB7WUVBUn19fScsXG4gICAgICAgICAgICAgICAgREFURTogYHtcbiAgICAgICAgICAgICAgICAgICAgUkFOR0VfVFlQRSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25seVN0YXJ0e0Zyb217TkJTUH17U1RBUlRfREFURX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcntVbnRpbHtOQlNQfXtFTkRfREFURX19XG4gICAgICAgICAgICAgICAgfWAsXG5cbiAgICAgICAgICAgICAgICBTVEFSVF9EQVRFVElNRTogYHtcbiAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e1NIT1JUX0RBVEV9LCB7VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7U0hPUlRfREFURX0ge1lFQVJ9LCB7VElNRX19XG4gICAgICAgICAgICAgICAgfSR7U0VDT05EU19URU1QTEFURX1gLFxuICAgICAgICAgICAgICAgIEVORF9EQVRFVElNRTogYHtcbiAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e1NIT1JUX0RBVEV9LCB7VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7U0hPUlRfREFURX0ge1lFQVJ9LCB7VElNRX19XG4gICAgICAgICAgICAgICAgfSR7U0VDT05EU19URU1QTEFURX1gLFxuICAgICAgICAgICAgICAgIERBVEVUSU1FOiBge1xuICAgICAgICAgICAgICAgICAgICBSQU5HRV9UWVBFLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbmx5U3RhcnR7RnJvbXtOQlNQfXtTVEFSVF9EQVRFVElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcntVbnRpbHtOQlNQfXtFTkRfREFURVRJTUV9fVxuICAgICAgICAgICAgICAgIH1gXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9uZzoge1xuICAgICAgICAgICAgICAgIFNUQVJUX0RBVEU6IGB7XG4gICAgICAgICAgICAgICAgICAgIENVUlJFTlRfWUVBUixcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tEQVRFfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tEQVRFfSB7WUVBUn19XG4gICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgRU5EX0RBVEU6ICd7Q1VSUkVOVF9ZRUFSLCBzZWxlY3QsIHllc3t7REFURX19IG90aGVye3tEQVRFfSB7WUVBUn19fScsXG4gICAgICAgICAgICAgICAgREFURTogYHtcbiAgICAgICAgICAgICAgICAgICAgUkFOR0VfVFlQRSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25seVN0YXJ0e0Zyb217TkJTUH17U1RBUlRfREFURX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcntVbnRpbHtOQlNQfXtFTkRfREFURX19XG4gICAgICAgICAgICAgICAgfWAsXG5cbiAgICAgICAgICAgICAgICBTVEFSVF9EQVRFVElNRTogYHtcbiAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e0RBVEV9LCB7VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7REFURX0ge1lFQVJ9LCB7VElNRX19XG4gICAgICAgICAgICAgICAgfSR7U0VDT05EU19URU1QTEFURX1gLFxuICAgICAgICAgICAgICAgIEVORF9EQVRFVElNRTogYHtcbiAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e0RBVEV9LCB7VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7REFURX0ge1lFQVJ9LCB7VElNRX19XG4gICAgICAgICAgICAgICAgfSR7U0VDT05EU19URU1QTEFURX1gLFxuICAgICAgICAgICAgICAgIERBVEVUSU1FOiBge1xuICAgICAgICAgICAgICAgICAgICBSQU5HRV9UWVBFLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbmx5U3RhcnR7RnJvbXtOQlNQfXtTVEFSVF9EQVRFVElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcntVbnRpbHtOQlNQfXtFTkRfREFURVRJTUV9fVxuICAgICAgICAgICAgICAgIH1gXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59O1xuIl19
281
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW4tVVMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9tb3NhaWMvY29yZS9mb3JtYXR0ZXJzL2RhdGUvdGVtcGxhdGVzL2VuLVVTLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sZ0JBQWdCLEdBQUc7Ozs7Ozs7Ozs7RUFVdkIsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBb0I7SUFDakMsaUJBQWlCLEVBQUU7UUFDZixLQUFLLEVBQUU7WUFDSCxnQkFBZ0IsRUFBRSxnRkFBZ0YsZ0JBQWdCLEVBQUU7WUFDcEgsU0FBUyxFQUFFLG9CQUFvQixnQkFBZ0IsRUFBRTtZQUNqRCxLQUFLLEVBQUUsZ0JBQWdCLGdCQUFnQixFQUFFO1lBQ3pDLFFBQVEsRUFBRSxtQkFBbUIsZ0JBQWdCLEVBQUU7WUFDL0MsY0FBYyxFQUFFLGdGQUFnRixnQkFBZ0IsRUFBRTtTQUNySDtRQUNELElBQUksRUFBRTtZQUNGLGdCQUFnQixFQUFFLG9FQUFvRSxnQkFBZ0IsRUFBRTtZQUN4RyxTQUFTLEVBQUUsb0JBQW9CLGdCQUFnQixFQUFFO1lBQ2pELEtBQUssRUFBRSxnQkFBZ0IsZ0JBQWdCLEVBQUU7WUFDekMsUUFBUSxFQUFFLG1CQUFtQixnQkFBZ0IsRUFBRTtZQUMvQyxjQUFjLEVBQUUsb0VBQW9FLGdCQUFnQixFQUFFO1NBQ3pHO0tBQ0o7SUFDRCxpQkFBaUIsRUFBRTtRQUNmLEtBQUssRUFBRTtZQUNILElBQUksRUFBRSx1RUFBdUU7WUFDN0UsUUFBUSxFQUFFOzs7OztlQUtQLGdCQUFnQixFQUFFO1NBQ3hCO1FBQ0QsSUFBSSxFQUFFO1lBQ0YsSUFBSSxFQUFFLDJEQUEyRDtZQUNqRSxRQUFRLEVBQUU7Ozs7O2VBS1AsZ0JBQWdCLEVBQUU7U0FDeEI7S0FDSjtJQUNELGNBQWMsRUFBRTtRQUNaLFdBQVcsRUFBRTtZQUNULEtBQUssRUFBRTtnQkFDSCxVQUFVLEVBQUUsdUVBQXVFO2dCQUNuRixRQUFRLEVBQUU7Ozs7Ozs7Ozs7a0JBVVI7Z0JBQ0YsSUFBSSxFQUFFOzs7OztrQkFLSjtnQkFFRixjQUFjLEVBQUU7Ozs7Ozs7Ozs7bUJBVWIsZ0JBQWdCLEVBQUU7Z0JBQ3JCLFlBQVksRUFBRTs7Ozs7OzRDQU1jLGdCQUFnQjs4Q0FDZCxnQkFBZ0I7Ozs7Ozs7MkJBT25DLGdCQUFnQjtrQkFDekI7Z0JBQ0YsUUFBUSxFQUFFOzs7OztrQkFLUjthQUNMO1lBQ0QsTUFBTSxFQUFFO2dCQUNKLFVBQVUsRUFBRTs7Ozs7Ozs7OztrQkFVVjtnQkFDRixRQUFRLEVBQUUsMkRBQTJEO2dCQUNyRSxJQUFJLEVBQUU7Ozs7O2tCQUtKO2dCQUVGLGNBQWMsRUFBRTs7Ozs7Ozs7OzttQkFVYixnQkFBZ0IsRUFBRTtnQkFDckIsWUFBWSxFQUFFOzs7Ozs7NENBTWMsZ0JBQWdCOzhDQUNkLGdCQUFnQjs7Ozs7OzsyQkFPbkMsZ0JBQWdCO2tCQUN6QjtnQkFDRixRQUFRLEVBQUU7Ozs7O2tCQUtSO2FBQ0w7WUFDRCxJQUFJLEVBQUU7Z0JBQ0YsVUFBVSxFQUFFLDJEQUEyRDtnQkFDdkUsUUFBUSxFQUFFOzs7Ozs7Ozs7O2tCQVVSO2dCQUNGLElBQUksRUFBRTs7Ozs7a0JBS0o7Z0JBRUYsY0FBYyxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7bUJBZWIsZ0JBQWdCLEVBQUU7Z0JBQ3JCLFlBQVksRUFBRTs7Ozs7Ozs7OzttQkFVWCxnQkFBZ0IsRUFBRTtnQkFDckIsUUFBUSxFQUFFOzs7OztrQkFLUjthQUNMO1NBQ0o7UUFDRCxXQUFXLEVBQUU7WUFDVCxLQUFLLEVBQUU7Z0JBQ0gsVUFBVSxFQUFFOzs7OztrQkFLVjtnQkFDRixRQUFRLEVBQUUsc0VBQXNFO2dCQUNoRixJQUFJLEVBQUU7Ozs7O2tCQUtKO2dCQUVGLGNBQWMsRUFBRTs7Ozs7bUJBS2IsZ0JBQWdCLEVBQUU7Z0JBQ3JCLFlBQVksRUFBRTs7Ozs7bUJBS1gsZ0JBQWdCLEVBQUU7Z0JBQ3JCLFFBQVEsRUFBRTs7Ozs7a0JBS1I7YUFDTDtZQUNELElBQUksRUFBRTtnQkFDRixVQUFVLEVBQUU7Ozs7O2tCQUtWO2dCQUNGLFFBQVEsRUFBRSwwREFBMEQ7Z0JBQ3BFLElBQUksRUFBRTs7Ozs7a0JBS0o7Z0JBRUYsY0FBYyxFQUFFOzs7OzttQkFLYixnQkFBZ0IsRUFBRTtnQkFDckIsWUFBWSxFQUFFOzs7OzttQkFLWCxnQkFBZ0IsRUFBRTtnQkFDckIsUUFBUSxFQUFFOzs7OztrQkFLUjthQUNMO1NBQ0o7S0FDSjtDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtYXR0ZXJDb25maWcgfSBmcm9tICcuLi9mb3JtYXR0ZXInO1xuXG5cbmNvbnN0IFNFQ09ORFNfVEVNUExBVEUgPSBge1xuICAgIFNIT1dfTUlMTElTRUNPTkRTLFxuICAgIHNlbGVjdCxcbiAgICAgICAgeWVzezp7U0VDT05EU317TUlMTElTRUNPTkRTfX1cbiAgICAgICAgb3RoZXJ7e1xuICAgICAgICAgICAgU0hPV19TRUNPTkRTLFxuICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgIHllc3s6e1NFQ09ORFN9fVxuICAgICAgICAgICAgICAgIG90aGVye31cbiAgICAgICAgfX1cbn1gO1xuXG5leHBvcnQgY29uc3QgZW5VUzogRm9ybWF0dGVyQ29uZmlnID0ge1xuICAgIHJlbGF0aXZlVGVtcGxhdGVzOiB7XG4gICAgICAgIHNob3J0OiB7XG4gICAgICAgICAgICBCRUZPUkVfWUVTVEVSREFZOiBge0NVUlJFTlRfWUVBUiwgc2VsZWN0LCB5ZXN7e1NIT1JUX0RBVEV9LCB7VElNRX19IG90aGVye3tTSE9SVF9EQVRFfSwge1lFQVJ9fX0ke1NFQ09ORFNfVEVNUExBVEV9YCxcbiAgICAgICAgICAgIFlFU1RFUkRBWTogYFllc3RlcmRheSwge1RJTUV9JHtTRUNPTkRTX1RFTVBMQVRFfWAsXG4gICAgICAgICAgICBUT0RBWTogYFRvZGF5LCB7VElNRX0ke1NFQ09ORFNfVEVNUExBVEV9YCxcbiAgICAgICAgICAgIFRPTU9SUk9XOiBgVG9tb3Jyb3csIHtUSU1FfSR7U0VDT05EU19URU1QTEFURX1gLFxuICAgICAgICAgICAgQUZURVJfVE9NT1JST1c6IGB7Q1VSUkVOVF9ZRUFSLCBzZWxlY3QsIHllc3t7U0hPUlRfREFURX0sIHtUSU1FfX0gb3RoZXJ7e1NIT1JUX0RBVEV9LCB7WUVBUn19fSR7U0VDT05EU19URU1QTEFURX1gXG4gICAgICAgIH0sXG4gICAgICAgIGxvbmc6IHtcbiAgICAgICAgICAgIEJFRk9SRV9ZRVNURVJEQVk6IGB7Q1VSUkVOVF9ZRUFSLCBzZWxlY3QsIHllc3t7REFURX0sIHtUSU1FfX0gb3RoZXJ7e0RBVEV9LCB7WUVBUn19fSR7U0VDT05EU19URU1QTEFURX1gLFxuICAgICAgICAgICAgWUVTVEVSREFZOiBgWWVzdGVyZGF5LCB7VElNRX0ke1NFQ09ORFNfVEVNUExBVEV9YCxcbiAgICAgICAgICAgIFRPREFZOiBgVG9kYXksIHtUSU1FfSR7U0VDT05EU19URU1QTEFURX1gLFxuICAgICAgICAgICAgVE9NT1JST1c6IGBUb21vcnJvdywge1RJTUV9JHtTRUNPTkRTX1RFTVBMQVRFfWAsXG4gICAgICAgICAgICBBRlRFUl9UT01PUlJPVzogYHtDVVJSRU5UX1lFQVIsIHNlbGVjdCwgeWVze3tEQVRFfSwge1RJTUV9fSBvdGhlcnt7REFURX0sIHtZRUFSfX19JHtTRUNPTkRTX1RFTVBMQVRFfWBcbiAgICAgICAgfVxuICAgIH0sXG4gICAgYWJzb2x1dGVUZW1wbGF0ZXM6IHtcbiAgICAgICAgc2hvcnQ6IHtcbiAgICAgICAgICAgIERBVEU6ICd7Q1VSUkVOVF9ZRUFSLCBzZWxlY3QsIHllc3t7U0hPUlRfREFURX19IG90aGVye3tTSE9SVF9EQVRFfSwge1lFQVJ9fX0nLFxuICAgICAgICAgICAgREFURVRJTUU6IGB7XG4gICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgeWVze3tTSE9SVF9EQVRFfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICBvdGhlcnt7U0hPUlRfREFURX0sIHtZRUFSfSwge1RJTUV9fVxuICAgICAgICAgICAgfSR7U0VDT05EU19URU1QTEFURX1gXG4gICAgICAgIH0sXG4gICAgICAgIGxvbmc6IHtcbiAgICAgICAgICAgIERBVEU6ICd7Q1VSUkVOVF9ZRUFSLCBzZWxlY3QsIHllc3t7REFURX19IG90aGVye3tEQVRFfSwge1lFQVJ9fX0nLFxuICAgICAgICAgICAgREFURVRJTUU6IGB7XG4gICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgeWVze3tEQVRFfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICBvdGhlcnt7REFURX0sIHtZRUFSfSwge1RJTUV9fVxuICAgICAgICAgICAgfSR7U0VDT05EU19URU1QTEFURX1gXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHJhbmdlVGVtcGxhdGVzOiB7XG4gICAgICAgIGNsb3NlZFJhbmdlOiB7XG4gICAgICAgICAgICBzaG9ydDoge1xuICAgICAgICAgICAgICAgIFNUQVJUX0RBVEU6ICd7Q1VSUkVOVF9ZRUFSLCBzZWxlY3QsIHllc3t7U0hPUlRfREFURX19IG90aGVye3tTSE9SVF9EQVRFfSwge1lFQVJ9fX0nLFxuICAgICAgICAgICAgICAgIEVORF9EQVRFOiBge1xuICAgICAgICAgICAgICAgICAgICBTQU1FX01PTlRILFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e0RBWX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tTSE9SVF9EQVRFfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1NIT1JUX0RBVEV9LCB7WUVBUn19XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIERBVEU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFNBTUVfTU9OVEgsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7U1RBUlRfREFURX17REFTSH17RU5EX0RBVEV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1NUQVJUX0RBVEV9e0xPTkdfREFTSH17RU5EX0RBVEV9fVxuICAgICAgICAgICAgICAgIH1gLFxuXG4gICAgICAgICAgICAgICAgU1RBUlRfREFURVRJTUU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFNBTUVfREFZLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUlJFTlRfWUVBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7U0hPUlRfREFURX0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1NIT1JUX0RBVEV9LCB7WUVBUn0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgfSR7U0VDT05EU19URU1QTEFURX1gLFxuICAgICAgICAgICAgICAgIEVORF9EQVRFVElNRTogYHtcbiAgICAgICAgICAgICAgICAgICAgU0FNRV9EQVksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tUSU1FfSR7U0VDT05EU19URU1QTEFURX0sIHtTSE9SVF9EQVRFfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1RJTUV9JHtTRUNPTkRTX1RFTVBMQVRFfSwge1NIT1JUX0RBVEV9LCB7WUVBUn19XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUlJFTlRfWUVBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7U0hPUlRfREFURX0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1NIT1JUX0RBVEV9LCB7WUVBUn0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0ke1NFQ09ORFNfVEVNUExBVEV9fVxuICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIERBVEVUSU1FOiBge1xuICAgICAgICAgICAgICAgICAgICBTQU1FX0RBWSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tTVEFSVF9EQVRFVElNRX17REFTSH17RU5EX0RBVEVUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tTVEFSVF9EQVRFVElNRX17TE9OR19EQVNIfXtFTkRfREFURVRJTUV9fVxuICAgICAgICAgICAgICAgIH1gXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWlkZGxlOiB7XG4gICAgICAgICAgICAgICAgU1RBUlRfREFURTogYHtcbiAgICAgICAgICAgICAgICAgICAgU0FNRV9NT05USCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tEQVl9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUlJFTlRfWUVBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7REFURX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tEQVRFfSwge1lFQVJ9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICBFTkRfREFURTogJ3tDVVJSRU5UX1lFQVIsIHNlbGVjdCwgeWVze3tEQVRFfX0gb3RoZXJ7e0RBVEV9LCB7WUVBUn19fScsXG4gICAgICAgICAgICAgICAgREFURTogYHtcbiAgICAgICAgICAgICAgICAgICAgU0FNRV9NT05USCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tTVEFSVF9EQVRFfXtEQVNIfXtFTkRfREFURX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7U1RBUlRfREFURX17TE9OR19EQVNIfXtFTkRfREFURX19XG4gICAgICAgICAgICAgICAgfWAsXG5cbiAgICAgICAgICAgICAgICBTVEFSVF9EQVRFVElNRTogYHtcbiAgICAgICAgICAgICAgICAgICAgU0FNRV9EQVksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tEQVRFfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7REFURX0sIHtZRUFSfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICB9JHtTRUNPTkRTX1RFTVBMQVRFfWAsXG4gICAgICAgICAgICAgICAgRU5EX0RBVEVUSU1FOiBge1xuICAgICAgICAgICAgICAgICAgICBTQU1FX0RBWSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e1RJTUV9JHtTRUNPTkRTX1RFTVBMQVRFfSwge0RBVEV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7VElNRX0ke1NFQ09ORFNfVEVNUExBVEV9LCB7REFURX0sIHtZRUFSfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tEQVRFfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7REFURX0sIHtZRUFSfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfSR7U0VDT05EU19URU1QTEFURX19XG4gICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgREFURVRJTUU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFNBTUVfREFZLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e1NUQVJUX0RBVEVUSU1FfXtEQVNIfXtFTkRfREFURVRJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1NUQVJUX0RBVEVUSU1FfXtMT05HX0RBU0h9e0VORF9EQVRFVElNRX19XG4gICAgICAgICAgICAgICAgfWBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb25nOiB7XG4gICAgICAgICAgICAgICAgU1RBUlRfREFURTogJ3tDVVJSRU5UX1lFQVIsIHNlbGVjdCwgeWVze3tEQVRFfX0gb3RoZXJ7e0RBVEV9LCB7WUVBUn19fScsXG4gICAgICAgICAgICAgICAgRU5EX0RBVEU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFNBTUVfTU9OVEgsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7REFZfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e0RBVEV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7REFURX0sIHtZRUFSfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgREFURTogYHtcbiAgICAgICAgICAgICAgICAgICAgU0FNRV9NT05USCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tTVEFSVF9EQVRFfXtEQVNIfXtFTkRfREFURX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7U1RBUlRfREFURX17TE9OR19EQVNIfXtFTkRfREFURX19XG4gICAgICAgICAgICAgICAgfWAsXG5cbiAgICAgICAgICAgICAgICBTVEFSVF9EQVRFVElNRTogYHtcbiAgICAgICAgICAgICAgICAgICAgU0FNRV9EQVksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tEQVRFfSwgZnJvbXtOQlNQfXtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e0RBVEV9LCB7WUVBUn0sIGZyb217TkJTUH17VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUlJFTlRfWUVBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7REFURX0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e0RBVEV9LCB7WUVBUn0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgfSR7U0VDT05EU19URU1QTEFURX1gLFxuICAgICAgICAgICAgICAgIEVORF9EQVRFVElNRTogYHtcbiAgICAgICAgICAgICAgICAgICAgU0FNRV9EQVksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t0b3tOQlNQfXtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e0RBVEV9LCB7VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tEQVRFfSwge1lFQVJ9LCB7VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIH0ke1NFQ09ORFNfVEVNUExBVEV9YCxcbiAgICAgICAgICAgICAgICBEQVRFVElNRTogYHtcbiAgICAgICAgICAgICAgICAgICAgU0FNRV9EQVksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7U1RBUlRfREFURVRJTUV9IHtFTkRfREFURVRJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7RnJvbSB7U1RBUlRfREFURVRJTUV9IHRve05CU1B9e0VORF9EQVRFVElNRX19XG4gICAgICAgICAgICAgICAgfWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb3BlbmVkUmFuZ2U6IHtcbiAgICAgICAgICAgIHNob3J0OiB7XG4gICAgICAgICAgICAgICAgU1RBUlRfREFURTogYHtcbiAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e1NIT1JUX0RBVEV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1NIT1JUX0RBVEV9IHtZRUFSfX1cbiAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICBFTkRfREFURTogJ3tDVVJSRU5UX1lFQVIsIHNlbGVjdCwgeWVze3tTSE9SVF9EQVRFfX0gb3RoZXJ7e1NIT1JUX0RBVEV9IHtZRUFSfX19JyxcbiAgICAgICAgICAgICAgICBEQVRFOiBge1xuICAgICAgICAgICAgICAgICAgICBSQU5HRV9UWVBFLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbmx5U3RhcnR7RnJvbXtOQlNQfXtTVEFSVF9EQVRFfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye1VudGlse05CU1B9e0VORF9EQVRFfX1cbiAgICAgICAgICAgICAgICB9YCxcblxuICAgICAgICAgICAgICAgIFNUQVJUX0RBVEVUSU1FOiBge1xuICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7U0hPUlRfREFURX0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tTSE9SVF9EQVRFfSB7WUVBUn0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICB9JHtTRUNPTkRTX1RFTVBMQVRFfWAsXG4gICAgICAgICAgICAgICAgRU5EX0RBVEVUSU1FOiBge1xuICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7U0hPUlRfREFURX0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tTSE9SVF9EQVRFfSB7WUVBUn0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICB9JHtTRUNPTkRTX1RFTVBMQVRFfWAsXG4gICAgICAgICAgICAgICAgREFURVRJTUU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFJBTkdFX1RZUEUsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ubHlTdGFydHtGcm9te05CU1B9e1NUQVJUX0RBVEVUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye1VudGlse05CU1B9e0VORF9EQVRFVElNRX19XG4gICAgICAgICAgICAgICAgfWBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb25nOiB7XG4gICAgICAgICAgICAgICAgU1RBUlRfREFURTogYHtcbiAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e0RBVEV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e0RBVEV9IHtZRUFSfX1cbiAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICBFTkRfREFURTogJ3tDVVJSRU5UX1lFQVIsIHNlbGVjdCwgeWVze3tEQVRFfX0gb3RoZXJ7e0RBVEV9IHtZRUFSfX19JyxcbiAgICAgICAgICAgICAgICBEQVRFOiBge1xuICAgICAgICAgICAgICAgICAgICBSQU5HRV9UWVBFLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbmx5U3RhcnR7RnJvbXtOQlNQfXtTVEFSVF9EQVRFfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye1VudGlse05CU1B9e0VORF9EQVRFfX1cbiAgICAgICAgICAgICAgICB9YCxcblxuICAgICAgICAgICAgICAgIFNUQVJUX0RBVEVUSU1FOiBge1xuICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7REFURX0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tEQVRFfSB7WUVBUn0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICB9JHtTRUNPTkRTX1RFTVBMQVRFfWAsXG4gICAgICAgICAgICAgICAgRU5EX0RBVEVUSU1FOiBge1xuICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7REFURX0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tEQVRFfSB7WUVBUn0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICB9JHtTRUNPTkRTX1RFTVBMQVRFfWAsXG4gICAgICAgICAgICAgICAgREFURVRJTUU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFJBTkdFX1RZUEUsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ubHlTdGFydHtGcm9te05CU1B9e1NUQVJUX0RBVEVUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye1VudGlse05CU1B9e0VORF9EQVRFVElNRX19XG4gICAgICAgICAgICAgICAgfWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn07XG4iXX0=