@stemy/ngx-dynamic-form 13.1.6 → 13.1.7
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/esm2020/ngx-dynamic-form/services/dynamic-form.service.mjs +3 -2
- package/esm2020/ngx-dynamic-form/utils/dynamic-editor.model.mjs +13 -0
- package/esm2020/public_api.mjs +3 -2
- package/fesm2015/stemy-ngx-dynamic-form.mjs +16 -5
- package/fesm2015/stemy-ngx-dynamic-form.mjs.map +1 -1
- package/fesm2020/stemy-ngx-dynamic-form.mjs +16 -4
- package/fesm2020/stemy-ngx-dynamic-form.mjs.map +1 -1
- package/ngx-dynamic-form/services/dynamic-form.service.d.ts +2 -1
- package/ngx-dynamic-form/utils/dynamic-editor.model.d.ts +9 -0
- package/package.json +1 -1
- package/public_api.d.ts +2 -1
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { Inject, Injectable, Injector } from "@angular/core";
|
|
2
2
|
import { FormArray, FormGroup } from "@angular/forms";
|
|
3
3
|
import { firstValueFrom, Subject } from "rxjs";
|
|
4
|
-
import { DynamicCheckboxModel,
|
|
4
|
+
import { DynamicCheckboxModel, DynamicFileUploadModel, DynamicFormGroupModel, DynamicFormService as Base, DynamicInputModel, DynamicTextAreaModel } from "@ng-dynamic-forms/core";
|
|
5
5
|
import { ObjectUtils, OpenApiService, StringUtils } from "@stemy/ngx-utils";
|
|
6
6
|
import { EDITOR_FORMATS, findRefs, isStringWithVal, MAX_INPUT_NUM, mergeFormModels, MIN_INPUT_NUM } from "../utils/misc";
|
|
7
7
|
import { FormSelectSubject } from "../utils/form-select-subject";
|
|
8
8
|
import { FormSubject } from "../utils/form-subject";
|
|
9
|
+
import { DynamicEditorModel } from "../utils/dynamic-editor.model";
|
|
9
10
|
import { DynamicFormArrayGroupModel, DynamicFormArrayModel } from "../utils/dynamic-form-array.model";
|
|
10
11
|
import { DynamicSelectModel } from "../utils/dynamic-select.model";
|
|
11
12
|
import * as i0 from "@angular/core";
|
|
@@ -489,4 +490,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
489
490
|
type: Inject,
|
|
490
491
|
args: [Injector]
|
|
491
492
|
}] }]; } });
|
|
492
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LWR5bmFtaWMtZm9ybS9zZXJ2aWNlcy9keW5hbWljLWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFrQixTQUFTLEVBQWUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEYsT0FBTyxFQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUNILG9CQUFvQixFQUVwQixrQkFBa0IsRUFFbEIsc0JBQXNCLEVBS3RCLHFCQUFxQixFQUdyQixrQkFBa0IsSUFBSSxJQUFJLEVBSTFCLGlCQUFpQixFQUdqQixvQkFBb0IsRUFHdkIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBTUgsV0FBVyxFQUNYLGNBQWMsRUFDZCxXQUFXLEVBQ2QsTUFBTSxrQkFBa0IsQ0FBQztBQUkxQixPQUFPLEVBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkgsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFDSCwwQkFBMEIsRUFDMUIscUJBQXFCLEVBRXhCLE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxFQUEwQixrQkFBa0IsRUFBMkIsTUFBTSwrQkFBK0IsQ0FBQzs7OztBQUlwSCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsSUFBSTtJQVl4QyxZQUFZLEVBQStCLEVBQy9CLEVBQWdDLEVBQ0MsT0FBdUIsRUFDN0IsUUFBa0I7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QUNELFFBQVEsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUNyQixLQUFLLE9BQU87Z0JBQ1IsVUFBVSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLE1BQU07U0FDYjtJQUNMLENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxVQUFtQyxFQUFFLEtBQTZCO1FBQzNGLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTztRQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN6QixVQUFVLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7U0FDL0M7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN6QixVQUFVLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7U0FDL0M7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN2QixVQUFVLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7U0FDNUM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN2QixVQUFVLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7U0FDNUM7SUFDTCxDQUFDOzsrR0FwZ0JRLGtCQUFrQix5R0FjUCxjQUFjLGFBQ2QsUUFBUTttSEFmbkIsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVU7OzBCQWVNLE1BQU07MkJBQUMsY0FBYzs7MEJBQ3JCLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rvcn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7Zmlyc3RWYWx1ZUZyb20sIFN1YmplY3R9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7XHJcbiAgICBEeW5hbWljQ2hlY2tib3hNb2RlbCxcclxuICAgIER5bmFtaWNDaGVja2JveE1vZGVsQ29uZmlnLFxyXG4gICAgRHluYW1pY0VkaXRvck1vZGVsLFxyXG4gICAgRHluYW1pY0VkaXRvck1vZGVsQ29uZmlnLFxyXG4gICAgRHluYW1pY0ZpbGVVcGxvYWRNb2RlbCxcclxuICAgIER5bmFtaWNGaWxlVXBsb2FkTW9kZWxDb25maWcsXHJcbiAgICBEeW5hbWljRm9ybUNvbXBvbmVudFNlcnZpY2UsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbE1vZGVsQ29uZmlnLFxyXG4gICAgRHluYW1pY0Zvcm1Hcm91cE1vZGVsLFxyXG4gICAgRHluYW1pY0Zvcm1Hcm91cE1vZGVsQ29uZmlnLFxyXG4gICAgRHluYW1pY0Zvcm1Nb2RlbCxcclxuICAgIER5bmFtaWNGb3JtU2VydmljZSBhcyBCYXNlLFxyXG4gICAgRHluYW1pY0Zvcm1WYWxpZGF0aW9uU2VydmljZSxcclxuICAgIER5bmFtaWNGb3JtVmFsdWVDb250cm9sTW9kZWwsXHJcbiAgICBEeW5hbWljRm9ybVZhbHVlQ29udHJvbE1vZGVsQ29uZmlnLFxyXG4gICAgRHluYW1pY0lucHV0TW9kZWwsXHJcbiAgICBEeW5hbWljSW5wdXRNb2RlbENvbmZpZyxcclxuICAgIER5bmFtaWNQYXRoYWJsZSxcclxuICAgIER5bmFtaWNUZXh0QXJlYU1vZGVsLFxyXG4gICAgRHluYW1pY1RleHRBcmVhTW9kZWxDb25maWcsXHJcbiAgICBEeW5hbWljVmFsaWRhdG9yc0NvbmZpZ1xyXG59IGZyb20gXCJAbmctZHluYW1pYy1mb3Jtcy9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgICBJQXBpU2VydmljZSxcclxuICAgIElMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBJT3BlbkFwaVNjaGVtYSxcclxuICAgIElPcGVuQXBpU2NoZW1hUHJvcGVydHksXHJcbiAgICBJT3BlbkFwaVNjaGVtYXMsXHJcbiAgICBPYmplY3RVdGlscyxcclxuICAgIE9wZW5BcGlTZXJ2aWNlLFxyXG4gICAgU3RyaW5nVXRpbHNcclxufSBmcm9tIFwiQHN0ZW15L25neC11dGlsc1wiO1xyXG5cclxuaW1wb3J0IHtGb3JtQ29udHJvbFNlcmlhbGl6ZXIsIEZvcm1Nb2RlbEN1c3RvbWl6ZXIsIEZvcm1Nb2RlbEN1c3RvbWl6ZXJXcmFwLCBNb2RlbFR5cGV9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbmltcG9ydCB7RURJVE9SX0ZPUk1BVFMsIGZpbmRSZWZzLCBpc1N0cmluZ1dpdGhWYWwsIE1BWF9JTlBVVF9OVU0sIG1lcmdlRm9ybU1vZGVscywgTUlOX0lOUFVUX05VTX0gZnJvbSBcIi4uL3V0aWxzL21pc2NcIjtcclxuaW1wb3J0IHtGb3JtU2VsZWN0U3ViamVjdH0gZnJvbSBcIi4uL3V0aWxzL2Zvcm0tc2VsZWN0LXN1YmplY3RcIjtcclxuaW1wb3J0IHtGb3JtU3ViamVjdH0gZnJvbSBcIi4uL3V0aWxzL2Zvcm0tc3ViamVjdFwiO1xyXG5pbXBvcnQge1xyXG4gICAgRHluYW1pY0Zvcm1BcnJheUdyb3VwTW9kZWwsXHJcbiAgICBEeW5hbWljRm9ybUFycmF5TW9kZWwsXHJcbiAgICBEeW5hbWljRm9ybUFycmF5TW9kZWxDb25maWdcclxufSBmcm9tIFwiLi4vdXRpbHMvZHluYW1pYy1mb3JtLWFycmF5Lm1vZGVsXCI7XHJcbmltcG9ydCB7RHluYW1pY0Zvcm1PcHRpb25Db25maWcsIER5bmFtaWNTZWxlY3RNb2RlbCwgRHluYW1pY1NlbGVjdE1vZGVsQ29uZmlnfSBmcm9tIFwiLi4vdXRpbHMvZHluYW1pYy1zZWxlY3QubW9kZWxcIjtcclxuaW1wb3J0IHtEeW5hbWljQmFzZUZvcm1Db21wb25lbnR9IGZyb20gXCIuLi9jb21wb25lbnRzL2Jhc2UvZHluYW1pYy1iYXNlLWZvcm0uY29tcG9uZW50XCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljRm9ybVNlcnZpY2UgZXh0ZW5kcyBCYXNlIHtcclxuXHJcbiAgICBnZXQgYXBpKCk6IElBcGlTZXJ2aWNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5vcGVuQXBpLmFwaTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgbGFuZ3VhZ2UoKTogSUxhbmd1YWdlU2VydmljZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmxhbmd1YWdlO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBzY2hlbWFzOiBJT3BlbkFwaVNjaGVtYXM7XHJcblxyXG4gICAgY29uc3RydWN0b3IoY3M6IER5bmFtaWNGb3JtQ29tcG9uZW50U2VydmljZSxcclxuICAgICAgICAgICAgICAgIHZzOiBEeW5hbWljRm9ybVZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgQEluamVjdChPcGVuQXBpU2VydmljZSkgcmVhZG9ubHkgb3BlbkFwaTogT3BlbkFwaVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBASW5qZWN0KEluamVjdG9yKSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgICAgICBzdXBlcihjcywgdnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHBhdGNoR3JvdXAodmFsdWU6IGFueSwgZm9ybU1vZGVsOiBEeW5hbWljRm9ybU1vZGVsLCBmb3JtR3JvdXA6IEZvcm1Hcm91cCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucGF0Y2hWYWx1ZVJlY3Vyc2l2ZSh2YWx1ZSwgZm9ybU1vZGVsLCBmb3JtR3JvdXApO1xyXG4gICAgICAgIGZvcm1Hcm91cC5wYXRjaFZhbHVlKE9iamVjdFV0aWxzLmNvcHkodmFsdWUpKTtcclxuICAgICAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwYXRjaEZvcm0odmFsdWU6IGFueSwgY29tcG9uZW50OiBEeW5hbWljQmFzZUZvcm1Db21wb25lbnQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnBhdGNoVmFsdWVSZWN1cnNpdmUodmFsdWUsIGNvbXBvbmVudC5tb2RlbCwgY29tcG9uZW50Lmdyb3VwKTtcclxuICAgICAgICBjb21wb25lbnQuZ3JvdXAucGF0Y2hWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzKGNvbXBvbmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VyaWFsaXplKGZvcm1Nb2RlbDogRHluYW1pY0Zvcm1Nb2RlbCwgZm9ybUdyb3VwOiBGb3JtR3JvdXApOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZVJlY3Vyc2l2ZShmb3JtTW9kZWwsIGZvcm1Hcm91cCk7XHJcbiAgICB9XHJcblxyXG4gICAgbm90aWZ5Q2hhbmdlcyhmb3JtTW9kZWw6IER5bmFtaWNGb3JtTW9kZWwsIGZvcm1Hcm91cDogRm9ybUdyb3VwKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5ub3RpZnlDaGFuZ2VzUmVjdXJzaXZlKGZvcm1Nb2RlbCwgZm9ybUdyb3VwLCBmb3JtTW9kZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dFcnJvcnMoZm9ybTogRHluYW1pY0Jhc2VGb3JtQ29tcG9uZW50KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zaG93RXJyb3JzRm9yR3JvdXAoZm9ybS5ncm91cCk7XHJcbiAgICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzKGZvcm0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBwYXRjaFZhbHVlUmVjdXJzaXZlKHZhbHVlOiBhbnksIGZvcm1Nb2RlbDogRHluYW1pY0Zvcm1Nb2RlbCwgZm9ybUdyb3VwOiBGb3JtR3JvdXApOiB2b2lkIHtcclxuICAgICAgICBPYmplY3Qua2V5cyh2YWx1ZSkuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzdWJNb2RlbCA9IHRoaXMuZmluZE1vZGVsQnlJZChrZXksIGZvcm1Nb2RlbCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHN1YlZhbHVlID0gdmFsdWVba2V5XTtcclxuICAgICAgICAgICAgaWYgKCFzdWJNb2RlbCkgcmV0dXJuO1xyXG4gICAgICAgICAgICBjb25zdCBzdWJDb250cm9sID0gdGhpcy5maW5kQ29udHJvbEJ5TW9kZWwoc3ViTW9kZWwsIGZvcm1Hcm91cCk7XHJcbiAgICAgICAgICAgIGlmIChzdWJNb2RlbCBpbnN0YW5jZW9mIER5bmFtaWNTZWxlY3RNb2RlbCAmJiBPYmplY3RVdGlscy5pc09iamVjdChzdWJWYWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlW2tleV0gPSBzdWJWYWx1ZS5pZCB8fCBzdWJWYWx1ZS5faWQgfHwgc3ViVmFsdWU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHN1Yk1vZGVsIGluc3RhbmNlb2YgRHluYW1pY0Zvcm1BcnJheU1vZGVsKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZW5ndGggPSBBcnJheS5pc0FycmF5KHN1YlZhbHVlKSA/IHN1YlZhbHVlLmxlbmd0aCA6IDA7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJBcnJheSA9IHN1YkNvbnRyb2wgYXMgRm9ybUFycmF5O1xyXG4gICAgICAgICAgICAgICAgd2hpbGUgKHN1Yk1vZGVsLnNpemUgPiBsZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUZvcm1BcnJheUdyb3VwKDAsIHN1YkFycmF5LCBzdWJNb2RlbCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAoc3ViTW9kZWwuc2l6ZSA8IGxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0Rm9ybUFycmF5R3JvdXAoc3ViTW9kZWwuc2l6ZSwgc3ViQXJyYXksIHN1Yk1vZGVsIGFzIER5bmFtaWNGb3JtQXJyYXlNb2RlbCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbU1vZGVsID0gc3ViTW9kZWwuZ2V0KGkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGF0Y2hWYWx1ZVJlY3Vyc2l2ZShzdWJWYWx1ZVtpXSwgaXRlbU1vZGVsLmdyb3VwLCBzdWJBcnJheS5hdChpKSBhcyBGb3JtR3JvdXApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzdWJNb2RlbCBpbnN0YW5jZW9mIER5bmFtaWNGb3JtR3JvdXBNb2RlbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXRjaFZhbHVlUmVjdXJzaXZlKHN1YlZhbHVlLCBzdWJNb2RlbC5ncm91cCwgc3ViQ29udHJvbCBhcyBGb3JtR3JvdXApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGFzeW5jIHNlcmlhbGl6ZVJlY3Vyc2l2ZShmb3JtTW9kZWw6IER5bmFtaWNGb3JtTW9kZWwsIGZvcm1Hcm91cDogRm9ybUdyb3VwKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcclxuICAgICAgICBpZiAoIWZvcm1Nb2RlbCB8fCAhZm9ybUdyb3VwIHx8ICFmb3JtR3JvdXAudmFsdWUpIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgZm9yIChjb25zdCBpIGluIGZvcm1Nb2RlbCkge1xyXG4gICAgICAgICAgICBjb25zdCBzdWJNb2RlbCA9IGZvcm1Nb2RlbFtpXSBhcyBEeW5hbWljRm9ybVZhbHVlQ29udHJvbE1vZGVsPGFueT47XHJcbiAgICAgICAgICAgIGNvbnN0IHN1YkNvbnRyb2wgPSB0aGlzLmZpbmRDb250cm9sQnlNb2RlbChzdWJNb2RlbCwgZm9ybUdyb3VwKTtcclxuICAgICAgICAgICAgY29uc3Qgc2VyaWFsaXplciA9IHN1Yk1vZGVsLmFkZGl0aW9uYWw/LnNlcmlhbGl6ZXIgYXMgRm9ybUNvbnRyb2xTZXJpYWxpemVyO1xyXG4gICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNGdW5jdGlvbihzZXJpYWxpemVyKSkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0W3N1Yk1vZGVsLmlkXSA9IGF3YWl0IHNlcmlhbGl6ZXIoc3ViTW9kZWwsIHN1YkNvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHN1Yk1vZGVsIGluc3RhbmNlb2YgRHluYW1pY0Zvcm1BcnJheU1vZGVsKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZW5ndGggPSBBcnJheS5pc0FycmF5KHN1YkNvbnRyb2wudmFsdWUpID8gc3ViQ29udHJvbC52YWx1ZS5sZW5ndGggOiAwO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3ViQXJyYXkgPSBzdWJDb250cm9sIGFzIEZvcm1BcnJheTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc0FycmF5ID0gW107XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbU1vZGVsID0gc3ViTW9kZWwuZ2V0KGkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc0FycmF5LnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2VyaWFsaXplUmVjdXJzaXZlKGl0ZW1Nb2RlbC5ncm91cCwgc3ViQXJyYXkuYXQoaSkgYXMgRm9ybUdyb3VwKVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXN1bHRbc3ViTW9kZWwuaWRdID0gcmVzQXJyYXk7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc3ViTW9kZWwgaW5zdGFuY2VvZiBEeW5hbWljRm9ybUdyb3VwTW9kZWwpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdFtzdWJNb2RlbC5pZF0gPSBhd2FpdCB0aGlzLnNlcmlhbGl6ZVJlY3Vyc2l2ZShzdWJNb2RlbC5ncm91cCwgc3ViQ29udHJvbCBhcyBGb3JtR3JvdXApO1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHN1Yk1vZGVsIGluc3RhbmNlb2YgRHluYW1pY0lucHV0TW9kZWwgJiYgIU9iamVjdFV0aWxzLmlzTnVsbE9yVW5kZWZpbmVkKHN1YkNvbnRyb2wudmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHRbc3ViTW9kZWwuaWRdID0gc3ViTW9kZWwuaW5wdXRUeXBlID09IFwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICA/IHBhcnNlRmxvYXQoKGAke3N1YkNvbnRyb2wudmFsdWV9YCB8fCBcIjBcIikucmVwbGFjZSgvLC9naSwgXCIuXCIpKSA/PyBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgOiBzdWJDb250cm9sLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVzdWx0W3N1Yk1vZGVsLmlkXSA9IHN1YkNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG5vdGlmeUNoYW5nZXNSZWN1cnNpdmUoZm9ybU1vZGVsOiBEeW5hbWljRm9ybU1vZGVsLCBmb3JtR3JvdXA6IEZvcm1Hcm91cCwgcm9vdDogRHluYW1pY0Zvcm1Nb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghZm9ybU1vZGVsIHx8ICFmb3JtR3JvdXApIHJldHVybjtcclxuICAgICAgICBmb3IgKGNvbnN0IGkgaW4gZm9ybU1vZGVsKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN1Yk1vZGVsID0gZm9ybU1vZGVsW2ldIGFzIER5bmFtaWNGb3JtVmFsdWVDb250cm9sTW9kZWw8YW55PjtcclxuICAgICAgICAgICAgY29uc3Qgc3ViQ29udHJvbCA9IHRoaXMuZmluZENvbnRyb2xCeU1vZGVsKHN1Yk1vZGVsLCBmb3JtR3JvdXApO1xyXG4gICAgICAgICAgICBpZiAoc3ViTW9kZWwgaW5zdGFuY2VvZiBEeW5hbWljRm9ybUFycmF5TW9kZWwpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IEFycmF5LmlzQXJyYXkoc3ViQ29udHJvbC52YWx1ZSkgPyBzdWJDb250cm9sLnZhbHVlLmxlbmd0aCA6IDA7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJBcnJheSA9IHN1YkNvbnRyb2wgYXMgRm9ybUFycmF5O1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1Nb2RlbCA9IHN1Yk1vZGVsLmdldChpKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmeUNoYW5nZXNSZWN1cnNpdmUoaXRlbU1vZGVsLmdyb3VwLCBzdWJBcnJheS5hdChpKSBhcyBGb3JtR3JvdXAsIHJvb3QpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHN1Yk1vZGVsIGluc3RhbmNlb2YgRHluYW1pY0Zvcm1Hcm91cE1vZGVsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmeUNoYW5nZXNSZWN1cnNpdmUoc3ViTW9kZWwuZ3JvdXAsIHN1YkNvbnRyb2wgYXMgRm9ybUdyb3VwLCByb290KTtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0T3B0aW9ucyhzdWJNb2RlbCwgc3ViQ29udHJvbCBhcyBGb3JtQ29udHJvbCwgcm9vdCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB1cGRhdGVTZWxlY3RPcHRpb25zKGZvcm1Db250cm9sTW9kZWw6IER5bmFtaWNGb3JtQ29udHJvbE1vZGVsLCBmb3JtQ29udHJvbDogRm9ybUNvbnRyb2wsIHJvb3Q6IER5bmFtaWNGb3JtTW9kZWwpOiB2b2lkIHtcclxuICAgICAgICBpZiAoZm9ybUNvbnRyb2xNb2RlbCBpbnN0YW5jZW9mIER5bmFtaWNTZWxlY3RNb2RlbCkge1xyXG4gICAgICAgICAgICBsZXQgb3B0aW9ucyA9IGZvcm1Db250cm9sTW9kZWwub3B0aW9ucyQ7XHJcbiAgICAgICAgICAgIGlmIChvcHRpb25zIGluc3RhbmNlb2YgRm9ybVN1YmplY3QpIHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbnMubm90aWZ5KGZvcm1Db250cm9sTW9kZWwsIGZvcm1Db250cm9sLCByb290KTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB3aGlsZSAob3B0aW9ucyBpbnN0YW5jZW9mIFN1YmplY3QgJiYgb3B0aW9ucy5zb3VyY2UpIHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zLnNvdXJjZTtcclxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zIGluc3RhbmNlb2YgRm9ybVN1YmplY3QpIHtcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLm5vdGlmeShmb3JtQ29udHJvbE1vZGVsLCBmb3JtQ29udHJvbCwgcm9vdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHNob3dFcnJvcnNGb3JHcm91cChmb3JtR3JvdXA6IEZvcm1Hcm91cCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghZm9ybUdyb3VwKSByZXR1cm47XHJcbiAgICAgICAgZm9ybUdyb3VwLm1hcmtBc1RvdWNoZWQoe29ubHlTZWxmOiB0cnVlfSk7XHJcbiAgICAgICAgY29uc3QgY29udHJvbHMgPSBPYmplY3Qua2V5cyhmb3JtR3JvdXAuY29udHJvbHMpLm1hcChpZCA9PiBmb3JtR3JvdXAuY29udHJvbHNbaWRdKTtcclxuICAgICAgICB0aGlzLnNob3dFcnJvcnNGb3JDb250cm9scyhjb250cm9scyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHNob3dFcnJvcnNGb3JDb250cm9scyhjb250cm9sczogQWJzdHJhY3RDb250cm9sW10pOiB2b2lkIHtcclxuICAgICAgICBjb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93RXJyb3JzRm9yR3JvdXAoY29udHJvbCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKHtvbmx5U2VsZjogdHJ1ZX0pO1xyXG4gICAgICAgICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93RXJyb3JzRm9yQ29udHJvbHMoY29udHJvbC5jb250cm9scyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRGb3JtTW9kZWxGb3JTY2hlbWEobmFtZTogc3RyaW5nLCBjdXN0b21pemVNb2RlbD86IEZvcm1Nb2RlbEN1c3RvbWl6ZXIpOiBQcm9taXNlPER5bmFtaWNGb3JtTW9kZWw+IHtcclxuICAgICAgICB0aGlzLmFwaS5jYWNoZSA9IHt9O1xyXG4gICAgICAgIHRoaXMuc2NoZW1hcyA9IGF3YWl0IHRoaXMub3BlbkFwaS5nZXRTY2hlbWFzKCk7XHJcbiAgICAgICAgY29uc3QgY3VzdG9taXplTW9kZWxzOiBGb3JtTW9kZWxDdXN0b21pemVyV3JhcCA9IChcclxuICAgICAgICAgICAgcHJvcGVydHk6IElPcGVuQXBpU2NoZW1hUHJvcGVydHksIHNjaGVtYTogSU9wZW5BcGlTY2hlbWEsXHJcbiAgICAgICAgICAgIG1vZGVsVHlwZTogTW9kZWxUeXBlLCBjb25maWc6IER5bmFtaWNGb3JtQ29udHJvbE1vZGVsQ29uZmlnKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vZGVsID0gbmV3IG1vZGVsVHlwZShjb25maWcpO1xyXG4gICAgICAgICAgICBpZiAoIU9iamVjdFV0aWxzLmlzRnVuY3Rpb24oY3VzdG9taXplTW9kZWwpKSByZXR1cm4gW21vZGVsXTtcclxuICAgICAgICAgICAgY29uc3QgcmVzID0gY3VzdG9taXplTW9kZWwocHJvcGVydHksIHNjaGVtYSwgbW9kZWwsIGNvbmZpZywgdGhpcy5pbmplY3Rvcik7XHJcbiAgICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHJlcykgPyByZXMgOiBbcmVzXTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldEZvcm1Nb2RlbEZvclNjaGVtYURlZih0aGlzLnNjaGVtYXNbbmFtZV0sIGN1c3RvbWl6ZU1vZGVscyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldEZvcm1Nb2RlbEZvclNjaGVtYURlZihzY2hlbWE6IElPcGVuQXBpU2NoZW1hLCBjdXN0b21pemVNb2RlbHM6IEZvcm1Nb2RlbEN1c3RvbWl6ZXJXcmFwKTogRHluYW1pY0Zvcm1Nb2RlbCB7XHJcbiAgICAgICAgaWYgKCFzY2hlbWEpXHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoc2NoZW1hLnByb3BlcnRpZXMgfHwge30pO1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2xzOiBEeW5hbWljRm9ybU1vZGVsID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBwIG9mIGtleXMpIHtcclxuICAgICAgICAgICAgY29uc3QgcHJvcGVydHkgPSBzY2hlbWEucHJvcGVydGllc1twXTtcclxuICAgICAgICAgICAgY29udHJvbHMucHVzaCguLi50aGlzLmdldEZvcm1Db250cm9sTW9kZWxzKHByb3BlcnR5LCBzY2hlbWEsIGN1c3RvbWl6ZU1vZGVscykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY29udHJvbHMuZmlsdGVyKHQgPT4gbnVsbCAhPT0gdCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGNoZWNrSXNFZGl0b3JQcm9wZXJ0eShwcm9wZXJ0eTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghcHJvcGVydHkuZm9ybWF0KSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIEVESVRPUl9GT1JNQVRTLmluZGV4T2YocHJvcGVydHkuZm9ybWF0KSA+PSAwIHx8IHByb3BlcnR5LmZvcm1hdC5lbmRzV2l0aChcInNjcmlwdFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0Rm9ybUNvbnRyb2xNb2RlbHMocHJvcGVydHk6IElPcGVuQXBpU2NoZW1hUHJvcGVydHksIHNjaGVtYTogSU9wZW5BcGlTY2hlbWEsIGN1c3RvbWl6ZU1vZGVsczogRm9ybU1vZGVsQ3VzdG9taXplcldyYXApOiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbFtdIHtcclxuICAgICAgICBjb25zdCAkZW51bSA9IHByb3BlcnR5Lml0ZW1zPy5lbnVtIHx8IHByb3BlcnR5LmVudW07XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoJGVudW0pIHx8IGlzU3RyaW5nV2l0aFZhbChwcm9wZXJ0eS5vcHRpb25zUGF0aCkgfHwgaXNTdHJpbmdXaXRoVmFsKHByb3BlcnR5LmVuZHBvaW50KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gY3VzdG9taXplTW9kZWxzKHByb3BlcnR5LCBzY2hlbWEsIER5bmFtaWNTZWxlY3RNb2RlbCwgdGhpcy5nZXRGb3JtU2VsZWN0Q29uZmlnKHByb3BlcnR5LCBzY2hlbWEpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc3dpdGNoIChwcm9wZXJ0eS50eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjpcclxuICAgICAgICAgICAgY2FzZSBcIm51bWJlclwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiaW50ZWdlclwiOlxyXG4gICAgICAgICAgICBjYXNlIFwidGV4dGFyZWFcIjpcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrSXNFZGl0b3JQcm9wZXJ0eShwcm9wZXJ0eSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VzdG9taXplTW9kZWxzKHByb3BlcnR5LCBzY2hlbWEsIER5bmFtaWNFZGl0b3JNb2RlbCwgdGhpcy5nZXRGb3JtRWRpdG9yQ29uZmlnKHByb3BlcnR5LCBzY2hlbWEpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5mb3JtYXQgPT0gXCJ0ZXh0YXJlYVwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1c3RvbWl6ZU1vZGVscyhwcm9wZXJ0eSwgc2NoZW1hLCBEeW5hbWljVGV4dEFyZWFNb2RlbCwgdGhpcy5nZXRGb3JtVGV4dGFyZWFDb25maWcocHJvcGVydHksIHNjaGVtYSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGN1c3RvbWl6ZU1vZGVscyhwcm9wZXJ0eSwgc2NoZW1hLCBEeW5hbWljSW5wdXRNb2RlbCwgdGhpcy5nZXRGb3JtSW5wdXRDb25maWcocHJvcGVydHksIHNjaGVtYSkpO1xyXG4gICAgICAgICAgICBjYXNlIFwiYm9vbGVhblwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGN1c3RvbWl6ZU1vZGVscyhwcm9wZXJ0eSwgc2NoZW1hLCBEeW5hbWljQ2hlY2tib3hNb2RlbCwgdGhpcy5nZXRGb3JtQ2hlY2tib3hDb25maWcocHJvcGVydHksIHNjaGVtYSkpO1xyXG4gICAgICAgICAgICBjYXNlIFwiYXJyYXlcIjpcclxuICAgICAgICAgICAgICAgIGlmIChmaW5kUmVmcyhwcm9wZXJ0eSkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXN0b21pemVNb2RlbHMocHJvcGVydHksIHNjaGVtYSwgRHluYW1pY0Zvcm1BcnJheU1vZGVsLCB0aGlzLmdldEZvcm1BcnJheUNvbmZpZyhwcm9wZXJ0eSwgc2NoZW1hLCBjdXN0b21pemVNb2RlbHMpKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1c3RvbWl6ZU1vZGVscyhwcm9wZXJ0eSwgc2NoZW1hLCBEeW5hbWljSW5wdXRNb2RlbCwgdGhpcy5nZXRGb3JtSW5wdXRDb25maWcocHJvcGVydHksIHNjaGVtYSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlIFwiZmlsZVwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGN1c3RvbWl6ZU1vZGVscyhwcm9wZXJ0eSwgc2NoZW1hLCBEeW5hbWljRmlsZVVwbG9hZE1vZGVsLCB0aGlzLmdldEZvcm1VcGxvYWRDb25maWcocHJvcGVydHksIHNjaGVtYSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmluZFJlZnMocHJvcGVydHkpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGN1c3RvbWl6ZU1vZGVscyhwcm9wZXJ0eSwgc2NoZW1hLCBEeW5hbWljRm9ybUdyb3VwTW9kZWwsIHRoaXMuZ2V0Rm9ybUdyb3VwQ29uZmlnKHByb3BlcnR5LCBzY2hlbWEsIGN1c3RvbWl6ZU1vZGVscykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcblxyXG4gICAgZmluZE1vZGVsQnlQYXRoKHBhcmVudDogRHluYW1pY1BhdGhhYmxlIHwgRHluYW1pY0Zvcm1Nb2RlbCwgcGF0aDogc3RyaW5nW10pOiBEeW5hbWljUGF0aGFibGUge1xyXG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PSAwKSByZXR1cm4gcGFyZW50IGFzIER5bmFtaWNQYXRoYWJsZTtcclxuICAgICAgICBjb25zdCBuZXh0ID0gcGF0aC5zaGlmdCgpIGFzIGFueTtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXJlbnQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbmRNb2RlbEJ5UGF0aChwYXJlbnQuZmluZCh0ID0+IHQuaWQgPT0gbmV4dCksIHBhdGgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyZW50IGluc3RhbmNlb2YgRHluYW1pY0Zvcm1Hcm91cE1vZGVsIHx8IHBhcmVudCBpbnN0YW5jZW9mIER5bmFtaWNGb3JtQXJyYXlHcm91cE1vZGVsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbmRNb2RlbEJ5UGF0aChwYXJlbnQuZ3JvdXAuZmluZCh0ID0+IHQuaWQgPT0gbmV4dCksIHBhdGgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyZW50IGluc3RhbmNlb2YgRHluYW1pY0Zvcm1BcnJheU1vZGVsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbmRNb2RlbEJ5UGF0aChwYXJlbnQuZ3JvdXBzLmZpbmQodCA9PiB0LmluZGV4ID09IG5leHQpLCBwYXRoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHBhcmVudDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGb3JtQ29udHJvbENvbmZpZyhwcm9wZXJ0eTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSwgc2NoZW1hOiBJT3BlbkFwaVNjaGVtYSk6IER5bmFtaWNGb3JtVmFsdWVDb250cm9sTW9kZWxDb25maWc8YW55PiB7XHJcbiAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHRoaXMuZ2V0VmFsaWRhdG9ycyhwcm9wZXJ0eSwgc2NoZW1hKTtcclxuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2VzID0gT2JqZWN0LmtleXModmFsaWRhdG9ycykucmVkdWNlKChyZXMsIGtleSkgPT4ge1xyXG4gICAgICAgICAgICByZXNba2V5XSA9IGBlcnJvci4ke2tleX1gO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgIH0sIHt9KTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpZDogcHJvcGVydHkuaWQsXHJcbiAgICAgICAgICAgIGxhYmVsOiBPYmplY3RVdGlscy5pc1N0cmluZyhwcm9wZXJ0eS5sYWJlbCkgPyBwcm9wZXJ0eS5sYWJlbCA6IHByb3BlcnR5LmlkLFxyXG4gICAgICAgICAgICBoaWRkZW46IHByb3BlcnR5LmhpZGRlbixcclxuICAgICAgICAgICAgZGlzYWJsZWQ6IHByb3BlcnR5LmRpc2FibGVkLFxyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLFxyXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2VzLFxyXG4gICAgICAgICAgICBhZGRpdGlvbmFsOiBPYmplY3QuYXNzaWduKHt9LCBwcm9wZXJ0eSlcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGdldEZvcm1BcnJheUNvbmZpZyhwcm9wZXJ0eTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSwgc2NoZW1hOiBJT3BlbkFwaVNjaGVtYSwgY3VzdG9taXplTW9kZWxzOiBGb3JtTW9kZWxDdXN0b21pemVyV3JhcCk6IER5bmFtaWNGb3JtQXJyYXlNb2RlbENvbmZpZyB7XHJcbiAgICAgICAgY29uc3Qgc3ViU2NoZW1hcyA9IGZpbmRSZWZzKHByb3BlcnR5KS5tYXAocmVmID0+IHRoaXMuc2NoZW1hc1tyZWZdKTtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihcclxuICAgICAgICAgICAgdGhpcy5nZXRGb3JtQ29udHJvbENvbmZpZyhwcm9wZXJ0eSwgc2NoZW1hKSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgZ3JvdXBGYWN0b3J5OiAoKSA9PiBtZXJnZUZvcm1Nb2RlbHMoc3ViU2NoZW1hcy5tYXAocyA9PiB0aGlzLmdldEZvcm1Nb2RlbEZvclNjaGVtYURlZihzLCBjdXN0b21pemVNb2RlbHMpKSksXHJcbiAgICAgICAgICAgICAgICBzb3J0YWJsZTogcHJvcGVydHkuc29ydGFibGUgfHwgZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB1c2VUYWJzOiBwcm9wZXJ0eS51c2VUYWJzIHx8IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgYWRkSXRlbTogcHJvcGVydHkuYWRkSXRlbSAhPT0gZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBpbnNlcnRJdGVtOiBwcm9wZXJ0eS5pbnNlcnRJdGVtICE9PSBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGNsb25lSXRlbTogcHJvcGVydHkuY2xvbmVJdGVtICE9PSBmYWxzZSxcclxuICAgICAgICAgICAgICAgIG1vdmVJdGVtOiBwcm9wZXJ0eS5tb3ZlSXRlbSAhPT0gZmFsc2UsXHJcbiAgICAgICAgICAgICAgICByZW1vdmVJdGVtOiBwcm9wZXJ0eS5yZW1vdmVJdGVtICE9PSBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGNsZWFySXRlbXM6IHByb3BlcnR5LmNsZWFySXRlbXMgIT09IGZhbHNlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEZvcm1Hcm91cENvbmZpZyhwcm9wZXJ0eTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSwgc2NoZW1hOiBJT3BlbkFwaVNjaGVtYSwgY3VzdG9taXplTW9kZWxzOiBGb3JtTW9kZWxDdXN0b21pemVyV3JhcCk6IER5bmFtaWNGb3JtR3JvdXBNb2RlbENvbmZpZyB7XHJcbiAgICAgICAgY29uc3Qgc3ViU2NoZW1hcyA9IGZpbmRSZWZzKHByb3BlcnR5KS5tYXAocmVmID0+IHRoaXMuc2NoZW1hc1tyZWZdKTtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihcclxuICAgICAgICAgICAgdGhpcy5nZXRGb3JtQ29udHJvbENvbmZpZyhwcm9wZXJ0eSwgc2NoZW1hKSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgZ3JvdXA6IG1lcmdlRm9ybU1vZGVscyhzdWJTY2hlbWFzLm1hcChzID0+IHRoaXMuZ2V0Rm9ybU1vZGVsRm9yU2NoZW1hRGVmKHMsIGN1c3RvbWl6ZU1vZGVscykpKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGb3JtSW5wdXRDb25maWcocHJvcGVydHk6IElPcGVuQXBpU2NoZW1hUHJvcGVydHksIHNjaGVtYTogSU9wZW5BcGlTY2hlbWEpOiBEeW5hbWljSW5wdXRNb2RlbENvbmZpZyB7XHJcbiAgICAgICAgbGV0IGlucHV0VHlwZSA9IFN0cmluZ1V0aWxzLmhhcyhwcm9wZXJ0eS5pZCwgXCJwYXNzd29yZFwiLCBcIlBhc3N3b3JkXCIpID8gXCJwYXNzd29yZFwiIDogKHByb3BlcnR5LmZvcm1hdCB8fCBwcm9wZXJ0eS5pdGVtcz8udHlwZSB8fCBwcm9wZXJ0eS50eXBlKTtcclxuICAgICAgICBzd2l0Y2ggKGlucHV0VHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIFwiYm9vbGVhblwiOlxyXG4gICAgICAgICAgICAgICAgaW5wdXRUeXBlID0gXCJjaGVja2JveFwiO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ0ZXh0YXJlYVwiOlxyXG4gICAgICAgICAgICAgICAgaW5wdXRUeXBlID0gXCJ0ZXh0YXJlYVwiO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJpbnRlZ2VyXCI6XHJcbiAgICAgICAgICAgICAgICBpbnB1dFR5cGUgPSBcIm51bWJlclwiO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHN1YiA9IHByb3BlcnR5LnR5cGUgPT0gXCJhcnJheVwiID8gcHJvcGVydHkuaXRlbXMgfHwgcHJvcGVydHkgOiBwcm9wZXJ0eTtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihcclxuICAgICAgICAgICAgdGhpcy5nZXRGb3JtQ29udHJvbENvbmZpZyhwcm9wZXJ0eSwgc2NoZW1hKSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaW5wdXRUeXBlLFxyXG4gICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlOiBwcm9wZXJ0eS5hdXRvQ29tcGxldGUgfHwgXCJvZmZcIixcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiBwcm9wZXJ0eS50eXBlID09IFwiYXJyYXlcIixcclxuICAgICAgICAgICAgICAgIGFjY2VwdDogT2JqZWN0VXRpbHMuaXNTdHJpbmcocHJvcGVydHkuYWNjZXB0KSA/IHByb3BlcnR5LmFjY2VwdCA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBtYXNrOiBPYmplY3RVdGlscy5pc1N0cmluZyhwcm9wZXJ0eS5tYXNrKSA/IHByb3BlcnR5Lm1hc2sgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgcGF0dGVybjogT2JqZWN0VXRpbHMuaXNTdHJpbmcocHJvcGVydHkucGF0dGVybikgPyBwcm9wZXJ0eS5wYXR0ZXJuIDogbnVsbCxcclxuICAgICAgICAgICAgICAgIHN0ZXA6IGlzTmFOKHN1Yi5zdGVwKSA/IChpc05hTihwcm9wZXJ0eS5zdGVwKSA/IDEgOiBwcm9wZXJ0eS5zdGVwKSA6IHN1Yi5zdGVwLFxyXG4gICAgICAgICAgICAgICAgbWluOiBpc05hTihzdWIubWluaW11bSkgPyBNSU5fSU5QVVRfTlVNIDogc3ViLm1pbmltdW0sXHJcbiAgICAgICAgICAgICAgICBtYXg6IGlzTmFOKHN1Yi5tYXhpbXVtKSA/IE1BWF9JTlBVVF9OVU0gOiBzdWIubWF4aW11bSxcclxuICAgICAgICAgICAgICAgIG1pbkxlbmd0aDogaXNOYU4oc3ViLm1pbkxlbmd0aCkgPyAwIDogc3ViLm1pbkxlbmd0aCxcclxuICAgICAgICAgICAgICAgIG1heExlbmd0aDogaXNOYU4oc3ViLm1heExlbmd0aCkgPyBNQVhfSU5QVVRfTlVNIDogc3ViLm1heExlbmd0aCxcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wZXJ0eS5wbGFjZWhvbGRlciB8fCBcIlwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEZvcm1FZGl0b3JDb25maWcocHJvcGVydHk6IElPcGVuQXBpU2NoZW1hUHJvcGVydHksIHNjaGVtYTogSU9wZW5BcGlTY2hlbWEpOiBEeW5hbWljRWRpdG9yTW9kZWxDb25maWcge1xyXG4gICAgICAgIGNvbnN0IHN1YiA9IHByb3BlcnR5LnR5cGUgPT0gXCJhcnJheVwiID8gcHJvcGVydHkuaXRlbXMgfHwgcHJvcGVydHkgOiBwcm9wZXJ0eTtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihcclxuICAgICAgICAgICAgdGhpcy5nZXRGb3JtQ29udHJvbENvbmZpZyhwcm9wZXJ0eSwgc2NoZW1hKSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaW5wdXRUeXBlOiBwcm9wZXJ0eS5mb3JtYXQsXHJcbiAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU6IHByb3BlcnR5LmF1dG9Db21wbGV0ZSB8fCBcIm9mZlwiLFxyXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHByb3BlcnR5LnR5cGUgPT0gXCJhcnJheVwiLFxyXG4gICAgICAgICAgICAgICAgYWNjZXB0OiBPYmplY3RVdGlscy5pc1N0cmluZyhwcm9wZXJ0eS5hY2NlcHQpID8gcHJvcGVydHkuYWNjZXB0IDogbnVsbCxcclxuICAgICAgICAgICAgICAgIG1hc2s6IE9iamVjdFV0aWxzLmlzU3RyaW5nKHByb3BlcnR5Lm1hc2spID8gcHJvcGVydHkubWFzayA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBwYXR0ZXJuOiBPYmplY3RVdGlscy5pc1N0cmluZyhwcm9wZXJ0eS5wYXR0ZXJuKSA/IHByb3BlcnR5LnBhdHRlcm4gOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgc3RlcDogaXNOYU4oc3ViLnN0ZXApID8gKGlzTmFOKHByb3BlcnR5LnN0ZXApID8gMSA6IHByb3BlcnR5LnN0ZXApIDogc3ViLnN0ZXAsXHJcbiAgICAgICAgICAgICAgICBtaW5MZW5ndGg6IGlzTmFOKHN1Yi5taW5MZW5ndGgpID8gMCA6IHN1Yi5taW5MZW5ndGgsXHJcbiAgICAgICAgICAgICAgICBtYXhMZW5ndGg6IGlzTmFOKHN1Yi5tYXhMZW5ndGgpID8gTUFYX0lOUFVUX05VTSA6IHN1Yi5tYXhMZW5ndGgsXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcGVydHkucGxhY2Vob2xkZXIgfHwgXCJcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGb3JtVGV4dGFyZWFDb25maWcocHJvcGVydHk6IElPcGVuQXBpU2NoZW1hUHJvcGVydHksIHNjaGVtYTogSU9wZW5BcGlTY2hlbWEpOiBEeW5hbWljVGV4dEFyZWFNb2RlbENvbmZpZyB7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybUNvbnRyb2xDb25maWcocHJvcGVydHksIHNjaGVtYSksXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGNvbHM6IHByb3BlcnR5LmNvbHMgfHwgbnVsbCxcclxuICAgICAgICAgICAgICAgIHJvd3M6IHByb3BlcnR5LnJvd3MgfHwgMTAsXHJcbiAgICAgICAgICAgICAgICB3cmFwOiBwcm9wZXJ0eS53cmFwIHx8IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlOiBwcm9wZXJ0eS5hdXRvQ29tcGxldGUgfHwgXCJvZmZcIixcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiBwcm9wZXJ0eS50eXBlID09IFwiYXJyYXlcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGb3JtU2VsZWN0T3B0aW9ucyhwcm9wZXJ0eTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSwgc2NoZW1hOiBJT3BlbkFwaVNjaGVtYSkge1xyXG4gICAgICAgIGNvbnN0ICRlbnVtID0gcHJvcGVydHkuaXRlbXM/LmVudW0gfHwgcHJvcGVydHkuZW51bTtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSgkZW51bSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBGb3JtU2VsZWN0U3ViamVjdCgoc2VsZWN0TW9kZWwsIGZvcm1Db250cm9sKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zID0gJGVudW0ubWFwKHZhbHVlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IHByb3BlcnR5LnRyYW5zbGF0YWJsZSA/IGAke3Byb3BlcnR5LmlkfS4ke3ZhbHVlfWAgOiBgJHt2YWx1ZX1gO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7dmFsdWUsIGxhYmVsfTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZml4U2VsZWN0T3B0aW9ucyhzZWxlY3RNb2RlbCwgZm9ybUNvbnRyb2wsIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzU3RyaW5nV2l0aFZhbChwcm9wZXJ0eS5vcHRpb25zUGF0aCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBGb3JtU2VsZWN0U3ViamVjdChhc3luYyAoc2VsZWN0TW9kZWwsIGNvbnRyb2wsIHJvb3QsIGluZGV4ZXMpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBwYXRoID0gcHJvcGVydHkub3B0aW9uc1BhdGggYXMgc3RyaW5nO1xyXG4gICAgICAgICAgICAgICAgbGV0IHRhcmdldCA9IGNvbnRyb2wgYXMgQWJzdHJhY3RDb250cm9sO1xyXG4gICAgICAgICAgICAgICAgbGV0IG1vZGVsOiBEeW5hbWljUGF0aGFibGUgfCBEeW5hbWljRm9ybU1vZGVsID0gc2VsZWN0TW9kZWw7XHJcbiAgICAgICAgICAgICAgICBpZiAocGF0aC5zdGFydHNXaXRoKFwiJHJvb3RcIikpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHIoNSk7XHJcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRhcmdldC5wYXJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0LnBhcmVudDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbW9kZWwgPSByb290O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgd2hpbGUgKHBhdGguc3RhcnRzV2l0aChcIi5cIikpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHIoMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldC5wYXJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0LnBhcmVudDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbW9kZWwgPSAobW9kZWwgYXMgRHluYW1pY1BhdGhhYmxlKS5wYXJlbnQgfHwgcm9vdDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGluZGV4ZXMpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKGtleSwgaW5kZXhlc1trZXldKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgbW9kZWwgPSB0aGlzLmZpbmRNb2RlbEJ5UGF0aChtb2RlbCwgcGF0aC5zcGxpdChcIi5cIikpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbW9kZWxPcHRpb25zID0gbW9kZWwgaW5zdGFuY2VvZiBEeW5hbWljU2VsZWN0TW9kZWxcclxuICAgICAgICAgICAgICAgICAgICA/IGF3YWl0IGZpcnN0VmFsdWVGcm9tKG1vZGVsLm9wdGlvbnMkKSA6XHJcbiAgICAgICAgICAgICAgICAgICAgW107XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IE9iamVjdFV0aWxzLmdldFZhbHVlKHRhcmdldC52YWx1ZSwgcGF0aCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zID0gKCFPYmplY3RVdGlscy5pc0FycmF5KHZhbHVlKSA/IFtdIDogdmFsdWUpLm1hcCh2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZWxPcHRpb24gPSBtb2RlbE9wdGlvbnMuZmluZCh0ID0+IHQudmFsdWUgPT0gdmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7dmFsdWUsIGxhYmVsOiBtb2RlbE9wdGlvbj8ubGFiZWwgfHwgdmFsdWV9O1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5maXhTZWxlY3RPcHRpb25zKHNlbGVjdE1vZGVsLCBjb250cm9sLCBvcHRpb25zKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXcgRm9ybVNlbGVjdFN1YmplY3QoYXN5bmMgKHNlbGVjdE1vZGVsLCBjb250cm9sKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBpLmNhY2hlW3Byb3BlcnR5LmVuZHBvaW50XSA9IHRoaXMuYXBpLmNhY2hlW3Byb3BlcnR5LmVuZHBvaW50XSB8fCB0aGlzLmFwaS5saXN0KHByb3BlcnR5LmVuZHBvaW50LCB0aGlzLmFwaS5tYWtlTGlzdFBhcmFtcygxLCAtMSkpLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuaXRlbXMubWFwKGkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBpLmlkIHx8IGkuX2lkLCBsYWJlbDogaVtwcm9wZXJ0eS5sYWJlbEZpZWxkXSB8fCBpLmxhYmVsIHx8IGkuaWQgfHwgaS5faWRcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gKGF3YWl0IHRoaXMuYXBpLmNhY2hlW3Byb3BlcnR5LmVuZHBvaW50XSkubWFwKHQgPT4gT2JqZWN0LmFzc2lnbih7fSwgdCkpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maXhTZWxlY3RPcHRpb25zKHNlbGVjdE1vZGVsLCBjb250cm9sLCBvcHRpb25zKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGb3JtU2VsZWN0Q29uZmlnKHByb3BlcnR5OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LCBzY2hlbWE6IElPcGVuQXBpU2NoZW1hKTogRHluYW1pY1NlbGVjdE1vZGVsQ29uZmlnPGFueT4ge1xyXG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxyXG4gICAgICAgICAgICB0aGlzLmdldEZvcm1Db250cm9sQ29uZmlnKHByb3BlcnR5LCBzY2hlbWEpLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLmdldEZvcm1TZWxlY3RPcHRpb25zKHByb3BlcnR5LCBzY2hlbWEpLFxyXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHByb3BlcnR5LnR5cGUgPT0gXCJhcnJheVwiLFxyXG4gICAgICAgICAgICAgICAgZ3JvdXBCeTogcHJvcGVydHkuZ3JvdXBCeSxcclxuICAgICAgICAgICAgICAgIGlubGluZTogcHJvcGVydHkuaW5saW5lXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEZvcm1VcGxvYWRDb25maWcocHJvcGVydHk6IElPcGVuQXBpU2NoZW1hUHJvcGVydHksIHNjaGVtYTogSU9wZW5BcGlTY2hlbWEpOiBEeW5hbWljRmlsZVVwbG9hZE1vZGVsQ29uZmlnIHtcclxuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmFwaS51cmwocHJvcGVydHkudXJsIHx8IFwiYXNzZXRzXCIpO1xyXG4gICAgICAgIGNvbnN0IHthY2NlcHQsIGF1dG9VcGxvYWQsIG1heFNpemUsIG1pblNpemUsIHJlbW92ZVVybCwgc2hvd0ZpbGVMaXN0fSA9IHByb3BlcnR5O1xyXG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHRoaXMuZ2V0Rm9ybUNvbnRyb2xDb25maWcocHJvcGVydHksIHNjaGVtYSksIHtcclxuICAgICAgICAgICAgdXJsLFxyXG4gICAgICAgICAgICBhY2NlcHQsXHJcbiAgICAgICAgICAgIGF1dG9VcGxvYWQsXHJcbiAgICAgICAgICAgIG1heFNpemUsXHJcbiAgICAgICAgICAgIG1pblNpemUsXHJcbiAgICAgICAgICAgIHJlbW92ZVVybCxcclxuICAgICAgICAgICAgc2hvd0ZpbGVMaXN0XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Rm9ybUNoZWNrYm94Q29uZmlnKHByb3BlcnR5OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LCBzY2hlbWE6IElPcGVuQXBpU2NoZW1hKTogRHluYW1pY0NoZWNrYm94TW9kZWxDb25maWcge1xyXG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxyXG4gICAgICAgICAgICB0aGlzLmdldEZvcm1Db250cm9sQ29uZmlnKHByb3BlcnR5LCBzY2hlbWEpLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlOiBwcm9wZXJ0eS5pbmRldGVybWluYXRlIHx8IGZhbHNlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb25lRm9ybUFycmF5R3JvdXAoaW5kZXg6IG51bWJlciwgZm9ybUFycmF5OiBGb3JtQXJyYXksIGZvcm1BcnJheU1vZGVsOiBEeW5hbWljRm9ybUFycmF5TW9kZWwpIHtcclxuICAgICAgICB0aGlzLmluc2VydEZvcm1BcnJheUdyb3VwKGluZGV4LCBmb3JtQXJyYXksIGZvcm1BcnJheU1vZGVsKTtcclxuICAgICAgICB0aGlzLnBhdGNoR3JvdXAoZm9ybUFycmF5LmF0KGluZGV4ICsgMSkudmFsdWUsIGZvcm1BcnJheU1vZGVsLmdyb3Vwc1tpbmRleF0uZ3JvdXAsIGZvcm1BcnJheS5hdChpbmRleCkgYXMgRm9ybUdyb3VwKTtcclxuICAgICAgICBmb3JtQXJyYXlNb2RlbC5maWx0ZXJHcm91cHMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYXN5bmMgZml4U2VsZWN0T3B0aW9ucyhtb2RlbDogRHluYW1pY1NlbGVjdE1vZGVsPGFueT4sIGNvbnRyb2w6IEZvcm1Db250cm9sLCBvcHRpb25zOiBEeW5hbWljRm9ybU9wdGlvbkNvbmZpZzxhbnk+W10pOiBQcm9taXNlPER5bmFtaWNGb3JtT3B0aW9uQ29uZmlnPGFueT5bXT4ge1xyXG4gICAgICAgIGlmICghb3B0aW9ucykgcmV0dXJuIFtdO1xyXG4gICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgb3B0aW9uLmNsYXNzZXMgPSBbb3B0aW9uLmNsYXNzZXMsIG1vZGVsLmdldENsYXNzZXMob3B0aW9uLCBtb2RlbCwgY29udHJvbCwgdGhpcy5pbmplY3RvcildLmZpbHRlcihpc1N0cmluZ1dpdGhWYWwpLmpvaW4oXCIgXCIpO1xyXG4gICAgICAgICAgICBvcHRpb24ubGFiZWwgPSBhd2FpdCB0aGlzLmxhbmd1YWdlLmdldFRyYW5zbGF0aW9uKG9wdGlvbi5sYWJlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBvcHRpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRWYWxpZGF0b3JzKHByb3BlcnR5OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LCBzY2hlbWE6IElPcGVuQXBpU2NoZW1hKTogRHluYW1pY1ZhbGlkYXRvcnNDb25maWcge1xyXG4gICAgICAgIGNvbnN0IHZhbGlkYXRvcnM6IER5bmFtaWNWYWxpZGF0b3JzQ29uZmlnID0ge307XHJcbiAgICAgICAgaWYgKE9iamVjdFV0aWxzLmlzQXJyYXkoc2NoZW1hLnJlcXVpcmVkKSAmJiBzY2hlbWEucmVxdWlyZWQuaW5kZXhPZihwcm9wZXJ0eS5pZCkgPj0gMCkge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLnJlcXVpcmVkID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hZGRQcm9wZXJ0eVZhbGlkYXRvcnModmFsaWRhdG9ycywgcHJvcGVydHkpO1xyXG4gICAgICAgIHRoaXMuYWRkSXRlbXNWYWxpZGF0b3JzKHZhbGlkYXRvcnMsIHByb3BlcnR5Lml0ZW1zKTtcclxuICAgICAgICByZXR1cm4gdmFsaWRhdG9ycztcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYWRkUHJvcGVydHlWYWxpZGF0b3JzKHZhbGlkYXRvcnM6IER5bmFtaWNWYWxpZGF0b3JzQ29uZmlnLCBwcm9wZXJ0eTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSk6IHZvaWQge1xyXG4gICAgICAgIGlmICghcHJvcGVydHkpIHJldHVybjtcclxuICAgICAgICBpZiAoIWlzTmFOKHByb3BlcnR5Lm1pbkxlbmd0aCkpIHtcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5taW5MZW5ndGggPSBwcm9wZXJ0eS5taW5MZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaXNOYU4ocHJvcGVydHkubWF4TGVuZ3RoKSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLm1heExlbmd0aCA9IHByb3BlcnR5Lm1heExlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFpc05hTihwcm9wZXJ0eS5taW5pbXVtKSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLm1pbiA9IHByb3BlcnR5Lm1pbmltdW07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaXNOYU4ocHJvcGVydHkubWF4aW11bSkpIHtcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5tYXggPSBwcm9wZXJ0eS5tYXhpbXVtO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzd2l0Y2ggKHByb3BlcnR5LmZvcm1hdCkge1xyXG4gICAgICAgICAgICBjYXNlIFwiZW1haWxcIjpcclxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnMuZW1haWwgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhZGRJdGVtc1ZhbGlkYXRvcnModmFsaWRhdG9yczogRHluYW1pY1ZhbGlkYXRvcnNDb25maWcsIGl0ZW1zOiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFpdGVtcykgcmV0dXJuO1xyXG4gICAgICAgIGlmICghaXNOYU4oaXRlbXMubWluTGVuZ3RoKSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLml0ZW1zTWluTGVuZ3RoID0gaXRlbXMubWluTGVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWlzTmFOKGl0ZW1zLm1heExlbmd0aCkpIHtcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5pdGVtc01heExlbmd0aCA9IGl0ZW1zLm1heExlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFpc05hTihpdGVtcy5taW5pbXVtKSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLml0ZW1zTWluVmFsdWUgPSBpdGVtcy5taW5pbXVtO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWlzTmFOKGl0ZW1zLm1heGltdW0pKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMuaXRlbXNNYXhWYWx1ZSA9IGl0ZW1zLm1heGltdW07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
493
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LWR5bmFtaWMtZm9ybS9zZXJ2aWNlcy9keW5hbWljLWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFrQixTQUFTLEVBQWUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEYsT0FBTyxFQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUNILG9CQUFvQixFQUVwQixzQkFBc0IsRUFLdEIscUJBQXFCLEVBR3JCLGtCQUFrQixJQUFJLElBQUksRUFJMUIsaUJBQWlCLEVBR2pCLG9CQUFvQixFQUd2QixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFNSCxXQUFXLEVBQ1gsY0FBYyxFQUNkLFdBQVcsRUFDZCxNQUFNLGtCQUFrQixDQUFDO0FBSTFCLE9BQU8sRUFBQyxjQUFjLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2SCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFDLGtCQUFrQixFQUEyQixNQUFNLCtCQUErQixDQUFDO0FBQzNGLE9BQU8sRUFDSCwwQkFBMEIsRUFDMUIscUJBQXFCLEVBRXhCLE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxFQUEwQixrQkFBa0IsRUFBMkIsTUFBTSwrQkFBK0IsQ0FBQzs7OztBQUlwSCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsSUFBSTtJQVl4QyxZQUFZLEVBQStCLEVB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LEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztTQUNyQztRQUNELFFBQVEsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUNyQixLQUFLLE9BQU87Z0JBQ1IsVUFBVSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLE1BQU07U0FDYjtJQUNMLENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxVQUFtQyxFQUFFLEtBQTZCO1FBQzNGLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTztRQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN6QixVQUFVLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7U0FDL0M7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN6QixVQUFVLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7U0FDL0M7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN2QixVQUFVLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7U0FDNUM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN2QixVQUFVLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7U0FDNUM7SUFDTCxDQUFDOzsrR0FwZ0JRLGtCQUFrQix5R0FjUCxjQUFjLGFBQ2QsUUFBUTttSEFmbkIsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVU7OzBCQWVNLE1BQU07MkJBQUMsY0FBYzs7MEJBQ3JCLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rvcn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7Zmlyc3RWYWx1ZUZyb20sIFN1YmplY3R9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7XHJcbiAgICBEeW5hbWljQ2hlY2tib3hNb2RlbCxcclxuICAgIER5bmFtaWNDaGVja2JveE1vZGVsQ29uZmlnLFxyXG4gICAgRHluYW1pY0ZpbGVVcGxvYWRNb2RlbCxcclxuICAgIER5bmFtaWNGaWxlVXBsb2FkTW9kZWxDb25maWcsXHJcbiAgICBEeW5hbWljRm9ybUNvbXBvbmVudFNlcnZpY2UsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbE1vZGVsQ29uZmlnLFxyXG4gICAgRHluYW1pY0Zvcm1Hcm91cE1vZGVsLFxyXG4gICAgRHluYW1pY0Zvcm1Hcm91cE1vZGVsQ29uZmlnLFxyXG4gICAgRHluYW1pY0Zvcm1Nb2RlbCxcclxuICAgIER5bmFtaWNGb3JtU2VydmljZSBhcyBCYXNlLFxyXG4gICAgRHluYW1pY0Zvcm1WYWxpZGF0aW9uU2VydmljZSxcclxuICAgIER5bmFtaWNGb3JtVmFsdWVDb250cm9sTW9kZWwsXHJcbiAgICBEeW5hbWljRm9ybVZhbHVlQ29udHJvbE1vZGVsQ29uZmlnLFxyXG4gICAgRHluYW1pY0lucHV0TW9kZWwsXHJcbiAgICBEeW5hbWljSW5wdXRNb2RlbENvbmZpZyxcclxuICAgIER5bmFtaWNQYXRoYWJsZSxcclxuICAgIER5bmFtaWNUZXh0QXJlYU1vZGVsLFxyXG4gICAgRHluYW1pY1RleHRBcmVhTW9kZWxDb25maWcsXHJcbiAgICBEeW5hbWljVmFsaWRhdG9yc0NvbmZpZ1xyXG59IGZyb20gXCJAbmctZHluYW1pYy1mb3Jtcy9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgICBJQXBpU2VydmljZSxcclxuICAgIElMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBJT3BlbkFwaVNjaGVtYSxcclxuICAgIElPcGVuQXBpU2NoZW1hUHJvcGVydHksXHJcbiAgICBJT3BlbkFwaVNjaGVtYXMsXHJcbiAgICBPYmplY3RVdGlscyxcclxuICAgIE9wZW5BcGlTZXJ2aWNlLFxyXG4gICAgU3RyaW5nVXRpbHNcclxufSBmcm9tIFwiQHN0ZW15L25neC11dGlsc1wiO1xyXG5cclxuaW1wb3J0IHtGb3JtQ29udHJvbFNlcmlhbGl6ZXIsIEZvcm1Nb2RlbEN1c3RvbWl6ZXIsIEZvcm1Nb2RlbEN1c3RvbWl6ZXJXcmFwLCBNb2RlbFR5cGV9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbmltcG9ydCB7RURJVE9SX0ZPUk1BVFMsIGZpbmRSZWZzLCBpc1N0cmluZ1dpdGhWYWwsIE1BWF9JTlBVVF9OVU0sIG1lcmdlRm9ybU1vZGVscywgTUlOX0lOUFVUX05VTX0gZnJvbSBcIi4uL3V0aWxzL21pc2NcIjtcclxuaW1wb3J0IHtGb3JtU2VsZWN0U3ViamVjdH0gZnJvbSBcIi4uL3V0aWxzL2Zvcm0tc2VsZWN0LXN1YmplY3RcIjtcclxuaW1wb3J0IHtGb3JtU3ViamVjdH0gZnJvbSBcIi4uL3V0aWxzL2Zvcm0tc3ViamVjdFwiO1xyXG5pbXBvcnQge0R5bmFtaWNFZGl0b3JNb2RlbCwgRHluYW1pY0VkaXRvck1vZGVsQ29uZmlnfSBmcm9tIFwiLi4vdXRpbHMvZHluYW1pYy1lZGl0b3IubW9kZWxcIjtcclxuaW1wb3J0IHtcclxuICAgIER5bmFtaWNGb3JtQXJyYXlHcm91cE1vZGVsLFxyXG4gICAgRHluYW1pY0Zvcm1BcnJheU1vZGVsLFxyXG4gICAgRHluYW1pY0Zvcm1BcnJheU1vZGVsQ29uZmlnXHJcbn0gZnJvbSBcIi4uL3V0aWxzL2R5bmFtaWMtZm9ybS1hcnJheS5tb2RlbFwiO1xyXG5pbXBvcnQge0R5bmFtaWNGb3JtT3B0aW9uQ29uZmlnLCBEeW5hbWljU2VsZWN0TW9kZWwsIER5bmFtaWNTZWxlY3RNb2RlbENvbmZpZ30gZnJvbSBcIi4uL3V0aWxzL2R5bmFtaWMtc2VsZWN0Lm1vZGVsXCI7XHJcbmltcG9ydCB7RHluYW1pY0Jhc2VGb3JtQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50cy9iYXNlL2R5bmFtaWMtYmFzZS1mb3JtLmNvbXBvbmVudFwiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1TZXJ2aWNlIGV4dGVuZHMgQmFzZSB7XHJcblxyXG4gICAgZ2V0IGFwaSgpOiBJQXBpU2VydmljZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMub3BlbkFwaS5hcGk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGxhbmd1YWdlKCk6IElMYW5ndWFnZVNlcnZpY2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5sYW5ndWFnZTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgc2NoZW1hczogSU9wZW5BcGlTY2hlbWFzO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGNzOiBEeW5hbWljRm9ybUNvbXBvbmVudFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICB2czogRHluYW1pY0Zvcm1WYWxpZGF0aW9uU2VydmljZSxcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoT3BlbkFwaVNlcnZpY2UpIHJlYWRvbmx5IG9wZW5BcGk6IE9wZW5BcGlTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgQEluamVjdChJbmplY3RvcikgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICAgICAgc3VwZXIoY3MsIHZzKTtcclxuICAgIH1cclxuXHJcbiAgICBwYXRjaEdyb3VwKHZhbHVlOiBhbnksIGZvcm1Nb2RlbDogRHluYW1pY0Zvcm1Nb2RlbCwgZm9ybUdyb3VwOiBGb3JtR3JvdXApOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnBhdGNoVmFsdWVSZWN1cnNpdmUodmFsdWUsIGZvcm1Nb2RlbCwgZm9ybUdyb3VwKTtcclxuICAgICAgICBmb3JtR3JvdXAucGF0Y2hWYWx1ZShPYmplY3RVdGlscy5jb3B5KHZhbHVlKSk7XHJcbiAgICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcGF0Y2hGb3JtKHZhbHVlOiBhbnksIGNvbXBvbmVudDogRHluYW1pY0Jhc2VGb3JtQ29tcG9uZW50KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5wYXRjaFZhbHVlUmVjdXJzaXZlKHZhbHVlLCBjb21wb25lbnQubW9kZWwsIGNvbXBvbmVudC5ncm91cCk7XHJcbiAgICAgICAgY29tcG9uZW50Lmdyb3VwLnBhdGNoVmFsdWUodmFsdWUpO1xyXG4gICAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcyhjb21wb25lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlcmlhbGl6ZShmb3JtTW9kZWw6IER5bmFtaWNGb3JtTW9kZWwsIGZvcm1Hcm91cDogRm9ybUdyb3VwKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJpYWxpemVSZWN1cnNpdmUoZm9ybU1vZGVsLCBmb3JtR3JvdXApO1xyXG4gICAgfVxyXG5cclxuICAgIG5vdGlmeUNoYW5nZXMoZm9ybU1vZGVsOiBEeW5hbWljRm9ybU1vZGVsLCBmb3JtR3JvdXA6IEZvcm1Hcm91cCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubm90aWZ5Q2hhbmdlc1JlY3Vyc2l2ZShmb3JtTW9kZWwsIGZvcm1Hcm91cCwgZm9ybU1vZGVsKTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93RXJyb3JzKGZvcm06IER5bmFtaWNCYXNlRm9ybUNvbXBvbmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2hvd0Vycm9yc0Zvckdyb3VwKGZvcm0uZ3JvdXApO1xyXG4gICAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcyhmb3JtKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcGF0Y2hWYWx1ZVJlY3Vyc2l2ZSh2YWx1ZTogYW55LCBmb3JtTW9kZWw6IER5bmFtaWNGb3JtTW9kZWwsIGZvcm1Hcm91cDogRm9ybUdyb3VwKTogdm9pZCB7XHJcbiAgICAgICAgT2JqZWN0LmtleXModmFsdWUpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc3ViTW9kZWwgPSB0aGlzLmZpbmRNb2RlbEJ5SWQoa2V5LCBmb3JtTW9kZWwpO1xyXG4gICAgICAgICAgICBjb25zdCBzdWJWYWx1ZSA9IHZhbHVlW2tleV07XHJcbiAgICAgICAgICAgIGlmICghc3ViTW9kZWwpIHJldHVybjtcclxuICAgICAgICAgICAgY29uc3Qgc3ViQ29udHJvbCA9IHRoaXMuZmluZENvbnRyb2xCeU1vZGVsKHN1Yk1vZGVsLCBmb3JtR3JvdXApO1xyXG4gICAgICAgICAgICBpZiAoc3ViTW9kZWwgaW5zdGFuY2VvZiBEeW5hbWljU2VsZWN0TW9kZWwgJiYgT2JqZWN0VXRpbHMuaXNPYmplY3Qoc3ViVmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZVtrZXldID0gc3ViVmFsdWUuaWQgfHwgc3ViVmFsdWUuX2lkIHx8IHN1YlZhbHVlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzdWJNb2RlbCBpbnN0YW5jZW9mIER5bmFtaWNGb3JtQXJyYXlNb2RlbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gQXJyYXkuaXNBcnJheShzdWJWYWx1ZSkgPyBzdWJWYWx1ZS5sZW5ndGggOiAwO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3ViQXJyYXkgPSBzdWJDb250cm9sIGFzIEZvcm1BcnJheTtcclxuICAgICAgICAgICAgICAgIHdoaWxlIChzdWJNb2RlbC5zaXplID4gbGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVGb3JtQXJyYXlHcm91cCgwLCBzdWJBcnJheSwgc3ViTW9kZWwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgd2hpbGUgKHN1Yk1vZGVsLnNpemUgPCBsZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydEZvcm1BcnJheUdyb3VwKHN1Yk1vZGVsLnNpemUsIHN1YkFycmF5LCBzdWJNb2RlbCBhcyBEeW5hbWljRm9ybUFycmF5TW9kZWwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1Nb2RlbCA9IHN1Yk1vZGVsLmdldChpKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhdGNoVmFsdWVSZWN1cnNpdmUoc3ViVmFsdWVbaV0sIGl0ZW1Nb2RlbC5ncm91cCwgc3ViQXJyYXkuYXQoaSkgYXMgRm9ybUdyb3VwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc3ViTW9kZWwgaW5zdGFuY2VvZiBEeW5hbWljRm9ybUdyb3VwTW9kZWwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucGF0Y2hWYWx1ZVJlY3Vyc2l2ZShzdWJWYWx1ZSwgc3ViTW9kZWwuZ3JvdXAsIHN1YkNvbnRyb2wgYXMgRm9ybUdyb3VwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhc3luYyBzZXJpYWxpemVSZWN1cnNpdmUoZm9ybU1vZGVsOiBEeW5hbWljRm9ybU1vZGVsLCBmb3JtR3JvdXA6IEZvcm1Hcm91cCk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XHJcbiAgICAgICAgaWYgKCFmb3JtTW9kZWwgfHwgIWZvcm1Hcm91cCB8fCAhZm9ybUdyb3VwLnZhbHVlKSByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIGZvciAoY29uc3QgaSBpbiBmb3JtTW9kZWwpIHtcclxuICAgICAgICAgICAgY29uc3Qgc3ViTW9kZWwgPSBmb3JtTW9kZWxbaV0gYXMgRHluYW1pY0Zvcm1WYWx1ZUNvbnRyb2xNb2RlbDxhbnk+O1xyXG4gICAgICAgICAgICBjb25zdCBzdWJDb250cm9sID0gdGhpcy5maW5kQ29udHJvbEJ5TW9kZWwoc3ViTW9kZWwsIGZvcm1Hcm91cCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlcmlhbGl6ZXIgPSBzdWJNb2RlbC5hZGRpdGlvbmFsPy5zZXJpYWxpemVyIGFzIEZvcm1Db250cm9sU2VyaWFsaXplcjtcclxuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWxzLmlzRnVuY3Rpb24oc2VyaWFsaXplcikpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdFtzdWJNb2RlbC5pZF0gPSBhd2FpdCBzZXJpYWxpemVyKHN1Yk1vZGVsLCBzdWJDb250cm9sKTtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzdWJNb2RlbCBpbnN0YW5jZW9mIER5bmFtaWNGb3JtQXJyYXlNb2RlbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gQXJyYXkuaXNBcnJheShzdWJDb250cm9sLnZhbHVlKSA/IHN1YkNvbnRyb2wudmFsdWUubGVuZ3RoIDogMDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN1YkFycmF5ID0gc3ViQ29udHJvbCBhcyBGb3JtQXJyYXk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXNBcnJheSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1Nb2RlbCA9IHN1Yk1vZGVsLmdldChpKTtcclxuICAgICAgICAgICAgICAgICAgICByZXNBcnJheS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNlcmlhbGl6ZVJlY3Vyc2l2ZShpdGVtTW9kZWwuZ3JvdXAsIHN1YkFycmF5LmF0KGkpIGFzIEZvcm1Hcm91cClcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVzdWx0W3N1Yk1vZGVsLmlkXSA9IHJlc0FycmF5O1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHN1Yk1vZGVsIGluc3RhbmNlb2YgRHluYW1pY0Zvcm1Hcm91cE1vZGVsKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHRbc3ViTW9kZWwuaWRdID0gYXdhaXQgdGhpcy5zZXJpYWxpemVSZWN1cnNpdmUoc3ViTW9kZWwuZ3JvdXAsIHN1YkNvbnRyb2wgYXMgRm9ybUdyb3VwKTtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzdWJNb2RlbCBpbnN0YW5jZW9mIER5bmFtaWNJbnB1dE1vZGVsICYmICFPYmplY3RVdGlscy5pc051bGxPclVuZGVmaW5lZChzdWJDb250cm9sLnZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0W3N1Yk1vZGVsLmlkXSA9IHN1Yk1vZGVsLmlucHV0VHlwZSA9PSBcIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgPyBwYXJzZUZsb2F0KChgJHtzdWJDb250cm9sLnZhbHVlfWAgfHwgXCIwXCIpLnJlcGxhY2UoLywvZ2ksIFwiLlwiKSkgPz8gbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgIDogc3ViQ29udHJvbC52YWx1ZTtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlc3VsdFtzdWJNb2RlbC5pZF0gPSBzdWJDb250cm9sLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBub3RpZnlDaGFuZ2VzUmVjdXJzaXZlKGZvcm1Nb2RlbDogRHluYW1pY0Zvcm1Nb2RlbCwgZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHJvb3Q6IER5bmFtaWNGb3JtTW9kZWwpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWZvcm1Nb2RlbCB8fCAhZm9ybUdyb3VwKSByZXR1cm47XHJcbiAgICAgICAgZm9yIChjb25zdCBpIGluIGZvcm1Nb2RlbCkge1xyXG4gICAgICAgICAgICBjb25zdCBzdWJNb2RlbCA9IGZvcm1Nb2RlbFtpXSBhcyBEeW5hbWljRm9ybVZhbHVlQ29udHJvbE1vZGVsPGFueT47XHJcbiAgICAgICAgICAgIGNvbnN0IHN1YkNvbnRyb2wgPSB0aGlzLmZpbmRDb250cm9sQnlNb2RlbChzdWJNb2RlbCwgZm9ybUdyb3VwKTtcclxuICAgICAgICAgICAgaWYgKHN1Yk1vZGVsIGluc3RhbmNlb2YgRHluYW1pY0Zvcm1BcnJheU1vZGVsKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZW5ndGggPSBBcnJheS5pc0FycmF5KHN1YkNvbnRyb2wudmFsdWUpID8gc3ViQ29udHJvbC52YWx1ZS5sZW5ndGggOiAwO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3ViQXJyYXkgPSBzdWJDb250cm9sIGFzIEZvcm1BcnJheTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtTW9kZWwgPSBzdWJNb2RlbC5nZXQoaSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlDaGFuZ2VzUmVjdXJzaXZlKGl0ZW1Nb2RlbC5ncm91cCwgc3ViQXJyYXkuYXQoaSkgYXMgRm9ybUdyb3VwLCByb290KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzdWJNb2RlbCBpbnN0YW5jZW9mIER5bmFtaWNGb3JtR3JvdXBNb2RlbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlDaGFuZ2VzUmVjdXJzaXZlKHN1Yk1vZGVsLmdyb3VwLCBzdWJDb250cm9sIGFzIEZvcm1Hcm91cCwgcm9vdCk7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdE9wdGlvbnMoc3ViTW9kZWwsIHN1YkNvbnRyb2wgYXMgRm9ybUNvbnRyb2wsIHJvb3QpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgdXBkYXRlU2VsZWN0T3B0aW9ucyhmb3JtQ29udHJvbE1vZGVsOiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCwgZm9ybUNvbnRyb2w6IEZvcm1Db250cm9sLCByb290OiBEeW5hbWljRm9ybU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGZvcm1Db250cm9sTW9kZWwgaW5zdGFuY2VvZiBEeW5hbWljU2VsZWN0TW9kZWwpIHtcclxuICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSBmb3JtQ29udHJvbE1vZGVsLm9wdGlvbnMkO1xyXG4gICAgICAgICAgICBpZiAob3B0aW9ucyBpbnN0YW5jZW9mIEZvcm1TdWJqZWN0KSB7XHJcbiAgICAgICAgICAgICAgICBvcHRpb25zLm5vdGlmeShmb3JtQ29udHJvbE1vZGVsLCBmb3JtQ29udHJvbCwgcm9vdCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgd2hpbGUgKG9wdGlvbnMgaW5zdGFuY2VvZiBTdWJqZWN0ICYmIG9wdGlvbnMuc291cmNlKSB7XHJcbiAgICAgICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucy5zb3VyY2U7XHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucyBpbnN0YW5jZW9mIEZvcm1TdWJqZWN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5ub3RpZnkoZm9ybUNvbnRyb2xNb2RlbCwgZm9ybUNvbnRyb2wsIHJvb3QpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBzaG93RXJyb3JzRm9yR3JvdXAoZm9ybUdyb3VwOiBGb3JtR3JvdXApOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWZvcm1Hcm91cCkgcmV0dXJuO1xyXG4gICAgICAgIGZvcm1Hcm91cC5tYXJrQXNUb3VjaGVkKHtvbmx5U2VsZjogdHJ1ZX0pO1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2xzID0gT2JqZWN0LmtleXMoZm9ybUdyb3VwLmNvbnRyb2xzKS5tYXAoaWQgPT4gZm9ybUdyb3VwLmNvbnRyb2xzW2lkXSk7XHJcbiAgICAgICAgdGhpcy5zaG93RXJyb3JzRm9yQ29udHJvbHMoY29udHJvbHMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBzaG93RXJyb3JzRm9yQ29udHJvbHMoY29udHJvbHM6IEFic3RyYWN0Q29udHJvbFtdKTogdm9pZCB7XHJcbiAgICAgICAgY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0Vycm9yc0Zvckdyb3VwKGNvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCh7b25seVNlbGY6IHRydWV9KTtcclxuICAgICAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0Vycm9yc0ZvckNvbnRyb2xzKGNvbnRyb2wuY29udHJvbHMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0Rm9ybU1vZGVsRm9yU2NoZW1hKG5hbWU6IHN0cmluZywgY3VzdG9taXplTW9kZWw/OiBGb3JtTW9kZWxDdXN0b21pemVyKTogUHJvbWlzZTxEeW5hbWljRm9ybU1vZGVsPiB7XHJcbiAgICAgICAgdGhpcy5hcGkuY2FjaGUgPSB7fTtcclxuICAgICAgICB0aGlzLnNjaGVtYXMgPSBhd2FpdCB0aGlzLm9wZW5BcGkuZ2V0U2NoZW1hcygpO1xyXG4gICAgICAgIGNvbnN0IGN1c3RvbWl6ZU1vZGVsczogRm9ybU1vZGVsQ3VzdG9taXplcldyYXAgPSAoXHJcbiAgICAgICAgICAgIHByb3BlcnR5OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LCBzY2hlbWE6IElPcGVuQXBpU2NoZW1hLFxyXG4gICAgICAgICAgICBtb2RlbFR5cGU6IE1vZGVsVHlwZSwgY29uZmlnOiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbENvbmZpZykgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtb2RlbCA9IG5ldyBtb2RlbFR5cGUoY29uZmlnKTtcclxuICAgICAgICAgICAgaWYgKCFPYmplY3RVdGlscy5pc0Z1bmN0aW9uKGN1c3RvbWl6ZU1vZGVsKSkgcmV0dXJuIFttb2RlbF07XHJcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGN1c3RvbWl6ZU1vZGVsKHByb3BlcnR5LCBzY2hlbWEsIG1vZGVsLCBjb25maWcsIHRoaXMuaW5qZWN0b3IpO1xyXG4gICAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShyZXMpID8gcmVzIDogW3Jlc107XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRGb3JtTW9kZWxGb3JTY2hlbWFEZWYodGhpcy5zY2hlbWFzW25hbWVdLCBjdXN0b21pemVNb2RlbHMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRGb3JtTW9kZWxGb3JTY2hlbWFEZWYoc2NoZW1hOiBJT3BlbkFwaVNjaGVtYSwgY3VzdG9taXplTW9kZWxzOiBGb3JtTW9kZWxDdXN0b21pemVyV3JhcCk6IER5bmFtaWNGb3JtTW9kZWwge1xyXG4gICAgICAgIGlmICghc2NoZW1hKVxyXG4gICAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHNjaGVtYS5wcm9wZXJ0aWVzIHx8IHt9KTtcclxuICAgICAgICBjb25zdCBjb250cm9sczogRHluYW1pY0Zvcm1Nb2RlbCA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgcCBvZiBrZXlzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5ID0gc2NoZW1hLnByb3BlcnRpZXNbcF07XHJcbiAgICAgICAgICAgIGNvbnRyb2xzLnB1c2goLi4udGhpcy5nZXRGb3JtQ29udHJvbE1vZGVscyhwcm9wZXJ0eSwgc2NoZW1hLCBjdXN0b21pemVNb2RlbHMpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNvbnRyb2xzLmZpbHRlcih0ID0+IG51bGwgIT09IHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBjaGVja0lzRWRpdG9yUHJvcGVydHkocHJvcGVydHk6IElPcGVuQXBpU2NoZW1hUHJvcGVydHkpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXByb3BlcnR5LmZvcm1hdCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHJldHVybiBFRElUT1JfRk9STUFUUy5pbmRleE9mKHByb3BlcnR5LmZvcm1hdCkgPj0gMCB8fCBwcm9wZXJ0eS5mb3JtYXQuZW5kc1dpdGgoXCJzY3JpcHRcIik7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldEZvcm1Db250cm9sTW9kZWxzKHByb3BlcnR5OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LCBzY2hlbWE6IElPcGVuQXBpU2NoZW1hLCBjdXN0b21pemVNb2RlbHM6IEZvcm1Nb2RlbEN1c3RvbWl6ZXJXcmFwKTogRHluYW1pY0Zvcm1Db250cm9sTW9kZWxbXSB7XHJcbiAgICAgICAgY29uc3QgJGVudW0gPSBwcm9wZXJ0eS5pdGVtcz8uZW51bSB8fCBwcm9wZXJ0eS5lbnVtO1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KCRlbnVtKSB8fCBpc1N0cmluZ1dpdGhWYWwocHJvcGVydHkub3B0aW9uc1BhdGgpIHx8IGlzU3RyaW5nV2l0aFZhbChwcm9wZXJ0eS5lbmRwb2ludCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGN1c3RvbWl6ZU1vZGVscyhwcm9wZXJ0eSwgc2NoZW1hLCBEeW5hbWljU2VsZWN0TW9kZWwsIHRoaXMuZ2V0Rm9ybVNlbGVjdENvbmZpZyhwcm9wZXJ0eSwgc2NoZW1hKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN3aXRjaCAocHJvcGVydHkudHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIFwic3RyaW5nXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJudW1iZXJcIjpcclxuICAgICAgICAgICAgY2FzZSBcImludGVnZXJcIjpcclxuICAgICAgICAgICAgY2FzZSBcInRleHRhcmVhXCI6XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGVja0lzRWRpdG9yUHJvcGVydHkocHJvcGVydHkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1c3RvbWl6ZU1vZGVscyhwcm9wZXJ0eSwgc2NoZW1hLCBEeW5hbWljRWRpdG9yTW9kZWwsIHRoaXMuZ2V0Rm9ybUVkaXRvckNvbmZpZyhwcm9wZXJ0eSwgc2NoZW1hKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocHJvcGVydHkuZm9ybWF0ID09IFwidGV4dGFyZWFcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXN0b21pemVNb2RlbHMocHJvcGVydHksIHNjaGVtYSwgRHluYW1pY1RleHRBcmVhTW9kZWwsIHRoaXMuZ2V0Rm9ybVRleHRhcmVhQ29uZmlnKHByb3BlcnR5LCBzY2hlbWEpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBjdXN0b21pemVNb2RlbHMocHJvcGVydHksIHNjaGVtYSwgRHluYW1pY0lucHV0TW9kZWwsIHRoaXMuZ2V0Rm9ybUlucHV0Q29uZmlnKHByb3BlcnR5LCBzY2hlbWEpKTtcclxuICAgICAgICAgICAgY2FzZSBcImJvb2xlYW5cIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjdXN0b21pemVNb2RlbHMocHJvcGVydHksIHNjaGVtYSwgRHluYW1pY0NoZWNrYm94TW9kZWwsIHRoaXMuZ2V0Rm9ybUNoZWNrYm94Q29uZmlnKHByb3BlcnR5LCBzY2hlbWEpKTtcclxuICAgICAgICAgICAgY2FzZSBcImFycmF5XCI6XHJcbiAgICAgICAgICAgICAgICBpZiAoZmluZFJlZnMocHJvcGVydHkpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VzdG9taXplTW9kZWxzKHByb3BlcnR5LCBzY2hlbWEsIER5bmFtaWNGb3JtQXJyYXlNb2RlbCwgdGhpcy5nZXRGb3JtQXJyYXlDb25maWcocHJvcGVydHksIHNjaGVtYSwgY3VzdG9taXplTW9kZWxzKSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXN0b21pemVNb2RlbHMocHJvcGVydHksIHNjaGVtYSwgRHluYW1pY0lucHV0TW9kZWwsIHRoaXMuZ2V0Rm9ybUlucHV0Q29uZmlnKHByb3BlcnR5LCBzY2hlbWEpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSBcImZpbGVcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjdXN0b21pemVNb2RlbHMocHJvcGVydHksIHNjaGVtYSwgRHluYW1pY0ZpbGVVcGxvYWRNb2RlbCwgdGhpcy5nZXRGb3JtVXBsb2FkQ29uZmlnKHByb3BlcnR5LCBzY2hlbWEpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZpbmRSZWZzKHByb3BlcnR5KS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjdXN0b21pemVNb2RlbHMocHJvcGVydHksIHNjaGVtYSwgRHluYW1pY0Zvcm1Hcm91cE1vZGVsLCB0aGlzLmdldEZvcm1Hcm91cENvbmZpZyhwcm9wZXJ0eSwgc2NoZW1hLCBjdXN0b21pemVNb2RlbHMpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbmRNb2RlbEJ5UGF0aChwYXJlbnQ6IER5bmFtaWNQYXRoYWJsZSB8IER5bmFtaWNGb3JtTW9kZWwsIHBhdGg6IHN0cmluZ1tdKTogRHluYW1pY1BhdGhhYmxlIHtcclxuICAgICAgICBpZiAocGF0aC5sZW5ndGggPT0gMCkgcmV0dXJuIHBhcmVudCBhcyBEeW5hbWljUGF0aGFibGU7XHJcbiAgICAgICAgY29uc3QgbmV4dCA9IHBhdGguc2hpZnQoKSBhcyBhbnk7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGFyZW50KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maW5kTW9kZWxCeVBhdGgocGFyZW50LmZpbmQodCA9PiB0LmlkID09IG5leHQpLCBwYXRoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcmVudCBpbnN0YW5jZW9mIER5bmFtaWNGb3JtR3JvdXBNb2RlbCB8fCBwYXJlbnQgaW5zdGFuY2VvZiBEeW5hbWljRm9ybUFycmF5R3JvdXBNb2RlbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maW5kTW9kZWxCeVBhdGgocGFyZW50Lmdyb3VwLmZpbmQodCA9PiB0LmlkID09IG5leHQpLCBwYXRoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcmVudCBpbnN0YW5jZW9mIER5bmFtaWNGb3JtQXJyYXlNb2RlbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maW5kTW9kZWxCeVBhdGgocGFyZW50Lmdyb3Vwcy5maW5kKHQgPT4gdC5pbmRleCA9PSBuZXh0KSwgcGF0aCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwYXJlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Rm9ybUNvbnRyb2xDb25maWcocHJvcGVydHk6IElPcGVuQXBpU2NoZW1hUHJvcGVydHksIHNjaGVtYTogSU9wZW5BcGlTY2hlbWEpOiBEeW5hbWljRm9ybVZhbHVlQ29udHJvbE1vZGVsQ29uZmlnPGFueT4ge1xyXG4gICAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSB0aGlzLmdldFZhbGlkYXRvcnMocHJvcGVydHksIHNjaGVtYSk7XHJcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlcyA9IE9iamVjdC5rZXlzKHZhbGlkYXRvcnMpLnJlZHVjZSgocmVzLCBrZXkpID0+IHtcclxuICAgICAgICAgICAgcmVzW2tleV0gPSBgZXJyb3IuJHtrZXl9YDtcclxuICAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICB9LCB7fSk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IHByb3BlcnR5LmlkLFxyXG4gICAgICAgICAgICBsYWJlbDogT2JqZWN0VXRpbHMuaXNTdHJpbmcocHJvcGVydHkubGFiZWwpID8gcHJvcGVydHkubGFiZWwgOiBwcm9wZXJ0eS5pZCxcclxuICAgICAgICAgICAgaGlkZGVuOiBwcm9wZXJ0eS5oaWRkZW4sXHJcbiAgICAgICAgICAgIGRpc2FibGVkOiBwcm9wZXJ0eS5kaXNhYmxlZCxcclxuICAgICAgICAgICAgdmFsaWRhdG9ycyxcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlcyxcclxuICAgICAgICAgICAgYWRkaXRpb25hbDogT2JqZWN0LmFzc2lnbih7fSwgcHJvcGVydHkpXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGb3JtQXJyYXlDb25maWcocHJvcGVydHk6IElPcGVuQXBpU2NoZW1hUHJvcGVydHksIHNjaGVtYTogSU9wZW5BcGlTY2hlbWEsIGN1c3RvbWl6ZU1vZGVsczogRm9ybU1vZGVsQ3VzdG9taXplcldyYXApOiBEeW5hbWljRm9ybUFycmF5TW9kZWxDb25maWcge1xyXG4gICAgICAgIGNvbnN0IHN1YlNjaGVtYXMgPSBmaW5kUmVmcyhwcm9wZXJ0eSkubWFwKHJlZiA9PiB0aGlzLnNjaGVtYXNbcmVmXSk7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybUNvbnRyb2xDb25maWcocHJvcGVydHksIHNjaGVtYSksXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGdyb3VwRmFjdG9yeTogKCkgPT4gbWVyZ2VGb3JtTW9kZWxzKHN1YlNjaGVtYXMubWFwKHMgPT4gdGhpcy5nZXRGb3JtTW9kZWxGb3JTY2hlbWFEZWYocywgY3VzdG9taXplTW9kZWxzKSkpLFxyXG4gICAgICAgICAgICAgICAgc29ydGFibGU6IHByb3BlcnR5LnNvcnRhYmxlIHx8IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgdXNlVGFiczogcHJvcGVydHkudXNlVGFicyB8fCBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGFkZEl0ZW06IHByb3BlcnR5LmFkZEl0ZW0gIT09IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgaW5zZXJ0SXRlbTogcHJvcGVydHkuaW5zZXJ0SXRlbSAhPT0gZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBjbG9uZUl0ZW06IHByb3BlcnR5LmNsb25lSXRlbSAhPT0gZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBtb3ZlSXRlbTogcHJvcGVydHkubW92ZUl0ZW0gIT09IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgcmVtb3ZlSXRlbTogcHJvcGVydHkucmVtb3ZlSXRlbSAhPT0gZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBjbGVhckl0ZW1zOiBwcm9wZXJ0eS5jbGVhckl0ZW1zICE9PSBmYWxzZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGb3JtR3JvdXBDb25maWcocHJvcGVydHk6IElPcGVuQXBpU2NoZW1hUHJvcGVydHksIHNjaGVtYTogSU9wZW5BcGlTY2hlbWEsIGN1c3RvbWl6ZU1vZGVsczogRm9ybU1vZGVsQ3VzdG9taXplcldyYXApOiBEeW5hbWljRm9ybUdyb3VwTW9kZWxDb25maWcge1xyXG4gICAgICAgIGNvbnN0IHN1YlNjaGVtYXMgPSBmaW5kUmVmcyhwcm9wZXJ0eSkubWFwKHJlZiA9PiB0aGlzLnNjaGVtYXNbcmVmXSk7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybUNvbnRyb2xDb25maWcocHJvcGVydHksIHNjaGVtYSksXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGdyb3VwOiBtZXJnZUZvcm1Nb2RlbHMoc3ViU2NoZW1hcy5tYXAocyA9PiB0aGlzLmdldEZvcm1Nb2RlbEZvclNjaGVtYURlZihzLCBjdXN0b21pemVNb2RlbHMpKSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Rm9ybUlucHV0Q29uZmlnKHByb3BlcnR5OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LCBzY2hlbWE6IElPcGVuQXBpU2NoZW1hKTogRHluYW1pY0lucHV0TW9kZWxDb25maWcge1xyXG4gICAgICAgIGxldCBpbnB1dFR5cGUgPSBTdHJpbmdVdGlscy5oYXMocHJvcGVydHkuaWQsIFwicGFzc3dvcmRcIiwgXCJQYXNzd29yZFwiKSA/IFwicGFzc3dvcmRcIiA6IChwcm9wZXJ0eS5mb3JtYXQgfHwgcHJvcGVydHkuaXRlbXM/LnR5cGUgfHwgcHJvcGVydHkudHlwZSk7XHJcbiAgICAgICAgc3dpdGNoIChpbnB1dFR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBcImJvb2xlYW5cIjpcclxuICAgICAgICAgICAgICAgIGlucHV0VHlwZSA9IFwiY2hlY2tib3hcIjtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwidGV4dGFyZWFcIjpcclxuICAgICAgICAgICAgICAgIGlucHV0VHlwZSA9IFwidGV4dGFyZWFcIjtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwiaW50ZWdlclwiOlxyXG4gICAgICAgICAgICAgICAgaW5wdXRUeXBlID0gXCJudW1iZXJcIjtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzdWIgPSBwcm9wZXJ0eS50eXBlID09IFwiYXJyYXlcIiA/IHByb3BlcnR5Lml0ZW1zIHx8IHByb3BlcnR5IDogcHJvcGVydHk7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybUNvbnRyb2xDb25maWcocHJvcGVydHksIHNjaGVtYSksXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlucHV0VHlwZSxcclxuICAgICAgICAgICAgICAgIGF1dG9Db21wbGV0ZTogcHJvcGVydHkuYXV0b0NvbXBsZXRlIHx8IFwib2ZmXCIsXHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogcHJvcGVydHkudHlwZSA9PSBcImFycmF5XCIsXHJcbiAgICAgICAgICAgICAgICBhY2NlcHQ6IE9iamVjdFV0aWxzLmlzU3RyaW5nKHByb3BlcnR5LmFjY2VwdCkgPyBwcm9wZXJ0eS5hY2NlcHQgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgbWFzazogT2JqZWN0VXRpbHMuaXNTdHJpbmcocHJvcGVydHkubWFzaykgPyBwcm9wZXJ0eS5tYXNrIDogbnVsbCxcclxuICAgICAgICAgICAgICAgIHBhdHRlcm46IE9iamVjdFV0aWxzLmlzU3RyaW5nKHByb3BlcnR5LnBhdHRlcm4pID8gcHJvcGVydHkucGF0dGVybiA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBzdGVwOiBpc05hTihzdWIuc3RlcCkgPyAoaXNOYU4ocHJvcGVydHkuc3RlcCkgPyAxIDogcHJvcGVydHkuc3RlcCkgOiBzdWIuc3RlcCxcclxuICAgICAgICAgICAgICAgIG1pbjogaXNOYU4oc3ViLm1pbmltdW0pID8gTUlOX0lOUFVUX05VTSA6IHN1Yi5taW5pbXVtLFxyXG4gICAgICAgICAgICAgICAgbWF4OiBpc05hTihzdWIubWF4aW11bSkgPyBNQVhfSU5QVVRfTlVNIDogc3ViLm1heGltdW0sXHJcbiAgICAgICAgICAgICAgICBtaW5MZW5ndGg6IGlzTmFOKHN1Yi5taW5MZW5ndGgpID8gMCA6IHN1Yi5taW5MZW5ndGgsXHJcbiAgICAgICAgICAgICAgICBtYXhMZW5ndGg6IGlzTmFOKHN1Yi5tYXhMZW5ndGgpID8gTUFYX0lOUFVUX05VTSA6IHN1Yi5tYXhMZW5ndGgsXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcGVydHkucGxhY2Vob2xkZXIgfHwgXCJcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGb3JtRWRpdG9yQ29uZmlnKHByb3BlcnR5OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LCBzY2hlbWE6IElPcGVuQXBpU2NoZW1hKTogRHluYW1pY0VkaXRvck1vZGVsQ29uZmlnIHtcclxuICAgICAgICBjb25zdCBzdWIgPSBwcm9wZXJ0eS50eXBlID09IFwiYXJyYXlcIiA/IHByb3BlcnR5Lml0ZW1zIHx8IHByb3BlcnR5IDogcHJvcGVydHk7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybUNvbnRyb2xDb25maWcocHJvcGVydHksIHNjaGVtYSksXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlucHV0VHlwZTogcHJvcGVydHkuZm9ybWF0LFxyXG4gICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlOiBwcm9wZXJ0eS5hdXRvQ29tcGxldGUgfHwgXCJvZmZcIixcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiBwcm9wZXJ0eS50eXBlID09IFwiYXJyYXlcIixcclxuICAgICAgICAgICAgICAgIGFjY2VwdDogT2JqZWN0VXRpbHMuaXNTdHJpbmcocHJvcGVydHkuYWNjZXB0KSA/IHByb3BlcnR5LmFjY2VwdCA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBtYXNrOiBPYmplY3RVdGlscy5pc1N0cmluZyhwcm9wZXJ0eS5tYXNrKSA/IHByb3BlcnR5Lm1hc2sgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgcGF0dGVybjogT2JqZWN0VXRpbHMuaXNTdHJpbmcocHJvcGVydHkucGF0dGVybikgPyBwcm9wZXJ0eS5wYXR0ZXJuIDogbnVsbCxcclxuICAgICAgICAgICAgICAgIHN0ZXA6IGlzTmFOKHN1Yi5zdGVwKSA/IChpc05hTihwcm9wZXJ0eS5zdGVwKSA/IDEgOiBwcm9wZXJ0eS5zdGVwKSA6IHN1Yi5zdGVwLFxyXG4gICAgICAgICAgICAgICAgbWluTGVuZ3RoOiBpc05hTihzdWIubWluTGVuZ3RoKSA/IDAgOiBzdWIubWluTGVuZ3RoLFxyXG4gICAgICAgICAgICAgICAgbWF4TGVuZ3RoOiBpc05hTihzdWIubWF4TGVuZ3RoKSA/IE1BWF9JTlBVVF9OVU0gOiBzdWIubWF4TGVuZ3RoLFxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BlcnR5LnBsYWNlaG9sZGVyIHx8IFwiXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Rm9ybVRleHRhcmVhQ29uZmlnKHByb3BlcnR5OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LCBzY2hlbWE6IElPcGVuQXBpU2NoZW1hKTogRHluYW1pY1RleHRBcmVhTW9kZWxDb25maWcge1xyXG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxyXG4gICAgICAgICAgICB0aGlzLmdldEZvcm1Db250cm9sQ29uZmlnKHByb3BlcnR5LCBzY2hlbWEpLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBjb2xzOiBwcm9wZXJ0eS5jb2xzIHx8IG51bGwsXHJcbiAgICAgICAgICAgICAgICByb3dzOiBwcm9wZXJ0eS5yb3dzIHx8IDEwLFxyXG4gICAgICAgICAgICAgICAgd3JhcDogcHJvcGVydHkud3JhcCB8fCBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGF1dG9Db21wbGV0ZTogcHJvcGVydHkuYXV0b0NvbXBsZXRlIHx8IFwib2ZmXCIsXHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogcHJvcGVydHkudHlwZSA9PSBcImFycmF5XCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Rm9ybVNlbGVjdE9wdGlvbnMocHJvcGVydHk6IElPcGVuQXBpU2NoZW1hUHJvcGVydHksIHNjaGVtYTogSU9wZW5BcGlTY2hlbWEpIHtcclxuICAgICAgICBjb25zdCAkZW51bSA9IHByb3BlcnR5Lml0ZW1zPy5lbnVtIHx8IHByb3BlcnR5LmVudW07XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoJGVudW0pKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgRm9ybVNlbGVjdFN1YmplY3QoKHNlbGVjdE1vZGVsLCBmb3JtQ29udHJvbCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9ICRlbnVtLm1hcCh2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSBwcm9wZXJ0eS50cmFuc2xhdGFibGUgPyBgJHtwcm9wZXJ0eS5pZH0uJHt2YWx1ZX1gIDogYCR7dmFsdWV9YDtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3ZhbHVlLCBsYWJlbH07XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpeFNlbGVjdE9wdGlvbnMoc2VsZWN0TW9kZWwsIGZvcm1Db250cm9sLCBvcHRpb25zKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc1N0cmluZ1dpdGhWYWwocHJvcGVydHkub3B0aW9uc1BhdGgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgRm9ybVNlbGVjdFN1YmplY3QoYXN5bmMgKHNlbGVjdE1vZGVsLCBjb250cm9sLCByb290LCBpbmRleGVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcGF0aCA9IHByb3BlcnR5Lm9wdGlvbnNQYXRoIGFzIHN0cmluZztcclxuICAgICAgICAgICAgICAgIGxldCB0YXJnZXQgPSBjb250cm9sIGFzIEFic3RyYWN0Q29udHJvbDtcclxuICAgICAgICAgICAgICAgIGxldCBtb2RlbDogRHluYW1pY1BhdGhhYmxlIHwgRHluYW1pY0Zvcm1Nb2RlbCA9IHNlbGVjdE1vZGVsO1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhdGguc3RhcnRzV2l0aChcIiRyb290XCIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHBhdGguc3Vic3RyKDUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHdoaWxlICh0YXJnZXQucGFyZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCA9IHRhcmdldC5wYXJlbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIG1vZGVsID0gcm9vdDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHdoaWxlIChwYXRoLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHBhdGguc3Vic3RyKDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQucGFyZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCA9IHRhcmdldC5wYXJlbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIG1vZGVsID0gKG1vZGVsIGFzIER5bmFtaWNQYXRoYWJsZSkucGFyZW50IHx8IHJvb3Q7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhpbmRleGVzKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZShrZXksIGluZGV4ZXNba2V5XSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIG1vZGVsID0gdGhpcy5maW5kTW9kZWxCeVBhdGgobW9kZWwsIHBhdGguc3BsaXQoXCIuXCIpKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsT3B0aW9ucyA9IG1vZGVsIGluc3RhbmNlb2YgRHluYW1pY1NlbGVjdE1vZGVsXHJcbiAgICAgICAgICAgICAgICAgICAgPyBhd2FpdCBmaXJzdFZhbHVlRnJvbShtb2RlbC5vcHRpb25zJCkgOlxyXG4gICAgICAgICAgICAgICAgICAgIFtdO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBPYmplY3RVdGlscy5nZXRWYWx1ZSh0YXJnZXQudmFsdWUsIHBhdGgpO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9ICghT2JqZWN0VXRpbHMuaXNBcnJheSh2YWx1ZSkgPyBbXSA6IHZhbHVlKS5tYXAodmFsdWUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsT3B0aW9uID0gbW9kZWxPcHRpb25zLmZpbmQodCA9PiB0LnZhbHVlID09IHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3ZhbHVlLCBsYWJlbDogbW9kZWxPcHRpb24/LmxhYmVsIHx8IHZhbHVlfTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZml4U2VsZWN0T3B0aW9ucyhzZWxlY3RNb2RlbCwgY29udHJvbCwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3IEZvcm1TZWxlY3RTdWJqZWN0KGFzeW5jIChzZWxlY3RNb2RlbCwgY29udHJvbCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFwaS5jYWNoZVtwcm9wZXJ0eS5lbmRwb2ludF0gPSB0aGlzLmFwaS5jYWNoZVtwcm9wZXJ0eS5lbmRwb2ludF0gfHwgdGhpcy5hcGkubGlzdChwcm9wZXJ0eS5lbmRwb2ludCwgdGhpcy5hcGkubWFrZUxpc3RQYXJhbXMoMSwgLTEpKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZW1zLm1hcChpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaS5pZCB8fCBpLl9pZCwgbGFiZWw6IGlbcHJvcGVydHkubGFiZWxGaWVsZF0gfHwgaS5sYWJlbCB8fCBpLmlkIHx8IGkuX2lkXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IChhd2FpdCB0aGlzLmFwaS5jYWNoZVtwcm9wZXJ0eS5lbmRwb2ludF0pLm1hcCh0ID0+IE9iamVjdC5hc3NpZ24oe30sIHQpKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZml4U2VsZWN0T3B0aW9ucyhzZWxlY3RNb2RlbCwgY29udHJvbCwgb3B0aW9ucyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Rm9ybVNlbGVjdENvbmZpZyhwcm9wZXJ0eTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSwgc2NoZW1hOiBJT3BlbkFwaVNjaGVtYSk6IER5bmFtaWNTZWxlY3RNb2RlbENvbmZpZzxhbnk+IHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihcclxuICAgICAgICAgICAgdGhpcy5nZXRGb3JtQ29udHJvbENvbmZpZyhwcm9wZXJ0eSwgc2NoZW1hKSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZXRGb3JtU2VsZWN0T3B0aW9ucyhwcm9wZXJ0eSwgc2NoZW1hKSxcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiBwcm9wZXJ0eS50eXBlID09IFwiYXJyYXlcIixcclxuICAgICAgICAgICAgICAgIGdyb3VwQnk6IHByb3BlcnR5Lmdyb3VwQnksXHJcbiAgICAgICAgICAgICAgICBpbmxpbmU6IHByb3BlcnR5LmlubGluZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGb3JtVXBsb2FkQ29uZmlnKHByb3BlcnR5OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LCBzY2hlbWE6IElPcGVuQXBpU2NoZW1hKTogRHluYW1pY0ZpbGVVcGxvYWRNb2RlbENvbmZpZyB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5hcGkudXJsKHByb3BlcnR5LnVybCB8fCBcImFzc2V0c1wiKTtcclxuICAgICAgICBjb25zdCB7YWNjZXB0LCBhdXRvVXBsb2FkLCBtYXhTaXplLCBtaW5TaXplLCByZW1vdmVVcmwsIHNob3dGaWxlTGlzdH0gPSBwcm9wZXJ0eTtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih0aGlzLmdldEZvcm1Db250cm9sQ29uZmlnKHByb3BlcnR5LCBzY2hlbWEpLCB7XHJcbiAgICAgICAgICAgIHVybCxcclxuICAgICAgICAgICAgYWNjZXB0LFxyXG4gICAgICAgICAgICBhdXRvVXBsb2FkLFxyXG4gICAgICAgICAgICBtYXhTaXplLFxyXG4gICAgICAgICAgICBtaW5TaXplLFxyXG4gICAgICAgICAgICByZW1vdmVVcmwsXHJcbiAgICAgICAgICAgIHNob3dGaWxlTGlzdFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEZvcm1DaGVja2JveENvbmZpZyhwcm9wZXJ0eTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSwgc2NoZW1hOiBJT3BlbkFwaVNjaGVtYSk6IER5bmFtaWNDaGVja2JveE1vZGVsQ29uZmlnIHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihcclxuICAgICAgICAgICAgdGhpcy5nZXRGb3JtQ29udHJvbENvbmZpZyhwcm9wZXJ0eSwgc2NoZW1hKSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaW5kZXRlcm1pbmF0ZTogcHJvcGVydHkuaW5kZXRlcm1pbmF0ZSB8fCBmYWxzZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBjbG9uZUZvcm1BcnJheUdyb3VwKGluZGV4OiBudW1iZXIsIGZvcm1BcnJheTogRm9ybUFycmF5LCBmb3JtQXJyYXlNb2RlbDogRHluYW1pY0Zvcm1BcnJheU1vZGVsKSB7XHJcbiAgICAgICAgdGhpcy5pbnNlcnRGb3JtQXJyYXlHcm91cChpbmRleCwgZm9ybUFycmF5LCBmb3JtQXJyYXlNb2RlbCk7XHJcbiAgICAgICAgdGhpcy5wYXRjaEdyb3VwKGZvcm1BcnJheS5hdChpbmRleCArIDEpLnZhbHVlLCBmb3JtQXJyYXlNb2RlbC5ncm91cHNbaW5kZXhdLmdyb3VwLCBmb3JtQXJyYXkuYXQoaW5kZXgpIGFzIEZvcm1Hcm91cCk7XHJcbiAgICAgICAgZm9ybUFycmF5TW9kZWwuZmlsdGVyR3JvdXBzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGFzeW5jIGZpeFNlbGVjdE9wdGlvbnMobW9kZWw6IER5bmFtaWNTZWxlY3RNb2RlbDxhbnk+LCBjb250cm9sOiBGb3JtQ29udHJvbCwgb3B0aW9uczogRHluYW1pY0Zvcm1PcHRpb25Db25maWc8YW55PltdKTogUHJvbWlzZTxEeW5hbWljRm9ybU9wdGlvbkNvbmZpZzxhbnk+W10+IHtcclxuICAgICAgICBpZiAoIW9wdGlvbnMpIHJldHVybiBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zKSB7XHJcbiAgICAgICAgICAgIG9wdGlvbi5jbGFzc2VzID0gW29wdGlvbi5jbGFzc2VzLCBtb2RlbC5nZXRDbGFzc2VzKG9wdGlvbiwgbW9kZWwsIGNvbnRyb2wsIHRoaXMuaW5qZWN0b3IpXS5maWx0ZXIoaXNTdHJpbmdXaXRoVmFsKS5qb2luKFwiIFwiKTtcclxuICAgICAgICAgICAgb3B0aW9uLmxhYmVsID0gYXdhaXQgdGhpcy5sYW5ndWFnZS5nZXRUcmFuc2xhdGlvbihvcHRpb24ubGFiZWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gb3B0aW9ucztcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0VmFsaWRhdG9ycyhwcm9wZXJ0eTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSwgc2NoZW1hOiBJT3BlbkFwaVNjaGVtYSk6IER5bmFtaWNWYWxpZGF0b3JzQ29uZmlnIHtcclxuICAgICAgICBjb25zdCB2YWxpZGF0b3JzOiBEeW5hbWljVmFsaWRhdG9yc0NvbmZpZyA9IHt9O1xyXG4gICAgICAgIGlmIChPYmplY3RVdGlscy5pc0FycmF5KHNjaGVtYS5yZXF1aXJlZCkgJiYgc2NoZW1hLnJlcXVpcmVkLmluZGV4T2YocHJvcGVydHkuaWQpID49IDApIHtcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5yZXF1aXJlZCA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYWRkUHJvcGVydHlWYWxpZGF0b3JzKHZhbGlkYXRvcnMsIHByb3BlcnR5KTtcclxuICAgICAgICB0aGlzLmFkZEl0ZW1zVmFsaWRhdG9ycyh2YWxpZGF0b3JzLCBwcm9wZXJ0eS5pdGVtcyk7XHJcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRvcnM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGFkZFByb3BlcnR5VmFsaWRhdG9ycyh2YWxpZGF0b3JzOiBEeW5hbWljVmFsaWRhdG9yc0NvbmZpZywgcHJvcGVydHk6IElPcGVuQXBpU2NoZW1hUHJvcGVydHkpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXByb3BlcnR5KSByZXR1cm47XHJcbiAgICAgICAgaWYgKCFpc05hTihwcm9wZXJ0eS5taW5MZW5ndGgpKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMubWluTGVuZ3RoID0gcHJvcGVydHkubWluTGVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWlzTmFOKHByb3BlcnR5Lm1heExlbmd0aCkpIHtcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5tYXhMZW5ndGggPSBwcm9wZXJ0eS5tYXhMZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaXNOYU4ocHJvcGVydHkubWluaW11bSkpIHtcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5taW4gPSBwcm9wZXJ0eS5taW5pbXVtO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWlzTmFOKHByb3BlcnR5Lm1heGltdW0pKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMubWF4ID0gcHJvcGVydHkubWF4aW11bTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc3dpdGNoIChwcm9wZXJ0eS5mb3JtYXQpIHtcclxuICAgICAgICAgICAgY2FzZSBcImVtYWlsXCI6XHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLmVtYWlsID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYWRkSXRlbXNWYWxpZGF0b3JzKHZhbGlkYXRvcnM6IER5bmFtaWNWYWxpZGF0b3JzQ29uZmlnLCBpdGVtczogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSk6IHZvaWQge1xyXG4gICAgICAgIGlmICghaXRlbXMpIHJldHVybjtcclxuICAgICAgICBpZiAoIWlzTmFOKGl0ZW1zLm1pbkxlbmd0aCkpIHtcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5pdGVtc01pbkxlbmd0aCA9IGl0ZW1zLm1pbkxlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFpc05hTihpdGVtcy5tYXhMZW5ndGgpKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMuaXRlbXNNYXhMZW5ndGggPSBpdGVtcy5tYXhMZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaXNOYU4oaXRlbXMubWluaW11bSkpIHtcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5pdGVtc01pblZhbHVlID0gaXRlbXMubWluaW11bTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFpc05hTihpdGVtcy5tYXhpbXVtKSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLml0ZW1zTWF4VmFsdWUgPSBpdGVtcy5tYXhpbXVtO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { DYNAMIC_FORM_CONTROL_TYPE_EDITOR, DynamicInputControlModel, serializable } from "@ng-dynamic-forms/core";
|
|
3
|
+
export class DynamicEditorModel extends DynamicInputControlModel {
|
|
4
|
+
constructor(config, layout) {
|
|
5
|
+
super(config, layout);
|
|
6
|
+
this.type = DYNAMIC_FORM_CONTROL_TYPE_EDITOR;
|
|
7
|
+
this.inputType = config.inputType || "javascript";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
__decorate([
|
|
11
|
+
serializable()
|
|
12
|
+
], DynamicEditorModel.prototype, "type", void 0);
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1lZGl0b3IubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LWR5bmFtaWMtZm9ybS91dGlscy9keW5hbWljLWVkaXRvci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILGdDQUFnQyxFQUVoQyx3QkFBd0IsRUFFeEIsWUFBWSxFQUNmLE1BQU0sd0JBQXdCLENBQUM7QUFNaEMsTUFBTSxPQUFPLGtCQUFtQixTQUFRLHdCQUF5QztJQU03RSxZQUFZLE1BQWdDLEVBQUUsTUFBaUM7UUFDM0UsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUxELFNBQUksR0FBVyxnQ0FBZ0MsQ0FBQztRQU1yRSxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLElBQUksWUFBWSxDQUFDO0lBQ3RELENBQUM7Q0FDSjtBQVJtQjtJQUFmLFlBQVksRUFBRTtnREFBMEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgRFlOQU1JQ19GT1JNX0NPTlRST0xfVFlQRV9FRElUT1IsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xMYXlvdXQsXHJcbiAgICBEeW5hbWljSW5wdXRDb250cm9sTW9kZWwsXHJcbiAgICBEeW5hbWljSW5wdXRDb250cm9sTW9kZWxDb25maWcsXHJcbiAgICBzZXJpYWxpemFibGVcclxufSBmcm9tIFwiQG5nLWR5bmFtaWMtZm9ybXMvY29yZVwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljRWRpdG9yTW9kZWxDb25maWcgZXh0ZW5kcyBEeW5hbWljSW5wdXRDb250cm9sTW9kZWxDb25maWc8c3RyaW5nIHwgT2JqZWN0PiB7XHJcbiAgICBpbnB1dFR5cGU6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIER5bmFtaWNFZGl0b3JNb2RlbCBleHRlbmRzIER5bmFtaWNJbnB1dENvbnRyb2xNb2RlbDxzdHJpbmcgfCBPYmplY3Q+IHtcclxuXHJcbiAgICBAc2VyaWFsaXphYmxlKCkgcmVhZG9ubHkgdHlwZTogc3RyaW5nID0gRFlOQU1JQ19GT1JNX0NPTlRST0xfVFlQRV9FRElUT1I7XHJcblxyXG4gICAgcmVhZG9ubHkgaW5wdXRUeXBlOiBzdHJpbmc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoY29uZmlnOiBEeW5hbWljRWRpdG9yTW9kZWxDb25maWcsIGxheW91dD86IER5bmFtaWNGb3JtQ29udHJvbExheW91dCkge1xyXG4gICAgICAgIHN1cGVyKGNvbmZpZywgbGF5b3V0KTtcclxuICAgICAgICB0aGlzLmlucHV0VHlwZSA9IGNvbmZpZy5pbnB1dFR5cGUgfHwgXCJqYXZhc2NyaXB0XCI7XHJcbiAgICB9XHJcbn1cclxuIl19
|
package/esm2020/public_api.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { defaultSerializer, FormSerializable, FormInput, FormSelect, FormStatic, FormModel, FormFile, defineFormControl, getFormControl, getFormSerializer, createFormInput, createFormSelect, createFormStatic, createFormModel, createFormControl } from "./ngx-dynamic-form/common-types";
|
|
2
2
|
export { replaceSpecialChars, mergeFormModels, MIN_INPUT_NUM, MAX_INPUT_NUM, EDITOR_FORMATS } from "./ngx-dynamic-form/utils/misc";
|
|
3
3
|
export { validateJSON, validateRequiredTranslation, validatePhone, validateItemsMinLength, validateItemsMaxLength, validateItemsMinValue, validateItemsMaxValue } from "./ngx-dynamic-form/utils/validators";
|
|
4
|
+
export { DynamicEditorModel } from "./ngx-dynamic-form/utils/dynamic-editor.model";
|
|
4
5
|
export { DynamicFormArrayGroupModel, DynamicFormArrayModel } from "./ngx-dynamic-form/utils/dynamic-form-array.model";
|
|
5
6
|
export { DynamicFormOption, DynamicSelectModel } from "./ngx-dynamic-form/utils/dynamic-select.model";
|
|
6
7
|
export { FormSelectSubject } from "./ngx-dynamic-form/utils/form-select-subject";
|
|
@@ -14,5 +15,5 @@ export { DynamicBaseFormControlContainerComponent } from "./ngx-dynamic-form/com
|
|
|
14
15
|
export { DynamicBaseFormGroupComponent } from "./ngx-dynamic-form/components/base/dynamic-base-form-group.component";
|
|
15
16
|
export { DynamicBaseSelectComponent } from "./ngx-dynamic-form/components/base/dynamic-base-select.component";
|
|
16
17
|
export { NgxDynamicFormModule } from "./ngx-dynamic-form/ngx-dynamic-form.module";
|
|
17
|
-
export { DYNAMIC_FORM_CONTROL_TYPE_ARRAY, DYNAMIC_FORM_CONTROL_TYPE_CHECKBOX, DYNAMIC_FORM_CONTROL_TYPE_CHECKBOX_GROUP, DYNAMIC_FORM_CONTROL_TYPE_FILE_UPLOAD, DYNAMIC_FORM_CONTROL_TYPE_GROUP, DYNAMIC_FORM_CONTROL_TYPE_INPUT, DYNAMIC_FORM_CONTROL_TYPE_RADIO_GROUP, DYNAMIC_FORM_CONTROL_TYPE_SELECT, DYNAMIC_FORM_CONTROL_TYPE_TEXTAREA, DYNAMIC_FORM_CONTROL_TYPE_EDITOR, DynamicTemplateDirective, DynamicListDirective, DynamicFormsCoreModule, DynamicCheckboxModel, DynamicCheckboxGroupModel, DynamicFileUploadModel, DynamicFormGroupModel, DynamicInputModel, DynamicRadioGroupModel, DynamicTextAreaModel
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
export { DYNAMIC_FORM_CONTROL_TYPE_ARRAY, DYNAMIC_FORM_CONTROL_TYPE_CHECKBOX, DYNAMIC_FORM_CONTROL_TYPE_CHECKBOX_GROUP, DYNAMIC_FORM_CONTROL_TYPE_FILE_UPLOAD, DYNAMIC_FORM_CONTROL_TYPE_GROUP, DYNAMIC_FORM_CONTROL_TYPE_INPUT, DYNAMIC_FORM_CONTROL_TYPE_RADIO_GROUP, DYNAMIC_FORM_CONTROL_TYPE_SELECT, DYNAMIC_FORM_CONTROL_TYPE_TEXTAREA, DYNAMIC_FORM_CONTROL_TYPE_EDITOR, DynamicTemplateDirective, DynamicListDirective, DynamicFormsCoreModule, DynamicCheckboxModel, DynamicCheckboxGroupModel, DynamicFileUploadModel, DynamicFormGroupModel, DynamicInputModel, DynamicRadioGroupModel, DynamicTextAreaModel } from "@ng-dynamic-forms/core";
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFVSCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFNBQVMsRUFDVCxRQUFRLEVBQ1IsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLGlCQUFpQixFQUVwQixNQUFNLGlDQUFpQyxDQUFDO0FBRXpDLE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLGFBQWEsRUFDYixhQUFhLEVBQ2IsY0FBYyxFQUNqQixNQUFNLCtCQUErQixDQUFDO0FBRXZDLE9BQU8sRUFDSCxZQUFZLEVBQ1osMkJBQTJCLEVBQzNCLGFBQWEsRUFDYixzQkFBc0IsRUFDdEIsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQixxQkFBcUIsRUFDeEIsTUFBTSxxQ0FBcUMsQ0FBQztBQUU3QyxPQUFPLEVBRUgsa0JBQWtCLEVBQ3JCLE1BQU0sK0NBQStDLENBQUM7QUFFdkQsT0FBTyxFQUlILDBCQUEwQixFQUUxQixxQkFBcUIsRUFDeEIsTUFBTSxtREFBbUQsQ0FBQztBQUUzRCxPQUFPLEVBRUgsaUJBQWlCLEVBSWpCLGtCQUFrQixFQUNyQixNQUFNLCtDQUErQyxDQUFDO0FBRXZELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUVsRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUVwRixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUUxRixPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQUN4RyxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSxzRUFBc0UsQ0FBQztBQUNuSCxPQUFPLEVBQ0gsK0JBQStCLEVBQ2xDLE1BQU0sd0VBQXdFLENBQUM7QUFDaEYsT0FBTyxFQUNILHdDQUF3QyxFQUMzQyxNQUFNLGtGQUFrRixDQUFDO0FBQzFGLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLHNFQUFzRSxDQUFDO0FBQ25ILE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGtFQUFrRSxDQUFDO0FBRTVHLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBRWhGLE9BQU8sRUFDSCwrQkFBK0IsRUFDL0Isa0NBQWtDLEVBQ2xDLHdDQUF3QyxFQUN4QyxxQ0FBcUMsRUFDckMsK0JBQStCLEVBQy9CLCtCQUErQixFQUMvQixxQ0FBcUMsRUFDckMsZ0NBQWdDLEVBQ2hDLGtDQUFrQyxFQUNsQyxnQ0FBZ0MsRUFDaEMsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUdwQixzQkFBc0IsRUFFdEIsb0JBQW9CLEVBQ3BCLHlCQUF5QixFQUV6QixzQkFBc0IsRUFFdEIscUJBQXFCLEVBRXJCLGlCQUFpQixFQUVqQixzQkFBc0IsRUFFdEIsb0JBQW9CLEVBQ3ZCLE1BQU0sd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xyXG4gICAgSUR5bmFtaWNGb3JtRXZlbnQsXHJcbiAgICBJRHluYW1pY0Zvcm0sXHJcbiAgICBGb3JtQ29udHJvbFNlcmlhbGl6ZXIsXHJcbiAgICBGb3JtTW9kZWxDdXN0b21pemVyLFxyXG4gICAgRHluYW1pY0Zvcm1TdGF0ZSxcclxuICAgIER5bmFtaWNGb3JtVXBkYXRlT24sXHJcbiAgICBJRm9ybUNvbnRyb2wsXHJcbiAgICBEeW5hbWljRm9ybUluaXRDb250cm9sLFxyXG4gICAgQXN5bmNTdWJtaXRNZXRob2QsXHJcbiAgICBkZWZhdWx0U2VyaWFsaXplcixcclxuICAgIEZvcm1TZXJpYWxpemFibGUsXHJcbiAgICBGb3JtSW5wdXQsXHJcbiAgICBGb3JtU2VsZWN0LFxyXG4gICAgRm9ybVN0YXRpYyxcclxuICAgIEZvcm1Nb2RlbCxcclxuICAgIEZvcm1GaWxlLFxyXG4gICAgZGVmaW5lRm9ybUNvbnRyb2wsXHJcbiAgICBnZXRGb3JtQ29udHJvbCxcclxuICAgIGdldEZvcm1TZXJpYWxpemVyLFxyXG4gICAgY3JlYXRlRm9ybUlucHV0LFxyXG4gICAgY3JlYXRlRm9ybVNlbGVjdCxcclxuICAgIGNyZWF0ZUZvcm1TdGF0aWMsXHJcbiAgICBjcmVhdGVGb3JtTW9kZWwsXHJcbiAgICBjcmVhdGVGb3JtQ29udHJvbCxcclxuICAgIElEeW5hbWljRm9ybU1vZHVsZUNvbmZpZ1xyXG59IGZyb20gXCIuL25neC1keW5hbWljLWZvcm0vY29tbW9uLXR5cGVzXCI7XHJcblxyXG5leHBvcnQge1xyXG4gICAgcmVwbGFjZVNwZWNpYWxDaGFycyxcclxuICAgIG1lcmdlRm9ybU1vZGVscyxcclxuICAgIE1JTl9JTlBVVF9OVU0sXHJcbiAgICBNQVhfSU5QVVRfTlVNLFxyXG4gICAgRURJVE9SX0ZPUk1BVFNcclxufSBmcm9tIFwiLi9uZ3gtZHluYW1pYy1mb3JtL3V0aWxzL21pc2NcIjtcclxuXHJcbmV4cG9ydCB7XHJcbiAgICB2YWxpZGF0ZUpTT04sXHJcbiAgICB2YWxpZGF0ZVJlcXVpcmVkVHJhbnNsYXRpb24sXHJcbiAgICB2YWxpZGF0ZVBob25lLFxyXG4gICAgdmFsaWRhdGVJdGVtc01pbkxlbmd0aCxcclxuICAgIHZhbGlkYXRlSXRlbXNNYXhMZW5ndGgsXHJcbiAgICB2YWxpZGF0ZUl0ZW1zTWluVmFsdWUsXHJcbiAgICB2YWxpZGF0ZUl0ZW1zTWF4VmFsdWVcclxufSBmcm9tIFwiLi9uZ3gtZHluYW1pYy1mb3JtL3V0aWxzL3ZhbGlkYXRvcnNcIjtcclxuXHJcbmV4cG9ydCB7XHJcbiAgICBEeW5hbWljRWRpdG9yTW9kZWxDb25maWcsXHJcbiAgICBEeW5hbWljRWRpdG9yTW9kZWxcclxufSBmcm9tIFwiLi9uZ3gtZHluYW1pYy1mb3JtL3V0aWxzL2R5bmFtaWMtZWRpdG9yLm1vZGVsXCI7XHJcblxyXG5leHBvcnQge1xyXG4gICAgU2F2ZVRhYkZ1bmMsXHJcbiAgICBSZXN0b3JlVGFiRnVuYyxcclxuICAgIFRhYkxhYmVsRnVuYyxcclxuICAgIER5bmFtaWNGb3JtQXJyYXlHcm91cE1vZGVsLFxyXG4gICAgRHluYW1pY0Zvcm1BcnJheU1vZGVsQ29uZmlnLFxyXG4gICAgRHluYW1pY0Zvcm1BcnJheU1vZGVsXHJcbn0gZnJvbSBcIi4vbmd4LWR5bmFtaWMtZm9ybS91dGlscy9keW5hbWljLWZvcm0tYXJyYXkubW9kZWxcIjtcclxuXHJcbmV4cG9ydCB7XHJcbiAgICBEeW5hbWljRm9ybU9wdGlvbkNvbmZpZyxcclxuICAgIER5bmFtaWNGb3JtT3B0aW9uLFxyXG4gICAgRHluYW1pY0Zvcm1PcHRpb25Hcm91cCxcclxuICAgIE9wdGlvbkNsYXNzZXNGdW5jLFxyXG4gICAgRHluYW1pY1NlbGVjdE1vZGVsQ29uZmlnLFxyXG4gICAgRHluYW1pY1NlbGVjdE1vZGVsXHJcbn0gZnJvbSBcIi4vbmd4LWR5bmFtaWMtZm9ybS91dGlscy9keW5hbWljLXNlbGVjdC5tb2RlbFwiO1xyXG5cclxuZXhwb3J0IHtGb3JtU2VsZWN0U3ViamVjdH0gZnJvbSBcIi4vbmd4LWR5bmFtaWMtZm9ybS91dGlscy9mb3JtLXNlbGVjdC1zdWJqZWN0XCI7XHJcbmV4cG9ydCB7Rm9ybVN1YmplY3R9IGZyb20gXCIuL25neC1keW5hbWljLWZvcm0vdXRpbHMvZm9ybS1zdWJqZWN0XCI7XHJcblxyXG5leHBvcnQge0R5bmFtaWNGb3JtU2VydmljZX0gZnJvbSBcIi4vbmd4LWR5bmFtaWMtZm9ybS9zZXJ2aWNlcy9keW5hbWljLWZvcm0uc2VydmljZVwiO1xyXG5cclxuZXhwb3J0IHtBc3luY1N1Ym1pdERpcmVjdGl2ZX0gZnJvbSBcIi4vbmd4LWR5bmFtaWMtZm9ybS9kaXJlY3RpdmVzL2FzeW5jLXN1Ym1pdC5kaXJlY3RpdmVcIjtcclxuXHJcbmV4cG9ydCB7RHluYW1pY0Jhc2VGb3JtQ29tcG9uZW50fSBmcm9tIFwiLi9uZ3gtZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvYmFzZS9keW5hbWljLWJhc2UtZm9ybS5jb21wb25lbnRcIjtcclxuZXhwb3J0IHtEeW5hbWljQmFzZUZvcm1BcnJheUNvbXBvbmVudH0gZnJvbSBcIi4vbmd4LWR5bmFtaWMtZm9ybS9jb21wb25lbnRzL2Jhc2UvZHluYW1pYy1iYXNlLWZvcm0tYXJyYXkuY29tcG9uZW50XCI7XHJcbmV4cG9ydCB7XHJcbiAgICBEeW5hbWljQmFzZUZvcm1Db250cm9sQ29tcG9uZW50XHJcbn0gZnJvbSBcIi4vbmd4LWR5bmFtaWMtZm9ybS9jb21wb25lbnRzL2Jhc2UvZHluYW1pYy1iYXNlLWZvcm0tY29udHJvbC5jb21wb25lbnRcIjtcclxuZXhwb3J0IHtcclxuICAgIER5bmFtaWNCYXNlRm9ybUNvbnRyb2xDb250YWluZXJDb21wb25lbnRcclxufSBmcm9tIFwiLi9uZ3gtZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvYmFzZS9keW5hbWljLWJhc2UtZm9ybS1jb250cm9sLWNvbnRhaW5lci5jb21wb25lbnRcIjtcclxuZXhwb3J0IHtEeW5hbWljQmFzZUZvcm1Hcm91cENvbXBvbmVudH0gZnJvbSBcIi4vbmd4LWR5bmFtaWMtZm9ybS9jb21wb25lbnRzL2Jhc2UvZHluYW1pYy1iYXNlLWZvcm0tZ3JvdXAuY29tcG9uZW50XCI7XHJcbmV4cG9ydCB7RHluYW1pY0Jhc2VTZWxlY3RDb21wb25lbnR9IGZyb20gXCIuL25neC1keW5hbWljLWZvcm0vY29tcG9uZW50cy9iYXNlL2R5bmFtaWMtYmFzZS1zZWxlY3QuY29tcG9uZW50XCI7XHJcblxyXG5leHBvcnQge05neER5bmFtaWNGb3JtTW9kdWxlfSBmcm9tIFwiLi9uZ3gtZHluYW1pYy1mb3JtL25neC1keW5hbWljLWZvcm0ubW9kdWxlXCI7XHJcblxyXG5leHBvcnQge1xyXG4gICAgRFlOQU1JQ19GT1JNX0NPTlRST0xfVFlQRV9BUlJBWSxcclxuICAgIERZTkFNSUNfRk9STV9DT05UUk9MX1RZUEVfQ0hFQ0tCT1gsXHJcbiAgICBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9UWVBFX0NIRUNLQk9YX0dST1VQLFxyXG4gICAgRFlOQU1JQ19GT1JNX0NPTlRST0xfVFlQRV9GSUxFX1VQTE9BRCxcclxuICAgIERZTkFNSUNfRk9STV9DT05UUk9MX1RZUEVfR1JPVVAsXHJcbiAgICBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9UWVBFX0lOUFVULFxyXG4gICAgRFlOQU1JQ19GT1JNX0NPTlRST0xfVFlQRV9SQURJT19HUk9VUCxcclxuICAgIERZTkFNSUNfRk9STV9DT05UUk9MX1RZUEVfU0VMRUNULFxyXG4gICAgRFlOQU1JQ19GT1JNX0NPTlRST0xfVFlQRV9URVhUQVJFQSxcclxuICAgIERZTkFNSUNfRk9STV9DT05UUk9MX1RZUEVfRURJVE9SLFxyXG4gICAgRHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlLFxyXG4gICAgRHluYW1pY0xpc3REaXJlY3RpdmUsXHJcbiAgICBEeW5hbWljRm9ybU1vZGVsLFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sTWFwRm4sXHJcbiAgICBEeW5hbWljRm9ybXNDb3JlTW9kdWxlLFxyXG4gICAgRHluYW1pY0NoZWNrYm94TW9kZWxDb25maWcsXHJcbiAgICBEeW5hbWljQ2hlY2tib3hNb2RlbCxcclxuICAgIER5bmFtaWNDaGVja2JveEdyb3VwTW9kZWwsXHJcbiAgICBEeW5hbWljRmlsZVVwbG9hZE1vZGVsQ29uZmlnLFxyXG4gICAgRHluYW1pY0ZpbGVVcGxvYWRNb2RlbCxcclxuICAgIER5bmFtaWNGb3JtR3JvdXBNb2RlbENvbmZpZyxcclxuICAgIER5bmFtaWNGb3JtR3JvdXBNb2RlbCxcclxuICAgIER5bmFtaWNJbnB1dE1vZGVsQ29uZmlnLFxyXG4gICAgRHluYW1pY0lucHV0TW9kZWwsXHJcbiAgICBEeW5hbWljUmFkaW9Hcm91cE1vZGVsQ29uZmlnLFxyXG4gICAgRHluYW1pY1JhZGlvR3JvdXBNb2RlbCxcclxuICAgIER5bmFtaWNUZXh0QXJlYU1vZGVsQ29uZmlnLFxyXG4gICAgRHluYW1pY1RleHRBcmVhTW9kZWxcclxufSBmcm9tIFwiQG5nLWR5bmFtaWMtZm9ybXMvY29yZVwiO1xyXG4iXX0=
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as i2 from '@stemy/ngx-utils';
|
|
2
2
|
import { ReflectUtils, ObjectUtils, TimerUtils, StringUtils, OpenApiService, TOASTER_SERVICE, ObservableUtils, EventsService, NgxUtilsModule } from '@stemy/ngx-utils';
|
|
3
|
-
import {
|
|
3
|
+
import { __decorate, __awaiter } from 'tslib';
|
|
4
4
|
import * as i1 from '@ng-dynamic-forms/core';
|
|
5
|
-
import { DynamicFormArrayGroupModel as DynamicFormArrayGroupModel$1, DynamicFormArrayModel as DynamicFormArrayModel$1, DynamicFormOption as DynamicFormOption$1, DynamicSelectModel as DynamicSelectModel$1, DynamicFormService as DynamicFormService$1, DynamicFormGroupModel, DynamicInputModel, DynamicFileUploadModel, DynamicCheckboxModel,
|
|
6
|
-
export { DYNAMIC_FORM_CONTROL_TYPE_ARRAY, DYNAMIC_FORM_CONTROL_TYPE_CHECKBOX, DYNAMIC_FORM_CONTROL_TYPE_CHECKBOX_GROUP, DYNAMIC_FORM_CONTROL_TYPE_EDITOR, DYNAMIC_FORM_CONTROL_TYPE_FILE_UPLOAD, DYNAMIC_FORM_CONTROL_TYPE_GROUP, DYNAMIC_FORM_CONTROL_TYPE_INPUT, DYNAMIC_FORM_CONTROL_TYPE_RADIO_GROUP, DYNAMIC_FORM_CONTROL_TYPE_SELECT, DYNAMIC_FORM_CONTROL_TYPE_TEXTAREA, DynamicCheckboxGroupModel, DynamicCheckboxModel,
|
|
7
|
-
import {
|
|
5
|
+
import { DynamicInputControlModel, DYNAMIC_FORM_CONTROL_TYPE_EDITOR, serializable, DynamicFormArrayGroupModel as DynamicFormArrayGroupModel$1, DynamicFormArrayModel as DynamicFormArrayModel$1, DynamicFormOption as DynamicFormOption$1, DynamicSelectModel as DynamicSelectModel$1, DynamicFormService as DynamicFormService$1, DynamicFormGroupModel, DynamicInputModel, DynamicFileUploadModel, DynamicCheckboxModel, DynamicTextAreaModel, DynamicFormComponent, DynamicTemplateDirective, DynamicFormControlContainerComponent, DYNAMIC_FORM_CONTROL_TYPE_ARRAY, DynamicFormArrayComponent, DynamicFormValueControlModel, DynamicFormControlComponent, DynamicFormGroupComponent, DYNAMIC_FORM_CONTROL_MAP_FN, DYNAMIC_VALIDATORS } from '@ng-dynamic-forms/core';
|
|
6
|
+
export { DYNAMIC_FORM_CONTROL_TYPE_ARRAY, DYNAMIC_FORM_CONTROL_TYPE_CHECKBOX, DYNAMIC_FORM_CONTROL_TYPE_CHECKBOX_GROUP, DYNAMIC_FORM_CONTROL_TYPE_EDITOR, DYNAMIC_FORM_CONTROL_TYPE_FILE_UPLOAD, DYNAMIC_FORM_CONTROL_TYPE_GROUP, DYNAMIC_FORM_CONTROL_TYPE_INPUT, DYNAMIC_FORM_CONTROL_TYPE_RADIO_GROUP, DYNAMIC_FORM_CONTROL_TYPE_SELECT, DYNAMIC_FORM_CONTROL_TYPE_TEXTAREA, DynamicCheckboxGroupModel, DynamicCheckboxModel, DynamicFileUploadModel, DynamicFormGroupModel, DynamicFormsCoreModule, DynamicInputModel, DynamicListDirective, DynamicRadioGroupModel, DynamicTemplateDirective, DynamicTextAreaModel } from '@ng-dynamic-forms/core';
|
|
7
|
+
import { BehaviorSubject, of, isObservable, map, Subject, firstValueFrom, Subscription, debounceTime, groupBy, mergeMap } from 'rxjs';
|
|
8
8
|
import * as i0 from '@angular/core';
|
|
9
9
|
import { Injector, Injectable, Inject, EventEmitter, Directive, Input, Output, HostBinding, HostListener, QueryList, Component, ChangeDetectionStrategy, ContentChildren, ViewChildren, ViewChild, ViewContainerRef, forwardRef, NgModule } from '@angular/core';
|
|
10
10
|
import { FormGroup, FormArray, NgForm, FormsModule, ReactiveFormsModule, NG_VALIDATORS } from '@angular/forms';
|
|
@@ -208,6 +208,17 @@ function validateItemsMaxValue(max) {
|
|
|
208
208
|
};
|
|
209
209
|
}
|
|
210
210
|
|
|
211
|
+
class DynamicEditorModel extends DynamicInputControlModel {
|
|
212
|
+
constructor(config, layout) {
|
|
213
|
+
super(config, layout);
|
|
214
|
+
this.type = DYNAMIC_FORM_CONTROL_TYPE_EDITOR;
|
|
215
|
+
this.inputType = config.inputType || "javascript";
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
__decorate([
|
|
219
|
+
serializable()
|
|
220
|
+
], DynamicEditorModel.prototype, "type", void 0);
|
|
221
|
+
|
|
211
222
|
class DynamicFormArrayGroupModel extends DynamicFormArrayGroupModel$1 {
|
|
212
223
|
constructor(context, group, index = -1) {
|
|
213
224
|
super(context, group, index);
|
|
@@ -1716,5 +1727,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
1716
1727
|
* Generated bundle index. Do not edit.
|
|
1717
1728
|
*/
|
|
1718
1729
|
|
|
1719
|
-
export { AsyncSubmitDirective, DynamicBaseFormArrayComponent, DynamicBaseFormComponent, DynamicBaseFormControlComponent, DynamicBaseFormControlContainerComponent, DynamicBaseFormGroupComponent, DynamicBaseSelectComponent, DynamicFormArrayGroupModel, DynamicFormArrayModel, DynamicFormOption, DynamicFormService, DynamicSelectModel, EDITOR_FORMATS, FormFile, FormInput, FormModel, FormSelect, FormSelectSubject, FormSerializable, FormStatic, FormSubject, MAX_INPUT_NUM, MIN_INPUT_NUM, NgxDynamicFormModule, createFormControl, createFormInput, createFormModel, createFormSelect, createFormStatic, defaultSerializer, defineFormControl, getFormControl, getFormSerializer, mergeFormModels, replaceSpecialChars, validateItemsMaxLength, validateItemsMaxValue, validateItemsMinLength, validateItemsMinValue, validateJSON, validatePhone, validateRequiredTranslation };
|
|
1730
|
+
export { AsyncSubmitDirective, DynamicBaseFormArrayComponent, DynamicBaseFormComponent, DynamicBaseFormControlComponent, DynamicBaseFormControlContainerComponent, DynamicBaseFormGroupComponent, DynamicBaseSelectComponent, DynamicEditorModel, DynamicFormArrayGroupModel, DynamicFormArrayModel, DynamicFormOption, DynamicFormService, DynamicSelectModel, EDITOR_FORMATS, FormFile, FormInput, FormModel, FormSelect, FormSelectSubject, FormSerializable, FormStatic, FormSubject, MAX_INPUT_NUM, MIN_INPUT_NUM, NgxDynamicFormModule, createFormControl, createFormInput, createFormModel, createFormSelect, createFormStatic, defaultSerializer, defineFormControl, getFormControl, getFormSerializer, mergeFormModels, replaceSpecialChars, validateItemsMaxLength, validateItemsMaxValue, validateItemsMinLength, validateItemsMinValue, validateJSON, validatePhone, validateRequiredTranslation };
|
|
1720
1731
|
//# sourceMappingURL=stemy-ngx-dynamic-form.mjs.map
|