@eo-sdk/client 10.4.0-rc.1 → 10.4.0-rc.3

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.
Files changed (40) hide show
  1. package/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.d.ts +0 -1
  2. package/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.d.ts.map +1 -1
  3. package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.d.ts.map +1 -1
  4. package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.d.ts +2 -2
  5. package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.d.ts.map +1 -1
  6. package/app/eo-framework/actions/actions/signature-action/signature/signature.component.d.ts.map +1 -1
  7. package/app/eo-framework/form-elements/checkbox/checkbox.component.d.ts +3 -3
  8. package/app/eo-framework/form-elements/checkbox/checkbox.component.d.ts.map +1 -1
  9. package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts.map +1 -1
  10. package/assets/_default/svg/ic_saved_search.svg +1 -0
  11. package/esm2020/app/eo-client/about-state/about-state.component.mjs +3 -3
  12. package/esm2020/app/eo-client/dashboard/dashboard.component.mjs +3 -3
  13. package/esm2020/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.mjs +1 -1
  14. package/esm2020/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.mjs +10 -14
  15. package/esm2020/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.mjs +7 -7
  16. package/esm2020/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-widget.component.mjs +3 -3
  17. package/esm2020/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-widget.component.mjs +3 -3
  18. package/esm2020/app/eo-client/dashboard/widgets/search-widget/search-widget.component.mjs +3 -3
  19. package/esm2020/app/eo-client/process-state/process-state.component.mjs +1 -1
  20. package/esm2020/app/eo-client/settings/settings.component.mjs +1 -1
  21. package/esm2020/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.mjs +1 -1
  22. package/esm2020/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.mjs +1 -1
  23. package/esm2020/app/eo-framework/actions/actions/signature-action/signature/signature.component.mjs +6 -5
  24. package/esm2020/app/eo-framework/form-elements/checkbox/checkbox.component.mjs +11 -6
  25. package/esm2020/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +2 -2
  26. package/esm2020/app/eo-framework/form-elements/form-input/form-input.component.mjs +2 -2
  27. package/esm2020/app/eo-framework/form-elements/number-range/number-range.component.mjs +3 -3
  28. package/esm2020/app/eo-framework/grid/extensions/filter/setFilters/set-filter.component.mjs +1 -1
  29. package/esm2020/app/eo-framework/grid/filters/codesystem-filter.component.mjs +2 -2
  30. package/esm2020/app/eo-framework/grid/filters/list-filter.component.mjs +1 -1
  31. package/esm2020/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +3 -3
  32. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +3 -3
  33. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +4 -3
  34. package/esm2020/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.mjs +2 -2
  35. package/esm2020/app/eo-framework-core/api/grid.service.mjs +13 -13
  36. package/fesm2015/eo-sdk-client.mjs +218 -213
  37. package/fesm2015/eo-sdk-client.mjs.map +1 -1
  38. package/fesm2020/eo-sdk-client.mjs +218 -213
  39. package/fesm2020/eo-sdk-client.mjs.map +1 -1
  40. package/package.json +3 -3
@@ -99,10 +99,10 @@ export class FormElementComponent {
99
99
  }
100
100
  }
