@valtimo/dossier-management 12.1.0 → 12.1.2
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-management-assignee/dossier-management-assignee.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-connect-modal/dossier-management-connect-modal.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-create/dossier-management-create.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-detail/dossier-management-detail.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-detail-container-actions/dossier-management-detail-container-actions.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-document-definition/dossier-management-document-definition.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-list/dossier-management-list.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-processes/dossier-management-processes.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-remove-modal/dossier-management-remove-modal.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-statuses/dossier-management-status-modal/dossier-management-status-modal.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-statuses/dossier-management-statuses.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-tabs/dossier-management-edit-tab-modal/dossier-management-edit-tab-modal.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-tabs/dossier-management-tabs.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-tabs/tab-form/tab-form.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-upload/dossier-management-upload.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-upload/step/dossier-management-upload-step.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-widget-configurators/collection/dossier-management-widget-collection.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-widget-configurators/custom/dossier-management-widget-custom.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-widget-configurators/fields/column/dossier-management-widget-fields-column.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-widget-configurators/fields/dossier-management-widget-fields.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-widget-configurators/formio/dossier-management-widget-formio.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-widget-configurators/table/dossier-management-widget-table.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-widget-tab/dossier-management-widget-tab.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-widget-tab/editor/dossier-management-widgets-editor.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-widget-tab/json-editor/dossier-management-widgets-json-editor.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-widget-tab-edit-modal/dossier-management-widget-tab-edit-modal.mjs +4 -4
- package/esm2022/lib/components/dossier-management-widget-wizard/dossier-management-widget-wizard.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-widget-wizard/steps/widget-wizard-content-step/widget-wizard-content-step.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-widget-wizard/steps/widget-wizard-style-step/widget-wizard-style-step.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-widget-wizard/steps/widget-wizard-type-step/widget-wizard-type-step.component.mjs +4 -4
- package/esm2022/lib/components/dossier-management-widget-wizard/steps/widget-wizard-width-step/widget-wizard-width-step.component.mjs +4 -4
- package/esm2022/lib/dossier-management-routing.module.mjs +5 -5
- package/esm2022/lib/dossier-management.module.mjs +5 -5
- package/esm2022/lib/services/dossier-detail.service.mjs +4 -4
- package/esm2022/lib/services/dossier-export.service.mjs +4 -4
- package/esm2022/lib/services/dossier-management.service.mjs +4 -4
- package/esm2022/lib/services/tab-management.service.mjs +4 -4
- package/esm2022/lib/services/tab.service.mjs +4 -4
- package/esm2022/lib/services/widget-fields.service.mjs +4 -4
- package/esm2022/lib/services/widget-json-editor.service.mjs +4 -4
- package/esm2022/lib/services/widget-tab-management.service.mjs +4 -4
- package/esm2022/lib/services/widget-wizard.service.mjs +4 -4
- package/fesm2022/valtimo-dossier-management.mjs +140 -140
- package/fesm2022/valtimo-dossier-management.mjs.map +1 -1
- package/package.json +1 -1
package/esm2022/lib/components/dossier-management-upload/dossier-management-upload.component.mjs
CHANGED
|
@@ -200,10 +200,10 @@ export class DossierManagementUploadComponent {
|
|
|
200
200
|
this.showCheckboxError$.next(false);
|
|
201
201
|
}, CARBON_CONSTANTS.modalAnimationMs);
|
|
202
202
|
}
|
|
203
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
204
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: DossierManagementUploadComponent, selector: "valtimo-dossier-management-upload", inputs: { open: "open" }, outputs: { closeModal: "closeModal" }, 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<cds-modal\n *ngIf=\"{\n activeStep: activeStep$ | async,\n backButtonEnabled: backButtonEnabled$ | async,\n isStepAfterUpload: isStepAfterUpload$ | async,\n nextButtonDisabled: nextButtonDisabled$ | async,\n notificationObj: notificationObj$ | async,\n showCheckboxError: showCheckboxError$ | async,\n showCloseButton: showCloseButton$ | async,\n uploadStatus: uploadStatus$ | async\n } as obs\"\n valtimoCdsModal\n [open]=\"open\"\n showFooter=\"true\"\n class=\"valtimo-definition-uploader\"\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header\n [showCloseButton]=\"obs.showCloseButton\"\n (closeSelect)=\"onCloseModal(obs.isStepAfterUpload && obs.uploadStatus !== UPLOAD_STATUS.ERROR)\"\n >\n <h3 cdsModalHeaderHeading>\n {{ 'dossierManagement.importDefinition.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section [ngSwitch]=\"obs.activeStep\" cdsModalContent class=\"valtimo-definition-uploader__content\">\n <ng-template ngSwitchDefault>\n <valtimo-dossier-management-upload-step\n [message]=\"\n 'dossierManagement.importDefinition.steps.' + obs.activeStep + '.message' | translate\n \"\n [title]=\"\n 'dossierManagement.importDefinition.steps.' + obs.activeStep + '.title' | translate\n \"\n [illustration]=\"'valtimo-layout/img/' + obs.activeStep + '.svg'\"\n >\n </valtimo-dossier-management-upload-step>\n </ng-template>\n\n <form *ngSwitchCase=\"UPLOAD_STEP.FILE_SELECT\" [formGroup]=\"form\">\n <cds-file-uploader\n [accept]=\"acceptedFiles\"\n [buttonText]=\"'dossierManagement.importDefinition.upload.buttonText' | translate\"\n [description]=\"'dossierManagement.importDefinition.upload.description' | translate\"\n [multiple]=\"false\"\n [title]=\"'dossierManagement.importDefinition.upload.title' | translate\"\n buttonType=\"primary\"\n formControlName=\"file\"\n class=\"valtimo-definition-uploader__file-uploader\"\n >\n </cds-file-uploader>\n\n <ng-container *ngIf=\"!obs.nextButtonDisabled\">\n <cds-inline-notification [notificationObj]=\"obs.notificationObj\"></cds-inline-notification>\n\n <div class=\"valtimo-uploader__checkbox\">\n <cds-checkbox\n [class.valtimo-definition-uploader__checkbox--invalid]=\"obs.showCheckboxError\"\n (checkedChange)=\"onCheckedChange($event)\"\n >\n {{ 'dossierManagement.importDefinition.checkbox.message' | translate }}\n </cds-checkbox>\n\n <div *ngIf=\"obs.showCheckboxError\" class=\"valtimo-definition-uploader__error\">\n <svg cdsIcon=\"warning--filled\" size=\"16\"></svg>\n\n {{ 'dossierManagement.importDefinition.checkbox.error' | translate }}\n </div>\n </div>\n </ng-container>\n </form>\n\n <cds-progress-bar\n *ngSwitchCase=\"UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__progress-bar\"\n [label]=\"'dossierManagement.importDefinition.progressBar.label' | translate\"\n [status]=\"obs.uploadStatus\"\n [helperText]=\"\n 'dossierManagement.importDefinition.progressBar.' + obs.uploadStatus | translate\n \"\n ></cds-progress-bar>\n </section>\n\n <cds-modal-footer\n class=\"valtimo-definition-uploader__footer\"\n [class.valtimo-definition-uploader__footer--double]=\"obs.activeStep === UPLOAD_STEP.PLUGINS\"\n >\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"ghost\"\n (click)=\"onCloseModal(obs.isStepAfterUpload)\"\n >\n {{ (obs.isStepAfterUpload ? 'interface.skip' : 'interface.cancel') | translate }}\n </button>\n\n <div class=\"valtimo-definition-uploader__actions\">\n <button\n *ngIf=\"obs.backButtonEnabled\"\n cdsButton=\"secondary\"\n (click)=\"onBackClick(obs.activeStep)\"\n >\n {{ 'interface.back' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.DASHBOARD\"\n cdsButton=\"primary\"\n [disabled]=\"obs.nextButtonDisabled\"\n (click)=\"onNextClick(obs.activeStep)\"\n >\n {{\n (obs.activeStep === UPLOAD_STEP.FILE_SELECT\n ? 'dossierManagement.importDefinition.startUpload'\n : 'interface.next'\n ) | translate\n }}\n </button>\n\n <button\n *ngIf=\"obs.uploadStatus === UPLOAD_STATUS.ERROR || obs.activeStep === UPLOAD_STEP.DASHBOARD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"primary\"\n (click)=\"onCloseModal(true)\"\n >\n {{ 'interface.finish' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n", styles: [".valtimo-definition-uploader__content,.valtimo-definition-uploader__content form{display:flex;flex-direction:column;gap:16px}.valtimo-definition-uploader__footer ::ng-deep .cds--modal-footer{justify-content:unset!important;display:grid!important;grid-template-columns:1fr 1fr 2fr!important;grid-template-areas:\"cancel . actions\"!important}.valtimo-definition-uploader__footer--double ::ng-deep .cds--modal-footer{grid-template-columns:1fr 1fr!important;grid-template-areas:\"cancel actions\"!important}.valtimo-definition-uploader__progress-bar{height:100%;display:flex;flex-direction:column;justify-content:center}.valtimo-definition-uploader__error{display:flex;align-items:center;gap:10px;color:#da1e28;fill:#da1e28;font-size:12px}.valtimo-definition-uploader__cancel{grid-area:cancel;width:100%}.valtimo-definition-uploader__actions{grid-area:actions;display:flex}.valtimo-definition-uploader__actions button{flex:unset;width:100%}.valtimo-definition-uploader__file-uploader ::ng-deep cds-file{max-width:unset}.valtimo-definition-uploader__checkbox{display:flex;flex-direction:column;gap:8px}.valtimo-definition-uploader__checkbox--invalid ::ng-deep label:before{border-color:#da1e28;margin-inline:0}.valtimo-definition-uploader ::ng-deep .cds--modal-container{height:550px}.valtimo-definition-uploader ::ng-deep .cds--checkbox-label-text{color:#000}\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: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i6.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i6.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i4.Notification, selector: "cds-notification, cds-inline-notification, ibm-notification, ibm-inline-notification", inputs: ["notificationObj"] }, { kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i4.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i4.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i4.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i4.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i4.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i4.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.Checkbox, selector: "cds-checkbox, ibm-checkbox", inputs: ["disabled", "skeleton", "hideLabel", "name", "id", "required", "value", "ariaLabel", "ariaLabelledby", "indeterminate", "checked"], outputs: ["click", "checkedChange", "indeterminateChange"] }, { kind: "directive", type: i7.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]" }, { kind: "component", type: i4.FileUploader, selector: "cds-file-uploader, ibm-file-uploader", inputs: ["buttonText", "buttonType", "title", "description", "accept", "multiple", "skeleton", "size", "fileItemSize", "drop", "dropText", "fileUploaderId", "files", "disabled"], outputs: ["filesChange"] }, { kind: "component", type: i4.ProgressBar, selector: "cds-progress-bar, ibm-progress-bar", inputs: ["value", "id", "label", "helperText", "max", "type", "status", "size"] }, { kind: "component", type: i8.DossierManagementUploadStepComponent, selector: "valtimo-dossier-management-upload-step", inputs: ["illustration", "message", "title"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
203
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementUploadComponent, deps: [{ token: i1.DocumentService }, { token: i2.DossierManagementService }, { token: i3.FormBuilder }, { token: i4.IconService }, { token: i5.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
204
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DossierManagementUploadComponent, selector: "valtimo-dossier-management-upload", inputs: { open: "open" }, outputs: { closeModal: "closeModal" }, 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<cds-modal\n *ngIf=\"{\n activeStep: activeStep$ | async,\n backButtonEnabled: backButtonEnabled$ | async,\n isStepAfterUpload: isStepAfterUpload$ | async,\n nextButtonDisabled: nextButtonDisabled$ | async,\n notificationObj: notificationObj$ | async,\n showCheckboxError: showCheckboxError$ | async,\n showCloseButton: showCloseButton$ | async,\n uploadStatus: uploadStatus$ | async\n } as obs\"\n valtimoCdsModal\n [open]=\"open\"\n showFooter=\"true\"\n class=\"valtimo-definition-uploader\"\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header\n [showCloseButton]=\"obs.showCloseButton\"\n (closeSelect)=\"onCloseModal(obs.isStepAfterUpload && obs.uploadStatus !== UPLOAD_STATUS.ERROR)\"\n >\n <h3 cdsModalHeaderHeading>\n {{ 'dossierManagement.importDefinition.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section [ngSwitch]=\"obs.activeStep\" cdsModalContent class=\"valtimo-definition-uploader__content\">\n <ng-template ngSwitchDefault>\n <valtimo-dossier-management-upload-step\n [message]=\"\n 'dossierManagement.importDefinition.steps.' + obs.activeStep + '.message' | translate\n \"\n [title]=\"\n 'dossierManagement.importDefinition.steps.' + obs.activeStep + '.title' | translate\n \"\n [illustration]=\"'valtimo-layout/img/' + obs.activeStep + '.svg'\"\n >\n </valtimo-dossier-management-upload-step>\n </ng-template>\n\n <form *ngSwitchCase=\"UPLOAD_STEP.FILE_SELECT\" [formGroup]=\"form\">\n <cds-file-uploader\n [accept]=\"acceptedFiles\"\n [buttonText]=\"'dossierManagement.importDefinition.upload.buttonText' | translate\"\n [description]=\"'dossierManagement.importDefinition.upload.description' | translate\"\n [multiple]=\"false\"\n [title]=\"'dossierManagement.importDefinition.upload.title' | translate\"\n buttonType=\"primary\"\n formControlName=\"file\"\n class=\"valtimo-definition-uploader__file-uploader\"\n >\n </cds-file-uploader>\n\n <ng-container *ngIf=\"!obs.nextButtonDisabled\">\n <cds-inline-notification [notificationObj]=\"obs.notificationObj\"></cds-inline-notification>\n\n <div class=\"valtimo-uploader__checkbox\">\n <cds-checkbox\n [class.valtimo-definition-uploader__checkbox--invalid]=\"obs.showCheckboxError\"\n (checkedChange)=\"onCheckedChange($event)\"\n >\n {{ 'dossierManagement.importDefinition.checkbox.message' | translate }}\n </cds-checkbox>\n\n <div *ngIf=\"obs.showCheckboxError\" class=\"valtimo-definition-uploader__error\">\n <svg cdsIcon=\"warning--filled\" size=\"16\"></svg>\n\n {{ 'dossierManagement.importDefinition.checkbox.error' | translate }}\n </div>\n </div>\n </ng-container>\n </form>\n\n <cds-progress-bar\n *ngSwitchCase=\"UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__progress-bar\"\n [label]=\"'dossierManagement.importDefinition.progressBar.label' | translate\"\n [status]=\"obs.uploadStatus\"\n [helperText]=\"\n 'dossierManagement.importDefinition.progressBar.' + obs.uploadStatus | translate\n \"\n ></cds-progress-bar>\n </section>\n\n <cds-modal-footer\n class=\"valtimo-definition-uploader__footer\"\n [class.valtimo-definition-uploader__footer--double]=\"obs.activeStep === UPLOAD_STEP.PLUGINS\"\n >\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"ghost\"\n (click)=\"onCloseModal(obs.isStepAfterUpload)\"\n >\n {{ (obs.isStepAfterUpload ? 'interface.skip' : 'interface.cancel') | translate }}\n </button>\n\n <div class=\"valtimo-definition-uploader__actions\">\n <button\n *ngIf=\"obs.backButtonEnabled\"\n cdsButton=\"secondary\"\n (click)=\"onBackClick(obs.activeStep)\"\n >\n {{ 'interface.back' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.DASHBOARD\"\n cdsButton=\"primary\"\n [disabled]=\"obs.nextButtonDisabled\"\n (click)=\"onNextClick(obs.activeStep)\"\n >\n {{\n (obs.activeStep === UPLOAD_STEP.FILE_SELECT\n ? 'dossierManagement.importDefinition.startUpload'\n : 'interface.next'\n ) | translate\n }}\n </button>\n\n <button\n *ngIf=\"obs.uploadStatus === UPLOAD_STATUS.ERROR || obs.activeStep === UPLOAD_STEP.DASHBOARD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"primary\"\n (click)=\"onCloseModal(true)\"\n >\n {{ 'interface.finish' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n", styles: [".valtimo-definition-uploader__content,.valtimo-definition-uploader__content form{display:flex;flex-direction:column;gap:16px}.valtimo-definition-uploader__footer ::ng-deep .cds--modal-footer{justify-content:unset!important;display:grid!important;grid-template-columns:1fr 1fr 2fr!important;grid-template-areas:\"cancel . actions\"!important}.valtimo-definition-uploader__footer--double ::ng-deep .cds--modal-footer{grid-template-columns:1fr 1fr!important;grid-template-areas:\"cancel actions\"!important}.valtimo-definition-uploader__progress-bar{height:100%;display:flex;flex-direction:column;justify-content:center}.valtimo-definition-uploader__error{display:flex;align-items:center;gap:10px;color:#da1e28;fill:#da1e28;font-size:12px}.valtimo-definition-uploader__cancel{grid-area:cancel;width:100%}.valtimo-definition-uploader__actions{grid-area:actions;display:flex}.valtimo-definition-uploader__actions button{flex:unset;width:100%}.valtimo-definition-uploader__file-uploader ::ng-deep cds-file{max-width:unset}.valtimo-definition-uploader__checkbox{display:flex;flex-direction:column;gap:8px}.valtimo-definition-uploader__checkbox--invalid ::ng-deep label:before{border-color:#da1e28;margin-inline:0}.valtimo-definition-uploader ::ng-deep .cds--modal-container{height:550px}.valtimo-definition-uploader ::ng-deep .cds--checkbox-label-text{color:#000}\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: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i6.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i6.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i4.Notification, selector: "cds-notification, cds-inline-notification, ibm-notification, ibm-inline-notification", inputs: ["notificationObj"] }, { kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i4.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i4.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i4.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i4.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i4.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i4.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.Checkbox, selector: "cds-checkbox, ibm-checkbox", inputs: ["disabled", "skeleton", "hideLabel", "name", "id", "required", "value", "ariaLabel", "ariaLabelledby", "indeterminate", "checked"], outputs: ["click", "checkedChange", "indeterminateChange"] }, { kind: "directive", type: i7.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]" }, { kind: "component", type: i4.FileUploader, selector: "cds-file-uploader, ibm-file-uploader", inputs: ["buttonText", "buttonType", "title", "description", "accept", "multiple", "skeleton", "size", "fileItemSize", "drop", "dropText", "fileUploaderId", "files", "disabled"], outputs: ["filesChange"] }, { kind: "component", type: i4.ProgressBar, selector: "cds-progress-bar, ibm-progress-bar", inputs: ["value", "id", "label", "helperText", "max", "type", "status", "size"] }, { kind: "component", type: i8.DossierManagementUploadStepComponent, selector: "valtimo-dossier-management-upload-step", inputs: ["illustration", "message", "title"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
205
205
|
}
|
|
206
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
206
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementUploadComponent, decorators: [{
|
|
207
207
|
type: Component,
|
|
208
208
|
args: [{ selector: 'valtimo-dossier-management-upload', changeDetection: ChangeDetectionStrategy.OnPush, 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<cds-modal\n *ngIf=\"{\n activeStep: activeStep$ | async,\n backButtonEnabled: backButtonEnabled$ | async,\n isStepAfterUpload: isStepAfterUpload$ | async,\n nextButtonDisabled: nextButtonDisabled$ | async,\n notificationObj: notificationObj$ | async,\n showCheckboxError: showCheckboxError$ | async,\n showCloseButton: showCloseButton$ | async,\n uploadStatus: uploadStatus$ | async\n } as obs\"\n valtimoCdsModal\n [open]=\"open\"\n showFooter=\"true\"\n class=\"valtimo-definition-uploader\"\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header\n [showCloseButton]=\"obs.showCloseButton\"\n (closeSelect)=\"onCloseModal(obs.isStepAfterUpload && obs.uploadStatus !== UPLOAD_STATUS.ERROR)\"\n >\n <h3 cdsModalHeaderHeading>\n {{ 'dossierManagement.importDefinition.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section [ngSwitch]=\"obs.activeStep\" cdsModalContent class=\"valtimo-definition-uploader__content\">\n <ng-template ngSwitchDefault>\n <valtimo-dossier-management-upload-step\n [message]=\"\n 'dossierManagement.importDefinition.steps.' + obs.activeStep + '.message' | translate\n \"\n [title]=\"\n 'dossierManagement.importDefinition.steps.' + obs.activeStep + '.title' | translate\n \"\n [illustration]=\"'valtimo-layout/img/' + obs.activeStep + '.svg'\"\n >\n </valtimo-dossier-management-upload-step>\n </ng-template>\n\n <form *ngSwitchCase=\"UPLOAD_STEP.FILE_SELECT\" [formGroup]=\"form\">\n <cds-file-uploader\n [accept]=\"acceptedFiles\"\n [buttonText]=\"'dossierManagement.importDefinition.upload.buttonText' | translate\"\n [description]=\"'dossierManagement.importDefinition.upload.description' | translate\"\n [multiple]=\"false\"\n [title]=\"'dossierManagement.importDefinition.upload.title' | translate\"\n buttonType=\"primary\"\n formControlName=\"file\"\n class=\"valtimo-definition-uploader__file-uploader\"\n >\n </cds-file-uploader>\n\n <ng-container *ngIf=\"!obs.nextButtonDisabled\">\n <cds-inline-notification [notificationObj]=\"obs.notificationObj\"></cds-inline-notification>\n\n <div class=\"valtimo-uploader__checkbox\">\n <cds-checkbox\n [class.valtimo-definition-uploader__checkbox--invalid]=\"obs.showCheckboxError\"\n (checkedChange)=\"onCheckedChange($event)\"\n >\n {{ 'dossierManagement.importDefinition.checkbox.message' | translate }}\n </cds-checkbox>\n\n <div *ngIf=\"obs.showCheckboxError\" class=\"valtimo-definition-uploader__error\">\n <svg cdsIcon=\"warning--filled\" size=\"16\"></svg>\n\n {{ 'dossierManagement.importDefinition.checkbox.error' | translate }}\n </div>\n </div>\n </ng-container>\n </form>\n\n <cds-progress-bar\n *ngSwitchCase=\"UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__progress-bar\"\n [label]=\"'dossierManagement.importDefinition.progressBar.label' | translate\"\n [status]=\"obs.uploadStatus\"\n [helperText]=\"\n 'dossierManagement.importDefinition.progressBar.' + obs.uploadStatus | translate\n \"\n ></cds-progress-bar>\n </section>\n\n <cds-modal-footer\n class=\"valtimo-definition-uploader__footer\"\n [class.valtimo-definition-uploader__footer--double]=\"obs.activeStep === UPLOAD_STEP.PLUGINS\"\n >\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"ghost\"\n (click)=\"onCloseModal(obs.isStepAfterUpload)\"\n >\n {{ (obs.isStepAfterUpload ? 'interface.skip' : 'interface.cancel') | translate }}\n </button>\n\n <div class=\"valtimo-definition-uploader__actions\">\n <button\n *ngIf=\"obs.backButtonEnabled\"\n cdsButton=\"secondary\"\n (click)=\"onBackClick(obs.activeStep)\"\n >\n {{ 'interface.back' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.DASHBOARD\"\n cdsButton=\"primary\"\n [disabled]=\"obs.nextButtonDisabled\"\n (click)=\"onNextClick(obs.activeStep)\"\n >\n {{\n (obs.activeStep === UPLOAD_STEP.FILE_SELECT\n ? 'dossierManagement.importDefinition.startUpload'\n : 'interface.next'\n ) | translate\n }}\n </button>\n\n <button\n *ngIf=\"obs.uploadStatus === UPLOAD_STATUS.ERROR || obs.activeStep === UPLOAD_STEP.DASHBOARD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"primary\"\n (click)=\"onCloseModal(true)\"\n >\n {{ 'interface.finish' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n", styles: [".valtimo-definition-uploader__content,.valtimo-definition-uploader__content form{display:flex;flex-direction:column;gap:16px}.valtimo-definition-uploader__footer ::ng-deep .cds--modal-footer{justify-content:unset!important;display:grid!important;grid-template-columns:1fr 1fr 2fr!important;grid-template-areas:\"cancel . actions\"!important}.valtimo-definition-uploader__footer--double ::ng-deep .cds--modal-footer{grid-template-columns:1fr 1fr!important;grid-template-areas:\"cancel actions\"!important}.valtimo-definition-uploader__progress-bar{height:100%;display:flex;flex-direction:column;justify-content:center}.valtimo-definition-uploader__error{display:flex;align-items:center;gap:10px;color:#da1e28;fill:#da1e28;font-size:12px}.valtimo-definition-uploader__cancel{grid-area:cancel;width:100%}.valtimo-definition-uploader__actions{grid-area:actions;display:flex}.valtimo-definition-uploader__actions button{flex:unset;width:100%}.valtimo-definition-uploader__file-uploader ::ng-deep cds-file{max-width:unset}.valtimo-definition-uploader__checkbox{display:flex;flex-direction:column;gap:8px}.valtimo-definition-uploader__checkbox--invalid ::ng-deep label:before{border-color:#da1e28;margin-inline:0}.valtimo-definition-uploader ::ng-deep .cds--modal-container{height:550px}.valtimo-definition-uploader ::ng-deep .cds--checkbox-label-text{color:#000}\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"] }]
|
|
209
209
|
}], ctorParameters: () => [{ type: i1.DocumentService }, { type: i2.DossierManagementService }, { type: i3.FormBuilder }, { type: i4.IconService }, { type: i5.TranslateService }], propDecorators: { open: [{
|
|
@@ -211,4 +211,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
211
211
|
}], closeModal: [{
|
|
212
212
|
type: Output
|
|
213
213
|
}] } });
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXVwbG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXItbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1tYW5hZ2VtZW50LXVwbG9hZC9kb3NzaWVyLW1hbmFnZW1lbnQtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtdXBsb2FkL2Rvc3NpZXItbWFuYWdlbWVudC11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25GLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFOUMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLCtCQUErQixFQUFrQixNQUFNLG1CQUFtQixDQUFDO0FBRW5GLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxZQUFZLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVwRyxPQUFPLEVBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7OztBQVF4RixNQUFNLE9BQU8sZ0NBQWdDO0lBMEQzQyxZQUNtQixlQUFnQyxFQUNoQyx3QkFBa0Qs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LElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDeEMsQ0FBQzs4R0E1T1UsZ0NBQWdDO2tHQUFoQyxnQ0FBZ0MsMElDeEM3QyxxZ0xBbUpBOzsyRkQzR2EsZ0NBQWdDO2tCQU41QyxTQUFTOytCQUNFLG1DQUFtQyxtQkFHNUIsdUJBQXVCLENBQUMsTUFBTTs4TUFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtXYXJuaW5nRmlsbGVkMTZ9IGZyb20gJ0BjYXJib24vaWNvbnMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7Q0FSQk9OX0NPTlNUQU5UU30gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0RvY3VtZW50RGVmaW5pdGlvbkNyZWF0ZVJlcXVlc3QsIERvY3VtZW50U2VydmljZX0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtGaWxlSXRlbSwgSWNvblNlcnZpY2UsIE5vdGlmaWNhdGlvbkNvbnRlbnR9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBzd2l0Y2hNYXAsIHRha2V9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtEb3NzaWVyTWFuYWdlbWVudFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Rvc3NpZXItbWFuYWdlbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7U1RFUFMsIFVQTE9BRF9TVEFUVVMsIFVQTE9BRF9TVEVQfSBmcm9tICcuL2Rvc3NpZXItbWFuYWdlbWVudC11cGxvYWQuY29uc3RhbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtdXBsb2FkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rvc3NpZXItbWFuYWdlbWVudC11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLW1hbmFnZW1lbnQtdXBsb2FkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyTWFuYWdlbWVudFVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgb3BlbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgY2xvc2VNb2RhbCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgYWNjZXB0ZWRGaWxlczogc3RyaW5nW10gPSBbJy5qc29uJywgJy56aXAnXTtcbiAgcHVibGljIHNlbGVjdGVkRmlsZTogRmlsZSB8IG51bGw7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgVVBMT0FEX1NURVAgPSBVUExPQURfU1RFUDtcbiAgcHVibGljIHJlYWRvbmx5IFVQTE9BRF9TVEFUVVMgPSBVUExPQURfU1RBVFVTO1xuICBwdWJsaWMgcmVhZG9ubHkgYWN0aXZlU3RlcCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVQTE9BRF9TVEVQPihVUExPQURfU1RFUC5QTFVHSU5TKTtcbiAgcHVibGljIHJlYWRvbmx5IGJhY2tCdXR0b25FbmFibGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuYWN0aXZlU3RlcCQucGlwZShcbiAgICBtYXAoKGFjdGl2ZVN0ZXA6IFVQTE9BRF9TVEVQKSA9PlxuICAgICAgW1VQTE9BRF9TVEVQLkZJTEVfU0VMRUNULCBVUExPQURfU1RFUC5BQ0NFU1NfQ09OVFJPTCwgVVBMT0FEX1NURVAuREFTSEJPQVJEXS5pbmNsdWRlcyhcbiAgICAgICAgYWN0aXZlU3RlcFxuICAgICAgKVxuICAgIClcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IGlzU3RlcEFmdGVyVXBsb2FkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuYWN0aXZlU3RlcCQucGlwZShcbiAgICBtYXAoXG4gICAgICAoYWN0aXZlU3RlcDogVVBMT0FEX1NURVApID0+XG4gICAgICAgICFbVVBMT0FEX1NURVAuUExVR0lOUywgVVBMT0FEX1NURVAuRklMRV9TRUxFQ1RdLmluY2x1ZGVzKGFjdGl2ZVN0ZXApXG4gICAgKVxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd0Nsb3NlQnV0dG9uJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuYWN0aXZlU3RlcCQucGlwZShcbiAgICBtYXAoKGFjdGl2ZVN0ZXA6IFVQTE9BRF9TVEVQKSA9PlxuICAgICAgW1VQTE9BRF9TVEVQLlBMVUdJTlMsIFVQTE9BRF9TVEVQLkZJTEVfU0VMRUNULCBVUExPQURfU1RFUC5GSUxFX1VQTE9BRF0uaW5jbHVkZXMoYWN0aXZlU3RlcClcbiAgICApXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSBuZXh0QnV0dG9uRGlzYWJsZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5hY3RpdmVTdGVwJCxcbiAgICB0aGlzLl9kaXNhYmxlZCQsXG4gIF0pLnBpcGUobWFwKChbYWN0aXZlU3RlcCwgZGlzYWJsZWRdKSA9PiBhY3RpdmVTdGVwICE9PSBVUExPQURfU1RFUC5QTFVHSU5TICYmIGRpc2FibGVkKSk7XG4gIHB1YmxpYyByZWFkb25seSBub3RpZmljYXRpb25PYmokOiBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbkNvbnRlbnQ+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgnaW50ZXJmYWNlLndhcm5pbmcnKSxcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdkb3NzaWVyTWFuYWdlbWVudC5pbXBvcnREZWZpbml0aW9uLm92ZXJ3cml0ZVdhcm5pbmcnKSxcbiAgXSkucGlwZShcbiAgICBtYXAoKFt0aXRsZSwgbWVzc2FnZV0pID0+ICh7XG4gICAgICB0eXBlOiAnd2FybmluZycsXG4gICAgICB0aXRsZSxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBzaG93Q2xvc2U6IGZhbHNlLFxuICAgICAgbG93Q29udHJhc3Q6IHRydWUsXG4gICAgfSkpXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSBzaG93Q2hlY2tib3hFcnJvciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHVwbG9hZFN0YXR1cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVQTE9BRF9TVEFUVVM+KFVQTE9BRF9TVEFUVVMuQUNUSVZFKTtcblxuICBwdWJsaWMgZm9ybTogRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgZmlsZTogdGhpcy5mYi5jb250cm9sKG5ldyBTZXQ8YW55PigpLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICB9KTtcblxuICBwcml2YXRlIF9jaGVja2VkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfaW1wb3J0RmlsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IEZvcm1EYXRhPignJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvc3NpZXJNYW5hZ2VtZW50U2VydmljZTogRG9zc2llck1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaWNvblNlcnZpY2U6IEljb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHtcbiAgICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyKFdhcm5pbmdGaWxsZWQxNik7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCA9IHRoaXMuZm9ybS5nZXQoJ2ZpbGUnKTtcbiAgICBpZiAoIWNvbnRyb2wpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2ZpbGUnKS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChmaWxlU2V0OiBTZXQ8RmlsZUl0ZW0+KSA9PiB7XG4gICAgICAgIGNvbnN0IFtmaWxlSXRlbV0gPSBmaWxlU2V0O1xuICAgICAgICBpZiAoIWZpbGVJdGVtKSB7XG4gICAgICAgICAgdGhpcy5fZGlzYWJsZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgdGhpcy5zaG93Q2hlY2tib3hFcnJvciQubmV4dChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5fY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWxlSXRlbS5maWxlLnR5cGUgPT09ICdhcHBsaWNhdGlvbi9qc29uJykge1xuICAgICAgICAgIHRoaXMuc2V0SnNvbkZpbGUoZmlsZUl0ZW0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0WmlwRmlsZShmaWxlSXRlbSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMucmVzZXRNb2RhbCgpO1xuICB9XG5cbiAgcHVibGljIG9uQ2xvc2VNb2RhbChkZWZpbml0aW9uVXBsb2FkZWQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZU1vZGFsLmVtaXQoZGVmaW5pdGlvblVwbG9hZGVkID8/IGZhbHNlKTtcbiAgICB0aGlzLnJlc2V0TW9kYWwoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkJhY2tDbGljayhhY3RpdmVTdGVwOiBVUExPQURfU1RFUCk6IHZvaWQge1xuICAgIGNvbnN0IHByZXZJbmRleDogbnVtYmVyID0gU1RFUFMuZmluZEluZGV4KChzdGVwOiBVUExPQURfU1RFUCkgPT4gc3RlcCA9PT0gYWN0aXZlU3RlcCkgLSAxO1xuICAgIGlmIChwcmV2SW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hY3RpdmVTdGVwJC5uZXh0KFNURVBTW3ByZXZJbmRleF0pO1xuICB9XG5cbiAgcHVibGljIG9uTmV4dENsaWNrKGFjdGl2ZVN0ZXA6IFVQTE9BRF9TVEVQKTogdm9pZCB7XG4gICAgY29uc3QgbmV4dEluZGV4OiBudW1iZXIgPSBTVEVQUy5maW5kSW5kZXgoKHN0ZXA6IFVQTE9BRF9TVEVQKSA9PiBzdGVwID09PSBhY3RpdmVTdGVwKSArIDE7XG4gICAgaWYgKG5leHRJbmRleCA9PT0gU1RFUFMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGFjdGl2ZVN0ZXAgPT09IFVQTE9BRF9TVEVQLkZJTEVfU0VMRUNUICYmICF0aGlzLl9jaGVja2VkKSB7XG4gICAgICB0aGlzLnNob3dDaGVja2JveEVycm9yJC5uZXh0KHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aXZlU3RlcCQubmV4dChTVEVQU1tuZXh0SW5kZXhdKTtcbiAgICBpZiAoU1RFUFNbbmV4dEluZGV4XSAhPT0gVVBMT0FEX1NURVAuRklMRV9VUExPQUQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVwbG9hZERlZmluaXRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoZWNrZWRDaGFuZ2UoY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2NoZWNrZWQgPSBjaGVja2VkO1xuXG4gICAgaWYgKCFjaGVja2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zaG93Q2hlY2tib3hFcnJvciQubmV4dChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIHNldEpzb25GaWxlKGZpbGVJdGVtOiBGaWxlSXRlbSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGNvbnN0IGZpbGUgPSBmaWxlSXRlbT8uZmlsZTtcblxuICAgIGlmICghZmlsZSkge1xuICAgICAgdGhpcy5jbGVhckpzb25TdHJpbmcoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSAocmVhZGVyLnJlc3VsdCA/PyAnJykudG9TdHJpbmcoKTtcbiAgICAgIGlmICh0aGlzLnN0cmluZ0lzVmFsaWRKc29uKHJlc3VsdCkpIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQkLm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLl9pbXBvcnRGaWxlJC5uZXh0KHJlc3VsdCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jbGVhckpzb25TdHJpbmcoKTtcbiAgICAgIHRoaXMuc2V0RXJyb3JTdGF0ZShmaWxlSXRlbSk7XG4gICAgfTtcblxuICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRaaXBGaWxlKGZpbGVJdGVtOiBGaWxlSXRlbSk6IHZvaWQge1xuICAgIGNvbnN0IGZpbGUgPSBmaWxlSXRlbT8uZmlsZTtcblxuICAgIGlmICghZmlsZSkge1xuICAgICAgdGhpcy5faW1wb3J0RmlsZSQubmV4dCgnJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtmaWxlSXRlbS5maWxlXSwge3R5cGU6IGZpbGVJdGVtLmZpbGUudHlwZX0pO1xuICAgIGNvbnN0IGZkID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZmQuYXBwZW5kKCdmaWxlJywgYmxvYiwgZmlsZUl0ZW0uZmlsZS5uYW1lKTtcbiAgICB0aGlzLl9pbXBvcnRGaWxlJC5uZXh0KGZkKTtcbiAgICB0aGlzLl9kaXNhYmxlZCQubmV4dChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIHVwbG9hZERlZmluaXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzYWJsZWQkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5faW1wb3J0RmlsZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKGZpbGU6IHN0cmluZyB8IEZvcm1EYXRhKSA9PlxuICAgICAgICAgIGZpbGUgaW5zdGFuY2VvZiBGb3JtRGF0YVxuICAgICAgICAgICAgPyB0aGlzLmRvc3NpZXJNYW5hZ2VtZW50U2VydmljZS5pbXBvcnREb2N1bWVudERlZmluaXRpb25aaXAoZmlsZSlcbiAgICAgICAgICAgIDogdGhpcy5kb2N1bWVudFNlcnZpY2UuY3JlYXRlRG9jdW1lbnREZWZpbml0aW9uRm9yTWFuYWdlbWVudChcbiAgICAgICAgICAgICAgICBuZXcgRG9jdW1lbnREZWZpbml0aW9uQ3JlYXRlUmVxdWVzdChmaWxlKVxuICAgICAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHRha2UoMSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fZGlzYWJsZWQkLm5leHQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMudXBsb2FkU3RhdHVzJC5uZXh0KFVQTE9BRF9TVEFUVVMuRklOSVNIRUQpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMudXBsb2FkU3RhdHVzJC5uZXh0KFVQTE9BRF9TVEFUVVMuRVJST1IpO1xuICAgICAgICAgIHRoaXMuX2Rpc2FibGVkJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckpzb25TdHJpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5faW1wb3J0RmlsZSQubmV4dCgnJyk7XG4gIH1cblxuICBwcml2YXRlIHN0cmluZ0lzVmFsaWRKc29uKHN0cmluZzogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIEpTT04ucGFyc2Uoc3RyaW5nKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRFcnJvclN0YXRlKGZpbGVJdGVtOiBGaWxlSXRlbSk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc2FibGVkJC5uZXh0KHRydWUpO1xuICAgIGZpbGVJdGVtLmludmFsaWQgPSB0cnVlO1xuICAgIGZpbGVJdGVtLmludmFsaWRUaXRsZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgJ2Rvc3NpZXJNYW5hZ2VtZW50LmltcG9ydERlZmluaXRpb24uaW52YWxpZEpzb25FcnJvci50aXRsZSdcbiAgICApO1xuICAgIGZpbGVJdGVtLmludmFsaWRUZXh0ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAnZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi5pbnZhbGlkSnNvbkVycm9yLnRleHQnXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRNb2RhbCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYWN0aXZlU3RlcCQubmV4dChVUExPQURfU1RFUC5QTFVHSU5TKTtcbiAgICAgIHRoaXMudXBsb2FkU3RhdHVzJC5uZXh0KFVQTE9BRF9TVEFUVVMuQUNUSVZFKTtcbiAgICAgIHRoaXMuc2hvd0NoZWNrYm94RXJyb3IkLm5leHQoZmFsc2UpO1xuICAgIH0sIENBUkJPTl9DT05TVEFOVFMubW9kYWxBbmltYXRpb25Ncyk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGNkcy1tb2RhbFxuICAqbmdJZj1cIntcbiAgICBhY3RpdmVTdGVwOiBhY3RpdmVTdGVwJCB8IGFzeW5jLFxuICAgIGJhY2tCdXR0b25FbmFibGVkOiBiYWNrQnV0dG9uRW5hYmxlZCQgfCBhc3luYyxcbiAgICBpc1N0ZXBBZnRlclVwbG9hZDogaXNTdGVwQWZ0ZXJVcGxvYWQkIHwgYXN5bmMsXG4gICAgbmV4dEJ1dHRvbkRpc2FibGVkOiBuZXh0QnV0dG9uRGlzYWJsZWQkIHwgYXN5bmMsXG4gICAgbm90aWZpY2F0aW9uT2JqOiBub3RpZmljYXRpb25PYmokIHwgYXN5bmMsXG4gICAgc2hvd0NoZWNrYm94RXJyb3I6IHNob3dDaGVja2JveEVycm9yJCB8IGFzeW5jLFxuICAgIHNob3dDbG9zZUJ1dHRvbjogc2hvd0Nsb3NlQnV0dG9uJCB8IGFzeW5jLFxuICAgIHVwbG9hZFN0YXR1czogdXBsb2FkU3RhdHVzJCB8IGFzeW5jXG4gIH0gYXMgb2JzXCJcbiAgdmFsdGltb0Nkc01vZGFsXG4gIFtvcGVuXT1cIm9wZW5cIlxuICBzaG93Rm9vdGVyPVwidHJ1ZVwiXG4gIGNsYXNzPVwidmFsdGltby1kZWZpbml0aW9uLXVwbG9hZGVyXCJcbiAgKGNsb3NlKT1cIm9uQ2xvc2VNb2RhbCgpXCJcbj5cbiAgPGNkcy1tb2RhbC1oZWFkZXJcbiAgICBbc2hvd0Nsb3NlQnV0dG9uXT1cIm9icy5zaG93Q2xvc2VCdXR0b25cIlxuICAgIChjbG9zZVNlbGVjdCk9XCJvbkNsb3NlTW9kYWwob2JzLmlzU3RlcEFmdGVyVXBsb2FkICYmIG9icy51cGxvYWRTdGF0dXMgIT09IFVQTE9BRF9TVEFUVVMuRVJST1IpXCJcbiAgPlxuICAgIDxoMyBjZHNNb2RhbEhlYWRlckhlYWRpbmc+XG4gICAgICB7eyAnZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi50aXRsZScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2gzPlxuICA8L2Nkcy1tb2RhbC1oZWFkZXI+XG5cbiAgPHNlY3Rpb24gW25nU3dpdGNoXT1cIm9icy5hY3RpdmVTdGVwXCIgY2RzTW9kYWxDb250ZW50IGNsYXNzPVwidmFsdGltby1kZWZpbml0aW9uLXVwbG9hZGVyX19jb250ZW50XCI+XG4gICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoRGVmYXVsdD5cbiAgICAgIDx2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC11cGxvYWQtc3RlcFxuICAgICAgICBbbWVzc2FnZV09XCJcbiAgICAgICAgICAnZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi5zdGVwcy4nICsgb2JzLmFjdGl2ZVN0ZXAgKyAnLm1lc3NhZ2UnIHwgdHJhbnNsYXRlXG4gICAgICAgIFwiXG4gICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAnZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi5zdGVwcy4nICsgb2JzLmFjdGl2ZVN0ZXAgKyAnLnRpdGxlJyB8IHRyYW5zbGF0ZVxuICAgICAgICBcIlxuICAgICAgICBbaWxsdXN0cmF0aW9uXT1cIid2YWx0aW1vLWxheW91dC9pbWcvJyArIG9icy5hY3RpdmVTdGVwICsgJy5zdmcnXCJcbiAgICAgID5cbiAgICAgIDwvdmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtdXBsb2FkLXN0ZXA+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxmb3JtICpuZ1N3aXRjaENhc2U9XCJVUExPQURfU1RFUC5GSUxFX1NFTEVDVFwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgICAgPGNkcy1maWxlLXVwbG9hZGVyXG4gICAgICAgIFthY2NlcHRdPVwiYWNjZXB0ZWRGaWxlc1wiXG4gICAgICAgIFtidXR0b25UZXh0XT1cIidkb3NzaWVyTWFuYWdlbWVudC5pbXBvcnREZWZpbml0aW9uLnVwbG9hZC5idXR0b25UZXh0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtkZXNjcmlwdGlvbl09XCInZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi51cGxvYWQuZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcbiAgICAgICAgW3RpdGxlXT1cIidkb3NzaWVyTWFuYWdlbWVudC5pbXBvcnREZWZpbml0aW9uLnVwbG9hZC50aXRsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICBidXR0b25UeXBlPVwicHJpbWFyeVwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImZpbGVcIlxuICAgICAgICBjbGFzcz1cInZhbHRpbW8tZGVmaW5pdGlvbi11cGxvYWRlcl9fZmlsZS11cGxvYWRlclwiXG4gICAgICA+XG4gICAgICA8L2Nkcy1maWxlLXVwbG9hZGVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW9icy5uZXh0QnV0dG9uRGlzYWJsZWRcIj5cbiAgICAgICAgPGNkcy1pbmxpbmUtbm90aWZpY2F0aW9uIFtub3RpZmljYXRpb25PYmpdPVwib2JzLm5vdGlmaWNhdGlvbk9ialwiPjwvY2RzLWlubGluZS1ub3RpZmljYXRpb24+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZhbHRpbW8tdXBsb2FkZXJfX2NoZWNrYm94XCI+XG4gICAgICAgICAgPGNkcy1jaGVja2JveFxuICAgICAgICAgICAgW2NsYXNzLnZhbHRpbW8tZGVmaW5pdGlvbi11cGxvYWRlcl9fY2hlY2tib3gtLWludmFsaWRdPVwib2JzLnNob3dDaGVja2JveEVycm9yXCJcbiAgICAgICAgICAgIChjaGVja2VkQ2hhbmdlKT1cIm9uQ2hlY2tlZENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi5jaGVja2JveC5tZXNzYWdlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvY2RzLWNoZWNrYm94PlxuXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm9icy5zaG93Q2hlY2tib3hFcnJvclwiIGNsYXNzPVwidmFsdGltby1kZWZpbml0aW9uLXVwbG9hZGVyX19lcnJvclwiPlxuICAgICAgICAgICAgPHN2ZyBjZHNJY29uPVwid2FybmluZy0tZmlsbGVkXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG5cbiAgICAgICAgICAgIHt7ICdkb3NzaWVyTWFuYWdlbWVudC5pbXBvcnREZWZpbml0aW9uLmNoZWNrYm94LmVycm9yJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZm9ybT5cblxuICAgIDxjZHMtcHJvZ3Jlc3MtYmFyXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiVVBMT0FEX1NURVAuRklMRV9VUExPQURcIlxuICAgICAgY2xhc3M9XCJ2YWx0aW1vLWRlZmluaXRpb24tdXBsb2FkZXJfX3Byb2dyZXNzLWJhclwiXG4gICAgICBbbGFiZWxdPVwiJ2Rvc3NpZXJNYW5hZ2VtZW50LmltcG9ydERlZmluaXRpb24ucHJvZ3Jlc3NCYXIubGFiZWwnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtzdGF0dXNdPVwib2JzLnVwbG9hZFN0YXR1c1wiXG4gICAgICBbaGVscGVyVGV4dF09XCJcbiAgICAgICAgJ2Rvc3NpZXJNYW5hZ2VtZW50LmltcG9ydERlZmluaXRpb24ucHJvZ3Jlc3NCYXIuJyArIG9icy51cGxvYWRTdGF0dXMgfCB0cmFuc2xhdGVcbiAgICAgIFwiXG4gICAgPjwvY2RzLXByb2dyZXNzLWJhcj5cbiAgPC9zZWN0aW9uPlxuXG4gIDxjZHMtbW9kYWwtZm9vdGVyXG4gICAgY2xhc3M9XCJ2YWx0aW1vLWRlZmluaXRpb24tdXBsb2FkZXJfX2Zvb3RlclwiXG4gICAgW2NsYXNzLnZhbHRpbW8tZGVmaW5pdGlvbi11cGxvYWRlcl9fZm9vdGVyLS1kb3VibGVdPVwib2JzLmFjdGl2ZVN0ZXAgPT09IFVQTE9BRF9TVEVQLlBMVUdJTlNcIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJvYnMudXBsb2FkU3RhdHVzICE9PSBVUExPQURfU1RBVFVTLkVSUk9SICYmIG9icy5hY3RpdmVTdGVwICE9PSBVUExPQURfU1RFUC5GSUxFX1VQTE9BRFwiXG4gICAgICBjbGFzcz1cInZhbHRpbW8tZGVmaW5pdGlvbi11cGxvYWRlcl9fY2FuY2VsXCJcbiAgICAgIGNkc0J1dHRvbj1cImdob3N0XCJcbiAgICAgIChjbGljayk9XCJvbkNsb3NlTW9kYWwob2JzLmlzU3RlcEFmdGVyVXBsb2FkKVwiXG4gICAgPlxuICAgICAge3sgKG9icy5pc1N0ZXBBZnRlclVwbG9hZCA/ICdpbnRlcmZhY2Uuc2tpcCcgOiAnaW50ZXJmYWNlLmNhbmNlbCcpIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8ZGl2IGNsYXNzPVwidmFsdGltby1kZWZpbml0aW9uLXVwbG9hZGVyX19hY3Rpb25zXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwib2JzLmJhY2tCdXR0b25FbmFibGVkXCJcbiAgICAgICAgY2RzQnV0dG9uPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQmFja0NsaWNrKG9icy5hY3RpdmVTdGVwKVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdpbnRlcmZhY2UuYmFjaycgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwib2JzLnVwbG9hZFN0YXR1cyAhPT0gVVBMT0FEX1NUQVRVUy5FUlJPUiAmJiBvYnMuYWN0aXZlU3RlcCAhPT0gVVBMT0FEX1NURVAuREFTSEJPQVJEXCJcbiAgICAgICAgY2RzQnV0dG9uPVwicHJpbWFyeVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvYnMubmV4dEJ1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uTmV4dENsaWNrKG9icy5hY3RpdmVTdGVwKVwiXG4gICAgICA+XG4gICAgICAgIHt7XG4gICAgICAgICAgKG9icy5hY3RpdmVTdGVwID09PSBVUExPQURfU1RFUC5GSUxFX1NFTEVDVFxuICAgICAgICAgICAgPyAnZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi5zdGFydFVwbG9hZCdcbiAgICAgICAgICAgIDogJ2ludGVyZmFjZS5uZXh0J1xuICAgICAgICAgICkgfCB0cmFuc2xhdGVcbiAgICAgICAgfX1cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwib2JzLnVwbG9hZFN0YXR1cyA9PT0gVVBMT0FEX1NUQVRVUy5FUlJPUiB8fCBvYnMuYWN0aXZlU3RlcCA9PT0gVVBMT0FEX1NURVAuREFTSEJPQVJEXCJcbiAgICAgICAgY2xhc3M9XCJ2YWx0aW1vLWRlZmluaXRpb24tdXBsb2FkZXJfX2NhbmNlbFwiXG4gICAgICAgIGNkc0J1dHRvbj1cInByaW1hcnlcIlxuICAgICAgICAoY2xpY2spPVwib25DbG9zZU1vZGFsKHRydWUpXCJcbiAgICAgID5cbiAgICAgICAge3sgJ2ludGVyZmFjZS5maW5pc2gnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9jZHMtbW9kYWwtZm9vdGVyPlxuPC9jZHMtbW9kYWw+XG4iXX0=
|
|
214
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXVwbG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXItbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1tYW5hZ2VtZW50LXVwbG9hZC9kb3NzaWVyLW1hbmFnZW1lbnQtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtdXBsb2FkL2Rvc3NpZXItbWFuYWdlbWVudC11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25GLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFOUMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLCtCQUErQixFQUFrQixNQUFNLG1CQUFtQixDQUFDO0FBRW5GLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxZQUFZLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVwRyxPQUFPLEVBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7OztBQVF4RixNQUFNLE9BQU8sZ0NBQWdDO0lBMEQzQyxZQUNtQixlQUFnQyxFQUNoQyx3QkFBa0Qs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LElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDeEMsQ0FBQzsrR0E1T1UsZ0NBQWdDO21HQUFoQyxnQ0FBZ0MsMElDeEM3QyxxZ0xBbUpBOzs0RkQzR2EsZ0NBQWdDO2tCQU41QyxTQUFTOytCQUNFLG1DQUFtQyxtQkFHNUIsdUJBQXVCLENBQUMsTUFBTTs4TUFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtXYXJuaW5nRmlsbGVkMTZ9IGZyb20gJ0BjYXJib24vaWNvbnMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7Q0FSQk9OX0NPTlNUQU5UU30gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0RvY3VtZW50RGVmaW5pdGlvbkNyZWF0ZVJlcXVlc3QsIERvY3VtZW50U2VydmljZX0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtGaWxlSXRlbSwgSWNvblNlcnZpY2UsIE5vdGlmaWNhdGlvbkNvbnRlbnR9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBzd2l0Y2hNYXAsIHRha2V9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtEb3NzaWVyTWFuYWdlbWVudFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Rvc3NpZXItbWFuYWdlbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7U1RFUFMsIFVQTE9BRF9TVEFUVVMsIFVQTE9BRF9TVEVQfSBmcm9tICcuL2Rvc3NpZXItbWFuYWdlbWVudC11cGxvYWQuY29uc3RhbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtdXBsb2FkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rvc3NpZXItbWFuYWdlbWVudC11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLW1hbmFnZW1lbnQtdXBsb2FkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyTWFuYWdlbWVudFVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgb3BlbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgY2xvc2VNb2RhbCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgYWNjZXB0ZWRGaWxlczogc3RyaW5nW10gPSBbJy5qc29uJywgJy56aXAnXTtcbiAgcHVibGljIHNlbGVjdGVkRmlsZTogRmlsZSB8IG51bGw7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgVVBMT0FEX1NURVAgPSBVUExPQURfU1RFUDtcbiAgcHVibGljIHJlYWRvbmx5IFVQTE9BRF9TVEFUVVMgPSBVUExPQURfU1RBVFVTO1xuICBwdWJsaWMgcmVhZG9ubHkgYWN0aXZlU3RlcCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVQTE9BRF9TVEVQPihVUExPQURfU1RFUC5QTFVHSU5TKTtcbiAgcHVibGljIHJlYWRvbmx5IGJhY2tCdXR0b25FbmFibGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuYWN0aXZlU3RlcCQucGlwZShcbiAgICBtYXAoKGFjdGl2ZVN0ZXA6IFVQTE9BRF9TVEVQKSA9PlxuICAgICAgW1VQTE9BRF9TVEVQLkZJTEVfU0VMRUNULCBVUExPQURfU1RFUC5BQ0NFU1NfQ09OVFJPTCwgVVBMT0FEX1NURVAuREFTSEJPQVJEXS5pbmNsdWRlcyhcbiAgICAgICAgYWN0aXZlU3RlcFxuICAgICAgKVxuICAgIClcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IGlzU3RlcEFmdGVyVXBsb2FkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuYWN0aXZlU3RlcCQucGlwZShcbiAgICBtYXAoXG4gICAgICAoYWN0aXZlU3RlcDogVVBMT0FEX1NURVApID0+XG4gICAgICAgICFbVVBMT0FEX1NURVAuUExVR0lOUywgVVBMT0FEX1NURVAuRklMRV9TRUxFQ1RdLmluY2x1ZGVzKGFjdGl2ZVN0ZXApXG4gICAgKVxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd0Nsb3NlQnV0dG9uJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuYWN0aXZlU3RlcCQucGlwZShcbiAgICBtYXAoKGFjdGl2ZVN0ZXA6IFVQTE9BRF9TVEVQKSA9PlxuICAgICAgW1VQTE9BRF9TVEVQLlBMVUdJTlMsIFVQTE9BRF9TVEVQLkZJTEVfU0VMRUNULCBVUExPQURfU1RFUC5GSUxFX1VQTE9BRF0uaW5jbHVkZXMoYWN0aXZlU3RlcClcbiAgICApXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSBuZXh0QnV0dG9uRGlzYWJsZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5hY3RpdmVTdGVwJCxcbiAgICB0aGlzLl9kaXNhYmxlZCQsXG4gIF0pLnBpcGUobWFwKChbYWN0aXZlU3RlcCwgZGlzYWJsZWRdKSA9PiBhY3RpdmVTdGVwICE9PSBVUExPQURfU1RFUC5QTFVHSU5TICYmIGRpc2FibGVkKSk7XG4gIHB1YmxpYyByZWFkb25seSBub3RpZmljYXRpb25PYmokOiBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbkNvbnRlbnQ+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgnaW50ZXJmYWNlLndhcm5pbmcnKSxcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdkb3NzaWVyTWFuYWdlbWVudC5pbXBvcnREZWZpbml0aW9uLm92ZXJ3cml0ZVdhcm5pbmcnKSxcbiAgXSkucGlwZShcbiAgICBtYXAoKFt0aXRsZSwgbWVzc2FnZV0pID0+ICh7XG4gICAgICB0eXBlOiAnd2FybmluZycsXG4gICAgICB0aXRsZSxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBzaG93Q2xvc2U6IGZhbHNlLFxuICAgICAgbG93Q29udHJhc3Q6IHRydWUsXG4gICAgfSkpXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSBzaG93Q2hlY2tib3hFcnJvciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHVwbG9hZFN0YXR1cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVQTE9BRF9TVEFUVVM+KFVQTE9BRF9TVEFUVVMuQUNUSVZFKTtcblxuICBwdWJsaWMgZm9ybTogRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgZmlsZTogdGhpcy5mYi5jb250cm9sKG5ldyBTZXQ8YW55PigpLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICB9KTtcblxuICBwcml2YXRlIF9jaGVja2VkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfaW1wb3J0RmlsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IEZvcm1EYXRhPignJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvc3NpZXJNYW5hZ2VtZW50U2VydmljZTogRG9zc2llck1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaWNvblNlcnZpY2U6IEljb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHtcbiAgICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyKFdhcm5pbmdGaWxsZWQxNik7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCA9IHRoaXMuZm9ybS5nZXQoJ2ZpbGUnKTtcbiAgICBpZiAoIWNvbnRyb2wpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2ZpbGUnKS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChmaWxlU2V0OiBTZXQ8RmlsZUl0ZW0+KSA9PiB7XG4gICAgICAgIGNvbnN0IFtmaWxlSXRlbV0gPSBmaWxlU2V0O1xuICAgICAgICBpZiAoIWZpbGVJdGVtKSB7XG4gICAgICAgICAgdGhpcy5fZGlzYWJsZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgdGhpcy5zaG93Q2hlY2tib3hFcnJvciQubmV4dChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5fY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWxlSXRlbS5maWxlLnR5cGUgPT09ICdhcHBsaWNhdGlvbi9qc29uJykge1xuICAgICAgICAgIHRoaXMuc2V0SnNvbkZpbGUoZmlsZUl0ZW0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0WmlwRmlsZShmaWxlSXRlbSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMucmVzZXRNb2RhbCgpO1xuICB9XG5cbiAgcHVibGljIG9uQ2xvc2VNb2RhbChkZWZpbml0aW9uVXBsb2FkZWQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZU1vZGFsLmVtaXQoZGVmaW5pdGlvblVwbG9hZGVkID8/IGZhbHNlKTtcbiAgICB0aGlzLnJlc2V0TW9kYWwoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkJhY2tDbGljayhhY3RpdmVTdGVwOiBVUExPQURfU1RFUCk6IHZvaWQge1xuICAgIGNvbnN0IHByZXZJbmRleDogbnVtYmVyID0gU1RFUFMuZmluZEluZGV4KChzdGVwOiBVUExPQURfU1RFUCkgPT4gc3RlcCA9PT0gYWN0aXZlU3RlcCkgLSAxO1xuICAgIGlmIChwcmV2SW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hY3RpdmVTdGVwJC5uZXh0KFNURVBTW3ByZXZJbmRleF0pO1xuICB9XG5cbiAgcHVibGljIG9uTmV4dENsaWNrKGFjdGl2ZVN0ZXA6IFVQTE9BRF9TVEVQKTogdm9pZCB7XG4gICAgY29uc3QgbmV4dEluZGV4OiBudW1iZXIgPSBTVEVQUy5maW5kSW5kZXgoKHN0ZXA6IFVQTE9BRF9TVEVQKSA9PiBzdGVwID09PSBhY3RpdmVTdGVwKSArIDE7XG4gICAgaWYgKG5leHRJbmRleCA9PT0gU1RFUFMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGFjdGl2ZVN0ZXAgPT09IFVQTE9BRF9TVEVQLkZJTEVfU0VMRUNUICYmICF0aGlzLl9jaGVja2VkKSB7XG4gICAgICB0aGlzLnNob3dDaGVja2JveEVycm9yJC5uZXh0KHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aXZlU3RlcCQubmV4dChTVEVQU1tuZXh0SW5kZXhdKTtcbiAgICBpZiAoU1RFUFNbbmV4dEluZGV4XSAhPT0gVVBMT0FEX1NURVAuRklMRV9VUExPQUQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVwbG9hZERlZmluaXRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoZWNrZWRDaGFuZ2UoY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2NoZWNrZWQgPSBjaGVja2VkO1xuXG4gICAgaWYgKCFjaGVja2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zaG93Q2hlY2tib3hFcnJvciQubmV4dChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIHNldEpzb25GaWxlKGZpbGVJdGVtOiBGaWxlSXRlbSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGNvbnN0IGZpbGUgPSBmaWxlSXRlbT8uZmlsZTtcblxuICAgIGlmICghZmlsZSkge1xuICAgICAgdGhpcy5jbGVhckpzb25TdHJpbmcoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSAocmVhZGVyLnJlc3VsdCA/PyAnJykudG9TdHJpbmcoKTtcbiAgICAgIGlmICh0aGlzLnN0cmluZ0lzVmFsaWRKc29uKHJlc3VsdCkpIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQkLm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLl9pbXBvcnRGaWxlJC5uZXh0KHJlc3VsdCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jbGVhckpzb25TdHJpbmcoKTtcbiAgICAgIHRoaXMuc2V0RXJyb3JTdGF0ZShmaWxlSXRlbSk7XG4gICAgfTtcblxuICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRaaXBGaWxlKGZpbGVJdGVtOiBGaWxlSXRlbSk6IHZvaWQge1xuICAgIGNvbnN0IGZpbGUgPSBmaWxlSXRlbT8uZmlsZTtcblxuICAgIGlmICghZmlsZSkge1xuICAgICAgdGhpcy5faW1wb3J0RmlsZSQubmV4dCgnJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtmaWxlSXRlbS5maWxlXSwge3R5cGU6IGZpbGVJdGVtLmZpbGUudHlwZX0pO1xuICAgIGNvbnN0IGZkID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZmQuYXBwZW5kKCdmaWxlJywgYmxvYiwgZmlsZUl0ZW0uZmlsZS5uYW1lKTtcbiAgICB0aGlzLl9pbXBvcnRGaWxlJC5uZXh0KGZkKTtcbiAgICB0aGlzLl9kaXNhYmxlZCQubmV4dChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIHVwbG9hZERlZmluaXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzYWJsZWQkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5faW1wb3J0RmlsZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKGZpbGU6IHN0cmluZyB8IEZvcm1EYXRhKSA9PlxuICAgICAgICAgIGZpbGUgaW5zdGFuY2VvZiBGb3JtRGF0YVxuICAgICAgICAgICAgPyB0aGlzLmRvc3NpZXJNYW5hZ2VtZW50U2VydmljZS5pbXBvcnREb2N1bWVudERlZmluaXRpb25aaXAoZmlsZSlcbiAgICAgICAgICAgIDogdGhpcy5kb2N1bWVudFNlcnZpY2UuY3JlYXRlRG9jdW1lbnREZWZpbml0aW9uRm9yTWFuYWdlbWVudChcbiAgICAgICAgICAgICAgICBuZXcgRG9jdW1lbnREZWZpbml0aW9uQ3JlYXRlUmVxdWVzdChmaWxlKVxuICAgICAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHRha2UoMSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fZGlzYWJsZWQkLm5leHQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMudXBsb2FkU3RhdHVzJC5uZXh0KFVQTE9BRF9TVEFUVVMuRklOSVNIRUQpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMudXBsb2FkU3RhdHVzJC5uZXh0KFVQTE9BRF9TVEFUVVMuRVJST1IpO1xuICAgICAgICAgIHRoaXMuX2Rpc2FibGVkJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckpzb25TdHJpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5faW1wb3J0RmlsZSQubmV4dCgnJyk7XG4gIH1cblxuICBwcml2YXRlIHN0cmluZ0lzVmFsaWRKc29uKHN0cmluZzogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIEpTT04ucGFyc2Uoc3RyaW5nKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRFcnJvclN0YXRlKGZpbGVJdGVtOiBGaWxlSXRlbSk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc2FibGVkJC5uZXh0KHRydWUpO1xuICAgIGZpbGVJdGVtLmludmFsaWQgPSB0cnVlO1xuICAgIGZpbGVJdGVtLmludmFsaWRUaXRsZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgJ2Rvc3NpZXJNYW5hZ2VtZW50LmltcG9ydERlZmluaXRpb24uaW52YWxpZEpzb25FcnJvci50aXRsZSdcbiAgICApO1xuICAgIGZpbGVJdGVtLmludmFsaWRUZXh0ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAnZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi5pbnZhbGlkSnNvbkVycm9yLnRleHQnXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRNb2RhbCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYWN0aXZlU3RlcCQubmV4dChVUExPQURfU1RFUC5QTFVHSU5TKTtcbiAgICAgIHRoaXMudXBsb2FkU3RhdHVzJC5uZXh0KFVQTE9BRF9TVEFUVVMuQUNUSVZFKTtcbiAgICAgIHRoaXMuc2hvd0NoZWNrYm94RXJyb3IkLm5leHQoZmFsc2UpO1xuICAgIH0sIENBUkJPTl9DT05TVEFOVFMubW9kYWxBbmltYXRpb25Ncyk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGNkcy1tb2RhbFxuICAqbmdJZj1cIntcbiAgICBhY3RpdmVTdGVwOiBhY3RpdmVTdGVwJCB8IGFzeW5jLFxuICAgIGJhY2tCdXR0b25FbmFibGVkOiBiYWNrQnV0dG9uRW5hYmxlZCQgfCBhc3luYyxcbiAgICBpc1N0ZXBBZnRlclVwbG9hZDogaXNTdGVwQWZ0ZXJVcGxvYWQkIHwgYXN5bmMsXG4gICAgbmV4dEJ1dHRvbkRpc2FibGVkOiBuZXh0QnV0dG9uRGlzYWJsZWQkIHwgYXN5bmMsXG4gICAgbm90aWZpY2F0aW9uT2JqOiBub3RpZmljYXRpb25PYmokIHwgYXN5bmMsXG4gICAgc2hvd0NoZWNrYm94RXJyb3I6IHNob3dDaGVja2JveEVycm9yJCB8IGFzeW5jLFxuICAgIHNob3dDbG9zZUJ1dHRvbjogc2hvd0Nsb3NlQnV0dG9uJCB8IGFzeW5jLFxuICAgIHVwbG9hZFN0YXR1czogdXBsb2FkU3RhdHVzJCB8IGFzeW5jXG4gIH0gYXMgb2JzXCJcbiAgdmFsdGltb0Nkc01vZGFsXG4gIFtvcGVuXT1cIm9wZW5cIlxuICBzaG93Rm9vdGVyPVwidHJ1ZVwiXG4gIGNsYXNzPVwidmFsdGltby1kZWZpbml0aW9uLXVwbG9hZGVyXCJcbiAgKGNsb3NlKT1cIm9uQ2xvc2VNb2RhbCgpXCJcbj5cbiAgPGNkcy1tb2RhbC1oZWFkZXJcbiAgICBbc2hvd0Nsb3NlQnV0dG9uXT1cIm9icy5zaG93Q2xvc2VCdXR0b25cIlxuICAgIChjbG9zZVNlbGVjdCk9XCJvbkNsb3NlTW9kYWwob2JzLmlzU3RlcEFmdGVyVXBsb2FkICYmIG9icy51cGxvYWRTdGF0dXMgIT09IFVQTE9BRF9TVEFUVVMuRVJST1IpXCJcbiAgPlxuICAgIDxoMyBjZHNNb2RhbEhlYWRlckhlYWRpbmc+XG4gICAgICB7eyAnZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi50aXRsZScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2gzPlxuICA8L2Nkcy1tb2RhbC1oZWFkZXI+XG5cbiAgPHNlY3Rpb24gW25nU3dpdGNoXT1cIm9icy5hY3RpdmVTdGVwXCIgY2RzTW9kYWxDb250ZW50IGNsYXNzPVwidmFsdGltby1kZWZpbml0aW9uLXVwbG9hZGVyX19jb250ZW50XCI+XG4gICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoRGVmYXVsdD5cbiAgICAgIDx2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC11cGxvYWQtc3RlcFxuICAgICAgICBbbWVzc2FnZV09XCJcbiAgICAgICAgICAnZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi5zdGVwcy4nICsgb2JzLmFjdGl2ZVN0ZXAgKyAnLm1lc3NhZ2UnIHwgdHJhbnNsYXRlXG4gICAgICAgIFwiXG4gICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAnZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi5zdGVwcy4nICsgb2JzLmFjdGl2ZVN0ZXAgKyAnLnRpdGxlJyB8IHRyYW5zbGF0ZVxuICAgICAgICBcIlxuICAgICAgICBbaWxsdXN0cmF0aW9uXT1cIid2YWx0aW1vLWxheW91dC9pbWcvJyArIG9icy5hY3RpdmVTdGVwICsgJy5zdmcnXCJcbiAgICAgID5cbiAgICAgIDwvdmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtdXBsb2FkLXN0ZXA+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxmb3JtICpuZ1N3aXRjaENhc2U9XCJVUExPQURfU1RFUC5GSUxFX1NFTEVDVFwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgICAgPGNkcy1maWxlLXVwbG9hZGVyXG4gICAgICAgIFthY2NlcHRdPVwiYWNjZXB0ZWRGaWxlc1wiXG4gICAgICAgIFtidXR0b25UZXh0XT1cIidkb3NzaWVyTWFuYWdlbWVudC5pbXBvcnREZWZpbml0aW9uLnVwbG9hZC5idXR0b25UZXh0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtkZXNjcmlwdGlvbl09XCInZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi51cGxvYWQuZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcbiAgICAgICAgW3RpdGxlXT1cIidkb3NzaWVyTWFuYWdlbWVudC5pbXBvcnREZWZpbml0aW9uLnVwbG9hZC50aXRsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICBidXR0b25UeXBlPVwicHJpbWFyeVwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImZpbGVcIlxuICAgICAgICBjbGFzcz1cInZhbHRpbW8tZGVmaW5pdGlvbi11cGxvYWRlcl9fZmlsZS11cGxvYWRlclwiXG4gICAgICA+XG4gICAgICA8L2Nkcy1maWxlLXVwbG9hZGVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW9icy5uZXh0QnV0dG9uRGlzYWJsZWRcIj5cbiAgICAgICAgPGNkcy1pbmxpbmUtbm90aWZpY2F0aW9uIFtub3RpZmljYXRpb25PYmpdPVwib2JzLm5vdGlmaWNhdGlvbk9ialwiPjwvY2RzLWlubGluZS1ub3RpZmljYXRpb24+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZhbHRpbW8tdXBsb2FkZXJfX2NoZWNrYm94XCI+XG4gICAgICAgICAgPGNkcy1jaGVja2JveFxuICAgICAgICAgICAgW2NsYXNzLnZhbHRpbW8tZGVmaW5pdGlvbi11cGxvYWRlcl9fY2hlY2tib3gtLWludmFsaWRdPVwib2JzLnNob3dDaGVja2JveEVycm9yXCJcbiAgICAgICAgICAgIChjaGVja2VkQ2hhbmdlKT1cIm9uQ2hlY2tlZENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi5jaGVja2JveC5tZXNzYWdlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvY2RzLWNoZWNrYm94PlxuXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm9icy5zaG93Q2hlY2tib3hFcnJvclwiIGNsYXNzPVwidmFsdGltby1kZWZpbml0aW9uLXVwbG9hZGVyX19lcnJvclwiPlxuICAgICAgICAgICAgPHN2ZyBjZHNJY29uPVwid2FybmluZy0tZmlsbGVkXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG5cbiAgICAgICAgICAgIHt7ICdkb3NzaWVyTWFuYWdlbWVudC5pbXBvcnREZWZpbml0aW9uLmNoZWNrYm94LmVycm9yJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZm9ybT5cblxuICAgIDxjZHMtcHJvZ3Jlc3MtYmFyXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiVVBMT0FEX1NURVAuRklMRV9VUExPQURcIlxuICAgICAgY2xhc3M9XCJ2YWx0aW1vLWRlZmluaXRpb24tdXBsb2FkZXJfX3Byb2dyZXNzLWJhclwiXG4gICAgICBbbGFiZWxdPVwiJ2Rvc3NpZXJNYW5hZ2VtZW50LmltcG9ydERlZmluaXRpb24ucHJvZ3Jlc3NCYXIubGFiZWwnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtzdGF0dXNdPVwib2JzLnVwbG9hZFN0YXR1c1wiXG4gICAgICBbaGVscGVyVGV4dF09XCJcbiAgICAgICAgJ2Rvc3NpZXJNYW5hZ2VtZW50LmltcG9ydERlZmluaXRpb24ucHJvZ3Jlc3NCYXIuJyArIG9icy51cGxvYWRTdGF0dXMgfCB0cmFuc2xhdGVcbiAgICAgIFwiXG4gICAgPjwvY2RzLXByb2dyZXNzLWJhcj5cbiAgPC9zZWN0aW9uPlxuXG4gIDxjZHMtbW9kYWwtZm9vdGVyXG4gICAgY2xhc3M9XCJ2YWx0aW1vLWRlZmluaXRpb24tdXBsb2FkZXJfX2Zvb3RlclwiXG4gICAgW2NsYXNzLnZhbHRpbW8tZGVmaW5pdGlvbi11cGxvYWRlcl9fZm9vdGVyLS1kb3VibGVdPVwib2JzLmFjdGl2ZVN0ZXAgPT09IFVQTE9BRF9TVEVQLlBMVUdJTlNcIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJvYnMudXBsb2FkU3RhdHVzICE9PSBVUExPQURfU1RBVFVTLkVSUk9SICYmIG9icy5hY3RpdmVTdGVwICE9PSBVUExPQURfU1RFUC5GSUxFX1VQTE9BRFwiXG4gICAgICBjbGFzcz1cInZhbHRpbW8tZGVmaW5pdGlvbi11cGxvYWRlcl9fY2FuY2VsXCJcbiAgICAgIGNkc0J1dHRvbj1cImdob3N0XCJcbiAgICAgIChjbGljayk9XCJvbkNsb3NlTW9kYWwob2JzLmlzU3RlcEFmdGVyVXBsb2FkKVwiXG4gICAgPlxuICAgICAge3sgKG9icy5pc1N0ZXBBZnRlclVwbG9hZCA/ICdpbnRlcmZhY2Uuc2tpcCcgOiAnaW50ZXJmYWNlLmNhbmNlbCcpIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8ZGl2IGNsYXNzPVwidmFsdGltby1kZWZpbml0aW9uLXVwbG9hZGVyX19hY3Rpb25zXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwib2JzLmJhY2tCdXR0b25FbmFibGVkXCJcbiAgICAgICAgY2RzQnV0dG9uPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQmFja0NsaWNrKG9icy5hY3RpdmVTdGVwKVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdpbnRlcmZhY2UuYmFjaycgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwib2JzLnVwbG9hZFN0YXR1cyAhPT0gVVBMT0FEX1NUQVRVUy5FUlJPUiAmJiBvYnMuYWN0aXZlU3RlcCAhPT0gVVBMT0FEX1NURVAuREFTSEJPQVJEXCJcbiAgICAgICAgY2RzQnV0dG9uPVwicHJpbWFyeVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvYnMubmV4dEJ1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uTmV4dENsaWNrKG9icy5hY3RpdmVTdGVwKVwiXG4gICAgICA+XG4gICAgICAgIHt7XG4gICAgICAgICAgKG9icy5hY3RpdmVTdGVwID09PSBVUExPQURfU1RFUC5GSUxFX1NFTEVDVFxuICAgICAgICAgICAgPyAnZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi5zdGFydFVwbG9hZCdcbiAgICAgICAgICAgIDogJ2ludGVyZmFjZS5uZXh0J1xuICAgICAgICAgICkgfCB0cmFuc2xhdGVcbiAgICAgICAgfX1cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwib2JzLnVwbG9hZFN0YXR1cyA9PT0gVVBMT0FEX1NUQVRVUy5FUlJPUiB8fCBvYnMuYWN0aXZlU3RlcCA9PT0gVVBMT0FEX1NURVAuREFTSEJPQVJEXCJcbiAgICAgICAgY2xhc3M9XCJ2YWx0aW1vLWRlZmluaXRpb24tdXBsb2FkZXJfX2NhbmNlbFwiXG4gICAgICAgIGNkc0J1dHRvbj1cInByaW1hcnlcIlxuICAgICAgICAoY2xpY2spPVwib25DbG9zZU1vZGFsKHRydWUpXCJcbiAgICAgID5cbiAgICAgICAge3sgJ2ludGVyZmFjZS5maW5pc2gnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9jZHMtbW9kYWwtZm9vdGVyPlxuPC9jZHMtbW9kYWw+XG4iXX0=
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
import { Component, Input } from '@angular/core';
|
|
17
17
|
import * as i0 from "@angular/core";
|
|
18
18
|
export class DossierManagementUploadStepComponent {
|
|
19
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
20
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.
|
|
19
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementUploadStepComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
20
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DossierManagementUploadStepComponent, selector: "valtimo-dossier-management-upload-step", inputs: { illustration: "illustration", message: "message", title: "title" }, 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<div class=\"valtimo-upload-step__content\">\n <div class=\"valtimo-upload-step__title\">{{ title }}</div>\n\n <div class=\"valtimo-upload-step__message\">{{ message }}</div>\n</div>\n\n<img [src]=\"illustration\" alt=\"{{ illustration }}\" class=\"valtimo-upload-step__illustration\" />\n", styles: [":host{display:flex;justify-content:space-around;align-items:center;gap:32px;height:100%}:host label{color:unset}.valtimo-upload-step__content{display:flex;flex-direction:column;gap:16px}.valtimo-upload-step__title{font-weight:600;font-size:16px}.valtimo-upload-step__message{font-size:16px;line-height:28px}.valtimo-upload-step__illustration{max-width:200px}\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"] }); }
|
|
21
21
|
}
|
|
22
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementUploadStepComponent, decorators: [{
|
|
23
23
|
type: Component,
|
|
24
24
|
args: [{ selector: 'valtimo-dossier-management-upload-step', 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<div class=\"valtimo-upload-step__content\">\n <div class=\"valtimo-upload-step__title\">{{ title }}</div>\n\n <div class=\"valtimo-upload-step__message\">{{ message }}</div>\n</div>\n\n<img [src]=\"illustration\" alt=\"{{ illustration }}\" class=\"valtimo-upload-step__illustration\" />\n", styles: [":host{display:flex;justify-content:space-around;align-items:center;gap:32px;height:100%}:host label{color:unset}.valtimo-upload-step__content{display:flex;flex-direction:column;gap:16px}.valtimo-upload-step__title{font-weight:600;font-size:16px}.valtimo-upload-step__message{font-size:16px;line-height:28px}.valtimo-upload-step__illustration{max-width:200px}\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"] }]
|
|
25
25
|
}], propDecorators: { illustration: [{
|
|
@@ -29,4 +29,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
29
29
|
}], title: [{
|
|
30
30
|
type: Input
|
|
31
31
|
}] } });
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXVwbG9hZC1zdGVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtdXBsb2FkL3N0ZXAvZG9zc2llci1tYW5hZ2VtZW50LXVwbG9hZC1zdGVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtdXBsb2FkL3N0ZXAvZG9zc2llci1tYW5hZ2VtZW50LXVwbG9hZC1zdGVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBTy9DLE1BQU0sT0FBTyxvQ0FBb0M7K0dBQXBDLG9DQUFvQzttR0FBcEMsb0NBQW9DLDRKQ3ZCakQscTdCQXVCQTs7NEZEQWEsb0NBQW9DO2tCQUxoRCxTQUFTOytCQUNFLHdDQUF3Qzs4QkFLekMsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtdXBsb2FkLXN0ZXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9zc2llci1tYW5hZ2VtZW50LXVwbG9hZC1zdGVwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9zc2llci1tYW5hZ2VtZW50LXVwbG9hZC1zdGVwLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJNYW5hZ2VtZW50VXBsb2FkU3RlcENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGlsbHVzdHJhdGlvbiE6IHN0cmluZztcbiAgQElucHV0KCkgbWVzc2FnZSE6IHN0cmluZztcbiAgQElucHV0KCkgdGl0bGUhOiBzdHJpbmc7XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxkaXYgY2xhc3M9XCJ2YWx0aW1vLXVwbG9hZC1zdGVwX19jb250ZW50XCI+XG4gIDxkaXYgY2xhc3M9XCJ2YWx0aW1vLXVwbG9hZC1zdGVwX190aXRsZVwiPnt7IHRpdGxlIH19PC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInZhbHRpbW8tdXBsb2FkLXN0ZXBfX21lc3NhZ2VcIj57eyBtZXNzYWdlIH19PC9kaXY+XG48L2Rpdj5cblxuPGltZyBbc3JjXT1cImlsbHVzdHJhdGlvblwiIGFsdD1cInt7IGlsbHVzdHJhdGlvbiB9fVwiIGNsYXNzPVwidmFsdGltby11cGxvYWQtc3RlcF9faWxsdXN0cmF0aW9uXCIgLz5cbiJdfQ==
|
|
@@ -194,10 +194,10 @@ export class DossierManagementWidgetCollectionComponent {
|
|
|
194
194
|
this.changeValidEvent.emit(this.widgetForm.valid && this.cardForm.valid && this._contentValid());
|
|
195
195
|
}));
|
|
196
196
|
}
|
|
197
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
198
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: DossierManagementWidgetCollectionComponent, isStandalone: true, selector: "ng-component", outputs: { changeValidEvent: "changeValidEvent" }, host: { properties: { "class": "this.class" } }, 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<ng-container *ngIf=\"{theme: theme$ | async} as obs\">\n <form [formGroup]=\"widgetForm\" class=\"valtimo-dossier-management-widget-collection__form\">\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n {{ 'widgetTabManagement.content.widgetTitle' | translate }}\n\n <input\n formControlName=\"title\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n {{ 'widgetTabManagement.content.collection.defaultPageSize' | translate }}\n\n <input\n formControlName=\"defaultPageSize\"\n cdsText\n [placeholder]=\"\n 'widgetTabManagement.content.collection.defaultPageSizePlaceholder' | translate\n \"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n {{ 'widgetTabManagement.content.collection.collection' | translate }}\n\n <input\n formControlName=\"collection\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.collection.collectionPlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n </form>\n\n <span class=\"valtimo-dossier-management-widget-collection__subtitle\">\n {{ 'widgetTabManagement.content.collection.cardTitle' | translate }}\n </span>\n\n <form [formGroup]=\"cardForm\" class=\"valtimo-dossier-management-widget-collection__card\">\n <section class=\"valtimo-dossier-management-widget-collection__card-title\">\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.value' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.valuePlaceholder' | translate\"\n type=\"text\"\n formControlName=\"value\"\n />\n </cds-text-label>\n\n <cds-dropdown\n [attr.data-carbon-theme]=\"obs.theme\"\n [label]=\"'widgetTabManagement.content.fields.type' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.fields.typePlaceholder' | translate\"\n (selected)=\"onTypeSelected(cardForm, $event)\"\n formControlName=\"type\"\n >\n <cds-dropdown-list [items]=\"getDisplayItemsSelected(cardForm)\"></cds-dropdown-list>\n </cds-dropdown>\n </section>\n\n <section class=\"valtimo-dossier-management-widget-collection__card-options\">\n @switch (cardForm.get('type').value.id) {\n @case (CaseWidgetDisplayTypeKey.CURRENCY) {\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.currencyCode' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.currencyCodePlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"currencyCode\"\n />\n </cds-text-label>\n\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.display' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.displayPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"display\"\n />\n </cds-text-label>\n\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.digitsInfo' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfoPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.DATE) {\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.format' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.formatPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.DATE_TIME) {\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.format' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.formatPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.ENUM) {\n <div class=\"valtimo-dossier-management-widget-collection__enum\" formArrayName=\"values\">\n @for (rowValue of cardForm.get('values')?.controls; track $index) {\n <form\n [formGroup]=\"rowValue\"\n class=\"valtimo-dossier-management-widget-collection__enum-form\"\n >\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.key' | translate }}\n\n <input\n [attr.data-carbon-theme]=\"obs.theme\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.fields.key' | translate\"\n type=\"text\"\n formControlName=\"key\"\n />\n </cds-text-label>\n\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.value' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.value' | translate\"\n type=\"text\"\n formControlName=\"value\"\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger--ghost\"\n [disabled]=\"$count === 1\"\n [iconOnly]=\"true\"\n class=\"valtimo-dossier-management-widget-field-column__delete-button enum\"\n (click)=\"onDeleteRowClick(cardForm.get('values'), $index)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button\n cdsButton=\"primary\"\n size=\"sm\"\n (click)=\"onAddEnumValueClick(cardForm.get('values'))\"\n >\n {{ 'widgetTabManagement.content.fields.addEnum' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n }\n @case (CaseWidgetDisplayTypeKey.NUMBER) {\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.digitsInfo' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.PERCENT) {\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.digitsInfo' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n }\n </section>\n </form>\n\n <span class=\"valtimo-dossier-management-widget-collection__subtitle\">\n {{ 'widgetTabManagement.content.collection.cardFields' | translate }}\n </span>\n\n <valtimo-dossier-management-widget-fields-column\n [columnData]=\"content()?.fields\"\n [fieldWidthDropdown]=\"fieldWidthDropdown\"\n (columnUpdateEvent)=\"onColumnUpdateEvent($event)\"\n >\n </valtimo-dossier-management-widget-fields-column>\n\n <ng-template #fieldWidthDropdown let-index=\"index\">\n <cds-dropdown\n [label]=\"'widgetTabManagement.content.collection.fieldWidth' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.collection.fieldWidthPlaceholder' | translate\"\n (selected)=\"onWidthSelected($event, index)\"\n >\n <cds-dropdown-list [items]=\"getSelectedWidthItem(index)\"></cds-dropdown-list>\n </cds-dropdown>\n </ng-template>\n</ng-container>\n", styles: [".valtimo-dossier-management-widget-collection{display:flex;flex-direction:column;gap:24px}.valtimo-dossier-management-widget-collection__form{display:flex;gap:16px}.valtimo-dossier-management-widget-collection__subtitle{font-size:16px;font-weight:600;line-height:22px}.valtimo-dossier-management-widget-collection__card{flex-direction:column;display:flex;gap:16px}.valtimo-dossier-management-widget-collection__card-title{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;align-items:flex-end}.valtimo-dossier-management-widget-collection__card-options{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.valtimo-dossier-management-widget-collection__enum{display:flex;flex-direction:column;gap:16px}.valtimo-dossier-management-widget-collection__enum-form{display:grid;grid-template-columns:1fr 1fr auto;align-items:flex-end;gap:16px}\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: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: DossierManagementWidgetFieldsColumnComponent, selector: "valtimo-dossier-management-widget-fields-column", inputs: ["columnData", "addTranslateKey", "fieldWidthDropdown"], outputs: ["columnUpdateEvent"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i6.TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i6.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i6.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i6.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
197
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementWidgetCollectionComponent, deps: [{ token: i1.CdsThemeService }, { token: i2.FormBuilder }, { token: i3.TranslateService }, { token: i4.WidgetWizardService }, { token: i4.WidgetFieldsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
198
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DossierManagementWidgetCollectionComponent, isStandalone: true, selector: "ng-component", outputs: { changeValidEvent: "changeValidEvent" }, host: { properties: { "class": "this.class" } }, 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<ng-container *ngIf=\"{theme: theme$ | async} as obs\">\n <form [formGroup]=\"widgetForm\" class=\"valtimo-dossier-management-widget-collection__form\">\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n {{ 'widgetTabManagement.content.widgetTitle' | translate }}\n\n <input\n formControlName=\"title\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n {{ 'widgetTabManagement.content.collection.defaultPageSize' | translate }}\n\n <input\n formControlName=\"defaultPageSize\"\n cdsText\n [placeholder]=\"\n 'widgetTabManagement.content.collection.defaultPageSizePlaceholder' | translate\n \"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n {{ 'widgetTabManagement.content.collection.collection' | translate }}\n\n <input\n formControlName=\"collection\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.collection.collectionPlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n </form>\n\n <span class=\"valtimo-dossier-management-widget-collection__subtitle\">\n {{ 'widgetTabManagement.content.collection.cardTitle' | translate }}\n </span>\n\n <form [formGroup]=\"cardForm\" class=\"valtimo-dossier-management-widget-collection__card\">\n <section class=\"valtimo-dossier-management-widget-collection__card-title\">\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.value' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.valuePlaceholder' | translate\"\n type=\"text\"\n formControlName=\"value\"\n />\n </cds-text-label>\n\n <cds-dropdown\n [attr.data-carbon-theme]=\"obs.theme\"\n [label]=\"'widgetTabManagement.content.fields.type' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.fields.typePlaceholder' | translate\"\n (selected)=\"onTypeSelected(cardForm, $event)\"\n formControlName=\"type\"\n >\n <cds-dropdown-list [items]=\"getDisplayItemsSelected(cardForm)\"></cds-dropdown-list>\n </cds-dropdown>\n </section>\n\n <section class=\"valtimo-dossier-management-widget-collection__card-options\">\n @switch (cardForm.get('type').value.id) {\n @case (CaseWidgetDisplayTypeKey.CURRENCY) {\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.currencyCode' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.currencyCodePlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"currencyCode\"\n />\n </cds-text-label>\n\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.display' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.displayPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"display\"\n />\n </cds-text-label>\n\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.digitsInfo' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfoPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.DATE) {\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.format' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.formatPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.DATE_TIME) {\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.format' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.formatPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.ENUM) {\n <div class=\"valtimo-dossier-management-widget-collection__enum\" formArrayName=\"values\">\n @for (rowValue of cardForm.get('values')?.controls; track $index) {\n <form\n [formGroup]=\"rowValue\"\n class=\"valtimo-dossier-management-widget-collection__enum-form\"\n >\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.key' | translate }}\n\n <input\n [attr.data-carbon-theme]=\"obs.theme\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.fields.key' | translate\"\n type=\"text\"\n formControlName=\"key\"\n />\n </cds-text-label>\n\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.value' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.value' | translate\"\n type=\"text\"\n formControlName=\"value\"\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger--ghost\"\n [disabled]=\"$count === 1\"\n [iconOnly]=\"true\"\n class=\"valtimo-dossier-management-widget-field-column__delete-button enum\"\n (click)=\"onDeleteRowClick(cardForm.get('values'), $index)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button\n cdsButton=\"primary\"\n size=\"sm\"\n (click)=\"onAddEnumValueClick(cardForm.get('values'))\"\n >\n {{ 'widgetTabManagement.content.fields.addEnum' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n }\n @case (CaseWidgetDisplayTypeKey.NUMBER) {\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.digitsInfo' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.PERCENT) {\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.digitsInfo' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n }\n </section>\n </form>\n\n <span class=\"valtimo-dossier-management-widget-collection__subtitle\">\n {{ 'widgetTabManagement.content.collection.cardFields' | translate }}\n </span>\n\n <valtimo-dossier-management-widget-fields-column\n [columnData]=\"content()?.fields\"\n [fieldWidthDropdown]=\"fieldWidthDropdown\"\n (columnUpdateEvent)=\"onColumnUpdateEvent($event)\"\n >\n </valtimo-dossier-management-widget-fields-column>\n\n <ng-template #fieldWidthDropdown let-index=\"index\">\n <cds-dropdown\n [label]=\"'widgetTabManagement.content.collection.fieldWidth' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.collection.fieldWidthPlaceholder' | translate\"\n (selected)=\"onWidthSelected($event, index)\"\n >\n <cds-dropdown-list [items]=\"getSelectedWidthItem(index)\"></cds-dropdown-list>\n </cds-dropdown>\n </ng-template>\n</ng-container>\n", styles: [".valtimo-dossier-management-widget-collection{display:flex;flex-direction:column;gap:24px}.valtimo-dossier-management-widget-collection__form{display:flex;gap:16px}.valtimo-dossier-management-widget-collection__subtitle{font-size:16px;font-weight:600;line-height:22px}.valtimo-dossier-management-widget-collection__card{flex-direction:column;display:flex;gap:16px}.valtimo-dossier-management-widget-collection__card-title{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;align-items:flex-end}.valtimo-dossier-management-widget-collection__card-options{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.valtimo-dossier-management-widget-collection__enum{display:flex;flex-direction:column;gap:16px}.valtimo-dossier-management-widget-collection__enum-form{display:grid;grid-template-columns:1fr 1fr auto;align-items:flex-end;gap:16px}\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: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: DossierManagementWidgetFieldsColumnComponent, selector: "valtimo-dossier-management-widget-fields-column", inputs: ["columnData", "addTranslateKey", "fieldWidthDropdown"], outputs: ["columnUpdateEvent"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i6.TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i6.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i6.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i6.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
199
199
|
}
|
|
200
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
200
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementWidgetCollectionComponent, decorators: [{
|
|
201
201
|
type: Component,
|
|
202
202
|
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [
|
|
203
203
|
CommonModule,
|
|
@@ -215,4 +215,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
215
215
|
}], changeValidEvent: [{
|
|
216
216
|
type: Output
|
|
217
217
|
}] } });
|
|
218
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbmZpZ3VyYXRvcnMvY29sbGVjdGlvbi9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29uZmlndXJhdG9ycy9jb2xsZWN0aW9uL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29sbGVjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUdYLE1BQU0sRUFDTixNQUFNLEVBQ04saUJBQWlCLEdBRWxCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFLTCxtQkFBbUIsRUFDbkIsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLGVBQWUsRUFBbUIsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUMsWUFBWSxFQUFtQixrQkFBa0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RGLE9BQU8sRUFJTCx3QkFBd0IsR0FNekIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQ0wsWUFBWSxFQUNaLGNBQWMsRUFDZCxV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LGNBQWMsbXJCQUNkLFlBQVksZ01BQ1osVUFBVTs7MkZBR0QsMENBQTBDO2tCQWpCdEQsU0FBUztzQ0FHUyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsNENBQTRDO3dCQUM1QyxtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsY0FBYzt3QkFDZCxZQUFZO3dCQUNaLFVBQVU7cUJBQ1g7aU5BS3FDLEtBQUs7c0JBQTFDLFdBQVc7dUJBQUMsT0FBTztnQkFDTSxnQkFBZ0I7c0JBQXpDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBXcml0YWJsZVNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEZvcm1BcnJheSxcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Hcm91cCxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtDQVJCT05fVEhFTUUsIENkc1RoZW1lU2VydmljZSwgQ3VycmVudENhcmJvblRoZW1lfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIENhc2VXaWRnZXRDdXJyZW5jeURpc3BsYXlUeXBlLFxuICBDYXNlV2lkZ2V0RGF0ZURpc3BsYXlUeXBlLFxuICBDYXNlV2lkZ2V0RGF0ZVRpbWVEaXNwbGF5VHlwZSxcbiAgQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5LFxuICBDYXNlV2lkZ2V0RW51bURpc3BsYXlUeXBlLFxuICBDb2xsZWN0aW9uRmllbGRXaWR0aCxcbiAgRmllbGRzQ2FzZVdpZGdldFZhbHVlLFxuICBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCxcbiAgV2lkZ2V0Q29udGVudFByb3BlcnRpZXMsXG59IGZyb20gJ0B2YWx0aW1vL2Rvc3NpZXInO1xuaW1wb3J0IHtcbiAgQnV0dG9uTW9kdWxlLFxuICBEcm9wZG93bk1vZHVsZSxcbiAgSWNvbk1vZHVsZSxcbiAgSW5wdXRNb2R1bGUsXG4gIExpc3RJdGVtLFxufSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBtYXAsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7V2lkZ2V0Q29udGVudENvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7V2lkZ2V0RmllbGRzU2VydmljZSwgV2lkZ2V0V2l6YXJkU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtEb3NzaWVyTWFuYWdlbWVudFdpZGdldEZpZWxkc0NvbHVtbkNvbXBvbmVudH0gZnJvbSAnLi4vZmllbGRzL2NvbHVtbi9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWZpZWxkcy1jb2x1bW4uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIERvc3NpZXJNYW5hZ2VtZW50V2lkZ2V0RmllbGRzQ29sdW1uQ29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgRHJvcGRvd25Nb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJNYW5hZ2VtZW50V2lkZ2V0Q29sbGVjdGlvbkNvbXBvbmVudFxuICBpbXBsZW1lbnRzIFdpZGdldENvbnRlbnRDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBwdWJsaWMgcmVhZG9ubHkgY2xhc3MgPSAndmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb24nO1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGNoYW5nZVZhbGlkRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHdpZGdldEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICB0aXRsZTogdGhpcy5mYi5jb250cm9sKHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRUaXRsZSgpID8/ICcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICBkZWZhdWx0UGFnZVNpemU6IHRoaXMuZmIuY29udHJvbChcbiAgICAgICh0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0Q29udGVudCgpIGFzIFdpZGdldENvbGxlY3Rpb25Db250ZW50KT8uZGVmYXVsdFBhZ2VTaXplID8/IDUsXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgKSxcbiAgICBjb2xsZWN0aW9uOiB0aGlzLmZiLmNvbnRyb2woXG4gICAgICAodGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQoKSBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCk/LmNvbGxlY3Rpb24gPz8gJycsXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgKSxcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNhcmRGb3JtID0gdGhpcy5mYi5ncm91cDxhbnk+KHtcbiAgICB2YWx1ZTogdGhpcy5mYi5jb250cm9sKFxuICAgICAgKHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRDb250ZW50KCkgYXMgV2lkZ2V0Q29sbGVjdGlvbkNvbnRlbnQpPy50aXRsZT8udmFsdWUgPz8gJycsXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgKSxcbiAgICB0eXBlOiB0aGlzLmZiLmNvbnRyb2w8TGlzdEl0ZW0+KFxuICAgICAge1xuICAgICAgICBjb250ZW50OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgIGB3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZGlzcGxheVR5cGUuJHsodGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQoKSBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCk/LnRpdGxlPy5kaXNwbGF5UHJvcGVydGllcz8udHlwZSA/PyBDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuVEVYVH1gXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBpZDpcbiAgICAgICAgICAodGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQoKSBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCk/LnRpdGxlXG4gICAgICAgICAgICA/LmRpc3BsYXlQcm9wZXJ0aWVzPy50eXBlID8/IENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5URVhULFxuICAgICAgICBzZWxlY3RlZDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgKSxcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHRoZW1lJDogT2JzZXJ2YWJsZTxDQVJCT05fVEhFTUU+ID0gdGhpcy5jZHNUaGVtZVNlcnZpY2UuY3VycmVudFRoZW1lJC5waXBlKFxuICAgIG1hcCgodGhlbWU6IEN1cnJlbnRDYXJib25UaGVtZSkgPT5cbiAgICAgIHRoZW1lID09PSBDdXJyZW50Q2FyYm9uVGhlbWUuRzEwID8gQ0FSQk9OX1RIRU1FLldISVRFIDogQ0FSQk9OX1RIRU1FLkc5MFxuICAgIClcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5ID0gQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5O1xuICBwdWJsaWMgcmVhZG9ubHkgY29udGVudCA9IHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZVxuICAgIC53aWRnZXRDb250ZW50IGFzIFdyaXRhYmxlU2lnbmFsPFdpZGdldENvbGxlY3Rpb25Db250ZW50PjtcbiAgcHVibGljIHJlYWRvbmx5IGRpc3BsYXlUeXBlSXRlbXM6IExpc3RJdGVtW10gPSB0aGlzLndpZGdldEZpZWxkc1NlcnZpY2UuZGlzcGxheVR5cGVJdGVtcztcblxuICBwdWJsaWMgV0lEVEhfSVRFTVM6IExpc3RJdGVtW10gPSBbXG4gICAge1xuICAgICAgY29udGVudDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3dpZGdldFRhYk1hbmFnZW1lbnQud2lkdGguZnVsbFdpZHRoLnRpdGxlJyksXG4gICAgICBpZDogJ2Z1bGwnLFxuICAgICAgc2VsZWN0ZWQ6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBjb250ZW50OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnd2lkZ2V0VGFiTWFuYWdlbWVudC53aWR0aC5oYWxmLnRpdGxlJyksXG4gICAgICBpZDogJ2hhbGYnLFxuICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgIH0sXG4gIF07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29udGVudFZhbGlkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkc1RoZW1lU2VydmljZTogQ2RzVGhlbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpZGdldFdpemFyZFNlcnZpY2U6IFdpZGdldFdpemFyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB3aWRnZXRGaWVsZHNTZXJ2aWNlOiBXaWRnZXRGaWVsZHNTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuV2lkZ2V0Rm9ybVN1YnNjcmlwdGlvbigpO1xuICAgIHRoaXMub3BlbkNhcmRGb3JtU3Vic2NyaXB0aW9uKCk7XG4gICAgdGhpcy5pbml0Rm9ybSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkFkZEVudW1WYWx1ZUNsaWNrKHZhbHVlc0Zvcm1BcnJheTogRm9ybUFycmF5KTogdm9pZCB7XG4gICAgdmFsdWVzRm9ybUFycmF5LnB1c2goXG4gICAgICB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAga2V5OiB0aGlzLmZiLmNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICB2YWx1ZTogdGhpcy5mYi5jb250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREaXNwbGF5SXRlbXNTZWxlY3RlZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBMaXN0SXRlbVtdIHtcbiAgICByZXR1cm4gdGhpcy53aWRnZXRGaWVsZHNTZXJ2aWNlLmdldERpc3BsYXlJdGVtc1NlbGVjdGVkKGNvbnRyb2wpO1xuICB9XG5cbiAgcHVibGljIGdldFNlbGVjdGVkV2lkdGhJdGVtKGZpZWxkSW5kZXg6IG51bWJlcik6IExpc3RJdGVtW10ge1xuICAgIGNvbnN0IHdpZGdldENvbnRlbnQ6IFdpZGdldENvbGxlY3Rpb25Db250ZW50IHwgbnVsbCA9XG4gICAgICB0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0Q29udGVudCgpIGFzIFdpZGdldENvbGxlY3Rpb25Db250ZW50O1xuXG4gICAgcmV0dXJuICF3aWRnZXRDb250ZW50XG4gICAgICA/IHRoaXMuV0lEVEhfSVRFTVNcbiAgICAgIDogdGhpcy5XSURUSF9JVEVNUy5tYXAoKGl0ZW06IExpc3RJdGVtKSA9PiAoe1xuICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgc2VsZWN0ZWQ6IHdpZGdldENvbnRlbnQuZmllbGRzPy5bZmllbGRJbmRleF0/LndpZHRoID09PSBpdGVtLmlkLFxuICAgICAgICB9KSk7XG4gIH1cblxuICBwdWJsaWMgb25Db2x1bW5VcGRhdGVFdmVudChldmVudDoge2RhdGE6IEZpZWxkc0Nhc2VXaWRnZXRWYWx1ZVtdOyB2YWxpZDogYm9vbGVhbn0pOiB2b2lkIHtcbiAgICBjb25zdCB7ZGF0YSwgdmFsaWR9ID0gZXZlbnQ7XG4gICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQudXBkYXRlKChjb250ZW50OiBXaWRnZXRDb250ZW50UHJvcGVydGllcyB8IG51bGwpID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nRmllbGRzID0gKGNvbnRlbnQgYXMgV2lkZ2V0Q29sbGVjdGlvbkNvbnRlbnQpPy5maWVsZHM7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbnRlbnQsXG4gICAgICAgIGZpZWxkczogZGF0YS5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoe1xuICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgd2lkdGg6IGV4aXN0aW5nRmllbGRzPy5baW5kZXhdPy53aWR0aCA/PyAnZnVsbCcsXG4gICAgICAgIH0pKSxcbiAgICAgIH0gYXMgV2lkZ2V0Q29sbGVjdGlvbkNvbnRlbnQ7XG4gICAgfSk7XG4gICAgdGhpcy5fY29udGVudFZhbGlkLnNldCh2YWxpZCk7XG4gICAgdGhpcy5jaGFuZ2VWYWxpZEV2ZW50LmVtaXQodmFsaWQgJiYgdGhpcy53aWRnZXRGb3JtLnZhbGlkKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRlbGV0ZVJvd0NsaWNrKGZvcm1BcnJheTogRm9ybUFycmF5LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCFmb3JtQXJyYXkpIHJldHVybjtcblxuICAgIGZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XG4gIH1cblxuICBwdWJsaWMgb25UeXBlU2VsZWN0ZWQoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGV2ZW50OiB7aXRlbTogTGlzdEl0ZW19KTogdm9pZCB7XG4gICAgdGhpcy53aWRnZXRGaWVsZHNTZXJ2aWNlLm9uRGlzcGxheVR5cGVTZWxlY3RlZChbJ3ZhbHVlJywgJ3R5cGUnXSwgZm9ybUdyb3VwLCBldmVudCk7XG4gIH1cblxuICBwdWJsaWMgb25XaWR0aFNlbGVjdGVkKGV2ZW50OiB7aXRlbTogTGlzdEl0ZW19LCBmaWVsZEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0Q29udGVudC51cGRhdGUoXG4gICAgICAoY29udGVudDogV2lkZ2V0Q29udGVudFByb3BlcnRpZXMgfCBudWxsKSA9PlxuICAgICAgICAoe1xuICAgICAgICAgIC4uLmNvbnRlbnQsXG4gICAgICAgICAgZmllbGRzOiAoY29udGVudCBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCk/LmZpZWxkcy5tYXAoXG4gICAgICAgICAgICAoZmllbGQ6IEZpZWxkc0Nhc2VXaWRnZXRWYWx1ZSAmIHt3aWR0aDogQ29sbGVjdGlvbkZpZWxkV2lkdGh9LCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgICAgICBpbmRleCA9PT0gZmllbGRJbmRleCA/IHsuLi5maWVsZCwgd2lkdGg6IGV2ZW50Lml0ZW0uaWR9IDogZmllbGRcbiAgICAgICAgICApLFxuICAgICAgICB9KSBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXRGb3JtKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQoKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgdGl0bGUgPSAodGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQoKSBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCkudGl0bGU7XG4gICAgaWYgKCF0aXRsZSkgcmV0dXJuO1xuICAgIHRoaXMub25UeXBlU2VsZWN0ZWQodGhpcy5jYXJkRm9ybSwge1xuICAgICAgaXRlbToge2lkOiB0aXRsZS5kaXNwbGF5UHJvcGVydGllcz8udHlwZSA/PyAnJywgY29udGVudDogJycsIHNlbGVjdGVkOiB0cnVlfSxcbiAgICB9KTtcblxuICAgIHRoaXMuY2FyZEZvcm0ucGF0Y2hWYWx1ZShcbiAgICAgIHtcbiAgICAgICAgLi4uKFtcbiAgICAgICAgICBDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuTlVNQkVSLFxuICAgICAgICAgIENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5QRVJDRU5ULFxuICAgICAgICAgIENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5DVVJSRU5DWSxcbiAgICAgICAgXS5pbmNsdWRlcyh0aXRsZS5kaXNwbGF5UHJvcGVydGllcz8udHlwZSBhcyBDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkpICYmIHtcbiAgICAgICAgICBkaWdpdHNJbmZvOiAodGl0bGUuZGlzcGxheVByb3BlcnRpZXMgYXMgQ2FzZVdpZGdldEN1cnJlbmN5RGlzcGxheVR5cGUpLmRpZ2l0c0luZm8sXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4odGl0bGUuZGlzcGxheVByb3BlcnRpZXM/LnR5cGUgPT09IENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5DVVJSRU5DWSAmJiB7XG4gICAgICAgICAgY3VycmVuY3lDb2RlOiAodGl0bGUuZGlzcGxheVByb3BlcnRpZXMgYXMgQ2FzZVdpZGdldEN1cnJlbmN5RGlzcGxheVR5cGUpLmN1cnJlbmN5Q29kZSxcbiAgICAgICAgICBkaXNwbGF5OiAodGl0bGUuZGlzcGxheVByb3BlcnRpZXMgYXMgQ2FzZVdpZGdldEN1cnJlbmN5RGlzcGxheVR5cGUpLmRpc3BsYXksXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4odGl0bGUuZGlzcGxheVByb3BlcnRpZXM/LnR5cGUgPT09IENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5EQVRFICYmIHtcbiAgICAgICAgICBmb3JtYXQ6ICh0aXRsZS5kaXNwbGF5UHJvcGVydGllcyBhcyBDYXNlV2lkZ2V0RGF0ZURpc3BsYXlUeXBlKS5mb3JtYXQsXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4odGl0bGUuZGlzcGxheVByb3BlcnRpZXM/LnR5cGUgPT09IENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5EQVRFX1RJTUUgJiYge1xuICAgICAgICAgIGZvcm1hdDogKHRpdGxlLmRpc3BsYXlQcm9wZXJ0aWVzIGFzIENhc2VXaWRnZXREYXRlVGltZURpc3BsYXlUeXBlKS5mb3JtYXQsXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4odGl0bGUuZGlzcGxheVByb3BlcnRpZXM/LnR5cGUgPT09IENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5FTlVNICYmIHtcbiAgICAgICAgICB2YWx1ZXM6IE9iamVjdC5lbnRyaWVzKCh0aXRsZS5kaXNwbGF5UHJvcGVydGllcyBhcyBDYXNlV2lkZ2V0RW51bURpc3BsYXlUeXBlKS52YWx1ZXMpLm1hcChcbiAgICAgICAgICAgIChba2V5LCB2YWx1ZV0pID0+ICh7a2V5LCB2YWx1ZX0pXG4gICAgICAgICAgKSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgICAge2VtaXRFdmVudDogZmFsc2V9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbldpZGdldEZvcm1TdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLndpZGdldEZvcm0udmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRUaXRsZS5zZXQodmFsdWU/LnRpdGxlID8/ICcnKTtcblxuICAgICAgICB0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0Q29udGVudC51cGRhdGUoXG4gICAgICAgICAgKGNvbnRlbnQ6IFdpZGdldENvbnRlbnRQcm9wZXJ0aWVzIHwgbnVsbCkgPT5cbiAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgIC4uLmNvbnRlbnQsXG4gICAgICAgICAgICAgIGNvbGxlY3Rpb246IHZhbHVlPy5jb2xsZWN0aW9uIHx8ICcnLFxuICAgICAgICAgICAgICBkZWZhdWx0UGFnZVNpemU6IHZhbHVlPy5kZWZhdWx0UGFnZVNpemUgfHwgNSxcbiAgICAgICAgICAgIH0pIGFzIFdpZGdldENvbGxlY3Rpb25Db250ZW50XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VWYWxpZEV2ZW50LmVtaXQoXG4gICAgICAgICAgdGhpcy53aWRnZXRGb3JtLnZhbGlkICYmIHRoaXMuY2FyZEZvcm0udmFsaWQgJiYgdGhpcy5fY29udGVudFZhbGlkKClcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkNhcmRGb3JtU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5jYXJkRm9ybS52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoNTAwKSkuc3Vic2NyaWJlKGZvcm1WYWx1ZSA9PiB7XG4gICAgICAgIGxldCB7dmFsdWUsIC4uLmRpc3BsYXlQcm9wZXJ0aWVzfSA9IGZvcm1WYWx1ZTtcbiAgICAgICAgZGlzcGxheVByb3BlcnRpZXMgPSB7XG4gICAgICAgICAgLi4uZGlzcGxheVByb3BlcnRpZXMsXG4gICAgICAgICAgLi4uKCEhZGlzcGxheVByb3BlcnRpZXMudHlwZSAmJiB7XG4gICAgICAgICAgICB0eXBlOiAoZGlzcGxheVByb3BlcnRpZXMudHlwZSBhcyBMaXN0SXRlbSkuaWQsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgLi4uKCEhZm9ybVZhbHVlLnZhbHVlcyAmJiB7XG4gICAgICAgICAgICB2YWx1ZXM6IChmb3JtVmFsdWUudmFsdWVzIGFzIEFycmF5PHtba2V5OiBzdHJpbmddOiBzdHJpbmd9Pik/LnJlZHVjZShcbiAgICAgICAgICAgICAgKGFjYywgY3VycikgPT4gKHsuLi5hY2MsIFtjdXJyLmtleV06IGN1cnIudmFsdWV9KSxcbiAgICAgICAgICAgICAge31cbiAgICAgICAgICAgICksXG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQudXBkYXRlKFxuICAgICAgICAgIChjb250ZW50OiBXaWRnZXRDb250ZW50UHJvcGVydGllcyB8IG51bGwpID0+XG4gICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAuLi5jb250ZW50LFxuICAgICAgICAgICAgICB0aXRsZToge1xuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIC4uLihkaXNwbGF5UHJvcGVydGllcy50eXBlICE9PSBDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuVEVYVCAmJiB7XG4gICAgICAgICAgICAgICAgICBkaXNwbGF5UHJvcGVydGllcyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pIGFzIGFueVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlVmFsaWRFdmVudC5lbWl0KFxuICAgICAgICAgIHRoaXMud2lkZ2V0Rm9ybS52YWxpZCAmJiB0aGlzLmNhcmRGb3JtLnZhbGlkICYmIHRoaXMuX2NvbnRlbnRWYWxpZCgpXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInt0aGVtZTogdGhlbWUkIHwgYXN5bmN9IGFzIG9ic1wiPlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cIndpZGdldEZvcm1cIiBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uX19mb3JtXCI+XG4gICAgPGNkcy10ZXh0LWxhYmVsIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cIm9icy50aGVtZVwiPlxuICAgICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC53aWRnZXRUaXRsZScgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgPGlucHV0XG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRpdGxlXCJcbiAgICAgICAgY2RzVGV4dFxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC53aWRnZXRUaXRsZVBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIC8+XG4gICAgPC9jZHMtdGV4dC1sYWJlbD5cblxuICAgIDxjZHMtdGV4dC1sYWJlbCBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIj5cbiAgICAgIHt7ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuY29sbGVjdGlvbi5kZWZhdWx0UGFnZVNpemUnIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgIDxpbnB1dFxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZWZhdWx0UGFnZVNpemVcIlxuICAgICAgICBjZHNUZXh0XG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAnd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmNvbGxlY3Rpb24uZGVmYXVsdFBhZ2VTaXplUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXG4gICAgICAgIFwiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIC8+XG4gICAgPC9jZHMtdGV4dC1sYWJlbD5cblxuICAgIDxjZHMtdGV4dC1sYWJlbCBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIj5cbiAgICAgIHt7ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuY29sbGVjdGlvbi5jb2xsZWN0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICA8aW5wdXRcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29sbGVjdGlvblwiXG4gICAgICAgIGNkc1RleHRcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuY29sbGVjdGlvbi5jb2xsZWN0aW9uUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgLz5cbiAgICA8L2Nkcy10ZXh0LWxhYmVsPlxuICA8L2Zvcm0+XG5cbiAgPHNwYW4gY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29sbGVjdGlvbl9fc3VidGl0bGVcIj5cbiAgICB7eyAnd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmNvbGxlY3Rpb24uY2FyZFRpdGxlJyB8IHRyYW5zbGF0ZSB9fVxuICA8L3NwYW4+XG5cbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJjYXJkRm9ybVwiIGNsYXNzPVwidmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb25fX2NhcmRcIj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uX19jYXJkLXRpdGxlXCI+XG4gICAgICA8Y2RzLXRleHQtbGFiZWw+XG4gICAgICAgIHt7ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLnZhbHVlJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNkc1RleHRcbiAgICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy52YWx1ZVBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcbiAgICAgICAgLz5cbiAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG5cbiAgICAgIDxjZHMtZHJvcGRvd25cbiAgICAgICAgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwib2JzLnRoZW1lXCJcbiAgICAgICAgW2xhYmVsXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLnR5cGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2Ryb3BVcF09XCJmYWxzZVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy50eXBlUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgKHNlbGVjdGVkKT1cIm9uVHlwZVNlbGVjdGVkKGNhcmRGb3JtLCAkZXZlbnQpXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidHlwZVwiXG4gICAgICA+XG4gICAgICAgIDxjZHMtZHJvcGRvd24tbGlzdCBbaXRlbXNdPVwiZ2V0RGlzcGxheUl0ZW1zU2VsZWN0ZWQoY2FyZEZvcm0pXCI+PC9jZHMtZHJvcGRvd24tbGlzdD5cbiAgICAgIDwvY2RzLWRyb3Bkb3duPlxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzZWN0aW9uIGNsYXNzPVwidmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb25fX2NhcmQtb3B0aW9uc1wiPlxuICAgICAgQHN3aXRjaCAoY2FyZEZvcm0uZ2V0KCd0eXBlJykudmFsdWUuaWQpIHtcbiAgICAgICAgQGNhc2UgKENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5DVVJSRU5DWSkge1xuICAgICAgICAgIDxjZHMtdGV4dC1sYWJlbD5cbiAgICAgICAgICAgIHt7ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmN1cnJlbmN5Q29kZScgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNkc1RleHRcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwib2JzLnRoZW1lXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgICAgICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmN1cnJlbmN5Q29kZVBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImN1cnJlbmN5Q29kZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG5cbiAgICAgICAgICA8Y2RzLXRleHQtbGFiZWw+XG4gICAgICAgICAgICB7eyAnd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5kaXNwbGF5JyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZGlzcGxheVBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGlzcGxheVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG5cbiAgICAgICAgICA8Y2RzLXRleHQtbGFiZWw+XG4gICAgICAgICAgICB7eyAnd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5kaWdpdHNJbmZvJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZGlnaXRzSW5mb1BsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGlnaXRzSW5mb1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5EQVRFKSB7XG4gICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZm9ybWF0JyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZm9ybWF0UGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJmb3JtYXRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Nkcy10ZXh0LWxhYmVsPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlIChDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuREFURV9USU1FKSB7XG4gICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZm9ybWF0JyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZm9ybWF0UGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJmb3JtYXRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Nkcy10ZXh0LWxhYmVsPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlIChDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuRU5VTSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29sbGVjdGlvbl9fZW51bVwiIGZvcm1BcnJheU5hbWU9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgIEBmb3IgKHJvd1ZhbHVlIG9mIGNhcmRGb3JtLmdldCgndmFsdWVzJyk/LmNvbnRyb2xzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPGZvcm1cbiAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cInJvd1ZhbHVlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uX19lbnVtLWZvcm1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMua2V5JyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwib2JzLnRoZW1lXCJcbiAgICAgICAgICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMua2V5JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwia2V5XCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9jZHMtdGV4dC1sYWJlbD5cblxuICAgICAgICAgICAgICAgIDxjZHMtdGV4dC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgIHt7ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLnZhbHVlJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMudmFsdWUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjZHNCdXR0b249XCJkYW5nZXItLWdob3N0XCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIkY291bnQgPT09IDFcIlxuICAgICAgICAgICAgICAgICAgW2ljb25Pbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtZmllbGQtY29sdW1uX19kZWxldGUtYnV0dG9uIGVudW1cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlUm93Q2xpY2soY2FyZEZvcm0uZ2V0KCd2YWx1ZXMnKSwgJGluZGV4KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cInRyYXNoLWNhblwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2RzQnV0dG9uPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkFkZEVudW1WYWx1ZUNsaWNrKGNhcmRGb3JtLmdldCgndmFsdWVzJykpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuYWRkRW51bScgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwiYWRkXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5Lk5VTUJFUikge1xuICAgICAgICAgIDxjZHMtdGV4dC1sYWJlbD5cbiAgICAgICAgICAgIHt7ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmRpZ2l0c0luZm8nIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjZHNUZXh0XG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cIm9icy50aGVtZVwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5kaWdpdHNJbmZvJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGlnaXRzSW5mb1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5QRVJDRU5UKSB7XG4gICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZGlnaXRzSW5mbycgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNkc1RleHRcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwib2JzLnRoZW1lXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmRpZ2l0c0luZm8nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkaWdpdHNJbmZvXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9jZHMtdGV4dC1sYWJlbD5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvc2VjdGlvbj5cbiAgPC9mb3JtPlxuXG4gIDxzcGFuIGNsYXNzPVwidmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb25fX3N1YnRpdGxlXCI+XG4gICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5jb2xsZWN0aW9uLmNhcmRGaWVsZHMnIHwgdHJhbnNsYXRlIH19XG4gIDwvc3Bhbj5cblxuICA8dmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWZpZWxkcy1jb2x1bW5cbiAgICBbY29sdW1uRGF0YV09XCJjb250ZW50KCk/LmZpZWxkc1wiXG4gICAgW2ZpZWxkV2lkdGhEcm9wZG93bl09XCJmaWVsZFdpZHRoRHJvcGRvd25cIlxuICAgIChjb2x1bW5VcGRhdGVFdmVudCk9XCJvbkNvbHVtblVwZGF0ZUV2ZW50KCRldmVudClcIlxuICA+XG4gIDwvdmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWZpZWxkcy1jb2x1bW4+XG5cbiAgPG5nLXRlbXBsYXRlICNmaWVsZFdpZHRoRHJvcGRvd24gbGV0LWluZGV4PVwiaW5kZXhcIj5cbiAgICA8Y2RzLWRyb3Bkb3duXG4gICAgICBbbGFiZWxdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5jb2xsZWN0aW9uLmZpZWxkV2lkdGgnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtkcm9wVXBdPVwiZmFsc2VcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuY29sbGVjdGlvbi5maWVsZFdpZHRoUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgIChzZWxlY3RlZCk9XCJvbldpZHRoU2VsZWN0ZWQoJGV2ZW50LCBpbmRleClcIlxuICAgID5cbiAgICAgIDxjZHMtZHJvcGRvd24tbGlzdCBbaXRlbXNdPVwiZ2V0U2VsZWN0ZWRXaWR0aEl0ZW0oaW5kZXgpXCI+PC9jZHMtZHJvcGRvd24tbGlzdD5cbiAgICA8L2Nkcy1kcm9wZG93bj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
218
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbmZpZ3VyYXRvcnMvY29sbGVjdGlvbi9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29uZmlndXJhdG9ycy9jb2xsZWN0aW9uL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29sbGVjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUdYLE1BQU0sRUFDTixNQUFNLEVBQ04saUJBQWlCLEdBRWxCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFLTCxtQkFBbUIsRUFDbkIsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLGVBQWUsRUFBbUIsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUMsWUFBWSxFQUFtQixrQkFBa0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RGLE9BQU8sRUFJTCx3QkFBd0IsR0FNekIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQ0wsWUFBWSxFQUNaLGNBQWMsRUFDZCxVQUFVLEVBQ1YsV0FBVyxHQUVaLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFDLFlBQVksRUFBRSxHQUFHLEVBQWMsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBSWpFLE9BQU8sRUFBQyw0Q0FBNEMsRUFBQyxNQUFNLG9FQUFvRSxDQUFDOzs7Ozs7OztBQW1CaEksTUFBTSxPQUFPLDBDQUEwQztJQWtFckQsWUFDbUIsZUFBZ0MsRUFDaEMsRUFBZSxFQUNmLGdCQUFrQyxFQUNsQyxtQkFBd0MsRUFDeEMsbUJBQXdDO1FBSnhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFwRXJCLFVBQUssR0FBRyw4Q0FBOEMsQ0FBQztRQUNuRSxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRXpELGVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUN6QyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ3pGLGVBQWUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBOEIsRUFBRSxlQUFlLElBQUksQ0FBQyxFQUMzRixVQUFVLENBQUMsUUFBUSxDQUNwQjtZQUNELFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FDeEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBOEIsRUFBRSxVQUFVLElBQUksRUFBRSxFQUN2RixVQUFVLENBQUMsUUFBUSxDQUNwQjtTQUNGLENBQUMsQ0FBQztRQUVhLGFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBTTtZQUM1QyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQ25CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQThCLEVBQUUsS0FBSyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQ3pGLFVBQVUsQ0FBQyxRQUFRLENBQ3BCO1lBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUNuQjtnQkFDRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FDcEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FDM0IsMkNBQTRDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQThCLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLElBQUksSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsQ0FDcEwsQ0FDRjtnQkFDRCxFQUFFLEVBQ0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBOEIsRUFBRSxLQUFLO29CQUMxRSxFQUFFLGlCQUFpQixFQUFFLElBQUksSUFBSSx3QkFBd0IsQ0FBQyxJQUFJO2dCQUM5RCxRQUFRLEVBQUUsSUFBSTthQUNmLEVBQ0QsVUFBVSxDQUFDLFFBQVEsQ0FDcEI7U0FDRixDQUFDLENBQUM7UUFFYSxXQUFNLEdBQTZCLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDeEYsR0FBRyxDQUFDLENBQUMsS0FBeUIsRUFBRSxFQUFFLENBQ2hDLEtBQUssS0FBSyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ3pFLENBQ0YsQ0FBQztRQUVjLDZCQUF3QixHQUFHLHdCQUF3QixDQUFDO1FBQ3BELFlBQU8sR0FBRyxJQUFJLENBQUMsbUJBQW1CO2FBQy9DLGFBQXdELENBQUM7UUFDNUMscUJBQWdCLEdBQWUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDO1FBRWxGLGdCQUFXLEdBQWU7WUFDL0I7Z0JBQ0UsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsMkNBQTJDLENBQUM7Z0JBQ25GLEVBQUUsRUFBRSxNQUFNO2dCQUNWLFFBQVEsRUFBRSxJQUFJO2FBQ2Y7WUFDRDtnQkFDRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQztnQkFDOUUsRUFBRSxFQUFFLE1BQU07Z0JBQ1YsUUFBUSxFQUFFLEtBQUs7YUFDaEI7U0FDRixDQUFDO1FBRWUsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3BDLGtCQUFhLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBUXJELENBQUM7SUFFRyxRQUFRO1FBQ2IsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVNLG1CQUFtQixDQUFDLGVBQTBCO1FBQ25ELGVBQWUsQ0FBQyxJQUFJLENBQ2xCLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ1osR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQzdDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztTQUNoRCxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxPQUF3QjtRQUNyRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRU0sb0JBQW9CLENBQUMsVUFBa0I7UUFDNUMsTUFBTSxhQUFhLEdBQ2pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQTZCLENBQUM7UUFFdEUsT0FBTyxDQUFDLGFBQWE7WUFDbkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXO1lBQ2xCLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDeEMsR0FBRyxJQUFJO2dCQUNQLFFBQVEsRUFBRSxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxLQUFLLElBQUksQ0FBQyxFQUFFO2FBQ2hFLENBQUMsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVNLG1CQUFtQixDQUFDLEtBQXNEO1FBQy9FLE1BQU0sRUFBQyxJQUFJLEVBQUUsS0FBSyxFQUFDLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBdUMsRUFBRSxFQUFFO1lBQ3hGLE1BQU0sY0FBYyxHQUFJLE9BQW1DLEVBQUUsTUFBTSxDQUFDO1lBRXBFLE9BQU87Z0JBQ0wsR0FBRyxPQUFPO2dCQUNWLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDakMsR0FBRyxJQUFJO29CQUNQLEtBQUssRUFBRSxjQUFjLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLElBQUksTUFBTTtpQkFDaEQsQ0FBQyxDQUFDO2FBQ3VCLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxTQUFvQixFQUFFLEtBQWE7UUFDekQsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBRXZCLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVNLGNBQWMsQ0FBQyxTQUFvQixFQUFFLEtBQXVCO1FBQ2pFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVNLGVBQWUsQ0FBQyxLQUF1QixFQUFFLFVBQWtCO1FBQ2hFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUMzQyxDQUFDLE9BQXVDLEVBQUUsRUFBRSxDQUMxQyxDQUFDO1lBQ0MsR0FBRyxPQUFPO1lBQ1YsTUFBTSxFQUFHLE9BQW1DLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FDdEQsQ0FBQyxLQUE0RCxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQzlFLEtBQUssS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FDbEU7U0FDRixDQUE0QixDQUNoQyxDQUFDO0lBQ0osQ0FBQztJQUVPLFFBQVE7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRTtZQUFFLE9BQU87UUFFdEQsTUFBTSxLQUFLLEdBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBOEIsQ0FBQyxLQUFLLENBQUM7UUFDMUYsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQyxJQUFJLEVBQUUsRUFBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDO1NBQzdFLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUN0QjtZQUNFLEdBQUcsQ0FBQztnQkFDRix3QkFBd0IsQ0FBQyxNQUFNO2dCQUMvQix3QkFBd0IsQ0FBQyxPQUFPO2dCQUNoQyx3QkFBd0IsQ0FBQyxRQUFRO2FBQ2xDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxJQUFnQyxDQUFDLElBQUk7Z0JBQ3ZFLFVBQVUsRUFBRyxLQUFLLENBQUMsaUJBQW1ELENBQUMsVUFBVTthQUNsRixDQUFDO1lBQ0YsR0FBRyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLEtBQUssd0JBQXdCLENBQUMsUUFBUSxJQUFJO2dCQUN6RSxZQUFZLEVBQUcsS0FBSyxDQUFDLGlCQUFtRCxDQUFDLFlBQVk7Z0JBQ3JGLE9BQU8sRUFBRyxLQUFLLENBQUMsaUJBQW1ELENBQUMsT0FBTzthQUM1RSxDQUFDO1lBQ0YsR0FBRyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLEtBQUssd0JBQXdCLENBQUMsSUFBSSxJQUFJO2dCQUNyRSxNQUFNLEVBQUcsS0FBSyxDQUFDLGlCQUErQyxDQUFDLE1BQU07YUFDdEUsQ0FBQztZQUNGLEdBQUcsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxLQUFLLHdCQUF3QixDQUFDLFNBQVMsSUFBSTtnQkFDMUUsTUFBTSxFQUFHLEtBQUssQ0FBQyxpQkFBbUQsQ0FBQyxNQUFNO2FBQzFFLENBQUM7WUFDRixHQUFHLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLElBQUksS0FBSyx3QkFBd0IsQ0FBQyxJQUFJLElBQUk7Z0JBQ3JFLE1BQU0sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFFLEtBQUssQ0FBQyxpQkFBK0MsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQ3ZGLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxHQUFHLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FDakM7YUFDRixDQUFDO1NBQ0gsRUFDRCxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsQ0FDbkIsQ0FBQztJQUNKLENBQUM7SUFFTywwQkFBMEI7UUFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDckUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztZQUU3RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FDM0MsQ0FBQyxPQUF1QyxFQUFFLEVBQUUsQ0FDMUMsQ0FBQztnQkFDQyxHQUFHLE9BQU87Z0JBQ1YsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLElBQUksRUFBRTtnQkFDbkMsZUFBZSxFQUFFLEtBQUssRUFBRSxlQUFlLElBQUksQ0FBQzthQUM3QyxDQUE0QixDQUNoQyxDQUFDO1lBRUYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUNyRSxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyx3QkFBd0I7UUFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDdkUsSUFBSSxFQUFDLEtBQUssRUFBRSxHQUFHLGlCQUFpQixFQUFDLEdBQUcsU0FBUyxDQUFDO1lBQzlDLGlCQUFpQixHQUFHO2dCQUNsQixHQUFHLGlCQUFpQjtnQkFDcEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLElBQUk7b0JBQzlCLElBQUksRUFBRyxpQkFBaUIsQ0FBQyxJQUFpQixDQUFDLEVBQUU7aUJBQzlDLENBQUM7Z0JBQ0YsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxJQUFJO29CQUN4QixNQUFNLEVBQUcsU0FBUyxDQUFDLE1BQXlDLEVBQUUsTUFBTSxDQUNsRSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFDLENBQUMsRUFDakQsRUFBRSxDQUNIO2lCQUNGLENBQUM7YUFDSCxDQUFDO1lBRUYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQzNDLENBQUMsT0FBdUMsRUFBRSxFQUFFLENBQzFDLENBQUM7Z0JBQ0MsR0FBRyxPQUFPO2dCQUNWLEtBQUssRUFBRTtvQkFDTCxLQUFLO29CQUNMLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEtBQUssd0JBQXdCLENBQUMsSUFBSSxJQUFJO3dCQUM5RCxpQkFBaUI7cUJBQ2xCLENBQUM7aUJBQ0g7YUFDRixDQUFRLENBQ1osQ0FBQztZQUVGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FDckUsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOytHQW5QVSwwQ0FBMEM7bUdBQTFDLDBDQUEwQyw0S0MvRXZELCtpVEFpUUEsMmdERDVMSSxZQUFZLHVMQUNaLGVBQWUsNEZBQ2YsNENBQTRDLDRMQUM1QyxtQkFBbUIsbWpDQUNuQixXQUFXLDJhQUNYLGNBQWMsbXJCQUNkLFlBQVksZ01BQ1osVUFBVTs7NEZBR0QsMENBQTBDO2tCQWpCdEQsU0FBUztzQ0FHUyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsNENBQTRDO3dCQUM1QyxtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsY0FBYzt3QkFDZCxZQUFZO3dCQUNaLFVBQVU7cUJBQ1g7aU5BS3FDLEtBQUs7c0JBQTFDLFdBQVc7dUJBQUMsT0FBTztnQkFDTSxnQkFBZ0I7c0JBQXpDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBXcml0YWJsZVNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEZvcm1BcnJheSxcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Hcm91cCxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtDQVJCT05fVEhFTUUsIENkc1RoZW1lU2VydmljZSwgQ3VycmVudENhcmJvblRoZW1lfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIENhc2VXaWRnZXRDdXJyZW5jeURpc3BsYXlUeXBlLFxuICBDYXNlV2lkZ2V0RGF0ZURpc3BsYXlUeXBlLFxuICBDYXNlV2lkZ2V0RGF0ZVRpbWVEaXNwbGF5VHlwZSxcbiAgQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5LFxuICBDYXNlV2lkZ2V0RW51bURpc3BsYXlUeXBlLFxuICBDb2xsZWN0aW9uRmllbGRXaWR0aCxcbiAgRmllbGRzQ2FzZVdpZGdldFZhbHVlLFxuICBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCxcbiAgV2lkZ2V0Q29udGVudFByb3BlcnRpZXMsXG59IGZyb20gJ0B2YWx0aW1vL2Rvc3NpZXInO1xuaW1wb3J0IHtcbiAgQnV0dG9uTW9kdWxlLFxuICBEcm9wZG93bk1vZHVsZSxcbiAgSWNvbk1vZHVsZSxcbiAgSW5wdXRNb2R1bGUsXG4gIExpc3RJdGVtLFxufSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBtYXAsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7V2lkZ2V0Q29udGVudENvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7V2lkZ2V0RmllbGRzU2VydmljZSwgV2lkZ2V0V2l6YXJkU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtEb3NzaWVyTWFuYWdlbWVudFdpZGdldEZpZWxkc0NvbHVtbkNvbXBvbmVudH0gZnJvbSAnLi4vZmllbGRzL2NvbHVtbi9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWZpZWxkcy1jb2x1bW4uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIERvc3NpZXJNYW5hZ2VtZW50V2lkZ2V0RmllbGRzQ29sdW1uQ29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgRHJvcGRvd25Nb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJNYW5hZ2VtZW50V2lkZ2V0Q29sbGVjdGlvbkNvbXBvbmVudFxuICBpbXBsZW1lbnRzIFdpZGdldENvbnRlbnRDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBwdWJsaWMgcmVhZG9ubHkgY2xhc3MgPSAndmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb24nO1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGNoYW5nZVZhbGlkRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHdpZGdldEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICB0aXRsZTogdGhpcy5mYi5jb250cm9sKHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRUaXRsZSgpID8/ICcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICBkZWZhdWx0UGFnZVNpemU6IHRoaXMuZmIuY29udHJvbChcbiAgICAgICh0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0Q29udGVudCgpIGFzIFdpZGdldENvbGxlY3Rpb25Db250ZW50KT8uZGVmYXVsdFBhZ2VTaXplID8/IDUsXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgKSxcbiAgICBjb2xsZWN0aW9uOiB0aGlzLmZiLmNvbnRyb2woXG4gICAgICAodGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQoKSBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCk/LmNvbGxlY3Rpb24gPz8gJycsXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgKSxcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNhcmRGb3JtID0gdGhpcy5mYi5ncm91cDxhbnk+KHtcbiAgICB2YWx1ZTogdGhpcy5mYi5jb250cm9sKFxuICAgICAgKHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRDb250ZW50KCkgYXMgV2lkZ2V0Q29sbGVjdGlvbkNvbnRlbnQpPy50aXRsZT8udmFsdWUgPz8gJycsXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgKSxcbiAgICB0eXBlOiB0aGlzLmZiLmNvbnRyb2w8TGlzdEl0ZW0+KFxuICAgICAge1xuICAgICAgICBjb250ZW50OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgIGB3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZGlzcGxheVR5cGUuJHsodGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQoKSBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCk/LnRpdGxlPy5kaXNwbGF5UHJvcGVydGllcz8udHlwZSA/PyBDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuVEVYVH1gXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBpZDpcbiAgICAgICAgICAodGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQoKSBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCk/LnRpdGxlXG4gICAgICAgICAgICA/LmRpc3BsYXlQcm9wZXJ0aWVzPy50eXBlID8/IENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5URVhULFxuICAgICAgICBzZWxlY3RlZDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgKSxcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHRoZW1lJDogT2JzZXJ2YWJsZTxDQVJCT05fVEhFTUU+ID0gdGhpcy5jZHNUaGVtZVNlcnZpY2UuY3VycmVudFRoZW1lJC5waXBlKFxuICAgIG1hcCgodGhlbWU6IEN1cnJlbnRDYXJib25UaGVtZSkgPT5cbiAgICAgIHRoZW1lID09PSBDdXJyZW50Q2FyYm9uVGhlbWUuRzEwID8gQ0FSQk9OX1RIRU1FLldISVRFIDogQ0FSQk9OX1RIRU1FLkc5MFxuICAgIClcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5ID0gQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5O1xuICBwdWJsaWMgcmVhZG9ubHkgY29udGVudCA9IHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZVxuICAgIC53aWRnZXRDb250ZW50IGFzIFdyaXRhYmxlU2lnbmFsPFdpZGdldENvbGxlY3Rpb25Db250ZW50PjtcbiAgcHVibGljIHJlYWRvbmx5IGRpc3BsYXlUeXBlSXRlbXM6IExpc3RJdGVtW10gPSB0aGlzLndpZGdldEZpZWxkc1NlcnZpY2UuZGlzcGxheVR5cGVJdGVtcztcblxuICBwdWJsaWMgV0lEVEhfSVRFTVM6IExpc3RJdGVtW10gPSBbXG4gICAge1xuICAgICAgY29udGVudDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3dpZGdldFRhYk1hbmFnZW1lbnQud2lkdGguZnVsbFdpZHRoLnRpdGxlJyksXG4gICAgICBpZDogJ2Z1bGwnLFxuICAgICAgc2VsZWN0ZWQ6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBjb250ZW50OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnd2lkZ2V0VGFiTWFuYWdlbWVudC53aWR0aC5oYWxmLnRpdGxlJyksXG4gICAgICBpZDogJ2hhbGYnLFxuICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgIH0sXG4gIF07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29udGVudFZhbGlkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkc1RoZW1lU2VydmljZTogQ2RzVGhlbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpZGdldFdpemFyZFNlcnZpY2U6IFdpZGdldFdpemFyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB3aWRnZXRGaWVsZHNTZXJ2aWNlOiBXaWRnZXRGaWVsZHNTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuV2lkZ2V0Rm9ybVN1YnNjcmlwdGlvbigpO1xuICAgIHRoaXMub3BlbkNhcmRGb3JtU3Vic2NyaXB0aW9uKCk7XG4gICAgdGhpcy5pbml0Rm9ybSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkFkZEVudW1WYWx1ZUNsaWNrKHZhbHVlc0Zvcm1BcnJheTogRm9ybUFycmF5KTogdm9pZCB7XG4gICAgdmFsdWVzRm9ybUFycmF5LnB1c2goXG4gICAgICB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAga2V5OiB0aGlzLmZiLmNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICB2YWx1ZTogdGhpcy5mYi5jb250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREaXNwbGF5SXRlbXNTZWxlY3RlZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBMaXN0SXRlbVtdIHtcbiAgICByZXR1cm4gdGhpcy53aWRnZXRGaWVsZHNTZXJ2aWNlLmdldERpc3BsYXlJdGVtc1NlbGVjdGVkKGNvbnRyb2wpO1xuICB9XG5cbiAgcHVibGljIGdldFNlbGVjdGVkV2lkdGhJdGVtKGZpZWxkSW5kZXg6IG51bWJlcik6IExpc3RJdGVtW10ge1xuICAgIGNvbnN0IHdpZGdldENvbnRlbnQ6IFdpZGdldENvbGxlY3Rpb25Db250ZW50IHwgbnVsbCA9XG4gICAgICB0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0Q29udGVudCgpIGFzIFdpZGdldENvbGxlY3Rpb25Db250ZW50O1xuXG4gICAgcmV0dXJuICF3aWRnZXRDb250ZW50XG4gICAgICA/IHRoaXMuV0lEVEhfSVRFTVNcbiAgICAgIDogdGhpcy5XSURUSF9JVEVNUy5tYXAoKGl0ZW06IExpc3RJdGVtKSA9PiAoe1xuICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgc2VsZWN0ZWQ6IHdpZGdldENvbnRlbnQuZmllbGRzPy5bZmllbGRJbmRleF0/LndpZHRoID09PSBpdGVtLmlkLFxuICAgICAgICB9KSk7XG4gIH1cblxuICBwdWJsaWMgb25Db2x1bW5VcGRhdGVFdmVudChldmVudDoge2RhdGE6IEZpZWxkc0Nhc2VXaWRnZXRWYWx1ZVtdOyB2YWxpZDogYm9vbGVhbn0pOiB2b2lkIHtcbiAgICBjb25zdCB7ZGF0YSwgdmFsaWR9ID0gZXZlbnQ7XG4gICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQudXBkYXRlKChjb250ZW50OiBXaWRnZXRDb250ZW50UHJvcGVydGllcyB8IG51bGwpID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nRmllbGRzID0gKGNvbnRlbnQgYXMgV2lkZ2V0Q29sbGVjdGlvbkNvbnRlbnQpPy5maWVsZHM7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbnRlbnQsXG4gICAgICAgIGZpZWxkczogZGF0YS5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoe1xuICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgd2lkdGg6IGV4aXN0aW5nRmllbGRzPy5baW5kZXhdPy53aWR0aCA/PyAnZnVsbCcsXG4gICAgICAgIH0pKSxcbiAgICAgIH0gYXMgV2lkZ2V0Q29sbGVjdGlvbkNvbnRlbnQ7XG4gICAgfSk7XG4gICAgdGhpcy5fY29udGVudFZhbGlkLnNldCh2YWxpZCk7XG4gICAgdGhpcy5jaGFuZ2VWYWxpZEV2ZW50LmVtaXQodmFsaWQgJiYgdGhpcy53aWRnZXRGb3JtLnZhbGlkKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRlbGV0ZVJvd0NsaWNrKGZvcm1BcnJheTogRm9ybUFycmF5LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCFmb3JtQXJyYXkpIHJldHVybjtcblxuICAgIGZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XG4gIH1cblxuICBwdWJsaWMgb25UeXBlU2VsZWN0ZWQoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGV2ZW50OiB7aXRlbTogTGlzdEl0ZW19KTogdm9pZCB7XG4gICAgdGhpcy53aWRnZXRGaWVsZHNTZXJ2aWNlLm9uRGlzcGxheVR5cGVTZWxlY3RlZChbJ3ZhbHVlJywgJ3R5cGUnXSwgZm9ybUdyb3VwLCBldmVudCk7XG4gIH1cblxuICBwdWJsaWMgb25XaWR0aFNlbGVjdGVkKGV2ZW50OiB7aXRlbTogTGlzdEl0ZW19LCBmaWVsZEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0Q29udGVudC51cGRhdGUoXG4gICAgICAoY29udGVudDogV2lkZ2V0Q29udGVudFByb3BlcnRpZXMgfCBudWxsKSA9PlxuICAgICAgICAoe1xuICAgICAgICAgIC4uLmNvbnRlbnQsXG4gICAgICAgICAgZmllbGRzOiAoY29udGVudCBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCk/LmZpZWxkcy5tYXAoXG4gICAgICAgICAgICAoZmllbGQ6IEZpZWxkc0Nhc2VXaWRnZXRWYWx1ZSAmIHt3aWR0aDogQ29sbGVjdGlvbkZpZWxkV2lkdGh9LCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgICAgICBpbmRleCA9PT0gZmllbGRJbmRleCA/IHsuLi5maWVsZCwgd2lkdGg6IGV2ZW50Lml0ZW0uaWR9IDogZmllbGRcbiAgICAgICAgICApLFxuICAgICAgICB9KSBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXRGb3JtKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQoKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgdGl0bGUgPSAodGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQoKSBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCkudGl0bGU7XG4gICAgaWYgKCF0aXRsZSkgcmV0dXJuO1xuICAgIHRoaXMub25UeXBlU2VsZWN0ZWQodGhpcy5jYXJkRm9ybSwge1xuICAgICAgaXRlbToge2lkOiB0aXRsZS5kaXNwbGF5UHJvcGVydGllcz8udHlwZSA/PyAnJywgY29udGVudDogJycsIHNlbGVjdGVkOiB0cnVlfSxcbiAgICB9KTtcblxuICAgIHRoaXMuY2FyZEZvcm0ucGF0Y2hWYWx1ZShcbiAgICAgIHtcbiAgICAgICAgLi4uKFtcbiAgICAgICAgICBDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuTlVNQkVSLFxuICAgICAgICAgIENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5QRVJDRU5ULFxuICAgICAgICAgIENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5DVVJSRU5DWSxcbiAgICAgICAgXS5pbmNsdWRlcyh0aXRsZS5kaXNwbGF5UHJvcGVydGllcz8udHlwZSBhcyBDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkpICYmIHtcbiAgICAgICAgICBkaWdpdHNJbmZvOiAodGl0bGUuZGlzcGxheVByb3BlcnRpZXMgYXMgQ2FzZVdpZGdldEN1cnJlbmN5RGlzcGxheVR5cGUpLmRpZ2l0c0luZm8sXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4odGl0bGUuZGlzcGxheVByb3BlcnRpZXM/LnR5cGUgPT09IENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5DVVJSRU5DWSAmJiB7XG4gICAgICAgICAgY3VycmVuY3lDb2RlOiAodGl0bGUuZGlzcGxheVByb3BlcnRpZXMgYXMgQ2FzZVdpZGdldEN1cnJlbmN5RGlzcGxheVR5cGUpLmN1cnJlbmN5Q29kZSxcbiAgICAgICAgICBkaXNwbGF5OiAodGl0bGUuZGlzcGxheVByb3BlcnRpZXMgYXMgQ2FzZVdpZGdldEN1cnJlbmN5RGlzcGxheVR5cGUpLmRpc3BsYXksXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4odGl0bGUuZGlzcGxheVByb3BlcnRpZXM/LnR5cGUgPT09IENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5EQVRFICYmIHtcbiAgICAgICAgICBmb3JtYXQ6ICh0aXRsZS5kaXNwbGF5UHJvcGVydGllcyBhcyBDYXNlV2lkZ2V0RGF0ZURpc3BsYXlUeXBlKS5mb3JtYXQsXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4odGl0bGUuZGlzcGxheVByb3BlcnRpZXM/LnR5cGUgPT09IENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5EQVRFX1RJTUUgJiYge1xuICAgICAgICAgIGZvcm1hdDogKHRpdGxlLmRpc3BsYXlQcm9wZXJ0aWVzIGFzIENhc2VXaWRnZXREYXRlVGltZURpc3BsYXlUeXBlKS5mb3JtYXQsXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4odGl0bGUuZGlzcGxheVByb3BlcnRpZXM/LnR5cGUgPT09IENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5FTlVNICYmIHtcbiAgICAgICAgICB2YWx1ZXM6IE9iamVjdC5lbnRyaWVzKCh0aXRsZS5kaXNwbGF5UHJvcGVydGllcyBhcyBDYXNlV2lkZ2V0RW51bURpc3BsYXlUeXBlKS52YWx1ZXMpLm1hcChcbiAgICAgICAgICAgIChba2V5LCB2YWx1ZV0pID0+ICh7a2V5LCB2YWx1ZX0pXG4gICAgICAgICAgKSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgICAge2VtaXRFdmVudDogZmFsc2V9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbldpZGdldEZvcm1TdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLndpZGdldEZvcm0udmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRUaXRsZS5zZXQodmFsdWU/LnRpdGxlID8/ICcnKTtcblxuICAgICAgICB0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0Q29udGVudC51cGRhdGUoXG4gICAgICAgICAgKGNvbnRlbnQ6IFdpZGdldENvbnRlbnRQcm9wZXJ0aWVzIHwgbnVsbCkgPT5cbiAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgIC4uLmNvbnRlbnQsXG4gICAgICAgICAgICAgIGNvbGxlY3Rpb246IHZhbHVlPy5jb2xsZWN0aW9uIHx8ICcnLFxuICAgICAgICAgICAgICBkZWZhdWx0UGFnZVNpemU6IHZhbHVlPy5kZWZhdWx0UGFnZVNpemUgfHwgNSxcbiAgICAgICAgICAgIH0pIGFzIFdpZGdldENvbGxlY3Rpb25Db250ZW50XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VWYWxpZEV2ZW50LmVtaXQoXG4gICAgICAgICAgdGhpcy53aWRnZXRGb3JtLnZhbGlkICYmIHRoaXMuY2FyZEZvcm0udmFsaWQgJiYgdGhpcy5fY29udGVudFZhbGlkKClcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkNhcmRGb3JtU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5jYXJkRm9ybS52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoNTAwKSkuc3Vic2NyaWJlKGZvcm1WYWx1ZSA9PiB7XG4gICAgICAgIGxldCB7dmFsdWUsIC4uLmRpc3BsYXlQcm9wZXJ0aWVzfSA9IGZvcm1WYWx1ZTtcbiAgICAgICAgZGlzcGxheVByb3BlcnRpZXMgPSB7XG4gICAgICAgICAgLi4uZGlzcGxheVByb3BlcnRpZXMsXG4gICAgICAgICAgLi4uKCEhZGlzcGxheVByb3BlcnRpZXMudHlwZSAmJiB7XG4gICAgICAgICAgICB0eXBlOiAoZGlzcGxheVByb3BlcnRpZXMudHlwZSBhcyBMaXN0SXRlbSkuaWQsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgLi4uKCEhZm9ybVZhbHVlLnZhbHVlcyAmJiB7XG4gICAgICAgICAgICB2YWx1ZXM6IChmb3JtVmFsdWUudmFsdWVzIGFzIEFycmF5PHtba2V5OiBzdHJpbmddOiBzdHJpbmd9Pik/LnJlZHVjZShcbiAgICAgICAgICAgICAgKGFjYywgY3VycikgPT4gKHsuLi5hY2MsIFtjdXJyLmtleV06IGN1cnIudmFsdWV9KSxcbiAgICAgICAgICAgICAge31cbiAgICAgICAgICAgICksXG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQudXBkYXRlKFxuICAgICAgICAgIChjb250ZW50OiBXaWRnZXRDb250ZW50UHJvcGVydGllcyB8IG51bGwpID0+XG4gICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAuLi5jb250ZW50LFxuICAgICAgICAgICAgICB0aXRsZToge1xuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIC4uLihkaXNwbGF5UHJvcGVydGllcy50eXBlICE9PSBDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuVEVYVCAmJiB7XG4gICAgICAgICAgICAgICAgICBkaXNwbGF5UHJvcGVydGllcyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pIGFzIGFueVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlVmFsaWRFdmVudC5lbWl0KFxuICAgICAgICAgIHRoaXMud2lkZ2V0Rm9ybS52YWxpZCAmJiB0aGlzLmNhcmRGb3JtLnZhbGlkICYmIHRoaXMuX2NvbnRlbnRWYWxpZCgpXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInt0aGVtZTogdGhlbWUkIHwgYXN5bmN9IGFzIG9ic1wiPlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cIndpZGdldEZvcm1cIiBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uX19mb3JtXCI+XG4gICAgPGNkcy10ZXh0LWxhYmVsIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cIm9icy50aGVtZVwiPlxuICAgICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC53aWRnZXRUaXRsZScgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgPGlucHV0XG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRpdGxlXCJcbiAgICAgICAgY2RzVGV4dFxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC53aWRnZXRUaXRsZVBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIC8+XG4gICAgPC9jZHMtdGV4dC1sYWJlbD5cblxuICAgIDxjZHMtdGV4dC1sYWJlbCBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIj5cbiAgICAgIHt7ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuY29sbGVjdGlvbi5kZWZhdWx0UGFnZVNpemUnIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgIDxpbnB1dFxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZWZhdWx0UGFnZVNpemVcIlxuICAgICAgICBjZHNUZXh0XG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAnd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmNvbGxlY3Rpb24uZGVmYXVsdFBhZ2VTaXplUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXG4gICAgICAgIFwiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIC8+XG4gICAgPC9jZHMtdGV4dC1sYWJlbD5cblxuICAgIDxjZHMtdGV4dC1sYWJlbCBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIj5cbiAgICAgIHt7ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuY29sbGVjdGlvbi5jb2xsZWN0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICA8aW5wdXRcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29sbGVjdGlvblwiXG4gICAgICAgIGNkc1RleHRcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuY29sbGVjdGlvbi5jb2xsZWN0aW9uUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgLz5cbiAgICA8L2Nkcy10ZXh0LWxhYmVsPlxuICA8L2Zvcm0+XG5cbiAgPHNwYW4gY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29sbGVjdGlvbl9fc3VidGl0bGVcIj5cbiAgICB7eyAnd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmNvbGxlY3Rpb24uY2FyZFRpdGxlJyB8IHRyYW5zbGF0ZSB9fVxuICA8L3NwYW4+XG5cbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJjYXJkRm9ybVwiIGNsYXNzPVwidmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb25fX2NhcmRcIj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uX19jYXJkLXRpdGxlXCI+XG4gICAgICA8Y2RzLXRleHQtbGFiZWw+XG4gICAgICAgIHt7ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLnZhbHVlJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNkc1RleHRcbiAgICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy52YWx1ZVBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcbiAgICAgICAgLz5cbiAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG5cbiAgICAgIDxjZHMtZHJvcGRvd25cbiAgICAgICAgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwib2JzLnRoZW1lXCJcbiAgICAgICAgW2xhYmVsXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLnR5cGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2Ryb3BVcF09XCJmYWxzZVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy50eXBlUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgKHNlbGVjdGVkKT1cIm9uVHlwZVNlbGVjdGVkKGNhcmRGb3JtLCAkZXZlbnQpXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidHlwZVwiXG4gICAgICA+XG4gICAgICAgIDxjZHMtZHJvcGRvd24tbGlzdCBbaXRlbXNdPVwiZ2V0RGlzcGxheUl0ZW1zU2VsZWN0ZWQoY2FyZEZvcm0pXCI+PC9jZHMtZHJvcGRvd24tbGlzdD5cbiAgICAgIDwvY2RzLWRyb3Bkb3duPlxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzZWN0aW9uIGNsYXNzPVwidmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb25fX2NhcmQtb3B0aW9uc1wiPlxuICAgICAgQHN3aXRjaCAoY2FyZEZvcm0uZ2V0KCd0eXBlJykudmFsdWUuaWQpIHtcbiAgICAgICAgQGNhc2UgKENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5DVVJSRU5DWSkge1xuICAgICAgICAgIDxjZHMtdGV4dC1sYWJlbD5cbiAgICAgICAgICAgIHt7ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmN1cnJlbmN5Q29kZScgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNkc1RleHRcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwib2JzLnRoZW1lXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgICAgICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmN1cnJlbmN5Q29kZVBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImN1cnJlbmN5Q29kZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG5cbiAgICAgICAgICA8Y2RzLXRleHQtbGFiZWw+XG4gICAgICAgICAgICB7eyAnd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5kaXNwbGF5JyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZGlzcGxheVBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGlzcGxheVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG5cbiAgICAgICAgICA8Y2RzLXRleHQtbGFiZWw+XG4gICAgICAgICAgICB7eyAnd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5kaWdpdHNJbmZvJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZGlnaXRzSW5mb1BsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGlnaXRzSW5mb1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5EQVRFKSB7XG4gICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZm9ybWF0JyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZm9ybWF0UGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJmb3JtYXRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Nkcy10ZXh0LWxhYmVsPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlIChDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuREFURV9USU1FKSB7XG4gICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZm9ybWF0JyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZm9ybWF0UGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJmb3JtYXRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Nkcy10ZXh0LWxhYmVsPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlIChDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuRU5VTSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29sbGVjdGlvbl9fZW51bVwiIGZvcm1BcnJheU5hbWU9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgIEBmb3IgKHJvd1ZhbHVlIG9mIGNhcmRGb3JtLmdldCgndmFsdWVzJyk/LmNvbnRyb2xzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPGZvcm1cbiAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cInJvd1ZhbHVlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uX19lbnVtLWZvcm1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMua2V5JyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwib2JzLnRoZW1lXCJcbiAgICAgICAgICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMua2V5JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwia2V5XCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9jZHMtdGV4dC1sYWJlbD5cblxuICAgICAgICAgICAgICAgIDxjZHMtdGV4dC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgIHt7ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLnZhbHVlJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMudmFsdWUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjZHNCdXR0b249XCJkYW5nZXItLWdob3N0XCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIkY291bnQgPT09IDFcIlxuICAgICAgICAgICAgICAgICAgW2ljb25Pbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtZmllbGQtY29sdW1uX19kZWxldGUtYnV0dG9uIGVudW1cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlUm93Q2xpY2soY2FyZEZvcm0uZ2V0KCd2YWx1ZXMnKSwgJGluZGV4KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cInRyYXNoLWNhblwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2RzQnV0dG9uPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkFkZEVudW1WYWx1ZUNsaWNrKGNhcmRGb3JtLmdldCgndmFsdWVzJykpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuYWRkRW51bScgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwiYWRkXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5Lk5VTUJFUikge1xuICAgICAgICAgIDxjZHMtdGV4dC1sYWJlbD5cbiAgICAgICAgICAgIHt7ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmRpZ2l0c0luZm8nIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjZHNUZXh0XG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cIm9icy50aGVtZVwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5kaWdpdHNJbmZvJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGlnaXRzSW5mb1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5QRVJDRU5UKSB7XG4gICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZGlnaXRzSW5mbycgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNkc1RleHRcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwib2JzLnRoZW1lXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmRpZ2l0c0luZm8nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkaWdpdHNJbmZvXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9jZHMtdGV4dC1sYWJlbD5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvc2VjdGlvbj5cbiAgPC9mb3JtPlxuXG4gIDxzcGFuIGNsYXNzPVwidmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb25fX3N1YnRpdGxlXCI+XG4gICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5jb2xsZWN0aW9uLmNhcmRGaWVsZHMnIHwgdHJhbnNsYXRlIH19XG4gIDwvc3Bhbj5cblxuICA8dmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWZpZWxkcy1jb2x1bW5cbiAgICBbY29sdW1uRGF0YV09XCJjb250ZW50KCk/LmZpZWxkc1wiXG4gICAgW2ZpZWxkV2lkdGhEcm9wZG93bl09XCJmaWVsZFdpZHRoRHJvcGRvd25cIlxuICAgIChjb2x1bW5VcGRhdGVFdmVudCk9XCJvbkNvbHVtblVwZGF0ZUV2ZW50KCRldmVudClcIlxuICA+XG4gIDwvdmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWZpZWxkcy1jb2x1bW4+XG5cbiAgPG5nLXRlbXBsYXRlICNmaWVsZFdpZHRoRHJvcGRvd24gbGV0LWluZGV4PVwiaW5kZXhcIj5cbiAgICA8Y2RzLWRyb3Bkb3duXG4gICAgICBbbGFiZWxdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5jb2xsZWN0aW9uLmZpZWxkV2lkdGgnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtkcm9wVXBdPVwiZmFsc2VcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuY29sbGVjdGlvbi5maWVsZFdpZHRoUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgIChzZWxlY3RlZCk9XCJvbldpZHRoU2VsZWN0ZWQoJGV2ZW50LCBpbmRleClcIlxuICAgID5cbiAgICAgIDxjZHMtZHJvcGRvd24tbGlzdCBbaXRlbXNdPVwiZ2V0U2VsZWN0ZWRXaWR0aEl0ZW0oaW5kZXgpXCI+PC9jZHMtZHJvcGRvd24tbGlzdD5cbiAgICA8L2Nkcy1kcm9wZG93bj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuIl19
|