@dsivd/prestations-ng 16.0.0-beta1 → 16.0.0-beta2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ESLINT_MIGRATION_GUIDE.md +34 -6
- package/UPGRADING_V16.md +1 -8
- package/dsivd-prestations-ng-v16.0.0-beta2.tgz +0 -0
- package/esm2020/foehn-date-picker/foehn-date-picker.component.mjs +6 -4
- package/fesm2015/dsivd-prestations-ng.mjs +5 -3
- package/fesm2015/dsivd-prestations-ng.mjs.map +1 -1
- package/fesm2020/dsivd-prestations-ng.mjs +5 -3
- package/fesm2020/dsivd-prestations-ng.mjs.map +1 -1
- package/package.json +9 -8
- package/dsivd-prestations-ng-v16.0.0-beta1.tgz +0 -0
|
@@ -94,6 +94,10 @@ You can replace the content of your `.eslintrc.json` with the following `json`.
|
|
|
94
94
|
},
|
|
95
95
|
"ignorePatterns": [
|
|
96
96
|
"/projects/**/*",
|
|
97
|
+
"/package.json",
|
|
98
|
+
"/angular.json",
|
|
99
|
+
"/karma.conf.js",
|
|
100
|
+
"/tsconfig*.json",
|
|
97
101
|
"/src/test.ts",
|
|
98
102
|
"/src/main.ts",
|
|
99
103
|
"/src/polyfills.ts",
|
|
@@ -101,6 +105,20 @@ You can replace the content of your `.eslintrc.json` with the following `json`.
|
|
|
101
105
|
"/src/typings.d.ts"
|
|
102
106
|
],
|
|
103
107
|
"reportUnusedDisableDirectives": true,
|
|
108
|
+
"settings": {
|
|
109
|
+
"import/extensions": [
|
|
110
|
+
".js",
|
|
111
|
+
".ts",
|
|
112
|
+
".mjs",
|
|
113
|
+
".mts",
|
|
114
|
+
".d.ts"
|
|
115
|
+
],
|
|
116
|
+
"import/internal-regex": "^@dsivd/",
|
|
117
|
+
"import/resolver": {
|
|
118
|
+
"node": { "extensions": [".js", ".ts", ".d.ts"] },
|
|
119
|
+
"typescript": {}
|
|
120
|
+
}
|
|
121
|
+
},
|
|
104
122
|
"overrides": [
|
|
105
123
|
// Typescript
|
|
106
124
|
{
|
|
@@ -108,8 +126,7 @@ You can replace the content of your `.eslintrc.json` with the following `json`.
|
|
|
108
126
|
"parserOptions": {
|
|
109
127
|
"ecmaVersion": 2020,
|
|
110
128
|
"project": [
|
|
111
|
-
"tsconfig.json"
|
|
112
|
-
"e2e/tsconfig.e2e.json"
|
|
129
|
+
"tsconfig.json"
|
|
113
130
|
],
|
|
114
131
|
"createDefaultProgram": true
|
|
115
132
|
},
|
|
@@ -118,7 +135,8 @@ You can replace the content of your `.eslintrc.json` with the following `json`.
|
|
|
118
135
|
"jsdoc",
|
|
119
136
|
"prefer-arrow",
|
|
120
137
|
"rxjs",
|
|
121
|
-
"rxjs-angular"
|
|
138
|
+
"rxjs-angular",
|
|
139
|
+
"simple-import-sort"
|
|
122
140
|
],
|
|
123
141
|
"extends": [
|
|
124
142
|
"plugin:@angular-eslint/recommended",
|
|
@@ -152,7 +170,9 @@ You can replace the content of your `.eslintrc.json` with the following `json`.
|
|
|
152
170
|
}],
|
|
153
171
|
"@typescript-eslint/ban-ts-comment": "error",
|
|
154
172
|
"@typescript-eslint/ban-tslint-comment": "error",
|
|
155
|
-
"@typescript-eslint/brace-style": "error",
|
|
173
|
+
"@typescript-eslint/brace-style": ["error", "1tbs", {
|
|
174
|
+
"allowSingleLine": true
|
|
175
|
+
}],
|
|
156
176
|
"@typescript-eslint/comma-dangle": ["error", {
|
|
157
177
|
"objects": "never",
|
|
158
178
|
"arrays": "always-multiline",
|
|
@@ -204,6 +224,7 @@ You can replace the content of your `.eslintrc.json` with the following `json`.
|
|
|
204
224
|
"@typescript-eslint/no-unused-expressions": "error",
|
|
205
225
|
"@typescript-eslint/no-use-before-define": "off",
|
|
206
226
|
"@typescript-eslint/no-var-requires": "error",
|
|
227
|
+
"@typescript-eslint/object-curly-spacing": ["error", "always"],
|
|
207
228
|
"@typescript-eslint/prefer-for-of": "error",
|
|
208
229
|
"@typescript-eslint/prefer-function-type": "error",
|
|
209
230
|
"@typescript-eslint/prefer-includes": "warn",
|
|
@@ -221,6 +242,7 @@ You can replace the content of your `.eslintrc.json` with the following `json`.
|
|
|
221
242
|
}],
|
|
222
243
|
"@typescript-eslint/unified-signatures": "error",
|
|
223
244
|
/* @eslint */
|
|
245
|
+
"array-bracket-spacing": ["error", "never"],
|
|
224
246
|
"arrow-body-style": "error",
|
|
225
247
|
"arrow-parens": ["error", "as-needed"],
|
|
226
248
|
"brace-style": "off",
|
|
@@ -269,11 +291,13 @@ You can replace the content of your `.eslintrc.json` with the following `json`.
|
|
|
269
291
|
"no-unsafe-finally": "error",
|
|
270
292
|
"no-unused-labels": "error",
|
|
271
293
|
"no-var": "error",
|
|
294
|
+
"object-curly-spacing": "off",
|
|
272
295
|
"object-shorthand": ["error", "always", {
|
|
273
296
|
"avoidQuotes": true,
|
|
274
297
|
"avoidExplicitReturnArrows": false
|
|
275
298
|
}],
|
|
276
299
|
"one-var": ["error", "never"],
|
|
300
|
+
"prefer-arrow-callback": "error",
|
|
277
301
|
"prefer-template": "error",
|
|
278
302
|
"quote-props": ["error", "as-needed"],
|
|
279
303
|
"quotes": ["error", "single"],
|
|
@@ -284,6 +308,7 @@ You can replace the content of your `.eslintrc.json` with the following `json`.
|
|
|
284
308
|
"asyncArrow": "always",
|
|
285
309
|
"named": "never"
|
|
286
310
|
}],
|
|
311
|
+
"space-in-parens": ["error", "never"],
|
|
287
312
|
"spaced-comment": ["error", "always", {
|
|
288
313
|
"markers": ["/"]
|
|
289
314
|
}],
|
|
@@ -298,6 +323,11 @@ You can replace the content of your `.eslintrc.json` with the following `json`.
|
|
|
298
323
|
"ignoreExternal": true
|
|
299
324
|
}],
|
|
300
325
|
"import/no-deprecated": "warn",
|
|
326
|
+
"simple-import-sort/imports": "error",
|
|
327
|
+
"simple-import-sort/exports": "error",
|
|
328
|
+
"import/first": "error",
|
|
329
|
+
"import/newline-after-import": "error",
|
|
330
|
+
"import/no-duplicates": "error",
|
|
301
331
|
/* @jsdoc */
|
|
302
332
|
"jsdoc/check-alignment": "error",
|
|
303
333
|
"jsdoc/check-indentation": "error",
|
|
@@ -305,8 +335,6 @@ You can replace the content of your `.eslintrc.json` with the following `json`.
|
|
|
305
335
|
"jsdoc/no-types": "error",
|
|
306
336
|
"jsdoc/require-param-type": "off",
|
|
307
337
|
"jsdoc/require-returns-type": "off",
|
|
308
|
-
/* @preferArrow */
|
|
309
|
-
"prefer-arrow/prefer-arrow-functions": "error"
|
|
310
338
|
}
|
|
311
339
|
},
|
|
312
340
|
// HTML
|
package/UPGRADING_V16.md
CHANGED
|
@@ -19,21 +19,15 @@ at this address:
|
|
|
19
19
|
```bash
|
|
20
20
|
yarn global add @angular/cli@14
|
|
21
21
|
ng update @angular/core@14 @angular/cli@14
|
|
22
|
-
ng update @angular/cdk@14
|
|
23
22
|
|
|
24
23
|
yarn global add @angular/cli@15
|
|
25
|
-
ng update @angular/core@15 @angular/cli@15
|
|
26
|
-
ng update @angular/cdk@15
|
|
24
|
+
ng update @angular/core@15 @angular/cli@15 --force
|
|
27
25
|
ng update @angular-eslint/builder@15
|
|
28
26
|
ng update @angular-eslint/eslint-plugin @angular-eslint/eslint-plugin-template @angular-eslint/template-parser
|
|
29
27
|
ng update @typescript-eslint/eslint-plugin @typescript-eslint/parser
|
|
30
28
|
ng update eslint-plugin-import eslint-plugin-jasmine eslint-plugin-jsdoc eslint-plugin-rxjs-angular
|
|
31
29
|
ng update eslint
|
|
32
30
|
ng update eslint-plugin-rxjs@5
|
|
33
|
-
ng update ngx-image-cropper@~6.3.2
|
|
34
|
-
ng update ng-http-loader@13
|
|
35
|
-
ng update dayjs@~1.11.7
|
|
36
|
-
ng update rxjs@7
|
|
37
31
|
ng update \
|
|
38
32
|
@types/jasmine \
|
|
39
33
|
@types/node@16 \
|
|
@@ -41,7 +35,6 @@ ng update \
|
|
|
41
35
|
ng update @dsivd/prestations-ng@latest
|
|
42
36
|
|
|
43
37
|
yarn add eslint-import-resolver-typescript --dev
|
|
44
|
-
yarn add eslint-plugin-rxjs-angular --dev
|
|
45
38
|
yarn remove eslint-plugin-prefer-arrow
|
|
46
39
|
# Remove your resolutions in package.json before executing 'yarn upgrade'
|
|
47
40
|
yarn upgrade
|
|
Binary file
|
|
@@ -150,9 +150,11 @@ export class FoehnDatePickerComponent {
|
|
|
150
150
|
return date.isSame(this.selectedDate);
|
|
151
151
|
}
|
|
152
152
|
handleUserInput(date) {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
153
|
+
if (this.isDateInRange(date)) {
|
|
154
|
+
const dateAsArray = this.getDateAsArray(date);
|
|
155
|
+
this.userInput.next(dateAsArray);
|
|
156
|
+
this.updateNgModel(dateAsArray);
|
|
157
|
+
}
|
|
156
158
|
}
|
|
157
159
|
previousMonth() {
|
|
158
160
|
this.weeks = this.datePickerHelper.getPreviousWeeksOfMonth();
|
|
@@ -384,4 +386,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImpor
|
|
|
384
386
|
type: HostListener,
|
|
385
387
|
args: ['keydown', ['$event']]
|
|
386
388
|
}] } });
|
|
387
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWRhdGUtcGlja2VyL2ZvZWhuLWRhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1kYXRlLXBpY2tlci9mb2Vobi1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBRU4sWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLE9BQU8sTUFBTSxzQkFBc0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7QUFJN0UsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQU90QixNQUFNLE9BQU8sd0JBQXdCO0lBNERqQyxZQUNZLFVBQWdDLEVBQ2hDLE1BQWMsRUFDZCxjQUFpQztRQUZqQyxlQUFVLEdBQVYsVUFBVSxDQUFzQjtRQUNoQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBdEQ3QyxZQUFPLEdBQUcsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBRy9CLFlBQU8sR0FBRyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENB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QUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRakMsdUJBQXVCO3NCQUR0QixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCBpc1RvZGF5IGZyb20gJ2RheWpzL3BsdWdpbi9pc1RvZGF5JztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGb3JtU2VsZWN0T3B0aW9uIH0gZnJvbSAnLi4vZm9laG4tY2hlY2thYmxlcy9mb3JtLXNlbGVjdC1vcHRpb24nO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVQaWNrZXJIZWxwZXIgfSBmcm9tICcuL2RhdGUtcGlja2VyLmhlbHBlcic7XG5pbXBvcnQgeyBEYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlciB9IGZyb20gJy4vZGF0ZS1waWNrZXItbmF2aWdhdGlvbi5oZWxwZXInO1xuaW1wb3J0IHsgRGF5TW9udGggfSBmcm9tICcuL2RheS1tb250aC50eXBlJztcbmltcG9ydCB7IE1vbnRoWWVhciB9IGZyb20gJy4vbW9udGgteWVhci50eXBlJztcblxuZGF5anMuZXh0ZW5kKGlzVG9kYXkpO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWRhdGUtcGlja2VyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLWRhdGUtcGlja2VyLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VobkRhdGVQaWNrZXJDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgICBASW5wdXQoKVxuICAgIGlkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIG5hbWU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgbWluWWVhciA9IGRheWpzKCkueWVhcigpIC0gMTAwO1xuXG4gICAgQElucHV0KClcbiAgICBtYXhZZWFyID0gZGF5anMoKS55ZWFyKCkgKyAxMDtcblxuICAgIEBJbnB1dCgpXG4gICAgbWluRGF0ZTogbnVtYmVyW107XG5cbiAgICBASW5wdXQoKVxuICAgIG1heERhdGU6IG51bWJlcltdO1xuXG4gICAgQElucHV0KClcbiAgICBkYXRlcGlja2VyVHJpZ2dlckh0bWxFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICAgIEBJbnB1dCgpXG4gICAgY2xvc2VhYmxlID0gdHJ1ZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIG1vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXJbXT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHVzZXJJbnB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyW10+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBpc0RhdGVwaWNrZXJWaXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBob3N0SWQ6IHN0cmluZztcblxuICAgIEBWaWV3Q2hpbGRyZW4oJ2RheUJ1dHRvbkVsZW1SZWYnKVxuICAgIGRheXNCdXR0b25zRWxlbVJlZjogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gICAgd2Vla0RheXM6IHN0cmluZ1tdID0gW107XG4gICAgd2Vla3M6IERheU1vbnRoW11bXTtcblxuICAgIHNlbGVjdGVkRGF0ZTogZGF5anMuRGF5anM7XG4gICAgY3VycmVudE1vbnRoWWVhcjogT2JzZXJ2YWJsZTxNb250aFllYXI+O1xuXG4gICAgbW9kZWxfOiBudW1iZXJbXTtcbiAgICBtb250aExpc3RJdGVtOiBGb3JtU2VsZWN0T3B0aW9uW10gPSBbXTtcbiAgICB5ZWFyTGlzdEl0ZW06IEZvcm1TZWxlY3RPcHRpb25bXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSBpc1Zpc2libGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIGtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGN1cnJlbnRMYW5ndWFnZUNvZGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIGRhdGVQaWNrZXJIZWxwZXIgPSBuZXcgRGF0ZVBpY2tlckhlbHBlcigpO1xuICAgIHByaXZhdGUgZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIgPSBuZXcgRGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIoKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlzcGxheU5leHRNb250aFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlzcGxheVByZXZpb3VzTW9udGhTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGRpY3Rpb25hcnk6IFNka0RpY3Rpb25hcnlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge1xuICAgICAgICB0aGlzLmN1cnJlbnRNb250aFllYXIgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZGlzcGxheWVkTW9udGhZZWFyO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy1hbmd1bGFyL3ByZWZlci1hc3luYy1waXBlXG4gICAgICAgIHRoaXMuZGlzcGxheU5leHRNb250aFN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuZGlzcGxheU5leHRNb250aC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAoKSA9PiB0aGlzLm5leHRNb250aCgpXG4gICAgICAgICk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzLWFuZ3VsYXIvcHJlZmVyLWFzeW5jLXBpcGVcbiAgICAgICAgdGhpcy5kaXNwbGF5UHJldmlvdXNNb250aFN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuZGlzcGxheVByZXZpb3VzTW9udGguc3Vic2NyaWJlKFxuICAgICAgICAgICAgKCkgPT4gdGhpcy5wcmV2aW91c01vbnRoKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgaXNEYXRlcGlja2VyVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWaXNpYmxlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGlzRGF0ZXBpY2tlclZpc2libGUodmFsOiBib29sZWFuKSB7XG4gICAgICAgIC8vIFN0b3JlIHRoZSBwcmV2aW91cyB2YWx1ZSB0byBoYW5kbGUgdHJhbnNpdGlvbnMgZnJvbSBvbmUgc3RhdGUgdG8gYW5vdGhlci5cbiAgICAgICAgY29uc3Qgd2FzT3BlbiA9IHRoaXMuaXNWaXNpYmxlO1xuXG4gICAgICAgIC8vIEVuc3VyZSB3ZSBhbHdheXMgaW5pdGlhbGl6ZSBkYXRlIHBpY2tlciBkZXBlbmRpbmcgb24gaXQncyBtb2RlbFxuICAgICAgICBpZiAoIXdhc09wZW4gJiYgdGhpcy5jbG9zZWFibGUpIHtcbiAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLm1vZGVsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNWaXNpYmxlID0gdmFsO1xuICAgICAgICB0aGlzLmlzRGF0ZXBpY2tlclZpc2libGVDaGFuZ2UuZW1pdCh0aGlzLmlzVmlzaWJsZSk7XG5cbiAgICAgICAgdGhpcy5mb2N1c0RlZmF1bHREYXkoKTtcbiAgICAgICAgdGhpcy5mb2N1c09uRGF0ZXBpY2tlclRyaWdnZXIod2FzT3BlbiwgdmFsKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIGdldCBtb2RlbCgpOiBudW1iZXJbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsXztcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBtb2RlbCh2YWx1ZTogbnVtYmVyW10pIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlS2V5Ym9hcmRVcEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlYWJsZSAmJiBldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgICB0aGlzLmlzRGF0ZXBpY2tlclZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUtleWJvYXJkRG93bkV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25LZXlEb3duSW5uZXIoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgaG9zdCBoYXMgYW4gSWQgZm9yIGluc3RydW1lbnRhbGl6YXRpb24gb2YgdGhlIERPTSBieSBhdXRvbWF0ZWQgdGVzdHMuXG4gICAgICAgIHRoaXMuaG9zdElkID0gdGhpcy5idWlsZElkKCk7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuaG9zdElkID0gdGhpcy5ob3N0SWQ7XG5cbiAgICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2VDb2RlU3Vic2NyaXB0aW9uID0gdGhpcy5kaWN0aW9uYXJ5XG4gICAgICAgICAgICAuZ2V0Q3VycmVudExhbmd1YWdlQ29kZSgpXG4gICAgICAgICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoY29kZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VySGVscGVyXG4gICAgICAgICAgICAgICAgICAgIC5sb2FkTG9jYWxlKGNvZGUpXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYGxvY2FsZSAnJHtjb2RlfScgZG9lcyBub3QgZXhpc3QuIEZhbGxiYWNrIHRvICdlbi4nYFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplRGF0ZXBpY2tlcigpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICB0aGlzLmRheXNCdXR0b25zRWxlbVJlZi5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAvLyBGb3IgdGVzdHMgcHVycG9zZSwgd2hlbiBzZXR0aW5nIGNvbXBvbmVudCBtaW5EYXRlLCBhdm9pZHMgaGF2aW5nIGVycm9yOlxuICAgICAgICAgICAgLy8gXCJORzAxMDA6IEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3I6IEV4cHJlc3Npb24gaGFzIGNoYW5nZWQgYWZ0ZXIgaXQgd2FzIGNoZWNrZWQuXG4gICAgICAgICAgICAvLyBQcmV2aW91cyB2YWx1ZSBmb3IgJ3RhYmluZGV4JzogJy0xJy4gQ3VycmVudCB2YWx1ZTogJzAnXCJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlci5kYXlzQnV0dG9uc0VsZW1SZWYgPSB0aGlzLmRheXNCdXR0b25zRWxlbVJlZjtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICghIXRoaXMuY3VycmVudExhbmd1YWdlQ29kZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2VDb2RlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEhdGhpcy5kaXNwbGF5TmV4dE1vbnRoU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlOZXh0TW9udGhTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISF0aGlzLmRpc3BsYXlQcmV2aW91c01vbnRoU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlQcmV2aW91c01vbnRoU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBudW1iZXJbXSk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhIXZhbHVlICYmXG4gICAgICAgICAgICB2YWx1ZS5sZW5ndGggPiAyICYmXG4gICAgICAgICAgICAhIXZhbHVlWzBdICYmXG4gICAgICAgICAgICB2YWx1ZVswXSA+PSB0aGlzLm1pblllYXIgJiZcbiAgICAgICAgICAgICEhdmFsdWVbMV0gJiZcbiAgICAgICAgICAgICEhdmFsdWVbMl1cbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlQXNTdHJpbmcgPSBgJHt2YWx1ZVswXX0tJHt2YWx1ZVsxXX0tJHt2YWx1ZVsyXX1gO1xuICAgICAgICAgICAgaWYgKGRheWpzKGRhdGVBc1N0cmluZykuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREYXRlKGRheWpzKGRhdGVBc1N0cmluZykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgICAgICB0aGlzLnNldERhdGUobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKHZhbHVlKTtcbiAgICB9XG5cbiAgICB1cGRhdGVOZ01vZGVsKHZhbHVlOiBudW1iZXJbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vZGVsXyA9IHZhbHVlO1xuICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cblxuICAgIGJ1aWxkSWQoc3VmZml4OiBzdHJpbmcgPSAnJyk6IHN0cmluZyB7XG4gICAgICAgIC8vIFRoZSBiYXNlSWQgaXMgZWl0aGVyIGFuIGlkIGdpdmVuIGJ5IHRoZSB1c2VyIG9yIHRoZSB2YWx1ZSBvZiB0aGUgbmFtZS5cbiAgICAgICAgLy8gRm9yIGludGVncmF0aW9uIHB1cnBvc2VzLCB0aGUgY29udGFpbmVyIGZvZWhuLSogbXVzdCBoYXZlIGFuIElkLlxuICAgICAgICBjb25zdCBiYXNlSWQgPSB0aGlzLmlkIHx8IHRoaXMubmFtZTtcbiAgICAgICAgaWYgKCFiYXNlSWQpIHtcbiAgICAgICAgICAgIHJldHVybiAhIXN1ZmZpeCA/IHN1ZmZpeCA6IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYCR7YmFzZUlkfSR7c3VmZml4fWA7XG4gICAgfVxuXG4gICAgaXNUb2RheShkYXRlOiBkYXlqcy5EYXlqcyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZGF0ZS5pc1RvZGF5KCk7XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZChkYXRlOiBkYXlqcy5EYXlqcyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGUuaXNTYW1lKHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgICB9XG5cbiAgICBoYW5kbGVVc2VySW5wdXQoZGF0ZTogZGF5anMuRGF5anMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGF0ZUFzQXJyYXkgPSB0aGlzLmdldERhdGVBc0FycmF5KGRhdGUpO1xuXG4gICAgICAgIHRoaXMudXNlcklucHV0Lm5leHQoZGF0ZUFzQXJyYXkpO1xuICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwoZGF0ZUFzQXJyYXkpO1xuICAgIH1cblxuICAgIHByZXZpb3VzTW9udGgoKTogdm9pZCB7XG4gICAgICAgIHRoaXMud2Vla3MgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZ2V0UHJldmlvdXNXZWVrc09mTW9udGgoKTtcbiAgICB9XG5cbiAgICBuZXh0TW9udGgoKTogdm9pZCB7XG4gICAgICAgIHRoaXMud2Vla3MgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZ2V0TmV4dFdlZWtzT2ZNb250aCgpO1xuICAgIH1cblxuICAgIHVzZXJJbnB1dE1vbnRoKG1vbnRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53ZWVrcyA9IHRoaXMuZGF0ZVBpY2tlckhlbHBlci5nZXRXZWVrc09mTW9udGgoXG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuaW5pdGlhbFllYXIsXG4gICAgICAgICAgICAoK21vbnRoICsgMSkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlckhlbHBlci5pbml0aWFsRGF5XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdXNlcklucHV0WWVhcih5ZWFyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53ZWVrcyA9IHRoaXMuZGF0ZVBpY2tlckhlbHBlci5nZXRXZWVrc09mTW9udGgoXG4gICAgICAgICAgICB5ZWFyLFxuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VySGVscGVyLmluaXRpYWxNb250aCxcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlckhlbHBlci5pbml0aWFsRGF5XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0TW9udGhBc1JlYWRhYmxlKG1vbnRoSW5kZXg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vbnRoTGlzdEl0ZW0uZmluZChlbGVtID0+IGVsZW0udmFsdWUgPT09IG1vbnRoSW5kZXgpLmxhYmVsO1xuICAgIH1cblxuICAgIG9uRGF5c0ZvY3VzaW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uQWxsb3dlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuY3VycmVudEZvY3VzZWRFbGVtZW50ID1cbiAgICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgb25EYXlzRm9jdXNvdXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uQWxsb3dlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGdldERheVRhYkluZGV4KGRheTogRGF5TW9udGgpOiBudW1iZXIge1xuICAgICAgICBpZiAoIXRoaXMuaXNEYXRlSW5SYW5nZShkYXkuZGF0ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSAmJlxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUubW9udGgoKSA9PT0gZGF5LmRhdGUubW9udGgoKSAmJlxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUueWVhcigpID09PSBkYXkuZGF0ZS55ZWFyKClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUuZGF0ZSgpID09PSBkYXkuZGF0ZS5kYXRlKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1RvZGF5KGRheS5kYXRlKSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGF5c0luV2VlayA9IFsuLi50aGlzLmRheXNCdXR0b25zRWxlbVJlZi50b0FycmF5KCldLmZpbHRlcihcbiAgICAgICAgICAgIHZhbHVlID0+IHZhbHVlLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkaXNhYmxlZCcpID09PSBudWxsXG4gICAgICAgICk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICEhZGF5c0luV2Vlay5sZW5ndGggJiZcbiAgICAgICAgICAgIGRheS5pc0N1cnJlbnRNb250aCAmJlxuICAgICAgICAgICAgZGF5LmRheU9mTW9udGgudG9TdHJpbmcoKSA9PT1cbiAgICAgICAgICAgICAgICBkYXlzSW5XZWVrWzBdLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXktbnVtYmVyJykgJiZcbiAgICAgICAgICAgIChkYXkuZGF0ZS5tb250aCgpICE9PSBkYXlqcygpLm1vbnRoKCkgfHxcbiAgICAgICAgICAgICAgICBkYXkuZGF0ZS55ZWFyKCkgIT09IGRheWpzKCkueWVhcigpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBmb2N1c0RlZmF1bHREYXkoKTogdm9pZCB7XG4gICAgICAgIC8vIEhhdmUgdG8gd2FpdCBmb3IgYSBtaWNybyB0YXNrIGVtcHR5IGFzIHdlJ3JlIGFmZmVjdGluZyB0aGUgRE9NIG91dHNpZGUgb2YgdGhlIEFuZ3VsYXIgbGlmZWN5Y2xlLlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy1hbmd1bGFyL3ByZWZlci1hc3luYy1waXBlXG4gICAgICAgIHRoaXMubmdab25lLm9uTWljcm90YXNrRW1wdHkucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNWaXNpYmxlICYmIHRoaXMuZGF0ZXBpY2tlclRyaWdnZXJIdG1sRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuZm9jdXNEZWZhdWx0RGF5KFxuICAgICAgICAgICAgICAgICAgICAhIXRoaXMuc2VsZWN0ZWREYXRlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0RGF5RGlzYWJsZWRBdHRyaWJ1dGUoZGF5T2ZXZWVrOiBEYXlNb250aCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghZGF5T2ZXZWVrLmlzQ3VycmVudE1vbnRoKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2Rpc2FibGVkJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaXNEYXRlSW5SYW5nZShkYXlPZldlZWsuZGF0ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAnZGlzYWJsZWQnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlzUHJldmlvdXNNb250aERpc2FibGVkKG1vbnRoWWVhcjogTW9udGhZZWFyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIG1vbnRoWWVhci55ZWFyID09PSB0aGlzLm1pblllYXIudG9TdHJpbmcoKSAmJlxuICAgICAgICAgICAgbW9udGhZZWFyLm1vbnRoID09PSAnMCdcbiAgICAgICAgICAgID8gJ2Rpc2FibGVkJ1xuICAgICAgICAgICAgOiBudWxsO1xuICAgIH1cblxuICAgIGlzTmV4dE1vbnRoRGlzYWJsZWQobW9udGhZZWFyOiBNb250aFllYXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gbW9udGhZZWFyLnllYXIgPT09IHRoaXMubWF4WWVhci50b1N0cmluZygpICYmXG4gICAgICAgICAgICBtb250aFllYXIubW9udGggPT09ICcxMSdcbiAgICAgICAgICAgID8gJ2Rpc2FibGVkJ1xuICAgICAgICAgICAgOiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNEYXRlSW5SYW5nZShkYXRlOiBkYXlqcy5EYXlqcyk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBNaW4geWVhciBhbmQgZGF0ZSBtYW5hZ2VtZW50XG4gICAgICAgIGNvbnN0IG1pbkRhdGVBc1N0cmluZyA9IERhdGVQaWNrZXJIZWxwZXIuZ2V0RGF0ZUFzU3RyaW5nKHRoaXMubWluRGF0ZSk7XG4gICAgICAgIGlmIChtaW5EYXRlQXNTdHJpbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IG1pbkRhdGVBc0RheWpzID0gZGF5anMobWluRGF0ZUFzU3RyaW5nKTtcbiAgICAgICAgICAgIGlmIChtaW5EYXRlQXNEYXlqcy5pc1ZhbGlkKCkgJiYgZGF0ZS5pc0JlZm9yZShtaW5EYXRlQXNEYXlqcykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGUueWVhcigpIDwgdGhpcy5taW5ZZWFyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gTWF4IHllYXIgYW5kIGRhdGUgbWFuYWdlbWVudFxuICAgICAgICBjb25zdCBtYXhEYXRlQXNTdHJpbmcgPSBEYXRlUGlja2VySGVscGVyLmdldERhdGVBc1N0cmluZyh0aGlzLm1heERhdGUpO1xuICAgICAgICBpZiAobWF4RGF0ZUFzU3RyaW5nKSB7XG4gICAgICAgICAgICBjb25zdCBtYXhEYXRlQXNEYXlqcyA9IGRheWpzKG1heERhdGVBc1N0cmluZyk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbWF4RGF0ZUFzRGF5anMuaXNWYWxpZCgpICYmXG4gICAgICAgICAgICAgICAgZGF0ZS5pc0FmdGVyKG1heERhdGVBc0RheWpzKSAmJlxuICAgICAgICAgICAgICAgIGRhdGUueWVhcigpIDw9IG1heERhdGVBc0RheWpzLnllYXIoKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRlLnllYXIoKSA8PSB0aGlzLm1heFllYXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplRGF0ZXBpY2tlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU1vbnRoTGlzdCgpO1xuICAgICAgICB0aGlzLnBvcHVsYXRlWWVhckxpc3QoKTtcbiAgICAgICAgdGhpcy53ZWVrRGF5cyA9IHRoaXMuZGF0ZVBpY2tlckhlbHBlci5nZXRXZWVrRGF5cygpO1xuICAgICAgICB0aGlzLndlZWtzID0gdGhpcy5kYXRlUGlja2VySGVscGVyLmdldFdlZWtzT2ZNb250aChcbiAgICAgICAgICAgIGRheWpzKCkuZm9ybWF0KHRoaXMuZGF0ZVBpY2tlckhlbHBlci5ZRUFSX1NUUklOR19GT1JNQVQpLFxuICAgICAgICAgICAgZGF5anMoKS5mb3JtYXQodGhpcy5kYXRlUGlja2VySGVscGVyLk1PTlRIX1NUUklOR19OVU1CRVJfRk9STUFUKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGF0ZShkYXRlOiBkYXlqcy5EYXlqcyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IGRhdGU7XG5cbiAgICAgICAgLy8gRWl0aGVyIHdlIGhhdmUgYSBkYXRlIHRvIHNldCBvciB3ZSB0YWtlIHRvZGF5XG4gICAgICAgIGNvbnN0IGRhdGVUb0Zvcm1hdCA9IGRhdGUgPyBkYXRlIDogZGF5anMoKTtcbiAgICAgICAgdGhpcy53ZWVrcyA9IHRoaXMuZGF0ZVBpY2tlckhlbHBlci5nZXRXZWVrc09mTW9udGgoXG4gICAgICAgICAgICBkYXRlVG9Gb3JtYXQuZm9ybWF0KHRoaXMuZGF0ZVBpY2tlckhlbHBlci5ZRUFSX1NUUklOR19GT1JNQVQpLFxuICAgICAgICAgICAgZGF0ZVRvRm9ybWF0LmZvcm1hdChcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuTU9OVEhfU1RSSU5HX05VTUJFUl9GT1JNQVRcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBkYXRlVG9Gb3JtYXQuZm9ybWF0KHRoaXMuZGF0ZVBpY2tlckhlbHBlci5EQVlfU1RSSU5HX05VTUJFUl9GT1JNQVQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREYXRlQXNBcnJheShkYXRlOiBkYXlqcy5EYXlqcyk6IG51bWJlcltdIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICtkYXRlLmZvcm1hdCh0aGlzLmRhdGVQaWNrZXJIZWxwZXIuWUVBUl9TVFJJTkdfRk9STUFUKSxcbiAgICAgICAgICAgICtkYXRlLmZvcm1hdCh0aGlzLmRhdGVQaWNrZXJIZWxwZXIuTU9OVEhfU1RSSU5HX05VTUJFUl9GT1JNQVQpLFxuICAgICAgICAgICAgK2RhdGUuZm9ybWF0KHRoaXMuZGF0ZVBpY2tlckhlbHBlci5EQVlfU1RSSU5HX05VTUJFUl9GT1JNQVQpXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1c09uRGF0ZXBpY2tlclRyaWdnZXIoXG4gICAgICAgIHdhc09wZW46IGJvb2xlYW4sXG4gICAgICAgIGlzVmlzaWJsZTogYm9vbGVhblxuICAgICk6IHZvaWQge1xuICAgICAgICAvLyBGb2N1cyBiYWNrIG9uIHRoZSB0cmlnZ2VyLiBObyBuZWVkIGZvciBhIHNldFRpbWVvdXQgYXMgdGhlIHRyaWdnZXIgc2hvdWxkIHN0aWxsIGJlIGluIHRoZSBET00uXG4gICAgICAgIC8vIE9ubHkgZG9lcyBpdCB3aGVuIHRoZSBtb2RhbCBpcyBjbG9zZWQgZnJvbSBhIG9wZW4gc3RhdGUgdG8gYXZvaWQgdG8gc2V0XG4gICAgICAgIC8vIHRoZSBmb2N1cyB3aGVuIHRoZSBwYWdlIGxvYWRzLlxuICAgICAgICBpZiAod2FzT3BlbiAmJiAhaXNWaXNpYmxlICYmIHRoaXMuZGF0ZXBpY2tlclRyaWdnZXJIdG1sRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5kYXRlcGlja2VyVHJpZ2dlckh0bWxFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHBvcHVsYXRlTW9udGhMaXN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vbnRoTGlzdEl0ZW0gPSBkYXlqcygpXG4gICAgICAgICAgICAubG9jYWxlRGF0YSgpXG4gICAgICAgICAgICAubW9udGhzKClcbiAgICAgICAgICAgIC5tYXAoKG1vbnRoOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+ICh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IG1vbnRoLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBpbmRleC50b1N0cmluZygpXG4gICAgICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb3B1bGF0ZVllYXJMaXN0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCByYW5nZSA9IChzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcik6IG51bWJlcltdID0+XG4gICAgICAgICAgICBBcnJheS5mcm9tKHsgbGVuZ3RoOiBlbmQgLSBzdGFydCArIDEgfSwgKHYsIGspID0+IGsgKyBzdGFydCk7XG5cbiAgICAgICAgaWYgKCEhdGhpcy5taW5EYXRlICYmICEhdGhpcy5taW5EYXRlLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5taW5ZZWFyID0gdGhpcy5taW5EYXRlWzBdO1xuICAgICAgICB9XG4gICAgICAgIGlmICghIXRoaXMubWF4RGF0ZSAmJiAhIXRoaXMubWF4RGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubWF4WWVhciA9IHRoaXMubWF4RGF0ZVswXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMueWVhckxpc3RJdGVtID0gcmFuZ2UodGhpcy5taW5ZZWFyLCB0aGlzLm1heFllYXIpLm1hcChcbiAgICAgICAgICAgICh5ZWFyOiBudW1iZXIpID0+ICh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHllYXIudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogeWVhci50b1N0cmluZygpXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25LZXlEb3duSW5uZXIoa2V5RXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcbiAgICAgICAgLy8gSUUgZG9lc24ndCBzdXBwb3J0IGtleUV2ZW50LmNvZGUsIGFuZCBoYXMgZGlmZmVyZW50IHZhbHVlc1xuICAgICAgICAvLyBpbiBrZXlFdmVudC5rZXkgKERvd24gaW5zdGVhZCBvZiBBcnJvd0Rvd24gZm9yIGluc3RhbmNlKSwgaGVuY2UgdGhlIG11bHRpLXN1cHBvcnQuXG4gICAgICAgIGNvbnN0IGllMTFDb21wYXRpYmxlQ29kZSA9IGtleUV2ZW50LmNvZGUgfHwga2V5RXZlbnQua2V5O1xuICAgICAgICBzd2l0Y2ggKGllMTFDb21wYXRpYmxlQ29kZSkge1xuICAgICAgICAgICAgY2FzZSAnRG93bic6XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuZm9jdXNOZXh0V2Vla0RheSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnVXAnOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlci5mb2N1c1ByZXZpb3VzV2Vla0RheSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnU3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnU3BhY2ViYXInOlxuICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NsaWNrJykpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUmlnaHQnOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlci5mb2N1c05leHREYXkoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0xlZnQnOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJOYXZpZ2F0aW9uSGVscGVyLmZvY3VzUHJldmlvdXNEYXkoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBrZXlFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBrZXlFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIFtpZF09XCJidWlsZElkKCdkYXRlcGlja2VyX3dyYXBwZXInKVwiXG4gICAgY2xhc3M9XCJkYXRlcGlja2VyX3dyYXBwZXJcIlxuICAgICpuZ0lmPVwiaXNEYXRlcGlja2VyVmlzaWJsZVwiXG4gICAgW2Nka1RyYXBGb2N1c109XCIhIWRhdGVwaWNrZXJUcmlnZ2VySHRtbEVsZW1lbnRcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIHJvbGU9XCJhcHBsaWNhdGlvblwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgJ2ZvZWhuLWRhdGUtcGlja2VyLmNvbnRhaW5lci5hcmlhLWxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgXCJcbj5cbiAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiY2xvc2VhYmxlXCJcbiAgICAgICAgKGNsaWNrKT1cImlzRGF0ZXBpY2tlclZpc2libGUgPSBmYWxzZVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImJ0biBjbG9zZVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAnZm9laG4tZGF0ZS1waWNrZXIuY2xvc2UtYnV0dG9uLmFyaWEtbGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgXCJcbiAgICAgICAgW2lkXT1cImJ1aWxkSWQoJ2Nsb3NlQnV0dG9uJylcIlxuICAgID5cbiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2XG4gICAgICAgIFtpZF09XCJidWlsZElkKCdkYXRlcGlja2VyX2hlYWRlcicpXCJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gZGF0ZXBpY2tlcl9oZWFkZXJcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRNb250aFllYXIgfCBhc3luYyBhcyBtb250aFllYXJcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBbaWRdPVwiYnVpbGRJZCgncHJldmlvdXMtbW9udGgnKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgZGF0ZXBpY2tlci1uYXYtbW9udGgtYnRuXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJldmlvdXNNb250aCgpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJpc1ByZXZpb3VzTW9udGhEaXNhYmxlZChtb250aFllYXIpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Zm9laG4taWNvbi1jaGV2cm9uLWxlZnRcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWRhdGUtcGlja2VyLnByZXZpb3VzLW1vbnRoLWJ1dHRvbi50aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvZm9laG4taWNvbi1jaGV2cm9uLWxlZnQ+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkSWQoJ21vbnRoLXllYXItbGFiZWwnKVwiXG4gICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNyLW9ubHlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1kYXRlLXBpY2tlci5zY3JlZW4tcmVhZGVyLmFjdHVhbC1tb250aC1kaXNwbGF5ZWQnXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICB7eyBnZXRNb250aEFzUmVhZGFibGUobW9udGhZZWFyLm1vbnRoKSB9fSB7eyBtb250aFllYXIueWVhciB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGZvZWhuLXNlbGVjdFxuICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZElkKCdtb250aC1pbnB1dCcpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFsaWduLXNlbGYtY2VudGVyIG1vbnRoLWlucHV0XCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1kYXRlLXBpY2tlci5zY3JlZW4tcmVhZGVyLm1vbnRoLWlucHV0LmxhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2lzTGFiZWxTck9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2VsZW1lbnRzXT1cIm1vbnRoTGlzdEl0ZW1cIlxuICAgICAgICAgICAgICAgIFttb2RlbF09XCJtb250aFllYXIubW9udGhcIlxuICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAodXNlcklucHV0KT1cInVzZXJJbnB1dE1vbnRoKCRldmVudClcIlxuICAgICAgICAgICAgPjwvZm9laG4tc2VsZWN0PlxuICAgICAgICAgICAgPGZvZWhuLXNlbGVjdFxuICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZElkKCd5ZWFyLWlucHV0JylcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWxpZ24tc2VsZi1jZW50ZXJcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWRhdGUtcGlja2VyLnNjcmVlbi1yZWFkZXIueWVhci1pbnB1dC5sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtpc0xhYmVsU3JPbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtlbGVtZW50c109XCJ5ZWFyTGlzdEl0ZW1cIlxuICAgICAgICAgICAgICAgIFttb2RlbF09XCJtb250aFllYXIueWVhclwiXG4gICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICh1c2VySW5wdXQpPVwidXNlcklucHV0WWVhcigkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2ZvZWhuLXNlbGVjdD5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBbaWRdPVwiYnVpbGRJZCgnbmV4dC1tb250aCcpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBkYXRlcGlja2VyLW5hdi1tb250aC1idG5cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJuZXh0TW9udGgoKVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiaXNOZXh0TW9udGhEaXNhYmxlZChtb250aFllYXIpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Zm9laG4taWNvbi1jaGV2cm9uLXJpZ2h0XG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi1kYXRlLXBpY2tlci5uZXh0LW1vbnRoLWJ1dHRvbi50aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvZm9laG4taWNvbi1jaGV2cm9uLXJpZ2h0PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDx0YWJsZVxuICAgICAgICBbaWRdPVwiYnVpbGRJZCgnZGF0ZXBpY2tlcl90YWJsZScpXCJcbiAgICAgICAgcm9sZT1cImdyaWRcIlxuICAgICAgICAoZm9jdXNpbik9XCJvbkRheXNGb2N1c2luKClcIlxuICAgICAgICAoZm9jdXNvdXQpPVwib25EYXlzRm9jdXNvdXQoKVwiXG4gICAgPlxuICAgICAgICA8dGhlYWQgcm9sZT1cInByZXNlbnRhdGlvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPHRyIHJvbGU9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgICAgICAgc2NvcGU9XCJjb2xcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiY29sdW1uaGVhZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHdlZWtkYXkgb2Ygd2Vla0RheXNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGZvZWhuLWFiYnJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIndlZWtkYXkuc3Vic3RyKDAsIDIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJ3ZWVrZGF5XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZm9laG4tYWJicj5cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5IHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgICAgICAgICAgIDx0ciByb2xlPVwicm93XCIgKm5nRm9yPVwibGV0IHdlZWsgb2Ygd2Vla3M7IGxldCBpbmRleFJvdyA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXlPZldlZWsgb2Ygd2VlazsgbGV0IGluZGV4Q29sdW1uID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gdy0xMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgI2RheUJ1dHRvbkVsZW1SZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiIWRheU9mV2Vlay5pc0N1cnJlbnRNb250aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiYnVpbGRJZCgnZGF5XycgKyBpbmRleFJvdyArICdfJyArIGluZGV4Q29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiZ2V0RGF5VGFiSW5kZXgoZGF5T2ZXZWVrKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYnRuLWluZm9dPVwiIWlzVG9kYXkoZGF5T2ZXZWVrLmRhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5idG4tc2Vjb25kYXJ5XT1cImlzVG9kYXkoZGF5T2ZXZWVrLmRhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5idG4tZGFuZ2VyXT1cImlzU2VsZWN0ZWQoZGF5T2ZXZWVrLmRhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vla0RheXNbaW5kZXhDb2x1bW5dICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheU9mV2Vlay5kYXRlQXNSZWFkYWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtaXMtdG9kYXldPVwiaXNUb2RheShkYXlPZldlZWsuZGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1pcy1zZWxlY3RlZF09XCJpc1NlbGVjdGVkKGRheU9mV2Vlay5kYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXJvdy1pbmRleF09XCJpbmRleFJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNvbHVtbi1pbmRleF09XCJpbmRleENvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXktbnVtYmVyXT1cImRheU9mV2Vlay5kYXlPZk1vbnRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImdldERheURpc2FibGVkQXR0cmlidXRlKGRheU9mV2VlaylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVVzZXJJbnB1dChkYXlPZldlZWsuZGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXlPZldlZWsuZGF5T2ZNb250aCB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICA8L3RhYmxlPlxuPC9kaXY+XG4iXX0=
|
|
389
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWRhdGUtcGlja2VyL2ZvZWhuLWRhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1kYXRlLXBpY2tlci9mb2Vobi1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBRU4sWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLE9BQU8sTUFBTSxzQkFBc0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7QUFJN0UsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQU90QixNQUFNLE9BQU8sd0JBQXdCO0lBNERqQyxZQUNZLFVBQWdDLEVBQ2hDLE1BQWMsRUFDZCxjQUFpQztRQUZqQyxlQUFVLEdBQVYsVUFBVSxDQUFzQjtRQUNoQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBdEQ3QyxZQUFPLEdBQUcsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBRy9CLFlBQU8sR0FBRyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENB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QixLQUFLO2dCQXVCRixLQUFLO3NCQURSLEtBQUs7Z0JBTU4scUJBQXFCO3NCQURwQixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRakMsdUJBQXVCO3NCQUR0QixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCBpc1RvZGF5IGZyb20gJ2RheWpzL3BsdWdpbi9pc1RvZGF5JztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGb3JtU2VsZWN0T3B0aW9uIH0gZnJvbSAnLi4vZm9laG4tY2hlY2thYmxlcy9mb3JtLXNlbGVjdC1vcHRpb24nO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVQaWNrZXJIZWxwZXIgfSBmcm9tICcuL2RhdGUtcGlja2VyLmhlbHBlcic7XG5pbXBvcnQgeyBEYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlciB9IGZyb20gJy4vZGF0ZS1waWNrZXItbmF2aWdhdGlvbi5oZWxwZXInO1xuaW1wb3J0IHsgRGF5TW9udGggfSBmcm9tICcuL2RheS1tb250aC50eXBlJztcbmltcG9ydCB7IE1vbnRoWWVhciB9IGZyb20gJy4vbW9udGgteWVhci50eXBlJztcblxuZGF5anMuZXh0ZW5kKGlzVG9kYXkpO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWRhdGUtcGlja2VyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLWRhdGUtcGlja2VyLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VobkRhdGVQaWNrZXJDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgICBASW5wdXQoKVxuICAgIGlkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIG5hbWU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgbWluWWVhciA9IGRheWpzKCkueWVhcigpIC0gMTAwO1xuXG4gICAgQElucHV0KClcbiAgICBtYXhZZWFyID0gZGF5anMoKS55ZWFyKCkgKyAxMDtcblxuICAgIEBJbnB1dCgpXG4gICAgbWluRGF0ZTogbnVtYmVyW107XG5cbiAgICBASW5wdXQoKVxuICAgIG1heERhdGU6IG51bWJlcltdO1xuXG4gICAgQElucHV0KClcbiAgICBkYXRlcGlja2VyVHJpZ2dlckh0bWxFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICAgIEBJbnB1dCgpXG4gICAgY2xvc2VhYmxlID0gdHJ1ZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIG1vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXJbXT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHVzZXJJbnB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyW10+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBpc0RhdGVwaWNrZXJWaXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBob3N0SWQ6IHN0cmluZztcblxuICAgIEBWaWV3Q2hpbGRyZW4oJ2RheUJ1dHRvbkVsZW1SZWYnKVxuICAgIGRheXNCdXR0b25zRWxlbVJlZjogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gICAgd2Vla0RheXM6IHN0cmluZ1tdID0gW107XG4gICAgd2Vla3M6IERheU1vbnRoW11bXTtcblxuICAgIHNlbGVjdGVkRGF0ZTogZGF5anMuRGF5anM7XG4gICAgY3VycmVudE1vbnRoWWVhcjogT2JzZXJ2YWJsZTxNb250aFllYXI+O1xuXG4gICAgbW9kZWxfOiBudW1iZXJbXTtcbiAgICBtb250aExpc3RJdGVtOiBGb3JtU2VsZWN0T3B0aW9uW10gPSBbXTtcbiAgICB5ZWFyTGlzdEl0ZW06IEZvcm1TZWxlY3RPcHRpb25bXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSBpc1Zpc2libGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIGtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGN1cnJlbnRMYW5ndWFnZUNvZGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIGRhdGVQaWNrZXJIZWxwZXIgPSBuZXcgRGF0ZVBpY2tlckhlbHBlcigpO1xuICAgIHByaXZhdGUgZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIgPSBuZXcgRGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIoKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlzcGxheU5leHRNb250aFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlzcGxheVByZXZpb3VzTW9udGhTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGRpY3Rpb25hcnk6IFNka0RpY3Rpb25hcnlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge1xuICAgICAgICB0aGlzLmN1cnJlbnRNb250aFllYXIgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZGlzcGxheWVkTW9udGhZZWFyO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy1hbmd1bGFyL3ByZWZlci1hc3luYy1waXBlXG4gICAgICAgIHRoaXMuZGlzcGxheU5leHRNb250aFN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuZGlzcGxheU5leHRNb250aC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAoKSA9PiB0aGlzLm5leHRNb250aCgpXG4gICAgICAgICk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzLWFuZ3VsYXIvcHJlZmVyLWFzeW5jLXBpcGVcbiAgICAgICAgdGhpcy5kaXNwbGF5UHJldmlvdXNNb250aFN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuZGlzcGxheVByZXZpb3VzTW9udGguc3Vic2NyaWJlKFxuICAgICAgICAgICAgKCkgPT4gdGhpcy5wcmV2aW91c01vbnRoKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgaXNEYXRlcGlja2VyVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWaXNpYmxlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGlzRGF0ZXBpY2tlclZpc2libGUodmFsOiBib29sZWFuKSB7XG4gICAgICAgIC8vIFN0b3JlIHRoZSBwcmV2aW91cyB2YWx1ZSB0byBoYW5kbGUgdHJhbnNpdGlvbnMgZnJvbSBvbmUgc3RhdGUgdG8gYW5vdGhlci5cbiAgICAgICAgY29uc3Qgd2FzT3BlbiA9IHRoaXMuaXNWaXNpYmxlO1xuXG4gICAgICAgIC8vIEVuc3VyZSB3ZSBhbHdheXMgaW5pdGlhbGl6ZSBkYXRlIHBpY2tlciBkZXBlbmRpbmcgb24gaXQncyBtb2RlbFxuICAgICAgICBpZiAoIXdhc09wZW4gJiYgdGhpcy5jbG9zZWFibGUpIHtcbiAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLm1vZGVsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNWaXNpYmxlID0gdmFsO1xuICAgICAgICB0aGlzLmlzRGF0ZXBpY2tlclZpc2libGVDaGFuZ2UuZW1pdCh0aGlzLmlzVmlzaWJsZSk7XG5cbiAgICAgICAgdGhpcy5mb2N1c0RlZmF1bHREYXkoKTtcbiAgICAgICAgdGhpcy5mb2N1c09uRGF0ZXBpY2tlclRyaWdnZXIod2FzT3BlbiwgdmFsKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIGdldCBtb2RlbCgpOiBudW1iZXJbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsXztcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBtb2RlbCh2YWx1ZTogbnVtYmVyW10pIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlS2V5Ym9hcmRVcEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlYWJsZSAmJiBldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgICB0aGlzLmlzRGF0ZXBpY2tlclZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUtleWJvYXJkRG93bkV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25LZXlEb3duSW5uZXIoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgaG9zdCBoYXMgYW4gSWQgZm9yIGluc3RydW1lbnRhbGl6YXRpb24gb2YgdGhlIERPTSBieSBhdXRvbWF0ZWQgdGVzdHMuXG4gICAgICAgIHRoaXMuaG9zdElkID0gdGhpcy5idWlsZElkKCk7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuaG9zdElkID0gdGhpcy5ob3N0SWQ7XG5cbiAgICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2VDb2RlU3Vic2NyaXB0aW9uID0gdGhpcy5kaWN0aW9uYXJ5XG4gICAgICAgICAgICAuZ2V0Q3VycmVudExhbmd1YWdlQ29kZSgpXG4gICAgICAgICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoY29kZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VySGVscGVyXG4gICAgICAgICAgICAgICAgICAgIC5sb2FkTG9jYWxlKGNvZGUpXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYGxvY2FsZSAnJHtjb2RlfScgZG9lcyBub3QgZXhpc3QuIEZhbGxiYWNrIHRvICdlbi4nYFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplRGF0ZXBpY2tlcigpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICB0aGlzLmRheXNCdXR0b25zRWxlbVJlZi5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAvLyBGb3IgdGVzdHMgcHVycG9zZSwgd2hlbiBzZXR0aW5nIGNvbXBvbmVudCBtaW5EYXRlLCBhdm9pZHMgaGF2aW5nIGVycm9yOlxuICAgICAgICAgICAgLy8gXCJORzAxMDA6IEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3I6IEV4cHJlc3Npb24gaGFzIGNoYW5nZWQgYWZ0ZXIgaXQgd2FzIGNoZWNrZWQuXG4gICAgICAgICAgICAvLyBQcmV2aW91cyB2YWx1ZSBmb3IgJ3RhYmluZGV4JzogJy0xJy4gQ3VycmVudCB2YWx1ZTogJzAnXCJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlci5kYXlzQnV0dG9uc0VsZW1SZWYgPSB0aGlzLmRheXNCdXR0b25zRWxlbVJlZjtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICghIXRoaXMuY3VycmVudExhbmd1YWdlQ29kZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2VDb2RlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEhdGhpcy5kaXNwbGF5TmV4dE1vbnRoU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlOZXh0TW9udGhTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISF0aGlzLmRpc3BsYXlQcmV2aW91c01vbnRoU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlQcmV2aW91c01vbnRoU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBudW1iZXJbXSk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhIXZhbHVlICYmXG4gICAgICAgICAgICB2YWx1ZS5sZW5ndGggPiAyICYmXG4gICAgICAgICAgICAhIXZhbHVlWzBdICYmXG4gICAgICAgICAgICB2YWx1ZVswXSA+PSB0aGlzLm1pblllYXIgJiZcbiAgICAgICAgICAgICEhdmFsdWVbMV0gJiZcbiAgICAgICAgICAgICEhdmFsdWVbMl1cbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlQXNTdHJpbmcgPSBgJHt2YWx1ZVswXX0tJHt2YWx1ZVsxXX0tJHt2YWx1ZVsyXX1gO1xuICAgICAgICAgICAgaWYgKGRheWpzKGRhdGVBc1N0cmluZykuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREYXRlKGRheWpzKGRhdGVBc1N0cmluZykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgICAgICB0aGlzLnNldERhdGUobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKHZhbHVlKTtcbiAgICB9XG5cbiAgICB1cGRhdGVOZ01vZGVsKHZhbHVlOiBudW1iZXJbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vZGVsXyA9IHZhbHVlO1xuICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cblxuICAgIGJ1aWxkSWQoc3VmZml4OiBzdHJpbmcgPSAnJyk6IHN0cmluZyB7XG4gICAgICAgIC8vIFRoZSBiYXNlSWQgaXMgZWl0aGVyIGFuIGlkIGdpdmVuIGJ5IHRoZSB1c2VyIG9yIHRoZSB2YWx1ZSBvZiB0aGUgbmFtZS5cbiAgICAgICAgLy8gRm9yIGludGVncmF0aW9uIHB1cnBvc2VzLCB0aGUgY29udGFpbmVyIGZvZWhuLSogbXVzdCBoYXZlIGFuIElkLlxuICAgICAgICBjb25zdCBiYXNlSWQgPSB0aGlzLmlkIHx8IHRoaXMubmFtZTtcbiAgICAgICAgaWYgKCFiYXNlSWQpIHtcbiAgICAgICAgICAgIHJldHVybiAhIXN1ZmZpeCA/IHN1ZmZpeCA6IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYCR7YmFzZUlkfSR7c3VmZml4fWA7XG4gICAgfVxuXG4gICAgaXNUb2RheShkYXRlOiBkYXlqcy5EYXlqcyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZGF0ZS5pc1RvZGF5KCk7XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZChkYXRlOiBkYXlqcy5EYXlqcyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGUuaXNTYW1lKHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgICB9XG5cbiAgICBoYW5kbGVVc2VySW5wdXQoZGF0ZTogZGF5anMuRGF5anMpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNEYXRlSW5SYW5nZShkYXRlKSkge1xuICAgICAgICAgICAgY29uc3QgZGF0ZUFzQXJyYXkgPSB0aGlzLmdldERhdGVBc0FycmF5KGRhdGUpO1xuXG4gICAgICAgICAgICB0aGlzLnVzZXJJbnB1dC5uZXh0KGRhdGVBc0FycmF5KTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbChkYXRlQXNBcnJheSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcmV2aW91c01vbnRoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLndlZWtzID0gdGhpcy5kYXRlUGlja2VySGVscGVyLmdldFByZXZpb3VzV2Vla3NPZk1vbnRoKCk7XG4gICAgfVxuXG4gICAgbmV4dE1vbnRoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLndlZWtzID0gdGhpcy5kYXRlUGlja2VySGVscGVyLmdldE5leHRXZWVrc09mTW9udGgoKTtcbiAgICB9XG5cbiAgICB1c2VySW5wdXRNb250aChtb250aDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMud2Vla3MgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZ2V0V2Vla3NPZk1vbnRoKFxuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VySGVscGVyLmluaXRpYWxZZWFyLFxuICAgICAgICAgICAgKCttb250aCArIDEpLnRvU3RyaW5nKCksXG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuaW5pdGlhbERheVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHVzZXJJbnB1dFllYXIoeWVhcjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMud2Vla3MgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZ2V0V2Vla3NPZk1vbnRoKFxuICAgICAgICAgICAgeWVhcixcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlckhlbHBlci5pbml0aWFsTW9udGgsXG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuaW5pdGlhbERheVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldE1vbnRoQXNSZWFkYWJsZShtb250aEluZGV4OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tb250aExpc3RJdGVtLmZpbmQoZWxlbSA9PiBlbGVtLnZhbHVlID09PSBtb250aEluZGV4KS5sYWJlbDtcbiAgICB9XG5cbiAgICBvbkRheXNGb2N1c2luKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJOYXZpZ2F0aW9uSGVscGVyLmN1cnJlbnRGb2N1c2VkRWxlbWVudCA9XG4gICAgICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIG9uRGF5c0ZvY3Vzb3V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXREYXlUYWJJbmRleChkYXk6IERheU1vbnRoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRGF0ZUluUmFuZ2UoZGF5LmRhdGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUgJiZcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLm1vbnRoKCkgPT09IGRheS5kYXRlLm1vbnRoKCkgJiZcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLnllYXIoKSA9PT0gZGF5LmRhdGUueWVhcigpXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlLmRhdGUoKSA9PT0gZGF5LmRhdGUuZGF0ZSgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNUb2RheShkYXkuZGF0ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRheXNJbldlZWsgPSBbLi4udGhpcy5kYXlzQnV0dG9uc0VsZW1SZWYudG9BcnJheSgpXS5maWx0ZXIoXG4gICAgICAgICAgICB2YWx1ZSA9PiB2YWx1ZS5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGlzYWJsZWQnKSA9PT0gbnVsbFxuICAgICAgICApO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhIWRheXNJbldlZWsubGVuZ3RoICYmXG4gICAgICAgICAgICBkYXkuaXNDdXJyZW50TW9udGggJiZcbiAgICAgICAgICAgIGRheS5kYXlPZk1vbnRoLnRvU3RyaW5nKCkgPT09XG4gICAgICAgICAgICAgICAgZGF5c0luV2Vla1swXS5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF5LW51bWJlcicpICYmXG4gICAgICAgICAgICAoZGF5LmRhdGUubW9udGgoKSAhPT0gZGF5anMoKS5tb250aCgpIHx8XG4gICAgICAgICAgICAgICAgZGF5LmRhdGUueWVhcigpICE9PSBkYXlqcygpLnllYXIoKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgZm9jdXNEZWZhdWx0RGF5KCk6IHZvaWQge1xuICAgICAgICAvLyBIYXZlIHRvIHdhaXQgZm9yIGEgbWljcm8gdGFzayBlbXB0eSBhcyB3ZSdyZSBhZmZlY3RpbmcgdGhlIERPTSBvdXRzaWRlIG9mIHRoZSBBbmd1bGFyIGxpZmVjeWNsZS5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICB0aGlzLm5nWm9uZS5vbk1pY3JvdGFza0VtcHR5LnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmlzaWJsZSAmJiB0aGlzLmRhdGVwaWNrZXJUcmlnZ2VySHRtbEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJOYXZpZ2F0aW9uSGVscGVyLmZvY3VzRGVmYXVsdERheShcbiAgICAgICAgICAgICAgICAgICAgISF0aGlzLnNlbGVjdGVkRGF0ZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldERheURpc2FibGVkQXR0cmlidXRlKGRheU9mV2VlazogRGF5TW9udGgpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWRheU9mV2Vlay5pc0N1cnJlbnRNb250aCkge1xuICAgICAgICAgICAgcmV0dXJuICdkaXNhYmxlZCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmlzRGF0ZUluUmFuZ2UoZGF5T2ZXZWVrLmRhdGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2Rpc2FibGVkJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpc1ByZXZpb3VzTW9udGhEaXNhYmxlZChtb250aFllYXI6IE1vbnRoWWVhcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBtb250aFllYXIueWVhciA9PT0gdGhpcy5taW5ZZWFyLnRvU3RyaW5nKCkgJiZcbiAgICAgICAgICAgIG1vbnRoWWVhci5tb250aCA9PT0gJzAnXG4gICAgICAgICAgICA/ICdkaXNhYmxlZCdcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICBpc05leHRNb250aERpc2FibGVkKG1vbnRoWWVhcjogTW9udGhZZWFyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIG1vbnRoWWVhci55ZWFyID09PSB0aGlzLm1heFllYXIudG9TdHJpbmcoKSAmJlxuICAgICAgICAgICAgbW9udGhZZWFyLm1vbnRoID09PSAnMTEnXG4gICAgICAgICAgICA/ICdkaXNhYmxlZCdcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRGF0ZUluUmFuZ2UoZGF0ZTogZGF5anMuRGF5anMpOiBib29sZWFuIHtcbiAgICAgICAgLy8gTWluIHllYXIgYW5kIGRhdGUgbWFuYWdlbWVudFxuICAgICAgICBjb25zdCBtaW5EYXRlQXNTdHJpbmcgPSBEYXRlUGlja2VySGVscGVyLmdldERhdGVBc1N0cmluZyh0aGlzLm1pbkRhdGUpO1xuICAgICAgICBpZiAobWluRGF0ZUFzU3RyaW5nKSB7XG4gICAgICAgICAgICBjb25zdCBtaW5EYXRlQXNEYXlqcyA9IGRheWpzKG1pbkRhdGVBc1N0cmluZyk7XG4gICAgICAgICAgICBpZiAobWluRGF0ZUFzRGF5anMuaXNWYWxpZCgpICYmIGRhdGUuaXNCZWZvcmUobWluRGF0ZUFzRGF5anMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRlLnllYXIoKSA8IHRoaXMubWluWWVhcikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIE1heCB5ZWFyIGFuZCBkYXRlIG1hbmFnZW1lbnRcbiAgICAgICAgY29uc3QgbWF4RGF0ZUFzU3RyaW5nID0gRGF0ZVBpY2tlckhlbHBlci5nZXREYXRlQXNTdHJpbmcodGhpcy5tYXhEYXRlKTtcbiAgICAgICAgaWYgKG1heERhdGVBc1N0cmluZykge1xuICAgICAgICAgICAgY29uc3QgbWF4RGF0ZUFzRGF5anMgPSBkYXlqcyhtYXhEYXRlQXNTdHJpbmcpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIG1heERhdGVBc0RheWpzLmlzVmFsaWQoKSAmJlxuICAgICAgICAgICAgICAgIGRhdGUuaXNBZnRlcihtYXhEYXRlQXNEYXlqcykgJiZcbiAgICAgICAgICAgICAgICBkYXRlLnllYXIoKSA8PSBtYXhEYXRlQXNEYXlqcy55ZWFyKClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0ZS55ZWFyKCkgPD0gdGhpcy5tYXhZZWFyO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZURhdGVwaWNrZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucG9wdWxhdGVNb250aExpc3QoKTtcbiAgICAgICAgdGhpcy5wb3B1bGF0ZVllYXJMaXN0KCk7XG4gICAgICAgIHRoaXMud2Vla0RheXMgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZ2V0V2Vla0RheXMoKTtcbiAgICAgICAgdGhpcy53ZWVrcyA9IHRoaXMuZGF0ZVBpY2tlckhlbHBlci5nZXRXZWVrc09mTW9udGgoXG4gICAgICAgICAgICBkYXlqcygpLmZvcm1hdCh0aGlzLmRhdGVQaWNrZXJIZWxwZXIuWUVBUl9TVFJJTkdfRk9STUFUKSxcbiAgICAgICAgICAgIGRheWpzKCkuZm9ybWF0KHRoaXMuZGF0ZVBpY2tlckhlbHBlci5NT05USF9TVFJJTkdfTlVNQkVSX0ZPUk1BVClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERhdGUoZGF0ZTogZGF5anMuRGF5anMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBkYXRlO1xuXG4gICAgICAgIC8vIEVpdGhlciB3ZSBoYXZlIGEgZGF0ZSB0byBzZXQgb3Igd2UgdGFrZSB0b2RheVxuICAgICAgICBjb25zdCBkYXRlVG9Gb3JtYXQgPSBkYXRlID8gZGF0ZSA6IGRheWpzKCk7XG4gICAgICAgIHRoaXMud2Vla3MgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZ2V0V2Vla3NPZk1vbnRoKFxuICAgICAgICAgICAgZGF0ZVRvRm9ybWF0LmZvcm1hdCh0aGlzLmRhdGVQaWNrZXJIZWxwZXIuWUVBUl9TVFJJTkdfRk9STUFUKSxcbiAgICAgICAgICAgIGRhdGVUb0Zvcm1hdC5mb3JtYXQoXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VySGVscGVyLk1PTlRIX1NUUklOR19OVU1CRVJfRk9STUFUXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZGF0ZVRvRm9ybWF0LmZvcm1hdCh0aGlzLmRhdGVQaWNrZXJIZWxwZXIuREFZX1NUUklOR19OVU1CRVJfRk9STUFUKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGF0ZUFzQXJyYXkoZGF0ZTogZGF5anMuRGF5anMpOiBudW1iZXJbXSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICArZGF0ZS5mb3JtYXQodGhpcy5kYXRlUGlja2VySGVscGVyLllFQVJfU1RSSU5HX0ZPUk1BVCksXG4gICAgICAgICAgICArZGF0ZS5mb3JtYXQodGhpcy5kYXRlUGlja2VySGVscGVyLk1PTlRIX1NUUklOR19OVU1CRVJfRk9STUFUKSxcbiAgICAgICAgICAgICtkYXRlLmZvcm1hdCh0aGlzLmRhdGVQaWNrZXJIZWxwZXIuREFZX1NUUklOR19OVU1CRVJfRk9STUFUKVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNPbkRhdGVwaWNrZXJUcmlnZ2VyKFxuICAgICAgICB3YXNPcGVuOiBib29sZWFuLFxuICAgICAgICBpc1Zpc2libGU6IGJvb2xlYW5cbiAgICApOiB2b2lkIHtcbiAgICAgICAgLy8gRm9jdXMgYmFjayBvbiB0aGUgdHJpZ2dlci4gTm8gbmVlZCBmb3IgYSBzZXRUaW1lb3V0IGFzIHRoZSB0cmlnZ2VyIHNob3VsZCBzdGlsbCBiZSBpbiB0aGUgRE9NLlxuICAgICAgICAvLyBPbmx5IGRvZXMgaXQgd2hlbiB0aGUgbW9kYWwgaXMgY2xvc2VkIGZyb20gYSBvcGVuIHN0YXRlIHRvIGF2b2lkIHRvIHNldFxuICAgICAgICAvLyB0aGUgZm9jdXMgd2hlbiB0aGUgcGFnZSBsb2Fkcy5cbiAgICAgICAgaWYgKHdhc09wZW4gJiYgIWlzVmlzaWJsZSAmJiB0aGlzLmRhdGVwaWNrZXJUcmlnZ2VySHRtbEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZXBpY2tlclRyaWdnZXJIdG1sRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb3B1bGF0ZU1vbnRoTGlzdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb250aExpc3RJdGVtID0gZGF5anMoKVxuICAgICAgICAgICAgLmxvY2FsZURhdGEoKVxuICAgICAgICAgICAgLm1vbnRocygpXG4gICAgICAgICAgICAubWFwKChtb250aDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiAoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiBtb250aCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogaW5kZXgudG9TdHJpbmcoKVxuICAgICAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcG9wdWxhdGVZZWFyTGlzdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSAoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpOiBudW1iZXJbXSA9PlxuICAgICAgICAgICAgQXJyYXkuZnJvbSh7IGxlbmd0aDogZW5kIC0gc3RhcnQgKyAxIH0sICh2LCBrKSA9PiBrICsgc3RhcnQpO1xuXG4gICAgICAgIGlmICghIXRoaXMubWluRGF0ZSAmJiAhIXRoaXMubWluRGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubWluWWVhciA9IHRoaXMubWluRGF0ZVswXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISF0aGlzLm1heERhdGUgJiYgISF0aGlzLm1heERhdGUubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLm1heFllYXIgPSB0aGlzLm1heERhdGVbMF07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnllYXJMaXN0SXRlbSA9IHJhbmdlKHRoaXMubWluWWVhciwgdGhpcy5tYXhZZWFyKS5tYXAoXG4gICAgICAgICAgICAoeWVhcjogbnVtYmVyKSA9PiAoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiB5ZWFyLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgdmFsdWU6IHllYXIudG9TdHJpbmcoKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uS2V5RG93bklubmVyKGtleUV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIC8vIElFIGRvZXNuJ3Qgc3VwcG9ydCBrZXlFdmVudC5jb2RlLCBhbmQgaGFzIGRpZmZlcmVudCB2YWx1ZXNcbiAgICAgICAgLy8gaW4ga2V5RXZlbnQua2V5IChEb3duIGluc3RlYWQgb2YgQXJyb3dEb3duIGZvciBpbnN0YW5jZSksIGhlbmNlIHRoZSBtdWx0aS1zdXBwb3J0LlxuICAgICAgICBjb25zdCBpZTExQ29tcGF0aWJsZUNvZGUgPSBrZXlFdmVudC5jb2RlIHx8IGtleUV2ZW50LmtleTtcbiAgICAgICAgc3dpdGNoIChpZTExQ29tcGF0aWJsZUNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Rvd24nOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJOYXZpZ2F0aW9uSGVscGVyLmZvY3VzTmV4dFdlZWtEYXkoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1VwJzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuZm9jdXNQcmV2aW91c1dlZWtEYXkoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1NwYWNlJzpcbiAgICAgICAgICAgIGNhc2UgJ1NwYWNlYmFyJzpcbiAgICAgICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjbGljaycpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1JpZ2h0JzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuZm9jdXNOZXh0RGF5KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdMZWZ0JzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlci5mb2N1c1ByZXZpb3VzRGF5KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAga2V5RXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAga2V5RXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBbaWRdPVwiYnVpbGRJZCgnZGF0ZXBpY2tlcl93cmFwcGVyJylcIlxuICAgIGNsYXNzPVwiZGF0ZXBpY2tlcl93cmFwcGVyXCJcbiAgICAqbmdJZj1cImlzRGF0ZXBpY2tlclZpc2libGVcIlxuICAgIFtjZGtUcmFwRm9jdXNdPVwiISFkYXRlcGlja2VyVHJpZ2dlckh0bWxFbGVtZW50XCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICByb2xlPVwiYXBwbGljYXRpb25cIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICdmb2Vobi1kYXRlLXBpY2tlci5jb250YWluZXIuYXJpYS1sYWJlbCcgfCBmcm9tRGljdGlvbmFyeVxuICAgIFwiXG4+XG4gICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cImNsb3NlYWJsZVwiXG4gICAgICAgIChjbGljayk9XCJpc0RhdGVwaWNrZXJWaXNpYmxlID0gZmFsc2VcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJidG4gY2xvc2VcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgJ2ZvZWhuLWRhdGUtcGlja2VyLmNsb3NlLWJ1dHRvbi5hcmlhLWxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgIFwiXG4gICAgICAgIFtpZF09XCJidWlsZElkKCdjbG9zZUJ1dHRvbicpXCJcbiAgICA+XG4gICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGRpdlxuICAgICAgICBbaWRdPVwiYnVpbGRJZCgnZGF0ZXBpY2tlcl9oZWFkZXInKVwiXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGRhdGVwaWNrZXJfaGVhZGVyXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50TW9udGhZZWFyIHwgYXN5bmMgYXMgbW9udGhZZWFyXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkSWQoJ3ByZXZpb3VzLW1vbnRoJylcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGRhdGVwaWNrZXItbmF2LW1vbnRoLWJ0blwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInByZXZpb3VzTW9udGgoKVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiaXNQcmV2aW91c01vbnRoRGlzYWJsZWQobW9udGhZZWFyKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGZvZWhuLWljb24tY2hldnJvbi1sZWZ0XG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi1kYXRlLXBpY2tlci5wcmV2aW91cy1tb250aC1idXR0b24udGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L2ZvZWhuLWljb24tY2hldnJvbi1sZWZ0PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZElkKCdtb250aC15ZWFyLWxhYmVsJylcIlxuICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzci1vbmx5XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAnZm9laG4tZGF0ZS1waWNrZXIuc2NyZWVuLXJlYWRlci5hY3R1YWwtbW9udGgtZGlzcGxheWVkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAge3sgZ2V0TW9udGhBc1JlYWRhYmxlKG1vbnRoWWVhci5tb250aCkgfX0ge3sgbW9udGhZZWFyLnllYXIgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxmb2Vobi1zZWxlY3RcbiAgICAgICAgICAgICAgICBbaWRdPVwiYnVpbGRJZCgnbW9udGgtaW5wdXQnKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhbGlnbi1zZWxmLWNlbnRlciBtb250aC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAnZm9laG4tZGF0ZS1waWNrZXIuc2NyZWVuLXJlYWRlci5tb250aC1pbnB1dC5sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtpc0xhYmVsU3JPbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtlbGVtZW50c109XCJtb250aExpc3RJdGVtXCJcbiAgICAgICAgICAgICAgICBbbW9kZWxdPVwibW9udGhZZWFyLm1vbnRoXCJcbiAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgKHVzZXJJbnB1dCk9XCJ1c2VySW5wdXRNb250aCgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2ZvZWhuLXNlbGVjdD5cbiAgICAgICAgICAgIDxmb2Vobi1zZWxlY3RcbiAgICAgICAgICAgICAgICBbaWRdPVwiYnVpbGRJZCgneWVhci1pbnB1dCcpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFsaWduLXNlbGYtY2VudGVyXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1kYXRlLXBpY2tlci5zY3JlZW4tcmVhZGVyLnllYXItaW5wdXQubGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbaXNMYWJlbFNyT25seV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZWxlbWVudHNdPVwieWVhckxpc3RJdGVtXCJcbiAgICAgICAgICAgICAgICBbbW9kZWxdPVwibW9udGhZZWFyLnllYXJcIlxuICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAodXNlcklucHV0KT1cInVzZXJJbnB1dFllYXIoJGV2ZW50KVwiXG4gICAgICAgICAgICA+PC9mb2Vobi1zZWxlY3Q+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkSWQoJ25leHQtbW9udGgnKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgZGF0ZXBpY2tlci1uYXYtbW9udGgtYnRuXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibmV4dE1vbnRoKClcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImlzTmV4dE1vbnRoRGlzYWJsZWQobW9udGhZZWFyKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGZvZWhuLWljb24tY2hldnJvbi1yaWdodFxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tZGF0ZS1waWNrZXIubmV4dC1tb250aC1idXR0b24udGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L2ZvZWhuLWljb24tY2hldnJvbi1yaWdodD5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8dGFibGVcbiAgICAgICAgW2lkXT1cImJ1aWxkSWQoJ2RhdGVwaWNrZXJfdGFibGUnKVwiXG4gICAgICAgIHJvbGU9XCJncmlkXCJcbiAgICAgICAgKGZvY3VzaW4pPVwib25EYXlzRm9jdXNpbigpXCJcbiAgICAgICAgKGZvY3Vzb3V0KT1cIm9uRGF5c0ZvY3Vzb3V0KClcIlxuICAgID5cbiAgICAgICAgPHRoZWFkIHJvbGU9XCJwcmVzZW50YXRpb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgIDx0ciByb2xlPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlPVwiY29sXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cImNvbHVtbmhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB3ZWVrZGF5IG9mIHdlZWtEYXlzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxmb2Vobi1hYmJyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJ3ZWVrZGF5LnN1YnN0cigwLCAyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwid2Vla2RheVwiXG4gICAgICAgICAgICAgICAgICAgID48L2ZvZWhuLWFiYnI+XG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGhlYWQ+XG4gICAgICAgIDx0Ym9keSByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gICAgICAgICAgICA8dHIgcm9sZT1cInJvd1wiICpuZ0Zvcj1cImxldCB3ZWVrIG9mIHdlZWtzOyBsZXQgaW5kZXhSb3cgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5T2ZXZWVrIG9mIHdlZWs7IGxldCBpbmRleENvbHVtbiA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIHctMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICNkYXlCdXR0b25FbGVtUmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIiFkYXlPZldlZWsuaXNDdXJyZW50TW9udGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkSWQoJ2RheV8nICsgaW5kZXhSb3cgKyAnXycgKyBpbmRleENvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cImdldERheVRhYkluZGV4KGRheU9mV2VlaylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmJ0bi1pbmZvXT1cIiFpc1RvZGF5KGRheU9mV2Vlay5kYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYnRuLXNlY29uZGFyeV09XCJpc1RvZGF5KGRheU9mV2Vlay5kYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYnRuLWRhbmdlcl09XCJpc1NlbGVjdGVkKGRheU9mV2Vlay5kYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlZWtEYXlzW2luZGV4Q29sdW1uXSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlPZldlZWsuZGF0ZUFzUmVhZGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWlzLXRvZGF5XT1cImlzVG9kYXkoZGF5T2ZXZWVrLmRhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtaXMtc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZChkYXlPZldlZWsuZGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1yb3ctaW5kZXhdPVwiaW5kZXhSb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jb2x1bW4taW5kZXhdPVwiaW5kZXhDb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF5LW51bWJlcl09XCJkYXlPZldlZWsuZGF5T2ZNb250aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJnZXREYXlEaXNhYmxlZEF0dHJpYnV0ZShkYXlPZldlZWspXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVVc2VySW5wdXQoZGF5T2ZXZWVrLmRhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF5T2ZXZWVrLmRheU9mTW9udGggfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cbjwvZGl2PlxuIl19
|
|
@@ -7489,9 +7489,11 @@ class FoehnDatePickerComponent {
|
|
|
7489
7489
|
return date.isSame(this.selectedDate);
|
|
7490
7490
|
}
|
|
7491
7491
|
handleUserInput(date) {
|
|
7492
|
-
|
|
7493
|
-
|
|
7494
|
-
|
|
7492
|
+
if (this.isDateInRange(date)) {
|
|
7493
|
+
const dateAsArray = this.getDateAsArray(date);
|
|
7494
|
+
this.userInput.next(dateAsArray);
|
|
7495
|
+
this.updateNgModel(dateAsArray);
|
|
7496
|
+
}
|
|
7495
7497
|
}
|
|
7496
7498
|
previousMonth() {
|
|
7497
7499
|
this.weeks = this.datePickerHelper.getPreviousWeeksOfMonth();
|