@hitsoft/e-donusum 100.1.15-Edo-Test → 100.1.17-Edo-Test

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.
@@ -21,7 +21,6 @@ export class HitParamsGeneralPart2Component {
21
21
  this.IsSubmitButtonHidden = false;
22
22
  this.valid = new EventEmitter();
23
23
  this.submitButtonDisabled = false;
24
- this.downloadTokenSecret = '';
25
24
  }
26
25
  ngOnInit() {
27
26
  this.hitParamsGeneralsService.getParamsGeneral().subscribe(data => {
@@ -32,16 +31,12 @@ export class HitParamsGeneralPart2Component {
32
31
  this.hitEntegratorsService.getEntegrators().subscribe(data => {
33
32
  this.integratorDataSource = data;
34
33
  });
35
- this.hitParamsGeneralsService.getDownloadTokenSecret().subscribe(data => {
36
- this.downloadTokenSecret = data?.value || '';
37
- this.generalformParamsGeneralPart2?.patchValue({ downloadTokenSecret: this.downloadTokenSecret });
38
- });
39
34
  }
40
35
  buildForm() {
41
- const { integrator } = this.paramsGeneralDto || {};
36
+ const { integrator, isEntegratorErrorMailActive } = this.paramsGeneralDto || {};
42
37
  this.generalformParamsGeneralPart2 = this.fb.group({
43
38
  integrator: [integrator ?? 0, []],
44
- downloadTokenSecret: [this.downloadTokenSecret ?? '', []],
39
+ isEntegratorErrorMailActive: [isEntegratorErrorMailActive ?? false, []],
45
40
  });
46
41
  }
47
42
  async submitForm() {
@@ -56,11 +51,8 @@ export class HitParamsGeneralPart2Component {
56
51
  // this.toasterService.info('eDonusum::TransactionStarted');
57
52
  this.paramsGeneralDtoPart1.integrator =
58
53
  this.generalformParamsGeneralPart2.controls.integrator.value;
59
- const tokenSecretValue = this.generalformParamsGeneralPart2.controls.downloadTokenSecret.value;
60
- if (tokenSecretValue !== this.downloadTokenSecret) {
61
- this.hitParamsGeneralsService.setDownloadTokenSecret(tokenSecretValue).subscribe();
62
- this.downloadTokenSecret = tokenSecretValue;
63
- }
54
+ this.paramsGeneralDtoPart1.isEntegratorErrorMailActive =
55
+ this.generalformParamsGeneralPart2.controls.isEntegratorErrorMailActive.value;
64
56
  const request = this.service.update(this.paramsGeneralDto?.id, {
65
57
  ...this.paramsGeneralDtoPart1,
66
58
  });
@@ -82,10 +74,10 @@ export class HitParamsGeneralPart2Component {
82
74
  }
83
75
  }
84
76
  HitParamsGeneralPart2Component.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitParamsGeneralPart2Component, deps: [{ token: i1.ParamsGeneralService }, { token: i2.FormBuilder }, { token: i3.HitParamsGeneralsService }, { token: i4.ToasterService }, { token: i5.HitEntegratorsService }], target: i0.ɵɵFactoryTarget.Component });
85
- HitParamsGeneralPart2Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitParamsGeneralPart2Component, selector: "hit-params-general-part2", inputs: { paramsGeneralDtoPart1: "paramsGeneralDtoPart1", IsSubmitButtonHidden: "IsSubmitButtonHidden" }, outputs: { valid: "valid" }, providers: [{ provide: NgbDateAdapter, useClass: DateAdapter }], ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"generalformParamsGeneralPart2\" id=\"params-general-part2\" (ngSubmit)=\"submitForm()\"\r\n validateOnSubmit>\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <dx-select-box id=\"params-general-integrator\" formControlName=\"integrator\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"integratorDataSource\">\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 for=\"params-general-download-token-secret\">{{ 'eDonusum::DownloadTokenSecret' | abpLocalization }}</label>\r\n <input type=\"password\" id=\"params-general-download-token-secret\"\r\n formControlName=\"downloadTokenSecret\" class=\"form-control\" />\r\n </div>\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-general-part2\"\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: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i6.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "component", type: i4.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "directive", type: i7.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i7.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i8.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: i6.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.Default });
77
+ HitParamsGeneralPart2Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitParamsGeneralPart2Component, selector: "hit-params-general-part2", inputs: { paramsGeneralDtoPart1: "paramsGeneralDtoPart1", IsSubmitButtonHidden: "IsSubmitButtonHidden" }, outputs: { valid: "valid" }, providers: [{ provide: NgbDateAdapter, useClass: DateAdapter }], ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"generalformParamsGeneralPart2\" id=\"params-general-part2\" (ngSubmit)=\"submitForm()\"\r\n validateOnSubmit>\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <dx-select-box id=\"params-general-integrator\" formControlName=\"integrator\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"integratorDataSource\">\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-general-is-entegrator-error-mail-active\"\r\n formControlName=\"isEntegratorErrorMailActive\" class=\"form-check-input\" />\r\n <label for=\"params-general-is-entegrator-error-mail-active\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsEntegratorErrorMailActive' | abpLocalization }}\r\n </label>\r\n </div>\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-general-part2\"\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: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i6.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "component", type: i4.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "directive", type: i7.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i7.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i8.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: i6.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.Default });
86
78
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitParamsGeneralPart2Component, decorators: [{
87
79
  type: Component,
88
- args: [{ selector: 'hit-params-general-part2', changeDetection: ChangeDetectionStrategy.Default, providers: [{ provide: NgbDateAdapter, useClass: DateAdapter }], template: "<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"generalformParamsGeneralPart2\" id=\"params-general-part2\" (ngSubmit)=\"submitForm()\"\r\n validateOnSubmit>\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <dx-select-box id=\"params-general-integrator\" formControlName=\"integrator\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"integratorDataSource\">\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 for=\"params-general-download-token-secret\">{{ 'eDonusum::DownloadTokenSecret' | abpLocalization }}</label>\r\n <input type=\"password\" id=\"params-general-download-token-secret\"\r\n formControlName=\"downloadTokenSecret\" class=\"form-control\" />\r\n </div>\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-general-part2\"\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>" }]
80
+ args: [{ selector: 'hit-params-general-part2', changeDetection: ChangeDetectionStrategy.Default, providers: [{ provide: NgbDateAdapter, useClass: DateAdapter }], template: "<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"generalformParamsGeneralPart2\" id=\"params-general-part2\" (ngSubmit)=\"submitForm()\"\r\n validateOnSubmit>\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <dx-select-box id=\"params-general-integrator\" formControlName=\"integrator\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"integratorDataSource\">\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-general-is-entegrator-error-mail-active\"\r\n formControlName=\"isEntegratorErrorMailActive\" class=\"form-check-input\" />\r\n <label for=\"params-general-is-entegrator-error-mail-active\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsEntegratorErrorMailActive' | abpLocalization }}\r\n </label>\r\n </div>\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-general-part2\"\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>" }]
89
81
  }], ctorParameters: function () { return [{ type: i1.ParamsGeneralService }, { type: i2.FormBuilder }, { type: i3.HitParamsGeneralsService }, { type: i4.ToasterService }, { type: i5.HitEntegratorsService }]; }, propDecorators: { paramsGeneralDtoPart1: [{
90
82
  type: Input
91
83
  }], IsSubmitButtonHidden: [{
@@ -93,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
93
85
  }], valid: [{
94
86
  type: Output
95
87
  }] } });
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LXBhcmFtcy1nZW5lcmFsLXBhcnQyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LXBhcmFtcy1nZW5lcmFscy9oaXQtcGFyYW1zLWdlbmVyYWxzLXBhcnQyL2hpdC1wYXJhbXMtZ2VuZXJhbC1wYXJ0Mi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lLWRvbnVzdW0vc3JjL2xpYi9jb21wb25lbnRzL2hpdC1wYXJhbXMtZ2VuZXJhbHMvaGl0LXBhcmFtcy1nZW5lcmFscy1wYXJ0Mi9oaXQtcGFyYW1zLWdlbmVyYWwtcGFydDIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFjLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTVELE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7O0FBV3JDLE1BQU0sT0FBTyw4QkFBOEI7SUFpQnpDLFlBQ2tCLE9BQTZCLEVBQ3JDLEVBQWUsRUFDTix3QkFBa0QsRUFDbEQsY0FBOEIsRUFDL0IscUJBQTRDO1FBSjVDLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBQ3JDLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDTiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUMvQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBZnJELHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUU1QixV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QUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUNmO2lCQUNBLFNBQVMsQ0FDUixHQUFHLEVBQUU7Z0JBQ0gsa0VBQWtFO2dCQUNsRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ2hFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7Z0JBQy9CLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hCLENBQUMsRUFDRCxHQUFHLENBQUMsRUFBRTtnQkFDSixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO2dCQUUvRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QixDQUFDLENBQ0YsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7MkhBcEdVLDhCQUE4QjsrR0FBOUIsOEJBQThCLDBMQUo5QixDQUFDLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUMsMEJDWmpFLHMxREFtQ007MkZEbkJPLDhCQUE4QjtrQkFQMUMsU0FBUzsrQkFDRSwwQkFBMEIsbUJBQ25CLHVCQUF1QixDQUFDLE9BQU8sYUFDckMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDOzZPQVN0RCxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBRUcsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUVJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQvZXh0ZW5zaW9ucyc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nYkRhdGVBZGFwdGVyIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBQYXJhbXNHZW5lcmFsRHRvLCBQYXJhbXNHZW5lcmFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L3BhcmFtcy1nZW5lcmFscyc7XHJcbmltcG9ydCB7IGZpbmFsaXplLCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSGl0UGFyYW1zR2VuZXJhbHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vaGl0LXByb3h5L2hpdC1wYXJhbXMtZ2VuZXJhbHMvaGl0LXBhcmFtcy1nZW5lcmFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHsgSGl0RW50ZWdyYXRvcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vaGl0LXByb3h5L2hpdC1lbnRlZ3JhdG9ycy9oaXQtZW50ZWdyYXRvci5zZXJ2aWNlJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdoaXQtcGFyYW1zLWdlbmVyYWwtcGFydDInLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcclxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5nYkRhdGVBZGFwdGVyLCB1c2VDbGFzczogRGF0ZUFkYXB0ZXIgfV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hpdC1wYXJhbXMtZ2VuZXJhbC1wYXJ0Mi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVzOiBbXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhpdFBhcmFtc0dlbmVyYWxQYXJ0MkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgZ2VuZXJhbGZvcm1QYXJhbXNHZW5lcmFsUGFydDI6IEZvcm1Hcm91cDtcclxuXHJcbiAgcGFyYW1zR2VuZXJhbER0bz86IFBhcmFtc0dlbmVyYWxEdG87XHJcblxyXG4gIEBJbnB1dCgpIHBhcmFtc0dlbmVyYWxEdG9QYXJ0MTogUGFyYW1zR2VuZXJhbER0bztcclxuXHJcbiAgQElucHV0KCkgSXNTdWJtaXRCdXR0b25IaWRkZW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIHZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBzdWJtaXRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICBpbnRlZ3JhdG9yRGF0YVNvdXJjZTogYW55O1xyXG5cclxuICBkb3dubG9hZFRva2VuU2VjcmV0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZTogUGFyYW1zR2VuZXJhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGl0UGFyYW1zR2VuZXJhbHNTZXJ2aWNlOiBIaXRQYXJhbXNHZW5lcmFsc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ZXJTZXJ2aWNlOiBUb2FzdGVyU2VydmljZSxcclxuICAgIHB1YmxpYyByZWFkb25seSBoaXRFbnRlZ3JhdG9yc1NlcnZpY2U6IEhpdEVudGVncmF0b3JzU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5oaXRQYXJhbXNHZW5lcmFsc1NlcnZpY2UuZ2V0UGFyYW1zR2VuZXJhbCgpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5wYXJhbXNHZW5lcmFsRHRvID0gZGF0YTtcclxuICAgICAgdGhpcy5idWlsZEZvcm0oKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5idWlsZEZvcm0oKTtcclxuXHJcbiAgICB0aGlzLmhpdEVudGVncmF0b3JzU2VydmljZS5nZXRFbnRlZ3JhdG9ycygpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5pbnRlZ3JhdG9yRGF0YVNvdXJjZSA9IGRhdGE7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmhpdFBhcmFtc0dlbmVyYWxzU2VydmljZS5nZXREb3dubG9hZFRva2VuU2VjcmV0KCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICB0aGlzLmRvd25sb2FkVG9rZW5TZWNyZXQgPSBkYXRhPy52YWx1ZSB8fCAnJztcclxuICAgICAgdGhpcy5nZW5lcmFsZm9ybVBhcmFtc0dlbmVyYWxQYXJ0Mj8ucGF0Y2hWYWx1ZSh7IGRvd25sb2FkVG9rZW5TZWNyZXQ6IHRoaXMuZG93bmxvYWRUb2tlblNlY3JldCB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYnVpbGRGb3JtKCkge1xyXG4gICAgY29uc3QgeyBpbnRlZ3JhdG9yIH0gPSB0aGlzLnBhcmFtc0dlbmVyYWxEdG8gfHwge307XHJcblxyXG4gICAgdGhpcy5nZW5lcmFsZm9ybVBhcmFtc0dlbmVyYWxQYXJ0MiA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBpbnRlZ3JhdG9yOiBbaW50ZWdyYXRvciA/PyAwLCBbXV0sXHJcbiAgICAgIGRvd25sb2FkVG9rZW5TZWNyZXQ6IFt0aGlzLmRvd25sb2FkVG9rZW5TZWNyZXQgPz8gJycsIFtdXSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc3VibWl0Rm9ybSgpIHtcclxuICAgIGRlYnVnZ2VyO1xyXG4gICAgdGhpcy5oaXRQYXJhbXNHZW5lcmFsc1NlcnZpY2UuZ2V0UGFyYW1zR2VuZXJhbCgpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5wYXJhbXNHZW5lcmFsRHRvID0gZGF0YTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmdlbmVyYWxmb3JtUGFyYW1zR2VuZXJhbFBhcnQyLmludmFsaWQpIHtcclxuICAgICAgICB0aGlzLnZhbGlkLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zdWJtaXRCdXR0b25EaXNhYmxlZCA9IHRydWU7XHJcblxyXG4gICAgICAvLyB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmluZm8oJ2VEb251c3VtOjpUcmFuc2FjdGlvblN0YXJ0ZWQnKTtcclxuXHJcbiAgICAgIHRoaXMucGFyYW1zR2VuZXJhbER0b1BhcnQxLmludGVncmF0b3IgPVxyXG4gICAgICAgIHRoaXMuZ2VuZXJhbGZvcm1QYXJhbXNHZW5lcmFsUGFydDIuY29udHJvbHMuaW50ZWdyYXRvci52YWx1ZTtcclxuXHJcbiAgICAgIGNvbnN0IHRva2VuU2VjcmV0VmFsdWUgPSB0aGlzLmdlbmVyYWxmb3JtUGFyYW1zR2VuZXJhbFBhcnQyLmNvbnRyb2xzLmRvd25sb2FkVG9rZW5TZWNyZXQudmFsdWU7XHJcbiAgICAgIGlmICh0b2tlblNlY3JldFZhbHVlICE9PSB0aGlzLmRvd25sb2FkVG9rZW5TZWNyZXQpIHtcclxuICAgICAgICB0aGlzLmhpdFBhcmFtc0dlbmVyYWxzU2VydmljZS5zZXREb3dubG9hZFRva2VuU2VjcmV0KHRva2VuU2VjcmV0VmFsdWUpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMuZG93bmxvYWRUb2tlblNlY3JldCA9IHRva2VuU2VjcmV0VmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLnNlcnZpY2UudXBkYXRlKHRoaXMucGFyYW1zR2VuZXJhbER0bz8uaWQsIHtcclxuICAgICAgICAuLi50aGlzLnBhcmFtc0dlbmVyYWxEdG9QYXJ0MSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXF1ZXN0XHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc3VibWl0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgdGFwKCgpID0+IHsgfSlcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgLy8gdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKCdlRG9udXN1bTo6VHJhbnNhY3Rpb25TdWNjZXNzZnVsJyk7XHJcbiAgICAgICAgICAgIHRoaXMuaGl0UGFyYW1zR2VuZXJhbHNTZXJ2aWNlLmdldFBhcmFtc0dlbmVyYWwoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJhbXNHZW5lcmFsRHRvID0gZGF0YTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWQuZW1pdCh0cnVlKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKCdlRG9udXN1bTo6VHJhbnNhY3Rpb25VbnN1Y2Nlc3NmdWwnKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWQuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZ2VuZXJhbGZvcm1QYXJhbXNHZW5lcmFsUGFydDJcIiBpZD1cInBhcmFtcy1nZW5lcmFsLXBhcnQyXCIgKG5nU3VibWl0KT1cInN1Ym1pdEZvcm0oKVwiXHJcbiAgICAgICAgICAgIHZhbGlkYXRlT25TdWJtaXQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIGZhZGUtaW4tdG9wXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBpZD1cInBhcmFtcy1nZW5lcmFsLWludGVncmF0b3JcIiBmb3JtQ29udHJvbE5hbWU9XCJpbnRlZ3JhdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIGRpc3BsYXlFeHByPVwiZGlzcGxheU5hbWVcIiB2YWx1ZUV4cHI9XCJpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiaW50ZWdyYXRvckRhdGFTb3VyY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHgtc2VsZWN0LWJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwYXJhbXMtZ2VuZXJhbC1kb3dubG9hZC10b2tlbi1zZWNyZXRcIj57eyAnZURvbnVzdW06OkRvd25sb2FkVG9rZW5TZWNyZXQnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBpZD1cInBhcmFtcy1nZW5lcmFsLWRvd25sb2FkLXRva2VuLXNlY3JldFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZG93bmxvYWRUb2tlblNlY3JldFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiB0ZXh0LWxnLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGFicC1idXR0b24gaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIiBidXR0b25UeXBlPVwic3VibWl0XCIgZm9ybU5hbWU9XCJwYXJhbXMtZ2VuZXJhbC1wYXJ0MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInN1Ym1pdEJ1dHRvbkRpc2FibGVkXCIgW2hpZGRlbl09XCJJc1N1Ym1pdEJ1dHRvbkhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ICdBYnBVaTo6U2F2ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYWJwLWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LXBhcmFtcy1nZW5lcmFsLXBhcnQyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LXBhcmFtcy1nZW5lcmFscy9oaXQtcGFyYW1zLWdlbmVyYWxzLXBhcnQyL2hpdC1wYXJhbXMtZ2VuZXJhbC1wYXJ0Mi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lLWRvbnVzdW0vc3JjL2xpYi9jb21wb25lbnRzL2hpdC1wYXJhbXMtZ2VuZXJhbHMvaGl0LXBhcmFtcy1nZW5lcmFscy1wYXJ0Mi9oaXQtcGFyYW1zLWdlbmVyYWwtcGFydDIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFjLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTVELE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7O0FBV3JDLE1BQU0sT0FBTyw4QkFBOEI7SUFlekMsWUFDa0IsT0FBNkIsRUFDckMsRUFBZSxFQUNOLHdCQUFrRCxFQUNsRCxjQUE4QixFQUMvQixxQkFBNEM7UUFKNUMsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7UUFDckMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNOLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQy9CLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFickQseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBRTVCLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRTlDLHlCQUFvQixHQUFHLEtBQUssQ0FBQztJQVV6QixDQUFDO0lBRUwsUUFBUTtRQUNOLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNoRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQzdCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVqQixJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzNELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUztRQUNQLE1BQU0sRUFBRSxVQUFVLEVBQUUsMkJBQTJCLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDO1FBRWhGLElBQUksQ0FBQyw2QkFBNkIsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNqRCxVQUFVLEVBQUUsQ0FBQyxVQUFVLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNqQywyQkFBMkIsRUFBRSxDQUFDLDJCQUEyQixJQUFJLEtBQUssRUFBRSxFQUFFLENBQUM7U0FDeEUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ2QsUUFBUSxDQUFDO1FBQ1QsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGdCQUFnQixFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2hFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFFN0IsSUFBSSxJQUFJLENBQUMsNkJBQTZCLENBQUMsT0FBTyxFQUFFO2dCQUM5QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdkIsT0FBTzthQUNSO1lBRUQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztZQUVqQyw0REFBNEQ7WUFFNUQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVU7Z0JBQ25DLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUMvRCxJQUFJLENBQUMscUJBQXFCLENBQUMsMkJBQTJCO2dCQUNwRCxJQUFJLENBQUMsNkJBQTZCLENBQUMsUUFBUSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQztZQUVoRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFO2dCQUM3RCxHQUFHLElBQUksQ0FBQyxxQkFBcUI7YUFDOUIsQ0FBQyxDQUFDO1lBRUgsT0FBTztpQkFDSixJQUFJLENBQ0gsUUFBUSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1lBQ3BDLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FDZjtpQkFDQSxTQUFTLENBQ1IsR0FBRyxFQUFFO2dCQUNILGtFQUFrRTtnQkFDbEUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGdCQUFnQixFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNoRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO2dCQUMvQixDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixDQUFDLEVBQ0QsR0FBRyxDQUFDLEVBQUU7Z0JBQ0osSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztnQkFFL0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUNGLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OzJIQXpGVSw4QkFBOEI7K0dBQTlCLDhCQUE4QiwwTEFKOUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDLDBCQ1pqRSx3K0RBcUNNOzJGRHJCTyw4QkFBOEI7a0JBUDFDLFNBQVM7K0JBQ0UsMEJBQTBCLG1CQUNuQix1QkFBdUIsQ0FBQyxPQUFPLGFBQ3JDLENBQUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQzs2T0FTdEQscUJBQXFCO3NCQUE3QixLQUFLO2dCQUVHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFSSxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlQWRhcHRlciB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkL2V4dGVuc2lvbnMnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOZ2JEYXRlQWRhcHRlciB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgUGFyYW1zR2VuZXJhbER0bywgUGFyYW1zR2VuZXJhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wcm94eS9wYXJhbXMtZ2VuZXJhbHMnO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEhpdFBhcmFtc0dlbmVyYWxzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2hpdC1wcm94eS9oaXQtcGFyYW1zLWdlbmVyYWxzL2hpdC1wYXJhbXMtZ2VuZXJhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7IEhpdEVudGVncmF0b3JzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2hpdC1wcm94eS9oaXQtZW50ZWdyYXRvcnMvaGl0LWVudGVncmF0b3Iuc2VydmljZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaGl0LXBhcmFtcy1nZW5lcmFsLXBhcnQyJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXHJcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBOZ2JEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IERhdGVBZGFwdGVyIH1dLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oaXQtcGFyYW1zLWdlbmVyYWwtcGFydDIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlczogW10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIaXRQYXJhbXNHZW5lcmFsUGFydDJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGdlbmVyYWxmb3JtUGFyYW1zR2VuZXJhbFBhcnQyOiBGb3JtR3JvdXA7XHJcblxyXG4gIHBhcmFtc0dlbmVyYWxEdG8/OiBQYXJhbXNHZW5lcmFsRHRvO1xyXG5cclxuICBASW5wdXQoKSBwYXJhbXNHZW5lcmFsRHRvUGFydDE6IFBhcmFtc0dlbmVyYWxEdG87XHJcblxyXG4gIEBJbnB1dCgpIElzU3VibWl0QnV0dG9uSGlkZGVuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSB2YWxpZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgc3VibWl0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgaW50ZWdyYXRvckRhdGFTb3VyY2U6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZTogUGFyYW1zR2VuZXJhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGl0UGFyYW1zR2VuZXJhbHNTZXJ2aWNlOiBIaXRQYXJhbXNHZW5lcmFsc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ZXJTZXJ2aWNlOiBUb2FzdGVyU2VydmljZSxcclxuICAgIHB1YmxpYyByZWFkb25seSBoaXRFbnRlZ3JhdG9yc1NlcnZpY2U6IEhpdEVudGVncmF0b3JzU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5oaXRQYXJhbXNHZW5lcmFsc1NlcnZpY2UuZ2V0UGFyYW1zR2VuZXJhbCgpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5wYXJhbXNHZW5lcmFsRHRvID0gZGF0YTtcclxuICAgICAgdGhpcy5idWlsZEZvcm0oKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5idWlsZEZvcm0oKTtcclxuXHJcbiAgICB0aGlzLmhpdEVudGVncmF0b3JzU2VydmljZS5nZXRFbnRlZ3JhdG9ycygpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5pbnRlZ3JhdG9yRGF0YVNvdXJjZSA9IGRhdGE7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGJ1aWxkRm9ybSgpIHtcclxuICAgIGNvbnN0IHsgaW50ZWdyYXRvciwgaXNFbnRlZ3JhdG9yRXJyb3JNYWlsQWN0aXZlIH0gPSB0aGlzLnBhcmFtc0dlbmVyYWxEdG8gfHwge307XHJcblxyXG4gICAgdGhpcy5nZW5lcmFsZm9ybVBhcmFtc0dlbmVyYWxQYXJ0MiA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBpbnRlZ3JhdG9yOiBbaW50ZWdyYXRvciA/PyAwLCBbXV0sXHJcbiAgICAgIGlzRW50ZWdyYXRvckVycm9yTWFpbEFjdGl2ZTogW2lzRW50ZWdyYXRvckVycm9yTWFpbEFjdGl2ZSA/PyBmYWxzZSwgW11dLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzdWJtaXRGb3JtKCkge1xyXG4gICAgZGVidWdnZXI7XHJcbiAgICB0aGlzLmhpdFBhcmFtc0dlbmVyYWxzU2VydmljZS5nZXRQYXJhbXNHZW5lcmFsKCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICB0aGlzLnBhcmFtc0dlbmVyYWxEdG8gPSBkYXRhO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZ2VuZXJhbGZvcm1QYXJhbXNHZW5lcmFsUGFydDIuaW52YWxpZCkge1xyXG4gICAgICAgIHRoaXMudmFsaWQuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnN1Ym1pdEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIC8vIHRoaXMudG9hc3RlclNlcnZpY2UuaW5mbygnZURvbnVzdW06OlRyYW5zYWN0aW9uU3RhcnRlZCcpO1xyXG5cclxuICAgICAgdGhpcy5wYXJhbXNHZW5lcmFsRHRvUGFydDEuaW50ZWdyYXRvciA9XHJcbiAgICAgICAgdGhpcy5nZW5lcmFsZm9ybVBhcmFtc0dlbmVyYWxQYXJ0Mi5jb250cm9scy5pbnRlZ3JhdG9yLnZhbHVlO1xyXG4gICAgICB0aGlzLnBhcmFtc0dlbmVyYWxEdG9QYXJ0MS5pc0VudGVncmF0b3JFcnJvck1haWxBY3RpdmUgPVxyXG4gICAgICAgIHRoaXMuZ2VuZXJhbGZvcm1QYXJhbXNHZW5lcmFsUGFydDIuY29udHJvbHMuaXNFbnRlZ3JhdG9yRXJyb3JNYWlsQWN0aXZlLnZhbHVlO1xyXG5cclxuICAgICAgY29uc3QgcmVxdWVzdCA9IHRoaXMuc2VydmljZS51cGRhdGUodGhpcy5wYXJhbXNHZW5lcmFsRHRvPy5pZCwge1xyXG4gICAgICAgIC4uLnRoaXMucGFyYW1zR2VuZXJhbER0b1BhcnQxLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJlcXVlc3RcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zdWJtaXRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICB0YXAoKCkgPT4geyB9KVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MoJ2VEb251c3VtOjpUcmFuc2FjdGlvblN1Y2Nlc3NmdWwnKTtcclxuICAgICAgICAgICAgdGhpcy5oaXRQYXJhbXNHZW5lcmFsc1NlcnZpY2UuZ2V0UGFyYW1zR2VuZXJhbCgpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnBhcmFtc0dlbmVyYWxEdG8gPSBkYXRhO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy52YWxpZC5lbWl0KHRydWUpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoJ2VEb251c3VtOjpUcmFuc2FjdGlvblVuc3VjY2Vzc2Z1bCcpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy52YWxpZC5lbWl0KGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJnZW5lcmFsZm9ybVBhcmFtc0dlbmVyYWxQYXJ0MlwiIGlkPVwicGFyYW1zLWdlbmVyYWwtcGFydDJcIiAobmdTdWJtaXQpPVwic3VibWl0Rm9ybSgpXCJcclxuICAgICAgICAgICAgdmFsaWRhdGVPblN1Ym1pdD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgZmFkZS1pbi10b3BcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IGlkPVwicGFyYW1zLWdlbmVyYWwtaW50ZWdyYXRvclwiIGZvcm1Db250cm9sTmFtZT1cImludGVncmF0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZGlzcGxheUV4cHI9XCJkaXNwbGF5TmFtZVwiIHZhbHVlRXhwcj1cImlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJpbnRlZ3JhdG9yRGF0YVNvdXJjZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJwYXJhbXMtZ2VuZXJhbC1pcy1lbnRlZ3JhdG9yLWVycm9yLW1haWwtYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpc0VudGVncmF0b3JFcnJvck1haWxBY3RpdmVcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBhcmFtcy1nZW5lcmFsLWlzLWVudGVncmF0b3ItZXJyb3ItbWFpbC1hY3RpdmVcIiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OklzRW50ZWdyYXRvckVycm9yTWFpbEFjdGl2ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZm9ybT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgdGV4dC1sZy1lbmRcIj5cclxuICAgICAgICAgICAgICAgIDxhYnAtYnV0dG9uIGljb25DbGFzcz1cImZhIGZhLWNoZWNrXCIgYnV0dG9uVHlwZT1cInN1Ym1pdFwiIGZvcm1OYW1lPVwicGFyYW1zLWdlbmVyYWwtcGFydDJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzdWJtaXRCdXR0b25EaXNhYmxlZFwiIFtoaWRkZW5dPVwiSXNTdWJtaXRCdXR0b25IaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyAnQWJwVWk6OlNhdmUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2FicC1idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==