@valtimo/dossier 12.6.1 → 12.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/dossier-detail/dossier-detail.component.mjs +55 -23
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/collection/widget-collection.component.mjs +41 -15
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/custom/widget-custom.component.mjs +27 -12
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/field/widget-field.component.mjs +46 -13
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/formio/widget-formio.component.mjs +25 -11
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/table/widget-table.component.mjs +32 -13
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/widget-process/widget-process.mjs +17 -0
- package/esm2022/lib/components/dossier-detail/tab/widgets/widgets.component.mjs +4 -4
- package/esm2022/lib/components/dossier-detail/tab/widgets/widgets.permissions.mjs +30 -0
- package/esm2022/lib/components/dossier-detail/tab/widgets/widgets.service.mjs +45 -0
- package/esm2022/lib/components/dossier-list/dossier-list.component.mjs +27 -12
- package/esm2022/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.mjs +38 -6
- package/esm2022/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.mjs +44 -6
- package/esm2022/lib/constants/dossier-detail-layout.constants.mjs +7 -2
- package/esm2022/lib/models/case-widget-content.model.mjs +1 -1
- package/esm2022/lib/models/case-widget-display.model.mjs +1 -1
- package/esm2022/lib/models/case-widget.model.mjs +1 -1
- package/fesm2022/valtimo-dossier.mjs +424 -139
- package/fesm2022/valtimo-dossier.mjs.map +1 -1
- package/lib/components/dossier-detail/dossier-detail.component.d.ts +10 -2
- package/lib/components/dossier-detail/dossier-detail.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/widgets/components/collection/widget-collection.component.d.ts +13 -3
- package/lib/components/dossier-detail/tab/widgets/components/collection/widget-collection.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/widgets/components/custom/widget-custom.component.d.ts +12 -4
- package/lib/components/dossier-detail/tab/widgets/components/custom/widget-custom.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/widgets/components/field/widget-field.component.d.ts +17 -4
- package/lib/components/dossier-detail/tab/widgets/components/field/widget-field.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/widgets/components/formio/widget-formio.component.d.ts +11 -3
- package/lib/components/dossier-detail/tab/widgets/components/formio/widget-formio.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/widgets/components/table/widget-table.component.d.ts +11 -3
- package/lib/components/dossier-detail/tab/widgets/components/table/widget-table.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/widgets/components/widget-process/widget-process.d.ts +13 -0
- package/lib/components/dossier-detail/tab/widgets/components/widget-process/widget-process.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/widgets/widgets.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/widgets/widgets.permissions.d.ts +8 -0
- package/lib/components/dossier-detail/tab/widgets/widgets.permissions.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/widgets/widgets.service.d.ts +16 -0
- package/lib/components/dossier-detail/tab/widgets/widgets.service.d.ts.map +1 -0
- package/lib/components/dossier-list/dossier-list.component.d.ts +2 -0
- package/lib/components/dossier-list/dossier-list.component.d.ts.map +1 -1
- package/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.d.ts +8 -3
- package/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.d.ts.map +1 -1
- package/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.d.ts +8 -3
- package/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.d.ts.map +1 -1
- package/lib/constants/dossier-detail-layout.constants.d.ts +6 -1
- package/lib/constants/dossier-detail-layout.constants.d.ts.map +1 -1
- package/lib/models/case-widget-content.model.d.ts +1 -0
- package/lib/models/case-widget-content.model.d.ts.map +1 -1
- package/lib/models/case-widget-display.model.d.ts +8 -0
- package/lib/models/case-widget-display.model.d.ts.map +1 -1
- package/lib/models/case-widget.model.d.ts +6 -1
- package/lib/models/case-widget.model.d.ts.map +1 -1
- package/package.json +1 -1
package/esm2022/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.mjs
CHANGED
|
@@ -14,11 +14,12 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import { Component, EventEmitter, Inject, Optional, Output, ViewChild, ViewContainerRef, ViewEncapsulation, } from '@angular/core';
|
|
17
|
+
import { FORM_CUSTOM_COMPONENT_TOKEN, } from '@valtimo/process-link';
|
|
17
18
|
import { FormioOptionsImpl, } from '@valtimo/components';
|
|
18
19
|
import { take } from 'rxjs/operators';
|
|
19
20
|
import { CAN_VIEW_CASE_PERMISSION, DOSSIER_DETAIL_PERMISSION_RESOURCE } from '../../permissions';
|
|
20
21
|
import { FORM_VIEW_MODEL_TOKEN } from '@valtimo/config';
|
|
21
|
-
import { Subscription } from 'rxjs';
|
|
22
|
+
import { BehaviorSubject, Subscription } from 'rxjs';
|
|
22
23
|
import * as i0 from "@angular/core";
|
|
23
24
|
import * as i1 from "@angular/router";
|
|
24
25
|
import * as i2 from "@valtimo/process";
|
|
@@ -32,7 +33,7 @@ import * as i9 from "@angular/common";
|
|
|
32
33
|
import * as i10 from "@valtimo/components";
|
|
33
34
|
import * as i11 from "@ngx-translate/core";
|
|
34
35
|
export class DossierProcessStartModalComponent {
|
|
35
|
-
constructor(route, router, processService, documentService, processLinkService, formFlowService, userProviderService, permissionService, listService, startModalService, configService, formViewModel, urlResolverService) {
|
|
36
|
+
constructor(route, router, processService, documentService, processLinkService, formFlowService, userProviderService, permissionService, listService, startModalService, configService, formViewModel, formCustomComponentConfig, urlResolverService) {
|
|
36
37
|
this.route = route;
|
|
37
38
|
this.router = router;
|
|
38
39
|
this.processService = processService;
|
|
@@ -45,13 +46,17 @@ export class DossierProcessStartModalComponent {
|
|
|
45
46
|
this.startModalService = startModalService;
|
|
46
47
|
this.configService = configService;
|
|
47
48
|
this.formViewModel = formViewModel;
|
|
49
|
+
this.formCustomComponentConfig = formCustomComponentConfig;
|
|
48
50
|
this.urlResolverService = urlResolverService;
|
|
49
51
|
this.isFormViewModel = false;
|
|
52
|
+
this.isUIComponent = false;
|
|
50
53
|
this.formFlowComplete = new EventEmitter();
|
|
51
54
|
this.noProcessLinked = new EventEmitter();
|
|
52
55
|
this._subscriptions = new Subscription();
|
|
56
|
+
this._formCustomComponentConfig$ = new BehaviorSubject({});
|
|
53
57
|
this._useStartEventNameAsStartFormTitle =
|
|
54
58
|
this.configService.config.featureToggles?.useStartEventNameAsStartFormTitle;
|
|
59
|
+
this._formCustomComponentConfig$.next(formCustomComponentConfig);
|
|
55
60
|
}
|
|
56
61
|
ngOnInit() {
|
|
57
62
|
this.isUserAdmin();
|
|
@@ -108,6 +113,11 @@ export class DossierProcessStartModalComponent {
|
|
|
108
113
|
});
|
|
109
114
|
});
|
|
110
115
|
break;
|
|
116
|
+
case 'ui-component':
|
|
117
|
+
this.setFormCustomComponent(startProcessResult.properties.componentKey);
|
|
118
|
+
this.isUIComponent = true;
|
|
119
|
+
this.modal.show();
|
|
120
|
+
break;
|
|
111
121
|
}
|
|
112
122
|
}
|
|
113
123
|
else {
|
|
@@ -196,17 +206,36 @@ export class DossierProcessStartModalComponent {
|
|
|
196
206
|
this.modal.hide();
|
|
197
207
|
}));
|
|
198
208
|
}
|
|
199
|
-
|
|
200
|
-
|
|
209
|
+
setFormCustomComponent(formCustomComponentKey) {
|
|
210
|
+
this.formCustomComponentDynamicContainer.clear();
|
|
211
|
+
if (!this.formCustomComponentConfig)
|
|
212
|
+
return;
|
|
213
|
+
this._formCustomComponentConfig$.pipe(take(1)).subscribe(formCustomComponentConfig => {
|
|
214
|
+
const customComponent = formCustomComponentConfig[formCustomComponentKey];
|
|
215
|
+
const renderedComponent = this.formCustomComponentDynamicContainer.createComponent(customComponent);
|
|
216
|
+
renderedComponent.instance.processDefinitionKey = this.processDefinitionKey;
|
|
217
|
+
renderedComponent.instance.documentDefinitionName = this.documentDefinitionName;
|
|
218
|
+
renderedComponent.instance.submittedEvent.subscribe(() => {
|
|
219
|
+
this.modal.hide();
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierProcessStartModalComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.ProcessService }, { token: i3.DocumentService }, { token: i4.ProcessLinkService }, { token: i4.FormFlowService }, { token: i5.UserProviderService }, { token: i6.PermissionService }, { token: i7.DossierListService }, { token: i7.StartModalService }, { token: i8.ConfigService }, { token: FORM_VIEW_MODEL_TOKEN, optional: true }, { token: FORM_CUSTOM_COMPONENT_TOKEN, optional: true }, { token: i4.UrlResolverService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
224
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DossierProcessStartModalComponent, selector: "valtimo-dossier-process-start-modal", outputs: { formFlowComplete: "formFlowComplete", noProcessLinked: "noProcessLinked" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }, { propertyName: "modal", first: true, predicate: ["processStartModal"], descendants: true }, { propertyName: "formViewModelDynamicContainer", first: true, predicate: ["formViewModelComponent"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "formCustomComponentDynamicContainer", first: true, predicate: ["formCustomComponent"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<valtimo-modal #processStartModal elementId=\"processStartModal\" [title]=\"modalTitle\">\n <div body *ngIf=\"formDefinition && !isFormViewModel\">\n <valtimo-form-io #form [form]=\"formDefinition\" [options]=\"options\" (submit)=\"onSubmit($event)\">\n </valtimo-form-io>\n </div>\n <div body>\n <ng-template #formViewModelComponent></ng-template>\n <ng-template #formCustomComponent></ng-template>\n </div>\n <div body *ngIf=\"formFlowInstanceId\">\n <valtimo-form-flow\n [formFlowInstanceId]=\"formFlowInstanceId\"\n (formFlowComplete)=\"formFlowSubmitted()\"\n ></valtimo-form-flow>\n </div>\n <div body *ngIf=\"!formFlowInstanceId && !formDefinition && isAdmin && !isUIComponent\">\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundAdmin'\"\n ></div>\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n (click)=\"gotoProcessLinkScreen()\"\n class=\"btn btn-secondary btn-space\"\n id=\"process-link-button\"\n type=\"button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n </div>\n <div body *ngIf=\"!formFlowInstanceId && !formDefinition && !isAdmin && !isUIComponent\">\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundUser'\"\n ></div>\n </div>\n</valtimo-modal>\n", styles: ["#processStartModal .formio-component-submit{text-align:right}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i10.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "component", type: i10.ModalComponent, selector: "valtimo-modal", inputs: ["elementId", "title", "subtitle", "templateBelowSubtitle", "showFooter"] }, { kind: "directive", type: i11.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i4.FormFlowComponent, selector: "valtimo-form-flow", inputs: ["formIoFormData", "formFlowInstanceId"], outputs: ["formFlowComplete", "formFlowChange"] }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
201
225
|
}
|
|
202
226
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierProcessStartModalComponent, decorators: [{
|
|
203
227
|
type: Component,
|
|
204
|
-
args: [{ selector: 'valtimo-dossier-process-start-modal', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<valtimo-modal #processStartModal elementId=\"processStartModal\" [title]=\"modalTitle\">\n <div body *ngIf=\"formDefinition && !isFormViewModel\">\n <valtimo-form-io #form [form]=\"formDefinition\" [options]=\"options\" (submit)=\"onSubmit($event)\">\n </valtimo-form-io>\n </div>\n <div body>\n <ng-template #formViewModelComponent></ng-template>\n </div>\n <div body *ngIf=\"formFlowInstanceId\">\n <valtimo-form-flow\n [formFlowInstanceId]=\"formFlowInstanceId\"\n (formFlowComplete)=\"formFlowSubmitted()\"\n ></valtimo-form-flow>\n </div>\n <div body *ngIf=\"!formFlowInstanceId && !formDefinition && isAdmin\">\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundAdmin'\"\n ></div>\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n (click)=\"gotoProcessLinkScreen()\"\n class=\"btn btn-secondary btn-space\"\n id=\"process-link-button\"\n type=\"button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n </div>\n <div body *ngIf=\"!formFlowInstanceId && !formDefinition && !isAdmin\">\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundUser'\"\n ></div>\n </div>\n</valtimo-modal>\n", styles: ["#processStartModal .formio-component-submit{text-align:right}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
228
|
+
args: [{ selector: 'valtimo-dossier-process-start-modal', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<valtimo-modal #processStartModal elementId=\"processStartModal\" [title]=\"modalTitle\">\n <div body *ngIf=\"formDefinition && !isFormViewModel\">\n <valtimo-form-io #form [form]=\"formDefinition\" [options]=\"options\" (submit)=\"onSubmit($event)\">\n </valtimo-form-io>\n </div>\n <div body>\n <ng-template #formViewModelComponent></ng-template>\n <ng-template #formCustomComponent></ng-template>\n </div>\n <div body *ngIf=\"formFlowInstanceId\">\n <valtimo-form-flow\n [formFlowInstanceId]=\"formFlowInstanceId\"\n (formFlowComplete)=\"formFlowSubmitted()\"\n ></valtimo-form-flow>\n </div>\n <div body *ngIf=\"!formFlowInstanceId && !formDefinition && isAdmin && !isUIComponent\">\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundAdmin'\"\n ></div>\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n (click)=\"gotoProcessLinkScreen()\"\n class=\"btn btn-secondary btn-space\"\n id=\"process-link-button\"\n type=\"button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n </div>\n <div body *ngIf=\"!formFlowInstanceId && !formDefinition && !isAdmin && !isUIComponent\">\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundUser'\"\n ></div>\n </div>\n</valtimo-modal>\n", styles: ["#processStartModal .formio-component-submit{text-align:right}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
205
229
|
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.ProcessService }, { type: i3.DocumentService }, { type: i4.ProcessLinkService }, { type: i4.FormFlowService }, { type: i5.UserProviderService }, { type: i6.PermissionService }, { type: i7.DossierListService }, { type: i7.StartModalService }, { type: i8.ConfigService }, { type: undefined, decorators: [{
|
|
206
230
|
type: Optional
|
|
207
231
|
}, {
|
|
208
232
|
type: Inject,
|
|
209
233
|
args: [FORM_VIEW_MODEL_TOKEN]
|
|
234
|
+
}] }, { type: undefined, decorators: [{
|
|
235
|
+
type: Optional
|
|
236
|
+
}, {
|
|
237
|
+
type: Inject,
|
|
238
|
+
args: [FORM_CUSTOM_COMPONENT_TOKEN]
|
|
210
239
|
}] }, { type: i4.UrlResolverService }], propDecorators: { form: [{
|
|
211
240
|
type: ViewChild,
|
|
212
241
|
args: ['form', { static: false }]
|
|
@@ -216,9 +245,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
216
245
|
}], formViewModelDynamicContainer: [{
|
|
217
246
|
type: ViewChild,
|
|
218
247
|
args: ['formViewModelComponent', { static: true, read: ViewContainerRef }]
|
|
248
|
+
}], formCustomComponentDynamicContainer: [{
|
|
249
|
+
type: ViewChild,
|
|
250
|
+
args: ['formCustomComponent', { static: false, read: ViewContainerRef }]
|
|
219
251
|
}], formFlowComplete: [{
|
|
220
252
|
type: Output
|
|
221
253
|
}], noProcessLinked: [{
|
|
222
254
|
type: Output
|
|
223
255
|
}] } });
|
|
224
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1wcm9jZXNzLXN0YXJ0LW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1wcm9jZXNzLXN0YXJ0LW1vZGFsL2Rvc3NpZXItcHJvY2Vzcy1zdGFydC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItcHJvY2Vzcy1zdGFydC1tb2RhbC9kb3NzaWVyLXByb2Nlc3Mtc3RhcnQtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBR04sUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQVd2QixPQUFPLEVBRUwsaUJBQWlCLEdBSWxCLE1BQU0scUJBQXFCLENBQUM7QUFJN0IsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3BDLE9BQU8sRUFBQyx3QkFBd0IsRUFBRSxrQ0FBa0MsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRy9GLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXRELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFRbEMsTUFBTSxPQUFPLGlDQUFpQztJQXdCNUMsWUFDVSxLQUFxQixFQUNyQixNQUFjLEVBQ2QsY0FBOEIsRUFDOUIsZUFBZ0MsRUFDaEMsa0JBQXNDLEVBQ3RDLGVBQWdDLEVBQ2hDLG1CQUF3QyxFQUN4QyxpQkFBb0MsRUFD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QVMsQ0FBQyxHQUFHLEVBQUU7WUFDeEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOytHQWhOVSxpQ0FBaUMsd1dBb0N0QixxQkFBcUI7bUdBcENoQyxpQ0FBaUMsa2NBaUJjLGdCQUFnQiwyQ0MvRTVFLHUvREFvREE7OzRGRFVhLGlDQUFpQztrQkFON0MsU0FBUzsrQkFDRSxxQ0FBcUMsaUJBR2hDLGlCQUFpQixDQUFDLElBQUk7OzBCQXNDbEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxxQkFBcUI7MEVBckJQLElBQUk7c0JBQXZDLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztnQkFDZSxLQUFLO3NCQUFyRCxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztnQkFFeEMsNkJBQTZCO3NCQURuQyxTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUM7Z0JBRWpFLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQZXJtaXNzaW9uU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vYWNjZXNzLWNvbnRyb2wnO1xuaW1wb3J0IHtEb2N1bWVudFNlcnZpY2UsIFByb2Nlc3NEb2N1bWVudERlZmluaXRpb259IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCB7XG4gIEZvcm1GbG93U2VydmljZSxcbiAgRm9ybVN1Ym1pc3Npb25SZXN1bHQsXG4gIFByb2Nlc3NMaW5rU2VydmljZSxcbiAgVXJsUmVzb2x2ZXJTZXJ2aWNlLFxufSBmcm9tICdAdmFsdGltby9wcm9jZXNzLWxpbmsnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtQcm9jZXNzU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vcHJvY2Vzcyc7XG5pbXBvcnQge1xuICBGb3JtaW9Db21wb25lbnQsXG4gIEZvcm1pb09wdGlvbnNJbXBsLFxuICBGb3JtaW9TdWJtaXNzaW9uLFxuICBNb2RhbENvbXBvbmVudCxcbiAgVmFsdGltb0Zvcm1pb09wdGlvbnMsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtGb3JtaW9CZWZvcmVTdWJtaXR9IGZyb20gJ0Bmb3JtaW8vYW5ndWxhci9mb3JtaW8uY29tbW9uJztcbmltcG9ydCB7Rm9ybWlvRm9ybX0gZnJvbSAnQGZvcm1pby9hbmd1bGFyJztcbmltcG9ydCB7VXNlclByb3ZpZGVyU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vc2VjdXJpdHknO1xuaW1wb3J0IHt0YWtlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0NBTl9WSUVXX0NBU0VfUEVSTUlTU0lPTiwgRE9TU0lFUl9ERVRBSUxfUEVSTUlTU0lPTl9SRVNPVVJDRX0gZnJvbSAnLi4vLi4vcGVybWlzc2lvbnMnO1xuaW1wb3J0IHtEb3NzaWVyTGlzdFNlcnZpY2UsIFN0YXJ0TW9kYWxTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge0NvbmZpZ1NlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge0ZPUk1fVklFV19NT0RFTF9UT0tFTn0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7Rm9ybVZpZXdNb2RlbH0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLXByb2Nlc3Mtc3RhcnQtbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9zc2llci1wcm9jZXNzLXN0YXJ0LW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9zc2llci1wcm9jZXNzLXN0YXJ0LW1vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJQcm9jZXNzU3RhcnRNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIHByb2Nlc3NEZWZpbml0aW9uS2V5OiBzdHJpbmc7XG4gIHB1YmxpYyBwcm9jZXNzRGVmaW5pdGlvbklkOiBzdHJpbmc7XG4gIHB1YmxpYyBkb2N1bWVudERlZmluaXRpb25OYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBwcm9jZXNzTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF9zdGFydEV2ZW50TmFtZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF91c2VTdGFydEV2ZW50TmFtZUFzU3RhcnRGb3JtVGl0bGUhOiBib29sZWFuO1xuICBwdWJsaWMgZm9ybURlZmluaXRpb246IEZvcm1pb0Zvcm07XG4gIHB1YmxpYyBmb3JtTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgZm9ybUZsb3dJbnN0YW5jZUlkOiBzdHJpbmc7XG4gIHB1YmxpYyBmb3JtaW9TdWJtaXNzaW9uOiBGb3JtaW9TdWJtaXNzaW9uO1xuICBwcml2YXRlIHByb2Nlc3NMaW5rSWQ6IHN0cmluZztcbiAgcHVibGljIG9wdGlvbnM6IFZhbHRpbW9Gb3JtaW9PcHRpb25zO1xuICBwdWJsaWMgaXNBZG1pbjogYm9vbGVhbjtcbiAgcHVibGljIGlzRm9ybVZpZXdNb2RlbCA9IGZhbHNlO1xuICBAVmlld0NoaWxkKCdmb3JtJywge3N0YXRpYzogZmFsc2V9KSBmb3JtOiBGb3JtaW9Db21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ3Byb2Nlc3NTdGFydE1vZGFsJywge3N0YXRpYzogZmFsc2V9KSBtb2RhbDogTW9kYWxDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2Zvcm1WaWV3TW9kZWxDb21wb25lbnQnLCB7c3RhdGljOiB0cnVlLCByZWFkOiBWaWV3Q29udGFpbmVyUmVmfSlcbiAgcHVibGljIGZvcm1WaWV3TW9kZWxEeW5hbWljQ29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmO1xuICBAT3V0cHV0KCkgZm9ybUZsb3dDb21wbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG5vUHJvY2Vzc0xpbmtlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBwcm9jZXNzU2VydmljZTogUHJvY2Vzc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHByb2Nlc3NMaW5rU2VydmljZTogUHJvY2Vzc0xpbmtTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUZsb3dTZXJ2aWNlOiBGb3JtRmxvd1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyUHJvdmlkZXJTZXJ2aWNlOiBVc2VyUHJvdmlkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVybWlzc2lvblNlcnZpY2U6IFBlcm1pc3Npb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgbGlzdFNlcnZpY2U6IERvc3NpZXJMaXN0U2VydmljZSxcbiAgICBwcml2YXRlIHN0YXJ0TW9kYWxTZXJ2aWNlOiBTdGFydE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChGT1JNX1ZJRVdfTU9ERUxfVE9LRU4pIHByaXZhdGUgcmVhZG9ubHkgZm9ybVZpZXdNb2RlbDogRm9ybVZpZXdNb2RlbCxcbiAgICBwcml2YXRlIHVybFJlc29sdmVyU2VydmljZTogVXJsUmVzb2x2ZXJTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuX3VzZVN0YXJ0RXZlbnROYW1lQXNTdGFydEZvcm1UaXRsZSA9XG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLmZlYXR1cmVUb2dnbGVzPy51c2VTdGFydEV2ZW50TmFtZUFzU3RhcnRGb3JtVGl0bGU7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzVXNlckFkbWluKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRQcm9jZXNzTGluaygpIHtcbiAgICB0aGlzLnByb2Nlc3NMaW5rSWQgPSBudWxsO1xuICAgIHRoaXMuZm9ybURlZmluaXRpb24gPSBudWxsO1xuICAgIHRoaXMuZm9ybUZsb3dJbnN0YW5jZUlkID0gbnVsbDtcbiAgICBpZiAodGhpcy5fdXNlU3RhcnRFdmVudE5hbWVBc1N0YXJ0Rm9ybVRpdGxlKSB7XG4gICAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlLmdldFByb2Nlc3NEZWZpbml0aW9uWG1sKHRoaXMucHJvY2Vzc0RlZmluaXRpb25JZCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgIHRoaXMuX3N0YXJ0RXZlbnROYW1lID0gdGhpcy5zdGFydE1vZGFsU2VydmljZS5nZXRTdGFuZGFyZFN0YXJ0RXZlbnRUaXRsZShyZXN1bHQuYnBtbjIwWG1sKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlXG4gICAgICAuZ2V0UHJvY2Vzc0RlZmluaXRpb25TdGFydFByb2Nlc3NMaW5rKFxuICAgICAgICB0aGlzLnByb2Nlc3NEZWZpbml0aW9uSWQsXG4gICAgICAgIG51bGwsXG4gICAgICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZVxuICAgICAgKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoc3RhcnRQcm9jZXNzUmVzdWx0ID0+IHtcbiAgICAgICAgaWYgKHN0YXJ0UHJvY2Vzc1Jlc3VsdCkge1xuICAgICAgICAgIHN3aXRjaCAoc3RhcnRQcm9jZXNzUmVzdWx0LnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Zvcm0nOlxuICAgICAgICAgICAgICB0aGlzLmZvcm1EZWZpbml0aW9uID0gc3RhcnRQcm9jZXNzUmVzdWx0LnByb3BlcnRpZXMucHJlZmlsbGVkRm9ybTtcbiAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzTGlua0lkID0gc3RhcnRQcm9jZXNzUmVzdWx0LnByb2Nlc3NMaW5rSWQ7XG4gICAgICAgICAgICAgIHRoaXMuaXNGb3JtVmlld01vZGVsID0gZmFsc2U7XG4gICAgICAgICAgICAgIHRoaXMubW9kYWwuc2hvdygpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2Zvcm0tZmxvdyc6XG4gICAgICAgICAgICAgIHRoaXMuZm9ybUZsb3dJbnN0YW5jZUlkID0gc3RhcnRQcm9jZXNzUmVzdWx0LnByb3BlcnRpZXMuZm9ybUZsb3dJbnN0YW5jZUlkO1xuICAgICAgICAgICAgICB0aGlzLmlzRm9ybVZpZXdNb2RlbCA9IGZhbHNlO1xuICAgICAgICAgICAgICB0aGlzLm1vZGFsLnNob3coKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdmb3JtLXZpZXctbW9kZWwnOlxuICAgICAgICAgICAgICB0aGlzLmZvcm1EZWZpbml0aW9uID0gc3RhcnRQcm9jZXNzUmVzdWx0LnByb3BlcnRpZXMuZm9ybURlZmluaXRpb247XG4gICAgICAgICAgICAgIHRoaXMuZm9ybU5hbWUgPSBzdGFydFByb2Nlc3NSZXN1bHQucHJvcGVydGllcy5mb3JtTmFtZTtcbiAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzTGlua0lkID0gc3RhcnRQcm9jZXNzUmVzdWx0LnByb2Nlc3NMaW5rSWQ7XG4gICAgICAgICAgICAgIHRoaXMuaXNGb3JtVmlld01vZGVsID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtVmlld01vZGVsQ29tcG9uZW50KCk7XG4gICAgICAgICAgICAgIHRoaXMubW9kYWwuc2hvdygpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3VybCc6XG4gICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0xpbmtJZCA9IHN0YXJ0UHJvY2Vzc1Jlc3VsdC5wcm9jZXNzTGlua0lkO1xuICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NMaW5rU2VydmljZVxuICAgICAgICAgICAgICAgIC5nZXRWYXJpYWJsZXMoKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh2YXJpYWJsZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IHRoaXMudXJsUmVzb2x2ZXJTZXJ2aWNlLnJlc29sdmVVcmxWYXJpYWJsZXMoXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0UHJvY2Vzc1Jlc3VsdC5wcm9wZXJ0aWVzLnVybCxcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLnZhcmlhYmxlc1xuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NMaW5rU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAuc3VibWl0VVJMUHJvY2Vzc0xpbmsodGhpcy5wcm9jZXNzTGlua0lkKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJtaXRDb21wbGV0ZWQocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubm9Qcm9jZXNzTGlua2VkLmVtaXQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ290b1Byb2Nlc3NMaW5rU2NyZWVuKCk6IHZvaWQge1xuICAgIHRoaXMubW9kYWwuaGlkZSgpO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsncHJvY2Vzcy1saW5rcyddLCB7cXVlcnlQYXJhbXM6IHtwcm9jZXNzOiB0aGlzLnByb2Nlc3NEZWZpbml0aW9uS2V5fX0pO1xuICB9XG5cbiAgcHVibGljIGdldCBtb2RhbFRpdGxlKCkge1xuICAgIGNvbnN0IGZhbGxiYWNrVGl0bGUgPSBgU3RhcnQgLSAke3RoaXMucHJvY2Vzc05hbWV9YDtcbiAgICByZXR1cm4gdGhpcy5fdXNlU3RhcnRFdmVudE5hbWVBc1N0YXJ0Rm9ybVRpdGxlXG4gICAgICA/IHRoaXMuX3N0YXJ0RXZlbnROYW1lIHx8IGZhbGxiYWNrVGl0bGVcbiAgICAgIDogZmFsbGJhY2tUaXRsZTtcbiAgfVxuXG4gIG9wZW5Nb2RhbChwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uOiBQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uKSB7XG4gICAgdGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleSA9IHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24uaWQucHJvY2Vzc0RlZmluaXRpb25LZXk7XG4gICAgdGhpcy5wcm9jZXNzRGVmaW5pdGlvbklkID0gcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbi5sYXRlc3RWZXJzaW9uSWQ7XG4gICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lID0gcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbi5pZC5kb2N1bWVudERlZmluaXRpb25JZC5uYW1lO1xuICAgIHRoaXMucHJvY2Vzc05hbWUgPSBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLnByb2Nlc3NOYW1lO1xuICAgIHRoaXMub3B0aW9ucyA9IG5ldyBGb3JtaW9PcHRpb25zSW1wbCgpO1xuICAgIHRoaXMub3B0aW9ucy5kaXNhYmxlQWxlcnRzID0gdHJ1ZTtcbiAgICBjb25zdCBmb3JtaW9CZWZvcmVTdWJtaXQ6IEZvcm1pb0JlZm9yZVN1Ym1pdCA9IGZ1bmN0aW9uIChzdWJtaXNzaW9uLCBjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2sobnVsbCwgc3VibWlzc2lvbik7XG4gICAgfTtcbiAgICB0aGlzLm9wdGlvbnMuc2V0SG9va3MoZm9ybWlvQmVmb3JlU3VibWl0KTtcbiAgICB0aGlzLmxvYWRQcm9jZXNzTGluaygpO1xuICB9XG5cbiAgcHVibGljIG9uU3VibWl0KHN1Ym1pc3Npb246IEZvcm1pb1N1Ym1pc3Npb24pIHtcbiAgICB0aGlzLmZvcm1pb1N1Ym1pc3Npb24gPSBzdWJtaXNzaW9uO1xuXG4gICAgdGhpcy5wcm9jZXNzTGlua1NlcnZpY2Uuc3VibWl0Rm9ybSh0aGlzLnByb2Nlc3NMaW5rSWQsIHN1Ym1pc3Npb24uZGF0YSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChmb3JtU3VibWlzc2lvblJlc3VsdDogRm9ybVN1Ym1pc3Npb25SZXN1bHQpID0+IHtcbiAgICAgICAgdGhpcy5zdWJtaXRDb21wbGV0ZWQoZm9ybVN1Ym1pc3Npb25SZXN1bHQpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiBlcnJvcnMgPT4ge1xuICAgICAgICB0aGlzLmZvcm0uc2hvd0Vycm9ycyhlcnJvcnMpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBmb3JtRmxvd1N1Ym1pdHRlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1GbG93Q29tcGxldGUuZW1pdChudWxsKTtcbiAgICB0aGlzLm1vZGFsLmhpZGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1VzZXJBZG1pbigpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXJQcm92aWRlclNlcnZpY2UuZ2V0VXNlclN1YmplY3QoKS5zdWJzY3JpYmUoXG4gICAgICB1c2VySWRlbnRpdHkgPT4ge1xuICAgICAgICB0aGlzLmlzQWRtaW4gPSB1c2VySWRlbnRpdHkucm9sZXMuaW5jbHVkZXMoJ1JPTEVfQURNSU4nKTtcbiAgICAgIH0sXG4gICAgICBlcnJvciA9PiB7XG4gICAgICAgIHRoaXMuaXNBZG1pbiA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHN1Ym1pdENvbXBsZXRlZChmb3JtU3VibWlzc2lvblJlc3VsdDogRm9ybVN1Ym1pc3Npb25SZXN1bHQpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsLmhpZGUoKTtcbiAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlXG4gICAgICAucmVxdWVzdFBlcm1pc3Npb24oQ0FOX1ZJRVdfQ0FTRV9QRVJNSVNTSU9OLCB7XG4gICAgICAgIHJlc291cmNlOiBET1NTSUVSX0RFVEFJTF9QRVJNSVNTSU9OX1JFU09VUkNFLmpzb25TY2hlbWFEb2N1bWVudCxcbiAgICAgICAgaWRlbnRpZmllcjogZm9ybVN1Ym1pc3Npb25SZXN1bHQuZG9jdW1lbnRJZCxcbiAgICAgIH0pXG4gICAgICAuc3Vic2NyaWJlKGNhblZpZXdDYXNlID0+IHtcbiAgICAgICAgaWYgKGNhblZpZXdDYXNlKSB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1xuICAgICAgICAgICAgJ2Rvc3NpZXJzJyxcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSxcbiAgICAgICAgICAgICdkb2N1bWVudCcsXG4gICAgICAgICAgICBmb3JtU3VibWlzc2lvblJlc3VsdC5kb2N1bWVudElkLFxuICAgICAgICAgIF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubGlzdFNlcnZpY2UuZm9yY2VSZWZyZXNoKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRGb3JtVmlld01vZGVsQ29tcG9uZW50KCkge1xuICAgIGlmICghdGhpcy5mb3JtVmlld01vZGVsLmNvbXBvbmVudCkgcmV0dXJuO1xuICAgIHRoaXMuZm9ybVZpZXdNb2RlbER5bmFtaWNDb250YWluZXIuY2xlYXIoKTtcbiAgICBjb25zdCBmb3JtVmlld01vZGVsQ29tcG9uZW50ID0gdGhpcy5mb3JtVmlld01vZGVsRHluYW1pY0NvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoXG4gICAgICB0aGlzLmZvcm1WaWV3TW9kZWwuY29tcG9uZW50XG4gICAgKTtcbiAgICBmb3JtVmlld01vZGVsQ29tcG9uZW50Lmluc3RhbmNlLmZvcm0gPSB0aGlzLmZvcm1EZWZpbml0aW9uO1xuICAgIGZvcm1WaWV3TW9kZWxDb21wb25lbnQuaW5zdGFuY2UuZm9ybU5hbWUgPSB0aGlzLmZvcm1OYW1lO1xuICAgIGZvcm1WaWV3TW9kZWxDb21wb25lbnQuaW5zdGFuY2UuaXNTdGFydEZvcm0gPSB0cnVlO1xuICAgIGZvcm1WaWV3TW9kZWxDb21wb25lbnQuaW5zdGFuY2UucHJvY2Vzc0RlZmluaXRpb25LZXkgPSB0aGlzLnByb2Nlc3NEZWZpbml0aW9uS2V5O1xuICAgIGZvcm1WaWV3TW9kZWxDb21wb25lbnQuaW5zdGFuY2UuZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9IHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGZvcm1WaWV3TW9kZWxDb21wb25lbnQuaW5zdGFuY2UuZm9ybVN1Ym1pdC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmxpc3RTZXJ2aWNlLmZvcmNlUmVmcmVzaCgpO1xuICAgICAgICB0aGlzLm1vZGFsLmhpZGUoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuPHZhbHRpbW8tbW9kYWwgI3Byb2Nlc3NTdGFydE1vZGFsIGVsZW1lbnRJZD1cInByb2Nlc3NTdGFydE1vZGFsXCIgW3RpdGxlXT1cIm1vZGFsVGl0bGVcIj5cbiAgPGRpdiBib2R5ICpuZ0lmPVwiZm9ybURlZmluaXRpb24gJiYgIWlzRm9ybVZpZXdNb2RlbFwiPlxuICAgIDx2YWx0aW1vLWZvcm0taW8gI2Zvcm0gW2Zvcm1dPVwiZm9ybURlZmluaXRpb25cIiBbb3B0aW9uc109XCJvcHRpb25zXCIgKHN1Ym1pdCk9XCJvblN1Ym1pdCgkZXZlbnQpXCI+XG4gICAgPC92YWx0aW1vLWZvcm0taW8+XG4gIDwvZGl2PlxuICA8ZGl2IGJvZHk+XG4gICAgPG5nLXRlbXBsYXRlICNmb3JtVmlld01vZGVsQ29tcG9uZW50PjwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuICA8ZGl2IGJvZHkgKm5nSWY9XCJmb3JtRmxvd0luc3RhbmNlSWRcIj5cbiAgICA8dmFsdGltby1mb3JtLWZsb3dcbiAgICAgIFtmb3JtRmxvd0luc3RhbmNlSWRdPVwiZm9ybUZsb3dJbnN0YW5jZUlkXCJcbiAgICAgIChmb3JtRmxvd0NvbXBsZXRlKT1cImZvcm1GbG93U3VibWl0dGVkKClcIlxuICAgID48L3ZhbHRpbW8tZm9ybS1mbG93PlxuICA8L2Rpdj5cbiAgPGRpdiBib2R5ICpuZ0lmPVwiIWZvcm1GbG93SW5zdGFuY2VJZCAmJiAhZm9ybURlZmluaXRpb24gJiYgaXNBZG1pblwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYmctd2FybmluZyB0ZXh0LWJsYWNrIG1iLTAgcC0zIHRleHQtY2VudGVyXCJcbiAgICAgIFt0cmFuc2xhdGVdPVwiJ2Zvcm1NYW5hZ2VtZW50Lm5vRm9ybURlZmluaXRpb25Gb3VuZEFkbWluJ1wiXG4gICAgPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtYi0wIG10LTQgcC0zIHRleHQtY2VudGVyXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIChjbGljayk9XCJnb3RvUHJvY2Vzc0xpbmtTY3JlZW4oKVwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgYnRuLXNwYWNlXCJcbiAgICAgICAgaWQ9XCJwcm9jZXNzLWxpbmstYnV0dG9uXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIHt7ICdmb3JtTWFuYWdlbWVudC5nb3RvUHJvY2Vzc0xpbmtzQnV0dG9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGJvZHkgKm5nSWY9XCIhZm9ybUZsb3dJbnN0YW5jZUlkICYmICFmb3JtRGVmaW5pdGlvbiAmJiAhaXNBZG1pblwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYmctd2FybmluZyB0ZXh0LWJsYWNrIG1iLTAgcC0zIHRleHQtY2VudGVyXCJcbiAgICAgIFt0cmFuc2xhdGVdPVwiJ2Zvcm1NYW5hZ2VtZW50Lm5vRm9ybURlZmluaXRpb25Gb3VuZFVzZXInXCJcbiAgICA+PC9kaXY+XG4gIDwvZGl2PlxuPC92YWx0aW1vLW1vZGFsPlxuIl19
|
|
256
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1wcm9jZXNzLXN0YXJ0LW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1wcm9jZXNzLXN0YXJ0LW1vZGFsL2Rvc3NpZXItcHJvY2Vzcy1zdGFydC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItcHJvY2Vzcy1zdGFydC1tb2RhbC9kb3NzaWVyLXByb2Nlc3Mtc3RhcnQtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBR04sUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQ0wsMkJBQTJCLEdBTzVCLE1BQU0sdUJBQXVCLENBQUM7QUFHL0IsT0FBTyxFQUVMLGlCQUFpQixHQUlsQixNQUFNLHFCQUFxQixDQUFDO0FBSTdCLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwQyxPQUFPLEVBQUMsd0JBQXdCLEVBQUUsa0NBQWtDLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUcvRixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV0RCxPQUFPLEVBQUMsZUFBZSxFQUFFLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7OztBQVFuRCxNQUFNLE9BQU8saUNBQWlDO0lBOEI1QyxZQUNVLEtBQXFCLEVBQ3JCLE1BQWMsRUFDZCxjQUE4QixFQUM5QixlQUFn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IEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbXBvbmVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UGVybWlzc2lvblNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2FjY2Vzcy1jb250cm9sJztcbmltcG9ydCB7RG9jdW1lbnRTZXJ2aWNlLCBQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ufSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5pbXBvcnQge1xuICBGT1JNX0NVU1RPTV9DT01QT05FTlRfVE9LRU4sXG4gIEZvcm1DdXN0b21Db21wb25lbnQsXG4gIEZvcm1DdXN0b21Db21wb25lbnRDb25maWcsXG4gIEZvcm1GbG93U2VydmljZSxcbiAgRm9ybVN1Ym1pc3Npb25SZXN1bHQsXG4gIFByb2Nlc3NMaW5rU2VydmljZSxcbiAgVXJsUmVzb2x2ZXJTZXJ2aWNlLFxufSBmcm9tICdAdmFsdGltby9wcm9jZXNzLWxpbmsnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtQcm9jZXNzU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vcHJvY2Vzcyc7XG5pbXBvcnQge1xuICBGb3JtaW9Db21wb25lbnQsXG4gIEZvcm1pb09wdGlvbnNJbXBsLFxuICBGb3JtaW9TdWJtaXNzaW9uLFxuICBNb2RhbENvbXBvbmVudCxcbiAgVmFsdGltb0Zvcm1pb09wdGlvbnMsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtGb3JtaW9CZWZvcmVTdWJtaXR9IGZyb20gJ0Bmb3JtaW8vYW5ndWxhci9mb3JtaW8uY29tbW9uJztcbmltcG9ydCB7Rm9ybWlvRm9ybX0gZnJvbSAnQGZvcm1pby9hbmd1bGFyJztcbmltcG9ydCB7VXNlclByb3ZpZGVyU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vc2VjdXJpdHknO1xuaW1wb3J0IHt0YWtlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0NBTl9WSUVXX0NBU0VfUEVSTUlTU0lPTiwgRE9TU0lFUl9ERVRBSUxfUEVSTUlTU0lPTl9SRVNPVVJDRX0gZnJvbSAnLi4vLi4vcGVybWlzc2lvbnMnO1xuaW1wb3J0IHtEb3NzaWVyTGlzdFNlcnZpY2UsIFN0YXJ0TW9kYWxTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge0NvbmZpZ1NlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge0ZPUk1fVklFV19NT0RFTF9UT0tFTn0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7Rm9ybVZpZXdNb2RlbH0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItcHJvY2Vzcy1zdGFydC1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLXByb2Nlc3Mtc3RhcnQtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLXByb2Nlc3Mtc3RhcnQtbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llclByb2Nlc3NTdGFydE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgcHJvY2Vzc0RlZmluaXRpb25LZXk6IHN0cmluZztcbiAgcHVibGljIHByb2Nlc3NEZWZpbml0aW9uSWQ6IHN0cmluZztcbiAgcHVibGljIGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IHN0cmluZztcbiAgcHVibGljIHByb2Nlc3NOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgX3N0YXJ0RXZlbnROYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3VzZVN0YXJ0RXZlbnROYW1lQXNTdGFydEZvcm1UaXRsZSE6IGJvb2xlYW47XG4gIHB1YmxpYyBmb3JtRGVmaW5pdGlvbjogRm9ybWlvRm9ybTtcbiAgcHVibGljIGZvcm1OYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBmb3JtRmxvd0luc3RhbmNlSWQ6IHN0cmluZztcbiAgcHVibGljIGZvcm1pb1N1Ym1pc3Npb246IEZvcm1pb1N1Ym1pc3Npb247XG4gIHByaXZhdGUgcHJvY2Vzc0xpbmtJZDogc3RyaW5nO1xuICBwdWJsaWMgb3B0aW9uczogVmFsdGltb0Zvcm1pb09wdGlvbnM7XG4gIHB1YmxpYyBpc0FkbWluOiBib29sZWFuO1xuICBwdWJsaWMgaXNGb3JtVmlld01vZGVsID0gZmFsc2U7XG4gIHB1YmxpYyBpc1VJQ29tcG9uZW50ID0gZmFsc2U7XG4gIEBWaWV3Q2hpbGQoJ2Zvcm0nLCB7c3RhdGljOiBmYWxzZX0pIGZvcm06IEZvcm1pb0NvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgncHJvY2Vzc1N0YXJ0TW9kYWwnLCB7c3RhdGljOiBmYWxzZX0pIG1vZGFsOiBNb2RhbENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZm9ybVZpZXdNb2RlbENvbXBvbmVudCcsIHtzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWZ9KVxuICBwdWJsaWMgZm9ybVZpZXdNb2RlbER5bmFtaWNDb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XG4gIEBWaWV3Q2hpbGQoJ2Zvcm1DdXN0b21Db21wb25lbnQnLCB7c3RhdGljOiBmYWxzZSwgcmVhZDogVmlld0NvbnRhaW5lclJlZn0pXG4gIHB1YmxpYyBmb3JtQ3VzdG9tQ29tcG9uZW50RHluYW1pY0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcbiAgQE91dHB1dCgpIGZvcm1GbG93Q29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBub1Byb2Nlc3NMaW5rZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZm9ybUN1c3RvbUNvbXBvbmVudENvbmZpZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIEZvcm1DdXN0b21Db21wb25lbnRDb25maWcgfCB7fVxuICA+KHt9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcHJvY2Vzc1NlcnZpY2U6IFByb2Nlc3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgZG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcm9jZXNzTGlua1NlcnZpY2U6IFByb2Nlc3NMaW5rU2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1GbG93U2VydmljZTogRm9ybUZsb3dTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclByb3ZpZGVyU2VydmljZTogVXNlclByb3ZpZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25TZXJ2aWNlOiBQZXJtaXNzaW9uU2VydmljZSxcbiAgICBwcml2YXRlIGxpc3RTZXJ2aWNlOiBEb3NzaWVyTGlzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdGFydE1vZGFsU2VydmljZTogU3RhcnRNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRk9STV9WSUVXX01PREVMX1RPS0VOKSBwcml2YXRlIHJlYWRvbmx5IGZvcm1WaWV3TW9kZWw6IEZvcm1WaWV3TW9kZWwsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KEZPUk1fQ1VTVE9NX0NPTVBPTkVOVF9UT0tFTilcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1DdXN0b21Db21wb25lbnRDb25maWc6IEZvcm1DdXN0b21Db21wb25lbnRDb25maWcsXG4gICAgcHJpdmF0ZSB1cmxSZXNvbHZlclNlcnZpY2U6IFVybFJlc29sdmVyU2VydmljZVxuICApIHtcbiAgICB0aGlzLl91c2VTdGFydEV2ZW50TmFtZUFzU3RhcnRGb3JtVGl0bGUgPVxuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5mZWF0dXJlVG9nZ2xlcz8udXNlU3RhcnRFdmVudE5hbWVBc1N0YXJ0Rm9ybVRpdGxlO1xuXG4gICAgdGhpcy5fZm9ybUN1c3RvbUNvbXBvbmVudENvbmZpZyQubmV4dChmb3JtQ3VzdG9tQ29tcG9uZW50Q29uZmlnKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaXNVc2VyQWRtaW4oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFByb2Nlc3NMaW5rKCkge1xuICAgIHRoaXMucHJvY2Vzc0xpbmtJZCA9IG51bGw7XG4gICAgdGhpcy5mb3JtRGVmaW5pdGlvbiA9IG51bGw7XG4gICAgdGhpcy5mb3JtRmxvd0luc3RhbmNlSWQgPSBudWxsO1xuICAgIGlmICh0aGlzLl91c2VTdGFydEV2ZW50TmFtZUFzU3RhcnRGb3JtVGl0bGUpIHtcbiAgICAgIHRoaXMucHJvY2Vzc1NlcnZpY2UuZ2V0UHJvY2Vzc0RlZmluaXRpb25YbWwodGhpcy5wcm9jZXNzRGVmaW5pdGlvbklkKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgdGhpcy5fc3RhcnRFdmVudE5hbWUgPSB0aGlzLnN0YXJ0TW9kYWxTZXJ2aWNlLmdldFN0YW5kYXJkU3RhcnRFdmVudFRpdGxlKHJlc3VsdC5icG1uMjBYbWwpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMucHJvY2Vzc1NlcnZpY2VcbiAgICAgIC5nZXRQcm9jZXNzRGVmaW5pdGlvblN0YXJ0UHJvY2Vzc0xpbmsoXG4gICAgICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25JZCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lXG4gICAgICApXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZShzdGFydFByb2Nlc3NSZXN1bHQgPT4ge1xuICAgICAgICBpZiAoc3RhcnRQcm9jZXNzUmVzdWx0KSB7XG4gICAgICAgICAgc3dpdGNoIChzdGFydFByb2Nlc3NSZXN1bHQudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnZm9ybSc6XG4gICAgICAgICAgICAgIHRoaXMuZm9ybURlZmluaXRpb24gPSBzdGFydFByb2Nlc3NSZXN1bHQucHJvcGVydGllcy5wcmVmaWxsZWRGb3JtO1xuICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NMaW5rSWQgPSBzdGFydFByb2Nlc3NSZXN1bHQucHJvY2Vzc0xpbmtJZDtcbiAgICAgICAgICAgICAgdGhpcy5pc0Zvcm1WaWV3TW9kZWwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy5tb2RhbC5zaG93KCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZm9ybS1mbG93JzpcbiAgICAgICAgICAgICAgdGhpcy5mb3JtRmxvd0luc3RhbmNlSWQgPSBzdGFydFByb2Nlc3NSZXN1bHQucHJvcGVydGllcy5mb3JtRmxvd0luc3RhbmNlSWQ7XG4gICAgICAgICAgICAgIHRoaXMuaXNGb3JtVmlld01vZGVsID0gZmFsc2U7XG4gICAgICAgICAgICAgIHRoaXMubW9kYWwuc2hvdygpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2Zvcm0tdmlldy1tb2RlbCc6XG4gICAgICAgICAgICAgIHRoaXMuZm9ybURlZmluaXRpb24gPSBzdGFydFByb2Nlc3NSZXN1bHQucHJvcGVydGllcy5mb3JtRGVmaW5pdGlvbjtcbiAgICAgICAgICAgICAgdGhpcy5mb3JtTmFtZSA9IHN0YXJ0UHJvY2Vzc1Jlc3VsdC5wcm9wZXJ0aWVzLmZvcm1OYW1lO1xuICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NMaW5rSWQgPSBzdGFydFByb2Nlc3NSZXN1bHQucHJvY2Vzc0xpbmtJZDtcbiAgICAgICAgICAgICAgdGhpcy5pc0Zvcm1WaWV3TW9kZWwgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1WaWV3TW9kZWxDb21wb25lbnQoKTtcbiAgICAgICAgICAgICAgdGhpcy5tb2RhbC5zaG93KCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndXJsJzpcbiAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzTGlua0lkID0gc3RhcnRQcm9jZXNzUmVzdWx0LnByb2Nlc3NMaW5rSWQ7XG4gICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0xpbmtTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmdldFZhcmlhYmxlcygpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHZhcmlhYmxlcyA9PiB7XG4gICAgICAgICAgICAgICAgICBsZXQgdXJsID0gdGhpcy51cmxSZXNvbHZlclNlcnZpY2UucmVzb2x2ZVVybFZhcmlhYmxlcyhcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRQcm9jZXNzUmVzdWx0LnByb3BlcnRpZXMudXJsLFxuICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMudmFyaWFibGVzXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJykuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0xpbmtTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgIC5zdWJtaXRVUkxQcm9jZXNzTGluayh0aGlzLnByb2Nlc3NMaW5rSWQpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN1Ym1pdENvbXBsZXRlZChyZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd1aS1jb21wb25lbnQnOlxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1DdXN0b21Db21wb25lbnQoc3RhcnRQcm9jZXNzUmVzdWx0LnByb3BlcnRpZXMuY29tcG9uZW50S2V5KTtcbiAgICAgICAgICAgICAgdGhpcy5pc1VJQ29tcG9uZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy5tb2RhbC5zaG93KCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm5vUHJvY2Vzc0xpbmtlZC5lbWl0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdvdG9Qcm9jZXNzTGlua1NjcmVlbigpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsLmhpZGUoKTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3Byb2Nlc3MtbGlua3MnXSwge3F1ZXJ5UGFyYW1zOiB7cHJvY2VzczogdGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleX19KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbW9kYWxUaXRsZSgpIHtcbiAgICBjb25zdCBmYWxsYmFja1RpdGxlID0gYFN0YXJ0IC0gJHt0aGlzLnByb2Nlc3NOYW1lfWA7XG4gICAgcmV0dXJuIHRoaXMuX3VzZVN0YXJ0RXZlbnROYW1lQXNTdGFydEZvcm1UaXRsZVxuICAgICAgPyB0aGlzLl9zdGFydEV2ZW50TmFtZSB8fCBmYWxsYmFja1RpdGxlXG4gICAgICA6IGZhbGxiYWNrVGl0bGU7XG4gIH1cblxuICBvcGVuTW9kYWwocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbjogUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbikge1xuICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXkgPSBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLmlkLnByb2Nlc3NEZWZpbml0aW9uS2V5O1xuICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25JZCA9IHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24ubGF0ZXN0VmVyc2lvbklkO1xuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9IHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24uaWQuZG9jdW1lbnREZWZpbml0aW9uSWQubmFtZTtcbiAgICB0aGlzLnByb2Nlc3NOYW1lID0gcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbi5wcm9jZXNzTmFtZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBuZXcgRm9ybWlvT3B0aW9uc0ltcGwoKTtcbiAgICB0aGlzLm9wdGlvbnMuZGlzYWJsZUFsZXJ0cyA9IHRydWU7XG4gICAgY29uc3QgZm9ybWlvQmVmb3JlU3VibWl0OiBGb3JtaW9CZWZvcmVTdWJtaXQgPSBmdW5jdGlvbiAoc3VibWlzc2lvbiwgY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrKG51bGwsIHN1Ym1pc3Npb24pO1xuICAgIH07XG4gICAgdGhpcy5vcHRpb25zLnNldEhvb2tzKGZvcm1pb0JlZm9yZVN1Ym1pdCk7XG4gICAgdGhpcy5sb2FkUHJvY2Vzc0xpbmsoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblN1Ym1pdChzdWJtaXNzaW9uOiBGb3JtaW9TdWJtaXNzaW9uKSB7XG4gICAgdGhpcy5mb3JtaW9TdWJtaXNzaW9uID0gc3VibWlzc2lvbjtcblxuICAgIHRoaXMucHJvY2Vzc0xpbmtTZXJ2aWNlLnN1Ym1pdEZvcm0odGhpcy5wcm9jZXNzTGlua0lkLCBzdWJtaXNzaW9uLmRhdGEpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZm9ybVN1Ym1pc3Npb25SZXN1bHQ6IEZvcm1TdWJtaXNzaW9uUmVzdWx0KSA9PiB7XG4gICAgICAgIHRoaXMuc3VibWl0Q29tcGxldGVkKGZvcm1TdWJtaXNzaW9uUmVzdWx0KTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyb3JzID0+IHtcbiAgICAgICAgdGhpcy5mb3JtLnNob3dFcnJvcnMoZXJyb3JzKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZm9ybUZsb3dTdWJtaXR0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtRmxvd0NvbXBsZXRlLmVtaXQobnVsbCk7XG4gICAgdGhpcy5tb2RhbC5oaWRlKCk7XG4gIH1cblxuICBwdWJsaWMgaXNVc2VyQWRtaW4oKTogdm9pZCB7XG4gICAgdGhpcy51c2VyUHJvdmlkZXJTZXJ2aWNlLmdldFVzZXJTdWJqZWN0KCkuc3Vic2NyaWJlKFxuICAgICAgdXNlcklkZW50aXR5ID0+IHtcbiAgICAgICAgdGhpcy5pc0FkbWluID0gdXNlcklkZW50aXR5LnJvbGVzLmluY2x1ZGVzKCdST0xFX0FETUlOJyk7XG4gICAgICB9LFxuICAgICAgZXJyb3IgPT4ge1xuICAgICAgICB0aGlzLmlzQWRtaW4gPSBmYWxzZTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJtaXRDb21wbGV0ZWQoZm9ybVN1Ym1pc3Npb25SZXN1bHQ6IEZvcm1TdWJtaXNzaW9uUmVzdWx0KTogdm9pZCB7XG4gICAgdGhpcy5tb2RhbC5oaWRlKCk7XG4gICAgdGhpcy5wZXJtaXNzaW9uU2VydmljZVxuICAgICAgLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9WSUVXX0NBU0VfUEVSTUlTU0lPTiwge1xuICAgICAgICByZXNvdXJjZTogRE9TU0lFUl9ERVRBSUxfUEVSTUlTU0lPTl9SRVNPVVJDRS5qc29uU2NoZW1hRG9jdW1lbnQsXG4gICAgICAgIGlkZW50aWZpZXI6IGZvcm1TdWJtaXNzaW9uUmVzdWx0LmRvY3VtZW50SWQsXG4gICAgICB9KVxuICAgICAgLnN1YnNjcmliZShjYW5WaWV3Q2FzZSA9PiB7XG4gICAgICAgIGlmIChjYW5WaWV3Q2FzZSkge1xuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcbiAgICAgICAgICAgICdkb3NzaWVycycsXG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUsXG4gICAgICAgICAgICAnZG9jdW1lbnQnLFxuICAgICAgICAgICAgZm9ybVN1Ym1pc3Npb25SZXN1bHQuZG9jdW1lbnRJZCxcbiAgICAgICAgICBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxpc3RTZXJ2aWNlLmZvcmNlUmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Rm9ybVZpZXdNb2RlbENvbXBvbmVudCgpIHtcbiAgICBpZiAoIXRoaXMuZm9ybVZpZXdNb2RlbC5jb21wb25lbnQpIHJldHVybjtcbiAgICB0aGlzLmZvcm1WaWV3TW9kZWxEeW5hbWljQ29udGFpbmVyLmNsZWFyKCk7XG4gICAgY29uc3QgZm9ybVZpZXdNb2RlbENvbXBvbmVudCA9IHRoaXMuZm9ybVZpZXdNb2RlbER5bmFtaWNDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KFxuICAgICAgdGhpcy5mb3JtVmlld01vZGVsLmNvbXBvbmVudFxuICAgICk7XG4gICAgZm9ybVZpZXdNb2RlbENvbXBvbmVudC5pbnN0YW5jZS5mb3JtID0gdGhpcy5mb3JtRGVmaW5pdGlvbjtcbiAgICBmb3JtVmlld01vZGVsQ29tcG9uZW50Lmluc3RhbmNlLmZvcm1OYW1lID0gdGhpcy5mb3JtTmFtZTtcbiAgICBmb3JtVmlld01vZGVsQ29tcG9uZW50Lmluc3RhbmNlLmlzU3RhcnRGb3JtID0gdHJ1ZTtcbiAgICBmb3JtVmlld01vZGVsQ29tcG9uZW50Lmluc3RhbmNlLnByb2Nlc3NEZWZpbml0aW9uS2V5ID0gdGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleTtcbiAgICBmb3JtVmlld01vZGVsQ29tcG9uZW50Lmluc3RhbmNlLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPSB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWU7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBmb3JtVmlld01vZGVsQ29tcG9uZW50Lmluc3RhbmNlLmZvcm1TdWJtaXQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5saXN0U2VydmljZS5mb3JjZVJlZnJlc2goKTtcbiAgICAgICAgdGhpcy5tb2RhbC5oaWRlKCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNldEZvcm1DdXN0b21Db21wb25lbnQoZm9ybUN1c3RvbUNvbXBvbmVudEtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtQ3VzdG9tQ29tcG9uZW50RHluYW1pY0NvbnRhaW5lci5jbGVhcigpO1xuICAgIGlmICghdGhpcy5mb3JtQ3VzdG9tQ29tcG9uZW50Q29uZmlnKSByZXR1cm47XG4gICAgdGhpcy5fZm9ybUN1c3RvbUNvbXBvbmVudENvbmZpZyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoZm9ybUN1c3RvbUNvbXBvbmVudENvbmZpZyA9PiB7XG4gICAgICBjb25zdCBjdXN0b21Db21wb25lbnQgPSBmb3JtQ3VzdG9tQ29tcG9uZW50Q29uZmlnW2Zvcm1DdXN0b21Db21wb25lbnRLZXldO1xuICAgICAgY29uc3QgcmVuZGVyZWRDb21wb25lbnQgPSB0aGlzLmZvcm1DdXN0b21Db21wb25lbnREeW5hbWljQ29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChcbiAgICAgICAgY3VzdG9tQ29tcG9uZW50XG4gICAgICApIGFzIENvbXBvbmVudFJlZjxGb3JtQ3VzdG9tQ29tcG9uZW50PjtcblxuICAgICAgcmVuZGVyZWRDb21wb25lbnQuaW5zdGFuY2UucHJvY2Vzc0RlZmluaXRpb25LZXkgPSB0aGlzLnByb2Nlc3NEZWZpbml0aW9uS2V5O1xuICAgICAgcmVuZGVyZWRDb21wb25lbnQuaW5zdGFuY2UuZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9IHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZTtcblxuICAgICAgcmVuZGVyZWRDb21wb25lbnQuaW5zdGFuY2Uuc3VibWl0dGVkRXZlbnQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5tb2RhbC5oaWRlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuPHZhbHRpbW8tbW9kYWwgI3Byb2Nlc3NTdGFydE1vZGFsIGVsZW1lbnRJZD1cInByb2Nlc3NTdGFydE1vZGFsXCIgW3RpdGxlXT1cIm1vZGFsVGl0bGVcIj5cbiAgPGRpdiBib2R5ICpuZ0lmPVwiZm9ybURlZmluaXRpb24gJiYgIWlzRm9ybVZpZXdNb2RlbFwiPlxuICAgIDx2YWx0aW1vLWZvcm0taW8gI2Zvcm0gW2Zvcm1dPVwiZm9ybURlZmluaXRpb25cIiBbb3B0aW9uc109XCJvcHRpb25zXCIgKHN1Ym1pdCk9XCJvblN1Ym1pdCgkZXZlbnQpXCI+XG4gICAgPC92YWx0aW1vLWZvcm0taW8+XG4gIDwvZGl2PlxuICA8ZGl2IGJvZHk+XG4gICAgPG5nLXRlbXBsYXRlICNmb3JtVmlld01vZGVsQ29tcG9uZW50PjwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNmb3JtQ3VzdG9tQ29tcG9uZW50PjwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuICA8ZGl2IGJvZHkgKm5nSWY9XCJmb3JtRmxvd0luc3RhbmNlSWRcIj5cbiAgICA8dmFsdGltby1mb3JtLWZsb3dcbiAgICAgIFtmb3JtRmxvd0luc3RhbmNlSWRdPVwiZm9ybUZsb3dJbnN0YW5jZUlkXCJcbiAgICAgIChmb3JtRmxvd0NvbXBsZXRlKT1cImZvcm1GbG93U3VibWl0dGVkKClcIlxuICAgID48L3ZhbHRpbW8tZm9ybS1mbG93PlxuICA8L2Rpdj5cbiAgPGRpdiBib2R5ICpuZ0lmPVwiIWZvcm1GbG93SW5zdGFuY2VJZCAmJiAhZm9ybURlZmluaXRpb24gJiYgaXNBZG1pbiAmJiAhaXNVSUNvbXBvbmVudFwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYmctd2FybmluZyB0ZXh0LWJsYWNrIG1iLTAgcC0zIHRleHQtY2VudGVyXCJcbiAgICAgIFt0cmFuc2xhdGVdPVwiJ2Zvcm1NYW5hZ2VtZW50Lm5vRm9ybURlZmluaXRpb25Gb3VuZEFkbWluJ1wiXG4gICAgPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtYi0wIG10LTQgcC0zIHRleHQtY2VudGVyXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIChjbGljayk9XCJnb3RvUHJvY2Vzc0xpbmtTY3JlZW4oKVwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgYnRuLXNwYWNlXCJcbiAgICAgICAgaWQ9XCJwcm9jZXNzLWxpbmstYnV0dG9uXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIHt7ICdmb3JtTWFuYWdlbWVudC5nb3RvUHJvY2Vzc0xpbmtzQnV0dG9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGJvZHkgKm5nSWY9XCIhZm9ybUZsb3dJbnN0YW5jZUlkICYmICFmb3JtRGVmaW5pdGlvbiAmJiAhaXNBZG1pbiAmJiAhaXNVSUNvbXBvbmVudFwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYmctd2FybmluZyB0ZXh0LWJsYWNrIG1iLTAgcC0zIHRleHQtY2VudGVyXCJcbiAgICAgIFt0cmFuc2xhdGVdPVwiJ2Zvcm1NYW5hZ2VtZW50Lm5vRm9ybURlZmluaXRpb25Gb3VuZFVzZXInXCJcbiAgICA+PC9kaXY+XG4gIDwvZGl2PlxuPC92YWx0aW1vLW1vZGFsPlxuIl19
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { Component, EventEmitter, Inject, Input, Optional, Output, ViewChild, ViewContainerRef, ViewEncapsulation, } from '@angular/core';
|
|
17
17
|
import { FormioOptionsImpl, } from '@valtimo/components';
|
|
18
|
+
import { FORM_CUSTOM_COMPONENT_TOKEN, } from '@valtimo/process-link';
|
|
18
19
|
import { BehaviorSubject, combineLatest, switchMap } from 'rxjs';
|
|
19
20
|
import { take } from 'rxjs/operators';
|
|
20
21
|
import { FORM_VIEW_MODEL_TOKEN } from '@valtimo/config';
|
|
@@ -26,13 +27,15 @@ import * as i4 from "@angular/common";
|
|
|
26
27
|
import * as i5 from "@valtimo/components";
|
|
27
28
|
import * as i6 from "@ngx-translate/core";
|
|
28
29
|
export class DossierSupportingProcessStartModalComponent {
|
|
29
|
-
constructor(router, processService, processLinkService, formViewModel) {
|
|
30
|
+
constructor(router, processService, processLinkService, formViewModel, formCustomComponentConfig) {
|
|
30
31
|
this.router = router;
|
|
31
32
|
this.processService = processService;
|
|
32
33
|
this.processLinkService = processLinkService;
|
|
33
34
|
this.formViewModel = formViewModel;
|
|
35
|
+
this.formCustomComponentConfig = formCustomComponentConfig;
|
|
34
36
|
this.formSubmit = new EventEmitter();
|
|
35
37
|
this.isFormViewModel = false;
|
|
38
|
+
this.isUIComponent = false;
|
|
36
39
|
this.processDefinitionKey$ = new BehaviorSubject('');
|
|
37
40
|
this.documentDefinitionName$ = new BehaviorSubject('');
|
|
38
41
|
this.processName$ = new BehaviorSubject('');
|
|
@@ -44,6 +47,8 @@ export class DossierSupportingProcessStartModalComponent {
|
|
|
44
47
|
this.processDefinitionId$ = new BehaviorSubject(undefined);
|
|
45
48
|
this.formFlowInstanceId$ = new BehaviorSubject(undefined);
|
|
46
49
|
this.documentId$ = new BehaviorSubject(undefined);
|
|
50
|
+
this._formCustomComponentConfig$ = new BehaviorSubject({});
|
|
51
|
+
this._formCustomComponentConfig$.next(formCustomComponentConfig);
|
|
47
52
|
}
|
|
48
53
|
loadProcessLink() {
|
|
49
54
|
combineLatest([this.processDefinitionId$, this.documentId$])
|
|
@@ -63,6 +68,11 @@ export class DossierSupportingProcessStartModalComponent {
|
|
|
63
68
|
this.setFormViewModelComponent(startProcessResult.properties.formName);
|
|
64
69
|
this.modal.show();
|
|
65
70
|
break;
|
|
71
|
+
case 'ui-component':
|
|
72
|
+
this.setFormCustomComponent(startProcessResult.properties.componentKey);
|
|
73
|
+
this.isUIComponent = true;
|
|
74
|
+
this.modal.show();
|
|
75
|
+
break;
|
|
66
76
|
}
|
|
67
77
|
this.modal.show();
|
|
68
78
|
}
|
|
@@ -119,32 +129,57 @@ export class DossierSupportingProcessStartModalComponent {
|
|
|
119
129
|
this.processDefinitionKey$,
|
|
120
130
|
this.documentDefinitionName$,
|
|
121
131
|
this.options$,
|
|
132
|
+
this.documentId$,
|
|
122
133
|
])
|
|
123
134
|
.pipe(take(1))
|
|
124
|
-
.subscribe(([form, processDefinitionKey, documentDefinitionName, options]) => {
|
|
135
|
+
.subscribe(([form, processDefinitionKey, documentDefinitionName, options, documentId]) => {
|
|
125
136
|
formViewModelComponent.instance.formName = formName;
|
|
126
137
|
formViewModelComponent.instance.form = form;
|
|
127
138
|
formViewModelComponent.instance.processDefinitionKey = processDefinitionKey;
|
|
128
139
|
formViewModelComponent.instance.documentDefinitionName = documentDefinitionName;
|
|
129
140
|
formViewModelComponent.instance.options = options;
|
|
130
141
|
formViewModelComponent.instance.isStartForm = true;
|
|
142
|
+
formViewModelComponent.instance.documentId = documentId;
|
|
131
143
|
});
|
|
132
144
|
formViewModelComponent.instance.formSubmit.pipe(take(1)).subscribe(() => {
|
|
133
145
|
this.formSubmitted();
|
|
134
146
|
});
|
|
135
147
|
this.isFormViewModel = true;
|
|
136
148
|
}
|
|
137
|
-
|
|
138
|
-
|
|
149
|
+
setFormCustomComponent(formCustomComponentKey) {
|
|
150
|
+
this.formCustomComponentDynamicContainer.clear();
|
|
151
|
+
if (!this.formCustomComponentConfig)
|
|
152
|
+
return;
|
|
153
|
+
this._formCustomComponentConfig$.pipe(take(1)).subscribe(formCustomComponentConfig => {
|
|
154
|
+
const customComponent = formCustomComponentConfig[formCustomComponentKey];
|
|
155
|
+
const renderedComponent = this.formCustomComponentDynamicContainer.createComponent(customComponent);
|
|
156
|
+
combineLatest([this.processDefinitionKey$, this.documentDefinitionName$])
|
|
157
|
+
.pipe(take(1))
|
|
158
|
+
.subscribe(([processDefinitionKey, documentDefinitionName]) => {
|
|
159
|
+
renderedComponent.instance.processDefinitionKey = processDefinitionKey;
|
|
160
|
+
renderedComponent.instance.documentDefinitionName = documentDefinitionName;
|
|
161
|
+
});
|
|
162
|
+
renderedComponent.instance.submittedEvent.subscribe(() => {
|
|
163
|
+
this.formSubmitted();
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierSupportingProcessStartModalComponent, deps: [{ token: i1.Router }, { token: i2.ProcessService }, { token: i3.ProcessLinkService }, { token: FORM_VIEW_MODEL_TOKEN, optional: true }, { token: FORM_CUSTOM_COMPONENT_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
168
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DossierSupportingProcessStartModalComponent, selector: "valtimo-dossier-supporting-process-start-modal", inputs: { isAdmin: "isAdmin" }, outputs: { formSubmit: "formSubmit" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }, { propertyName: "modal", first: true, predicate: ["supportingProcessStartModal"], descendants: true }, { propertyName: "formViewModelDynamicContainer", first: true, predicate: ["formViewModelComponent"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "formCustomComponentDynamicContainer", first: true, predicate: ["formCustomComponent"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-modal\n #supportingProcessStartModal\n elementId=\"supportingProcessStartModal\"\n [title]=\"\n (processDefinitionKey$ | async | translate) !== (processDefinitionKey$ | async)\n ? (processDefinitionKey$ | async | translate)\n : (processName$ | async)\n \"\n>\n <div body *ngIf=\"!isFormViewModel && formDefinition$ | async as formDefinition\">\n <valtimo-form-io\n #form\n [submission]=\"submission$ | async\"\n [form]=\"formDefinition\"\n [options]=\"options$ | async\"\n (submit)=\"onSubmit($event)\"\n >\n </valtimo-form-io>\n </div>\n <div body *ngIf=\"formFlowInstanceId$ | async as formFlowInstanceId\">\n <valtimo-form-flow\n #formFlow\n [formFlowInstanceId]=\"formFlowInstanceId\"\n (formFlowComplete)=\"formSubmitted()\"\n ></valtimo-form-flow>\n </div>\n <div body>\n <ng-template #formViewModelComponent></ng-template>\n <ng-template #formCustomComponent></ng-template>\n </div>\n\n <ng-container\n *ngIf=\"{\n formDefinition: formDefinition$ | async,\n formFlowInstanceId: formFlowInstanceId$ | async,\n } as obs\"\n >\n <div body *ngIf=\"!obs.formDefinition && !obs.formFlowInstanceId && !isUIComponent\">\n <div class=\"bg-warning text-black mb-0 p-3 text-center\">\n {{\n isAdmin\n ? ('formManagement.noFormDefinitionFoundAdmin' | translate)\n : ('formManagement.noFormDefinitionFoundUser' | translate)\n }}\n </div>\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n class=\"btn btn-secondary btn-space\"\n type=\"button\"\n (click)=\"gotoFormLinkScreen()\"\n id=\"form-link-button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n </div>\n </ng-container>\n</valtimo-modal>\n", styles: ["#supportingProcessStartModal .formio-component-submit{text-align:right}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "component", type: i5.ModalComponent, selector: "valtimo-modal", inputs: ["elementId", "title", "subtitle", "templateBelowSubtitle", "showFooter"] }, { kind: "component", type: i3.FormFlowComponent, selector: "valtimo-form-flow", inputs: ["formIoFormData", "formFlowInstanceId"], outputs: ["formFlowComplete", "formFlowChange"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
139
169
|
}
|
|
140
170
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierSupportingProcessStartModalComponent, decorators: [{
|
|
141
171
|
type: Component,
|
|
142
|
-
args: [{ selector: 'valtimo-dossier-supporting-process-start-modal', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-modal\n #supportingProcessStartModal\n elementId=\"supportingProcessStartModal\"\n [title]=\"\n (processDefinitionKey$ | async | translate) !== (processDefinitionKey$ | async)\n ? (processDefinitionKey$ | async | translate)\n : (processName$ | async)\n \"\n>\n <div body *ngIf=\"!isFormViewModel && formDefinition$ | async as formDefinition\">\n <valtimo-form-io\n #form\n [submission]=\"submission$ | async\"\n [form]=\"formDefinition\"\n [options]=\"options$ | async\"\n (submit)=\"onSubmit($event)\"\n >\n </valtimo-form-io>\n </div>\n <div body *ngIf=\"formFlowInstanceId$ | async as formFlowInstanceId\">\n <valtimo-form-flow\n #formFlow\n [formFlowInstanceId]=\"formFlowInstanceId\"\n (formFlowComplete)=\"formSubmitted()\"\n ></valtimo-form-flow>\n </div>\n <div body>\n <ng-template #formViewModelComponent></ng-template>\n </div>\n\n <ng-container\n *ngIf=\"{\n formDefinition: formDefinition$ | async,\n formFlowInstanceId: formFlowInstanceId$ | async,\n } as obs\"\n >\n <div body *ngIf=\"!obs.formDefinition && !obs.formFlowInstanceId\">\n <div class=\"bg-warning text-black mb-0 p-3 text-center\">\n {{\n isAdmin\n ? ('formManagement.noFormDefinitionFoundAdmin' | translate)\n : ('formManagement.noFormDefinitionFoundUser' | translate)\n }}\n </div>\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n class=\"btn btn-secondary btn-space\"\n type=\"button\"\n (click)=\"gotoFormLinkScreen()\"\n id=\"form-link-button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n </div>\n </ng-container>\n</valtimo-modal>\n", styles: ["#supportingProcessStartModal .formio-component-submit{text-align:right}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
172
|
+
args: [{ selector: 'valtimo-dossier-supporting-process-start-modal', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-modal\n #supportingProcessStartModal\n elementId=\"supportingProcessStartModal\"\n [title]=\"\n (processDefinitionKey$ | async | translate) !== (processDefinitionKey$ | async)\n ? (processDefinitionKey$ | async | translate)\n : (processName$ | async)\n \"\n>\n <div body *ngIf=\"!isFormViewModel && formDefinition$ | async as formDefinition\">\n <valtimo-form-io\n #form\n [submission]=\"submission$ | async\"\n [form]=\"formDefinition\"\n [options]=\"options$ | async\"\n (submit)=\"onSubmit($event)\"\n >\n </valtimo-form-io>\n </div>\n <div body *ngIf=\"formFlowInstanceId$ | async as formFlowInstanceId\">\n <valtimo-form-flow\n #formFlow\n [formFlowInstanceId]=\"formFlowInstanceId\"\n (formFlowComplete)=\"formSubmitted()\"\n ></valtimo-form-flow>\n </div>\n <div body>\n <ng-template #formViewModelComponent></ng-template>\n <ng-template #formCustomComponent></ng-template>\n </div>\n\n <ng-container\n *ngIf=\"{\n formDefinition: formDefinition$ | async,\n formFlowInstanceId: formFlowInstanceId$ | async,\n } as obs\"\n >\n <div body *ngIf=\"!obs.formDefinition && !obs.formFlowInstanceId && !isUIComponent\">\n <div class=\"bg-warning text-black mb-0 p-3 text-center\">\n {{\n isAdmin\n ? ('formManagement.noFormDefinitionFoundAdmin' | translate)\n : ('formManagement.noFormDefinitionFoundUser' | translate)\n }}\n </div>\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n class=\"btn btn-secondary btn-space\"\n type=\"button\"\n (click)=\"gotoFormLinkScreen()\"\n id=\"form-link-button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n </div>\n </ng-container>\n</valtimo-modal>\n", styles: ["#supportingProcessStartModal .formio-component-submit{text-align:right}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
143
173
|
}], ctorParameters: () => [{ type: i1.Router }, { type: i2.ProcessService }, { type: i3.ProcessLinkService }, { type: undefined, decorators: [{
|
|
144
174
|
type: Optional
|
|
145
175
|
}, {
|
|
146
176
|
type: Inject,
|
|
147
177
|
args: [FORM_VIEW_MODEL_TOKEN]
|
|
178
|
+
}] }, { type: undefined, decorators: [{
|
|
179
|
+
type: Optional
|
|
180
|
+
}, {
|
|
181
|
+
type: Inject,
|
|
182
|
+
args: [FORM_CUSTOM_COMPONENT_TOKEN]
|
|
148
183
|
}] }], propDecorators: { form: [{
|
|
149
184
|
type: ViewChild,
|
|
150
185
|
args: ['form', { static: false }]
|
|
@@ -154,9 +189,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
154
189
|
}], formViewModelDynamicContainer: [{
|
|
155
190
|
type: ViewChild,
|
|
156
191
|
args: ['formViewModelComponent', { static: true, read: ViewContainerRef }]
|
|
192
|
+
}], formCustomComponentDynamicContainer: [{
|
|
193
|
+
type: ViewChild,
|
|
194
|
+
args: ['formCustomComponent', { static: false, read: ViewContainerRef }]
|
|
157
195
|
}], isAdmin: [{
|
|
158
196
|
type: Input
|
|
159
197
|
}], formSubmit: [{
|
|
160
198
|
type: Output
|
|
161
199
|
}] } });
|
|
162
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1zdXBwb3J0aW5nLXByb2Nlc3Mtc3RhcnQtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLXN1cHBvcnRpbmctcHJvY2Vzcy1zdGFydC1tb2RhbC9kb3NzaWVyLXN1cHBvcnRpbmctcHJvY2Vzcy1zdGFydC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItc3VwcG9ydGluZy1wcm9jZXNzLXN0YXJ0LW1vZGFsL2Rvc3NpZXItc3VwcG9ydGluZy1wcm9jZXNzLXN0YXJ0LW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFFTCxpQkFBaUIsR0FJbEIsTUFBTSxxQkFBcUIsQ0FBQztBQUk3QixPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3BDLE9BQU8sRUFBQyxxQkFBcUIsRUFBZ0IsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7QUFRckUsTUFBTSxPQUFPLDJDQUEyQztJQXVCdEQsWUFDbUIsTUFBYyxFQUNkLGNBQThCLEVBQzlCLGtCQUFzQyxFQUNLLGFBQTRCO1FBSHZFLFdBQU0sR0FBTixNQUFNLENBQVE7UUFD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RUFBRSxLQUFLLEVBQUM7Z0JBRWxELDZCQUE2QjtzQkFEbkMsU0FBUzt1QkFBQyx3QkFBd0IsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFDO2dCQUdsRSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7Rm9ybWlvQmVmb3JlU3VibWl0LCBGb3JtaW9Gb3JtfSBmcm9tICdAZm9ybWlvL2FuZ3VsYXInO1xuaW1wb3J0IHtcbiAgRm9ybWlvQ29tcG9uZW50LFxuICBGb3JtaW9PcHRpb25zSW1wbCxcbiAgRm9ybWlvU3VibWlzc2lvbixcbiAgTW9kYWxDb21wb25lbnQsXG4gIFZhbHRpbW9Gb3JtaW9PcHRpb25zLFxufSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7UHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbn0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtQcm9jZXNzU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vcHJvY2Vzcyc7XG5pbXBvcnQge0Zvcm1TdWJtaXNzaW9uUmVzdWx0LCBQcm9jZXNzTGlua1NlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL3Byb2Nlc3MtbGluayc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgc3dpdGNoTWFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7dGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtGT1JNX1ZJRVdfTU9ERUxfVE9LRU4sIEZvcm1WaWV3TW9kZWx9IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9zc2llci1zdXBwb3J0aW5nLXByb2Nlc3Mtc3RhcnQtbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9zc2llci1zdXBwb3J0aW5nLXByb2Nlc3Mtc3RhcnQtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLXN1cHBvcnRpbmctcHJvY2Vzcy1zdGFydC1tb2RhbC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyU3VwcG9ydGluZ1Byb2Nlc3NTdGFydE1vZGFsQ29tcG9uZW50IHtcbiAgQFZpZXdDaGlsZCgnZm9ybScsIHtzdGF0aWM6IGZhbHNlfSkgZm9ybTogRm9ybWlvQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdzdXBwb3J0aW5nUHJvY2Vzc1N0YXJ0TW9kYWwnLCB7c3RhdGljOiBmYWxzZX0pIG1vZGFsOiBNb2RhbENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZm9ybVZpZXdNb2RlbENvbXBvbmVudCcsIHtzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWZ9KVxuICBwdWJsaWMgZm9ybVZpZXdNb2RlbER5bmFtaWNDb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgQElucHV0KCkgaXNBZG1pbjogYm9vbGVhbjtcbiAgQE91dHB1dCgpIGZvcm1TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJvdGVjdGVkIGlzRm9ybVZpZXdNb2RlbCA9IGZhbHNlO1xuXG4gIHB1YmxpYyByZWFkb25seSBwcm9jZXNzRGVmaW5pdGlvbktleSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnREZWZpbml0aW9uTmFtZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvY2Vzc05hbWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHVibGljIHJlYWRvbmx5IGZvcm1EZWZpbml0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Rm9ybWlvRm9ybT4odW5kZWZpbmVkKTtcbiAgcHVibGljIHJlYWRvbmx5IGZvcm1pb1N1Ym1pc3Npb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGb3JtaW9TdWJtaXNzaW9uPih1bmRlZmluZWQpO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvY2Vzc0xpbmtJZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwdWJsaWMgcmVhZG9ubHkgb3B0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFZhbHRpbW9Gb3JtaW9PcHRpb25zPih1bmRlZmluZWQpO1xuICBwdWJsaWMgcmVhZG9ubHkgc3VibWlzc2lvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG9iamVjdD4odW5kZWZpbmVkKTtcbiAgcHVibGljIHJlYWRvbmx5IHByb2Nlc3NEZWZpbml0aW9uSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyByZWFkb25seSBmb3JtRmxvd0luc3RhbmNlSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudElkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPih1bmRlZmluZWQpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9jZXNzU2VydmljZTogUHJvY2Vzc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9jZXNzTGlua1NlcnZpY2U6IFByb2Nlc3NMaW5rU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZPUk1fVklFV19NT0RFTF9UT0tFTikgcHJpdmF0ZSByZWFkb25seSBmb3JtVmlld01vZGVsOiBGb3JtVmlld01vZGVsXG4gICkge31cblxuICBwcml2YXRlIGxvYWRQcm9jZXNzTGluaygpOiB2b2lkIHtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnByb2Nlc3NEZWZpbml0aW9uSWQkLCB0aGlzLmRvY3VtZW50SWQkXSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBzd2l0Y2hNYXAoKFtwcm9jZXNzRGVmaW5pdGlvbklkLCBkb2N1bWVudElkXSkgPT5cbiAgICAgICAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlLmdldFByb2Nlc3NEZWZpbml0aW9uU3RhcnRQcm9jZXNzTGluayhcbiAgICAgICAgICAgIHByb2Nlc3NEZWZpbml0aW9uSWQsXG4gICAgICAgICAgICBkb2N1bWVudElkLFxuICAgICAgICAgICAgbnVsbFxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShzdGFydFByb2Nlc3NSZXN1bHQgPT4ge1xuICAgICAgICBpZiAoc3RhcnRQcm9jZXNzUmVzdWx0KSB7XG4gICAgICAgICAgc3dpdGNoIChzdGFydFByb2Nlc3NSZXN1bHQudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnZm9ybSc6XG4gICAgICAgICAgICAgIHRoaXMuZm9ybURlZmluaXRpb24kLm5leHQoc3RhcnRQcm9jZXNzUmVzdWx0LnByb3BlcnRpZXMucHJlZmlsbGVkRm9ybSk7XG4gICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0xpbmtJZCQubmV4dChzdGFydFByb2Nlc3NSZXN1bHQucHJvY2Vzc0xpbmtJZCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZm9ybS1mbG93JzpcbiAgICAgICAgICAgICAgdGhpcy5mb3JtRmxvd0luc3RhbmNlSWQkLm5leHQoc3RhcnRQcm9jZXNzUmVzdWx0LnByb3BlcnRpZXMuZm9ybUZsb3dJbnN0YW5jZUlkKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdmb3JtLXZpZXctbW9kZWwnOlxuICAgICAgICAgICAgICB0aGlzLmZvcm1EZWZpbml0aW9uJC5uZXh0KHN0YXJ0UHJvY2Vzc1Jlc3VsdC5wcm9wZXJ0aWVzLmZvcm1EZWZpbml0aW9uKTtcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtVmlld01vZGVsQ29tcG9uZW50KHN0YXJ0UHJvY2Vzc1Jlc3VsdC5wcm9wZXJ0aWVzLmZvcm1OYW1lKTtcbiAgICAgICAgICAgICAgdGhpcy5tb2RhbC5zaG93KCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLm1vZGFsLnNob3coKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb3Blbk1vZGFsKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb246IFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24sIGRvY3VtZW50SWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZG9jdW1lbnRJZCQubmV4dChkb2N1bWVudElkKTtcbiAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLm5leHQocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbi5pZC5kb2N1bWVudERlZmluaXRpb25JZC5uYW1lKTtcbiAgICB0aGlzLnByb2Nlc3NEZWZpbml0aW9uS2V5JC5uZXh0KHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24uaWQucHJvY2Vzc0RlZmluaXRpb25LZXkpO1xuICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25JZCQubmV4dChwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLmxhdGVzdFZlcnNpb25JZCk7XG4gICAgdGhpcy5wcm9jZXNzTmFtZSQubmV4dChwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLnByb2Nlc3NOYW1lKTtcblxuICAgIGNvbnN0IGZvcm1pb0JlZm9yZVN1Ym1pdDogRm9ybWlvQmVmb3JlU3VibWl0ID0gZnVuY3Rpb24gKHN1Ym1pc3Npb24sIGNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjayhudWxsLCBzdWJtaXNzaW9uKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb3B0aW9ucyA9IG5ldyBGb3JtaW9PcHRpb25zSW1wbCgpO1xuICAgIG9wdGlvbnMuZGlzYWJsZUFsZXJ0cyA9IHRydWU7XG4gICAgb3B0aW9ucy5zZXRIb29rcyhmb3JtaW9CZWZvcmVTdWJtaXQpO1xuXG4gICAgdGhpcy5vcHRpb25zJC5uZXh0KG9wdGlvbnMpO1xuXG4gICAgdGhpcy5sb2FkUHJvY2Vzc0xpbmsoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblN1Ym1pdChzdWJtaXNzaW9uOiBGb3JtaW9TdWJtaXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtaW9TdWJtaXNzaW9uJC5uZXh0KHN1Ym1pc3Npb24pO1xuXG4gICAgaWYgKHRoaXMucHJvY2Vzc0xpbmtJZCQuZ2V0VmFsdWUoKSkge1xuICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5wcm9jZXNzTGlua0lkJCwgdGhpcy5kb2N1bWVudElkJF0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgc3dpdGNoTWFwKChbcHJvY2Vzc0xpbmtJZCwgZG9jdW1lbnRJZF0pID0+XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NMaW5rU2VydmljZS5zdWJtaXRGb3JtKHByb2Nlc3NMaW5rSWQsIHN1Ym1pc3Npb24uZGF0YSwgZG9jdW1lbnRJZClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKGZvcm1TdWJtaXNzaW9uUmVzdWx0OiBGb3JtU3VibWlzc2lvblJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5mb3JtU3VibWl0dGVkKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogZXJyb3JzID0+IHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5zaG93RXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZvcm1TdWJtaXR0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5tb2RhbC5oaWRlKCk7XG4gICAgdGhpcy5mb3JtU3VibWl0LmVtaXQoKTtcbiAgICB0aGlzLmZvcm1EZWZpbml0aW9uJC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHVibGljIGdvdG9Gb3JtTGlua1NjcmVlbigpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsLmhpZGUoKTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3Byb2Nlc3MtbGlua3MnXSwge1xuICAgICAgcXVlcnlQYXJhbXM6IHtwcm9jZXNzOiB0aGlzLnByb2Nlc3NEZWZpbml0aW9uS2V5JC5nZXRWYWx1ZSgpfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Rm9ybVZpZXdNb2RlbENvbXBvbmVudChmb3JtTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmZvcm1WaWV3TW9kZWwuY29tcG9uZW50KSByZXR1cm47XG4gICAgdGhpcy5mb3JtVmlld01vZGVsRHluYW1pY0NvbnRhaW5lci5jbGVhcigpO1xuICAgIGNvbnN0IGZvcm1WaWV3TW9kZWxDb21wb25lbnQgPSB0aGlzLmZvcm1WaWV3TW9kZWxEeW5hbWljQ29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChcbiAgICAgIHRoaXMuZm9ybVZpZXdNb2RlbC5jb21wb25lbnRcbiAgICApO1xuXG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmZvcm1EZWZpbml0aW9uJCxcbiAgICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXkkLFxuICAgICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJCxcbiAgICAgIHRoaXMub3B0aW9ucyQsXG4gICAgXSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChbZm9ybSwgcHJvY2Vzc0RlZmluaXRpb25LZXksIGRvY3VtZW50RGVmaW5pdGlvbk5hbWUsIG9wdGlvbnNdKSA9PiB7XG4gICAgICAgIGZvcm1WaWV3TW9kZWxDb21wb25lbnQuaW5zdGFuY2UuZm9ybU5hbWUgPSBmb3JtTmFtZTtcbiAgICAgICAgZm9ybVZpZXdNb2RlbENvbXBvbmVudC5pbnN0YW5jZS5mb3JtID0gZm9ybTtcbiAgICAgICAgZm9ybVZpZXdNb2RlbENvbXBvbmVudC5pbnN0YW5jZS5wcm9jZXNzRGVmaW5pdGlvbktleSA9IHByb2Nlc3NEZWZpbml0aW9uS2V5O1xuICAgICAgICBmb3JtVmlld01vZGVsQ29tcG9uZW50Lmluc3RhbmNlLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPSBkb2N1bWVudERlZmluaXRpb25OYW1lO1xuICAgICAgICBmb3JtVmlld01vZGVsQ29tcG9uZW50Lmluc3RhbmNlLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICBmb3JtVmlld01vZGVsQ29tcG9uZW50Lmluc3RhbmNlLmlzU3RhcnRGb3JtID0gdHJ1ZTtcbiAgICAgIH0pO1xuXG4gICAgZm9ybVZpZXdNb2RlbENvbXBvbmVudC5pbnN0YW5jZS5mb3JtU3VibWl0LnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZm9ybVN1Ym1pdHRlZCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5pc0Zvcm1WaWV3TW9kZWwgPSB0cnVlO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjx2YWx0aW1vLW1vZGFsXG4gICNzdXBwb3J0aW5nUHJvY2Vzc1N0YXJ0TW9kYWxcbiAgZWxlbWVudElkPVwic3VwcG9ydGluZ1Byb2Nlc3NTdGFydE1vZGFsXCJcbiAgW3RpdGxlXT1cIlxuICAgIChwcm9jZXNzRGVmaW5pdGlvbktleSQgfCBhc3luYyB8IHRyYW5zbGF0ZSkgIT09IChwcm9jZXNzRGVmaW5pdGlvbktleSQgfCBhc3luYylcbiAgICAgID8gKHByb2Nlc3NEZWZpbml0aW9uS2V5JCB8IGFzeW5jIHwgdHJhbnNsYXRlKVxuICAgICAgOiAocHJvY2Vzc05hbWUkIHwgYXN5bmMpXG4gIFwiXG4+XG4gIDxkaXYgYm9keSAqbmdJZj1cIiFpc0Zvcm1WaWV3TW9kZWwgJiYgZm9ybURlZmluaXRpb24kIHwgYXN5bmMgYXMgZm9ybURlZmluaXRpb25cIj5cbiAgICA8dmFsdGltby1mb3JtLWlvXG4gICAgICAjZm9ybVxuICAgICAgW3N1Ym1pc3Npb25dPVwic3VibWlzc2lvbiQgfCBhc3luY1wiXG4gICAgICBbZm9ybV09XCJmb3JtRGVmaW5pdGlvblwiXG4gICAgICBbb3B0aW9uc109XCJvcHRpb25zJCB8IGFzeW5jXCJcbiAgICAgIChzdWJtaXQpPVwib25TdWJtaXQoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvdmFsdGltby1mb3JtLWlvPlxuICA8L2Rpdj5cbiAgPGRpdiBib2R5ICpuZ0lmPVwiZm9ybUZsb3dJbnN0YW5jZUlkJCB8IGFzeW5jIGFzIGZvcm1GbG93SW5zdGFuY2VJZFwiPlxuICAgIDx2YWx0aW1vLWZvcm0tZmxvd1xuICAgICAgI2Zvcm1GbG93XG4gICAgICBbZm9ybUZsb3dJbnN0YW5jZUlkXT1cImZvcm1GbG93SW5zdGFuY2VJZFwiXG4gICAgICAoZm9ybUZsb3dDb21wbGV0ZSk9XCJmb3JtU3VibWl0dGVkKClcIlxuICAgID48L3ZhbHRpbW8tZm9ybS1mbG93PlxuICA8L2Rpdj5cbiAgPGRpdiBib2R5PlxuICAgIDxuZy10ZW1wbGF0ZSAjZm9ybVZpZXdNb2RlbENvbXBvbmVudD48L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cblxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJ7XG4gICAgICBmb3JtRGVmaW5pdGlvbjogZm9ybURlZmluaXRpb24kIHwgYXN5bmMsXG4gICAgICBmb3JtRmxvd0luc3RhbmNlSWQ6IGZvcm1GbG93SW5zdGFuY2VJZCQgfCBhc3luYyxcbiAgICB9IGFzIG9ic1wiXG4gID5cbiAgICA8ZGl2IGJvZHkgKm5nSWY9XCIhb2JzLmZvcm1EZWZpbml0aW9uICYmICFvYnMuZm9ybUZsb3dJbnN0YW5jZUlkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYmctd2FybmluZyB0ZXh0LWJsYWNrIG1iLTAgcC0zIHRleHQtY2VudGVyXCI+XG4gICAgICAgIHt7XG4gICAgICAgICAgaXNBZG1pblxuICAgICAgICAgICAgPyAoJ2Zvcm1NYW5hZ2VtZW50Lm5vRm9ybURlZmluaXRpb25Gb3VuZEFkbWluJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgIDogKCdmb3JtTWFuYWdlbWVudC5ub0Zvcm1EZWZpbml0aW9uRm91bmRVc2VyJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTAgbXQtNCBwLTMgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgYnRuLXNwYWNlXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwiZ290b0Zvcm1MaW5rU2NyZWVuKClcIlxuICAgICAgICAgIGlkPVwiZm9ybS1saW5rLWJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnZm9ybU1hbmFnZW1lbnQuZ290b1Byb2Nlc3NMaW5rc0J1dHRvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L3ZhbHRpbW8tbW9kYWw+XG4iXX0=
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1zdXBwb3J0aW5nLXByb2Nlc3Mtc3RhcnQtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLXN1cHBvcnRpbmctcHJvY2Vzcy1zdGFydC1tb2RhbC9kb3NzaWVyLXN1cHBvcnRpbmctcHJvY2Vzcy1zdGFydC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItc3VwcG9ydGluZy1wcm9jZXNzLXN0YXJ0LW1vZGFsL2Rvc3NpZXItc3VwcG9ydGluZy1wcm9jZXNzLXN0YXJ0LW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFFTCxpQkFBaUIsR0FJbEIsTUFBTSxxQkFBcUIsQ0FBQztBQUc3QixPQUFPLEVBQ0wsMkJBQTJCLEdBSzVCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwQyxPQUFPLEVBQUMscUJBQXFCLEVBQWdCLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7O0FBUXJFLE1BQU0sT0FBTywyQ0FBMkM7SUE2QnRELFlBQ21CLE1BQWMsRUFDZCxjQUE4QixFQUM5QixrQkFBc0MsRUFDSyxhQUE0QixFQUd2RSx5QkFBb0Q7UUFOcEQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ0ssa0JBQWEsR0FBYixhQUFhLENBQWU7UUFHdkUsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQTNCN0QsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFaEMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDM0Isa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFYiwwQkFBcUIsR0FBRyxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUN4RCw0QkFBdUIsR0FBRyxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUMxRCxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQWEsU0FBUyxDQUFDLENBQUM7UUFDN0Qsc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQW1CLFNBQVMsQ0FBQyxDQUFDO1FBQ3JFLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDakQsYUFBUSxHQUFHLElBQUksZUFBZSxDQUF1QixTQUFTLENBQUMsQ0FBQztRQUNoRSxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFTLFNBQVMsQ0FBQyxDQUFDO1FBQ3JELHlCQUFvQixHQUFHLElBQUksZUFBZSxDQUFTLFNBQVMsQ0FBQyxDQUFDO1FBQzlELHdCQUFtQixHQUFHLElBQUksZUFBZSxDQUFTLFNBQVMsQ0FBQyxDQUFDO1FBQzdELGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQVMsU0FBUyxDQUFDLENBQUM7UUFDcEQsZ0NBQTJCLEdBQUcsSUFBSSxlQUFlLENBRWhFLEVBQUUsQ0FBQyxDQUFDO1FBV0osSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFTyxlQUFlO1FBQ3JCLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDekQsSUFBSSxDQUNILElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxTQUFTLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FDOUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQ0FBb0MsQ0FDdEQsbUJBQW1CLEVBQ25CLFVBQVUsRUFDVixJQUFJLENBQ0wsQ0FDRixDQUNGO2FBQ0EsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDOUIsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO2dCQUN2QixRQUFRLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO29CQUNoQyxLQUFLLE1BQU07d0JBQ1QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUN2RSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQzt3QkFDM0QsTUFBTTtvQkFDUixLQUFLLFdBQVc7d0JBQ2QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQzt3QkFDaEYsTUFBTTtvQkFDUixLQUFLLGlCQUFpQjt3QkFDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO3dCQUN4RSxJQUFJLENBQUMseUJBQXlCLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3dCQUN2RSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO3dCQUNsQixNQUFNO29CQUNSLEtBQUssY0FBYzt3QkFDakIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQzt3QkFDeEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7d0JBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQ2xCLE1BQU07Z0JBQ1YsQ0FBQztnQkFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxTQUFTLENBQUMseUJBQW9ELEVBQUUsVUFBa0I7UUFDdkYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUYsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNuRixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTlELE1BQU0sa0JBQWtCLEdBQXVCLFVBQVUsVUFBVSxFQUFFLFFBQVE7WUFDM0UsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUM7UUFFRixNQUFNLE9BQU8sR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDeEMsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDN0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRXJDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTVCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU0sUUFBUSxDQUFDLFVBQTRCO1FBQzFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFeEMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDbkMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQ25ELElBQUksQ0FDSCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUN4QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUMvRSxDQUNGO2lCQUNBLFNBQVMsQ0FBQztnQkFDVCxJQUFJLEVBQUUsQ0FBQyxvQkFBMEMsRUFBRSxFQUFFO29CQUNuRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3ZCLENBQUM7Z0JBQ0QsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFO29CQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMvQixDQUFDO2FBQ0YsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFTSxhQUFhO1FBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxlQUFlLENBQUMsRUFBRTtZQUN0QyxXQUFXLEVBQUUsRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxFQUFDO1NBQzlELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxRQUFnQjtRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUMxQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0MsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsNkJBQTZCLENBQUMsZUFBZSxDQUMvRSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FDN0IsQ0FBQztRQUVGLGFBQWEsQ0FBQztZQUNaLElBQUksQ0FBQyxlQUFlO1lBQ3BCLElBQUksQ0FBQyxxQkFBcUI7WUFDMUIsSUFBSSxDQUFDLHVCQUF1QjtZQUM1QixJQUFJLENBQUMsUUFBUTtZQUNiLElBQUksQ0FBQyxXQUFXO1NBQ2pCLENBQUM7YUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2IsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7WUFDdkYsc0JBQXNCLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDcEQsc0JBQXNCLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDNUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLG9CQUFvQixHQUFHLG9CQUFvQixDQUFDO1lBQzVFLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsR0FBRyxzQkFBc0IsQ0FBQztZQUNoRixzQkFBc0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztZQUNsRCxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUNuRCxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztRQUVMLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDdEUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVPLHNCQUFzQixDQUFDLHNCQUE4QjtRQUMzRCxJQUFJLENBQUMsbUNBQW1DLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUI7WUFBRSxPQUFPO1FBQzVDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLHlCQUF5QixDQUFDLEVBQUU7WUFDbkYsTUFBTSxlQUFlLEdBQUcseUJBQXlCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUMxRSxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxlQUFlLENBQ2hGLGVBQWUsQ0FDcUIsQ0FBQztZQUV2QyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7aUJBQ3RFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2IsU0FBUyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxzQkFBc0IsQ0FBQyxFQUFFLEVBQUU7Z0JBQzVELGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsR0FBRyxvQkFBb0IsQ0FBQztnQkFDdkUsaUJBQWlCLENBQUMsUUFBUSxDQUFDLHNCQUFzQixHQUFHLHNCQUFzQixDQUFDO1lBQzdFLENBQUMsQ0FBQyxDQUFDO1lBRUwsaUJBQWlCLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUN2RCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBMUxVLDJDQUEyQyx3R0FpQ2hDLHFCQUFxQiw2QkFFakMsMkJBQTJCO21HQW5DMUIsMkNBQTJDLHVjQUdJLGdCQUFnQixtSkFFbEIsZ0JBQWdCLDZCQzVEMUUsKytFQTBFQTs7NEZEbkJhLDJDQUEyQztrQkFOdkQsU0FBUzsrQkFDRSxnREFBZ0QsaUJBRzNDLGlCQUFpQixDQUFDLElBQUk7OzBCQW1DbEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxxQkFBcUI7OzBCQUN4QyxRQUFROzswQkFDUixNQUFNOzJCQUFDLDJCQUEyQjt5Q0FsQ0QsSUFBSTtzQkFBdkMsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDO2dCQUN5QixLQUFLO3NCQUEvRCxTQUFTO3VCQUFDLDZCQUE2QixFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztnQkFFbEQsNkJBQTZCO3NCQURuQyxTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUM7Z0JBR3BFLG1DQUFtQztzQkFEekMsU0FBUzt1QkFBQyxxQkFBcUIsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFDO2dCQUdoRSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbXBvbmVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtGb3JtaW9CZWZvcmVTdWJtaXQsIEZvcm1pb0Zvcm19IGZyb20gJ0Bmb3JtaW8vYW5ndWxhcic7XG5pbXBvcnQge1xuICBGb3JtaW9Db21wb25lbnQsXG4gIEZvcm1pb09wdGlvbnNJbXBsLFxuICBGb3JtaW9TdWJtaXNzaW9uLFxuICBNb2RhbENvbXBvbmVudCxcbiAgVmFsdGltb0Zvcm1pb09wdGlvbnMsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ufSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5pbXBvcnQge1Byb2Nlc3NTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9wcm9jZXNzJztcbmltcG9ydCB7XG4gIEZPUk1fQ1VTVE9NX0NPTVBPTkVOVF9UT0tFTixcbiAgRm9ybUN1c3RvbUNvbXBvbmVudCxcbiAgRm9ybUN1c3RvbUNvbXBvbmVudENvbmZpZyxcbiAgRm9ybVN1Ym1pc3Npb25SZXN1bHQsXG4gIFByb2Nlc3NMaW5rU2VydmljZSxcbn0gZnJvbSAnQHZhbHRpbW8vcHJvY2Vzcy1saW5rJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBzd2l0Y2hNYXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHt0YWtlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0ZPUk1fVklFV19NT0RFTF9UT0tFTiwgRm9ybVZpZXdNb2RlbH0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLXN1cHBvcnRpbmctcHJvY2Vzcy1zdGFydC1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLXN1cHBvcnRpbmctcHJvY2Vzcy1zdGFydC1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rvc3NpZXItc3VwcG9ydGluZy1wcm9jZXNzLXN0YXJ0LW1vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJTdXBwb3J0aW5nUHJvY2Vzc1N0YXJ0TW9kYWxDb21wb25lbnQge1xuICBAVmlld0NoaWxkKCdmb3JtJywge3N0YXRpYzogZmFsc2V9KSBmb3JtOiBGb3JtaW9Db21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ3N1cHBvcnRpbmdQcm9jZXNzU3RhcnRNb2RhbCcsIHtzdGF0aWM6IGZhbHNlfSkgbW9kYWw6IE1vZGFsQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdmb3JtVmlld01vZGVsQ29tcG9uZW50Jywge3N0YXRpYzogdHJ1ZSwgcmVhZDogVmlld0NvbnRhaW5lclJlZn0pXG4gIHB1YmxpYyBmb3JtVmlld01vZGVsRHluYW1pY0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcbiAgQFZpZXdDaGlsZCgnZm9ybUN1c3RvbUNvbXBvbmVudCcsIHtzdGF0aWM6IGZhbHNlLCByZWFkOiBWaWV3Q29udGFpbmVyUmVmfSlcbiAgcHVibGljIGZvcm1DdXN0b21Db21wb25lbnREeW5hbWljQ29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIEBJbnB1dCgpIGlzQWRtaW46IGJvb2xlYW47XG4gIEBPdXRwdXQoKSBmb3JtU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByb3RlY3RlZCBpc0Zvcm1WaWV3TW9kZWwgPSBmYWxzZTtcbiAgcHVibGljIGlzVUlDb21wb25lbnQgPSBmYWxzZTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcHJvY2Vzc0RlZmluaXRpb25LZXkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50RGVmaW5pdGlvbk5hbWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHVibGljIHJlYWRvbmx5IHByb2Nlc3NOYW1lJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHB1YmxpYyByZWFkb25seSBmb3JtRGVmaW5pdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZvcm1pb0Zvcm0+KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyByZWFkb25seSBmb3JtaW9TdWJtaXNzaW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Rm9ybWlvU3VibWlzc2lvbj4odW5kZWZpbmVkKTtcbiAgcHVibGljIHJlYWRvbmx5IHByb2Nlc3NMaW5rSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHVibGljIHJlYWRvbmx5IG9wdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxWYWx0aW1vRm9ybWlvT3B0aW9ucz4odW5kZWZpbmVkKTtcbiAgcHVibGljIHJlYWRvbmx5IHN1Ym1pc3Npb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxvYmplY3Q+KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyByZWFkb25seSBwcm9jZXNzRGVmaW5pdGlvbklkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPih1bmRlZmluZWQpO1xuICBwdWJsaWMgcmVhZG9ubHkgZm9ybUZsb3dJbnN0YW5jZUlkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPih1bmRlZmluZWQpO1xuICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnRJZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZm9ybUN1c3RvbUNvbXBvbmVudENvbmZpZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIEZvcm1DdXN0b21Db21wb25lbnRDb25maWcgfCB7fVxuICA+KHt9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvY2Vzc1NlcnZpY2U6IFByb2Nlc3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvY2Vzc0xpbmtTZXJ2aWNlOiBQcm9jZXNzTGlua1NlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChGT1JNX1ZJRVdfTU9ERUxfVE9LRU4pIHByaXZhdGUgcmVhZG9ubHkgZm9ybVZpZXdNb2RlbDogRm9ybVZpZXdNb2RlbCxcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoRk9STV9DVVNUT01fQ09NUE9ORU5UX1RPS0VOKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybUN1c3RvbUNvbXBvbmVudENvbmZpZzogRm9ybUN1c3RvbUNvbXBvbmVudENvbmZpZ1xuICApIHtcbiAgICB0aGlzLl9mb3JtQ3VzdG9tQ29tcG9uZW50Q29uZmlnJC5uZXh0KGZvcm1DdXN0b21Db21wb25lbnRDb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkUHJvY2Vzc0xpbmsoKTogdm9pZCB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5wcm9jZXNzRGVmaW5pdGlvbklkJCwgdGhpcy5kb2N1bWVudElkJF0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgc3dpdGNoTWFwKChbcHJvY2Vzc0RlZmluaXRpb25JZCwgZG9jdW1lbnRJZF0pID0+XG4gICAgICAgICAgdGhpcy5wcm9jZXNzU2VydmljZS5nZXRQcm9jZXNzRGVmaW5pdGlvblN0YXJ0UHJvY2Vzc0xpbmsoXG4gICAgICAgICAgICBwcm9jZXNzRGVmaW5pdGlvbklkLFxuICAgICAgICAgICAgZG9jdW1lbnRJZCxcbiAgICAgICAgICAgIG51bGxcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoc3RhcnRQcm9jZXNzUmVzdWx0ID0+IHtcbiAgICAgICAgaWYgKHN0YXJ0UHJvY2Vzc1Jlc3VsdCkge1xuICAgICAgICAgIHN3aXRjaCAoc3RhcnRQcm9jZXNzUmVzdWx0LnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Zvcm0nOlxuICAgICAgICAgICAgICB0aGlzLmZvcm1EZWZpbml0aW9uJC5uZXh0KHN0YXJ0UHJvY2Vzc1Jlc3VsdC5wcm9wZXJ0aWVzLnByZWZpbGxlZEZvcm0pO1xuICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NMaW5rSWQkLm5leHQoc3RhcnRQcm9jZXNzUmVzdWx0LnByb2Nlc3NMaW5rSWQpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2Zvcm0tZmxvdyc6XG4gICAgICAgICAgICAgIHRoaXMuZm9ybUZsb3dJbnN0YW5jZUlkJC5uZXh0KHN0YXJ0UHJvY2Vzc1Jlc3VsdC5wcm9wZXJ0aWVzLmZvcm1GbG93SW5zdGFuY2VJZCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZm9ybS12aWV3LW1vZGVsJzpcbiAgICAgICAgICAgICAgdGhpcy5mb3JtRGVmaW5pdGlvbiQubmV4dChzdGFydFByb2Nlc3NSZXN1bHQucHJvcGVydGllcy5mb3JtRGVmaW5pdGlvbik7XG4gICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybVZpZXdNb2RlbENvbXBvbmVudChzdGFydFByb2Nlc3NSZXN1bHQucHJvcGVydGllcy5mb3JtTmFtZSk7XG4gICAgICAgICAgICAgIHRoaXMubW9kYWwuc2hvdygpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3VpLWNvbXBvbmVudCc6XG4gICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUN1c3RvbUNvbXBvbmVudChzdGFydFByb2Nlc3NSZXN1bHQucHJvcGVydGllcy5jb21wb25lbnRLZXkpO1xuICAgICAgICAgICAgICB0aGlzLmlzVUlDb21wb25lbnQgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLm1vZGFsLnNob3coKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubW9kYWwuc2hvdygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuTW9kYWwocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbjogUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbiwgZG9jdW1lbnRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kb2N1bWVudElkJC5uZXh0KGRvY3VtZW50SWQpO1xuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQubmV4dChwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLmlkLmRvY3VtZW50RGVmaW5pdGlvbklkLm5hbWUpO1xuICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXkkLm5leHQocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbi5pZC5wcm9jZXNzRGVmaW5pdGlvbktleSk7XG4gICAgdGhpcy5wcm9jZXNzRGVmaW5pdGlvbklkJC5uZXh0KHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24ubGF0ZXN0VmVyc2lvbklkKTtcbiAgICB0aGlzLnByb2Nlc3NOYW1lJC5uZXh0KHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24ucHJvY2Vzc05hbWUpO1xuXG4gICAgY29uc3QgZm9ybWlvQmVmb3JlU3VibWl0OiBGb3JtaW9CZWZvcmVTdWJtaXQgPSBmdW5jdGlvbiAoc3VibWlzc2lvbiwgY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrKG51bGwsIHN1Ym1pc3Npb24pO1xuICAgIH07XG5cbiAgICBjb25zdCBvcHRpb25zID0gbmV3IEZvcm1pb09wdGlvbnNJbXBsKCk7XG4gICAgb3B0aW9ucy5kaXNhYmxlQWxlcnRzID0gdHJ1ZTtcbiAgICBvcHRpb25zLnNldEhvb2tzKGZvcm1pb0JlZm9yZVN1Ym1pdCk7XG5cbiAgICB0aGlzLm9wdGlvbnMkLm5leHQob3B0aW9ucyk7XG5cbiAgICB0aGlzLmxvYWRQcm9jZXNzTGluaygpO1xuICB9XG5cbiAgcHVibGljIG9uU3VibWl0KHN1Ym1pc3Npb246IEZvcm1pb1N1Ym1pc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1pb1N1Ym1pc3Npb24kLm5leHQoc3VibWlzc2lvbik7XG5cbiAgICBpZiAodGhpcy5wcm9jZXNzTGlua0lkJC5nZXRWYWx1ZSgpKSB7XG4gICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnByb2Nlc3NMaW5rSWQkLCB0aGlzLmRvY3VtZW50SWQkXSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICBzd2l0Y2hNYXAoKFtwcm9jZXNzTGlua0lkLCBkb2N1bWVudElkXSkgPT5cbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc0xpbmtTZXJ2aWNlLnN1Ym1pdEZvcm0ocHJvY2Vzc0xpbmtJZCwgc3VibWlzc2lvbi5kYXRhLCBkb2N1bWVudElkKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoZm9ybVN1Ym1pc3Npb25SZXN1bHQ6IEZvcm1TdWJtaXNzaW9uUmVzdWx0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvcm1TdWJtaXR0ZWQoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiBlcnJvcnMgPT4ge1xuICAgICAgICAgICAgdGhpcy5mb3JtLnNob3dFcnJvcnMoZXJyb3JzKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9ybVN1Ym1pdHRlZCgpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsLmhpZGUoKTtcbiAgICB0aGlzLmZvcm1TdWJtaXQuZW1pdCgpO1xuICAgIHRoaXMuZm9ybURlZmluaXRpb24kLm5leHQobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgZ290b0Zvcm1MaW5rU2NyZWVuKCk6IHZvaWQge1xuICAgIHRoaXMubW9kYWwuaGlkZSgpO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsncHJvY2Vzcy1saW5rcyddLCB7XG4gICAgICBxdWVyeVBhcmFtczoge3Byb2Nlc3M6IHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXkkLmdldFZhbHVlKCl9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRGb3JtVmlld01vZGVsQ29tcG9uZW50KGZvcm1OYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZm9ybVZpZXdNb2RlbC5jb21wb25lbnQpIHJldHVybjtcbiAgICB0aGlzLmZvcm1WaWV3TW9kZWxEeW5hbWljQ29udGFpbmVyLmNsZWFyKCk7XG4gICAgY29uc3QgZm9ybVZpZXdNb2RlbENvbXBvbmVudCA9IHRoaXMuZm9ybVZpZXdNb2RlbER5bmFtaWNDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KFxuICAgICAgdGhpcy5mb3JtVmlld01vZGVsLmNvbXBvbmVudFxuICAgICk7XG5cbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZm9ybURlZmluaXRpb24kLFxuICAgICAgdGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleSQsXG4gICAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLFxuICAgICAgdGhpcy5vcHRpb25zJCxcbiAgICAgIHRoaXMuZG9jdW1lbnRJZCQsXG4gICAgXSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChbZm9ybSwgcHJvY2Vzc0RlZmluaXRpb25LZXksIGRvY3VtZW50RGVmaW5pdGlvbk5hbWUsIG9wdGlvbnMsIGRvY3VtZW50SWRdKSA9PiB7XG4gICAgICAgIGZvcm1WaWV3TW9kZWxDb21wb25lbnQuaW5zdGFuY2UuZm9ybU5hbWUgPSBmb3JtTmFtZTtcbiAgICAgICAgZm9ybVZpZXdNb2RlbENvbXBvbmVudC5pbnN0YW5jZS5mb3JtID0gZm9ybTtcbiAgICAgICAgZm9ybVZpZXdNb2RlbENvbXBvbmVudC5pbnN0YW5jZS5wcm9jZXNzRGVmaW5pdGlvbktleSA9IHByb2Nlc3NEZWZpbml0aW9uS2V5O1xuICAgICAgICBmb3JtVmlld01vZGVsQ29tcG9uZW50Lmluc3RhbmNlLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPSBkb2N1bWVudERlZmluaXRpb25OYW1lO1xuICAgICAgICBmb3JtVmlld01vZGVsQ29tcG9uZW50Lmluc3RhbmNlLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICBmb3JtVmlld01vZGVsQ29tcG9uZW50Lmluc3RhbmNlLmlzU3RhcnRGb3JtID0gdHJ1ZTtcbiAgICAgICAgZm9ybVZpZXdNb2RlbENvbXBvbmVudC5pbnN0YW5jZS5kb2N1bWVudElkID0gZG9jdW1lbnRJZDtcbiAgICAgIH0pO1xuXG4gICAgZm9ybVZpZXdNb2RlbENvbXBvbmVudC5pbnN0YW5jZS5mb3JtU3VibWl0LnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZm9ybVN1Ym1pdHRlZCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5pc0Zvcm1WaWV3TW9kZWwgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRGb3JtQ3VzdG9tQ29tcG9uZW50KGZvcm1DdXN0b21Db21wb25lbnRLZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUN1c3RvbUNvbXBvbmVudER5bmFtaWNDb250YWluZXIuY2xlYXIoKTtcbiAgICBpZiAoIXRoaXMuZm9ybUN1c3RvbUNvbXBvbmVudENvbmZpZykgcmV0dXJuO1xuICAgIHRoaXMuX2Zvcm1DdXN0b21Db21wb25lbnRDb25maWckLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGZvcm1DdXN0b21Db21wb25lbnRDb25maWcgPT4ge1xuICAgICAgY29uc3QgY3VzdG9tQ29tcG9uZW50ID0gZm9ybUN1c3RvbUNvbXBvbmVudENvbmZpZ1tmb3JtQ3VzdG9tQ29tcG9uZW50S2V5XTtcbiAgICAgIGNvbnN0IHJlbmRlcmVkQ29tcG9uZW50ID0gdGhpcy5mb3JtQ3VzdG9tQ29tcG9uZW50RHluYW1pY0NvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoXG4gICAgICAgIGN1c3RvbUNvbXBvbmVudFxuICAgICAgKSBhcyBDb21wb25lbnRSZWY8Rm9ybUN1c3RvbUNvbXBvbmVudD47XG5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMucHJvY2Vzc0RlZmluaXRpb25LZXkkLCB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkXSlcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZSgoW3Byb2Nlc3NEZWZpbml0aW9uS2V5LCBkb2N1bWVudERlZmluaXRpb25OYW1lXSkgPT4ge1xuICAgICAgICAgIHJlbmRlcmVkQ29tcG9uZW50Lmluc3RhbmNlLnByb2Nlc3NEZWZpbml0aW9uS2V5ID0gcHJvY2Vzc0RlZmluaXRpb25LZXk7XG4gICAgICAgICAgcmVuZGVyZWRDb21wb25lbnQuaW5zdGFuY2UuZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9IGRvY3VtZW50RGVmaW5pdGlvbk5hbWU7XG4gICAgICAgIH0pO1xuXG4gICAgICByZW5kZXJlZENvbXBvbmVudC5pbnN0YW5jZS5zdWJtaXR0ZWRFdmVudC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmZvcm1TdWJtaXR0ZWQoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjx2YWx0aW1vLW1vZGFsXG4gICNzdXBwb3J0aW5nUHJvY2Vzc1N0YXJ0TW9kYWxcbiAgZWxlbWVudElkPVwic3VwcG9ydGluZ1Byb2Nlc3NTdGFydE1vZGFsXCJcbiAgW3RpdGxlXT1cIlxuICAgIChwcm9jZXNzRGVmaW5pdGlvbktleSQgfCBhc3luYyB8IHRyYW5zbGF0ZSkgIT09IChwcm9jZXNzRGVmaW5pdGlvbktleSQgfCBhc3luYylcbiAgICAgID8gKHByb2Nlc3NEZWZpbml0aW9uS2V5JCB8IGFzeW5jIHwgdHJhbnNsYXRlKVxuICAgICAgOiAocHJvY2Vzc05hbWUkIHwgYXN5bmMpXG4gIFwiXG4+XG4gIDxkaXYgYm9keSAqbmdJZj1cIiFpc0Zvcm1WaWV3TW9kZWwgJiYgZm9ybURlZmluaXRpb24kIHwgYXN5bmMgYXMgZm9ybURlZmluaXRpb25cIj5cbiAgICA8dmFsdGltby1mb3JtLWlvXG4gICAgICAjZm9ybVxuICAgICAgW3N1Ym1pc3Npb25dPVwic3VibWlzc2lvbiQgfCBhc3luY1wiXG4gICAgICBbZm9ybV09XCJmb3JtRGVmaW5pdGlvblwiXG4gICAgICBbb3B0aW9uc109XCJvcHRpb25zJCB8IGFzeW5jXCJcbiAgICAgIChzdWJtaXQpPVwib25TdWJtaXQoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvdmFsdGltby1mb3JtLWlvPlxuICA8L2Rpdj5cbiAgPGRpdiBib2R5ICpuZ0lmPVwiZm9ybUZsb3dJbnN0YW5jZUlkJCB8IGFzeW5jIGFzIGZvcm1GbG93SW5zdGFuY2VJZFwiPlxuICAgIDx2YWx0aW1vLWZvcm0tZmxvd1xuICAgICAgI2Zvcm1GbG93XG4gICAgICBbZm9ybUZsb3dJbnN0YW5jZUlkXT1cImZvcm1GbG93SW5zdGFuY2VJZFwiXG4gICAgICAoZm9ybUZsb3dDb21wbGV0ZSk9XCJmb3JtU3VibWl0dGVkKClcIlxuICAgID48L3ZhbHRpbW8tZm9ybS1mbG93PlxuICA8L2Rpdj5cbiAgPGRpdiBib2R5PlxuICAgIDxuZy10ZW1wbGF0ZSAjZm9ybVZpZXdNb2RlbENvbXBvbmVudD48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjZm9ybUN1c3RvbUNvbXBvbmVudD48L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cblxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJ7XG4gICAgICBmb3JtRGVmaW5pdGlvbjogZm9ybURlZmluaXRpb24kIHwgYXN5bmMsXG4gICAgICBmb3JtRmxvd0luc3RhbmNlSWQ6IGZvcm1GbG93SW5zdGFuY2VJZCQgfCBhc3luYyxcbiAgICB9IGFzIG9ic1wiXG4gID5cbiAgICA8ZGl2IGJvZHkgKm5nSWY9XCIhb2JzLmZvcm1EZWZpbml0aW9uICYmICFvYnMuZm9ybUZsb3dJbnN0YW5jZUlkICYmICFpc1VJQ29tcG9uZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYmctd2FybmluZyB0ZXh0LWJsYWNrIG1iLTAgcC0zIHRleHQtY2VudGVyXCI+XG4gICAgICAgIHt7XG4gICAgICAgICAgaXNBZG1pblxuICAgICAgICAgICAgPyAoJ2Zvcm1NYW5hZ2VtZW50Lm5vRm9ybURlZmluaXRpb25Gb3VuZEFkbWluJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgIDogKCdmb3JtTWFuYWdlbWVudC5ub0Zvcm1EZWZpbml0aW9uRm91bmRVc2VyJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTAgbXQtNCBwLTMgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgYnRuLXNwYWNlXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwiZ290b0Zvcm1MaW5rU2NyZWVuKClcIlxuICAgICAgICAgIGlkPVwiZm9ybS1saW5rLWJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnZm9ybU1hbmFnZW1lbnQuZ290b1Byb2Nlc3NMaW5rc0J1dHRvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L3ZhbHRpbW8tbW9kYWw+XG4iXX0=
|
|
@@ -9,5 +9,10 @@ const DOSSIER_DETAIL_RIGHT_PANEL_MIN_WIDTHS = {
|
|
|
9
9
|
};
|
|
10
10
|
const DOSSIER_DETAIL_DEFAULT_DISPLAY_TYPE = 'modal';
|
|
11
11
|
const DOSSIER_DETAIL_DEFAULT_DISPLAY_SIZE = 'medium';
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
const DOSSIER_DETAIL_START_PROCESS_DROPDOWN_WIDTH = {
|
|
13
|
+
small: 250,
|
|
14
|
+
medium: 350,
|
|
15
|
+
large: 450,
|
|
16
|
+
};
|
|
17
|
+
export { DOSSIER_DETAIL_GUTTER_SIZE, DOSSIER_DETAIL_LEFT_PANEL_MIN_WIDTH, DOSSIER_DETAIL_RIGHT_PANEL_MIN_WIDTHS, DOSSIER_DETAIL_TASK_LIST_WIDTH, DOSSIER_DETAIL_DEFAULT_DISPLAY_TYPE, DOSSIER_DETAIL_DEFAULT_DISPLAY_SIZE, DOSSIER_DETAIL_START_PROCESS_DROPDOWN_WIDTH, };
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1kZXRhaWwtbGF5b3V0LmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2NvbnN0YW50cy9kb3NzaWVyLWRldGFpbC1sYXlvdXQuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sMEJBQTBCLEdBQUcsRUFBRSxDQUFDO0FBRXRDLE1BQU0sOEJBQThCLEdBQUcsR0FBRyxDQUFDO0FBRTNDLE1BQU0sbUNBQW1DLEdBQUcsR0FBRyxDQUFDO0FBRWhELE1BQU0scUNBQXFDLEdBQXdCO0lBQ2pFLFVBQVUsRUFBRSxHQUFHO0lBQ2YsS0FBSyxFQUFFLEdBQUc7SUFDVixNQUFNLEVBQUUsR0FBRztJQUNYLEtBQUssRUFBRSxHQUFHO0NBQ1gsQ0FBQztBQUVGLE1BQU0sbUNBQW1DLEdBQW9CLE9BQU8sQ0FBQztBQUNyRSxNQUFNLG1DQUFtQyxHQUFhLFFBQVEsQ0FBQztBQUUvRCxNQUFNLDJDQUEyQyxHQUFHO0lBQ2xELEtBQUssRUFBRSxHQUFHO0lBQ1YsTUFBTSxFQUFFLEdBQUc7SUFDWCxLQUFLLEVBQUUsR0FBRztDQUNYLENBQUM7QUFFRixPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLG1DQUFtQyxFQUNuQyxxQ0FBcUMsRUFDckMsOEJBQThCLEVBQzlCLG1DQUFtQyxFQUNuQyxtQ0FBbUMsRUFDbkMsMkNBQTJDLEdBQzVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Zvcm1EaXNwbGF5VHlwZSwgRm9ybVNpemV9IGZyb20gJ0B2YWx0aW1vL3Byb2Nlc3MtbGluayc7XG5pbXBvcnQge1JpZ2h0UGFuZWxNaW5XaWR0aHN9IGZyb20gJy4uL21vZGVscyc7XG5cbmNvbnN0IERPU1NJRVJfREVUQUlMX0dVVFRFUl9TSVpFID0gMzI7XG5cbmNvbnN0IERPU1NJRVJfREVUQUlMX1RBU0tfTElTVF9XSURUSCA9IDQxMjtcblxuY29uc3QgRE9TU0lFUl9ERVRBSUxfTEVGVF9QQU5FTF9NSU5fV0lEVEggPSAzMjA7XG5cbmNvbnN0IERPU1NJRVJfREVUQUlMX1JJR0hUX1BBTkVMX01JTl9XSURUSFM6IFJpZ2h0UGFuZWxNaW5XaWR0aHMgPSB7XG4gIGV4dHJhU21hbGw6IDI0MCxcbiAgc21hbGw6IDMyMCxcbiAgbWVkaXVtOiA0ODAsXG4gIGxhcmdlOiA2NDAsXG59O1xuXG5jb25zdCBET1NTSUVSX0RFVEFJTF9ERUZBVUxUX0RJU1BMQVlfVFlQRTogRm9ybURpc3BsYXlUeXBlID0gJ21vZGFsJztcbmNvbnN0IERPU1NJRVJfREVUQUlMX0RFRkFVTFRfRElTUExBWV9TSVpFOiBGb3JtU2l6ZSA9ICdtZWRpdW0nO1xuXG5jb25zdCBET1NTSUVSX0RFVEFJTF9TVEFSVF9QUk9DRVNTX0RST1BET1dOX1dJRFRIID0ge1xuICBzbWFsbDogMjUwLFxuICBtZWRpdW06IDM1MCxcbiAgbGFyZ2U6IDQ1MCxcbn07XG5cbmV4cG9ydCB7XG4gIERPU1NJRVJfREVUQUlMX0dVVFRFUl9TSVpFLFxuICBET1NTSUVSX0RFVEFJTF9MRUZUX1BBTkVMX01JTl9XSURUSCxcbiAgRE9TU0lFUl9ERVRBSUxfUklHSFRfUEFORUxfTUlOX1dJRFRIUyxcbiAgRE9TU0lFUl9ERVRBSUxfVEFTS19MSVNUX1dJRFRILFxuICBET1NTSUVSX0RFVEFJTF9ERUZBVUxUX0RJU1BMQVlfVFlQRSxcbiAgRE9TU0lFUl9ERVRBSUxfREVGQVVMVF9ESVNQTEFZX1NJWkUsXG4gIERPU1NJRVJfREVUQUlMX1NUQVJUX1BST0NFU1NfRFJPUERPV05fV0lEVEgsXG59O1xuIl19
|
|
@@ -14,4 +14,4 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
export {};
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS13aWRnZXQtY29udGVudC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL21vZGVscy9jYXNlLXdpZGdldC1jb250ZW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDYXNlV2lkZ2V0RGlzcGxheVR5cGV9IGZyb20gJy4vY2FzZS13aWRnZXQtZGlzcGxheS5tb2RlbCc7XG5pbXBvcnQge0ZpZWxkc0Nhc2VXaWRnZXRWYWx1ZX0gZnJvbSAnLi9jYXNlLXdpZGdldC5tb2RlbCc7XG5cbmludGVyZmFjZSBXaWRnZXRGaWVsZHNDb250ZW50IHtcbiAgY29sdW1uczogRmllbGRzQ2FzZVdpZGdldFZhbHVlW11bXTtcbn1cblxudHlwZSBDb2xsZWN0aW9uQ2FzZVdpZGdldEZpZWxkV2lkdGggPSAnZnVsbCcgfCAnaGFsZic7XG5cbmludGVyZmFjZSBDb2xsZWN0aW9uQ2FzZVdpZGdldEZpZWxkIHtcbiAga2V5OiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIHdpZHRoOiBDb2xsZWN0aW9uQ2FzZVdpZGdldEZpZWxkV2lkdGg7XG4gIGRpc3BsYXlQcm9wZXJ0aWVzPzogQ2FzZVdpZGdldERpc3BsYXlUeXBlO1xufVxuXG5pbnRlcmZhY2UgQ29sbGVjdGlvbkNhc2VXaWRnZXRUaXRsZSB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGRpc3BsYXlQcm9wZXJ0aWVzPzogQ2FzZVdpZGdldERpc3BsYXlUeXBlO1xufVxuXG5pbnRlcmZhY2UgV2lkZ2V0Q29sbGVjdGlvbkNvbnRlbnQge1xuICBjb2xsZWN0aW9uOiBzdHJpbmc7XG4gIGRlZmF1bHRQYWdlU2l6ZTogbnVtYmVyO1xuICB0aXRsZTogQ29sbGVjdGlvbkNhc2VXaWRnZXRUaXRsZTtcbiAgZmllbGRzOiBDb2xsZWN0aW9uQ2FzZVdpZGdldEZpZWxkW107XG59XG5cbmludGVyZmFjZSBDb2xsZWN0aW9uV2lkZ2V0UmVzb2x2ZWRGaWVsZCB7XG4gIGtleTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICB3aWR0aDogQ29sbGVjdGlvbkNhc2VXaWRnZXRGaWVsZFdpZHRoO1xuICBoaWRlV2hlbkVtcHR5OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQ29sbGVjdGlvbkNhc2VXaWRnZXRDYXJkRGF0YSB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGZpZWxkczoge1trZXk6IHN0cmluZ106IHN0cmluZ307XG4gIGhpZGRlbj86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBXaWRnZXRUYWJsZUNvbnRlbnQge1xuICBjb2x1bW5zOiBGaWVsZHNDYXNlV2lkZ2V0VmFsdWVbXTtcbiAgY29sbGVjdGlvbjogc3RyaW5nO1xuICBmaXJzdENvbHVtbkFzVGl0bGU6IGJvb2xlYW47XG4gIGRlZmF1bHRQYWdlU2l6ZTogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgV2lkZ2V0Q3VzdG9tQ29udGVudCB7XG4gIGNvbXBvbmVudEtleTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgV2lkZ2V0Rm9ybWlvQ29udGVudCB7XG4gIGZvcm1EZWZpbml0aW9uTmFtZTogc3RyaW5nO1xufVxuXG50eXBlIFdpZGdldENvbnRlbnRQcm9wZXJ0aWVzID1cbiAgfCBXaWRnZXRGaWVsZHNDb250ZW50XG4gIHwgV2lkZ2V0VGFibGVDb250ZW50XG4gIHwgV2lkZ2V0Q3VzdG9tQ29udGVudFxuICB8IFdpZGdldEZvcm1pb0NvbnRlbnRcbiAgfCBXaWRnZXRDb2xsZWN0aW9uQ29udGVudDtcblxuZXhwb3J0IHtcbiAgV2lkZ2V0Q29udGVudFByb3BlcnRpZXMsXG4gIFdpZGdldEN1c3RvbUNvbnRlbnQsXG4gIFdpZGdldEZpZWxkc0NvbnRlbnQsXG4gIFdpZGdldEZvcm1pb0NvbnRlbnQsXG4gIFdpZGdldFRhYmxlQ29udGVudCxcbiAgV2lkZ2V0Q29sbGVjdGlvbkNvbnRlbnQsXG4gIENvbGxlY3Rpb25DYXNlV2lkZ2V0RmllbGQsXG4gIENvbGxlY3Rpb25DYXNlV2lkZ2V0RmllbGRXaWR0aCxcbiAgQ29sbGVjdGlvbldpZGdldFJlc29sdmVkRmllbGQsXG4gIENvbGxlY3Rpb25DYXNlV2lkZ2V0VGl0bGUsXG4gIENvbGxlY3Rpb25DYXNlV2lkZ2V0Q2FyZERhdGEsXG59O1xuIl19
|
|
@@ -10,4 +10,4 @@ var CaseWidgetDisplayTypeKey;
|
|
|
10
10
|
CaseWidgetDisplayTypeKey["PERCENT"] = "percent";
|
|
11
11
|
})(CaseWidgetDisplayTypeKey || (CaseWidgetDisplayTypeKey = {}));
|
|
12
12
|
export { CaseWidgetDisplayTypeKey, };
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS13aWRnZXQtZGlzcGxheS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL21vZGVscy9jYXNlLXdpZGdldC1kaXNwbGF5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQUssd0JBU0o7QUFURCxXQUFLLHdCQUF3QjtJQUMzQix5Q0FBYSxDQUFBO0lBQ2IsK0NBQW1CLENBQUE7SUFDbkIsaURBQXFCLENBQUE7SUFDckIseUNBQWEsQ0FBQTtJQUNiLGtEQUFzQixDQUFBO0lBQ3RCLHlDQUFhLENBQUE7SUFDYiw2Q0FBaUIsQ0FBQTtJQUNqQiwrQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBVEksd0JBQXdCLEtBQXhCLHdCQUF3QixRQVM1QjtBQStERCxPQUFPLEVBTUwsd0JBQXdCLEdBS3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJlbnVtIENhc2VXaWRnZXREaXNwbGF5VHlwZUtleSB7XG4gIFRFWFQgPSAndGV4dCcsXG4gIEJPT0xFQU4gPSAnYm9vbGVhbicsXG4gIENVUlJFTkNZID0gJ2N1cnJlbmN5JyxcbiAgREFURSA9ICdkYXRlJyxcbiAgREFURV9USU1FID0gJ2RhdGV0aW1lJyxcbiAgRU5VTSA9ICdlbnVtJyxcbiAgTlVNQkVSID0gJ251bWJlcicsXG4gIFBFUkNFTlQgPSAncGVyY2VudCcsXG59XG5cbmludGVyZmFjZSBDYXNlV2lkZ2V0VGV4dERpc3BsYXlUeXBlIHtcbiAgdHlwZTogQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5LlRFWFQ7XG4gIGVsbGlwc2lzQ2hhcmFjdGVyTGltaXQ6IG51bWJlcjtcbiAgaGlkZVdoZW5FbXB0eTogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIENhc2VXaWRnZXRCb29sZWFuRGlzcGxheVR5cGUge1xuICB0eXBlOiBDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuQk9PTEVBTjtcbiAgaGlkZVdoZW5FbXB0eTogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIENhc2VXaWRnZXRDdXJyZW5jeURpc3BsYXlUeXBlIHtcbiAgdHlwZTogQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5LkNVUlJFTkNZO1xuICBjdXJyZW5jeUNvZGU/OiBzdHJpbmc7XG4gIGRpc3BsYXk/OiBzdHJpbmc7XG4gIGRpZ2l0c0luZm8/OiBzdHJpbmc7XG4gIGhpZGVXaGVuRW1wdHk6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBDYXNlV2lkZ2V0RGF0ZURpc3BsYXlUeXBlIHtcbiAgdHlwZTogQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5LkRBVEU7XG4gIGZvcm1hdD86IHN0cmluZztcbiAgaGlkZVdoZW5FbXB0eTogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIENhc2VXaWRnZXREYXRlVGltZURpc3BsYXlUeXBlIHtcbiAgdHlwZTogQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5LkRBVEVfVElNRTtcbiAgZm9ybWF0Pzogc3RyaW5nO1xuICBoaWRlV2hlbkVtcHR5OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQ2FzZVdpZGdldEVudW1EaXNwbGF5VHlwZSB7XG4gIHR5cGU6IENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5FTlVNO1xuICB2YWx1ZXM6IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gIH07XG4gIGhpZGVXaGVuRW1wdHk6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBDYXNlV2lkZ2V0TnVtYmVyRGlzcGxheVR5cGUge1xuICB0eXBlOiBDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuTlVNQkVSO1xuICBkaWdpdHNJbmZvPzogc3RyaW5nO1xuICBoaWRlV2hlbkVtcHR5OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQ2FzZVdpZGdldFBlcmNlbnREaXNwbGF5VHlwZSB7XG4gIHR5cGU6IENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5QRVJDRU5UO1xuICBkaWdpdHNJbmZvPzogc3RyaW5nO1xuICBoaWRlV2hlbkVtcHR5OiBib29sZWFuO1xufVxuXG50eXBlIENhc2VXaWRnZXREaXNwbGF5VHlwZSA9XG4gIHwgQ2FzZVdpZGdldFRleHREaXNwbGF5VHlwZVxuICB8IENhc2VXaWRnZXRCb29sZWFuRGlzcGxheVR5cGVcbiAgfCBDYXNlV2lkZ2V0Q3VycmVuY3lEaXNwbGF5VHlwZVxuICB8IENhc2VXaWRnZXREYXRlRGlzcGxheVR5cGVcbiAgfCBDYXNlV2lkZ2V0RGF0ZVRpbWVEaXNwbGF5VHlwZVxuICB8IENhc2VXaWRnZXRFbnVtRGlzcGxheVR5cGVcbiAgfCBDYXNlV2lkZ2V0TnVtYmVyRGlzcGxheVR5cGVcbiAgfCBDYXNlV2lkZ2V0UGVyY2VudERpc3BsYXlUeXBlO1xuXG5leHBvcnQge1xuICBDYXNlV2lkZ2V0Qm9vbGVhbkRpc3BsYXlUeXBlLFxuICBDYXNlV2lkZ2V0Q3VycmVuY3lEaXNwbGF5VHlwZSxcbiAgQ2FzZVdpZGdldERhdGVEaXNwbGF5VHlwZSxcbiAgQ2FzZVdpZGdldERhdGVUaW1lRGlzcGxheVR5cGUsXG4gIENhc2VXaWRnZXREaXNwbGF5VHlwZSxcbiAgQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5LFxuICBDYXNlV2lkZ2V0RW51bURpc3BsYXlUeXBlLFxuICBDYXNlV2lkZ2V0TnVtYmVyRGlzcGxheVR5cGUsXG4gIENhc2VXaWRnZXRQZXJjZW50RGlzcGxheVR5cGUsXG4gIENhc2VXaWRnZXRUZXh0RGlzcGxheVR5cGUsXG59O1xuIl19
|