bpm-core 0.0.26 → 0.0.28

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 (49) hide show
  1. package/esm2022/lib/app/app.component.mjs +9 -10
  2. package/esm2022/lib/components/app-component-sections/activities/activities.component.mjs +3 -3
  3. package/esm2022/lib/components/app-component-sections/feedback-section/feedback-section.component.mjs +2 -2
  4. package/esm2022/lib/components/app-component-sections/form-section/form-section.component.mjs +4 -40
  5. package/esm2022/lib/components/app-component-sections/service-header/service-header.component.mjs +3 -3
  6. package/esm2022/lib/components/shared-components/action-buttons/action-buttons.component.mjs +6 -4
  7. package/esm2022/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.mjs +2 -2
  8. package/esm2022/lib/components/shared-components/form-field/checkbox/checkbox.component.mjs +42 -31
  9. package/esm2022/lib/components/shared-components/form-field/control-value-accessor.directive.mjs +63 -14
  10. package/esm2022/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.mjs +70 -137
  11. package/esm2022/lib/components/shared-components/form-field/date-picker/date-picker.component.mjs +42 -78
  12. package/esm2022/lib/components/shared-components/form-field/input/input.component.mjs +5 -19
  13. package/esm2022/lib/components/shared-components/form-field/input-currency/input-currency.component.mjs +23 -115
  14. package/esm2022/lib/components/shared-components/form-field/input-email/input-email.component.mjs +20 -72
  15. package/esm2022/lib/components/shared-components/form-field/input-mask/input-mask.component.mjs +20 -74
  16. package/esm2022/lib/components/shared-components/form-field/input-number/input-number.component.mjs +20 -104
  17. package/esm2022/lib/components/shared-components/form-field/input-telephone/input-telephone.component.mjs +20 -39
  18. package/esm2022/lib/components/shared-components/form-field/textarea/textarea.component.mjs +27 -59
  19. package/esm2022/lib/components/shared-components/form-field/validation-errors/validation-errors.component.mjs +3 -6
  20. package/esm2022/lib/environments/environment.local.mjs +2 -2
  21. package/esm2022/lib/services/core.service.ts.mjs +7 -8
  22. package/esm2022/lib/testComponent/general-approver-section/general-approver-section.component.mjs +2 -2
  23. package/esm2022/lib/testComponent/request-details-section/request-details-section.component.mjs +37 -23
  24. package/fesm2022/bpm-core.mjs +538 -958
  25. package/fesm2022/bpm-core.mjs.map +1 -1
  26. package/lib/app/app.component.d.ts +1 -2
  27. package/lib/components/app-component-sections/activities/activities.component.d.ts +2 -2
  28. package/lib/components/app-component-sections/approvals-workflow/approvals-workflow.component.d.ts +1 -1
  29. package/lib/components/app-component-sections/form-section/form-section.component.d.ts +3 -4
  30. package/lib/components/app-component-sections/service-header/service-header.component.d.ts +1 -1
  31. package/lib/components/shared-components/action-buttons/action-buttons.component.d.ts +3 -1
  32. package/lib/components/shared-components/dialogs/submit-dialog/submit-dialog.component.d.ts +1 -1
  33. package/lib/components/shared-components/form-field/checkbox/checkbox.component.d.ts +10 -7
  34. package/lib/components/shared-components/form-field/control-value-accessor.directive.d.ts +15 -5
  35. package/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.d.ts +15 -15
  36. package/lib/components/shared-components/form-field/date-picker/date-picker.component.d.ts +6 -13
  37. package/lib/components/shared-components/form-field/input/input.component.d.ts +2 -6
  38. package/lib/components/shared-components/form-field/input-currency/input-currency.component.d.ts +6 -23
  39. package/lib/components/shared-components/form-field/input-email/input-email.component.d.ts +4 -18
  40. package/lib/components/shared-components/form-field/input-mask/input-mask.component.d.ts +4 -18
  41. package/lib/components/shared-components/form-field/input-number/input-number.component.d.ts +5 -20
  42. package/lib/components/shared-components/form-field/input-telephone/input-telephone.component.d.ts +4 -15
  43. package/lib/components/shared-components/form-field/textarea/textarea.component.d.ts +5 -14
  44. package/lib/components/shared-components/form-field/validation-errors/validation-errors.component.d.ts +1 -2
  45. package/lib/services/core.service.ts.d.ts +1 -1
  46. package/lib/testComponent/request-details-section/request-details-section.component.d.ts +5 -7
  47. package/package.json +3 -2
  48. package/esm2022/lib/testComponent/services/state-machine.service.mjs +0 -148
  49. package/lib/testComponent/services/state-machine.service.d.ts +0 -29
@@ -1,111 +1,57 @@
1
1
  /* eslint-disable @angular-eslint/use-lifecycle-interface */
2
2
  /* eslint-disable @typescript-eslint/no-explicit-any */
3
3
  /* eslint-disable @angular-eslint/component-selector */
4
- import { BaseComponent } from '../base-component/base-component.component';
5
4
  // import { Validators } from '@angular/forms';
6
- import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
5
+ import { Component, CUSTOM_ELEMENTS_SCHEMA, forwardRef, Input } from '@angular/core';
7
6
  import { MatFormField } from '@angular/material/form-field';
8
7
  import { SatPopoverModule } from '@ncstate/sat-popover';
9
8
  import { NgxMaskDirective } from "ngx-mask";
10
9
  import { NgClass, NgIf } from "@angular/common";
11
10
  import { InfoItemComponent } from "../info-item/info-item.component";
12
- import { ReactiveFormsModule } from "@angular/forms";
11
+ import { NG_VALUE_ACCESSOR, ReactiveFormsModule } from "@angular/forms";
12
+ import { ControlValueAccessorDirective } from '../control-value-accessor.directive';
13
13
  import * as i0 from "@angular/core";
14
14
  import * as i1 from "@ncstate/sat-popover";
15
15
  import * as i2 from "@angular/forms";
