@tsi-developpement/tsi-shared-ui 1.7.39 → 1.8.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/consts/app-providers.mjs +4 -2
- package/esm2022/lib/models/common/entity-properties.mjs +1 -1
- package/esm2022/lib/services/form/form-state.service.mjs +13 -0
- package/esm2022/lib/services/validation/input-registry.service.mjs +9 -1
- package/esm2022/lib/tsi-base/components/tsi-form-base/tsi-form-base.component.mjs +44 -7
- package/esm2022/lib/tsi-base/tsi-input-base/tsi-input-base.component.mjs +16 -9
- package/esm2022/lib/tsi-components/create-or-edit-entity-informations/create-or-edit-entity-informations.component.mjs +3 -3
- package/esm2022/lib/tsi-components/create-or-edit-modele-import/create-or-edit-modele-import.component.mjs +3 -3
- package/esm2022/lib/tsi-components/input-components/editable-grid/editable-grid.component.mjs +12 -10
- package/esm2022/lib/tsi-components/input-components/tsi-checkbox/tsi-checkbox.component.mjs +2 -1
- package/esm2022/lib/tsi-components/input-components/tsi-currency-other-input/tsi-currency-other-input.component.mjs +6 -4
- package/esm2022/lib/tsi-components/input-components/tsi-currency-societe-input/tsi-currency-societe-input.component.mjs +6 -4
- package/esm2022/lib/tsi-components/input-components/tsi-date-picker/tsi-date-picker.component.mjs +8 -5
- package/esm2022/lib/tsi-components/input-components/tsi-decimal-input/tsi-decimal-input.component.mjs +6 -4
- package/esm2022/lib/tsi-components/input-components/tsi-file-manager/tsi-file-manager.component.mjs +5 -1
- package/esm2022/lib/tsi-components/input-components/tsi-formula-box/tsi-formula-box.component.mjs +5 -3
- package/esm2022/lib/tsi-components/input-components/tsi-integer/tsi-integer.component.mjs +6 -4
- package/esm2022/lib/tsi-components/input-components/tsi-radio-button/tsi-radio-button.component.mjs +2 -1
- package/esm2022/lib/tsi-components/input-components/tsi-rate-input/tsi-rate-input.component.mjs +6 -4
- package/esm2022/lib/tsi-components/input-components/tsi-search-combo/tsi-search-combo.component.mjs +2 -1
- package/esm2022/lib/tsi-components/input-components/tsi-text-area/tsi-text-area.component.mjs +2 -1
- package/esm2022/lib/tsi-components/input-components/tsi-text-box/tsi-text-box.component.mjs +4 -3
- package/esm2022/lib/tsi-components/input-components/tsi-time-picker/tsi-time-picker.component.mjs +10 -8
- package/esm2022/lib/tsi-components/manage-reporting/add-report-popup/add-report-popup.component.mjs +3 -3
- package/esm2022/lib/tsi-components/output-components/tsi-generic-grid/tsi-generic-grid.component.mjs +3 -3
- package/esm2022/lib/tsi-components/reporting/reporting.component.mjs +16 -9
- package/esm2022/lib/tsi-components/tsi-change-password/tsi-change-password.component.mjs +3 -3
- package/esm2022/lib/tsi-components/tsi-dynamic-form/create-or-edit-dynamic-form/create-or-edit-dynamic-form.component.mjs +3 -3
- package/esm2022/lib/tsi-components/tsi-form/tsi-form.component.mjs +11 -3
- package/esm2022/lib/tsi-components/tsi-generic-form/tsi-generic-form.component.mjs +3 -3
- package/esm2022/lib/tsi-components/tsi-modal-footer/tsi-modal-footer.component.mjs +20 -9
- package/esm2022/lib/tsi-components/tsi-modal-header/tsi-modal-header.component.mjs +8 -1
- package/esm2022/lib/tsi-components/tsi-notes-createoredit/tsi-notes.component.mjs +3 -3
- package/esm2022/lib/tsi-components/tsi-upload-fiche/tsi-upload-fiche.component.mjs +3 -3
- package/fesm2022/tsi-developpement-tsi-shared-ui.mjs +202 -83
- package/fesm2022/tsi-developpement-tsi-shared-ui.mjs.map +1 -1
- package/lib/consts/app-providers.d.ts +2 -1
- package/lib/models/common/entity-properties.d.ts +1 -0
- package/lib/providers/shared-ui-tsi.provider.d.ts +1 -1
- package/lib/services/form/form-state.service.d.ts +7 -0
- package/lib/services/validation/input-registry.service.d.ts +1 -0
- package/lib/tsi-base/components/tsi-form-base/tsi-form-base.component.d.ts +15 -5
- package/lib/tsi-base/tsi-input-base/tsi-input-base.component.d.ts +5 -1
- package/lib/tsi-components/input-components/editable-grid/editable-grid.component.d.ts +3 -4
- package/lib/tsi-components/input-components/tsi-currency-other-input/tsi-currency-other-input.component.d.ts +1 -1
- package/lib/tsi-components/input-components/tsi-currency-societe-input/tsi-currency-societe-input.component.d.ts +1 -1
- package/lib/tsi-components/input-components/tsi-date-picker/tsi-date-picker.component.d.ts +3 -2
- package/lib/tsi-components/input-components/tsi-decimal-input/tsi-decimal-input.component.d.ts +1 -1
- package/lib/tsi-components/input-components/tsi-integer/tsi-integer.component.d.ts +1 -1
- package/lib/tsi-components/input-components/tsi-rate-input/tsi-rate-input.component.d.ts +1 -1
- package/lib/tsi-components/input-components/tsi-time-picker/tsi-time-picker.component.d.ts +1 -1
- package/lib/tsi-components/reporting/reporting.component.d.ts +4 -1
- package/lib/tsi-components/tsi-form/tsi-form.component.d.ts +4 -1
- package/lib/tsi-components/tsi-modal-footer/tsi-modal-footer.component.d.ts +6 -2
- package/lib/tsi-components/tsi-modal-header/tsi-modal-header.component.d.ts +3 -1
- package/package.json +1 -1
|
@@ -158,10 +158,10 @@ export class CreateOrEditDynamicFormComponent extends TsiFormComponentBaseCompon
|
|
|
158
158
|
});
|
|
159
159
|
}
|
|
160
160
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateOrEditDynamicFormComponent, deps: [{ token: i1.ErrorResponseManagerService }, { token: i2.DynamicDialogRef }, { token: i2.DynamicDialogConfig }, { token: i3.TsiNotificationService }, { token: i4.DialogDataService }, { token: i5.FormDataService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
161
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateOrEditDynamicFormComponent, selector: "lib-create-or-edit-dynamic-form", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"'shared_notes_add_form' | localize \" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n <div class=\"card\">\r\n <div class=\"grid\">\r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"'shared_notes_form'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [(bind)]=\"formData.formulaireUid\"\r\n [listSourceUrl]=\"formulaireEndpoint.getAllFormulairesMinimal()\"\r\n [elementSourceUrl]=\"formulaireEndpoint.getFormulaireMinimal()\"\r\n [disabled]=\"isDeleteMode() || isConsultMode()\" (bindChange)=\"onFormulaireChange($event)\" id-field=\"uid\"\r\n label-field=\"nomObservation\" [showClear]=\"true\" [isFiltered]=\"true\"\r\n [listSourceParams]=\"getFormulaireParams\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n \r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"'shared_notes_form_date'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Date-Picker [inputName]=\"'Date'\" [showTime]=\"true\" [(inputField)]=\"formData.date\"/>\r\n </div>\r\n\r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"'shared_notes_form_obs'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Text-Box [(inputField)]=\"formData.observation\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <p-tabView *ngIf=\"formData.formulaireUid && isFormReady\" >\r\n <p-tabPanel *ngFor=\"let grp of formData.formulaireColonnesGrouped\" [header]=\"grp.key\">\r\n <div class=\"grid\">\r\n <div class=\"col-12 grid form-row\" *ngFor=\"let col of grp.value\">\r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"col.nom\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.string\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Text-Box [disabled]=\"isDeleteMode() || isConsultMode()\"\r\n [(inputField)]=\"col.data.valeurString\" >\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.int\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Integer [disabled]=\"isDeleteMode() || isConsultMode()\"\r\n [(inputField)]=\"col.data.valeurInt\" >\r\n </Tsi-Integer>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.decimal\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Decimal-Input [disabled]=\"isDeleteMode() || isConsultMode()\"\r\n [(inputField)]=\"col.data.valeurDecimal\" >\r\n </Tsi-Decimal-Input>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.boolean\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-CheckBox [disabled]=\"isDeleteMode() || isConsultMode()\" [isBinary]=\"false\"\r\n [(inputField)]=\"col.data.valeurBoolean\" >\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.binary\">\r\n binary input (not handled yet)\r\n </div>\r\n </div>\r\n </div>\r\n </p-tabPanel>\r\n </p-tabView>\r\n </fieldset>\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [":host ::ng-deep .p-tabview-nav{background:#f8f9fa;border-bottom:2px solid #e0e0e0;padding:.5rem 1rem;border-radius:10px 10px 0 0}:host ::ng-deep .p-tabview-nav li .p-tabview-nav-link{padding:1rem 1.2rem;font-weight:600;border-radius:8px;transition:all .25s ease-in-out}:host ::ng-deep .p-tabview-nav li.p-highlight .p-tabview-nav-link{background:#3b82f6;color:#fff;border-color:transparent}:host ::ng-deep .p-tabview-nav li:not(.p-highlight) .p-tabview-nav-link:hover{background:#eef4ff}.form-row{border-bottom:1px dashed #e2e2e2}.form-row:last-child{border-bottom:none}.form-label{font-weight:600;color:#333;padding-top:.5rem}:host ::ng-deep .p-tabview-nav li .p-tabview-nav-link,:host ::ng-deep .p-tabview-nav li.p-highlight .p-tabview-nav-link{border-radius:6px}:host ::ng-deep .p-tabview-nav{border:1px solid #d0d7e2;border-radius:6px 6px 0 0;background:#f8f9fa;padding:.3rem .5rem}:host ::ng-deep .p-tabview-panels{border:1px solid #d0d7e2;border-radius:0 0 6px 6px;margin-top:-1px;background:#fff;padding:1rem}.input-wrapper,.input-wrapper>tsi-text-box,.input-wrapper>tsi-integer,.input-wrapper>tsi-decimal-input,.input-wrapper>tsi-check-box{width:100%;display:block}.form-input{display:flex;align-items:center}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i7.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: i8.TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "maxSelectedLabels", "tooltipMaxDisplayedItems", "bindMode", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick", "selectionChange"] }, { kind: "component", type: i9.TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: i10.TsiDatePickerComponent, selector: "Tsi-Date-Picker", inputs: ["required", "showTime", "showButtonBar"], outputs: ["inputFieldChange"] }, { kind: "component", type: i11.TsiDecimalInputComponent, selector: "Tsi-Decimal-Input", inputs: ["numOfDecimal", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i12.TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i13.TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i14.TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: i15.TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: i16.TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "component", type: i17.TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: i18.LocalizePipe, name: "localize" }] }); }
|
|
161
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateOrEditDynamicFormComponent, selector: "lib-create-or-edit-dynamic-form", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"'shared_notes_add_form' | localize \" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n <div class=\"card\">\r\n <div class=\"grid\">\r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"'shared_notes_form'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [(bind)]=\"formData.formulaireUid\"\r\n [listSourceUrl]=\"formulaireEndpoint.getAllFormulairesMinimal()\"\r\n [elementSourceUrl]=\"formulaireEndpoint.getFormulaireMinimal()\"\r\n [disabled]=\"isDeleteMode() || isConsultMode()\" (bindChange)=\"onFormulaireChange($event)\" id-field=\"uid\"\r\n label-field=\"nomObservation\" [showClear]=\"true\" [isFiltered]=\"true\"\r\n [listSourceParams]=\"getFormulaireParams\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n \r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"'shared_notes_form_date'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Date-Picker [inputName]=\"'Date'\" [showTime]=\"true\" [(inputField)]=\"formData.date\"/>\r\n </div>\r\n\r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"'shared_notes_form_obs'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Text-Box [(inputField)]=\"formData.observation\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <p-tabView *ngIf=\"formData.formulaireUid && isFormReady\" >\r\n <p-tabPanel *ngFor=\"let grp of formData.formulaireColonnesGrouped\" [header]=\"grp.key\">\r\n <div class=\"grid\">\r\n <div class=\"col-12 grid form-row\" *ngFor=\"let col of grp.value\">\r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"col.nom\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.string\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Text-Box [disabled]=\"isDeleteMode() || isConsultMode()\"\r\n [(inputField)]=\"col.data.valeurString\" >\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.int\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Integer [disabled]=\"isDeleteMode() || isConsultMode()\"\r\n [(inputField)]=\"col.data.valeurInt\" >\r\n </Tsi-Integer>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.decimal\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Decimal-Input [disabled]=\"isDeleteMode() || isConsultMode()\"\r\n [(inputField)]=\"col.data.valeurDecimal\" >\r\n </Tsi-Decimal-Input>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.boolean\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-CheckBox [disabled]=\"isDeleteMode() || isConsultMode()\" [isBinary]=\"false\"\r\n [(inputField)]=\"col.data.valeurBoolean\" >\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.binary\">\r\n binary input (not handled yet)\r\n </div>\r\n </div>\r\n </div>\r\n </p-tabPanel>\r\n </p-tabView>\r\n </fieldset>\r\n <Tsi-Modal-Footer [showSaveAndCloseButton]=\"false\" [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [":host ::ng-deep .p-tabview-nav{background:#f8f9fa;border-bottom:2px solid #e0e0e0;padding:.5rem 1rem;border-radius:10px 10px 0 0}:host ::ng-deep .p-tabview-nav li .p-tabview-nav-link{padding:1rem 1.2rem;font-weight:600;border-radius:8px;transition:all .25s ease-in-out}:host ::ng-deep .p-tabview-nav li.p-highlight .p-tabview-nav-link{background:#3b82f6;color:#fff;border-color:transparent}:host ::ng-deep .p-tabview-nav li:not(.p-highlight) .p-tabview-nav-link:hover{background:#eef4ff}.form-row{border-bottom:1px dashed #e2e2e2}.form-row:last-child{border-bottom:none}.form-label{font-weight:600;color:#333;padding-top:.5rem}:host ::ng-deep .p-tabview-nav li .p-tabview-nav-link,:host ::ng-deep .p-tabview-nav li.p-highlight .p-tabview-nav-link{border-radius:6px}:host ::ng-deep .p-tabview-nav{border:1px solid #d0d7e2;border-radius:6px 6px 0 0;background:#f8f9fa;padding:.3rem .5rem}:host ::ng-deep .p-tabview-panels{border:1px solid #d0d7e2;border-radius:0 0 6px 6px;margin-top:-1px;background:#fff;padding:1rem}.input-wrapper,.input-wrapper>tsi-text-box,.input-wrapper>tsi-integer,.input-wrapper>tsi-decimal-input,.input-wrapper>tsi-check-box{width:100%;display:block}.form-input{display:flex;align-items:center}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i7.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: i8.TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "maxSelectedLabels", "tooltipMaxDisplayedItems", "bindMode", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick", "selectionChange"] }, { kind: "component", type: i9.TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: i10.TsiDatePickerComponent, selector: "Tsi-Date-Picker", inputs: ["required", "showTime", "showButtonBar"], outputs: ["inputFieldChange"] }, { kind: "component", type: i11.TsiDecimalInputComponent, selector: "Tsi-Decimal-Input", inputs: ["numOfDecimal", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i12.TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i13.TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i14.TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: i15.TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton", "showSaveAndCloseButton"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: i16.TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "component", type: i17.TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: i18.LocalizePipe, name: "localize" }] }); }
|
|
162
162
|
}
|
|
163
163
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateOrEditDynamicFormComponent, decorators: [{
|
|
164
164
|
type: Component,
|
|
165
|
-
args: [{ selector: 'lib-create-or-edit-dynamic-form', providers: [...appProviders], template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"'shared_notes_add_form' | localize \" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n <div class=\"card\">\r\n <div class=\"grid\">\r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"'shared_notes_form'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [(bind)]=\"formData.formulaireUid\"\r\n [listSourceUrl]=\"formulaireEndpoint.getAllFormulairesMinimal()\"\r\n [elementSourceUrl]=\"formulaireEndpoint.getFormulaireMinimal()\"\r\n [disabled]=\"isDeleteMode() || isConsultMode()\" (bindChange)=\"onFormulaireChange($event)\" id-field=\"uid\"\r\n label-field=\"nomObservation\" [showClear]=\"true\" [isFiltered]=\"true\"\r\n [listSourceParams]=\"getFormulaireParams\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n \r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"'shared_notes_form_date'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Date-Picker [inputName]=\"'Date'\" [showTime]=\"true\" [(inputField)]=\"formData.date\"/>\r\n </div>\r\n\r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"'shared_notes_form_obs'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Text-Box [(inputField)]=\"formData.observation\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <p-tabView *ngIf=\"formData.formulaireUid && isFormReady\" >\r\n <p-tabPanel *ngFor=\"let grp of formData.formulaireColonnesGrouped\" [header]=\"grp.key\">\r\n <div class=\"grid\">\r\n <div class=\"col-12 grid form-row\" *ngFor=\"let col of grp.value\">\r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"col.nom\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.string\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Text-Box [disabled]=\"isDeleteMode() || isConsultMode()\"\r\n [(inputField)]=\"col.data.valeurString\" >\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.int\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Integer [disabled]=\"isDeleteMode() || isConsultMode()\"\r\n [(inputField)]=\"col.data.valeurInt\" >\r\n </Tsi-Integer>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.decimal\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Decimal-Input [disabled]=\"isDeleteMode() || isConsultMode()\"\r\n [(inputField)]=\"col.data.valeurDecimal\" >\r\n </Tsi-Decimal-Input>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.boolean\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-CheckBox [disabled]=\"isDeleteMode() || isConsultMode()\" [isBinary]=\"false\"\r\n [(inputField)]=\"col.data.valeurBoolean\" >\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.binary\">\r\n binary input (not handled yet)\r\n </div>\r\n </div>\r\n </div>\r\n </p-tabPanel>\r\n </p-tabView>\r\n </fieldset>\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [":host ::ng-deep .p-tabview-nav{background:#f8f9fa;border-bottom:2px solid #e0e0e0;padding:.5rem 1rem;border-radius:10px 10px 0 0}:host ::ng-deep .p-tabview-nav li .p-tabview-nav-link{padding:1rem 1.2rem;font-weight:600;border-radius:8px;transition:all .25s ease-in-out}:host ::ng-deep .p-tabview-nav li.p-highlight .p-tabview-nav-link{background:#3b82f6;color:#fff;border-color:transparent}:host ::ng-deep .p-tabview-nav li:not(.p-highlight) .p-tabview-nav-link:hover{background:#eef4ff}.form-row{border-bottom:1px dashed #e2e2e2}.form-row:last-child{border-bottom:none}.form-label{font-weight:600;color:#333;padding-top:.5rem}:host ::ng-deep .p-tabview-nav li .p-tabview-nav-link,:host ::ng-deep .p-tabview-nav li.p-highlight .p-tabview-nav-link{border-radius:6px}:host ::ng-deep .p-tabview-nav{border:1px solid #d0d7e2;border-radius:6px 6px 0 0;background:#f8f9fa;padding:.3rem .5rem}:host ::ng-deep .p-tabview-panels{border:1px solid #d0d7e2;border-radius:0 0 6px 6px;margin-top:-1px;background:#fff;padding:1rem}.input-wrapper,.input-wrapper>tsi-text-box,.input-wrapper>tsi-integer,.input-wrapper>tsi-decimal-input,.input-wrapper>tsi-check-box{width:100%;display:block}.form-input{display:flex;align-items:center}\n"] }]
|
|
165
|
+
args: [{ selector: 'lib-create-or-edit-dynamic-form', providers: [...appProviders], template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"'shared_notes_add_form' | localize \" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n <div class=\"card\">\r\n <div class=\"grid\">\r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"'shared_notes_form'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [(bind)]=\"formData.formulaireUid\"\r\n [listSourceUrl]=\"formulaireEndpoint.getAllFormulairesMinimal()\"\r\n [elementSourceUrl]=\"formulaireEndpoint.getFormulaireMinimal()\"\r\n [disabled]=\"isDeleteMode() || isConsultMode()\" (bindChange)=\"onFormulaireChange($event)\" id-field=\"uid\"\r\n label-field=\"nomObservation\" [showClear]=\"true\" [isFiltered]=\"true\"\r\n [listSourceParams]=\"getFormulaireParams\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n \r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"'shared_notes_form_date'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Date-Picker [inputName]=\"'Date'\" [showTime]=\"true\" [(inputField)]=\"formData.date\"/>\r\n </div>\r\n\r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"'shared_notes_form_obs'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Text-Box [(inputField)]=\"formData.observation\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <p-tabView *ngIf=\"formData.formulaireUid && isFormReady\" >\r\n <p-tabPanel *ngFor=\"let grp of formData.formulaireColonnesGrouped\" [header]=\"grp.key\">\r\n <div class=\"grid\">\r\n <div class=\"col-12 grid form-row\" *ngFor=\"let col of grp.value\">\r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"col.nom\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.string\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Text-Box [disabled]=\"isDeleteMode() || isConsultMode()\"\r\n [(inputField)]=\"col.data.valeurString\" >\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.int\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Integer [disabled]=\"isDeleteMode() || isConsultMode()\"\r\n [(inputField)]=\"col.data.valeurInt\" >\r\n </Tsi-Integer>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.decimal\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Decimal-Input [disabled]=\"isDeleteMode() || isConsultMode()\"\r\n [(inputField)]=\"col.data.valeurDecimal\" >\r\n </Tsi-Decimal-Input>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.boolean\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-CheckBox [disabled]=\"isDeleteMode() || isConsultMode()\" [isBinary]=\"false\"\r\n [(inputField)]=\"col.data.valeurBoolean\" >\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.binary\">\r\n binary input (not handled yet)\r\n </div>\r\n </div>\r\n </div>\r\n </p-tabPanel>\r\n </p-tabView>\r\n </fieldset>\r\n <Tsi-Modal-Footer [showSaveAndCloseButton]=\"false\" [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [":host ::ng-deep .p-tabview-nav{background:#f8f9fa;border-bottom:2px solid #e0e0e0;padding:.5rem 1rem;border-radius:10px 10px 0 0}:host ::ng-deep .p-tabview-nav li .p-tabview-nav-link{padding:1rem 1.2rem;font-weight:600;border-radius:8px;transition:all .25s ease-in-out}:host ::ng-deep .p-tabview-nav li.p-highlight .p-tabview-nav-link{background:#3b82f6;color:#fff;border-color:transparent}:host ::ng-deep .p-tabview-nav li:not(.p-highlight) .p-tabview-nav-link:hover{background:#eef4ff}.form-row{border-bottom:1px dashed #e2e2e2}.form-row:last-child{border-bottom:none}.form-label{font-weight:600;color:#333;padding-top:.5rem}:host ::ng-deep .p-tabview-nav li .p-tabview-nav-link,:host ::ng-deep .p-tabview-nav li.p-highlight .p-tabview-nav-link{border-radius:6px}:host ::ng-deep .p-tabview-nav{border:1px solid #d0d7e2;border-radius:6px 6px 0 0;background:#f8f9fa;padding:.3rem .5rem}:host ::ng-deep .p-tabview-panels{border:1px solid #d0d7e2;border-radius:0 0 6px 6px;margin-top:-1px;background:#fff;padding:1rem}.input-wrapper,.input-wrapper>tsi-text-box,.input-wrapper>tsi-integer,.input-wrapper>tsi-decimal-input,.input-wrapper>tsi-check-box{width:100%;display:block}.form-input{display:flex;align-items:center}\n"] }]
|
|
166
166
|
}], ctorParameters: () => [{ type: i1.ErrorResponseManagerService }, { type: i2.DynamicDialogRef }, { type: i2.DynamicDialogConfig }, { type: i3.TsiNotificationService }, { type: i4.DialogDataService }, { type: i5.FormDataService }] });
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW9yLWVkaXQtZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktZHluYW1pYy1mb3JtL2NyZWF0ZS1vci1lZGl0LWR5bmFtaWMtZm9ybS9jcmVhdGUtb3ItZWRpdC1keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL3RzaS1keW5hbWljLWZvcm0vY3JlYXRlLW9yLWVkaXQtZHluYW1pYy1mb3JtL2NyZWF0ZS1vci1lZGl0LWR5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBTW5ILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU3RCxPQUFPLEVBR0wsY0FBYyxFQUNkLHFCQUFxQixHQUV0QixNQUFNLHlDQUF5QyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVwRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEUsT0FBTyxFQUFjLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTbEQsTUFBTSxPQUFPLGdDQUFpQyxTQUFRLDZCQUE2QjtJQVFqRixZQUNVLDRCQUF5RCxF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WUFDckIsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLFFBQTJCLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2dCQUNwQixJQUFJLENBQUMsNEJBQTRCLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0QsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBcEpVLGdDQUFnQzttR0FBaEMsZ0NBQWdDLDBEQUZoQyxDQUFDLEdBQUcsWUFBWSxDQUFDLGlEQzVCOUIsMHhKQWdGVzs7NEZEbERFLGdDQUFnQztrQkFONUMsU0FBUzsrQkFDRSxpQ0FBaUMsYUFHaEMsQ0FBQyxHQUFHLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUc2lGb3JtQ29tcG9uZW50QmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3RzaS1iYXNlL2NvbXBvbmVudHMvdHNpLWZvcm0tYmFzZS90c2ktZm9ybS1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IER5bmFtaWNEaWFsb2dDb25maWcsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBEaWFsb2dEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2RpYWxvZy1kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUc2lDb25maXJtYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbm90aWZpY2F0aW9uL3RzaS1jb25maXJtYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFRzaU5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24vdHNpLW5vdGlmaWNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbm90aWZpY2F0aW9uL2Vycm9yLXJlc3BvbnNlLW1hbmFnZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IGZvcm11bGFpcmVFbmRwb2ludHMgfSBmcm9tICcuLi8uLi8uLi9lbmQtcG9pbnRzL2Zvcm11bGFpcmUtZW5kcG9pbnRzJztcclxuaW1wb3J0IHsgYXBwUHJvdmlkZXJzIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RzL2FwcC1wcm92aWRlcnMnO1xyXG5pbXBvcnQgeyBGb3JtRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9keW5hbWljLWZvcm0vZm9ybS1kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIFVwc2VydEZvcm1EYXRhQ29sb25uZVJlcXVlc3QsXHJcbiAgRm9ybXVsYWlyZUNvbG9ubmUsXHJcbiAgRm9ybXVsYWlyZURhdGEsXHJcbiAgRm9ybXVsYWlyZURhdGFDb2xvbm5lLFxyXG4gIEZvcm11bGFpcmVSZXNwb25zZSxcclxufSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZHluYW1pYy1mb3JtL2Zvcm11bGFpcmUnO1xyXG5pbXBvcnQgeyBmb3JtVHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0cy9mb3JtLXR5cGUnO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25LZXlzIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RzL2xvY2FsaXphdGlvbi1rZXknO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgTW9kZXMgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9jb21wb25lbnQtdXNlLW1vZGVzLWVudW0nO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jcmVhdGUtb3ItZWRpdC1keW5hbWljLWZvcm0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtb3ItZWRpdC1keW5hbWljLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jcmVhdGUtb3ItZWRpdC1keW5hbWljLWZvcm0uY29tcG9uZW50LmNzcycsXHJcbiAgcHJvdmlkZXJzOiBbLi4uYXBwUHJvdmlkZXJzXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENyZWF0ZU9yRWRpdER5bmFtaWNGb3JtQ29tcG9uZW50IGV4dGVuZHMgVHNpRm9ybUNvbXBvbmVudEJhc2VDb21wb25lbnQge1xyXG4gIGZvcm11bGFpcmVFbmRwb2ludCA9IGZvcm11bGFpcmVFbmRwb2ludHM7XHJcbiAgb2JqZWN0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBpc0Zvcm1SZWFkeTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGZvcm1UeXBlID0gZm9ybVR5cGU7XHJcbiAgZm9ybURhdGE6IEZvcm11bGFpcmVEYXRhID0gbmV3IEZvcm11bGFpcmVEYXRhKCk7XHJcbiAgZ2V0Rm9ybXVsYWlyZVBhcmFtczogS2V5VmFsdWU8c3RyaW5nLCBzdHJpbmc+W107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlOiBFcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2UsXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgcmVmOiBEeW5hbWljRGlhbG9nUmVmLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZyxcclxuICAgIHByaXZhdGUgX25vdGlmaWNhdGlvblNlcnZpY2U6IFRzaU5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZGlhbG9nRGF0YVNlcnZpY2U6IERpYWxvZ0RhdGFTZXJ2aWNlLFxyXG4gICAgcHVibGljIGZvcm1EYXRhU2VydmljZTogRm9ybURhdGFTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihyZWYsIGNvbmZpZyk7XHJcblxyXG4gICAgaWYoIWNvbmZpZz8uZGF0YT8uY3VzdG9tRGF0YSkge1xyXG4gICAgICB0aGlzLmdldEZvcm11bGFpcmVQYXJhbXMgPSBbXTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZ2V0Rm9ybXVsYWlyZVBhcmFtcyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGtleTogJ2VudGl0eU5hbWUnLFxyXG4gICAgICAgIHZhbHVlOiBjb25maWcuZGF0YS5jdXN0b21EYXRhLmJ1c2luZXNzQ2xhc3NcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogJ2Rpc2NyaW1pbmF0b3JWYWx1ZScsXHJcbiAgICAgICAgdmFsdWU6IGNvbmZpZy5kYXRhLmN1c3RvbURhdGEuZGlzY3JpbWluYXRvclZhbHVlXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLm9iamVjdElkID0gdGhpcy5kaWFsb2dEYXRhU2VydmljZS5nZXREYXRhKCkub2NjdXJlbmNlO1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIC8vIGluaXQgRm9ybURhdGEgZm9yIENVRCBvcGVyYXRpb25zXHJcbiAgICB0aGlzLmZvcm1EYXRhID0ge1xyXG4gICAgICAuLi50aGlzLmZvcm1EYXRhLFxyXG4gICAgICBjbGFzc05hbWU6IHRoaXMuZGlhbG9nRGF0YVNlcnZpY2UuZ2V0RGF0YSgpLmNsYXNzLFxyXG4gICAgICBvY2N1cmVuY2U6IHRoaXMub2JqZWN0SWQsXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLm1vZGUgPT0gTW9kZXMuY3JlYXRlKSBcclxuICAgIHtcclxuICAgICAgdGhpcy5mb3JtRGF0YS5kYXRlID0gbmV3IERhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoKHRoaXMubW9kZSA9PT0gTW9kZXMuZWRpdCB8fCB0aGlzLm1vZGUgPT09IE1vZGVzLmRlbGV0ZSB8fCB0aGlzLm1vZGUgPT09IE1vZGVzLmNvbnN1bHQpICYmIHRoaXMuaWQgIT09IG51bGwgJiYgdGhpcy5pZCAhPT0gdW5kZWZpbmVkICkge1xyXG4gICAgICBsZXQgX2Zvcm1EYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5mb3JtRGF0YVNlcnZpY2UuZ2V0QnlJZCh0aGlzLmlkKSk7XHJcbiAgICAgICB0aGlzLmZvcm1EYXRhID0ge1xyXG4gICAgICAgICAgLi4uX2Zvcm1EYXRhLFxyXG4gICAgICAgICAgZm9ybXVsYWlyZUNvbG9ubmVzR3JvdXBlZDogdGhpcy5ncm91cEJ5R3JvdXBlKF9mb3JtRGF0YS5mb3JtdWxhaXJlQ29sb25uZXMpXHJcbiAgICAgICAgfTtcclxuICAgICAgdGhpcy5pc0Zvcm1SZWFkeSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkZvcm11bGFpcmVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5mb3JtRGF0YS5mb3JtdWxhaXJlVWlkID0gZXZlbnQ7XHJcbiAgICB0aGlzLmZvcm1EYXRhU2VydmljZS5nZXRGb3JtQnlVaWQoZXZlbnQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IEZvcm11bGFpcmVSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHJlcy5mb3JtdWxhaXJlQ29sb25uZXMuZm9yRWFjaChmYyA9PiB7XHJcbiAgICAgICAgICBmYy5kYXRhID0gbmV3IEZvcm11bGFpcmVEYXRhQ29sb25uZSh1bmRlZmluZWQsIGZjLnVpZCwgdGhpcy5mb3JtRGF0YS51aWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRydWUpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5mb3JtRGF0YSA9IHtcclxuICAgICAgICAgIC4uLnRoaXMuZm9ybURhdGEsXHJcbiAgICAgICAgICBmb3JtdWxhaXJlVWlkOiByZXMudWlkLFxyXG4gICAgICAgICAgZm9ybXVsYWlyZUNvbG9ubmVzR3JvdXBlZDogdGhpcy5ncm91cEJ5R3JvdXBlKHJlcy5mb3JtdWxhaXJlQ29sb25uZXMpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNGb3JtUmVhZHkgPSB0cnVlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ3JvdXBCeUdyb3VwZShmb3JtQ29sczogRm9ybXVsYWlyZUNvbG9ubmVbXSkge1xyXG4gICAgY29uc3QgZ3JvdXBlZDogeyBrZXk6IHN0cmluZywgdmFsdWU6IEZvcm11bGFpcmVDb2xvbm5lW10gfVtdID0gW107XHJcblxyXG4gICBmb3JtQ29scy5mb3JFYWNoKGNvbCA9PiB7XHJcbiAgICAgIGNvbnN0IGdyb3VwS2V5ID0gY29sLmdyb3VwZSB8fCAnQXV0cmVzJztcclxuICAgICAgbGV0IGdyb3VwID0gZ3JvdXBlZC5maW5kKGcgPT4gZy5rZXkgPT09IGdyb3VwS2V5KTtcclxuICAgICAgaWYgKCFncm91cCkge1xyXG4gICAgICAgIGdyb3VwID0geyBrZXk6IGdyb3VwS2V5LCB2YWx1ZTogW10gfTtcclxuICAgICAgICBncm91cGVkLnB1c2goZ3JvdXApO1xyXG4gICAgICB9XHJcbiAgICAgIGdyb3VwLnZhbHVlLnB1c2goY29sKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGdyb3VwZWQ7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBzYXZlKCk6IHZvaWQge1xyXG4gICAgc3VwZXIuc2F2ZSgpO1xyXG4gICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNsb2FkaW5nID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmZvcm1EYXRhID09PSB1bmRlZmluZWQpIHJldHVybjtcclxuXHJcbiAgICBsZXQgcmVxOiBVcHNlcnRGb3JtRGF0YUNvbG9ubmVSZXF1ZXN0ID0ge1xyXG4gICAgICB1aWQ6IHRoaXMuZm9ybURhdGEudWlkLFxyXG4gICAgICBmb3JtdWxhaXJlVWlkOiB0aGlzLmZvcm1EYXRhLmZvcm11bGFpcmVVaWQsXHJcbiAgICAgIGNsYXNzTmFtZTogdGhpcy5mb3JtRGF0YS5jbGFzc05hbWUsXHJcbiAgICAgIG9jY3VyZW5jZTogdGhpcy5mb3JtRGF0YS5vY2N1cmVuY2UsXHJcbiAgICAgIG9ic2VydmF0aW9uOiB0aGlzLmZvcm1EYXRhLm9ic2VydmF0aW9uLFxyXG4gICAgICBkYXRlOiB0aGlzLmZvcm1EYXRhLmRhdGUsXHJcbiAgICAgIHZhbGlkOiB0aGlzLmZvcm1EYXRhLnZhbGlkLFxyXG4gICAgICBmb3JtRGF0YUNvbG9ubmVzOiB0aGlzLmZvcm1EYXRhLmZvcm11bGFpcmVDb2xvbm5lc0dyb3VwZWQuZmxhdE1hcCgoa3YpID0+IGt2LnZhbHVlKS5tYXAoZmMgPT4gZmMuZGF0YSksXHJcbiAgICB9O1xyXG4gICAgbGV0IHJlcXVlc3QkOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgICBsZXQgc3VjY2Vzc01lc3NhZ2U6IHN0cmluZztcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMubW9kZSkge1xyXG4gICAgICBjYXNlIE1vZGVzLmNyZWF0ZTpcclxuICAgICAgICByZXF1ZXN0JCA9IHRoaXMuZm9ybURhdGFTZXJ2aWNlLmNyZWF0ZShyZXEpO1xyXG4gICAgICAgIHN1Y2Nlc3NNZXNzYWdlID0gdGhpcy5sKExvY2FsaXphdGlvbktleXMuc2F2ZWRTdWNjZXNzZnVsbHkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBNb2Rlcy5lZGl0OlxyXG4gICAgICAgIGlmICh0aGlzLmlkICE9PSBudWxsICYmIHRoaXMuaWQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgcmVxdWVzdCQgPSB0aGlzLmZvcm1EYXRhU2VydmljZS51cGRhdGUocmVxLCB0aGlzLmlkKTtcclxuICAgICAgICAgIHN1Y2Nlc3NNZXNzYWdlID0gdGhpcy5sKExvY2FsaXphdGlvbktleXMudXBkYXRlZFN1Y2Nlc3NmdWxseSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBNb2Rlcy5kZWxldGU6XHJcbiAgICAgICAgaWYgKHRoaXMuaWQgIT09IG51bGwgJiYgdGhpcy5pZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICByZXF1ZXN0JCA9IHRoaXMuZm9ybURhdGFTZXJ2aWNlLmRlbGV0ZSh0aGlzLmlkKTtcclxuICAgICAgICAgIHN1Y2Nlc3NNZXNzYWdlID0gdGhpcy5sKExvY2FsaXphdGlvbktleXMuZGVsZXRlZFN1Y2Nlc3NmdWxseSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHJlcXVlc3QkIS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLmluZm8oc3VjY2Vzc01lc3NhZ2UpO1xyXG4gICAgICAgIHRoaXMuaGlkZSh0cnVlKTtcclxuICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub25TYXZlLmVtaXQoKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChyZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2UocmVzcG9uc2UpO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjx0c2ktZm9ybSBjbGFzcz1cImZvcm0taG9yaXpvbnRhbFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChvblN1Ym1pdCk9XCJzYXZlKClcIiBbaXNMb2FkaW5nXT1cImlzbG9hZGluZ1wiPlxyXG4gICAgPFRzaS1Nb2RhbC1IZWFkZXIgW2lucHV0VGl0bGVdPVwiJ3NoYXJlZF9ub3Rlc19hZGRfZm9ybScgfCBsb2NhbGl6ZSBcIiAob25DbG9zZUNsaWNrKT1cImhpZGUoKVwiPlxyXG4gICAgPC9Uc2ktTW9kYWwtSGVhZGVyPlxyXG4gICAgPGZpZWxkc2V0IFtkaXNhYmxlZF09XCJpc0RlbGV0ZU1vZGUoKSB8fCBpc0NvbnN1bHRNb2RlKCkgXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBmb3JtLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInc2hhcmVkX25vdGVzX2Zvcm0nXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktU2VhcmNoLUNvbWJvIFsoYmluZCldPVwiZm9ybURhdGEuZm9ybXVsYWlyZVVpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsaXN0U291cmNlVXJsXT1cImZvcm11bGFpcmVFbmRwb2ludC5nZXRBbGxGb3JtdWxhaXJlc01pbmltYWwoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtlbGVtZW50U291cmNlVXJsXT1cImZvcm11bGFpcmVFbmRwb2ludC5nZXRGb3JtdWxhaXJlTWluaW1hbCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGVsZXRlTW9kZSgpIHx8IGlzQ29uc3VsdE1vZGUoKVwiIChiaW5kQ2hhbmdlKT1cIm9uRm9ybXVsYWlyZUNoYW5nZSgkZXZlbnQpXCIgaWQtZmllbGQ9XCJ1aWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbC1maWVsZD1cIm5vbU9ic2VydmF0aW9uXCIgW3Nob3dDbGVhcl09XCJ0cnVlXCIgW2lzRmlsdGVyZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsaXN0U291cmNlUGFyYW1zXT1cImdldEZvcm11bGFpcmVQYXJhbXNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1TZWFyY2gtQ29tYm8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBmb3JtLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInc2hhcmVkX25vdGVzX2Zvcm1fZGF0ZSdcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1EYXRlLVBpY2tlciBbaW5wdXROYW1lXT1cIidEYXRlJ1wiIFtzaG93VGltZV09XCJ0cnVlXCIgWyhpbnB1dEZpZWxkKV09XCJmb3JtRGF0YS5kYXRlXCIvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBmb3JtLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInc2hhcmVkX25vdGVzX2Zvcm1fb2JzJ1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLVRleHQtQm94IFsoaW5wdXRGaWVsZCldPVwiZm9ybURhdGEub2JzZXJ2YXRpb25cIiBbZGlzYWJsZWRdPVwiaXNEZWxldGVNb2RlKCkgfHwgaXNDb25zdWx0TW9kZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktVGV4dC1Cb3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHAtdGFiVmlldyAqbmdJZj1cImZvcm1EYXRhLmZvcm11bGFpcmVVaWQgJiYgaXNGb3JtUmVhZHlcIiA+XHJcbiAgICAgICAgICAgIDxwLXRhYlBhbmVsICpuZ0Zvcj1cImxldCBncnAgb2YgZm9ybURhdGEuZm9ybXVsYWlyZUNvbG9ubmVzR3JvdXBlZFwiIFtoZWFkZXJdPVwiZ3JwLmtleVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGdyaWQgZm9ybS1yb3dcIiAqbmdGb3I9XCJsZXQgY29sIG9mIGdycC52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCJjb2wubm9tXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cImNvbC04IGZvcm0taW5wdXRcIiAqbmdJZj1cImNvbC50eXBlID09PSBmb3JtVHlwZS5zdHJpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1UZXh0LUJveCBbZGlzYWJsZWRdPVwiaXNEZWxldGVNb2RlKCkgfHwgaXNDb25zdWx0TW9kZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJjb2wuZGF0YS52YWxldXJTdHJpbmdcIiAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVHNpLVRleHQtQm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cImNvbC04IGZvcm0taW5wdXRcIiAqbmdJZj1cImNvbC50eXBlID09PSBmb3JtVHlwZS5pbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1JbnRlZ2VyIFtkaXNhYmxlZF09XCJpc0RlbGV0ZU1vZGUoKSB8fCBpc0NvbnN1bHRNb2RlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cImNvbC5kYXRhLnZhbGV1ckludFwiICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Uc2ktSW50ZWdlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAgY2xhc3M9XCJjb2wtOCBmb3JtLWlucHV0XCIgKm5nSWY9XCJjb2wudHlwZSA9PT0gZm9ybVR5cGUuZGVjaW1hbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHNpLURlY2ltYWwtSW5wdXQgW2Rpc2FibGVkXT1cImlzRGVsZXRlTW9kZSgpIHx8IGlzQ29uc3VsdE1vZGUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwiY29sLmRhdGEudmFsZXVyRGVjaW1hbFwiICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Uc2ktRGVjaW1hbC1JbnB1dD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAgY2xhc3M9XCJjb2wtOCBmb3JtLWlucHV0XCIgKm5nSWY9XCJjb2wudHlwZSA9PT0gZm9ybVR5cGUuYm9vbGVhblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHNpLUNoZWNrQm94IFtkaXNhYmxlZF09XCJpc0RlbGV0ZU1vZGUoKSB8fCBpc0NvbnN1bHRNb2RlKClcIiBbaXNCaW5hcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cImNvbC5kYXRhLnZhbGV1ckJvb2xlYW5cIiAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVHNpLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cImNvbC04IGZvcm0taW5wdXRcIiAqbmdJZj1cImNvbC50eXBlID09PSBmb3JtVHlwZS5iaW5hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5IGlucHV0IChub3QgaGFuZGxlZCB5ZXQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvcC10YWJQYW5lbD5cclxuICAgICAgICA8L3AtdGFiVmlldz5cclxuICAgIDwvZmllbGRzZXQ+XHJcbiAgICA8VHNpLU1vZGFsLUZvb3RlciBbY2FuY2VsRGlzYWJsZWRdPVwic2F2aW5nXCIgW3NhdmVEaXNhYmxlZF09XCJpc1N1Ym1pdERpc2FibGVkKClcIlxyXG4gICAgICAgIChvbkNhbmNlbENsaWNrKT1cImhpZGUoKVwiPjwvVHNpLU1vZGFsLUZvb3Rlcj5cclxuPC90c2ktZm9ybT4iXX0=
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW9yLWVkaXQtZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktZHluYW1pYy1mb3JtL2NyZWF0ZS1vci1lZGl0LWR5bmFtaWMtZm9ybS9jcmVhdGUtb3ItZWRpdC1keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL3RzaS1keW5hbWljLWZvcm0vY3JlYXRlLW9yLWVkaXQtZHluYW1pYy1mb3JtL2NyZWF0ZS1vci1lZGl0LWR5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBTW5ILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU3RCxPQUFPLEVBR0wsY0FBYyxFQUNkLHFCQUFxQixHQUV0QixNQUFNLHlDQUF5QyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVwRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEUsT0FBTyxFQUFjLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTbEQsTUFBTSxPQUFPLGdDQUFpQyxTQUFRLDZCQUE2QjtJQVFqRixZQUNVLDRCQUF5RCxF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WUFDckIsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLFFBQTJCLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2dCQUNwQixJQUFJLENBQUMsNEJBQTRCLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0QsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBcEpVLGdDQUFnQzttR0FBaEMsZ0NBQWdDLDBEQUZoQyxDQUFDLEdBQUcsWUFBWSxDQUFDLGlEQzVCOUIsNnpKQWdGVzs7NEZEbERFLGdDQUFnQztrQkFONUMsU0FBUzsrQkFDRSxpQ0FBaUMsYUFHaEMsQ0FBQyxHQUFHLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUc2lGb3JtQ29tcG9uZW50QmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3RzaS1iYXNlL2NvbXBvbmVudHMvdHNpLWZvcm0tYmFzZS90c2ktZm9ybS1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IER5bmFtaWNEaWFsb2dDb25maWcsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBEaWFsb2dEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2RpYWxvZy1kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUc2lDb25maXJtYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbm90aWZpY2F0aW9uL3RzaS1jb25maXJtYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFRzaU5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24vdHNpLW5vdGlmaWNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbm90aWZpY2F0aW9uL2Vycm9yLXJlc3BvbnNlLW1hbmFnZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IGZvcm11bGFpcmVFbmRwb2ludHMgfSBmcm9tICcuLi8uLi8uLi9lbmQtcG9pbnRzL2Zvcm11bGFpcmUtZW5kcG9pbnRzJztcclxuaW1wb3J0IHsgYXBwUHJvdmlkZXJzIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RzL2FwcC1wcm92aWRlcnMnO1xyXG5pbXBvcnQgeyBGb3JtRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9keW5hbWljLWZvcm0vZm9ybS1kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIFVwc2VydEZvcm1EYXRhQ29sb25uZVJlcXVlc3QsXHJcbiAgRm9ybXVsYWlyZUNvbG9ubmUsXHJcbiAgRm9ybXVsYWlyZURhdGEsXHJcbiAgRm9ybXVsYWlyZURhdGFDb2xvbm5lLFxyXG4gIEZvcm11bGFpcmVSZXNwb25zZSxcclxufSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZHluYW1pYy1mb3JtL2Zvcm11bGFpcmUnO1xyXG5pbXBvcnQgeyBmb3JtVHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0cy9mb3JtLXR5cGUnO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25LZXlzIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RzL2xvY2FsaXphdGlvbi1rZXknO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgTW9kZXMgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9jb21wb25lbnQtdXNlLW1vZGVzLWVudW0nO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jcmVhdGUtb3ItZWRpdC1keW5hbWljLWZvcm0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtb3ItZWRpdC1keW5hbWljLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jcmVhdGUtb3ItZWRpdC1keW5hbWljLWZvcm0uY29tcG9uZW50LmNzcycsXHJcbiAgcHJvdmlkZXJzOiBbLi4uYXBwUHJvdmlkZXJzXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENyZWF0ZU9yRWRpdER5bmFtaWNGb3JtQ29tcG9uZW50IGV4dGVuZHMgVHNpRm9ybUNvbXBvbmVudEJhc2VDb21wb25lbnQge1xyXG4gIGZvcm11bGFpcmVFbmRwb2ludCA9IGZvcm11bGFpcmVFbmRwb2ludHM7XHJcbiAgb2JqZWN0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBpc0Zvcm1SZWFkeTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGZvcm1UeXBlID0gZm9ybVR5cGU7XHJcbiAgZm9ybURhdGE6IEZvcm11bGFpcmVEYXRhID0gbmV3IEZvcm11bGFpcmVEYXRhKCk7XHJcbiAgZ2V0Rm9ybXVsYWlyZVBhcmFtczogS2V5VmFsdWU8c3RyaW5nLCBzdHJpbmc+W107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlOiBFcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2UsXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgcmVmOiBEeW5hbWljRGlhbG9nUmVmLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZyxcclxuICAgIHByaXZhdGUgX25vdGlmaWNhdGlvblNlcnZpY2U6IFRzaU5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZGlhbG9nRGF0YVNlcnZpY2U6IERpYWxvZ0RhdGFTZXJ2aWNlLFxyXG4gICAgcHVibGljIGZvcm1EYXRhU2VydmljZTogRm9ybURhdGFTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihyZWYsIGNvbmZpZyk7XHJcblxyXG4gICAgaWYoIWNvbmZpZz8uZGF0YT8uY3VzdG9tRGF0YSkge1xyXG4gICAgICB0aGlzLmdldEZvcm11bGFpcmVQYXJhbXMgPSBbXTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZ2V0Rm9ybXVsYWlyZVBhcmFtcyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGtleTogJ2VudGl0eU5hbWUnLFxyXG4gICAgICAgIHZhbHVlOiBjb25maWcuZGF0YS5jdXN0b21EYXRhLmJ1c2luZXNzQ2xhc3NcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogJ2Rpc2NyaW1pbmF0b3JWYWx1ZScsXHJcbiAgICAgICAgdmFsdWU6IGNvbmZpZy5kYXRhLmN1c3RvbURhdGEuZGlzY3JpbWluYXRvclZhbHVlXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLm9iamVjdElkID0gdGhpcy5kaWFsb2dEYXRhU2VydmljZS5nZXREYXRhKCkub2NjdXJlbmNlO1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIC8vIGluaXQgRm9ybURhdGEgZm9yIENVRCBvcGVyYXRpb25zXHJcbiAgICB0aGlzLmZvcm1EYXRhID0ge1xyXG4gICAgICAuLi50aGlzLmZvcm1EYXRhLFxyXG4gICAgICBjbGFzc05hbWU6IHRoaXMuZGlhbG9nRGF0YVNlcnZpY2UuZ2V0RGF0YSgpLmNsYXNzLFxyXG4gICAgICBvY2N1cmVuY2U6IHRoaXMub2JqZWN0SWQsXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLm1vZGUgPT0gTW9kZXMuY3JlYXRlKSBcclxuICAgIHtcclxuICAgICAgdGhpcy5mb3JtRGF0YS5kYXRlID0gbmV3IERhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoKHRoaXMubW9kZSA9PT0gTW9kZXMuZWRpdCB8fCB0aGlzLm1vZGUgPT09IE1vZGVzLmRlbGV0ZSB8fCB0aGlzLm1vZGUgPT09IE1vZGVzLmNvbnN1bHQpICYmIHRoaXMuaWQgIT09IG51bGwgJiYgdGhpcy5pZCAhPT0gdW5kZWZpbmVkICkge1xyXG4gICAgICBsZXQgX2Zvcm1EYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5mb3JtRGF0YVNlcnZpY2UuZ2V0QnlJZCh0aGlzLmlkKSk7XHJcbiAgICAgICB0aGlzLmZvcm1EYXRhID0ge1xyXG4gICAgICAgICAgLi4uX2Zvcm1EYXRhLFxyXG4gICAgICAgICAgZm9ybXVsYWlyZUNvbG9ubmVzR3JvdXBlZDogdGhpcy5ncm91cEJ5R3JvdXBlKF9mb3JtRGF0YS5mb3JtdWxhaXJlQ29sb25uZXMpXHJcbiAgICAgICAgfTtcclxuICAgICAgdGhpcy5pc0Zvcm1SZWFkeSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkZvcm11bGFpcmVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5mb3JtRGF0YS5mb3JtdWxhaXJlVWlkID0gZXZlbnQ7XHJcbiAgICB0aGlzLmZvcm1EYXRhU2VydmljZS5nZXRGb3JtQnlVaWQoZXZlbnQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IEZvcm11bGFpcmVSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHJlcy5mb3JtdWxhaXJlQ29sb25uZXMuZm9yRWFjaChmYyA9PiB7XHJcbiAgICAgICAgICBmYy5kYXRhID0gbmV3IEZvcm11bGFpcmVEYXRhQ29sb25uZSh1bmRlZmluZWQsIGZjLnVpZCwgdGhpcy5mb3JtRGF0YS51aWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRydWUpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5mb3JtRGF0YSA9IHtcclxuICAgICAgICAgIC4uLnRoaXMuZm9ybURhdGEsXHJcbiAgICAgICAgICBmb3JtdWxhaXJlVWlkOiByZXMudWlkLFxyXG4gICAgICAgICAgZm9ybXVsYWlyZUNvbG9ubmVzR3JvdXBlZDogdGhpcy5ncm91cEJ5R3JvdXBlKHJlcy5mb3JtdWxhaXJlQ29sb25uZXMpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNGb3JtUmVhZHkgPSB0cnVlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ3JvdXBCeUdyb3VwZShmb3JtQ29sczogRm9ybXVsYWlyZUNvbG9ubmVbXSkge1xyXG4gICAgY29uc3QgZ3JvdXBlZDogeyBrZXk6IHN0cmluZywgdmFsdWU6IEZvcm11bGFpcmVDb2xvbm5lW10gfVtdID0gW107XHJcblxyXG4gICBmb3JtQ29scy5mb3JFYWNoKGNvbCA9PiB7XHJcbiAgICAgIGNvbnN0IGdyb3VwS2V5ID0gY29sLmdyb3VwZSB8fCAnQXV0cmVzJztcclxuICAgICAgbGV0IGdyb3VwID0gZ3JvdXBlZC5maW5kKGcgPT4gZy5rZXkgPT09IGdyb3VwS2V5KTtcclxuICAgICAgaWYgKCFncm91cCkge1xyXG4gICAgICAgIGdyb3VwID0geyBrZXk6IGdyb3VwS2V5LCB2YWx1ZTogW10gfTtcclxuICAgICAgICBncm91cGVkLnB1c2goZ3JvdXApO1xyXG4gICAgICB9XHJcbiAgICAgIGdyb3VwLnZhbHVlLnB1c2goY29sKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGdyb3VwZWQ7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBzYXZlKCk6IHZvaWQge1xyXG4gICAgc3VwZXIuc2F2ZSgpO1xyXG4gICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNsb2FkaW5nID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmZvcm1EYXRhID09PSB1bmRlZmluZWQpIHJldHVybjtcclxuXHJcbiAgICBsZXQgcmVxOiBVcHNlcnRGb3JtRGF0YUNvbG9ubmVSZXF1ZXN0ID0ge1xyXG4gICAgICB1aWQ6IHRoaXMuZm9ybURhdGEudWlkLFxyXG4gICAgICBmb3JtdWxhaXJlVWlkOiB0aGlzLmZvcm1EYXRhLmZvcm11bGFpcmVVaWQsXHJcbiAgICAgIGNsYXNzTmFtZTogdGhpcy5mb3JtRGF0YS5jbGFzc05hbWUsXHJcbiAgICAgIG9jY3VyZW5jZTogdGhpcy5mb3JtRGF0YS5vY2N1cmVuY2UsXHJcbiAgICAgIG9ic2VydmF0aW9uOiB0aGlzLmZvcm1EYXRhLm9ic2VydmF0aW9uLFxyXG4gICAgICBkYXRlOiB0aGlzLmZvcm1EYXRhLmRhdGUsXHJcbiAgICAgIHZhbGlkOiB0aGlzLmZvcm1EYXRhLnZhbGlkLFxyXG4gICAgICBmb3JtRGF0YUNvbG9ubmVzOiB0aGlzLmZvcm1EYXRhLmZvcm11bGFpcmVDb2xvbm5lc0dyb3VwZWQuZmxhdE1hcCgoa3YpID0+IGt2LnZhbHVlKS5tYXAoZmMgPT4gZmMuZGF0YSksXHJcbiAgICB9O1xyXG4gICAgbGV0IHJlcXVlc3QkOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgICBsZXQgc3VjY2Vzc01lc3NhZ2U6IHN0cmluZztcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMubW9kZSkge1xyXG4gICAgICBjYXNlIE1vZGVzLmNyZWF0ZTpcclxuICAgICAgICByZXF1ZXN0JCA9IHRoaXMuZm9ybURhdGFTZXJ2aWNlLmNyZWF0ZShyZXEpO1xyXG4gICAgICAgIHN1Y2Nlc3NNZXNzYWdlID0gdGhpcy5sKExvY2FsaXphdGlvbktleXMuc2F2ZWRTdWNjZXNzZnVsbHkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBNb2Rlcy5lZGl0OlxyXG4gICAgICAgIGlmICh0aGlzLmlkICE9PSBudWxsICYmIHRoaXMuaWQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgcmVxdWVzdCQgPSB0aGlzLmZvcm1EYXRhU2VydmljZS51cGRhdGUocmVxLCB0aGlzLmlkKTtcclxuICAgICAgICAgIHN1Y2Nlc3NNZXNzYWdlID0gdGhpcy5sKExvY2FsaXphdGlvbktleXMudXBkYXRlZFN1Y2Nlc3NmdWxseSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBNb2Rlcy5kZWxldGU6XHJcbiAgICAgICAgaWYgKHRoaXMuaWQgIT09IG51bGwgJiYgdGhpcy5pZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICByZXF1ZXN0JCA9IHRoaXMuZm9ybURhdGFTZXJ2aWNlLmRlbGV0ZSh0aGlzLmlkKTtcclxuICAgICAgICAgIHN1Y2Nlc3NNZXNzYWdlID0gdGhpcy5sKExvY2FsaXphdGlvbktleXMuZGVsZXRlZFN1Y2Nlc3NmdWxseSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHJlcXVlc3QkIS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLmluZm8oc3VjY2Vzc01lc3NhZ2UpO1xyXG4gICAgICAgIHRoaXMuaGlkZSh0cnVlKTtcclxuICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub25TYXZlLmVtaXQoKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChyZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2UocmVzcG9uc2UpO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjx0c2ktZm9ybSBjbGFzcz1cImZvcm0taG9yaXpvbnRhbFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChvblN1Ym1pdCk9XCJzYXZlKClcIiBbaXNMb2FkaW5nXT1cImlzbG9hZGluZ1wiPlxyXG4gICAgPFRzaS1Nb2RhbC1IZWFkZXIgW2lucHV0VGl0bGVdPVwiJ3NoYXJlZF9ub3Rlc19hZGRfZm9ybScgfCBsb2NhbGl6ZSBcIiAob25DbG9zZUNsaWNrKT1cImhpZGUoKVwiPlxyXG4gICAgPC9Uc2ktTW9kYWwtSGVhZGVyPlxyXG4gICAgPGZpZWxkc2V0IFtkaXNhYmxlZF09XCJpc0RlbGV0ZU1vZGUoKSB8fCBpc0NvbnN1bHRNb2RlKCkgXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBmb3JtLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInc2hhcmVkX25vdGVzX2Zvcm0nXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktU2VhcmNoLUNvbWJvIFsoYmluZCldPVwiZm9ybURhdGEuZm9ybXVsYWlyZVVpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsaXN0U291cmNlVXJsXT1cImZvcm11bGFpcmVFbmRwb2ludC5nZXRBbGxGb3JtdWxhaXJlc01pbmltYWwoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtlbGVtZW50U291cmNlVXJsXT1cImZvcm11bGFpcmVFbmRwb2ludC5nZXRGb3JtdWxhaXJlTWluaW1hbCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGVsZXRlTW9kZSgpIHx8IGlzQ29uc3VsdE1vZGUoKVwiIChiaW5kQ2hhbmdlKT1cIm9uRm9ybXVsYWlyZUNoYW5nZSgkZXZlbnQpXCIgaWQtZmllbGQ9XCJ1aWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbC1maWVsZD1cIm5vbU9ic2VydmF0aW9uXCIgW3Nob3dDbGVhcl09XCJ0cnVlXCIgW2lzRmlsdGVyZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsaXN0U291cmNlUGFyYW1zXT1cImdldEZvcm11bGFpcmVQYXJhbXNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1TZWFyY2gtQ29tYm8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBmb3JtLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInc2hhcmVkX25vdGVzX2Zvcm1fZGF0ZSdcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1EYXRlLVBpY2tlciBbaW5wdXROYW1lXT1cIidEYXRlJ1wiIFtzaG93VGltZV09XCJ0cnVlXCIgWyhpbnB1dEZpZWxkKV09XCJmb3JtRGF0YS5kYXRlXCIvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBmb3JtLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInc2hhcmVkX25vdGVzX2Zvcm1fb2JzJ1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLVRleHQtQm94IFsoaW5wdXRGaWVsZCldPVwiZm9ybURhdGEub2JzZXJ2YXRpb25cIiBbZGlzYWJsZWRdPVwiaXNEZWxldGVNb2RlKCkgfHwgaXNDb25zdWx0TW9kZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktVGV4dC1Cb3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHAtdGFiVmlldyAqbmdJZj1cImZvcm1EYXRhLmZvcm11bGFpcmVVaWQgJiYgaXNGb3JtUmVhZHlcIiA+XHJcbiAgICAgICAgICAgIDxwLXRhYlBhbmVsICpuZ0Zvcj1cImxldCBncnAgb2YgZm9ybURhdGEuZm9ybXVsYWlyZUNvbG9ubmVzR3JvdXBlZFwiIFtoZWFkZXJdPVwiZ3JwLmtleVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGdyaWQgZm9ybS1yb3dcIiAqbmdGb3I9XCJsZXQgY29sIG9mIGdycC52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCJjb2wubm9tXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cImNvbC04IGZvcm0taW5wdXRcIiAqbmdJZj1cImNvbC50eXBlID09PSBmb3JtVHlwZS5zdHJpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1UZXh0LUJveCBbZGlzYWJsZWRdPVwiaXNEZWxldGVNb2RlKCkgfHwgaXNDb25zdWx0TW9kZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJjb2wuZGF0YS52YWxldXJTdHJpbmdcIiAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVHNpLVRleHQtQm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cImNvbC04IGZvcm0taW5wdXRcIiAqbmdJZj1cImNvbC50eXBlID09PSBmb3JtVHlwZS5pbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1JbnRlZ2VyIFtkaXNhYmxlZF09XCJpc0RlbGV0ZU1vZGUoKSB8fCBpc0NvbnN1bHRNb2RlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cImNvbC5kYXRhLnZhbGV1ckludFwiICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Uc2ktSW50ZWdlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAgY2xhc3M9XCJjb2wtOCBmb3JtLWlucHV0XCIgKm5nSWY9XCJjb2wudHlwZSA9PT0gZm9ybVR5cGUuZGVjaW1hbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHNpLURlY2ltYWwtSW5wdXQgW2Rpc2FibGVkXT1cImlzRGVsZXRlTW9kZSgpIHx8IGlzQ29uc3VsdE1vZGUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwiY29sLmRhdGEudmFsZXVyRGVjaW1hbFwiICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Uc2ktRGVjaW1hbC1JbnB1dD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAgY2xhc3M9XCJjb2wtOCBmb3JtLWlucHV0XCIgKm5nSWY9XCJjb2wudHlwZSA9PT0gZm9ybVR5cGUuYm9vbGVhblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHNpLUNoZWNrQm94IFtkaXNhYmxlZF09XCJpc0RlbGV0ZU1vZGUoKSB8fCBpc0NvbnN1bHRNb2RlKClcIiBbaXNCaW5hcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cImNvbC5kYXRhLnZhbGV1ckJvb2xlYW5cIiAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVHNpLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cImNvbC04IGZvcm0taW5wdXRcIiAqbmdJZj1cImNvbC50eXBlID09PSBmb3JtVHlwZS5iaW5hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5IGlucHV0IChub3QgaGFuZGxlZCB5ZXQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvcC10YWJQYW5lbD5cclxuICAgICAgICA8L3AtdGFiVmlldz5cclxuICAgIDwvZmllbGRzZXQ+XHJcbiAgICA8VHNpLU1vZGFsLUZvb3RlciBbc2hvd1NhdmVBbmRDbG9zZUJ1dHRvbl09XCJmYWxzZVwiIFtjYW5jZWxEaXNhYmxlZF09XCJzYXZpbmdcIiBbc2F2ZURpc2FibGVkXT1cImlzU3VibWl0RGlzYWJsZWQoKVwiXHJcbiAgICAgICAgKG9uQ2FuY2VsQ2xpY2spPVwiaGlkZSgpXCI+PC9Uc2ktTW9kYWwtRm9vdGVyPlxyXG48L3RzaS1mb3JtPiJdfQ==
|