101
101
  FormElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: FormElementComponent, deps: [{ token: i1.TranslateService }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
102
- FormElementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: FormElementComponent, selector: "eo-form-element", inputs: { situation: "situation", skipToggle: "skipToggle", elementSetter: ["element", "elementSetter"] }, queries: [{ propertyName: "contentElementTemplates", predicate: FormElementTemplate }], viewQueries: [{ propertyName: "formField", first: true, predicate: ["formField"], descendants: true }, { propertyName: "elementTemplates", predicate: FormElementTemplate, descendants: true }], ngImport: i0, template: "<div class=\"form-element\" [formGroup]=\"element\" *ngIf=\"element\">\n\n <div class=\"form-field t-{{formElementRef._eoFormElement.type}}\" #formField\n [ngClass]=\"{disabled: !!formElementRef._eoFormElement.readonly}\" *ngIf=\"elementTemplate\">\n\n <ng-container *ngTemplateOutlet=\"elementTemplate; context: {element, formElementRef}\" ></ng-container>\n\n <!-- the fields description -->\n <div class=\"description\" *ngIf=\"formElementRef._eoFormElement.description\">{{formElementRef._eoFormElement.description}}</div>\n\n <!-- error/validation messages -->\n <div class=\"err-msg\" *ngIf=\"formElementRef.errors\">\n\n <div *ngIf=\"formElementRef.errors.daterange\" translate>eo.form.property.daterange.invalid</div>\n <div *ngIf=\"formElementRef.errors.numberrange\" translate>eo.form.property.numberrange.invalid</div>\n <div *ngIf=\"formElementRef.errors.number\" translate>eo.form.property.number</div>\n <div *ngIf=\"formElementRef.errors.precision\" translate\n [translateParams]=\"formElementRef.errors.precision.translateValues\">\n {{formElementRef.errors.precision.translateKey}}</div>\n <div *ngIf=\"formElementRef.errors.scale\" translate\n [translateParams]=\"formElementRef.errors.scale.translateValues\">{{formElementRef.errors.scale.translateKey}}\n </div>\n\n <div *ngIf=\"formElementRef.errors.regex || formElementRef.errors.pattern\" translate>\n eo.form.property.string.regex.nomatch</div>\n <div *ngIf=\"formElementRef.errors.classificationemail\" translate>\n eo.form.property.string.error.classification.email</div>\n <div *ngIf=\"formElementRef.errors.classificationurl\" translate>eo.form.property.string.error.classification.url\n </div>\n <div *ngIf=\"formElementRef.errors.onlyWhitespaces\" translate>eo.form.property.string.error.whitespaces</div>\n <div *ngIf=\"formElementRef.errors.datecontrol\" translate>eo.form.property.date.invalid</div>\n <div *ngIf=\"formElementRef.errors.codesystem\" translate>eo.form.property.codesystem.value.invalid</div>\n <div *ngIf=\"formElementRef.errors.eoformScript\">{{formElementRef._eoFormElement.error.msg}}</div>\n <div *ngIf=\"formElementRef.errors.required\" translate>eo.form.property.required</div>\n <div *ngIf=\"formElementRef.errors.maxlength\" translate\n [translateParams]=\"{maxlength: formElementRef._eoFormElement.maxlen}\">eo.form.property.maxlength</div>\n <div *ngIf=\"formElementRef.errors.minlength\" translate\n [translateParams]=\"{minlength: formElementRef._eoFormElement.minlen}\">eo.form.property.minlength</div>\n <div *ngIf=\"formElementRef.errors.deletedIDReference\" translate>eo.form.property.idreference.deleted</div>\n <div *ngIf=\"formElementRef.errors.deletedOrgObject\" translate>eo.form.property.orgobject.deleted</div>\n </div>\n\n </div>\n\n\n\n<!-- STRING -->\n<ng-template eoFormElementTemplate propertyType=\"STRING\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification !== 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect\" [multiline]=\"formElementRef._eoFormElement.multiline\"\n [classification]=\"formElementRef._eoFormElement.classification\" [regex]=\"formElementRef._eoFormElement.regex\"\n [qname]=\"formElementRef._eoFormElement.qname\" [size]=\"formElementRef._eoFormElement.size\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-string>\n\n <!-- Dynamic List -->\n <eo-dynamic-list\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification === 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [listObject]=\"formElementRef._eoFormElement.list\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-dynamic-list>\n\n\n <!-- Reference -->\n <eo-reference *ngIf=\"formElementRef._eoFormElement.reference\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [reference]=\"formElementRef._eoFormElement.reference\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect ? formElementRef._eoFormElement.multiselect : situation === 'SEARCH'\"\n [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-reference>\n </eo-form-input>\n</ng-template>\n\n<!-- ID-Reference -->\n<ng-template eoFormElementTemplate propertyType=\"REFERENCE\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-id-reference [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [situation]=\"element._eoFormControlWrapper.situation\" [dataToRender]=\"formElementRef._eoFormElement.dataToRender\"\n [reference]=\"formElementRef._eoFormElement.reference\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [contextId]=\"formElementRef._eoFormElement.contextId\"\n [exceptionIDs]=\"formElementRef._eoFormElement.exceptionIDs\"\n [queryFilters]=\"formElementRef._eoFormElement.queryFilters\"\n [objectTypesFilter]=\"formElementRef._eoFormElement.objectTypesFilter\"></eo-id-reference>\n </eo-form-input>\n</ng-template>\n\n<!-- ID -->\n<ng-template eoFormElementTemplate propertyType=\"ID\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [regex]=\"'^[0-9a-fA-F]*$'\"\n [qname]=\"formElementRef._eoFormElement.qname\" [readonly]=\"formElementRef._eoFormElement.readonly\" [minLength]=\"32\"\n [maxLength]=\"32\"></eo-string>\n\n </eo-form-input>\n</ng-template>\n\n\n<!-- BOOLEAN -->\n<ng-template eoFormElementTemplate propertyType=\"BOOLEAN\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" class=\"checkbox\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" [required]=\"formElementRef._eoFormElement.required\"\n [disabled]=\"formElementRef._eoFormElement.readonly\" (onToggleLabel)=\"labelToggled($event)\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-checkbox [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [tristate]=\"true\"></eo-checkbox>\n </eo-form-input>\n</ng-template>\n\n<!-- CODESYSTEM -->\n<ng-template eoFormElementTemplate propertyType=\"CODESYSTEM\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-codesystem [situation]=\"element._eoFormControlWrapper.situation\"\n [pickerTitle]=\"formElementRef._eoFormElement.label\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [codesystem]=\"formElementRef._eoFormElement.codesystem\" [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [disablingFilterFunction]=\"formElementRef._eoFormElement.disablingFilterFunction\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-codesystem>\n </eo-form-input>\n</ng-template>\n\n<!-- ORGANIZATION -->\n<ng-template eoFormElementTemplate propertyType=\"ORGANIZATION\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-organization [situation]=\"element._eoFormControlWrapper.situation\"\n [dataMeta]=\"formElementRef._eoFormElement.dataMeta\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [filterObject]=\"formElementRef._eoFormElement.filter\" [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n (onDataMetaChanged)=\"organizationDataMetaResolved($event)\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-organization>\n </eo-form-input>\n</ng-template>\n\n<!-- NUMBER -->\n<ng-template eoFormElementTemplate propertyType=\"NUMBER\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-number *ngIf=\"situation !== 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\">\n </eo-number>\n\n <eo-number-range *ngIf=\"situation === 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-number-range>\n </eo-form-input>\n</ng-template>\n\n<!-- DATE AND DATETIME -->\n<ng-template eoFormElementTemplate propertyType=\"DATETIME\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-date *ngIf=\"situation !== 'SEARCH'\" [withTime]=\"formElementRef._eoFormElement.withtime\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-date>\n\n <eo-datetime-range *ngIf=\"situation === 'SEARCH'\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [withTime]=\"formElementRef._eoFormElement.withtime\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-datetime-range>\n </eo-form-input>\n</ng-template>\n\n<ng-content></ng-content>\n\n<!-- print out the type if it's not matching anything -->\n<ng-template #tplUnknown><b>{{formElementRef._eoFormElement.type}}</b></ng-template>\n</div>\n\n", styles: [":host-context(.dark) .form-element .form-field .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host{flex:1 1 auto}:host.label-toggled::ng-deep eo-form-input label{text-decoration:line-through}.form-element{box-sizing:border-box}.form-element .form-field{margin:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}.form-element .form-field .description{border:0;font-size:var(--font-hint);font-style:italic;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8)}.form-element .form-field .err-msg{color:var(--color-error);padding:calc(var(--app-pane-padding) / 4) 0;border:0}.form-element .form-field .table{flex-flow:column;align-items:flex-start;border-color:transparent}.form-element .form-field .table .label{padding-bottom:calc(var(--app-pane-padding) / 4)}.form-element.ng-dirty:not(.ng-invalid)>.form-field:not(.focused)::ng-deep label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { 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: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i5.FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: i6.CodesystemComponent, selector: "eo-codesystem", inputs: ["situation", "pickerTitle", "placeholder", "codesystem", "multiselect", "readonly", "inputStyleClass", "filterFunction", "disablingFilterFunction"] }, { kind: "component", type: i7.DateComponent, selector: "eo-date", inputs: ["withTime", "readonly"] }, { kind: "component", type: i8.DatetimeRangeComponent, selector: "eo-datetime-range", inputs: ["withTime", "pickerTitle", "operator"] }, { kind: "component", type: i9.NumberComponent, selector: "eo-number", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: i10.NumberRangeComponent, selector: "eo-number-range", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: i11.OrganizationComponent, selector: "eo-organization", inputs: ["removeCurrentUser", "situation", "multiselect", "readonly", "dataMeta", "placeholder", "exceptions", "filterObject"], outputs: ["onValueResolved", "onDataMetaChanged"] }, { kind: "component", type: i12.CheckboxComponent, selector: "eo-checkbox", inputs: ["tristate", "readonly"] }, { kind: "component", type: i13.StringComponent, selector: "eo-string", inputs: ["autocomplete", "multiselect", "multiline", "readonly", "autofocus", "classification", "situation", "regex", "qname", "size", "minLength", "maxLength"] }, { kind: "component", type: i14.ReferenceComponent, selector: "eo-reference", inputs: ["readonly", "multiselect", "reference", "minLength", "maxLength"], outputs: ["onReferenceClicked"] }, { kind: "component", type: i15.DynamicListComponent, selector: "eo-dynamic-list", inputs: ["situation", "multiselect", "pickerTitle", "readonly", "filterFunction", "listObject"] }, { kind: "component", type: i16.IdReferenceComponent, selector: "eo-id-reference", inputs: ["readonly", "multiselect", "situation", "contextId", "exceptionIDs", "dataToRender", "reference", "queryFilters", "objectTypesFilter"] }, { kind: "directive", type: i17.FormElementTemplate, selector: "[eoFormElementTemplate]", inputs: ["propertyType"] }] });
102
+ FormElementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: FormElementComponent, selector: "eo-form-element", inputs: { situation: "situation", skipToggle: "skipToggle", elementSetter: ["element", "elementSetter"] }, queries: [{ propertyName: "contentElementTemplates", predicate: FormElementTemplate }], viewQueries: [{ propertyName: "formField", first: true, predicate: ["formField"], descendants: true }, { propertyName: "elementTemplates", predicate: FormElementTemplate, descendants: true }], ngImport: i0, template: "<div class=\"form-element\" [formGroup]=\"element\" *ngIf=\"element\">\n\n <div class=\"form-field t-{{formElementRef._eoFormElement.type}}\" #formField\n [ngClass]=\"{disabled: !!formElementRef._eoFormElement.readonly}\" *ngIf=\"elementTemplate\">\n\n <ng-container *ngTemplateOutlet=\"elementTemplate; context: {element, formElementRef}\"></ng-container>\n\n <!-- the fields description -->\n <div class=\"description\" *ngIf=\"formElementRef._eoFormElement.description\">\n {{formElementRef._eoFormElement.description}}</div>\n\n <!-- error/validation messages -->\n <div class=\"err-msg\" *ngIf=\"formElementRef.errors\">\n\n <div *ngIf=\"formElementRef.errors.daterange\" translate>eo.form.property.daterange.invalid</div>\n <div *ngIf=\"formElementRef.errors.numberrange\" translate>eo.form.property.numberrange.invalid</div>\n <div *ngIf=\"formElementRef.errors.number\" translate>eo.form.property.number</div>\n <div *ngIf=\"formElementRef.errors.precision\" translate\n [translateParams]=\"formElementRef.errors.precision.translateValues\">\n {{formElementRef.errors.precision.translateKey}}</div>\n <div *ngIf=\"formElementRef.errors.scale\" translate\n [translateParams]=\"formElementRef.errors.scale.translateValues\">{{formElementRef.errors.scale.translateKey}}\n </div>\n\n <div *ngIf=\"formElementRef.errors.regex || formElementRef.errors.pattern\" translate>\n eo.form.property.string.regex.nomatch</div>\n <div *ngIf=\"formElementRef.errors.classificationemail\" translate>\n eo.form.property.string.error.classification.email</div>\n <div *ngIf=\"formElementRef.errors.classificationurl\" translate>eo.form.property.string.error.classification.url\n </div>\n <div *ngIf=\"formElementRef.errors.onlyWhitespaces\" translate>eo.form.property.string.error.whitespaces</div>\n <div *ngIf=\"formElementRef.errors.datecontrol\" translate>eo.form.property.date.invalid</div>\n <div *ngIf=\"formElementRef.errors.codesystem\" translate>eo.form.property.codesystem.value.invalid</div>\n <div *ngIf=\"formElementRef.errors.eoformScript\">{{formElementRef._eoFormElement.error.msg}}</div>\n <div *ngIf=\"formElementRef.errors.required\" translate>eo.form.property.required</div>\n <div *ngIf=\"formElementRef.errors.maxlength\" translate\n [translateParams]=\"{maxlength: formElementRef._eoFormElement.maxlen}\">eo.form.property.maxlength</div>\n <div *ngIf=\"formElementRef.errors.minlength\" translate\n [translateParams]=\"{minlength: formElementRef._eoFormElement.minlen}\">eo.form.property.minlength</div>\n <div *ngIf=\"formElementRef.errors.deletedIDReference\" translate>eo.form.property.idreference.deleted</div>\n <div *ngIf=\"formElementRef.errors.deletedOrgObject\" translate>eo.form.property.orgobject.deleted</div>\n </div>\n\n </div>\n\n\n\n <!-- STRING -->\n <ng-template eoFormElementTemplate propertyType=\"STRING\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification !== 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect\"\n [multiline]=\"formElementRef._eoFormElement.multiline\"\n [classification]=\"formElementRef._eoFormElement.classification\" [regex]=\"formElementRef._eoFormElement.regex\"\n [qname]=\"formElementRef._eoFormElement.qname\" [size]=\"formElementRef._eoFormElement.size\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-string>\n\n <!-- Dynamic List -->\n <eo-dynamic-list\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification === 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [listObject]=\"formElementRef._eoFormElement.list\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-dynamic-list>\n\n\n <!-- Reference -->\n <eo-reference *ngIf=\"formElementRef._eoFormElement.reference\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [reference]=\"formElementRef._eoFormElement.reference\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect ? formElementRef._eoFormElement.multiselect : situation === 'SEARCH'\"\n [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID-Reference -->\n <ng-template eoFormElementTemplate propertyType=\"REFERENCE\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-id-reference [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [dataToRender]=\"formElementRef._eoFormElement.dataToRender\"\n [reference]=\"formElementRef._eoFormElement.reference\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [contextId]=\"formElementRef._eoFormElement.contextId\"\n [exceptionIDs]=\"formElementRef._eoFormElement.exceptionIDs\"\n [queryFilters]=\"formElementRef._eoFormElement.queryFilters\"\n [objectTypesFilter]=\"formElementRef._eoFormElement.objectTypesFilter\"></eo-id-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID -->\n <ng-template eoFormElementTemplate propertyType=\"ID\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [regex]=\"'^[0-9a-fA-F]*$'\"\n [qname]=\"formElementRef._eoFormElement.qname\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [minLength]=\"32\" [maxLength]=\"32\"></eo-string>\n\n </eo-form-input>\n </ng-template>\n\n\n <!-- BOOLEAN -->\n <ng-template eoFormElementTemplate propertyType=\"BOOLEAN\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" class=\"checkbox\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" [required]=\"formElementRef._eoFormElement.required\"\n [disabled]=\"formElementRef._eoFormElement.readonly\" (onToggleLabel)=\"labelToggled($event)\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-checkbox [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [required]=\"formElementRef._eoFormElement.required\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [tristate]=\"true\"></eo-checkbox>\n </eo-form-input>\n </ng-template>\n\n <!-- CODESYSTEM -->\n <ng-template eoFormElementTemplate propertyType=\"CODESYSTEM\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-codesystem [situation]=\"element._eoFormControlWrapper.situation\"\n [pickerTitle]=\"formElementRef._eoFormElement.label\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [codesystem]=\"formElementRef._eoFormElement.codesystem\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [disablingFilterFunction]=\"formElementRef._eoFormElement.disablingFilterFunction\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-codesystem>\n </eo-form-input>\n </ng-template>\n\n <!-- ORGANIZATION -->\n <ng-template eoFormElementTemplate propertyType=\"ORGANIZATION\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-organization [situation]=\"element._eoFormControlWrapper.situation\"\n [dataMeta]=\"formElementRef._eoFormElement.dataMeta\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [filterObject]=\"formElementRef._eoFormElement.filter\" [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n (onDataMetaChanged)=\"organizationDataMetaResolved($event)\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-organization>\n </eo-form-input>\n </ng-template>\n\n <!-- NUMBER -->\n <ng-template eoFormElementTemplate propertyType=\"NUMBER\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-number *ngIf=\"situation !== 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\">\n </eo-number>\n\n <eo-number-range *ngIf=\"situation === 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-number-range>\n </eo-form-input>\n </ng-template>\n\n <!-- DATE AND DATETIME -->\n <ng-template eoFormElementTemplate propertyType=\"DATETIME\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-date *ngIf=\"situation !== 'SEARCH'\" [withTime]=\"formElementRef._eoFormElement.withtime\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-date>\n\n <eo-datetime-range *ngIf=\"situation === 'SEARCH'\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [withTime]=\"formElementRef._eoFormElement.withtime\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-datetime-range>\n </eo-form-input>\n </ng-template>\n\n <ng-content></ng-content>\n\n <!-- print out the type if it's not matching anything -->\n <ng-template #tplUnknown><b>{{formElementRef._eoFormElement.type}}</b></ng-template>\n</div>", styles: [":host-context(.dark) .form-element .form-field .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host{flex:1 1 auto}:host.label-toggled::ng-deep eo-form-input label{text-decoration:line-through}.form-element{box-sizing:border-box}.form-element .form-field{margin:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}.form-element .form-field .description{border:0;font-size:var(--font-hint);font-style:italic;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8)}.form-element .form-field .err-msg{color:var(--color-error);padding:calc(var(--app-pane-padding) / 4) 0;border:0}.form-element .form-field .table{flex-flow:column;align-items:flex-start;border-color:transparent}.form-element .form-field .table .label{padding-bottom:calc(var(--app-pane-padding) / 4)}.form-element.ng-dirty:not(.ng-invalid)>.form-field:not(.focused)::ng-deep label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { 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: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i5.FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: i6.CodesystemComponent, selector: "eo-codesystem", inputs: ["situation", "pickerTitle", "placeholder", "codesystem", "multiselect", "readonly", "inputStyleClass", "filterFunction", "disablingFilterFunction"] }, { kind: "component", type: i7.DateComponent, selector: "eo-date", inputs: ["withTime", "readonly"] }, { kind: "component", type: i8.DatetimeRangeComponent, selector: "eo-datetime-range", inputs: ["withTime", "pickerTitle", "operator"] }, { kind: "component", type: i9.NumberComponent, selector: "eo-number", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: i10.NumberRangeComponent, selector: "eo-number-range", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: i11.OrganizationComponent, selector: "eo-organization", inputs: ["removeCurrentUser", "situation", "multiselect", "readonly", "dataMeta", "placeholder", "exceptions", "filterObject"], outputs: ["onValueResolved", "onDataMetaChanged"] }, { kind: "component", type: i12.CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: i13.StringComponent, selector: "eo-string", inputs: ["autocomplete", "multiselect", "multiline", "readonly", "autofocus", "classification", "situation", "regex", "qname", "size", "minLength", "maxLength"] }, { kind: "component", type: i14.ReferenceComponent, selector: "eo-reference", inputs: ["readonly", "multiselect", "reference", "minLength", "maxLength"], outputs: ["onReferenceClicked"] }, { kind: "component", type: i15.DynamicListComponent, selector: "eo-dynamic-list", inputs: ["situation", "multiselect", "pickerTitle", "readonly", "filterFunction", "listObject"] }, { kind: "component", type: i16.IdReferenceComponent, selector: "eo-id-reference", inputs: ["readonly", "multiselect", "situation", "contextId", "exceptionIDs", "dataToRender", "reference", "queryFilters", "objectTypesFilter"] }, { kind: "directive", type: i17.FormElementTemplate, selector: "[eoFormElementTemplate]", inputs: ["propertyType"] }] });
103
103
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: FormElementComponent, decorators: [{
104
104
  type: Component,
105
- args: [{ selector: 'eo-form-element', template: "<div class=\"form-element\" [formGroup]=\"element\" *ngIf=\"element\">\n\n <div class=\"form-field t-{{formElementRef._eoFormElement.type}}\" #formField\n [ngClass]=\"{disabled: !!formElementRef._eoFormElement.readonly}\" *ngIf=\"elementTemplate\">\n\n <ng-container *ngTemplateOutlet=\"elementTemplate; context: {element, formElementRef}\" ></ng-container>\n\n <!-- the fields description -->\n <div class=\"description\" *ngIf=\"formElementRef._eoFormElement.description\">{{formElementRef._eoFormElement.description}}</div>\n\n <!-- error/validation messages -->\n <div class=\"err-msg\" *ngIf=\"formElementRef.errors\">\n\n <div *ngIf=\"formElementRef.errors.daterange\" translate>eo.form.property.daterange.invalid</div>\n <div *ngIf=\"formElementRef.errors.numberrange\" translate>eo.form.property.numberrange.invalid</div>\n <div *ngIf=\"formElementRef.errors.number\" translate>eo.form.property.number</div>\n <div *ngIf=\"formElementRef.errors.precision\" translate\n [translateParams]=\"formElementRef.errors.precision.translateValues\">\n {{formElementRef.errors.precision.translateKey}}</div>\n <div *ngIf=\"formElementRef.errors.scale\" translate\n [translateParams]=\"formElementRef.errors.scale.translateValues\">{{formElementRef.errors.scale.translateKey}}\n </div>\n\n <div *ngIf=\"formElementRef.errors.regex || formElementRef.errors.pattern\" translate>\n eo.form.property.string.regex.nomatch</div>\n <div *ngIf=\"formElementRef.errors.classificationemail\" translate>\n eo.form.property.string.error.classification.email</div>\n <div *ngIf=\"formElementRef.errors.classificationurl\" translate>eo.form.property.string.error.classification.url\n </div>\n <div *ngIf=\"formElementRef.errors.onlyWhitespaces\" translate>eo.form.property.string.error.whitespaces</div>\n <div *ngIf=\"formElementRef.errors.datecontrol\" translate>eo.form.property.date.invalid</div>\n <div *ngIf=\"formElementRef.errors.codesystem\" translate>eo.form.property.codesystem.value.invalid</div>\n <div *ngIf=\"formElementRef.errors.eoformScript\">{{formElementRef._eoFormElement.error.msg}}</div>\n <div *ngIf=\"formElementRef.errors.required\" translate>eo.form.property.required</div>\n <div *ngIf=\"formElementRef.errors.maxlength\" translate\n [translateParams]=\"{maxlength: formElementRef._eoFormElement.maxlen}\">eo.form.property.maxlength</div>\n <div *ngIf=\"formElementRef.errors.minlength\" translate\n [translateParams]=\"{minlength: formElementRef._eoFormElement.minlen}\">eo.form.property.minlength</div>\n <div *ngIf=\"formElementRef.errors.deletedIDReference\" translate>eo.form.property.idreference.deleted</div>\n <div *ngIf=\"formElementRef.errors.deletedOrgObject\" translate>eo.form.property.orgobject.deleted</div>\n </div>\n\n </div>\n\n\n\n<!-- STRING -->\n<ng-template eoFormElementTemplate propertyType=\"STRING\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification !== 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect\" [multiline]=\"formElementRef._eoFormElement.multiline\"\n [classification]=\"formElementRef._eoFormElement.classification\" [regex]=\"formElementRef._eoFormElement.regex\"\n [qname]=\"formElementRef._eoFormElement.qname\" [size]=\"formElementRef._eoFormElement.size\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-string>\n\n <!-- Dynamic List -->\n <eo-dynamic-list\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification === 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [listObject]=\"formElementRef._eoFormElement.list\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-dynamic-list>\n\n\n <!-- Reference -->\n <eo-reference *ngIf=\"formElementRef._eoFormElement.reference\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [reference]=\"formElementRef._eoFormElement.reference\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect ? formElementRef._eoFormElement.multiselect : situation === 'SEARCH'\"\n [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-reference>\n </eo-form-input>\n</ng-template>\n\n<!-- ID-Reference -->\n<ng-template eoFormElementTemplate propertyType=\"REFERENCE\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-id-reference [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [situation]=\"element._eoFormControlWrapper.situation\" [dataToRender]=\"formElementRef._eoFormElement.dataToRender\"\n [reference]=\"formElementRef._eoFormElement.reference\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [contextId]=\"formElementRef._eoFormElement.contextId\"\n [exceptionIDs]=\"formElementRef._eoFormElement.exceptionIDs\"\n [queryFilters]=\"formElementRef._eoFormElement.queryFilters\"\n [objectTypesFilter]=\"formElementRef._eoFormElement.objectTypesFilter\"></eo-id-reference>\n </eo-form-input>\n</ng-template>\n\n<!-- ID -->\n<ng-template eoFormElementTemplate propertyType=\"ID\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [regex]=\"'^[0-9a-fA-F]*$'\"\n [qname]=\"formElementRef._eoFormElement.qname\" [readonly]=\"formElementRef._eoFormElement.readonly\" [minLength]=\"32\"\n [maxLength]=\"32\"></eo-string>\n\n </eo-form-input>\n</ng-template>\n\n\n<!-- BOOLEAN -->\n<ng-template eoFormElementTemplate propertyType=\"BOOLEAN\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" class=\"checkbox\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" [required]=\"formElementRef._eoFormElement.required\"\n [disabled]=\"formElementRef._eoFormElement.readonly\" (onToggleLabel)=\"labelToggled($event)\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-checkbox [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [tristate]=\"true\"></eo-checkbox>\n </eo-form-input>\n</ng-template>\n\n<!-- CODESYSTEM -->\n<ng-template eoFormElementTemplate propertyType=\"CODESYSTEM\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-codesystem [situation]=\"element._eoFormControlWrapper.situation\"\n [pickerTitle]=\"formElementRef._eoFormElement.label\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [codesystem]=\"formElementRef._eoFormElement.codesystem\" [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [disablingFilterFunction]=\"formElementRef._eoFormElement.disablingFilterFunction\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-codesystem>\n </eo-form-input>\n</ng-template>\n\n<!-- ORGANIZATION -->\n<ng-template eoFormElementTemplate propertyType=\"ORGANIZATION\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-organization [situation]=\"element._eoFormControlWrapper.situation\"\n [dataMeta]=\"formElementRef._eoFormElement.dataMeta\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [filterObject]=\"formElementRef._eoFormElement.filter\" [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n (onDataMetaChanged)=\"organizationDataMetaResolved($event)\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-organization>\n </eo-form-input>\n</ng-template>\n\n<!-- NUMBER -->\n<ng-template eoFormElementTemplate propertyType=\"NUMBER\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-number *ngIf=\"situation !== 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\">\n </eo-number>\n\n <eo-number-range *ngIf=\"situation === 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-number-range>\n </eo-form-input>\n</ng-template>\n\n<!-- DATE AND DATETIME -->\n<ng-template eoFormElementTemplate propertyType=\"DATETIME\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-date *ngIf=\"situation !== 'SEARCH'\" [withTime]=\"formElementRef._eoFormElement.withtime\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-date>\n\n <eo-datetime-range *ngIf=\"situation === 'SEARCH'\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [withTime]=\"formElementRef._eoFormElement.withtime\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-datetime-range>\n </eo-form-input>\n</ng-template>\n\n<ng-content></ng-content>\n\n<!-- print out the type if it's not matching anything -->\n<ng-template #tplUnknown><b>{{formElementRef._eoFormElement.type}}</b></ng-template>\n</div>\n\n", styles: [":host-context(.dark) .form-element .form-field .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host{flex:1 1 auto}:host.label-toggled::ng-deep eo-form-input label{text-decoration:line-through}.form-element{box-sizing:border-box}.form-element .form-field{margin:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}.form-element .form-field .description{border:0;font-size:var(--font-hint);font-style:italic;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8)}.form-element .form-field .err-msg{color:var(--color-error);padding:calc(var(--app-pane-padding) / 4) 0;border:0}.form-element .form-field .table{flex-flow:column;align-items:flex-start;border-color:transparent}.form-element .form-field .table .label{padding-bottom:calc(var(--app-pane-padding) / 4)}.form-element.ng-dirty:not(.ng-invalid)>.form-field:not(.focused)::ng-deep label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}\n"] }]
105
+ args: [{ selector: 'eo-form-element', template: "<div class=\"form-element\" [formGroup]=\"element\" *ngIf=\"element\">\n\n <div class=\"form-field t-{{formElementRef._eoFormElement.type}}\" #formField\n [ngClass]=\"{disabled: !!formElementRef._eoFormElement.readonly}\" *ngIf=\"elementTemplate\">\n\n <ng-container *ngTemplateOutlet=\"elementTemplate; context: {element, formElementRef}\"></ng-container>\n\n <!-- the fields description -->\n <div class=\"description\" *ngIf=\"formElementRef._eoFormElement.description\">\n {{formElementRef._eoFormElement.description}}</div>\n\n <!-- error/validation messages -->\n <div class=\"err-msg\" *ngIf=\"formElementRef.errors\">\n\n <div *ngIf=\"formElementRef.errors.daterange\" translate>eo.form.property.daterange.invalid</div>\n <div *ngIf=\"formElementRef.errors.numberrange\" translate>eo.form.property.numberrange.invalid</div>\n <div *ngIf=\"formElementRef.errors.number\" translate>eo.form.property.number</div>\n <div *ngIf=\"formElementRef.errors.precision\" translate\n [translateParams]=\"formElementRef.errors.precision.translateValues\">\n {{formElementRef.errors.precision.translateKey}}</div>\n <div *ngIf=\"formElementRef.errors.scale\" translate\n [translateParams]=\"formElementRef.errors.scale.translateValues\">{{formElementRef.errors.scale.translateKey}}\n </div>\n\n <div *ngIf=\"formElementRef.errors.regex || formElementRef.errors.pattern\" translate>\n eo.form.property.string.regex.nomatch</div>\n <div *ngIf=\"formElementRef.errors.classificationemail\" translate>\n eo.form.property.string.error.classification.email</div>\n <div *ngIf=\"formElementRef.errors.classificationurl\" translate>eo.form.property.string.error.classification.url\n </div>\n <div *ngIf=\"formElementRef.errors.onlyWhitespaces\" translate>eo.form.property.string.error.whitespaces</div>\n <div *ngIf=\"formElementRef.errors.datecontrol\" translate>eo.form.property.date.invalid</div>\n <div *ngIf=\"formElementRef.errors.codesystem\" translate>eo.form.property.codesystem.value.invalid</div>\n <div *ngIf=\"formElementRef.errors.eoformScript\">{{formElementRef._eoFormElement.error.msg}}</div>\n <div *ngIf=\"formElementRef.errors.required\" translate>eo.form.property.required</div>\n <div *ngIf=\"formElementRef.errors.maxlength\" translate\n [translateParams]=\"{maxlength: formElementRef._eoFormElement.maxlen}\">eo.form.property.maxlength</div>\n <div *ngIf=\"formElementRef.errors.minlength\" translate\n [translateParams]=\"{minlength: formElementRef._eoFormElement.minlen}\">eo.form.property.minlength</div>\n <div *ngIf=\"formElementRef.errors.deletedIDReference\" translate>eo.form.property.idreference.deleted</div>\n <div *ngIf=\"formElementRef.errors.deletedOrgObject\" translate>eo.form.property.orgobject.deleted</div>\n </div>\n\n </div>\n\n\n\n <!-- STRING -->\n <ng-template eoFormElementTemplate propertyType=\"STRING\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification !== 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect\"\n [multiline]=\"formElementRef._eoFormElement.multiline\"\n [classification]=\"formElementRef._eoFormElement.classification\" [regex]=\"formElementRef._eoFormElement.regex\"\n [qname]=\"formElementRef._eoFormElement.qname\" [size]=\"formElementRef._eoFormElement.size\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-string>\n\n <!-- Dynamic List -->\n <eo-dynamic-list\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification === 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [listObject]=\"formElementRef._eoFormElement.list\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-dynamic-list>\n\n\n <!-- Reference -->\n <eo-reference *ngIf=\"formElementRef._eoFormElement.reference\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [reference]=\"formElementRef._eoFormElement.reference\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect ? formElementRef._eoFormElement.multiselect : situation === 'SEARCH'\"\n [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID-Reference -->\n <ng-template eoFormElementTemplate propertyType=\"REFERENCE\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-id-reference [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [dataToRender]=\"formElementRef._eoFormElement.dataToRender\"\n [reference]=\"formElementRef._eoFormElement.reference\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [contextId]=\"formElementRef._eoFormElement.contextId\"\n [exceptionIDs]=\"formElementRef._eoFormElement.exceptionIDs\"\n [queryFilters]=\"formElementRef._eoFormElement.queryFilters\"\n [objectTypesFilter]=\"formElementRef._eoFormElement.objectTypesFilter\"></eo-id-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID -->\n <ng-template eoFormElementTemplate propertyType=\"ID\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [regex]=\"'^[0-9a-fA-F]*$'\"\n [qname]=\"formElementRef._eoFormElement.qname\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [minLength]=\"32\" [maxLength]=\"32\"></eo-string>\n\n </eo-form-input>\n </ng-template>\n\n\n <!-- BOOLEAN -->\n <ng-template eoFormElementTemplate propertyType=\"BOOLEAN\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" class=\"checkbox\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" [required]=\"formElementRef._eoFormElement.required\"\n [disabled]=\"formElementRef._eoFormElement.readonly\" (onToggleLabel)=\"labelToggled($event)\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-checkbox [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [required]=\"formElementRef._eoFormElement.required\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [tristate]=\"true\"></eo-checkbox>\n </eo-form-input>\n </ng-template>\n\n <!-- CODESYSTEM -->\n <ng-template eoFormElementTemplate propertyType=\"CODESYSTEM\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-codesystem [situation]=\"element._eoFormControlWrapper.situation\"\n [pickerTitle]=\"formElementRef._eoFormElement.label\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [codesystem]=\"formElementRef._eoFormElement.codesystem\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [disablingFilterFunction]=\"formElementRef._eoFormElement.disablingFilterFunction\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-codesystem>\n </eo-form-input>\n </ng-template>\n\n <!-- ORGANIZATION -->\n <ng-template eoFormElementTemplate propertyType=\"ORGANIZATION\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-organization [situation]=\"element._eoFormControlWrapper.situation\"\n [dataMeta]=\"formElementRef._eoFormElement.dataMeta\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [filterObject]=\"formElementRef._eoFormElement.filter\" [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n (onDataMetaChanged)=\"organizationDataMetaResolved($event)\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-organization>\n </eo-form-input>\n </ng-template>\n\n <!-- NUMBER -->\n <ng-template eoFormElementTemplate propertyType=\"NUMBER\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-number *ngIf=\"situation !== 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\">\n </eo-number>\n\n <eo-number-range *ngIf=\"situation === 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-number-range>\n </eo-form-input>\n </ng-template>\n\n <!-- DATE AND DATETIME -->\n <ng-template eoFormElementTemplate propertyType=\"DATETIME\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\" [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-date *ngIf=\"situation !== 'SEARCH'\" [withTime]=\"formElementRef._eoFormElement.withtime\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-date>\n\n <eo-datetime-range *ngIf=\"situation === 'SEARCH'\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [withTime]=\"formElementRef._eoFormElement.withtime\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-datetime-range>\n </eo-form-input>\n </ng-template>\n\n <ng-content></ng-content>\n\n <!-- print out the type if it's not matching anything -->\n <ng-template #tplUnknown><b>{{formElementRef._eoFormElement.type}}</b></ng-template>\n</div>", styles: [":host-context(.dark) .form-element .form-field .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host{flex:1 1 auto}:host.label-toggled::ng-deep eo-form-input label{text-decoration:line-through}.form-element{box-sizing:border-box}.form-element .form-field{margin:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}.form-element .form-field .description{border:0;font-size:var(--font-hint);font-style:italic;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8)}.form-element .form-field .err-msg{color:var(--color-error);padding:calc(var(--app-pane-padding) / 4) 0;border:0}.form-element .form-field .table{flex-flow:column;align-items:flex-start;border-color:transparent}.form-element .form-field .table .label{padding-bottom:calc(var(--app-pane-padding) / 4)}.form-element.ng-dirty:not(.ng-invalid)>.form-field:not(.focused)::ng-deep label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}\n"] }]
106
106
  }], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { elementTemplates: [{
107
107
  type: ViewChildren,
108
108
  args: [FormElementTemplate, { emitDistinctChangesOnly: true }]
@@ -120,4 +120,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
120
120
  type: ViewChild,
121
121
  args: ['formField']
122
122
  }] } });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1mb3JtL29iamVjdC1mb3JtL2Zvcm0tZWxlbWVudC9mb3JtLWVsZW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxlQUFlLEVBQWMsS0FBSyxFQUFxQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3ZKLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUXRFLE1BQU0sT0FBTyxvQkFBb0I7SUFtQi9CLHFGQUFxRjtJQUNyRixJQUNJLGFBQWEsQ0FBQyxFQUE0QjtRQUM1QyxJQUFJLEVBQUUsRUFBRTtZQUVOLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDeEUsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUU7Z0JBQ3BELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDekI7WUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUU7Z0JBQzNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUMx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dUJBQXVCLEVBQUUsSUFBSSxFQUFDO2dCQUNLLHVCQUF1QjtzQkFBN0YsZUFBZTt1QkFBQyxtQkFBbUIsRUFBRSxFQUFDLHVCQUF1QixFQUFFLElBQUksRUFBQztnQkFjNUQsU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUlGLGFBQWE7c0JBRGhCLEtBQUs7dUJBQUMsU0FBUztnQkF3QlEsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRWxlbWVudFJlZiwgSW5wdXQsIFF1ZXJ5TGlzdCwgUmVuZGVyZXIyLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtPYmplY3RGb3JtQ29udHJvbFdyYXBwZXJ9IGZyb20gJy4uL29iamVjdC1mb3JtLWNvbnRyb2wtd3JhcHBlcic7XG5pbXBvcnQge0Zvcm1FbGVtZW50VGVtcGxhdGV9IGZyb20gJy4vZm9ybS1lbGVtZW50LXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLWZvcm0tZWxlbWVudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWVsZW1lbnQuY29tcG9uZW50LnNjc3MnXSxcbiAgLy9lbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1FbGVtZW50Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGRyZW4oRm9ybUVsZW1lbnRUZW1wbGF0ZSwge2VtaXREaXN0aW5jdENoYW5nZXNPbmx5OiB0cnVlfSkgZWxlbWVudFRlbXBsYXRlczogUXVlcnlMaXN0PEZvcm1FbGVtZW50VGVtcGxhdGU+O1xuICBAQ29udGVudENoaWxkcmVuKEZvcm1FbGVtZW50VGVtcGxhdGUsIHtlbWl0RGlzdGluY3RDaGFuZ2VzT25seTogdHJ1ZX0pIGNvbnRlbnRFbGVtZW50VGVtcGxhdGVzOiBRdWVyeUxpc3Q8Rm9ybUVsZW1lbnRUZW1wbGF0ZT47XG5cblxuICBcbiAgZWxlbWVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBmb3JtRWxlbWVudFJlZjogYW55O1xuICBlbGVtZW50OiBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXI7XG4gIGZvY3VzZWQ7XG4gIGlzTnVsbDogYm9vbGVhbjtcbiAgdGFnOiB7XG4gICAgbGFiZWw6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nXG4gIH07XG5cbiAgQElucHV0KCkgc2l0dWF0aW9uO1xuICBASW5wdXQoKSBza2lwVG9nZ2xlOiBib29sZWFuO1xuXG4gIC8vIGVsZW1lbnQgaXMgc3VwcG9zZWQgdG8gYmUgYSBzcGVjaWFsIFVudHlwZWRGb3JtR3JvdXAgaG9sZGluZyBhIHNpbmdsZSBmb3JtIGVsZW1lbnRcbiAgQElucHV0KCdlbGVtZW50JylcbiAgc2V0IGVsZW1lbnRTZXR0ZXIoZWw6IE9iamVjdEZvcm1Db250cm9sV3JhcHBlcikge1xuICAgIGlmIChlbCkge1xuXG4gICAgICB0aGlzLmVsZW1lbnQgPSBlbDtcbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYgPSBlbC5jb250cm9sc1tlbC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVdO1xuICAgICAgaWYgKHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuaXNOb3RTZXRWYWx1ZSkge1xuICAgICAgICB0aGlzLmxhYmVsVG9nZ2xlZCh0cnVlKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnR5cGUgPT09ICdSRUZFUkVOQ0UnKSB7XG4gICAgICAgIHRoaXMuYWRkRGF0YVRvUmVuZGVyKHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQudHlwZSA9PT0gJ0lEJykge1xuICAgICAgICB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm1pbmxlbiA9IDMyO1xuICAgICAgICB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm1heGxlbiA9IDMyO1xuICAgICAgfVxuICAgICAgdGhpcy5mZXRjaFRhZ3MoKTtcblxuICAgICAgaWYgKHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHkgJiYgdGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZCkge1xuICAgICAgICB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQFZpZXdDaGlsZCgnZm9ybUZpZWxkJykgZm9ybUZpZWxkOiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRGF0YVRvUmVuZGVyKGVsZW1lbnQpIHtcbiAgICBjb25zdCBtdWx0aXNlbGVjdCA9IGVsZW1lbnQubXVsdGlzZWxlY3Q7XG4gICAgY29uc3QgZGF0YU1ldGEgPSBlbGVtZW50LmRhdGFNZXRhO1xuICAgIGlmIChtdWx0aXNlbGVjdCAmJiBkYXRhTWV0YSkge1xuICAgICAgZWxlbWVudC5kYXRhVG9SZW5kZXIgPSBkYXRhTWV0YS5tYXAoKGRNLCBpKSA9PiB7XG4gICAgICAgIGRNLmlkID0gZWxlbWVudC52YWx1ZVtpXTtcbiAgICAgICAgcmV0dXJuIGRNO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICghbXVsdGlzZWxlY3QgJiYgZGF0YU1ldGEpIHtcbiAgICAgIGRhdGFNZXRhLmlkID0gZWxlbWVudC52YWx1ZTtcbiAgICAgIGVsZW1lbnQuZGF0YVRvUmVuZGVyID0gW2RhdGFNZXRhXTtcbiAgICB9XG4gIH1cblxuICBsYWJlbFRvZ2dsZWQodG9nZ2xlZDogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy5za2lwVG9nZ2xlICYmIHRoaXMuZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgY29uc3QgdG9nZ2xlQ2xhc3MgPSAnbGFiZWwtdG9nZ2xlZCc7XG4gICAgICB0aGlzLmlzTnVsbCA9IHRvZ2dsZWQ7XG4gICAgICBpZiAodG9nZ2xlZCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgdG9nZ2xlQ2xhc3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHRvZ2dsZUNsYXNzKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuaXNOb3RTZXRWYWx1ZSA9IHRvZ2dsZWQ7XG4gICAgICB0aGlzLmVsZW1lbnQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cbiAgfVxuXG4gIG9yZ2FuaXphdGlvbkRhdGFNZXRhUmVzb2x2ZWQoZGF0YSkge1xuICAgIC8vIG5ldyBtZXRhIGRhdGEgd2lsbCBhbHdheXMgYXJyaXZlIGFzIGFycmF5IGV2ZW4gZm9yIHNpbmdsZSBpbnB1dHMsIHNvIHdlIGhhdmUgdG8gY29udmVydFxuICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZGF0YU1ldGEgPSB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpc2VsZWN0ID8gZGF0YSA6IGRhdGFbMF07XG4gIH1cblxuICBmZXRjaFRhZ3MoKSB7XG4gICAgdGhpcy50YWcgPSBudWxsO1xuICAgIGlmICh0aGlzLnNpdHVhdGlvbiA9PT0gJ0NSRUFURScgJiZcbiAgICAgICh0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lmhhc093blByb3BlcnR5KCdkZWZhdWx0dmFsdWVmdW5jdGlvbicpIHx8IHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuaGFzT3duUHJvcGVydHkoJ2RlZmF1bHR2YWx1ZScpKSkge1xuICAgICAgdGhpcy50YWcgPSB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmRlZmF1bHR2YWx1ZWZ1bmN0aW9uID09PSAnRVhUUkFDVElPTicgPyB7XG4gICAgICAgIGxhYmVsOiAnZXgnLFxuICAgICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uZm9ybS5lbGVtZW50LnRhZy5leCcpXG4gICAgICB9IDoge1xuICAgICAgICBsYWJlbDogJ2RmJyxcbiAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmZvcm0uZWxlbWVudC50YWcuZGYnKVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgdHBscyA9IFsuLi50aGlzLmVsZW1lbnRUZW1wbGF0ZXMudG9BcnJheSgpLCAuLi50aGlzLmNvbnRlbnRFbGVtZW50VGVtcGxhdGVzLnRvQXJyYXkoKV07XG4gICAgY29uc3QgZGlyID0gdHBscy5maW5kKHRwbCA9PiB0cGwucHJvcGVydHlUeXBlID09PSB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnR5cGUpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5lbGVtZW50VGVtcGxhdGUgPSBkaXIgPyBkaXIudGVtcGxhdGUgOiB1bmRlZmluZWRcbiAgICB9KVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1lbGVtZW50XCIgW2Zvcm1Hcm91cF09XCJlbGVtZW50XCIgKm5nSWY9XCJlbGVtZW50XCI+XG5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGQgdC17e2Zvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnR5cGV9fVwiICNmb3JtRmllbGRcbiAgICBbbmdDbGFzc109XCJ7ZGlzYWJsZWQ6ICEhZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHl9XCIgKm5nSWY9XCJlbGVtZW50VGVtcGxhdGVcIj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbGVtZW50VGVtcGxhdGU7IGNvbnRleHQ6IHtlbGVtZW50LCBmb3JtRWxlbWVudFJlZn1cIiA+PC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIHRoZSBmaWVsZHMgZGVzY3JpcHRpb24gLS0+XG4gICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCIgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5kZXNjcmlwdGlvblwiPnt7Zm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZGVzY3JpcHRpb259fTwvZGl2PlxuXG4gICAgPCEtLSBlcnJvci92YWxpZGF0aW9uIG1lc3NhZ2VzIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJlcnItbXNnXCIgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnNcIj5cblxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5kYXRlcmFuZ2VcIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5kYXRlcmFuZ2UuaW52YWxpZDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5udW1iZXJyYW5nZVwiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5Lm51bWJlcnJhbmdlLmludmFsaWQ8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMubnVtYmVyXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkubnVtYmVyPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLnByZWNpc2lvblwiIHRyYW5zbGF0ZVxuICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5wcmVjaXNpb24udHJhbnNsYXRlVmFsdWVzXCI+XG4gICAgICAgIHt7Zm9ybUVsZW1lbnRSZWYuZXJyb3JzLnByZWNpc2lvbi50cmFuc2xhdGVLZXl9fTwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5zY2FsZVwiIHRyYW5zbGF0ZVxuICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5zY2FsZS50cmFuc2xhdGVWYWx1ZXNcIj57e2Zvcm1FbGVtZW50UmVmLmVycm9ycy5zY2FsZS50cmFuc2xhdGVLZXl9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMucmVnZXggfHwgZm9ybUVsZW1lbnRSZWYuZXJyb3JzLnBhdHRlcm5cIiB0cmFuc2xhdGU+XG4gICAgICAgIGVvLmZvcm0ucHJvcGVydHkuc3RyaW5nLnJlZ2V4Lm5vbWF0Y2g8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuY2xhc3NpZmljYXRpb25lbWFpbFwiIHRyYW5zbGF0ZT5cbiAgICAgICAgZW8uZm9ybS5wcm9wZXJ0eS5zdHJpbmcuZXJyb3IuY2xhc3NpZmljYXRpb24uZW1haWw8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuY2xhc3NpZmljYXRpb251cmxcIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5zdHJpbmcuZXJyb3IuY2xhc3NpZmljYXRpb24udXJsXG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMub25seVdoaXRlc3BhY2VzXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkuc3RyaW5nLmVycm9yLndoaXRlc3BhY2VzPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLmRhdGVjb250cm9sXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkuZGF0ZS5pbnZhbGlkPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLmNvZGVzeXN0ZW1cIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5jb2Rlc3lzdGVtLnZhbHVlLmludmFsaWQ8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuZW9mb3JtU2NyaXB0XCI+e3tmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5lcnJvci5tc2d9fTwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5yZXF1aXJlZFwiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5LnJlcXVpcmVkPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLm1heGxlbmd0aFwiIHRyYW5zbGF0ZVxuICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cInttYXhsZW5ndGg6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm1heGxlbn1cIj5lby5mb3JtLnByb3BlcnR5Lm1heGxlbmd0aDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5taW5sZW5ndGhcIiB0cmFuc2xhdGVcbiAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7bWlubGVuZ3RoOiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5taW5sZW59XCI+ZW8uZm9ybS5wcm9wZXJ0eS5taW5sZW5ndGg8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuZGVsZXRlZElEUmVmZXJlbmNlXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkuaWRyZWZlcmVuY2UuZGVsZXRlZDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5kZWxldGVkT3JnT2JqZWN0XCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkub3Jnb2JqZWN0LmRlbGV0ZWQ8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cblxuXG5cbjwhLS0gU1RSSU5HIC0tPlxuPG5nLXRlbXBsYXRlIGVvRm9ybUVsZW1lbnRUZW1wbGF0ZSBwcm9wZXJ0eVR5cGU9XCJTVFJJTkdcIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiIFtsYWJlbF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbFwiIFtpc051bGxdPVwiaXNOdWxsXCJcbiAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICBbaW52YWxpZF09XCJmb3JtRWxlbWVudFJlZi5pbnZhbGlkXCI+XG5cbiAgICA8ZW8tc3RyaW5nXG4gICAgICAqbmdJZj1cIiFmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWZlcmVuY2UgJiYgZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuY2xhc3NpZmljYXRpb24gIT09ICdzZWxlY3RvcidcIlxuICAgICAgW3NpdHVhdGlvbl09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5zaXR1YXRpb25cIlxuICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiXG4gICAgICBbYXV0b2NvbXBsZXRlXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmF1dG9jb21wbGV0ZVwiXG4gICAgICBbbXVsdGlzZWxlY3RdPVwiISFmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdFwiIFttdWx0aWxpbmVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlsaW5lXCJcbiAgICAgIFtjbGFzc2lmaWNhdGlvbl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5jbGFzc2lmaWNhdGlvblwiIFtyZWdleF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWdleFwiXG4gICAgICBbcW5hbWVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucW5hbWVcIiBbc2l6ZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5zaXplXCJcbiAgICAgIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiIFttaW5MZW5ndGhdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWlubGVuXCJcbiAgICAgIFttYXhMZW5ndGhdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWF4bGVuXCI+PC9lby1zdHJpbmc+XG5cbiAgICA8IS0tIER5bmFtaWMgTGlzdCAtLT5cbiAgICA8ZW8tZHluYW1pYy1saXN0XG4gICAgICAqbmdJZj1cIiFmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWZlcmVuY2UgJiYgZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuY2xhc3NpZmljYXRpb24gPT09ICdzZWxlY3RvcidcIlxuICAgICAgW3NpdHVhdGlvbl09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5zaXR1YXRpb25cIiBbcGlja2VyVGl0bGVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWxcIlxuICAgICAgW2ZpbHRlckZ1bmN0aW9uXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmZpbHRlckZ1bmN0aW9uXCJcbiAgICAgIFttdWx0aXNlbGVjdF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdFwiIFtsaXN0T2JqZWN0XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lmxpc3RcIlxuICAgICAgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIj48L2VvLWR5bmFtaWMtbGlzdD5cblxuXG4gICAgPCEtLSBSZWZlcmVuY2UgLS0+XG4gICAgPGVvLXJlZmVyZW5jZSAqbmdJZj1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlZmVyZW5jZVwiXG4gICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCIgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgIFtyZWZlcmVuY2VdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVmZXJlbmNlXCJcbiAgICAgIFttdWx0aXNlbGVjdF09XCIhIWZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpc2VsZWN0ID8gZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3QgOiBzaXR1YXRpb24gPT09ICdTRUFSQ0gnXCJcbiAgICAgIFttaW5MZW5ndGhdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWlubGVuXCJcbiAgICAgIFttYXhMZW5ndGhdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWF4bGVuXCI+PC9lby1yZWZlcmVuY2U+XG4gIDwvZW8tZm9ybS1pbnB1dD5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gSUQtUmVmZXJlbmNlIC0tPlxuPG5nLXRlbXBsYXRlIGVvRm9ybUVsZW1lbnRUZW1wbGF0ZSBwcm9wZXJ0eVR5cGU9XCJSRUZFUkVOQ0VcIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiIFtsYWJlbF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbFwiIFtpc051bGxdPVwiaXNOdWxsXCJcbiAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICBbaW52YWxpZF09XCJmb3JtRWxlbWVudFJlZi5pbnZhbGlkXCI+XG5cbiAgICA8ZW8taWQtcmVmZXJlbmNlIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIlxuICAgICAgW3NpdHVhdGlvbl09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5zaXR1YXRpb25cIiBbZGF0YVRvUmVuZGVyXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmRhdGFUb1JlbmRlclwiXG4gICAgICBbcmVmZXJlbmNlXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlZmVyZW5jZVwiIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICBbbXVsdGlzZWxlY3RdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3RcIiBbY29udGV4dElkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmNvbnRleHRJZFwiXG4gICAgICBbZXhjZXB0aW9uSURzXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmV4Y2VwdGlvbklEc1wiXG4gICAgICBbcXVlcnlGaWx0ZXJzXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnF1ZXJ5RmlsdGVyc1wiXG4gICAgICBbb2JqZWN0VHlwZXNGaWx0ZXJdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQub2JqZWN0VHlwZXNGaWx0ZXJcIj48L2VvLWlkLXJlZmVyZW5jZT5cbiAgPC9lby1mb3JtLWlucHV0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBJRCAtLT5cbjxuZy10ZW1wbGF0ZSBlb0Zvcm1FbGVtZW50VGVtcGxhdGUgcHJvcGVydHlUeXBlPVwiSURcIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiIFtsYWJlbF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbFwiIFtpc051bGxdPVwiaXNOdWxsXCJcbiAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICBbaW52YWxpZF09XCJmb3JtRWxlbWVudFJlZi5pbnZhbGlkXCI+XG5cbiAgICA8ZW8tc3RyaW5nIFtzaXR1YXRpb25dPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuc2l0dWF0aW9uXCJcbiAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIlxuICAgICAgW2F1dG9jb21wbGV0ZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5hdXRvY29tcGxldGVcIlxuICAgICAgW211bHRpc2VsZWN0XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpc2VsZWN0XCIgW3JlZ2V4XT1cIideWzAtOWEtZkEtRl0qJCdcIlxuICAgICAgW3FuYW1lXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnFuYW1lXCIgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCIgW21pbkxlbmd0aF09XCIzMlwiXG4gICAgICBbbWF4TGVuZ3RoXT1cIjMyXCI+PC9lby1zdHJpbmc+XG5cbiAgPC9lby1mb3JtLWlucHV0PlxuPC9uZy10ZW1wbGF0ZT5cblxuXG48IS0tIEJPT0xFQU4gLS0+XG48bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIkJPT0xFQU5cIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiIGNsYXNzPVwiY2hlY2tib3hcIiBbbGFiZWxdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWxcIiBbaXNOdWxsXT1cImlzTnVsbFwiXG4gICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZSB8fCBzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCJcbiAgICBbZGlzYWJsZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgW2ludmFsaWRdPVwiZm9ybUVsZW1lbnRSZWYuaW52YWxpZFwiPlxuXG4gICAgPGVvLWNoZWNrYm94IFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIlxuICAgICAgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCIgW3RyaXN0YXRlXT1cInRydWVcIj48L2VvLWNoZWNrYm94PlxuICA8L2VvLWZvcm0taW5wdXQ+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIENPREVTWVNURU0gLS0+XG48bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIkNPREVTWVNURU1cIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiIFtsYWJlbF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbFwiIFtpc051bGxdPVwiaXNOdWxsXCJcbiAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICBbaW52YWxpZF09XCJmb3JtRWxlbWVudFJlZi5pbnZhbGlkXCI+XG5cbiAgICA8ZW8tY29kZXN5c3RlbSBbc2l0dWF0aW9uXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLnNpdHVhdGlvblwiXG4gICAgICBbcGlja2VyVGl0bGVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWxcIiBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgW2NvZGVzeXN0ZW1dPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuY29kZXN5c3RlbVwiIFttdWx0aXNlbGVjdF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdFwiXG4gICAgICBbZmlsdGVyRnVuY3Rpb25dPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZmlsdGVyRnVuY3Rpb25cIlxuICAgICAgW2Rpc2FibGluZ0ZpbHRlckZ1bmN0aW9uXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmRpc2FibGluZ0ZpbHRlckZ1bmN0aW9uXCJcbiAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIj48L2VvLWNvZGVzeXN0ZW0+XG4gIDwvZW8tZm9ybS1pbnB1dD5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gT1JHQU5JWkFUSU9OIC0tPlxuPG5nLXRlbXBsYXRlIGVvRm9ybUVsZW1lbnRUZW1wbGF0ZSBwcm9wZXJ0eVR5cGU9XCJPUkdBTklaQVRJT05cIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiIFtsYWJlbF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbFwiIFtpc051bGxdPVwiaXNOdWxsXCJcbiAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICBbaW52YWxpZF09XCJmb3JtRWxlbWVudFJlZi5pbnZhbGlkXCI+XG5cbiAgICA8ZW8tb3JnYW5pemF0aW9uIFtzaXR1YXRpb25dPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuc2l0dWF0aW9uXCJcbiAgICAgIFtkYXRhTWV0YV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5kYXRhTWV0YVwiIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICBbZmlsdGVyT2JqZWN0XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmZpbHRlclwiIFttdWx0aXNlbGVjdF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdFwiXG4gICAgICAob25EYXRhTWV0YUNoYW5nZWQpPVwib3JnYW5pemF0aW9uRGF0YU1ldGFSZXNvbHZlZCgkZXZlbnQpXCJcbiAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIj48L2VvLW9yZ2FuaXphdGlvbj5cbiAgPC9lby1mb3JtLWlucHV0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBOVU1CRVIgLS0+XG48bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIk5VTUJFUlwiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiIGxldC1mb3JtRWxlbWVudFJlZj1cImZvcm1FbGVtZW50UmVmXCI+XG4gIDxlby1mb3JtLWlucHV0IFt0YWddPVwidGFnXCIgW2xhYmVsXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsXCIgW2lzTnVsbF09XCJpc051bGxcIlxuICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGUgfHwgc2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiIChvblRvZ2dsZUxhYmVsKT1cImxhYmVsVG9nZ2xlZCgkZXZlbnQpXCJcbiAgICBbcmVxdWlyZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgIFtpbnZhbGlkXT1cImZvcm1FbGVtZW50UmVmLmludmFsaWRcIj5cblxuICAgIDxlby1udW1iZXIgKm5nSWY9XCJzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgIFtwcmVjaXNpb25dPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucHJlY2lzaW9uXCIgW3NjYWxlXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnNjYWxlXCJcbiAgICAgIFtncm91cGluZ109XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5ncm91cGluZ1wiIFtwYXR0ZXJuXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnBhdHRlcm5cIlxuICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiPlxuICAgIDwvZW8tbnVtYmVyPlxuXG4gICAgPGVvLW51bWJlci1yYW5nZSAqbmdJZj1cInNpdHVhdGlvbiA9PT0gJ1NFQVJDSCdcIiBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgW3ByZWNpc2lvbl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5wcmVjaXNpb25cIiBbc2NhbGVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuc2NhbGVcIlxuICAgICAgW2dyb3VwaW5nXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lmdyb3VwaW5nXCIgW3BhdHRlcm5dPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucGF0dGVyblwiXG4gICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCI+PC9lby1udW1iZXItcmFuZ2U+XG4gIDwvZW8tZm9ybS1pbnB1dD5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gREFURSBBTkQgREFURVRJTUUgLS0+XG48bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIkRBVEVUSU1FXCIgbGV0LWVsZW1lbnQ9XCJlbGVtZW50XCIgbGV0LWZvcm1FbGVtZW50UmVmPVwiZm9ybUVsZW1lbnRSZWZcIj5cbiAgPGVvLWZvcm0taW5wdXQgW3RhZ109XCJ0YWdcIiBbbGFiZWxdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWxcIiBbaXNOdWxsXT1cImlzTnVsbFwiXG4gICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZSB8fCBzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgKG9uVG9nZ2xlTGFiZWwpPVwibGFiZWxUb2dnbGVkKCRldmVudClcIlxuICAgIFtyZXF1aXJlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZFwiIFtkaXNhYmxlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgW2ludmFsaWRdPVwiZm9ybUVsZW1lbnRSZWYuaW52YWxpZFwiPlxuXG4gICAgPGVvLWRhdGUgKm5nSWY9XCJzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgW3dpdGhUaW1lXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LndpdGh0aW1lXCJcbiAgICAgIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCI+PC9lby1kYXRlPlxuXG4gICAgPGVvLWRhdGV0aW1lLXJhbmdlICpuZ0lmPVwic2l0dWF0aW9uID09PSAnU0VBUkNIJ1wiIFtwaWNrZXJUaXRsZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbFwiXG4gICAgICBbd2l0aFRpbWVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQud2l0aHRpbWVcIlxuICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiPjwvZW8tZGF0ZXRpbWUtcmFuZ2U+XG4gIDwvZW8tZm9ybS1pbnB1dD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuPCEtLSBwcmludCBvdXQgdGhlIHR5cGUgaWYgaXQncyBub3QgbWF0Y2hpbmcgYW55dGhpbmcgLS0+XG48bmctdGVtcGxhdGUgI3RwbFVua25vd24+PGI+e3tmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC50eXBlfX08L2I+PC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuXG4iXX0=
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1mb3JtL29iamVjdC1mb3JtL2Zvcm0tZWxlbWVudC9mb3JtLWVsZW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxlQUFlLEVBQWMsS0FBSyxFQUFxQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3ZKLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUXRFLE1BQU0sT0FBTyxvQkFBb0I7SUFtQi9CLHFGQUFxRjtJQUNyRixJQUNJLGFBQWEsQ0FBQyxFQUE0QjtRQUM1QyxJQUFJLEVBQUUsRUFBRTtZQUVOLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDeEUsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUU7Z0JBQ3BELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDekI7WUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUU7Z0JBQzNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUMxRDtZQUNELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDcEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQzthQUNoRDtZQUNELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUVqQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUU7Z0JBQzlGLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7YUFDckQ7U0FDRjtJQUNILENBQUM7SUFJRCxZQUFvQixTQUEyQixFQUFVLFFBQW1CLEVBQVUsRUFBYztRQUFoRixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFZO0lBQ3BHLENBQUM7SUFFTyxlQUFlLENBQUMsT0FBTztRQUM3QixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDbEMsSUFBSSxXQUFXLElBQUksUUFBUSxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDNUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6QixPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxJQUFJLENBQUMsV0FBVyxJQUFJLFFBQVEsRUFBRTtZQUM1QixRQUFRLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDNUIsT0FBTyxDQUFDLFlBQVksR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUFnQjtRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLFNBQVMsS0FBSyxRQUFRLEVBQUU7WUFDakYsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO1lBQ3RCLElBQUksT0FBTyxFQUFFO2dCQUNYLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2FBQzVEO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2FBQy9EO1lBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQztZQUMzRCxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDdkM7SUFDSCxDQUFDO0lBRUQsNEJBQTRCLENBQUMsSUFBSTtRQUMvQiwwRkFBMEY7UUFDMUYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEgsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztRQUNoQixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssUUFBUTtZQUM3QixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFO1lBQ2xKLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQztnQkFDcEYsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDO2FBQ3hELENBQUMsQ0FBQyxDQUFDO2dCQUNGLEtBQUssRUFBRSxJQUFJO2dCQUNYLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQzthQUN4RCxDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM3RixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtRQUN2RCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7O2lIQXZHVSxvQkFBb0I7cUdBQXBCLG9CQUFvQiwwTUFFZCxtQkFBbUIsMkpBRHRCLG1CQUFtQixnRENabkMsNHphQWtOTTsyRkR2TU8sb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNFLGlCQUFpQjt3SkFNeUMsZ0JBQWdCO3NCQUFuRixZQUFZO3VCQUFDLG1CQUFtQixFQUFFLEVBQUMsdUJBQXVCLEVBQUUsSUFBSSxFQUFDO2dCQUNLLHVCQUF1QjtzQkFBN0YsZUFBZTt1QkFBQyxtQkFBbUIsRUFBRSxFQUFDLHVCQUF1QixFQUFFLElBQUksRUFBQztnQkFjNUQsU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUlGLGFBQWE7c0JBRGhCLEtBQUs7dUJBQUMsU0FBUztnQkF3QlEsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRWxlbWVudFJlZiwgSW5wdXQsIFF1ZXJ5TGlzdCwgUmVuZGVyZXIyLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtPYmplY3RGb3JtQ29udHJvbFdyYXBwZXJ9IGZyb20gJy4uL29iamVjdC1mb3JtLWNvbnRyb2wtd3JhcHBlcic7XG5pbXBvcnQge0Zvcm1FbGVtZW50VGVtcGxhdGV9IGZyb20gJy4vZm9ybS1lbGVtZW50LXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLWZvcm0tZWxlbWVudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWVsZW1lbnQuY29tcG9uZW50LnNjc3MnXSxcbiAgLy9lbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1FbGVtZW50Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGRyZW4oRm9ybUVsZW1lbnRUZW1wbGF0ZSwge2VtaXREaXN0aW5jdENoYW5nZXNPbmx5OiB0cnVlfSkgZWxlbWVudFRlbXBsYXRlczogUXVlcnlMaXN0PEZvcm1FbGVtZW50VGVtcGxhdGU+O1xuICBAQ29udGVudENoaWxkcmVuKEZvcm1FbGVtZW50VGVtcGxhdGUsIHtlbWl0RGlzdGluY3RDaGFuZ2VzT25seTogdHJ1ZX0pIGNvbnRlbnRFbGVtZW50VGVtcGxhdGVzOiBRdWVyeUxpc3Q8Rm9ybUVsZW1lbnRUZW1wbGF0ZT47XG5cblxuICBcbiAgZWxlbWVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBmb3JtRWxlbWVudFJlZjogYW55O1xuICBlbGVtZW50OiBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXI7XG4gIGZvY3VzZWQ7XG4gIGlzTnVsbDogYm9vbGVhbjtcbiAgdGFnOiB7XG4gICAgbGFiZWw6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nXG4gIH07XG5cbiAgQElucHV0KCkgc2l0dWF0aW9uO1xuICBASW5wdXQoKSBza2lwVG9nZ2xlOiBib29sZWFuO1xuXG4gIC8vIGVsZW1lbnQgaXMgc3VwcG9zZWQgdG8gYmUgYSBzcGVjaWFsIFVudHlwZWRGb3JtR3JvdXAgaG9sZGluZyBhIHNpbmdsZSBmb3JtIGVsZW1lbnRcbiAgQElucHV0KCdlbGVtZW50JylcbiAgc2V0IGVsZW1lbnRTZXR0ZXIoZWw6IE9iamVjdEZvcm1Db250cm9sV3JhcHBlcikge1xuICAgIGlmIChlbCkge1xuXG4gICAgICB0aGlzLmVsZW1lbnQgPSBlbDtcbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYgPSBlbC5jb250cm9sc1tlbC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVdO1xuICAgICAgaWYgKHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuaXNOb3RTZXRWYWx1ZSkge1xuICAgICAgICB0aGlzLmxhYmVsVG9nZ2xlZCh0cnVlKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnR5cGUgPT09ICdSRUZFUkVOQ0UnKSB7XG4gICAgICAgIHRoaXMuYWRkRGF0YVRvUmVuZGVyKHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQudHlwZSA9PT0gJ0lEJykge1xuICAgICAgICB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm1pbmxlbiA9IDMyO1xuICAgICAgICB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm1heGxlbiA9IDMyO1xuICAgICAgfVxuICAgICAgdGhpcy5mZXRjaFRhZ3MoKTtcblxuICAgICAgaWYgKHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHkgJiYgdGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZCkge1xuICAgICAgICB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQFZpZXdDaGlsZCgnZm9ybUZpZWxkJykgZm9ybUZpZWxkOiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRGF0YVRvUmVuZGVyKGVsZW1lbnQpIHtcbiAgICBjb25zdCBtdWx0aXNlbGVjdCA9IGVsZW1lbnQubXVsdGlzZWxlY3Q7XG4gICAgY29uc3QgZGF0YU1ldGEgPSBlbGVtZW50LmRhdGFNZXRhO1xuICAgIGlmIChtdWx0aXNlbGVjdCAmJiBkYXRhTWV0YSkge1xuICAgICAgZWxlbWVudC5kYXRhVG9SZW5kZXIgPSBkYXRhTWV0YS5tYXAoKGRNLCBpKSA9PiB7XG4gICAgICAgIGRNLmlkID0gZWxlbWVudC52YWx1ZVtpXTtcbiAgICAgICAgcmV0dXJuIGRNO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICghbXVsdGlzZWxlY3QgJiYgZGF0YU1ldGEpIHtcbiAgICAgIGRhdGFNZXRhLmlkID0gZWxlbWVudC52YWx1ZTtcbiAgICAgIGVsZW1lbnQuZGF0YVRvUmVuZGVyID0gW2RhdGFNZXRhXTtcbiAgICB9XG4gIH1cblxuICBsYWJlbFRvZ2dsZWQodG9nZ2xlZDogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy5za2lwVG9nZ2xlICYmIHRoaXMuZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgY29uc3QgdG9nZ2xlQ2xhc3MgPSAnbGFiZWwtdG9nZ2xlZCc7XG4gICAgICB0aGlzLmlzTnVsbCA9IHRvZ2dsZWQ7XG4gICAgICBpZiAodG9nZ2xlZCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgdG9nZ2xlQ2xhc3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHRvZ2dsZUNsYXNzKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuaXNOb3RTZXRWYWx1ZSA9IHRvZ2dsZWQ7XG4gICAgICB0aGlzLmVsZW1lbnQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cbiAgfVxuXG4gIG9yZ2FuaXphdGlvbkRhdGFNZXRhUmVzb2x2ZWQoZGF0YSkge1xuICAgIC8vIG5ldyBtZXRhIGRhdGEgd2lsbCBhbHdheXMgYXJyaXZlIGFzIGFycmF5IGV2ZW4gZm9yIHNpbmdsZSBpbnB1dHMsIHNvIHdlIGhhdmUgdG8gY29udmVydFxuICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZGF0YU1ldGEgPSB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpc2VsZWN0ID8gZGF0YSA6IGRhdGFbMF07XG4gIH1cblxuICBmZXRjaFRhZ3MoKSB7XG4gICAgdGhpcy50YWcgPSBudWxsO1xuICAgIGlmICh0aGlzLnNpdHVhdGlvbiA9PT0gJ0NSRUFURScgJiZcbiAgICAgICh0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lmhhc093blByb3BlcnR5KCdkZWZhdWx0dmFsdWVmdW5jdGlvbicpIHx8IHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuaGFzT3duUHJvcGVydHkoJ2RlZmF1bHR2YWx1ZScpKSkge1xuICAgICAgdGhpcy50YWcgPSB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmRlZmF1bHR2YWx1ZWZ1bmN0aW9uID09PSAnRVhUUkFDVElPTicgPyB7XG4gICAgICAgIGxhYmVsOiAnZXgnLFxuICAgICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uZm9ybS5lbGVtZW50LnRhZy5leCcpXG4gICAgICB9IDoge1xuICAgICAgICBsYWJlbDogJ2RmJyxcbiAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmZvcm0uZWxlbWVudC50YWcuZGYnKVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgdHBscyA9IFsuLi50aGlzLmVsZW1lbnRUZW1wbGF0ZXMudG9BcnJheSgpLCAuLi50aGlzLmNvbnRlbnRFbGVtZW50VGVtcGxhdGVzLnRvQXJyYXkoKV07XG4gICAgY29uc3QgZGlyID0gdHBscy5maW5kKHRwbCA9PiB0cGwucHJvcGVydHlUeXBlID09PSB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnR5cGUpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5lbGVtZW50VGVtcGxhdGUgPSBkaXIgPyBkaXIudGVtcGxhdGUgOiB1bmRlZmluZWRcbiAgICB9KVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1lbGVtZW50XCIgW2Zvcm1Hcm91cF09XCJlbGVtZW50XCIgKm5nSWY9XCJlbGVtZW50XCI+XG5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGQgdC17e2Zvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnR5cGV9fVwiICNmb3JtRmllbGRcbiAgICBbbmdDbGFzc109XCJ7ZGlzYWJsZWQ6ICEhZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHl9XCIgKm5nSWY9XCJlbGVtZW50VGVtcGxhdGVcIj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbGVtZW50VGVtcGxhdGU7IGNvbnRleHQ6IHtlbGVtZW50LCBmb3JtRWxlbWVudFJlZn1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gdGhlIGZpZWxkcyBkZXNjcmlwdGlvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmRlc2NyaXB0aW9uXCI+XG4gICAgICB7e2Zvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmRlc2NyaXB0aW9ufX08L2Rpdj5cblxuICAgIDwhLS0gZXJyb3IvdmFsaWRhdGlvbiBtZXNzYWdlcyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZXJyLW1zZ1wiICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzXCI+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuZGF0ZXJhbmdlXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkuZGF0ZXJhbmdlLmludmFsaWQ8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMubnVtYmVycmFuZ2VcIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5udW1iZXJyYW5nZS5pbnZhbGlkPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLm51bWJlclwiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5Lm51bWJlcjwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5wcmVjaXNpb25cIiB0cmFuc2xhdGVcbiAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMucHJlY2lzaW9uLnRyYW5zbGF0ZVZhbHVlc1wiPlxuICAgICAgICB7e2Zvcm1FbGVtZW50UmVmLmVycm9ycy5wcmVjaXNpb24udHJhbnNsYXRlS2V5fX08L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuc2NhbGVcIiB0cmFuc2xhdGVcbiAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuc2NhbGUudHJhbnNsYXRlVmFsdWVzXCI+e3tmb3JtRWxlbWVudFJlZi5lcnJvcnMuc2NhbGUudHJhbnNsYXRlS2V5fX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLnJlZ2V4IHx8IGZvcm1FbGVtZW50UmVmLmVycm9ycy5wYXR0ZXJuXCIgdHJhbnNsYXRlPlxuICAgICAgICBlby5mb3JtLnByb3BlcnR5LnN0cmluZy5yZWdleC5ub21hdGNoPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLmNsYXNzaWZpY2F0aW9uZW1haWxcIiB0cmFuc2xhdGU+XG4gICAgICAgIGVvLmZvcm0ucHJvcGVydHkuc3RyaW5nLmVycm9yLmNsYXNzaWZpY2F0aW9uLmVtYWlsPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLmNsYXNzaWZpY2F0aW9udXJsXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkuc3RyaW5nLmVycm9yLmNsYXNzaWZpY2F0aW9uLnVybFxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLm9ubHlXaGl0ZXNwYWNlc1wiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5LnN0cmluZy5lcnJvci53aGl0ZXNwYWNlczwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5kYXRlY29udHJvbFwiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5LmRhdGUuaW52YWxpZDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5jb2Rlc3lzdGVtXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkuY29kZXN5c3RlbS52YWx1ZS5pbnZhbGlkPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLmVvZm9ybVNjcmlwdFwiPnt7Zm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZXJyb3IubXNnfX08L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMucmVxdWlyZWRcIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5yZXF1aXJlZDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5tYXhsZW5ndGhcIiB0cmFuc2xhdGVcbiAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7bWF4bGVuZ3RoOiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tYXhsZW59XCI+ZW8uZm9ybS5wcm9wZXJ0eS5tYXhsZW5ndGg8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMubWlubGVuZ3RoXCIgdHJhbnNsYXRlXG4gICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwie21pbmxlbmd0aDogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWlubGVufVwiPmVvLmZvcm0ucHJvcGVydHkubWlubGVuZ3RoPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLmRlbGV0ZWRJRFJlZmVyZW5jZVwiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5LmlkcmVmZXJlbmNlLmRlbGV0ZWQ8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuZGVsZXRlZE9yZ09iamVjdFwiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5Lm9yZ29iamVjdC5kZWxldGVkPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgPC9kaXY+XG5cblxuXG4gIDwhLS0gU1RSSU5HIC0tPlxuICA8bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIlNUUklOR1wiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiIGxldC1mb3JtRWxlbWVudFJlZj1cImZvcm1FbGVtZW50UmVmXCI+XG4gICAgPGVvLWZvcm0taW5wdXQgW3RhZ109XCJ0YWdcIiBbbGFiZWxdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWxcIiBbaXNOdWxsXT1cImlzTnVsbFwiXG4gICAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICBbcmVxdWlyZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgW2ludmFsaWRdPVwiZm9ybUVsZW1lbnRSZWYuaW52YWxpZFwiPlxuXG4gICAgICA8ZW8tc3RyaW5nXG4gICAgICAgICpuZ0lmPVwiIWZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlZmVyZW5jZSAmJiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5jbGFzc2lmaWNhdGlvbiAhPT0gJ3NlbGVjdG9yJ1wiXG4gICAgICAgIFtzaXR1YXRpb25dPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuc2l0dWF0aW9uXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiXG4gICAgICAgIFthdXRvY29tcGxldGVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgW211bHRpc2VsZWN0XT1cIiEhZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3RcIlxuICAgICAgICBbbXVsdGlsaW5lXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpbGluZVwiXG4gICAgICAgIFtjbGFzc2lmaWNhdGlvbl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5jbGFzc2lmaWNhdGlvblwiIFtyZWdleF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWdleFwiXG4gICAgICAgIFtxbmFtZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5xbmFtZVwiIFtzaXplXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnNpemVcIlxuICAgICAgICBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIiBbbWluTGVuZ3RoXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm1pbmxlblwiXG4gICAgICAgIFttYXhMZW5ndGhdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWF4bGVuXCI+PC9lby1zdHJpbmc+XG5cbiAgICAgIDwhLS0gRHluYW1pYyBMaXN0IC0tPlxuICAgICAgPGVvLWR5bmFtaWMtbGlzdFxuICAgICAgICAqbmdJZj1cIiFmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWZlcmVuY2UgJiYgZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuY2xhc3NpZmljYXRpb24gPT09ICdzZWxlY3RvcidcIlxuICAgICAgICBbc2l0dWF0aW9uXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLnNpdHVhdGlvblwiIFtwaWNrZXJUaXRsZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbFwiXG4gICAgICAgIFtmaWx0ZXJGdW5jdGlvbl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5maWx0ZXJGdW5jdGlvblwiXG4gICAgICAgIFttdWx0aXNlbGVjdF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdFwiIFtsaXN0T2JqZWN0XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lmxpc3RcIlxuICAgICAgICBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCI+PC9lby1keW5hbWljLWxpc3Q+XG5cblxuICAgICAgPCEtLSBSZWZlcmVuY2UgLS0+XG4gICAgICA8ZW8tcmVmZXJlbmNlICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVmZXJlbmNlXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiXG4gICAgICAgIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiIFtyZWZlcmVuY2VdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVmZXJlbmNlXCJcbiAgICAgICAgW211bHRpc2VsZWN0XT1cIiEhZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3QgPyBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdCA6IHNpdHVhdGlvbiA9PT0gJ1NFQVJDSCdcIlxuICAgICAgICBbbWluTGVuZ3RoXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm1pbmxlblwiXG4gICAgICAgIFttYXhMZW5ndGhdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWF4bGVuXCI+PC9lby1yZWZlcmVuY2U+XG4gICAgPC9lby1mb3JtLWlucHV0PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDwhLS0gSUQtUmVmZXJlbmNlIC0tPlxuICA8bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIlJFRkVSRU5DRVwiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiIGxldC1mb3JtRWxlbWVudFJlZj1cImZvcm1FbGVtZW50UmVmXCI+XG4gICAgPGVvLWZvcm0taW5wdXQgW3RhZ109XCJ0YWdcIiBbbGFiZWxdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWxcIiBbaXNOdWxsXT1cImlzTnVsbFwiXG4gICAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICBbcmVxdWlyZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgW2ludmFsaWRdPVwiZm9ybUVsZW1lbnRSZWYuaW52YWxpZFwiPlxuXG4gICAgICA8ZW8taWQtcmVmZXJlbmNlIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIlxuICAgICAgICBbc2l0dWF0aW9uXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLnNpdHVhdGlvblwiXG4gICAgICAgIFtkYXRhVG9SZW5kZXJdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZGF0YVRvUmVuZGVyXCJcbiAgICAgICAgW3JlZmVyZW5jZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWZlcmVuY2VcIiBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbbXVsdGlzZWxlY3RdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3RcIiBbY29udGV4dElkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmNvbnRleHRJZFwiXG4gICAgICAgIFtleGNlcHRpb25JRHNdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZXhjZXB0aW9uSURzXCJcbiAgICAgICAgW3F1ZXJ5RmlsdGVyc109XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5xdWVyeUZpbHRlcnNcIlxuICAgICAgICBbb2JqZWN0VHlwZXNGaWx0ZXJdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQub2JqZWN0VHlwZXNGaWx0ZXJcIj48L2VvLWlkLXJlZmVyZW5jZT5cbiAgICA8L2VvLWZvcm0taW5wdXQ+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBJRCAtLT5cbiAgPG5nLXRlbXBsYXRlIGVvRm9ybUVsZW1lbnRUZW1wbGF0ZSBwcm9wZXJ0eVR5cGU9XCJJRFwiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiIGxldC1mb3JtRWxlbWVudFJlZj1cImZvcm1FbGVtZW50UmVmXCI+XG4gICAgPGVvLWZvcm0taW5wdXQgW3RhZ109XCJ0YWdcIiBbbGFiZWxdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWxcIiBbaXNOdWxsXT1cImlzTnVsbFwiXG4gICAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICBbcmVxdWlyZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgW2ludmFsaWRdPVwiZm9ybUVsZW1lbnRSZWYuaW52YWxpZFwiPlxuXG4gICAgICA8ZW8tc3RyaW5nIFtzaXR1YXRpb25dPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuc2l0dWF0aW9uXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiXG4gICAgICAgIFthdXRvY29tcGxldGVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgW211bHRpc2VsZWN0XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpc2VsZWN0XCIgW3JlZ2V4XT1cIideWzAtOWEtZkEtRl0qJCdcIlxuICAgICAgICBbcW5hbWVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucW5hbWVcIiBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbbWluTGVuZ3RoXT1cIjMyXCIgW21heExlbmd0aF09XCIzMlwiPjwvZW8tc3RyaW5nPlxuXG4gICAgPC9lby1mb3JtLWlucHV0PlxuICA8L25nLXRlbXBsYXRlPlxuXG5cbiAgPCEtLSBCT09MRUFOIC0tPlxuICA8bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIkJPT0xFQU5cIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICAgIDxlby1mb3JtLWlucHV0IFt0YWddPVwidGFnXCIgY2xhc3M9XCJjaGVja2JveFwiIFtsYWJlbF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbFwiIFtpc051bGxdPVwiaXNOdWxsXCJcbiAgICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGUgfHwgc2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiIFtyZXF1aXJlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICBbaW52YWxpZF09XCJmb3JtRWxlbWVudFJlZi5pbnZhbGlkXCI+XG5cbiAgICAgIDxlby1jaGVja2JveCBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCIgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgICAgW3RyaXN0YXRlXT1cInRydWVcIj48L2VvLWNoZWNrYm94PlxuICAgIDwvZW8tZm9ybS1pbnB1dD5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8IS0tIENPREVTWVNURU0gLS0+XG4gIDxuZy10ZW1wbGF0ZSBlb0Zvcm1FbGVtZW50VGVtcGxhdGUgcHJvcGVydHlUeXBlPVwiQ09ERVNZU1RFTVwiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiXG4gICAgbGV0LWZvcm1FbGVtZW50UmVmPVwiZm9ybUVsZW1lbnRSZWZcIj5cbiAgICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiIFtsYWJlbF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbFwiIFtpc051bGxdPVwiaXNOdWxsXCJcbiAgICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGUgfHwgc2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiIChvblRvZ2dsZUxhYmVsKT1cImxhYmVsVG9nZ2xlZCgkZXZlbnQpXCJcbiAgICAgIFtyZXF1aXJlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZFwiIFtkaXNhYmxlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICBbaW52YWxpZF09XCJmb3JtRWxlbWVudFJlZi5pbnZhbGlkXCI+XG5cbiAgICAgIDxlby1jb2Rlc3lzdGVtIFtzaXR1YXRpb25dPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuc2l0dWF0aW9uXCJcbiAgICAgICAgW3BpY2tlclRpdGxlXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsXCIgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgICAgW2NvZGVzeXN0ZW1dPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuY29kZXN5c3RlbVwiXG4gICAgICAgIFttdWx0aXNlbGVjdF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdFwiXG4gICAgICAgIFtmaWx0ZXJGdW5jdGlvbl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5maWx0ZXJGdW5jdGlvblwiXG4gICAgICAgIFtkaXNhYmxpbmdGaWx0ZXJGdW5jdGlvbl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5kaXNhYmxpbmdGaWx0ZXJGdW5jdGlvblwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIj48L2VvLWNvZGVzeXN0ZW0+XG4gICAgPC9lby1mb3JtLWlucHV0PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDwhLS0gT1JHQU5JWkFUSU9OIC0tPlxuICA8bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIk9SR0FOSVpBVElPTlwiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiXG4gICAgbGV0LWZvcm1FbGVtZW50UmVmPVwiZm9ybUVsZW1lbnRSZWZcIj5cbiAgICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiIFtsYWJlbF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbFwiIFtpc051bGxdPVwiaXNOdWxsXCJcbiAgICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGUgfHwgc2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiIChvblRvZ2dsZUxhYmVsKT1cImxhYmVsVG9nZ2xlZCgkZXZlbnQpXCJcbiAgICAgIFtyZXF1aXJlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZFwiIFtkaXNhYmxlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICBbaW52YWxpZF09XCJmb3JtRWxlbWVudFJlZi5pbnZhbGlkXCI+XG5cbiAgICAgIDxlby1vcmdhbml6YXRpb24gW3NpdHVhdGlvbl09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5zaXR1YXRpb25cIlxuICAgICAgICBbZGF0YU1ldGFdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZGF0YU1ldGFcIiBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbZmlsdGVyT2JqZWN0XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmZpbHRlclwiIFttdWx0aXNlbGVjdF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdFwiXG4gICAgICAgIChvbkRhdGFNZXRhQ2hhbmdlZCk9XCJvcmdhbml6YXRpb25EYXRhTWV0YVJlc29sdmVkKCRldmVudClcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCI+PC9lby1vcmdhbml6YXRpb24+XG4gICAgPC9lby1mb3JtLWlucHV0PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDwhLS0gTlVNQkVSIC0tPlxuICA8bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIk5VTUJFUlwiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiIGxldC1mb3JtRWxlbWVudFJlZj1cImZvcm1FbGVtZW50UmVmXCI+XG4gICAgPGVvLWZvcm0taW5wdXQgW3RhZ109XCJ0YWdcIiBbbGFiZWxdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWxcIiBbaXNOdWxsXT1cImlzTnVsbFwiXG4gICAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICBbcmVxdWlyZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgW2ludmFsaWRdPVwiZm9ybUVsZW1lbnRSZWYuaW52YWxpZFwiPlxuXG4gICAgICA8ZW8tbnVtYmVyICpuZ0lmPVwic2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICAgIFtwcmVjaXNpb25dPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucHJlY2lzaW9uXCIgW3NjYWxlXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnNjYWxlXCJcbiAgICAgICAgW2dyb3VwaW5nXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lmdyb3VwaW5nXCIgW3BhdHRlcm5dPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucGF0dGVyblwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIj5cbiAgICAgIDwvZW8tbnVtYmVyPlxuXG4gICAgICA8ZW8tbnVtYmVyLXJhbmdlICpuZ0lmPVwic2l0dWF0aW9uID09PSAnU0VBUkNIJ1wiIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICAgIFtwcmVjaXNpb25dPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucHJlY2lzaW9uXCIgW3NjYWxlXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnNjYWxlXCJcbiAgICAgICAgW2dyb3VwaW5nXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lmdyb3VwaW5nXCIgW3BhdHRlcm5dPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucGF0dGVyblwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIj48L2VvLW51bWJlci1yYW5nZT5cbiAgICA8L2VvLWZvcm0taW5wdXQ+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBEQVRFIEFORCBEQVRFVElNRSAtLT5cbiAgPG5nLXRlbXBsYXRlIGVvRm9ybUVsZW1lbnRUZW1wbGF0ZSBwcm9wZXJ0eVR5cGU9XCJEQVRFVElNRVwiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiIGxldC1mb3JtRWxlbWVudFJlZj1cImZvcm1FbGVtZW50UmVmXCI+XG4gICAgPGVvLWZvcm0taW5wdXQgW3RhZ109XCJ0YWdcIiBbbGFiZWxdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWxcIiBbaXNOdWxsXT1cImlzTnVsbFwiXG4gICAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICBbcmVxdWlyZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgW2ludmFsaWRdPVwiZm9ybUVsZW1lbnRSZWYuaW52YWxpZFwiPlxuXG4gICAgICA8ZW8tZGF0ZSAqbmdJZj1cInNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiBbd2l0aFRpbWVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQud2l0aHRpbWVcIlxuICAgICAgICBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCI+PC9lby1kYXRlPlxuXG4gICAgICA8ZW8tZGF0ZXRpbWUtcmFuZ2UgKm5nSWY9XCJzaXR1YXRpb24gPT09ICdTRUFSQ0gnXCIgW3BpY2tlclRpdGxlXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsXCJcbiAgICAgICAgW3dpdGhUaW1lXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LndpdGh0aW1lXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiPjwvZW8tZGF0ZXRpbWUtcmFuZ2U+XG4gICAgPC9lby1mb3JtLWlucHV0PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICA8IS0tIHByaW50IG91dCB0aGUgdHlwZSBpZiBpdCdzIG5vdCBtYXRjaGluZyBhbnl0aGluZyAtLT5cbiAgPG5nLXRlbXBsYXRlICN0cGxVbmtub3duPjxiPnt7Zm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQudHlwZX19PC9iPjwvbmctdGVtcGxhdGU+XG48L2Rpdj4iXX0=