16
- export class InputMaskComponent extends BaseComponent {
17
- label;
18
- displayValue;
19
- hasError = false;
20
- error;
16
+ export class InputMaskComponent extends ControlValueAccessorDirective {
21
17
  tooltip;
22
18
  floatLabel = 'auto';
23
19
  className = 'bordered-input';
24
- showLabel = true;
25
20
  matPrefix;
26
21
  iconPrefixName;
27
- matSuffix;
28
22
  iconSuffixName;
29
23
  numberSuffixName;
30
- optional = false;
31
- showArrows = false;
32
- decimals = 0;
33
- ngOnInit() {
34
- // this.resetPropagator.subscribe(this, this.resetData);
35
- this.field == undefined ? (this.field = '') : this.field;
36
- // code meaning
37
- // 0 digits (like 0 to 9 numbers)
38
- // 9 digits (like 0 to 9 numbers), but optional
39
- // A letters (uppercase or lowercase) and digits
40
- // S only letters (uppercase or lowercase)
41
- // U only letters uppercase
42
- // L only letters lowercase
43
- }
44
- ngAfterViewChecked() {
45
- this.cdRef.detectChanges();
46
- }
47
- ngOnChanges(changes) {
48
- if (changes?.['field']) {
49
- if (changes?.['field'].currentValue == '' || changes?.['field'].currentValue == null) {
50
- this.controller.setValue('');
51
- }
52
- else {
53
- this.controller.setValue(changes['field'].currentValue);
54
- }
55
- }
56
- }
57
- onValueChange(data) {
58
- let currentValue = data.target.value;
59
- if (+currentValue.length > +this.maxLength) {
60
- currentValue = currentValue.substr(0, +this.maxLength).toString();
61
- }
62
- if (+currentValue < +this.minValue) {
63
- currentValue = this.minValue.toString();
64
- }
65
- if (+currentValue > +this.maxValue) {
66
- currentValue = this.maxValue.toString();
67
- }
68
- this.field = currentValue;
69
- this.controller.setValue(this.field);
70
- this.emitedValue.emit(this.field.trim());
71
- }
72
24
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InputMaskComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
73
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: InputMaskComponent, isStandalone: true, selector: "app-input-mask", inputs: { label: "label", displayValue: "displayValue", hasError: "hasError", error: "error", tooltip: "tooltip", floatLabel: "floatLabel", className: "className", showLabel: "showLabel", matPrefix: "matPrefix", iconPrefixName: "iconPrefixName", matSuffix: "matSuffix", iconSuffixName: "iconSuffixName", numberSuffixName: "numberSuffixName", optional: "optional", showArrows: "showArrows", decimals: "decimals" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!isReadOnly\">\r\n <!-- <app-form-label [label]=\"label\" [optional]=\"!required\" [hideOption]=\"hideOption\" [showLabel]=\"showLabel\"></app-form-label> -->\r\n <div class=\"d-flex justify-content-between mb-1\" *ngIf=\"hasLabel\">\r\n <span class=\"form-label mb-0\">{{label}}</span>\r\n <span *ngIf=\"!required && ! hideOption\" class=\"fs-11 fc-dark-gray\">{{i18n.translate('Optional')}}\r\n </span>\r\n </div>\r\n <mat-form-field class=\"primary-form {{className}}\" [ngClass]=\"{'input-disabled' : disabled }\"\r\n [floatLabel]=\"floatLabel\">\r\n\r\n <span *ngIf=\"iconPrefixName\" matPrefix class=\"sfi {{iconPrefixName}}\"></span>\r\n <label class=\"mat-form-content\">\r\n <input matInput [placeholder]=\"placeholder\" [value]=\"value\" [attr.disabled]=\"disabled\" [mask]=\"mask\"\r\n [showMaskTyped]=\"false\" oninput=\"validity.valid || (value='');\" [formControl]=\"controller\"\r\n (input)=\"onValueChange($event)\" [required]=\"required\" [placeholder]=\"placeholder\">\r\n </label>\r\n\r\n <span *ngIf=\"matSuffix\" matSuffix class=\"sfi {{iconSuffixName}}\"></span>\r\n <div *ngIf=\"type === 'number'\" matSuffix class=\"d-flex align-items-center gap-2\">\r\n <span class=\"fs-14 fw-medium\" *ngIf=\"numberSuffixName\">{{numberSuffixName}}</span>\r\n <!-- <span class=\"sfi sfi-minus p-2 bc-light-gray fc-black\"></span>\r\n <span class=\"sfi sfi-plus p-2 bc-light-gray fc-black\"></span> -->\r\n </div>\r\n <mat-error class=\"mb-2\" *ngIf=\"(type !=='email' && !controller?.valid)\">\r\n {{i18n.translate('validFieldError')}}{{label}}\r\n </mat-error>\r\n\r\n <mat-error *ngIf=\"(type ==='email' && !controller?.valid)\">\r\n {{i18n.translate('validEmailError')}}\r\n </mat-error>\r\n <mat-hint *ngIf=\"showHint\">\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n\r\n\r\n </mat-form-field>\r\n <span class=\"fc-coral\" style=\"color:#f44336\" *ngIf=\"( showErrorMessage && controller.value)\">\r\n {{errorMessage}}\r\n </span>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isReadOnly && field\" class=\"info-section\">\r\n <app-info-item class=\"info-item w-100\" [label]=\"label\" [insideTable]=\"insideTable\" [hasLabel]=\"hasLabel\"\r\n [value]=\"field\"></app-info-item>\r\n</ng-container>\r\n\r\n\r\n<!-- section tooltip -->\r\n<sat-popover #popover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"deafult-tooltip\">\r\n {{tooltip}}\r\n </div>\r\n</sat-popover>\r\n", styles: [":host{flex-grow:1}\n"], dependencies: [{ kind: "ngmodule", type: SatPopoverModule }, { kind: "component", type: i1.SatPopoverComponent, selector: "sat-popover", inputs: ["anchor", "horizontalAlign", "xAlign", "verticalAlign", "yAlign", "forceAlignment", "lockAlignment", "autoFocus", "restoreFocus", "scrollStrategy", "hasBackdrop", "interactiveClose", "openTransition", "closeTransition", "openAnimationStartAtScale", "closeAnimationEndAtScale", "backdropClass", "panelClass"], outputs: ["opened", "closed", "afterOpen", "afterClose", "backdropClicked", "overlayKeydown"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InfoItemComponent, selector: "app-info-item", inputs: ["label", "value", "name", "type", "dateType", "multiple", "insideTable", "hasLabel", "arrayList", "actionType", "download"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
25
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: InputMaskComponent, isStandalone: true, selector: "app-input-mask", inputs: { tooltip: "tooltip", floatLabel: "floatLabel", className: "className", matPrefix: "matPrefix", iconPrefixName: "iconPrefixName", iconSuffixName: "iconSuffixName", numberSuffixName: "numberSuffixName" }, providers: [
26
+ {
27
+ provide: NG_VALUE_ACCESSOR,
28
+ useExisting: forwardRef(() => InputMaskComponent),
29
+ multi: true,
30
+ },
31
+ ], usesInheritance: true, ngImport: i0, template: "\r\n@if(!isReadOnly){\r\n <ng-container>\r\n <!-- <app-form-label [label]=\"label\" [optional]=\"!required\" [hideOption]=\"hideOption\" [showLabel]=\"showLabel\"></app-form-label> -->\r\n @if(label){\r\n <div class=\"d-flex justify-content-between mb-1\">\r\n <span class=\"form-label mb-0\">{{label}}</span>\r\n @if(!required){\r\n <span class=\"fs-11 fc-dark-gray\">{{i18n.translate('Optional')}}\r\n </span>\r\n }\r\n </div>\r\n }\r\n \r\n <mat-form-field class=\"primary-form {{className}}\" [ngClass]=\"{'input-disabled' : isDisabled }\"\r\n [floatLabel]=\"floatLabel\">\r\n \r\n <span *ngIf=\"iconPrefixName\" matPrefix class=\"sfi {{iconPrefixName}}\"></span>\r\n <label class=\"mat-form-content\">\r\n <input matInput [placeholder]=\"placeholder\" [value]=\"value\" [attr.disabled]=\"isDisabled\" [mask]=\"mask\"\r\n [showMaskTyped]=\"false\" oninput=\"validity.valid || (value='');\" [formControl]=\"control\"\r\n [required]=\"required\" [placeholder]=\"placeholder\">\r\n </label>\r\n \r\n @if(matSuffix){\r\n <span matSuffix class=\"sfi {{iconSuffixName}}\"></span>\r\n }\r\n @if(type === 'number'){\r\n <div matSuffix class=\"d-flex align-items-center gap-2\">\r\n @if(numberSuffixName){\r\n <span class=\"fs-14 fw-medium\">{{numberSuffixName}}</span>\r\n }\r\n <!-- <span class=\"sfi sfi-minus p-2 bc-light-gray fc-black\"></span>\r\n <span class=\"sfi sfi-plus p-2 bc-light-gray fc-black\"></span> -->\r\n </div>\r\n }\r\n <!-- @if((!control?.valid)){\r\n <mat-error class=\"mb-2\">\r\n {{i18n.translate('validFieldError')}}{{label}}\r\n </mat-error>\r\n } -->\r\n \r\n \r\n <!-- <mat-error *ngIf=\"(type ==='email' && !control?.valid)\">\r\n {{i18n.translate('validEmailError')}}\r\n </mat-error> -->\r\n @if(showHint){\r\n <mat-hint>\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n <!-- <span class=\"fc-coral\" style=\"color:#f44336\" *ngIf=\"( showErrorMessage && control.value)\">\r\n {{errorMessage}}\r\n </span> -->\r\n \r\n </ng-container>\r\n}\r\n\r\n@if(isReadOnly && control){\r\n <ng-container class=\"info-section\">\r\n <app-info-item class=\"info-item w-100\" [label]=\"label\" [insideTable]=\"insideTable\" [hasLabel]=\"label ? true: false\"\r\n [value]=\"control\"></app-info-item>\r\n </ng-container>\r\n \r\n}\r\n\r\n\r\n<!-- section tooltip -->\r\n<sat-popover #popover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"deafult-tooltip\">\r\n {{tooltip}}\r\n </div>\r\n</sat-popover>\r\n", styles: [":host{flex-grow:1}\n"], dependencies: [{ kind: "ngmodule", type: SatPopoverModule }, { kind: "component", type: i1.SatPopoverComponent, selector: "sat-popover", inputs: ["anchor", "horizontalAlign", "xAlign", "verticalAlign", "yAlign", "forceAlignment", "lockAlignment", "autoFocus", "restoreFocus", "scrollStrategy", "hasBackdrop", "interactiveClose", "openTransition", "closeTransition", "openAnimationStartAtScale", "closeAnimationEndAtScale", "backdropClass", "panelClass"], outputs: ["opened", "closed", "afterOpen", "afterClose", "backdropClicked", "overlayKeydown"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InfoItemComponent, selector: "app-info-item", inputs: ["label", "value", "name", "type", "dateType", "multiple", "insideTable", "hasLabel", "arrayList", "actionType", "download"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
74
32
  }
75
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InputMaskComponent, decorators: [{
76
34
  type: Component,
77
- args: [{ selector: 'app-input-mask', schemas: [CUSTOM_ELEMENTS_SCHEMA], standalone: true, imports: [SatPopoverModule, MatFormField, NgxMaskDirective, NgIf, InfoItemComponent, ReactiveFormsModule, NgClass], template: "<ng-container *ngIf=\"!isReadOnly\">\r\n <!-- <app-form-label [label]=\"label\" [optional]=\"!required\" [hideOption]=\"hideOption\" [showLabel]=\"showLabel\"></app-form-label> -->\r\n <div class=\"d-flex justify-content-between mb-1\" *ngIf=\"hasLabel\">\r\n <span class=\"form-label mb-0\">{{label}}</span>\r\n <span *ngIf=\"!required && ! hideOption\" class=\"fs-11 fc-dark-gray\">{{i18n.translate('Optional')}}\r\n </span>\r\n </div>\r\n <mat-form-field class=\"primary-form {{className}}\" [ngClass]=\"{'input-disabled' : disabled }\"\r\n [floatLabel]=\"floatLabel\">\r\n\r\n <span *ngIf=\"iconPrefixName\" matPrefix class=\"sfi {{iconPrefixName}}\"></span>\r\n <label class=\"mat-form-content\">\r\n <input matInput [placeholder]=\"placeholder\" [value]=\"value\" [attr.disabled]=\"disabled\" [mask]=\"mask\"\r\n [showMaskTyped]=\"false\" oninput=\"validity.valid || (value='');\" [formControl]=\"controller\"\r\n (input)=\"onValueChange($event)\" [required]=\"required\" [placeholder]=\"placeholder\">\r\n </label>\r\n\r\n <span *ngIf=\"matSuffix\" matSuffix class=\"sfi {{iconSuffixName}}\"></span>\r\n <div *ngIf=\"type === 'number'\" matSuffix class=\"d-flex align-items-center gap-2\">\r\n <span class=\"fs-14 fw-medium\" *ngIf=\"numberSuffixName\">{{numberSuffixName}}</span>\r\n <!-- <span class=\"sfi sfi-minus p-2 bc-light-gray fc-black\"></span>\r\n <span class=\"sfi sfi-plus p-2 bc-light-gray fc-black\"></span> -->\r\n </div>\r\n <mat-error class=\"mb-2\" *ngIf=\"(type !=='email' && !controller?.valid)\">\r\n {{i18n.translate('validFieldError')}}{{label}}\r\n </mat-error>\r\n\r\n <mat-error *ngIf=\"(type ==='email' && !controller?.valid)\">\r\n {{i18n.translate('validEmailError')}}\r\n </mat-error>\r\n <mat-hint *ngIf=\"showHint\">\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n\r\n\r\n </mat-form-field>\r\n <span class=\"fc-coral\" style=\"color:#f44336\" *ngIf=\"( showErrorMessage && controller.value)\">\r\n {{errorMessage}}\r\n </span>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isReadOnly && field\" class=\"info-section\">\r\n <app-info-item class=\"info-item w-100\" [label]=\"label\" [insideTable]=\"insideTable\" [hasLabel]=\"hasLabel\"\r\n [value]=\"field\"></app-info-item>\r\n</ng-container>\r\n\r\n\r\n<!-- section tooltip -->\r\n<sat-popover #popover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"deafult-tooltip\">\r\n {{tooltip}}\r\n </div>\r\n</sat-popover>\r\n", styles: [":host{flex-grow:1}\n"] }]
78
- }], propDecorators: { label: [{
79
- type: Input
80
- }], displayValue: [{
81
- type: Input
82
- }], hasError: [{
83
- type: Input
84
- }], error: [{
85
- type: Input
86
- }], tooltip: [{
35
+ args: [{ selector: 'app-input-mask', schemas: [CUSTOM_ELEMENTS_SCHEMA], standalone: true, providers: [
36
+ {
37
+ provide: NG_VALUE_ACCESSOR,
38
+ useExisting: forwardRef(() => InputMaskComponent),
39
+ multi: true,
40
+ },
41
+ ], imports: [SatPopoverModule, MatFormField, NgxMaskDirective, NgIf, InfoItemComponent, ReactiveFormsModule, NgClass], template: "\r\n@if(!isReadOnly){\r\n <ng-container>\r\n <!-- <app-form-label [label]=\"label\" [optional]=\"!required\" [hideOption]=\"hideOption\" [showLabel]=\"showLabel\"></app-form-label> -->\r\n @if(label){\r\n <div class=\"d-flex justify-content-between mb-1\">\r\n <span class=\"form-label mb-0\">{{label}}</span>\r\n @if(!required){\r\n <span class=\"fs-11 fc-dark-gray\">{{i18n.translate('Optional')}}\r\n </span>\r\n }\r\n </div>\r\n }\r\n \r\n <mat-form-field class=\"primary-form {{className}}\" [ngClass]=\"{'input-disabled' : isDisabled }\"\r\n [floatLabel]=\"floatLabel\">\r\n \r\n <span *ngIf=\"iconPrefixName\" matPrefix class=\"sfi {{iconPrefixName}}\"></span>\r\n <label class=\"mat-form-content\">\r\n <input matInput [placeholder]=\"placeholder\" [value]=\"value\" [attr.disabled]=\"isDisabled\" [mask]=\"mask\"\r\n [showMaskTyped]=\"false\" oninput=\"validity.valid || (value='');\" [formControl]=\"control\"\r\n [required]=\"required\" [placeholder]=\"placeholder\">\r\n </label>\r\n \r\n @if(matSuffix){\r\n <span matSuffix class=\"sfi {{iconSuffixName}}\"></span>\r\n }\r\n @if(type === 'number'){\r\n <div matSuffix class=\"d-flex align-items-center gap-2\">\r\n @if(numberSuffixName){\r\n <span class=\"fs-14 fw-medium\">{{numberSuffixName}}</span>\r\n }\r\n <!-- <span class=\"sfi sfi-minus p-2 bc-light-gray fc-black\"></span>\r\n <span class=\"sfi sfi-plus p-2 bc-light-gray fc-black\"></span> -->\r\n </div>\r\n }\r\n <!-- @if((!control?.valid)){\r\n <mat-error class=\"mb-2\">\r\n {{i18n.translate('validFieldError')}}{{label}}\r\n </mat-error>\r\n } -->\r\n \r\n \r\n <!-- <mat-error *ngIf=\"(type ==='email' && !control?.valid)\">\r\n {{i18n.translate('validEmailError')}}\r\n </mat-error> -->\r\n @if(showHint){\r\n <mat-hint>\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n <!-- <span class=\"fc-coral\" style=\"color:#f44336\" *ngIf=\"( showErrorMessage && control.value)\">\r\n {{errorMessage}}\r\n </span> -->\r\n \r\n </ng-container>\r\n}\r\n\r\n@if(isReadOnly && control){\r\n <ng-container class=\"info-section\">\r\n <app-info-item class=\"info-item w-100\" [label]=\"label\" [insideTable]=\"insideTable\" [hasLabel]=\"label ? true: false\"\r\n [value]=\"control\"></app-info-item>\r\n </ng-container>\r\n \r\n}\r\n\r\n\r\n<!-- section tooltip -->\r\n<sat-popover #popover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"deafult-tooltip\">\r\n {{tooltip}}\r\n </div>\r\n</sat-popover>\r\n", styles: [":host{flex-grow:1}\n"] }]
42
+ }], propDecorators: { tooltip: [{
87
43
  type: Input
88
44
  }], floatLabel: [{
89
45
  type: Input
90
46
  }], className: [{
91
47
  type: Input
92
- }], showLabel: [{
93
- type: Input
94
48
  }], matPrefix: [{
95
49
  type: Input
96
50
  }], iconPrefixName: [{
97
51
  type: Input
98
- }], matSuffix: [{
99
- type: Input
100
52
  }], iconSuffixName: [{
101
53
  type: Input
102
54
  }], numberSuffixName: [{
103
55
  type: Input
104
- }], optional: [{
105
- type: Input
106
- }], showArrows: [{
107
- type: Input
108
- }], decimals: [{
109
- type: Input
110
56
  }] } });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbWFzay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC9pbnB1dC1tYXNrL2lucHV0LW1hc2suY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvaW5wdXQtbWFzay9pbnB1dC1tYXNrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDREQUE0RDtBQUM1RCx1REFBdUQ7QUFDdkQsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMzRSwrQ0FBK0M7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBaUIsWUFBWSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQzFDLE9BQU8sRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFVbkQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGFBQWE7SUFDMUMsS0FBSyxDQUFVO0lBQ2YsWUFBWSxDQUFPO0lBQ25CLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsS0FBSyxDQUFVO0lBQ2Ys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RSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE9BQU8sQ0FBQzs4QkFHekcsS0FBSztzQkFBYixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L3VzZS1saWZlY3ljbGUtaW50ZXJmYWNlICovXHJcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1jb21wb25lbnQvYmFzZS1jb21wb25lbnQuY29tcG9uZW50JztcclxuLy8gaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBJbnB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0Zsb2F0TGFiZWxUeXBlLCBNYXRGb3JtRmllbGR9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBTYXRQb3BvdmVyTW9kdWxlIH0gZnJvbSAnQG5jc3RhdGUvc2F0LXBvcG92ZXInO1xyXG5pbXBvcnQge05neE1hc2tEaXJlY3RpdmV9IGZyb20gXCJuZ3gtbWFza1wiO1xyXG5pbXBvcnQge05nQ2xhc3MsIE5nSWZ9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtJbmZvSXRlbUNvbXBvbmVudH0gZnJvbSBcIi4uL2luZm8taXRlbS9pbmZvLWl0ZW0uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7UmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1pbnB1dC1tYXNrJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtbWFzay5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtbWFzay5jb21wb25lbnQuc2NzcyddLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtTYXRQb3BvdmVyTW9kdWxlLCBNYXRGb3JtRmllbGQsIE5neE1hc2tEaXJlY3RpdmUsIE5nSWYsIEluZm9JdGVtQ29tcG9uZW50LCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBOZ0NsYXNzXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXRNYXNrQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgbGFiZWwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZGlzcGxheVZhbHVlITogYW55O1xyXG4gIEBJbnB1dCgpIGhhc0Vycm9yID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZXJyb3IhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdG9vbHRpcCE6IHN0cmluZztcclxuICBASW5wdXQoKSBmbG9hdExhYmVsOiBhbnkgPSAnYXV0byc7XHJcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJ2JvcmRlcmVkLWlucHV0JztcclxuICBASW5wdXQoKSBzaG93TGFiZWwgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIG1hdFByZWZpeCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaWNvblByZWZpeE5hbWUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbWF0U3VmZml4ITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBpY29uU3VmZml4TmFtZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBudW1iZXJTdWZmaXhOYW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG9wdGlvbmFsID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0Fycm93cyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRlY2ltYWxzID0gMDtcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIHRoaXMucmVzZXRQcm9wYWdhdG9yLnN1YnNjcmliZSh0aGlzLCB0aGlzLnJlc2V0RGF0YSk7XHJcbiAgICB0aGlzLmZpZWxkID09IHVuZGVmaW5lZCA/ICh0aGlzLmZpZWxkID0gJycpIDogdGhpcy5maWVsZDtcclxuXHJcbiAgICAvLyBjb2RlXHRtZWFuaW5nXHJcbiAgICAvLyAwXHRkaWdpdHMgKGxpa2UgMCB0byA5IG51bWJlcnMpXHJcbiAgICAvLyA5XHRkaWdpdHMgKGxpa2UgMCB0byA5IG51bWJlcnMpLCBidXQgb3B0aW9uYWxcclxuICAgIC8vIEFcdGxldHRlcnMgKHVwcGVyY2FzZSBvciBsb3dlcmNhc2UpIGFuZCBkaWdpdHNcclxuICAgIC8vIFNcdG9ubHkgbGV0dGVycyAodXBwZXJjYXNlIG9yIGxvd2VyY2FzZSlcclxuICAgIC8vIFVcdG9ubHkgbGV0dGVycyB1cHBlcmNhc2VcclxuICAgIC8vIExcdG9ubHkgbGV0dGVycyBsb3dlcmNhc2VcclxuXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzPy5bJ2ZpZWxkJ10pIHtcclxuICAgICAgaWYgKGNoYW5nZXM/LlsnZmllbGQnXS5jdXJyZW50VmFsdWUgPT0gJycgfHwgY2hhbmdlcz8uWydmaWVsZCddLmN1cnJlbnRWYWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5jb250cm9sbGVyLnNldFZhbHVlKCcnKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2xsZXIuc2V0VmFsdWUoY2hhbmdlc1snZmllbGQnXS5jdXJyZW50VmFsdWUpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uVmFsdWVDaGFuZ2UoZGF0YTogYW55KSB7XHJcbiAgICBsZXQgY3VycmVudFZhbHVlID0gZGF0YS50YXJnZXQudmFsdWU7XHJcbiAgICBpZiAoK2N1cnJlbnRWYWx1ZS5sZW5ndGggPiArdGhpcy5tYXhMZW5ndGgpIHtcclxuICAgICAgY3VycmVudFZhbHVlID0gY3VycmVudFZhbHVlLnN1YnN0cigwLCArdGhpcy5tYXhMZW5ndGgpLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoK2N1cnJlbnRWYWx1ZSA8ICt0aGlzLm1pblZhbHVlKSB7XHJcbiAgICAgIGN1cnJlbnRWYWx1ZSA9IHRoaXMubWluVmFsdWUudG9TdHJpbmcoKTtcclxuICAgIH1cclxuICAgIGlmICgrY3VycmVudFZhbHVlID4gK3RoaXMubWF4VmFsdWUpIHtcclxuICAgICAgY3VycmVudFZhbHVlID0gdGhpcy5tYXhWYWx1ZS50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5maWVsZCA9IGN1cnJlbnRWYWx1ZTtcclxuICAgIHRoaXMuY29udHJvbGxlci5zZXRWYWx1ZSh0aGlzLmZpZWxkKVxyXG4gICAgdGhpcy5lbWl0ZWRWYWx1ZS5lbWl0KHRoaXMuZmllbGQudHJpbSgpKTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1JlYWRPbmx5XCI+XHJcbiAgPCEtLSA8YXBwLWZvcm0tbGFiZWwgW2xhYmVsXT1cImxhYmVsXCIgW29wdGlvbmFsXT1cIiFyZXF1aXJlZFwiIFtoaWRlT3B0aW9uXT1cImhpZGVPcHRpb25cIiBbc2hvd0xhYmVsXT1cInNob3dMYWJlbFwiPjwvYXBwLWZvcm0tbGFiZWw+IC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItMVwiICpuZ0lmPVwiaGFzTGFiZWxcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0wXCI+e3tsYWJlbH19PC9zcGFuPlxyXG4gICAgPHNwYW4gKm5nSWY9XCIhcmVxdWlyZWQgJiYgISAgaGlkZU9wdGlvblwiIGNsYXNzPVwiZnMtMTEgZmMtZGFyay1ncmF5XCI+e3tpMThuLnRyYW5zbGF0ZSgnT3B0aW9uYWwnKX19XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcbiAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwicHJpbWFyeS1mb3JtIHt7Y2xhc3NOYW1lfX1cIiBbbmdDbGFzc109XCJ7J2lucHV0LWRpc2FibGVkJyA6IGRpc2FibGVkIH1cIlxyXG4gICAgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiPlxyXG5cclxuICAgIDxzcGFuICpuZ0lmPVwiaWNvblByZWZpeE5hbWVcIiBtYXRQcmVmaXggY2xhc3M9XCJzZmkge3tpY29uUHJlZml4TmFtZX19XCI+PC9zcGFuPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwibWF0LWZvcm0tY29udGVudFwiPlxyXG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgW3ZhbHVlXT1cInZhbHVlXCIgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbbWFza109XCJtYXNrXCJcclxuICAgICAgICBbc2hvd01hc2tUeXBlZF09XCJmYWxzZVwiIG9uaW5wdXQ9XCJ2YWxpZGl0eS52YWxpZCB8fCAodmFsdWU9JycpO1wiIFtmb3JtQ29udHJvbF09XCJjb250cm9sbGVyXCJcclxuICAgICAgICAoaW5wdXQpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCIgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCI+XHJcbiAgICA8L2xhYmVsPlxyXG5cclxuICAgIDxzcGFuICpuZ0lmPVwibWF0U3VmZml4XCIgbWF0U3VmZml4IGNsYXNzPVwic2ZpIHt7aWNvblN1ZmZpeE5hbWV9fVwiPjwvc3Bhbj5cclxuICAgIDxkaXYgKm5nSWY9XCJ0eXBlID09PSAnbnVtYmVyJ1wiIG1hdFN1ZmZpeCBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xNCBmdy1tZWRpdW1cIiAqbmdJZj1cIm51bWJlclN1ZmZpeE5hbWVcIj57e251bWJlclN1ZmZpeE5hbWV9fTwvc3Bhbj5cclxuICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cInNmaSBzZmktbWludXMgcC0yIGJjLWxpZ2h0LWdyYXkgZmMtYmxhY2tcIj48L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic2ZpIHNmaS1wbHVzIHAtMiBiYy1saWdodC1ncmF5IGZjLWJsYWNrXCI+PC9zcGFuPiAtLT5cclxuICAgIDwvZGl2PlxyXG4gICAgPG1hdC1lcnJvciBjbGFzcz1cIm1iLTJcIiAqbmdJZj1cIih0eXBlICE9PSdlbWFpbCcgJiYgIWNvbnRyb2xsZXI/LnZhbGlkKVwiPlxyXG4gICAgICB7e2kxOG4udHJhbnNsYXRlKCd2YWxpZEZpZWxkRXJyb3InKX19e3tsYWJlbH19XHJcbiAgICA8L21hdC1lcnJvcj5cclxuXHJcbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiKHR5cGUgPT09J2VtYWlsJyAmJiAhY29udHJvbGxlcj8udmFsaWQpXCI+XHJcbiAgICAgIHt7aTE4bi50cmFuc2xhdGUoJ3ZhbGlkRW1haWxFcnJvcicpfX1cclxuICAgIDwvbWF0LWVycm9yPlxyXG4gICAgPG1hdC1oaW50ICpuZ0lmPVwic2hvd0hpbnRcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzZmkgc2ZpLWNoZWNrLWNpcmNsZSBmb250LTEwIGZjLWRhcmstZ3JheVwiIFtuZ0NsYXNzXT1cInsnZmMtb2FzaXMtbGlnaHQtaW1wJzp2YWx1ZX1cIj48L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibXgtMVwiPjwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMiBmYy1vbnl4XCI+e3toaW50fX08L3NwYW4+XHJcbiAgICA8L21hdC1oaW50PlxyXG5cclxuXHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8c3BhbiBjbGFzcz1cImZjLWNvcmFsXCIgc3R5bGU9XCJjb2xvcjojZjQ0MzM2XCIgKm5nSWY9XCIoIHNob3dFcnJvck1lc3NhZ2UgJiYgY29udHJvbGxlci52YWx1ZSlcIj5cclxuICAgIHt7ZXJyb3JNZXNzYWdlfX1cclxuICA8L3NwYW4+XHJcblxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJpc1JlYWRPbmx5ICYmIGZpZWxkXCIgY2xhc3M9XCJpbmZvLXNlY3Rpb25cIj5cclxuICA8YXBwLWluZm8taXRlbSBjbGFzcz1cImluZm8taXRlbSB3LTEwMFwiIFtsYWJlbF09XCJsYWJlbFwiIFtpbnNpZGVUYWJsZV09XCJpbnNpZGVUYWJsZVwiIFtoYXNMYWJlbF09XCJoYXNMYWJlbFwiXHJcbiAgICBbdmFsdWVdPVwiZmllbGRcIj48L2FwcC1pbmZvLWl0ZW0+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbjwhLS0gc2VjdGlvbiB0b29sdGlwIC0tPlxyXG48c2F0LXBvcG92ZXIgI3BvcG92ZXIgW2hhc0JhY2tkcm9wXT1cInRydWVcIiB2ZXJ0aWNhbEFsaWduPVwiYmVsb3dcIj5cclxuICA8ZGl2IGNsYXNzPVwiZGVhZnVsdC10b29sdGlwXCI+XHJcbiAgICB7e3Rvb2x0aXB9fVxyXG4gIDwvZGl2PlxyXG48L3NhdC1wb3BvdmVyPlxyXG4iXX0=
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbWFzay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC9pbnB1dC1tYXNrL2lucHV0LW1hc2suY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvaW5wdXQtbWFzay9pbnB1dC1tYXNrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDREQUE0RDtBQUM1RCx1REFBdUQ7QUFDdkQsdURBQXVEO0FBQ3ZELCtDQUErQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDMUMsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7OztBQWlCcEYsTUFBTSxPQUFPLGtCQUF5QixTQUFRLDZCQUFtQztJQUN0RSxPQUFPLENBQVU7SUFDakIsVUFBVSxHQUFRLE1BQU0sQ0FBQztJQUN6QixTQUFTLEdBQUcsZ0JBQWdCLENBQUM7SUFDN0IsU0FBUyxDQUFXO0lBQ3BCLGNBQWMsQ0FBVTtJQUN4QixjQUFjLENBQVU7SUFDeEIsZ0JBQWdCLENBQVU7dUdBUHhCLGtCQUFrQjsyRkFBbEIsa0JBQWtCLGlSQVRsQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUM7Z0JBQ2pELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixpREN6QkgsMjRGQTRFQSw2RURsRFksZ0JBQWdCLDBnQkFBRSxZQUFZLDRMQUFFLGdCQUFnQixpakJBQUUsSUFBSSw2RkFBRSxpQkFBaUIsK0xBQUUsbUJBQW1CLHV5QkFBRSxPQUFPOzsyRkFFdEcsa0JBQWtCO2tCQWY5QixTQUFTOytCQUNFLGdCQUFnQixXQUdqQixDQUFDLHNCQUFzQixDQUFDLGNBQ3JCLElBQUksYUFDTDt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQzs0QkFDakQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0YsV0FDUSxDQUFDLGdCQUFnQixFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxDQUFDOzhCQUd6RyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC91c2UtbGlmZWN5Y2xlLWludGVyZmFjZSAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcbi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cclxuLy8gaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBmb3J3YXJkUmVmLCBJbnB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge01hdEZvcm1GaWVsZH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IFNhdFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAbmNzdGF0ZS9zYXQtcG9wb3Zlcic7XHJcbmltcG9ydCB7Tmd4TWFza0RpcmVjdGl2ZX0gZnJvbSBcIm5neC1tYXNrXCI7XHJcbmltcG9ydCB7TmdDbGFzcywgTmdJZn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge0luZm9JdGVtQ29tcG9uZW50fSBmcm9tIFwiLi4vaW5mby1pdGVtL2luZm8taXRlbS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlIH0gZnJvbSAnLi4vY29udHJvbC12YWx1ZS1hY2Nlc3Nvci5kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtaW5wdXQtbWFzaycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LW1hc2suY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LW1hc2suY29tcG9uZW50LnNjc3MnXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0TWFza0NvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG4gIGltcG9ydHM6IFtTYXRQb3BvdmVyTW9kdWxlLCBNYXRGb3JtRmllbGQsIE5neE1hc2tEaXJlY3RpdmUsIE5nSWYsIEluZm9JdGVtQ29tcG9uZW50LCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBOZ0NsYXNzXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXRNYXNrQ29tcG9uZW50PFR5cGU+IGV4dGVuZHMgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmU8VHlwZT4gICB7XHJcbiAgQElucHV0KCkgdG9vbHRpcCE6IHN0cmluZztcclxuICBASW5wdXQoKSBmbG9hdExhYmVsOiBhbnkgPSAnYXV0byc7XHJcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJ2JvcmRlcmVkLWlucHV0JztcclxuICBASW5wdXQoKSBtYXRQcmVmaXghOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGljb25QcmVmaXhOYW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGljb25TdWZmaXhOYW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG51bWJlclN1ZmZpeE5hbWUhOiBzdHJpbmc7XHJcbiAgLy8gbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLnJlc2V0UHJvcGFnYXRvci5zdWJzY3JpYmUodGhpcywgdGhpcy5yZXNldERhdGEpO1xyXG5cclxuICAgIC8vIGNvZGVcdG1lYW5pbmdcclxuICAgIC8vIDBcdGRpZ2l0cyAobGlrZSAwIHRvIDkgbnVtYmVycylcclxuICAgIC8vIDlcdGRpZ2l0cyAobGlrZSAwIHRvIDkgbnVtYmVycyksIGJ1dCBvcHRpb25hbFxyXG4gICAgLy8gQVx0bGV0dGVycyAodXBwZXJjYXNlIG9yIGxvd2VyY2FzZSkgYW5kIGRpZ2l0c1xyXG4gICAgLy8gU1x0b25seSBsZXR0ZXJzICh1cHBlcmNhc2Ugb3IgbG93ZXJjYXNlKVxyXG4gICAgLy8gVVx0b25seSBsZXR0ZXJzIHVwcGVyY2FzZVxyXG4gICAgLy8gTFx0b25seSBsZXR0ZXJzIGxvd2VyY2FzZVxyXG5cclxuICAvLyB9XHJcbn1cclxuIiwiXHJcbkBpZighaXNSZWFkT25seSl7XHJcbiAgPG5nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gPGFwcC1mb3JtLWxhYmVsIFtsYWJlbF09XCJsYWJlbFwiIFtvcHRpb25hbF09XCIhcmVxdWlyZWRcIiBbaGlkZU9wdGlvbl09XCJoaWRlT3B0aW9uXCIgW3Nob3dMYWJlbF09XCJzaG93TGFiZWxcIj48L2FwcC1mb3JtLWxhYmVsPiAtLT5cclxuICAgICBAaWYobGFiZWwpe1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTFcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImZvcm0tbGFiZWwgbWItMFwiPnt7bGFiZWx9fTwvc3Bhbj5cclxuICAgICAgICBAaWYoIXJlcXVpcmVkKXtcclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTEgZmMtZGFyay1ncmF5XCI+e3tpMThuLnRyYW5zbGF0ZSgnT3B0aW9uYWwnKX19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICB9XHJcbiAgICBcclxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInByaW1hcnktZm9ybSB7e2NsYXNzTmFtZX19XCIgW25nQ2xhc3NdPVwieydpbnB1dC1kaXNhYmxlZCcgOiBpc0Rpc2FibGVkIH1cIlxyXG4gICAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCI+XHJcbiAgXHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiaWNvblByZWZpeE5hbWVcIiBtYXRQcmVmaXggY2xhc3M9XCJzZmkge3tpY29uUHJlZml4TmFtZX19XCI+PC9zcGFuPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJtYXQtZm9ybS1jb250ZW50XCI+XHJcbiAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFt2YWx1ZV09XCJ2YWx1ZVwiIFthdHRyLmRpc2FibGVkXT1cImlzRGlzYWJsZWRcIiBbbWFza109XCJtYXNrXCJcclxuICAgICAgICAgIFtzaG93TWFza1R5cGVkXT1cImZhbHNlXCIgb25pbnB1dD1cInZhbGlkaXR5LnZhbGlkIHx8ICh2YWx1ZT0nJyk7XCIgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCI+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgXHJcbiAgICAgIEBpZihtYXRTdWZmaXgpe1xyXG4gICAgICA8c3BhbiAgbWF0U3VmZml4IGNsYXNzPVwic2ZpIHt7aWNvblN1ZmZpeE5hbWV9fVwiPjwvc3Bhbj5cclxuICAgICAgfVxyXG4gICAgICBAaWYodHlwZSA9PT0gJ251bWJlcicpe1xyXG4gICAgICAgIDxkaXYgIG1hdFN1ZmZpeCBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICAgIEBpZihudW1iZXJTdWZmaXhOYW1lKXtcclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTQgZnctbWVkaXVtXCI+e3tudW1iZXJTdWZmaXhOYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwic2ZpIHNmaS1taW51cyBwLTIgYmMtbGlnaHQtZ3JheSBmYy1ibGFja1wiPjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2ZpIHNmaS1wbHVzIHAtMiBiYy1saWdodC1ncmF5IGZjLWJsYWNrXCI+PC9zcGFuPiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICA8IS0tIEBpZigoIWNvbnRyb2w/LnZhbGlkKSl7XHJcbiAgICA8bWF0LWVycm9yIGNsYXNzPVwibWItMlwiPlxyXG4gICAgICB7e2kxOG4udHJhbnNsYXRlKCd2YWxpZEZpZWxkRXJyb3InKX19e3tsYWJlbH19XHJcbiAgICA8L21hdC1lcnJvcj5cclxuICAgfSAtLT5cclxuICAgICBcclxuICBcclxuICAgICAgPCEtLSA8bWF0LWVycm9yICpuZ0lmPVwiKHR5cGUgPT09J2VtYWlsJyAmJiAhY29udHJvbD8udmFsaWQpXCI+XHJcbiAgICAgICAge3tpMThuLnRyYW5zbGF0ZSgndmFsaWRFbWFpbEVycm9yJyl9fVxyXG4gICAgICA8L21hdC1lcnJvcj4gLS0+XHJcbiAgICAgIEBpZihzaG93SGludCl7XHJcbiAgICAgICAgPG1hdC1oaW50PlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZmkgc2ZpLWNoZWNrLWNpcmNsZSBmb250LTEwIGZjLWRhcmstZ3JheVwiIFtuZ0NsYXNzXT1cInsnZmMtb2FzaXMtbGlnaHQtaW1wJzp2YWx1ZX1cIj48L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTFcIj48L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTEyIGZjLW9ueXhcIj57e2hpbnR9fTwvc3Bhbj5cclxuICAgICAgICA8L21hdC1oaW50PlxyXG4gICAgICB9XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPCEtLSA8c3BhbiBjbGFzcz1cImZjLWNvcmFsXCIgc3R5bGU9XCJjb2xvcjojZjQ0MzM2XCIgKm5nSWY9XCIoIHNob3dFcnJvck1lc3NhZ2UgJiYgY29udHJvbC52YWx1ZSlcIj5cclxuICAgICAge3tlcnJvck1lc3NhZ2V9fVxyXG4gICAgPC9zcGFuPiAtLT5cclxuICBcclxuICA8L25nLWNvbnRhaW5lcj5cclxufVxyXG5cclxuQGlmKGlzUmVhZE9ubHkgJiYgY29udHJvbCl7XHJcbiAgPG5nLWNvbnRhaW5lciBjbGFzcz1cImluZm8tc2VjdGlvblwiPlxyXG4gICAgPGFwcC1pbmZvLWl0ZW0gY2xhc3M9XCJpbmZvLWl0ZW0gdy0xMDBcIiBbbGFiZWxdPVwibGFiZWxcIiBbaW5zaWRlVGFibGVdPVwiaW5zaWRlVGFibGVcIiBbaGFzTGFiZWxdPVwibGFiZWwgPyB0cnVlOiBmYWxzZVwiXHJcbiAgICAgIFt2YWx1ZV09XCJjb250cm9sXCI+PC9hcHAtaW5mby1pdGVtPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIFxyXG59XHJcblxyXG5cclxuPCEtLSBzZWN0aW9uIHRvb2x0aXAgLS0+XHJcbjxzYXQtcG9wb3ZlciAjcG9wb3ZlciBbaGFzQmFja2Ryb3BdPVwidHJ1ZVwiIHZlcnRpY2FsQWxpZ249XCJiZWxvd1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJkZWFmdWx0LXRvb2x0aXBcIj5cclxuICAgIHt7dG9vbHRpcH19XHJcbiAgPC9kaXY+XHJcbjwvc2F0LXBvcG92ZXI+XHJcbiJdfQ==
@@ -1,105 +1,35 @@
1
1
  /* eslint-disable @angular-eslint/use-lifecycle-interface */
2
2
  /* eslint-disable @typescript-eslint/no-explicit-any */
3
3
  /* eslint-disable @angular-eslint/component-selector */
4
- import { BaseComponent } from '../base-component/base-component.component';
5
- import { ReactiveFormsModule, Validators } from '@angular/forms';
6
- import { Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, Input, Output } from '@angular/core';
4
+ import { NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
5
+ import { Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, forwardRef, Input, Output } from '@angular/core';
7
6
  import { MatFormField } from '@angular/material/form-field';
8
7
  import { NgClass, NgIf } from "@angular/common";
9
8
  import { NgxMaskDirective } from "ngx-mask";
10
9
  import { InfoItemComponent } from "../info-item/info-item.component";
11
10
  import { SatPopoverModule } from "@ncstate/sat-popover";
12
11
  import { MatInput } from "@angular/material/input";
12
+ import { ControlValueAccessorDirective } from '../control-value-accessor.directive';
13
13
  import * as i0 from "@angular/core";
14
14
  import * as i1 from "@angular/forms";
15
15
  import * as i2 from "@ncstate/sat-popover";
16
- export class InputNumberComponent extends BaseComponent {
17
- label;
18
- displayValue;
19
- hasError = false;
20
- error;
16
+ export class InputNumberComponent extends ControlValueAccessorDirective {
21
17
  tooltip;
22
18
  floatLabel = 'auto';
23
19
  className = 'bordered-input';
24
- showLabel = true;
25
- matPrefix;
26
20
  iconPrefixName;
27
- matSuffix;
28
21
  iconSuffixName;
29
22
  numberSuffixName;
30
- optional = false;
31
- showArrows = false;
32
- decimals = 0;
33
23
  allowedPattern = '';
34
24
  emitedChangedValue = new EventEmitter();
35
- ngOnInit() {
36
- // this.resetPropagator.subscribe(this, this.resetData);
37
- this.field == undefined ? (this.field = '') : this.field;
38
- this.controller.setValue(this.field);
39
- if (this.type == 'email') {
40
- this.controller.setValidators([
41
- Validators.pattern('^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$'),
42
- ]);
43
- }
44
- if (this.minLength) {
45
- this.controller.setValidators([Validators.minLength(+this.minLength)]);
46
- }
47
- if (this.maxLength && !this.mask) {
48
- // this.controller.setValidators([Validators.maxLength(+this.maxLength)]);
49
- //this.mask = '0'.repeat(+this.maxLength)
50
- }
51
- if (this.maxValue) {
52
- this.controller.setValidators([Validators.max(+this.maxValue)]);
53
- }
54
- }
55
- ngAfterViewChecked() {
56
- this.cdRef.detectChanges();
57
- }
58
- ngOnChanges(changes) {
59
- console.log("showErrorMessage :", this.showErrorMessage);
60
- console.log("errorMessage :", this.errorMessage);
61
- if (changes?.['field']) {
62
- if (changes['field'].currentValue == '' || changes['field'].currentValue == null) {
63
- this.controller.setValue('');
64
- }
65
- else {
66
- this.controller.setValue(changes['field'].currentValue);
67
- }
68
- }
69
- }
70
- onValueChange(data) {
71
- let currentValue = data.target.value;
72
- if (+currentValue.length > +this.maxLength) {
73
- currentValue = currentValue.substr(0, +this.maxLength).toString();
74
- }
75
- if (+currentValue < +this.minValue) {
76
- currentValue = this.minValue.toString();
77
- }
78
- if (+currentValue > +this.maxValue) {
79
- currentValue = this.maxValue.toString();
80
- }
81
- this.field = currentValue;
82
- this.controller.setValue(this.field);
83
- this.emitedValue.emit(this.field.trim());
84
- }
85
- onValueChangeEvent(data) {
86
- console.log("showErrorMessage :", this.showErrorMessage);
87
- let currentValue = data.target.value;
88
- if (+currentValue.length > +this.maxLength) {
89
- currentValue = currentValue.substr(0, +this.maxLength).toString();
90
- }
91
- if (+currentValue < +this.minValue) {
92
- currentValue = this.minValue.toString();
93
- }
94
- if (+currentValue > +this.maxValue) {
95
- currentValue = this.maxValue.toString();
96
- }
97
- this.field = currentValue;
98
- this.controller.setValue(this.field);
99
- this.emitedChangedValue.emit(this.field.trim());
100
- }
101
25
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InputNumberComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
102
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: InputNumberComponent, isStandalone: true, selector: "app-input-number", inputs: { label: "label", displayValue: "displayValue", hasError: "hasError", error: "error", tooltip: "tooltip", floatLabel: "floatLabel", className: "className", showLabel: "showLabel", matPrefix: "matPrefix", iconPrefixName: "iconPrefixName", matSuffix: "matSuffix", iconSuffixName: "iconSuffixName", numberSuffixName: "numberSuffixName", optional: "optional", showArrows: "showArrows", decimals: "decimals", allowedPattern: "allowedPattern" }, outputs: { emitedChangedValue: "emitedChangedValue" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!isReadOnly\">\r\n <div class=\"d-flex justify-content-between mb-1\" *ngIf=\"hasLabel\">\r\n <span class=\"form-label mb-0\">{{label}}</span>\r\n <span *ngIf=\"!required && ! hideOption\" class=\"fs-11 fc-dark-gray\">{{i18n.translate('Optional')}}\r\n </span>\r\n </div>\r\n <mat-form-field class=\"primary-form {{className}}\" [ngClass]=\"{'input-disabled' : disabled }\"\r\n [floatLabel]=\"floatLabel\">\r\n\r\n <span *ngIf=\"iconPrefixName\" matPrefix class=\"sfi {{iconPrefixName}}\"></span>\r\n <label class=\"mat-form-content\">\r\n <!-- pattern=\"\\d*\" -->\r\n <ng-container *ngIf=\"!allowedPattern\">\r\n <input matInput [placeholder]=\"placeholder\" [value]=\"value\" [disabled]=\"disabled\" numberOnly\r\n oninput=\"validity.valid || (value='');\" [formControl]=\"controller\" (input)=\"onValueChange($event)\"\r\n (change)=\"onValueChangeEvent($event)\"\r\n [required]=\"required\" [placeholder]=\"placeholder\" [mask]=\"mask\" >\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"allowedPattern\">\r\n <input matInput [placeholder]=\"placeholder\" [value]=\"value\" [disabled]=\"disabled\" numberOnly\r\n oninput=\"validity.valid || (value='');\" [formControl]=\"controller\" (input)=\"onValueChange($event)\"\r\n (change)=\"onValueChangeEvent($event)\"\r\n [required]=\"required\" [placeholder]=\"placeholder\" [mask]=\"mask\" >\r\n </ng-container>\r\n </label>\r\n <span *ngIf=\"matSuffix\" matSuffix class=\"sfi {{iconSuffixName}}\"></span>\r\n <div *ngIf=\"type === 'number'\" matSuffix class=\"d-flex align-items-center gap-2\">\r\n <span class=\"fs-14 fw-medium\" *ngIf=\"numberSuffixName\">{{numberSuffixName}}</span>\r\n </div>\r\n <mat-error class=\"mb-2\" *ngIf=\"(!controller?.valid)\">\r\n {{i18n.translate('validFieldError')}}{{label}}\r\n </mat-error>\r\n\r\n <mat-hint *ngIf=\"showHint\">\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n\r\n\r\n </mat-form-field>\r\n <span class=\"fc-coral\" style=\"color: rgb(207 37 67);font-size: 10px;\" *ngIf=\"( showErrorMessage )\">\r\n {{errorMessage}}\r\n </span>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isReadOnly && field\" class=\"info-section\">\r\n <app-info-item class=\"info-item w-100\" [label]=\"label\" [insideTable]=\"insideTable\" [hasLabel]=\"hasLabel\"\r\n [value]=\"field\"></app-info-item>\r\n</ng-container>\r\n\r\n\r\n<!-- section tooltip -->\r\n<sat-popover #popover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"deafult-tooltip\">\r\n {{tooltip}}\r\n </div>\r\n</sat-popover>\r\n", styles: [":host{flex-grow:1}.input-disabled{pointer-events:none;opacity:1.5}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }, { kind: "component", type: InfoItemComponent, selector: "app-info-item", inputs: ["label", "value", "name", "type", "dateType", "multiple", "insideTable", "hasLabel", "arrayList", "actionType", "download"] }, { kind: "ngmodule", type: SatPopoverModule }, { kind: "component", type: i2.SatPopoverComponent, selector: "sat-popover", inputs: ["anchor", "horizontalAlign", "xAlign", "verticalAlign", "yAlign", "forceAlignment", "lockAlignment", "autoFocus", "restoreFocus", "scrollStrategy", "hasBackdrop", "interactiveClose", "openTransition", "closeTransition", "openAnimationStartAtScale", "closeAnimationEndAtScale", "backdropClass", "panelClass"], outputs: ["opened", "closed", "afterOpen", "afterClose", "backdropClicked", "overlayKeydown"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }] });
26
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: InputNumberComponent, isStandalone: true, selector: "app-input-number", inputs: { tooltip: "tooltip", floatLabel: "floatLabel", className: "className", iconPrefixName: "iconPrefixName", iconSuffixName: "iconSuffixName", numberSuffixName: "numberSuffixName", allowedPattern: "allowedPattern" }, outputs: { emitedChangedValue: "emitedChangedValue" }, providers: [
27
+ {
28
+ provide: NG_VALUE_ACCESSOR,
29
+ useExisting: forwardRef(() => InputNumberComponent),
30
+ multi: true,
31
+ },
32
+ ], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"!isReadOnly\">\r\n <div class=\"d-flex justify-content-between mb-1\" *ngIf=\"label\">\r\n <span class=\"form-label mb-0\">{{label}}</span>\r\n <span *ngIf=\"!required\" class=\"fs-11 fc-dark-gray\">{{i18n.translate('Optional')}}\r\n </span>\r\n </div>\r\n <mat-form-field class=\"primary-form {{className}}\" [ngClass]=\"{'input-disabled' : isDisabled }\"\r\n [floatLabel]=\"floatLabel\">\r\n\r\n <span *ngIf=\"iconPrefixName\" matPrefix class=\"sfi {{iconPrefixName}}\"></span>\r\n <label class=\"mat-form-content\">\r\n <!-- pattern=\"\\d*\" -->\r\n <ng-container *ngIf=\"!allowedPattern\">\r\n <input matInput [placeholder]=\"placeholder\" [value]=\"value\" [disabled]=\"isDisabled\" numberOnly\r\n oninput=\"validity.valid || (value='');\" [formControl]=\"control\"\r\n [required]=\"required\" [placeholder]=\"placeholder\" [mask]=\"mask\" >\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"allowedPattern\">\r\n <input matInput [placeholder]=\"placeholder\" [value]=\"value\" [disabled]=\"isDisabled\" numberOnly\r\n oninput=\"validity.valid || (value='');\" [formControl]=\"control\" \r\n [required]=\"required\" [placeholder]=\"placeholder\" [mask]=\"mask\" >\r\n </ng-container>\r\n </label>\r\n <span *ngIf=\"matSuffix\" matSuffix class=\"sfi {{iconSuffixName}}\"></span>\r\n <div *ngIf=\"type === 'number'\" matSuffix class=\"d-flex align-items-center gap-2\">\r\n <span class=\"fs-14 fw-medium\" *ngIf=\"numberSuffixName\">{{numberSuffixName}}</span>\r\n </div>\r\n <mat-error class=\"mb-2\" *ngIf=\"(!control?.valid)\">\r\n {{i18n.translate('validFieldError')}}{{label}}\r\n </mat-error>\r\n\r\n <mat-hint *ngIf=\"showHint\">\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n\r\n\r\n </mat-form-field>\r\n <!-- <span class=\"fc-coral\" style=\"color: rgb(207 37 67);font-size: 10px;\" *ngIf=\"( showErrorMessage )\">\r\n {{errorMessage}}\r\n </span> -->\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isReadOnly && control\" class=\"info-section\">\r\n <app-info-item class=\"info-item w-100\" [label]=\"label\" [insideTable]=\"insideTable\" [hasLabel]=\"label ? true: false\"\r\n [value]=\"control\"></app-info-item>\r\n</ng-container>\r\n\r\n\r\n<!-- section tooltip -->\r\n<sat-popover #popover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"deafult-tooltip\">\r\n {{tooltip}}\r\n </div>\r\n</sat-popover>\r\n", styles: [":host{flex-grow:1}.input-disabled{pointer-events:none;opacity:1.5}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }, { kind: "component", type: InfoItemComponent, selector: "app-info-item", inputs: ["label", "value", "name", "type", "dateType", "multiple", "insideTable", "hasLabel", "arrayList", "actionType", "download"] }, { kind: "ngmodule", type: SatPopoverModule }, { kind: "component", type: i2.SatPopoverComponent, selector: "sat-popover", inputs: ["anchor", "horizontalAlign", "xAlign", "verticalAlign", "yAlign", "forceAlignment", "lockAlignment", "autoFocus", "restoreFocus", "scrollStrategy", "hasBackdrop", "interactiveClose", "openTransition", "closeTransition", "openAnimationStartAtScale", "closeAnimationEndAtScale", "backdropClass", "panelClass"], outputs: ["opened", "closed", "afterOpen", "afterClose", "backdropClicked", "overlayKeydown"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }] });
103
33
  }
104
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InputNumberComponent, decorators: [{
105
35
  type: Component,
@@ -112,42 +42,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
112
42
  InfoItemComponent,
113
43
  SatPopoverModule,
114
44
  MatInput
115
- ], template: "<ng-container *ngIf=\"!isReadOnly\">\r\n <div class=\"d-flex justify-content-between mb-1\" *ngIf=\"hasLabel\">\r\n <span class=\"form-label mb-0\">{{label}}</span>\r\n <span *ngIf=\"!required && ! hideOption\" class=\"fs-11 fc-dark-gray\">{{i18n.translate('Optional')}}\r\n </span>\r\n </div>\r\n <mat-form-field class=\"primary-form {{className}}\" [ngClass]=\"{'input-disabled' : disabled }\"\r\n [floatLabel]=\"floatLabel\">\r\n\r\n <span *ngIf=\"iconPrefixName\" matPrefix class=\"sfi {{iconPrefixName}}\"></span>\r\n <label class=\"mat-form-content\">\r\n <!-- pattern=\"\\d*\" -->\r\n <ng-container *ngIf=\"!allowedPattern\">\r\n <input matInput [placeholder]=\"placeholder\" [value]=\"value\" [disabled]=\"disabled\" numberOnly\r\n oninput=\"validity.valid || (value='');\" [formControl]=\"controller\" (input)=\"onValueChange($event)\"\r\n (change)=\"onValueChangeEvent($event)\"\r\n [required]=\"required\" [placeholder]=\"placeholder\" [mask]=\"mask\" >\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"allowedPattern\">\r\n <input matInput [placeholder]=\"placeholder\" [value]=\"value\" [disabled]=\"disabled\" numberOnly\r\n oninput=\"validity.valid || (value='');\" [formControl]=\"controller\" (input)=\"onValueChange($event)\"\r\n (change)=\"onValueChangeEvent($event)\"\r\n [required]=\"required\" [placeholder]=\"placeholder\" [mask]=\"mask\" >\r\n </ng-container>\r\n </label>\r\n <span *ngIf=\"matSuffix\" matSuffix class=\"sfi {{iconSuffixName}}\"></span>\r\n <div *ngIf=\"type === 'number'\" matSuffix class=\"d-flex align-items-center gap-2\">\r\n <span class=\"fs-14 fw-medium\" *ngIf=\"numberSuffixName\">{{numberSuffixName}}</span>\r\n </div>\r\n <mat-error class=\"mb-2\" *ngIf=\"(!controller?.valid)\">\r\n {{i18n.translate('validFieldError')}}{{label}}\r\n </mat-error>\r\n\r\n <mat-hint *ngIf=\"showHint\">\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n\r\n\r\n </mat-form-field>\r\n <span class=\"fc-coral\" style=\"color: rgb(207 37 67);font-size: 10px;\" *ngIf=\"( showErrorMessage )\">\r\n {{errorMessage}}\r\n </span>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isReadOnly && field\" class=\"info-section\">\r\n <app-info-item class=\"info-item w-100\" [label]=\"label\" [insideTable]=\"insideTable\" [hasLabel]=\"hasLabel\"\r\n [value]=\"field\"></app-info-item>\r\n</ng-container>\r\n\r\n\r\n<!-- section tooltip -->\r\n<sat-popover #popover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"deafult-tooltip\">\r\n {{tooltip}}\r\n </div>\r\n</sat-popover>\r\n", styles: [":host{flex-grow:1}.input-disabled{pointer-events:none;opacity:1.5}\n"] }]
116
- }], propDecorators: { label: [{
117
- type: Input
118
- }], displayValue: [{
119
- type: Input
120
- }], hasError: [{
121
- type: Input
122
- }], error: [{
123
- type: Input
124
- }], tooltip: [{
45
+ ], providers: [
46
+ {
47
+ provide: NG_VALUE_ACCESSOR,
48
+ useExisting: forwardRef(() => InputNumberComponent),
49
+ multi: true,
50
+ },
51
+ ], template: "<ng-container *ngIf=\"!isReadOnly\">\r\n <div class=\"d-flex justify-content-between mb-1\" *ngIf=\"label\">\r\n <span class=\"form-label mb-0\">{{label}}</span>\r\n <span *ngIf=\"!required\" class=\"fs-11 fc-dark-gray\">{{i18n.translate('Optional')}}\r\n </span>\r\n </div>\r\n <mat-form-field class=\"primary-form {{className}}\" [ngClass]=\"{'input-disabled' : isDisabled }\"\r\n [floatLabel]=\"floatLabel\">\r\n\r\n <span *ngIf=\"iconPrefixName\" matPrefix class=\"sfi {{iconPrefixName}}\"></span>\r\n <label class=\"mat-form-content\">\r\n <!-- pattern=\"\\d*\" -->\r\n <ng-container *ngIf=\"!allowedPattern\">\r\n <input matInput [placeholder]=\"placeholder\" [value]=\"value\" [disabled]=\"isDisabled\" numberOnly\r\n oninput=\"validity.valid || (value='');\" [formControl]=\"control\"\r\n [required]=\"required\" [placeholder]=\"placeholder\" [mask]=\"mask\" >\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"allowedPattern\">\r\n <input matInput [placeholder]=\"placeholder\" [value]=\"value\" [disabled]=\"isDisabled\" numberOnly\r\n oninput=\"validity.valid || (value='');\" [formControl]=\"control\" \r\n [required]=\"required\" [placeholder]=\"placeholder\" [mask]=\"mask\" >\r\n </ng-container>\r\n </label>\r\n <span *ngIf=\"matSuffix\" matSuffix class=\"sfi {{iconSuffixName}}\"></span>\r\n <div *ngIf=\"type === 'number'\" matSuffix class=\"d-flex align-items-center gap-2\">\r\n <span class=\"fs-14 fw-medium\" *ngIf=\"numberSuffixName\">{{numberSuffixName}}</span>\r\n </div>\r\n <mat-error class=\"mb-2\" *ngIf=\"(!control?.valid)\">\r\n {{i18n.translate('validFieldError')}}{{label}}\r\n </mat-error>\r\n\r\n <mat-hint *ngIf=\"showHint\">\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n\r\n\r\n </mat-form-field>\r\n <!-- <span class=\"fc-coral\" style=\"color: rgb(207 37 67);font-size: 10px;\" *ngIf=\"( showErrorMessage )\">\r\n {{errorMessage}}\r\n </span> -->\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isReadOnly && control\" class=\"info-section\">\r\n <app-info-item class=\"info-item w-100\" [label]=\"label\" [insideTable]=\"insideTable\" [hasLabel]=\"label ? true: false\"\r\n [value]=\"control\"></app-info-item>\r\n</ng-container>\r\n\r\n\r\n<!-- section tooltip -->\r\n<sat-popover #popover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"deafult-tooltip\">\r\n {{tooltip}}\r\n </div>\r\n</sat-popover>\r\n", styles: [":host{flex-grow:1}.input-disabled{pointer-events:none;opacity:1.5}\n"] }]
52
+ }], propDecorators: { tooltip: [{
125
53
  type: Input
126
54
  }], floatLabel: [{
127
55
  type: Input
128
56
  }], className: [{
129
57
  type: Input
130
- }], showLabel: [{
131
- type: Input
132
- }], matPrefix: [{
133
- type: Input
134
58
  }], iconPrefixName: [{
135
59
  type: Input
136
- }], matSuffix: [{
137
- type: Input
138
60
  }], iconSuffixName: [{
139
61
  type: Input
140
62
  }], numberSuffixName: [{
141
63
  type: Input
142
- }], optional: [{
143
- type: Input
144
- }], showArrows: [{
145
- type: Input
146
- }], decimals: [{
147
- type: Input
148
64
  }], allowedPattern: [{
149
65
  type: Input
150
66
  }], emitedChangedValue: [{
151
67
  type: Output
152
68
  }] } });
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9zaGFyZWQtY29tcG9uZW50cy9mb3JtLWZpZWxkL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvaW5wdXQtbnVtYmVyL2lucHV0LW51bWJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0REFBNEQ7QUFDNUQsdURBQXVEO0FBQ3ZELHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDM0UsT0FBTyxFQUFDLG1CQUFtQixFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBaUIsWUFBWSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDMUUsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDMUMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHlCQUF5QixDQUFDOzs7O0FBbUJqRCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsYUFBYTtJQUM1QyxL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Q0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0ksa0JBQWtCO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L3VzZS1saWZlY3ljbGUtaW50ZXJmYWNlICovXHJcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1jb21wb25lbnQvYmFzZS1jb21wb25lbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHtSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RmxvYXRMYWJlbFR5cGUsIE1hdEZvcm1GaWVsZH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7TmdDbGFzcywgTmdJZn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge05neE1hc2tEaXJlY3RpdmV9IGZyb20gXCJuZ3gtbWFza1wiO1xyXG5pbXBvcnQge0luZm9JdGVtQ29tcG9uZW50fSBmcm9tIFwiLi4vaW5mby1pdGVtL2luZm8taXRlbS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtTYXRQb3BvdmVyTW9kdWxlfSBmcm9tIFwiQG5jc3RhdGUvc2F0LXBvcG92ZXJcIjtcclxuaW1wb3J0IHtNYXRJbnB1dH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1pbnB1dC1udW1iZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1udW1iZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LW51bWJlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE1hdEZvcm1GaWVsZCxcclxuICAgIE5nSWYsXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE5neE1hc2tEaXJlY3RpdmUsXHJcbiAgICBJbmZvSXRlbUNvbXBvbmVudCxcclxuICAgIFNhdFBvcG92ZXJNb2R1bGUsXHJcbiAgICBNYXRJbnB1dFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0TnVtYmVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgbGFiZWwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZGlzcGxheVZhbHVlITogYW55O1xyXG4gIEBJbnB1dCgpIGhhc0Vycm9yID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZXJyb3IhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdG9vbHRpcCE6IHN0cmluZztcclxuICBASW5wdXQoKSBmbG9hdExhYmVsOiBhbnkgPSAnYXV0byc7XHJcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJ2JvcmRlcmVkLWlucHV0JztcclxuICBASW5wdXQoKSBzaG93TGFiZWwgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIG1hdFByZWZpeCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaWNvblByZWZpeE5hbWUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbWF0U3VmZml4ITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBpY29uU3VmZml4TmFtZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBudW1iZXJTdWZmaXhOYW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG9wdGlvbmFsID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0Fycm93cyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRlY2ltYWxzID0gMDtcclxuICBASW5wdXQoKSBhbGxvd2VkUGF0dGVybiA9ICcnO1xyXG4gIEBPdXRwdXQoKSBlbWl0ZWRDaGFuZ2VkVmFsdWUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLnJlc2V0UHJvcGFnYXRvci5zdWJzY3JpYmUodGhpcywgdGhpcy5yZXNldERhdGEpO1xyXG4gICAgdGhpcy5maWVsZCA9PSB1bmRlZmluZWQgPyAodGhpcy5maWVsZCA9ICcnKSA6IHRoaXMuZmllbGQ7XHJcbiAgICB0aGlzLmNvbnRyb2xsZXIuc2V0VmFsdWUodGhpcy5maWVsZCk7XHJcbiAgICBpZiAodGhpcy50eXBlID09ICdlbWFpbCcpIHtcclxuICAgICAgdGhpcy5jb250cm9sbGVyLnNldFZhbGlkYXRvcnMoW1xyXG4gICAgICAgIFZhbGlkYXRvcnMucGF0dGVybignXlthLXowLTkuXyUrLV0rQFthLXowLTkuLV0rXFxcXC5bYS16XXsyLDR9JCcpLFxyXG4gICAgICBdKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5taW5MZW5ndGgpIHtcclxuICAgICAgdGhpcy5jb250cm9sbGVyLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMubWluTGVuZ3RoKCt0aGlzLm1pbkxlbmd0aCldKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5tYXhMZW5ndGggJiYgISB0aGlzLm1hc2spIHtcclxuICAgICAgLy8gdGhpcy5jb250cm9sbGVyLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKCt0aGlzLm1heExlbmd0aCldKTtcclxuICAgICAgLy90aGlzLm1hc2sgPSAnMCcucmVwZWF0KCt0aGlzLm1heExlbmd0aClcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5tYXhWYWx1ZSkge1xyXG4gICAgICB0aGlzLmNvbnRyb2xsZXIuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5tYXgoK3RoaXMubWF4VmFsdWUpXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGNvbnNvbGUubG9nKFwic2hvd0Vycm9yTWVzc2FnZSA6XCIsdGhpcy5zaG93RXJyb3JNZXNzYWdlKVxyXG4gICAgY29uc29sZS5sb2coXCJlcnJvck1lc3NhZ2UgOlwiLHRoaXMuZXJyb3JNZXNzYWdlKVxyXG5cclxuICAgIGlmIChjaGFuZ2VzPy5bJ2ZpZWxkJ10pIHtcclxuICAgICAgaWYgKGNoYW5nZXNbJ2ZpZWxkJ10uY3VycmVudFZhbHVlID09ICcnIHx8IGNoYW5nZXNbJ2ZpZWxkJ10uY3VycmVudFZhbHVlID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2xsZXIuc2V0VmFsdWUoJycpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29udHJvbGxlci5zZXRWYWx1ZShjaGFuZ2VzWydmaWVsZCddLmN1cnJlbnRWYWx1ZSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25WYWx1ZUNoYW5nZShkYXRhOiBhbnkpIHtcclxuICAgIGxldCBjdXJyZW50VmFsdWUgPSBkYXRhLnRhcmdldC52YWx1ZTtcclxuICAgIGlmICgrY3VycmVudFZhbHVlLmxlbmd0aCA+ICt0aGlzLm1heExlbmd0aCkge1xyXG4gICAgICBjdXJyZW50VmFsdWUgPSBjdXJyZW50VmFsdWUuc3Vic3RyKDAsICt0aGlzLm1heExlbmd0aCkudG9TdHJpbmcoKTtcclxuICAgIH1cclxuICAgIGlmICgrY3VycmVudFZhbHVlIDwgK3RoaXMubWluVmFsdWUpIHtcclxuICAgICAgY3VycmVudFZhbHVlID0gdGhpcy5taW5WYWx1ZS50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgaWYgKCtjdXJyZW50VmFsdWUgPiArdGhpcy5tYXhWYWx1ZSkge1xyXG4gICAgICBjdXJyZW50VmFsdWUgPSB0aGlzLm1heFZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZpZWxkID0gY3VycmVudFZhbHVlO1xyXG4gICAgdGhpcy5jb250cm9sbGVyLnNldFZhbHVlKHRoaXMuZmllbGQpXHJcbiAgICB0aGlzLmVtaXRlZFZhbHVlLmVtaXQodGhpcy5maWVsZC50cmltKCkpO1xyXG4gIH1cclxuXHJcbiAgb25WYWx1ZUNoYW5nZUV2ZW50KGRhdGE6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coXCJzaG93RXJyb3JNZXNzYWdlIDpcIix0aGlzLnNob3dFcnJvck1lc3NhZ2UpXHJcblxyXG4gICAgbGV0IGN1cnJlbnRWYWx1ZSA9IGRhdGEudGFyZ2V0LnZhbHVlO1xyXG4gICAgaWYgKCtjdXJyZW50VmFsdWUubGVuZ3RoID4gK3RoaXMubWF4TGVuZ3RoKSB7XHJcbiAgICAgIGN1cnJlbnRWYWx1ZSA9IGN1cnJlbnRWYWx1ZS5zdWJzdHIoMCwgK3RoaXMubWF4TGVuZ3RoKS50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgaWYgKCtjdXJyZW50VmFsdWUgPCArdGhpcy5taW5WYWx1ZSkge1xyXG4gICAgICBjdXJyZW50VmFsdWUgPSB0aGlzLm1pblZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoK2N1cnJlbnRWYWx1ZSA+ICt0aGlzLm1heFZhbHVlKSB7XHJcbiAgICAgIGN1cnJlbnRWYWx1ZSA9IHRoaXMubWF4VmFsdWUudG9TdHJpbmcoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZmllbGQgPSBjdXJyZW50VmFsdWU7XHJcbiAgICB0aGlzLmNvbnRyb2xsZXIuc2V0VmFsdWUodGhpcy5maWVsZClcclxuICAgIHRoaXMuZW1pdGVkQ2hhbmdlZFZhbHVlLmVtaXQodGhpcy5maWVsZC50cmltKCkpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzUmVhZE9ubHlcIj5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTFcIiAqbmdJZj1cImhhc0xhYmVsXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cImZvcm0tbGFiZWwgbWItMFwiPnt7bGFiZWx9fTwvc3Bhbj5cclxuICAgIDxzcGFuICpuZ0lmPVwiIXJlcXVpcmVkICYmICEgIGhpZGVPcHRpb25cIiBjbGFzcz1cImZzLTExIGZjLWRhcmstZ3JheVwiPnt7aTE4bi50cmFuc2xhdGUoJ09wdGlvbmFsJyl9fVxyXG4gICAgPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInByaW1hcnktZm9ybSB7e2NsYXNzTmFtZX19XCIgW25nQ2xhc3NdPVwieydpbnB1dC1kaXNhYmxlZCcgOiBkaXNhYmxlZCB9XCJcclxuICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIj5cclxuXHJcbiAgICA8c3BhbiAqbmdJZj1cImljb25QcmVmaXhOYW1lXCIgbWF0UHJlZml4IGNsYXNzPVwic2ZpIHt7aWNvblByZWZpeE5hbWV9fVwiPjwvc3Bhbj5cclxuICAgIDxsYWJlbCBjbGFzcz1cIm1hdC1mb3JtLWNvbnRlbnRcIj5cclxuICAgICAgPCEtLSBwYXR0ZXJuPVwiXFxkKlwiIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWFsbG93ZWRQYXR0ZXJuXCI+XHJcbiAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFt2YWx1ZV09XCJ2YWx1ZVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIG51bWJlck9ubHlcclxuICAgICAgICAgIG9uaW5wdXQ9XCJ2YWxpZGl0eS52YWxpZCB8fCAodmFsdWU9JycpO1wiIFtmb3JtQ29udHJvbF09XCJjb250cm9sbGVyXCIgKGlucHV0KT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2VFdmVudCgkZXZlbnQpXCJcclxuICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiICBbbWFza109XCJtYXNrXCIgPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhbGxvd2VkUGF0dGVyblwiPlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbdmFsdWVdPVwidmFsdWVcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBudW1iZXJPbmx5XHJcbiAgICAgICAgICAgICAgIG9uaW5wdXQ9XCJ2YWxpZGl0eS52YWxpZCB8fCAodmFsdWU9JycpO1wiIFtmb3JtQ29udHJvbF09XCJjb250cm9sbGVyXCIgKGlucHV0KT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2VFdmVudCgkZXZlbnQpXCJcclxuICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiICBbbWFza109XCJtYXNrXCIgPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbGFiZWw+XHJcbiAgICA8c3BhbiAqbmdJZj1cIm1hdFN1ZmZpeFwiIG1hdFN1ZmZpeCBjbGFzcz1cInNmaSB7e2ljb25TdWZmaXhOYW1lfX1cIj48L3NwYW4+XHJcbiAgICA8ZGl2ICpuZ0lmPVwidHlwZSA9PT0gJ251bWJlcidcIiBtYXRTdWZmaXggY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTQgZnctbWVkaXVtXCIgKm5nSWY9XCJudW1iZXJTdWZmaXhOYW1lXCI+e3tudW1iZXJTdWZmaXhOYW1lfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJtYi0yXCIgKm5nSWY9XCIoIWNvbnRyb2xsZXI/LnZhbGlkKVwiPlxyXG4gICAgICB7e2kxOG4udHJhbnNsYXRlKCd2YWxpZEZpZWxkRXJyb3InKX19e3tsYWJlbH19XHJcbiAgICA8L21hdC1lcnJvcj5cclxuXHJcbiAgICA8bWF0LWhpbnQgKm5nSWY9XCJzaG93SGludFwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInNmaSBzZmktY2hlY2stY2lyY2xlIGZvbnQtMTAgZmMtZGFyay1ncmF5XCIgW25nQ2xhc3NdPVwieydmYy1vYXNpcy1saWdodC1pbXAnOnZhbHVlfVwiPjwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJteC0xXCI+PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImZzLTEyIGZjLW9ueXhcIj57e2hpbnR9fTwvc3Bhbj5cclxuICAgIDwvbWF0LWhpbnQ+XHJcblxyXG5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDxzcGFuIGNsYXNzPVwiZmMtY29yYWxcIiBzdHlsZT1cImNvbG9yOiByZ2IoMjA3IDM3IDY3KTtmb250LXNpemU6IDEwcHg7XCIgKm5nSWY9XCIoIHNob3dFcnJvck1lc3NhZ2UgKVwiPlxyXG4gICAge3tlcnJvck1lc3NhZ2V9fVxyXG4gIDwvc3Bhbj5cclxuXHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUmVhZE9ubHkgJiYgZmllbGRcIiBjbGFzcz1cImluZm8tc2VjdGlvblwiPlxyXG4gIDxhcHAtaW5mby1pdGVtIGNsYXNzPVwiaW5mby1pdGVtIHctMTAwXCIgW2xhYmVsXT1cImxhYmVsXCIgW2luc2lkZVRhYmxlXT1cImluc2lkZVRhYmxlXCIgW2hhc0xhYmVsXT1cImhhc0xhYmVsXCJcclxuICAgIFt2YWx1ZV09XCJmaWVsZFwiPjwvYXBwLWluZm8taXRlbT5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuPCEtLSBzZWN0aW9uIHRvb2x0aXAgLS0+XHJcbjxzYXQtcG9wb3ZlciAjcG9wb3ZlciBbaGFzQmFja2Ryb3BdPVwidHJ1ZVwiIHZlcnRpY2FsQWxpZ249XCJiZWxvd1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJkZWFmdWx0LXRvb2x0aXBcIj5cclxuICAgIHt7dG9vbHRpcH19XHJcbiAgPC9kaXY+XHJcbjwvc2F0LXBvcG92ZXI+XHJcbiJdfQ==
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9zaGFyZWQtY29tcG9uZW50cy9mb3JtLWZpZWxkL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvaW5wdXQtbnVtYmVyL2lucHV0LW51bWJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0REFBNEQ7QUFDNUQsdURBQXVEO0FBQ3ZELHVEQUF1RDtBQUN2RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDMUMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2pELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7O0FBMEJwRixNQUFNLE9BQU8sb0JBQTJCLFNBQVEsNkJBQW1DO0lBQ3hFLE9BQU8sQ0FBVTtJQUNqQixVQUFVLEdBQVEsTUFBTSxDQUFDO0lBQ3pCLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztJQUM3QixjQUFjLENBQVU7SUFDeEIsY0FBYyxDQUFVO0lBQ3hCLGdCQUFnQixDQUFVO0lBQzFCLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFDbkIsa0JBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQzt1R0FSdkMsb0JBQW9COzJGQUFwQixvQkFBb0Isb1ZBUnBCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDbkQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLGlEQ25DSCxrcEZBMERBLDhIRHRDSSxZQUFZLDRMQUNaLElBQUksNkZBQ0osT0FBTyxtRkFDUCxtQkFBbUIsdXlCQUNuQixnQkFBZ0IsaWpCQUNoQixpQkFBaUIsK0xBQ2pCLGdCQUFnQiwwZ0JBQ2hCLFFBQVE7OzJGQVVDLG9CQUFvQjtrQkF4QmhDLFNBQVM7K0JBQ0Usa0JBQWtCLFdBR25CLENBQUMsc0JBQXNCLENBQUMsY0FDckIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osSUFBSTt3QkFDSixPQUFPO3dCQUNQLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsUUFBUTtxQkFDVCxhQUNVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDOzRCQUNuRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs4QkFHUSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDSSxrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvdXNlLWxpZmVjeWNsZS1pbnRlcmZhY2UgKi9cclxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXHJcbmltcG9ydCB7TkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtNYXRGb3JtRmllbGR9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQge05nQ2xhc3MsIE5nSWZ9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtOZ3hNYXNrRGlyZWN0aXZlfSBmcm9tIFwibmd4LW1hc2tcIjtcclxuaW1wb3J0IHtJbmZvSXRlbUNvbXBvbmVudH0gZnJvbSBcIi4uL2luZm8taXRlbS9pbmZvLWl0ZW0uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7U2F0UG9wb3Zlck1vZHVsZX0gZnJvbSBcIkBuY3N0YXRlL3NhdC1wb3BvdmVyXCI7XHJcbmltcG9ydCB7TWF0SW5wdXR9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZSB9IGZyb20gJy4uL2NvbnRyb2wtdmFsdWUtYWNjZXNzb3IuZGlyZWN0aXZlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWlucHV0LW51bWJlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LW51bWJlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTWF0Rm9ybUZpZWxkLFxyXG4gICAgTmdJZixcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTmd4TWFza0RpcmVjdGl2ZSxcclxuICAgIEluZm9JdGVtQ29tcG9uZW50LFxyXG4gICAgU2F0UG9wb3Zlck1vZHVsZSxcclxuICAgIE1hdElucHV0XHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0TnVtYmVyQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dE51bWJlckNvbXBvbmVudDxUeXBlPiBleHRlbmRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlPFR5cGU+ICB7XHJcbiAgQElucHV0KCkgdG9vbHRpcCE6IHN0cmluZztcclxuICBASW5wdXQoKSBmbG9hdExhYmVsOiBhbnkgPSAnYXV0byc7XHJcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJ2JvcmRlcmVkLWlucHV0JztcclxuICBASW5wdXQoKSBpY29uUHJlZml4TmFtZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBpY29uU3VmZml4TmFtZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBudW1iZXJTdWZmaXhOYW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGFsbG93ZWRQYXR0ZXJuID0gJyc7XHJcbiAgQE91dHB1dCgpIGVtaXRlZENoYW5nZWRWYWx1ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcblxyXG4gIC8vIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcclxuICAvLyAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIC8vIH1cclxuXHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1JlYWRPbmx5XCI+XHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0xXCIgKm5nSWY9XCJsYWJlbFwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJmb3JtLWxhYmVsIG1iLTBcIj57e2xhYmVsfX08L3NwYW4+XHJcbiAgICA8c3BhbiAqbmdJZj1cIiFyZXF1aXJlZFwiIGNsYXNzPVwiZnMtMTEgZmMtZGFyay1ncmF5XCI+e3tpMThuLnRyYW5zbGF0ZSgnT3B0aW9uYWwnKX19XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcbiAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwicHJpbWFyeS1mb3JtIHt7Y2xhc3NOYW1lfX1cIiBbbmdDbGFzc109XCJ7J2lucHV0LWRpc2FibGVkJyA6IGlzRGlzYWJsZWQgfVwiXHJcbiAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCI+XHJcblxyXG4gICAgPHNwYW4gKm5nSWY9XCJpY29uUHJlZml4TmFtZVwiIG1hdFByZWZpeCBjbGFzcz1cInNmaSB7e2ljb25QcmVmaXhOYW1lfX1cIj48L3NwYW4+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJtYXQtZm9ybS1jb250ZW50XCI+XHJcbiAgICAgIDwhLS0gcGF0dGVybj1cIlxcZCpcIiAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhbGxvd2VkUGF0dGVyblwiPlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbdmFsdWVdPVwidmFsdWVcIiBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiIG51bWJlck9ubHlcclxuICAgICAgICAgIG9uaW5wdXQ9XCJ2YWxpZGl0eS52YWxpZCB8fCAodmFsdWU9JycpO1wiIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiICBbbWFza109XCJtYXNrXCIgPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhbGxvd2VkUGF0dGVyblwiPlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbdmFsdWVdPVwidmFsdWVcIiBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiIG51bWJlck9ubHlcclxuICAgICAgICAgICAgICAgb25pbnB1dD1cInZhbGlkaXR5LnZhbGlkIHx8ICh2YWx1ZT0nJyk7XCIgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIiBcclxuICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiICBbbWFza109XCJtYXNrXCIgPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbGFiZWw+XHJcbiAgICA8c3BhbiAqbmdJZj1cIm1hdFN1ZmZpeFwiIG1hdFN1ZmZpeCBjbGFzcz1cInNmaSB7e2ljb25TdWZmaXhOYW1lfX1cIj48L3NwYW4+XHJcbiAgICA8ZGl2ICpuZ0lmPVwidHlwZSA9PT0gJ251bWJlcidcIiBtYXRTdWZmaXggY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTQgZnctbWVkaXVtXCIgKm5nSWY9XCJudW1iZXJTdWZmaXhOYW1lXCI+e3tudW1iZXJTdWZmaXhOYW1lfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJtYi0yXCIgKm5nSWY9XCIoIWNvbnRyb2w/LnZhbGlkKVwiPlxyXG4gICAgICB7e2kxOG4udHJhbnNsYXRlKCd2YWxpZEZpZWxkRXJyb3InKX19e3tsYWJlbH19XHJcbiAgICA8L21hdC1lcnJvcj5cclxuXHJcbiAgICA8bWF0LWhpbnQgKm5nSWY9XCJzaG93SGludFwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInNmaSBzZmktY2hlY2stY2lyY2xlIGZvbnQtMTAgZmMtZGFyay1ncmF5XCIgW25nQ2xhc3NdPVwieydmYy1vYXNpcy1saWdodC1pbXAnOnZhbHVlfVwiPjwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJteC0xXCI+PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImZzLTEyIGZjLW9ueXhcIj57e2hpbnR9fTwvc3Bhbj5cclxuICAgIDwvbWF0LWhpbnQ+XHJcblxyXG5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDwhLS0gPHNwYW4gY2xhc3M9XCJmYy1jb3JhbFwiIHN0eWxlPVwiY29sb3I6IHJnYigyMDcgMzcgNjcpO2ZvbnQtc2l6ZTogMTBweDtcIiAqbmdJZj1cIiggc2hvd0Vycm9yTWVzc2FnZSApXCI+XHJcbiAgICB7e2Vycm9yTWVzc2FnZX19XHJcbiAgPC9zcGFuPiAtLT5cclxuXHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUmVhZE9ubHkgJiYgY29udHJvbFwiIGNsYXNzPVwiaW5mby1zZWN0aW9uXCI+XHJcbiAgPGFwcC1pbmZvLWl0ZW0gY2xhc3M9XCJpbmZvLWl0ZW0gdy0xMDBcIiBbbGFiZWxdPVwibGFiZWxcIiBbaW5zaWRlVGFibGVdPVwiaW5zaWRlVGFibGVcIiBbaGFzTGFiZWxdPVwibGFiZWwgPyB0cnVlOiBmYWxzZVwiXHJcbiAgICBbdmFsdWVdPVwiY29udHJvbFwiPjwvYXBwLWluZm8taXRlbT5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuPCEtLSBzZWN0aW9uIHRvb2x0aXAgLS0+XHJcbjxzYXQtcG9wb3ZlciAjcG9wb3ZlciBbaGFzQmFja2Ryb3BdPVwidHJ1ZVwiIHZlcnRpY2FsQWxpZ249XCJiZWxvd1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJkZWFmdWx0LXRvb2x0aXBcIj5cclxuICAgIHt7dG9vbHRpcH19XHJcbiAgPC9kaXY+XHJcbjwvc2F0LXBvcG92ZXI+XHJcbiJdfQ==