@eo-sdk/client 11.0.0-rc.5 → 11.0.0-rc.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/eo-client/dashboard/dashboard.component.d.ts +2 -23
- package/app/eo-client/dashboard/dashboard.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/picture-widget/picture-widget-setup/picture-widget-setup.component.d.ts +18 -0
- package/app/eo-client/dashboard/widgets/picture-widget/picture-widget-setup/picture-widget-setup.component.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/picture-widget/picture-widget.component.d.ts +10 -0
- package/app/eo-client/dashboard/widgets/picture-widget/picture-widget.component.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/todowidget/todo-setup/todo-setup.component.d.ts +24 -0
- package/app/eo-client/dashboard/widgets/todowidget/todo-setup/todo-setup.component.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/todowidget/todo-widget.component.d.ts +34 -0
- package/app/eo-client/dashboard/widgets/todowidget/todo-widget.component.d.ts.map +1 -0
- package/app/eo-client/eo-client.module.d.ts +29 -24
- package/app/eo-client/eo-client.module.d.ts.map +1 -1
- package/app/eo-client/inbox-state/inbox-state/inbox-state.component.d.ts.map +1 -1
- package/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.d.ts +5 -1
- package/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.d.ts.map +1 -1
- package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts.map +1 -1
- package/app/eo-framework/inbox-details/inbox-details.component.d.ts.map +1 -1
- package/app/eo-framework/media/media.component.d.ts +28 -3
- package/app/eo-framework/media/media.component.d.ts.map +1 -1
- package/app/eo-framework/object-details/object-details.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form-helper.service.d.ts.map +1 -1
- package/app/eo-framework/result-list/result-list.component.d.ts +3 -2
- package/app/eo-framework/result-list/result-list.component.d.ts.map +1 -1
- package/app/eo-framework-core/api/grid.service.d.ts.map +1 -1
- package/assets/_default/i18n/de.json +9 -1
- package/assets/_default/i18n/en.json +8 -0
- package/assets/_default/svg/ic_noImage.svg +1 -0
- package/assets/_default/svg/ic_photo_library.svg +1 -0
- package/assets/_default/svg/ic_task.svg +1 -0
- package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/dashboard.component.mjs +16 -67
- package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.mjs +5 -5
- package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.mjs +4 -3
- package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.mjs +4 -4
- package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.mjs +4 -4
- package/esm2022/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-widget.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/picture-widget/picture-widget-setup/picture-widget-setup.component.mjs +54 -0
- package/esm2022/app/eo-client/dashboard/widgets/picture-widget/picture-widget.component.mjs +24 -0
- package/esm2022/app/eo-client/dashboard/widgets/todowidget/todo-setup/todo-setup.component.mjs +74 -0
- package/esm2022/app/eo-client/dashboard/widgets/todowidget/todo-widget.component.mjs +103 -0
- package/esm2022/app/eo-client/eo-client.module.mjs +22 -6
- package/esm2022/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +18 -1
- package/esm2022/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.mjs +23 -3
- package/esm2022/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +10 -3
- package/esm2022/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +4 -4
- package/esm2022/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +2 -2
- package/esm2022/app/eo-framework/form-elements/organization/organization.component.mjs +2 -2
- package/esm2022/app/eo-framework/form-elements/reference/reference.component.mjs +2 -2
- package/esm2022/app/eo-framework/form-elements/string/string.component.mjs +2 -2
- package/esm2022/app/eo-framework/grid/grid.component.mjs +2 -2
- package/esm2022/app/eo-framework/inbox-details/inbox-details.component.mjs +3 -1
- package/esm2022/app/eo-framework/media/media.component.mjs +97 -28
- package/esm2022/app/eo-framework/object-details/object-details.component.mjs +3 -2
- package/esm2022/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-form/object-form/object-form-script/object-form-scripting-scope.mjs +5 -1
- package/esm2022/app/eo-framework/object-form/object-form-helper.service.mjs +6 -1
- package/esm2022/app/eo-framework/result-list/result-list.component.mjs +13 -2
- package/esm2022/app/eo-framework-core/api/grid.service.mjs +9 -4
- package/fesm2022/eo-sdk-client.mjs +445 -132
- package/fesm2022/eo-sdk-client.mjs.map +1 -1
- package/package.json +2 -2
package/esm2022/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs
CHANGED
|
@@ -98,11 +98,11 @@ export class FormElementComponent {
|
|
|
98
98
|
});
|
|
99
99
|
}
|
|
100
100
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FormElementComponent, deps: [{ token: i1.TranslateService }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
101
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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", 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", "emptyMessage", "filterFunction", "disablingFilterFunction"] }, { kind: "component", type: i7.DateComponent, selector: "eo-date", inputs: ["withTime", "readonly", "onlyFutureDates"] }, { 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"] }] }); }
|
|
101
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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", 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", "emptyMessage", "filterFunction", "disablingFilterFunction"] }, { kind: "component", type: i7.DateComponent, selector: "eo-date", inputs: ["withTime", "readonly", "onlyFutureDates"] }, { 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"] }] }); }
|
|
102
102
|
}
|
|
103
103
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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", 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\">{{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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [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", 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: () => [{ 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: "17.1.2", ngImpor
|
|
|
120
120
|
type: ViewChild,
|
|
121
121
|
args: ['formField']
|
|
122
122
|
}] } });
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1mb3JtL29iamVjdC1mb3JtL2Zvcm0tZWxlbWVudC9mb3JtLWVsZW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxlQUFlLEVBQWMsS0FBSyxFQUFxQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3ZKLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUXRFLE1BQU0sT0FBTyxvQkFBb0I7SUFtQi9CLHFGQUFxRjtJQUNyRixJQUNJLGFBQWEsQ0FBQyxFQUE0QjtRQUM1QyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBRVAsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4RSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNyRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFCLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFD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QkFBbUIsZ0RDWm5DLDIrYkFrT0E7OzJGRHZOYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0UsaUJBQWlCO3NJQU15QyxnQkFBZ0I7c0JBQW5GLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsRUFBQyx1QkFBdUIsRUFBRSxJQUFJLEVBQUM7Z0JBQ0ssdUJBQXVCO3NCQUE3RixlQUFlO3VCQUFDLG1CQUFtQixFQUFFLEVBQUMsdUJBQXVCLEVBQUUsSUFBSSxFQUFDO2dCQWM1RCxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBSUYsYUFBYTtzQkFEaEIsS0FBSzt1QkFBQyxTQUFTO2dCQXdCUSxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFbGVtZW50UmVmLCBJbnB1dCwgUXVlcnlMaXN0LCBSZW5kZXJlcjIsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge09iamVjdEZvcm1Db250cm9sV3JhcHBlcn0gZnJvbSAnLi4vb2JqZWN0LWZvcm0tY29udHJvbC13cmFwcGVyJztcbmltcG9ydCB7Rm9ybUVsZW1lbnRUZW1wbGF0ZX0gZnJvbSAnLi9mb3JtLWVsZW1lbnQtdGVtcGxhdGUuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tZm9ybS1lbGVtZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZWxlbWVudC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZWxlbWVudC5jb21wb25lbnQuc2NzcyddLFxuICAvL2VuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUVsZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZHJlbihGb3JtRWxlbWVudFRlbXBsYXRlLCB7ZW1pdERpc3RpbmN0Q2hhbmdlc09ubHk6IHRydWV9KSBlbGVtZW50VGVtcGxhdGVzOiBRdWVyeUxpc3Q8Rm9ybUVsZW1lbnRUZW1wbGF0ZT47XG4gIEBDb250ZW50Q2hpbGRyZW4oRm9ybUVsZW1lbnRUZW1wbGF0ZSwge2VtaXREaXN0aW5jdENoYW5nZXNPbmx5OiB0cnVlfSkgY29udGVudEVsZW1lbnRUZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxGb3JtRWxlbWVudFRlbXBsYXRlPjtcblxuXG4gIFxuICBlbGVtZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIGZvcm1FbGVtZW50UmVmOiBhbnk7XG4gIGVsZW1lbnQ6IE9iamVjdEZvcm1Db250cm9sV3JhcHBlcjtcbiAgZm9jdXNlZDtcbiAgaXNOdWxsOiBib29sZWFuO1xuICB0YWc6IHtcbiAgICBsYWJlbDogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmdcbiAgfTtcblxuICBASW5wdXQoKSBzaXR1YXRpb247XG4gIEBJbnB1dCgpIHNraXBUb2dnbGU6IGJvb2xlYW47XG5cbiAgLy8gZWxlbWVudCBpcyBzdXBwb3NlZCB0byBiZSBhIHNwZWNpYWwgVW50eXBlZEZvcm1Hcm91cCBob2xkaW5nIGEgc2luZ2xlIGZvcm0gZWxlbWVudFxuICBASW5wdXQoJ2VsZW1lbnQnKVxuICBzZXQgZWxlbWVudFNldHRlcihlbDogT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyKSB7XG4gICAgaWYgKGVsKSB7XG5cbiAgICAgIHRoaXMuZWxlbWVudCA9IGVsO1xuICAgICAgdGhpcy5mb3JtRWxlbWVudFJlZiA9IGVsLmNvbnRyb2xzW2VsLl9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZV07XG4gICAgICBpZiAodGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5pc05vdFNldFZhbHVlKSB7XG4gICAgICAgIHRoaXMubGFiZWxUb2dnbGVkKHRydWUpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQudHlwZSA9PT0gJ1JFRkVSRU5DRScpIHtcbiAgICAgICAgdGhpcy5hZGREYXRhVG9SZW5kZXIodGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC50eXBlID09PSAnSUQnKSB7XG4gICAgICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWlubGVuID0gMzI7XG4gICAgICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWF4bGVuID0gMzI7XG4gICAgICB9XG4gICAgICB0aGlzLmZldGNoVGFncygpO1xuXG4gICAgICBpZiAodGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seSAmJiB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkKSB7XG4gICAgICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAVmlld0NoaWxkKCdmb3JtRmllbGQnKSBmb3JtRmllbGQ6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBlbDogRWxlbWVudFJlZikge1xuICB9XG5cbiAgcHJpdmF0ZSBhZGREYXRhVG9SZW5kZXIoZWxlbWVudCkge1xuICAgIGNvbnN0IG11bHRpc2VsZWN0ID0gZWxlbWVudC5tdWx0aXNlbGVjdDtcbiAgICBjb25zdCBkYXRhTWV0YSA9IGVsZW1lbnQuZGF0YU1ldGE7XG4gICAgaWYgKG11bHRpc2VsZWN0ICYmIGRhdGFNZXRhKSB7XG4gICAgICBlbGVtZW50LmRhdGFUb1JlbmRlciA9IGRhdGFNZXRhLm1hcCgoZE0sIGkpID0+IHtcbiAgICAgICAgZE0uaWQgPSBlbGVtZW50LnZhbHVlW2ldO1xuICAgICAgICByZXR1cm4gZE07XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKCFtdWx0aXNlbGVjdCAmJiBkYXRhTWV0YSkge1xuICAgICAgZGF0YU1ldGEuaWQgPSBlbGVtZW50LnZhbHVlO1xuICAgICAgZWxlbWVudC5kYXRhVG9SZW5kZXIgPSBbZGF0YU1ldGFdO1xuICAgIH1cbiAgfVxuXG4gIGxhYmVsVG9nZ2xlZCh0b2dnbGVkOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLnNraXBUb2dnbGUgJiYgdGhpcy5lbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICBjb25zdCB0b2dnbGVDbGFzcyA9ICdsYWJlbC10b2dnbGVkJztcbiAgICAgIHRoaXMuaXNOdWxsID0gdG9nZ2xlZDtcbiAgICAgIGlmICh0b2dnbGVkKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0b2dnbGVDbGFzcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgdG9nZ2xlQ2xhc3MpO1xuICAgICAgfVxuICAgICAgdGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5pc05vdFNldFZhbHVlID0gdG9nZ2xlZDtcbiAgICAgIHRoaXMuZWxlbWVudC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuICB9XG5cbiAgb3JnYW5pemF0aW9uRGF0YU1ldGFSZXNvbHZlZChkYXRhKSB7XG4gICAgLy8gbmV3IG1ldGEgZGF0YSB3aWxsIGFsd2F5cyBhcnJpdmUgYXMgYXJyYXkgZXZlbiBmb3Igc2luZ2xlIGlucHV0cywgc28gd2UgaGF2ZSB0byBjb252ZXJ0XG4gICAgdGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5kYXRhTWV0YSA9IHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3QgPyBkYXRhIDogZGF0YVswXTtcbiAgfVxuXG4gIGZldGNoVGFncygpIHtcbiAgICB0aGlzLnRhZyA9IG51bGw7XG4gICAgaWYgKHRoaXMuc2l0dWF0aW9uID09PSAnQ1JFQVRFJyAmJlxuICAgICAgKHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuaGFzT3duUHJvcGVydHkoJ2RlZmF1bHR2YWx1ZWZ1bmN0aW9uJykgfHwgdGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5oYXNPd25Qcm9wZXJ0eSgnZGVmYXVsdHZhbHVlJykpKSB7XG4gICAgICB0aGlzLnRhZyA9IHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZGVmYXVsdHZhbHVlZnVuY3Rpb24gPT09ICdFWFRSQUNUSU9OJyA/IHtcbiAgICAgICAgbGFiZWw6ICdleCcsXG4gICAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5mb3JtLmVsZW1lbnQudGFnLmV4JylcbiAgICAgIH0gOiB7XG4gICAgICAgIGxhYmVsOiAnZGYnLFxuICAgICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uZm9ybS5lbGVtZW50LnRhZy5kZicpXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCB0cGxzID0gWy4uLnRoaXMuZWxlbWVudFRlbXBsYXRlcy50b0FycmF5KCksIC4uLnRoaXMuY29udGVudEVsZW1lbnRUZW1wbGF0ZXMudG9BcnJheSgpXTtcbiAgICBjb25zdCBkaXIgPSB0cGxzLmZpbmQodHBsID0+IHRwbC5wcm9wZXJ0eVR5cGUgPT09IHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQudHlwZSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmVsZW1lbnRUZW1wbGF0ZSA9IGRpciA/IGRpci50ZW1wbGF0ZSA6IHVuZGVmaW5lZFxuICAgIH0pXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWVsZW1lbnRcIiBbZm9ybUdyb3VwXT1cImVsZW1lbnRcIiAqbmdJZj1cImVsZW1lbnRcIj5cblxuICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZCB0LXt7Zm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQudHlwZX19XCIgI2Zvcm1GaWVsZFxuICAgIFtuZ0NsYXNzXT1cIntkaXNhYmxlZDogISFmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seX1cIiAqbmdJZj1cImVsZW1lbnRUZW1wbGF0ZVwiPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVsZW1lbnRUZW1wbGF0ZTsgY29udGV4dDoge2VsZW1lbnQsIGZvcm1FbGVtZW50UmVmfVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSB0aGUgZmllbGRzIGRlc2NyaXB0aW9uIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZGVzY3JpcHRpb25cIj57e2Zvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmRlc2NyaXB0aW9ufX08L2Rpdj5cblxuICAgIDwhLS0gZXJyb3IvdmFsaWRhdGlvbiBtZXNzYWdlcyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZXJyLW1zZ1wiICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzXCI+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuZGF0ZXJhbmdlXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkuZGF0ZXJhbmdlLmludmFsaWQ8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMubnVtYmVycmFuZ2VcIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5udW1iZXJyYW5nZS5pbnZhbGlkPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLm51bWJlclwiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5Lm51bWJlcjwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5wcmVjaXNpb25cIiB0cmFuc2xhdGVcbiAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMucHJlY2lzaW9uLnRyYW5zbGF0ZVZhbHVlc1wiPlxuICAgICAgICB7e2Zvcm1FbGVtZW50UmVmLmVycm9ycy5wcmVjaXNpb24udHJhbnNsYXRlS2V5fX08L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuc2NhbGVcIiB0cmFuc2xhdGVcbiAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuc2NhbGUudHJhbnNsYXRlVmFsdWVzXCI+e3tmb3JtRWxlbWVudFJlZi5lcnJvcnMuc2NhbGUudHJhbnNsYXRlS2V5fX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLnJlZ2V4IHx8IGZvcm1FbGVtZW50UmVmLmVycm9ycy5wYXR0ZXJuXCIgdHJhbnNsYXRlPlxuICAgICAgICBlby5mb3JtLnByb3BlcnR5LnN0cmluZy5yZWdleC5ub21hdGNoPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLmNsYXNzaWZpY2F0aW9uZW1haWxcIiB0cmFuc2xhdGU+XG4gICAgICAgIGVvLmZvcm0ucHJvcGVydHkuc3RyaW5nLmVycm9yLmNsYXNzaWZpY2F0aW9uLmVtYWlsPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLmNsYXNzaWZpY2F0aW9udXJsXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkuc3RyaW5nLmVycm9yLmNsYXNzaWZpY2F0aW9uLnVybFxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLm9ubHlXaGl0ZXNwYWNlc1wiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5LnN0cmluZy5lcnJvci53aGl0ZXNwYWNlczwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5kYXRlY29udHJvbFwiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5LmRhdGUuaW52YWxpZDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5jb2Rlc3lzdGVtXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkuY29kZXN5c3RlbS52YWx1ZS5pbnZhbGlkPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLmVvZm9ybVNjcmlwdFwiPnt7Zm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZXJyb3IubXNnfX08L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMucmVxdWlyZWRcIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5yZXF1aXJlZDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5tYXhsZW5ndGhcIiB0cmFuc2xhdGVcbiAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7bWF4bGVuZ3RoOiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tYXhsZW59XCI+ZW8uZm9ybS5wcm9wZXJ0eS5tYXhsZW5ndGg8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMubWlubGVuZ3RoXCIgdHJhbnNsYXRlXG4gICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwie21pbmxlbmd0aDogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWlubGVufVwiPmVvLmZvcm0ucHJvcGVydHkubWlubGVuZ3RoPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLmRlbGV0ZWRJRFJlZmVyZW5jZVwiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5LmlkcmVmZXJlbmNlLmRlbGV0ZWQ8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuZGVsZXRlZE9yZ09iamVjdFwiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5Lm9yZ29iamVjdC5kZWxldGVkPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgPC9kaXY+XG5cblxuXG4gIDwhLS0gU1RSSU5HIC0tPlxuICA8bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIlNUUklOR1wiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiIGxldC1mb3JtRWxlbWVudFJlZj1cImZvcm1FbGVtZW50UmVmXCI+XG4gICAgPGVvLWZvcm0taW5wdXQgW3RhZ109XCJ0YWdcIlxuICAgICAgW2xhYmVsXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsID8gZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgOiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5uYW1lXCJcbiAgICAgIFtpc051bGxdPVwiaXNOdWxsXCJcbiAgICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGUgfHwgc2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiIChvblRvZ2dsZUxhYmVsKT1cImxhYmVsVG9nZ2xlZCgkZXZlbnQpXCJcbiAgICAgIFtyZXF1aXJlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZFwiIFtkaXNhYmxlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICBbaW52YWxpZF09XCJmb3JtRWxlbWVudFJlZi5pbnZhbGlkXCI+XG5cbiAgICAgIDxlby1zdHJpbmdcbiAgICAgICAgKm5nSWY9XCIhZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVmZXJlbmNlICYmIGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmNsYXNzaWZpY2F0aW9uICE9PSAnc2VsZWN0b3InXCJcbiAgICAgICAgW3NpdHVhdGlvbl09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5zaXR1YXRpb25cIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCJcbiAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5hdXRvY29tcGxldGVcIlxuICAgICAgICBbbXVsdGlzZWxlY3RdPVwiISFmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdFwiXG4gICAgICAgIFttdWx0aWxpbmVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlsaW5lXCJcbiAgICAgICAgW2NsYXNzaWZpY2F0aW9uXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmNsYXNzaWZpY2F0aW9uXCIgW3JlZ2V4XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlZ2V4XCJcbiAgICAgICAgW3FuYW1lXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnFuYW1lXCIgW3NpemVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuc2l6ZVwiXG4gICAgICAgIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiIFttaW5MZW5ndGhdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWlubGVuXCJcbiAgICAgICAgW21heExlbmd0aF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tYXhsZW5cIj48L2VvLXN0cmluZz5cblxuICAgICAgPCEtLSBEeW5hbWljIExpc3QgLS0+XG4gICAgICA8ZW8tZHluYW1pYy1saXN0XG4gICAgICAgICpuZ0lmPVwiIWZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlZmVyZW5jZSAmJiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5jbGFzc2lmaWNhdGlvbiA9PT0gJ3NlbGVjdG9yJ1wiXG4gICAgICAgIFtzaXR1YXRpb25dPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuc2l0dWF0aW9uXCIgW3BpY2tlclRpdGxlXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsXCJcbiAgICAgICAgW2ZpbHRlckZ1bmN0aW9uXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmZpbHRlckZ1bmN0aW9uXCJcbiAgICAgICAgW211bHRpc2VsZWN0XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpc2VsZWN0XCIgW2xpc3RPYmplY3RdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGlzdFwiXG4gICAgICAgIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIj48L2VvLWR5bmFtaWMtbGlzdD5cblxuXG4gICAgICA8IS0tIFJlZmVyZW5jZSAtLT5cbiAgICAgIDxlby1yZWZlcmVuY2UgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWZlcmVuY2VcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCIgW3JlZmVyZW5jZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWZlcmVuY2VcIlxuICAgICAgICBbbXVsdGlzZWxlY3RdPVwiISFmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdCA/IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpc2VsZWN0IDogc2l0dWF0aW9uID09PSAnU0VBUkNIJ1wiXG4gICAgICAgIFttaW5MZW5ndGhdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWlubGVuXCJcbiAgICAgICAgW21heExlbmd0aF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tYXhsZW5cIj48L2VvLXJlZmVyZW5jZT5cbiAgICA8L2VvLWZvcm0taW5wdXQ+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBJRC1SZWZlcmVuY2UgLS0+XG4gIDxuZy10ZW1wbGF0ZSBlb0Zvcm1FbGVtZW50VGVtcGxhdGUgcHJvcGVydHlUeXBlPVwiUkVGRVJFTkNFXCIgbGV0LWVsZW1lbnQ9XCJlbGVtZW50XCIgbGV0LWZvcm1FbGVtZW50UmVmPVwiZm9ybUVsZW1lbnRSZWZcIj5cbiAgICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiXG4gICAgICBbbGFiZWxdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgPyBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm5hbWVcIlxuICAgICAgW2lzTnVsbF09XCJpc051bGxcIlxuICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZSB8fCBzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgKG9uVG9nZ2xlTGFiZWwpPVwibGFiZWxUb2dnbGVkKCRldmVudClcIlxuICAgICAgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgIFtpbnZhbGlkXT1cImZvcm1FbGVtZW50UmVmLmludmFsaWRcIj5cblxuICAgICAgPGVvLWlkLXJlZmVyZW5jZSBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCJcbiAgICAgICAgW3NpdHVhdGlvbl09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5zaXR1YXRpb25cIlxuICAgICAgICBbZGF0YVRvUmVuZGVyXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmRhdGFUb1JlbmRlclwiXG4gICAgICAgIFtyZWZlcmVuY2VdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVmZXJlbmNlXCIgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgICAgW211bHRpc2VsZWN0XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpc2VsZWN0XCIgW2NvbnRleHRJZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5jb250ZXh0SWRcIlxuICAgICAgICBbZXhjZXB0aW9uSURzXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmV4Y2VwdGlvbklEc1wiXG4gICAgICAgIFtxdWVyeUZpbHRlcnNdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucXVlcnlGaWx0ZXJzXCJcbiAgICAgICAgW29iamVjdFR5cGVzRmlsdGVyXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm9iamVjdFR5cGVzRmlsdGVyXCI+PC9lby1pZC1yZWZlcmVuY2U+XG4gICAgPC9lby1mb3JtLWlucHV0PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDwhLS0gSUQgLS0+XG4gIDxuZy10ZW1wbGF0ZSBlb0Zvcm1FbGVtZW50VGVtcGxhdGUgcHJvcGVydHlUeXBlPVwiSURcIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICAgIDxlby1mb3JtLWlucHV0IFt0YWddPVwidGFnXCJcbiAgICAgIFtsYWJlbF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA/IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsIDogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubmFtZVwiXG4gICAgICBbaXNOdWxsXT1cImlzTnVsbFwiXG4gICAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICBbcmVxdWlyZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgW2ludmFsaWRdPVwiZm9ybUVsZW1lbnRSZWYuaW52YWxpZFwiPlxuXG4gICAgICA8ZW8tc3RyaW5nIFtzaXR1YXRpb25dPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuc2l0dWF0aW9uXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiXG4gICAgICAgIFthdXRvY29tcGxldGVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgW211bHRpc2VsZWN0XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpc2VsZWN0XCIgW3JlZ2V4XT1cIideWzAtOWEtZkEtRl0qJCdcIlxuICAgICAgICBbcW5hbWVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucW5hbWVcIiBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbbWluTGVuZ3RoXT1cIjMyXCIgW21heExlbmd0aF09XCIzMlwiPjwvZW8tc3RyaW5nPlxuXG4gICAgPC9lby1mb3JtLWlucHV0PlxuICA8L25nLXRlbXBsYXRlPlxuXG5cbiAgPCEtLSBCT09MRUFOIC0tPlxuICA8bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIkJPT0xFQU5cIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICAgIDxlby1mb3JtLWlucHV0IFt0YWddPVwidGFnXCJcbiAgICAgIFtsYWJlbF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA/IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsIDogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubmFtZVwiXG4gICAgICBbaXNOdWxsXT1cImlzTnVsbFwiXG4gICAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiBbcmVxdWlyZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWRcIlxuICAgICAgW2Rpc2FibGVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCIgKG9uVG9nZ2xlTGFiZWwpPVwibGFiZWxUb2dnbGVkKCRldmVudClcIlxuICAgICAgW2ludmFsaWRdPVwiZm9ybUVsZW1lbnRSZWYuaW52YWxpZFwiPlxuXG4gICAgICA8ZW8tY2hlY2tib3ggW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZFwiIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICAgIFt0cmlzdGF0ZV09XCJ0cnVlXCI+PC9lby1jaGVja2JveD5cbiAgICA8L2VvLWZvcm0taW5wdXQ+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBDT0RFU1lTVEVNIC0tPlxuICA8bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIkNPREVTWVNURU1cIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIlxuICAgIGxldC1mb3JtRWxlbWVudFJlZj1cImZvcm1FbGVtZW50UmVmXCI+XG4gICAgPGVvLWZvcm0taW5wdXQgW3RhZ109XCJ0YWdcIlxuICAgICAgW2xhYmVsXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsID8gZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgOiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5uYW1lXCJcbiAgICAgIFtpc051bGxdPVwiaXNOdWxsXCJcbiAgICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGUgfHwgc2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiIChvblRvZ2dsZUxhYmVsKT1cImxhYmVsVG9nZ2xlZCgkZXZlbnQpXCJcbiAgICAgIFtyZXF1aXJlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZFwiIFtkaXNhYmxlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICBbaW52YWxpZF09XCJmb3JtRWxlbWVudFJlZi5pbnZhbGlkXCI+XG5cbiAgICAgIDxlby1jb2Rlc3lzdGVtIFtzaXR1YXRpb25dPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuc2l0dWF0aW9uXCJcbiAgICAgICAgW3BpY2tlclRpdGxlXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsXCIgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgICAgW2NvZGVzeXN0ZW1dPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuY29kZXN5c3RlbVwiXG4gICAgICAgIFttdWx0aXNlbGVjdF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdFwiXG4gICAgICAgIFtmaWx0ZXJGdW5jdGlvbl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5maWx0ZXJGdW5jdGlvblwiXG4gICAgICAgIFtkaXNhYmxpbmdGaWx0ZXJGdW5jdGlvbl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5kaXNhYmxpbmdGaWx0ZXJGdW5jdGlvblwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIj48L2VvLWNvZGVzeXN0ZW0+XG4gICAgPC9lby1mb3JtLWlucHV0PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDwhLS0gT1JHQU5JWkFUSU9OIC0tPlxuICA8bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIk9SR0FOSVpBVElPTlwiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiXG4gICAgbGV0LWZvcm1FbGVtZW50UmVmPVwiZm9ybUVsZW1lbnRSZWZcIj5cbiAgICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiXG4gICAgICBbbGFiZWxdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgPyBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm5hbWVcIlxuICAgICAgW2lzTnVsbF09XCJpc051bGxcIlxuICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZSB8fCBzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgKG9uVG9nZ2xlTGFiZWwpPVwibGFiZWxUb2dnbGVkKCRldmVudClcIlxuICAgICAgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgIFtpbnZhbGlkXT1cImZvcm1FbGVtZW50UmVmLmludmFsaWRcIj5cblxuICAgICAgPGVvLW9yZ2FuaXphdGlvbiBbc2l0dWF0aW9uXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLnNpdHVhdGlvblwiXG4gICAgICAgIFtkYXRhTWV0YV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5kYXRhTWV0YVwiIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICAgIFtmaWx0ZXJPYmplY3RdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZmlsdGVyXCIgW211bHRpc2VsZWN0XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpc2VsZWN0XCJcbiAgICAgICAgKG9uRGF0YU1ldGFDaGFuZ2VkKT1cIm9yZ2FuaXphdGlvbkRhdGFNZXRhUmVzb2x2ZWQoJGV2ZW50KVwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIj48L2VvLW9yZ2FuaXphdGlvbj5cbiAgICA8L2VvLWZvcm0taW5wdXQ+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBOVU1CRVIgLS0+XG4gIDxuZy10ZW1wbGF0ZSBlb0Zvcm1FbGVtZW50VGVtcGxhdGUgcHJvcGVydHlUeXBlPVwiTlVNQkVSXCIgbGV0LWVsZW1lbnQ9XCJlbGVtZW50XCIgbGV0LWZvcm1FbGVtZW50UmVmPVwiZm9ybUVsZW1lbnRSZWZcIj5cbiAgICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiXG4gICAgICBbbGFiZWxdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgPyBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm5hbWVcIlxuICAgICAgW2lzTnVsbF09XCJpc051bGxcIlxuICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZSB8fCBzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgKG9uVG9nZ2xlTGFiZWwpPVwibGFiZWxUb2dnbGVkKCRldmVudClcIlxuICAgICAgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgIFtpbnZhbGlkXT1cImZvcm1FbGVtZW50UmVmLmludmFsaWRcIj5cblxuICAgICAgPGVvLW51bWJlciAqbmdJZj1cInNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbcHJlY2lzaW9uXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnByZWNpc2lvblwiIFtzY2FsZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5zY2FsZVwiXG4gICAgICAgIFtncm91cGluZ109XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5ncm91cGluZ1wiIFtwYXR0ZXJuXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnBhdHRlcm5cIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCI+XG4gICAgICA8L2VvLW51bWJlcj5cblxuICAgICAgPGVvLW51bWJlci1yYW5nZSAqbmdJZj1cInNpdHVhdGlvbiA9PT0gJ1NFQVJDSCdcIiBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbcHJlY2lzaW9uXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnByZWNpc2lvblwiIFtzY2FsZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5zY2FsZVwiXG4gICAgICAgIFtncm91cGluZ109XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5ncm91cGluZ1wiIFtwYXR0ZXJuXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnBhdHRlcm5cIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCI+PC9lby1udW1iZXItcmFuZ2U+XG4gICAgPC9lby1mb3JtLWlucHV0PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDwhLS0gREFURSBBTkQgREFURVRJTUUgLS0+XG4gIDxuZy10ZW1wbGF0ZSBlb0Zvcm1FbGVtZW50VGVtcGxhdGUgcHJvcGVydHlUeXBlPVwiREFURVRJTUVcIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICAgIDxlby1mb3JtLWlucHV0IFt0YWddPVwidGFnXCJcbiAgICAgIFtsYWJlbF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA/IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsIDogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubmFtZVwiXG4gICAgICBbaXNOdWxsXT1cImlzTnVsbFwiXG4gICAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICBbcmVxdWlyZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgW2ludmFsaWRdPVwiZm9ybUVsZW1lbnRSZWYuaW52YWxpZFwiPlxuXG4gICAgICA8ZW8tZGF0ZSAqbmdJZj1cInNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiBbd2l0aFRpbWVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQud2l0aHRpbWVcIlxuICAgICAgICBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCI+PC9lby1kYXRlPlxuXG4gICAgICA8ZW8tZGF0ZXRpbWUtcmFuZ2UgKm5nSWY9XCJzaXR1YXRpb24gPT09ICdTRUFSQ0gnXCIgW3BpY2tlclRpdGxlXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsXCJcbiAgICAgICAgW3dpdGhUaW1lXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LndpdGh0aW1lXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiPjwvZW8tZGF0ZXRpbWUtcmFuZ2U+XG4gICAgPC9lby1mb3JtLWlucHV0PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICA8IS0tIHByaW50IG91dCB0aGUgdHlwZSBpZiBpdCdzIG5vdCBtYXRjaGluZyBhbnl0aGluZyAtLT5cbiAgPG5nLXRlbXBsYXRlICN0cGxVbmtub3duPjxiPnt7Zm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQudHlwZX19PC9iPjwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1mb3JtL29iamVjdC1mb3JtL2Zvcm0tZWxlbWVudC9mb3JtLWVsZW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxlQUFlLEVBQWMsS0FBSyxFQUFxQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3ZKLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUXRFLE1BQU0sT0FBTyxvQkFBb0I7SUFtQi9CLHFGQUFxRjtJQUNyRixJQUNJLGFBQWEsQ0FBQyxFQUE0QjtRQUM1QyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBRVAsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4RSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNyRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFCLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzNELENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDckQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNqRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBRWpCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUMvRixJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ3RELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUlELFlBQW9CLFNBQTJCLEVBQVUsUUFBbUIsRUFBVSxFQUFjO1FBQWhGLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFVLE9BQUUsR0FBRixFQUFFLENBQVk7SUFDcEcsQ0FBQztJQUVPLGVBQWUsQ0FBQyxPQUFPO1FBQzdCLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDeEMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUNsQyxJQUFJLFdBQVcsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUM1QixPQUFPLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzVDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekIsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzdCLFFBQVEsQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUM1QixPQUFPLENBQUMsWUFBWSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsT0FBZ0I7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbEYsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO1lBQ3RCLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDN0QsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ2hFLENBQUM7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDO1lBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQztJQUVELDRCQUE0QixDQUFDLElBQUk7UUFDL0IsMEZBQTBGO1FBQzFGLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hILENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7UUFDaEIsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFFBQVE7WUFDN0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ25KLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQztnQkFDcEYsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDO2FBQ3hELENBQUMsQ0FBQyxDQUFDO2dCQUNGLEtBQUssRUFBRSxJQUFJO2dCQUNYLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQzthQUN4RCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzdGLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNGLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO1FBQ3ZELENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs4R0F2R1Usb0JBQW9CO2tHQUFwQixvQkFBb0IsME1BRWQsbUJBQW1CLDJKQUR0QixtQkFBbUIsZ0RDWm5DLDgvYkFrT0E7OzJGRHZOYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0UsaUJBQWlCO3NJQU15QyxnQkFBZ0I7c0JBQW5GLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsRUFBQyx1QkFBdUIsRUFBRSxJQUFJLEVBQUM7Z0JBQ0ssdUJBQXVCO3NCQUE3RixlQUFlO3VCQUFDLG1CQUFtQixFQUFFLEVBQUMsdUJBQXVCLEVBQUUsSUFBSSxFQUFDO2dCQWM1RCxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBSUYsYUFBYTtzQkFEaEIsS0FBSzt1QkFBQyxTQUFTO2dCQXdCUSxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFbGVtZW50UmVmLCBJbnB1dCwgUXVlcnlMaXN0LCBSZW5kZXJlcjIsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge09iamVjdEZvcm1Db250cm9sV3JhcHBlcn0gZnJvbSAnLi4vb2JqZWN0LWZvcm0tY29udHJvbC13cmFwcGVyJztcbmltcG9ydCB7Rm9ybUVsZW1lbnRUZW1wbGF0ZX0gZnJvbSAnLi9mb3JtLWVsZW1lbnQtdGVtcGxhdGUuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tZm9ybS1lbGVtZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZWxlbWVudC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZWxlbWVudC5jb21wb25lbnQuc2NzcyddLFxuICAvL2VuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUVsZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZHJlbihGb3JtRWxlbWVudFRlbXBsYXRlLCB7ZW1pdERpc3RpbmN0Q2hhbmdlc09ubHk6IHRydWV9KSBlbGVtZW50VGVtcGxhdGVzOiBRdWVyeUxpc3Q8Rm9ybUVsZW1lbnRUZW1wbGF0ZT47XG4gIEBDb250ZW50Q2hpbGRyZW4oRm9ybUVsZW1lbnRUZW1wbGF0ZSwge2VtaXREaXN0aW5jdENoYW5nZXNPbmx5OiB0cnVlfSkgY29udGVudEVsZW1lbnRUZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxGb3JtRWxlbWVudFRlbXBsYXRlPjtcblxuXG4gIFxuICBlbGVtZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIGZvcm1FbGVtZW50UmVmOiBhbnk7XG4gIGVsZW1lbnQ6IE9iamVjdEZvcm1Db250cm9sV3JhcHBlcjtcbiAgZm9jdXNlZDtcbiAgaXNOdWxsOiBib29sZWFuO1xuICB0YWc6IHtcbiAgICBsYWJlbDogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmdcbiAgfTtcblxuICBASW5wdXQoKSBzaXR1YXRpb247XG4gIEBJbnB1dCgpIHNraXBUb2dnbGU6IGJvb2xlYW47XG5cbiAgLy8gZWxlbWVudCBpcyBzdXBwb3NlZCB0byBiZSBhIHNwZWNpYWwgVW50eXBlZEZvcm1Hcm91cCBob2xkaW5nIGEgc2luZ2xlIGZvcm0gZWxlbWVudFxuICBASW5wdXQoJ2VsZW1lbnQnKVxuICBzZXQgZWxlbWVudFNldHRlcihlbDogT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyKSB7XG4gICAgaWYgKGVsKSB7XG5cbiAgICAgIHRoaXMuZWxlbWVudCA9IGVsO1xuICAgICAgdGhpcy5mb3JtRWxlbWVudFJlZiA9IGVsLmNvbnRyb2xzW2VsLl9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZV07XG4gICAgICBpZiAodGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5pc05vdFNldFZhbHVlKSB7XG4gICAgICAgIHRoaXMubGFiZWxUb2dnbGVkKHRydWUpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQudHlwZSA9PT0gJ1JFRkVSRU5DRScpIHtcbiAgICAgICAgdGhpcy5hZGREYXRhVG9SZW5kZXIodGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC50eXBlID09PSAnSUQnKSB7XG4gICAgICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWlubGVuID0gMzI7XG4gICAgICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWF4bGVuID0gMzI7XG4gICAgICB9XG4gICAgICB0aGlzLmZldGNoVGFncygpO1xuXG4gICAgICBpZiAodGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seSAmJiB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkKSB7XG4gICAgICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAVmlld0NoaWxkKCdmb3JtRmllbGQnKSBmb3JtRmllbGQ6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBlbDogRWxlbWVudFJlZikge1xuICB9XG5cbiAgcHJpdmF0ZSBhZGREYXRhVG9SZW5kZXIoZWxlbWVudCkge1xuICAgIGNvbnN0IG11bHRpc2VsZWN0ID0gZWxlbWVudC5tdWx0aXNlbGVjdDtcbiAgICBjb25zdCBkYXRhTWV0YSA9IGVsZW1lbnQuZGF0YU1ldGE7XG4gICAgaWYgKG11bHRpc2VsZWN0ICYmIGRhdGFNZXRhKSB7XG4gICAgICBlbGVtZW50LmRhdGFUb1JlbmRlciA9IGRhdGFNZXRhLm1hcCgoZE0sIGkpID0+IHtcbiAgICAgICAgZE0uaWQgPSBlbGVtZW50LnZhbHVlW2ldO1xuICAgICAgICByZXR1cm4gZE07XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKCFtdWx0aXNlbGVjdCAmJiBkYXRhTWV0YSkge1xuICAgICAgZGF0YU1ldGEuaWQgPSBlbGVtZW50LnZhbHVlO1xuICAgICAgZWxlbWVudC5kYXRhVG9SZW5kZXIgPSBbZGF0YU1ldGFdO1xuICAgIH1cbiAgfVxuXG4gIGxhYmVsVG9nZ2xlZCh0b2dnbGVkOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLnNraXBUb2dnbGUgJiYgdGhpcy5lbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICBjb25zdCB0b2dnbGVDbGFzcyA9ICdsYWJlbC10b2dnbGVkJztcbiAgICAgIHRoaXMuaXNOdWxsID0gdG9nZ2xlZDtcbiAgICAgIGlmICh0b2dnbGVkKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0b2dnbGVDbGFzcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgdG9nZ2xlQ2xhc3MpO1xuICAgICAgfVxuICAgICAgdGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5pc05vdFNldFZhbHVlID0gdG9nZ2xlZDtcbiAgICAgIHRoaXMuZWxlbWVudC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuICB9XG5cbiAgb3JnYW5pemF0aW9uRGF0YU1ldGFSZXNvbHZlZChkYXRhKSB7XG4gICAgLy8gbmV3IG1ldGEgZGF0YSB3aWxsIGFsd2F5cyBhcnJpdmUgYXMgYXJyYXkgZXZlbiBmb3Igc2luZ2xlIGlucHV0cywgc28gd2UgaGF2ZSB0byBjb252ZXJ0XG4gICAgdGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5kYXRhTWV0YSA9IHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3QgPyBkYXRhIDogZGF0YVswXTtcbiAgfVxuXG4gIGZldGNoVGFncygpIHtcbiAgICB0aGlzLnRhZyA9IG51bGw7XG4gICAgaWYgKHRoaXMuc2l0dWF0aW9uID09PSAnQ1JFQVRFJyAmJlxuICAgICAgKHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuaGFzT3duUHJvcGVydHkoJ2RlZmF1bHR2YWx1ZWZ1bmN0aW9uJykgfHwgdGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5oYXNPd25Qcm9wZXJ0eSgnZGVmYXVsdHZhbHVlJykpKSB7XG4gICAgICB0aGlzLnRhZyA9IHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZGVmYXVsdHZhbHVlZnVuY3Rpb24gPT09ICdFWFRSQUNUSU9OJyA/IHtcbiAgICAgICAgbGFiZWw6ICdleCcsXG4gICAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5mb3JtLmVsZW1lbnQudGFnLmV4JylcbiAgICAgIH0gOiB7XG4gICAgICAgIGxhYmVsOiAnZGYnLFxuICAgICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uZm9ybS5lbGVtZW50LnRhZy5kZicpXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCB0cGxzID0gWy4uLnRoaXMuZWxlbWVudFRlbXBsYXRlcy50b0FycmF5KCksIC4uLnRoaXMuY29udGVudEVsZW1lbnRUZW1wbGF0ZXMudG9BcnJheSgpXTtcbiAgICBjb25zdCBkaXIgPSB0cGxzLmZpbmQodHBsID0+IHRwbC5wcm9wZXJ0eVR5cGUgPT09IHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQudHlwZSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmVsZW1lbnRUZW1wbGF0ZSA9IGRpciA/IGRpci50ZW1wbGF0ZSA6IHVuZGVmaW5lZFxuICAgIH0pXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWVsZW1lbnRcIiBbZm9ybUdyb3VwXT1cImVsZW1lbnRcIiAqbmdJZj1cImVsZW1lbnRcIj5cblxuICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZCB0LXt7Zm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQudHlwZX19XCIgI2Zvcm1GaWVsZFxuICAgIFtuZ0NsYXNzXT1cIntkaXNhYmxlZDogISFmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seX1cIiAqbmdJZj1cImVsZW1lbnRUZW1wbGF0ZVwiPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVsZW1lbnRUZW1wbGF0ZTsgY29udGV4dDoge2VsZW1lbnQsIGZvcm1FbGVtZW50UmVmfVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSB0aGUgZmllbGRzIGRlc2NyaXB0aW9uIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZGVzY3JpcHRpb25cIj57e2Zvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmRlc2NyaXB0aW9ufX08L2Rpdj5cblxuICAgIDwhLS0gZXJyb3IvdmFsaWRhdGlvbiBtZXNzYWdlcyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZXJyLW1zZ1wiICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzXCI+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuZGF0ZXJhbmdlXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkuZGF0ZXJhbmdlLmludmFsaWQ8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMubnVtYmVycmFuZ2VcIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5udW1iZXJyYW5nZS5pbnZhbGlkPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLm51bWJlclwiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5Lm51bWJlcjwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5wcmVjaXNpb25cIiB0cmFuc2xhdGVcbiAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMucHJlY2lzaW9uLnRyYW5zbGF0ZVZhbHVlc1wiPlxuICAgICAgICB7e2Zvcm1FbGVtZW50UmVmLmVycm9ycy5wcmVjaXNpb24udHJhbnNsYXRlS2V5fX08L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuc2NhbGVcIiB0cmFuc2xhdGVcbiAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuc2NhbGUudHJhbnNsYXRlVmFsdWVzXCI+e3tmb3JtRWxlbWVudFJlZi5lcnJvcnMuc2NhbGUudHJhbnNsYXRlS2V5fX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLnJlZ2V4IHx8IGZvcm1FbGVtZW50UmVmLmVycm9ycy5wYXR0ZXJuXCIgdHJhbnNsYXRlPlxuICAgICAgICBlby5mb3JtLnByb3BlcnR5LnN0cmluZy5yZWdleC5ub21hdGNoPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLmNsYXNzaWZpY2F0aW9uZW1haWxcIiB0cmFuc2xhdGU+XG4gICAgICAgIGVvLmZvcm0ucHJvcGVydHkuc3RyaW5nLmVycm9yLmNsYXNzaWZpY2F0aW9uLmVtYWlsPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLmNsYXNzaWZpY2F0aW9udXJsXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkuc3RyaW5nLmVycm9yLmNsYXNzaWZpY2F0aW9uLnVybFxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLm9ubHlXaGl0ZXNwYWNlc1wiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5LnN0cmluZy5lcnJvci53aGl0ZXNwYWNlczwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5kYXRlY29udHJvbFwiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5LmRhdGUuaW52YWxpZDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5jb2Rlc3lzdGVtXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkuY29kZXN5c3RlbS52YWx1ZS5pbnZhbGlkPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLmVvZm9ybVNjcmlwdFwiPnt7Zm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZXJyb3IubXNnfX08L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMucmVxdWlyZWRcIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5yZXF1aXJlZDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5tYXhsZW5ndGhcIiB0cmFuc2xhdGVcbiAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7bWF4bGVuZ3RoOiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tYXhsZW59XCI+ZW8uZm9ybS5wcm9wZXJ0eS5tYXhsZW5ndGg8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMubWlubGVuZ3RoXCIgdHJhbnNsYXRlXG4gICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwie21pbmxlbmd0aDogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWlubGVufVwiPmVvLmZvcm0ucHJvcGVydHkubWlubGVuZ3RoPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLmRlbGV0ZWRJRFJlZmVyZW5jZVwiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5LmlkcmVmZXJlbmNlLmRlbGV0ZWQ8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuZGVsZXRlZE9yZ09iamVjdFwiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5Lm9yZ29iamVjdC5kZWxldGVkPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgPC9kaXY+XG5cblxuXG4gIDwhLS0gU1RSSU5HIC0tPlxuICA8bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIlNUUklOR1wiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiIGxldC1mb3JtRWxlbWVudFJlZj1cImZvcm1FbGVtZW50UmVmXCI+XG4gICAgPGVvLWZvcm0taW5wdXQgW3RhZ109XCJ0YWdcIlxuICAgICAgW2xhYmVsXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsID8gZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgOiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5uYW1lXCJcbiAgICAgIFtpc051bGxdPVwiaXNOdWxsXCJcbiAgICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGUgfHwgc2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiIChvblRvZ2dsZUxhYmVsKT1cImxhYmVsVG9nZ2xlZCgkZXZlbnQpXCJcbiAgICAgIFtyZXF1aXJlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZFwiIFtkaXNhYmxlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICBbaW52YWxpZF09XCJmb3JtRWxlbWVudFJlZi5pbnZhbGlkXCI+XG5cbiAgICAgIDxlby1zdHJpbmdcbiAgICAgICAgKm5nSWY9XCIhZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVmZXJlbmNlICYmIGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmNsYXNzaWZpY2F0aW9uICE9PSAnc2VsZWN0b3InXCJcbiAgICAgICAgW3NpdHVhdGlvbl09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5zaXR1YXRpb25cIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCJcbiAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5hdXRvY29tcGxldGVcIlxuICAgICAgICBbbXVsdGlzZWxlY3RdPVwiISFmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdFwiXG4gICAgICAgIFttdWx0aWxpbmVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlsaW5lXCJcbiAgICAgICAgW2NsYXNzaWZpY2F0aW9uXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmNsYXNzaWZpY2F0aW9uXCIgW3JlZ2V4XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlZ2V4XCJcbiAgICAgICAgW3FuYW1lXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnFuYW1lXCIgW3NpemVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuc2l6ZVwiXG4gICAgICAgIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiIFttaW5MZW5ndGhdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWlubGVuXCJcbiAgICAgICAgW21heExlbmd0aF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tYXhsZW5cIj48L2VvLXN0cmluZz5cblxuICAgICAgPCEtLSBEeW5hbWljIExpc3QgLS0+XG4gICAgICA8ZW8tZHluYW1pYy1saXN0XG4gICAgICAgICpuZ0lmPVwiIWZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlZmVyZW5jZSAmJiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5jbGFzc2lmaWNhdGlvbiA9PT0gJ3NlbGVjdG9yJ1wiXG4gICAgICAgIFtzaXR1YXRpb25dPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuc2l0dWF0aW9uXCIgW3BpY2tlclRpdGxlXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsXCJcbiAgICAgICAgW2ZpbHRlckZ1bmN0aW9uXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmZpbHRlckZ1bmN0aW9uXCJcbiAgICAgICAgW211bHRpc2VsZWN0XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpc2VsZWN0XCIgW2xpc3RPYmplY3RdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGlzdFwiXG4gICAgICAgIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIj48L2VvLWR5bmFtaWMtbGlzdD5cblxuXG4gICAgICA8IS0tIFJlZmVyZW5jZSAtLT5cbiAgICAgIDxlby1yZWZlcmVuY2UgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWZlcmVuY2VcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCIgW3JlZmVyZW5jZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWZlcmVuY2VcIlxuICAgICAgICBbbXVsdGlzZWxlY3RdPVwiISFmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdCA/IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpc2VsZWN0IDogc2l0dWF0aW9uID09PSAnU0VBUkNIJ1wiXG4gICAgICAgIFttaW5MZW5ndGhdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWlubGVuXCJcbiAgICAgICAgW21heExlbmd0aF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tYXhsZW5cIj48L2VvLXJlZmVyZW5jZT5cbiAgICA8L2VvLWZvcm0taW5wdXQ+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBJRC1SZWZlcmVuY2UgLS0+XG4gIDxuZy10ZW1wbGF0ZSBlb0Zvcm1FbGVtZW50VGVtcGxhdGUgcHJvcGVydHlUeXBlPVwiUkVGRVJFTkNFXCIgbGV0LWVsZW1lbnQ9XCJlbGVtZW50XCIgbGV0LWZvcm1FbGVtZW50UmVmPVwiZm9ybUVsZW1lbnRSZWZcIj5cbiAgICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiXG4gICAgICBbbGFiZWxdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgPyBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm5hbWVcIlxuICAgICAgW2lzTnVsbF09XCJpc051bGxcIlxuICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZSB8fCBzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgKG9uVG9nZ2xlTGFiZWwpPVwibGFiZWxUb2dnbGVkKCRldmVudClcIlxuICAgICAgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgIFtpbnZhbGlkXT1cImZvcm1FbGVtZW50UmVmLmludmFsaWRcIj5cblxuICAgICAgPGVvLWlkLXJlZmVyZW5jZSBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCJcbiAgICAgICAgW3NpdHVhdGlvbl09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5zaXR1YXRpb25cIlxuICAgICAgICBbZGF0YVRvUmVuZGVyXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmRhdGFUb1JlbmRlclwiXG4gICAgICAgIFtyZWZlcmVuY2VdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVmZXJlbmNlXCIgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgICAgW211bHRpc2VsZWN0XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpc2VsZWN0XCIgW2NvbnRleHRJZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5jb250ZXh0SWRcIlxuICAgICAgICBbZXhjZXB0aW9uSURzXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmV4Y2VwdGlvbklEc1wiXG4gICAgICAgIFtxdWVyeUZpbHRlcnNdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucXVlcnlGaWx0ZXJzXCJcbiAgICAgICAgW29iamVjdFR5cGVzRmlsdGVyXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm9iamVjdFR5cGVzRmlsdGVyXCI+PC9lby1pZC1yZWZlcmVuY2U+XG4gICAgPC9lby1mb3JtLWlucHV0PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDwhLS0gSUQgLS0+XG4gIDxuZy10ZW1wbGF0ZSBlb0Zvcm1FbGVtZW50VGVtcGxhdGUgcHJvcGVydHlUeXBlPVwiSURcIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICAgIDxlby1mb3JtLWlucHV0IFt0YWddPVwidGFnXCJcbiAgICAgIFtsYWJlbF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA/IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsIDogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubmFtZVwiXG4gICAgICBbaXNOdWxsXT1cImlzTnVsbFwiXG4gICAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICBbcmVxdWlyZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgW2ludmFsaWRdPVwiZm9ybUVsZW1lbnRSZWYuaW52YWxpZFwiPlxuXG4gICAgICA8ZW8tc3RyaW5nIFtzaXR1YXRpb25dPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuc2l0dWF0aW9uXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiXG4gICAgICAgIFthdXRvY29tcGxldGVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgW211bHRpc2VsZWN0XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpc2VsZWN0XCIgW3JlZ2V4XT1cIideWzAtOWEtZkEtRl0qJCdcIlxuICAgICAgICBbcW5hbWVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucW5hbWVcIiBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbbWluTGVuZ3RoXT1cIjMyXCIgW21heExlbmd0aF09XCIzMlwiPjwvZW8tc3RyaW5nPlxuXG4gICAgPC9lby1mb3JtLWlucHV0PlxuICA8L25nLXRlbXBsYXRlPlxuXG5cbiAgPCEtLSBCT09MRUFOIC0tPlxuICA8bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIkJPT0xFQU5cIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICAgIDxlby1mb3JtLWlucHV0IFt0YWddPVwidGFnXCIgY2xhc3M9XCJjaGVja2JveFwiXG4gICAgICBbbGFiZWxdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgPyBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm5hbWVcIlxuICAgICAgW2lzTnVsbF09XCJpc051bGxcIlxuICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZSB8fCBzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCJcbiAgICAgIFtkaXNhYmxlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiIChvblRvZ2dsZUxhYmVsKT1cImxhYmVsVG9nZ2xlZCgkZXZlbnQpXCJcbiAgICAgIFtpbnZhbGlkXT1cImZvcm1FbGVtZW50UmVmLmludmFsaWRcIj5cblxuICAgICAgPGVvLWNoZWNrYm94IFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIlxuICAgICAgICBbcmVxdWlyZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWRcIiBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbdHJpc3RhdGVdPVwidHJ1ZVwiPjwvZW8tY2hlY2tib3g+XG4gICAgPC9lby1mb3JtLWlucHV0PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDwhLS0gQ09ERVNZU1RFTSAtLT5cbiAgPG5nLXRlbXBsYXRlIGVvRm9ybUVsZW1lbnRUZW1wbGF0ZSBwcm9wZXJ0eVR5cGU9XCJDT0RFU1lTVEVNXCIgbGV0LWVsZW1lbnQ9XCJlbGVtZW50XCJcbiAgICBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICAgIDxlby1mb3JtLWlucHV0IFt0YWddPVwidGFnXCJcbiAgICAgIFtsYWJlbF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA/IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsIDogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubmFtZVwiXG4gICAgICBbaXNOdWxsXT1cImlzTnVsbFwiXG4gICAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICBbcmVxdWlyZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgW2ludmFsaWRdPVwiZm9ybUVsZW1lbnRSZWYuaW52YWxpZFwiPlxuXG4gICAgICA8ZW8tY29kZXN5c3RlbSBbc2l0dWF0aW9uXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLnNpdHVhdGlvblwiXG4gICAgICAgIFtwaWNrZXJUaXRsZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbFwiIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICAgIFtjb2Rlc3lzdGVtXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmNvZGVzeXN0ZW1cIlxuICAgICAgICBbbXVsdGlzZWxlY3RdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3RcIlxuICAgICAgICBbZmlsdGVyRnVuY3Rpb25dPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZmlsdGVyRnVuY3Rpb25cIlxuICAgICAgICBbZGlzYWJsaW5nRmlsdGVyRnVuY3Rpb25dPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZGlzYWJsaW5nRmlsdGVyRnVuY3Rpb25cIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCI+PC9lby1jb2Rlc3lzdGVtPlxuICAgIDwvZW8tZm9ybS1pbnB1dD5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8IS0tIE9SR0FOSVpBVElPTiAtLT5cbiAgPG5nLXRlbXBsYXRlIGVvRm9ybUVsZW1lbnRUZW1wbGF0ZSBwcm9wZXJ0eVR5cGU9XCJPUkdBTklaQVRJT05cIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIlxuICAgIGxldC1mb3JtRWxlbWVudFJlZj1cImZvcm1FbGVtZW50UmVmXCI+XG4gICAgPGVvLWZvcm0taW5wdXQgW3RhZ109XCJ0YWdcIlxuICAgICAgW2xhYmVsXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsID8gZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgOiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5uYW1lXCJcbiAgICAgIFtpc051bGxdPVwiaXNOdWxsXCJcbiAgICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGUgfHwgc2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiIChvblRvZ2dsZUxhYmVsKT1cImxhYmVsVG9nZ2xlZCgkZXZlbnQpXCJcbiAgICAgIFtyZXF1aXJlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZFwiIFtkaXNhYmxlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICBbaW52YWxpZF09XCJmb3JtRWxlbWVudFJlZi5pbnZhbGlkXCI+XG5cbiAgICAgIDxlby1vcmdhbml6YXRpb24gW3NpdHVhdGlvbl09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5zaXR1YXRpb25cIlxuICAgICAgICBbZGF0YU1ldGFdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZGF0YU1ldGFcIiBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbZmlsdGVyT2JqZWN0XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmZpbHRlclwiIFttdWx0aXNlbGVjdF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdFwiXG4gICAgICAgIChvbkRhdGFNZXRhQ2hhbmdlZCk9XCJvcmdhbml6YXRpb25EYXRhTWV0YVJlc29sdmVkKCRldmVudClcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCI+PC9lby1vcmdhbml6YXRpb24+XG4gICAgPC9lby1mb3JtLWlucHV0PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDwhLS0gTlVNQkVSIC0tPlxuICA8bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIk5VTUJFUlwiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiIGxldC1mb3JtRWxlbWVudFJlZj1cImZvcm1FbGVtZW50UmVmXCI+XG4gICAgPGVvLWZvcm0taW5wdXQgW3RhZ109XCJ0YWdcIlxuICAgICAgW2xhYmVsXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsID8gZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgOiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5uYW1lXCJcbiAgICAgIFtpc051bGxdPVwiaXNOdWxsXCJcbiAgICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGUgfHwgc2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiIChvblRvZ2dsZUxhYmVsKT1cImxhYmVsVG9nZ2xlZCgkZXZlbnQpXCJcbiAgICAgIFtyZXF1aXJlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZFwiIFtkaXNhYmxlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICBbaW52YWxpZF09XCJmb3JtRWxlbWVudFJlZi5pbnZhbGlkXCI+XG5cbiAgICAgIDxlby1udW1iZXIgKm5nSWY9XCJzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgICAgW3ByZWNpc2lvbl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5wcmVjaXNpb25cIiBbc2NhbGVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuc2NhbGVcIlxuICAgICAgICBbZ3JvdXBpbmddPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZ3JvdXBpbmdcIiBbcGF0dGVybl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5wYXR0ZXJuXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiPlxuICAgICAgPC9lby1udW1iZXI+XG5cbiAgICAgIDxlby1udW1iZXItcmFuZ2UgKm5nSWY9XCJzaXR1YXRpb24gPT09ICdTRUFSQ0gnXCIgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgICAgW3ByZWNpc2lvbl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5wcmVjaXNpb25cIiBbc2NhbGVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuc2NhbGVcIlxuICAgICAgICBbZ3JvdXBpbmddPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZ3JvdXBpbmdcIiBbcGF0dGVybl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5wYXR0ZXJuXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiPjwvZW8tbnVtYmVyLXJhbmdlPlxuICAgIDwvZW8tZm9ybS1pbnB1dD5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8IS0tIERBVEUgQU5EIERBVEVUSU1FIC0tPlxuICA8bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIkRBVEVUSU1FXCIgbGV0LWVsZW1lbnQ9XCJlbGVtZW50XCIgbGV0LWZvcm1FbGVtZW50UmVmPVwiZm9ybUVsZW1lbnRSZWZcIj5cbiAgICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiXG4gICAgICBbbGFiZWxdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgPyBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm5hbWVcIlxuICAgICAgW2lzTnVsbF09XCJpc051bGxcIlxuICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZSB8fCBzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgKG9uVG9nZ2xlTGFiZWwpPVwibGFiZWxUb2dnbGVkKCRldmVudClcIlxuICAgICAgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgIFtpbnZhbGlkXT1cImZvcm1FbGVtZW50UmVmLmludmFsaWRcIj5cblxuICAgICAgPGVvLWRhdGUgKm5nSWY9XCJzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgW3dpdGhUaW1lXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LndpdGh0aW1lXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiPjwvZW8tZGF0ZT5cblxuICAgICAgPGVvLWRhdGV0aW1lLXJhbmdlICpuZ0lmPVwic2l0dWF0aW9uID09PSAnU0VBUkNIJ1wiIFtwaWNrZXJUaXRsZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbFwiXG4gICAgICAgIFt3aXRoVGltZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC53aXRodGltZVwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIj48L2VvLWRhdGV0aW1lLXJhbmdlPlxuICAgIDwvZW8tZm9ybS1pbnB1dD5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgPCEtLSBwcmludCBvdXQgdGhlIHR5cGUgaWYgaXQncyBub3QgbWF0Y2hpbmcgYW55dGhpbmcgLS0+XG4gIDxuZy10ZW1wbGF0ZSAjdHBsVW5rbm93bj48Yj57e2Zvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnR5cGV9fTwvYj48L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
|
|
@@ -227,6 +227,10 @@ class ScopeElement {
|
|
|
227
227
|
get label() {
|
|
228
228
|
return this.element.label;
|
|
229
229
|
}
|
|
230
|
+
set description(description) {
|
|
231
|
+
this.element.description = description;
|
|
232
|
+
this.onScriptingModelChange(this.element.name, { newValue: description, name: 'description' });
|
|
233
|
+
}
|
|
230
234
|
get description() {
|
|
231
235
|
return this.element.description;
|
|
232
236
|
}
|
|
@@ -264,4 +268,4 @@ class ScopeElement {
|
|
|
264
268
|
return this.element.aliases;
|
|
265
269
|
}
|
|
266
270
|
}
|
|
267
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0tc2NyaXB0aW5nLXNjb3BlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tc2NyaXB0L29iamVjdC1mb3JtLXNjcmlwdGluZy1zY29wZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRXBDLHlEQUF5RDtBQUN6RCxNQUFNLE9BQU8sd0JBQXdCO0lBcUJuQzs7Ozs7Ozs7OztPQVVHO0lBQ0gsWUFBbUIsU0FBaUIsRUFDaEIsc0JBQXNCLEVBQ3ZCLEdBQVEsRUFDUCxlQUF5QjtRQUgxQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2hCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBQTtRQUN2QixRQUFHLEdBQUgsR0FBRyxDQUFLO1FBQ1Asb0JBQWUsR0FBZixlQUFlLENBQVU7UUFqQzdDLHFDQUFxQztRQUM5QixVQUFLLEdBQVEsRUFBRSxDQUFDO1FBRXZCLDBEQUEwRDtRQUNuRCxTQUFJLEdBQVEsRUFBRSxDQUFDO1FBS3RCLDhCQUE4QjtRQUN2QixZQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ3pCLGlEQUFpRDtRQUNqRCwrREFBK0Q7UUFDL0QsMkJBQTJCO1FBQzNCLDhDQUE4QztRQUN2QyxZQUFPLEdBQVUsRUFBRSxDQUFDO1FBQ3BCLFlBQU8sR0FBb0QsRUFBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBQyxDQUFDO0lBa0JwRyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFFBQVEsQ0FBQyxLQUFVO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLEtBQUssSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFL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QztJQUMvQixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUM5QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Nsb25lRGVlcH0gZnJvbSAnbG9kYXNoLWVzJztcblxuLy8gVGhpcyBjbGFzcyB3aWxsIGJlIGluamVjdGVkIGFzIHNjb3BlIGludG8gZm9ybSBzY3JpcHRzXG5leHBvcnQgY2xhc3MgT2JqZWN0Rm9ybVNjcmlwdGluZ1Njb3BlIHtcblxuICAvLyBMaXN0IG9mIGFsbCBmb3JtIGZpZWxkcyAoZWxlbWVudHMpXG4gIHB1YmxpYyBtb2RlbDogYW55ID0ge307XG5cbiAgLy8gYWxsIGRhdGEgdmFsdWVzIGluY2x1ZGluZyBpbnZpc2libGUgZWxlbWVudHMgKFJFQURPTkxZKVxuICBwdWJsaWMgZGF0YTogYW55ID0ge307XG5cbiAgLy8gVGhlIGlkIG9mIHRoZSBjdXJyZW50IERNUy1PYmplY3QgKFJFQURPTkxZKVxuICBwdWJsaWMgb2JqZWN0SWQ6IHN0cmluZztcblxuICAvLyBhY3Rpb25zIHBhc3NlZCBieSBCUE0gZm9ybXNcbiAgcHVibGljIGFjdGlvbnM6IGFueSA9IHt9O1xuICAvLyBhZGRpdGlvbmFsIG9iamVjdHMgcHJvdmlkZWQgYnkgdGhlIG9iamVjdCBmb3JtXG4gIC8vIHVzZWQgZm9yIGV4YW1wbGUgdG8gcGFzcyBkbXMgb2JqZWN0cyBhdHRhY2hlZCB0byBhIHdvcmsgaXRlbVxuICAvLyB0byB0aGUgc2NyaXB0IChSRUFET05MWSlcbiAgLy8gbWF5IGNvbnRhaW46IEZvcm1TY3JpcHREbXNPYmplY3QsIEZpbGVFbnRyeVxuICBwdWJsaWMgb2JqZWN0czogYW55W10gPSBbXTtcbiAgcHVibGljIGNvbnRleHQ6IHsgaWQ6IHN0cmluZywgdGl0bGU6IHN0cmluZywgdHlwZU5hbWU6IHN0cmluZyB9ID0ge2lkOiAnJywgdGl0bGU6ICcnLCB0eXBlTmFtZTogJyd9O1xuXG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSBzaXR1YXRpb24gLSBDdXJyZW50IGZvcm0gbW9kZWwgc2l0dWF0aW9uIChjb3VsZCBiZSBDUkVBVEUsIFNFQVJDSCBvciBFRElUKVxuICAgKiBAcGFyYW0gb25TY3JpcHRpbmdNb2RlbENoYW5nZSAtIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzY3JpcHRpbmcgbW9kZWwgY2hhbmdlZFxuICAgKiBCZSBhd2FyZSB0byBwcm92aWRlIGFuIGluc3RhbmNlIG1ldGhvZCBhcyBjYWxsYmFjayBmb3IgdGhlIHNjcmlwdGluZyBzY29wZS5cbiAgICogQHNlZTogaHR0cHM6Ly9ibG9nLmpvaG5ueXJlaWxseS5jb20vMjAxNC8wNC90eXBlc2NyaXB0LWluc3RhbmNlLW1ldGhvZHMuaHRtbFxuICAgKlxuICAgKiBAcGFyYW0gYXBpIC0gUGx1Z2luIEFQSSByZWZlcmVuY2VcbiAgICogQHBhcmFtIGlzVGFibGVSb3dTY29wZSAtIHNldCB0aGlzIHRvIHRydWUgaWYgdGhlIGN1cnJlbnQgc2NyaXB0aW5nIHNjb3BlIGlzIGNyZWF0ZWQgZm9yIGFcbiAgICogcm93IGVkaXRpbmcgZm9ybSBmcm9tIGEgdGFibGUgZWxlbWVudC4gSXQgd2lsbCB0aGVuIHByb3ZpZGUgdGhlIHJpZ2h0IHBhcmFtZXRlcnMgZm9yIHRoZSBzY3JpcHRpbmcgZnVuY3Rpb25zXG4gICAqL1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgc2l0dWF0aW9uOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHByaXZhdGUgb25TY3JpcHRpbmdNb2RlbENoYW5nZSxcbiAgICAgICAgICAgICAgcHVibGljIGFwaTogYW55LFxuICAgICAgICAgICAgICBwcml2YXRlIGlzVGFibGVSb3dTY29wZT86IGJvb2xlYW4pIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpbnRlcm5hbCBtb2RlbCBhbmQgd3JhcHMgZXZlcnkgbW9kZWwgZWxlbWVudCB3aXRoIGFuIG9ic2VydmVyIHRvIGJlXG4gICAqIGFibGUgdG8gdHJhY2sgdGhlaXIgY2hhbmdlcyBmcm9tIHdpdGhpbiBhIGZvcm0gc2NyaXB0XG4gICAqIEBwYXJhbSBtb2RlbFxuICAgKi9cbiAgcHVibGljIHNldE1vZGVsKG1vZGVsOiBhbnkpIHtcbiAgICB0aGlzLm1vZGVsID0ge307XG4gICAgZm9yIChsZXQgayBvZiBPYmplY3Qua2V5cyhtb2RlbCkpIHtcbiAgICAgIHRoaXMubW9kZWxba10gPSBuZXcgU2NvcGVFbGVtZW50KG1vZGVsW2tdLCB0aGlzLm9uU2NyaXB0aW5nTW9kZWxDaGFuZ2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBvYnNlcnZlZCBtb2RlbC4gVXNlZCBmb3Igcm93IGVkaXRpbmcgZm9ybXMgb2YgdGFibGUgZWxlbWVudHMgdGhhdFxuICAgKiBjcmVhdGUgdGhlaXIgb3duIHNjcmlwdGluZyBzY29wZSBpbiBjb250ZXh0IG9mIHRoZWlyIHBhcmVudCBmb3JtLlxuICAgKiBAcmV0dXJucyB0aGUgb2JzZXJ2ZWQgc2NyaXB0aW5nIHNjb3BlIG1vZGVsXG4gICAqL1xuICBwdWJsaWMgZ2V0TW9kZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWw7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGJ5IHRoZSBvYmplY3QgZm9ybSB3aGVuIHRoZSBmb3JtIG1vZGVsIGNoYW5nZXMuXG4gICAqIEBwYXJhbSBjaGFuZ2UgLSBvYmplY3Qgd2l0aCBrZXkgZXF1YWxzIG5hbWUgb2YgdGhlIGVsZW1lbnRcbiAgICogdGhhdCBjaGFuZ2VzIGFuZCB2YWx1ZSBvZiB0aGUgbmV3IHZhbHVlXG4gICAqL1xuICBwdWJsaWMgbW9kZWxDaGFuZ2VkKGNoYW5nZTogYW55KSB7XG5cbiAgICAvLyBmaW5kIHRoZSBjaGFuZ2VkIGVsZW1lbnQgaW4gdGhlIHNjb3BlcyBtb2RlbFxuICAgIGxldCBwcm9wZXJ0eU5hbWUgPSBPYmplY3Qua2V5cyhjaGFuZ2UpWzBdO1xuICAgIGlmIChjaGFuZ2VbcHJvcGVydHlOYW1lXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubW9kZWxbcHJvcGVydHlOYW1lXSkge1xuICAgICAgbGV0IGVsID0gdGhpcy5tb2RlbFtwcm9wZXJ0eU5hbWVdO1xuICAgICAgZWwudXBkYXRlKGNoYW5nZVtwcm9wZXJ0eU5hbWVdLCB0aGlzLm1vZGVsKTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgU2NvcGVFbGVtZW50IHtcbiAgcHJpdmF0ZSBlbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3JpZ2luYWxFbGVtZW50OiBhbnksIHByaXZhdGUgb25TY3JpcHRpbmdNb2RlbENoYW5nZTogRnVuY3Rpb24pIHtcbiAgICB0aGlzLmVsZW1lbnQgPSBjbG9uZURlZXAob3JpZ2luYWxFbGVtZW50KTtcbiAgICBpZiAodGhpcy5lbGVtZW50LnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZWxlbWVudC52YWx1ZSA9IG51bGw7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzUHJveHlhYmxlKHRoaXMuZWxlbWVudC52YWx1ZSkpIHtcbiAgICAgIHRoaXMuZWxlbWVudC52YWx1ZSA9IHRoaXMuY3JlYXRlUHJveHkodGhpcy5lbGVtZW50LnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzUHJveHlhYmxlKHZhbHVlLCBrZXk/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICAmJiB2YWx1ZSAhPT0gbnVsbFxuICAgICAgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpXG4gICAgICAmJiAhdmFsdWUuaXNQcm94eVxuICAgICAgJiYgKGtleSA/ICFrZXkuaW5jbHVkZXMoJ19tZXRhJykgOiB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUHJveHkodmFsdWUpIHtcbiAgICBjb25zdCBoYW5kbGVyID0ge1xuICAgICAgc2V0OiAodGFyZ2V0LCBrZXksIHZhbCkgPT4ge1xuICAgICAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gY2xvbmVEZWVwKHRoaXMuZWxlbWVudC52YWx1ZSk7XG4gICAgICAgIHRhcmdldFtrZXldID0gdmFsO1xuICAgICAgICBpZiAodGhpcy5oYXNWYWx1ZUNoYW5nZWQodGhpcy5lbGVtZW50LnZhbHVlLCBwcmV2aW91c1ZhbHVlKSAmJiAha2V5LmluY2x1ZGVzKCdfbWV0YScpKSB7XG4gICAgICAgICAgdGhpcy5vblNjcmlwdGluZ01vZGVsQ2hhbmdlKHRoaXMuZWxlbWVudC5uYW1lLCB7bmV3VmFsdWU6IGNsb25lRGVlcCh0aGlzLmVsZW1lbnQudmFsdWUpLCBuYW1lOiAndmFsdWUnfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9LFxuICAgICAgLy8gVGhpcyBnZXQgdHJhcCBpcyBvbmx5IHVzZWQgdG8gZmluZCBvdXQsIGlmIGFuIG9iamVjdCBpcyBhIHByb3h5IG9yIG5vdC5cbiAgICAgIGdldDogKHRhcmdldCwga2V5KSA9PiB7XG4gICAgICAgIGlmIChrZXkgPT09ICdpc1Byb3h5Jykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YXJnZXRba2V5XTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBQcm94eSh2YWx1ZSwgaGFuZGxlcik7XG4gIH1cblxuICBwcml2YXRlIGhhc1ZhbHVlQ2hhbmdlZCh2YWx1ZTEsIHZhbHVlMikge1xuICAgIGxldCB2MSA9IHZhbHVlMTtcbiAgICBsZXQgdjIgPSB2YWx1ZTI7XG4gICAgaWYoQXJyYXkuaXNBcnJheSh2YWx1ZTEpICYmIHR5cGVvZiB2YWx1ZTFbMF0gPT09ICdvYmplY3QnICYmIEFycmF5LmlzQXJyYXkodmFsdWUyKSAmJiB0eXBlb2YgdmFsdWUyWzBdID09PSAnb2JqZWN0Jyl7Ly8gdGhpcyBpcyBvbmx5IHRoZSBjYXNlIGluIHRhYmxlc1xuICAgICAgdjEgPSB2YWx1ZTEubWFwKGVudHJ5ID0+IHRoaXMuY3JlYXRlRW50cnlXaXRob3V0TWV0YWRhdGEoZW50cnkpKTsvLyByZW1vdmluZyBtZXRhZGF0YSBmcm9tIGV2ZXJ5IHJvdywgYmVjYXVzZSBpdCdzIGluc2lnbmlmaWNhbnQgZm9yIGNoYW5nZSBkZXRlY3Rpb25cbiAgICAgIHYyID0gdmFsdWUyLm1hcChlbnRyeSA9PiB0aGlzLmNyZWF0ZUVudHJ5V2l0aG91dE1ldGFkYXRhKGVudHJ5KSk7Ly8gYW5kIGNhbiBjYXVzZSBmYWxzZSBcInRydWVcIi1yZXN1bHRzXG4gICAgfVxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2MSkgIT09IEpTT04uc3RyaW5naWZ5KHYyKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRW50cnlXaXRob3V0TWV0YWRhdGEoZW50cnkpe1xuICAgIGxldCBlbnRyeVdpdGhvdXRNZXRhZGF0YSA9IHsuLi5lbnRyeX07XG4gICAgT2JqZWN0LmtleXMoZW50cnlXaXRob3V0TWV0YWRhdGEpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGRlbGV0ZSBlbnRyeVdpdGhvdXRNZXRhZGF0YVtrZXkgKyAnX21ldGEnXTtcbiAgICB9KTtcbiAgICByZXR1cm4gZW50cnlXaXRob3V0TWV0YWRhdGE7XG4gIH1cblxuICB1cGRhdGUodmFsdWUsIG1vZGVsKSB7XG4gICAgY29uc3QgbmV3VmFsdWUgPSBjbG9uZURlZXAodmFsdWUpO1xuICAgIGlmICh0aGlzLmhhc1ZhbHVlQ2hhbmdlZCh0aGlzLmVsZW1lbnQudmFsdWUsIHZhbHVlKSkge1xuICAgICAgaWYgKHRoaXMuaXNQcm94eWFibGUobmV3VmFsdWUpKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudC52YWx1ZSA9IHRoaXMuY3JlYXRlUHJveHkobmV3VmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5lbGVtZW50LnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5lbGVtZW50Lm9uY2hhbmdlKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudC5vbmNoYW5nZSh0aGlzLCBtb2RlbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0IHZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHRoaXMuaXNQcm94eWFibGUodmFsdWUpKSB7XG4gICAgICB0aGlzLmVsZW1lbnQudmFsdWUgPSB0aGlzLmNyZWF0ZVByb3h5KHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIHRoaXMub25TY3JpcHRpbmdNb2RlbENoYW5nZSh0aGlzLmVsZW1lbnQubmFtZSwge25ld1ZhbHVlOiBjbG9uZURlZXAodGhpcy5lbGVtZW50LnZhbHVlKSwgbmFtZTogJ3ZhbHVlJ30pO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnQudmFsdWU7XG4gIH1cblxuICBzZXQgb25jaGFuZ2Uob25jaGFuZ2UpIHtcbiAgICB0aGlzLmVsZW1lbnQub25jaGFuZ2UgPSBvbmNoYW5nZTtcbiAgICB0aGlzLm9uU2NyaXB0aW5nTW9kZWxDaGFuZ2UodGhpcy5lbGVtZW50Lm5hbWUsIHtuZXdWYWx1ZTogb25jaGFuZ2UsIG5hbWU6ICdvbmNoYW5nZSd9KTtcbiAgfVxuXG4gIGdldCBvbmNoYW5nZSgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50Lm9uY2hhbmdlO1xuICB9XG5cbiAgc2V0IHJlcXVpcmVkKHJlcXVpcmVkKSB7XG4gICAgaWYodGhpcy5oYXNWYWx1ZUNoYW5nZWQodGhpcy5lbGVtZW50LnJlcXVpcmVkLCByZXF1aXJlZCkpe1xuICAgICAgdGhpcy5lbGVtZW50LnJlcXVpcmVkID0gcmVxdWlyZWQ7XG4gICAgICB0aGlzLm9uU2NyaXB0aW5nTW9kZWxDaGFuZ2UodGhpcy5lbGVtZW50Lm5hbWUsIHtuZXdWYWx1ZTogcmVxdWlyZWQsIG5hbWU6ICdyZXF1aXJlZCd9KTtcbiAgICB9XG4gIH1cblxuICBnZXQgcmVxdWlyZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudC5yZXF1aXJlZDtcbiAgfVxuXG4gIHNldCByZWFkb25seShyZWFkb25seSkge1xuICAgIHRoaXMuZWxlbWVudC5yZWFkb25seSA9IHJlYWRvbmx5O1xuICAgIHRoaXMub25TY3JpcHRpbmdNb2RlbENoYW5nZSh0aGlzLmVsZW1lbnQubmFtZSwge25ld1ZhbHVlOiByZWFkb25seSwgbmFtZTogJ3JlYWRvbmx5J30pO1xuICB9XG5cbiAgZ2V0IHJlYWRvbmx5KCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnQucmVhZG9ubHk7XG4gIH1cblxuICBzZXQgZXJyb3IoZXJyb3IpIHtcbiAgICBpZih0aGlzLmhhc1ZhbHVlQ2hhbmdlZCh0aGlzLmVsZW1lbnQuZXJyb3IsIGVycm9yKSl7XG4gICAgICB0aGlzLmVsZW1lbnQuZXJyb3IgPSBlcnJvcjtcbiAgICAgIHRoaXMub25TY3JpcHRpbmdNb2RlbENoYW5nZSh0aGlzLmVsZW1lbnQubmFtZSwge25ld1ZhbHVlOiBlcnJvciwgbmFtZTogJ2Vycm9yJ30pO1xuICAgIH1cbiAgfVxuXG4gIGdldCBlcnJvcigpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50LmVycm9yO1xuICB9XG5cbiAgc2V0IG9ucm93ZWRpdChvbnJvd2VkaXQpIHtcbiAgICB0aGlzLmVsZW1lbnQub25yb3dlZGl0ID0gb25yb3dlZGl0O1xuICAgIHRoaXMub25TY3JpcHRpbmdNb2RlbENoYW5nZSh0aGlzLmVsZW1lbnQubmFtZSwge25ld1ZhbHVlOiBvbnJvd2VkaXQsIG5hbWU6ICdvbnJvd2VkaXQnfSk7XG4gIH1cblxuICBnZXQgb25yb3dlZGl0KCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnQub25yb3dlZGl0O1xuICB9XG5cbiAgc2V0IGNvbnRleHRJZChjb250ZXh0SWQpIHtcbiAgICB0aGlzLmVsZW1lbnQuY29udGV4dElkID0gY29udGV4dElkO1xuICAgIHRoaXMub25TY3JpcHRpbmdNb2RlbENoYW5nZSh0aGlzLmVsZW1lbnQubmFtZSwge25ld1ZhbHVlOiBjb250ZXh0SWQsIG5hbWU6ICdjb250ZXh0SWQnfSk7XG4gIH1cblxuICBnZXQgY29udGV4dElkKCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnQuY29udGV4dElkO1xuICB9XG5cbiAgc2V0TGlzdChvYmopIHtcbiAgICBpZiAodGhpcy5vcmlnaW5hbEVsZW1lbnQuc2V0TGlzdCkge1xuICAgICAgdGhpcy5vcmlnaW5hbEVsZW1lbnQuc2V0TGlzdChvYmopO1xuICAgIH1cbiAgfVxuXG4gIGFwcGx5RmlsdGVyKGZ1bmMpIHtcbiAgICBpZiAodGhpcy5vcmlnaW5hbEVsZW1lbnQuYXBwbHlGaWx0ZXIpIHtcbiAgICAgIHRoaXMub3JpZ2luYWxFbGVtZW50LmFwcGx5RmlsdGVyKGZ1bmMpO1xuICAgIH1cbiAgfVxuXG4gIGFwcGx5RGlzYWJsaW5nRmlsdGVyKGZ1bmMpIHtcbiAgICBpZiAodGhpcy5vcmlnaW5hbEVsZW1lbnQuYXBwbHlEaXNhYmxpbmdGaWx0ZXIpIHtcbiAgICAgIHRoaXMub3JpZ2luYWxFbGVtZW50LmFwcGx5RGlzYWJsaW5nRmlsdGVyKGZ1bmMpO1xuICAgIH1cbiAgfVxuXG4gIHNldEZpbHRlcihvYmopIHtcbiAgICBpZiAodGhpcy5vcmlnaW5hbEVsZW1lbnQuc2V0RmlsdGVyKSB7XG4gICAgICB0aGlzLm9yaWdpbmFsRWxlbWVudC5zZXRGaWx0ZXIob2JqKTtcbiAgICB9XG4gIH1cblxuICBzZXRRdWVyeUZpbHRlcnMocXVlcnlGaWx0ZXJzT2JqZWN0OiB7W2ZpZWxkUW5hbWU6IHN0cmluZ106IHtvOiBzdHJpbmcsIHYxOiBhbnksIHYyOiBhbnl9fSwgb2JqZWN0VHlwZXM/OiBzdHJpbmdbXSkge1xuICAgIGlmICh0aGlzLm9yaWdpbmFsRWxlbWVudC5zZXRRdWVyeUZpbHRlcnMpIHtcbiAgICAgIHRoaXMub3JpZ2luYWxFbGVtZW50LnNldFF1ZXJ5RmlsdGVycyhxdWVyeUZpbHRlcnNPYmplY3QsIG9iamVjdFR5cGVzKTtcbiAgICB9XG4gIH1cblxuICBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50Lm5hbWU7XG4gIH1cblxuICBnZXQgcW5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudC5xbmFtZTtcbiAgfVxuXG4gIGdldCBsYWJlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50LmxhYmVsO1xuICB9XG5cbiAgZ2V0IGRlc2NyaXB0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnQuZGVzY3JpcHRpb247XG4gIH1cblxuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50LnR5cGU7XG4gIH1cblxuICBnZXQgbXVsdGlzZWxlY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudC5tdWx0aXNlbGVjdDtcbiAgfVxuXG4gIGdldCBjb2Rlc3lzdGVtKCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnQuY29kZXN5c3RlbTtcbiAgfVxuXG4gIGdldCBtaW5sZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudC5taW5sZW47XG4gIH1cblxuICBnZXQgbWF4bGVuKCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnQubWF4bGVuO1xuICB9XG5cbiAgZ2V0IGNsYXNzaWZpY2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnQuY2xhc3NpZmljYXRpb247XG4gIH1cblxuICBnZXQgc2NhbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudC5zY2FsZTtcbiAgfVxuXG4gIGdldCBwcmVjaXNpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudC5wcmVjaXNpb247XG4gIH1cblxuICBnZXQgd2l0aHRpbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudC53aXRodGltZTtcbiAgfVxuXG4gIGdldCBlbGVtZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50LmVsZW1lbnRzO1xuICB9XG5cbiAgZ2V0IGFsaWFzZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudC5hbGlhc2VzO1xuICB9XG59XG4iXX0=
|
|
271
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0tc2NyaXB0aW5nLXNjb3BlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tc2NyaXB0L29iamVjdC1mb3JtLXNjcmlwdGluZy1zY29wZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRXBDLHlEQUF5RDtBQUN6RCxNQUFNLE9BQU8sd0JBQXdCO0lBcUJuQzs7Ozs7Ozs7OztPQVVHO0lBQ0gsWUFBbUIsU0FBaUIsRUFDaEIsc0JBQXNCLEVBQ3ZCLEdBQVEsRUFDUCxlQUF5QjtRQUgxQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2hCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBQTtRQUN2QixRQUFHLEdBQUgsR0FBRyxDQUFLO1FBQ1Asb0JBQWUsR0FBZixlQUFlLENBQVU7UUFqQzdDLHFDQUFxQztRQUM5QixVQUFLLEdBQVEsRUFBRSxDQUFDO1FBRXZCLDBEQUEwRDtRQUNuRCxTQUFJLEdBQVEsRUFBRSxDQUFDO1FBS3RCLDhCQUE4QjtRQUN2QixZQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ3pCLGlEQUFpRDtRQUNqRCwrREFBK0Q7UUFDL0QsMkJBQTJCO1FBQzNCLDhDQUE4QztRQUN2QyxZQUFPLEdBQVUsRUFBRSxDQUFDO1FBQ3BCLFlBQU8sR0FBb0QsRUFBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBQyxDQUFDO0lBa0JwRyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFFBQVEsQ0FBQyxLQUFVO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLEtBQUssSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFL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QUNyQyxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUM5QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Nsb25lRGVlcH0gZnJvbSAnbG9kYXNoLWVzJztcblxuLy8gVGhpcyBjbGFzcyB3aWxsIGJlIGluamVjdGVkIGFzIHNjb3BlIGludG8gZm9ybSBzY3JpcHRzXG5leHBvcnQgY2xhc3MgT2JqZWN0Rm9ybVNjcmlwdGluZ1Njb3BlIHtcblxuICAvLyBMaXN0IG9mIGFsbCBmb3JtIGZpZWxkcyAoZWxlbWVudHMpXG4gIHB1YmxpYyBtb2RlbDogYW55ID0ge307XG5cbiAgLy8gYWxsIGRhdGEgdmFsdWVzIGluY2x1ZGluZyBpbnZpc2libGUgZWxlbWVudHMgKFJFQURPTkxZKVxuICBwdWJsaWMgZGF0YTogYW55ID0ge307XG5cbiAgLy8gVGhlIGlkIG9mIHRoZSBjdXJyZW50IERNUy1PYmplY3QgKFJFQURPTkxZKVxuICBwdWJsaWMgb2JqZWN0SWQ6IHN0cmluZztcblxuICAvLyBhY3Rpb25zIHBhc3NlZCBieSBCUE0gZm9ybXNcbiAgcHVibGljIGFjdGlvbnM6IGFueSA9IHt9O1xuICAvLyBhZGRpdGlvbmFsIG9iamVjdHMgcHJvdmlkZWQgYnkgdGhlIG9iamVjdCBmb3JtXG4gIC8vIHVzZWQgZm9yIGV4YW1wbGUgdG8gcGFzcyBkbXMgb2JqZWN0cyBhdHRhY2hlZCB0byBhIHdvcmsgaXRlbVxuICAvLyB0byB0aGUgc2NyaXB0IChSRUFET05MWSlcbiAgLy8gbWF5IGNvbnRhaW46IEZvcm1TY3JpcHREbXNPYmplY3QsIEZpbGVFbnRyeVxuICBwdWJsaWMgb2JqZWN0czogYW55W10gPSBbXTtcbiAgcHVibGljIGNvbnRleHQ6IHsgaWQ6IHN0cmluZywgdGl0bGU6IHN0cmluZywgdHlwZU5hbWU6IHN0cmluZyB9ID0ge2lkOiAnJywgdGl0bGU6ICcnLCB0eXBlTmFtZTogJyd9O1xuXG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSBzaXR1YXRpb24gLSBDdXJyZW50IGZvcm0gbW9kZWwgc2l0dWF0aW9uIChjb3VsZCBiZSBDUkVBVEUsIFNFQVJDSCBvciBFRElUKVxuICAgKiBAcGFyYW0gb25TY3JpcHRpbmdNb2RlbENoYW5nZSAtIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzY3JpcHRpbmcgbW9kZWwgY2hhbmdlZFxuICAgKiBCZSBhd2FyZSB0byBwcm92aWRlIGFuIGluc3RhbmNlIG1ldGhvZCBhcyBjYWxsYmFjayBmb3IgdGhlIHNjcmlwdGluZyBzY29wZS5cbiAgICogQHNlZTogaHR0cHM6Ly9ibG9nLmpvaG5ueXJlaWxseS5jb20vMjAxNC8wNC90eXBlc2NyaXB0LWluc3RhbmNlLW1ldGhvZHMuaHRtbFxuICAgKlxuICAgKiBAcGFyYW0gYXBpIC0gUGx1Z2luIEFQSSByZWZlcmVuY2VcbiAgICogQHBhcmFtIGlzVGFibGVSb3dTY29wZSAtIHNldCB0aGlzIHRvIHRydWUgaWYgdGhlIGN1cnJlbnQgc2NyaXB0aW5nIHNjb3BlIGlzIGNyZWF0ZWQgZm9yIGFcbiAgICogcm93IGVkaXRpbmcgZm9ybSBmcm9tIGEgdGFibGUgZWxlbWVudC4gSXQgd2lsbCB0aGVuIHByb3ZpZGUgdGhlIHJpZ2h0IHBhcmFtZXRlcnMgZm9yIHRoZSBzY3JpcHRpbmcgZnVuY3Rpb25zXG4gICAqL1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgc2l0dWF0aW9uOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHByaXZhdGUgb25TY3JpcHRpbmdNb2RlbENoYW5nZSxcbiAgICAgICAgICAgICAgcHVibGljIGFwaTogYW55LFxuICAgICAgICAgICAgICBwcml2YXRlIGlzVGFibGVSb3dTY29wZT86IGJvb2xlYW4pIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpbnRlcm5hbCBtb2RlbCBhbmQgd3JhcHMgZXZlcnkgbW9kZWwgZWxlbWVudCB3aXRoIGFuIG9ic2VydmVyIHRvIGJlXG4gICAqIGFibGUgdG8gdHJhY2sgdGhlaXIgY2hhbmdlcyBmcm9tIHdpdGhpbiBhIGZvcm0gc2NyaXB0XG4gICAqIEBwYXJhbSBtb2RlbFxuICAgKi9cbiAgcHVibGljIHNldE1vZGVsKG1vZGVsOiBhbnkpIHtcbiAgICB0aGlzLm1vZGVsID0ge307XG4gICAgZm9yIChsZXQgayBvZiBPYmplY3Qua2V5cyhtb2RlbCkpIHtcbiAgICAgIHRoaXMubW9kZWxba10gPSBuZXcgU2NvcGVFbGVtZW50KG1vZGVsW2tdLCB0aGlzLm9uU2NyaXB0aW5nTW9kZWxDaGFuZ2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBvYnNlcnZlZCBtb2RlbC4gVXNlZCBmb3Igcm93IGVkaXRpbmcgZm9ybXMgb2YgdGFibGUgZWxlbWVudHMgdGhhdFxuICAgKiBjcmVhdGUgdGhlaXIgb3duIHNjcmlwdGluZyBzY29wZSBpbiBjb250ZXh0IG9mIHRoZWlyIHBhcmVudCBmb3JtLlxuICAgKiBAcmV0dXJucyB0aGUgb2JzZXJ2ZWQgc2NyaXB0aW5nIHNjb3BlIG1vZGVsXG4gICAqL1xuICBwdWJsaWMgZ2V0TW9kZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWw7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGJ5IHRoZSBvYmplY3QgZm9ybSB3aGVuIHRoZSBmb3JtIG1vZGVsIGNoYW5nZXMuXG4gICAqIEBwYXJhbSBjaGFuZ2UgLSBvYmplY3Qgd2l0aCBrZXkgZXF1YWxzIG5hbWUgb2YgdGhlIGVsZW1lbnRcbiAgICogdGhhdCBjaGFuZ2VzIGFuZCB2YWx1ZSBvZiB0aGUgbmV3IHZhbHVlXG4gICAqL1xuICBwdWJsaWMgbW9kZWxDaGFuZ2VkKGNoYW5nZTogYW55KSB7XG5cbiAgICAvLyBmaW5kIHRoZSBjaGFuZ2VkIGVsZW1lbnQgaW4gdGhlIHNjb3BlcyBtb2RlbFxuICAgIGxldCBwcm9wZXJ0eU5hbWUgPSBPYmplY3Qua2V5cyhjaGFuZ2UpWzBdO1xuICAgIGlmIChjaGFuZ2VbcHJvcGVydHlOYW1lXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubW9kZWxbcHJvcGVydHlOYW1lXSkge1xuICAgICAgbGV0IGVsID0gdGhpcy5tb2RlbFtwcm9wZXJ0eU5hbWVdO1xuICAgICAgZWwudXBkYXRlKGNoYW5nZVtwcm9wZXJ0eU5hbWVdLCB0aGlzLm1vZGVsKTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgU2NvcGVFbGVtZW50IHtcbiAgcHJpdmF0ZSBlbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3JpZ2luYWxFbGVtZW50OiBhbnksIHByaXZhdGUgb25TY3JpcHRpbmdNb2RlbENoYW5nZTogRnVuY3Rpb24pIHtcbiAgICB0aGlzLmVsZW1lbnQgPSBjbG9uZURlZXAob3JpZ2luYWxFbGVtZW50KTtcbiAgICBpZiAodGhpcy5lbGVtZW50LnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZWxlbWVudC52YWx1ZSA9IG51bGw7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzUHJveHlhYmxlKHRoaXMuZWxlbWVudC52YWx1ZSkpIHtcbiAgICAgIHRoaXMuZWxlbWVudC52YWx1ZSA9IHRoaXMuY3JlYXRlUHJveHkodGhpcy5lbGVtZW50LnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzUHJveHlhYmxlKHZhbHVlLCBrZXk/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICAmJiB2YWx1ZSAhPT0gbnVsbFxuICAgICAgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpXG4gICAgICAmJiAhdmFsdWUuaXNQcm94eVxuICAgICAgJiYgKGtleSA/ICFrZXkuaW5jbHVkZXMoJ19tZXRhJykgOiB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUHJveHkodmFsdWUpIHtcbiAgICBjb25zdCBoYW5kbGVyID0ge1xuICAgICAgc2V0OiAodGFyZ2V0LCBrZXksIHZhbCkgPT4ge1xuICAgICAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gY2xvbmVEZWVwKHRoaXMuZWxlbWVudC52YWx1ZSk7XG4gICAgICAgIHRhcmdldFtrZXldID0gdmFsO1xuICAgICAgICBpZiAodGhpcy5oYXNWYWx1ZUNoYW5nZWQodGhpcy5lbGVtZW50LnZhbHVlLCBwcmV2aW91c1ZhbHVlKSAmJiAha2V5LmluY2x1ZGVzKCdfbWV0YScpKSB7XG4gICAgICAgICAgdGhpcy5vblNjcmlwdGluZ01vZGVsQ2hhbmdlKHRoaXMuZWxlbWVudC5uYW1lLCB7bmV3VmFsdWU6IGNsb25lRGVlcCh0aGlzLmVsZW1lbnQudmFsdWUpLCBuYW1lOiAndmFsdWUnfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9LFxuICAgICAgLy8gVGhpcyBnZXQgdHJhcCBpcyBvbmx5IHVzZWQgdG8gZmluZCBvdXQsIGlmIGFuIG9iamVjdCBpcyBhIHByb3h5IG9yIG5vdC5cbiAgICAgIGdldDogKHRhcmdldCwga2V5KSA9PiB7XG4gICAgICAgIGlmIChrZXkgPT09ICdpc1Byb3h5Jykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YXJnZXRba2V5XTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBQcm94eSh2YWx1ZSwgaGFuZGxlcik7XG4gIH1cblxuICBwcml2YXRlIGhhc1ZhbHVlQ2hhbmdlZCh2YWx1ZTEsIHZhbHVlMikge1xuICAgIGxldCB2MSA9IHZhbHVlMTtcbiAgICBsZXQgdjIgPSB2YWx1ZTI7XG4gICAgaWYoQXJyYXkuaXNBcnJheSh2YWx1ZTEpICYmIHR5cGVvZiB2YWx1ZTFbMF0gPT09ICdvYmplY3QnICYmIEFycmF5LmlzQXJyYXkodmFsdWUyKSAmJiB0eXBlb2YgdmFsdWUyWzBdID09PSAnb2JqZWN0Jyl7Ly8gdGhpcyBpcyBvbmx5IHRoZSBjYXNlIGluIHRhYmxlc1xuICAgICAgdjEgPSB2YWx1ZTEubWFwKGVudHJ5ID0+IHRoaXMuY3JlYXRlRW50cnlXaXRob3V0TWV0YWRhdGEoZW50cnkpKTsvLyByZW1vdmluZyBtZXRhZGF0YSBmcm9tIGV2ZXJ5IHJvdywgYmVjYXVzZSBpdCdzIGluc2lnbmlmaWNhbnQgZm9yIGNoYW5nZSBkZXRlY3Rpb25cbiAgICAgIHYyID0gdmFsdWUyLm1hcChlbnRyeSA9PiB0aGlzLmNyZWF0ZUVudHJ5V2l0aG91dE1ldGFkYXRhKGVudHJ5KSk7Ly8gYW5kIGNhbiBjYXVzZSBmYWxzZSBcInRydWVcIi1yZXN1bHRzXG4gICAgfVxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2MSkgIT09IEpTT04uc3RyaW5naWZ5KHYyKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRW50cnlXaXRob3V0TWV0YWRhdGEoZW50cnkpe1xuICAgIGxldCBlbnRyeVdpdGhvdXRNZXRhZGF0YSA9IHsuLi5lbnRyeX07XG4gICAgT2JqZWN0LmtleXMoZW50cnlXaXRob3V0TWV0YWRhdGEpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGRlbGV0ZSBlbnRyeVdpdGhvdXRNZXRhZGF0YVtrZXkgKyAnX21ldGEnXTtcbiAgICB9KTtcbiAgICByZXR1cm4gZW50cnlXaXRob3V0TWV0YWRhdGE7XG4gIH1cblxuICB1cGRhdGUodmFsdWUsIG1vZGVsKSB7XG4gICAgY29uc3QgbmV3VmFsdWUgPSBjbG9uZURlZXAodmFsdWUpO1xuICAgIGlmICh0aGlzLmhhc1ZhbHVlQ2hhbmdlZCh0aGlzLmVsZW1lbnQudmFsdWUsIHZhbHVlKSkge1xuICAgICAgaWYgKHRoaXMuaXNQcm94eWFibGUobmV3VmFsdWUpKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudC52YWx1ZSA9IHRoaXMuY3JlYXRlUHJveHkobmV3VmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5lbGVtZW50LnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5lbGVtZW50Lm9uY2hhbmdlKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudC5vbmNoYW5nZSh0aGlzLCBtb2RlbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0IHZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHRoaXMuaXNQcm94eWFibGUodmFsdWUpKSB7XG4gICAgICB0aGlzLmVsZW1lbnQudmFsdWUgPSB0aGlzLmNyZWF0ZVByb3h5KHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIHRoaXMub25TY3JpcHRpbmdNb2RlbENoYW5nZSh0aGlzLmVsZW1lbnQubmFtZSwge25ld1ZhbHVlOiBjbG9uZURlZXAodGhpcy5lbGVtZW50LnZhbHVlKSwgbmFtZTogJ3ZhbHVlJ30pO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnQudmFsdWU7XG4gIH1cblxuICBzZXQgb25jaGFuZ2Uob25jaGFuZ2UpIHtcbiAgICB0aGlzLmVsZW1lbnQub25jaGFuZ2UgPSBvbmNoYW5nZTtcbiAgICB0aGlzLm9uU2NyaXB0aW5nTW9kZWxDaGFuZ2UodGhpcy5lbGVtZW50Lm5hbWUsIHtuZXdWYWx1ZTogb25jaGFuZ2UsIG5hbWU6ICdvbmNoYW5nZSd9KTtcbiAgfVxuXG4gIGdldCBvbmNoYW5nZSgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50Lm9uY2hhbmdlO1xuICB9XG5cbiAgc2V0IHJlcXVpcmVkKHJlcXVpcmVkKSB7XG4gICAgaWYodGhpcy5oYXNWYWx1ZUNoYW5nZWQodGhpcy5lbGVtZW50LnJlcXVpcmVkLCByZXF1aXJlZCkpe1xuICAgICAgdGhpcy5lbGVtZW50LnJlcXVpcmVkID0gcmVxdWlyZWQ7XG4gICAgICB0aGlzLm9uU2NyaXB0aW5nTW9kZWxDaGFuZ2UodGhpcy5lbGVtZW50Lm5hbWUsIHtuZXdWYWx1ZTogcmVxdWlyZWQsIG5hbWU6ICdyZXF1aXJlZCd9KTtcbiAgICB9XG4gIH1cblxuICBnZXQgcmVxdWlyZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudC5yZXF1aXJlZDtcbiAgfVxuXG4gIHNldCByZWFkb25seShyZWFkb25seSkge1xuICAgIHRoaXMuZWxlbWVudC5yZWFkb25seSA9IHJlYWRvbmx5O1xuICAgIHRoaXMub25TY3JpcHRpbmdNb2RlbENoYW5nZSh0aGlzLmVsZW1lbnQubmFtZSwge25ld1ZhbHVlOiByZWFkb25seSwgbmFtZTogJ3JlYWRvbmx5J30pO1xuICB9XG5cbiAgZ2V0IHJlYWRvbmx5KCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnQucmVhZG9ubHk7XG4gIH1cblxuICBzZXQgZXJyb3IoZXJyb3IpIHtcbiAgICBpZih0aGlzLmhhc1ZhbHVlQ2hhbmdlZCh0aGlzLmVsZW1lbnQuZXJyb3IsIGVycm9yKSl7XG4gICAgICB0aGlzLmVsZW1lbnQuZXJyb3IgPSBlcnJvcjtcbiAgICAgIHRoaXMub25TY3JpcHRpbmdNb2RlbENoYW5nZSh0aGlzLmVsZW1lbnQubmFtZSwge25ld1ZhbHVlOiBlcnJvciwgbmFtZTogJ2Vycm9yJ30pO1xuICAgIH1cbiAgfVxuXG4gIGdldCBlcnJvcigpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50LmVycm9yO1xuICB9XG5cbiAgc2V0IG9ucm93ZWRpdChvbnJvd2VkaXQpIHtcbiAgICB0aGlzLmVsZW1lbnQub25yb3dlZGl0ID0gb25yb3dlZGl0O1xuICAgIHRoaXMub25TY3JpcHRpbmdNb2RlbENoYW5nZSh0aGlzLmVsZW1lbnQubmFtZSwge25ld1ZhbHVlOiBvbnJvd2VkaXQsIG5hbWU6ICdvbnJvd2VkaXQnfSk7XG4gIH1cblxuICBnZXQgb25yb3dlZGl0KCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnQub25yb3dlZGl0O1xuICB9XG5cbiAgc2V0IGNvbnRleHRJZChjb250ZXh0SWQpIHtcbiAgICB0aGlzLmVsZW1lbnQuY29udGV4dElkID0gY29udGV4dElkO1xuICAgIHRoaXMub25TY3JpcHRpbmdNb2RlbENoYW5nZSh0aGlzLmVsZW1lbnQubmFtZSwge25ld1ZhbHVlOiBjb250ZXh0SWQsIG5hbWU6ICdjb250ZXh0SWQnfSk7XG4gIH1cblxuICBnZXQgY29udGV4dElkKCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnQuY29udGV4dElkO1xuICB9XG5cbiAgc2V0TGlzdChvYmopIHtcbiAgICBpZiAodGhpcy5vcmlnaW5hbEVsZW1lbnQuc2V0TGlzdCkge1xuICAgICAgdGhpcy5vcmlnaW5hbEVsZW1lbnQuc2V0TGlzdChvYmopO1xuICAgIH1cbiAgfVxuXG4gIGFwcGx5RmlsdGVyKGZ1bmMpIHtcbiAgICBpZiAodGhpcy5vcmlnaW5hbEVsZW1lbnQuYXBwbHlGaWx0ZXIpIHtcbiAgICAgIHRoaXMub3JpZ2luYWxFbGVtZW50LmFwcGx5RmlsdGVyKGZ1bmMpO1xuICAgIH1cbiAgfVxuXG4gIGFwcGx5RGlzYWJsaW5nRmlsdGVyKGZ1bmMpIHtcbiAgICBpZiAodGhpcy5vcmlnaW5hbEVsZW1lbnQuYXBwbHlEaXNhYmxpbmdGaWx0ZXIpIHtcbiAgICAgIHRoaXMub3JpZ2luYWxFbGVtZW50LmFwcGx5RGlzYWJsaW5nRmlsdGVyKGZ1bmMpO1xuICAgIH1cbiAgfVxuXG4gIHNldEZpbHRlcihvYmopIHtcbiAgICBpZiAodGhpcy5vcmlnaW5hbEVsZW1lbnQuc2V0RmlsdGVyKSB7XG4gICAgICB0aGlzLm9yaWdpbmFsRWxlbWVudC5zZXRGaWx0ZXIob2JqKTtcbiAgICB9XG4gIH1cblxuICBzZXRRdWVyeUZpbHRlcnMocXVlcnlGaWx0ZXJzT2JqZWN0OiB7W2ZpZWxkUW5hbWU6IHN0cmluZ106IHtvOiBzdHJpbmcsIHYxOiBhbnksIHYyOiBhbnl9fSwgb2JqZWN0VHlwZXM/OiBzdHJpbmdbXSkge1xuICAgIGlmICh0aGlzLm9yaWdpbmFsRWxlbWVudC5zZXRRdWVyeUZpbHRlcnMpIHtcbiAgICAgIHRoaXMub3JpZ2luYWxFbGVtZW50LnNldFF1ZXJ5RmlsdGVycyhxdWVyeUZpbHRlcnNPYmplY3QsIG9iamVjdFR5cGVzKTtcbiAgICB9XG4gIH1cblxuICBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50Lm5hbWU7XG4gIH1cblxuICBnZXQgcW5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudC5xbmFtZTtcbiAgfVxuXG4gIGdldCBsYWJlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50LmxhYmVsO1xuICB9XG5cbiAgc2V0IGRlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKSB7XG4gICAgdGhpcy5lbGVtZW50LmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XG4gICAgdGhpcy5vblNjcmlwdGluZ01vZGVsQ2hhbmdlKHRoaXMuZWxlbWVudC5uYW1lLCB7bmV3VmFsdWU6IGRlc2NyaXB0aW9uLCBuYW1lOiAnZGVzY3JpcHRpb24nfSk7XG4gIH1cblxuICBnZXQgZGVzY3JpcHRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudC5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnQudHlwZTtcbiAgfVxuXG4gIGdldCBtdWx0aXNlbGVjdCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50Lm11bHRpc2VsZWN0O1xuICB9XG5cbiAgZ2V0IGNvZGVzeXN0ZW0oKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudC5jb2Rlc3lzdGVtO1xuICB9XG5cbiAgZ2V0IG1pbmxlbigpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50Lm1pbmxlbjtcbiAgfVxuXG4gIGdldCBtYXhsZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudC5tYXhsZW47XG4gIH1cblxuICBnZXQgY2xhc3NpZmljYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudC5jbGFzc2lmaWNhdGlvbjtcbiAgfVxuXG4gIGdldCBzY2FsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50LnNjYWxlO1xuICB9XG5cbiAgZ2V0IHByZWNpc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50LnByZWNpc2lvbjtcbiAgfVxuXG4gIGdldCB3aXRodGltZSgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50LndpdGh0aW1lO1xuICB9XG5cbiAgZ2V0IGVsZW1lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnQuZWxlbWVudHM7XG4gIH1cblxuICBnZXQgYWxpYXNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50LmFsaWFzZXM7XG4gIH1cbn1cbiJdfQ==
|