@piserve-tech/form-submission 1.2.4 → 1.2.5
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/README.md +24 -24
- package/element-type/form-elements/form-elements.component.d.ts +4 -1
- package/esm2022/element-type/element-type.module.mjs +1 -1
- package/esm2022/element-type/form-elements/form-elements.component.mjs +10 -4
- package/esm2022/form-fields/check-box-fields/check-box-fields.component.mjs +3 -3
- package/esm2022/form-fields/date-time-fields/date-time-fields.component.mjs +3 -3
- package/esm2022/form-fields/drop-down-fields/drop-down-fields.component.mjs +3 -3
- package/esm2022/form-fields/file-picker-fields/file-picker-fields.component.mjs +3 -3
- package/esm2022/form-fields/form-fields.module.mjs +1 -1
- package/esm2022/form-fields/location-fields/location-fields.component.mjs +3 -3
- package/esm2022/form-fields/mail-fields/mail-fields.component.mjs +3 -3
- package/esm2022/form-fields/mobile-fields/mobile-fields.component.mjs +3 -3
- package/esm2022/form-fields/number-fields/number-fields.component.mjs +3 -3
- package/esm2022/form-fields/password-fields/password-fields.component.mjs +3 -3
- package/esm2022/form-fields/radio-button-fields/radio-button-fields.component.mjs +3 -3
- package/esm2022/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.mjs +3 -3
- package/esm2022/form-fields/section-fields/section-fields.component.mjs +3 -3
- package/esm2022/form-fields/selection-matrix-fields/selection-matrix-fields.component.mjs +3 -3
- package/esm2022/form-fields/signature-fields/signature-fields.component.mjs +3 -3
- package/esm2022/form-fields/slider-fields/slider-fields.component.mjs +4 -4
- package/esm2022/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.mjs +3 -3
- package/esm2022/form-fields/text-area-fields/text-area-fields.component.mjs +3 -3
- package/esm2022/form-fields/text-fields/text-fields.component.mjs +3 -3
- package/esm2022/form-fields/toggle-switch-fields/toggle-switch-fields.component.mjs +3 -3
- package/esm2022/form-fields/url-fields/url-fields.component.mjs +3 -3
- package/esm2022/form-submission/form-submission.module.mjs +1 -1
- package/esm2022/form-submission/header/header.component.mjs +3 -3
- package/esm2022/form-submission/navigation-tabs/navigation-tabs.component.mjs +9 -3
- package/esm2022/form-submission/next-prev-navigation/next-prev-navigation.component.mjs +9 -3
- package/esm2022/form-submission/submit-form/submit-form.component.mjs +59 -25
- package/esm2022/lib/form-submission.component.mjs +3 -3
- package/esm2022/lib/form-submission.module.mjs +1 -1
- package/esm2022/lib/form-submission.service.mjs +1 -1
- package/esm2022/logic/first-child/first-child.component.mjs +3 -3
- package/esm2022/logic/forth-child/forth-child.component.mjs +3 -3
- package/esm2022/logic/logic.module.mjs +1 -1
- package/esm2022/logic/second-child/second-child.component.mjs +3 -3
- package/esm2022/logic/third-child/third-child.component.mjs +3 -3
- package/esm2022/models/answer.model.mjs +2 -0
- package/esm2022/models/appearance.model.mjs +1 -1
- package/esm2022/models/attachment.model.mjs +1 -1
- package/esm2022/models/elementOptionAPI.model.mjs +1 -1
- package/esm2022/models/elementOptionAPIData.model.mjs +1 -1
- package/esm2022/models/elementOptionDB.model.mjs +1 -1
- package/esm2022/models/elementOptionDBCriteria.model.mjs +1 -1
- package/esm2022/models/enum/condition.enum.mjs +1 -1
- package/esm2022/models/enum/elementType .enum.mjs +1 -1
- package/esm2022/models/enum/entityType.enum.mjs +1 -1
- package/esm2022/models/formConfiguration.model.mjs +1 -1
- package/esm2022/models/formElement.model.mjs +1 -1
- package/esm2022/models/formElementType.model.mjs +1 -1
- package/esm2022/models/grid.model.mjs +1 -1
- package/esm2022/models/logic.model.mjs +1 -1
- package/esm2022/models/option.model.mjs +1 -1
- package/esm2022/models/page.model.mjs +1 -1
- package/esm2022/models/publicForm.model.mjs +1 -1
- package/esm2022/models/question.model.mjs +1 -1
- package/esm2022/models/row.model.mjs +1 -1
- package/esm2022/models/section.model.mjs +1 -1
- package/esm2022/models/subForm.model.mjs +1 -1
- package/esm2022/models/submission.model.mjs +2 -0
- package/esm2022/models/validation.model.mjs +1 -1
- package/esm2022/public-api.mjs +1 -1
- package/esm2022/question/question/question.component.mjs +3 -3
- package/esm2022/question/question.module.mjs +1 -1
- package/esm2022/services/countryService.mjs +1 -1
- package/esm2022/services/data.service.mjs +1 -1
- package/esm2022/services/form.service.mjs +1 -1
- package/esm2022/services/mapper.service.mjs +17 -1
- package/esm2022/sub-form/multiple-subform/multiple-subform.component.mjs +123 -0
- package/esm2022/sub-form/sub-form/sub-form.component.mjs +39 -4
- package/esm2022/sub-form/sub-form.module.mjs +11 -5
- package/esm2022/sub-form/submission-modal/submission-modal.component.mjs +51 -0
- package/fesm2022/piserve-tech-form-submission.mjs +337 -88
- package/fesm2022/piserve-tech-form-submission.mjs.map +1 -1
- package/form-submission/navigation-tabs/navigation-tabs.component.d.ts +3 -1
- package/form-submission/next-prev-navigation/next-prev-navigation.component.d.ts +3 -1
- package/form-submission/submit-form/submit-form.component.d.ts +3 -4
- package/models/answer.model.d.ts +7 -0
- package/models/subForm.model.d.ts +4 -1
- package/models/submission.model.d.ts +5 -0
- package/package.json +1 -1
- package/sub-form/multiple-subform/multiple-subform.component.d.ts +34 -0
- package/sub-form/sub-form/sub-form.component.d.ts +8 -2
- package/sub-form/sub-form.module.d.ts +7 -4
- package/sub-form/submission-modal/submission-modal.component.d.ts +13 -0
|
@@ -9,6 +9,10 @@ export class NavigationTabsComponent {
|
|
|
9
9
|
this.pageChanged = new EventEmitter();
|
|
10
10
|
this.submitEmit = new EventEmitter();
|
|
11
11
|
this.edit = false;
|
|
12
|
+
this.subFormChange = new EventEmitter();
|
|
13
|
+
}
|
|
14
|
+
updateSubFormWithSubmissions(event) {
|
|
15
|
+
this.subFormChange.emit(event);
|
|
12
16
|
}
|
|
13
17
|
setCurrentPage(index) {
|
|
14
18
|
this.pageChanged.emit(index);
|
|
@@ -17,11 +21,11 @@ export class NavigationTabsComponent {
|
|
|
17
21
|
this.submitEmit.emit();
|
|
18
22
|
}
|
|
19
23
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NavigationTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
20
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NavigationTabsComponent, selector: "lib-navigation-tabs", inputs: { pages: "pages", currentPageIndex: "currentPageIndex", edit: "edit" }, outputs: { pageChanged: "pageChanged", submitEmit: "submitEmit" }, ngImport: i0, template: "<div class=\"tab-inner-container\">\n <ul class=\"nav nav-tabs navTabs\" id=\"myTab\" role=\"tablist\">\n <li\n class=\"nav-item\"\n role=\"presentation\"\n *ngFor=\"let page of pages; let i = index\"\n >\n <button\n class=\"nav-link\"\n [class.active]=\"i === currentPageIndex\"\n id=\"tab-{{ i }}\"\n [attr.data-bs-toggle]=\"'tab'\"\n [attr.data-bs-target]=\"'#content-' + i\"\n type=\"button\"\n role=\"tab\"\n [attr.aria-controls]=\"'content-' + i\"\n [attr.aria-selected]=\"i === 0\"\n (click)=\"setCurrentPage(i)\"\n >\n {{ page.title }}\n </button>\n </li>\n </ul>\n\n <div class=\"tab-content pt-5 pb-3 px-1\">\n <div\n *ngFor=\"let page of pages; let i = index\"\n class=\"tab-pane fade\"\n [class.show]=\"i === 0\"\n [class.active]=\"i === 0\"\n id=\"content-{{ i }}\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"'tab-' + i\"\n >\n <div *ngFor=\"let row of page.rows\">\n <div class=\"margin\">\n <div *ngFor=\"let grid of row.grid\">\n <lib-form-elements\n [grid]=\"grid\"\n [edit]=\"edit\"\n ></lib-form-elements>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"currentPageIndex == pages.length - 1\"\n class=\"footerButton d-flex justify-content-end\"\n >\n <button\n class=\"btn btn-primary me-md-2 rounded-pill\"\n type=\"button\"\n (click)=\"submitForm()\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n</div>\n", styles: [".tab-inner-container{width:100%;position:relative;padding:3rem}@media (max-width: 1024px){.tab-inner-container{padding-left:1rem;padding-right:1rem}}@media (max-width: 576px){.tab-inner-container{padding:2rem .5rem}}.navTabs{overflow-x:auto;overflow-y:hidden;flex-wrap:unset;margin:0 0 -1px!important}.nav-item{background-color:#fff;border-radius:5px;margin-right:.5%}.nav-link{position:relative;margin-bottom:-2px}.nav-link:after{content:\"\";position:absolute;left:0;bottom:0;width:101%;height:6px;background:#efefef}.nav-link.active:after{display:none}.tab-content{background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FormElementsComponent, selector: "lib-form-elements", inputs: ["grid", "currentPageIndex", "edit"] }] }); }
|
|
24
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NavigationTabsComponent, selector: "lib-navigation-tabs", inputs: { pages: "pages", currentPageIndex: "currentPageIndex", edit: "edit" }, outputs: { pageChanged: "pageChanged", submitEmit: "submitEmit", subFormChange: "subFormChange" }, ngImport: i0, template: "<div class=\"tab-inner-container\">\r\n <ul class=\"nav nav-tabs navTabs\" id=\"myTab\" role=\"tablist\">\r\n <li\r\n class=\"nav-item\"\r\n role=\"presentation\"\r\n *ngFor=\"let page of pages; let i = index\"\r\n >\r\n <button\r\n class=\"nav-link\"\r\n [class.active]=\"i === currentPageIndex\"\r\n id=\"tab-{{ i }}\"\r\n [attr.data-bs-toggle]=\"'tab'\"\r\n [attr.data-bs-target]=\"'#content-' + i\"\r\n type=\"button\"\r\n role=\"tab\"\r\n [attr.aria-controls]=\"'content-' + i\"\r\n [attr.aria-selected]=\"i === 0\"\r\n (click)=\"setCurrentPage(i)\"\r\n >\r\n {{ page.title }}\r\n </button>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"tab-content pt-5 pb-3 px-1\">\r\n <div\r\n *ngFor=\"let page of pages; let i = index\"\r\n class=\"tab-pane fade\"\r\n [class.show]=\"i === 0\"\r\n [class.active]=\"i === 0\"\r\n id=\"content-{{ i }}\"\r\n role=\"tabpanel\"\r\n [attr.aria-labelledby]=\"'tab-' + i\"\r\n >\r\n <div *ngFor=\"let row of page.rows\">\r\n <div class=\"margin\">\r\n <div *ngFor=\"let grid of row.grid\">\r\n <lib-form-elements\r\n [grid]=\"grid\"\r\n [edit]=\"edit\"\r\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\r\n ></lib-form-elements>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"currentPageIndex == pages.length - 1\"\r\n class=\"footerButton d-flex justify-content-end\"\r\n >\r\n <button\r\n class=\"btn btn-primary me-md-2 rounded-pill\"\r\n type=\"button\"\r\n (click)=\"submitForm()\"\r\n >\r\n Submit\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".tab-inner-container{width:100%;position:relative;padding:3rem}@media (max-width: 1024px){.tab-inner-container{padding-left:1rem;padding-right:1rem}}@media (max-width: 576px){.tab-inner-container{padding:2rem .5rem}}.navTabs{overflow-x:auto;overflow-y:hidden;flex-wrap:unset;margin:0 0 -1px!important}.nav-item{background-color:#fff;border-radius:5px;margin-right:.5%}.nav-link{position:relative;margin-bottom:-2px}.nav-link:after{content:\"\";position:absolute;left:0;bottom:0;width:101%;height:6px;background:#efefef}.nav-link.active:after{display:none}.tab-content{background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FormElementsComponent, selector: "lib-form-elements", inputs: ["grid", "currentPageIndex", "edit"], outputs: ["subFormChange"] }] }); }
|
|
21
25
|
}
|
|
22
26
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NavigationTabsComponent, decorators: [{
|
|
23
27
|
type: Component,
|
|
24
|
-
args: [{ selector: 'lib-navigation-tabs', template: "<div class=\"tab-inner-container\">\n <ul class=\"nav nav-tabs navTabs\" id=\"myTab\" role=\"tablist\">\n <li\n class=\"nav-item\"\n role=\"presentation\"\n *ngFor=\"let page of pages; let i = index\"\n >\n <button\n class=\"nav-link\"\n [class.active]=\"i === currentPageIndex\"\n id=\"tab-{{ i }}\"\n [attr.data-bs-toggle]=\"'tab'\"\n [attr.data-bs-target]=\"'#content-' + i\"\n type=\"button\"\n role=\"tab\"\n [attr.aria-controls]=\"'content-' + i\"\n [attr.aria-selected]=\"i === 0\"\n (click)=\"setCurrentPage(i)\"\n >\n {{ page.title }}\n </button>\n </li>\n </ul>\n\n <div class=\"tab-content pt-5 pb-3 px-1\">\n <div\n *ngFor=\"let page of pages; let i = index\"\n class=\"tab-pane fade\"\n [class.show]=\"i === 0\"\n [class.active]=\"i === 0\"\n id=\"content-{{ i }}\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"'tab-' + i\"\n >\n <div *ngFor=\"let row of page.rows\">\n <div class=\"margin\">\n <div *ngFor=\"let grid of row.grid\">\n <lib-form-elements\n [grid]=\"grid\"\n [edit]=\"edit\"\n ></lib-form-elements>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"currentPageIndex == pages.length - 1\"\n class=\"footerButton d-flex justify-content-end\"\n >\n <button\n class=\"btn btn-primary me-md-2 rounded-pill\"\n type=\"button\"\n (click)=\"submitForm()\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n</div>\n", styles: [".tab-inner-container{width:100%;position:relative;padding:3rem}@media (max-width: 1024px){.tab-inner-container{padding-left:1rem;padding-right:1rem}}@media (max-width: 576px){.tab-inner-container{padding:2rem .5rem}}.navTabs{overflow-x:auto;overflow-y:hidden;flex-wrap:unset;margin:0 0 -1px!important}.nav-item{background-color:#fff;border-radius:5px;margin-right:.5%}.nav-link{position:relative;margin-bottom:-2px}.nav-link:after{content:\"\";position:absolute;left:0;bottom:0;width:101%;height:6px;background:#efefef}.nav-link.active:after{display:none}.tab-content{background-color:#fff}\n"] }]
|
|
28
|
+
args: [{ selector: 'lib-navigation-tabs', template: "<div class=\"tab-inner-container\">\r\n <ul class=\"nav nav-tabs navTabs\" id=\"myTab\" role=\"tablist\">\r\n <li\r\n class=\"nav-item\"\r\n role=\"presentation\"\r\n *ngFor=\"let page of pages; let i = index\"\r\n >\r\n <button\r\n class=\"nav-link\"\r\n [class.active]=\"i === currentPageIndex\"\r\n id=\"tab-{{ i }}\"\r\n [attr.data-bs-toggle]=\"'tab'\"\r\n [attr.data-bs-target]=\"'#content-' + i\"\r\n type=\"button\"\r\n role=\"tab\"\r\n [attr.aria-controls]=\"'content-' + i\"\r\n [attr.aria-selected]=\"i === 0\"\r\n (click)=\"setCurrentPage(i)\"\r\n >\r\n {{ page.title }}\r\n </button>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"tab-content pt-5 pb-3 px-1\">\r\n <div\r\n *ngFor=\"let page of pages; let i = index\"\r\n class=\"tab-pane fade\"\r\n [class.show]=\"i === 0\"\r\n [class.active]=\"i === 0\"\r\n id=\"content-{{ i }}\"\r\n role=\"tabpanel\"\r\n [attr.aria-labelledby]=\"'tab-' + i\"\r\n >\r\n <div *ngFor=\"let row of page.rows\">\r\n <div class=\"margin\">\r\n <div *ngFor=\"let grid of row.grid\">\r\n <lib-form-elements\r\n [grid]=\"grid\"\r\n [edit]=\"edit\"\r\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\r\n ></lib-form-elements>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"currentPageIndex == pages.length - 1\"\r\n class=\"footerButton d-flex justify-content-end\"\r\n >\r\n <button\r\n class=\"btn btn-primary me-md-2 rounded-pill\"\r\n type=\"button\"\r\n (click)=\"submitForm()\"\r\n >\r\n Submit\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".tab-inner-container{width:100%;position:relative;padding:3rem}@media (max-width: 1024px){.tab-inner-container{padding-left:1rem;padding-right:1rem}}@media (max-width: 576px){.tab-inner-container{padding:2rem .5rem}}.navTabs{overflow-x:auto;overflow-y:hidden;flex-wrap:unset;margin:0 0 -1px!important}.nav-item{background-color:#fff;border-radius:5px;margin-right:.5%}.nav-link{position:relative;margin-bottom:-2px}.nav-link:after{content:\"\";position:absolute;left:0;bottom:0;width:101%;height:6px;background:#efefef}.nav-link.active:after{display:none}.tab-content{background-color:#fff}\n"] }]
|
|
25
29
|
}], propDecorators: { pages: [{
|
|
26
30
|
type: Input
|
|
27
31
|
}], currentPageIndex: [{
|
|
@@ -32,5 +36,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
32
36
|
type: Output
|
|
33
37
|
}], edit: [{
|
|
34
38
|
type: Input
|
|
39
|
+
}], subFormChange: [{
|
|
40
|
+
type: Output
|
|
35
41
|
}] } });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi10YWJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0tc3VibWlzc2lvbi9zcmMvZm9ybS1zdWJtaXNzaW9uL25hdmlnYXRpb24tdGFicy9uYXZpZ2F0aW9uLXRhYnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9mb3JtLXN1Ym1pc3Npb24vbmF2aWdhdGlvbi10YWJzL25hdmlnYXRpb24tdGFicy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBT3ZFLE1BQU0sT0FBTyx1QkFBdUI7SUFMcEM7UUFNVyxVQUFLLEdBQVUsRUFBRSxDQUFDO1FBQ2xCLHFCQUFnQixHQUFXLENBQUMsQ0FBQztRQUM1QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDekMsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3pELFNBQUksR0FBYSxLQUFLLENBQUM7UUFDdEIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0tBZW5EO0lBWkMsNEJBQTRCLENBQUMsS0FBUztRQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBR0QsY0FBYyxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7K0dBcEJVLHVCQUF1QjttR0FBdkIsdUJBQXVCLDhPQ1BwQywyMERBNERBOzs0RkRyRGEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHFCQUFxQjs4QkFLdEIsS0FBSztzQkFBYixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0UsSUFBSTtzQkFBWixLQUFLO2dCQUNJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItbmF2aWdhdGlvbi10YWJzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmF2aWdhdGlvbi10YWJzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9uYXZpZ2F0aW9uLXRhYnMuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5hdmlnYXRpb25UYWJzQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBwYWdlczogYW55W10gPSBbXTtcclxuICBASW5wdXQoKSBjdXJyZW50UGFnZUluZGV4OiBudW1iZXIgPSAwO1xyXG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIEBPdXRwdXQoKSBzdWJtaXRFbWl0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBJbnB1dCgpIGVkaXQgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIHN1YkZvcm1DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblxyXG4gIHVwZGF0ZVN1YkZvcm1XaXRoU3VibWlzc2lvbnMoZXZlbnQ6YW55KXtcclxuICAgIHRoaXMuc3ViRm9ybUNoYW5nZS5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG5cclxuICBzZXRDdXJyZW50UGFnZShpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnBhZ2VDaGFuZ2VkLmVtaXQoaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgc3VibWl0Rm9ybSgpIHtcclxuICAgIHRoaXMuc3VibWl0RW1pdC5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0YWItaW5uZXItY29udGFpbmVyXCI+XHJcbiAgPHVsIGNsYXNzPVwibmF2IG5hdi10YWJzIG5hdlRhYnNcIiBpZD1cIm15VGFiXCIgcm9sZT1cInRhYmxpc3RcIj5cclxuICAgIDxsaVxyXG4gICAgICBjbGFzcz1cIm5hdi1pdGVtXCJcclxuICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXHJcbiAgICAgICpuZ0Zvcj1cImxldCBwYWdlIG9mIHBhZ2VzOyBsZXQgaSA9IGluZGV4XCJcclxuICAgID5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwibmF2LWxpbmtcIlxyXG4gICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaSA9PT0gY3VycmVudFBhZ2VJbmRleFwiXHJcbiAgICAgICAgaWQ9XCJ0YWIte3sgaSB9fVwiXHJcbiAgICAgICAgW2F0dHIuZGF0YS1icy10b2dnbGVdPVwiJ3RhYidcIlxyXG4gICAgICAgIFthdHRyLmRhdGEtYnMtdGFyZ2V0XT1cIicjY29udGVudC0nICsgaVwiXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgcm9sZT1cInRhYlwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCInY29udGVudC0nICsgaVwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpID09PSAwXCJcclxuICAgICAgICAoY2xpY2spPVwic2V0Q3VycmVudFBhZ2UoaSlcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgcGFnZS50aXRsZSB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvbGk+XHJcbiAgPC91bD5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInRhYi1jb250ZW50IHB0LTUgcGItMyBweC0xXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0Zvcj1cImxldCBwYWdlIG9mIHBhZ2VzOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgY2xhc3M9XCJ0YWItcGFuZSBmYWRlXCJcclxuICAgICAgW2NsYXNzLnNob3ddPVwiaSA9PT0gMFwiXHJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaSA9PT0gMFwiXHJcbiAgICAgIGlkPVwiY29udGVudC17eyBpIH19XCJcclxuICAgICAgcm9sZT1cInRhYnBhbmVsXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIid0YWItJyArIGlcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByb3cgb2YgcGFnZS5yb3dzXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1hcmdpblwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZ3JpZCBvZiByb3cuZ3JpZFwiPlxyXG4gICAgICAgICAgICA8bGliLWZvcm0tZWxlbWVudHNcclxuICAgICAgICAgICAgICBbZ3JpZF09XCJncmlkXCJcclxuICAgICAgICAgICAgICBbZWRpdF09XCJlZGl0XCJcclxuICAgICAgICAgICAgICAoc3ViRm9ybUNoYW5nZSk9XCJ1cGRhdGVTdWJGb3JtV2l0aFN1Ym1pc3Npb25zKCRldmVudClcIlxyXG4gICAgICAgICAgICA+PC9saWItZm9ybS1lbGVtZW50cz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwiY3VycmVudFBhZ2VJbmRleCA9PSBwYWdlcy5sZW5ndGggLSAxXCJcclxuICAgICAgICBjbGFzcz1cImZvb3RlckJ1dHRvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiXHJcbiAgICAgID5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtZS1tZC0yIHJvdW5kZWQtcGlsbFwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIChjbGljayk9XCJzdWJtaXRGb3JtKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIFN1Ym1pdFxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -13,6 +13,10 @@ export class NextPrevNavigationComponent {
|
|
|
13
13
|
this.navigatePrevious = new EventEmitter();
|
|
14
14
|
this.submitEmit = new EventEmitter();
|
|
15
15
|
this.edit = false;
|
|
16
|
+
this.subFormChange = new EventEmitter();
|
|
17
|
+
}
|
|
18
|
+
updateSubFormWithSubmissions(event) {
|
|
19
|
+
this.subFormChange.emit(event);
|
|
16
20
|
}
|
|
17
21
|
onNavigateNext() {
|
|
18
22
|
this.navigateNext.emit();
|
|
@@ -24,11 +28,11 @@ export class NextPrevNavigationComponent {
|
|
|
24
28
|
this.submitEmit.emit();
|
|
25
29
|
}
|
|
26
30
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NextPrevNavigationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NextPrevNavigationComponent, selector: "lib-next-prev-navigation", inputs: { currentPageIndex: "currentPageIndex", pages: "pages", previousPage: "previousPage", nextPage: "nextPage", currentPage: "currentPage", edit: "edit" }, outputs: { navigateNext: "navigateNext", navigatePrevious: "navigatePrevious", submitEmit: "submitEmit" }, ngImport: i0, template: "<div class=\"pageTitleDiv\">\n <p class=\"pageTitle\">{{ currentPage.title }}</p>\n</div>\n<div class=\"button-inner-container rounded\">\n <div class=\"tab-content pt-5 pb-3 row\">\n <div *ngFor=\"let row of pages[currentPageIndex].rows\" class=\"marginSize\">\n <div *ngFor=\"let grid of row.grid\">\n <lib-form-elements\n [grid]=\"grid\"\n [currentPageIndex]=\"currentPageIndex\"\n [edit]=\"edit\"\n ></lib-form-elements>\n </div>\n </div>\n <div class=\"footerButton\">\n <div class=\"prevButtonDiv\">\n <button\n class=\"me-md-2 rounded-pill navButton\"\n type=\"button\"\n (click)=\"onNavigatePrevious()\"\n *ngIf=\"0 < currentPageIndex\"\n >\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.51025 11.9883L19.5003 11.9883\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M10.514 17.9766L4.49805 11.9996L10.514 6.02256\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n Previous | {{ previousPage.title }}\n </button>\n </div>\n <div class=\"nextButtonDiv\">\n <button\n class=\"md-2 rounded-pill navButton\"\n type=\"button\"\n (click)=\"onNavigateNext()\"\n *ngIf=\"currentPageIndex < pages.length - 1\"\n >\n Next | {{ nextPage.title }}\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.4897 12.0117L4.49975 12.0117\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M13.486 6.02344L19.502 12.0004L13.486 17.9774\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n <button\n class=\"submitBtn me-md-2 rounded-pill\"\n type=\"button\"\n *ngIf=\"currentPageIndex == pages.length - 1\"\n (click)=\"submitForm()\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n</div>\n", styles: [".pageTitle{font-size:15px;font-weight:500}.pageTitleDiv{padding-left:3rem;padding-top:3rem}@media (max-width: 1024px){.pageTitleDiv{padding-left:1rem;padding-top:2rem}}@media (max-width: 576px){.pageTitleDiv{padding-left:.4rem;padding-top:1.5rem}}.button-inner-container{width:100%;position:relative;padding:0rem 3rem 3rem}@media (max-width: 1024px){.button-inner-container{padding-left:1rem;padding-right:1rem}}@media (max-width: 576px){.button-inner-container{padding:.1rem .5rem 2rem}}@media (max-width: 576px){.marginSize{padding:0!important}}.footerButton{padding:10px 32px 16px 30px;display:flex;flex-wrap:wrap}@media (max-width: 576px){.footerButton{padding-left:20px;padding-right:17px}}.navButton{background:#084fff;color:#fff;border:none;padding:10px 8px;width:auto}.submitBtn{background:#084fff;color:#fff;border:none;padding:10px 27px;width:auto}.prevButtonDiv{display:flex;justify-content:center;margin-bottom:5px}.nextButtonDiv{display:flex;justify-content:end;margin-left:auto;margin-bottom:5px}.tab-content,.row{background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FormElementsComponent, selector: "lib-form-elements", inputs: ["grid", "currentPageIndex", "edit"] }] }); }
|
|
31
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NextPrevNavigationComponent, selector: "lib-next-prev-navigation", inputs: { currentPageIndex: "currentPageIndex", pages: "pages", previousPage: "previousPage", nextPage: "nextPage", currentPage: "currentPage", edit: "edit" }, outputs: { navigateNext: "navigateNext", navigatePrevious: "navigatePrevious", submitEmit: "submitEmit", subFormChange: "subFormChange" }, ngImport: i0, template: "<div class=\"pageTitleDiv\">\r\n <p class=\"pageTitle\">{{ currentPage.title }}</p>\r\n</div>\r\n<div class=\"button-inner-container rounded\">\r\n <div class=\"tab-content pt-5 pb-3 row\">\r\n <div *ngFor=\"let row of pages[currentPageIndex].rows\" class=\"marginSize\">\r\n <div *ngFor=\"let grid of row.grid\">\r\n <lib-form-elements\r\n [grid]=\"grid\"\r\n [currentPageIndex]=\"currentPageIndex\"\r\n [edit]=\"edit\"\r\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\r\n ></lib-form-elements>\r\n </div>\r\n </div>\r\n <div class=\"footerButton\">\r\n <div class=\"prevButtonDiv\">\r\n <button\r\n class=\"me-md-2 rounded-pill navButton\"\r\n type=\"button\"\r\n (click)=\"onNavigatePrevious()\"\r\n *ngIf=\"0 < currentPageIndex\"\r\n >\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M4.51025 11.9883L19.5003 11.9883\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M10.514 17.9766L4.49805 11.9996L10.514 6.02256\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n Previous | {{ previousPage.title }}\r\n </button>\r\n </div>\r\n <div class=\"nextButtonDiv\">\r\n <button\r\n class=\"md-2 rounded-pill navButton\"\r\n type=\"button\"\r\n (click)=\"onNavigateNext()\"\r\n *ngIf=\"currentPageIndex < pages.length - 1\"\r\n >\r\n Next | {{ nextPage.title }}\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M19.4897 12.0117L4.49975 12.0117\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M13.486 6.02344L19.502 12.0004L13.486 17.9774\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </button>\r\n <button\r\n class=\"submitBtn me-md-2 rounded-pill\"\r\n type=\"button\"\r\n *ngIf=\"currentPageIndex == pages.length - 1\"\r\n (click)=\"submitForm()\"\r\n >\r\n Submit\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".pageTitle{font-size:15px;font-weight:500}.pageTitleDiv{padding-left:3rem;padding-top:3rem}@media (max-width: 1024px){.pageTitleDiv{padding-left:1rem;padding-top:2rem}}@media (max-width: 576px){.pageTitleDiv{padding-left:.4rem;padding-top:1.5rem}}.button-inner-container{width:100%;position:relative;padding:0rem 3rem 3rem}@media (max-width: 1024px){.button-inner-container{padding-left:1rem;padding-right:1rem}}@media (max-width: 576px){.button-inner-container{padding:.1rem .5rem 2rem}}@media (max-width: 576px){.marginSize{padding:0!important}}.footerButton{padding:10px 32px 16px 30px;display:flex;flex-wrap:wrap}@media (max-width: 576px){.footerButton{padding-left:20px;padding-right:17px}}.navButton{background:#084fff;color:#fff;border:none;padding:10px 8px;width:auto}.submitBtn{background:#084fff;color:#fff;border:none;padding:10px 27px;width:auto}.prevButtonDiv{display:flex;justify-content:center;margin-bottom:5px}.nextButtonDiv{display:flex;justify-content:end;margin-left:auto;margin-bottom:5px}.tab-content,.row{background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FormElementsComponent, selector: "lib-form-elements", inputs: ["grid", "currentPageIndex", "edit"], outputs: ["subFormChange"] }] }); }
|
|
28
32
|
}
|
|
29
33
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NextPrevNavigationComponent, decorators: [{
|
|
30
34
|
type: Component,
|
|
31
|
-
args: [{ selector: 'lib-next-prev-navigation', template: "<div class=\"pageTitleDiv\">\n <p class=\"pageTitle\">{{ currentPage.title }}</p>\n</div>\n<div class=\"button-inner-container rounded\">\n <div class=\"tab-content pt-5 pb-3 row\">\n <div *ngFor=\"let row of pages[currentPageIndex].rows\" class=\"marginSize\">\n <div *ngFor=\"let grid of row.grid\">\n <lib-form-elements\n [grid]=\"grid\"\n [currentPageIndex]=\"currentPageIndex\"\n [edit]=\"edit\"\n ></lib-form-elements>\n </div>\n </div>\n <div class=\"footerButton\">\n <div class=\"prevButtonDiv\">\n <button\n class=\"me-md-2 rounded-pill navButton\"\n type=\"button\"\n (click)=\"onNavigatePrevious()\"\n *ngIf=\"0 < currentPageIndex\"\n >\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.51025 11.9883L19.5003 11.9883\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M10.514 17.9766L4.49805 11.9996L10.514 6.02256\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n Previous | {{ previousPage.title }}\n </button>\n </div>\n <div class=\"nextButtonDiv\">\n <button\n class=\"md-2 rounded-pill navButton\"\n type=\"button\"\n (click)=\"onNavigateNext()\"\n *ngIf=\"currentPageIndex < pages.length - 1\"\n >\n Next | {{ nextPage.title }}\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.4897 12.0117L4.49975 12.0117\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M13.486 6.02344L19.502 12.0004L13.486 17.9774\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n <button\n class=\"submitBtn me-md-2 rounded-pill\"\n type=\"button\"\n *ngIf=\"currentPageIndex == pages.length - 1\"\n (click)=\"submitForm()\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n</div>\n", styles: [".pageTitle{font-size:15px;font-weight:500}.pageTitleDiv{padding-left:3rem;padding-top:3rem}@media (max-width: 1024px){.pageTitleDiv{padding-left:1rem;padding-top:2rem}}@media (max-width: 576px){.pageTitleDiv{padding-left:.4rem;padding-top:1.5rem}}.button-inner-container{width:100%;position:relative;padding:0rem 3rem 3rem}@media (max-width: 1024px){.button-inner-container{padding-left:1rem;padding-right:1rem}}@media (max-width: 576px){.button-inner-container{padding:.1rem .5rem 2rem}}@media (max-width: 576px){.marginSize{padding:0!important}}.footerButton{padding:10px 32px 16px 30px;display:flex;flex-wrap:wrap}@media (max-width: 576px){.footerButton{padding-left:20px;padding-right:17px}}.navButton{background:#084fff;color:#fff;border:none;padding:10px 8px;width:auto}.submitBtn{background:#084fff;color:#fff;border:none;padding:10px 27px;width:auto}.prevButtonDiv{display:flex;justify-content:center;margin-bottom:5px}.nextButtonDiv{display:flex;justify-content:end;margin-left:auto;margin-bottom:5px}.tab-content,.row{background-color:#fff}\n"] }]
|
|
35
|
+
args: [{ selector: 'lib-next-prev-navigation', template: "<div class=\"pageTitleDiv\">\r\n <p class=\"pageTitle\">{{ currentPage.title }}</p>\r\n</div>\r\n<div class=\"button-inner-container rounded\">\r\n <div class=\"tab-content pt-5 pb-3 row\">\r\n <div *ngFor=\"let row of pages[currentPageIndex].rows\" class=\"marginSize\">\r\n <div *ngFor=\"let grid of row.grid\">\r\n <lib-form-elements\r\n [grid]=\"grid\"\r\n [currentPageIndex]=\"currentPageIndex\"\r\n [edit]=\"edit\"\r\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\r\n ></lib-form-elements>\r\n </div>\r\n </div>\r\n <div class=\"footerButton\">\r\n <div class=\"prevButtonDiv\">\r\n <button\r\n class=\"me-md-2 rounded-pill navButton\"\r\n type=\"button\"\r\n (click)=\"onNavigatePrevious()\"\r\n *ngIf=\"0 < currentPageIndex\"\r\n >\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M4.51025 11.9883L19.5003 11.9883\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M10.514 17.9766L4.49805 11.9996L10.514 6.02256\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n Previous | {{ previousPage.title }}\r\n </button>\r\n </div>\r\n <div class=\"nextButtonDiv\">\r\n <button\r\n class=\"md-2 rounded-pill navButton\"\r\n type=\"button\"\r\n (click)=\"onNavigateNext()\"\r\n *ngIf=\"currentPageIndex < pages.length - 1\"\r\n >\r\n Next | {{ nextPage.title }}\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M19.4897 12.0117L4.49975 12.0117\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M13.486 6.02344L19.502 12.0004L13.486 17.9774\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </button>\r\n <button\r\n class=\"submitBtn me-md-2 rounded-pill\"\r\n type=\"button\"\r\n *ngIf=\"currentPageIndex == pages.length - 1\"\r\n (click)=\"submitForm()\"\r\n >\r\n Submit\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".pageTitle{font-size:15px;font-weight:500}.pageTitleDiv{padding-left:3rem;padding-top:3rem}@media (max-width: 1024px){.pageTitleDiv{padding-left:1rem;padding-top:2rem}}@media (max-width: 576px){.pageTitleDiv{padding-left:.4rem;padding-top:1.5rem}}.button-inner-container{width:100%;position:relative;padding:0rem 3rem 3rem}@media (max-width: 1024px){.button-inner-container{padding-left:1rem;padding-right:1rem}}@media (max-width: 576px){.button-inner-container{padding:.1rem .5rem 2rem}}@media (max-width: 576px){.marginSize{padding:0!important}}.footerButton{padding:10px 32px 16px 30px;display:flex;flex-wrap:wrap}@media (max-width: 576px){.footerButton{padding-left:20px;padding-right:17px}}.navButton{background:#084fff;color:#fff;border:none;padding:10px 8px;width:auto}.submitBtn{background:#084fff;color:#fff;border:none;padding:10px 27px;width:auto}.prevButtonDiv{display:flex;justify-content:center;margin-bottom:5px}.nextButtonDiv{display:flex;justify-content:end;margin-left:auto;margin-bottom:5px}.tab-content,.row{background-color:#fff}\n"] }]
|
|
32
36
|
}], propDecorators: { currentPageIndex: [{
|
|
33
37
|
type: Input
|
|
34
38
|
}], pages: [{
|
|
@@ -47,5 +51,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
47
51
|
type: Output
|
|
48
52
|
}], edit: [{
|
|
49
53
|
type: Input
|
|
54
|
+
}], subFormChange: [{
|
|
55
|
+
type: Output
|
|
50
56
|
}] } });
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dC1wcmV2LW5hdmlnYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9mb3JtLXN1Ym1pc3Npb24vbmV4dC1wcmV2LW5hdmlnYXRpb24vbmV4dC1wcmV2LW5hdmlnYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9mb3JtLXN1Ym1pc3Npb24vbmV4dC1wcmV2LW5hdmlnYXRpb24vbmV4dC1wcmV2LW5hdmlnYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQzs7OztBQU9sRixNQUFNLE9BQU8sMkJBQTJCO0lBTHhDO1FBT1cscUJBQWdCLEdBQVcsQ0FBQyxDQUFDO1FBQzdCLFVBQUssR0FBVSxFQUFFLENBQUM7UUFDbEIsaUJBQVksR0FBUSxFQUFFLENBQUM7UUFDdkIsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUNuQixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUNyQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDeEMscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUM1QyxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDekQsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUNyQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7S0FrQm5EO0lBZkMsNEJBQTRCLENBQUMsS0FBVTtRQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7K0dBNUJVLDJCQUEyQjttR0FBM0IsMkJBQTJCLDJXQ1B4QyxnM0ZBdUZBOzs0RkRoRmEsMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNFLDBCQUEwQjs4QkFNM0IsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNFLElBQUk7c0JBQVosS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItbmV4dC1wcmV2LW5hdmlnYXRpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZXh0LXByZXYtbmF2aWdhdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbmV4dC1wcmV2LW5hdmlnYXRpb24uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmV4dFByZXZOYXZpZ2F0aW9uQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KCkgY3VycmVudFBhZ2VJbmRleDogbnVtYmVyID0gMDtcclxuICBASW5wdXQoKSBwYWdlczogYW55W10gPSBbXTtcclxuICBASW5wdXQoKSBwcmV2aW91c1BhZ2U6IGFueSA9IHt9O1xyXG4gIEBJbnB1dCgpIG5leHRQYWdlOiBhbnkgPSB7fTtcclxuICBASW5wdXQoKSBjdXJyZW50UGFnZTogYW55ID0ge307XHJcbiAgQE91dHB1dCgpIG5hdmlnYXRlTmV4dCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgbmF2aWdhdGVQcmV2aW91cyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgc3VibWl0RW1pdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBASW5wdXQoKSBlZGl0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIHN1YkZvcm1DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblxyXG4gIHVwZGF0ZVN1YkZvcm1XaXRoU3VibWlzc2lvbnMoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zdWJGb3JtQ2hhbmdlLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgb25OYXZpZ2F0ZU5leHQoKSB7XHJcbiAgICB0aGlzLm5hdmlnYXRlTmV4dC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvbk5hdmlnYXRlUHJldmlvdXMoKSB7XHJcbiAgICB0aGlzLm5hdmlnYXRlUHJldmlvdXMuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgc3VibWl0Rm9ybSgpIHtcclxuICAgIHRoaXMuc3VibWl0RW1pdC5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJwYWdlVGl0bGVEaXZcIj5cclxuICA8cCBjbGFzcz1cInBhZ2VUaXRsZVwiPnt7IGN1cnJlbnRQYWdlLnRpdGxlIH19PC9wPlxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cImJ1dHRvbi1pbm5lci1jb250YWluZXIgcm91bmRlZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ0YWItY29udGVudCBwdC01IHBiLTMgcm93XCI+XHJcbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCByb3cgb2YgcGFnZXNbY3VycmVudFBhZ2VJbmRleF0ucm93c1wiIGNsYXNzPVwibWFyZ2luU2l6ZVwiPlxyXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBncmlkIG9mIHJvdy5ncmlkXCI+XHJcbiAgICAgICAgPGxpYi1mb3JtLWVsZW1lbnRzXHJcbiAgICAgICAgICBbZ3JpZF09XCJncmlkXCJcclxuICAgICAgICAgIFtjdXJyZW50UGFnZUluZGV4XT1cImN1cnJlbnRQYWdlSW5kZXhcIlxyXG4gICAgICAgICAgW2VkaXRdPVwiZWRpdFwiXHJcbiAgICAgICAgICAoc3ViRm9ybUNoYW5nZSk9XCJ1cGRhdGVTdWJGb3JtV2l0aFN1Ym1pc3Npb25zKCRldmVudClcIlxyXG4gICAgICAgID48L2xpYi1mb3JtLWVsZW1lbnRzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZvb3RlckJ1dHRvblwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicHJldkJ1dHRvbkRpdlwiPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIGNsYXNzPVwibWUtbWQtMiByb3VuZGVkLXBpbGwgbmF2QnV0dG9uXCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uTmF2aWdhdGVQcmV2aW91cygpXCJcclxuICAgICAgICAgICpuZ0lmPVwiMCA8IGN1cnJlbnRQYWdlSW5kZXhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgd2lkdGg9XCIyNFwiXHJcbiAgICAgICAgICAgIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgZD1cIk00LjUxMDI1IDExLjk4ODNMMTkuNTAwMyAxMS45ODgzXCJcclxuICAgICAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgIGQ9XCJNMTAuNTE0IDE3Ljk3NjZMNC40OTgwNSAxMS45OTk2TDEwLjUxNCA2LjAyMjU2XCJcclxuICAgICAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICBQcmV2aW91cyB8IHt7IHByZXZpb3VzUGFnZS50aXRsZSB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm5leHRCdXR0b25EaXZcIj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cIm1kLTIgcm91bmRlZC1waWxsIG5hdkJ1dHRvblwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIChjbGljayk9XCJvbk5hdmlnYXRlTmV4dCgpXCJcclxuICAgICAgICAgICpuZ0lmPVwiY3VycmVudFBhZ2VJbmRleCA8IHBhZ2VzLmxlbmd0aCAtIDFcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIE5leHQgfCB7eyBuZXh0UGFnZS50aXRsZSB9fVxyXG4gICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICB3aWR0aD1cIjI0XCJcclxuICAgICAgICAgICAgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICBkPVwiTTE5LjQ4OTcgMTIuMDExN0w0LjQ5OTc1IDEyLjAxMTdcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgZD1cIk0xMy40ODYgNi4wMjM0NEwxOS41MDIgMTIuMDAwNEwxMy40ODYgMTcuOTc3NFwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIGNsYXNzPVwic3VibWl0QnRuIG1lLW1kLTIgcm91bmRlZC1waWxsXCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgKm5nSWY9XCJjdXJyZW50UGFnZUluZGV4ID09IHBhZ2VzLmxlbmd0aCAtIDFcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInN1Ym1pdEZvcm0oKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgU3VibWl0XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -3,16 +3,14 @@ import * as mapper from '../../services/mapper.service';
|
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "../../services/form.service";
|
|
5
5
|
import * as i2 from "ngx-toastr";
|
|
6
|
-
import * as i3 from "@angular/
|
|
7
|
-
import * as i4 from "
|
|
8
|
-
import * as i5 from "../
|
|
9
|
-
import * as i6 from "../navigation-
|
|
10
|
-
import * as i7 from "../next-prev-navigation/next-prev-navigation.component";
|
|
6
|
+
import * as i3 from "@angular/common";
|
|
7
|
+
import * as i4 from "../header/header.component";
|
|
8
|
+
import * as i5 from "../navigation-tabs/navigation-tabs.component";
|
|
9
|
+
import * as i6 from "../next-prev-navigation/next-prev-navigation.component";
|
|
11
10
|
export class SubmitFormComponent {
|
|
12
|
-
constructor(formService, toastr
|
|
11
|
+
constructor(formService, toastr) {
|
|
13
12
|
this.formService = formService;
|
|
14
13
|
this.toastr = toastr;
|
|
15
|
-
this.router = router;
|
|
16
14
|
this.question = null;
|
|
17
15
|
this.moduleName = '';
|
|
18
16
|
this.edit = false;
|
|
@@ -41,9 +39,29 @@ export class SubmitFormComponent {
|
|
|
41
39
|
this.lastTab = false;
|
|
42
40
|
this.questionAnswers = { answers: [], forms: [] };
|
|
43
41
|
this.files = [];
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
42
|
+
this.updateSubForm = (pages, updatedSubForm) => {
|
|
43
|
+
pages.forEach(page => {
|
|
44
|
+
page.rows.forEach((row) => {
|
|
45
|
+
row.grid.forEach((element) => {
|
|
46
|
+
if (element.entityType === 'SUBFORM' && element.element.id === updatedSubForm.formId) {
|
|
47
|
+
// Update the existing subform with the new data
|
|
48
|
+
element.element = updatedSubForm;
|
|
49
|
+
}
|
|
50
|
+
else if (element.entityType === 'SUBFORM' && element.element.id !== updatedSubForm.formId) {
|
|
51
|
+
// Handle multiple subforms logic here if needed
|
|
52
|
+
}
|
|
53
|
+
else if (element.entityType === 'QUESTION' && element.element.childLogics) {
|
|
54
|
+
// Recursively update child logics
|
|
55
|
+
element.element.childLogics.forEach((logic) => {
|
|
56
|
+
if (logic.showLogic) {
|
|
57
|
+
this.updateSubForm(logic.formElements, updatedSubForm);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
};
|
|
47
65
|
}
|
|
48
66
|
ngOnInit() {
|
|
49
67
|
if (this.edit && this.submissionId) {
|
|
@@ -197,16 +215,29 @@ export class SubmitFormComponent {
|
|
|
197
215
|
}
|
|
198
216
|
else if (element.entityType === 'SUBFORM') {
|
|
199
217
|
const subformId = element.element.id;
|
|
200
|
-
const
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
218
|
+
const submissionId = element.element.submissionId;
|
|
219
|
+
if (element.element.subFormStructure === 'single') {
|
|
220
|
+
const subformQuestions = extractQuestions(element.element.formElements, subformId, true, forms.length);
|
|
221
|
+
const subform = {
|
|
222
|
+
formId: subformId,
|
|
223
|
+
deletedSubmissions: [],
|
|
224
|
+
submissions: [{
|
|
225
|
+
submissionId: submissionId,
|
|
226
|
+
answers: subformQuestions.answers
|
|
227
|
+
}]
|
|
228
|
+
};
|
|
229
|
+
forms.push(subform);
|
|
230
|
+
}
|
|
231
|
+
else if (element.element.subFormStructure === 'multiple') {
|
|
232
|
+
const subformQuestions = extractQuestions(element.element.formElements, subformId, true, forms.length);
|
|
233
|
+
const existingSubform = forms.find(form => form.formId === subformId);
|
|
234
|
+
const subform = {
|
|
235
|
+
formId: subformId,
|
|
236
|
+
deletedSubmissions: element.element.deletedSubmissions,
|
|
237
|
+
submissions: element.element.submissions
|
|
238
|
+
};
|
|
239
|
+
forms.push(subform);
|
|
240
|
+
}
|
|
210
241
|
}
|
|
211
242
|
});
|
|
212
243
|
return { answers: questions, forms: forms };
|
|
@@ -402,13 +433,16 @@ export class SubmitFormComponent {
|
|
|
402
433
|
}
|
|
403
434
|
return { isValid: true, message: 'All required questions are answered.' };
|
|
404
435
|
}
|
|
405
|
-
|
|
406
|
-
|
|
436
|
+
updateSubFormWithSubmissions(event) {
|
|
437
|
+
this.updateSubForm(this.pages, event);
|
|
438
|
+
}
|
|
439
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SubmitFormComponent, deps: [{ token: i1.FormService }, { token: i2.ToastrService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
440
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SubmitFormComponent, selector: "lib-submit-form", inputs: { moduleName: "moduleName", edit: "edit", submissionId: "submissionId" }, outputs: { submit: "submit" }, ngImport: i0, template: "<div class=\"outer-container\">\r\n <div class=\"head container\">\r\n <lib-header [name]=\"name\"></lib-header>\r\n </div>\r\n <div class=\"body container\">\r\n <lib-navigation-tabs\r\n *ngIf=\"navigation == 'TAB'\"\r\n [pages]=\"pages\"\r\n [currentPageIndex]=\"currentPageIndex\"\r\n (pageChanged)=\"setCurrentPage($event)\"\r\n (submitEmit)=\"submitForm()\"\r\n [edit]=\"edit\"\r\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\r\n ></lib-navigation-tabs>\r\n <lib-next-prev-navigation\r\n *ngIf=\"navigation == 'NEXT_AND_PREVIOUS_BUTTON'\"\r\n [currentPageIndex]=\"currentPageIndex\"\r\n [pages]=\"pages\"\r\n [previousPage]=\"previousPage\"\r\n [currentPage]=\"currentPage\"\r\n [nextPage]=\"nextPage\"\r\n (navigateNext)=\"navigateToNextPage()\"\r\n (navigatePrevious)=\"navigateToPreviousPage()\"\r\n (submitEmit)=\"submitForm()\"\r\n [edit]=\"edit\"\r\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\r\n ></lib-next-prev-navigation>\r\n </div>\r\n</div>\r\n", styles: [".outer-container{background-color:#fff;padding:20px;position:relative;margin-top:25px}@media (max-width: 576px){.outer-container{padding:8px}}.head{background-color:#fff;padding:0!important}.body{position:relative;z-index:1;background:#efefef;border-radius:6px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.HeaderComponent, selector: "lib-header", inputs: ["name"] }, { kind: "component", type: i5.NavigationTabsComponent, selector: "lib-navigation-tabs", inputs: ["pages", "currentPageIndex", "edit"], outputs: ["pageChanged", "submitEmit", "subFormChange"] }, { kind: "component", type: i6.NextPrevNavigationComponent, selector: "lib-next-prev-navigation", inputs: ["currentPageIndex", "pages", "previousPage", "nextPage", "currentPage", "edit"], outputs: ["navigateNext", "navigatePrevious", "submitEmit", "subFormChange"] }] }); }
|
|
407
441
|
}
|
|
408
442
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SubmitFormComponent, decorators: [{
|
|
409
443
|
type: Component,
|
|
410
|
-
args: [{ selector: 'lib-submit-form', template: "<div class=\"outer-container\">\n <div class=\"head container\">\n <lib-header [name]=\"name\"></lib-header>\n </div>\n <div class=\"body container\">\n <lib-navigation-tabs\n *ngIf=\"navigation == 'TAB'\"\n [pages]=\"pages\"\n [currentPageIndex]=\"currentPageIndex\"\n (pageChanged)=\"setCurrentPage($event)\"\n (submitEmit)=\"submitForm()\"\n [edit]=\"edit\"\n ></lib-navigation-tabs>\n <lib-next-prev-navigation\n *ngIf=\"navigation == 'NEXT_AND_PREVIOUS_BUTTON'\"\n [currentPageIndex]=\"currentPageIndex\"\n [pages]=\"pages\"\n [previousPage]=\"previousPage\"\n [currentPage]=\"currentPage\"\n [nextPage]=\"nextPage\"\n (navigateNext)=\"navigateToNextPage()\"\n (navigatePrevious)=\"navigateToPreviousPage()\"\n (submitEmit)=\"submitForm()\"\n [edit]=\"edit\"\n ></lib-next-prev-navigation>\n </div>\n</div>\n", styles: [".outer-container{background-color:#fff;padding:20px;position:relative;margin-top:25px}@media (max-width: 576px){.outer-container{padding:8px}}.head{background-color:#fff;padding:0!important}.body{position:relative;z-index:1;background:#efefef;border-radius:6px}\n"] }]
|
|
411
|
-
}], ctorParameters: function () { return [{ type: i1.FormService }, { type: i2.ToastrService }
|
|
444
|
+
args: [{ selector: 'lib-submit-form', template: "<div class=\"outer-container\">\r\n <div class=\"head container\">\r\n <lib-header [name]=\"name\"></lib-header>\r\n </div>\r\n <div class=\"body container\">\r\n <lib-navigation-tabs\r\n *ngIf=\"navigation == 'TAB'\"\r\n [pages]=\"pages\"\r\n [currentPageIndex]=\"currentPageIndex\"\r\n (pageChanged)=\"setCurrentPage($event)\"\r\n (submitEmit)=\"submitForm()\"\r\n [edit]=\"edit\"\r\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\r\n ></lib-navigation-tabs>\r\n <lib-next-prev-navigation\r\n *ngIf=\"navigation == 'NEXT_AND_PREVIOUS_BUTTON'\"\r\n [currentPageIndex]=\"currentPageIndex\"\r\n [pages]=\"pages\"\r\n [previousPage]=\"previousPage\"\r\n [currentPage]=\"currentPage\"\r\n [nextPage]=\"nextPage\"\r\n (navigateNext)=\"navigateToNextPage()\"\r\n (navigatePrevious)=\"navigateToPreviousPage()\"\r\n (submitEmit)=\"submitForm()\"\r\n [edit]=\"edit\"\r\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\r\n ></lib-next-prev-navigation>\r\n </div>\r\n</div>\r\n", styles: [".outer-container{background-color:#fff;padding:20px;position:relative;margin-top:25px}@media (max-width: 576px){.outer-container{padding:8px}}.head{background-color:#fff;padding:0!important}.body{position:relative;z-index:1;background:#efefef;border-radius:6px}\n"] }]
|
|
445
|
+
}], ctorParameters: function () { return [{ type: i1.FormService }, { type: i2.ToastrService }]; }, propDecorators: { moduleName: [{
|
|
412
446
|
type: Input
|
|
413
447
|
}], edit: [{
|
|
414
448
|
type: Input
|
|
@@ -417,4 +451,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
417
451
|
}], submit: [{
|
|
418
452
|
type: Output
|
|
419
453
|
}] } });
|
|
420
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibWl0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9mb3JtLXN1Ym1pc3Npb24vc3VibWl0LWZvcm0vc3VibWl0LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9mb3JtLXN1Ym1pc3Npb24vc3VibWl0LWZvcm0vc3VibWl0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRSxPQUFPLEtBQUssTUFBTSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7QUFpQ3hELE1BQU0sT0FBTyxtQkFBbUI7SUFnQzlCLFlBQ1UsV0FBd0IsRUFDeEIsTUFBcUIsRUFDckIsTUFBYztRQUZkLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQWxDeEIsYUFBUSxHQUFzQixJQUFJLENBQUM7UUFDMUIsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixTQUFJLEdBQVksS0FBSyxDQUFDO1FBQ3RCLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLFdBQU0sR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVwRSxTQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ2xCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyxpQkFBWSxHQUFXLENBQUMsQ0FBQztRQUN6QixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGFBQVEsR0FBVyxDQUFDLENBQUM7UUFDckIscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLGdCQUFX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bUJBQW1CO21HQUFuQixtQkFBbUIsd0tDbkNoQyxrNUJBMkJBOzs0RkRRYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsaUJBQWlCO21KQU1sQixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZm9ybS5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIG1hcHBlciBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYXBwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQdWJsaWNGb3JtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3B1YmxpY0Zvcm0ubW9kZWwnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW50ZXJmYWNlIEFuc3dlciB7XG4gIHF1ZXN0aW9uSWQ6IHN0cmluZztcbiAgYW5zd2VyOiBhbnk7XG4gIGFuc3dlcklkPzogc3RyaW5nO1xuICBkZWxldGVGaWxlcz86IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgU3VibWlzc2lvbiB7XG4gIHN1Ym1pc3Npb25JZDogc3RyaW5nO1xuICBhbnN3ZXJzOiBBbnN3ZXJbXTtcbn1cblxuaW50ZXJmYWNlIEZvcm0ge1xuICBmb3JtSWQ6IHN0cmluZztcbiAgZGVsZXRlZFN1Ym1pc3Npb25zOiBhbnlbXTtcbiAgc3VibWlzc2lvbnM6IFN1Ym1pc3Npb25bXTtcbn1cblxuaW50ZXJmYWNlIFF1ZXN0aW9uQW5zd2Vyc1dyYXBwZXIge1xuICBhbnN3ZXJzOiBBbnN3ZXJbXTtcbiAgZm9ybXM6IEZvcm1bXTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXN1Ym1pdC1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N1Ym1pdC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3VibWl0LWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU3VibWl0Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHF1ZXN0aW9uOiBQdWJsaWNGb3JtIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIG1vZHVsZU5hbWU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBlZGl0OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHN1Ym1pc3Npb25JZDogc3RyaW5nID0gJyc7XG4gIEBPdXRwdXQoKSBzdWJtaXQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgbmFtZTogc3RyaW5nID0gJyc7XG4gIHNhdmVBdXRvbWF0aWNhbGx5OiBib29sZWFuID0gZmFsc2U7XG4gIHNhdmVJbnRlcnZhbDogbnVtYmVyID0gMDtcbiAgY3VzdG9taXplRm9udDogYm9vbGVhbiA9IGZhbHNlO1xuICBmb250RmFtaWx5OiBzdHJpbmcgPSAnJztcbiAgZm9udFNpemU6IG51bWJlciA9IDA7XG4gIGVuYWJsZURhdGFFeHBvcnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZmlsZUZvcm1hdHM6IHN0cmluZ1tdID0gW107XG4gIGVuYWJsZVF1ZXN0aW9uTnVtYmVyaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHF1ZXN0aW9uTnVtYmVyaW5nOiBzdHJpbmcgPSAnJztcbiAgZW5hYmxlR29vZ2xlUmVjYXB0Y2hhOiBib29sZWFuID0gZmFsc2U7XG4gIGdvb2dsZVJlY2FwdGNoYUtleTogc3RyaW5nID0gJyc7XG4gIGdvb2dsZVJlY2FwdGNoYVNlY3JldDogc3RyaW5nID0gJyc7XG4gIG5hdmlnYXRpb246IHN0cmluZyA9ICcnO1xuICBtYXJrQWxsUXVlc3Rpb25zQXNSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwYWdlczogYW55ID0gW107XG4gIGN1cnJlbnRQYWdlSW5kZXg6IG51bWJlciA9IDA7XG4gIHByZXZpb3VzUGFnZTogYW55ID0ge307XG4gIGN1cnJlbnRQYWdlOiBhbnkgPSB7fTtcbiAgbmV4dFBhZ2U6IGFueSA9IHt9O1xuICBsYXN0VGFiOiBib29sZWFuID0gZmFsc2U7XG4gIHF1ZXN0aW9uQW5zd2VyczogUXVlc3Rpb25BbnN3ZXJzV3JhcHBlciA9IHsgYW5zd2VyczogW10sIGZvcm1zOiBbXSB9O1xuICBmaWxlczogeyBxdWVzdGlvbklkOiBzdHJpbmc7IGZpbGU6IGFueSB9W10gPSBbXTtcbiAgc3VibWlzc2lvbjphbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHtcbiAgICBjb25zdCBuYXZpZ2F0aW9uID0gdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKTtcbiAgICB0aGlzLnN1Ym1pc3Npb249IG5hdmlnYXRpb24/LmV4dHJhcy5zdGF0ZT8uWydzdWJtaXNzaW9uJ10gXG4gICAgY29uc29sZS5sb2coJ3N1Ym1pc3Npb24nLHRoaXMuc3VibWlzc2lvbik7XG4gICAgXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5lZGl0ICYmIHRoaXMuc3VibWlzc2lvbklkKSB7XG4gICAgICB0aGlzLmdldFN1Ym1pdHRlZEZvcm1EYXRhKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2V0Rm9ybURhdGEoKTtcbiAgICB9XG4gIH1cblxuICBnZXRGb3JtRGF0YSgpIHtcbiAgICB0aGlzLmZvcm1TZXJ2aWNlLmdldFF1ZXN0aW9ucyh0aGlzLm1vZHVsZU5hbWUpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMucXVlc3Rpb24gPSBtYXBwZXIubWFwUHVibGljRm9ybVRvTW9kZWwocmVzcG9uc2UpO1xuICAgICAgdGhpcy5hc3NpZ25RdWVzdGlvblByb3BlcnRpZXModGhpcy5xdWVzdGlvbik7XG4gICAgfSk7XG4gIH1cblxuICBnZXRTdWJtaXR0ZWRGb3JtRGF0YSgpIHtcbiAgICB0aGlzLmZvcm1TZXJ2aWNlLmdldFN1Ym1pdHRlZEZvcm0odGhpcy5tb2R1bGVOYW1lLCB0aGlzLnN1Ym1pc3Npb25JZCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgdGhpcy5xdWVzdGlvbiA9IG1hcHBlci5tYXBQdWJsaWNGb3JtVG9Nb2RlbChyZXNwb25zZSk7XG4gICAgICB0aGlzLmFzc2lnblF1ZXN0aW9uUHJvcGVydGllcyh0aGlzLnF1ZXN0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzc2lnblF1ZXN0aW9uUHJvcGVydGllcyhxdWVzdGlvbjogUHVibGljRm9ybSkge1xuICAgIHRoaXMubmFtZSA9IHF1ZXN0aW9uLm5hbWU7XG4gICAgdGhpcy5wYWdlcyA9IHF1ZXN0aW9uLnBhZ2VzO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzWzBdO1xuICAgIHRoaXMubmV4dFBhZ2UgPSB0aGlzLnBhZ2VzWzFdO1xuICAgIHRoaXMuc2F2ZUF1dG9tYXRpY2FsbHkgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5zYXZlQXV0b21hdGljYWxseTtcbiAgICB0aGlzLnNhdmVJbnRlcnZhbCA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLnNhdmVJbnRlcnZhbDtcbiAgICB0aGlzLmN1c3RvbWl6ZUZvbnQgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5jdXN0b21pemVGb250O1xuICAgIHRoaXMuZm9udEZhbWlseSA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmZvbnRGYW1pbHk7XG4gICAgdGhpcy5mb250U2l6ZSA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmZvbnRTaXplO1xuICAgIHRoaXMuZW5hYmxlRGF0YUV4cG9ydCA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmVuYWJsZURhdGFFeHBvcnQ7XG4gICAgdGhpcy5maWxlRm9ybWF0cyA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmZpbGVGb3JtYXRzO1xuICAgIHRoaXMuZW5hYmxlUXVlc3Rpb25OdW1iZXJpbmcgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5lbmFibGVRdWVzdGlvbk51bWJlcmluZztcbiAgICB0aGlzLnF1ZXN0aW9uTnVtYmVyaW5nID0gcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24ucXVlc3Rpb25OdW1iZXJpbmc7XG4gICAgdGhpcy5lbmFibGVHb29nbGVSZWNhcHRjaGEgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5lbmFibGVHb29nbGVSZWNhcHRjaGE7XG4gICAgdGhpcy5nb29nbGVSZWNhcHRjaGFLZXkgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5nb29nbGVSZWNhcHRjaGFLZXk7XG4gICAgdGhpcy5nb29nbGVSZWNhcHRjaGFTZWNyZXQgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5nb29nbGVSZWNhcHRjaGFTZWNyZXQ7XG4gICAgdGhpcy5uYXZpZ2F0aW9uID0gcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24ubmF2aWdhdGlvbjtcbiAgICB0aGlzLm1hcmtBbGxRdWVzdGlvbnNBc1JlcXVpcmVkID0gcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24ubWFya0FsbFF1ZXN0aW9uc0FzUmVxdWlyZWQ7XG4gIH1cblxuICBuYXZpZ2F0ZVRvTmV4dFBhZ2UoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2VJbmRleCA8IHRoaXMucGFnZXMubGVuZ3RoIC0gMSkge1xuICAgICAgaWYgKHRoaXMubWFya0FsbFF1ZXN0aW9uc0FzUmVxdWlyZWQpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFBhZ2VEYXRhID0gdGhpcy5wYWdlc1t0aGlzLmN1cnJlbnRQYWdlSW5kZXhdO1xuICAgICAgICBjb25zdCB2YWxpZGF0aW9uUmVzcG9uc2UgPSB0aGlzLnZhbGlkYXRlUmVxdWlyZWRRdWVzdGlvbnMoY3VycmVudFBhZ2VEYXRhKTtcbiAgICAgICAgaWYgKHZhbGlkYXRpb25SZXNwb25zZS5pc1ZhbGlkKSB7XG4gICAgICAgICAgdGhpcy5wcmV2aW91c1BhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlO1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCsrO1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XG4gICAgICAgICAgdGhpcy5uZXh0UGFnZSA9IHRoaXMucGFnZXNbdGhpcy5jdXJyZW50UGFnZUluZGV4ICsgMV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy50b2FzdHIud2FybmluZyh2YWxpZGF0aW9uUmVzcG9uc2UubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucHJldmlvdXNQYWdlID0gdGhpcy5jdXJyZW50UGFnZTtcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZUluZGV4Kys7XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XG4gICAgICAgIHRoaXMubmV4dFBhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleCArIDFdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5hdmlnYXRlVG9QcmV2aW91c1BhZ2UoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2VJbmRleCA+IDApIHtcbiAgICAgIGlmICh0aGlzLm1hcmtBbGxRdWVzdGlvbnNBc1JlcXVpcmVkKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlRGF0YSA9IHRoaXMucGFnZXNbdGhpcy5jdXJyZW50UGFnZUluZGV4XTtcbiAgICAgICAgY29uc3QgdmFsaWRhdGlvblJlc3BvbnNlID0gdGhpcy52YWxpZGF0ZVJlcXVpcmVkUXVlc3Rpb25zKGN1cnJlbnRQYWdlRGF0YSk7XG4gICAgICAgIGlmICh2YWxpZGF0aW9uUmVzcG9uc2UuaXNWYWxpZCkge1xuICAgICAgICAgIHRoaXMubmV4dFBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlO1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleC0tO1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XG4gICAgICAgICAgdGhpcy5wcmV2aW91c1BhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleCAtIDFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudG9hc3RyLndhcm5pbmcodmFsaWRhdGlvblJlc3BvbnNlLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm5leHRQYWdlID0gdGhpcy5jdXJyZW50UGFnZTtcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZUluZGV4LS07XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XG4gICAgICAgIHRoaXMucHJldmlvdXNQYWdlID0gdGhpcy5wYWdlc1t0aGlzLmN1cnJlbnRQYWdlSW5kZXggLSAxXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRDdXJyZW50UGFnZShpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMubWFya0FsbFF1ZXN0aW9uc0FzUmVxdWlyZWQpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRQYWdlRGF0YSA9IHRoaXMucGFnZXNbdGhpcy5jdXJyZW50UGFnZUluZGV4XTtcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXNwb25zZSA9IHRoaXMudmFsaWRhdGVSZXF1aXJlZFF1ZXN0aW9ucyhjdXJyZW50UGFnZURhdGEpO1xuICAgICAgaWYgKHZhbGlkYXRpb25SZXNwb25zZS5pc1ZhbGlkKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IGluZGV4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50b2FzdHIud2FybmluZyh2YWxpZGF0aW9uUmVzcG9uc2UubWVzc2FnZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IGluZGV4O1xuICAgIH1cbiAgfVxuXG4gIGdlbmVyYXRlUXVlc3Rpb25BbnN3ZXJzKCkge1xuICAgIHRoaXMuZmlsZXMgPSBbXTtcbiAgXG4gICAgY29uc3QgZXh0cmFjdFF1ZXN0aW9ucyA9IChcbiAgICAgIGZvcm1FbGVtZW50czogYW55W10sIFxuICAgICAgcGFyZW50Rm9ybUlkOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgXG4gICAgICBpc0luU3ViRm9ybTogYm9vbGVhbiA9IGZhbHNlLCBcbiAgICAgIHN1YkZvcm1JbmRleDogbnVtYmVyID0gMFxuICAgICk6IHsgYW5zd2VyczogQW5zd2VyW10sIGZvcm1zOiBGb3JtW10gfSA9PiB7XG4gICAgICBjb25zdCBxdWVzdGlvbnM6IEFuc3dlcltdID0gW107XG4gICAgICBjb25zdCBmb3JtczogRm9ybVtdID0gW107XG4gIFxuICAgICAgZm9ybUVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1FVRVNUSU9OJykge1xuICAgICAgICAgIGxldCBiYXNlUXVlc3Rpb246IGFueTtcbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LmZvcm1FbGVtZW50LmVsZW1lbnRUeXBlID09PSAnRklMRV9QSUNLRVInKSB7XG4gICAgICAgICAgICBiYXNlUXVlc3Rpb24gPSB7XG4gICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IGVsZW1lbnQuZWxlbWVudC5pZCxcbiAgICAgICAgICAgICAgYW5zd2VyOiAnJ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVsZW1lbnQuZWxlbWVudC5hbnN3ZXIpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uSWQgPSBpc0luU3ViRm9ybSBcbiAgICAgICAgICAgICAgICA/IGAke3BhcmVudEZvcm1JZH1fJHtzdWJGb3JtSW5kZXh9XyR7ZWxlbWVudC5lbGVtZW50LmlkfWBcbiAgICAgICAgICAgICAgICA6IGVsZW1lbnQuZWxlbWVudC5pZDtcbiAgICAgICAgICAgICAgdGhpcy5maWxlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBxdWVzdGlvbklkOiBxdWVzdGlvbklkLFxuICAgICAgICAgICAgICAgIGZpbGU6IGVsZW1lbnQuZWxlbWVudC5hbnN3ZXIsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNlUXVlc3Rpb24gPSB7XG4gICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IGVsZW1lbnQuZWxlbWVudC5pZCxcbiAgICAgICAgICAgICAgYW5zd2VyOiBlbGVtZW50LmVsZW1lbnQuYW5zd2VyXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5lZGl0KSB7XG4gICAgICAgICAgICBxdWVzdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgIC4uLmJhc2VRdWVzdGlvbixcbiAgICAgICAgICAgICAgYW5zd2VySWQ6IGVsZW1lbnQuZWxlbWVudC5hbnN3ZXJJZCB8fCAnJyxcbiAgICAgICAgICAgICAgZGVsZXRlRmlsZXM6IGVsZW1lbnQuZWxlbWVudC5kZWxldGVGaWxlcyB8fCBbXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHF1ZXN0aW9ucy5wdXNoKGJhc2VRdWVzdGlvbik7XG4gICAgICAgICAgfVxuICBcbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LmNoaWxkTG9naWNzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBsb2dpYyBvZiBlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MpIHtcbiAgICAgICAgICAgICAgaWYgKGxvZ2ljLnNob3dMb2dpYykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGV4dHJhY3RRdWVzdGlvbnMobG9naWMuZm9ybUVsZW1lbnRzLCBwYXJlbnRGb3JtSWQsIGlzSW5TdWJGb3JtLCBzdWJGb3JtSW5kZXgpO1xuICAgICAgICAgICAgICAgIHF1ZXN0aW9ucy5wdXNoKC4uLnJlc3VsdC5hbnN3ZXJzKTtcbiAgICAgICAgICAgICAgICBmb3Jtcy5wdXNoKC4uLnJlc3VsdC5mb3Jtcyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5lbnRpdHlUeXBlID09PSAnU1VCRk9STScpIHtcbiAgICAgICAgICBjb25zdCBzdWJmb3JtSWQgPSBlbGVtZW50LmVsZW1lbnQuaWQ7XG4gICAgICAgICAgY29uc3Qgc3ViZm9ybVF1ZXN0aW9ucyA9IGV4dHJhY3RRdWVzdGlvbnMoZWxlbWVudC5lbGVtZW50LmZvcm1FbGVtZW50cywgc3ViZm9ybUlkLCB0cnVlLCBmb3Jtcy5sZW5ndGgpO1xuICBcbiAgICAgICAgICBjb25zdCBzdWJmb3JtOiBGb3JtID0ge1xuICAgICAgICAgICAgZm9ybUlkOiBzdWJmb3JtSWQsXG4gICAgICAgICAgICBkZWxldGVkU3VibWlzc2lvbnM6IFtdLFxuICAgICAgICAgICAgc3VibWlzc2lvbnM6IFt7XG4gICAgICAgICAgICAgIHN1Ym1pc3Npb25JZDogJycsXG4gICAgICAgICAgICAgIGFuc3dlcnM6IHN1YmZvcm1RdWVzdGlvbnMuYW5zd2Vyc1xuICAgICAgICAgICAgfV1cbiAgICAgICAgICB9O1xuICAgICAgICAgIGZvcm1zLnB1c2goc3ViZm9ybSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICBcbiAgICAgIHJldHVybiB7IGFuc3dlcnM6IHF1ZXN0aW9ucywgZm9ybXM6IGZvcm1zIH07XG4gICAgfTtcbiAgXG4gICAgY29uc3QgcHJvY2Vzc1BhZ2VzID0gKHBhZ2VzOiBhbnlbXSk6IHsgYW5zd2VyczogQW5zd2VyW10sIGZvcm1zOiBGb3JtW10gfSA9PiB7XG4gICAgICBjb25zdCBxdWVzdGlvbnM6IEFuc3dlcltdID0gW107XG4gICAgICBjb25zdCBmb3JtczogRm9ybVtdID0gW107XG4gIFxuICAgICAgcGFnZXMuZm9yRWFjaCgocGFnZSkgPT4ge1xuICAgICAgICBwYWdlLnJvd3MuZm9yRWFjaCgocm93OiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBleHRyYWN0UXVlc3Rpb25zKHJvdy5ncmlkKTtcbiAgICAgICAgICBxdWVzdGlvbnMucHVzaCguLi5yZXN1bHQuYW5zd2Vycyk7XG4gICAgICAgICAgZm9ybXMucHVzaCguLi5yZXN1bHQuZm9ybXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICBcbiAgICAgIHJldHVybiB7IGFuc3dlcnM6IHF1ZXN0aW9ucywgZm9ybXM6IGZvcm1zIH07XG4gICAgfTtcbiAgXG4gICAgY29uc3QgcmVzdWx0ID0gcHJvY2Vzc1BhZ2VzKHRoaXMucGFnZXMpO1xuICBcbiAgICB0aGlzLnF1ZXN0aW9uQW5zd2VycyA9IHtcbiAgICAgIGFuc3dlcnM6IHJlc3VsdC5hbnN3ZXJzLFxuICAgICAgZm9ybXM6IHJlc3VsdC5mb3Jtc1xuICAgIH07XG4gIH1cbiAgXG4gIFxuICBzdWJtaXRGb3JtKCkge1xuICAgIGxldCB2YWxpZGF0aW9uUmVzcG9uc2UgPSB0aGlzLnZhbGlkYXRlRm9ybSh0aGlzLnBhZ2VzKTtcbiAgICB0aGlzLmdlbmVyYXRlUXVlc3Rpb25BbnN3ZXJzKCk7XG4gICAgaWYgKHZhbGlkYXRpb25SZXNwb25zZS5pc1ZhbGlkKSB7XG4gICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdqc29uJywgSlNPTi5zdHJpbmdpZnkodGhpcy5xdWVzdGlvbkFuc3dlcnMpKTtcbiAgICAgIGlmICh0aGlzLmZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5maWxlcy5mb3JFYWNoKChmaWxlSXRlbSkgPT4ge1xuICAgICAgICAgIGZpbGVJdGVtLmZpbGUuZm9yRWFjaCgoZmlsZTogYW55KSA9PiB7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoZmlsZUl0ZW0ucXVlc3Rpb25JZCwgZmlsZS5fZmlsZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZWRpdCAmJiB0aGlzLnN1Ym1pc3Npb25JZCkge1xuICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLnVwZGF0ZUZvcm0odGhpcy5tb2R1bGVOYW1lLCB0aGlzLnN1Ym1pc3Npb25JZCwgZm9ybURhdGEpLnN1YnNjcmliZShcbiAgICAgICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ0Zvcm0gdXBkYXRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgICAgIHRoaXMuc3VibWl0LmVtaXQoJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ0ZhaWxlZCB0byB1cGRhdGUgZm9ybScpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZm9ybVNlcnZpY2Uuc3VibWl0Rm9ybSh0aGlzLm1vZHVsZU5hbWUsIGZvcm1EYXRhKS5zdWJzY3JpYmUoXG4gICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKCdGb3JtIHN1Ym1pdHRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgICAgIHRoaXMuc3VibWl0LmVtaXQoJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ0ZhaWxlZCB0byBzdWJtaXQgZm9ybScpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50b2FzdHIuZXJyb3IodmFsaWRhdGlvblJlc3BvbnNlLm1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlRm9ybShqc29uRGF0YTogYW55KTogeyBpc1ZhbGlkOiBib29sZWFuOyBtZXNzYWdlOiBzdHJpbmc7IHBhZ2VJbmRleDogbnVtYmVyIHwgMCB9IHtcbiAgICBjb25zdCB2YWxpZGF0ZVF1ZXN0aW9ucyA9IChmb3JtRWxlbWVudHM6IGFueVtdKTogeyBpc1ZhbGlkOiBib29sZWFuOyBtZXNzYWdlOiBzdHJpbmc7IHBhZ2VJbmRleDogbnVtYmVyIHwgMCB9ID0+IHtcbiAgICAgIGZvciAobGV0IGVsZW1lbnQgb2YgZm9ybUVsZW1lbnRzKSB7XG4gICAgICAgIGlmIChlbGVtZW50LmVudGl0eVR5cGUgPT09ICdRVUVTVElPTicpIHtcbiAgICAgICAgICBjb25zdCByZXF1aXJlZCA9IGVsZW1lbnQuZWxlbWVudC5yZXF1aXJlZDtcbiAgICAgICAgICBjb25zdCBhbnN3ZXIgPSBlbGVtZW50LmVsZW1lbnQuYW5zd2VyO1xuICAgICAgICAgIGNvbnN0IHZhbGlkYXRpb24gPSBlbGVtZW50LmVsZW1lbnQudmFsaWRhdGlvbjtcbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LmZvcm1FbGVtZW50LmVsZW1lbnRUeXBlID09PSAnRklMRV9QSUNLRVInKSB7XG4gICAgICAgICAgICBjb25zdCBhdHRhY2htZW50ID0gZWxlbWVudC5lbGVtZW50LmF0dGFjaG1lbnRzO1xuICAgICAgICAgICAgaWYgKHJlcXVpcmVkKSB7XG4gICAgICAgICAgICAgIGlmICgoIWFuc3dlciB8fCBhbnN3ZXIubGVuZ3RoID09PSAwKSAmJiBhdHRhY2htZW50Lmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYEZvcm0gaXMgaW52YWxpZCAtIFJlcXVpcmVkIGZpbGUgcXVlc3Rpb24gJHtlbGVtZW50LmVsZW1lbnQucXVlc3Rpb25OdW1iZXJ9IGhhcyBubyBmaWxlcyB1cGxvYWRlZC5gLFxuICAgICAgICAgICAgICAgICAgcGFnZUluZGV4OiAwLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHJlcXVpcmVkKSB7XG4gICAgICAgICAgICAgIGlmICghYW5zd2VyIHx8IE9iamVjdC5rZXlzKGFuc3dlcikubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYEZvcm0gaXMgaW52YWxpZCAtIFF1ZXN0aW9uICR7ZWxlbWVudC5lbGVtZW50LnF1ZXN0aW9uTnVtYmVyfSBpcyByZXF1aXJlZCBidXQgbm8gYW5zd2VyIHByb3ZpZGVkLmAsXG4gICAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IDAsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICghdmFsaWRhdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBGb3JtIGlzIGludmFsaWQgLSBRdWVzdGlvbiAke2VsZW1lbnQuZWxlbWVudC5xdWVzdGlvbk51bWJlcn0gaXMgcmVxdWlyZWQgYnV0IHZhbGlkYXRpb24gaXMgZmFsc2UuYCxcbiAgICAgICAgICAgICAgICAgIHBhZ2VJbmRleDogMCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFyZXF1aXJlZCAmJiBhbnN3ZXIgJiYgT2JqZWN0LmtleXMoYW5zd2VyKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGlmICghdmFsaWRhdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBGb3JtIGlzIGludmFsaWQgLSBRdWVzdGlvbiAke2VsZW1lbnQuZWxlbWVudC5xdWVzdGlvbk51bWJlcn0gaXMgbm90IHJlcXVpcmVkIGJ1dCBhbnN3ZXIgcHJvdmlkZWQgd2l0aCB2YWxpZGF0aW9uIGZhbHNlLmAsXG4gICAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IDAsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LmNoaWxkTG9naWNzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBsb2dpYyBvZiBlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MpIHtcbiAgICAgICAgICAgICAgaWYgKGxvZ2ljLnNob3dMb2dpYykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlUXVlc3Rpb25zKGxvZ2ljLmZvcm1FbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCkgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LmVudGl0eVR5cGUgPT09ICdTVUJGT1JNJykge1xuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQuZm9ybUVsZW1lbnRzKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZVF1ZXN0aW9ucyhlbGVtZW50LmVsZW1lbnQuZm9ybUVsZW1lbnRzKTtcbiAgICAgICAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQpIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBtZXNzYWdlOiAnJywgcGFnZUluZGV4OiAwIH07XG4gICAgfTtcblxuICAgIGZvciAobGV0IHBhZ2VJbmRleCA9IDA7IHBhZ2VJbmRleCA8IGpzb25EYXRhLmxlbmd0aDsgcGFnZUluZGV4KyspIHtcbiAgICAgIGNvbnN0IHBhZ2UgPSBqc29uRGF0YVtwYWdlSW5kZXhdO1xuICAgICAgZm9yIChsZXQgcm93IG9mIHBhZ2Uucm93cykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZVF1ZXN0aW9ucyhyb3cuZ3JpZCk7XG4gICAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXNWYWxpZDogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiBgUGFnZSAke3BhZ2VJbmRleCArIDF9OiAke3Jlc3VsdC5tZXNzYWdlfWAsXG4gICAgICAgICAgICBwYWdlSW5kZXg6IHBhZ2VJbmRleCxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBpc1ZhbGlkOiB0cnVlLFxuICAgICAgbWVzc2FnZTogJ0Zvcm0gaXMgdmFsaWQuJyxcbiAgICAgIHBhZ2VJbmRleDogMCxcbiAgICB9O1xuICB9XG5cbiAgdmFsaWRhdGVSZXF1aXJlZFF1ZXN0aW9ucyhwYWdlOiBhbnkpOiB7IGlzVmFsaWQ6IGJvb2xlYW47IG1lc3NhZ2U6IHN0cmluZyB9IHtcbiAgICBjb25zdCB2YWxpZGF0ZVF1ZXN0aW9ucyA9IChmb3JtRWxlbWVudHM6IGFueVtdKTogeyBpc1ZhbGlkOiBib29sZWFuOyBtZXNzYWdlOiBzdHJpbmcgfSA9PiB7XG4gICAgICBmb3IgKGxldCBlbGVtZW50IG9mIGZvcm1FbGVtZW50cykge1xuICAgICAgICBpZiAoZWxlbWVudC5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nKSB7XG4gICAgICAgICAgY29uc3QgcmVxdWlyZWQgPSBlbGVtZW50LmVsZW1lbnQucmVxdWlyZWQ7XG4gICAgICAgICAgY29uc3QgYW5zd2VyID0gZWxlbWVudC5lbGVtZW50LmFuc3dlcjtcbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LmZvcm1FbGVtZW50LmVsZW1lbnRUeXBlID09PSAnRklMRV9QSUNLRVInKSB7XG4gICAgICAgICAgICBpZiAocmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgaWYgKCFhbnN3ZXIgfHwgYW5zd2VyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBSZXF1aXJlZCBmaWxlIHF1ZXN0aW9uICR7ZWxlbWVudC5lbGVtZW50LnF1ZXN0aW9uTnVtYmVyfSBpcyBub3QgYW5zd2VyZWQuYCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChyZXF1aXJlZCkge1xuICAgICAgICAgICAgICBpZiAoIWFuc3dlciB8fCBPYmplY3Qua2V5cyhhbnN3ZXIpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBSZXF1aXJlZCBxdWVzdGlvbiAke2VsZW1lbnQuZWxlbWVudC5xdWVzdGlvbk51bWJlcn0gaXMgbm90IGFuc3dlcmVkLmAsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LmNoaWxkTG9naWNzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBsb2dpYyBvZiBlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MpIHtcbiAgICAgICAgICAgICAgaWYgKGxvZ2ljLnNob3dMb2dpYykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlUXVlc3Rpb25zKGxvZ2ljLmZvcm1FbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCkgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LmVudGl0eVR5cGUgPT09ICdTVUJGT1JNJykge1xuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQuZm9ybUVsZW1lbnRzKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZVF1ZXN0aW9ucyhlbGVtZW50LmVsZW1lbnQuZm9ybUVsZW1lbnRzKTtcbiAgICAgICAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQpIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBtZXNzYWdlOiAnQWxsIHJlcXVpcmVkIHF1ZXN0aW9ucyBhcmUgYW5zd2VyZWQuJyB9O1xuICAgIH07XG5cbiAgICBmb3IgKGxldCByb3cgb2YgcGFnZS5yb3dzKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZVF1ZXN0aW9ucyhyb3cuZ3JpZCk7XG4gICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IGlzVmFsaWQ6IHRydWUsIG1lc3NhZ2U6ICdBbGwgcmVxdWlyZWQgcXVlc3Rpb25zIGFyZSBhbnN3ZXJlZC4nIH07XG4gIH1cbn0iLCI8ZGl2IGNsYXNzPVwib3V0ZXItY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJoZWFkIGNvbnRhaW5lclwiPlxuICAgIDxsaWItaGVhZGVyIFtuYW1lXT1cIm5hbWVcIj48L2xpYi1oZWFkZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYm9keSBjb250YWluZXJcIj5cbiAgICA8bGliLW5hdmlnYXRpb24tdGFic1xuICAgICAgKm5nSWY9XCJuYXZpZ2F0aW9uID09ICdUQUInXCJcbiAgICAgIFtwYWdlc109XCJwYWdlc1wiXG4gICAgICBbY3VycmVudFBhZ2VJbmRleF09XCJjdXJyZW50UGFnZUluZGV4XCJcbiAgICAgIChwYWdlQ2hhbmdlZCk9XCJzZXRDdXJyZW50UGFnZSgkZXZlbnQpXCJcbiAgICAgIChzdWJtaXRFbWl0KT1cInN1Ym1pdEZvcm0oKVwiXG4gICAgICBbZWRpdF09XCJlZGl0XCJcbiAgICA+PC9saWItbmF2aWdhdGlvbi10YWJzPlxuICAgIDxsaWItbmV4dC1wcmV2LW5hdmlnYXRpb25cbiAgICAgICpuZ0lmPVwibmF2aWdhdGlvbiA9PSAnTkVYVF9BTkRfUFJFVklPVVNfQlVUVE9OJ1wiXG4gICAgICBbY3VycmVudFBhZ2VJbmRleF09XCJjdXJyZW50UGFnZUluZGV4XCJcbiAgICAgIFtwYWdlc109XCJwYWdlc1wiXG4gICAgICBbcHJldmlvdXNQYWdlXT1cInByZXZpb3VzUGFnZVwiXG4gICAgICBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxuICAgICAgW25leHRQYWdlXT1cIm5leHRQYWdlXCJcbiAgICAgIChuYXZpZ2F0ZU5leHQpPVwibmF2aWdhdGVUb05leHRQYWdlKClcIlxuICAgICAgKG5hdmlnYXRlUHJldmlvdXMpPVwibmF2aWdhdGVUb1ByZXZpb3VzUGFnZSgpXCJcbiAgICAgIChzdWJtaXRFbWl0KT1cInN1Ym1pdEZvcm0oKVwiXG4gICAgICBbZWRpdF09XCJlZGl0XCJcbiAgICA+PC9saWItbmV4dC1wcmV2LW5hdmlnYXRpb24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
454
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibWl0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9mb3JtLXN1Ym1pc3Npb24vc3VibWl0LWZvcm0vc3VibWl0LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9mb3JtLXN1Ym1pc3Npb24vc3VibWl0LWZvcm0vc3VibWl0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRSxPQUFPLEtBQUssTUFBTSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7OztBQWdDeEQsTUFBTSxPQUFPLG1CQUFtQjtJQStCOUIsWUFDVSxXQUF3QixFQUN4QixNQUFxQjtRQURyQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBaEMvQixhQUFRLEdBQXNCLElBQUksQ0FBQztRQUMxQixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLFNBQUksR0FBWSxLQUFLLENBQUM7UUFDdEIsaUJBQVksR0FBVyxFQUFFLENBQUM7UUFDekIsV0FBTSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXBFLFNBQUksR0FBVyxFQUFFLENBQUM7UUFDbEIsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBQ25DLGlCQUFZLEdBQVcsQ0FBQyxDQUFDO1FBQ3pCLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBQy9CLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsYUFBUSxHQUFXLENBQUMsQ0FBQztRQUNyQixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsZ0JBQVcsR0FBYSxFQUFFLENBQUM7UUFDM0IsNEJBQXVCLEdBQVksS0FB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Q0FBQztRQUVGLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUN6QixNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQ25CLE9BQU8sTUFBTSxDQUFDO2FBQ2Y7U0FDRjtRQUNELE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxDQUFDO0lBQzVFLENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxLQUFVO1FBQ3JDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDOytHQXBhVSxtQkFBbUI7bUdBQW5CLG1CQUFtQix3S0NsQ2hDLDRrQ0E2QkE7OzRGREthLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxpQkFBaUI7OEhBTWxCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0uc2VydmljZSc7XHJcbmltcG9ydCAqIGFzIG1hcHBlciBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYXBwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFB1YmxpY0Zvcm0gfSBmcm9tICcuLi8uLi9tb2RlbHMvcHVibGljRm9ybS5tb2RlbCc7XHJcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcclxuXHJcbmludGVyZmFjZSBBbnN3ZXIge1xyXG4gIHF1ZXN0aW9uSWQ6IHN0cmluZztcclxuICBhbnN3ZXI6IGFueTtcclxuICBhbnN3ZXJJZD86IHN0cmluZztcclxuICBkZWxldGVGaWxlcz86IHN0cmluZ1tdO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgU3VibWlzc2lvbiB7XHJcbiAgc3VibWlzc2lvbklkOiBzdHJpbmc7XHJcbiAgYW5zd2VyczogQW5zd2VyW107XHJcbn1cclxuXHJcbmludGVyZmFjZSBGb3JtIHtcclxuICBmb3JtSWQ6IHN0cmluZztcclxuICBkZWxldGVkU3VibWlzc2lvbnM6IGFueVtdO1xyXG4gIHN1Ym1pc3Npb25zOiBTdWJtaXNzaW9uW107XHJcbn1cclxuXHJcbmludGVyZmFjZSBRdWVzdGlvbkFuc3dlcnNXcmFwcGVyIHtcclxuICBhbnN3ZXJzOiBBbnN3ZXJbXTtcclxuICBmb3JtczogRm9ybVtdO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1zdWJtaXQtZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3N1Ym1pdC1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zdWJtaXQtZm9ybS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3VibWl0Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcXVlc3Rpb246IFB1YmxpY0Zvcm0gfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBtb2R1bGVOYW1lOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBlZGl0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc3VibWlzc2lvbklkOiBzdHJpbmcgPSAnJztcclxuICBAT3V0cHV0KCkgc3VibWl0OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBuYW1lOiBzdHJpbmcgPSAnJztcclxuICBzYXZlQXV0b21hdGljYWxseTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNhdmVJbnRlcnZhbDogbnVtYmVyID0gMDtcclxuICBjdXN0b21pemVGb250OiBib29sZWFuID0gZmFsc2U7XHJcbiAgZm9udEZhbWlseTogc3RyaW5nID0gJyc7XHJcbiAgZm9udFNpemU6IG51bWJlciA9IDA7XHJcbiAgZW5hYmxlRGF0YUV4cG9ydDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGZpbGVGb3JtYXRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGVuYWJsZVF1ZXN0aW9uTnVtYmVyaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcXVlc3Rpb25OdW1iZXJpbmc6IHN0cmluZyA9ICcnO1xyXG4gIGVuYWJsZUdvb2dsZVJlY2FwdGNoYTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGdvb2dsZVJlY2FwdGNoYUtleTogc3RyaW5nID0gJyc7XHJcbiAgZ29vZ2xlUmVjYXB0Y2hhU2VjcmV0OiBzdHJpbmcgPSAnJztcclxuICBuYXZpZ2F0aW9uOiBzdHJpbmcgPSAnJztcclxuICBtYXJrQWxsUXVlc3Rpb25zQXNSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHBhZ2VzOiBhbnkgPSBbXTtcclxuICBjdXJyZW50UGFnZUluZGV4OiBudW1iZXIgPSAwO1xyXG4gIHByZXZpb3VzUGFnZTogYW55ID0ge307XHJcbiAgY3VycmVudFBhZ2U6IGFueSA9IHt9O1xyXG4gIG5leHRQYWdlOiBhbnkgPSB7fTtcclxuICBsYXN0VGFiOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcXVlc3Rpb25BbnN3ZXJzOiBRdWVzdGlvbkFuc3dlcnNXcmFwcGVyID0geyBhbnN3ZXJzOiBbXSwgZm9ybXM6IFtdIH07XHJcbiAgZmlsZXM6IHsgcXVlc3Rpb25JZDogc3RyaW5nOyBmaWxlOiBhbnkgfVtdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5lZGl0ICYmIHRoaXMuc3VibWlzc2lvbklkKSB7XHJcbiAgICAgIHRoaXMuZ2V0U3VibWl0dGVkRm9ybURhdGEoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ2V0Rm9ybURhdGEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEZvcm1EYXRhKCkge1xyXG4gICAgdGhpcy5mb3JtU2VydmljZS5nZXRRdWVzdGlvbnModGhpcy5tb2R1bGVOYW1lKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHRoaXMucXVlc3Rpb24gPSBtYXBwZXIubWFwUHVibGljRm9ybVRvTW9kZWwocmVzcG9uc2UpO1xyXG4gICAgICB0aGlzLmFzc2lnblF1ZXN0aW9uUHJvcGVydGllcyh0aGlzLnF1ZXN0aW9uKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3VibWl0dGVkRm9ybURhdGEoKSB7XHJcbiAgICB0aGlzLmZvcm1TZXJ2aWNlLmdldFN1Ym1pdHRlZEZvcm0odGhpcy5tb2R1bGVOYW1lLCB0aGlzLnN1Ym1pc3Npb25JZCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICB0aGlzLnF1ZXN0aW9uID0gbWFwcGVyLm1hcFB1YmxpY0Zvcm1Ub01vZGVsKHJlc3BvbnNlKTtcclxuICAgICAgdGhpcy5hc3NpZ25RdWVzdGlvblByb3BlcnRpZXModGhpcy5xdWVzdGlvbik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzc2lnblF1ZXN0aW9uUHJvcGVydGllcyhxdWVzdGlvbjogUHVibGljRm9ybSkge1xyXG4gICAgdGhpcy5uYW1lID0gcXVlc3Rpb24ubmFtZTtcclxuICAgIHRoaXMucGFnZXMgPSBxdWVzdGlvbi5wYWdlcztcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzWzBdO1xyXG4gICAgdGhpcy5uZXh0UGFnZSA9IHRoaXMucGFnZXNbMV07XHJcbiAgICB0aGlzLnNhdmVBdXRvbWF0aWNhbGx5ID0gcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24uc2F2ZUF1dG9tYXRpY2FsbHk7XHJcbiAgICB0aGlzLnNhdmVJbnRlcnZhbCA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLnNhdmVJbnRlcnZhbDtcclxuICAgIHRoaXMuY3VzdG9taXplRm9udCA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmN1c3RvbWl6ZUZvbnQ7XHJcbiAgICB0aGlzLmZvbnRGYW1pbHkgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5mb250RmFtaWx5O1xyXG4gICAgdGhpcy5mb250U2l6ZSA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmZvbnRTaXplO1xyXG4gICAgdGhpcy5lbmFibGVEYXRhRXhwb3J0ID0gcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24uZW5hYmxlRGF0YUV4cG9ydDtcclxuICAgIHRoaXMuZmlsZUZvcm1hdHMgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5maWxlRm9ybWF0cztcclxuICAgIHRoaXMuZW5hYmxlUXVlc3Rpb25OdW1iZXJpbmcgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5lbmFibGVRdWVzdGlvbk51bWJlcmluZztcclxuICAgIHRoaXMucXVlc3Rpb25OdW1iZXJpbmcgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5xdWVzdGlvbk51bWJlcmluZztcclxuICAgIHRoaXMuZW5hYmxlR29vZ2xlUmVjYXB0Y2hhID0gcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24uZW5hYmxlR29vZ2xlUmVjYXB0Y2hhO1xyXG4gICAgdGhpcy5nb29nbGVSZWNhcHRjaGFLZXkgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5nb29nbGVSZWNhcHRjaGFLZXk7XHJcbiAgICB0aGlzLmdvb2dsZVJlY2FwdGNoYVNlY3JldCA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmdvb2dsZVJlY2FwdGNoYVNlY3JldDtcclxuICAgIHRoaXMubmF2aWdhdGlvbiA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLm5hdmlnYXRpb247XHJcbiAgICB0aGlzLm1hcmtBbGxRdWVzdGlvbnNBc1JlcXVpcmVkID0gcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24ubWFya0FsbFF1ZXN0aW9uc0FzUmVxdWlyZWQ7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvTmV4dFBhZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZUluZGV4IDwgdGhpcy5wYWdlcy5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGlmICh0aGlzLm1hcmtBbGxRdWVzdGlvbnNBc1JlcXVpcmVkKSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudFBhZ2VEYXRhID0gdGhpcy5wYWdlc1t0aGlzLmN1cnJlbnRQYWdlSW5kZXhdO1xyXG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXNwb25zZSA9IHRoaXMudmFsaWRhdGVSZXF1aXJlZFF1ZXN0aW9ucyhjdXJyZW50UGFnZURhdGEpO1xyXG4gICAgICAgIGlmICh2YWxpZGF0aW9uUmVzcG9uc2UuaXNWYWxpZCkge1xyXG4gICAgICAgICAgdGhpcy5wcmV2aW91c1BhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50UGFnZUluZGV4Kys7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gdGhpcy5wYWdlc1t0aGlzLmN1cnJlbnRQYWdlSW5kZXhdO1xyXG4gICAgICAgICAgdGhpcy5uZXh0UGFnZSA9IHRoaXMucGFnZXNbdGhpcy5jdXJyZW50UGFnZUluZGV4ICsgMV07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLndhcm5pbmcodmFsaWRhdGlvblJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnByZXZpb3VzUGFnZSA9IHRoaXMuY3VycmVudFBhZ2U7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZUluZGV4Kys7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHRoaXMucGFnZXNbdGhpcy5jdXJyZW50UGFnZUluZGV4XTtcclxuICAgICAgICB0aGlzLm5leHRQYWdlID0gdGhpcy5wYWdlc1t0aGlzLmN1cnJlbnRQYWdlSW5kZXggKyAxXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVUb1ByZXZpb3VzUGFnZSgpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlSW5kZXggPiAwKSB7XHJcbiAgICAgIGlmICh0aGlzLm1hcmtBbGxRdWVzdGlvbnNBc1JlcXVpcmVkKSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudFBhZ2VEYXRhID0gdGhpcy5wYWdlc1t0aGlzLmN1cnJlbnRQYWdlSW5kZXhdO1xyXG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXNwb25zZSA9IHRoaXMudmFsaWRhdGVSZXF1aXJlZFF1ZXN0aW9ucyhjdXJyZW50UGFnZURhdGEpO1xyXG4gICAgICAgIGlmICh2YWxpZGF0aW9uUmVzcG9uc2UuaXNWYWxpZCkge1xyXG4gICAgICAgICAgdGhpcy5uZXh0UGFnZSA9IHRoaXMuY3VycmVudFBhZ2U7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlSW5kZXgtLTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XHJcbiAgICAgICAgICB0aGlzLnByZXZpb3VzUGFnZSA9IHRoaXMucGFnZXNbdGhpcy5jdXJyZW50UGFnZUluZGV4IC0gMV07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLndhcm5pbmcodmFsaWRhdGlvblJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm5leHRQYWdlID0gdGhpcy5jdXJyZW50UGFnZTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlSW5kZXgtLTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gdGhpcy5wYWdlc1t0aGlzLmN1cnJlbnRQYWdlSW5kZXhdO1xyXG4gICAgICAgIHRoaXMucHJldmlvdXNQYWdlID0gdGhpcy5wYWdlc1t0aGlzLmN1cnJlbnRQYWdlSW5kZXggLSAxXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0Q3VycmVudFBhZ2UoaW5kZXg6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMubWFya0FsbFF1ZXN0aW9uc0FzUmVxdWlyZWQpIHtcclxuICAgICAgY29uc3QgY3VycmVudFBhZ2VEYXRhID0gdGhpcy5wYWdlc1t0aGlzLmN1cnJlbnRQYWdlSW5kZXhdO1xyXG4gICAgICBjb25zdCB2YWxpZGF0aW9uUmVzcG9uc2UgPSB0aGlzLnZhbGlkYXRlUmVxdWlyZWRRdWVzdGlvbnMoY3VycmVudFBhZ2VEYXRhKTtcclxuICAgICAgaWYgKHZhbGlkYXRpb25SZXNwb25zZS5pc1ZhbGlkKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZUluZGV4ID0gaW5kZXg7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50b2FzdHIud2FybmluZyh2YWxpZGF0aW9uUmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IGluZGV4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVRdWVzdGlvbkFuc3dlcnMoKSB7XHJcbiAgICB0aGlzLmZpbGVzID0gW107XHJcbiAgXHJcbiAgICBjb25zdCBleHRyYWN0UXVlc3Rpb25zID0gKFxyXG4gICAgICBmb3JtRWxlbWVudHM6IGFueVtdLCBcclxuICAgICAgcGFyZW50Rm9ybUlkOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgXHJcbiAgICAgIGlzSW5TdWJGb3JtOiBib29sZWFuID0gZmFsc2UsIFxyXG4gICAgICBzdWJGb3JtSW5kZXg6IG51bWJlciA9IDBcclxuICAgICk6IHsgYW5zd2VyczogQW5zd2VyW10sIGZvcm1zOiBGb3JtW10gfSA9PiB7XHJcbiAgICAgIGNvbnN0IHF1ZXN0aW9uczogQW5zd2VyW10gPSBbXTtcclxuICAgICAgY29uc3QgZm9ybXM6IEZvcm1bXSA9IFtdO1xyXG4gICAgICAgIFxyXG4gICAgICBmb3JtRWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICAgIGlmIChlbGVtZW50LmVudGl0eVR5cGUgPT09ICdRVUVTVElPTicpIHtcclxuICAgICAgICAgIGxldCBiYXNlUXVlc3Rpb246IGFueTtcclxuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQuZm9ybUVsZW1lbnQuZWxlbWVudFR5cGUgPT09ICdGSUxFX1BJQ0tFUicpIHtcclxuICAgICAgICAgICAgYmFzZVF1ZXN0aW9uID0ge1xyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IGVsZW1lbnQuZWxlbWVudC5pZCxcclxuICAgICAgICAgICAgICBhbnN3ZXI6ICcnXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVsZW1lbnQuZWxlbWVudC5hbnN3ZXIpKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25JZCA9IGlzSW5TdWJGb3JtIFxyXG4gICAgICAgICAgICAgICAgPyBgJHtwYXJlbnRGb3JtSWR9XyR7c3ViRm9ybUluZGV4fV8ke2VsZW1lbnQuZWxlbWVudC5pZH1gXHJcbiAgICAgICAgICAgICAgICA6IGVsZW1lbnQuZWxlbWVudC5pZDtcclxuICAgICAgICAgICAgICB0aGlzLmZpbGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgcXVlc3Rpb25JZDogcXVlc3Rpb25JZCxcclxuICAgICAgICAgICAgICAgIGZpbGU6IGVsZW1lbnQuZWxlbWVudC5hbnN3ZXIsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGJhc2VRdWVzdGlvbiA9IHtcclxuICAgICAgICAgICAgICBxdWVzdGlvbklkOiBlbGVtZW50LmVsZW1lbnQuaWQsXHJcbiAgICAgICAgICAgICAgYW5zd2VyOiBlbGVtZW50LmVsZW1lbnQuYW5zd2VyXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5lZGl0KSB7XHJcbiAgICAgICAgICAgIHF1ZXN0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgICAuLi5iYXNlUXVlc3Rpb24sXHJcbiAgICAgICAgICAgICAgYW5zd2VySWQ6IGVsZW1lbnQuZWxlbWVudC5hbnN3ZXJJZCB8fCAnJyxcclxuICAgICAgICAgICAgICBkZWxldGVGaWxlczogZWxlbWVudC5lbGVtZW50LmRlbGV0ZUZpbGVzIHx8IFtdXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcXVlc3Rpb25zLnB1c2goYmFzZVF1ZXN0aW9uKTtcclxuICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgbG9naWMgb2YgZWxlbWVudC5lbGVtZW50LmNoaWxkTG9naWNzKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGxvZ2ljLnNob3dMb2dpYykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZXh0cmFjdFF1ZXN0aW9ucyhsb2dpYy5mb3JtRWxlbWVudHMsIHBhcmVudEZvcm1JZCwgaXNJblN1YkZvcm0sIHN1YkZvcm1JbmRleCk7XHJcbiAgICAgICAgICAgICAgICBxdWVzdGlvbnMucHVzaCguLi5yZXN1bHQuYW5zd2Vycyk7XHJcbiAgICAgICAgICAgICAgICBmb3Jtcy5wdXNoKC4uLnJlc3VsdC5mb3Jtcyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LmVudGl0eVR5cGUgPT09ICdTVUJGT1JNJykge1xyXG4gICAgICAgICAgY29uc3Qgc3ViZm9ybUlkID0gZWxlbWVudC5lbGVtZW50LmlkO1xyXG4gICAgICAgICAgY29uc3Qgc3VibWlzc2lvbklkID0gZWxlbWVudC5lbGVtZW50LnN1Ym1pc3Npb25JZDtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYgKGVsZW1lbnQuZWxlbWVudC5zdWJGb3JtU3RydWN0dXJlID09PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgICBjb25zdCBzdWJmb3JtUXVlc3Rpb25zID0gZXh0cmFjdFF1ZXN0aW9ucyhlbGVtZW50LmVsZW1lbnQuZm9ybUVsZW1lbnRzLCBzdWJmb3JtSWQsIHRydWUsIGZvcm1zLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHN1YmZvcm06IEZvcm0gPSB7XHJcbiAgICAgICAgICAgICAgZm9ybUlkOiBzdWJmb3JtSWQsXHJcbiAgICAgICAgICAgICAgZGVsZXRlZFN1Ym1pc3Npb25zOiBbXSxcclxuICAgICAgICAgICAgICBzdWJtaXNzaW9uczogW3tcclxuICAgICAgICAgICAgICAgIHN1Ym1pc3Npb25JZDogc3VibWlzc2lvbklkLCBcclxuICAgICAgICAgICAgICAgIGFuc3dlcnM6IHN1YmZvcm1RdWVzdGlvbnMuYW5zd2Vyc1xyXG4gICAgICAgICAgICAgIH1dXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGZvcm1zLnB1c2goc3ViZm9ybSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuZWxlbWVudC5zdWJGb3JtU3RydWN0dXJlID09PSAnbXVsdGlwbGUnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN1YmZvcm1RdWVzdGlvbnMgPSBleHRyYWN0UXVlc3Rpb25zKGVsZW1lbnQuZWxlbWVudC5mb3JtRWxlbWVudHMsIHN1YmZvcm1JZCwgdHJ1ZSwgZm9ybXMubGVuZ3RoKTtcclxuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdTdWJmb3JtID0gZm9ybXMuZmluZChmb3JtID0+IGZvcm0uZm9ybUlkID09PSBzdWJmb3JtSWQpO1xyXG4gIFxyXG4gICAgICAgICAgICAgIGNvbnN0IHN1YmZvcm06IEZvcm0gPSB7XHJcbiAgICAgICAgICAgICAgICBmb3JtSWQ6IHN1YmZvcm1JZCxcclxuICAgICAgICAgICAgICAgIGRlbGV0ZWRTdWJtaXNzaW9uczogZWxlbWVudC5lbGVtZW50LmRlbGV0ZWRTdWJtaXNzaW9ucyxcclxuICAgICAgICAgICAgICAgIHN1Ym1pc3Npb25zOiBlbGVtZW50LmVsZW1lbnQuc3VibWlzc2lvbnNcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIGZvcm1zLnB1c2goc3ViZm9ybSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7ICAgICAgXHJcbiAgICAgIHJldHVybiB7IGFuc3dlcnM6IHF1ZXN0aW9ucywgZm9ybXM6IGZvcm1zIH07XHJcbiAgICB9O1xyXG4gIFxyXG4gICAgY29uc3QgcHJvY2Vzc1BhZ2VzID0gKHBhZ2VzOiBhbnlbXSk6IHsgYW5zd2VyczogQW5zd2VyW10sIGZvcm1zOiBGb3JtW10gfSA9PiB7XHJcbiAgICAgIGNvbnN0IHF1ZXN0aW9uczogQW5zd2VyW10gPSBbXTtcclxuICAgICAgY29uc3QgZm9ybXM6IEZvcm1bXSA9IFtdO1xyXG4gIFxyXG4gICAgICBwYWdlcy5mb3JFYWNoKChwYWdlKSA9PiB7XHJcbiAgICAgICAgcGFnZS5yb3dzLmZvckVhY2goKHJvdzogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBleHRyYWN0UXVlc3Rpb25zKHJvdy5ncmlkKTtcclxuICAgICAgICAgIHF1ZXN0aW9ucy5wdXNoKC4uLnJlc3VsdC5hbnN3ZXJzKTtcclxuICAgICAgICAgIGZvcm1zLnB1c2goLi4ucmVzdWx0LmZvcm1zKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgXHJcbiAgICAgIHJldHVybiB7IGFuc3dlcnM6IHF1ZXN0aW9ucywgZm9ybXM6IGZvcm1zIH07XHJcbiAgICB9O1xyXG4gIFxyXG4gICAgY29uc3QgcmVzdWx0ID0gcHJvY2Vzc1BhZ2VzKHRoaXMucGFnZXMpO1xyXG4gIFxyXG4gICAgdGhpcy5xdWVzdGlvbkFuc3dlcnMgPSB7XHJcbiAgICAgIGFuc3dlcnM6IHJlc3VsdC5hbnN3ZXJzLFxyXG4gICAgICBmb3JtczogcmVzdWx0LmZvcm1zXHJcbiAgICB9O1xyXG4gIH1cclxuICBcclxuICBzdWJtaXRGb3JtKCkge1xyXG4gICAgbGV0IHZhbGlkYXRpb25SZXNwb25zZSA9IHRoaXMudmFsaWRhdGVGb3JtKHRoaXMucGFnZXMpO1xyXG4gICAgdGhpcy5nZW5lcmF0ZVF1ZXN0aW9uQW5zd2VycygpOyAgICBcclxuICAgIGlmICh2YWxpZGF0aW9uUmVzcG9uc2UuaXNWYWxpZCkge1xyXG4gICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb24nLCBKU09OLnN0cmluZ2lmeSh0aGlzLnF1ZXN0aW9uQW5zd2VycykpO1xyXG4gICAgICBpZiAodGhpcy5maWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5maWxlcy5mb3JFYWNoKChmaWxlSXRlbSkgPT4ge1xyXG4gICAgICAgICAgZmlsZUl0ZW0uZmlsZS5mb3JFYWNoKChmaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGZpbGVJdGVtLnF1ZXN0aW9uSWQsIGZpbGUuX2ZpbGUpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZWRpdCAmJiB0aGlzLnN1Ym1pc3Npb25JZCkge1xyXG4gICAgICAgIHRoaXMuZm9ybVNlcnZpY2UudXBkYXRlRm9ybSh0aGlzLm1vZHVsZU5hbWUsIHRoaXMuc3VibWlzc2lvbklkLCBmb3JtRGF0YSkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ0Zvcm0gdXBkYXRlZCBzdWNjZXNzZnVsbHknKTtcclxuICAgICAgICAgICAgdGhpcy5zdWJtaXQuZW1pdCgnc3VjY2VzcycpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignRmFpbGVkIHRvIHVwZGF0ZSBmb3JtJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLnN1Ym1pdEZvcm0odGhpcy5tb2R1bGVOYW1lLCBmb3JtRGF0YSkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ0Zvcm0gc3VibWl0dGVkIHN1Y2Nlc3NmdWxseScpO1xyXG4gICAgICAgICAgICB0aGlzLnN1Ym1pdC5lbWl0KCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdGYWlsZWQgdG8gc3VibWl0IGZvcm0nKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcih2YWxpZGF0aW9uUmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZUZvcm0oanNvbkRhdGE6IGFueSk6IHsgaXNWYWxpZDogYm9vbGVhbjsgbWVzc2FnZTogc3RyaW5nOyBwYWdlSW5kZXg6IG51bWJlciB8IDAgfSB7XHJcbiAgICBjb25zdCB2YWxpZGF0ZVF1ZXN0aW9ucyA9IChmb3JtRWxlbWVudHM6IGFueVtdKTogeyBpc1ZhbGlkOiBib29sZWFuOyBtZXNzYWdlOiBzdHJpbmc7IHBhZ2VJbmRleDogbnVtYmVyIHwgMCB9ID0+IHtcclxuICAgICAgZm9yIChsZXQgZWxlbWVudCBvZiBmb3JtRWxlbWVudHMpIHtcclxuICAgICAgICBpZiAoZWxlbWVudC5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nKSB7XHJcbiAgICAgICAgICBjb25zdCByZXF1aXJlZCA9IGVsZW1lbnQuZWxlbWVudC5yZXF1aXJlZDtcclxuICAgICAgICAgIGNvbnN0IGFuc3dlciA9IGVsZW1lbnQuZWxlbWVudC5hbnN3ZXI7XHJcbiAgICAgICAgICBjb25zdCB2YWxpZGF0aW9uID0gZWxlbWVudC5lbGVtZW50LnZhbGlkYXRpb247XHJcbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LmZvcm1FbGVtZW50LmVsZW1lbnRUeXBlID09PSAnRklMRV9QSUNLRVInKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnQgPSBlbGVtZW50LmVsZW1lbnQuYXR0YWNobWVudHM7XHJcbiAgICAgICAgICAgIGlmIChyZXF1aXJlZCkge1xyXG4gICAgICAgICAgICAgIGlmICgoIWFuc3dlciB8fCBhbnN3ZXIubGVuZ3RoID09PSAwKSAmJiBhdHRhY2htZW50Lmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYEZvcm0gaXMgaW52YWxpZCAtIFJlcXVpcmVkIGZpbGUgcXVlc3Rpb24gJHtlbGVtZW50LmVsZW1lbnQucXVlc3Rpb25OdW1iZXJ9IGhhcyBubyBmaWxlcyB1cGxvYWRlZC5gLFxyXG4gICAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IDAsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHJlcXVpcmVkKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFhbnN3ZXIgfHwgT2JqZWN0LmtleXMoYW5zd2VyKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgRm9ybSBpcyBpbnZhbGlkIC0gUXVlc3Rpb24gJHtlbGVtZW50LmVsZW1lbnQucXVlc3Rpb25OdW1iZXJ9IGlzIHJlcXVpcmVkIGJ1dCBubyBhbnN3ZXIgcHJvdmlkZWQuYCxcclxuICAgICAgICAgICAgICAgICAgcGFnZUluZGV4OiAwLFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWxpZGF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYEZvcm0gaXMgaW52YWxpZCAtIFF1ZXN0aW9uICR7ZWxlbWVudC5lbGVtZW50LnF1ZXN0aW9uTnVtYmVyfSBpcyByZXF1aXJlZCBidXQgdmFsaWRhdGlvbiBpcyBmYWxzZS5gLFxyXG4gICAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IDAsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmICghcmVxdWlyZWQgJiYgYW5zd2VyICYmIE9iamVjdC5rZXlzKGFuc3dlcikubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIGlmICghdmFsaWRhdGlvbikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgaXNWYWxpZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBGb3JtIGlzIGludmFsaWQgLSBRdWVzdGlvbiAke2VsZW1lbnQuZWxlbWVudC5xdWVzdGlvbk51bWJlcn0gaXMgbm90IHJlcXVpcmVkIGJ1dCBhbnN3ZXIgcHJvdmlkZWQgd2l0aCB2YWxpZGF0aW9uIGZhbHNlLmAsXHJcbiAgICAgICAgICAgICAgICAgIHBhZ2VJbmRleDogMCxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LmNoaWxkTG9naWNzKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGxvZ2ljIG9mIGVsZW1lbnQuZWxlbWVudC5jaGlsZExvZ2ljcykge1xyXG4gICAgICAgICAgICAgIGlmIChsb2dpYy5zaG93TG9naWMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlUXVlc3Rpb25zKGxvZ2ljLmZvcm1FbGVtZW50cyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5lbnRpdHlUeXBlID09PSAnU1VCRk9STScpIHtcclxuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQuZm9ybUVsZW1lbnRzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlUXVlc3Rpb25zKGVsZW1lbnQuZWxlbWVudC5mb3JtRWxlbWVudHMpO1xyXG4gICAgICAgICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBtZXNzYWdlOiAnJywgcGFnZUluZGV4OiAwIH07XHJcbiAgICB9O1xyXG5cclxuICAgIGZvciAobGV0IHBhZ2VJbmRleCA9IDA7IHBhZ2VJbmRleCA8IGpzb25EYXRhLmxlbmd0aDsgcGFnZUluZGV4KyspIHtcclxuICAgICAgY29uc3QgcGFnZSA9IGpzb25EYXRhW3BhZ2VJbmRleF07XHJcbiAgICAgIGZvciAobGV0IHJvdyBvZiBwYWdlLnJvd3MpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZVF1ZXN0aW9ucyhyb3cuZ3JpZCk7XHJcbiAgICAgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCkge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaXNWYWxpZDogZmFsc2UsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IGBQYWdlICR7cGFnZUluZGV4ICsgMX06ICR7cmVzdWx0Lm1lc3NhZ2V9YCxcclxuICAgICAgICAgICAgcGFnZUluZGV4OiBwYWdlSW5kZXgsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaXNWYWxpZDogdHJ1ZSxcclxuICAgICAgbWVzc2FnZTogJ0Zvcm0gaXMgdmFsaWQuJyxcclxuICAgICAgcGFnZUluZGV4OiAwLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlUmVxdWlyZWRRdWVzdGlvbnMocGFnZTogYW55KTogeyBpc1ZhbGlkOiBib29sZWFuOyBtZXNzYWdlOiBzdHJpbmcgfSB7XHJcbiAgICBjb25zdCB2YWxpZGF0ZVF1ZXN0aW9ucyA9IChmb3JtRWxlbWVudHM6IGFueVtdKTogeyBpc1ZhbGlkOiBib29sZWFuOyBtZXNzYWdlOiBzdHJpbmcgfSA9PiB7XHJcbiAgICAgIGZvciAobGV0IGVsZW1lbnQgb2YgZm9ybUVsZW1lbnRzKSB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1FVRVNUSU9OJykge1xyXG4gICAgICAgICAgY29uc3QgcmVxdWlyZWQgPSBlbGVtZW50LmVsZW1lbnQucmVxdWlyZWQ7XHJcbiAgICAgICAgICBjb25zdCBhbnN3ZXIgPSBlbGVtZW50LmVsZW1lbnQuYW5zd2VyO1xyXG4gICAgICAgICAgaWYgKGVsZW1lbnQuZWxlbWVudC5mb3JtRWxlbWVudC5lbGVtZW50VHlwZSA9PT0gJ0ZJTEVfUElDS0VSJykge1xyXG4gICAgICAgICAgICBpZiAocmVxdWlyZWQpIHtcclxuICAgICAgICAgICAgICBpZiAoIWFuc3dlciB8fCBhbnN3ZXIubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYFJlcXVpcmVkIGZpbGUgcXVlc3Rpb24gJHtlbGVtZW50LmVsZW1lbnQucXVlc3Rpb25OdW1iZXJ9IGlzIG5vdCBhbnN3ZXJlZC5gLFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChyZXF1aXJlZCkge1xyXG4gICAgICAgICAgICAgIGlmICghYW5zd2VyIHx8IE9iamVjdC5rZXlzKGFuc3dlcikubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYFJlcXVpcmVkIHF1ZXN0aW9uICR7ZWxlbWVudC5lbGVtZW50LnF1ZXN0aW9uTnVtYmVyfSBpcyBub3QgYW5zd2VyZWQuYCxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LmNoaWxkTG9naWNzKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGxvZ2ljIG9mIGVsZW1lbnQuZWxlbWVudC5jaGlsZExvZ2ljcykge1xyXG4gICAgICAgICAgICAgIGlmIChsb2dpYy5zaG93TG9naWMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlUXVlc3Rpb25zKGxvZ2ljLmZvcm1FbGVtZW50cyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5lbnRpdHlUeXBlID09PSAnU1VCRk9STScpIHtcclxuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQuZm9ybUVsZW1lbnRzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlUXVlc3Rpb25zKGVsZW1lbnQuZWxlbWVudC5mb3JtRWxlbWVudHMpO1xyXG4gICAgICAgICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBtZXNzYWdlOiAnQWxsIHJlcXVpcmVkIHF1ZXN0aW9ucyBhcmUgYW5zd2VyZWQuJyB9O1xyXG4gICAgfTtcclxuXHJcbiAgICBmb3IgKGxldCByb3cgb2YgcGFnZS5yb3dzKSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlUXVlc3Rpb25zKHJvdy5ncmlkKTtcclxuICAgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCkge1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7IGlzVmFsaWQ6IHRydWUsIG1lc3NhZ2U6ICdBbGwgcmVxdWlyZWQgcXVlc3Rpb25zIGFyZSBhbnN3ZXJlZC4nIH07XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTdWJGb3JtV2l0aFN1Ym1pc3Npb25zKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMudXBkYXRlU3ViRm9ybSh0aGlzLnBhZ2VzLCBldmVudCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTdWJGb3JtID0gKHBhZ2VzOiBhbnlbXSwgdXBkYXRlZFN1YkZvcm06IGFueSkgPT4ge1xyXG4gICAgcGFnZXMuZm9yRWFjaChwYWdlID0+IHtcclxuICAgICAgcGFnZS5yb3dzLmZvckVhY2goKHJvdzphbnkpID0+IHtcclxuICAgICAgICByb3cuZ3JpZC5mb3JFYWNoKChlbGVtZW50OmFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1NVQkZPUk0nICYmIGVsZW1lbnQuZWxlbWVudC5pZCA9PT0gdXBkYXRlZFN1YkZvcm0uZm9ybUlkKSB7XHJcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgZXhpc3Rpbmcgc3ViZm9ybSB3aXRoIHRoZSBuZXcgZGF0YVxyXG4gICAgICAgICAgICBlbGVtZW50LmVsZW1lbnQgPSB1cGRhdGVkU3ViRm9ybTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5lbnRpdHlUeXBlID09PSAnU1VCRk9STScgJiYgZWxlbWVudC5lbGVtZW50LmlkICE9PSB1cGRhdGVkU3ViRm9ybS5mb3JtSWQpIHtcclxuICAgICAgICAgICAgLy8gSGFuZGxlIG11bHRpcGxlIHN1YmZvcm1zIGxvZ2ljIGhlcmUgaWYgbmVlZGVkXHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1FVRVNUSU9OJyAmJiBlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MpIHtcclxuICAgICAgICAgICAgLy8gUmVjdXJzaXZlbHkgdXBkYXRlIGNoaWxkIGxvZ2ljc1xyXG4gICAgICAgICAgICBlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MuZm9yRWFjaCgobG9naWM6YW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGxvZ2ljLnNob3dMb2dpYykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdWJGb3JtKGxvZ2ljLmZvcm1FbGVtZW50cywgdXBkYXRlZFN1YkZvcm0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcblxyXG59IiwiPGRpdiBjbGFzcz1cIm91dGVyLWNvbnRhaW5lclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJoZWFkIGNvbnRhaW5lclwiPlxyXG4gICAgPGxpYi1oZWFkZXIgW25hbWVdPVwibmFtZVwiPjwvbGliLWhlYWRlcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiYm9keSBjb250YWluZXJcIj5cclxuICAgIDxsaWItbmF2aWdhdGlvbi10YWJzXHJcbiAgICAgICpuZ0lmPVwibmF2aWdhdGlvbiA9PSAnVEFCJ1wiXHJcbiAgICAgIFtwYWdlc109XCJwYWdlc1wiXHJcbiAgICAgIFtjdXJyZW50UGFnZUluZGV4XT1cImN1cnJlbnRQYWdlSW5kZXhcIlxyXG4gICAgICAocGFnZUNoYW5nZWQpPVwic2V0Q3VycmVudFBhZ2UoJGV2ZW50KVwiXHJcbiAgICAgIChzdWJtaXRFbWl0KT1cInN1Ym1pdEZvcm0oKVwiXHJcbiAgICAgIFtlZGl0XT1cImVkaXRcIlxyXG4gICAgICAoc3ViRm9ybUNoYW5nZSk9XCJ1cGRhdGVTdWJGb3JtV2l0aFN1Ym1pc3Npb25zKCRldmVudClcIlxyXG4gICAgPjwvbGliLW5hdmlnYXRpb24tdGFicz5cclxuICAgIDxsaWItbmV4dC1wcmV2LW5hdmlnYXRpb25cclxuICAgICAgKm5nSWY9XCJuYXZpZ2F0aW9uID09ICdORVhUX0FORF9QUkVWSU9VU19CVVRUT04nXCJcclxuICAgICAgW2N1cnJlbnRQYWdlSW5kZXhdPVwiY3VycmVudFBhZ2VJbmRleFwiXHJcbiAgICAgIFtwYWdlc109XCJwYWdlc1wiXHJcbiAgICAgIFtwcmV2aW91c1BhZ2VdPVwicHJldmlvdXNQYWdlXCJcclxuICAgICAgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlXCJcclxuICAgICAgW25leHRQYWdlXT1cIm5leHRQYWdlXCJcclxuICAgICAgKG5hdmlnYXRlTmV4dCk9XCJuYXZpZ2F0ZVRvTmV4dFBhZ2UoKVwiXHJcbiAgICAgIChuYXZpZ2F0ZVByZXZpb3VzKT1cIm5hdmlnYXRlVG9QcmV2aW91c1BhZ2UoKVwiXHJcbiAgICAgIChzdWJtaXRFbWl0KT1cInN1Ym1pdEZvcm0oKVwiXHJcbiAgICAgIFtlZGl0XT1cImVkaXRcIlxyXG4gICAgICAoc3ViRm9ybUNoYW5nZSk9XCJ1cGRhdGVTdWJGb3JtV2l0aFN1Ym1pc3Npb25zKCRldmVudClcIlxyXG4gICAgPjwvbGliLW5leHQtcHJldi1uYXZpZ2F0aW9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -18,11 +18,11 @@ export class FormSubmissionComponent {
|
|
|
18
18
|
this.submitForm.emit(event);
|
|
19
19
|
}
|
|
20
20
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormSubmissionComponent, deps: [{ token: i1.DataService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormSubmissionComponent, selector: "lib-formSubmission", inputs: { formData: "formData", edit: "edit", submissionId: "submissionId" }, outputs: { submitForm: "submitForm" }, ngImport: i0, template: "<lib-submit-form\n [moduleName]=\"formData.moduleName\"\n [submissionId]=\"submissionId\"\n [edit]=\"edit\"\n (submit)=\"submit($event)\"\n></lib-submit-form>\n", styles: [""], dependencies: [{ kind: "component", type: i2.SubmitFormComponent, selector: "lib-submit-form", inputs: ["moduleName", "edit", "submissionId"], outputs: ["submit"] }] }); }
|
|
21
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormSubmissionComponent, selector: "lib-formSubmission", inputs: { formData: "formData", edit: "edit", submissionId: "submissionId" }, outputs: { submitForm: "submitForm" }, ngImport: i0, template: "<lib-submit-form\r\n [moduleName]=\"formData.moduleName\"\r\n [submissionId]=\"submissionId\"\r\n [edit]=\"edit\"\r\n (submit)=\"submit($event)\"\r\n></lib-submit-form>\r\n", styles: [""], dependencies: [{ kind: "component", type: i2.SubmitFormComponent, selector: "lib-submit-form", inputs: ["moduleName", "edit", "submissionId"], outputs: ["submit"] }] }); }
|
|
22
22
|
}
|
|
23
23
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormSubmissionComponent, decorators: [{
|
|
24
24
|
type: Component,
|
|
25
|
-
args: [{ selector: 'lib-formSubmission', template: "<lib-submit-form\n [moduleName]=\"formData.moduleName\"\n [submissionId]=\"submissionId\"\n [edit]=\"edit\"\n (submit)=\"submit($event)\"\n></lib-submit-form>\n" }]
|
|
25
|
+
args: [{ selector: 'lib-formSubmission', template: "<lib-submit-form\r\n [moduleName]=\"formData.moduleName\"\r\n [submissionId]=\"submissionId\"\r\n [edit]=\"edit\"\r\n (submit)=\"submit($event)\"\r\n></lib-submit-form>\r\n" }]
|
|
26
26
|
}], ctorParameters: function () { return [{ type: i1.DataService }]; }, propDecorators: { formData: [{
|
|
27
27
|
type: Input
|
|
28
28
|
}], edit: [{
|
|
@@ -32,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
32
32
|
}], submitForm: [{
|
|
33
33
|
type: Output
|
|
34
34
|
}] } });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zdWJtaXNzaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0tc3VibWlzc2lvbi9zcmMvbGliL2Zvcm0tc3VibWlzc2lvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2xpYi9mb3JtLXN1Ym1pc3Npb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVF2RSxNQUFNLE9BQU8sdUJBQXVCO0lBTWxDLFlBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBTG5DLGFBQVEsR0FBUSxFQUFFLENBQUM7UUFDbkIsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUN0QixpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQUN6QixlQUFVLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7SUFFeEIsQ0FBQztJQUNqRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxNQUFNLENBQUMsS0FBVTtRQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7K0dBZFUsdUJBQXVCO21HQUF2Qix1QkFBdUIsK0tDUnBDLGtMQU1BOzs0RkRFYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0Usb0JBQW9CO2tHQUtyQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RhdGEuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1mb3JtU3VibWlzc2lvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tc3VibWlzc2lvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybS1zdWJtaXNzaW9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtU3VibWlzc2lvbkNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgZm9ybURhdGE6IGFueSA9IHt9O1xyXG4gIEBJbnB1dCgpIGVkaXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzdWJtaXNzaW9uSWQ6IHN0cmluZyA9ICcnO1xyXG4gIEBPdXRwdXQoKSBzdWJtaXRGb3JtOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSkgeyB9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLnNldEFwaVVybCh0aGlzLmZvcm1EYXRhLmFwaXVybCk7XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLnNldEhlYWRlcih0aGlzLmZvcm1EYXRhLmhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgc3VibWl0KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc3VibWl0Rm9ybS5lbWl0KGV2ZW50KTtcclxuICB9XHJcbn1cclxuIiwiPGxpYi1zdWJtaXQtZm9ybVxyXG4gIFttb2R1bGVOYW1lXT1cImZvcm1EYXRhLm1vZHVsZU5hbWVcIlxyXG4gIFtzdWJtaXNzaW9uSWRdPVwic3VibWlzc2lvbklkXCJcclxuICBbZWRpdF09XCJlZGl0XCJcclxuICAoc3VibWl0KT1cInN1Ym1pdCgkZXZlbnQpXCJcclxuPjwvbGliLXN1Ym1pdC1mb3JtPlxyXG4iXX0=
|
|
@@ -58,4 +58,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
58
58
|
exports: [FormSubmissionComponent],
|
|
59
59
|
}]
|
|
60
60
|
}] });
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zdWJtaXNzaW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0tc3VibWlzc2lvbi9zcmMvbGliL2Zvcm0tc3VibWlzc2lvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSw0REFBNEQ7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFvQjVELE1BQU0sT0FBTyxvQkFBb0I7K0dBQXBCLG9CQUFvQjtnSEFBcEIsb0JBQW9CLGlCQWpCaEIsdUJBQXVCLGFBRXBDLGNBQWM7WUFDZCxpQkFBaUI7WUFDakIsZUFBZTtZQUNmLFdBQVc7WUFDWCxhQUFhO1lBQ2IsZ0JBQWdCO1lBQ2hCLGdCQUFnQjtZQUNoQixpQkFBaUI7WUFDakIsV0FBVyw4QkFLSCx1QkFBdUI7Z0hBRXRCLG9CQUFvQixZQWY3QixjQUFjO1lBQ2QsaUJBQWlCO1lBQ2pCLGVBQWU7WUFDZixXQUFXO1lBQ1gsYUFBYTtZQUNiLGdCQUFnQjtZQUNoQixnQkFBZ0I7WUFDaEIsaUJBQWlCO1lBQ2pCLFdBQVc7WUFDWCxZQUFZLENBQUMsT0FBTyxDQUFDO2dCQUNuQixhQUFhLEVBQUUsbUJBQW1CO2FBQ25DLENBQUM7OzRGQUlPLG9CQUFvQjtrQkFsQmhDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsdUJBQXVCLENBQUM7b0JBQ3ZDLE9BQU8sRUFBRTt3QkFDUCxjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsV0FBVzt3QkFDWCxZQUFZLENBQUMsT0FBTyxDQUFDOzRCQUNuQixhQUFhLEVBQUUsbUJBQW1CO3lCQUNuQyxDQUFDO3FCQUNIO29CQUNELE9BQU8sRUFBRSxDQUFDLHVCQUF1QixDQUFDO2lCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1TdWJtaXNzaW9uQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLXN1Ym1pc3Npb24uY29tcG9uZW50JztcclxuLy8gaW1wb3J0IHsgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAcGlzZXJ2ZS10ZWNoL2Ryb3AtZG93bic7XHJcbmltcG9ydCB7IEZpbGVQcmV2aWV3TW9kdWxlIH0gZnJvbSAnQHBpc2VydmUtdGVjaC9maWxlLXByZXZpZXcnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0VGFic01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRzTW9kdWxlIH0gZnJvbSAnLi4vZm9ybS1maWVsZHMvZm9ybS1maWVsZHMubW9kdWxlJztcclxuaW1wb3J0IHsgRm9ybVN1Ym1pdE1vZHVsZSB9IGZyb20gJy4uL2Zvcm0tc3VibWlzc2lvbi9mb3JtLXN1Ym1pc3Npb24ubW9kdWxlJztcclxuaW1wb3J0IHsgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAcGlzZXJ2ZS10ZWNoL2Ryb3AtZG93bic7XHJcbmltcG9ydCB7IEVsZW1lbnRUeXBlTW9kdWxlIH0gZnJvbSAnLi4vZWxlbWVudC10eXBlL2VsZW1lbnQtdHlwZS5tb2R1bGUnO1xyXG5pbXBvcnQgeyBMb2dpY01vZHVsZSB9IGZyb20gJy4uL2xvZ2ljL2xvZ2ljLm1vZHVsZSc7XHJcbmltcG9ydCB7IFRvYXN0ck1vZHVsZSB9IGZyb20gJ25neC10b2FzdHInO1xyXG5pbXBvcnQgeyBEb2NVcGxvYWRNb2R1bGUgfSBmcm9tICdAcGlzZXJ2ZS10ZWNoL2ZpbGUtdXBsb2FkJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbRm9ybVN1Ym1pc3Npb25Db21wb25lbnRdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIERyb3Bkb3duTW9kdWxlLFxyXG4gICAgRmlsZVByZXZpZXdNb2R1bGUsXHJcbiAgICBEb2NVcGxvYWRNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE1hdFRhYnNNb2R1bGUsXHJcbiAgICBGb3JtRmllbGRzTW9kdWxlLFxyXG4gICAgRm9ybVN1Ym1pdE1vZHVsZSxcclxuICAgIEVsZW1lbnRUeXBlTW9kdWxlLFxyXG4gICAgTG9naWNNb2R1bGUsXHJcbiAgICBUb2FzdHJNb2R1bGUuZm9yUm9vdCh7XHJcbiAgICAgIHBvc2l0aW9uQ2xhc3M6ICd0b2FzdC1ib3R0b20tbGVmdCcsXHJcbiAgICB9KSxcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtGb3JtU3VibWlzc2lvbkNvbXBvbmVudF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtU3VibWlzc2lvbk1vZHVsZSB7fVxyXG4iXX0=
|