ets-fe-ng-sdk 17.0.78 → 17.0.80
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/assets/scss/styles.scss +3 -0
- package/esm2022/lib/Shared/pipes/utility.pipe.mjs +13 -35
- package/esm2022/lib/configs/base-functions.mjs +2 -2
- package/fesm2022/ets-fe-ng-sdk.mjs +13 -35
- package/fesm2022/ets-fe-ng-sdk.mjs.map +1 -1
- package/lib/Services/api.service.d.ts +1 -1
- package/lib/Shared/components/info-dialog/info-dialog.component.d.ts +1 -1
- package/lib/Shared/pipes/utility.pipe.d.ts +1 -1
- package/package.json +1 -1
package/assets/scss/styles.scss
CHANGED
|
@@ -102,9 +102,7 @@ export class HasValuePipe {
|
|
|
102
102
|
*/
|
|
103
103
|
transform(value, fieldsToCheckFor) {
|
|
104
104
|
// debugger;
|
|
105
|
-
return fieldsToCheckFor?.length
|
|
106
|
-
? fieldsToCheckFor.some((x) => !!value[x])
|
|
107
|
-
: !isEmpty(value);
|
|
105
|
+
return fieldsToCheckFor?.length ? fieldsToCheckFor.some((x) => !!value[x]) : !isEmpty(value);
|
|
108
106
|
}
|
|
109
107
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: HasValuePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
110
108
|
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.7", ngImport: i0, type: HasValuePipe, isStandalone: true, name: "hasValue" }); }
|
|
@@ -418,10 +416,7 @@ export class FilterArrayPipe {
|
|
|
418
416
|
*/
|
|
419
417
|
transform(arr, value, filterFunction) {
|
|
420
418
|
// return this.uS.timeCodeBlock('inline comparison', () => {
|
|
421
|
-
if (value == null ||
|
|
422
|
-
!Object.values(value).filter((x) => x).length ||
|
|
423
|
-
!arr ||
|
|
424
|
-
!arr.length)
|
|
419
|
+
if (value == null || !Object.values(value).filter((x) => x).length || !arr || !arr.length)
|
|
425
420
|
return arr;
|
|
426
421
|
// debugger;
|
|
427
422
|
if (filterFunction)
|
|
@@ -429,8 +424,7 @@ export class FilterArrayPipe {
|
|
|
429
424
|
//#region handle filter value
|
|
430
425
|
const valueMap = [];
|
|
431
426
|
for (const key in value) {
|
|
432
|
-
if (Object.prototype.hasOwnProperty.call(value, key) &&
|
|
433
|
-
value[key] != null) {
|
|
427
|
+
if (Object.prototype.hasOwnProperty.call(value, key) && value[key] != null) {
|
|
434
428
|
const val = { key, value: value[key], type: typeof value[key] };
|
|
435
429
|
if (val.type == 'function' || val.type == 'object')
|
|
436
430
|
continue;
|
|
@@ -443,10 +437,7 @@ export class FilterArrayPipe {
|
|
|
443
437
|
const res = arr.filter((x) => {
|
|
444
438
|
const formGorupValue = x;
|
|
445
439
|
for (const key of valueMap) {
|
|
446
|
-
if ((key.type == 'string' &&
|
|
447
|
-
formGorupValue[key.key]
|
|
448
|
-
?.toLowerCase()
|
|
449
|
-
?.includes(key.value)) ||
|
|
440
|
+
if ((key.type == 'string' && formGorupValue[key.key]?.toLowerCase()?.includes(key.value)) ||
|
|
450
441
|
formGorupValue[key.key] == key.value)
|
|
451
442
|
return true;
|
|
452
443
|
}
|
|
@@ -476,18 +467,14 @@ export class FilterFormArrayGroupPipe {
|
|
|
476
467
|
*/
|
|
477
468
|
transform(arr, value, filterFunction) {
|
|
478
469
|
// return this.uS.timeCodeBlock('inline comparison', () => {
|
|
479
|
-
if (value == null ||
|
|
480
|
-
!Object.values(value).filter((x) => x).length ||
|
|
481
|
-
!arr ||
|
|
482
|
-
!arr.length)
|
|
470
|
+
if (value == null || !Object.values(value).filter((x) => x).length || !arr || !arr.length)
|
|
483
471
|
return arr;
|
|
484
472
|
// debugger;
|
|
485
473
|
if (filterFunction)
|
|
486
474
|
return arr.filter(filterFunction);
|
|
487
475
|
const valueMap = [];
|
|
488
476
|
for (const key in value) {
|
|
489
|
-
if (Object.prototype.hasOwnProperty.call(value, key) &&
|
|
490
|
-
value[key] != null) {
|
|
477
|
+
if (Object.prototype.hasOwnProperty.call(value, key) && value[key] != null) {
|
|
491
478
|
const val = { key, value: value[key], type: typeof value[key] };
|
|
492
479
|
if (val.type == 'function' || val.type == 'object')
|
|
493
480
|
continue;
|
|
@@ -499,10 +486,7 @@ export class FilterFormArrayGroupPipe {
|
|
|
499
486
|
const res = arr.filter((x) => {
|
|
500
487
|
const formGorupValue = x.getRawValue();
|
|
501
488
|
for (const key of valueMap) {
|
|
502
|
-
if ((key.type == 'string' &&
|
|
503
|
-
formGorupValue[key.key]
|
|
504
|
-
?.toLowerCase()
|
|
505
|
-
?.includes(key.value)) ||
|
|
489
|
+
if ((key.type == 'string' && formGorupValue[key.key]?.toLowerCase()?.includes(key.value)) ||
|
|
506
490
|
formGorupValue[key.key] == key.value)
|
|
507
491
|
return true;
|
|
508
492
|
}
|
|
@@ -662,9 +646,7 @@ export class TrimTextPipe {
|
|
|
662
646
|
* @returns Trimmed string
|
|
663
647
|
*/
|
|
664
648
|
transform(value, length) {
|
|
665
|
-
return !value || length == null || value.length < length
|
|
666
|
-
? value
|
|
667
|
-
: value.substring(0, length) + '...';
|
|
649
|
+
return !value || length == null || value.length < length ? value : value.substring(0, length) + '...';
|
|
668
650
|
}
|
|
669
651
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: TrimTextPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
670
652
|
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.7", ngImport: i0, type: TrimTextPipe, isStandalone: true, name: "trimText" }); }
|
|
@@ -730,7 +712,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImpor
|
|
|
730
712
|
}] });
|
|
731
713
|
export class StrConcatenatorPipe {
|
|
732
714
|
transform(text1, text2, joiner = ' - ') {
|
|
733
|
-
return EVFunctions.
|
|
715
|
+
return EVFunctions.strConcatenator2(text1, text2, joiner);
|
|
734
716
|
}
|
|
735
717
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: StrConcatenatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
736
718
|
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.7", ngImport: i0, type: StrConcatenatorPipe, isStandalone: true, name: "strConcatenator" }); }
|
|
@@ -749,9 +731,7 @@ export class FormValuePipe {
|
|
|
749
731
|
? (formSchema?.length && typeof formSchema[0] != 'string'
|
|
750
732
|
? formSchema.map((field) => {
|
|
751
733
|
// debugger;
|
|
752
|
-
const val = field.type == 'select' || field.type == 'autocomplete'
|
|
753
|
-
? field.selectedOptionLabel || formValue[field.field]
|
|
754
|
-
: formValue[field.field];
|
|
734
|
+
const val = field.type == 'select' || field.type == 'autocomplete' ? field.selectedOptionLabel || formValue[field.field] : formValue[field.field];
|
|
755
735
|
return val != null ? `${field.label}: ${val}` : null;
|
|
756
736
|
})
|
|
757
737
|
: (formSchema || Object.keys(formValue)).map((x) => {
|
|
@@ -866,8 +846,7 @@ export class RemoveUsedOptionsPipe {
|
|
|
866
846
|
if (!arr?.length || !formArray?.length)
|
|
867
847
|
return [];
|
|
868
848
|
if (arrFieldName && formFieldName)
|
|
869
|
-
return arr.filter((x) => !formArray.some((f) => form[formFieldName] != x[arrFieldName] &&
|
|
870
|
-
f[formFieldName] == x[arrFieldName]));
|
|
849
|
+
return arr.filter((x) => !formArray.some((f) => form[formFieldName] != x[arrFieldName] && f[formFieldName] == x[arrFieldName]));
|
|
871
850
|
else if (arrFieldName && !formFieldName)
|
|
872
851
|
return arr.filter((x) => !formArray.some((f) => f == x[arrFieldName]));
|
|
873
852
|
else if (!arrFieldName && formFieldName)
|
|
@@ -887,8 +866,7 @@ export class RemoveUsedOptionsReactivePipe {
|
|
|
887
866
|
if (!arr?.length || !formArray?.length)
|
|
888
867
|
return [];
|
|
889
868
|
if (arrFieldName && formFieldName)
|
|
890
|
-
return arr.filter((x) => !formArray.some((f) => form[formFieldName] != x[arrFieldName] &&
|
|
891
|
-
f[formFieldName] == x[arrFieldName]));
|
|
869
|
+
return arr.filter((x) => !formArray.some((f) => form[formFieldName] != x[arrFieldName] && f[formFieldName] == x[arrFieldName]));
|
|
892
870
|
else if (arrFieldName && !formFieldName)
|
|
893
871
|
return arr.filter((x) => !formArray.some((f) => f == x[arrFieldName]));
|
|
894
872
|
else if (!arrFieldName && formFieldName)
|
|
@@ -1011,4 +989,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImpor
|
|
|
1011
989
|
providers: [],
|
|
1012
990
|
}]
|
|
1013
991
|
}] });
|
|
1014
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9waXBlcy91dGlsaXR5LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFJMUUsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEVBQXNCLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRFLE9BQU8sT0FBTyxNQUFNLHFCQUFxQixDQUFDO0FBRTFDLFdBQVc7QUFDWCxPQUFPLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7O0FBRWpFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUs3QixNQUFNLE9BQU8sYUFBYTtJQUN4QixTQUFTLENBQ1AsR0FBUSxFQUNSLFNBQWlCLEVBQ2pCLFVBQWtCLEVBQ2xCLFFBQWlCO1FBRWpCLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3BELENBQUM7OEdBUlUsYUFBYTs0R0FBYixhQUFhOzsyRkFBYixhQUFhO2tCQUp6QixJQUFJO21CQUFDO29CQUNKLElB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WUFBWSxFQWdCWixpQkFBaUIsRUFzTmpCLGNBQWMsRUFZZCxlQUFlLEVBV2YsZUFBZSxFQXdCZixXQUFXLEVBVFgsVUFBVSxFQTBlVixpQkFBaUIsRUF0UmpCLGFBQWEsRUF3TmIscUJBQXFCLEVBeklyQixjQUFjLEVBd05kLGlCQUFpQixFQTd5QmpCLFNBQVMsRUFZVCxpQkFBaUIsRUF5ZGpCLFFBQVEsRUEySVIsbUJBQW1CLEVBakZuQixjQUFjLEVBVmQsU0FBUyxFQThWcEIsYUFBYSxFQTFVRixRQUFRLEVBZVIsWUFBWSxFQXhaWixrQkFBa0IsRUErYmxCLFlBQVksRUFyQlosUUFBUTsrR0FzVFIsa0JBQWtCLFlBSm5CLFlBQVksRUFBSyxPQUFPOzsyRkFJdkIsa0JBQWtCO2tCQUw5QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxHQUFHLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQztvQkFDN0MsT0FBTyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsR0FBRyxPQUFPLENBQUM7b0JBQy9CLFNBQVMsRUFBRSxFQUFFO2lCQUNkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBOZ01vZHVsZSwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBFUGFnZVR5cGUsIElUYWJsZUNvbCwgVHlwZU9mIH0gZnJvbSAnLi4vbW9kZWxzL2luZGV4Lm1vZGVsJztcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHMgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IElGb3JtU2NoZW1hIH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm0tc2NoZW1hLm1vZGVsJztcbmltcG9ydCBUaW1lQWdvIGZyb20gJ2phdmFzY3JpcHQtdGltZS1hZ28nO1xuXG4vLyBFbmdsaXNoLlxuaW1wb3J0IGVuIGZyb20gJ2phdmFzY3JpcHQtdGltZS1hZ28vbG9jYWxlL2VuJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgSVRleHRDYXNlMiB9IGZyb20gJy4uL2NvbXBvbmVudHMvdGV4dC1jYXNlLTIvdGV4dC1jYXNlLTIuY29tcG9uZW50JztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IEVWRnVuY3Rpb25zIH0gZnJvbSAnLi4vLi4vY29uZmlncy9iYXNlLWZ1bmN0aW9ucyc7XG5pbXBvcnQgeyBGb3JtSW52YWxpZENsYXNzUGlwZSB9IGZyb20gJy4vZm9ybS1pbnZhbGlkLWNsYXNzLnBpcGUnO1xuXG5UaW1lQWdvLmFkZERlZmF1bHRMb2NhbGUoZW4pO1xuQFBpcGUoe1xuICBuYW1lOiAnYXJyYXlTcGxpdHRlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5U3BsaXR0ZXIgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtPFQ+KFxuICAgIGFycjogVFtdLFxuICAgIGFyckxlbmd0aDogbnVtYmVyLFxuICAgIHN0YXJ0SW5kZXg6IG51bWJlcixcbiAgICBlbmRJbmRleD86IG51bWJlcixcbiAgKSB7XG4gICAgcmV0dXJuIGFyciA/IGFyci5zbGljZShzdGFydEluZGV4LCBlbmRJbmRleCkgOiBbXTtcbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdnZW5kZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBHZW5kZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHZhbHVlID09ICdNJyA/ICdNYWxlJyA6IHZhbHVlID09ICdGJyA/ICdGZW1hbGUnIDogdmFsdWU7XG4gIH1cbn1cbkBQaXBlKHtcbiAgbmFtZTogJ3JvdW5kJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgUm91bmRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIC8qKlxuICAgKiBVc2UgdGhlIE1hdGgucm91bmQgZnVuY3Rpb25cbiAgICovXG4gIHRyYW5zZm9ybSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQodmFsdWUpO1xuICB9XG59XG5AUGlwZSh7XG4gIG5hbWU6ICdzZWNvbmRzVG9UaW1lJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgU2Vjb25kc1RvVGltZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCB0aW1lTGVmdCA9IHRoaXMudVMuc2Vjb25kc1RvSG91ck1pblNlYyh2YWx1ZSk7XG4gICAgcmV0dXJuIGAke3RpbWVMZWZ0LmhvdXJzID8gdGltZUxlZnQuaG91cnMgKyAnaHJzJyA6ICcnfVxuICAke3RpbWVMZWZ0Lm1pbnMgPyB0aW1lTGVmdC5taW5zICsgJ21pbicgOiAnJ30gJHtcbiAgICB0aW1lTGVmdC5zZWNzID8gdGltZUxlZnQuc2VjcyArICdzJyA6ICcnXG4gIH1gO1xuICB9XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1UzogVXRpbGl0eVNlcnZpY2UpIHt9XG59XG5jb25zdCB0aW1lQWdvID0gbmV3IFRpbWVBZ28oJ2VuLVVTJyk7XG5AUGlwZSh7IG5hbWU6ICdjdXN0b21EYXRlJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIEN1c3RvbURhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybShkYXRlOiBzdHJpbmcsIHNob3dUaW1lID0gZmFsc2UpIHtcbiAgICByZXR1cm4gdGltZUFnby5mb3JtYXQobmV3IERhdGUoZGF0ZSkpO1xuICB9XG4gIHRyYW5zZm9ybTIoZGF0ZTogc3RyaW5nLCBmb3JtYXRTdHI6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShkYXRlLCBmb3JtYXRTdHIpO1xuICB9XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkYXRlUGlwZTogRGF0ZVBpcGUpIHt9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2hhc1ZhbHVlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgSGFzVmFsdWVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGZpZWxkcyBpbiBhIG9iamVjdCBoYXMgYW55IHZhbHVlXG4gICAqL1xuICB0cmFuc2Zvcm08VD4odmFsdWU6IFQsIGZpZWxkc1RvQ2hlY2tGb3I/OiAoa2V5b2YgVClbXSk6IGJvb2xlYW4ge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIHJldHVybiBmaWVsZHNUb0NoZWNrRm9yPy5sZW5ndGhcbiAgICAgID8gZmllbGRzVG9DaGVja0Zvci5zb21lKCh4KSA9PiAhIXZhbHVlW3hdKVxuICAgICAgOiAhaXNFbXB0eSh2YWx1ZSk7XG4gIH1cbn1cblxuQFBpcGUoe1xuICBuYW1lOiAnY29kZVRpdGxlRGVzYycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIENvZGVUaXRsZURlc2NQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybShcbiAgICBjb2RlVGl0bGVBcnJheToge1xuICAgICAgY29kZTogc3RyaW5nO1xuICAgICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICB9W10sXG4gICAgY29kZTogc3RyaW5nLFxuICApOiBzdHJpbmcge1xuICAgIGlmICghY29kZSkgcmV0dXJuICcnO1xuICAgIGxldCBmb3VuZE9iaiA9IGNvZGVUaXRsZUFycmF5Py5maW5kKCh4KSA9PiB4LmNvZGUgPT09IGNvZGUpO1xuXG4gICAgcmV0dXJuIEVWRnVuY3Rpb25zLnN0ckNvbmNhdGVuYXRvcjIoXG4gICAgICBjb2RlLFxuICAgICAgZm91bmRPYmo/LmRlc2NyaXB0aW9uIHx8IGZvdW5kT2JqPy50aXRsZSxcbiAgICAgICcgLSAnLFxuICAgICk7XG4gIH1cbn1cblxuQFBpcGUoe1xuICBuYW1lOiAnaGFzRm9ybVZhbHVlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgSGFzRm9ybVZhbHVlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBmaWVsZHMgaW4gYSBmb3JtZ3JvdXAgb2JqZWN0IGhhcyBhbnkgdmFsdWVcbiAgICovXG4gIHRyYW5zZm9ybTxUVmFsdWUsIFRGb3JtIGV4dGVuZHMgeyBnZXRSYXdWYWx1ZTogKCkgPT4gVFZhbHVlIH0+KFxuICAgIGZvcm1Hcm91cDogVEZvcm0sXG4gICAgZmllbGRzVG9DaGVja0Zvcj86IChrZXlvZiBUVmFsdWUpW10sXG4gICAgcmVmcmVzaGVyPyxcbiAgKTogYm9vbGVhbiB7XG4gICAgLy8gY29uc29sZS5sb2coJ3ZhbCcpO1xuICAgIGlmICghZm9ybUdyb3VwKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgdmFsID0gZm9ybUdyb3VwLmdldFJhd1ZhbHVlKCk7XG4gICAgcmV0dXJuIChcbiAgICAgIGZpZWxkc1RvQ2hlY2tGb3I/Lmxlbmd0aCA/IGZpZWxkc1RvQ2hlY2tGb3IgOiBPYmplY3Qua2V5cyh2YWwpXG4gICAgKS5zb21lKCh4KSA9PiB2YWxbeF0gIT0gbnVsbCk7XG4gIH1cbn1cblxuQFBpcGUoe1xuICBuYW1lOiAnb2JqZWN0VG9MYWJlbHMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBPYmplY3RUb0xhYmVsc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgb2JqZWN0IHRvIGFuIGFycmF5IG9mIGxhYmVsc1xuICAgKiBAcGFyYW0gdmFsdWVcbiAgICogQHBhcmFtIGN1c3RvbUZpZWxkTWFwXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICB0cmFuc2Zvcm08VD4oXG4gICAgdmFsdWU6IFQsXG4gICAgY3VzdG9tRmllbGRNYXA/OiB7IFtrIGluIGtleW9mIFRdOiBQYXJ0aWFsPElUZXh0Q2FzZTI+IH0sXG4gICAgZXhjbHVzaW9uTGlzdD86IHsgW3g6IHN0cmluZ106IGJvb2xlYW4gfSxcbiAgKTogSVRleHRDYXNlMltdIHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICBjb25zdCBfZXhjbHVzaW9uTGlzdDogeyBbeDogc3RyaW5nXTogYm9vbGVhbiB9ID0ge1xuICAgICAgaWQ6IHRydWUsXG4gICAgICAuLi5leGNsdXNpb25MaXN0LFxuICAgIH07XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXModmFsdWUgfHwge30pXG4gICAgICAuZmlsdGVyKCh4KSA9PiAhX2V4Y2x1c2lvbkxpc3RbeF0pXG4gICAgICAubWFwKChmKSA9PiAoe1xuICAgICAgICAuLi5jdXN0b21GaWVsZE1hcD8uW2ZdLFxuICAgICAgICBsYWJlbDogY3VzdG9tRmllbGRNYXA/LltmXT8ubGFiZWwgfHwgdGhpcy51Uy5mb3JtYXRGaWVsZChmKSxcbiAgICAgICAgdmFsdWU6IHZhbHVlW2ZdLFxuICAgICAgfSkpO1xuICB9XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1UzogVXRpbGl0eVNlcnZpY2UpIHt9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2dldFZhbHVlTGFiZWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBHZXRWYWx1ZUxhYmVsIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIHN0cmluZyBpbnRvIGEgU2VsZWN0IG9wdGlvblxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IgaW4gdGhlIG9wdGlvbnMgbGlzdFxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgbGlzdCBvZiBpdGVtcyB0byBzZWFyY2ggaW5cbiAgICogQHBhcmFtIGxhYmVsRmllbGQgVGhlIGZpZWxkIHRoYXQgaG9sZHMgdGhlIGRlc2NyaXB0aW9uIGZpZWxkXG4gICAqIEBwYXJhbSB2YWx1ZUZpZWxkIFRoZSBmaWVsZCB0aGF0IGhvbGRzIHRoZSB2YWx1ZSBmaWVsZFxuICAgKiBAcmV0dXJucyBBIGNvbmNhdGVuYXRpb24gb2YgdGhlIHZhbHVlIGFuZCBkZXNjcmlwdGlvbiAodmFsdWUgLSBkZXNjcmlwdGlvbilcbiAgICovXG4gIHRyYW5zZm9ybShcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IGFueVtdLFxuICAgIGxhYmVsRmllbGQgPSAnZGVzY3JpcHRpb24nLFxuICAgIHZhbHVlRmllbGQgPSAnY29kZScsXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuICcnO1xuICAgIGlmICghb3B0aW9ucykgcmV0dXJuIHZhbHVlO1xuICAgIGNvbnN0IGl0ZW0gPSBvcHRpb25zLmZpbmQoKHgpID0+IHhbdmFsdWVGaWVsZF0gPT0gdmFsdWUpO1xuICAgIGlmICghaXRlbSkgcmV0dXJuIHZhbHVlO1xuICAgIHJldHVybiB2YWx1ZSArICcgLSAnICsgaXRlbVtsYWJlbEZpZWxkXSB8fCBpdGVtWyd0aXRsZSddO1xuICB9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3ZhbHVlRm9ybWF0dGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgVmFsdWVGb3JtYXR0ZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGFzeW5jIHRyYW5zZm9ybSh2YWwsIGZvcm1hdHRlcjogYW55KSB7XG4gICAgcmV0dXJuIGZvcm1hdHRlciA/IGZvcm1hdHRlcih2YWwpIDogdmFsO1xuICB9XG59XG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuY2xhc3MgQ0Z1bmN0aW9uQ2FsbGVyIHtcbiAgLy8gdHJhbnNmb3JtPFQsIFA+KGZ1bmM6ICguLi5hcmdzOiBQW10pID0+IFQsIC4uLmFyZ3M6IFBhcmFtZXRlcnM8dHlwZW9mIGZ1bmM+KSB7XG4gIC8vICAgcmV0dXJuIGZ1bmMgPyBmdW5jKC4uLmFyZ3MpIDogbnVsbDtcbiAgLy8gfVxuXG4gIC8qKlxuICAgKiBDYWxscyBhIGZ1bmN0aW9uIGluIHRoZSB0ZW1wbGF0ZVxuICAgKiBAcGFyYW0gZnVuYyBGdW5jdGlvbiB0byBiZSBjYWxsZWRcbiAgICogQHBhcmFtIGFyZ3NcbiAgICogQHJldHVybnNcbiAgICovXG4gIHRyYW5zZm9ybTxUPihmdW5jOiAoKSA9PiBUKTogVDtcbiAgdHJhbnNmb3JtPFQsIFAxPihmdW5jOiAocGFyYW0xPzogUDEpID0+IFQsIHBhcmFtMTogUDEpOiBUO1xuICB0cmFuc2Zvcm08VCwgUDEsIFAyPihcbiAgICBmdW5jOiAocGFyYW0xPzogUDEsIHBhcmFtMj86IFAyKSA9PiBULFxuICAgIHBhcmFtMTogUDEsXG4gICAgcGFyYW0yOiBQMixcbiAgKTogVDtcbiAgdHJhbnNmb3JtPFQsIFAxLCBQMiwgUDM+KFxuICAgIGZ1bmM6IChwYXJhbTE/OiBQMSwgcGFyYW0yPzogUDIsIHBhcmFtMz86IFAzKSA9PiBULFxuICAgIHBhcmFtMTogUDEsXG4gICAgcGFyYW0yOiBQMixcbiAgICBwYXJhbTM6IFAzLFxuICApOiBUO1xuICB0cmFuc2Zvcm08VCwgUDEsIFAyLCBQMz4oXG4gICAgZnVuYzogKHBhcmFtMT86IFAxLCBwYXJhbTI/OiBQMiwgcGFyYW0zPzogUDMpID0+IFQsXG4gICAgcGFyYW0xPzogUDEsXG4gICAgcGFyYW0yPzogUDIsXG4gICAgcGFyYW0zPzogUDMsXG4gICkge1xuICAgIHJldHVybiBmdW5jID8gZnVuYyhwYXJhbTEsIHBhcmFtMiwgcGFyYW0zKSA6IG51bGw7XG4gIH1cbn1cblxuQFBpcGUoe1xuICBuYW1lOiAnZnVuY3Rpb25DYWxsZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBGdW5jdGlvbkNhbGxlciBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAvLyAvKipcbiAgLy8gICogQ2FsbHMgYSBmdW5jdGlvbiBpbiB0aGUgdGVtcGxhdGVcbiAgLy8gICogQHBhcmFtIGZ1bmMgRnVuY3Rpb24gdG8gYmUgY2FsbGVkXG4gIC8vICAqIEBwYXJhbSBhcmdzXG4gIC8vICAqIEByZXR1cm5zXG4gIC8vICAqL1xuICAvLyB0cmFuc2Zvcm08VD4oZnVuYzogKCkgPT4gVCk6IFQ7XG4gIC8vIHRyYW5zZm9ybTxULCBQMT4oZnVuYzogKHBhcmFtMT86IFAxKSA9PiBULCBwYXJhbTE6IFAxKTogVDtcbiAgLy8gdHJhbnNmb3JtPFQsIFAxLCBQMj4oZnVuYzogKHBhcmFtMT86IFAxLCBwYXJhbTI/OiBQMikgPT4gVCwgcGFyYW0xOiBQMSwgcGFyYW0yOiBQMik6IFQ7XG4gIC8vIHRyYW5zZm9ybTxULCBQMSwgUDIsIFAzPihcbiAgLy8gICBmdW5jOiAocGFyYW0xPzogUDEsIHBhcmFtMj86IFAyLCBwYXJhbTM/OiBQMykgPT4gVCxcbiAgLy8gICBwYXJhbTE6IFAxLFxuICAvLyAgIHBhcmFtMjogUDIsXG4gIC8vICAgcGFyYW0zOiBQM1xuICAvLyApOiBUO1xuICAvLyB0cmFuc2Zvcm08VCwgUDEsIFAyLCBQMz4oXG4gIC8vICAgZnVuYzogKHBhcmFtMT86IFAxLCBwYXJhbTI/OiBQMiwgcGFyYW0zPzogUDMpID0+IFQsXG4gIC8vICAgcGFyYW0xPzogUDEsXG4gIC8vICAgcGFyYW0yPzogUDIsXG4gIC8vICAgcGFyYW0zPzogUDNcbiAgLy8gKSB7XG4gIC8vIC8vIHRyYW5zZm9ybTxULCBQPihmdW5jOiAoLi4uYXJnczogUFtdKSA9PiBULCAuLi5hcmdzOiBQYXJhbWV0ZXJzPHR5cGVvZiBmdW5jPikge1xuICAvLyAgIHJldHVybiBmdW5jID8gZnVuYyguLi5hcmdzKSA6IG51bGw7XG4gIC8vIH1cbiAgLy8gY29uc3RydWN0b3IoKSB7XG4gIC8vICAgY29uc3QgZiA9IChhOiBzdHJpbmcsIGI6bnVtYmVyKSA9PiB7fTtcbiAgLy8gICB0aGlzLnRyYW5zZm9ybShmLCAgeyBkOjQ0IH0sJ2RkZCcsKTtcbiAgLy8gfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBmOiBDRnVuY3Rpb25DYWxsZXIpIHtcbiAgICAvLyBjb25zdCBmcyA9ICggKSA9PiB7fTtcbiAgICAvLyB0aGlzLnRyYW5zZm9ybShmcyk7XG4gIH1cbiAgdHJhbnNmb3JtID0gdGhpcy5mLnRyYW5zZm9ybTtcbn1cbkBQaXBlKHtcbiAgbmFtZTogJ2Z1bmN0aW9uQ2FsbGVyMScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEZ1bmN0aW9uQ2FsbGVyMSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZjogQ0Z1bmN0aW9uQ2FsbGVyKSB7fVxuICB0cmFuc2Zvcm0gPSB0aGlzLmYudHJhbnNmb3JtO1xufVxuQFBpcGUoe1xuICBuYW1lOiAnZnVuY3Rpb25DYWxsZXIyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25DYWxsZXIyIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBmOiBDRnVuY3Rpb25DYWxsZXIpIHt9XG4gIHRyYW5zZm9ybSA9IHRoaXMuZi50cmFuc2Zvcm07XG59XG5AUGlwZSh7XG4gIG5hbWU6ICdmdW5jdGlvbkNhbGxlcjMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBGdW5jdGlvbkNhbGxlcjMgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IocHVibGljIGY6IENGdW5jdGlvbkNhbGxlcikge31cbiAgdHJhbnNmb3JtID0gdGhpcy5mLnRyYW5zZm9ybTtcbn1cbkBQaXBlKHtcbiAgbmFtZTogJ2h0dHBMaXN0Q2FsbGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgSHR0cExpc3RDYWxsZXIgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgLy8gdHJhbnNmb3JtPFQ+KGh0dHBPYnNlcnZhYmxlOiBhbnkpIHtcbiAgdHJhbnNmb3JtPFQ+KGh0dHBPYnNlcnZhYmxlOiAoKSA9PiBPYnNlcnZhYmxlPFQ+KSB7XG4gICAgLy8gY29uc29sZS5sb2coJ3JhbiBmdW5jdGlvbkNhbGxlcicsIGh0dHBPYnNlcnZhYmxlKTtcbiAgICByZXR1cm4gaHR0cE9ic2VydmFibGUoKTtcbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdodHRwTGlzdENhbGxlcjEnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBIdHRwTGlzdENhbGxlcjEgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtPFQ+KGh0dHBPYnNlcnZhYmxlOiAocGFyYW06IGFueSkgPT4gT2JzZXJ2YWJsZTxUPiwgcGFyYW06IGFueSkge1xuICAgIC8vIGNvbnNvbGUubG9nKCdyYW4gZnVuY3Rpb25DYWxsZXIxJywgaHR0cE9ic2VydmFibGUpO1xuICAgIHJldHVybiBodHRwT2JzZXJ2YWJsZShwYXJhbSk7XG4gICAgLy8gcmV0dXJuIHBhcmFtID8gaHR0cE9ic2VydmFibGUocGFyYW0pIDogbnVsbDtcbiAgfVxufVxuQFBpcGUoe1xuICBuYW1lOiAnaHR0cExpc3RDYWxsZXIyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgSHR0cExpc3RDYWxsZXIyIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybTxUPihcbiAgICBodHRwT2JzZXJ2YWJsZTogKHBhcmFtMTogc3RyaW5nLCBwYXJhbTI6IHN0cmluZykgPT4gT2JzZXJ2YWJsZTxUPixcbiAgICBwYXJhbTE6IHN0cmluZyxcbiAgICBwYXJhbTI6IHN0cmluZyxcbiAgKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ3JhbiBodHRwTGlzdENhbGxlcjInLCBodHRwT2JzZXJ2YWJsZSk7XG4gICAgcmV0dXJuIGh0dHBPYnNlcnZhYmxlKHBhcmFtMSwgcGFyYW0yKTtcbiAgICAvLyByZXR1cm4gcGFyYW0xID8gKHBhcmFtMiA/IGh0dHBPYnNlcnZhYmxlKHBhcmFtMSwgcGFyYW0yKSA6IG51bGwpIDogbnVsbDtcbiAgfVxufVxuQFBpcGUoe1xuICBuYW1lOiAnaXNTaG93UGFnZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIElzU2hvd1BhZ2UgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKHR5cGU6IEVQYWdlVHlwZSkge1xuICAgIHJldHVybiB0eXBlID09IEVQYWdlVHlwZS5zaG93UGFnZSA/IHRydWUgOiBmYWxzZTtcbiAgfVxufVxuQFBpcGUoe1xuICBuYW1lOiAnaXNDbG9uZVBhZ2UnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBJc0Nsb25lUGFnZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odHlwZTogRVBhZ2VUeXBlKSB7XG4gICAgcmV0dXJuIHR5cGUgPT0gRVBhZ2VUeXBlLmNsb25lUGFnZSA/IHRydWUgOiBudWxsO1xuICB9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2ZpbHRlckFycmF5JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyQXJyYXlQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gYXJyIEFycmF5IG9mIGl0ZW1zIHRvIGZpbHRlclxuICAgKiBAcGFyYW0gdmFsdWUgRmlsdGVyIHZhbHVlXG4gICAqIEBwYXJhbSBmaWx0ZXJGdW5jdGlvbiBGaWx0ZXIgZnVuY3Rpb24gdG8gcGFzcyBpbiBpdGVyYXRvclxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgdHJhbnNmb3JtPFQgZXh0ZW5kcyB7IFt4OiBzdHJpbmddOiBhbnkgfT4oXG4gICAgYXJyOiBUW10sXG4gICAgdmFsdWU6IHsgW3ggaW4ga2V5b2YgUGFydGlhbDxUPl06IGFueSB9LFxuICAgIGZpbHRlckZ1bmN0aW9uPzogKHZhbHVlOiBULCBpbmRleD86IG51bWJlciwgYXJyYXk/OiBUW10pID0+IGJvb2xlYW4sXG4gICkge1xuICAgIC8vIHJldHVybiB0aGlzLnVTLnRpbWVDb2RlQmxvY2soJ2lubGluZSBjb21wYXJpc29uJywgKCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHZhbHVlID09IG51bGwgfHxcbiAgICAgICFPYmplY3QudmFsdWVzKHZhbHVlKS5maWx0ZXIoKHgpID0+IHgpLmxlbmd0aCB8fFxuICAgICAgIWFyciB8fFxuICAgICAgIWFyci5sZW5ndGhcbiAgICApXG4gICAgICByZXR1cm4gYXJyO1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmIChmaWx0ZXJGdW5jdGlvbikgcmV0dXJuIGFyci5maWx0ZXIoZmlsdGVyRnVuY3Rpb24pO1xuXG4gICAgLy8jcmVnaW9uIGhhbmRsZSBmaWx0ZXIgdmFsdWVcbiAgICBjb25zdCB2YWx1ZU1hcDoge1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICB2YWx1ZTogc3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlcjtcbiAgICAgIHR5cGU6IFR5cGVPZjtcbiAgICB9W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB2YWx1ZSkge1xuICAgICAgaWYgKFxuICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkgJiZcbiAgICAgICAgdmFsdWVba2V5XSAhPSBudWxsXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgdmFsID0geyBrZXksIHZhbHVlOiB2YWx1ZVtrZXldLCB0eXBlOiB0eXBlb2YgdmFsdWVba2V5XSB9O1xuICAgICAgICBpZiAodmFsLnR5cGUgPT0gJ2Z1bmN0aW9uJyB8fCB2YWwudHlwZSA9PSAnb2JqZWN0JykgY29udGludWU7XG4gICAgICAgIGlmICh2YWwudHlwZSA9PSAnc3RyaW5nJylcbiAgICAgICAgICB2YWwudmFsdWUgPSAodmFsLnZhbHVlIGFzIHN0cmluZyk/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHZhbHVlTWFwLnB1c2godmFsKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICBjb25zdCByZXMgPSBhcnIuZmlsdGVyKCh4KSA9PiB7XG4gICAgICBjb25zdCBmb3JtR29ydXBWYWx1ZSA9IHg7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiB2YWx1ZU1hcCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKGtleS50eXBlID09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAoZm9ybUdvcnVwVmFsdWVba2V5LmtleV0gYXMgc3RyaW5nKVxuICAgICAgICAgICAgICA/LnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgPy5pbmNsdWRlcyhrZXkudmFsdWUgYXMgc3RyaW5nKSkgfHxcbiAgICAgICAgICBmb3JtR29ydXBWYWx1ZVtrZXkua2V5XSA9PSBrZXkudmFsdWVcbiAgICAgICAgKVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuICAgIC8vIGNvbnNvbGUubG9nKHJlcylcbiAgICByZXR1cm4gcmVzO1xuICAgIC8vIH0pO1xuICB9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2ZpbHRlckZvcm1BcnJheUdyb3VwJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyRm9ybUFycmF5R3JvdXBQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gYXJyIEFycmF5IG9mIEZvcm1Hcm91cHMgdG8gZmlsdGVyXG4gICAqIEBwYXJhbSB2YWx1ZSBGaWx0ZXIgdmFsdWVcbiAgICogQHBhcmFtIGZpbHRlckZ1bmN0aW9uIEZpbHRlciBmdW5jdGlvbiB0byBwYXNzIGluIGl0ZXJhdG9yXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICB0cmFuc2Zvcm08VEdyb3VwIGV4dGVuZHMgRm9ybUdyb3VwPihcbiAgICBhcnI6IFRHcm91cFtdLFxuICAgIHZhbHVlOiB7IFt4OiBzdHJpbmddOiBzdHJpbmcgfCBib29sZWFuIHwgbnVtYmVyIH0sXG4gICAgZmlsdGVyRnVuY3Rpb24/OiAoXG4gICAgICB2YWx1ZTogVEdyb3VwLFxuICAgICAgaW5kZXg/OiBudW1iZXIsXG4gICAgICBhcnJheT86IFRHcm91cFtdLFxuICAgICkgPT4gYm9vbGVhbixcbiAgKSB7XG4gICAgLy8gcmV0dXJuIHRoaXMudVMudGltZUNvZGVCbG9jaygnaW5saW5lIGNvbXBhcmlzb24nLCAoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgdmFsdWUgPT0gbnVsbCB8fFxuICAgICAgIU9iamVjdC52YWx1ZXModmFsdWUpLmZpbHRlcigoeCkgPT4geCkubGVuZ3RoIHx8XG4gICAgICAhYXJyIHx8XG4gICAgICAhYXJyLmxlbmd0aFxuICAgIClcbiAgICAgIHJldHVybiBhcnI7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgaWYgKGZpbHRlckZ1bmN0aW9uKSByZXR1cm4gYXJyLmZpbHRlcihmaWx0ZXJGdW5jdGlvbik7XG5cbiAgICBjb25zdCB2YWx1ZU1hcDoge1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICB2YWx1ZTogc3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlcjtcbiAgICAgIHR5cGU6IFR5cGVPZjtcbiAgICB9W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB2YWx1ZSkge1xuICAgICAgaWYgKFxuICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkgJiZcbiAgICAgICAgdmFsdWVba2V5XSAhPSBudWxsXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgdmFsID0geyBrZXksIHZhbHVlOiB2YWx1ZVtrZXldLCB0eXBlOiB0eXBlb2YgdmFsdWVba2V5XSB9O1xuICAgICAgICBpZiAodmFsLnR5cGUgPT0gJ2Z1bmN0aW9uJyB8fCB2YWwudHlwZSA9PSAnb2JqZWN0JykgY29udGludWU7XG4gICAgICAgIGlmICh2YWwudHlwZSA9PSAnc3RyaW5nJylcbiAgICAgICAgICB2YWwudmFsdWUgPSAodmFsLnZhbHVlIGFzIHN0cmluZyk/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHZhbHVlTWFwLnB1c2godmFsKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcmVzID0gYXJyLmZpbHRlcigoeDogRm9ybUdyb3VwKSA9PiB7XG4gICAgICBjb25zdCBmb3JtR29ydXBWYWx1ZSA9IHguZ2V0UmF3VmFsdWUoKTtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIHZhbHVlTWFwKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAoa2V5LnR5cGUgPT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgIChmb3JtR29ydXBWYWx1ZVtrZXkua2V5XSBhcyBzdHJpbmcpXG4gICAgICAgICAgICAgID8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICA/LmluY2x1ZGVzKGtleS52YWx1ZSBhcyBzdHJpbmcpKSB8fFxuICAgICAgICAgIGZvcm1Hb3J1cFZhbHVlW2tleS5rZXldID09IGtleS52YWx1ZVxuICAgICAgICApXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gICAgLy8gY29uc29sZS5sb2cocmVzKVxuICAgIHJldHVybiByZXM7XG4gICAgLy8gfSk7XG4gIH1cbn1cblxuQFBpcGUoe1xuICBuYW1lOiAnZmlsdGVyRm9ybUFycmF5Q29udHJvbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlckZvcm1BcnJheUNvbnRyb2xQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gYXJyIEFycmF5IG9mIEZvcm1Hcm91cHMgdG8gZmlsdGVyXG4gICAqIEBwYXJhbSB2YWx1ZSBGaWx0ZXIgdmFsdWVcbiAgICogQHJldHVybnNcbiAgICovXG4gIHRyYW5zZm9ybTxUQ29udHJvbCBleHRlbmRzIEFic3RyYWN0Q29udHJvbDxhbnk+ID0gYW55PihcbiAgICBhcnI6IFRDb250cm9sW10sXG4gICAgdmFsdWU6IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXIsXG4gICkge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8ICFhcnIgfHwgIWFyci5sZW5ndGgpIHJldHVybiBhcnI7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgcmV0dXJuIGFyci5maWx0ZXIoKHgpID0+IHgudmFsdWUgPT0gdmFsdWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIHVTOiBVdGlsaXR5U2VydmljZSkge31cbn1cblxuQFBpcGUoe1xuICBuYW1lOiAnc29ydCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFNvcnRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gYXJyXG4gICAqIEBwYXJhbSBkaXJlY3Rpb24gMCAtIGFzY2VuZGluZyBvcmRlci4gMSAtIGRlc2NlbmRpbmcgb3JkZXJcbiAgICogQHBhcmFtIHNvcnRGaWVsZFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgdHJhbnNmb3JtPFQ+KGFycjogVFtdLCBkaXJlY3Rpb246IDAgfCAxID0gMCwgc29ydEZpZWxkPzoga2V5b2YgVCkge1xuICAgIC8vICAgIGNvbnNvbGUubG9nKCdTT1JUVEVSJywgYXJyLCBkaXJlY3Rpb24sIHNvcnRGaWVsZCk7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgaWYgKCFhcnIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAoZGlyZWN0aW9uID4gLTEgJiYgZGlyZWN0aW9uIDwgMikge1xuICAgICAgcmV0dXJuIHRoaXMuc29ydChhcnIsIGRpcmVjdGlvbiwgc29ydEZpZWxkIGFzIGFueSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuICB9XG4gIHNvcnQ8VD4oYXJyOiBUW10sIGRpcmVjdGlvbjogMCB8IDEsIHNvcnRGaWVsZD86IHN0cmluZykge1xuICAgIGlmIChzb3J0RmllbGQpIHtcbiAgICAgIHJldHVybiBhcnIuc29ydDMoc29ydEZpZWxkIGFzIGFueSwgZGlyZWN0aW9uID8gdHJ1ZSA6IGZhbHNlKSBhcyBUW107XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBhcnIuc29ydCgoeDogYW55LCB5OiBhbnkpID0+IChkaXJlY3Rpb24gPyB5IC0geCA6IHggLSB5KSk7XG4gICAgfVxuICB9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3JlZnJlc2hlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFJlZnJlc2hlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgLyoqXG4gICAqIFJldHVybnMgYSB2YWx1ZSB3aGVuIHRoZSByZWZyZXNoZXIgdmFsdWUgY2hhbmdlc1xuICAgKiBAcGFyYW0gdmFsdWUgVmFsdWUgdG8gYmUgcmV0dXJuZWRcbiAgICogQHBhcmFtIHJlZnJlc2hlciBSZWZyZXNoZXIgdmFsdWUgZm9yIHVwZGF0aW5nIHRoZSB2YWx1ZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgdHJhbnNmb3JtPFQ+KHZhbHVlOiBULCByZWZyZXNoZXI/OiBhbnkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cbkBQaXBlKHtcbiAgbmFtZTogJ3RvQW55JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgVG9BbnlQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBpc0FycmF5ID0gZmFsc2UpIHtcbiAgICByZXR1cm4gaXNBcnJheSA/ICh2YWx1ZSBhcyBhbnlbXSkgOiB2YWx1ZTtcbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICd0b0FueUFycmF5JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgVG9BbnlBcnJheVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gdmFsdWUgYXMgYW55W107XG4gIH1cbn1cblxuQFBpcGUoe1xuICBuYW1lOiAndHJpbScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFRyaW1QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIC8qKlxuICAgKiBUcmltcyBhIHN0cmluZ1xuICAgKiBAcGFyYW0gdmFsdWUgU3RyaW5nIHRvIHRyaW1cbiAgICogQHJldHVybnMgVHJpbW1lZCBzdHJpbmdcbiAgICovXG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHZhbHVlPy50cmltKCk7XG4gIH1cbn1cblxuQFBpcGUoe1xuICBuYW1lOiAndHJpbVRleHQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBUcmltVGV4dFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgLyoqXG4gICAqIFRyaW1zIGEgc3RyaW5nIGJhc2VkIG9uIGEgc3BlY2lmaWVkIGxlbmd0aFxuICAgKiBAcGFyYW0gdmFsdWUgU3RyaW5nIHRvIHRyaW1cbiAgICogQHBhcmFtIGxlbmd0aCBMZW5ndGggdG8gYmVnaW4gdHJpbW1pbmdcbiAgICogQHJldHVybnMgVHJpbW1lZCBzdHJpbmdcbiAgICovXG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBsZW5ndGg6IG51bWJlcikge1xuICAgIHJldHVybiAhdmFsdWUgfHwgbGVuZ3RoID09IG51bGwgfHwgdmFsdWUubGVuZ3RoIDwgbGVuZ3RoXG4gICAgICA/IHZhbHVlXG4gICAgICA6IHZhbHVlLnN1YnN0cmluZygwLCBsZW5ndGgpICsgJy4uLic7XG4gIH1cbn1cblxuQFBpcGUoe1xuICBuYW1lOiAneE9yWScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFhPcllQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh4OiBzdHJpbmcsIHkgPSAnLScpIHtcbiAgICByZXR1cm4gdGhpcy51Uy54T3JZKHgsIHkpO1xuICB9XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdVM6IFV0aWxpdHlTZXJ2aWNlKSB7fVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdyZXBsYWNlQWxsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgUmVwbGFjZUFsbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKHRleHQ6IHN0cmluZywgc2VhcmNoOiBzdHJpbmcsIHJlcGxhY2VtZW50OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGV4dCA/IHRleHQuc3BsaXQoc2VhcmNoKS5qb2luKHJlcGxhY2VtZW50KSA6IHRleHQ7XG4gIH1cbn1cblxuQFBpcGUoe1xuICBuYW1lOiAndmFsdWVPclgnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBWYWx1ZU9yWFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBWYXJpYWJsZSB0aGF0IGhvbGRzIHRoZSB2YWx1ZSB0byBiZSBjaGVja2VkIGZvciBlbXB0aW5lc3NcbiAgICogQHBhcmFtIHJlcGxhY2VtZW50IFRoaXMgaXMgdGhlIHZhbHVlIHRoYXQgd2lsbCBiZSBzZXQgaWYgdGhlIHN1YmplY3QgZmllbGQgaXMgZW1wdHlcbiAgICogQHJldHVybnMgUmV0dXJuIHRoZSB2YWx1ZSBvciB0aGUgcmVwbGFjZW1lbnQgdmFsdWUgaWYgdmFsdWUgaXMgZW1wdHlcbiAgICovXG4gIHRyYW5zZm9ybTxUPih2YWx1ZTogVCwgcmVwbGFjZW1lbnQ6IHN0cmluZyA9ICctJykge1xuICAgIC8vIGNvbnNvbGUubG9nKHZhbHVlKVxuICAgIHJldHVybiB2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09IHVuZGVmaW5lZCA/IHJlcGxhY2VtZW50IDogdmFsdWU7XG4gIH1cbn1cblxuQFBpcGUoe1xuICBuYW1lOiAnc3RyQ29uY2F0ZW5hdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgU3RyQ29uY2F0ZW5hdG9yUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm08VD4odGV4dDE6IHN0cmluZywgdGV4dDI6IHN0cmluZywgam9pbmVyOiBzdHJpbmcgPSAnIC0gJykge1xuICAgIHJldHVybiBFVkZ1bmN0aW9ucy5zdHJDb25jYXRlbmF0b3IodGV4dDEsIHRleHQyLCBqb2luZXIpLmxhYmVsO1xuICB9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2Zvcm1WYWx1ZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1WYWx1ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKGZvcm1WYWx1ZSwgZm9ybVNjaGVtYT86IElGb3JtU2NoZW1hW10pOiBzdHJpbmc7XG4gIHRyYW5zZm9ybTxUPihmb3JtVmFsdWU6IFQsIGZvcm1TY2hlbWE/OiAoa2V5b2YgVClbXSk6IHN0cmluZztcbiAgdHJhbnNmb3JtPFQ+KGZvcm1WYWx1ZTogVCwgZm9ybVNjaGVtYT86IChJRm9ybVNjaGVtYSB8IGtleW9mIFQpW10pOiBzdHJpbmcge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIHJldHVybiBmb3JtVmFsdWVcbiAgICAgID8gKGZvcm1TY2hlbWE/Lmxlbmd0aCAmJiB0eXBlb2YgZm9ybVNjaGVtYVswXSAhPSAnc3RyaW5nJ1xuICAgICAgICAgID8gZm9ybVNjaGVtYS5tYXAoKGZpZWxkOiBJRm9ybVNjaGVtYSkgPT4ge1xuICAgICAgICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgICAgICAgY29uc3QgdmFsID1cbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID09ICdzZWxlY3QnIHx8IGZpZWxkLnR5cGUgPT0gJ2F1dG9jb21wbGV0ZSdcbiAgICAgICAgICAgICAgICAgID8gZmllbGQuc2VsZWN0ZWRPcHRpb25MYWJlbCB8fCBmb3JtVmFsdWVbZmllbGQuZmllbGRdXG4gICAgICAgICAgICAgICAgICA6IGZvcm1WYWx1ZVtmaWVsZC5maWVsZF07XG4gICAgICAgICAgICAgIHJldHVybiB2YWwgIT0gbnVsbCA/IGAke2ZpZWxkLmxhYmVsfTogJHt2YWx9YCA6IG51bGw7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIDogKGZvcm1TY2hlbWEgfHwgT2JqZWN0LmtleXMoZm9ybVZhbHVlKSkubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbCA9IGZvcm1WYWx1ZVt4XTtcbiAgICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMudVMuZm9ybWF0RmllbGQoeCl9OiAke3ZhbCAhPSBudWxsID8gdmFsIDogJy0nfWA7XG4gICAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgICAgLmZpbHRlcigoeCkgPT4geClcbiAgICAgICAgICAuam9pbignXFxuJylcbiAgICAgIDogJyc7XG4gIH1cbiAgY29uc3RydWN0b3IocHVibGljIHVTOiBVdGlsaXR5U2VydmljZSkge31cbn1cbkBQaXBlKHtcbiAgbmFtZTogJ2ZpZWxkVG9MYWJlbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEZpZWxkVG9MYWJlbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICByZXR1cm4gdGhpcy51Uy5mb3JtYXRGaWVsZChmaWVsZE5hbWUpO1xuICB9XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1UzogVXRpbGl0eVNlcnZpY2UpIHt9XG59XG5cbkBQaXBlKHsgbmFtZTogJ3R5cGVyJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIFR5cGVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm08VD4odmFsdWU6IGFueSwgc2FtcGxlOiBUKSB7XG4gICAgcmV0dXJuIHZhbHVlIGFzIFQ7XG4gIH1cbn1cblxuQFBpcGUoe1xuICBuYW1lOiAnZmlsdGVyQXJyYXlCeVN0cmluZycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlckFycmF5QnlTdHJpbmdQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIC8qKlxuICAgKiBGaWx0ZXIgYXJyYXkgdXNpbmcgYSBwaXBlXG4gICAqIEBwYXJhbSBhcnIgQXJyYXkgdG8gZmlsdGVyXG4gICAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byBmaWx0ZXIgZm9yXG4gICAqIEBwYXJhbSBrZXlzIEZpZWxkcyB0byBjaGVjayBmb3IgbWF0Y2ggaW5cbiAgICogQHBhcmFtIGZpbHRlckZ1bmN0aW9uIEZpdGxlciBmdW5jdGlvbiB0byB1c2UgaW5zdGVhZCBvZiB2YWx1ZSBhbmQga2V5c1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgdHJhbnNmb3JtPFQ+KFxuICAgIGFycjogVFtdLFxuICAgIHZhbHVlOiBzdHJpbmcsXG4gICAga2V5czogKGtleW9mIFQpW10sXG4gICAgZmlsdGVyRnVuY3Rpb24/OiAodmFsdWU6IFQsIGluZGV4PzogbnVtYmVyLCBhcnJheT86IFRbXSkgPT4gYm9vbGVhbixcbiAgKSB7XG4gICAgaWYgKCFhcnIpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIGFycjtcbiAgICBpZiAoZmlsdGVyRnVuY3Rpb24pIHJldHVybiBhcnIuZmlsdGVyKGZpbHRlckZ1bmN0aW9uKTtcbiAgICBlbHNlIHtcbiAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgY29uc3QgdmwgPSB2YWx1ZT8udG9TdHJpbmcoKT8udHJpbSgpPy50b0xvd2VyQ2FzZSgpO1xuICAgICAgY29uc3QgcmV0OiBUW10gPSBbXTtcbiAgICAgIGNvbnN0IGFkZGVkTWFwOiB7IFtpZDogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG4gICAgICBjb25zdCBpZEZpZWxkID0ga2V5c1swXSBhcyBzdHJpbmc7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBhcnIpIHtcbiAgICAgICAgICBpZiAoYWRkZWRNYXBbaXRlbVtpZEZpZWxkXV0pIGNvbnRpbnVlO1xuICAgICAgICAgIGlmICgoPHN0cmluZz5pdGVtW2tleV0pPy50b1N0cmluZygpPy50b0xvd2VyQ2FzZSgpPy5zdGFydHNXaXRoKHZsKSkge1xuICAgICAgICAgICAgcmV0LnB1c2goaXRlbSk7XG4gICAgICAgICAgICBhZGRlZE1hcFtpdGVtW2lkRmllbGRdXSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBhcnIpIHtcbiAgICAgICAgICBpZiAoYWRkZWRNYXBbaXRlbVtpZEZpZWxkXV0pIGNvbnRpbnVlO1xuICAgICAgICAgIGlmICgoPHN0cmluZz5pdGVtW2tleV0pPy50b1N0cmluZygpPy50b0xvd2VyQ2FzZSgpPy5pbmNsdWRlcyh2bCkpIHtcbiAgICAgICAgICAgIHJldC5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgYWRkZWRNYXBbaXRlbVtpZEZpZWxkXV0gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc29sZS5sb2coJ2ZpbHRlciByZXN1bHQnLCByZXQpO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG4gIH1cbn1cblxuQFBpcGUoeyBuYW1lOiAncmVtb3ZlVXNlZE9wdGlvbnMnLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgUmVtb3ZlVXNlZE9wdGlvbnNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybTxUT3B0aW9uLCBURm9ybUFycmF5PihcbiAgICBhcnI6IFRPcHRpb25bXSxcbiAgICBmb3JtQXJyYXk6IFRGb3JtQXJyYXlbXSxcbiAgICBmb3JtOiBURm9ybUFycmF5LFxuICAgIGFyckZpZWxkTmFtZT86IGtleW9mIFRPcHRpb24sXG4gICAgZm9ybUZpZWxkTmFtZT86IGtleW9mIFRGb3JtQXJyYXksXG4gICk6IFRPcHRpb25bXSB7XG4gICAgaWYgKCFhcnI/Lmxlbmd0aCB8fCAhZm9ybUFycmF5Py5sZW5ndGgpIHJldHVybiBbXTtcbiAgICBpZiAoYXJyRmllbGROYW1lICYmIGZvcm1GaWVsZE5hbWUpXG4gICAgICByZXR1cm4gYXJyLmZpbHRlcihcbiAgICAgICAgKHgpID0+XG4gICAgICAgICAgIWZvcm1BcnJheS5zb21lKFxuICAgICAgICAgICAgKGYpID0+XG4gICAgICAgICAgICAgIGZvcm1bZm9ybUZpZWxkTmFtZV0gIT0gKHhbYXJyRmllbGROYW1lXSBhcyBhbnkpICYmXG4gICAgICAgICAgICAgIGZbZm9ybUZpZWxkTmFtZV0gPT0gKHhbYXJyRmllbGROYW1lXSBhcyBhbnkpLFxuICAgICAgICAgICksXG4gICAgICApO1xuICAgIGVsc2UgaWYgKGFyckZpZWxkTmFtZSAmJiAhZm9ybUZpZWxkTmFtZSlcbiAgICAgIHJldHVybiBhcnIuZmlsdGVyKFxuICAgICAgICAoeCkgPT4gIWZvcm1BcnJheS5zb21lKChmKSA9PiBmID09ICh4W2FyckZpZWxkTmFtZV0gYXMgYW55KSksXG4gICAgICApO1xuICAgIGVsc2UgaWYgKCFhcnJGaWVsZE5hbWUgJiYgZm9ybUZpZWxkTmFtZSlcbiAgICAgIHJldHVybiBhcnIuZmlsdGVyKFxuICAgICAgICAoeCkgPT4gIWZvcm1BcnJheS5zb21lKChmKSA9PiBmW2Zvcm1GaWVsZE5hbWVdID09ICh4IGFzIGFueSkpLFxuICAgICAgKTtcbiAgICBlbHNlIHJldHVybiBhcnIuZmlsdGVyKCh4KSA9PiBmb3JtQXJyYXkuc29tZSgoZikgPT4gZiA9PSAoeCBhcyBhbnkpKSk7XG4gIH1cbn1cblxuQFBpcGUoeyBuYW1lOiAncmVtb3ZlVXNlZE9wdGlvbnNSZWFjdGl2ZScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBSZW1vdmVVc2VkT3B0aW9uc1JlYWN0aXZlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm08VE9wdGlvbiwgVEZvcm1BcnJheSBleHRlbmRzIHsgdmFsdWU/OiBhbnkgfVtdPihcbiAgICBhcnI6IFRPcHRpb25bXSxcbiAgICBmb3JtQXJyYXk6IFRGb3JtQXJyYXlbXSxcbiAgICBmb3JtOiBURm9ybUFycmF5LFxuICAgIGFyckZpZWxkTmFtZT86IGtleW9mIFRPcHRpb24sXG4gICAgZm9ybUZpZWxkTmFtZT86IGtleW9mIFRGb3JtQXJyYXksXG4gICk6IFRPcHRpb25bXSB7XG4gICAgaWYgKCFhcnI/Lmxlbmd0aCB8fCAhZm9ybUFycmF5Py5sZW5ndGgpIHJldHVybiBbXTtcbiAgICBpZiAoYXJyRmllbGROYW1lICYmIGZvcm1GaWVsZE5hbWUpXG4gICAgICByZXR1cm4gYXJyLmZpbHRlcihcbiAgICAgICAgKHgpID0+XG4gICAgICAgICAgIWZvcm1BcnJheS5zb21lKFxuICAgICAgICAgICAgKGYpID0+XG4gICAgICAgICAgICAgIGZvcm1bZm9ybUZpZWxkTmFtZV0gIT0gKHhbYXJyRmllbGROYW1lXSBhcyBhbnkpICYmXG4gICAgICAgICAgICAgIGZbZm9ybUZpZWxkTmFtZV0gPT0gKHhbYXJyRmllbGROYW1lXSBhcyBhbnkpLFxuICAgICAgICAgICksXG4gICAgICApO1xuICAgIGVsc2UgaWYgKGFyckZpZWxkTmFtZSAmJiAhZm9ybUZpZWxkTmFtZSlcbiAgICAgIHJldHVybiBhcnIuZmlsdGVyKFxuICAgICAgICAoeCkgPT4gIWZvcm1BcnJheS5zb21lKChmKSA9PiBmID09ICh4W2FyckZpZWxkTmFtZV0gYXMgYW55KSksXG4gICAgICApO1xuICAgIGVsc2UgaWYgKCFhcnJGaWVsZE5hbWUgJiYgZm9ybUZpZWxkTmFtZSlcbiAgICAgIHJldHVybiBhcnIuZmlsdGVyKFxuICAgICAgICAoeCkgPT4gIWZvcm1BcnJheS5zb21lKChmKSA9PiBmW2Zvcm1GaWVsZE5hbWVdID09ICh4IGFzIGFueSkpLFxuICAgICAgKTtcbiAgICBlbHNlIHJldHVybiBhcnIuZmlsdGVyKCh4KSA9PiBmb3JtQXJyYXkuc29tZSgoZikgPT4gZiA9PSAoeCBhcyBhbnkpKSk7XG4gIH1cbn1cblxuQFBpcGUoeyBuYW1lOiAnb2JqZWN0VG9BcnJheScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBPYmplY3RUb0FycmF5UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm08VD4odmFsdWU6IHsgW3g6IHN0cmluZ106IFQgfSk6IFRbXSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModmFsdWUpO1xuICB9XG59XG5cbkBQaXBlKHsgbmFtZTogJ2Zvcm1TY2hlbWFUb0NvbHMnLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgRm9ybVNjaGVtYVRvVGFibGVDb2x1bW5zUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IElGb3JtU2NoZW1hW10pOiBJVGFibGVDb2xbXSB7XG4gICAgcmV0dXJuIHZhbHVlPy5tYXAoKHgpID0+ICh7IGY6IHguZmllbGQsIHQ6IHgubGFiZWwgfSkpIHx8IFtdO1xuICB9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3Jlc3BvbnNpdmVWYWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBSZXNwb25zaXZlVmFsUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAvLyBzdWI6U3Vic2NyaXB0aW9uXG4gIHRyYW5zZm9ybTxUPihjb25maWc6IHtcbiAgICBYU21hbGw/OiBUO1xuICAgIFNtYWxsPzogVDtcbiAgICBNZWRpdW0/OiBUO1xuICAgIExhcmdlPzogVDtcbiAgICBYTGFyZ2U/OiBUO1xuICAgIEhhbmRzZXQ/OiBUO1xuICAgIFRhYmxldD86IFQ7XG4gICAgV2ViPzogVDtcbiAgICBIYW5kc2V0UG9ydHJhaXQ/OiBUO1xuICAgIFRhYmxldFBvcnRyYWl0PzogVDtcbiAgICBXZWJQb3J0cmFpdD86IFQ7XG4gICAgSGFuZHNldExhbmRzY2FwZT86IFQ7XG4gICAgVGFibGV0TGFuZHNjYXBlPzogVDtcbiAgICBXZWJMYW5kc2NhcGU/OiBUO1xuICB9KTogVCB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gY29uZmlnKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywga2V5KSkge1xuICAgICAgICBpZiAodGhpcy5yZXNwb25zaXZlLmlzTWF0Y2hlZChCcmVha3BvaW50c1trZXldKSkgcmV0dXJuIGNvbmZpZ1trZXldO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhjb25maWcpWzBdO1xuICAgIC8vICB0aGlzLnN1Yj0gdGhpcy5yZXNwb25zaXZlLm9ic2VydmUocj0+e1xuXG4gICAgLy8gIH0pXG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gdGhpcy5zdWIuXG4gIH1cbiAgY29uc3RydWN0b3IocHVibGljIHJlc3BvbnNpdmU6IEJyZWFrcG9pbnRPYnNlcnZlcikge31cbn1cblxuY29uc3QgY29tcHMgPSBbXG4gIEFycmF5U3BsaXR0ZXIsXG4gIEN1c3RvbURhdGVQaXBlLFxuICBGaWVsZFRvTGFiZWxQaXBlLFxuICBGaWx0ZXJBcnJheUJ5U3RyaW5nUGlwZSxcbiAgRmlsdGVyQXJyYXlQaXBlLFxuICBGaWx0ZXJGb3JtQXJyYXlHcm91cFBpcGUsXG4gIEZvcm1JbnZhbGlkQ2xhc3NQaXBlLFxuICBGb3JtU2NoZW1hVG9UYWJsZUNvbHVtbnNQaXBlLFxuICBGb3JtVmFsdWVQaXBlLFxuICBGdW5jdGlvbkNhbGxlcixcbiAgRnVuY3Rpb25DYWxsZXIxLFxuICBGdW5jdGlvbkNhbGxlcjIsXG4gIEZ1bmN0aW9uQ2FsbGVyMyxcbiAgR2VuZGVyUGlwZSxcbiAgR2V0VmFsdWVMYWJlbCxcbiAgSGFzRm9ybVZhbHVlUGlwZSxcbiAgSGFzVmFsdWVQaXBlLFxuICBDb2RlVGl0bGVEZXNjUGlwZSxcbiAgSHR0cExpc3RDYWxsZXIsXG4gIEh0dHBMaXN0Q2FsbGVyMSxcbiAgSHR0cExpc3RDYWxsZXIyLFxuICBJc0Nsb25lUGFnZSxcbiAgSXNTaG93UGFnZSxcbiAgT2JqZWN0VG9BcnJheVBpcGUsXG4gIFJlZnJlc2hlclBpcGUsXG4gIFJlbW92ZVVzZWRPcHRpb25zUGlwZSxcbiAgUmVwbGFjZUFsbFBpcGUsXG4gIFJlc3BvbnNpdmVWYWxQaXBlLFxuICBSb3VuZFBpcGUsXG4gIFNlY29uZHNUb1RpbWVQaXBlLFxuICBTb3J0UGlwZSxcbiAgU3RyQ29uY2F0ZW5hdG9yUGlwZSxcbiAgVG9BbnlBcnJheVBpcGUsXG4gIFRvQW55UGlwZSxcbiAgVHJhbnNsYXRlUGlwZSxcbiAgVHJpbVBpcGUsXG4gIFRyaW1UZXh0UGlwZSxcbiAgVmFsdWVGb3JtYXR0ZXJQaXBlLFxuICBWYWx1ZU9yWFBpcGUsXG4gIFhPcllQaXBlLFxuXTtcbmNvbnN0IG1vZHVsZXMgPSBbXTtcbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIC4uLm1vZHVsZXMsIC4uLmNvbXBzXSxcbiAgZXhwb3J0czogWy4uLmNvbXBzLCAuLi5tb2R1bGVzXSxcbiAgcHJvdmlkZXJzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgVXRpbGl0eVBpcGVzTW9kdWxlIHt9XG4iXX0=
|
|
992
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9waXBlcy91dGlsaXR5LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFJMUUsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEVBQXNCLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRFLE9BQU8sT0FBTyxNQUFNLHFCQUFxQixDQUFDO0FBRTFDLFdBQVc7QUFDWCxPQUFPLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7O0FBRWpFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUs3QixNQUFNLE9BQU8sYUFBYTtJQUN4QixTQUFTLENBQUksR0FBUSxFQUFFLFNBQWlCLEVBQUUsVUFBa0IsRUFBRSxRQUFpQjtRQUM3RSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNwRCxDQUFDOzhHQUhVLGFBQWE7NEdBQWIsYUFBYTs7MkZBQWIsYUFBYTtrQkFKekIsSUFBSTttQkFBQztvQkFDSixJQUFJ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LEVBMGFWLGlCQUFpQixFQXZQakIsYUFBYSxFQStNYixxQkFBcUIsRUFsSXJCLGNBQWMsRUEyTGQsaUJBQWlCLEVBcHNCakIsU0FBUyxFQVlULGlCQUFpQixFQStZakIsUUFBUSxFQXlJUixtQkFBbUIsRUEvRW5CLGNBQWMsRUFWZCxTQUFTLEVBK1RwQixhQUFhLEVBM1NGLFFBQVEsRUFlUixZQUFZLEVBcldaLGtCQUFrQixFQTBZbEIsWUFBWSxFQXJCWixRQUFROytHQXlSUixrQkFBa0IsWUFKbkIsWUFBWSxFQUFLLE9BQU87OzJGQUl2QixrQkFBa0I7a0JBTDlCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDO29CQUM3QyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQztvQkFDL0IsU0FBUyxFQUFFLEVBQUU7aUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUsIERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUsIE5nTW9kdWxlLCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vU2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IEVQYWdlVHlwZSwgSVRhYmxlQ29sLCBUeXBlT2YgfSBmcm9tICcuLi9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyLCBCcmVha3BvaW50cyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgSUZvcm1TY2hlbWEgfSBmcm9tICcuLi9tb2RlbHMvZm9ybS1zY2hlbWEubW9kZWwnO1xuaW1wb3J0IFRpbWVBZ28gZnJvbSAnamF2YXNjcmlwdC10aW1lLWFnbyc7XG5cbi8vIEVuZ2xpc2guXG5pbXBvcnQgZW4gZnJvbSAnamF2YXNjcmlwdC10aW1lLWFnby9sb2NhbGUvZW4nO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBJVGV4dENhc2UyIH0gZnJvbSAnLi4vY29tcG9uZW50cy90ZXh0LWNhc2UtMi90ZXh0LWNhc2UtMi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4vdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgRVZGdW5jdGlvbnMgfSBmcm9tICcuLi8uLi9jb25maWdzL2Jhc2UtZnVuY3Rpb25zJztcbmltcG9ydCB7IEZvcm1JbnZhbGlkQ2xhc3NQaXBlIH0gZnJvbSAnLi9mb3JtLWludmFsaWQtY2xhc3MucGlwZSc7XG5cblRpbWVBZ28uYWRkRGVmYXVsdExvY2FsZShlbik7XG5AUGlwZSh7XG4gIG5hbWU6ICdhcnJheVNwbGl0dGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQXJyYXlTcGxpdHRlciBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm08VD4oYXJyOiBUW10sIGFyckxlbmd0aDogbnVtYmVyLCBzdGFydEluZGV4OiBudW1iZXIsIGVuZEluZGV4PzogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGFyciA/IGFyci5zbGljZShzdGFydEluZGV4LCBlbmRJbmRleCkgOiBbXTtcbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdnZW5kZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBHZW5kZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHZhbHVlID09ICdNJyA/ICdNYWxlJyA6IHZhbHVlID09ICdGJyA/ICdGZW1hbGUnIDogdmFsdWU7XG4gIH1cbn1cbkBQaXBlKHtcbiAgbmFtZTogJ3JvdW5kJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgUm91bmRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIC8qKlxuICAgKiBVc2UgdGhlIE1hdGgucm91bmQgZnVuY3Rpb25cbiAgICovXG4gIHRyYW5zZm9ybSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQodmFsdWUpO1xuICB9XG59XG5AUGlwZSh7XG4gIG5hbWU6ICdzZWNvbmRzVG9UaW1lJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgU2Vjb25kc1RvVGltZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCB0aW1lTGVmdCA9IHRoaXMudVMuc2Vjb25kc1RvSG91ck1pblNlYyh2YWx1ZSk7XG4gICAgcmV0dXJuIGAke3RpbWVMZWZ0LmhvdXJzID8gdGltZUxlZnQuaG91cnMgKyAnaHJzJyA6ICcnfVxuICAke3RpbWVMZWZ0Lm1pbnMgPyB0aW1lTGVmdC5taW5zICsgJ21pbicgOiAnJ30gJHt0aW1lTGVmdC5zZWNzID8gdGltZUxlZnQuc2VjcyArICdzJyA6ICcnfWA7XG4gIH1cbiAgY29uc3RydWN0b3IocHVibGljIHVTOiBVdGlsaXR5U2VydmljZSkge31cbn1cbmNvbnN0IHRpbWVBZ28gPSBuZXcgVGltZUFnbygnZW4tVVMnKTtcbkBQaXBlKHsgbmFtZTogJ2N1c3RvbURhdGUnLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tRGF0ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKGRhdGU6IHN0cmluZywgc2hvd1RpbWUgPSBmYWxzZSkge1xuICAgIHJldHVybiB0aW1lQWdvLmZvcm1hdChuZXcgRGF0ZShkYXRlKSk7XG4gIH1cbiAgdHJhbnNmb3JtMihkYXRlOiBzdHJpbmcsIGZvcm1hdFN0cjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsIGZvcm1hdFN0cik7XG4gIH1cbiAgY29uc3RydWN0b3IocHVibGljIGRhdGVQaXBlOiBEYXRlUGlwZSkge31cbn1cblxuQFBpcGUoe1xuICBuYW1lOiAnaGFzVmFsdWUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBIYXNWYWx1ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgZmllbGRzIGluIGEgb2JqZWN0IGhhcyBhbnkgdmFsdWVcbiAgICovXG4gIHRyYW5zZm9ybTxUPih2YWx1ZTogVCwgZmllbGRzVG9DaGVja0Zvcj86IChrZXlvZiBUKVtdKTogYm9vbGVhbiB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgcmV0dXJuIGZpZWxkc1RvQ2hlY2tGb3I/Lmxlbmd0aCA/IGZpZWxkc1RvQ2hlY2tGb3Iuc29tZSgoeCkgPT4gISF2YWx1ZVt4XSkgOiAhaXNFbXB0eSh2YWx1ZSk7XG4gIH1cbn1cblxuQFBpcGUoe1xuICBuYW1lOiAnY29kZVRpdGxlRGVzYycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIENvZGVUaXRsZURlc2NQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybShcbiAgICBjb2RlVGl0bGVBcnJheToge1xuICAgICAgY29kZTogc3RyaW5nO1xuICAgICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICB9W10sXG4gICAgY29kZTogc3RyaW5nLFxuICApOiBzdHJpbmcge1xuICAgIGlmICghY29kZSkgcmV0dXJuICcnO1xuICAgIGxldCBmb3VuZE9iaiA9IGNvZGVUaXRsZUFycmF5Py5maW5kKCh4KSA9PiB4LmNvZGUgPT09IGNvZGUpO1xuXG4gICAgcmV0dXJuIEVWRnVuY3Rpb25zLnN0ckNvbmNhdGVuYXRvcjIoY29kZSwgZm91bmRPYmo/LmRlc2NyaXB0aW9uIHx8IGZvdW5kT2JqPy50aXRsZSwgJyAtICcpO1xuICB9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2hhc0Zvcm1WYWx1ZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEhhc0Zvcm1WYWx1ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgZmllbGRzIGluIGEgZm9ybWdyb3VwIG9iamVjdCBoYXMgYW55IHZhbHVlXG4gICAqL1xuICB0cmFuc2Zvcm08VFZhbHVlLCBURm9ybSBleHRlbmRzIHsgZ2V0UmF3VmFsdWU6ICgpID0+IFRWYWx1ZSB9Pihmb3JtR3JvdXA6IFRGb3JtLCBmaWVsZHNUb0NoZWNrRm9yPzogKGtleW9mIFRWYWx1ZSlbXSwgcmVmcmVzaGVyPyk6IGJvb2xlYW4ge1xuICAgIC8vIGNvbnNvbGUubG9nKCd2YWwnKTtcbiAgICBpZiAoIWZvcm1Hcm91cCkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IHZhbCA9IGZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpO1xuICAgIHJldHVybiAoZmllbGRzVG9DaGVja0Zvcj8ubGVuZ3RoID8gZmllbGRzVG9DaGVja0ZvciA6IE9iamVjdC5rZXlzKHZhbCkpLnNvbWUoKHgpID0+IHZhbFt4XSAhPSBudWxsKTtcbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdvYmplY3RUb0xhYmVscycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE9iamVjdFRvTGFiZWxzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAvKipcbiAgICogQ29udmVydHMgYSBvYmplY3QgdG8gYW4gYXJyYXkgb2YgbGFiZWxzXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKiBAcGFyYW0gY3VzdG9tRmllbGRNYXBcbiAgICogQHJldHVybnNcbiAgICovXG4gIHRyYW5zZm9ybTxUPih2YWx1ZTogVCwgY3VzdG9tRmllbGRNYXA/OiB7IFtrIGluIGtleW9mIFRdOiBQYXJ0aWFsPElUZXh0Q2FzZTI+IH0sIGV4Y2x1c2lvbkxpc3Q/OiB7IFt4OiBzdHJpbmddOiBib29sZWFuIH0pOiBJVGV4dENhc2UyW10ge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGNvbnN0IF9leGNsdXNpb25MaXN0OiB7IFt4OiBzdHJpbmddOiBib29sZWFuIH0gPSB7XG4gICAgICBpZDogdHJ1ZSxcbiAgICAgIC4uLmV4Y2x1c2lvbkxpc3QsXG4gICAgfTtcblxuICAgIHJldHVybiBPYmplY3Qua2V5cyh2YWx1ZSB8fCB7fSlcbiAgICAgIC5maWx0ZXIoKHgpID0+ICFfZXhjbHVzaW9uTGlzdFt4XSlcbiAgICAgIC5tYXAoKGYpID0+ICh7XG4gICAgICAgIC4uLmN1c3RvbUZpZWxkTWFwPy5bZl0sXG4gICAgICAgIGxhYmVsOiBjdXN0b21GaWVsZE1hcD8uW2ZdPy5sYWJlbCB8fCB0aGlzLnVTLmZvcm1hdEZpZWxkKGYpLFxuICAgICAgICB2YWx1ZTogdmFsdWVbZl0sXG4gICAgICB9KSk7XG4gIH1cbiAgY29uc3RydWN0b3IocHVibGljIHVTOiBVdGlsaXR5U2VydmljZSkge31cbn1cblxuQFBpcGUoe1xuICBuYW1lOiAnZ2V0VmFsdWVMYWJlbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEdldFZhbHVlTGFiZWwgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgc3RyaW5nIGludG8gYSBTZWxlY3Qgb3B0aW9uXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvciBpbiB0aGUgb3B0aW9ucyBsaXN0XG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBsaXN0IG9mIGl0ZW1zIHRvIHNlYXJjaCBpblxuICAgKiBAcGFyYW0gbGFiZWxGaWVsZCBUaGUgZmllbGQgdGhhdCBob2xkcyB0aGUgZGVzY3JpcHRpb24gZmllbGRcbiAgICogQHBhcmFtIHZhbHVlRmllbGQgVGhlIGZpZWxkIHRoYXQgaG9sZHMgdGhlIHZhbHVlIGZpZWxkXG4gICAqIEByZXR1cm5zIEEgY29uY2F0ZW5hdGlvbiBvZiB0aGUgdmFsdWUgYW5kIGRlc2NyaXB0aW9uICh2YWx1ZSAtIGRlc2NyaXB0aW9uKVxuICAgKi9cbiAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcsIG9wdGlvbnM6IGFueVtdLCBsYWJlbEZpZWxkID0gJ2Rlc2NyaXB0aW9uJywgdmFsdWVGaWVsZCA9ICdjb2RlJyk6IHN0cmluZyB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuICcnO1xuICAgIGlmICghb3B0aW9ucykgcmV0dXJuIHZhbHVlO1xuICAgIGNvbnN0IGl0ZW0gPSBvcHRpb25zLmZpbmQoKHgpID0+IHhbdmFsdWVGaWVsZF0gPT0gdmFsdWUpO1xuICAgIGlmICghaXRlbSkgcmV0dXJuIHZhbHVlO1xuICAgIHJldHVybiB2YWx1ZSArICcgLSAnICsgaXRlbVtsYWJlbEZpZWxkXSB8fCBpdGVtWyd0aXRsZSddO1xuICB9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3ZhbHVlRm9ybWF0dGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgVmFsdWVGb3JtYXR0ZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGFzeW5jIHRyYW5zZm9ybSh2YWwsIGZvcm1hdHRlcjogYW55KSB7XG4gICAgcmV0dXJuIGZvcm1hdHRlciA/IGZvcm1hdHRlcih2YWwpIDogdmFsO1xuICB9XG59XG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuY2xhc3MgQ0Z1bmN0aW9uQ2FsbGVyIHtcbiAgLy8gdHJhbnNmb3JtPFQsIFA+KGZ1bmM6ICguLi5hcmdzOiBQW10pID0+IFQsIC4uLmFyZ3M6IFBhcmFtZXRlcnM8dHlwZW9mIGZ1bmM+KSB7XG4gIC8vICAgcmV0dXJuIGZ1bmMgPyBmdW5jKC4uLmFyZ3MpIDogbnVsbDtcbiAgLy8gfVxuXG4gIC8qKlxuICAgKiBDYWxscyBhIGZ1bmN0aW9uIGluIHRoZSB0ZW1wbGF0ZVxuICAgKiBAcGFyYW0gZnVuYyBGdW5jdGlvbiB0byBiZSBjYWxsZWRcbiAgICogQHBhcmFtIGFyZ3NcbiAgICogQHJldHVybnNcbiAgICovXG4gIHRyYW5zZm9ybTxUPihmdW5jOiAoKSA9PiBUKTogVDtcbiAgdHJhbnNmb3JtPFQsIFAxPihmdW5jOiAocGFyYW0xPzogUDEpID0+IFQsIHBhcmFtMTogUDEpOiBUO1xuICB0cmFuc2Zvcm08VCwgUDEsIFAyPihmdW5jOiAocGFyYW0xPzogUDEsIHBhcmFtMj86IFAyKSA9PiBULCBwYXJhbTE6IFAxLCBwYXJhbTI6IFAyKTogVDtcbiAgdHJhbnNmb3JtPFQsIFAxLCBQMiwgUDM+KGZ1bmM6IChwYXJhbTE/OiBQMSwgcGFyYW0yPzogUDIsIHBhcmFtMz86IFAzKSA9PiBULCBwYXJhbTE6IFAxLCBwYXJhbTI6IFAyLCBwYXJhbTM6IFAzKTogVDtcbiAgdHJhbnNmb3JtPFQsIFAxLCBQMiwgUDM+KGZ1bmM6IChwYXJhbTE/OiBQMSwgcGFyYW0yPzogUDIsIHBhcmFtMz86IFAzKSA9PiBULCBwYXJhbTE/OiBQMSwgcGFyYW0yPzogUDIsIHBhcmFtMz86IFAzKSB7XG4gICAgcmV0dXJuIGZ1bmMgPyBmdW5jKHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpIDogbnVsbDtcbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdmdW5jdGlvbkNhbGxlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEZ1bmN0aW9uQ2FsbGVyIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIC8vIC8qKlxuICAvLyAgKiBDYWxscyBhIGZ1bmN0aW9uIGluIHRoZSB0ZW1wbGF0ZVxuICAvLyAgKiBAcGFyYW0gZnVuYyBGdW5jdGlvbiB0byBiZSBjYWxsZWRcbiAgLy8gICogQHBhcmFtIGFyZ3NcbiAgLy8gICogQHJldHVybnNcbiAgLy8gICovXG4gIC8vIHRyYW5zZm9ybTxUPihmdW5jOiAoKSA9PiBUKTogVDtcbiAgLy8gdHJhbnNmb3JtPFQsIFAxPihmdW5jOiAocGFyYW0xPzogUDEpID0+IFQsIHBhcmFtMTogUDEpOiBUO1xuICAvLyB0cmFuc2Zvcm08VCwgUDEsIFAyPihmdW5jOiAocGFyYW0xPzogUDEsIHBhcmFtMj86IFAyKSA9PiBULCBwYXJhbTE6IFAxLCBwYXJhbTI6IFAyKTogVDtcbiAgLy8gdHJhbnNmb3JtPFQsIFAxLCBQMiwgUDM+KFxuICAvLyAgIGZ1bmM6IChwYXJhbTE/OiBQMSwgcGFyYW0yPzogUDIsIHBhcmFtMz86IFAzKSA9PiBULFxuICAvLyAgIHBhcmFtMTogUDEsXG4gIC8vICAgcGFyYW0yOiBQMixcbiAgLy8gICBwYXJhbTM6IFAzXG4gIC8vICk6IFQ7XG4gIC8vIHRyYW5zZm9ybTxULCBQMSwgUDIsIFAzPihcbiAgLy8gICBmdW5jOiAocGFyYW0xPzogUDEsIHBhcmFtMj86IFAyLCBwYXJhbTM/OiBQMykgPT4gVCxcbiAgLy8gICBwYXJhbTE/OiBQMSxcbiAgLy8gICBwYXJhbTI/OiBQMixcbiAgLy8gICBwYXJhbTM/OiBQM1xuICAvLyApIHtcbiAgLy8gLy8gdHJhbnNmb3JtPFQsIFA+KGZ1bmM6ICguLi5hcmdzOiBQW10pID0+IFQsIC4uLmFyZ3M6IFBhcmFtZXRlcnM8dHlwZW9mIGZ1bmM+KSB7XG4gIC8vICAgcmV0dXJuIGZ1bmMgPyBmdW5jKC4uLmFyZ3MpIDogbnVsbDtcbiAgLy8gfVxuICAvLyBjb25zdHJ1Y3RvcigpIHtcbiAgLy8gICBjb25zdCBmID0gKGE6IHN0cmluZywgYjpudW1iZXIpID0+IHt9O1xuICAvLyAgIHRoaXMudHJhbnNmb3JtKGYsICB7IGQ6NDQgfSwnZGRkJywpO1xuICAvLyB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIGY6IENGdW5jdGlvbkNhbGxlcikge1xuICAgIC8vIGNvbnN0IGZzID0gKCApID0+IHt9O1xuICAgIC8vIHRoaXMudHJhbnNmb3JtKGZzKTtcbiAgfVxuICB0cmFuc2Zvcm0gPSB0aGlzLmYudHJhbnNmb3JtO1xufVxuQFBpcGUoe1xuICBuYW1lOiAnZnVuY3Rpb25DYWxsZXIxJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25DYWxsZXIxIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBmOiBDRnVuY3Rpb25DYWxsZXIpIHt9XG4gIHRyYW5zZm9ybSA9IHRoaXMuZi50cmFuc2Zvcm07XG59XG5AUGlwZSh7XG4gIG5hbWU6ICdmdW5jdGlvbkNhbGxlcjInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBGdW5jdGlvbkNhbGxlcjIgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IocHVibGljIGY6IENGdW5jdGlvbkNhbGxlcikge31cbiAgdHJhbnNmb3JtID0gdGhpcy5mLnRyYW5zZm9ybTtcbn1cbkBQaXBlKHtcbiAgbmFtZTogJ2Z1bmN0aW9uQ2FsbGVyMycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEZ1bmN0aW9uQ2FsbGVyMyBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZjogQ0Z1bmN0aW9uQ2FsbGVyKSB7fVxuICB0cmFuc2Zvcm0gPSB0aGlzLmYudHJhbnNmb3JtO1xufVxuQFBpcGUoe1xuICBuYW1lOiAnaHR0cExpc3RDYWxsZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBIdHRwTGlzdENhbGxlciBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAvLyB0cmFuc2Zvcm08VD4oaHR0cE9ic2VydmFibGU6IGFueSkge1xuICB0cmFuc2Zvcm08VD4oaHR0cE9ic2VydmFibGU6ICgpID0+IE9ic2VydmFibGU8VD4pIHtcbiAgICAvLyBjb25zb2xlLmxvZygncmFuIGZ1bmN0aW9uQ2FsbGVyJywgaHR0cE9ic2VydmFibGUpO1xuICAgIHJldHVybiBodHRwT2JzZXJ2YWJsZSgpO1xuICB9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2h0dHBMaXN0Q2FsbGVyMScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEh0dHBMaXN0Q2FsbGVyMSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm08VD4oaHR0cE9ic2VydmFibGU6IChwYXJhbTogYW55KSA9PiBPYnNlcnZhYmxlPFQ+LCBwYXJhbTogYW55KSB7XG4gICAgLy8gY29uc29sZS5sb2coJ3JhbiBmdW5jdGlvbkNhbGxlcjEnLCBodHRwT2JzZXJ2YWJsZSk7XG4gICAgcmV0dXJuIGh0dHBPYnNlcnZhYmxlKHBhcmFtKTtcbiAgICAvLyByZXR1cm4gcGFyYW0gPyBodHRwT2JzZXJ2YWJsZShwYXJhbSkgOiBudWxsO1xuICB9XG59XG5AUGlwZSh7XG4gIG5hbWU6ICdodHRwTGlzdENhbGxlcjInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBIdHRwTGlzdENhbGxlcjIgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtPFQ+KGh0dHBPYnNlcnZhYmxlOiAocGFyYW0xOiBzdHJpbmcsIHBhcmFtMjogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPFQ+LCBwYXJhbTE6IHN0cmluZywgcGFyYW0yOiBzdHJpbmcpIHtcbiAgICAvLyBjb25zb2xlLmxvZygncmFuIGh0dHBMaXN0Q2FsbGVyMicsIGh0dHBPYnNlcnZhYmxlKTtcbiAgICByZXR1cm4gaHR0cE9ic2VydmFibGUocGFyYW0xLCBwYXJhbTIpO1xuICAgIC8vIHJldHVybiBwYXJhbTEgPyAocGFyYW0yID8gaHR0cE9ic2VydmFibGUocGFyYW0xLCBwYXJhbTIpIDogbnVsbCkgOiBudWxsO1xuICB9XG59XG5AUGlwZSh7XG4gIG5hbWU6ICdpc1Nob3dQYWdlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgSXNTaG93UGFnZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odHlwZTogRVBhZ2VUeXBlKSB7XG4gICAgcmV0dXJuIHR5cGUgPT0gRVBhZ2VUeXBlLnNob3dQYWdlID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG59XG5AUGlwZSh7XG4gIG5hbWU6ICdpc0Nsb25lUGFnZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIElzQ2xvbmVQYWdlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh0eXBlOiBFUGFnZVR5cGUpIHtcbiAgICByZXR1cm4gdHlwZSA9PSBFUGFnZVR5cGUuY2xvbmVQYWdlID8gdHJ1ZSA6IG51bGw7XG4gIH1cbn1cblxuQFBpcGUoe1xuICBuYW1lOiAnZmlsdGVyQXJyYXknLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJBcnJheVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBhcnIgQXJyYXkgb2YgaXRlbXMgdG8gZmlsdGVyXG4gICAqIEBwYXJhbSB2YWx1ZSBGaWx0ZXIgdmFsdWVcbiAgICogQHBhcmFtIGZpbHRlckZ1bmN0aW9uIEZpbHRlciBmdW5jdGlvbiB0byBwYXNzIGluIGl0ZXJhdG9yXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICB0cmFuc2Zvcm08VCBleHRlbmRzIHsgW3g6IHN0cmluZ106IGFueSB9PihcbiAgICBhcnI6IFRbXSxcbiAgICB2YWx1ZTogeyBbeCBpbiBrZXlvZiBQYXJ0aWFsPFQ+XTogYW55IH0sXG4gICAgZmlsdGVyRnVuY3Rpb24/OiAodmFsdWU6IFQsIGluZGV4PzogbnVtYmVyLCBhcnJheT86IFRbXSkgPT4gYm9vbGVhbixcbiAgKSB7XG4gICAgLy8gcmV0dXJuIHRoaXMudVMudGltZUNvZGVCbG9jaygnaW5saW5lIGNvbXBhcmlzb24nLCAoKSA9PiB7XG4gICAgaWYgKHZhbHVlID09IG51bGwgfHwgIU9iamVjdC52YWx1ZXModmFsdWUpLmZpbHRlcigoeCkgPT4geCkubGVuZ3RoIHx8ICFhcnIgfHwgIWFyci5sZW5ndGgpIHJldHVybiBhcnI7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgaWYgKGZpbHRlckZ1bmN0aW9uKSByZXR1cm4gYXJyLmZpbHRlcihmaWx0ZXJGdW5jdGlvbik7XG5cbiAgICAvLyNyZWdpb24gaGFuZGxlIGZpbHRlciB2YWx1ZVxuICAgIGNvbnN0IHZhbHVlTWFwOiB7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICAgIHZhbHVlOiBzdHJpbmcgfCBib29sZWFuIHwgbnVtYmVyO1xuICAgICAgdHlwZTogVHlwZU9mO1xuICAgIH1bXSA9IFtdO1xuICAgIGZvciAoY29uc3Qga2V5IGluIHZhbHVlKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpICYmIHZhbHVlW2tleV0gIT0gbnVsbCkge1xuICAgICAgICBjb25zdCB2YWwgPSB7IGtleSwgdmFsdWU6IHZhbHVlW2tleV0sIHR5cGU6IHR5cGVvZiB2YWx1ZVtrZXldIH07XG4gICAgICAgIGlmICh2YWwudHlwZSA9PSAnZnVuY3Rpb24nIHx8IHZhbC50eXBlID09ICdvYmplY3QnKSBjb250aW51ZTtcbiAgICAgICAgaWYgKHZhbC50eXBlID09ICdzdHJpbmcnKSB2YWwudmFsdWUgPSAodmFsLnZhbHVlIGFzIHN0cmluZyk/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHZhbHVlTWFwLnB1c2godmFsKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICBjb25zdCByZXMgPSBhcnIuZmlsdGVyKCh4KSA9PiB7XG4gICAgICBjb25zdCBmb3JtR29ydXBWYWx1ZSA9IHg7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiB2YWx1ZU1hcCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKGtleS50eXBlID09ICdzdHJpbmcnICYmIChmb3JtR29ydXBWYWx1ZVtrZXkua2V5XSBhcyBzdHJpbmcpPy50b0xvd2VyQ2FzZSgpPy5pbmNsdWRlcyhrZXkudmFsdWUgYXMgc3RyaW5nKSkgfHxcbiAgICAgICAgICBmb3JtR29ydXBWYWx1ZVtrZXkua2V5XSA9PSBrZXkudmFsdWVcbiAgICAgICAgKVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuICAgIC8vIGNvbnNvbGUubG9nKHJlcylcbiAgICByZXR1cm4gcmVzO1xuICAgIC8vIH0pO1xuICB9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2ZpbHRlckZvcm1BcnJheUdyb3VwJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyRm9ybUFycmF5R3JvdXBQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gYXJyIEFycmF5IG9mIEZvcm1Hcm91cHMgdG8gZmlsdGVyXG4gICAqIEBwYXJhbSB2YWx1ZSBGaWx0ZXIgdmFsdWVcbiAgICogQHBhcmFtIGZpbHRlckZ1bmN0aW9uIEZpbHRlciBmdW5jdGlvbiB0byBwYXNzIGluIGl0ZXJhdG9yXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICB0cmFuc2Zvcm08VEdyb3VwIGV4dGVuZHMgRm9ybUdyb3VwPihcbiAgICBhcnI6IFRHcm91cFtdLFxuICAgIHZhbHVlOiB7IFt4OiBzdHJpbmddOiBzdHJpbmcgfCBib29sZWFuIHwgbnVtYmVyIH0sXG4gICAgZmlsdGVyRnVuY3Rpb24/OiAodmFsdWU6IFRHcm91cCwgaW5kZXg/OiBudW1iZXIsIGFycmF5PzogVEdyb3VwW10pID0+IGJvb2xlYW4sXG4gICkge1xuICAgIC8vIHJldHVybiB0aGlzLnVTLnRpbWVDb2RlQmxvY2soJ2lubGluZSBjb21wYXJpc29uJywgKCkgPT4ge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8ICFPYmplY3QudmFsdWVzKHZhbHVlKS5maWx0ZXIoKHgpID0+IHgpLmxlbmd0aCB8fCAhYXJyIHx8ICFhcnIubGVuZ3RoKSByZXR1cm4gYXJyO1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmIChmaWx0ZXJGdW5jdGlvbikgcmV0dXJuIGFyci5maWx0ZXIoZmlsdGVyRnVuY3Rpb24pO1xuXG4gICAgY29uc3QgdmFsdWVNYXA6IHtcbiAgICAgIGtleTogc3RyaW5nO1xuICAgICAgdmFsdWU6IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXI7XG4gICAgICB0eXBlOiBUeXBlT2Y7XG4gICAgfVtdID0gW107XG4gICAgZm9yIChjb25zdCBrZXkgaW4gdmFsdWUpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkgJiYgdmFsdWVba2V5XSAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHsga2V5LCB2YWx1ZTogdmFsdWVba2V5XSwgdHlwZTogdHlwZW9mIHZhbHVlW2tleV0gfTtcbiAgICAgICAgaWYgKHZhbC50eXBlID09ICdmdW5jdGlvbicgfHwgdmFsLnR5cGUgPT0gJ29iamVjdCcpIGNvbnRpbnVlO1xuICAgICAgICBpZiAodmFsLnR5cGUgPT0gJ3N0cmluZycpIHZhbC52YWx1ZSA9ICh2YWwudmFsdWUgYXMgc3RyaW5nKT8udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgdmFsdWVNYXAucHVzaCh2YWwpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByZXMgPSBhcnIuZmlsdGVyKCh4OiBGb3JtR3JvdXApID0+IHtcbiAgICAgIGNvbnN0IGZvcm1Hb3J1cFZhbHVlID0geC5nZXRSYXdWYWx1ZSgpO1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgdmFsdWVNYXApIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChrZXkudHlwZSA9PSAnc3RyaW5nJyAmJiAoZm9ybUdvcnVwVmFsdWVba2V5LmtleV0gYXMgc3RyaW5nKT8udG9Mb3dlckNhc2UoKT8uaW5jbHVkZXMoa2V5LnZhbHVlIGFzIHN0cmluZykpIHx8XG4gICAgICAgICAgZm9ybUdvcnVwVmFsdWVba2V5LmtleV0gPT0ga2V5LnZhbHVlXG4gICAgICAgIClcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgICAvLyBjb25zb2xlLmxvZyhyZXMpXG4gICAgcmV0dXJuIHJlcztcbiAgICAvLyB9KTtcbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdmaWx0ZXJGb3JtQXJyYXlDb250cm9sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyRm9ybUFycmF5Q29udHJvbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBhcnIgQXJyYXkgb2YgRm9ybUdyb3VwcyB0byBmaWx0ZXJcbiAgICogQHBhcmFtIHZhbHVlIEZpbHRlciB2YWx1ZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgdHJhbnNmb3JtPFRDb250cm9sIGV4dGVuZHMgQWJzdHJhY3RDb250cm9sPGFueT4gPSBhbnk+KGFycjogVENvbnRyb2xbXSwgdmFsdWU6IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCB8fCAhYXJyIHx8ICFhcnIubGVuZ3RoKSByZXR1cm4gYXJyO1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIHJldHVybiBhcnIuZmlsdGVyKCh4KSA9PiB4LnZhbHVlID09IHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1UzogVXRpbGl0eVNlcnZpY2UpIHt9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3NvcnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBTb3J0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGFyclxuICAgKiBAcGFyYW0gZGlyZWN0aW9uIDAgLSBhc2NlbmRpbmcgb3JkZXIuIDEgLSBkZXNjZW5kaW5nIG9yZGVyXG4gICAqIEBwYXJhbSBzb3J0RmllbGRcbiAgICogQHJldHVybnNcbiAgICovXG4gIHRyYW5zZm9ybTxUPihhcnI6IFRbXSwgZGlyZWN0aW9uOiAwIHwgMSA9IDAsIHNvcnRGaWVsZD86IGtleW9mIFQpIHtcbiAgICAvLyAgICBjb25zb2xlLmxvZygnU09SVFRFUicsIGFyciwgZGlyZWN0aW9uLCBzb3J0RmllbGQpO1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmICghYXJyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKGRpcmVjdGlvbiA+IC0xICYmIGRpcmVjdGlvbiA8IDIpIHtcbiAgICAgIHJldHVybiB0aGlzLnNvcnQoYXJyLCBkaXJlY3Rpb24sIHNvcnRGaWVsZCBhcyBhbnkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYXJyO1xuICAgIH1cbiAgfVxuICBzb3J0PFQ+KGFycjogVFtdLCBkaXJlY3Rpb246IDAgfCAxLCBzb3J0RmllbGQ/OiBzdHJpbmcpIHtcbiAgICBpZiAoc29ydEZpZWxkKSB7XG4gICAgICByZXR1cm4gYXJyLnNvcnQzKHNvcnRGaWVsZCBhcyBhbnksIGRpcmVjdGlvbiA/IHRydWUgOiBmYWxzZSkgYXMgVFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYXJyLnNvcnQoKHg6IGFueSwgeTogYW55KSA9PiAoZGlyZWN0aW9uID8geSAtIHggOiB4IC0geSkpO1xuICAgIH1cbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdyZWZyZXNoZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBSZWZyZXNoZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgdmFsdWUgd2hlbiB0aGUgcmVmcmVzaGVyIHZhbHVlIGNoYW5nZXNcbiAgICogQHBhcmFtIHZhbHVlIFZhbHVlIHRvIGJlIHJldHVybmVkXG4gICAqIEBwYXJhbSByZWZyZXNoZXIgUmVmcmVzaGVyIHZhbHVlIGZvciB1cGRhdGluZyB0aGUgdmFsdWVcbiAgICogQHJldHVybnNcbiAgICovXG4gIHRyYW5zZm9ybTxUPih2YWx1ZTogVCwgcmVmcmVzaGVyPzogYW55KSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG5AUGlwZSh7XG4gIG5hbWU6ICd0b0FueScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFRvQW55UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgaXNBcnJheSA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIGlzQXJyYXkgPyAodmFsdWUgYXMgYW55W10pIDogdmFsdWU7XG4gIH1cbn1cblxuQFBpcGUoe1xuICBuYW1lOiAndG9BbnlBcnJheScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFRvQW55QXJyYXlQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIHZhbHVlIGFzIGFueVtdO1xuICB9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3RyaW0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBUcmltUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAvKipcbiAgICogVHJpbXMgYSBzdHJpbmdcbiAgICogQHBhcmFtIHZhbHVlIFN0cmluZyB0byB0cmltXG4gICAqIEByZXR1cm5zIFRyaW1tZWQgc3RyaW5nXG4gICAqL1xuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZykge1xuICAgIHJldHVybiB2YWx1ZT8udHJpbSgpO1xuICB9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3RyaW1UZXh0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgVHJpbVRleHRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIC8qKlxuICAgKiBUcmltcyBhIHN0cmluZyBiYXNlZCBvbiBhIHNwZWNpZmllZCBsZW5ndGhcbiAgICogQHBhcmFtIHZhbHVlIFN0cmluZyB0byB0cmltXG4gICAqIEBwYXJhbSBsZW5ndGggTGVuZ3RoIHRvIGJlZ2luIHRyaW1taW5nXG4gICAqIEByZXR1cm5zIFRyaW1tZWQgc3RyaW5nXG4gICAqL1xuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgbGVuZ3RoOiBudW1iZXIpIHtcbiAgICByZXR1cm4gIXZhbHVlIHx8IGxlbmd0aCA9PSBudWxsIHx8IHZhbHVlLmxlbmd0aCA8IGxlbmd0aCA/IHZhbHVlIDogdmFsdWUuc3Vic3RyaW5nKDAsIGxlbmd0aCkgKyAnLi4uJztcbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICd4T3JZJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgWE9yWVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKHg6IHN0cmluZywgeSA9ICctJykge1xuICAgIHJldHVybiB0aGlzLnVTLnhPclkoeCwgeSk7XG4gIH1cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB1UzogVXRpbGl0eVNlcnZpY2UpIHt9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3JlcGxhY2VBbGwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBSZXBsYWNlQWxsUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odGV4dDogc3RyaW5nLCBzZWFyY2g6IHN0cmluZywgcmVwbGFjZW1lbnQ6IHN0cmluZykge1xuICAgIHJldHVybiB0ZXh0ID8gdGV4dC5zcGxpdChzZWFyY2gpLmpvaW4ocmVwbGFjZW1lbnQpIDogdGV4dDtcbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICd2YWx1ZU9yWCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFZhbHVlT3JYUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIFZhcmlhYmxlIHRoYXQgaG9sZHMgdGhlIHZhbHVlIHRvIGJlIGNoZWNrZWQgZm9yIGVtcHRpbmVzc1xuICAgKiBAcGFyYW0gcmVwbGFjZW1lbnQgVGhpcyBpcyB0aGUgdmFsdWUgdGhhdCB3aWxsIGJlIHNldCBpZiB0aGUgc3ViamVjdCBmaWVsZCBpcyBlbXB0eVxuICAgKiBAcmV0dXJucyBSZXR1cm4gdGhlIHZhbHVlIG9yIHRoZSByZXBsYWNlbWVudCB2YWx1ZSBpZiB2YWx1ZSBpcyBlbXB0eVxuICAgKi9cbiAgdHJhbnNmb3JtPFQ+KHZhbHVlOiBULCByZXBsYWNlbWVudDogc3RyaW5nID0gJy0nKSB7XG4gICAgLy8gY29uc29sZS5sb2codmFsdWUpXG4gICAgcmV0dXJuIHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT0gdW5kZWZpbmVkID8gcmVwbGFjZW1lbnQgOiB2YWx1ZTtcbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdzdHJDb25jYXRlbmF0b3InLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBTdHJDb25jYXRlbmF0b3JQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybTxUPih0ZXh0MT86IHN0cmluZyB8IG51bGwsIHRleHQyPzogc3RyaW5nIHwgbnVsbCwgam9pbmVyOiBzdHJpbmcgPSAnIC0gJykge1xuICAgIHJldHVybiBFVkZ1bmN0aW9ucy5zdHJDb25jYXRlbmF0b3IyKHRleHQxLCB0ZXh0Miwgam9pbmVyKTtcbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdmb3JtVmFsdWUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtVmFsdWVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybShmb3JtVmFsdWUsIGZvcm1TY2hlbWE/OiBJRm9ybVNjaGVtYVtdKTogc3RyaW5nO1xuICB0cmFuc2Zvcm08VD4oZm9ybVZhbHVlOiBULCBmb3JtU2NoZW1hPzogKGtleW9mIFQpW10pOiBzdHJpbmc7XG4gIHRyYW5zZm9ybTxUPihmb3JtVmFsdWU6IFQsIGZvcm1TY2hlbWE/OiAoSUZvcm1TY2hlbWEgfCBrZXlvZiBUKVtdKTogc3RyaW5nIHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICByZXR1cm4gZm9ybVZhbHVlXG4gICAgICA/IChmb3JtU2NoZW1hPy5sZW5ndGggJiYgdHlwZW9mIGZvcm1TY2hlbWFbMF0gIT0gJ3N0cmluZydcbiAgICAgICAgICA/IGZvcm1TY2hlbWEubWFwKChmaWVsZDogSUZvcm1TY2hlbWEpID0+IHtcbiAgICAgICAgICAgICAgLy8gZGVidWdnZXI7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbCA9XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSA9PSAnc2VsZWN0JyB8fCBmaWVsZC50eXBlID09ICdhdXRvY29tcGxldGUnID8gZmllbGQuc2VsZWN0ZWRPcHRpb25MYWJlbCB8fCBmb3JtVmFsdWVbZmllbGQuZmllbGRdIDogZm9ybVZhbHVlW2ZpZWxkLmZpZWxkXTtcbiAgICAgICAgICAgICAgcmV0dXJuIHZhbCAhPSBudWxsID8gYCR7ZmllbGQubGFiZWx9OiAke3ZhbH1gIDogbnVsbDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgOiAoZm9ybVNjaGVtYSB8fCBPYmplY3Qua2V5cyhmb3JtVmFsdWUpKS5tYXAoKHgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsID0gZm9ybVZhbHVlW3hdO1xuICAgICAgICAgICAgICByZXR1cm4gYCR7dGhpcy51Uy5mb3JtYXRGaWVsZCh4KX06ICR7dmFsICE9IG51bGwgPyB2YWwgOiAnLSd9YDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgICAuZmlsdGVyKCh4KSA9PiB4KVxuICAgICAgICAgIC5qb2luKCdcXG4nKVxuICAgICAgOiAnJztcbiAgfVxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdVM6IFV0aWxpdHlTZXJ2aWNlKSB7fVxufVxuQFBpcGUoe1xuICBuYW1lOiAnZmllbGRUb0xhYmVsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRmllbGRUb0xhYmVsUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oZmllbGROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIHJldHVybiB0aGlzLnVTLmZvcm1hdEZpZWxkKGZpZWxkTmFtZSk7XG4gIH1cbiAgY29uc3RydWN0b3IocHVibGljIHVTOiBVdGlsaXR5U2VydmljZSkge31cbn1cblxuQFBpcGUoeyBuYW1lOiAndHlwZXInLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgVHlwZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybTxUPih2YWx1ZTogYW55LCBzYW1wbGU6IFQpIHtcbiAgICByZXR1cm4gdmFsdWUgYXMgVDtcbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdmaWx0ZXJBcnJheUJ5U3RyaW5nJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyQXJyYXlCeVN0cmluZ1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgLyoqXG4gICAqIEZpbHRlciBhcnJheSB1c2luZyBhIHBpcGVcbiAgICogQHBhcmFtIGFyciBBcnJheSB0byBmaWx0ZXJcbiAgICogQHBhcmFtIHZhbHVlIFZhbHVlIHRvIGZpbHRlciBmb3JcbiAgICogQHBhcmFtIGtleXMgRmllbGRzIHRvIGNoZWNrIGZvciBtYXRjaCBpblxuICAgKiBAcGFyYW0gZmlsdGVyRnVuY3Rpb24gRml0bGVyIGZ1bmN0aW9uIHRvIHVzZSBpbnN0ZWFkIG9mIHZhbHVlIGFuZCBrZXlzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICB0cmFuc2Zvcm08VD4oYXJyOiBUW10sIHZhbHVlOiBzdHJpbmcsIGtleXM6IChrZXlvZiBUKVtdLCBmaWx0ZXJGdW5jdGlvbj86ICh2YWx1ZTogVCwgaW5kZXg/OiBudW1iZXIsIGFycmF5PzogVFtdKSA9PiBib29sZWFuKSB7XG4gICAgaWYgKCFhcnIpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIGFycjtcbiAgICBpZiAoZmlsdGVyRnVuY3Rpb24pIHJldHVybiBhcnIuZmlsdGVyKGZpbHRlckZ1bmN0aW9uKTtcbiAgICBlbHNlIHtcbiAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgY29uc3QgdmwgPSB2YWx1ZT8udG9TdHJpbmcoKT8udHJpbSgpPy50b0xvd2VyQ2FzZSgpO1xuICAgICAgY29uc3QgcmV0OiBUW10gPSBbXTtcbiAgICAgIGNvbnN0IGFkZGVkTWFwOiB7IFtpZDogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG4gICAgICBjb25zdCBpZEZpZWxkID0ga2V5c1swXSBhcyBzdHJpbmc7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBhcnIpIHtcbiAgICAgICAgICBpZiAoYWRkZWRNYXBbaXRlbVtpZEZpZWxkXV0pIGNvbnRpbnVlO1xuICAgICAgICAgIGlmICgoPHN0cmluZz5pdGVtW2tleV0pPy50b1N0cmluZygpPy50b0xvd2VyQ2FzZSgpPy5zdGFydHNXaXRoKHZsKSkge1xuICAgICAgICAgICAgcmV0LnB1c2goaXRlbSk7XG4gICAgICAgICAgICBhZGRlZE1hcFtpdGVtW2lkRmllbGRdXSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBhcnIpIHtcbiAgICAgICAgICBpZiAoYWRkZWRNYXBbaXRlbVtpZEZpZWxkXV0pIGNvbnRpbnVlO1xuICAgICAgICAgIGlmICgoPHN0cmluZz5pdGVtW2tleV0pPy50b1N0cmluZygpPy50b0xvd2VyQ2FzZSgpPy5pbmNsdWRlcyh2bCkpIHtcbiAgICAgICAgICAgIHJldC5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgYWRkZWRNYXBbaXRlbVtpZEZpZWxkXV0gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc29sZS5sb2coJ2ZpbHRlciByZXN1bHQnLCByZXQpO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG4gIH1cbn1cblxuQFBpcGUoeyBuYW1lOiAncmVtb3ZlVXNlZE9wdGlvbnMnLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgUmVtb3ZlVXNlZE9wdGlvbnNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybTxUT3B0aW9uLCBURm9ybUFycmF5PihcbiAgICBhcnI6IFRPcHRpb25bXSxcbiAgICBmb3JtQXJyYXk6IFRGb3JtQXJyYXlbXSxcbiAgICBmb3JtOiBURm9ybUFycmF5LFxuICAgIGFyckZpZWxkTmFtZT86IGtleW9mIFRPcHRpb24sXG4gICAgZm9ybUZpZWxkTmFtZT86IGtleW9mIFRGb3JtQXJyYXksXG4gICk6IFRPcHRpb25bXSB7XG4gICAgaWYgKCFhcnI/Lmxlbmd0aCB8fCAhZm9ybUFycmF5Py5sZW5ndGgpIHJldHVybiBbXTtcbiAgICBpZiAoYXJyRmllbGROYW1lICYmIGZvcm1GaWVsZE5hbWUpXG4gICAgICByZXR1cm4gYXJyLmZpbHRlcihcbiAgICAgICAgKHgpID0+ICFmb3JtQXJyYXkuc29tZSgoZikgPT4gZm9ybVtmb3JtRmllbGROYW1lXSAhPSAoeFthcnJGaWVsZE5hbWVdIGFzIGFueSkgJiYgZltmb3JtRmllbGROYW1lXSA9PSAoeFthcnJGaWVsZE5hbWVdIGFzIGFueSkpLFxuICAgICAgKTtcbiAgICBlbHNlIGlmIChhcnJGaWVsZE5hbWUgJiYgIWZvcm1GaWVsZE5hbWUpIHJldHVybiBhcnIuZmlsdGVyKCh4KSA9PiAhZm9ybUFycmF5LnNvbWUoKGYpID0+IGYgPT0gKHhbYXJyRmllbGROYW1lXSBhcyBhbnkpKSk7XG4gICAgZWxzZSBpZiAoIWFyckZpZWxkTmFtZSAmJiBmb3JtRmllbGROYW1lKSByZXR1cm4gYXJyLmZpbHRlcigoeCkgPT4gIWZvcm1BcnJheS5zb21lKChmKSA9PiBmW2Zvcm1GaWVsZE5hbWVdID09ICh4IGFzIGFueSkpKTtcbiAgICBlbHNlIHJldHVybiBhcnIuZmlsdGVyKCh4KSA9PiBmb3JtQXJyYXkuc29tZSgoZikgPT4gZiA9PSAoeCBhcyBhbnkpKSk7XG4gIH1cbn1cblxuQFBpcGUoeyBuYW1lOiAncmVtb3ZlVXNlZE9wdGlvbnNSZWFjdGl2ZScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBSZW1vdmVVc2VkT3B0aW9uc1JlYWN0aXZlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm08VE9wdGlvbiwgVEZvcm1BcnJheSBleHRlbmRzIHsgdmFsdWU/OiBhbnkgfVtdPihcbiAgICBhcnI6IFRPcHRpb25bXSxcbiAgICBmb3JtQXJyYXk6IFRGb3JtQXJyYXlbXSxcbiAgICBmb3JtOiBURm9ybUFycmF5LFxuICAgIGFyckZpZWxkTmFtZT86IGtleW9mIFRPcHRpb24sXG4gICAgZm9ybUZpZWxkTmFtZT86IGtleW9mIFRGb3JtQXJyYXksXG4gICk6IFRPcHRpb25bXSB7XG4gICAgaWYgKCFhcnI/Lmxlbmd0aCB8fCAhZm9ybUFycmF5Py5sZW5ndGgpIHJldHVybiBbXTtcbiAgICBpZiAoYXJyRmllbGROYW1lICYmIGZvcm1GaWVsZE5hbWUpXG4gICAgICByZXR1cm4gYXJyLmZpbHRlcihcbiAgICAgICAgKHgpID0+ICFmb3JtQXJyYXkuc29tZSgoZikgPT4gZm9ybVtmb3JtRmllbGROYW1lXSAhPSAoeFthcnJGaWVsZE5hbWVdIGFzIGFueSkgJiYgZltmb3JtRmllbGROYW1lXSA9PSAoeFthcnJGaWVsZE5hbWVdIGFzIGFueSkpLFxuICAgICAgKTtcbiAgICBlbHNlIGlmIChhcnJGaWVsZE5hbWUgJiYgIWZvcm1GaWVsZE5hbWUpIHJldHVybiBhcnIuZmlsdGVyKCh4KSA9PiAhZm9ybUFycmF5LnNvbWUoKGYpID0+IGYgPT0gKHhbYXJyRmllbGROYW1lXSBhcyBhbnkpKSk7XG4gICAgZWxzZSBpZiAoIWFyckZpZWxkTmFtZSAmJiBmb3JtRmllbGROYW1lKSByZXR1cm4gYXJyLmZpbHRlcigoeCkgPT4gIWZvcm1BcnJheS5zb21lKChmKSA9PiBmW2Zvcm1GaWVsZE5hbWVdID09ICh4IGFzIGFueSkpKTtcbiAgICBlbHNlIHJldHVybiBhcnIuZmlsdGVyKCh4KSA9PiBmb3JtQXJyYXkuc29tZSgoZikgPT4gZiA9PSAoeCBhcyBhbnkpKSk7XG4gIH1cbn1cblxuQFBpcGUoeyBuYW1lOiAnb2JqZWN0VG9BcnJheScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBPYmplY3RUb0FycmF5UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm08VD4odmFsdWU6IHsgW3g6IHN0cmluZ106IFQgfSk6IFRbXSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModmFsdWUpO1xuICB9XG59XG5cbkBQaXBlKHsgbmFtZTogJ2Zvcm1TY2hlbWFUb0NvbHMnLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgRm9ybVNjaGVtYVRvVGFibGVDb2x1bW5zUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IElGb3JtU2NoZW1hW10pOiBJVGFibGVDb2xbXSB7XG4gICAgcmV0dXJuIHZhbHVlPy5tYXAoKHgpID0+ICh7IGY6IHguZmllbGQsIHQ6IHgubGFiZWwgfSkpIHx8IFtdO1xuICB9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3Jlc3BvbnNpdmVWYWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBSZXNwb25zaXZlVmFsUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAvLyBzdWI6U3Vic2NyaXB0aW9uXG4gIHRyYW5zZm9ybTxUPihjb25maWc6IHtcbiAgICBYU21hbGw/OiBUO1xuICAgIFNtYWxsPzogVDtcbiAgICBNZWRpdW0/OiBUO1xuICAgIExhcmdlPzogVDtcbiAgICBYTGFyZ2U/OiBUO1xuICAgIEhhbmRzZXQ/OiBUO1xuICAgIFRhYmxldD86IFQ7XG4gICAgV2ViPzogVDtcbiAgICBIYW5kc2V0UG9ydHJhaXQ/OiBUO1xuICAgIFRhYmxldFBvcnRyYWl0PzogVDtcbiAgICBXZWJQb3J0cmFpdD86IFQ7XG4gICAgSGFuZHNldExhbmRzY2FwZT86IFQ7XG4gICAgVGFibGV0TGFuZHNjYXBlPzogVDtcbiAgICBXZWJMYW5kc2NhcGU/OiBUO1xuICB9KTogVCB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gY29uZmlnKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywga2V5KSkge1xuICAgICAgICBpZiAodGhpcy5yZXNwb25zaXZlLmlzTWF0Y2hlZChCcmVha3BvaW50c1trZXldKSkgcmV0dXJuIGNvbmZpZ1trZXldO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhjb25maWcpWzBdO1xuICAgIC8vICB0aGlzLnN1Yj0gdGhpcy5yZXNwb25zaXZlLm9ic2VydmUocj0+e1xuXG4gICAgLy8gIH0pXG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gdGhpcy5zdWIuXG4gIH1cbiAgY29uc3RydWN0b3IocHVibGljIHJlc3BvbnNpdmU6IEJyZWFrcG9pbnRPYnNlcnZlcikge31cbn1cblxuY29uc3QgY29tcHMgPSBbXG4gIEFycmF5U3BsaXR0ZXIsXG4gIEN1c3RvbURhdGVQaXBlLFxuICBGaWVsZFRvTGFiZWxQaXBlLFxuICBGaWx0ZXJBcnJheUJ5U3RyaW5nUGlwZSxcbiAgRmlsdGVyQXJyYXlQaXBlLFxuICBGaWx0ZXJGb3JtQXJyYXlHcm91cFBpcGUsXG4gIEZvcm1JbnZhbGlkQ2xhc3NQaXBlLFxuICBGb3JtU2NoZW1hVG9UYWJsZUNvbHVtbnNQaXBlLFxuICBGb3JtVmFsdWVQaXBlLFxuICBGdW5jdGlvbkNhbGxlcixcbiAgRnVuY3Rpb25DYWxsZXIxLFxuICBGdW5jdGlvbkNhbGxlcjIsXG4gIEZ1bmN0aW9uQ2FsbGVyMyxcbiAgR2VuZGVyUGlwZSxcbiAgR2V0VmFsdWVMYWJlbCxcbiAgSGFzRm9ybVZhbHVlUGlwZSxcbiAgSGFzVmFsdWVQaXBlLFxuICBDb2RlVGl0bGVEZXNjUGlwZSxcbiAgSHR0cExpc3RDYWxsZXIsXG4gIEh0dHBMaXN0Q2FsbGVyMSxcbiAgSHR0cExpc3RDYWxsZXIyLFxuICBJc0Nsb25lUGFnZSxcbiAgSXNTaG93UGFnZSxcbiAgT2JqZWN0VG9BcnJheVBpcGUsXG4gIFJlZnJlc2hlclBpcGUsXG4gIFJlbW92ZVVzZWRPcHRpb25zUGlwZSxcbiAgUmVwbGFjZUFsbFBpcGUsXG4gIFJlc3BvbnNpdmVWYWxQaXBlLFxuICBSb3VuZFBpcGUsXG4gIFNlY29uZHNUb1RpbWVQaXBlLFxuICBTb3J0UGlwZSxcbiAgU3RyQ29uY2F0ZW5hdG9yUGlwZSxcbiAgVG9BbnlBcnJheVBpcGUsXG4gIFRvQW55UGlwZSxcbiAgVHJhbnNsYXRlUGlwZSxcbiAgVHJpbVBpcGUsXG4gIFRyaW1UZXh0UGlwZSxcbiAgVmFsdWVGb3JtYXR0ZXJQaXBlLFxuICBWYWx1ZU9yWFBpcGUsXG4gIFhPcllQaXBlLFxuXTtcbmNvbnN0IG1vZHVsZXMgPSBbXTtcbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIC4uLm1vZHVsZXMsIC4uLmNvbXBzXSxcbiAgZXhwb3J0czogWy4uLmNvbXBzLCAuLi5tb2R1bGVzXSxcbiAgcHJvdmlkZXJzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgVXRpbGl0eVBpcGVzTW9kdWxlIHt9XG4iXX0=
|
|
@@ -122,7 +122,7 @@ export var EVFunctions;
|
|
|
122
122
|
path: '',
|
|
123
123
|
data: {
|
|
124
124
|
...route.data,
|
|
125
|
-
title: indexPage
|
|
125
|
+
title: indexPage?.hideTitle ? undefined : indexPage?.title || route.data?.title,
|
|
126
126
|
type: EPageType.indexPage,
|
|
127
127
|
},
|
|
128
128
|
component: indexPage?.component,
|
|
@@ -241,4 +241,4 @@ export var EVFunctions;
|
|
|
241
241
|
}
|
|
242
242
|
EVFunctions.redirectRouteForUM = redirectRouteForUM;
|
|
243
243
|
})(EVFunctions || (EVFunctions = {}));
|
|
244
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mdW5jdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvY29uZmlncy9iYXNlLWZ1bmN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFekQsTUFBTSxLQUFXLFdBQVcsQ0F1UjNCO0FBdlJELFdBQWlCLFdBQVc7SUFDMUIsU0FBZ0IsY0FBYyxDQUM1QixLQUFZLEVBQ1osU0E2Qkc7UUFFSCxPQUFPLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQWxDZSwwQkFBYyxpQkFrQzdCLENBQUE7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW1CRztJQUNILFNBQWdCLFdBQVcsQ0FBQyxLQUFZLEVBQUUsY0FBMEIsRUFBRSxlQUFzQztRQUMxRyxNQUFNLE1BQU0sR0FBVztZQUNyQjtnQkFDRSxJQUFJLEVBQUUsRUFBRTtnQkFDUixJQUFJLEVBQUU7b0JBQ0osR0FBRyxLQUFLLENBQUMsSUFBSTtvQkFDYixLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLO29CQUN4QixJQUFJLEVBQUUsU0FBUyxDQUFDLFNBQVM7aUJBQzFCO2dCQUNELFNBQVMsRUFBRSxjQUFjO2dCQUN6QixZQUFZLEVBQUUsZUFBZTthQUM5QjtZQUNEO2dCQUNFLElBQUksRUFBRSxPQUFPO2dCQUNiLElBQUksRUFBRTtvQkFDSixHQUFHLEtBQUssQ0FBQyxJQUFJO29CQUNiLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUs7b0JBQ3hCLElBQUksRUFBRSxT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IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERlZmF1bHRFeHBvcnQsIExvYWRDaGlsZHJlbkNhbGxiYWNrLCBSb3V0ZSwgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEVQYWdlVHlwZSB9IGZyb20gJy4uL1NoYXJlZC9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuZXhwb3J0IG5hbWVzcGFjZSBFVkZ1bmN0aW9ucyB7XG4gIGV4cG9ydCBmdW5jdGlvbiByb3V0ZVJlZGlyZWN0cyhcbiAgICByb3V0ZTogUm91dGUsXG4gICAgcmVkaXJlY3RzOiB7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBwYXRoIHRvIG1hdGNoIGFnYWluc3QuIENhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggYSBjdXN0b20gYG1hdGNoZXJgIGZ1bmN0aW9uLlxuICAgICAgICogQSBVUkwgc3RyaW5nIHRoYXQgdXNlcyByb3V0ZXIgbWF0Y2hpbmcgbm90YXRpb24uXG4gICAgICAgKiBDYW4gYmUgYSB3aWxkIGNhcmQgKGAqKmApIHRoYXQgbWF0Y2hlcyBhbnkgVVJMIChzZWUgVXNhZ2UgTm90ZXMgYmVsb3cpLlxuICAgICAgICogRGVmYXVsdCBpcyBcIi9cIiAodGhlIHJvb3QgcGF0aCkuXG4gICAgICAgKlxuICAgICAgICovXG4gICAgICBwYXRoOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBwYXRoLW1hdGNoaW5nIHN0cmF0ZWd5LCBvbmUgb2YgJ3ByZWZpeCcgb3IgJ2Z1bGwnLlxuICAgICAgICogRGVmYXVsdCBpcyAncHJlZml4Jy5cbiAgICAgICAqXG4gICAgICAgKiBCeSBkZWZhdWx0LCB0aGUgcm91dGVyIGNoZWNrcyBVUkwgZWxlbWVudHMgZnJvbSB0aGUgbGVmdCB0byBzZWUgaWYgdGhlIFVSTFxuICAgICAgICogbWF0Y2hlcyBhIGdpdmVuIHBhdGggYW5kIHN0b3BzIHdoZW4gdGhlcmUgaXMgYSBjb25maWcgbWF0Y2guIEltcG9ydGFudGx5IHRoZXJlIG11c3Qgc3RpbGwgYmUgYVxuICAgICAgICogY29uZmlnIG1hdGNoIGZvciBlYWNoIHNlZ21lbnQgb2YgdGhlIFVSTC4gRm9yIGV4YW1wbGUsICcvdGVhbS8xMS91c2VyJyBtYXRjaGVzIHRoZSBwcmVmaXhcbiAgICAgICAqICd0ZWFtLzppZCcgaWYgb25lIG9mIHRoZSByb3V0ZSdzIGNoaWxkcmVuIG1hdGNoZXMgdGhlIHNlZ21lbnQgJ3VzZXInLiBUaGF0IGlzLCB0aGUgVVJMXG4gICAgICAgKiAnL3RlYW0vMTEvdXNlcicgbWF0Y2hlcyB0aGUgY29uZmlnXG4gICAgICAgKiBge3BhdGg6ICd0ZWFtLzppZCcsIGNoaWxkcmVuOiBbe3BhdGg6ICc6dXNlcicsIGNvbXBvbmVudDogVXNlcn1dfWBcbiAgICAgICAqIGJ1dCBkb2VzIG5vdCBtYXRjaCB3aGVuIHRoZXJlIGFyZSBubyBjaGlsZHJlbiBhcyBpbiBge3BhdGg6ICd0ZWFtLzppZCcsIGNvbXBvbmVudDogVGVhbX1gLlxuICAgICAgICpcbiAgICAgICAqIFRoZSBwYXRoLW1hdGNoIHN0cmF0ZWd5ICdmdWxsJyBtYXRjaGVzIGFnYWluc3QgdGhlIGVudGlyZSBVUkwuXG4gICAgICAgKiBJdCBpcyBpbXBvcnRhbnQgdG8gZG8gdGhpcyB3aGVuIHJlZGlyZWN0aW5nIGVtcHR5LXBhdGggcm91dGVzLlxuICAgICAgICogT3RoZXJ3aXNlLCBiZWNhdXNlIGFuIGVtcHR5IHBhdGggaXMgYSBwcmVmaXggb2YgYW55IFVSTCxcbiAgICAgICAqIHRoZSByb3V0ZXIgd291bGQgYXBwbHkgdGhlIHJlZGlyZWN0IGV2ZW4gd2hlbiBuYXZpZ2F0aW5nXG4gICAgICAgKiB0byB0aGUgcmVkaXJlY3QgZGVzdGluYXRpb24sIGNyZWF0aW5nIGFuIGVuZGxlc3MgbG9vcC5cbiAgICAgICAqXG4gICAgICAgKi9cbiAgICAgIHBhdGhNYXRjaD86ICdwcmVmaXgnIHwgJ2Z1bGwnO1xuICAgIH1bXSxcbiAgKSB7XG4gICAgcmV0dXJuIFsuLi5yZWRpcmVjdHMubWFwKChyKSA9PiA8Um91dGU+eyAuLi5yLCByZWRpcmVjdFRvOiByb3V0ZS5wYXRoIH0pLCByb3V0ZV07XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBleHRlbmRSb3V0ZTIgaW5zdGVhZFxuICAgKiBAcGFyYW0gcm91dGVcbiAgICogQHBhcmFtIGluZGV4Q29tcG9uZW50XG4gICAqIEBwYXJhbSBpbmRleExhenlNb2R1bGVcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogRVZGdW5jdGlvbnMuZXh0ZW5kUm91dGUoXG4gICAqICB7XG4gICAqICAgICBwYXRoOiAnJyxcbiAgICogICAgIGRhdGE6IHsgdGl0bGU6ICdDUk0gLyBTZXR1cHMgLyBTZWdtZW50JyB9LFxuICAgKiAgICAgbG9hZENoaWxkcmVuOiAoKSA9PiBpbXBvcnQoJy4vY3JlYXRlLXNlZ21lbnQvY3JlYXRlLXNlZ21lbnQubW9kdWxlJylcbiAgICogICAgICAgLnRoZW4oKG0pID0+IG0uQ3JlYXRlU2VnbWVudE1vZHVsZSksXG4gICAqICB9LFxuICAgKiAgbnVsbCxcbiAgICogICgpID0+IGltcG9ydCgnLi9zZWdtZW50cy1pbmRleC9zZWdtZW50cy1pbmRleC5tb2R1bGUnKVxuICAgKiAgICAgLnRoZW4oKG0pID0+IG0uU2VnbWVudHNJbmRleE1vZHVsZSkpO1xuICAgKiBgYGBcbiAgICogQHJldHVybnNcbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBleHRlbmRSb3V0ZShyb3V0ZTogUm91dGUsIGluZGV4Q29tcG9uZW50PzogVHlwZTxhbnk+LCBpbmRleExhenlNb2R1bGU/OiBMb2FkQ2hpbGRyZW5DYWxsYmFjaykge1xuICAgIGNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICAgICAge1xuICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIC4uLnJvdXRlLmRhdGEsXG4gICAgICAgICAgdGl0bGU6IHJvdXRlLmRhdGE/LnRpdGxlLFxuICAgICAgICAgIHR5cGU6IEVQYWdlVHlwZS5pbmRleFBhZ2UsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBvbmVudDogaW5kZXhDb21wb25lbnQsXG4gICAgICAgIGxvYWRDaGlsZHJlbjogaW5kZXhMYXp5TW9kdWxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJ2luZGV4JyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIC4uLnJvdXRlLmRhdGEsXG4gICAgICAgICAgdGl0bGU6IHJvdXRlLmRhdGE/LnRpdGxlLFxuICAgICAgICAgIHR5cGU6IEVQYWdlVHlwZS5pbmRleFBhZ2UsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBvbmVudDogaW5kZXhDb21wb25lbnQsXG4gICAgICAgIGxvYWRDaGlsZHJlbjogaW5kZXhMYXp5TW9kdWxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJ2Nsb25lJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIC4uLnJvdXRlLmRhdGEsXG4gICAgICAgICAgdGl0bGU6IHBhZ2VUaXRsZXIocm91dGUuZGF0YT8udGl0bGUsICdDbG9uZScpLFxuICAgICAgICAgIHR5cGU6IEVQYWdlVHlwZS5jbG9uZVBhZ2UsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBvbmVudDogcm91dGUuY29tcG9uZW50LFxuICAgICAgICBsb2FkQ2hpbGRyZW46IHJvdXRlLmxvYWRDaGlsZHJlbixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBhdGg6ICdjcmVhdGUnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgLi4ucm91dGUuZGF0YSxcbiAgICAgICAgICB0aXRsZTogcGFnZVRpdGxlcihyb3V0ZS5kYXRhPy50aXRsZSwgJ0NyZWF0ZScpLFxuICAgICAgICAgIHR5cGU6IEVQYWdlVHlwZS5jcmVhdGVQYWdlLFxuICAgICAgICB9LFxuICAgICAgICBjb21wb25lbnQ6IHJvdXRlLmNvbXBvbmVudCxcbiAgICAgICAgbG9hZENoaWxkcmVuOiByb3V0ZS5sb2FkQ2hpbGRyZW4sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwYXRoOiAnZWRpdCcsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAuLi5yb3V0ZS5kYXRhLFxuICAgICAgICAgIHRpdGxlOiBwYWdlVGl0bGVyKHJvdXRlLmRhdGE/LnRpdGxlLCAnRWRpdCcpLFxuICAgICAgICAgIHR5cGU6IEVQYWdlVHlwZS5lZGl0UGFnZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29tcG9uZW50OiByb3V0ZS5jb21wb25lbnQsXG4gICAgICAgIGxvYWRDaGlsZHJlbjogcm91dGUubG9hZENoaWxkcmVuLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJ3Nob3cnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgLi4ucm91dGUuZGF0YSxcbiAgICAgICAgICB0aXRsZTogcGFnZVRpdGxlcihyb3V0ZS5kYXRhPy50aXRsZSwgJ1Nob3cnKSxcbiAgICAgICAgICB0eXBlOiBFUGFnZVR5cGUuc2hvd1BhZ2UsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBvbmVudDogcm91dGUuY29tcG9uZW50LFxuICAgICAgICBsb2FkQ2hpbGRyZW46IHJvdXRlLmxvYWRDaGlsZHJlbixcbiAgICAgIH0sXG4gICAgXTtcbiAgICBpZiAoIWluZGV4Q29tcG9uZW50ICYmICFpbmRleExhenlNb2R1bGUpIHtcbiAgICAgIHJvdXRlcy5zcGxpY2UoMCwgMik7XG4gICAgfVxuICAgIHJldHVybiByb3V0ZXM7XG4gIH1cblxuICAvKipcbiAgICogXG4gICAqIEBwYXJhbSByb3V0ZSBcbiAgICogQHBhcmFtIGluZGV4UGFnZSBcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogRVZGdW5jdGlvbnMuZXh0ZW5kUm91dGUyKFxuICAgIHtcbiAgICAgIHBhdGg6ICcnLFxuICAgICAgZGF0YTogeyB0aXRsZTogJyBQcm9jZXNzIEFjdGlvbnMnIH0sXG4gICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PlxuICAgICAgICBpbXBvcnQoJy4vY3JlYXRlLXByb2Nlc3MtYWN0aW9ucy9jcmVhdGUtcHJvY2Vzcy1hY3Rpb25zLmNvbXBvbmVudCcpLnRoZW4oXG4gICAgICAgICAgKGMpID0+IGMuQ3JlYXRlUHJvY2Vzc0FjdGlvbnNDb21wb25lbnRcbiAgICAgICAgKSxcbiAgICB9LFxuICAgIHsgY29tcG9uZW50OiBJbmRleFByb2Nlc3NBY3Rpb25zQ29tcG9uZW50IH1cbiAgKVxuICAgKiBgYGBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gZXh0ZW5kUm91dGUyKFxuICAgIHJvdXRlOiBSb3V0ZSxcbiAgICBpbmRleFBhZ2U/OiB7XG4gICAgICBjb21wb25lbnQ/OiBUeXBlPGFueT47XG4gICAgICBsYXp5Q29tcG9uZW50PzogKCkgPT5cbiAgICAgICAgfCBUeXBlPHVua25vd24+XG4gICAgICAgIHwgT2JzZXJ2YWJsZTxUeXBlPHVua25vd24+IHwgRGVmYXVsdEV4cG9ydDxUeXBlPHVua25vd24+Pj5cbiAgICAgICAgfCBQcm9taXNlPFR5cGU8dW5rbm93bj4gfCBEZWZhdWx0RXhwb3J0PFR5cGU8dW5rbm93bj4+PjtcbiAgICAgIGxhenlNb2R1bGU/OiBMb2FkQ2hpbGRyZW5DYWxsYmFjaztcbiAgICAgIHJlZGlyZWN0VG9JbmRleD86IGJvb2xlYW47XG4gICAgICB0aXRsZT86IHN0cmluZztcbiAgICAgIGhpZGVUaXRsZT86IGJvb2xlYW47XG4gICAgfSxcbiAgKSB7XG4gICAgY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gICAgICBpbmRleFBhZ2U/LnJlZGlyZWN0VG9JbmRleFxuICAgICAgICA/IHsgcGF0aDogJycsIHJlZGlyZWN0VG86ICdpbmRleCcsIHBhdGhNYXRjaDogJ2Z1bGwnIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgLi4ucm91dGUuZGF0YSxcbiAgICAgICAgICAgICAgdGl0bGU6IGluZGV4UGFnZS5oaWRlVGl0bGUgPyB1bmRlZmluZWQgOiBpbmRleFBhZ2UudGl0bGUgfHwgcm91dGUuZGF0YT8udGl0bGUsXG4gICAgICAgICAgICAgIHR5cGU6IEVQYWdlVHlwZS5pbmRleFBhZ2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tcG9uZW50OiBpbmRleFBhZ2U/LmNvbXBvbmVudCxcbiAgICAgICAgICAgIGxvYWRDaGlsZHJlbjogaW5kZXhQYWdlPy5sYXp5TW9kdWxlLFxuICAgICAgICAgICAgbG9hZENvbXBvbmVudDogaW5kZXhQYWdlPy5sYXp5Q29tcG9uZW50LFxuICAgICAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBhdGg6ICdpbmRleCcsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAuLi5yb3V0ZS5kYXRhLFxuICAgICAgICAgIHRpdGxlOiByb3V0ZS5kYXRhPy50aXRsZSxcbiAgICAgICAgICB0eXBlOiBFUGFnZVR5cGUuaW5kZXhQYWdlLFxuICAgICAgICB9LFxuICAgICAgICBjb21wb25lbnQ6IGluZGV4UGFnZT8uY29tcG9uZW50LFxuICAgICAgICBsb2FkQ2hpbGRyZW46IGluZGV4UGFnZT8ubGF6eU1vZHVsZSxcbiAgICAgICAgbG9hZENvbXBvbmVudDogaW5kZXhQYWdlPy5sYXp5Q29tcG9uZW50LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLi4ucm91dGUsXG4gICAgICAgIHBhdGg6ICdjbG9uZScsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAuLi5yb3V0ZS5kYXRhLFxuICAgICAgICAgIHRpdGxlOiBwYWdlVGl0bGVyKHJvdXRlLmRhdGE/LnRpdGxlLCAnQ2xvbmUnKSxcbiAgICAgICAgICB0eXBlOiBFUGFnZVR5cGUuY2xvbmVQYWdlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLi4ucm91dGUsXG4gICAgICAgIHBhdGg6ICdjcmVhdGUnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgLi4ucm91dGUuZGF0YSxcbiAgICAgICAgICB0aXRsZTogcGFnZVRpdGxlcihyb3V0ZS5kYXRhPy50aXRsZSwgJ0NyZWF0ZScpLFxuICAgICAgICAgIHR5cGU6IEVQYWdlVHlwZS5jcmVhdGVQYWdlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLi4ucm91dGUsXG4gICAgICAgIHBhdGg6ICdlZGl0JyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIC4uLnJvdXRlLmRhdGEsXG4gICAgICAgICAgdGl0bGU6IHBhZ2VUaXRsZXIocm91dGUuZGF0YT8udGl0bGUsICdFZGl0JyksXG4gICAgICAgICAgdHlwZTogRVBhZ2VUeXBlLmVkaXRQYWdlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLi4ucm91dGUsXG4gICAgICAgIHBhdGg6ICdzaG93JyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIC4uLnJvdXRlLmRhdGEsXG4gICAgICAgICAgdGl0bGU6IHBhZ2VUaXRsZXIocm91dGUuZGF0YT8udGl0bGUsICdTaG93JyksXG4gICAgICAgICAgdHlwZTogRVBhZ2VUeXBlLnNob3dQYWdlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdO1xuICAgIGlmICghaW5kZXhQYWdlIHx8ICEoT2JqZWN0LmtleXMoaW5kZXhQYWdlKS5sZW5ndGggPiAwKSkge1xuICAgICAgcm91dGVzLnNwbGljZSgwLCAyKTtcbiAgICB9XG4gICAgcmV0dXJuIHJvdXRlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25jYXRlbmF0ZXMgdHdvIHN0cmluZ3MgYW5kIGFjY291bnRzIGZvciBudWxsIHZhbHVlc1xuICAgKiBAcGFyYW0gdGV4dDEgRmlyc3Qgc3RyaW5nIHRvIGNvbmNhdGVuYXRlXG4gICAqIEBwYXJhbSB0ZXh0MiBTZWNvbmQgc3RyaW5nIHRvIGNvbmNhdGVuYXRlXG4gICAqIEBwYXJhbSBqb2luZXJUZXh0IFN0cmluZyB0byBwbGFjZSBpbiBiZXR3ZWVuIHRoZSB0d28gdGV4dHNcbiAgICogQHJldHVybnNcbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBzdHJDb25jYXRlbmF0b3IodGV4dDE6IHN0cmluZywgdGV4dDI6IHN0cmluZywgam9pbmVyVGV4dCA9ICcgLSAnKSB7XG4gICAgLy8gZGVidWdnZXJcbiAgICAvLyBjb25zb2xlLmxvZygnZmllbGQxJyxmaWVsZDEpXG4gICAgdGV4dDEgPSB0ZXh0MT8udG9TdHJpbmcoKT8udHJpbSgpO1xuICAgIHRleHQyID0gdGV4dDI/LnRvU3RyaW5nKCk/LnRyaW0oKTtcbiAgICBpZiAodGV4dDEgIT0gbnVsbCAmJiB0ZXh0MiAhPSBudWxsKSByZXR1cm4geyB2YWx1ZTogdGV4dDEsIGxhYmVsOiB0ZXh0MSArIGpvaW5lclRleHQgKyB0ZXh0MiB9O1xuICAgIGVsc2UgcmV0dXJuIHsgdmFsdWU6IHRleHQxLCBsYWJlbDogdGV4dDEgfHwgdGV4dDIgfTtcbiAgfVxuICAvKipcbiAgICogQ29uY2F0ZW5hdGVzIHR3byBzdHJpbmdzIGFuZCBhY2NvdW50cyBmb3IgbnVsbCB2YWx1ZXNcbiAgICogQHBhcmFtIHRleHQxIEZpcnN0IHN0cmluZyB0byBjb25jYXRlbmF0ZVxuICAgKiBAcGFyYW0gdGV4dDIgU2Vjb25kIHN0cmluZyB0byBjb25jYXRlbmF0ZVxuICAgKiBAcGFyYW0gam9pbmVyVGV4dCBTdHJpbmcgdG8gcGxhY2UgaW4gYmV0d2VlbiB0aGUgdHdvIHRleHRzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gc3RyQ29uY2F0ZW5hdG9yMih0ZXh0MTogc3RyaW5nLCB0ZXh0Mjogc3RyaW5nLCBqb2luZXJUZXh0ID0gJyAtICcpIHtcbiAgICAvLyBkZWJ1Z2dlclxuICAgIC8vIGNvbnNvbGUubG9nKCdmaWVsZDEnLGZpZWxkMSlcbiAgICB0ZXh0MSA9IHRleHQxPy50b1N0cmluZygpPy50cmltKCk7XG4gICAgdGV4dDIgPSB0ZXh0Mj8udG9TdHJpbmcoKT8udHJpbSgpO1xuICAgIGlmICh0ZXh0MSAhPSBudWxsICYmIHRleHQyICE9IG51bGwpIHJldHVybiB0ZXh0MSArIGpvaW5lclRleHQgKyB0ZXh0MjtcbiAgICBlbHNlIHJldHVybiB0ZXh0MSB8fCB0ZXh0MjtcbiAgfVxuICBmdW5jdGlvbiBwYWdlVGl0bGVyKHRpdGxlOiBzdHJpbmcsIGluZml4OiBzdHJpbmcpIHtcbiAgICBpZiAoIXRpdGxlKSByZXR1cm4gJyc7XG4gICAgaWYgKCFpbmZpeCkgcmV0dXJuIHRpdGxlO1xuICAgIGNvbnN0IHNwbGl0ID0gdGl0bGUuc3BsaXQoJy8nKSxcbiAgICAgIGxhc3RTcGxpdCA9IHNwbGl0LnBvcCgpLFxuICAgICAgcHJlZml4ID0gc3BsaXQuam9pbignLycpO1xuICAgIHJldHVybiAocHJlZml4ID8gcHJlZml4ICsgJyAvICcgOiAnICcpICsgaW5maXggKyAnICcgKyBsYXN0U3BsaXQ7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIHJlZGlyZWN0Um91dGVGb3JVTShyb3V0ZTogUm91dGUsIHByZWZpeDogc3RyaW5nKSB7XG4gICAgY29uc3Qgb1BhdGggPSByb3V0ZT8ucGF0aCArICcnLFxuICAgICAgblBhdGggPSBwcmVmaXggKyBvUGF0aDtcbiAgICByb3V0ZS5wYXRoID0gblBhdGg7XG4gICAgY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gICAgICB7XG4gICAgICAgIHBhdGg6IG9QYXRoLFxuICAgICAgICByZWRpcmVjdFRvOiBuUGF0aCxcbiAgICAgIH0sXG4gICAgICByb3V0ZSxcbiAgICBdO1xuICAgIHJldHVybiByb3V0ZXM7XG4gIH1cbn1cbiJdfQ==
|
|
244
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mdW5jdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvY29uZmlncy9iYXNlLWZ1bmN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFekQsTUFBTSxLQUFXLFdBQVcsQ0F1UjNCO0FBdlJELFdBQWlCLFdBQVc7SUFDMUIsU0FBZ0IsY0FBYyxDQUM1QixLQUFZLEVBQ1osU0E2Qkc7UUFFSCxPQUFPLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQWxDZSwwQkFBYyxpQkFrQzdCLENBQUE7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW1CRztJQUNILFNBQWdCLFdBQVcsQ0FBQyxLQUFZLEVBQUUsY0FBMEIsRUFBRSxlQUFzQztRQUMxRyxNQUFNLE1BQU0sR0FBVztZQUNyQjtnQkFDRSxJQUFJLEVBQUUsRUFBRTtnQkFDUixJQUFJLEVBQUU7b0JBQ0osR0FBRyxLQUFLLENBQUMsSUFBSTtvQkFDYixLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLO29CQUN4QixJQUFJLEVBQUUsU0FBUyxDQUFDLFNBQVM7aUJBQzFCO2dCQUNELFNBQVMsRUFBRSxjQUFjO2dCQUN6QixZQUFZLEVBQUUsZUFBZTthQUM5QjtZQUNEO2dCQUNFLElBQUksRUFBRSxPQUFPO2dCQUNiLElBQUksRUFBRTtvQkFDSixHQUFHLEtBQUssQ0FBQyxJQUFJO29CQUNiLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUs7b0JBQ3hCLElBQUksRUFBRSxT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IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERlZmF1bHRFeHBvcnQsIExvYWRDaGlsZHJlbkNhbGxiYWNrLCBSb3V0ZSwgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEVQYWdlVHlwZSB9IGZyb20gJy4uL1NoYXJlZC9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuZXhwb3J0IG5hbWVzcGFjZSBFVkZ1bmN0aW9ucyB7XG4gIGV4cG9ydCBmdW5jdGlvbiByb3V0ZVJlZGlyZWN0cyhcbiAgICByb3V0ZTogUm91dGUsXG4gICAgcmVkaXJlY3RzOiB7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBwYXRoIHRvIG1hdGNoIGFnYWluc3QuIENhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggYSBjdXN0b20gYG1hdGNoZXJgIGZ1bmN0aW9uLlxuICAgICAgICogQSBVUkwgc3RyaW5nIHRoYXQgdXNlcyByb3V0ZXIgbWF0Y2hpbmcgbm90YXRpb24uXG4gICAgICAgKiBDYW4gYmUgYSB3aWxkIGNhcmQgKGAqKmApIHRoYXQgbWF0Y2hlcyBhbnkgVVJMIChzZWUgVXNhZ2UgTm90ZXMgYmVsb3cpLlxuICAgICAgICogRGVmYXVsdCBpcyBcIi9cIiAodGhlIHJvb3QgcGF0aCkuXG4gICAgICAgKlxuICAgICAgICovXG4gICAgICBwYXRoOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBwYXRoLW1hdGNoaW5nIHN0cmF0ZWd5LCBvbmUgb2YgJ3ByZWZpeCcgb3IgJ2Z1bGwnLlxuICAgICAgICogRGVmYXVsdCBpcyAncHJlZml4Jy5cbiAgICAgICAqXG4gICAgICAgKiBCeSBkZWZhdWx0LCB0aGUgcm91dGVyIGNoZWNrcyBVUkwgZWxlbWVudHMgZnJvbSB0aGUgbGVmdCB0byBzZWUgaWYgdGhlIFVSTFxuICAgICAgICogbWF0Y2hlcyBhIGdpdmVuIHBhdGggYW5kIHN0b3BzIHdoZW4gdGhlcmUgaXMgYSBjb25maWcgbWF0Y2guIEltcG9ydGFudGx5IHRoZXJlIG11c3Qgc3RpbGwgYmUgYVxuICAgICAgICogY29uZmlnIG1hdGNoIGZvciBlYWNoIHNlZ21lbnQgb2YgdGhlIFVSTC4gRm9yIGV4YW1wbGUsICcvdGVhbS8xMS91c2VyJyBtYXRjaGVzIHRoZSBwcmVmaXhcbiAgICAgICAqICd0ZWFtLzppZCcgaWYgb25lIG9mIHRoZSByb3V0ZSdzIGNoaWxkcmVuIG1hdGNoZXMgdGhlIHNlZ21lbnQgJ3VzZXInLiBUaGF0IGlzLCB0aGUgVVJMXG4gICAgICAgKiAnL3RlYW0vMTEvdXNlcicgbWF0Y2hlcyB0aGUgY29uZmlnXG4gICAgICAgKiBge3BhdGg6ICd0ZWFtLzppZCcsIGNoaWxkcmVuOiBbe3BhdGg6ICc6dXNlcicsIGNvbXBvbmVudDogVXNlcn1dfWBcbiAgICAgICAqIGJ1dCBkb2VzIG5vdCBtYXRjaCB3aGVuIHRoZXJlIGFyZSBubyBjaGlsZHJlbiBhcyBpbiBge3BhdGg6ICd0ZWFtLzppZCcsIGNvbXBvbmVudDogVGVhbX1gLlxuICAgICAgICpcbiAgICAgICAqIFRoZSBwYXRoLW1hdGNoIHN0cmF0ZWd5ICdmdWxsJyBtYXRjaGVzIGFnYWluc3QgdGhlIGVudGlyZSBVUkwuXG4gICAgICAgKiBJdCBpcyBpbXBvcnRhbnQgdG8gZG8gdGhpcyB3aGVuIHJlZGlyZWN0aW5nIGVtcHR5LXBhdGggcm91dGVzLlxuICAgICAgICogT3RoZXJ3aXNlLCBiZWNhdXNlIGFuIGVtcHR5IHBhdGggaXMgYSBwcmVmaXggb2YgYW55IFVSTCxcbiAgICAgICAqIHRoZSByb3V0ZXIgd291bGQgYXBwbHkgdGhlIHJlZGlyZWN0IGV2ZW4gd2hlbiBuYXZpZ2F0aW5nXG4gICAgICAgKiB0byB0aGUgcmVkaXJlY3QgZGVzdGluYXRpb24sIGNyZWF0aW5nIGFuIGVuZGxlc3MgbG9vcC5cbiAgICAgICAqXG4gICAgICAgKi9cbiAgICAgIHBhdGhNYXRjaD86ICdwcmVmaXgnIHwgJ2Z1bGwnO1xuICAgIH1bXSxcbiAgKSB7XG4gICAgcmV0dXJuIFsuLi5yZWRpcmVjdHMubWFwKChyKSA9PiA8Um91dGU+eyAuLi5yLCByZWRpcmVjdFRvOiByb3V0ZS5wYXRoIH0pLCByb3V0ZV07XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBleHRlbmRSb3V0ZTIgaW5zdGVhZFxuICAgKiBAcGFyYW0gcm91dGVcbiAgICogQHBhcmFtIGluZGV4Q29tcG9uZW50XG4gICAqIEBwYXJhbSBpbmRleExhenlNb2R1bGVcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogRVZGdW5jdGlvbnMuZXh0ZW5kUm91dGUoXG4gICAqICB7XG4gICAqICAgICBwYXRoOiAnJyxcbiAgICogICAgIGRhdGE6IHsgdGl0bGU6ICdDUk0gLyBTZXR1cHMgLyBTZWdtZW50JyB9LFxuICAgKiAgICAgbG9hZENoaWxkcmVuOiAoKSA9PiBpbXBvcnQoJy4vY3JlYXRlLXNlZ21lbnQvY3JlYXRlLXNlZ21lbnQubW9kdWxlJylcbiAgICogICAgICAgLnRoZW4oKG0pID0+IG0uQ3JlYXRlU2VnbWVudE1vZHVsZSksXG4gICAqICB9LFxuICAgKiAgbnVsbCxcbiAgICogICgpID0+IGltcG9ydCgnLi9zZWdtZW50cy1pbmRleC9zZWdtZW50cy1pbmRleC5tb2R1bGUnKVxuICAgKiAgICAgLnRoZW4oKG0pID0+IG0uU2VnbWVudHNJbmRleE1vZHVsZSkpO1xuICAgKiBgYGBcbiAgICogQHJldHVybnNcbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBleHRlbmRSb3V0ZShyb3V0ZTogUm91dGUsIGluZGV4Q29tcG9uZW50PzogVHlwZTxhbnk+LCBpbmRleExhenlNb2R1bGU/OiBMb2FkQ2hpbGRyZW5DYWxsYmFjaykge1xuICAgIGNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICAgICAge1xuICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIC4uLnJvdXRlLmRhdGEsXG4gICAgICAgICAgdGl0bGU6IHJvdXRlLmRhdGE/LnRpdGxlLFxuICAgICAgICAgIHR5cGU6IEVQYWdlVHlwZS5pbmRleFBhZ2UsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBvbmVudDogaW5kZXhDb21wb25lbnQsXG4gICAgICAgIGxvYWRDaGlsZHJlbjogaW5kZXhMYXp5TW9kdWxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJ2luZGV4JyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIC4uLnJvdXRlLmRhdGEsXG4gICAgICAgICAgdGl0bGU6IHJvdXRlLmRhdGE/LnRpdGxlLFxuICAgICAgICAgIHR5cGU6IEVQYWdlVHlwZS5pbmRleFBhZ2UsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBvbmVudDogaW5kZXhDb21wb25lbnQsXG4gICAgICAgIGxvYWRDaGlsZHJlbjogaW5kZXhMYXp5TW9kdWxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJ2Nsb25lJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIC4uLnJvdXRlLmRhdGEsXG4gICAgICAgICAgdGl0bGU6IHBhZ2VUaXRsZXIocm91dGUuZGF0YT8udGl0bGUsICdDbG9uZScpLFxuICAgICAgICAgIHR5cGU6IEVQYWdlVHlwZS5jbG9uZVBhZ2UsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBvbmVudDogcm91dGUuY29tcG9uZW50LFxuICAgICAgICBsb2FkQ2hpbGRyZW46IHJvdXRlLmxvYWRDaGlsZHJlbixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBhdGg6ICdjcmVhdGUnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgLi4ucm91dGUuZGF0YSxcbiAgICAgICAgICB0aXRsZTogcGFnZVRpdGxlcihyb3V0ZS5kYXRhPy50aXRsZSwgJ0NyZWF0ZScpLFxuICAgICAgICAgIHR5cGU6IEVQYWdlVHlwZS5jcmVhdGVQYWdlLFxuICAgICAgICB9LFxuICAgICAgICBjb21wb25lbnQ6IHJvdXRlLmNvbXBvbmVudCxcbiAgICAgICAgbG9hZENoaWxkcmVuOiByb3V0ZS5sb2FkQ2hpbGRyZW4sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwYXRoOiAnZWRpdCcsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAuLi5yb3V0ZS5kYXRhLFxuICAgICAgICAgIHRpdGxlOiBwYWdlVGl0bGVyKHJvdXRlLmRhdGE/LnRpdGxlLCAnRWRpdCcpLFxuICAgICAgICAgIHR5cGU6IEVQYWdlVHlwZS5lZGl0UGFnZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29tcG9uZW50OiByb3V0ZS5jb21wb25lbnQsXG4gICAgICAgIGxvYWRDaGlsZHJlbjogcm91dGUubG9hZENoaWxkcmVuLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJ3Nob3cnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgLi4ucm91dGUuZGF0YSxcbiAgICAgICAgICB0aXRsZTogcGFnZVRpdGxlcihyb3V0ZS5kYXRhPy50aXRsZSwgJ1Nob3cnKSxcbiAgICAgICAgICB0eXBlOiBFUGFnZVR5cGUuc2hvd1BhZ2UsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBvbmVudDogcm91dGUuY29tcG9uZW50LFxuICAgICAgICBsb2FkQ2hpbGRyZW46IHJvdXRlLmxvYWRDaGlsZHJlbixcbiAgICAgIH0sXG4gICAgXTtcbiAgICBpZiAoIWluZGV4Q29tcG9uZW50ICYmICFpbmRleExhenlNb2R1bGUpIHtcbiAgICAgIHJvdXRlcy5zcGxpY2UoMCwgMik7XG4gICAgfVxuICAgIHJldHVybiByb3V0ZXM7XG4gIH1cblxuICAvKipcbiAgICogXG4gICAqIEBwYXJhbSByb3V0ZSBcbiAgICogQHBhcmFtIGluZGV4UGFnZSBcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogRVZGdW5jdGlvbnMuZXh0ZW5kUm91dGUyKFxuICAgIHtcbiAgICAgIHBhdGg6ICcnLFxuICAgICAgZGF0YTogeyB0aXRsZTogJyBQcm9jZXNzIEFjdGlvbnMnIH0sXG4gICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PlxuICAgICAgICBpbXBvcnQoJy4vY3JlYXRlLXByb2Nlc3MtYWN0aW9ucy9jcmVhdGUtcHJvY2Vzcy1hY3Rpb25zLmNvbXBvbmVudCcpLnRoZW4oXG4gICAgICAgICAgKGMpID0+IGMuQ3JlYXRlUHJvY2Vzc0FjdGlvbnNDb21wb25lbnRcbiAgICAgICAgKSxcbiAgICB9LFxuICAgIHsgY29tcG9uZW50OiBJbmRleFByb2Nlc3NBY3Rpb25zQ29tcG9uZW50IH1cbiAgKVxuICAgKiBgYGBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gZXh0ZW5kUm91dGUyKFxuICAgIHJvdXRlOiBSb3V0ZSxcbiAgICBpbmRleFBhZ2U/OiB7XG4gICAgICBjb21wb25lbnQ/OiBUeXBlPGFueT47XG4gICAgICBsYXp5Q29tcG9uZW50PzogKCkgPT5cbiAgICAgICAgfCBUeXBlPHVua25vd24+XG4gICAgICAgIHwgT2JzZXJ2YWJsZTxUeXBlPHVua25vd24+IHwgRGVmYXVsdEV4cG9ydDxUeXBlPHVua25vd24+Pj5cbiAgICAgICAgfCBQcm9taXNlPFR5cGU8dW5rbm93bj4gfCBEZWZhdWx0RXhwb3J0PFR5cGU8dW5rbm93bj4+PjtcbiAgICAgIGxhenlNb2R1bGU/OiBMb2FkQ2hpbGRyZW5DYWxsYmFjaztcbiAgICAgIHJlZGlyZWN0VG9JbmRleD86IGJvb2xlYW47XG4gICAgICB0aXRsZT86IHN0cmluZztcbiAgICAgIGhpZGVUaXRsZT86IGJvb2xlYW47XG4gICAgfSxcbiAgKSB7XG4gICAgY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gICAgICBpbmRleFBhZ2U/LnJlZGlyZWN0VG9JbmRleFxuICAgICAgICA/IHsgcGF0aDogJycsIHJlZGlyZWN0VG86ICdpbmRleCcsIHBhdGhNYXRjaDogJ2Z1bGwnIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgLi4ucm91dGUuZGF0YSxcbiAgICAgICAgICAgICAgdGl0bGU6IGluZGV4UGFnZT8uaGlkZVRpdGxlID8gdW5kZWZpbmVkIDogaW5kZXhQYWdlPy50aXRsZSB8fCByb3V0ZS5kYXRhPy50aXRsZSxcbiAgICAgICAgICAgICAgdHlwZTogRVBhZ2VUeXBlLmluZGV4UGFnZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21wb25lbnQ6IGluZGV4UGFnZT8uY29tcG9uZW50LFxuICAgICAgICAgICAgbG9hZENoaWxkcmVuOiBpbmRleFBhZ2U/LmxhenlNb2R1bGUsXG4gICAgICAgICAgICBsb2FkQ29tcG9uZW50OiBpbmRleFBhZ2U/LmxhenlDb21wb25lbnQsXG4gICAgICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJ2luZGV4JyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIC4uLnJvdXRlLmRhdGEsXG4gICAgICAgICAgdGl0bGU6IHJvdXRlLmRhdGE/LnRpdGxlLFxuICAgICAgICAgIHR5cGU6IEVQYWdlVHlwZS5pbmRleFBhZ2UsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBvbmVudDogaW5kZXhQYWdlPy5jb21wb25lbnQsXG4gICAgICAgIGxvYWRDaGlsZHJlbjogaW5kZXhQYWdlPy5sYXp5TW9kdWxlLFxuICAgICAgICBsb2FkQ29tcG9uZW50OiBpbmRleFBhZ2U/LmxhenlDb21wb25lbnQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAuLi5yb3V0ZSxcbiAgICAgICAgcGF0aDogJ2Nsb25lJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIC4uLnJvdXRlLmRhdGEsXG4gICAgICAgICAgdGl0bGU6IHBhZ2VUaXRsZXIocm91dGUuZGF0YT8udGl0bGUsICdDbG9uZScpLFxuICAgICAgICAgIHR5cGU6IEVQYWdlVHlwZS5jbG9uZVBhZ2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAuLi5yb3V0ZSxcbiAgICAgICAgcGF0aDogJ2NyZWF0ZScsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAuLi5yb3V0ZS5kYXRhLFxuICAgICAgICAgIHRpdGxlOiBwYWdlVGl0bGVyKHJvdXRlLmRhdGE/LnRpdGxlLCAnQ3JlYXRlJyksXG4gICAgICAgICAgdHlwZTogRVBhZ2VUeXBlLmNyZWF0ZVBhZ2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAuLi5yb3V0ZSxcbiAgICAgICAgcGF0aDogJ2VkaXQnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgLi4ucm91dGUuZGF0YSxcbiAgICAgICAgICB0aXRsZTogcGFnZVRpdGxlcihyb3V0ZS5kYXRhPy50aXRsZSwgJ0VkaXQnKSxcbiAgICAgICAgICB0eXBlOiBFUGFnZVR5cGUuZWRpdFBhZ2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAuLi5yb3V0ZSxcbiAgICAgICAgcGF0aDogJ3Nob3cnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgLi4ucm91dGUuZGF0YSxcbiAgICAgICAgICB0aXRsZTogcGFnZVRpdGxlcihyb3V0ZS5kYXRhPy50aXRsZSwgJ1Nob3cnKSxcbiAgICAgICAgICB0eXBlOiBFUGFnZVR5cGUuc2hvd1BhZ2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF07XG4gICAgaWYgKCFpbmRleFBhZ2UgfHwgIShPYmplY3Qua2V5cyhpbmRleFBhZ2UpLmxlbmd0aCA+IDApKSB7XG4gICAgICByb3V0ZXMuc3BsaWNlKDAsIDIpO1xuICAgIH1cbiAgICByZXR1cm4gcm91dGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbmNhdGVuYXRlcyB0d28gc3RyaW5ncyBhbmQgYWNjb3VudHMgZm9yIG51bGwgdmFsdWVzXG4gICAqIEBwYXJhbSB0ZXh0MSBGaXJzdCBzdHJpbmcgdG8gY29uY2F0ZW5hdGVcbiAgICogQHBhcmFtIHRleHQyIFNlY29uZCBzdHJpbmcgdG8gY29uY2F0ZW5hdGVcbiAgICogQHBhcmFtIGpvaW5lclRleHQgU3RyaW5nIHRvIHBsYWNlIGluIGJldHdlZW4gdGhlIHR3byB0ZXh0c1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIHN0ckNvbmNhdGVuYXRvcih0ZXh0MTogc3RyaW5nLCB0ZXh0Mjogc3RyaW5nLCBqb2luZXJUZXh0ID0gJyAtICcpIHtcbiAgICAvLyBkZWJ1Z2dlclxuICAgIC8vIGNvbnNvbGUubG9nKCdmaWVsZDEnLGZpZWxkMSlcbiAgICB0ZXh0MSA9IHRleHQxPy50b1N0cmluZygpPy50cmltKCk7XG4gICAgdGV4dDIgPSB0ZXh0Mj8udG9TdHJpbmcoKT8udHJpbSgpO1xuICAgIGlmICh0ZXh0MSAhPSBudWxsICYmIHRleHQyICE9IG51bGwpIHJldHVybiB7IHZhbHVlOiB0ZXh0MSwgbGFiZWw6IHRleHQxICsgam9pbmVyVGV4dCArIHRleHQyIH07XG4gICAgZWxzZSByZXR1cm4geyB2YWx1ZTogdGV4dDEsIGxhYmVsOiB0ZXh0MSB8fCB0ZXh0MiB9O1xuICB9XG4gIC8qKlxuICAgKiBDb25jYXRlbmF0ZXMgdHdvIHN0cmluZ3MgYW5kIGFjY291bnRzIGZvciBudWxsIHZhbHVlc1xuICAgKiBAcGFyYW0gdGV4dDEgRmlyc3Qgc3RyaW5nIHRvIGNvbmNhdGVuYXRlXG4gICAqIEBwYXJhbSB0ZXh0MiBTZWNvbmQgc3RyaW5nIHRvIGNvbmNhdGVuYXRlXG4gICAqIEBwYXJhbSBqb2luZXJUZXh0IFN0cmluZyB0byBwbGFjZSBpbiBiZXR3ZWVuIHRoZSB0d28gdGV4dHNcbiAgICogQHJldHVybnNcbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBzdHJDb25jYXRlbmF0b3IyKHRleHQxOiBzdHJpbmcsIHRleHQyOiBzdHJpbmcsIGpvaW5lclRleHQgPSAnIC0gJykge1xuICAgIC8vIGRlYnVnZ2VyXG4gICAgLy8gY29uc29sZS5sb2coJ2ZpZWxkMScsZmllbGQxKVxuICAgIHRleHQxID0gdGV4dDE/LnRvU3RyaW5nKCk/LnRyaW0oKTtcbiAgICB0ZXh0MiA9IHRleHQyPy50b1N0cmluZygpPy50cmltKCk7XG4gICAgaWYgKHRleHQxICE9IG51bGwgJiYgdGV4dDIgIT0gbnVsbCkgcmV0dXJuIHRleHQxICsgam9pbmVyVGV4dCArIHRleHQyO1xuICAgIGVsc2UgcmV0dXJuIHRleHQxIHx8IHRleHQyO1xuICB9XG4gIGZ1bmN0aW9uIHBhZ2VUaXRsZXIodGl0bGU6IHN0cmluZywgaW5maXg6IHN0cmluZykge1xuICAgIGlmICghdGl0bGUpIHJldHVybiAnJztcbiAgICBpZiAoIWluZml4KSByZXR1cm4gdGl0bGU7XG4gICAgY29uc3Qgc3BsaXQgPSB0aXRsZS5zcGxpdCgnLycpLFxuICAgICAgbGFzdFNwbGl0ID0gc3BsaXQucG9wKCksXG4gICAgICBwcmVmaXggPSBzcGxpdC5qb2luKCcvJyk7XG4gICAgcmV0dXJuIChwcmVmaXggPyBwcmVmaXggKyAnIC8gJyA6ICcgJykgKyBpbmZpeCArICcgJyArIGxhc3RTcGxpdDtcbiAgfVxuICBleHBvcnQgZnVuY3Rpb24gcmVkaXJlY3RSb3V0ZUZvclVNKHJvdXRlOiBSb3V0ZSwgcHJlZml4OiBzdHJpbmcpIHtcbiAgICBjb25zdCBvUGF0aCA9IHJvdXRlPy5wYXRoICsgJycsXG4gICAgICBuUGF0aCA9IHByZWZpeCArIG9QYXRoO1xuICAgIHJvdXRlLnBhdGggPSBuUGF0aDtcbiAgICBjb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAgICAgIHtcbiAgICAgICAgcGF0aDogb1BhdGgsXG4gICAgICAgIHJlZGlyZWN0VG86IG5QYXRoLFxuICAgICAgfSxcbiAgICAgIHJvdXRlLFxuICAgIF07XG4gICAgcmV0dXJuIHJvdXRlcztcbiAgfVxufVxuIl19
|