@openziti/ziti-console-lib 0.6.2 → 0.6.4
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/assets/fonts/zac.eot +0 -0
- package/assets/fonts/zac.svg +3 -1
- package/assets/fonts/zac.ttf +0 -0
- package/assets/fonts/zac.woff +0 -0
- package/assets/fonts/zac.woff2 +0 -0
- package/assets/styles/global.scss +129 -5
- package/assets/styles/icons.css +3 -0
- package/assets/styles/ziti.css +2 -2
- package/esm2022/lib/features/config-editor/config-editor.component.mjs +76 -15
- package/esm2022/lib/features/confirm/confirm.component.mjs +22 -5
- package/esm2022/lib/features/creation-summary-dialog/creation-summary-dialog.component.mjs +1 -1
- package/esm2022/lib/features/data-table/cells/table-cell-name/table-cell-name.component.mjs +2 -2
- package/esm2022/lib/features/data-table/data-table-filter.service.mjs +3 -1
- package/esm2022/lib/features/data-table/table-filter-bar/filter-bar.component.mjs +9 -3
- package/esm2022/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.mjs +7 -3
- package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.mjs +22 -1
- package/esm2022/lib/features/dynamic-widgets/number/number-input.component.mjs +10 -9
- package/esm2022/lib/features/dynamic-widgets/object/object.component.mjs +2 -2
- package/esm2022/lib/features/dynamic-widgets/port-ranges/port-ranges.component.mjs +4 -1
- package/esm2022/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.mjs +27 -5
- package/esm2022/lib/features/dynamic-widgets/selector/selector-input.component.mjs +21 -13
- package/esm2022/lib/features/dynamic-widgets/string/string-input.component.mjs +9 -5
- package/esm2022/lib/features/dynamic-widgets/text-list/text-list-input.component.mjs +9 -5
- package/esm2022/lib/features/json-view/json-view.component.mjs +3 -3
- package/esm2022/lib/features/messaging/growler.component.mjs +4 -4
- package/esm2022/lib/features/preview-list/preview-list.component.mjs +17 -11
- package/esm2022/lib/features/preview-selections/preview-selections.component.mjs +115 -0
- package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +33 -4
- package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/form-field-container/form-field-container.component.mjs +6 -3
- package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +8 -5
- package/esm2022/lib/features/projectable-forms/service/service-form.service.mjs +2 -4
- package/esm2022/lib/features/projectable-forms/service/simple-service/simple-service.component.mjs +2 -2
- package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.service.mjs +4 -3
- package/esm2022/lib/features/projectable-forms/terminator/terminator-form.component.mjs +1 -1
- package/esm2022/lib/features/qr-code/qr-code.component.mjs +4 -1
- package/esm2022/lib/features/sidebars/side-toolbar/side-toolbar.component.mjs +2 -1
- package/esm2022/lib/features/wrappers/zac-wrapper.service.mjs +8 -1
- package/esm2022/lib/pages/auth-policies/auth-policies-page.component.mjs +7 -1
- package/esm2022/lib/pages/auth-policies/auth-policies-page.service.mjs +9 -2
- package/esm2022/lib/pages/configurations/configurations-page.component.mjs +7 -1
- package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.component.mjs +2 -2
- package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.service.mjs +2 -17
- package/esm2022/lib/pages/edge-routers/edge-routers-page.component.mjs +2 -2
- package/esm2022/lib/pages/edge-routers/edge-routers-page.service.mjs +23 -33
- package/esm2022/lib/pages/identities/identities-page.component.mjs +4 -4
- package/esm2022/lib/pages/identities/identities-page.service.mjs +19 -30
- package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.mjs +2 -2
- package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.mjs +3 -18
- package/esm2022/lib/pages/service-policies/service-policies-page.component.mjs +2 -3
- package/esm2022/lib/pages/service-policies/service-policies-page.service.mjs +2 -17
- package/esm2022/lib/pages/services/services-page.component.mjs +104 -12
- package/esm2022/lib/pages/services/services-page.service.mjs +143 -24
- package/esm2022/lib/services/node-data.service.mjs +6 -2
- package/esm2022/lib/services/settings-service.class.mjs +2 -1
- package/esm2022/lib/services/settings.service.mjs +2 -1
- package/esm2022/lib/shared/list-page-component.class.mjs +21 -6
- package/esm2022/lib/shared/list-page-service.class.mjs +26 -5
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/lib/ziti-console-lib.module.mjs +6 -3
- package/fesm2022/openziti-ziti-console-lib.mjs +1449 -951
- package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
- package/lib/features/config-editor/config-editor.component.d.ts +7 -3
- package/lib/features/config-editor/config-editor.component.d.ts.map +1 -1
- package/lib/features/confirm/confirm.component.d.ts +9 -0
- package/lib/features/confirm/confirm.component.d.ts.map +1 -1
- package/lib/features/data-table/data-table-filter.service.d.ts +1 -0
- package/lib/features/data-table/data-table-filter.service.d.ts.map +1 -1
- package/lib/features/data-table/table-filter-bar/filter-bar.component.d.ts +1 -0
- package/lib/features/data-table/table-filter-bar/filter-bar.component.d.ts.map +1 -1
- package/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.d.ts +2 -0
- package/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.d.ts.map +1 -1
- package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.d.ts +5 -0
- package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.d.ts.map +1 -1
- package/lib/features/dynamic-widgets/number/number-input.component.d.ts +2 -0
- package/lib/features/dynamic-widgets/number/number-input.component.d.ts.map +1 -1
- package/lib/features/dynamic-widgets/port-ranges/port-ranges.component.d.ts +1 -0
- package/lib/features/dynamic-widgets/port-ranges/port-ranges.component.d.ts.map +1 -1
- package/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.d.ts +8 -6
- package/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.d.ts.map +1 -1
- package/lib/features/dynamic-widgets/selector/selector-input.component.d.ts +2 -0
- package/lib/features/dynamic-widgets/selector/selector-input.component.d.ts.map +1 -1
- package/lib/features/dynamic-widgets/string/string-input.component.d.ts +2 -0
- package/lib/features/dynamic-widgets/string/string-input.component.d.ts.map +1 -1
- package/lib/features/dynamic-widgets/text-list/text-list-input.component.d.ts +2 -0
- package/lib/features/dynamic-widgets/text-list/text-list-input.component.d.ts.map +1 -1
- package/lib/features/json-view/json-view.component.d.ts +2 -2
- package/lib/features/json-view/json-view.component.d.ts.map +1 -1
- package/lib/features/preview-list/preview-list.component.d.ts +1 -0
- package/lib/features/preview-list/preview-list.component.d.ts.map +1 -1
- package/lib/features/preview-selections/preview-selections.component.d.ts +39 -0
- package/lib/features/preview-selections/preview-selections.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts +3 -0
- package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/form-field-container/form-field-container.component.d.ts +2 -1
- package/lib/features/projectable-forms/form-field-container/form-field-container.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/service/service-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/service/service-form.service.d.ts.map +1 -1
- package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts +1 -1
- package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts.map +1 -1
- package/lib/features/qr-code/qr-code.component.d.ts.map +1 -1
- package/lib/features/sidebars/side-toolbar/side-toolbar.component.d.ts.map +1 -1
- package/lib/features/wrappers/zac-wrapper.service.d.ts.map +1 -1
- package/lib/pages/auth-policies/auth-policies-page.component.d.ts.map +1 -1
- package/lib/pages/auth-policies/auth-policies-page.service.d.ts +1 -1
- package/lib/pages/auth-policies/auth-policies-page.service.d.ts.map +1 -1
- package/lib/pages/configurations/configurations-page.component.d.ts.map +1 -1
- package/lib/pages/edge-router-policies/edge-router-policies-page.service.d.ts +0 -2
- package/lib/pages/edge-router-policies/edge-router-policies-page.service.d.ts.map +1 -1
- package/lib/pages/edge-routers/edge-routers-page.service.d.ts +5 -3
- package/lib/pages/edge-routers/edge-routers-page.service.d.ts.map +1 -1
- package/lib/pages/identities/identities-page.service.d.ts +4 -2
- package/lib/pages/identities/identities-page.service.d.ts.map +1 -1
- package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.d.ts +0 -2
- package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.d.ts.map +1 -1
- package/lib/pages/service-policies/service-policies-page.component.d.ts.map +1 -1
- package/lib/pages/service-policies/service-policies-page.service.d.ts +0 -2
- package/lib/pages/service-policies/service-policies-page.service.d.ts.map +1 -1
- package/lib/pages/services/services-page.component.d.ts +9 -1
- package/lib/pages/services/services-page.component.d.ts.map +1 -1
- package/lib/pages/services/services-page.service.d.ts +19 -3
- package/lib/pages/services/services-page.service.d.ts.map +1 -1
- package/lib/services/node-data.service.d.ts.map +1 -1
- package/lib/services/settings-service.class.d.ts +1 -0
- package/lib/services/settings-service.class.d.ts.map +1 -1
- package/lib/services/settings.service.d.ts.map +1 -1
- package/lib/shared/list-page-component.class.d.ts +2 -1
- package/lib/shared/list-page-component.class.d.ts.map +1 -1
- package/lib/shared/list-page-service.class.d.ts +6 -0
- package/lib/shared/list-page-service.class.d.ts.map +1 -1
- package/lib/ziti-console-lib.module.d.ts +19 -18
- package/lib/ziti-console-lib.module.d.ts.map +1 -1
- package/package.json +1 -1
package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.component.mjs
CHANGED
|
@@ -252,7 +252,7 @@ class ServicePolicyFormComponent extends ProjectableForm {
|
|
|
252
252
|
provide: MatDialogRef,
|
|
253
253
|
useValue: {}
|
|
254
254
|
}
|
|
255
|
-
], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n>\n <lib-form-header\n [data]=\"formData\"\n [title]=\"formData.id ? 'Edit Service Policy: ' : 'Create New Service Policy'\"\n [moreActions]=\"moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n ></lib-form-header>\n <div class=\"service-policy-form-container projectable-form-container\">\n <div class=\"projectable-form-main-column form-group-row\" *ngIf=\"formView === 'simple'\">\n <div class=\"form-group-column three-fifths\">\n <lib-form-field-container [title]=\"'Service Policy Name'\" [label]=\"'REQUIRED'\">\n <input\n class=\"form-field-input\"\n placeholder=\"Name this edge service policy\"\n [ngClass]=\"{error: errors['name']}\"\n [(ngModel)]=\"formData.name\"\n autofocus\n #nameFieldInput\n />\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select Service Attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 100003'\"\n [helpText]=\"'Choose which services to associate to this policy by picking from the list of available attributes'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"selectedServiceRoleAttributes\"\n [(selectedNamedAttributes)]=\"selectedServiceNamedAttributes\"\n [availableRoleAttributes]=\"svc.serviceRoleAttributes\"\n [availableNamedAttributes]=\"svc.serviceNamedAttributes\"\n (selectedNamedAttributesChange)=\"svc.getAssociatedServicesByAttribute(selectedServiceRoleAttributes, selectedServiceNamedAttributes)\"\n (selectedRoleAttributesChange)=\"svc.getAssociatedServicesByAttribute(selectedServiceRoleAttributes, selectedServiceNamedAttributes)\"\n [placeholder]=\"'Select service attributes'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select Identity Attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 100002'\"\n [helpText]=\"'Choose which identities to associate to this policy by picking from the list of available attributes'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"selectedIdentityRoleAttributes\"\n [(selectedNamedAttributes)]=\"selectedIdentityNamedAttributes\"\n [availableRoleAttributes]=\"svc.identityRoleAttributes\"\n [availableNamedAttributes]=\"svc.identityNamedAttributes\"\n (selectedNamedAttributesChange)=\"svc.getAssociatedIdentitiesByAttribute(selectedIdentityRoleAttributes, selectedIdentityNamedAttributes)\"\n (selectedRoleAttributesChange)=\"svc.getAssociatedIdentitiesByAttribute(selectedIdentityRoleAttributes, selectedIdentityNamedAttributes)\"\n [placeholder]=\"'Select identity attributes'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select Posture Check Attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 100001'\"\n [helpText]=\"'Choose which posture checks to associate to this policy by picking from the list of available attributes'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"selectedPostureRoleAttributes\"\n [(selectedNamedAttributes)]=\"selectedPostureNamedAttributes\"\n [(selectedRoleAttributes)]=\"svc.postureRoleAttributes\"\n [availableNamedAttributes]=\"svc.postureNamedAttributes\"\n (selectedNamedAttributesChange)=\"svc.getAssociatedPostureChecksByAttribute(selectedPostureRoleAttributes, selectedPostureNamedAttributes)\"\n (selectedRoleAttributesChange)=\"svc.getAssociatedPostureChecksByAttribute(selectedPostureRoleAttributes, selectedPostureNamedAttributes)\"\n [placeholder]=\"'Select posture check attributes'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Type'\"\n [title2]=\"'Semantic'\"\n [layout]=\"'row'\"\n >\n <select\n [(ngModel)]=\"formData.type\"\n id=\"PolicyType\"\n class=\"form-field-dropdown\"\n >\n <option value=\"Bind\">Bind</option>\n <option value=\"Dial\">Dial</option>\n </select>\n <select\n [(ngModel)]=\"formData.semantic\"\n id=\"PolicySemantic\"\n class=\"form-field-dropdown\"\n >\n <option value=\"AnyOf\">AnyOf</option>\n <option value=\"AllOf\">AllOf</option>\n </select>\n </lib-form-field-container>\n <lib-form-field-toggle [(toggleOn)]=\"showMore\" (toggleOnChange)=\"showMoreChanged($event)\" style=\"margin: 0px 10px\"></lib-form-field-toggle>\n <div [hidden]=\"!showMore\" class=\"form-group-column\">\n <lib-form-field-container\n [title]=\"'Custom Tags'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n *ngIf=\"!hideTags\"\n >\n <lib-custom-tags [(tags)]=\"formData.tags\"></lib-custom-tags>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column two-fifths\">\n <lib-form-field-container\n [title]=\"'Associated Services'\"\n [count]=\"svc.associatedServiceNames.length\"\n [class]=\"'hide-overflow'\"\n [helpText]=\"'Preview list of all services that this Service Policy is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"servicesLoading\"\n [allNames]=\"svc.associatedServiceNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Associated Identities'\"\n [count]=\"svc.associatedIdentityNames.length\"\n [helpText]=\"'Preview list of all Identities that this Service Policy is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"identitiesLoading\"\n [allNames]=\"svc.associatedIdentityNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Associated Posture Checks'\"\n [count]=\"svc.associatedPostureCheckNames.length\"\n [helpText]=\"'Preview list of all Posture Checks that this Service Policy is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"postureChecksLoading\"\n [allNames]=\"svc.associatedPostureCheckNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'API Calls'\"\n [headerActions]=\"apiOptions\"\n (actionRequested)=\"apiActionRequested($event)\"\n >\n <div class=\"form-row\">\n <input class=\"form-field-input\" [value]=\"apiCallURL\"/>\n <div class=\"icon-copy copy\" (click)=\"copyToClipboard(apiCallURL)\"></div>\n </div>\n <lib-json-view *ngIf=\"formData\" [(data)]=\"apiData\" [readOnly]=\"true\" [showCopy]=\"true\"></lib-json-view>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column\" *ngIf=\"formView === 'raw'\">\n <lib-json-view *ngIf=\"formData\" [(data)]=\"formData\"></lib-json-view>\n </div>\n </div>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>", styles: [""], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.FormHeaderComponent, selector: "lib-form-header", inputs: ["data", "title", "moreActions", "formView", "saveDisabled", "saveTooltip", "actionButtonText", "moreActionsText"], outputs: ["formViewChange", "actionRequested"] }, { kind: "component", type: i7.FormFieldContainerComponent, selector: "lib-form-field-container", inputs: ["title", "title2", "layout", "helpText", "helpText2", "label", "count", "action", "actionLabel", "class", "contentStyle", "showHeader", "headerActions"], outputs: ["actionRequested"] }, { kind: "component", type: i8.PreviewListComponent, selector: "lib-preview-list", inputs: ["label", "clickable", "isLoading", "allNames", "items", "allowRemove", "tooltip", "showfilter"], outputs: ["itemSelected", "itemRemoved"] }, { kind: "component", type: i9.LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }, { kind: "component", type: i10.FormFieldToggleComponent, selector: "lib-form-field-toggle", inputs: ["label", "orientation", "labelOn", "labelOff", "toggleOn"], outputs: ["toggleOnChange"] }, { kind: "component", type: i11.JsonViewComponent, selector: "lib-json-view", inputs: ["data", "schema", "readOnly", "jsonInvalid", "showCopy"], outputs: ["dataChange", "jsonChange", "jsonInvalidChange"] }, { kind: "component", type: i12.TagSelectorComponent, selector: "lib-tag-selector", inputs: ["placeholder", "disableField", "disableCreate", "hideOption", "isLoading", "errorMessage", "focusOnInit", "selectedRoleAttributes", "selectedNamedAttributes", "hasError", "availableRoleAttributes", "availableNamedAttributes"], outputs: ["addRoleAttribute", "addNamedAttribute", "roleAttributeRemoved", "namedAttributeRemoved", "selectedRoleAttributesChange", "selectedNamedAttributesChange", "filterChange"] }, { kind: "component", type: i13.CustomTagsComponent, selector: "lib-custom-tags", inputs: ["tags"], outputs: ["tagsChange"] }] }); }
|
|
255
|
+
], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n>\n <lib-form-header\n [data]=\"formData\"\n [title]=\"formData.id ? 'Edit Service Policy: ' : 'Create New Service Policy'\"\n [moreActions]=\"moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n ></lib-form-header>\n <div class=\"service-policy-form-container projectable-form-container\">\n <div class=\"projectable-form-main-column form-group-row\" *ngIf=\"formView === 'simple'\">\n <div class=\"form-group-column three-fifths\">\n <lib-form-field-container [title]=\"'Service Policy Name'\" [label]=\"'REQUIRED'\">\n <input\n class=\"form-field-input\"\n placeholder=\"Name this edge service policy\"\n [ngClass]=\"{error: errors['name']}\"\n [(ngModel)]=\"formData.name\"\n autofocus\n #nameFieldInput\n />\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select Service Attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 100003'\"\n [helpText]=\"'Choose which services to associate to this policy by picking from the list of available attributes'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"selectedServiceRoleAttributes\"\n [(selectedNamedAttributes)]=\"selectedServiceNamedAttributes\"\n [availableRoleAttributes]=\"svc.serviceRoleAttributes\"\n [availableNamedAttributes]=\"svc.serviceNamedAttributes\"\n (selectedNamedAttributesChange)=\"svc.getAssociatedServicesByAttribute(selectedServiceRoleAttributes, selectedServiceNamedAttributes)\"\n (selectedRoleAttributesChange)=\"svc.getAssociatedServicesByAttribute(selectedServiceRoleAttributes, selectedServiceNamedAttributes)\"\n [placeholder]=\"'Select service attributes'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select Identity Attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 100002'\"\n [helpText]=\"'Choose which identities to associate to this policy by picking from the list of available attributes'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"selectedIdentityRoleAttributes\"\n [(selectedNamedAttributes)]=\"selectedIdentityNamedAttributes\"\n [availableRoleAttributes]=\"svc.identityRoleAttributes\"\n [availableNamedAttributes]=\"svc.identityNamedAttributes\"\n (selectedNamedAttributesChange)=\"svc.getAssociatedIdentitiesByAttribute(selectedIdentityRoleAttributes, selectedIdentityNamedAttributes)\"\n (selectedRoleAttributesChange)=\"svc.getAssociatedIdentitiesByAttribute(selectedIdentityRoleAttributes, selectedIdentityNamedAttributes)\"\n [placeholder]=\"'Select identity attributes'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select Posture Check Attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 100001'\"\n [helpText]=\"'Choose which posture checks to associate to this policy by picking from the list of available attributes'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"selectedPostureRoleAttributes\"\n [(selectedNamedAttributes)]=\"selectedPostureNamedAttributes\"\n [(selectedRoleAttributes)]=\"svc.postureRoleAttributes\"\n [availableNamedAttributes]=\"svc.postureNamedAttributes\"\n (selectedNamedAttributesChange)=\"svc.getAssociatedPostureChecksByAttribute(selectedPostureRoleAttributes, selectedPostureNamedAttributes)\"\n (selectedRoleAttributesChange)=\"svc.getAssociatedPostureChecksByAttribute(selectedPostureRoleAttributes, selectedPostureNamedAttributes)\"\n [placeholder]=\"'Select posture check attributes'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Type'\"\n [title2]=\"'Semantic'\"\n [layout]=\"'row'\"\n >\n <select\n [(ngModel)]=\"formData.type\"\n id=\"PolicyType\"\n class=\"form-field-dropdown\"\n >\n <option value=\"Bind\">Bind</option>\n <option value=\"Dial\">Dial</option>\n </select>\n <select\n [(ngModel)]=\"formData.semantic\"\n id=\"PolicySemantic\"\n class=\"form-field-dropdown\"\n >\n <option value=\"AnyOf\">AnyOf</option>\n <option value=\"AllOf\">AllOf</option>\n </select>\n </lib-form-field-container>\n <lib-form-field-toggle [(toggleOn)]=\"showMore\" (toggleOnChange)=\"showMoreChanged($event)\" style=\"margin: 0px 10px\"></lib-form-field-toggle>\n <div [hidden]=\"!showMore\" class=\"form-group-column\">\n <lib-form-field-container\n [title]=\"'Custom Tags'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n *ngIf=\"!hideTags\"\n >\n <lib-custom-tags [(tags)]=\"formData.tags\"></lib-custom-tags>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column two-fifths\">\n <lib-form-field-container\n [title]=\"'Associated Services'\"\n [count]=\"svc.associatedServiceNames.length\"\n [class]=\"'hide-overflow'\"\n [helpText]=\"'Preview list of all services that this Service Policy is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"servicesLoading\"\n [allNames]=\"svc.associatedServiceNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Associated Identities'\"\n [count]=\"svc.associatedIdentityNames.length\"\n [helpText]=\"'Preview list of all Identities that this Service Policy is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"identitiesLoading\"\n [allNames]=\"svc.associatedIdentityNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Associated Posture Checks'\"\n [count]=\"svc.associatedPostureCheckNames.length\"\n [helpText]=\"'Preview list of all Posture Checks that this Service Policy is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"postureChecksLoading\"\n [allNames]=\"svc.associatedPostureCheckNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'API Calls'\"\n [headerActions]=\"apiOptions\"\n (actionRequested)=\"apiActionRequested($event)\"\n >\n <div class=\"form-row\">\n <input class=\"form-field-input\" [value]=\"apiCallURL\"/>\n <div class=\"icon-copy copy\" (click)=\"copyToClipboard(apiCallURL)\"></div>\n </div>\n <lib-json-view *ngIf=\"formData\" [(data)]=\"apiData\" [readOnly]=\"true\" [showCopy]=\"true\"></lib-json-view>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column\" *ngIf=\"formView === 'raw'\">\n <lib-json-view *ngIf=\"formData\" [(data)]=\"formData\"></lib-json-view>\n </div>\n </div>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>", styles: [""], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.FormHeaderComponent, selector: "lib-form-header", inputs: ["data", "title", "moreActions", "formView", "saveDisabled", "saveTooltip", "actionButtonText", "moreActionsText"], outputs: ["formViewChange", "actionRequested"] }, { kind: "component", type: i7.FormFieldContainerComponent, selector: "lib-form-field-container", inputs: ["title", "title2", "titleIcon", "layout", "helpText", "helpText2", "label", "count", "action", "actionLabel", "class", "contentStyle", "showHeader", "headerActions"], outputs: ["actionRequested"] }, { kind: "component", type: i8.PreviewListComponent, selector: "lib-preview-list", inputs: ["label", "clickable", "isLoading", "allNames", "items", "allowRemove", "tooltip", "showfilter"], outputs: ["itemSelected", "itemRemoved"] }, { kind: "component", type: i9.LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }, { kind: "component", type: i10.FormFieldToggleComponent, selector: "lib-form-field-toggle", inputs: ["label", "orientation", "labelOn", "labelOff", "toggleOn"], outputs: ["toggleOnChange"] }, { kind: "component", type: i11.JsonViewComponent, selector: "lib-json-view", inputs: ["data", "schema", "readOnly", "jsonInvalid", "showCopy"], outputs: ["dataChange", "jsonChange", "jsonInvalidChange"] }, { kind: "component", type: i12.TagSelectorComponent, selector: "lib-tag-selector", inputs: ["placeholder", "disableField", "disableCreate", "hideOption", "isLoading", "errorMessage", "focusOnInit", "selectedRoleAttributes", "selectedNamedAttributes", "hasError", "availableRoleAttributes", "availableNamedAttributes"], outputs: ["addRoleAttribute", "addNamedAttribute", "roleAttributeRemoved", "namedAttributeRemoved", "selectedRoleAttributesChange", "selectedNamedAttributesChange", "filterChange"] }, { kind: "component", type: i13.CustomTagsComponent, selector: "lib-custom-tags", inputs: ["tags"], outputs: ["tagsChange"] }] }); }
|
|
256
256
|
}
|
|
257
257
|
export { ServicePolicyFormComponent };
|
|
258
258
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ServicePolicyFormComponent, decorators: [{
|
package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.service.mjs
CHANGED
|
@@ -99,18 +99,19 @@ class ServicePolicyFormService {
|
|
|
99
99
|
this.associatedServiceNames = [];
|
|
100
100
|
if (isEmpty(roleAttributes)) {
|
|
101
101
|
this.associatedServiceNames = [...namedAttributes];
|
|
102
|
-
return;
|
|
102
|
+
return Promise.resolve([]);
|
|
103
103
|
}
|
|
104
104
|
const filters = this.zitiService.getRoleFilter(roleAttributes);
|
|
105
105
|
const paging = this.zitiService.DEFAULT_PAGING;
|
|
106
106
|
paging.noSearch = false;
|
|
107
|
-
this.zitiService.get('services', paging, filters).then((result) => {
|
|
107
|
+
return this.zitiService.get('services', paging, filters).then((result) => {
|
|
108
108
|
this.associatedServices = result.data;
|
|
109
109
|
this.associatedServiceNames = this.associatedServices.map((svc) => {
|
|
110
110
|
return svc.name;
|
|
111
111
|
});
|
|
112
112
|
this.associatedServiceNames = [...this.associatedServiceNames, ...namedAttributes];
|
|
113
113
|
this.associatedServiceNames = sortedUniq(this.associatedServiceNames);
|
|
114
|
+
return this.associatedServices;
|
|
114
115
|
});
|
|
115
116
|
}
|
|
116
117
|
getAssociatedIdentitiesByAttribute(roleAttributes, namedAttributes) {
|
|
@@ -235,4 +236,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
235
236
|
type: Inject,
|
|
236
237
|
args: [SERVICE_POLICY_EXTENSION_SERVICE]
|
|
237
238
|
}] }]; } });
|
|
238
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1wb2xpY3ktZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL3Byb2plY3RhYmxlLWZvcm1zL3NlcnZpY2UtcG9saWN5L3NlcnZpY2UtcG9saWN5LWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFDLE9BQU8sRUFBUyxJQUFJLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUMsT0FBTyxFQUFDLGlCQUFpQixFQUFrQixNQUFNLHFDQUFxQyxDQUFDO0FBRXZGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQWtCLE1BQU0sb0NBQW9DLENBQUM7QUFHckYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUVsQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7Ozs7O0FBRTdELE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLElBQUksY0FBYyxDQUFNLGtDQUFrQyxDQUFDLENBQUM7QUFFNUcsTUFHYSx3QkFBd0I7SUFxQmpDLFlBQ3FDLGVBQWdDLEVBQzlCLFdBQTRCLEVBQ3ZELGNBQThCLEVBQ1csVUFBNEI7UUFINUMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQzlCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUN2RCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDVyxlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQXZCakYseUJBQW9CLEdBQVEsRUFBRSxDQUFDO1FBQy9CLDRCQUF1QixHQUFRLEVBQUUsQ0FBQztRQUNsQyw0QkFBdUIsR0FBUSxFQUFFLENBQUM7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RTtZQUNsRSxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO2dCQUNyRCxJQUFJLENBQUMseUJBQXlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQ3BFLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxzQkFBc0IsR0FBRyxlQUFlLENBQUM7WUFDOUMsT0FBTyxlQUFlLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQTdPUSx3QkFBd0Isa0JBc0JyQixnQkFBZ0IsYUFDaEIsaUJBQWlCLDJDQUVqQixnQ0FBZ0M7bUhBekJuQyx3QkFBd0IsY0FGckIsTUFBTTs7U0FFVCx3QkFBd0I7NEZBQXhCLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQXVCUSxNQUFNOzJCQUFDLGdCQUFnQjs7MEJBQ3ZCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFFeEIsTUFBTTsyQkFBQyxnQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIEluamVjdCwgSW5qZWN0aW9uVG9rZW59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge2lzRW1wdHksIHVuc2V0LCBrZXlzfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtaSVRJX0RBVEFfU0VSVklDRSwgWml0aURhdGFTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMveml0aS1kYXRhLnNlcnZpY2VcIjtcbmltcG9ydCB7R3Jvd2xlclNlcnZpY2V9IGZyb20gXCIuLi8uLi9tZXNzYWdpbmcvZ3Jvd2xlci5zZXJ2aWNlXCI7XG5pbXBvcnQge0dyb3dsZXJNb2RlbH0gZnJvbSBcIi4uLy4uL21lc3NhZ2luZy9ncm93bGVyLm1vZGVsXCI7XG5pbXBvcnQge1NFVFRJTkdTX1NFUlZJQ0UsIFNldHRpbmdzU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3NldHRpbmdzLnNlcnZpY2VcIjtcbmltcG9ydCB7RXh0ZW5zaW9uU2VydmljZX0gZnJvbSBcIi4uLy4uL2V4dGVuZGFibGUvZXh0ZW5zaW9ucy1ub29wLnNlcnZpY2VcIjtcblxuaW1wb3J0IHtzb3J0ZWRVbmlxfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQge1NlcnZpY2VQb2xpY3l9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvc2VydmljZS1wb2xpY3lcIjtcblxuZXhwb3J0IGNvbnN0IFNFUlZJQ0VfUE9MSUNZX0VYVEVOU0lPTl9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPGFueT4oJ1NFUlZJQ0VfUE9MSUNZX0VYVEVOU0lPTl9TRVJWSUNFJyk7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU2VydmljZVBvbGljeUZvcm1TZXJ2aWNlIHtcblxuICAgIGFzc29jaWF0ZWRJZGVudGl0aWVzOiBhbnkgPSBbXTtcbiAgICBhc3NvY2lhdGVkSWRlbnRpdHlOYW1lczogYW55ID0gW107XG4gICAgYXNzb2NpYXRlZFBvc3R1cmVDaGVja3M6IGFueSA9IFtdO1xuICAgIGFzc29jaWF0ZWRQb3N0dXJlQ2hlY2tOYW1lczogYW55ID0gW107XG4gICAgYXNzb2NpYXRlZFNlcnZpY2VzOiBhbnkgPSBbXTtcbiAgICBhc3NvY2lhdGVkU2VydmljZU5hbWVzOiBhbnkgPSBbXTtcblxuICAgIHNlcnZpY2VOYW1lZEF0dHJpYnV0ZXNNYXA6IGFueSA9IHt9O1xuICAgIGlkZW50aXR5TmFtZWRBdHRyaWJ1dGVzTWFwOiBhbnkgPSB7fTtcbiAgICBwb3N0dXJlTmFtZWRBdHRyaWJ1dGVzTWFwOiBhbnkgPSB7fTtcblxuICAgIGlkZW50aXR5TmFtZWRBdHRyaWJ1dGVzOiBhbnkgPSBbXTtcbiAgICBzZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzOiBhbnkgPSBbXTtcbiAgICBwb3N0dXJlTmFtZWRBdHRyaWJ1dGVzOiBhbnkgPSBbXTtcblxuICAgIHNlcnZpY2VSb2xlQXR0cmlidXRlczogYW55ID0gW107XG4gICAgaWRlbnRpdHlSb2xlQXR0cmlidXRlczogYW55ID0gW107XG4gICAgcG9zdHVyZVJvbGVBdHRyaWJ1dGVzOiBhbnkgPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFNFVFRJTkdTX1NFUlZJQ0UpIHB1YmxpYyBzZXR0aW5nc1NlcnZpY2U6IFNldHRpbmdzU2VydmljZSxcbiAgICAgICAgQEluamVjdChaSVRJX0RBVEFfU0VSVklDRSkgcHJpdmF0ZSB6aXRpU2VydmljZTogWml0aURhdGFTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGdyb3dsZXJTZXJ2aWNlOiBHcm93bGVyU2VydmljZSxcbiAgICAgICAgQEluamVjdChTRVJWSUNFX1BPTElDWV9FWFRFTlNJT05fU0VSVklDRSlwcml2YXRlIGV4dFNlcnZpY2U6IEV4dGVuc2lvblNlcnZpY2VcbiAgICApIHt9XG5cbiAgICBzYXZlKGZvcm1EYXRhKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgY29uc3QgaXNVcGRhdGUgPSAhaXNFbXB0eShmb3JtRGF0YS5pZCk7XG4gICAgICAgIGNvbnN0IGRhdGE6IGFueSA9IHRoaXMuZ2V0U2VydmljZVBvbGljeURhdGFNb2RlbChmb3JtRGF0YSwgaXNVcGRhdGUpO1xuICAgICAgICBjb25zdCBzdmMgPSBpc1VwZGF0ZSA/IHRoaXMueml0aVNlcnZpY2UucGF0Y2guYmluZCh0aGlzLnppdGlTZXJ2aWNlKSA6IHRoaXMueml0aVNlcnZpY2UucG9zdC5iaW5kKHRoaXMueml0aVNlcnZpY2UpO1xuICAgICAgICByZXR1cm4gc3ZjKCdzZXJ2aWNlLXBvbGljaWVzJywgZGF0YSwgZm9ybURhdGEuaWQpLnRoZW4oYXN5bmMgKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpZCA9IHJlc3VsdD8uZGF0YT8uaWQgfHwgZm9ybURhdGEuaWQ7XG4gICAgICAgICAgICBsZXQgcm91dGVyID0gYXdhaXQgdGhpcy56aXRpU2VydmljZS5nZXRTdWJkYXRhKCdzZXJ2aWNlLXBvbGljaWVzJywgaWQsICcnKS50aGVuKChyb3V0ZXJEYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvdXRlckRhdGEuZGF0YTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXh0U2VydmljZS5mb3JtRGF0YVNhdmVkKHJvdXRlcikudGhlbigoZm9ybVNhdmVkUmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXR1cm5WYWwgPSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHJvdXRlcixcbiAgICAgICAgICAgICAgICAgICAgY2xvc2U6IHRoaXMuZXh0U2VydmljZS5jbG9zZUFmdGVyU2F2ZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICAgICAgICAgICAnc3VjY2VzcycsXG4gICAgICAgICAgICAgICAgICAgICdTdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgYFNlcnZpY2UgUG9saWN5ICR7aXNVcGRhdGUgPyAnVXBkYXRlZCcgOiAnQ3JlYXRlZCd9YCxcbiAgICAgICAgICAgICAgICAgICAgYFN1Y2Nlc3NmdWxseSAke2lzVXBkYXRlID8gJ3VwZGF0ZWQnIDogJ2NyZWF0ZWQnfSBTZXJ2aWNlIFBvbGljeTogJHtmb3JtRGF0YS5uYW1lfWAsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWw7XG4gICAgICAgICAgICB9KS5jYXRjaCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLmNhdGNoKChyZXNwKSA9PiB7XG4gICAgICAgICAgICBsZXQgZXJyb3JNZXNzYWdlO1xuICAgICAgICAgICAgaWYgKHJlc3A/LmVycm9yPy5lcnJvcj8uY2F1c2U/Lm1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSByZXNwPy5lcnJvcj8uZXJyb3I/LmNhdXNlPy5tZXNzYWdlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwPy5lcnJvcj8uZXJyb3I/LmNhdXNlPy5yZWFzb24pIHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSByZXNwPy5lcnJvcj8uZXJyb3I/LmNhdXNlPy5yZWFzb247XG4gICAgICAgICAgICB9ZWxzZSBpZiAocmVzcD8uZXJyb3I/Lm1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSByZXNwPy5lcnJvcj8ubWVzc2FnZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gJ0FuIHVua25vd24gZXJyb3Igb2NjdXJyZWQnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ0Vycm9yJyxcbiAgICAgICAgICAgICAgICBgRXJyb3IgQ3JlYXRpbmcgU2VydmljZSBQb2xpY3lgLFxuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICAgICAgICAgICAgdGhyb3cgcmVzcDtcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBnZXRBc3NvY2lhdGVkU2VydmljZXNCeVJvbGUoaWQpIHtcbiAgICAgICAgdGhpcy56aXRpU2VydmljZS5nZXRTdWJkYXRhKCdzZXJ2aWNlLXBvbGljaWVzJywgaWQsICdzZXJ2aWNlcycpLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRTZXJ2aWNlcyA9IHJlc3VsdC5kYXRhO1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkU2VydmljZU5hbWVzID0gdGhpcy5hc3NvY2lhdGVkU2VydmljZXMubWFwKChzdmMpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ZjLm5hbWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0QXNzb2NpYXRlZElkZW50aXRpZXNCeUlkKGlkKSB7XG4gICAgICAgIHRoaXMueml0aVNlcnZpY2UuZ2V0U3ViZGF0YSgnc2VydmljZS1wb2xpY2llcycsIGlkLCAnaWRlbnRpdGllcycpLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRJZGVudGl0aWVzID0gcmVzdWx0LmRhdGE7XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRJZGVudGl0eU5hbWVzID0gdGhpcy5hc3NvY2lhdGVkSWRlbnRpdGllcy5tYXAoKGlkZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlkZW50Lm5hbWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0QXNzb2NpYXRlZFBvc3R1cmVDaGVja3NCeUlkKGlkKSB7XG4gICAgICAgIHRoaXMueml0aVNlcnZpY2UuZ2V0U3ViZGF0YSgnc2VydmljZS1wb2xpY2llcycsIGlkLCAncG9zdHVyZS1jaGVja3MnKS50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkUG9zdHVyZUNoZWNrcyA9IHJlc3VsdC5kYXRhO1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkUG9zdHVyZUNoZWNrTmFtZXMgPSB0aGlzLmFzc29jaWF0ZWRQb3N0dXJlQ2hlY2tzLm1hcCgocG9zdHVyZUNoZWNrKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBvc3R1cmVDaGVjay5uYW1lO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldEFzc29jaWF0ZWRTZXJ2aWNlc0J5QXR0cmlidXRlKHJvbGVBdHRyaWJ1dGVzLCBuYW1lZEF0dHJpYnV0ZXMpIHtcbiAgICAgICAgdGhpcy5hc3NvY2lhdGVkU2VydmljZU5hbWVzID0gW107XG4gICAgICAgIGlmIChpc0VtcHR5KHJvbGVBdHRyaWJ1dGVzKSkge1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkU2VydmljZU5hbWVzID0gWy4uLm5hbWVkQXR0cmlidXRlc107XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlsdGVycyA9IHRoaXMueml0aVNlcnZpY2UuZ2V0Um9sZUZpbHRlcihyb2xlQXR0cmlidXRlcyk7XG4gICAgICAgIGNvbnN0IHBhZ2luZyA9IHRoaXMueml0aVNlcnZpY2UuREVGQVVMVF9QQUdJTkc7XG4gICAgICAgIHBhZ2luZy5ub1NlYXJjaCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnppdGlTZXJ2aWNlLmdldCgnc2VydmljZXMnLCBwYWdpbmcsIGZpbHRlcnMpLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRTZXJ2aWNlcyA9IHJlc3VsdC5kYXRhO1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkU2VydmljZU5hbWVzID0gdGhpcy5hc3NvY2lhdGVkU2VydmljZXMubWFwKChzdmMpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ZjLm5hbWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZFNlcnZpY2VOYW1lcyA9IFsuLi50aGlzLmFzc29jaWF0ZWRTZXJ2aWNlTmFtZXMsIC4uLm5hbWVkQXR0cmlidXRlc107XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRTZXJ2aWNlTmFtZXMgPSBzb3J0ZWRVbmlxKHRoaXMuYXNzb2NpYXRlZFNlcnZpY2VOYW1lcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldEFzc29jaWF0ZWRJZGVudGl0aWVzQnlBdHRyaWJ1dGUocm9sZUF0dHJpYnV0ZXMsIG5hbWVkQXR0cmlidXRlcykge1xuICAgICAgICB0aGlzLmFzc29jaWF0ZWRJZGVudGl0eU5hbWVzID0gW107XG4gICAgICAgIGlmIChpc0VtcHR5KHJvbGVBdHRyaWJ1dGVzKSkge1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkSWRlbnRpdHlOYW1lcyA9IFsuLi5uYW1lZEF0dHJpYnV0ZXNdO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLnppdGlTZXJ2aWNlLmdldFJvbGVGaWx0ZXIocm9sZUF0dHJpYnV0ZXMpO1xuICAgICAgICBjb25zdCBwYWdpbmcgPSB0aGlzLnppdGlTZXJ2aWNlLkRFRkFVTFRfUEFHSU5HO1xuICAgICAgICBwYWdpbmcubm9TZWFyY2ggPSBmYWxzZTtcbiAgICAgICAgdGhpcy56aXRpU2VydmljZS5nZXQoJ2lkZW50aXRpZXMnLCBwYWdpbmcsIGZpbHRlcnMpLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRJZGVudGl0aWVzID0gcmVzdWx0LmRhdGE7XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRJZGVudGl0eU5hbWVzID0gdGhpcy5hc3NvY2lhdGVkSWRlbnRpdGllcy5tYXAoKHN2YykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdmMubmFtZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkSWRlbnRpdHlOYW1lcyA9IFsuLi50aGlzLmFzc29jaWF0ZWRJZGVudGl0eU5hbWVzLCAuLi5uYW1lZEF0dHJpYnV0ZXNdO1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkSWRlbnRpdHlOYW1lcyA9IHNvcnRlZFVuaXEodGhpcy5hc3NvY2lhdGVkSWRlbnRpdHlOYW1lcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldEFzc29jaWF0ZWRQb3N0dXJlQ2hlY2tzQnlBdHRyaWJ1dGUocm9sZUF0dHJpYnV0ZXMsIG5hbWVkQXR0cmlidXRlcykge1xuICAgICAgICB0aGlzLmFzc29jaWF0ZWRQb3N0dXJlQ2hlY2tOYW1lcyA9IFtdO1xuICAgICAgICBpZiAoaXNFbXB0eShyb2xlQXR0cmlidXRlcykpIHtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZFBvc3R1cmVDaGVja05hbWVzID0gWy4uLm5hbWVkQXR0cmlidXRlc107XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlsdGVycyA9IHRoaXMueml0aVNlcnZpY2UuZ2V0Um9sZUZpbHRlcihyb2xlQXR0cmlidXRlcyk7XG4gICAgICAgIGNvbnN0IHBhZ2luZyA9IHRoaXMueml0aVNlcnZpY2UuREVGQVVMVF9QQUdJTkc7XG4gICAgICAgIHBhZ2luZy5ub1NlYXJjaCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnppdGlTZXJ2aWNlLmdldCgncG9zdHVyZS1jaGVja3MnLCBwYWdpbmcsIGZpbHRlcnMpLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRQb3N0dXJlQ2hlY2tzID0gcmVzdWx0LmRhdGE7XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRQb3N0dXJlQ2hlY2tOYW1lcyA9IHRoaXMuYXNzb2NpYXRlZFBvc3R1cmVDaGVja3MubWFwKChwb3N0dXJlQ2hlY2spID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcG9zdHVyZUNoZWNrLm5hbWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZFBvc3R1cmVDaGVja05hbWVzID0gWy4uLnRoaXMuYXNzb2NpYXRlZFBvc3R1cmVDaGVja05hbWVzLCAuLi5uYW1lZEF0dHJpYnV0ZXNdO1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkUG9zdHVyZUNoZWNrTmFtZXMgPSBzb3J0ZWRVbmlxKHRoaXMuYXNzb2NpYXRlZFBvc3R1cmVDaGVja05hbWVzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0U2VydmljZVBvbGljeURhdGFNb2RlbChmb3JtRGF0YSwgaXNVcGRhdGUpIHtcbiAgICAgICAgY29uc3Qgc2F2ZU1vZGVsID0gbmV3IFNlcnZpY2VQb2xpY3koKTtcbiAgICAgICAgY29uc3QgbW9kZWxQcm9wZXJ0aWVzID0ga2V5cyhzYXZlTW9kZWwpO1xuICAgICAgICBtb2RlbFByb3BlcnRpZXMuZm9yRWFjaCgocHJvcCkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoKHByb3ApIHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBzYXZlTW9kZWxbcHJvcF0gPSBmb3JtRGF0YVtwcm9wXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzYXZlTW9kZWw7XG4gICAgfVxuXG4gICAgY29weVRvQ2xpcGJvYXJkKHZhbCkge1xuICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh2YWwpO1xuICAgICAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICAgICAnc3VjY2VzcycsXG4gICAgICAgICAgICAnU3VjY2VzcycsXG4gICAgICAgICAgICBgVGV4dCBDb3BpZWRgLFxuICAgICAgICAgICAgYEFQSSBjYWxsIFVSTCBjb3BpZWQgdG8gY2xpcGJvYXJkYCxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgICB9XG5cbiAgICBnZXRTZWxlY3RlZFJvbGVzKHJvbGVBdHRyaWJ1dGVzLCBuYW1lZEF0dHJpYnV0ZXMsIG5hbWVkQXR0cmlidXRlTWFwKSB7XG4gICAgICAgIGNvbnN0IHByZXBlbmRlZFJvbGVBdHRyaWJ1dGVzID0gcm9sZUF0dHJpYnV0ZXMubWFwKChhdHRyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gJyMnICsgYXR0cjtcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgcHJlcGVuZGVkTmFtZWRBdHRyaWJ1dGVzID0gbmFtZWRBdHRyaWJ1dGVzLm1hcCgoYXR0cikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICdAJyArIG5hbWVkQXR0cmlidXRlTWFwW2F0dHJdO1xuICAgICAgICB9KVxuICAgICAgICByZXR1cm4gWy4uLnByZXBlbmRlZFJvbGVBdHRyaWJ1dGVzLCAuLi5wcmVwZW5kZWROYW1lZEF0dHJpYnV0ZXNdO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTZXJ2aWNlUm9sZUF0dHJpYnV0ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnppdGlTZXJ2aWNlLmdldCgnc2VydmljZS1yb2xlLWF0dHJpYnV0ZXMnLCB7fSwgW10pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlUm9sZUF0dHJpYnV0ZXMgPSByZXN1bHQuZGF0YTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJZGVudGl0eU5hbWVkQXR0cmlidXRlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueml0aVNlcnZpY2UuZ2V0KCdpZGVudGl0aWVzJywge3Jhd0ZpbHRlcjogdHJ1ZSwgZmlsdGVyOiAnJywgc29ydDogJ25hbWUnLCBvcmRlcjogJ2FzYycsIHRvdGFsOiAtMSwgcGFnZTogMX0sIFtdKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5hbWVkQXR0cmlidXRlcyA9IHJlc3VsdC5kYXRhLm1hcCgoaWRlbnRpdHkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlkZW50aXR5TmFtZWRBdHRyaWJ1dGVzTWFwW2lkZW50aXR5Lm5hbWVdID0gaWRlbnRpdHkuaWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlkZW50aXR5Lm5hbWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuaWRlbnRpdHlOYW1lZEF0dHJpYnV0ZXMgPSBuYW1lZEF0dHJpYnV0ZXM7XG4gICAgICAgICAgICByZXR1cm4gbmFtZWRBdHRyaWJ1dGVzO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U2VydmljZU5hbWVkQXR0cmlidXRlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueml0aVNlcnZpY2UuZ2V0KCdzZXJ2aWNlcycsIHtyYXdGaWx0ZXI6IHRydWUsIGZpbHRlcjogJycsIHNvcnQ6ICduYW1lJywgb3JkZXI6ICdhc2MnLCB0b3RhbDogLTEsIHBhZ2U6IDF9LCBbXSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuYW1lZEF0dHJpYnV0ZXMgPSByZXN1bHQuZGF0YS5tYXAoKHNlcnZpY2UpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2VOYW1lZEF0dHJpYnV0ZXNNYXBbc2VydmljZS5uYW1lXSA9IHNlcnZpY2UuaWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlcnZpY2UubmFtZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzID0gbmFtZWRBdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcmV0dXJuIG5hbWVkQXR0cmlidXRlcztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldElkZW50aXR5Um9sZUF0dHJpYnV0ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnppdGlTZXJ2aWNlLmdldCgnaWRlbnRpdHktcm9sZS1hdHRyaWJ1dGVzJywge30sIFtdKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaWRlbnRpdHlSb2xlQXR0cmlidXRlcyA9IHJlc3VsdC5kYXRhO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBvc3R1cmVOYW1lZEF0dHJpYnV0ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnppdGlTZXJ2aWNlLmdldCgncG9zdHVyZS1jaGVja3MnLCB7fSwgW10pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmFtZWRBdHRyaWJ1dGVzID0gcmVzdWx0LmRhdGEubWFwKChwb3N0dXJlQ2hlY2spID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvc3R1cmVOYW1lZEF0dHJpYnV0ZXNNYXBbcG9zdHVyZUNoZWNrLm5hbWVdID0gcG9zdHVyZUNoZWNrLmlkO1xuICAgICAgICAgICAgICAgIHJldHVybiBwb3N0dXJlQ2hlY2submFtZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5wb3N0dXJlTmFtZWRBdHRyaWJ1dGVzID0gbmFtZWRBdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcmV0dXJuIG5hbWVkQXR0cmlidXRlcztcbiAgICAgICAgfSk7XG4gICAgfVxufSJdfQ==
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1wb2xpY3ktZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL3Byb2plY3RhYmxlLWZvcm1zL3NlcnZpY2UtcG9saWN5L3NlcnZpY2UtcG9saWN5LWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFDLE9BQU8sRUFBUyxJQUFJLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUMsT0FBTyxFQUFDLGlCQUFpQixFQUFrQixNQUFNLHFDQUFxQyxDQUFDO0FBRXZGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQWtCLE1BQU0sb0NBQW9DLENBQUM7QUFHckYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUVsQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7Ozs7O0FBRTdELE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLElBQUksY0FBYyxDQUFNLGtDQUFrQyxDQUFDLENBQUM7QUFFNUcsTUFHYSx3QkFBd0I7SUFxQmpDLFlBQ3FDLGVBQWdDLEVBQzlCLFdBQTRCLEVBQ3ZELGNBQThCLEVBQ1csVUFBNEI7UUFINUMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQzlCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUN2RCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDVyxlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQXZCakYseUJBQW9CLEdBQVEsRUFBRSxDQUFDO1FBQy9CLDRCQUF1QixHQUFRLEVBQUUsQ0FBQztRQUNsQyw0QkFBdUIsR0FBUSxFQUFFLENBQUM7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QUFHLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2xFLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7Z0JBQ3JELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQztnQkFDcEUsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLHNCQUFzQixHQUFHLGVBQWUsQ0FBQztZQUM5QyxPQUFPLGVBQWUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBOU9RLHdCQUF3QixrQkFzQnJCLGdCQUFnQixhQUNoQixpQkFBaUIsMkNBRWpCLGdDQUFnQzttSEF6Qm5DLHdCQUF3QixjQUZyQixNQUFNOztTQUVULHdCQUF3Qjs0RkFBeEIsd0JBQXdCO2tCQUhwQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBdUJRLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFDdkIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUV4QixNQUFNOzJCQUFDLGdDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgSW5qZWN0LCBJbmplY3Rpb25Ub2tlbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7aXNFbXB0eSwgdW5zZXQsIGtleXN9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1pJVElfREFUQV9TRVJWSUNFLCBaaXRpRGF0YVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy96aXRpLWRhdGEuc2VydmljZVwiO1xuaW1wb3J0IHtHcm93bGVyU2VydmljZX0gZnJvbSBcIi4uLy4uL21lc3NhZ2luZy9ncm93bGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7R3Jvd2xlck1vZGVsfSBmcm9tIFwiLi4vLi4vbWVzc2FnaW5nL2dyb3dsZXIubW9kZWxcIjtcbmltcG9ydCB7U0VUVElOR1NfU0VSVklDRSwgU2V0dGluZ3NTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvc2V0dGluZ3Muc2VydmljZVwiO1xuaW1wb3J0IHtFeHRlbnNpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vZXh0ZW5kYWJsZS9leHRlbnNpb25zLW5vb3Auc2VydmljZVwiO1xuXG5pbXBvcnQge3NvcnRlZFVuaXF9IGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7U2VydmljZVBvbGljeX0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9zZXJ2aWNlLXBvbGljeVwiO1xuXG5leHBvcnQgY29uc3QgU0VSVklDRV9QT0xJQ1lfRVhURU5TSU9OX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55PignU0VSVklDRV9QT0xJQ1lfRVhURU5TSU9OX1NFUlZJQ0UnKTtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBTZXJ2aWNlUG9saWN5Rm9ybVNlcnZpY2Uge1xuXG4gICAgYXNzb2NpYXRlZElkZW50aXRpZXM6IGFueSA9IFtdO1xuICAgIGFzc29jaWF0ZWRJZGVudGl0eU5hbWVzOiBhbnkgPSBbXTtcbiAgICBhc3NvY2lhdGVkUG9zdHVyZUNoZWNrczogYW55ID0gW107XG4gICAgYXNzb2NpYXRlZFBvc3R1cmVDaGVja05hbWVzOiBhbnkgPSBbXTtcbiAgICBhc3NvY2lhdGVkU2VydmljZXM6IGFueSA9IFtdO1xuICAgIGFzc29jaWF0ZWRTZXJ2aWNlTmFtZXM6IGFueSA9IFtdO1xuXG4gICAgc2VydmljZU5hbWVkQXR0cmlidXRlc01hcDogYW55ID0ge307XG4gICAgaWRlbnRpdHlOYW1lZEF0dHJpYnV0ZXNNYXA6IGFueSA9IHt9O1xuICAgIHBvc3R1cmVOYW1lZEF0dHJpYnV0ZXNNYXA6IGFueSA9IHt9O1xuXG4gICAgaWRlbnRpdHlOYW1lZEF0dHJpYnV0ZXM6IGFueSA9IFtdO1xuICAgIHNlcnZpY2VOYW1lZEF0dHJpYnV0ZXM6IGFueSA9IFtdO1xuICAgIHBvc3R1cmVOYW1lZEF0dHJpYnV0ZXM6IGFueSA9IFtdO1xuXG4gICAgc2VydmljZVJvbGVBdHRyaWJ1dGVzOiBhbnkgPSBbXTtcbiAgICBpZGVudGl0eVJvbGVBdHRyaWJ1dGVzOiBhbnkgPSBbXTtcbiAgICBwb3N0dXJlUm9sZUF0dHJpYnV0ZXM6IGFueSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoU0VUVElOR1NfU0VSVklDRSkgcHVibGljIHNldHRpbmdzU2VydmljZTogU2V0dGluZ3NTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFpJVElfREFUQV9TRVJWSUNFKSBwcml2YXRlIHppdGlTZXJ2aWNlOiBaaXRpRGF0YVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFNFUlZJQ0VfUE9MSUNZX0VYVEVOU0lPTl9TRVJWSUNFKXByaXZhdGUgZXh0U2VydmljZTogRXh0ZW5zaW9uU2VydmljZVxuICAgICkge31cblxuICAgIHNhdmUoZm9ybURhdGEpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBjb25zdCBpc1VwZGF0ZSA9ICFpc0VtcHR5KGZvcm1EYXRhLmlkKTtcbiAgICAgICAgY29uc3QgZGF0YTogYW55ID0gdGhpcy5nZXRTZXJ2aWNlUG9saWN5RGF0YU1vZGVsKGZvcm1EYXRhLCBpc1VwZGF0ZSk7XG4gICAgICAgIGNvbnN0IHN2YyA9IGlzVXBkYXRlID8gdGhpcy56aXRpU2VydmljZS5wYXRjaC5iaW5kKHRoaXMueml0aVNlcnZpY2UpIDogdGhpcy56aXRpU2VydmljZS5wb3N0LmJpbmQodGhpcy56aXRpU2VydmljZSk7XG4gICAgICAgIHJldHVybiBzdmMoJ3NlcnZpY2UtcG9saWNpZXMnLCBkYXRhLCBmb3JtRGF0YS5pZCkudGhlbihhc3luYyAocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gcmVzdWx0Py5kYXRhPy5pZCB8fCBmb3JtRGF0YS5pZDtcbiAgICAgICAgICAgIGxldCByb3V0ZXIgPSBhd2FpdCB0aGlzLnppdGlTZXJ2aWNlLmdldFN1YmRhdGEoJ3NlcnZpY2UtcG9saWNpZXMnLCBpZCwgJycpLnRoZW4oKHJvdXRlckRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm91dGVyRGF0YS5kYXRhO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5leHRTZXJ2aWNlLmZvcm1EYXRhU2F2ZWQocm91dGVyKS50aGVuKChmb3JtU2F2ZWRSZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJldHVyblZhbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogcm91dGVyLFxuICAgICAgICAgICAgICAgICAgICBjbG9zZTogdGhpcy5leHRTZXJ2aWNlLmNsb3NlQWZ0ZXJTYXZlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICAgICAgICAgICAgICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgJ1N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgICAgICBgU2VydmljZSBQb2xpY3kgJHtpc1VwZGF0ZSA/ICdVcGRhdGVkJyA6ICdDcmVhdGVkJ31gLFxuICAgICAgICAgICAgICAgICAgICBgU3VjY2Vzc2Z1bGx5ICR7aXNVcGRhdGUgPyAndXBkYXRlZCcgOiAnY3JlYXRlZCd9IFNlcnZpY2UgUG9saWN5OiAke2Zvcm1EYXRhLm5hbWV9YCxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3Jvd2xlclNlcnZpY2Uuc2hvdyhncm93bGVyRGF0YSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJldHVyblZhbDtcbiAgICAgICAgICAgIH0pLmNhdGNoKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkuY2F0Y2goKHJlc3ApID0+IHtcbiAgICAgICAgICAgIGxldCBlcnJvck1lc3NhZ2U7XG4gICAgICAgICAgICBpZiAocmVzcD8uZXJyb3I/LmVycm9yPy5jYXVzZT8ubWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IHJlc3A/LmVycm9yPy5lcnJvcj8uY2F1c2U/Lm1lc3NhZ2U7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3A/LmVycm9yPy5lcnJvcj8uY2F1c2U/LnJlYXNvbikge1xuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IHJlc3A/LmVycm9yPy5lcnJvcj8uY2F1c2U/LnJlYXNvbjtcbiAgICAgICAgICAgIH1lbHNlIGlmIChyZXNwPy5lcnJvcj8ubWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IHJlc3A/LmVycm9yPy5tZXNzYWdlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSAnQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAnRXJyb3InLFxuICAgICAgICAgICAgICAgIGBFcnJvciBDcmVhdGluZyBTZXJ2aWNlIFBvbGljeWAsXG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZ3Jvd2xlclNlcnZpY2Uuc2hvdyhncm93bGVyRGF0YSk7XG4gICAgICAgICAgICB0aHJvdyByZXNwO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIGdldEFzc29jaWF0ZWRTZXJ2aWNlc0J5Um9sZShpZCkge1xuICAgICAgICB0aGlzLnppdGlTZXJ2aWNlLmdldFN1YmRhdGEoJ3NlcnZpY2UtcG9saWNpZXMnLCBpZCwgJ3NlcnZpY2VzJykudGhlbigocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZFNlcnZpY2VzID0gcmVzdWx0LmRhdGE7XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRTZXJ2aWNlTmFtZXMgPSB0aGlzLmFzc29jaWF0ZWRTZXJ2aWNlcy5tYXAoKHN2YykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdmMubmFtZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRBc3NvY2lhdGVkSWRlbnRpdGllc0J5SWQoaWQpIHtcbiAgICAgICAgdGhpcy56aXRpU2VydmljZS5nZXRTdWJkYXRhKCdzZXJ2aWNlLXBvbGljaWVzJywgaWQsICdpZGVudGl0aWVzJykudGhlbigocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZElkZW50aXRpZXMgPSByZXN1bHQuZGF0YTtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZElkZW50aXR5TmFtZXMgPSB0aGlzLmFzc29jaWF0ZWRJZGVudGl0aWVzLm1hcCgoaWRlbnQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWRlbnQubmFtZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRBc3NvY2lhdGVkUG9zdHVyZUNoZWNrc0J5SWQoaWQpIHtcbiAgICAgICAgdGhpcy56aXRpU2VydmljZS5nZXRTdWJkYXRhKCdzZXJ2aWNlLXBvbGljaWVzJywgaWQsICdwb3N0dXJlLWNoZWNrcycpLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRQb3N0dXJlQ2hlY2tzID0gcmVzdWx0LmRhdGE7XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRQb3N0dXJlQ2hlY2tOYW1lcyA9IHRoaXMuYXNzb2NpYXRlZFBvc3R1cmVDaGVja3MubWFwKChwb3N0dXJlQ2hlY2spID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcG9zdHVyZUNoZWNrLm5hbWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0QXNzb2NpYXRlZFNlcnZpY2VzQnlBdHRyaWJ1dGUocm9sZUF0dHJpYnV0ZXMsIG5hbWVkQXR0cmlidXRlcykge1xuICAgICAgICB0aGlzLmFzc29jaWF0ZWRTZXJ2aWNlTmFtZXMgPSBbXTtcbiAgICAgICAgaWYgKGlzRW1wdHkocm9sZUF0dHJpYnV0ZXMpKSB7XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRTZXJ2aWNlTmFtZXMgPSBbLi4ubmFtZWRBdHRyaWJ1dGVzXTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLnppdGlTZXJ2aWNlLmdldFJvbGVGaWx0ZXIocm9sZUF0dHJpYnV0ZXMpO1xuICAgICAgICBjb25zdCBwYWdpbmcgPSB0aGlzLnppdGlTZXJ2aWNlLkRFRkFVTFRfUEFHSU5HO1xuICAgICAgICBwYWdpbmcubm9TZWFyY2ggPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRoaXMueml0aVNlcnZpY2UuZ2V0KCdzZXJ2aWNlcycsIHBhZ2luZywgZmlsdGVycykudGhlbigocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZFNlcnZpY2VzID0gcmVzdWx0LmRhdGE7XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRTZXJ2aWNlTmFtZXMgPSB0aGlzLmFzc29jaWF0ZWRTZXJ2aWNlcy5tYXAoKHN2YykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdmMubmFtZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkU2VydmljZU5hbWVzID0gWy4uLnRoaXMuYXNzb2NpYXRlZFNlcnZpY2VOYW1lcywgLi4ubmFtZWRBdHRyaWJ1dGVzXTtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZFNlcnZpY2VOYW1lcyA9IHNvcnRlZFVuaXEodGhpcy5hc3NvY2lhdGVkU2VydmljZU5hbWVzKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFzc29jaWF0ZWRTZXJ2aWNlcztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0QXNzb2NpYXRlZElkZW50aXRpZXNCeUF0dHJpYnV0ZShyb2xlQXR0cmlidXRlcywgbmFtZWRBdHRyaWJ1dGVzKSB7XG4gICAgICAgIHRoaXMuYXNzb2NpYXRlZElkZW50aXR5TmFtZXMgPSBbXTtcbiAgICAgICAgaWYgKGlzRW1wdHkocm9sZUF0dHJpYnV0ZXMpKSB7XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRJZGVudGl0eU5hbWVzID0gWy4uLm5hbWVkQXR0cmlidXRlc107XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlsdGVycyA9IHRoaXMueml0aVNlcnZpY2UuZ2V0Um9sZUZpbHRlcihyb2xlQXR0cmlidXRlcyk7XG4gICAgICAgIGNvbnN0IHBhZ2luZyA9IHRoaXMueml0aVNlcnZpY2UuREVGQVVMVF9QQUdJTkc7XG4gICAgICAgIHBhZ2luZy5ub1NlYXJjaCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnppdGlTZXJ2aWNlLmdldCgnaWRlbnRpdGllcycsIHBhZ2luZywgZmlsdGVycykudGhlbigocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZElkZW50aXRpZXMgPSByZXN1bHQuZGF0YTtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZElkZW50aXR5TmFtZXMgPSB0aGlzLmFzc29jaWF0ZWRJZGVudGl0aWVzLm1hcCgoc3ZjKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN2Yy5uYW1lO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRJZGVudGl0eU5hbWVzID0gWy4uLnRoaXMuYXNzb2NpYXRlZElkZW50aXR5TmFtZXMsIC4uLm5hbWVkQXR0cmlidXRlc107XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRJZGVudGl0eU5hbWVzID0gc29ydGVkVW5pcSh0aGlzLmFzc29jaWF0ZWRJZGVudGl0eU5hbWVzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0QXNzb2NpYXRlZFBvc3R1cmVDaGVja3NCeUF0dHJpYnV0ZShyb2xlQXR0cmlidXRlcywgbmFtZWRBdHRyaWJ1dGVzKSB7XG4gICAgICAgIHRoaXMuYXNzb2NpYXRlZFBvc3R1cmVDaGVja05hbWVzID0gW107XG4gICAgICAgIGlmIChpc0VtcHR5KHJvbGVBdHRyaWJ1dGVzKSkge1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkUG9zdHVyZUNoZWNrTmFtZXMgPSBbLi4ubmFtZWRBdHRyaWJ1dGVzXTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy56aXRpU2VydmljZS5nZXRSb2xlRmlsdGVyKHJvbGVBdHRyaWJ1dGVzKTtcbiAgICAgICAgY29uc3QgcGFnaW5nID0gdGhpcy56aXRpU2VydmljZS5ERUZBVUxUX1BBR0lORztcbiAgICAgICAgcGFnaW5nLm5vU2VhcmNoID0gZmFsc2U7XG4gICAgICAgIHRoaXMueml0aVNlcnZpY2UuZ2V0KCdwb3N0dXJlLWNoZWNrcycsIHBhZ2luZywgZmlsdGVycykudGhlbigocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZFBvc3R1cmVDaGVja3MgPSByZXN1bHQuZGF0YTtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZFBvc3R1cmVDaGVja05hbWVzID0gdGhpcy5hc3NvY2lhdGVkUG9zdHVyZUNoZWNrcy5tYXAoKHBvc3R1cmVDaGVjaykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBwb3N0dXJlQ2hlY2submFtZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkUG9zdHVyZUNoZWNrTmFtZXMgPSBbLi4udGhpcy5hc3NvY2lhdGVkUG9zdHVyZUNoZWNrTmFtZXMsIC4uLm5hbWVkQXR0cmlidXRlc107XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRQb3N0dXJlQ2hlY2tOYW1lcyA9IHNvcnRlZFVuaXEodGhpcy5hc3NvY2lhdGVkUG9zdHVyZUNoZWNrTmFtZXMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRTZXJ2aWNlUG9saWN5RGF0YU1vZGVsKGZvcm1EYXRhLCBpc1VwZGF0ZSkge1xuICAgICAgICBjb25zdCBzYXZlTW9kZWwgPSBuZXcgU2VydmljZVBvbGljeSgpO1xuICAgICAgICBjb25zdCBtb2RlbFByb3BlcnRpZXMgPSBrZXlzKHNhdmVNb2RlbCk7XG4gICAgICAgIG1vZGVsUHJvcGVydGllcy5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2gocHJvcCkge1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHNhdmVNb2RlbFtwcm9wXSA9IGZvcm1EYXRhW3Byb3BdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHNhdmVNb2RlbDtcbiAgICB9XG5cbiAgICBjb3B5VG9DbGlwYm9hcmQodmFsKSB7XG4gICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHZhbCk7XG4gICAgICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgICAgICdzdWNjZXNzJyxcbiAgICAgICAgICAgICdTdWNjZXNzJyxcbiAgICAgICAgICAgIGBUZXh0IENvcGllZGAsXG4gICAgICAgICAgICBgQVBJIGNhbGwgVVJMIGNvcGllZCB0byBjbGlwYm9hcmRgLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICAgIH1cblxuICAgIGdldFNlbGVjdGVkUm9sZXMocm9sZUF0dHJpYnV0ZXMsIG5hbWVkQXR0cmlidXRlcywgbmFtZWRBdHRyaWJ1dGVNYXApIHtcbiAgICAgICAgY29uc3QgcHJlcGVuZGVkUm9sZUF0dHJpYnV0ZXMgPSByb2xlQXR0cmlidXRlcy5tYXAoKGF0dHIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAnIycgKyBhdHRyO1xuICAgICAgICB9KVxuICAgICAgICBjb25zdCBwcmVwZW5kZWROYW1lZEF0dHJpYnV0ZXMgPSBuYW1lZEF0dHJpYnV0ZXMubWFwKChhdHRyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gJ0AnICsgbmFtZWRBdHRyaWJ1dGVNYXBbYXR0cl07XG4gICAgICAgIH0pXG4gICAgICAgIHJldHVybiBbLi4ucHJlcGVuZGVkUm9sZUF0dHJpYnV0ZXMsIC4uLnByZXBlbmRlZE5hbWVkQXR0cmlidXRlc107XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNlcnZpY2VSb2xlQXR0cmlidXRlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueml0aVNlcnZpY2UuZ2V0KCdzZXJ2aWNlLXJvbGUtYXR0cmlidXRlcycsIHt9LCBbXSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2VSb2xlQXR0cmlidXRlcyA9IHJlc3VsdC5kYXRhO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldElkZW50aXR5TmFtZWRBdHRyaWJ1dGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy56aXRpU2VydmljZS5nZXQoJ2lkZW50aXRpZXMnLCB7cmF3RmlsdGVyOiB0cnVlLCBmaWx0ZXI6ICcnLCBzb3J0OiAnbmFtZScsIG9yZGVyOiAnYXNjJywgdG90YWw6IC0xLCBwYWdlOiAxfSwgW10pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmFtZWRBdHRyaWJ1dGVzID0gcmVzdWx0LmRhdGEubWFwKChpZGVudGl0eSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaWRlbnRpdHlOYW1lZEF0dHJpYnV0ZXNNYXBbaWRlbnRpdHkubmFtZV0gPSBpZGVudGl0eS5pZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWRlbnRpdHkubmFtZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5pZGVudGl0eU5hbWVkQXR0cmlidXRlcyA9IG5hbWVkQXR0cmlidXRlcztcbiAgICAgICAgICAgIHJldHVybiBuYW1lZEF0dHJpYnV0ZXM7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy56aXRpU2VydmljZS5nZXQoJ3NlcnZpY2VzJywge3Jhd0ZpbHRlcjogdHJ1ZSwgZmlsdGVyOiAnJywgc29ydDogJ25hbWUnLCBvcmRlcjogJ2FzYycsIHRvdGFsOiAtMSwgcGFnZTogMX0sIFtdKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5hbWVkQXR0cmlidXRlcyA9IHJlc3VsdC5kYXRhLm1hcCgoc2VydmljZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZU5hbWVkQXR0cmlidXRlc01hcFtzZXJ2aWNlLm5hbWVdID0gc2VydmljZS5pZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VydmljZS5uYW1lO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2VOYW1lZEF0dHJpYnV0ZXMgPSBuYW1lZEF0dHJpYnV0ZXM7XG4gICAgICAgICAgICByZXR1cm4gbmFtZWRBdHRyaWJ1dGVzO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SWRlbnRpdHlSb2xlQXR0cmlidXRlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueml0aVNlcnZpY2UuZ2V0KCdpZGVudGl0eS1yb2xlLWF0dHJpYnV0ZXMnLCB7fSwgW10pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pZGVudGl0eVJvbGVBdHRyaWJ1dGVzID0gcmVzdWx0LmRhdGE7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UG9zdHVyZU5hbWVkQXR0cmlidXRlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueml0aVNlcnZpY2UuZ2V0KCdwb3N0dXJlLWNoZWNrcycsIHt9LCBbXSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuYW1lZEF0dHJpYnV0ZXMgPSByZXN1bHQuZGF0YS5tYXAoKHBvc3R1cmVDaGVjaykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucG9zdHVyZU5hbWVkQXR0cmlidXRlc01hcFtwb3N0dXJlQ2hlY2submFtZV0gPSBwb3N0dXJlQ2hlY2suaWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBvc3R1cmVDaGVjay5uYW1lO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnBvc3R1cmVOYW1lZEF0dHJpYnV0ZXMgPSBuYW1lZEF0dHJpYnV0ZXM7XG4gICAgICAgICAgICByZXR1cm4gbmFtZWRBdHRyaWJ1dGVzO1xuICAgICAgICB9KTtcbiAgICB9XG59Il19
|
|
@@ -223,7 +223,7 @@ class TerminatorFormComponent extends ProjectableForm {
|
|
|
223
223
|
});
|
|
224
224
|
}
|
|
225
225
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TerminatorFormComponent, deps: [{ token: i1.TerminatorFormService }, { token: i2.SchemaService }, { token: i3.GrowlerService }, { token: SHAREDZ_EXTENSION }, { token: SETTINGS_SERVICE }, { token: ZITI_DATA_SERVICE }, { token: i4.Router }, { token: i4.ActivatedRoute }, { token: i5.Location }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
226
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TerminatorFormComponent, selector: "lib-configuration", inputs: { formData: "formData", errors: "errors" }, outputs: { close: "close" }, usesInheritance: true, ngImport: i0, template: "<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n tabindex=\"0\"\n>\n <lib-form-header\n [data]=\"formData\"\n [title]=\"(formData.id ? 'Terminator Details' : 'Create Terminator')\"\n [moreActions]=\"formData.moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n [saveDisabled]=\"svc.saveDisabled || formDataInvalid\"\n ></lib-form-header>\n <div class=\"terminator-form-container projectable-form-container\">\n <div class=\"projectable-form-main-column form-group-row\" [hidden]=\"formView !== 'simple'\">\n <div class=\"form-group-column one-half\">\n <lib-form-field-container\n [title]=\"'Service'\"\n [contentStyle]=\"'z-index: 10003'\"\n >\n <input class=\"form-field-input read-only\" [(ngModel)]=\"selectedServiceNamedAttribute\" [disabled]=\"true\"/>\n <!--<lib-tag-selector\n [(selectedNamedAttributes)]=\"svc.selectedServiceNamedAttributes\"\n [availableNamedAttributes]=\"svc.serviceNamedAttributes\"\n [placeholder]=\"'Select a service'\"\n (addNamedAttribute)=\"serviceAttributeChanged($event)\"\n (namedAttributeRemoved)=\"serviceAttributeChanged()\"\n ></lib-tag-selector>-->\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Router'\"\n [contentStyle]=\"'z-index: 10002'\"\n >\n <input class=\"form-field-input read-only\" [(ngModel)]=\"selectedRouterNamedAttribute\" [disabled]=\"true\"/>\n <!--<lib-tag-selector\n [(selectedNamedAttributes)]=\"svc.selectedRouterNamedAttributes\"\n [availableNamedAttributes]=\"svc.routerNamedAttributes\"\n [placeholder]=\"'Select a router'\"\n (addNamedAttribute)=\"routerAttributeChanged($event)\"\n (namedAttributeRemoved)=\"routerAttributeChanged()\"\n ></lib-tag-selector>-->\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Identity'\"\n [contentStyle]=\"'z-index: 10001'\"\n >\n <input class=\"form-field-input read-only\" [(ngModel)]=\"selectedIdentityNamedAttribute\" [disabled]=\"true\"/>\n <!--<lib-tag-selector\n [(selectedNamedAttributes)]=\"svc.selectedIdentityNamedAttributes\"\n [availableNamedAttributes]=\"svc.identityNamedAttributes\"\n [placeholder]=\"'Select an identity'\"\n (addNamedAttribute)=\"identityAttributeChanged($event)\"\n (namedAttributeRemoved)=\"identityAttributeChanged()\"\n ></lib-tag-selector>-->\n </lib-form-field-container>\n </div>\n <div class=\"form-group-column one-half\">\n <lib-form-field-container\n [title]=\"'Address'\"\n [contentStyle]=\"'z-index: 1001'\"\n >\n <input class=\"form-field-input read-only\" [disabled]=\"true\" [(ngModel)]=\"formData.address\"/>\n </lib-form-field-container>\n <lib-form-field-container\n [showHeader]=\"false\"\n [layout]=\"'row'\"\n [contentStyle]=\"'z-index: 1001'\"\n >\n <div class=\"form-field-label-container\">\n <span class=\"form-field-title\">Binding</span>\n <input class=\"form-field-input\" [disabled]=\"true\" [(ngModel)]=\"formData.binding\"/>\n </div>\n <div class=\"form-field-label-container\">\n <span class=\"form-field-title\">Identity Secret</span>\n <input class=\"form-field-input\" [disabled]=\"true\" [(ngModel)]=\"formData.identitySecret\"/>\n </div>\n </lib-form-field-container>\n <lib-form-field-container\n [layout]=\"'row'\"\n [showHeader]=\"false\"\n >\n <div class=\"form-field-label-container\">\n <span class=\"form-field-title\">Hosting Cost</span>\n <input class=\"form-field-input\" [disabled]=\"true\" [(ngModel)]=\"formData.cost\" type=\"number\"/>\n </div>\n <div class=\"form-field-label-container\">\n <span class=\"form-field-title\">Precedence</span>\n <select\n [(ngModel)]=\"formData.precedence\"\n [disabled]=\"true\"\n id=\"hostingPrecedence\"\n class=\"form-field-dropdown read-only\"\n >\n <option value=\"default\">Default</option>\n <option value=\"required\">Required</option>\n <option value=\"failed\">Failed</option>\n </select>\n </div>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column\" *ngIf=\"formView === 'raw'\">\n <lib-json-view *ngIf=\"formData\" [(data)]=\"formData\"></lib-json-view>\n </div>\n </div>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>\n", styles: [".terminator-form-container{display:flex;flex-direction:column;height:100%;width:100%;align-items:center;gap:var(--gapXL)}.config-type-select.disabled{opacity:.7;pointer-events:none}::ng-deep .terminator-form-container select:disabled,::ng-deep .terminator-form-container input:disabled{opacity:.75!important;cursor:text;background-color:var(--stroke)!important}@media (max-width: 1524px){.terminator-form-container .projectable-form-main-column{max-width:620px}}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i6.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.FormHeaderComponent, selector: "lib-form-header", inputs: ["data", "title", "moreActions", "formView", "saveDisabled", "saveTooltip", "actionButtonText", "moreActionsText"], outputs: ["formViewChange", "actionRequested"] }, { kind: "component", type: i8.FormFieldContainerComponent, selector: "lib-form-field-container", inputs: ["title", "title2", "layout", "helpText", "helpText2", "label", "count", "action", "actionLabel", "class", "contentStyle", "showHeader", "headerActions"], outputs: ["actionRequested"] }, { kind: "component", type: i9.LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }, { kind: "component", type: i10.JsonViewComponent, selector: "lib-json-view", inputs: ["data", "schema", "readOnly", "jsonInvalid", "showCopy"], outputs: ["dataChange", "jsonChange", "jsonInvalidChange"] }] }); }
|
|
226
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TerminatorFormComponent, selector: "lib-configuration", inputs: { formData: "formData", errors: "errors" }, outputs: { close: "close" }, usesInheritance: true, ngImport: i0, template: "<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n tabindex=\"0\"\n>\n <lib-form-header\n [data]=\"formData\"\n [title]=\"(formData.id ? 'Terminator Details' : 'Create Terminator')\"\n [moreActions]=\"formData.moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n [saveDisabled]=\"svc.saveDisabled || formDataInvalid\"\n ></lib-form-header>\n <div class=\"terminator-form-container projectable-form-container\">\n <div class=\"projectable-form-main-column form-group-row\" [hidden]=\"formView !== 'simple'\">\n <div class=\"form-group-column one-half\">\n <lib-form-field-container\n [title]=\"'Service'\"\n [contentStyle]=\"'z-index: 10003'\"\n >\n <input class=\"form-field-input read-only\" [(ngModel)]=\"selectedServiceNamedAttribute\" [disabled]=\"true\"/>\n <!--<lib-tag-selector\n [(selectedNamedAttributes)]=\"svc.selectedServiceNamedAttributes\"\n [availableNamedAttributes]=\"svc.serviceNamedAttributes\"\n [placeholder]=\"'Select a service'\"\n (addNamedAttribute)=\"serviceAttributeChanged($event)\"\n (namedAttributeRemoved)=\"serviceAttributeChanged()\"\n ></lib-tag-selector>-->\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Router'\"\n [contentStyle]=\"'z-index: 10002'\"\n >\n <input class=\"form-field-input read-only\" [(ngModel)]=\"selectedRouterNamedAttribute\" [disabled]=\"true\"/>\n <!--<lib-tag-selector\n [(selectedNamedAttributes)]=\"svc.selectedRouterNamedAttributes\"\n [availableNamedAttributes]=\"svc.routerNamedAttributes\"\n [placeholder]=\"'Select a router'\"\n (addNamedAttribute)=\"routerAttributeChanged($event)\"\n (namedAttributeRemoved)=\"routerAttributeChanged()\"\n ></lib-tag-selector>-->\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Identity'\"\n [contentStyle]=\"'z-index: 10001'\"\n >\n <input class=\"form-field-input read-only\" [(ngModel)]=\"selectedIdentityNamedAttribute\" [disabled]=\"true\"/>\n <!--<lib-tag-selector\n [(selectedNamedAttributes)]=\"svc.selectedIdentityNamedAttributes\"\n [availableNamedAttributes]=\"svc.identityNamedAttributes\"\n [placeholder]=\"'Select an identity'\"\n (addNamedAttribute)=\"identityAttributeChanged($event)\"\n (namedAttributeRemoved)=\"identityAttributeChanged()\"\n ></lib-tag-selector>-->\n </lib-form-field-container>\n </div>\n <div class=\"form-group-column one-half\">\n <lib-form-field-container\n [title]=\"'Address'\"\n [contentStyle]=\"'z-index: 1001'\"\n >\n <input class=\"form-field-input read-only\" [disabled]=\"true\" [(ngModel)]=\"formData.address\"/>\n </lib-form-field-container>\n <lib-form-field-container\n [showHeader]=\"false\"\n [layout]=\"'row'\"\n [contentStyle]=\"'z-index: 1001'\"\n >\n <div class=\"form-field-label-container\">\n <span class=\"form-field-title\">Binding</span>\n <input class=\"form-field-input\" [disabled]=\"true\" [(ngModel)]=\"formData.binding\"/>\n </div>\n <div class=\"form-field-label-container\">\n <span class=\"form-field-title\">Identity Secret</span>\n <input class=\"form-field-input\" [disabled]=\"true\" [(ngModel)]=\"formData.identitySecret\"/>\n </div>\n </lib-form-field-container>\n <lib-form-field-container\n [layout]=\"'row'\"\n [showHeader]=\"false\"\n >\n <div class=\"form-field-label-container\">\n <span class=\"form-field-title\">Hosting Cost</span>\n <input class=\"form-field-input\" [disabled]=\"true\" [(ngModel)]=\"formData.cost\" type=\"number\"/>\n </div>\n <div class=\"form-field-label-container\">\n <span class=\"form-field-title\">Precedence</span>\n <select\n [(ngModel)]=\"formData.precedence\"\n [disabled]=\"true\"\n id=\"hostingPrecedence\"\n class=\"form-field-dropdown read-only\"\n >\n <option value=\"default\">Default</option>\n <option value=\"required\">Required</option>\n <option value=\"failed\">Failed</option>\n </select>\n </div>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column\" *ngIf=\"formView === 'raw'\">\n <lib-json-view *ngIf=\"formData\" [(data)]=\"formData\"></lib-json-view>\n </div>\n </div>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>\n", styles: [".terminator-form-container{display:flex;flex-direction:column;height:100%;width:100%;align-items:center;gap:var(--gapXL)}.config-type-select.disabled{opacity:.7;pointer-events:none}::ng-deep .terminator-form-container select:disabled,::ng-deep .terminator-form-container input:disabled{opacity:.75!important;cursor:text;background-color:var(--stroke)!important}@media (max-width: 1524px){.terminator-form-container .projectable-form-main-column{max-width:620px}}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i6.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.FormHeaderComponent, selector: "lib-form-header", inputs: ["data", "title", "moreActions", "formView", "saveDisabled", "saveTooltip", "actionButtonText", "moreActionsText"], outputs: ["formViewChange", "actionRequested"] }, { kind: "component", type: i8.FormFieldContainerComponent, selector: "lib-form-field-container", inputs: ["title", "title2", "titleIcon", "layout", "helpText", "helpText2", "label", "count", "action", "actionLabel", "class", "contentStyle", "showHeader", "headerActions"], outputs: ["actionRequested"] }, { kind: "component", type: i9.LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }, { kind: "component", type: i10.JsonViewComponent, selector: "lib-json-view", inputs: ["data", "schema", "readOnly", "jsonInvalid", "showCopy"], outputs: ["dataChange", "jsonChange", "jsonInvalidChange"] }] }); }
|
|
227
227
|
}
|
|
228
228
|
export { TerminatorFormComponent };
|
|
229
229
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TerminatorFormComponent, decorators: [{
|
|
@@ -89,6 +89,9 @@ class QrCodeComponent {
|
|
|
89
89
|
});
|
|
90
90
|
}
|
|
91
91
|
expandQRCode() {
|
|
92
|
+
if (!this.canExpand) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
92
95
|
const data = {
|
|
93
96
|
jwt: this.jwt,
|
|
94
97
|
expiration: this.expiration,
|
|
@@ -140,4 +143,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
140
143
|
}], doRefresh: [{
|
|
141
144
|
type: Output
|
|
142
145
|
}] } });
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXItY29kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcXItY29kZS9xci1jb2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9xci1jb2RlL3FyLWNvZGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFhLE1BQU0sRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxFQUFDLGVBQWUsRUFBMEIsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7OztBQUtsRixNQUthLGVBQWU7SUFpQjFCLFlBQ3dCLFNBQXdDLEVBQ3hDLFVBQXFCLEVBQ0csSUFBUyxFQUM5QyxhQUFvQyxFQUNwQyxjQUFzQztRQUp6QixjQUFTLEdBQVQsU0FBUyxDQUErQjtRQUN4QyxlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQ0csU0FBSSxHQUFKLElBQUksQ0FBSztRQUM5QyxrQkFBYSxHQUFiLGFBQWEsQ0FBdUI7UUFDcEMsbUJBQWMsR0FBZCxjQUFjLENBQXdCO1FBakJ4QyxhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQ25CLFNBQUksR0FBVyxVQUFVLENBQUM7UUFFMUIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUN4QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzFCLGNBQVMsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUl6RSxlQUFVLEdBQUcsR0FBRyxDQUFDO1FBQ2pCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFVZCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUM7WUFDekMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDOUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3hFLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzSCxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDO0lBQ25ELENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxPQUFPO1FBQ0wsTUFBTSxTQUFTLEdBQXNCLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRixTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDekMsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDM0I7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSztRQUNILE1BQU0sU0FBUyxHQUFzQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEYsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQzNDLElBQUksTUFBTSxFQUFFO2dCQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzNCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sSUFBSSxHQUFHO1lBQ1gsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFVBQVUsRUFBRSxHQUFHO1lBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FBQztRQUNGLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN0RCxJQUFJLEVBQUUsSUFBSTtZQUNWLFNBQVMsRUFBRSxLQUFLO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNqRCxDQUFDOytHQXZHVSxlQUFlLHVHQW9CRixlQUFlO21HQXBCNUIsZUFBZSwrUkM3QjVCLG91RkErQ0E7O1NEbEJhLGVBQWU7NEZBQWYsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxhQUFhOzswQkFzQmxCLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZTtxSEFsQjlCLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNJLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBPbkNoYW5nZXMsIEluamVjdCwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHtpc0VtcHR5fSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZywgTWF0RGlhbG9nUmVmfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XG5pbXBvcnQge0lkZW50aXRpZXNQYWdlU2VydmljZX0gZnJvbSBcIi4uLy4uL3BhZ2VzL2lkZW50aXRpZXMvaWRlbnRpdGllcy1wYWdlLnNlcnZpY2VcIjtcbmltcG9ydCB7RGlhbG9nUmVmfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2RpYWxvZ1wiO1xuaW1wb3J0IHtFZGdlUm91dGVyc1BhZ2VTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vcGFnZXMvZWRnZS1yb3V0ZXJzL2VkZ2Utcm91dGVycy1wYWdlLnNlcnZpY2VcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXFyLWNvZGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcXItY29kZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3FyLWNvZGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBRckNvZGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuXG4gIEBJbnB1dCgpIGp3dDogYW55O1xuICBASW5wdXQoKSB0b2tlbjogYW55O1xuICBASW5wdXQoKSBleHBpcmF0aW9uOiBhbnk7XG4gIEBJbnB1dCgpIGlkZW50aXR5OiBhbnkgPSB7fTtcbiAgQElucHV0KCkgdHlwZTogc3RyaW5nID0gJ2lkZW50aXR5JztcbiAgQElucHV0KCkgYXV0aGVudGljYXRvcnM6IGFueTtcbiAgQElucHV0KCkgcXJPbmx5OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhbkV4cGFuZDogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgZG9SZWZyZXNoOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgand0RXhwaXJlZDtcbiAgZXhwaXJhdGlvbkRhdGU7XG4gIHFyQ29kZVNpemUgPSAyMDA7XG4gIGlzTW9kYWwgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8UXJDb2RlQ29tcG9uZW50PixcbiAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZGlhbG9nRm9ybTogTWF0RGlhbG9nLFxuICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnksXG4gICAgICBwdWJsaWMgaWRlbnRpdGllc1N2YzogSWRlbnRpdGllc1BhZ2VTZXJ2aWNlLFxuICAgICAgcHVibGljIGVkZ2VSb3V0ZXJzU3ZjOiBFZGdlUm91dGVyc1BhZ2VTZXJ2aWNlLFxuICApXG4gIHtcbiAgICBpZiAoIWlzRW1wdHkoZGF0YSkpIHtcbiAgICAgIHRoaXMuand0ID0gZGF0YS5qd3Q7XG4gICAgICB0aGlzLnRva2VuID0gZGF0YS50b2tlbjtcbiAgICAgIHRoaXMuZXhwaXJhdGlvbiA9IGRhdGEuZXhwaXJhdGlvbjtcbiAgICAgIHRoaXMucXJDb2RlU2l6ZSA9IGRhdGEucXJDb2RlU2l6ZSB8fCAyMDA7XG4gICAgICB0aGlzLmp3dEV4cGlyZWQgPSB0aGlzLmdldEp3dEV4cGlyZWQoKTtcbiAgICAgIHRoaXMuZXhwaXJhdGlvbkRhdGUgPSB0aGlzLmdldEV4cGlyYXRpb25EYXRlKCk7XG4gICAgICB0aGlzLmlzTW9kYWwgPSB0cnVlO1xuICAgICAgdGhpcy5pZGVudGl0eSA9IGRhdGEuaWRlbnRpdHk7XG4gICAgICB0aGlzLnFyT25seSA9IGRhdGEucXJPbmx5O1xuICAgIH1cbiAgfVxuXG4gIGdldCBoYXNKV1QoKSB7XG4gICAgcmV0dXJuICFpc0VtcHR5KHRoaXMuand0KTtcbiAgfVxuXG4gIGdldCBzaG93UmVzZXRUb2tlbigpIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoZW50aWNhdG9ycz8uY2VydD8uaWQgfHwgdGhpcy5hdXRoZW50aWNhdG9ycz8udXBkYj8uaWQ7XG4gIH1cblxuICBnZXQgc2hvd1JlaXNzdWVUb2tlbigpIHtcbiAgICByZXR1cm4gKHRoaXMuaWRlbnRpdHk/LmVucm9sbG1lbnQ/Lm90dD8uaWQgfHwgdGhpcy5pZGVudGl0eT8uZW5yb2xsbWVudD8udXBkYj8uaWQpICYmIG1vbWVudCh0aGlzLmV4cGlyYXRpb24pLmlzQmVmb3JlKCk7XG4gIH1cblxuICBnZXQgc2hvd1JlZW5yb2xsVG9rZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuand0RXhwaXJlZCAmJiB0aGlzLnR5cGUgPT09ICdyb3V0ZXInO1xuICB9XG5cbiAgZ2V0Snd0RXhwaXJlZCgpIHtcbiAgICByZXR1cm4gbW9tZW50KHRoaXMuZXhwaXJhdGlvbikuaXNCZWZvcmUoKTtcbiAgfVxuXG4gIGdldEV4cGlyYXRpb25EYXRlKCkge1xuICAgIHJldHVybiBtb21lbnQodGhpcy5leHBpcmF0aW9uKS5sb2NhbCgpLmZvcm1hdCgnTS9EL1lZIGg6bW0gYScpO1xuICB9XG5cbiAgcmVpc3N1ZSgpIHtcbiAgICBjb25zdCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxhbnk+ID0gdGhpcy5pZGVudGl0aWVzU3ZjLnJlaXNzdWVKV1QodGhpcy5pZGVudGl0eSk7XG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIHRoaXMuZG9SZWZyZXNoLmVtaXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJlZW5yb2xsKCkge1xuICAgIHRoaXMuZWRnZVJvdXRlcnNTdmMucmVlbnJvbGwodGhpcy5pZGVudGl0eSkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLmRvUmVmcmVzaC5lbWl0KHRydWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgY29uc3QgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8YW55PiA9IHRoaXMuaWRlbnRpdGllc1N2Yy5yZXNldEpXVCh0aGlzLmlkZW50aXR5KTtcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLmRvUmVmcmVzaC5lbWl0KHRydWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZXhwYW5kUVJDb2RlKCkge1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBqd3Q6IHRoaXMuand0LFxuICAgICAgZXhwaXJhdGlvbjogdGhpcy5leHBpcmF0aW9uLFxuICAgICAgcXJDb2RlU2l6ZTogNDAwLFxuICAgICAgaWRlbnRpdHk6IHRoaXMuaWRlbnRpdHksXG4gICAgICBxck9ubHk6IHRydWVcbiAgICB9O1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nRm9ybS5vcGVuKFFyQ29kZUNvbXBvbmVudCwge1xuICAgICAgZGF0YTogZGF0YSxcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLmp3dEV4cGlyZWQgPSB0aGlzLmdldEp3dEV4cGlyZWQoKTtcbiAgICB0aGlzLmV4cGlyYXRpb25EYXRlID0gdGhpcy5nZXRFeHBpcmF0aW9uRGF0ZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicXItY29kZS1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7J21vZGFsLXZpZXcnOiBpc01vZGFsfVwiPlxuICAgIDxkaXYgKm5nSWY9XCIhcXJPbmx5XCIgY2xhc3M9XCJxci1jb2RlLWJ1dHRvbnNcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvLXRleHRcIiAqbmdJZj1cImhhc0pXVCAmJiAhand0RXhwaXJlZCAmJiB0eXBlICE9PSAncm91dGVyJ1wiPlRPIFJFR0lTVEVSIFRISVMgSURFTlRJVFk8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW5mby10ZXh0XCIgKm5nSWY9XCJoYXNKV1QgJiYgIWp3dEV4cGlyZWQgJiYgdHlwZSA9PT0gJ3JvdXRlcidcIj5UTyBSRUdJU1RFUiBUSElTIFJPVVRFUjwvc3Bhbj5cbiAgICAgICAgPGRpdiAoY2xpY2spPVwiaWRlbnRpdGllc1N2Yy5kb3dubG9hZEpXVChqd3QsIGlkZW50aXR5Lm5hbWUpXCIgKm5nSWY9XCJoYXNKV1QgJiYgIWp3dEV4cGlyZWQgJiYgdHlwZSAhPT0gJ3JvdXRlcidcIiBjbGFzcz1cImRvd25sb2FkLWJ1dHRvblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvd25sb2FkLWtleVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdj5ET1dOTE9BRCBFTlJPTExNRU5UIEpXVDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhcC10by1kb3dubG9hZFwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAoY2xpY2spPVwiaWRlbnRpdGllc1N2Yy5jb3B5VG9rZW4odG9rZW4pXCIgKm5nSWY9XCIhand0RXhwaXJlZCAmJiB0eXBlID09PSAncm91dGVyJ1wiIGNsYXNzPVwiZG93bmxvYWQtYnV0dG9uXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjMjMyZjNlIWltcG9ydGFudDtcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb3dubG9hZC1rZXlcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+Q09QWSBFTlJPTExNRU5UIFRPS0VOPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFwLXRvLWRvd25sb2FkXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IChjbGljayk9XCJpZGVudGl0aWVzU3ZjLnJlc2V0SldUKGlkZW50aXR5KVwiICpuZ0lmPVwic2hvd1Jlc2V0VG9rZW5cIiBjbGFzcz1cImRvd25sb2FkLWJ1dHRvblwiID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb3dubG9hZC1rZXlcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+UkVTRVQgRU5ST0xMTUVOVDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhcC10by1kb3dubG9hZFwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAoY2xpY2spPVwicmVpc3N1ZSgpXCIgKm5nSWY9XCJzaG93UmVpc3N1ZVRva2VuXCIgY2xhc3M9XCJkb3dubG9hZC1idXR0b25cIiA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG93bmxvYWQta2V5XCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2PlJFSVNTVUUgRU5ST0xMTUVOVDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhcC10by1kb3dubG9hZFwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvLXRleHRcIiAqbmdJZj1cImhhc0pXVCAmJiAhand0RXhwaXJlZCAmJiB0eXBlICE9PSAncm91dGVyJ1wiPk9SIFNDQU4gUVIgQ09ERTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8cXJjb2RlXG4gICAgICAgICAgICAqbmdJZj1cIiFqd3RFeHBpcmVkICYmIHR5cGUgIT09ICdyb3V0ZXInXCJcbiAgICAgICAgICAgIFtlcnJvckNvcnJlY3Rpb25MZXZlbF09XCInTSdcIiBbcXJkYXRhXT1cImp3dFwiXG4gICAgICAgICAgICBbd2lkdGhdPVwicXJDb2RlU2l6ZVwiIChjbGljayk9XCJleHBhbmRRUkNvZGUoKVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J3FyLWNvZGUtZXhwYW5kYWJsZSc6IGNhbkV4cGFuZH1cIlxuICAgID48L3FyY29kZT5cbiAgICA8ZGl2ICpuZ0lmPVwiIXFyT25seVwiIGNsYXNzPVwicXItY29kZS1idXR0b25zXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW5mby10ZXh0XCIgKm5nSWY9XCIhand0RXhwaXJlZCAmJiB0eXBlID09PSAncm91dGVyJ1wiPk9SPC9zcGFuPlxuICAgICAgICA8ZGl2IChjbGljayk9XCJpZGVudGl0aWVzU3ZjLmRvd25sb2FkSldUKGp3dCwgaWRlbnRpdHkubmFtZSlcIiAqbmdJZj1cIiFqd3RFeHBpcmVkICYmIHR5cGUgPT09ICdyb3V0ZXInXCIgY2xhc3M9XCJkb3dubG9hZC1idXR0b25cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb3dubG9hZC1rZXlcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+RE9XTkxPQUQgRU5ST0xMTUVOVCBKV1Q8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YXAtdG8tZG93bmxvYWRcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW5mby10ZXh0XCIgKm5nSWY9XCIhc2hvd1Jlc2V0VG9rZW5cIj57e2p3dEV4cGlyZWQgPyAnUkVHSVNUUkFUSU9OIEVYUElSRUQnIDogJ0VYUElSRVMnfX0ge3tleHBpcmF0aW9uRGF0ZX19PC9zcGFuPlxuICAgICAgICA8ZGl2IChjbGljayk9XCJyZWVucm9sbCgpXCIgKm5nSWY9XCJzaG93UmVlbnJvbGxUb2tlblwiIGNsYXNzPVwiZG93bmxvYWQtYnV0dG9uXCIgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvd25sb2FkLWtleVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdj5SRUlTU1VFIEVOUk9MTE1FTlQ8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YXAtdG8tZG93bmxvYWRcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXItY29kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcXItY29kZS9xci1jb2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9xci1jb2RlL3FyLWNvZGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFhLE1BQU0sRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxFQUFDLGVBQWUsRUFBMEIsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7OztBQUtsRixNQUthLGVBQWU7SUFpQjFCLFlBQ3dCLFNBQXdDLEVBQ3hDLFVBQXFCLEVBQ0csSUFBUyxFQUM5QyxhQUFvQyxFQUNwQyxjQUFzQztRQUp6QixjQUFTLEdBQVQsU0FBUyxDQUErQjtRQUN4QyxlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQ0csU0FBSSxHQUFKLElBQUksQ0FBSztRQUM5QyxrQkFBYSxHQUFiLGFBQWEsQ0FBdUI7UUFDcEMsbUJBQWMsR0FBZCxjQUFjLENBQXdCO1FBakJ4QyxhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQ25CLFNBQUksR0FBVyxVQUFVLENBQUM7UUFFMUIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUN4QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzFCLGNBQVMsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUl6RSxlQUFVLEdBQUcsR0FBRyxDQUFDO1FB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b3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBPbkNoYW5nZXMsIEluamVjdCwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHtpc0VtcHR5fSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZywgTWF0RGlhbG9nUmVmfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XG5pbXBvcnQge0lkZW50aXRpZXNQYWdlU2VydmljZX0gZnJvbSBcIi4uLy4uL3BhZ2VzL2lkZW50aXRpZXMvaWRlbnRpdGllcy1wYWdlLnNlcnZpY2VcIjtcbmltcG9ydCB7RGlhbG9nUmVmfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2RpYWxvZ1wiO1xuaW1wb3J0IHtFZGdlUm91dGVyc1BhZ2VTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vcGFnZXMvZWRnZS1yb3V0ZXJzL2VkZ2Utcm91dGVycy1wYWdlLnNlcnZpY2VcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXFyLWNvZGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcXItY29kZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3FyLWNvZGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBRckNvZGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuXG4gIEBJbnB1dCgpIGp3dDogYW55O1xuICBASW5wdXQoKSB0b2tlbjogYW55O1xuICBASW5wdXQoKSBleHBpcmF0aW9uOiBhbnk7XG4gIEBJbnB1dCgpIGlkZW50aXR5OiBhbnkgPSB7fTtcbiAgQElucHV0KCkgdHlwZTogc3RyaW5nID0gJ2lkZW50aXR5JztcbiAgQElucHV0KCkgYXV0aGVudGljYXRvcnM6IGFueTtcbiAgQElucHV0KCkgcXJPbmx5OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhbkV4cGFuZDogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgZG9SZWZyZXNoOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgand0RXhwaXJlZDtcbiAgZXhwaXJhdGlvbkRhdGU7XG4gIHFyQ29kZVNpemUgPSAyMDA7XG4gIGlzTW9kYWwgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8UXJDb2RlQ29tcG9uZW50PixcbiAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZGlhbG9nRm9ybTogTWF0RGlhbG9nLFxuICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnksXG4gICAgICBwdWJsaWMgaWRlbnRpdGllc1N2YzogSWRlbnRpdGllc1BhZ2VTZXJ2aWNlLFxuICAgICAgcHVibGljIGVkZ2VSb3V0ZXJzU3ZjOiBFZGdlUm91dGVyc1BhZ2VTZXJ2aWNlLFxuICApXG4gIHtcbiAgICBpZiAoIWlzRW1wdHkoZGF0YSkpIHtcbiAgICAgIHRoaXMuand0ID0gZGF0YS5qd3Q7XG4gICAgICB0aGlzLnRva2VuID0gZGF0YS50b2tlbjtcbiAgICAgIHRoaXMuZXhwaXJhdGlvbiA9IGRhdGEuZXhwaXJhdGlvbjtcbiAgICAgIHRoaXMucXJDb2RlU2l6ZSA9IGRhdGEucXJDb2RlU2l6ZSB8fCAyMDA7XG4gICAgICB0aGlzLmp3dEV4cGlyZWQgPSB0aGlzLmdldEp3dEV4cGlyZWQoKTtcbiAgICAgIHRoaXMuZXhwaXJhdGlvbkRhdGUgPSB0aGlzLmdldEV4cGlyYXRpb25EYXRlKCk7XG4gICAgICB0aGlzLmlzTW9kYWwgPSB0cnVlO1xuICAgICAgdGhpcy5pZGVudGl0eSA9IGRhdGEuaWRlbnRpdHk7XG4gICAgICB0aGlzLnFyT25seSA9IGRhdGEucXJPbmx5O1xuICAgIH1cbiAgfVxuXG4gIGdldCBoYXNKV1QoKSB7XG4gICAgcmV0dXJuICFpc0VtcHR5KHRoaXMuand0KTtcbiAgfVxuXG4gIGdldCBzaG93UmVzZXRUb2tlbigpIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoZW50aWNhdG9ycz8uY2VydD8uaWQgfHwgdGhpcy5hdXRoZW50aWNhdG9ycz8udXBkYj8uaWQ7XG4gIH1cblxuICBnZXQgc2hvd1JlaXNzdWVUb2tlbigpIHtcbiAgICByZXR1cm4gKHRoaXMuaWRlbnRpdHk/LmVucm9sbG1lbnQ/Lm90dD8uaWQgfHwgdGhpcy5pZGVudGl0eT8uZW5yb2xsbWVudD8udXBkYj8uaWQpICYmIG1vbWVudCh0aGlzLmV4cGlyYXRpb24pLmlzQmVmb3JlKCk7XG4gIH1cblxuICBnZXQgc2hvd1JlZW5yb2xsVG9rZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuand0RXhwaXJlZCAmJiB0aGlzLnR5cGUgPT09ICdyb3V0ZXInO1xuICB9XG5cbiAgZ2V0Snd0RXhwaXJlZCgpIHtcbiAgICByZXR1cm4gbW9tZW50KHRoaXMuZXhwaXJhdGlvbikuaXNCZWZvcmUoKTtcbiAgfVxuXG4gIGdldEV4cGlyYXRpb25EYXRlKCkge1xuICAgIHJldHVybiBtb21lbnQodGhpcy5leHBpcmF0aW9uKS5sb2NhbCgpLmZvcm1hdCgnTS9EL1lZIGg6bW0gYScpO1xuICB9XG5cbiAgcmVpc3N1ZSgpIHtcbiAgICBjb25zdCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxhbnk+ID0gdGhpcy5pZGVudGl0aWVzU3ZjLnJlaXNzdWVKV1QodGhpcy5pZGVudGl0eSk7XG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIHRoaXMuZG9SZWZyZXNoLmVtaXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJlZW5yb2xsKCkge1xuICAgIHRoaXMuZWRnZVJvdXRlcnNTdmMucmVlbnJvbGwodGhpcy5pZGVudGl0eSkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLmRvUmVmcmVzaC5lbWl0KHRydWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgY29uc3QgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8YW55PiA9IHRoaXMuaWRlbnRpdGllc1N2Yy5yZXNldEpXVCh0aGlzLmlkZW50aXR5KTtcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLmRvUmVmcmVzaC5lbWl0KHRydWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZXhwYW5kUVJDb2RlKCkge1xuICAgIGlmICghdGhpcy5jYW5FeHBhbmQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGp3dDogdGhpcy5qd3QsXG4gICAgICBleHBpcmF0aW9uOiB0aGlzLmV4cGlyYXRpb24sXG4gICAgICBxckNvZGVTaXplOiA0MDAsXG4gICAgICBpZGVudGl0eTogdGhpcy5pZGVudGl0eSxcbiAgICAgIHFyT25seTogdHJ1ZVxuICAgIH07XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2dGb3JtLm9wZW4oUXJDb2RlQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiBkYXRhLFxuICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMuand0RXhwaXJlZCA9IHRoaXMuZ2V0Snd0RXhwaXJlZCgpO1xuICAgIHRoaXMuZXhwaXJhdGlvbkRhdGUgPSB0aGlzLmdldEV4cGlyYXRpb25EYXRlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJxci1jb2RlLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsnbW9kYWwtdmlldyc6IGlzTW9kYWx9XCI+XG4gICAgPGRpdiAqbmdJZj1cIiFxck9ubHlcIiBjbGFzcz1cInFyLWNvZGUtYnV0dG9uc1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImluZm8tdGV4dFwiICpuZ0lmPVwiaGFzSldUICYmICFqd3RFeHBpcmVkICYmIHR5cGUgIT09ICdyb3V0ZXInXCI+VE8gUkVHSVNURVIgVEhJUyBJREVOVElUWTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvLXRleHRcIiAqbmdJZj1cImhhc0pXVCAmJiAhand0RXhwaXJlZCAmJiB0eXBlID09PSAncm91dGVyJ1wiPlRPIFJFR0lTVEVSIFRISVMgUk9VVEVSPC9zcGFuPlxuICAgICAgICA8ZGl2IChjbGljayk9XCJpZGVudGl0aWVzU3ZjLmRvd25sb2FkSldUKGp3dCwgaWRlbnRpdHkubmFtZSlcIiAqbmdJZj1cImhhc0pXVCAmJiAhand0RXhwaXJlZCAmJiB0eXBlICE9PSAncm91dGVyJ1wiIGNsYXNzPVwiZG93bmxvYWQtYnV0dG9uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG93bmxvYWQta2V5XCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2PkRPV05MT0FEIEVOUk9MTE1FTlQgSldUPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFwLXRvLWRvd25sb2FkXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IChjbGljayk9XCJpZGVudGl0aWVzU3ZjLmNvcHlUb2tlbih0b2tlbilcIiAqbmdJZj1cIiFqd3RFeHBpcmVkICYmIHR5cGUgPT09ICdyb3V0ZXInXCIgY2xhc3M9XCJkb3dubG9hZC1idXR0b25cIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICMyMzJmM2UhaW1wb3J0YW50O1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvd25sb2FkLWtleVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdj5DT1BZIEVOUk9MTE1FTlQgVE9LRU48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YXAtdG8tZG93bmxvYWRcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKGNsaWNrKT1cImlkZW50aXRpZXNTdmMucmVzZXRKV1QoaWRlbnRpdHkpXCIgKm5nSWY9XCJzaG93UmVzZXRUb2tlblwiIGNsYXNzPVwiZG93bmxvYWQtYnV0dG9uXCIgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvd25sb2FkLWtleVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdj5SRVNFVCBFTlJPTExNRU5UPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFwLXRvLWRvd25sb2FkXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IChjbGljayk9XCJyZWlzc3VlKClcIiAqbmdJZj1cInNob3dSZWlzc3VlVG9rZW5cIiBjbGFzcz1cImRvd25sb2FkLWJ1dHRvblwiID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb3dubG9hZC1rZXlcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+UkVJU1NVRSBFTlJPTExNRU5UPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFwLXRvLWRvd25sb2FkXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3BhbiBjbGFzcz1cImluZm8tdGV4dFwiICpuZ0lmPVwiaGFzSldUICYmICFqd3RFeHBpcmVkICYmIHR5cGUgIT09ICdyb3V0ZXInXCI+T1IgU0NBTiBRUiBDT0RFPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxxcmNvZGVcbiAgICAgICAgICAgICpuZ0lmPVwiIWp3dEV4cGlyZWQgJiYgdHlwZSAhPT0gJ3JvdXRlcidcIlxuICAgICAgICAgICAgW2Vycm9yQ29ycmVjdGlvbkxldmVsXT1cIidNJ1wiIFtxcmRhdGFdPVwiand0XCJcbiAgICAgICAgICAgIFt3aWR0aF09XCJxckNvZGVTaXplXCIgKGNsaWNrKT1cImV4cGFuZFFSQ29kZSgpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncXItY29kZS1leHBhbmRhYmxlJzogY2FuRXhwYW5kfVwiXG4gICAgPjwvcXJjb2RlPlxuICAgIDxkaXYgKm5nSWY9XCIhcXJPbmx5XCIgY2xhc3M9XCJxci1jb2RlLWJ1dHRvbnNcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvLXRleHRcIiAqbmdJZj1cIiFqd3RFeHBpcmVkICYmIHR5cGUgPT09ICdyb3V0ZXInXCI+T1I8L3NwYW4+XG4gICAgICAgIDxkaXYgKGNsaWNrKT1cImlkZW50aXRpZXNTdmMuZG93bmxvYWRKV1Qoand0LCBpZGVudGl0eS5uYW1lKVwiICpuZ0lmPVwiIWp3dEV4cGlyZWQgJiYgdHlwZSA9PT0gJ3JvdXRlcidcIiBjbGFzcz1cImRvd25sb2FkLWJ1dHRvblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvd25sb2FkLWtleVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdj5ET1dOTE9BRCBFTlJPTExNRU5UIEpXVDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhcC10by1kb3dubG9hZFwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvLXRleHRcIiAqbmdJZj1cIiFzaG93UmVzZXRUb2tlblwiPnt7and0RXhwaXJlZCA/ICdSRUdJU1RSQVRJT04gRVhQSVJFRCcgOiAnRVhQSVJFUyd9fSB7e2V4cGlyYXRpb25EYXRlfX08L3NwYW4+XG4gICAgICAgIDxkaXYgKGNsaWNrKT1cInJlZW5yb2xsKClcIiAqbmdJZj1cInNob3dSZWVucm9sbFRva2VuXCIgY2xhc3M9XCJkb3dubG9hZC1idXR0b25cIiA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG93bmxvYWQta2V5XCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2PlJFSVNTVUUgRU5ST0xMTUVOVDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhcC10by1kb3dubG9hZFwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -44,6 +44,7 @@ class SideToolbarComponent {
|
|
|
44
44
|
this.zacService.initZac();
|
|
45
45
|
app.init();
|
|
46
46
|
this.zacService.initZACButtonListener();
|
|
47
|
+
this.settingsService.initApiVersions(this.settingsService?.settings?.selectedEdgeController);
|
|
47
48
|
this.settingsService.settingsChange.subscribe((results) => {
|
|
48
49
|
this.hideNav = results.hideNav;
|
|
49
50
|
this.initSideBar();
|
|
@@ -125,4 +126,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
125
126
|
type: ViewChild,
|
|
126
127
|
args: ['identityqr']
|
|
127
128
|
}] } });
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9zaWRlYmFycy9zaWRlLXRvb2xiYXIvc2lkZS10b29sYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9zaWRlYmFycy9zaWRlLXRvb2xiYXIvc2lkZS10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQU1yRixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQXFCLE1BQU0sdUNBQXVDLENBQUM7QUFFN0YsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7OztBQUc3QixhQUFhO0FBQ2IsTUFBTSxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUMsR0FBRyxNQUFNLENBQUM7QUFDakQsTUFLYSxvQkFBb0I7SUFRL0IsWUFDc0MsZUFBZ0MsRUFDMUQsTUFBYyxFQUNlLFVBQWtDLEVBQ3BDLFlBQStCLEVBQzFELGFBQW1DO1FBSlQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQzFELFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZSxlQUFVLEdBQVYsVUFBVSxDQUF3QjtRQUNwQyxpQkFBWSxHQUFaLFlBQVksQ0FBbUI7UUFDMUQsa0JBQWEsR0FBYixhQUFhLENBQXNCO1FBWC9DLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsZUFBVSxHQUFHLEtBQUssQ0FBQztJQVVoQixDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUIsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQVcsRUFBRSxFQUFFO1lBQzVELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUMvQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixPQUFPO1NBQ1I7UUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzdCLE1BQU0sUUFBUSxHQUFHO1lBQ2YsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDeEQsQ0FBQTtRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDakMsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQsT0FBTztRQUNMLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLG9DQUFvQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDN0MsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3BFLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDVCxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztJQUN6RCxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLGlCQUFpQixFQUFFLFlBQVksQ0FBQztJQUMvRCxDQUFDOytHQXRGVSxvQkFBb0Isa0JBU25CLGdCQUFnQixtQ0FFaEIsbUJBQW1CLGFBQ25CLGlCQUFpQjttR0FabEIsb0JBQW9CLHVQQ3BDakMsK3BYQTZPTTs7U0R6TU8sb0JBQW9COzRGQUFwQixvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0Usa0JBQWtCOzswQkFhdkIsTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUV2QixNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQzFCLE1BQU07MkJBQUMsaUJBQWlCOytFQU5QLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDSyxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTZXR0aW5nc1NlcnZpY2UsIFNFVFRJTkdTX1NFUlZJQ0V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlXCI7XG5cbmltcG9ydCB7Y2xvbmVEZWVwfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFphY1dyYXBwZXJTZXJ2aWNlQ2xhc3MgfSBmcm9tICcuLi8uLi93cmFwcGVycy96YWMtd3JhcHBlci1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7WklUSV9EQVRBX1NFUlZJQ0UsIFppdGlEYXRhU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3ppdGktZGF0YS5zZXJ2aWNlXCI7XG5pbXBvcnQge1pBQ19XUkFQUEVSX1NFUlZJQ0V9IGZyb20gXCIuLi8uLi93cmFwcGVycy96YWMtd3JhcHBlci1zZXJ2aWNlLmNsYXNzXCI7XG5pbXBvcnQgeyBaQUNfTE9HSU5fU0VSVklDRSwgTG9naW5TZXJ2aWNlQ2xhc3MgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sb2dpbi1zZXJ2aWNlLmNsYXNzJztcblxuaW1wb3J0IHtkZWZlcn0gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHtDb25zb2xlRXZlbnRzU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL2NvbnNvbGUtZXZlbnRzLnNlcnZpY2VcIjtcblxuLy8gQHRzLWlnbm9yZVxuY29uc3Qge2hlYWRlciwgYXBwLCBjb21tYW5kcywgbW9kYWwsICR9ID0gd2luZG93O1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXNpZGUtdG9vbGJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWRlLXRvb2xiYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaWRlLXRvb2xiYXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTaWRlVG9vbGJhckNvbXBvbmVudCB7XG4gIGhpZGVOYXY6Ym9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgbWVudU9wZW4gPSBmYWxzZTtcbiAgc2lkZUJhckluaXQgPSBmYWxzZTtcbiAgYWRkQW55T3BlbiA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ2FwaWpzb24nKSBhcGlqc29uOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdpZGVudGl0eXFyJykgaWRlbnRpdHlxcjogRWxlbWVudFJlZjtcbiAgY29uc3RydWN0b3IoXG4gICAgICBASW5qZWN0KFNFVFRJTkdTX1NFUlZJQ0UpIHByaXZhdGUgc2V0dGluZ3NTZXJ2aWNlOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgQEluamVjdChaQUNfV1JBUFBFUl9TRVJWSUNFKSBwcml2YXRlIHphY1NlcnZpY2U6IFphY1dyYXBwZXJTZXJ2aWNlQ2xhc3MsXG4gICAgICBASW5qZWN0KFpBQ19MT0dJTl9TRVJWSUNFKSBwcml2YXRlIGxvZ2luU2VydmljZTogTG9naW5TZXJ2aWNlQ2xhc3MsXG4gICAgICBwcml2YXRlIGNvbnNvbGVFdmVudHM6IENvbnNvbGVFdmVudHNTZXJ2aWNlLFxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy56YWNTZXJ2aWNlLmluaXRaYWMoKTtcbiAgICBhcHAuaW5pdCgpO1xuICAgIHRoaXMuemFjU2VydmljZS5pbml0WkFDQnV0dG9uTGlzdGVuZXIoKTtcbiAgICB0aGlzLnNldHRpbmdzU2VydmljZS5zZXR0aW5nc0NoYW5nZS5zdWJzY3JpYmUoKHJlc3VsdHM6YW55KSA9PiB7XG4gICAgICB0aGlzLmhpZGVOYXYgPSByZXN1bHRzLmhpZGVOYXY7XG4gICAgICB0aGlzLmluaXRTaWRlQmFyKCk7XG4gICAgfSk7XG4gIH1cblxuICBpbml0U2lkZUJhcigpIHtcbiAgICBpZiAodGhpcy5zaWRlQmFySW5pdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB3aW5kb3dbJ2hlYWRlciddLmluaXQoKTtcbiAgICB3aW5kb3dbJ2xvY2FsZSddLmluaXQoKTtcbiAgICB3aW5kb3dbJ21vZGFsJ10uaW5pdCgpO1xuICAgIHRoaXMuc2lkZUJhckluaXQgPSB0cnVlO1xuICB9XG5cbiAgdG9nZ2xlTmF2KCkge1xuICAgIHRoaXMuaGlkZU5hdiA9ICF0aGlzLmhpZGVOYXY7XG4gICAgY29uc3Qgc2V0dGluZ3MgPSB7XG4gICAgICAuLi50aGlzLnNldHRpbmdzU2VydmljZS5zZXR0aW5ncywgaGlkZU5hdjogdGhpcy5oaWRlTmF2XG4gICAgfVxuICAgIHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNldChzZXR0aW5ncyk7XG4gIH1cblxuICB0b2dnbGVNZW51KCkge1xuICAgIHRoaXMubWVudU9wZW4gPSAhdGhpcy5tZW51T3BlbjtcbiAgfVxuXG4gIGNsb3NlTWVudSgpIHtcbiAgICB0aGlzLm1lbnVPcGVuID0gZmFsc2U7XG4gIH1cblxuICBkb0xvZ291dCgpIHtcbiAgICB0aGlzLmxvZ2luU2VydmljZS5sb2dvdXQoKTtcbiAgfVxuXG4gIGNsb3NlQWRkKCkge1xuICAgIHRoaXMuYWRkQW55T3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgc2hvd0FkZCgpIHtcbiAgICBtb2RhbD8uY2xvc2UoKTtcbiAgICB0aGlzLmFkZEFueU9wZW4gPSB0cnVlO1xuICAgIHRoaXMuY29uc29sZUV2ZW50cy5jbG9zZVNpZGVNb2RhbC5lbWl0KHRydWUpO1xuICAgIGhlYWRlci5zaG93QWRkKCk7XG4gICAgdGhpcy5hcGlqc29uLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gYDx0ZXh0YXJlYSBpZD1cIkFwaUpzb25cIj48L3RleHRhcmVhPmA7XG4gICAgdGhpcy5pZGVudGl0eXFyLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJyc7XG4gICAgJChcIiNJbmxpbmVBZGRJZGVudGl0eUJ1dHRvblwiKS5vZmYoJ2NsaWNrJyk7XG4gICAgJChcIiNJbmxpbmVBZGRTZXJ2aWNlQnV0dG9uXCIpLm9mZignY2xpY2snKTtcbiAgICAkKFwiI0NyZWF0ZUJ1dHRvblwiKS5vZmYoJ2NsaWNrJyk7XG4gICAgJChcIiNDcmVhdGVJZEJ1dHRvblwiKS5vZmYoJ2NsaWNrJyk7XG4gICAgJChcIiNDcmVhdGVCdXR0b25cIikuY2xpY2sod2luZG93WydhcHAnXS5jcmVhdGVTU2VydmljZSk7XG4gICAgJChcIiNDcmVhdGVJZEJ1dHRvblwiKS5jbGljayh3aW5kb3dbJ2FwcCddLmNyZWF0ZUlkKTtcbiAgICAkKFwiI0lubGluZUFkZElkZW50aXR5QnV0dG9uXCIpLmNsaWNrKHdpbmRvd1snYXBwJ10uc2hvd0lubGluZUlkKTtcbiAgICAkKFwiI0lubGluZUFkZFNlcnZpY2VCdXR0b25cIikuY2xpY2sod2luZG93WydhcHAnXS5zaG93SW5saW5lU2VydmljZSk7XG4gICAgZGVmZXIoKCkgPT4ge1xuICAgICAgY29tbWFuZHMuaW5pdCgpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IG1haWxTdXBwb3J0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3NTZXJ2aWNlPy5zdXBwb3J0ZWRGZWF0dXJlcz8ubWFpbGVyO1xuICB9XG5cbiAgZ2V0IG9yZ1N1cHBvcnRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5nc1NlcnZpY2U/LnN1cHBvcnRlZEZlYXR1cmVzPy5vcmdhbml6YXRpb247XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzaWRlVG9vbGJhclwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0b3BCdXR0b25zXCI+XG4gICAgICAgIDxkaXYgaWQ9XCJOYXZpZ2F0aW9uQnV0dG9uXCIgY2xhc3M9XCJjbGlja2FibGUgbWFpbiBBcmVhTmF2aWdhdGlvbiBzZWxlY3RlZFwiIChjbGljayk9XCJ0b2dnbGVOYXYoKTtcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaXJjbGVcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uIGljb24tZ2xvYmVcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJOZXR3b3JrSG92ZXJcIiBjbGFzcz1cImhvdmVyXCIgZGF0YS1pMThuPVwiTmV0d29ya1NldHRpbmdzXCI+TmV0d29yayBTZXR0aW5nczwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIkFkZEJ1dHRvblwiIGNsYXNzPVwiY2xpY2thYmxlXCIgZGF0YS1ob3Zlcj1cIkFkZEhvdmVyXCIgKGNsaWNrKT1cInNob3dBZGQoKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJBZGRIb3ZlclwiIGNsYXNzPVwiaG92ZXJcIj5BZGQgTmV3PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YSBbcm91dGVyTGlua109XCInL2F0dHJpYnV0ZXMnXCI+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiQXR0cmlidXRlc0J1dHRvblwiIGNsYXNzPVwiY2xpY2thYmxlXCIgZGF0YS1ob3Zlcj1cIkF0dHJpYnV0ZUhvdmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uIGljb24taGFzaFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJBdHRyaWJ1dGVIb3ZlclwiIGNsYXNzPVwiaG92ZXJcIj5BdHRyaWJ1dGUgRXhwbG9yZXI8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2E+XG4gICAgICAgIDxkaXYgaWQ9XCJTZWFyY2hCdXR0b25cIiBjbGFzcz1cImNsaWNrYWJsZVwiIGRhdGEtaG92ZXI9XCJTZWFyY2hIb3ZlclwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGlja2VkXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2lyY2xlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBpZD1cIlNlYXJjaEhvdmVyXCIgY2xhc3M9XCJob3ZlclwiIGRhdGEtaTE4bj1cIlNlYXJjaFwiPlNlYXJjaDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYm90dG9tQnV0dG9uc1wiPlxuICAgICAgICA8ZGl2IGlkPVwiQWxlcnRCdXR0b25cIiBjbGFzcz1cImNsaWNrYWJsZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJBbGFybUNvdW50XCIgY2xhc3M9XCJjb3VudFwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIkhlbHBCdXR0b25cIiBjbGFzcz1cImNsaWNrYWJsZSBBcmVhU3VwcG9ydFwiIGRhdGEtbW9kYWw9XCJBZGRNZXNzYWdlTW9kYWxcIiAqbmdJZj1cIm1haWxTdXBwb3J0ZWRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGlja2VkXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2lyY2xlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIk9yZ0J1dHRvblwiIGNsYXNzPVwiY2xpY2thYmxlIEFyZWFPcmdhbml6YXRpb25cIiBkYXRhLW9wZW49XCJBcmVhT3JnYW5pemF0aW9uXCIgW3JvdXRlckxpbmtdPVwiJy9zZXJ2ZXJzJ1wiICpuZ0lmPVwib3JnU3VwcG9ydGVkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xpY2tlZFwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJQcm9maWxlQnV0dG9uXCIgY2xhc3M9XCJjbGlja2FibGUgbWFpblwiIChjbGljayk9XCJ0b2dnbGVNZW51KClcIiAoY2xpY2tPdXRzaWRlKT1cImNsb3NlTWVudSgpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpblwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJQcm9maWxlTWVudVwiIGNsYXNzPVwibWVudVwiIFtuZ0NsYXNzXT1cIntvcGVuOiBtZW51T3Blbn1cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudXRpdGxlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cIlByb2ZpbGVCdXR0b25cIiBjbGFzcz1cImxpbmtcIiBkYXRhLWdvPVwiL3Byb2ZpbGVcIiBkYXRhLWkxOG49XCJFZGl0UHJvZmlsZVwiPkVkaXQgUHJvZmlsZTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJTZXR0aW5nc0J1dHRvblwiIGNsYXNzPVwibGlua1wiIGRhdGEtZ289XCIvc2V0dGluZ3NcIiBkYXRhLWkxOG49XCJQZXJzb25hbFNldHRpbmdzXCI+UGVyc29uYWxcbiAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3NcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiTG9nb3V0QnV0dG9uXCIgY2xhc3M9XCJsaW5rXCIgKGNsaWNrKT1cImRvTG9nb3V0KClcIj5Mb2dvdXQ8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIFN1Ym1pdCBCdWcgVUkgLS0+XG48ZGl2IGlkPVwiQWRkTWVzc2FnZU1vZGFsXCIgY2xhc3M9XCJtb2RhbCBib3ggZnVsbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJzaXplZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2xvc2UgaWNvbi1jbG9zZVwiIChjbGljayk9XCJjbG9zZUFkZCgpXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiIGRhdGEtaTE4bj1cIk1lc3NhZ2VUaXRsZVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3VidGl0bGVcIiBkYXRhLWkxOG49XCJNZXNzYWdlU3ViVGl0bGVcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNwbGl0IHVuc3BsaXRcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlNlbmROYW1lXCIgZGF0YS1pMThuPVwiTWVzc2FnZU5hbWVcIj48L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cIlNlbmROYW1lXCIgdHlwZT1cInRleHRcIiBtYXhsZW5ndGg9XCI1MDBcIiBkYXRhLWkxOG49XCJFbnRlck5hbWVcIi8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlNlbmRFTWFpbFwiIGRhdGEtaTE4bj1cIk1lc3NhZ2VFTWFpbFwiPjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiU2VuZEVNYWlsXCIgdHlwZT1cInRleHRcIiBtYXhsZW5ndGg9XCI1MDBcIiBkYXRhLWkxOG49XCJFbnRlckVNYWlsXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGxhYmVsIGRhdGEtaTE4bj1cIk1lc3NhZ2VcIj48L2xhYmVsPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPHRleHRhcmVhIGlkPVwiU2VuZE1lc3NhZ2VcIiBkYXRhLWkxOG49XCJNZXNzYWdlUGxhY2Vob2xkZXJcIj48L3RleHRhcmVhPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGxhYmVsIGlkPVwiTWVzc2FnZVR5cGVcIiBkYXRhLWkxOG49XCJNZXNzYWdlVHlwZVwiPjwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIHF1YWRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIG9wdGlvblwiIGRhdGEtdHlwZT1cImJ1Z1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uIGljb24tYnVnXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRzXCIgZGF0YS1pMThuPVwiQnVnXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94IGljb24tY2hlY2tcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgb3B0aW9uXCIgZGF0YS10eXBlPVwiZmVhdHVyZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uIGljb24tYnVsYlwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50c1wiIGRhdGEtaTE4bj1cIkZlYXR1cmVSZXF1ZXN0XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94IGljb24tY2hlY2tcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgb3B0aW9uXCIgZGF0YS10eXBlPVwibG92ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uIGljb24taGVhcnRzXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRzXCIgZGF0YS1pMThuPVwiTG92ZUxldHRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveCBpY29uLWNoZWNrXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIG9wdGlvblwiIGRhdGEtdHlwZT1cIm1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbiBpY29uLXF1ZXN0aW9uLXNpZ25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudHNcIiBkYXRhLWkxOG49XCJNZXNzYWdlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94IGljb24tY2hlY2tcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxvdmVkXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlua0J1dHRvbiBjbG9zZXJcIiBkYXRhLWkxOG49XCJPb3BzXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiU2VuZE1lc3NhZ2VCdXR0b25cIiBjbGFzcz1cImJ1dHRvblwiIGRhdGEtaTE4bj1cIlNlbmRcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgaWQ9XCJOb3RpZmljYXRpb25zTWVudVwiPlxuICAgIDxkaXYgaWQ9XCJOb3RpZmljYXRpb25NZW51Q2xvc2VcIiBjbGFzcz1cImNsb3NlIGljb24tY2xvc2VcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXIgdGl0bGVcIiBkYXRhLWkxOG49XCJSZWNlbnROb3RpZmljYXRpb25zXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJDbGVhck5vdGlmaWNhdGlvbnNCdXR0b25cIiBjbGFzcz1cInN1YkxpbmtcIiBkYXRhLWkxOG49XCJDbGVhck5vdGlmaWNhdGlvbnNcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaHJcIj48L2Rpdj5cbiAgICA8ZGl2IGlkPVwiTm90aWZpY2F0aW9uc0xpc3RcIj48L2Rpdj5cbjwvZGl2PlxuPGRpdiBpZD1cIk5vdGlmaWNhdGlvblRlbXBsYXRlXCIgY2xhc3M9XCJncm93bGVyIHJvdyB0ZW1wbGF0ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiID57eyd7e2xldmVsfX0nfX08L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3VidGl0bGVcIj57eyd7e3N1YnRpdGxlfX0nfX08L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidGltZVwiPnt7J3t7dGltZX19J319PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj57eyd7e21lc3NhZ2V9fSd9fTwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpY29uXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoYXNzZXRzL2ltYWdlcy97eyd7e3R5cGV9fSd9fS5wbmcpXCI+PC9kaXY+XG48L2Rpdj5cbjxkaXYgaWQ9XCJBZGRBbnlNb2RhbFwiIGNsYXNzPVwibW9kYWwgYm94XCIgc3R5bGU9XCJoZWlnaHQ6IGZpdC1jb250ZW50OyB3aWR0aDogNjAwcHg7IHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24pO1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjbG9zZSBpY29uLWNsb3NlXCI+PC9kaXY+XG4gICAgPGRpdiBpZD1cIlNlbGVjdDFcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCIgZGF0YS1pMThuPVwiQWRkVGl0bGVcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIlNlbGVjdG9yXCIgY2xhc3M9XCJncmlkIGR1YWxcIj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJJbmxpbmVBZGRJZGVudGl0eUJ1dHRvblwiIGNsYXNzPVwiaWNvbkJ1dHRvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZSBpY29uLWlkZW50aXR5XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgZGF0YS1pMThuPVwiQWRkSWRlbnRpdHlcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBpZD1cIklubGluZUFkZFNlcnZpY2VCdXR0b25cIiBjbGFzcz1cImljb25CdXR0b25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UgaWNvbi1zZXJ2aWNlc1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIGRhdGEtaTE4bj1cIkFkZFNlcnZpY2VcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgaWQ9XCJJbmxpbmVJZGVudGl0eUFyZWFcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgY2xhc3M9XCJhbnlhZGRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCIgZGF0YS1pMThuPVwiQWRkU2ltcGxlSWRlbnRpdHlcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIklkZW50aXR5TG9hZGVyXCIgY2xhc3M9XCJjZW50ZXJcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGRzLXJpcHBsZVwiPjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJJZGVudGl0eTFcIiBjbGFzcz1cImFueWlkXCI+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiSWROYW1lXCIgZGF0YS1pMThuPVwiTmFtZVwiPjwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJJZE5hbWVcIiB0eXBlPVwidGV4dFwiIG1heGxlbmd0aD1cIjUwXCIgZGF0YS1pMThuPVwiRW50ZXJOYW1lXCIgLz5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJJZFJvbGVzXCIgZGF0YS1pMThuPVwiUm9sZUF0dHJpYnV0ZXNcIj48L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBpZD1cIklkUm9sZXNcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25zXCI+XG4gICAgICAgICAgICAgICAgPGRpdj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiQ3JlYXRlSWRCdXR0b25cIiBjbGFzcz1cImJ1dHRvblwiIGRhdGEtaTE4bj1cIkNyZWF0ZVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiSWRlbnRpdHkyXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIGNsYXNzPVwiYW55aWRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiSWRlbnRpdHlRckNvZGVcIiAjaWRlbnRpdHlxcj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBpZD1cIklkZW50aXR5RG93bmxvYWRcIiBjbGFzcz1cImxpbmtCdXR0b25cIiBkYXRhLWkxOG49XCJEb3dubG9hZEpXVFwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJEb25lSWRCdXR0b25cIiBjbGFzcz1cImJ1dHRvblwiIGRhdGEtaTE4bj1cIkRvbmVcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgaWQ9XCJJbmxpbmVTZXJ2aWNlQXJlYVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiBjbGFzcz1cImFueWFkZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIiBkYXRhLWkxOG49XCJBZGRTaW1wbGVTZXJ2aWNlXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJTU2VydmljZUxvYWRlclwiIGNsYXNzPVwiY2VudGVyXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxkcy1yaXBwbGVcIj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiU2VydmljZTFcIiBjbGFzcz1cImFueXNlcnZpY2VcIj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJTU2VydmljZU5hbWVcIiBkYXRhLWkxOG49XCJTZXJ2aWNlTmFtZVwiPjwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJTU2VydmljZU5hbWVcIiB0eXBlPVwidGV4dFwiIG1heGxlbmd0aD1cIjUwXCIgZGF0YS1pMThuPVwiRW50ZXJOYW1lXCIgLz5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJXaGVyZUhvc3RlZFwiIGRhdGEtaTE4bj1cIldoZXJlSG9zdGVkXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJXaGVyZUhvc3RlZFwiPjwvZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIldoYXRJc0l0XCIgZGF0YS1pMThuPVwiV2hhdFNoYXJlXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGFkZHJlc3NGdWxsXCI+XG4gICAgICAgICAgICAgICAgPHNlbGVjdCBpZD1cIkhvc3RlZFByb3RvY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ0Y3BcIj50Y3A8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInVkcFwiPnVkcDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cIkhvc3RlZEhvc3RcIiB0eXBlPVwidGV4dFwiIG1heGxlbmd0aD1cIjEwMFwiIHZhbHVlPVwibG9jYWxob3N0XCIgZGF0YS1pMThuPVwiRWdIb3N0XCIgLz5cbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJIb3N0ZWRQb3J0XCIgdHlwZT1cIm51bWJlclwiIG1heGxlbmd0aD1cIjEwXCIgdmFsdWU9XCI4MFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJXaG9BY2Nlc3Nlc1wiIGRhdGEtaTE4bj1cIldob0FjY2Vzc2VzXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJXaG9BY2Nlc3Nlc1wiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBpZD1cIklzRW5jcnlwdGlvblJlcXVpcmVkXCIgY2xhc3M9XCJmb3JtaW5mb1wiIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgY2hlY2tMYWJlbFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJTaW1wbGVFbmNyeXB0aW9uUmVxdWlyZWRcIiBjbGFzcz1cInRvZ2dsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3dpdGNoXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b2dnbGVMYWJlbFwiIGRhdGEtaTE4bj1cIlJlcXVpcmVFbmNyeXB0aW9uXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJIb3dUb1wiIGRhdGEtaTE4bj1cIkhvd1NoYXJlXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGFkZHJlc3NQb3J0XCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiSG93VG9cIiB0eXBlPVwidGV4dFwiIG1heGxlbmd0aD1cIjEwMFwiIGRhdGEtaTE4bj1cIkVnSG9zdFwiIC8+XG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiSG93VG9Qb3J0XCIgdHlwZT1cIm51bWJlclwiIG1heGxlbmd0aD1cIjEwXCIgdmFsdWU9XCI4MFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25zXCI+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmtCdXR0b24gY2xvc2VyXCIgZGF0YS1pMThuPVwiQ2FuY2VsXCIgc3R5bGU9XCJ3aWR0aDogZml0LWNvbnRlbnQ7XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cIkNyZWF0ZUJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uXCIgZGF0YS1pMThuPVwiQ3JlYXRlXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJTZXJ2aWNlMlwiIGNsYXNzPVwiYW55c2VydmljZVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJTZXJ2aWNlSGFwcGVuXCIgZGF0YS1pMThuPVwiU2VydmljZUhhcHBlblwiPjwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiU2VydmljZUhhcHBlblwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJEb25lU2VydmljZUJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uXCIgZGF0YS1pMThuPVwiRG9uZVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBpZD1cIk9wZXJhdGlvbkNvbW1hbmRzXCIgY2xhc3M9XCJjb21tYW5kc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIiBkYXRhLWkxOG49XCJFeGVjdXRpb25PcGVyYXRpb25zXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJFeGVjdXRpb25TdGVwc1wiPjwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiSWNvbkRvd25sb2FkXCIgY2xhc3M9XCJpY29uIGljb24tZG93bmxvYWRcIj48L2Rpdj5cbiAgICAgICAgPGxhYmVsIGRhdGEtaTE4bj1cIkNMSUNvbW1hbmRzXCI+PC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0ZWRcIj5cbiAgICAgICAgICAgIDxpbnB1dCBpZD1cIkNMSUNvbW1hbmRzXCIgdHlwZT1cInRleHRcIiByZWFkb25seS8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1jb3B5IGNvcHlcIiBkYXRhLWNvcHk9XCJDTElDb21tYW5kc1wiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGxhYmVsIGRhdGEtaTE4bj1cIkFQSUNhbGxzXCI+PC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0ZWRcIj5cbiAgICAgICAgICAgIDxpbnB1dCBpZD1cIkFwaUNhbGxcIiB0eXBlPVwidGV4dFwiIHJlYWRvbmx5IC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1jb3B5IGNvcHlcIiBkYXRhLWNvcHk9XCJBcGlDYWxsXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRlZFwiPlxuICAgICAgICAgICAgPGRpdiAjYXBpanNvbj48dGV4dGFyZWEgaWQ9XCJBcGlKc29uXCI+PC90ZXh0YXJlYT48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvcHkgY29weSBzd2FwXCIgZGF0YS1jb3B5PVwiQXBpSnNvblwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuPC9kaXY+Il19
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9zaWRlYmFycy9zaWRlLXRvb2xiYXIvc2lkZS10b29sYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9zaWRlYmFycy9zaWRlLXRvb2xiYXIvc2lkZS10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQU1yRixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQXFCLE1BQU0sdUNBQXVDLENBQUM7QUFFN0YsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7OztBQUc3QixhQUFhO0FBQ2IsTUFBTSxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUMsR0FBRyxNQUFNLENBQUM7QUFDakQsTUFLYSxvQkFBb0I7SUFRL0IsWUFDc0MsZUFBZ0MsRUFDMUQsTUFBYyxFQUNlLFVBQWtDLEVBQ3BDLFlBQStCLEVBQzFELGFBQW1DO1FBSlQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQzFELFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZSxlQUFVLEdBQVYsVUFBVSxDQUF3QjtRQUNwQyxpQkFBWSxHQUFaLFlBQVksQ0FBbUI7UUFDMUQsa0JBQWEsR0FBYixhQUFh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QUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDcEUsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNULFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxDQUFDO0lBQy9ELENBQUM7K0dBdkZVLG9CQUFvQixrQkFTbkIsZ0JBQWdCLG1DQUVoQixtQkFBbUIsYUFDbkIsaUJBQWlCO21HQVpsQixvQkFBb0IsdVBDcENqQywrcFhBNk9NOztTRHpNTyxvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxrQkFBa0I7OzBCQWF2QixNQUFNOzJCQUFDLGdCQUFnQjs7MEJBRXZCLE1BQU07MkJBQUMsbUJBQW1COzswQkFDMUIsTUFBTTsyQkFBQyxpQkFBaUI7K0VBTlAsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQUNLLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBJbmplY3QsIFZpZXdDaGlsZCwgRWxlbWVudFJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1NldHRpbmdzU2VydmljZSwgU0VUVElOR1NfU0VSVklDRX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3NldHRpbmdzLnNlcnZpY2VcIjtcblxuaW1wb3J0IHtjbG9uZURlZXB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgWmFjV3JhcHBlclNlcnZpY2VDbGFzcyB9IGZyb20gJy4uLy4uL3dyYXBwZXJzL3phYy13cmFwcGVyLXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHtaSVRJX0RBVEFfU0VSVklDRSwgWml0aURhdGFTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMveml0aS1kYXRhLnNlcnZpY2VcIjtcbmltcG9ydCB7WkFDX1dSQVBQRVJfU0VSVklDRX0gZnJvbSBcIi4uLy4uL3dyYXBwZXJzL3phYy13cmFwcGVyLXNlcnZpY2UuY2xhc3NcIjtcbmltcG9ydCB7IFpBQ19MT0dJTl9TRVJWSUNFLCBMb2dpblNlcnZpY2VDbGFzcyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xvZ2luLXNlcnZpY2UuY2xhc3MnO1xuXG5pbXBvcnQge2RlZmVyfSBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQge0NvbnNvbGVFdmVudHNTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvY29uc29sZS1ldmVudHMuc2VydmljZVwiO1xuXG4vLyBAdHMtaWdub3JlXG5jb25zdCB7aGVhZGVyLCBhcHAsIGNvbW1hbmRzLCBtb2RhbCwgJH0gPSB3aW5kb3c7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItc2lkZS10b29sYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZGUtdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpZGUtdG9vbGJhci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNpZGVUb29sYmFyQ29tcG9uZW50IHtcbiAgaGlkZU5hdjpib29sZWFuIHwgdW5kZWZpbmVkO1xuICBtZW51T3BlbiA9IGZhbHNlO1xuICBzaWRlQmFySW5pdCA9IGZhbHNlO1xuICBhZGRBbnlPcGVuID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnYXBpanNvbicpIGFwaWpzb246IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2lkZW50aXR5cXInKSBpZGVudGl0eXFyOiBFbGVtZW50UmVmO1xuICBjb25zdHJ1Y3RvcihcbiAgICAgIEBJbmplY3QoU0VUVElOR1NfU0VSVklDRSkgcHJpdmF0ZSBzZXR0aW5nc1NlcnZpY2U6IFNldHRpbmdzU2VydmljZSxcbiAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICBASW5qZWN0KFpBQ19XUkFQUEVSX1NFUlZJQ0UpIHByaXZhdGUgemFjU2VydmljZTogWmFjV3JhcHBlclNlcnZpY2VDbGFzcyxcbiAgICAgIEBJbmplY3QoWkFDX0xPR0lOX1NFUlZJQ0UpIHByaXZhdGUgbG9naW5TZXJ2aWNlOiBMb2dpblNlcnZpY2VDbGFzcyxcbiAgICAgIHByaXZhdGUgY29uc29sZUV2ZW50czogQ29uc29sZUV2ZW50c1NlcnZpY2UsXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnphY1NlcnZpY2UuaW5pdFphYygpO1xuICAgIGFwcC5pbml0KCk7XG4gICAgdGhpcy56YWNTZXJ2aWNlLmluaXRaQUNCdXR0b25MaXN0ZW5lcigpO1xuICAgIHRoaXMuc2V0dGluZ3NTZXJ2aWNlLmluaXRBcGlWZXJzaW9ucyh0aGlzLnNldHRpbmdzU2VydmljZT8uc2V0dGluZ3M/LnNlbGVjdGVkRWRnZUNvbnRyb2xsZXIpO1xuICAgIHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzQ2hhbmdlLnN1YnNjcmliZSgocmVzdWx0czphbnkpID0+IHtcbiAgICAgIHRoaXMuaGlkZU5hdiA9IHJlc3VsdHMuaGlkZU5hdjtcbiAgICAgIHRoaXMuaW5pdFNpZGVCYXIoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGluaXRTaWRlQmFyKCkge1xuICAgIGlmICh0aGlzLnNpZGVCYXJJbml0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHdpbmRvd1snaGVhZGVyJ10uaW5pdCgpO1xuICAgIHdpbmRvd1snbG9jYWxlJ10uaW5pdCgpO1xuICAgIHdpbmRvd1snbW9kYWwnXS5pbml0KCk7XG4gICAgdGhpcy5zaWRlQmFySW5pdCA9IHRydWU7XG4gIH1cblxuICB0b2dnbGVOYXYoKSB7XG4gICAgdGhpcy5oaWRlTmF2ID0gIXRoaXMuaGlkZU5hdjtcbiAgICBjb25zdCBzZXR0aW5ncyA9IHtcbiAgICAgIC4uLnRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLCBoaWRlTmF2OiB0aGlzLmhpZGVOYXZcbiAgICB9XG4gICAgdGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2V0KHNldHRpbmdzKTtcbiAgfVxuXG4gIHRvZ2dsZU1lbnUoKSB7XG4gICAgdGhpcy5tZW51T3BlbiA9ICF0aGlzLm1lbnVPcGVuO1xuICB9XG5cbiAgY2xvc2VNZW51KCkge1xuICAgIHRoaXMubWVudU9wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIGRvTG9nb3V0KCkge1xuICAgIHRoaXMubG9naW5TZXJ2aWNlLmxvZ291dCgpO1xuICB9XG5cbiAgY2xvc2VBZGQoKSB7XG4gICAgdGhpcy5hZGRBbnlPcGVuID0gZmFsc2U7XG4gIH1cblxuICBzaG93QWRkKCkge1xuICAgIG1vZGFsPy5jbG9zZSgpO1xuICAgIHRoaXMuYWRkQW55T3BlbiA9IHRydWU7XG4gICAgdGhpcy5jb25zb2xlRXZlbnRzLmNsb3NlU2lkZU1vZGFsLmVtaXQodHJ1ZSk7XG4gICAgaGVhZGVyLnNob3dBZGQoKTtcbiAgICB0aGlzLmFwaWpzb24ubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSBgPHRleHRhcmVhIGlkPVwiQXBpSnNvblwiPjwvdGV4dGFyZWE+YDtcbiAgICB0aGlzLmlkZW50aXR5cXIubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAnJztcbiAgICAkKFwiI0lubGluZUFkZElkZW50aXR5QnV0dG9uXCIpLm9mZignY2xpY2snKTtcbiAgICAkKFwiI0lubGluZUFkZFNlcnZpY2VCdXR0b25cIikub2ZmKCdjbGljaycpO1xuICAgICQoXCIjQ3JlYXRlQnV0dG9uXCIpLm9mZignY2xpY2snKTtcbiAgICAkKFwiI0NyZWF0ZUlkQnV0dG9uXCIpLm9mZignY2xpY2snKTtcbiAgICAkKFwiI0NyZWF0ZUJ1dHRvblwiKS5jbGljayh3aW5kb3dbJ2FwcCddLmNyZWF0ZVNTZXJ2aWNlKTtcbiAgICAkKFwiI0NyZWF0ZUlkQnV0dG9uXCIpLmNsaWNrKHdpbmRvd1snYXBwJ10uY3JlYXRlSWQpO1xuICAgICQoXCIjSW5saW5lQWRkSWRlbnRpdHlCdXR0b25cIikuY2xpY2sod2luZG93WydhcHAnXS5zaG93SW5saW5lSWQpO1xuICAgICQoXCIjSW5saW5lQWRkU2VydmljZUJ1dHRvblwiKS5jbGljayh3aW5kb3dbJ2FwcCddLnNob3dJbmxpbmVTZXJ2aWNlKTtcbiAgICBkZWZlcigoKSA9PiB7XG4gICAgICBjb21tYW5kcy5pbml0KCk7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgbWFpbFN1cHBvcnRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5nc1NlcnZpY2U/LnN1cHBvcnRlZEZlYXR1cmVzPy5tYWlsZXI7XG4gIH1cblxuICBnZXQgb3JnU3VwcG9ydGVkKCkge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzU2VydmljZT8uc3VwcG9ydGVkRmVhdHVyZXM/Lm9yZ2FuaXphdGlvbjtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNpZGVUb29sYmFyXCI+XG4gICAgPGRpdiBjbGFzcz1cInRvcEJ1dHRvbnNcIj5cbiAgICAgICAgPGRpdiBpZD1cIk5hdmlnYXRpb25CdXR0b25cIiBjbGFzcz1cImNsaWNrYWJsZSBtYWluIEFyZWFOYXZpZ2F0aW9uIHNlbGVjdGVkXCIgKGNsaWNrKT1cInRvZ2dsZU5hdigpO1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24gaWNvbi1nbG9iZVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBpZD1cIk5ldHdvcmtIb3ZlclwiIGNsYXNzPVwiaG92ZXJcIiBkYXRhLWkxOG49XCJOZXR3b3JrU2V0dGluZ3NcIj5OZXR3b3JrIFNldHRpbmdzPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiQWRkQnV0dG9uXCIgY2xhc3M9XCJjbGlja2FibGVcIiBkYXRhLWhvdmVyPVwiQWRkSG92ZXJcIiAoY2xpY2spPVwic2hvd0FkZCgpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2lyY2xlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBpZD1cIkFkZEhvdmVyXCIgY2xhc3M9XCJob3ZlclwiPkFkZCBOZXc8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIicvYXR0cmlidXRlcydcIj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJBdHRyaWJ1dGVzQnV0dG9uXCIgY2xhc3M9XCJjbGlja2FibGVcIiBkYXRhLWhvdmVyPVwiQXR0cmlidXRlSG92ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2lyY2xlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24gaWNvbi1oYXNoXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cIkF0dHJpYnV0ZUhvdmVyXCIgY2xhc3M9XCJob3ZlclwiPkF0dHJpYnV0ZSBFeHBsb3JlcjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGRpdiBpZD1cIlNlYXJjaEJ1dHRvblwiIGNsYXNzPVwiY2xpY2thYmxlXCIgZGF0YS1ob3Zlcj1cIlNlYXJjaEhvdmVyXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsaWNrZWRcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaXJjbGVcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiU2VhcmNoSG92ZXJcIiBjbGFzcz1cImhvdmVyXCIgZGF0YS1pMThuPVwiU2VhcmNoXCI+U2VhcmNoPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJib3R0b21CdXR0b25zXCI+XG4gICAgICAgIDxkaXYgaWQ9XCJBbGVydEJ1dHRvblwiIGNsYXNzPVwiY2xpY2thYmxlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2lyY2xlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBpZD1cIkFsYXJtQ291bnRcIiBjbGFzcz1cImNvdW50XCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiSGVscEJ1dHRvblwiIGNsYXNzPVwiY2xpY2thYmxlIEFyZWFTdXBwb3J0XCIgZGF0YS1tb2RhbD1cIkFkZE1lc3NhZ2VNb2RhbFwiICpuZ0lmPVwibWFpbFN1cHBvcnRlZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsaWNrZWRcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaXJjbGVcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiT3JnQnV0dG9uXCIgY2xhc3M9XCJjbGlja2FibGUgQXJlYU9yZ2FuaXphdGlvblwiIGRhdGEtb3Blbj1cIkFyZWFPcmdhbml6YXRpb25cIiBbcm91dGVyTGlua109XCInL3NlcnZlcnMnXCIgKm5nSWY9XCJvcmdTdXBwb3J0ZWRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGlja2VkXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2lyY2xlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIlByb2ZpbGVCdXR0b25cIiBjbGFzcz1cImNsaWNrYWJsZSBtYWluXCIgKGNsaWNrKT1cInRvZ2dsZU1lbnUoKVwiIChjbGlja091dHNpZGUpPVwiY2xvc2VNZW51KClcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2lyY2xlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBpZD1cIlByb2ZpbGVNZW51XCIgY2xhc3M9XCJtZW51XCIgW25nQ2xhc3NdPVwie29wZW46IG1lbnVPcGVufVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW51dGl0bGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiUHJvZmlsZUJ1dHRvblwiIGNsYXNzPVwibGlua1wiIGRhdGEtZ289XCIvcHJvZmlsZVwiIGRhdGEtaTE4bj1cIkVkaXRQcm9maWxlXCI+RWRpdCBQcm9maWxlPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cIlNldHRpbmdzQnV0dG9uXCIgY2xhc3M9XCJsaW5rXCIgZGF0YS1nbz1cIi9zZXR0aW5nc1wiIGRhdGEtaTE4bj1cIlBlcnNvbmFsU2V0dGluZ3NcIj5QZXJzb25hbFxuICAgICAgICAgICAgICAgICAgICBTZXR0aW5nc1xuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJMb2dvdXRCdXR0b25cIiBjbGFzcz1cImxpbmtcIiAoY2xpY2spPVwiZG9Mb2dvdXQoKVwiPkxvZ291dDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gU3VibWl0IEJ1ZyBVSSAtLT5cbjxkaXYgaWQ9XCJBZGRNZXNzYWdlTW9kYWxcIiBjbGFzcz1cIm1vZGFsIGJveCBmdWxsXCI+XG4gICAgPGRpdiBjbGFzcz1cInNpemVkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjbG9zZSBpY29uLWNsb3NlXCIgKGNsaWNrKT1cImNsb3NlQWRkKClcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCIgZGF0YS1pMThuPVwiTWVzc2FnZVRpdGxlXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdWJ0aXRsZVwiIGRhdGEtaTE4bj1cIk1lc3NhZ2VTdWJUaXRsZVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3BsaXQgdW5zcGxpdFwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiU2VuZE5hbWVcIiBkYXRhLWkxOG49XCJNZXNzYWdlTmFtZVwiPjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiU2VuZE5hbWVcIiB0eXBlPVwidGV4dFwiIG1heGxlbmd0aD1cIjUwMFwiIGRhdGEtaTE4bj1cIkVudGVyTmFtZVwiLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiU2VuZEVNYWlsXCIgZGF0YS1pMThuPVwiTWVzc2FnZUVNYWlsXCI+PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJTZW5kRU1haWxcIiB0eXBlPVwidGV4dFwiIG1heGxlbmd0aD1cIjUwMFwiIGRhdGEtaTE4bj1cIkVudGVyRU1haWxcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bGFiZWwgZGF0YS1pMThuPVwiTWVzc2FnZVwiPjwvbGFiZWw+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8dGV4dGFyZWEgaWQ9XCJTZW5kTWVzc2FnZVwiIGRhdGEtaTE4bj1cIk1lc3NhZ2VQbGFjZWhvbGRlclwiPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bGFiZWwgaWQ9XCJNZXNzYWdlVHlwZVwiIGRhdGEtaTE4bj1cIk1lc3NhZ2VUeXBlXCI+PC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgcXVhZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgb3B0aW9uXCIgZGF0YS10eXBlPVwiYnVnXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24gaWNvbi1idWdcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudHNcIiBkYXRhLWkxOG49XCJCdWdcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3ggaWNvbi1jaGVja1wiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBvcHRpb25cIiBkYXRhLXR5cGU9XCJmZWF0dXJlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24gaWNvbi1idWxiXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRzXCIgZGF0YS1pMThuPVwiRmVhdHVyZVJlcXVlc3RcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3ggaWNvbi1jaGVja1wiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBvcHRpb25cIiBkYXRhLXR5cGU9XCJsb3ZlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24gaWNvbi1oZWFydHNcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudHNcIiBkYXRhLWkxOG49XCJMb3ZlTGV0dGVyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94IGljb24tY2hlY2tcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgb3B0aW9uXCIgZGF0YS10eXBlPVwibWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uIGljb24tcXVlc3Rpb24tc2lnblwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50c1wiIGRhdGEtaTE4bj1cIk1lc3NhZ2VcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3ggaWNvbi1jaGVja1wiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibG92ZWRcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5rQnV0dG9uIGNsb3NlclwiIGRhdGEtaTE4bj1cIk9vcHNcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJTZW5kTWVzc2FnZUJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uXCIgZGF0YS1pMThuPVwiU2VuZFwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBpZD1cIk5vdGlmaWNhdGlvbnNNZW51XCI+XG4gICAgPGRpdiBpZD1cIk5vdGlmaWNhdGlvbk1lbnVDbG9zZVwiIGNsYXNzPVwiY2xvc2UgaWNvbi1jbG9zZVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlciB0aXRsZVwiIGRhdGEtaTE4bj1cIlJlY2VudE5vdGlmaWNhdGlvbnNcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIkNsZWFyTm90aWZpY2F0aW9uc0J1dHRvblwiIGNsYXNzPVwic3ViTGlua1wiIGRhdGEtaTE4bj1cIkNsZWFyTm90aWZpY2F0aW9uc1wiPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJoclwiPjwvZGl2PlxuICAgIDxkaXYgaWQ9XCJOb3RpZmljYXRpb25zTGlzdFwiPjwvZGl2PlxuPC9kaXY+XG48ZGl2IGlkPVwiTm90aWZpY2F0aW9uVGVtcGxhdGVcIiBjbGFzcz1cImdyb3dsZXIgcm93IHRlbXBsYXRlXCI+XG4gICAgPGRpdiBjbGFzcz1cInRpdGxlXCIgPnt7J3t7bGV2ZWx9fSd9fTwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzdWJ0aXRsZVwiPnt7J3t7c3VidGl0bGV9fSd9fTwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ0aW1lXCI+e3sne3t0aW1lfX0nfX08L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPnt7J3t7bWVzc2FnZX19J319PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImljb25cIiBzdHlsZT1cImJhY2tncm91bmQtaW1hZ2U6IHVybChhc3NldHMvaW1hZ2VzL3t7J3t7dHlwZX19J319LnBuZylcIj48L2Rpdj5cbjwvZGl2PlxuPGRpdiBpZD1cIkFkZEFueU1vZGFsXCIgY2xhc3M9XCJtb2RhbCBib3hcIiBzdHlsZT1cImhlaWdodDogZml0LWNvbnRlbnQ7IHdpZHRoOiA2MDBweDsgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbik7XCI+XG4gICAgPGRpdiBjbGFzcz1cImNsb3NlIGljb24tY2xvc2VcIj48L2Rpdj5cbiAgICA8ZGl2IGlkPVwiU2VsZWN0MVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIiBkYXRhLWkxOG49XCJBZGRUaXRsZVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiU2VsZWN0b3JcIiBjbGFzcz1cImdyaWQgZHVhbFwiPlxuICAgICAgICAgICAgPGRpdiBpZD1cIklubGluZUFkZElkZW50aXR5QnV0dG9uXCIgY2xhc3M9XCJpY29uQnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlIGljb24taWRlbnRpdHlcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiBkYXRhLWkxOG49XCJBZGRJZGVudGl0eVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiSW5saW5lQWRkU2VydmljZUJ1dHRvblwiIGNsYXNzPVwiaWNvbkJ1dHRvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZSBpY29uLXNlcnZpY2VzXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgZGF0YS1pMThuPVwiQWRkU2VydmljZVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBpZD1cIklubGluZUlkZW50aXR5QXJlYVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiBjbGFzcz1cImFueWFkZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIiBkYXRhLWkxOG49XCJBZGRTaW1wbGVJZGVudGl0eVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiSWRlbnRpdHlMb2FkZXJcIiBjbGFzcz1cImNlbnRlclwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZHMtcmlwcGxlXCI+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIklkZW50aXR5MVwiIGNsYXNzPVwiYW55aWRcIj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJJZE5hbWVcIiBkYXRhLWkxOG49XCJOYW1lXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBpZD1cIklkTmFtZVwiIHR5cGU9XCJ0ZXh0XCIgbWF4bGVuZ3RoPVwiNTBcIiBkYXRhLWkxOG49XCJFbnRlck5hbWVcIiAvPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIklkUm9sZXNcIiBkYXRhLWkxOG49XCJSb2xlQXR0cmlidXRlc1wiPjwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiSWRSb2xlc1wiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJDcmVhdGVJZEJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uXCIgZGF0YS1pMThuPVwiQ3JlYXRlXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJJZGVudGl0eTJcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgY2xhc3M9XCJhbnlpZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJJZGVudGl0eVFyQ29kZVwiICNpZGVudGl0eXFyPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiSWRlbnRpdHlEb3dubG9hZFwiIGNsYXNzPVwibGlua0J1dHRvblwiIGRhdGEtaTE4bj1cIkRvd25sb2FkSldUXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cIkRvbmVJZEJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uXCIgZGF0YS1pMThuPVwiRG9uZVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBpZD1cIklubGluZVNlcnZpY2VBcmVhXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIGNsYXNzPVwiYW55YWRkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiIGRhdGEtaTE4bj1cIkFkZFNpbXBsZVNlcnZpY2VcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIlNTZXJ2aWNlTG9hZGVyXCIgY2xhc3M9XCJjZW50ZXJcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGRzLXJpcHBsZVwiPjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJTZXJ2aWNlMVwiIGNsYXNzPVwiYW55c2VydmljZVwiPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlNTZXJ2aWNlTmFtZVwiIGRhdGEtaTE4bj1cIlNlcnZpY2VOYW1lXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBpZD1cIlNTZXJ2aWNlTmFtZVwiIHR5cGU9XCJ0ZXh0XCIgbWF4bGVuZ3RoPVwiNTBcIiBkYXRhLWkxOG49XCJFbnRlck5hbWVcIiAvPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIldoZXJlSG9zdGVkXCIgZGF0YS1pMThuPVwiV2hlcmVIb3N0ZWRcIj48L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBpZD1cIldoZXJlSG9zdGVkXCI+PC9kaXY+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiV2hhdElzSXRcIiBkYXRhLWkxOG49XCJXaGF0U2hhcmVcIj48L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgYWRkcmVzc0Z1bGxcIj5cbiAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPVwiSG9zdGVkUHJvdG9jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInRjcFwiPnRjcDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwidWRwXCI+dWRwPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiSG9zdGVkSG9zdFwiIHR5cGU9XCJ0ZXh0XCIgbWF4bGVuZ3RoPVwiMTAwXCIgdmFsdWU9XCJsb2NhbGhvc3RcIiBkYXRhLWkxOG49XCJFZ0hvc3RcIiAvPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cIkhvc3RlZFBvcnRcIiB0eXBlPVwibnVtYmVyXCIgbWF4bGVuZ3RoPVwiMTBcIiB2YWx1ZT1cIjgwXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIldob0FjY2Vzc2VzXCIgZGF0YS1pMThuPVwiV2hvQWNjZXNzZXNcIj48L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBpZD1cIldob0FjY2Vzc2VzXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiSXNFbmNyeXB0aW9uUmVxdWlyZWRcIiBjbGFzcz1cImZvcm1pbmZvXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBjaGVja0xhYmVsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cIlNpbXBsZUVuY3J5cHRpb25SZXF1aXJlZFwiIGNsYXNzPVwidG9nZ2xlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzd2l0Y2hcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvZ2dsZUxhYmVsXCIgZGF0YS1pMThuPVwiUmVxdWlyZUVuY3J5cHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIkhvd1RvXCIgZGF0YS1pMThuPVwiSG93U2hhcmVcIj48L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgYWRkcmVzc1BvcnRcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJIb3dUb1wiIHR5cGU9XCJ0ZXh0XCIgbWF4bGVuZ3RoPVwiMTAwXCIgZGF0YS1pMThuPVwiRWdIb3N0XCIgLz5cbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJIb3dUb1BvcnRcIiB0eXBlPVwibnVtYmVyXCIgbWF4bGVuZ3RoPVwiMTBcIiB2YWx1ZT1cIjgwXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlua0J1dHRvbiBjbG9zZXJcIiBkYXRhLWkxOG49XCJDYW5jZWxcIiBzdHlsZT1cIndpZHRoOiBmaXQtY29udGVudDtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiQ3JlYXRlQnV0dG9uXCIgY2xhc3M9XCJidXR0b25cIiBkYXRhLWkxOG49XCJDcmVhdGVcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIlNlcnZpY2UyXCIgY2xhc3M9XCJhbnlzZXJ2aWNlXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlNlcnZpY2VIYXBwZW5cIiBkYXRhLWkxOG49XCJTZXJ2aWNlSGFwcGVuXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJTZXJ2aWNlSGFwcGVuXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cIkRvbmVTZXJ2aWNlQnV0dG9uXCIgY2xhc3M9XCJidXR0b25cIiBkYXRhLWkxOG49XCJEb25lXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGlkPVwiT3BlcmF0aW9uQ29tbWFuZHNcIiBjbGFzcz1cImNvbW1hbmRzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiIGRhdGEtaTE4bj1cIkV4ZWN1dGlvbk9wZXJhdGlvbnNcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIkV4ZWN1dGlvblN0ZXBzXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJJY29uRG93bmxvYWRcIiBjbGFzcz1cImljb24gaWNvbi1kb3dubG9hZFwiPjwvZGl2PlxuICAgICAgICA8bGFiZWwgZGF0YS1pMThuPVwiQ0xJQ29tbWFuZHNcIj48L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRlZFwiPlxuICAgICAgICAgICAgPGlucHV0IGlkPVwiQ0xJQ29tbWFuZHNcIiB0eXBlPVwidGV4dFwiIHJlYWRvbmx5Lz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvcHkgY29weVwiIGRhdGEtY29weT1cIkNMSUNvbW1hbmRzXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bGFiZWwgZGF0YS1pMThuPVwiQVBJQ2FsbHNcIj48L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRlZFwiPlxuICAgICAgICAgICAgPGlucHV0IGlkPVwiQXBpQ2FsbFwiIHR5cGU9XCJ0ZXh0XCIgcmVhZG9ubHkgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvcHkgY29weVwiIGRhdGEtY29weT1cIkFwaUNhbGxcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGVkXCI+XG4gICAgICAgICAgICA8ZGl2ICNhcGlqc29uPjx0ZXh0YXJlYSBpZD1cIkFwaUpzb25cIj48L3RleHRhcmVhPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29weSBjb3B5IHN3YXBcIiBkYXRhLWNvcHk9XCJBcGlKc29uXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG48L2Rpdj4iXX0=
|