@hitsoft/e-donusum 1.0.62 → 1.0.64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/config/providers/hit-providers/auto-send-rule-route.provider.d.ts +9 -0
  2. package/esm2020/config/e-donusum-config.module.mjs +3 -1
  3. package/esm2020/config/providers/auto-send-rule-doc-type-route.provider.mjs +2 -2
  4. package/esm2020/config/providers/auto-send-rule-route.provider.mjs +2 -2
  5. package/esm2020/config/providers/auto-send-rule-scenario-route.provider.mjs +2 -2
  6. package/esm2020/config/providers/hit-providers/auto-send-rule-route.provider.mjs +20 -0
  7. package/esm2020/lib/auto-send-rules/auto-send-rule/auto-send-rule-routing.module.mjs +15 -3
  8. package/esm2020/lib/auto-send-rules/auto-send-rule/components/auto-send-rule.component.mjs +5 -4
  9. package/esm2020/lib/components/hit-auto-send-rules/hit-auto-send-rule.component.mjs +297 -0
  10. package/esm2020/lib/components/hit-auto-send-rules/hit-auto-send-rule.module.mjs +73 -0
  11. package/esm2020/lib/components/hit-document-serial/hit-document-serial.component.mjs +28 -18
  12. package/esm2020/lib/components/hit-paramas-invoices/hit-params-invoice.component.mjs +6 -4
  13. package/esm2020/lib/components/hit-params-dispatches/hit-params-dispatch.component.mjs +6 -4
  14. package/esm2020/lib/e-donusum-routing.module.mjs +3 -1
  15. package/esm2020/lib/e-donusum.module.mjs +6 -1
  16. package/esm2020/lib/hit-proxy/hit-auto-send-rule-doc-types/hit-auto-send-rule-doc-type.service.mjs +23 -0
  17. package/esm2020/lib/hit-proxy/hit-auto-send-rule-scenarios/hit-auto-send-rule-scenario.service.mjs +23 -0
  18. package/esm2020/lib/hit-proxy/hit-auto-send-rules/hit-auto-send-rule.service.mjs +59 -0
  19. package/esm2020/lib/hit-proxy/hit-auto-send-rules/models.mjs +2 -0
  20. package/esm2020/lib/hit-proxy/hit-document-serials/hit-document-serial.service.mjs +6 -1
  21. package/esm2020/lib/proxy/auto-send-rule-doc-types/index.mjs +3 -0
  22. package/esm2020/lib/proxy/auto-send-rule-scenarios/index.mjs +3 -0
  23. package/esm2020/lib/proxy/auto-send-rules/auto-send-rule.service.mjs +2 -2
  24. package/esm2020/lib/proxy/auto-send-rules/index.mjs +3 -0
  25. package/esm2020/lib/proxy/auto-send-rules/models.mjs +1 -1
  26. package/fesm2015/hitsoft-e-donusum-config.mjs +141 -122
  27. package/fesm2015/hitsoft-e-donusum-config.mjs.map +1 -1
  28. package/fesm2015/hitsoft-e-donusum.mjs +503 -32
  29. package/fesm2015/hitsoft-e-donusum.mjs.map +1 -1
  30. package/fesm2020/hitsoft-e-donusum-config.mjs +141 -122
  31. package/fesm2020/hitsoft-e-donusum-config.mjs.map +1 -1
  32. package/fesm2020/hitsoft-e-donusum.mjs +500 -32
  33. package/fesm2020/hitsoft-e-donusum.mjs.map +1 -1
  34. package/lib/components/hit-auto-send-rules/hit-auto-send-rule.component.d.ts +70 -0
  35. package/lib/components/hit-auto-send-rules/hit-auto-send-rule.module.d.ts +15 -0
  36. package/lib/components/hit-document-serial/hit-document-serial.component.d.ts +4 -1
  37. package/lib/hit-proxy/hit-auto-send-rule-doc-types/hit-auto-send-rule-doc-type.service.d.ts +11 -0
  38. package/lib/hit-proxy/hit-auto-send-rule-scenarios/hit-auto-send-rule-scenario.service.d.ts +11 -0
  39. package/lib/hit-proxy/hit-auto-send-rules/hit-auto-send-rule.service.d.ts +23 -0
  40. package/lib/hit-proxy/hit-auto-send-rules/models.d.ts +34 -0
  41. package/lib/hit-proxy/hit-document-serials/hit-document-serial.service.d.ts +1 -0
  42. package/lib/proxy/auto-send-rule-doc-types/index.d.ts +2 -0
  43. package/lib/proxy/auto-send-rule-scenarios/index.d.ts +2 -0
  44. package/lib/proxy/auto-send-rules/index.d.ts +2 -0
  45. package/lib/proxy/auto-send-rules/models.d.ts +4 -0
  46. package/package.json +1 -1
@@ -50,7 +50,7 @@ export class HitParamsInvoiceComponent {
50
50
  await this.getParamsInvoice(true);
51
51
  }
52
52
  buildForm() {
53
- const { defaultScenario, defaultInvType, defaultInvSerial, isShippingAddress, useDefScenario, useDefInvType, itemTreeOption, despatchReferenceField, orderReferenceField, isShowBatchNSerial } = this.paramsInvoiceDto || {};
53
+ const { defaultScenario, defaultInvType, defaultInvSerial, isShippingAddress, useDefScenario, useDefInvType, itemTreeOption, despatchReferenceField, orderReferenceField, isShowBatchNSerial, isPartnerCatalogNum, isPartnerCatalogDesc } = this.paramsInvoiceDto || {};
54
54
  this.formParamsInvoice = this.fb.group({
55
55
  defaultScenario: [defaultScenario ?? false, []],
56
56
  defaultInvType: [defaultInvType ?? false, []],
@@ -58,6 +58,8 @@ export class HitParamsInvoiceComponent {
58
58
  isShippingAddress: [isShippingAddress ?? false, []],
59
59
  useDefScenario: [useDefScenario ?? false, []],
60
60
  isShowBatchNSerial: [isShowBatchNSerial ?? false, []],
61
+ isPartnerCatalogNum: [isPartnerCatalogNum ?? false, []],
62
+ isPartnerCatalogDesc: [isPartnerCatalogDesc ?? false, []],
61
63
  useDefInvType: [useDefInvType ?? false, []],
62
64
  itemTreeOption: [itemTreeOption ?? 0, []],
63
65
  despatchReferenceField: [despatchReferenceField ?? 0, []],
@@ -110,13 +112,13 @@ export class HitParamsInvoiceComponent {
110
112
  }
111
113
  }
112
114
  HitParamsInvoiceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitParamsInvoiceComponent, deps: [{ token: i1.ListService }, { token: i1.TrackByService }, { token: i2.ParamseInvoiceService }, { token: i3.ConfirmationService }, { token: i4.FormBuilder }, { token: i5.HitParamsInvoicesService }, { token: i3.ToasterService }, { token: i6.HitScenarioTypesService }, { token: i7.HitDocumentTypesService }], target: i0.ɵɵFactoryTarget.Component });
113
- HitParamsInvoiceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitParamsInvoiceComponent, selector: "hit-params-invoice", inputs: { IsSubmitButtonHidden: "IsSubmitButtonHidden" }, outputs: { valid: "valid" }, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"formParamsInvoice\" id=\"params-invoice\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <div class=\"row\">\r\n <div class=\"col-sm-2\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-invoice-default-inv-serial\">\r\n {{ 'eDonusum::DefaultInvSerial' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-invoice-default-inv-serial\" formControlName=\"defaultInvSerial\"\r\n class=\"form-control\" maxlength=\"8\" autofocus />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"params-invoice-is-show-batch-n-serial\" formControlName=\"isShowBatchNSerial\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"params-invoice-is-show-batch-n-serial\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsShowBatchNSerial' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"params-invoice-use-default-scenario\" formControlName=\"useDefScenario\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"params-invoice-use-default-scenario\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseDefScenario' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"formParamsInvoice.controls.useDefScenario.value\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label for=\"params-invoice-default-scenario\" class=\"form-label\">\r\n {{ 'eDonusum::DefaultScenario' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"params-invoice-default-scenario\" formControlName=\"defaultScenario\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"scenarioTypeDataSource\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"params-invoice-use-def-inv-type\" formControlName=\"useDefInvType\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"params-invoice-use-def-inv-type\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseDefInvType' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"formParamsInvoice.controls.useDefInvType.value\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label for=\"params-invoice-default-inv-type\" class=\"form-label\">\r\n {{ 'eDonusum::DefaultInvType' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"params-invoice-default-inv-type\" formControlName=\"defaultInvType\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"documentTypeDataSource\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label for=\"params-invoice-despatch-reference-field\" class=\"form-label\">\r\n {{ 'eDonusum::DespatchReferenceField' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"params-invoice-despatch-reference-field\" formControlName=\"despatchReferenceField\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"despatchReferenceFields\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"paramse-invoice-item-trees-options\">\r\n {{ 'eDonusum::ItemTreesOptions' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"paramse-invoice-item-trees-options\" formControlName=\"itemTreeOption\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"itemTreeOptions\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"paramse-invoice-order-reference-field\">\r\n {{ 'eDonusum::OrderReferenceField' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"paramse-invoice-order-reference-fields\" formControlName=\"orderReferenceField\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"orderReferenceFields\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=false>\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"params-invoice-is-shipping-address\"\r\n formControlName=\"isShippingAddress\" class=\"form-check-input\" />\r\n\r\n <label for=\"params-invoice-is-shipping-address\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsShippingAddress' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 text-lg-end\">\r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"params-invoice\"\r\n [disabled]=\"submitButtonDisabled\" [hidden]=\"IsSubmitButtonHidden\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.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: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }, { kind: "directive", type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "component", type: i3.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "directive", type: i9.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i9.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i10.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "customItemCreateEvent", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "customItemCreateEventChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.Default });
115
+ HitParamsInvoiceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitParamsInvoiceComponent, selector: "hit-params-invoice", inputs: { IsSubmitButtonHidden: "IsSubmitButtonHidden" }, outputs: { valid: "valid" }, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"formParamsInvoice\" id=\"params-invoice\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <div class=\"row\">\r\n <div class=\"col-sm-2\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-invoice-default-inv-serial\">\r\n {{ 'eDonusum::DefaultInvSerial' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-invoice-default-inv-serial\" formControlName=\"defaultInvSerial\"\r\n class=\"form-control\" maxlength=\"8\" autofocus />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"params-invoice-is-partner-catalog-num\" formControlName=\"isPartnerCatalogNum\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"params-invoice-is-partner-catalog-num\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsPartnerCatalogNum' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"params-invoice-is-partner-catalog-desc\" formControlName=\"isPartnerCatalogDesc\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"params-invoice-is-partner-catalog-desc\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsPartnerCatalogDesc' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"params-invoice-is-show-batch-n-serial\" formControlName=\"isShowBatchNSerial\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"params-invoice-is-show-batch-n-serial\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsShowBatchNSerial' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"params-invoice-use-default-scenario\" formControlName=\"useDefScenario\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"params-invoice-use-default-scenario\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseDefScenario' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"formParamsInvoice.controls.useDefScenario.value\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label for=\"params-invoice-default-scenario\" class=\"form-label\">\r\n {{ 'eDonusum::DefaultScenario' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"params-invoice-default-scenario\" formControlName=\"defaultScenario\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"scenarioTypeDataSource\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"params-invoice-use-def-inv-type\" formControlName=\"useDefInvType\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"params-invoice-use-def-inv-type\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseDefInvType' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"formParamsInvoice.controls.useDefInvType.value\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label for=\"params-invoice-default-inv-type\" class=\"form-label\">\r\n {{ 'eDonusum::DefaultInvType' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"params-invoice-default-inv-type\" formControlName=\"defaultInvType\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"documentTypeDataSource\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label for=\"params-invoice-despatch-reference-field\" class=\"form-label\">\r\n {{ 'eDonusum::DespatchReferenceField' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"params-invoice-despatch-reference-field\" formControlName=\"despatchReferenceField\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"despatchReferenceFields\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"paramse-invoice-item-trees-options\">\r\n {{ 'eDonusum::ItemTreesOptions' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"paramse-invoice-item-trees-options\" formControlName=\"itemTreeOption\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"itemTreeOptions\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"paramse-invoice-order-reference-field\">\r\n {{ 'eDonusum::OrderReferenceField' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"paramse-invoice-order-reference-fields\" formControlName=\"orderReferenceField\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"orderReferenceFields\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=false>\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"params-invoice-is-shipping-address\"\r\n formControlName=\"isShippingAddress\" class=\"form-check-input\" />\r\n\r\n <label for=\"params-invoice-is-shipping-address\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsShippingAddress' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 text-lg-end\">\r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"params-invoice\"\r\n [disabled]=\"submitButtonDisabled\" [hidden]=\"IsSubmitButtonHidden\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.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: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }, { kind: "directive", type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "component", type: i3.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "directive", type: i9.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i9.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i10.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "customItemCreateEvent", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "customItemCreateEventChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.Default });
114
116
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitParamsInvoiceComponent, decorators: [{
115
117
  type: Component,
116
- args: [{ selector: 'hit-params-invoice', changeDetection: ChangeDetectionStrategy.Default, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], template: "<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"formParamsInvoice\" id=\"params-invoice\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <div class=\"row\">\r\n <div class=\"col-sm-2\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-invoice-default-inv-serial\">\r\n {{ 'eDonusum::DefaultInvSerial' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-invoice-default-inv-serial\" formControlName=\"defaultInvSerial\"\r\n class=\"form-control\" maxlength=\"8\" autofocus />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"params-invoice-is-show-batch-n-serial\" formControlName=\"isShowBatchNSerial\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"params-invoice-is-show-batch-n-serial\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsShowBatchNSerial' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"params-invoice-use-default-scenario\" formControlName=\"useDefScenario\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"params-invoice-use-default-scenario\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseDefScenario' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"formParamsInvoice.controls.useDefScenario.value\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label for=\"params-invoice-default-scenario\" class=\"form-label\">\r\n {{ 'eDonusum::DefaultScenario' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"params-invoice-default-scenario\" formControlName=\"defaultScenario\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"scenarioTypeDataSource\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"params-invoice-use-def-inv-type\" formControlName=\"useDefInvType\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"params-invoice-use-def-inv-type\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseDefInvType' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"formParamsInvoice.controls.useDefInvType.value\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label for=\"params-invoice-default-inv-type\" class=\"form-label\">\r\n {{ 'eDonusum::DefaultInvType' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"params-invoice-default-inv-type\" formControlName=\"defaultInvType\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"documentTypeDataSource\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label for=\"params-invoice-despatch-reference-field\" class=\"form-label\">\r\n {{ 'eDonusum::DespatchReferenceField' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"params-invoice-despatch-reference-field\" formControlName=\"despatchReferenceField\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"despatchReferenceFields\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"paramse-invoice-item-trees-options\">\r\n {{ 'eDonusum::ItemTreesOptions' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"paramse-invoice-item-trees-options\" formControlName=\"itemTreeOption\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"itemTreeOptions\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"paramse-invoice-order-reference-field\">\r\n {{ 'eDonusum::OrderReferenceField' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"paramse-invoice-order-reference-fields\" formControlName=\"orderReferenceField\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"orderReferenceFields\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=false>\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"params-invoice-is-shipping-address\"\r\n formControlName=\"isShippingAddress\" class=\"form-check-input\" />\r\n\r\n <label for=\"params-invoice-is-shipping-address\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsShippingAddress' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 text-lg-end\">\r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"params-invoice\"\r\n [disabled]=\"submitButtonDisabled\" [hidden]=\"IsSubmitButtonHidden\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
118
+ args: [{ selector: 'hit-params-invoice', changeDetection: ChangeDetectionStrategy.Default, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], template: "<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"formParamsInvoice\" id=\"params-invoice\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <div class=\"row\">\r\n <div class=\"col-sm-2\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-invoice-default-inv-serial\">\r\n {{ 'eDonusum::DefaultInvSerial' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-invoice-default-inv-serial\" formControlName=\"defaultInvSerial\"\r\n class=\"form-control\" maxlength=\"8\" autofocus />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"params-invoice-is-partner-catalog-num\" formControlName=\"isPartnerCatalogNum\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"params-invoice-is-partner-catalog-num\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsPartnerCatalogNum' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"params-invoice-is-partner-catalog-desc\" formControlName=\"isPartnerCatalogDesc\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"params-invoice-is-partner-catalog-desc\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsPartnerCatalogDesc' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"params-invoice-is-show-batch-n-serial\" formControlName=\"isShowBatchNSerial\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"params-invoice-is-show-batch-n-serial\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsShowBatchNSerial' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"params-invoice-use-default-scenario\" formControlName=\"useDefScenario\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"params-invoice-use-default-scenario\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseDefScenario' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"formParamsInvoice.controls.useDefScenario.value\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label for=\"params-invoice-default-scenario\" class=\"form-label\">\r\n {{ 'eDonusum::DefaultScenario' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"params-invoice-default-scenario\" formControlName=\"defaultScenario\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"scenarioTypeDataSource\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"params-invoice-use-def-inv-type\" formControlName=\"useDefInvType\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"params-invoice-use-def-inv-type\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseDefInvType' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"formParamsInvoice.controls.useDefInvType.value\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label for=\"params-invoice-default-inv-type\" class=\"form-label\">\r\n {{ 'eDonusum::DefaultInvType' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"params-invoice-default-inv-type\" formControlName=\"defaultInvType\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"documentTypeDataSource\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label for=\"params-invoice-despatch-reference-field\" class=\"form-label\">\r\n {{ 'eDonusum::DespatchReferenceField' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"params-invoice-despatch-reference-field\" formControlName=\"despatchReferenceField\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"despatchReferenceFields\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"paramse-invoice-item-trees-options\">\r\n {{ 'eDonusum::ItemTreesOptions' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"paramse-invoice-item-trees-options\" formControlName=\"itemTreeOption\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"itemTreeOptions\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"paramse-invoice-order-reference-field\">\r\n {{ 'eDonusum::OrderReferenceField' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"paramse-invoice-order-reference-fields\" formControlName=\"orderReferenceField\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"orderReferenceFields\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=false>\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"params-invoice-is-shipping-address\"\r\n formControlName=\"isShippingAddress\" class=\"form-check-input\" />\r\n\r\n <label for=\"params-invoice-is-shipping-address\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsShippingAddress' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 text-lg-end\">\r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"params-invoice\"\r\n [disabled]=\"submitButtonDisabled\" [hidden]=\"IsSubmitButtonHidden\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
117
119
  }], ctorParameters: function () { return [{ type: i1.ListService }, { type: i1.TrackByService }, { type: i2.ParamseInvoiceService }, { type: i3.ConfirmationService }, { type: i4.FormBuilder }, { type: i5.HitParamsInvoicesService }, { type: i3.ToasterService }, { type: i6.HitScenarioTypesService }, { type: i7.HitDocumentTypesService }]; }, propDecorators: { IsSubmitButtonHidden: [{
118
120
  type: Input
119
121
  }], valid: [{
120
122
  type: Output
121
123
  }] } });
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LXBhcmFtcy1pbnZvaWNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LXBhcmFtYXMtaW52b2ljZXMvaGl0LXBhcmFtcy1pbnZvaWNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LXBhcmFtYXMtaW52b2ljZXMvaGl0LXBhcmFtcy1pbnZvaWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsV0FBVyxFQUFrQyxNQUFNLGNBQWMsQ0FBQztBQUU5RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUVaLEtBQUssRUFFTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7OztBQVlyQyxNQUFNLE9BQU8seUJBQXlCO0lBaUJwQyxZQUNrQixJQUFpQixFQUNqQixLQUFxQixFQUNyQixPQUE4QixFQUN0QyxZQUFpQyxFQUNqQyxFQUFlLEVBQ04sd0JBQWtELEVBQ2xELGNBQThCLEVBQzlCLHVCQUFnRCxFQUNoRCx1QkFBZ0Q7UUFSakQsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixZQUFPLEdBQVAsT0FBTyxDQUF1QjtRQUN0QyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMs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QkFBb0IsbUJBQ2IsdUJBQXVCLENBQUMsT0FBTyxhQUNyQyxDQUFDLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDOytXQWlCbkUsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUVJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFCUCwgZG93bmxvYWRCbG9iLCBMaXN0U2VydmljZSwgUGFnZWRSZXN1bHREdG8sIFRyYWNrQnlTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQvZXh0ZW5zaW9ucyc7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbmplY3RhYmxlLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nYkRhdGVBZGFwdGVyIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEhpdFBhcmFtc0ludm9pY2VzU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtcGFyYW1zLWludm9pY2VzL2hpdC1wYXJhbXMtaW52b2ljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGl0U2NlbmFyaW9UeXBlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LXNjZW5hcmlvLXR5cGVzL2hpdC1zY2VuYXJpby10eXBlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIaXREb2N1bWVudFR5cGVzU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtZG9jdW1lbnQtdHlwZXMvaGl0LWRvY3VtZW50LXR5cGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFBhcmFtc2VJbnZvaWNlRHRvLCBQYXJhbXNlSW52b2ljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9wcm94eS9wYXJhbXNlLWludm9pY2VzJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdoaXQtcGFyYW1zLWludm9pY2UnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcclxuICBwcm92aWRlcnM6IFtMaXN0U2VydmljZSwgeyBwcm92aWRlOiBOZ2JEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IERhdGVBZGFwdGVyIH1dLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oaXQtcGFyYW1zLWludm9pY2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlczogW10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIaXRQYXJhbXNJbnZvaWNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBmb3JtUGFyYW1zSW52b2ljZTogRm9ybUdyb3VwO1xyXG5cclxuICBwYXJhbXNJbnZvaWNlRHRvPzogUGFyYW1zZUludm9pY2VEdG87XHJcblxyXG4gIHN1Ym1pdEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gIHNjZW5hcmlvVHlwZURhdGFTb3VyY2U6IGFueTtcclxuICBkb2N1bWVudFR5cGVEYXRhU291cmNlOiBhbnk7XHJcbiAgaXRlbVRyZWVPcHRpb25zOiBhbnk7XHJcbiAgZGVzcGF0Y2hSZWZlcmVuY2VGaWVsZHM6IGFueTtcclxuICBvcmRlclJlZmVyZW5jZUZpZWxkczogYW55O1xyXG5cclxuICBASW5wdXQoKSBJc1N1Ym1pdEJ1dHRvbkhpZGRlbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgdmFsaWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGxpc3Q6IExpc3RTZXJ2aWNlLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHRyYWNrOiBUcmFja0J5U2VydmljZSxcclxuICAgIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlOiBQYXJhbXNlSW52b2ljZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvbjogQ29uZmlybWF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBoaXRQYXJhbXNJbnZvaWNlc1NlcnZpY2U6IEhpdFBhcmFtc0ludm9pY2VzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdG9hc3RlclNlcnZpY2U6IFRvYXN0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBoaXRTY2VuYXJpb1R5cGVzU2VydmljZTogSGl0U2NlbmFyaW9UeXBlc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhpdERvY3VtZW50VHlwZXNTZXJ2aWNlOiBIaXREb2N1bWVudFR5cGVzU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xyXG5cclxuICAgIHRoaXMuaGl0U2NlbmFyaW9UeXBlc1NlcnZpY2UuZ2V0U2NlbmFyaW9UeXBlc0xvb2t1cCgpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5zY2VuYXJpb1R5cGVEYXRhU291cmNlID0gZGF0YTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuaGl0RG9jdW1lbnRUeXBlc1NlcnZpY2UuZ2V0RG9jdW1lbnRUeXBlc0xvb2t1cCgpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5kb2N1bWVudFR5cGVEYXRhU291cmNlID0gZGF0YTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuaGl0UGFyYW1zSW52b2ljZXNTZXJ2aWNlLmdldEl0ZW1UcmVlT3B0aW9ucygpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5pdGVtVHJlZU9wdGlvbnM9ZGF0YTtcclxuICAgIH0pXHJcblxyXG4gICAgIHRoaXMuaGl0UGFyYW1zSW52b2ljZXNTZXJ2aWNlLmdldERlc3BhdGNoUmVmZXJlbmNlRmllbGRzKCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICB0aGlzLmRlc3BhdGNoUmVmZXJlbmNlRmllbGRzPWRhdGE7XHJcbiAgICB9KVxyXG5cclxuICAgICB0aGlzLmhpdFBhcmFtc0ludm9pY2VzU2VydmljZS5nZXRPcmRlclJlZmVyZW5jZUZpZWxkcygpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5vcmRlclJlZmVyZW5jZUZpZWxkcz1kYXRhO1xyXG4gICAgfSlcclxuXHJcbiAgICBhd2FpdCB0aGlzLmdldFBhcmFtc0ludm9pY2UodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBidWlsZEZvcm0oKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGRlZmF1bHRTY2VuYXJpbyxcclxuICAgICAgZGVmYXVsdEludlR5cGUsXHJcbiAgICAgIGRlZmF1bHRJbnZTZXJpYWwsXHJcbiAgICAgIGlzU2hpcHBpbmdBZGRyZXNzLFxyXG4gICAgICB1c2VEZWZTY2VuYXJpbyxcclxuICAgICAgdXNlRGVmSW52VHlwZSxcclxuICAgICAgaXRlbVRyZWVPcHRpb24sXHJcbiAgICAgIGRlc3BhdGNoUmVmZXJlbmNlRmllbGQsXHJcbiAgICAgIG9yZGVyUmVmZXJlbmNlRmllbGQsXHJcbiAgICAgIGlzU2hvd0JhdGNoTlNlcmlhbFxyXG4gICAgfSA9IHRoaXMucGFyYW1zSW52b2ljZUR0byB8fCB7fTtcclxuXHJcbiAgICB0aGlzLmZvcm1QYXJhbXNJbnZvaWNlID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIGRlZmF1bHRTY2VuYXJpbzogW2RlZmF1bHRTY2VuYXJpbyA/PyBmYWxzZSwgW11dLFxyXG4gICAgICBkZWZhdWx0SW52VHlwZTogW2RlZmF1bHRJbnZUeXBlID8/IGZhbHNlLCBbXV0sXHJcbiAgICAgIGRlZmF1bHRJbnZTZXJpYWw6IFtkZWZhdWx0SW52U2VyaWFsID8/IG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgzKV1dLFxyXG4gICAgICBpc1NoaXBwaW5nQWRkcmVzczogW2lzU2hpcHBpbmdBZGRyZXNzID8/IGZhbHNlLCBbXV0sXHJcbiAgICAgIHVzZURlZlNjZW5hcmlvOiBbdXNlRGVmU2NlbmFyaW8gPz8gZmFsc2UsIFtdXSxcclxuICAgICAgaXNTaG93QmF0Y2hOU2VyaWFsOiBbaXNTaG93QmF0Y2hOU2VyaWFsID8/IGZhbHNlLCBbXV0sXHJcbiAgICAgIHVzZURlZkludlR5cGU6IFt1c2VEZWZJbnZUeXBlID8/IGZhbHNlLCBbXV0sXHJcbiAgICAgIGl0ZW1UcmVlT3B0aW9uOiBbaXRlbVRyZWVPcHRpb24gPz8gMCwgW11dLFxyXG4gICAgICBkZXNwYXRjaFJlZmVyZW5jZUZpZWxkOiBbZGVzcGF0Y2hSZWZlcmVuY2VGaWVsZCA/PyAwLCBbXV0sXHJcbiAgICAgIG9yZGVyUmVmZXJlbmNlRmllbGQ6IFtvcmRlclJlZmVyZW5jZUZpZWxkID8/IDAsIFtdXVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzdWJtaXRGb3JtKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybVBhcmFtc0ludm9pY2UuY29udHJvbHMuZGVmYXVsdEludlNlcmlhbC52YWx1ZS5sZW5ndGggPiAzKSB7XHJcbiAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoJ2VEb251c3VtOjpFbnRlck1heDNDaGFyYWN0ZXInKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5mb3JtUGFyYW1zSW52b2ljZS5pbnZhbGlkKSB7XHJcbiAgICAgIHdpbmRvdy5zY3JvbGwoe1xyXG4gICAgICAgIHRvcDogMCxcclxuICAgICAgICBsZWZ0OiAwLFxyXG4gICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudmFsaWQuZW1pdChmYWxzZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN1Ym1pdEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcclxuXHJcbiAgICAvLyB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmluZm8oJ2VEb251c3VtOjpUcmFuc2FjdGlvblN0YXJ0ZWQnKTtcclxuICAgIFxyXG4gICAgaWYgKCF0aGlzLmZvcm1QYXJhbXNJbnZvaWNlLmNvbnRyb2xzLmRlZmF1bHRTY2VuYXJpby52YWx1ZSlcclxuICAgICAgdGhpcy5mb3JtUGFyYW1zSW52b2ljZS5jb250cm9scy5kZWZhdWx0U2NlbmFyaW8uc2V0VmFsdWUoMCk7XHJcbiAgICBcclxuICAgIGlmICghdGhpcy5mb3JtUGFyYW1zSW52b2ljZS5jb250cm9scy5kZWZhdWx0SW52VHlwZS52YWx1ZSlcclxuICAgICAgdGhpcy5mb3JtUGFyYW1zSW52b2ljZS5jb250cm9scy5kZWZhdWx0SW52VHlwZS5zZXRWYWx1ZSgwKTtcclxuXHJcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5wYXJhbXNJbnZvaWNlRHRvXHJcbiAgICAgID8gdGhpcy5zZXJ2aWNlLnVwZGF0ZSh0aGlzLnBhcmFtc0ludm9pY2VEdG8uaWQsIHtcclxuICAgICAgICAgIC4uLnRoaXMuZm9ybVBhcmFtc0ludm9pY2UudmFsdWUsXHJcbiAgICAgICAgfSlcclxuICAgICAgOiB0aGlzLnNlcnZpY2UuY3JlYXRlKHRoaXMuZm9ybVBhcmFtc0ludm9pY2UudmFsdWUpO1xyXG5cclxuICAgIHJlcXVlc3RcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zdWJtaXRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHRhcCgoKSA9PiB7fSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIGFzeW5jICgpID0+IHtcclxuICAgICAgICAgIC8vIHRoaXMudG9hc3RlclNlcnZpY2Uuc3VjY2VzcygnZURvbnVzdW06OlRyYW5zYWN0aW9uU3VjY2Vzc2Z1bCcpO1xyXG5cclxuICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0UGFyYW1zSW52b2ljZSgpO1xyXG5cclxuICAgICAgICAgIHRoaXMudmFsaWQuZW1pdCh0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKCdlRG9udXN1bTo6VHJhbnNhY3Rpb25VbnN1Y2Nlc3NmdWwnKTtcclxuXHJcbiAgICAgICAgICB0aGlzLnZhbGlkLmVtaXQodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0UGFyYW1zSW52b2ljZShidWlsZEZvcm06IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgdGhpcy5oaXRQYXJhbXNJbnZvaWNlc1NlcnZpY2UuZ2V0UGFyYW1zSW52b2ljZSgpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5wYXJhbXNJbnZvaWNlRHRvID0gZGF0YTtcclxuXHJcbiAgICAgIGlmIChidWlsZEZvcm0pIHRoaXMuYnVpbGRGb3JtKCk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1QYXJhbXNJbnZvaWNlXCIgaWQ9XCJwYXJhbXMtaW52b2ljZVwiIChuZ1N1Ym1pdCk9XCJzdWJtaXRGb3JtKClcIiB2YWxpZGF0ZU9uU3VibWl0PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zLWludm9pY2UtZGVmYXVsdC1pbnYtc2VyaWFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkRlZmF1bHRJbnZTZXJpYWwnIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInBhcmFtcy1pbnZvaWNlLWRlZmF1bHQtaW52LXNlcmlhbFwiIGZvcm1Db250cm9sTmFtZT1cImRlZmF1bHRJbnZTZXJpYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBtYXhsZW5ndGg9XCI4XCIgYXV0b2ZvY3VzIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJwYXJhbXMtaW52b2ljZS1pcy1zaG93LWJhdGNoLW4tc2VyaWFsXCIgZm9ybUNvbnRyb2xOYW1lPVwiaXNTaG93QmF0Y2hOU2VyaWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGFyYW1zLWludm9pY2UtaXMtc2hvdy1iYXRjaC1uLXNlcmlhbFwiIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpJc1Nob3dCYXRjaE5TZXJpYWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwicGFyYW1zLWludm9pY2UtdXNlLWRlZmF1bHQtc2NlbmFyaW9cIiBmb3JtQ29udHJvbE5hbWU9XCJ1c2VEZWZTY2VuYXJpb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBhcmFtcy1pbnZvaWNlLXVzZS1kZWZhdWx0LXNjZW5hcmlvXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlVzZURlZlNjZW5hcmlvJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJmb3JtUGFyYW1zSW52b2ljZS5jb250cm9scy51c2VEZWZTY2VuYXJpby52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBhcmFtcy1pbnZvaWNlLWRlZmF1bHQtc2NlbmFyaW9cIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6RGVmYXVsdFNjZW5hcmlvJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggaWQ9XCJwYXJhbXMtaW52b2ljZS1kZWZhdWx0LXNjZW5hcmlvXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGVmYXVsdFNjZW5hcmlvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZGlzcGxheUV4cHI9XCJkaXNwbGF5TmFtZVwiIHZhbHVlRXhwcj1cImlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cInNjZW5hcmlvVHlwZURhdGFTb3VyY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cInBhcmFtcy1pbnZvaWNlLXVzZS1kZWYtaW52LXR5cGVcIiBmb3JtQ29udHJvbE5hbWU9XCJ1c2VEZWZJbnZUeXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGFyYW1zLWludm9pY2UtdXNlLWRlZi1pbnYtdHlwZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpVc2VEZWZJbnZUeXBlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJmb3JtUGFyYW1zSW52b2ljZS5jb250cm9scy51c2VEZWZJbnZUeXBlLnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGFyYW1zLWludm9pY2UtZGVmYXVsdC1pbnYtdHlwZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpEZWZhdWx0SW52VHlwZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IGlkPVwicGFyYW1zLWludm9pY2UtZGVmYXVsdC1pbnYtdHlwZVwiIGZvcm1Db250cm9sTmFtZT1cImRlZmF1bHRJbnZUeXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZGlzcGxheUV4cHI9XCJkaXNwbGF5TmFtZVwiIHZhbHVlRXhwcj1cImlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cImRvY3VtZW50VHlwZURhdGFTb3VyY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGFyYW1zLWludm9pY2UtZGVzcGF0Y2gtcmVmZXJlbmNlLWZpZWxkXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkRlc3BhdGNoUmVmZXJlbmNlRmllbGQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBpZD1cInBhcmFtcy1pbnZvaWNlLWRlc3BhdGNoLXJlZmVyZW5jZS1maWVsZFwiIGZvcm1Db250cm9sTmFtZT1cImRlc3BhdGNoUmVmZXJlbmNlRmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBkaXNwbGF5RXhwcj1cImRpc3BsYXlOYW1lXCIgdmFsdWVFeHByPVwiaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiZGVzcGF0Y2hSZWZlcmVuY2VGaWVsZHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zZS1pbnZvaWNlLWl0ZW0tdHJlZXMtb3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpJdGVtVHJlZXNPcHRpb25zJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggaWQ9XCJwYXJhbXNlLWludm9pY2UtaXRlbS10cmVlcy1vcHRpb25zXCIgZm9ybUNvbnRyb2xOYW1lPVwiaXRlbVRyZWVPcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBkaXNwbGF5RXhwcj1cImRpc3BsYXlOYW1lXCIgdmFsdWVFeHByPVwiaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiaXRlbVRyZWVPcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZHgtc2VsZWN0LWJveD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXNlLWludm9pY2Utb3JkZXItcmVmZXJlbmNlLWZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06Ok9yZGVyUmVmZXJlbmNlRmllbGQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBpZD1cInBhcmFtc2UtaW52b2ljZS1vcmRlci1yZWZlcmVuY2UtZmllbGRzXCIgZm9ybUNvbnRyb2xOYW1lPVwib3JkZXJSZWZlcmVuY2VGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIGRpc3BsYXlFeHByPVwiZGlzcGxheU5hbWVcIiB2YWx1ZUV4cHI9XCJpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJvcmRlclJlZmVyZW5jZUZpZWxkc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2R4LXNlbGVjdC1ib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1mYWxzZT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwicGFyYW1zLWludm9pY2UtaXMtc2hpcHBpbmctYWRkcmVzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpc1NoaXBwaW5nQWRkcmVzc1wiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGFyYW1zLWludm9pY2UtaXMtc2hpcHBpbmctYWRkcmVzc1wiIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpJc1NoaXBwaW5nQWRkcmVzcycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIHRleHQtbGctZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8YWJwLWJ1dHRvbiBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiIGJ1dHRvblR5cGU9XCJzdWJtaXRcIiBmb3JtTmFtZT1cInBhcmFtcy1pbnZvaWNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic3VibWl0QnV0dG9uRGlzYWJsZWRcIiBbaGlkZGVuXT1cIklzU3VibWl0QnV0dG9uSGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgJ0FicFVpOjpTYXZlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9hYnAtYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LXBhcmFtcy1pbnZvaWNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LXBhcmFtYXMtaW52b2ljZXMvaGl0LXBhcmFtcy1pbnZvaWNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LXBhcmFtYXMtaW52b2ljZXMvaGl0LXBhcmFtcy1pbnZvaWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsV0FBVyxFQUFrQyxNQUFNLGNBQWMsQ0FBQztBQUU5RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUVaLEtBQUssRUFFTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7OztBQVlyQyxNQUFNLE9BQU8seUJBQXlCO0lBaUJwQyxZQUNrQixJQUFpQixFQUNqQixLQUFxQixFQUNyQixPQUE4QixFQUN0QyxZQUFpQyxFQUNqQyxFQUFlLEVBQ04sd0JBQWtELEVBQ2xELGNBQThCLEVBQzlCLHVCQUFnRCxFQUNoRCx1QkFBZ0Q7UUFSakQsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixZQUFPLEdBQVAsT0FBTyxDQUF1QjtRQUN0QyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMs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OzBHQUF6Qix5QkFBeUIsb0lBSnpCLENBQUMsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUMsMEJDdEI5RSxxc1JBbUtNOzJGRHpJTyx5QkFBeUI7a0JBUHJDLFNBQVM7K0JBQ0Usb0JBQW9CLG1CQUNiLHVCQUF1QixDQUFDLE9BQU8sYUFDckMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQzsrV0FpQm5FLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFSSxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBQlAsIGRvd25sb2FkQmxvYiwgTGlzdFNlcnZpY2UsIFBhZ2VkUmVzdWx0RHRvLCBUcmFja0J5U2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIFRvYXN0ZXJTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5pbXBvcnQgeyBEYXRlQWRhcHRlciB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkL2V4dGVuc2lvbnMnO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0YWJsZSxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOZ2JEYXRlQWRhcHRlciB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgZmluYWxpemUsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIaXRQYXJhbXNJbnZvaWNlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LXBhcmFtcy1pbnZvaWNlcy9oaXQtcGFyYW1zLWludm9pY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEhpdFNjZW5hcmlvVHlwZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1zY2VuYXJpby10eXBlcy9oaXQtc2NlbmFyaW8tdHlwZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGl0RG9jdW1lbnRUeXBlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWRvY3VtZW50LXR5cGVzL2hpdC1kb2N1bWVudC10eXBlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQYXJhbXNlSW52b2ljZUR0bywgUGFyYW1zZUludm9pY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcHJveHkvcGFyYW1zZS1pbnZvaWNlcyc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaGl0LXBhcmFtcy1pbnZvaWNlJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXHJcbiAgcHJvdmlkZXJzOiBbTGlzdFNlcnZpY2UsIHsgcHJvdmlkZTogTmdiRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBEYXRlQWRhcHRlciB9XSxcclxuICB0ZW1wbGF0ZVVybDogJy4vaGl0LXBhcmFtcy1pbnZvaWNlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZXM6IFtdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGl0UGFyYW1zSW52b2ljZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgZm9ybVBhcmFtc0ludm9pY2U6IEZvcm1Hcm91cDtcclxuXHJcbiAgcGFyYW1zSW52b2ljZUR0bz86IFBhcmFtc2VJbnZvaWNlRHRvO1xyXG5cclxuICBzdWJtaXRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICBzY2VuYXJpb1R5cGVEYXRhU291cmNlOiBhbnk7XHJcbiAgZG9jdW1lbnRUeXBlRGF0YVNvdXJjZTogYW55O1xyXG4gIGl0ZW1UcmVlT3B0aW9uczogYW55O1xyXG4gIGRlc3BhdGNoUmVmZXJlbmNlRmllbGRzOiBhbnk7XHJcbiAgb3JkZXJSZWZlcmVuY2VGaWVsZHM6IGFueTtcclxuXHJcbiAgQElucHV0KCkgSXNTdWJtaXRCdXR0b25IaWRkZW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIHZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWFkb25seSBsaXN0OiBMaXN0U2VydmljZSxcclxuICAgIHB1YmxpYyByZWFkb25seSB0cmFjazogVHJhY2tCeVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZTogUGFyYW1zZUludm9pY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maXJtYXRpb246IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGl0UGFyYW1zSW52b2ljZXNTZXJ2aWNlOiBIaXRQYXJhbXNJbnZvaWNlc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ZXJTZXJ2aWNlOiBUb2FzdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGl0U2NlbmFyaW9UeXBlc1NlcnZpY2U6IEhpdFNjZW5hcmlvVHlwZXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBoaXREb2N1bWVudFR5cGVzU2VydmljZTogSGl0RG9jdW1lbnRUeXBlc1NlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5idWlsZEZvcm0oKTtcclxuXHJcbiAgICB0aGlzLmhpdFNjZW5hcmlvVHlwZXNTZXJ2aWNlLmdldFNjZW5hcmlvVHlwZXNMb29rdXAoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMuc2NlbmFyaW9UeXBlRGF0YVNvdXJjZSA9IGRhdGE7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmhpdERvY3VtZW50VHlwZXNTZXJ2aWNlLmdldERvY3VtZW50VHlwZXNMb29rdXAoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMuZG9jdW1lbnRUeXBlRGF0YVNvdXJjZSA9IGRhdGE7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmhpdFBhcmFtc0ludm9pY2VzU2VydmljZS5nZXRJdGVtVHJlZU9wdGlvbnMoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMuaXRlbVRyZWVPcHRpb25zPWRhdGE7XHJcbiAgICB9KVxyXG5cclxuICAgICB0aGlzLmhpdFBhcmFtc0ludm9pY2VzU2VydmljZS5nZXREZXNwYXRjaFJlZmVyZW5jZUZpZWxkcygpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5kZXNwYXRjaFJlZmVyZW5jZUZpZWxkcz1kYXRhO1xyXG4gICAgfSlcclxuXHJcbiAgICAgdGhpcy5oaXRQYXJhbXNJbnZvaWNlc1NlcnZpY2UuZ2V0T3JkZXJSZWZlcmVuY2VGaWVsZHMoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMub3JkZXJSZWZlcmVuY2VGaWVsZHM9ZGF0YTtcclxuICAgIH0pXHJcblxyXG4gICAgYXdhaXQgdGhpcy5nZXRQYXJhbXNJbnZvaWNlKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgYnVpbGRGb3JtKCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBkZWZhdWx0U2NlbmFyaW8sXHJcbiAgICAgIGRlZmF1bHRJbnZUeXBlLFxyXG4gICAgICBkZWZhdWx0SW52U2VyaWFsLFxyXG4gICAgICBpc1NoaXBwaW5nQWRkcmVzcyxcclxuICAgICAgdXNlRGVmU2NlbmFyaW8sXHJcbiAgICAgIHVzZURlZkludlR5cGUsXHJcbiAgICAgIGl0ZW1UcmVlT3B0aW9uLFxyXG4gICAgICBkZXNwYXRjaFJlZmVyZW5jZUZpZWxkLFxyXG4gICAgICBvcmRlclJlZmVyZW5jZUZpZWxkLFxyXG4gICAgICBpc1Nob3dCYXRjaE5TZXJpYWwsXHJcbiAgICAgIGlzUGFydG5lckNhdGFsb2dOdW0sXHJcbiAgICAgIGlzUGFydG5lckNhdGFsb2dEZXNjXHJcbiAgICB9ID0gdGhpcy5wYXJhbXNJbnZvaWNlRHRvIHx8IHt9O1xyXG5cclxuICAgIHRoaXMuZm9ybVBhcmFtc0ludm9pY2UgPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgZGVmYXVsdFNjZW5hcmlvOiBbZGVmYXVsdFNjZW5hcmlvID8/IGZhbHNlLCBbXV0sXHJcbiAgICAgIGRlZmF1bHRJbnZUeXBlOiBbZGVmYXVsdEludlR5cGUgPz8gZmFsc2UsIFtdXSxcclxuICAgICAgZGVmYXVsdEludlNlcmlhbDogW2RlZmF1bHRJbnZTZXJpYWwgPz8gbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDMpXV0sXHJcbiAgICAgIGlzU2hpcHBpbmdBZGRyZXNzOiBbaXNTaGlwcGluZ0FkZHJlc3MgPz8gZmFsc2UsIFtdXSxcclxuICAgICAgdXNlRGVmU2NlbmFyaW86IFt1c2VEZWZTY2VuYXJpbyA/PyBmYWxzZSwgW11dLFxyXG4gICAgICBpc1Nob3dCYXRjaE5TZXJpYWw6IFtpc1Nob3dCYXRjaE5TZXJpYWwgPz8gZmFsc2UsIFtdXSxcclxuICAgICAgaXNQYXJ0bmVyQ2F0YWxvZ051bTogW2lzUGFydG5lckNhdGFsb2dOdW0gPz8gZmFsc2UsIFtdXSxcclxuICAgICAgaXNQYXJ0bmVyQ2F0YWxvZ0Rlc2M6IFtpc1BhcnRuZXJDYXRhbG9nRGVzYyA/PyBmYWxzZSwgW11dLFxyXG4gICAgICB1c2VEZWZJbnZUeXBlOiBbdXNlRGVmSW52VHlwZSA/PyBmYWxzZSwgW11dLFxyXG4gICAgICBpdGVtVHJlZU9wdGlvbjogW2l0ZW1UcmVlT3B0aW9uID8/IDAsIFtdXSxcclxuICAgICAgZGVzcGF0Y2hSZWZlcmVuY2VGaWVsZDogW2Rlc3BhdGNoUmVmZXJlbmNlRmllbGQgPz8gMCwgW11dLFxyXG4gICAgICBvcmRlclJlZmVyZW5jZUZpZWxkOiBbb3JkZXJSZWZlcmVuY2VGaWVsZCA/PyAwLCBbXV1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc3VibWl0Rm9ybSgpIHtcclxuICAgIGlmICh0aGlzLmZvcm1QYXJhbXNJbnZvaWNlLmNvbnRyb2xzLmRlZmF1bHRJbnZTZXJpYWwudmFsdWUubGVuZ3RoID4gMykge1xyXG4gICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKCdlRG9udXN1bTo6RW50ZXJNYXgzQ2hhcmFjdGVyJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybVBhcmFtc0ludm9pY2UuaW52YWxpZCkge1xyXG4gICAgICB3aW5kb3cuc2Nyb2xsKHtcclxuICAgICAgICB0b3A6IDAsXHJcbiAgICAgICAgbGVmdDogMCxcclxuICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnZhbGlkLmVtaXQoZmFsc2UpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zdWJtaXRCdXR0b25EaXNhYmxlZCA9IHRydWU7XHJcblxyXG4gICAgLy8gdGhpcy50b2FzdGVyU2VydmljZS5pbmZvKCdlRG9udXN1bTo6VHJhbnNhY3Rpb25TdGFydGVkJyk7XHJcbiAgICBcclxuICAgIGlmICghdGhpcy5mb3JtUGFyYW1zSW52b2ljZS5jb250cm9scy5kZWZhdWx0U2NlbmFyaW8udmFsdWUpXHJcbiAgICAgIHRoaXMuZm9ybVBhcmFtc0ludm9pY2UuY29udHJvbHMuZGVmYXVsdFNjZW5hcmlvLnNldFZhbHVlKDApO1xyXG4gICAgXHJcbiAgICBpZiAoIXRoaXMuZm9ybVBhcmFtc0ludm9pY2UuY29udHJvbHMuZGVmYXVsdEludlR5cGUudmFsdWUpXHJcbiAgICAgIHRoaXMuZm9ybVBhcmFtc0ludm9pY2UuY29udHJvbHMuZGVmYXVsdEludlR5cGUuc2V0VmFsdWUoMCk7XHJcblxyXG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXMucGFyYW1zSW52b2ljZUR0b1xyXG4gICAgICA/IHRoaXMuc2VydmljZS51cGRhdGUodGhpcy5wYXJhbXNJbnZvaWNlRHRvLmlkLCB7XHJcbiAgICAgICAgICAuLi50aGlzLmZvcm1QYXJhbXNJbnZvaWNlLnZhbHVlLFxyXG4gICAgICAgIH0pXHJcbiAgICAgIDogdGhpcy5zZXJ2aWNlLmNyZWF0ZSh0aGlzLmZvcm1QYXJhbXNJbnZvaWNlLnZhbHVlKTtcclxuXHJcbiAgICByZXF1ZXN0XHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuc3VibWl0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICB0YXAoKCkgPT4ge30pXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAvLyB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MoJ2VEb251c3VtOjpUcmFuc2FjdGlvblN1Y2Nlc3NmdWwnKTtcclxuXHJcbiAgICAgICAgICBhd2FpdCB0aGlzLmdldFBhcmFtc0ludm9pY2UoKTtcclxuXHJcbiAgICAgICAgICB0aGlzLnZhbGlkLmVtaXQodHJ1ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcignZURvbnVzdW06OlRyYW5zYWN0aW9uVW5zdWNjZXNzZnVsJyk7XHJcblxyXG4gICAgICAgICAgdGhpcy52YWxpZC5lbWl0KHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFBhcmFtc0ludm9pY2UoYnVpbGRGb3JtOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIHRoaXMuaGl0UGFyYW1zSW52b2ljZXNTZXJ2aWNlLmdldFBhcmFtc0ludm9pY2UoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMucGFyYW1zSW52b2ljZUR0byA9IGRhdGE7XHJcblxyXG4gICAgICBpZiAoYnVpbGRGb3JtKSB0aGlzLmJ1aWxkRm9ybSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtUGFyYW1zSW52b2ljZVwiIGlkPVwicGFyYW1zLWludm9pY2VcIiAobmdTdWJtaXQpPVwic3VibWl0Rm9ybSgpXCIgdmFsaWRhdGVPblN1Ym1pdD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInBhcmFtcy1pbnZvaWNlLWRlZmF1bHQtaW52LXNlcmlhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpEZWZhdWx0SW52U2VyaWFsJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJwYXJhbXMtaW52b2ljZS1kZWZhdWx0LWludi1zZXJpYWxcIiBmb3JtQ29udHJvbE5hbWU9XCJkZWZhdWx0SW52U2VyaWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiOFwiIGF1dG9mb2N1cyAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cInBhcmFtcy1pbnZvaWNlLWlzLXBhcnRuZXItY2F0YWxvZy1udW1cIiBmb3JtQ29udHJvbE5hbWU9XCJpc1BhcnRuZXJDYXRhbG9nTnVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGFyYW1zLWludm9pY2UtaXMtcGFydG5lci1jYXRhbG9nLW51bVwiIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpJc1BhcnRuZXJDYXRhbG9nTnVtJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cInBhcmFtcy1pbnZvaWNlLWlzLXBhcnRuZXItY2F0YWxvZy1kZXNjXCIgZm9ybUNvbnRyb2xOYW1lPVwiaXNQYXJ0bmVyQ2F0YWxvZ0Rlc2NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwYXJhbXMtaW52b2ljZS1pcy1wYXJ0bmVyLWNhdGFsb2ctZGVzY1wiIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpJc1BhcnRuZXJDYXRhbG9nRGVzYycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJwYXJhbXMtaW52b2ljZS1pcy1zaG93LWJhdGNoLW4tc2VyaWFsXCIgZm9ybUNvbnRyb2xOYW1lPVwiaXNTaG93QmF0Y2hOU2VyaWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGFyYW1zLWludm9pY2UtaXMtc2hvdy1iYXRjaC1uLXNlcmlhbFwiIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpJc1Nob3dCYXRjaE5TZXJpYWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwicGFyYW1zLWludm9pY2UtdXNlLWRlZmF1bHQtc2NlbmFyaW9cIiBmb3JtQ29udHJvbE5hbWU9XCJ1c2VEZWZTY2VuYXJpb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBhcmFtcy1pbnZvaWNlLXVzZS1kZWZhdWx0LXNjZW5hcmlvXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlVzZURlZlNjZW5hcmlvJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJmb3JtUGFyYW1zSW52b2ljZS5jb250cm9scy51c2VEZWZTY2VuYXJpby52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBhcmFtcy1pbnZvaWNlLWRlZmF1bHQtc2NlbmFyaW9cIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6RGVmYXVsdFNjZW5hcmlvJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggaWQ9XCJwYXJhbXMtaW52b2ljZS1kZWZhdWx0LXNjZW5hcmlvXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGVmYXVsdFNjZW5hcmlvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZGlzcGxheUV4cHI9XCJkaXNwbGF5TmFtZVwiIHZhbHVlRXhwcj1cImlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cInNjZW5hcmlvVHlwZURhdGFTb3VyY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cInBhcmFtcy1pbnZvaWNlLXVzZS1kZWYtaW52LXR5cGVcIiBmb3JtQ29udHJvbE5hbWU9XCJ1c2VEZWZJbnZUeXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGFyYW1zLWludm9pY2UtdXNlLWRlZi1pbnYtdHlwZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpVc2VEZWZJbnZUeXBlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJmb3JtUGFyYW1zSW52b2ljZS5jb250cm9scy51c2VEZWZJbnZUeXBlLnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGFyYW1zLWludm9pY2UtZGVmYXVsdC1pbnYtdHlwZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpEZWZhdWx0SW52VHlwZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IGlkPVwicGFyYW1zLWludm9pY2UtZGVmYXVsdC1pbnYtdHlwZVwiIGZvcm1Db250cm9sTmFtZT1cImRlZmF1bHRJbnZUeXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZGlzcGxheUV4cHI9XCJkaXNwbGF5TmFtZVwiIHZhbHVlRXhwcj1cImlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cImRvY3VtZW50VHlwZURhdGFTb3VyY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGFyYW1zLWludm9pY2UtZGVzcGF0Y2gtcmVmZXJlbmNlLWZpZWxkXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkRlc3BhdGNoUmVmZXJlbmNlRmllbGQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBpZD1cInBhcmFtcy1pbnZvaWNlLWRlc3BhdGNoLXJlZmVyZW5jZS1maWVsZFwiIGZvcm1Db250cm9sTmFtZT1cImRlc3BhdGNoUmVmZXJlbmNlRmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBkaXNwbGF5RXhwcj1cImRpc3BsYXlOYW1lXCIgdmFsdWVFeHByPVwiaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiZGVzcGF0Y2hSZWZlcmVuY2VGaWVsZHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zZS1pbnZvaWNlLWl0ZW0tdHJlZXMtb3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpJdGVtVHJlZXNPcHRpb25zJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggaWQ9XCJwYXJhbXNlLWludm9pY2UtaXRlbS10cmVlcy1vcHRpb25zXCIgZm9ybUNvbnRyb2xOYW1lPVwiaXRlbVRyZWVPcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBkaXNwbGF5RXhwcj1cImRpc3BsYXlOYW1lXCIgdmFsdWVFeHByPVwiaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiaXRlbVRyZWVPcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZHgtc2VsZWN0LWJveD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXNlLWludm9pY2Utb3JkZXItcmVmZXJlbmNlLWZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06Ok9yZGVyUmVmZXJlbmNlRmllbGQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBpZD1cInBhcmFtc2UtaW52b2ljZS1vcmRlci1yZWZlcmVuY2UtZmllbGRzXCIgZm9ybUNvbnRyb2xOYW1lPVwib3JkZXJSZWZlcmVuY2VGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIGRpc3BsYXlFeHByPVwiZGlzcGxheU5hbWVcIiB2YWx1ZUV4cHI9XCJpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJvcmRlclJlZmVyZW5jZUZpZWxkc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2R4LXNlbGVjdC1ib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1mYWxzZT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwicGFyYW1zLWludm9pY2UtaXMtc2hpcHBpbmctYWRkcmVzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpc1NoaXBwaW5nQWRkcmVzc1wiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGFyYW1zLWludm9pY2UtaXMtc2hpcHBpbmctYWRkcmVzc1wiIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpJc1NoaXBwaW5nQWRkcmVzcycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIHRleHQtbGctZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8YWJwLWJ1dHRvbiBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiIGJ1dHRvblR5cGU9XCJzdWJtaXRcIiBmb3JtTmFtZT1cInBhcmFtcy1pbnZvaWNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic3VibWl0QnV0dG9uRGlzYWJsZWRcIiBbaGlkZGVuXT1cIklzU3VibWl0QnV0dG9uSGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgJ0FicFVpOjpTYXZlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9hYnAtYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=