@libs-ui/components-color-picker 0.2.253 → 0.2.255

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.
@@ -1,6 +1,6 @@
1
1
  import { AfterViewInit, OnDestroy, OnInit } from "@angular/core";
2
2
  import { IFocusAndBlurEvent } from "@libs-ui/components-inputs-input";
3
- import { IPickerCustomOptions, IPickerOptions } from "./interfaces/picker.interface";
3
+ import { IOutputColorChangeMutilType, IPickerCustomOptions, IPickerOptions } from "./interfaces/picker.interface";
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class LibsUiComponentsColorPickerComponent implements OnInit, AfterViewInit, OnDestroy {
6
6
  protected options: import("@angular/core").WritableSignal<IPickerOptions>;
@@ -17,7 +17,9 @@ export declare class LibsUiComponentsColorPickerComponent implements OnInit, Aft
17
17
  private notificationService;
18
18
  private onDestroy;
19
19
  readonly customOptions: import("@angular/core").InputSignal<IPickerCustomOptions | undefined>;
20
+ readonly noEmitEventColorWhenInitComponent: import("@angular/core").InputSignalWithTransform<boolean, boolean | undefined>;
20
21
  readonly outColorChange: import("@angular/core").OutputEmitterRef<string>;
22
+ readonly outColorChangeMutilType: import("@angular/core").OutputEmitterRef<IOutputColorChangeMutilType>;
21
23
  private readonly hueEl;
22
24
  private readonly huePointerEl;
23
25
  private readonly slEl;
@@ -43,7 +45,9 @@ export declare class LibsUiComponentsColorPickerComponent implements OnInit, Aft
43
45
  private handlerColorChange;
44
46
  protected handlerFocusAndBlur(event: IFocusAndBlurEvent, key: string): void;
45
47
  protected handlerValueChange(event: string | number, key: string): void;
48
+ protected handlerValueChangeAlphaInput(event: string | number): void;
49
+ protected handlerResetColor(): void;
46
50
  ngOnDestroy(): void;
47
51
  static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiComponentsColorPickerComponent, never>;
48
- static ɵcmp: i0.ɵɵComponentDeclaration<LibsUiComponentsColorPickerComponent, "libs_ui-components-color_picker", never, { "customOptions": { "alias": "customOptions"; "required": false; "isSignal": true; }; }, { "outColorChange": "outColorChange"; }, never, never, true, never>;
52
+ static ɵcmp: i0.ɵɵComponentDeclaration<LibsUiComponentsColorPickerComponent, "libs_ui-components-color_picker", never, { "customOptions": { "alias": "customOptions"; "required": false; "isSignal": true; }; "noEmitEventColorWhenInitComponent": { "alias": "noEmitEventColorWhenInitComponent"; "required": false; "isSignal": true; }; }, { "outColorChange": "outColorChange"; "outColorChangeMutilType": "outColorChangeMutilType"; }, never, never, true, never>;
49
53
  }
@@ -1,5 +1,6 @@
1
1
  import { ChangeDetectionStrategy, Component, effect, inject, input, output, signal, viewChild } from "@angular/core";
2
2
  import { LibsUiComponentsInputsInputComponent } from "@libs-ui/components-inputs-input";
3
+ import { LibsUiComponentsInputsValidComponent } from "@libs-ui/components-inputs-valid";
3
4
  import { LibsUiNotificationService } from "@libs-ui/services-notification";
4
5
  import { getDragEventByElement, set } from "@libs-ui/utils";
5
6
  import { Subject } from "rxjs";
@@ -22,8 +23,10 @@ export class LibsUiComponentsColorPickerComponent {
22
23
  onDestroy = new Subject();
23
24
  // #region INPUT
24
25
  customOptions = input();
26
+ noEmitEventColorWhenInitComponent = input(true, { transform: (value) => value ?? true });
25
27
  // #region OUTPUT
26
28
  outColorChange = output();
29
+ outColorChangeMutilType = output();
27
30
  /* VIEW CHILD */
28
31
  hueEl = viewChild('hueEl');
29
32
  huePointerEl = viewChild('huePointerEl');
@@ -59,7 +62,7 @@ export class LibsUiComponentsColorPickerComponent {
59
62
  if (this.options().showAlpha) {
60
63
  this.setupAlphaCanvas();
61
64
  }
62
- this.handlerColorChange(this.options().format, this.options().color, true);
65
+ this.handlerColorChange(this.options().format, this.options().color, this.noEmitEventColorWhenInitComponent());
63
66
  }
64
67
  setupHueCanvas() {
65
68
  const canvas = this.hueEl()?.nativeElement;
@@ -206,7 +209,7 @@ export class LibsUiComponentsColorPickerComponent {
206
209
  this.updatePointerA(this.a());
207
210
  }
208
211
  }
209
- handlerColorChange(key, value, silent = false) {
212
+ handlerColorChange(key, value, isCallInitComponent = false) {
210
213
  let config = {};
211
214
  switch (key) {
212
215
  case 'h':
@@ -278,8 +281,15 @@ export class LibsUiComponentsColorPickerComponent {
278
281
  }
279
282
  this.updateValuesAndPointer(config);
280
283
  set(this.previewEl()?.nativeElement.style, 'backgroundColor', this.a() === 1 ? `rgb(${this.r()},${this.g()},${this.b()})` : `rgba(${this.r()},${this.g()},${this.b()},${this.a()})`);
281
- if (!silent) {
284
+ if (!isCallInitComponent) {
282
285
  this.outColorChange.emit(this.hex());
286
+ this.outColorChangeMutilType.emit({
287
+ hex: this.hex(),
288
+ rgba: `rgba(${this.r()},${this.g()},${this.b()},${this.a()})`,
289
+ rgb: `rgb(${this.r()},${this.g()},${this.b()})`,
290
+ hsl: `hsl(${this.h()},${this.s()},${this.l()})`,
291
+ hsla: `hsla(${this.h()},${this.s()},${this.l()},${this.a()})`
292
+ });
283
293
  }
284
294
  }
285
295
  handlerFocusAndBlur(event, key) {
@@ -288,17 +298,26 @@ export class LibsUiComponentsColorPickerComponent {
288
298
  handlerValueChange(event, key) {
289
299
  this.handlerColorChange(key, event);
290
300
  }
301
+ handlerValueChangeAlphaInput(event) {
302
+ this.handlerColorChange('alpha', (event || 0) / 100);
303
+ this.updatePointerA(this.a());
304
+ }
305
+ handlerResetColor() {
306
+ this.handlerColorChange('alpha', 0);
307
+ this.updatePointerA(this.a());
308
+ }
291
309
  ngOnDestroy() {
292
310
  this.onDestroy.next();
293
311
  this.onDestroy.complete();
294
312
  }
295
313
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsColorPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
296
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsColorPickerComponent, isStandalone: true, selector: "libs_ui-components-color_picker", inputs: { customOptions: { classPropertyName: "customOptions", publicName: "customOptions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outColorChange: "outColorChange" }, viewQueries: [{ propertyName: "hueEl", first: true, predicate: ["hueEl"], descendants: true, isSignal: true }, { propertyName: "huePointerEl", first: true, predicate: ["huePointerEl"], descendants: true, isSignal: true }, { propertyName: "slEl", first: true, predicate: ["slEl"], descendants: true, isSignal: true }, { propertyName: "slPointerEl", first: true, predicate: ["slPointerEl"], descendants: true, isSignal: true }, { propertyName: "alphaEl", first: true, predicate: ["alphaEl"], descendants: true, isSignal: true }, { propertyName: "alphaPointerEl", first: true, predicate: ["alphaPointerEl"], descendants: true, isSignal: true }, { propertyName: "previewEl", first: true, predicate: ["previewEl"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"relative\"\n [style.width.px]=\"options().slBarSize[0]\">\n <div>\n <canvas #slEl\n class=\"rounded-tl-[4px] rounded-tr-[4px] libs-ui-color-picker-background-transparent\"></canvas>\n <div #slPointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n <div class=\"relative\">\n <canvas #hueEl\n class=\"libs-ui-color-picker-background-transparent\"\n [class.rounded-bl-[4px]]=\"!options().showAlpha\"\n [class.rounded-br-[4px]]=\"!options().showAlpha\"></canvas>\n <div #huePointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n @if (options().showAlpha) {\n <div class=\"relative\">\n <canvas #alphaEl\n class=\"rounded-bl-[4px] rounded-br-[4px] libs-ui-color-picker-background-transparent\">\n </canvas>\n <div #alphaPointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n }\n <div class=\"flex items-end\">\n <div class=\"text-center mr-[16px]\">\n <div class=\"libs-ui-color-picker-background-transparent rounded-[4px]\">\n <div #previewEl\n class=\"w-[32px] h-[32px] rounded-[4px] cursor-pointer\"\n (click)=\"handlerCopyColor($event)\"></div>\n </div>\n </div>\n @if (options().showHex) {\n <div class=\"text-center mr-[12px]\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">HEX</span>\n <div class=\"w-[88px]\">\n <libs_ui-components-inputs-input [(value)]=\"hex\"\n [classInclude]=\"'text-center !p-0'\"\n (outChange)=\"handlerValueChange($event, 'hex')\" />\n </div>\n </div>\n }\n <div>\n @if (options().showHsl) {\n <div class=\"flex\">\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">H</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"h\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"360\"\n [classInclude]=\"'text-center !p-0 !rounded-tr-none !rounded-br-none ' + (focus() === 's' ? '!border-r-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'h')\"\n (outChange)=\"handlerValueChange($event, 'h')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">S</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"s\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [classInclude]=\"'text-center !p-0 !rounded-none ' + (focus() === 's' ? '' : '!border-x-transparent')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 's')\"\n (outChange)=\"handlerValueChange($event, 's')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">L</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"l\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [classInclude]=\"'text-center !p-0 !rounded-tl-none !rounded-bl-none ' + (focus() === 's' ? '!border-l-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'l')\"\n (outChange)=\"handlerValueChange($event, 'l')\" />\n </div>\n </div>\n </div>\n }\n @if (options().showRgb) {\n <div class=\"flex\">\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">R</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"r\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-tr-none !rounded-br-none ' + (focus() === 'g' ? '!border-r-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'r')\"\n (outChange)=\"handlerValueChange($event, 'r')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">G</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"g\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-none ' + (focus() === 'g' ? '' : '!border-x-transparent')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'g')\"\n (outChange)=\"handlerValueChange($event, 'g')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">B</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"b\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-tl-none !rounded-bl-none ' + (focus() === 'g' ? '!border-l-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'b')\"\n (outChange)=\"handlerValueChange($event, 'b')\" />\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n</div>\n", styles: [".libs-ui-color-picker-background-transparent{background-image:conic-gradient(rgba(0,0,0,.06) 0 25%,transparent 0 50%,rgba(0,0,0,.06) 0 75%,transparent 0);background-size:11px 11px}.libs-ui-color-picker-dot{position:absolute;width:14px;height:14px;top:3px;left:0;background:transparent;border:1px solid #ffffff;pointer-events:none;border-radius:50px;z-index:1;box-shadow:0 1px 2px #000000bf}\n"], dependencies: [{ kind: "component", type: LibsUiComponentsInputsInputComponent, selector: "libs_ui-components-inputs-input", inputs: ["tagInput", "dataType", "typeInput", "modeInput", "tabInsertContentTagInput", "textAreaEnterNotNewLine", "emitEmptyInDataTypeNumber", "keepZeroInTypeInt", "autoAddZeroLessThan10InTypeInt", "ignoreBlockInputMaxValue", "maxValueNumber", "minValueNumber", "fixedFloat", "acceptNegativeValue", "valueUpDownNumber", "classInclude", "maxLength", "readonly", "disable", "noBorder", "backgroundNone", "borderError", "useColorModeExist", "placeholder", "keepPlaceholderOnly", "value", "autoRemoveEmoji", "defaultHeight", "minHeightTextArea", "maxHeightTextArea", "focusTimeOut", "blurTimeOut", "zIndexPopoverContent", "classContainerInput", "showCount", "ignoreStopPropagationEvent", "resize", "templateLeftBottomInput", "templateRightBottomInput", "classContainerBottomInput", "ignoreWidthInput100", "iframeTextareaCustomStyle", "iconLeftClass", "popoverContentIconLeft", "iconRightClass", "popoverContentIconRight", "resetAutoCompletePassword", "acceptOnlyClickIcon", "setIconRightColorSameColorDisableReadOnly", "onlyAcceptNegativeValue", "maxLengthNumberCount", "focusInput"], outputs: ["maxValueNumberChange", "minValueNumberChange", "fixedFloatChange", "acceptNegativeValueChange", "maxLengthChange", "valueChange", "maxLengthNumberCountChange", "outHeightAreaChange", "outChange", "outFocusAndBlurEvent", "outEnterEvent", "outInputEvent", "outIconLeft", "outIconRight", "outFunctionsControl", "outFilesDrop", "outFileDrop", "outChangeValueByButtonUpDown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
314
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsColorPickerComponent, isStandalone: true, selector: "libs_ui-components-color_picker", inputs: { customOptions: { classPropertyName: "customOptions", publicName: "customOptions", isSignal: true, isRequired: false, transformFunction: null }, noEmitEventColorWhenInitComponent: { classPropertyName: "noEmitEventColorWhenInitComponent", publicName: "noEmitEventColorWhenInitComponent", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outColorChange: "outColorChange", outColorChangeMutilType: "outColorChangeMutilType" }, viewQueries: [{ propertyName: "hueEl", first: true, predicate: ["hueEl"], descendants: true, isSignal: true }, { propertyName: "huePointerEl", first: true, predicate: ["huePointerEl"], descendants: true, isSignal: true }, { propertyName: "slEl", first: true, predicate: ["slEl"], descendants: true, isSignal: true }, { propertyName: "slPointerEl", first: true, predicate: ["slPointerEl"], descendants: true, isSignal: true }, { propertyName: "alphaEl", first: true, predicate: ["alphaEl"], descendants: true, isSignal: true }, { propertyName: "alphaPointerEl", first: true, predicate: ["alphaPointerEl"], descendants: true, isSignal: true }, { propertyName: "previewEl", first: true, predicate: ["previewEl"], descendants: true, isSignal: true }], ngImport: i0, template: "<div>\n <div class=\"relative\"\n [style.width.px]=\"options().slBarSize[0]\">\n <div>\n <canvas #slEl\n class=\"rounded-tl-[4px] rounded-tr-[4px] libs-ui-color-picker-background-transparent\"></canvas>\n <div #slPointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n <div class=\"relative\">\n <canvas #hueEl\n class=\"libs-ui-color-picker-background-transparent\"\n [class.rounded-bl-[4px]]=\"!options().showAlpha\"\n [class.rounded-br-[4px]]=\"!options().showAlpha\"></canvas>\n <div #huePointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n @if (options().showAlpha) {\n <div class=\"relative\">\n <canvas #alphaEl\n class=\"rounded-bl-[4px] rounded-br-[4px] libs-ui-color-picker-background-transparent\">\n </canvas>\n <div #alphaPointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n }\n <div class=\"flex items-end\">\n <div class=\"text-center mr-[16px]\">\n <div class=\"libs-ui-color-picker-background-transparent rounded-[4px]\">\n <div #previewEl\n class=\"w-[32px] h-[32px] rounded-[4px] cursor-pointer\"\n (click)=\"handlerCopyColor($event)\"></div>\n </div>\n </div>\n @if (options().showHex) {\n <div class=\"text-center mr-[12px]\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">HEX</span>\n <div class=\"w-[88px]\">\n <libs_ui-components-inputs-input [(value)]=\"hex\"\n [classInclude]=\"'text-center !p-0'\"\n (outChange)=\"handlerValueChange($event, 'hex')\" />\n </div>\n </div>\n }\n <div>\n @if (options().showHsl) {\n <div class=\"flex\">\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">H</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"h\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"360\"\n [classInclude]=\"'text-center !p-0 !rounded-tr-none !rounded-br-none ' + (focus() === 's' ? '!border-r-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'h')\"\n (outChange)=\"handlerValueChange($event, 'h')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">S</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"s\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [classInclude]=\"'text-center !p-0 !rounded-none ' + (focus() === 's' ? '' : '!border-x-transparent')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 's')\"\n (outChange)=\"handlerValueChange($event, 's')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">L</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"l\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [classInclude]=\"'text-center !p-0 !rounded-tl-none !rounded-bl-none ' + (focus() === 's' ? '!border-l-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'l')\"\n (outChange)=\"handlerValueChange($event, 'l')\" />\n </div>\n </div>\n </div>\n }\n @if (options().showRgb) {\n <div class=\"flex\">\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">R</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"r\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-tr-none !rounded-br-none ' + (focus() === 'g' ? '!border-r-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'r')\"\n (outChange)=\"handlerValueChange($event, 'r')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">G</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"g\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-none ' + (focus() === 'g' ? '' : '!border-x-transparent')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'g')\"\n (outChange)=\"handlerValueChange($event, 'g')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">B</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"b\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-tl-none !rounded-bl-none ' + (focus() === 'g' ? '!border-l-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'b')\"\n (outChange)=\"handlerValueChange($event, 'b')\" />\n </div>\n </div>\n <div class=\"text-center ml-[8px]\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">A</span>\n <div class=\"w-[78px]\">\n <libs_ui-components-inputs-valid [item]=\"{aValue:a()*100}\"\n [fieldNameBind]=\"'aValue'\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [unitsRight]=\"[{label:'%'}]\"\n [emitEmptyInDataTypeNumber]=\"true\"\n (outValueChange)=\"handlerValueChangeAlphaInput($event)\"/>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n", styles: [".libs-ui-color-picker-background-transparent{background-image:conic-gradient(rgba(0,0,0,.06) 0 25%,transparent 0 50%,rgba(0,0,0,.06) 0 75%,transparent 0);background-size:11px 11px}.libs-ui-color-picker-dot{position:absolute;width:14px;height:14px;top:3px;left:0;background:transparent;border:1px solid #ffffff;pointer-events:none;border-radius:50px;z-index:1;box-shadow:0 1px 2px #000000bf}\n"], dependencies: [{ kind: "component", type: LibsUiComponentsInputsInputComponent, selector: "libs_ui-components-inputs-input", inputs: ["tagInput", "dataType", "typeInput", "modeInput", "tabInsertContentTagInput", "textAreaEnterNotNewLine", "emitEmptyInDataTypeNumber", "keepZeroInTypeInt", "autoAddZeroLessThan10InTypeInt", "ignoreBlockInputMaxValue", "maxValueNumber", "minValueNumber", "fixedFloat", "acceptNegativeValue", "valueUpDownNumber", "classInclude", "maxLength", "readonly", "disable", "noBorder", "backgroundNone", "borderError", "useColorModeExist", "placeholder", "keepPlaceholderOnly", "value", "autoRemoveEmoji", "defaultHeight", "minHeightTextArea", "maxHeightTextArea", "focusTimeOut", "blurTimeOut", "zIndexPopoverContent", "classContainerInput", "showCount", "ignoreStopPropagationEvent", "resize", "templateLeftBottomInput", "templateRightBottomInput", "classContainerBottomInput", "ignoreWidthInput100", "iframeTextareaCustomStyle", "iconLeftClass", "popoverContentIconLeft", "iconRightClass", "popoverContentIconRight", "resetAutoCompletePassword", "acceptOnlyClickIcon", "setIconRightColorSameColorDisableReadOnly", "onlyAcceptNegativeValue", "maxLengthNumberCount", "focusInput"], outputs: ["maxValueNumberChange", "minValueNumberChange", "fixedFloatChange", "acceptNegativeValueChange", "maxLengthChange", "valueChange", "maxLengthNumberCountChange", "outHeightAreaChange", "outChange", "outFocusAndBlurEvent", "outEnterEvent", "outInputEvent", "outIconLeft", "outIconRight", "outFunctionsControl", "outFilesDrop", "outFileDrop", "outChangeValueByButtonUpDown"] }, { kind: "component", type: LibsUiComponentsInputsValidComponent, selector: "libs_ui-components-inputs-valid", inputs: ["item", "labelConfig", "emitEmptyInDataTypeNumber", "ignoreBlockInputMaxValue", "fieldNameBind", "showCount", "typeComponentSelectItem", "valueComponentSelectItem", "disableComponentSelectItem", "tagInput", "dataType", "typeInput", "modeInput", "resetAutoCompletePassword", "textAreaEnterNotNewLine", "fixedFloat", "acceptNegativeValue", "valueUpDownNumber", "ignoreWidthInput100", "classIncludeInput", "classContainerInput", "readonly", "disable", "noBorder", "backgroundNone", "useColorModeExist", "placeholder", "keepPlaceholderOnly", "classContainerBottomInput", "autoRemoveEmoji", "defaultHeight", "maxHeightTextArea", "minHeightTextArea", "ignoreShowError", "borderError", "iconLeftClass", "popoverContentIconLeft", "iconRightClass", "popoverContentIconRight", "zIndexPopoverContent", "unitsLeft", "configUnitLeft", "keySelectedUnitLeft", "unitsRight", "configUnitRight", "keySelectedUnitRight", "maxValueNumber", "minValueNumber", "ignoreContentLeft", "ignoreContentRight", "isBaselineStyle", "valuePatternShowError", "validPattern", "validRequired", "validMinLength", "validMinValue", "validMaxValue", "validMaxLength", "functionValid", "maxLength", "positionMessageErrorStartInput", "classInclude", "resize", "templateLeftBottomInput", "templateRightBottomInput", "onlyAcceptNegativeValue", "autoAddZeroLessThan10InTypeInt", "maxLengthNumberCount", "classMessageErrorInclude", "ignoreStopPropagationEvent", "ignoreUnitRightClassReadOnly", "paddingRightCustomSpecific", "focusTimeOut", "deboundTimeValiate"], outputs: ["itemChange", "outValueChange", "outSelect", "outIconLeft", "outIconRight", "outClickButtonLabel", "outSwitchEventLabel", "outLabelRightClick", "outEnterInputEvent", "outHeightAreaChange", "outFunctionsControl", "outFocusAndBlur", "outChangeValueByButtonUpDown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
297
315
  }
298
316
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsColorPickerComponent, decorators: [{
299
317
  type: Component,
300
318
  args: [{ selector: 'libs_ui-components-color_picker', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
301
- LibsUiComponentsInputsInputComponent
302
- ], template: "<div class=\"relative\"\n [style.width.px]=\"options().slBarSize[0]\">\n <div>\n <canvas #slEl\n class=\"rounded-tl-[4px] rounded-tr-[4px] libs-ui-color-picker-background-transparent\"></canvas>\n <div #slPointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n <div class=\"relative\">\n <canvas #hueEl\n class=\"libs-ui-color-picker-background-transparent\"\n [class.rounded-bl-[4px]]=\"!options().showAlpha\"\n [class.rounded-br-[4px]]=\"!options().showAlpha\"></canvas>\n <div #huePointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n @if (options().showAlpha) {\n <div class=\"relative\">\n <canvas #alphaEl\n class=\"rounded-bl-[4px] rounded-br-[4px] libs-ui-color-picker-background-transparent\">\n </canvas>\n <div #alphaPointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n }\n <div class=\"flex items-end\">\n <div class=\"text-center mr-[16px]\">\n <div class=\"libs-ui-color-picker-background-transparent rounded-[4px]\">\n <div #previewEl\n class=\"w-[32px] h-[32px] rounded-[4px] cursor-pointer\"\n (click)=\"handlerCopyColor($event)\"></div>\n </div>\n </div>\n @if (options().showHex) {\n <div class=\"text-center mr-[12px]\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">HEX</span>\n <div class=\"w-[88px]\">\n <libs_ui-components-inputs-input [(value)]=\"hex\"\n [classInclude]=\"'text-center !p-0'\"\n (outChange)=\"handlerValueChange($event, 'hex')\" />\n </div>\n </div>\n }\n <div>\n @if (options().showHsl) {\n <div class=\"flex\">\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">H</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"h\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"360\"\n [classInclude]=\"'text-center !p-0 !rounded-tr-none !rounded-br-none ' + (focus() === 's' ? '!border-r-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'h')\"\n (outChange)=\"handlerValueChange($event, 'h')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">S</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"s\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [classInclude]=\"'text-center !p-0 !rounded-none ' + (focus() === 's' ? '' : '!border-x-transparent')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 's')\"\n (outChange)=\"handlerValueChange($event, 's')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">L</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"l\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [classInclude]=\"'text-center !p-0 !rounded-tl-none !rounded-bl-none ' + (focus() === 's' ? '!border-l-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'l')\"\n (outChange)=\"handlerValueChange($event, 'l')\" />\n </div>\n </div>\n </div>\n }\n @if (options().showRgb) {\n <div class=\"flex\">\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">R</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"r\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-tr-none !rounded-br-none ' + (focus() === 'g' ? '!border-r-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'r')\"\n (outChange)=\"handlerValueChange($event, 'r')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">G</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"g\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-none ' + (focus() === 'g' ? '' : '!border-x-transparent')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'g')\"\n (outChange)=\"handlerValueChange($event, 'g')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">B</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"b\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-tl-none !rounded-bl-none ' + (focus() === 'g' ? '!border-l-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'b')\"\n (outChange)=\"handlerValueChange($event, 'b')\" />\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n</div>\n", styles: [".libs-ui-color-picker-background-transparent{background-image:conic-gradient(rgba(0,0,0,.06) 0 25%,transparent 0 50%,rgba(0,0,0,.06) 0 75%,transparent 0);background-size:11px 11px}.libs-ui-color-picker-dot{position:absolute;width:14px;height:14px;top:3px;left:0;background:transparent;border:1px solid #ffffff;pointer-events:none;border-radius:50px;z-index:1;box-shadow:0 1px 2px #000000bf}\n"] }]
319
+ LibsUiComponentsInputsInputComponent,
320
+ LibsUiComponentsInputsValidComponent
321
+ ], template: "<div>\n <div class=\"relative\"\n [style.width.px]=\"options().slBarSize[0]\">\n <div>\n <canvas #slEl\n class=\"rounded-tl-[4px] rounded-tr-[4px] libs-ui-color-picker-background-transparent\"></canvas>\n <div #slPointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n <div class=\"relative\">\n <canvas #hueEl\n class=\"libs-ui-color-picker-background-transparent\"\n [class.rounded-bl-[4px]]=\"!options().showAlpha\"\n [class.rounded-br-[4px]]=\"!options().showAlpha\"></canvas>\n <div #huePointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n @if (options().showAlpha) {\n <div class=\"relative\">\n <canvas #alphaEl\n class=\"rounded-bl-[4px] rounded-br-[4px] libs-ui-color-picker-background-transparent\">\n </canvas>\n <div #alphaPointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n }\n <div class=\"flex items-end\">\n <div class=\"text-center mr-[16px]\">\n <div class=\"libs-ui-color-picker-background-transparent rounded-[4px]\">\n <div #previewEl\n class=\"w-[32px] h-[32px] rounded-[4px] cursor-pointer\"\n (click)=\"handlerCopyColor($event)\"></div>\n </div>\n </div>\n @if (options().showHex) {\n <div class=\"text-center mr-[12px]\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">HEX</span>\n <div class=\"w-[88px]\">\n <libs_ui-components-inputs-input [(value)]=\"hex\"\n [classInclude]=\"'text-center !p-0'\"\n (outChange)=\"handlerValueChange($event, 'hex')\" />\n </div>\n </div>\n }\n <div>\n @if (options().showHsl) {\n <div class=\"flex\">\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">H</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"h\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"360\"\n [classInclude]=\"'text-center !p-0 !rounded-tr-none !rounded-br-none ' + (focus() === 's' ? '!border-r-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'h')\"\n (outChange)=\"handlerValueChange($event, 'h')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">S</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"s\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [classInclude]=\"'text-center !p-0 !rounded-none ' + (focus() === 's' ? '' : '!border-x-transparent')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 's')\"\n (outChange)=\"handlerValueChange($event, 's')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">L</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"l\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [classInclude]=\"'text-center !p-0 !rounded-tl-none !rounded-bl-none ' + (focus() === 's' ? '!border-l-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'l')\"\n (outChange)=\"handlerValueChange($event, 'l')\" />\n </div>\n </div>\n </div>\n }\n @if (options().showRgb) {\n <div class=\"flex\">\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">R</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"r\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-tr-none !rounded-br-none ' + (focus() === 'g' ? '!border-r-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'r')\"\n (outChange)=\"handlerValueChange($event, 'r')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">G</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"g\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-none ' + (focus() === 'g' ? '' : '!border-x-transparent')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'g')\"\n (outChange)=\"handlerValueChange($event, 'g')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">B</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"b\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-tl-none !rounded-bl-none ' + (focus() === 'g' ? '!border-l-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'b')\"\n (outChange)=\"handlerValueChange($event, 'b')\" />\n </div>\n </div>\n <div class=\"text-center ml-[8px]\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">A</span>\n <div class=\"w-[78px]\">\n <libs_ui-components-inputs-valid [item]=\"{aValue:a()*100}\"\n [fieldNameBind]=\"'aValue'\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [unitsRight]=\"[{label:'%'}]\"\n [emitEmptyInDataTypeNumber]=\"true\"\n (outValueChange)=\"handlerValueChangeAlphaInput($event)\"/>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n", styles: [".libs-ui-color-picker-background-transparent{background-image:conic-gradient(rgba(0,0,0,.06) 0 25%,transparent 0 50%,rgba(0,0,0,.06) 0 75%,transparent 0);background-size:11px 11px}.libs-ui-color-picker-dot{position:absolute;width:14px;height:14px;top:3px;left:0;background:transparent;border:1px solid #ffffff;pointer-events:none;border-radius:50px;z-index:1;box-shadow:0 1px 2px #000000bf}\n"] }]
303
322
  }], ctorParameters: () => [] });
304
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9jb2xvci1waWNrZXIvc3JjL2NvbG9yLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvY29sb3ItcGlja2VyL3NyYy9jb2xvci1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQix1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFjLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25LLE9BQU8sRUFBc0Isb0NBQW9DLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFhMUksTUFBTSxPQUFPLG9DQUFvQztJQUUvQyxtQkFBbUI7SUFDVCxPQUFPLEdBQUcsTUFBTSxDQUFpQixjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELEtBQUssR0FBRyxNQUFNLENBQXFCLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLEdBQUcsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQyxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUN0QixDQUFD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SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7d0dBblZVLG9DQUFvQzs0RkFBcEMsb0NBQW9DLGtoQ0NuQmpELHVtTEErSEEsa2NEL0dJLG9DQUFvQzs7NEZBRzNCLG9DQUFvQztrQkFYaEQsU0FBUzsrQkFFRSxpQ0FBaUMsY0FHL0IsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLG9DQUFvQztxQkFDckMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBlZmZlY3QsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBvdXRwdXQsIHNpZ25hbCwgdmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElGb2N1c0FuZEJsdXJFdmVudCwgTGlic1VpQ29tcG9uZW50c0lucHV0c0lucHV0Q29tcG9uZW50IH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtaW5wdXRzLWlucHV0XCI7XG5pbXBvcnQgeyBMaWJzVWlOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSBcIkBsaWJzLXVpL3NlcnZpY2VzLW5vdGlmaWNhdGlvblwiO1xuaW1wb3J0IHsgZ2V0RHJhZ0V2ZW50QnlFbGVtZW50LCBzZXQgfSBmcm9tIFwiQGxpYnMtdWkvdXRpbHNcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgSUNhbnZhc0hlbHBlciwgSUNvbmZpZ1VwZGF0ZSwgSVBpY2tlckN1c3RvbU9wdGlvbnMsIElQaWNrZXJPcHRpb25zIH0gZnJvbSBcIi4vaW50ZXJmYWNlcy9waWNrZXIuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBjc3NDb2xvclRvUmdiYSwgZGVmYXVsdEhlbHBlciwgaHNsVG9SZ2IsIGxpbWl0LCBvcHRpb25zRGVmYXVsdCwgcGFyc2VDb2xvciwgcmdiVG9IZXgsIHJnYlRvSHNsLCByZ2JUb0hzdiB9IGZyb20gXCIuL3V0aWxzL3BpY2tlclwiO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtY29sb3JfcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbG9yLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9jb2xvci1waWNrZXIuY29tcG9uZW50LnNjc3MnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIExpYnNVaUNvbXBvbmVudHNJbnB1dHNJbnB1dENvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNDb2xvclBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCxPbkRlc3Ryb3kge1xuXG4gIC8vICNyZWdpb24gUFJPUEVSVFlcbiAgcHJvdGVjdGVkIG9wdGlvbnMgPSBzaWduYWw8SVBpY2tlck9wdGlvbnM+KG9wdGlvbnNEZWZhdWx0KCkpO1xuICBwcm90ZWN0ZWQgZm9jdXMgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcm90ZWN0ZWQgaGV4ID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICBwcm90ZWN0ZWQgcyA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgaCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgbCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgciA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgZyA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgYiA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgYSA9IHNpZ25hbDxudW1iZXI+KDEpO1xuXG4gIHByaXZhdGUgc2xCYXJIZWxwZXIgPSBzaWduYWw8SUNhbnZhc0hlbHBlcj4oZGVmYXVsdEhlbHBlcigpKTtcbiAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlID0gaW5qZWN0KExpYnNVaU5vdGlmaWNhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIG9uRGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLy8gI3JlZ2lvbiBJTlBVVFxuICByZWFkb25seSBjdXN0b21PcHRpb25zID0gaW5wdXQ8SVBpY2tlckN1c3RvbU9wdGlvbnM+KCk7XG5cbiAgLy8gI3JlZ2lvbiBPVVRQVVRcbiAgcmVhZG9ubHkgb3V0Q29sb3JDaGFuZ2UgPSBvdXRwdXQ8c3RyaW5nPigpO1xuXG4gIC8qIFZJRVcgQ0hJTEQgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBodWVFbCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPignaHVlRWwnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBodWVQb2ludGVyRWwgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2h1ZVBvaW50ZXJFbCcpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNsRWwgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ3NsRWwnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzbFBvaW50ZXJFbCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPignc2xQb2ludGVyRWwnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhbHBoYUVsID0gdmlld0NoaWxkPEVsZW1lbnRSZWY+KCdhbHBoYUVsJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWxwaGFQb2ludGVyRWwgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2FscGhhUG9pbnRlckVsJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJldmlld0VsID0gdmlld0NoaWxkPEVsZW1lbnRSZWY+KCdwcmV2aWV3RWwnKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgY3R4ID0gdGhpcy5hbHBoYUVsKCk/Lm5hdGl2ZUVsZW1lbnQuZ2V0Q29udGV4dCgnMmQnKTtcblxuICAgICAgaWYgKCFjdHgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY3R4LmNsZWFyUmVjdCgwLCAwLCB0aGlzLm9wdGlvbnMoKS5hbHBoYUJhclNpemVbMF0sIHRoaXMub3B0aW9ucygpLmFscGhhQmFyU2l6ZVsxXSk7XG4gICAgICBjb25zdCBncmFkaWVudCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCB0aGlzLmFscGhhRWwoKT8ubmF0aXZlRWxlbWVudC53aWR0aCAtIDEsIDApO1xuXG4gICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMCwgYGhzbGEoJHt0aGlzLmgoKX0sJHt0aGlzLnMoKX0lLCR7dGhpcy5sKCl9JSwgMClgKTtcbiAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgxLCBgaHNsYSgke3RoaXMuaCgpfSwke3RoaXMucygpfSUsJHt0aGlzLmwoKX0lLCAxKWApO1xuICAgICAgY3R4LmZpbGxTdHlsZSA9IGdyYWRpZW50O1xuICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIHRoaXMub3B0aW9ucygpLmFscGhhQmFyU2l6ZVswXSwgdGhpcy5vcHRpb25zKCkuYWxwaGFCYXJTaXplWzFdKTtcbiAgICB9KVxuICB9XG5cbiAgLyogRlVOQ1RJT05TICovXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmN1c3RvbU9wdGlvbnMoKSkge1xuICAgICAgdGhpcy5vcHRpb25zLnVwZGF0ZShvcHRpb25zID0+ICh7IC4uLm9wdGlvbnMsIC4uLnRoaXMuY3VzdG9tT3B0aW9ucygpIH0pKVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldHVwSHVlQ2FudmFzKCk7XG4gICAgdGhpcy5zZXR1cFNsQ2FudmFzKCk7XG4gICAgdGhpcy5zZXR1cFNsQmFySGVscGVyKCk7XG4gICAgaWYgKHRoaXMub3B0aW9ucygpLnNob3dBbHBoYSkge1xuICAgICAgdGhpcy5zZXR1cEFscGhhQ2FudmFzKCk7XG4gICAgfVxuICAgIHRoaXMuaGFuZGxlckNvbG9yQ2hhbmdlKHRoaXMub3B0aW9ucygpLmZvcm1hdCwgdGhpcy5vcHRpb25zKCkuY29sb3IsIHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEh1ZUNhbnZhcygpIHtcbiAgICBjb25zdCBjYW52YXMgPSB0aGlzLmh1ZUVsKCk/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBjYW52YXMud2lkdGggPSB0aGlzLm9wdGlvbnMoKS5odWVCYXJTaXplWzBdO1xuICAgIGNhbnZhcy5oZWlnaHQgPSB0aGlzLm9wdGlvbnMoKS5odWVCYXJTaXplWzFdO1xuICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIGNvbnN0IGdyYWRpZW50ID0gY3R4LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsIDAsIHRoaXMub3B0aW9ucygpLmh1ZUJhclNpemVbMF0sIDApO1xuICAgIGNvbnN0IHN0ZXAgPSAxIC8gMzYwO1xuXG4gICAgZm9yIChsZXQgaWkgPSAwOyBpaSA8PSAxOyBpaSArPSBzdGVwKSB7XG4gICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoaWksIGBoc2woJHszNjAgKiBpaX0sIDEwMCUsIDUwJSlgKTtcbiAgICB9XG4gICAgY3R4LmZpbGxTdHlsZSA9IGdyYWRpZW50O1xuICAgIGN0eC5maWxsUmVjdCgwLCAwLCB0aGlzLm9wdGlvbnMoKS5odWVCYXJTaXplWzBdLCB0aGlzLm9wdGlvbnMoKS5odWVCYXJTaXplWzFdKTtcblxuICAgIGdldERyYWdFdmVudEJ5RWxlbWVudCh7ZWxlbWVudE1vdXNlRG93bjpjYW52YXMsaXNTdGFydFdpdGhNb3VzZURvbndFdmVudDp0cnVlLG9uRGVzdHJveTp0aGlzLm9uRGVzdHJveX0pLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpPT57XG4gICAgICBjb25zdCB4ID0gbGltaXQoZXZlbnQuY2xpZW50WCAtIGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LCAwLCB0aGlzLm9wdGlvbnMoKS5odWVCYXJTaXplWzBdKTtcbiAgICAgIGNvbnN0IGh1ZSA9IE1hdGgucm91bmQoeCAqIDM2MCAvIHRoaXMub3B0aW9ucygpLmh1ZUJhclNpemVbMF0pO1xuICBcbiAgICAgIHNldCh0aGlzLmh1ZVBvaW50ZXJFbCgpPy5uYXRpdmVFbGVtZW50LnN0eWxlLCAnbGVmdCcsIGAke3ggLSA3fXB4YCk7XG4gICAgICB0aGlzLmguc2V0KGh1ZSk7XG4gICAgICB0aGlzLmhhbmRsZXJDb2xvckNoYW5nZSgnaCcsIGh1ZSk7XG4gICAgfSk7XG4gIFxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFNsQ2FudmFzKCkge1xuICAgIGNvbnN0IGNhbnZhcyA9IHRoaXMuc2xFbCgpPy5uYXRpdmVFbGVtZW50O1xuXG4gICAgY2FudmFzLndpZHRoID0gdGhpcy5vcHRpb25zKCkuc2xCYXJTaXplWzBdO1xuICAgIGNhbnZhcy5oZWlnaHQgPSB0aGlzLm9wdGlvbnMoKS5zbEJhclNpemVbMV07XG5cbiAgICBnZXREcmFnRXZlbnRCeUVsZW1lbnQoe2VsZW1lbnRNb3VzZURvd246Y2FudmFzLGlzU3RhcnRXaXRoTW91c2VEb253RXZlbnQ6dHJ1ZSxvbkRlc3Ryb3k6dGhpcy5vbkRlc3Ryb3l9KS5zdWJzY3JpYmUoKGV2ZW50KT0+e1xuICAgICAgY29uc3QgeCA9IGxpbWl0KGV2ZW50LmNsaWVudFggLSBjYW52YXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCwgMCwgdGhpcy5vcHRpb25zKCkuc2xCYXJTaXplWzBdIC0gMSk7XG4gICAgICBjb25zdCB5ID0gbGltaXQoZXZlbnQuY2xpZW50WSAtIGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AsIDAsIHRoaXMub3B0aW9ucygpLnNsQmFyU2l6ZVsxXSAtIDEpO1xuICAgICAgY29uc3QgYyA9IHRoaXMuc2xCYXJIZWxwZXIoKS5ncmFiQ29sb3IoeCwgeSk7XG5cbiAgICAgIHNldCh0aGlzLnNsUG9pbnRlckVsKCk/Lm5hdGl2ZUVsZW1lbnQuc3R5bGUsICdsZWZ0JywgYCR7eCAtIDd9cHhgKTtcbiAgICAgIHNldCh0aGlzLnNsUG9pbnRlckVsKCk/Lm5hdGl2ZUVsZW1lbnQuc3R5bGUsICd0b3AnLCBgJHt5IC0gN31weGApO1xuICAgICAgdGhpcy5oYW5kbGVyQ29sb3JDaGFuZ2UoJ3JnYicsIGMpO1xuICAgIH0pO1xuICAgIFxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFNsQmFySGVscGVyKCkge1xuICAgIGNvbnN0IGNhbnZhcyA9IHRoaXMuc2xFbCgpPy5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIGNvbnN0IHdpZHRoID0gK2NhbnZhcy53aWR0aDtcbiAgICBjb25zdCBoZWlnaHQgPSArY2FudmFzLmhlaWdodDtcbiAgICBjb25zdCB3aGl0ZUJsYWNrR3JhZGllbnQgPSBjdHguY3JlYXRlTGluZWFyR3JhZGllbnQoMSwgMSwgMSwgaGVpZ2h0IC0gMSk7XG5cbiAgICB3aGl0ZUJsYWNrR3JhZGllbnQuYWRkQ29sb3JTdG9wKDAsICd3aGl0ZScpO1xuICAgIHdoaXRlQmxhY2tHcmFkaWVudC5hZGRDb2xvclN0b3AoMSwgJ2JsYWNrJyk7XG5cbiAgICB0aGlzLnNsQmFySGVscGVyLnNldCh7XG4gICAgICBzZXRIdWU6IChodWU6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBjb2xvckdyYWRpZW50ID0gY3R4LmNyZWF0ZUxpbmVhckdyYWRpZW50KDEsIDAsIHdpZHRoIC0gMSwgMCk7XG4gICAgICAgIGNvbG9yR3JhZGllbnQuYWRkQ29sb3JTdG9wKDAsIGBoc2xhKCR7aHVlfSwgMTAwJSwgNTAlLCAwKWApO1xuICAgICAgICBjb2xvckdyYWRpZW50LmFkZENvbG9yU3RvcCgxLCBgaHNsYSgke2h1ZX0sIDEwMCUsIDUwJSwgMSlgKTtcblxuICAgICAgICBjdHguZmlsbFN0eWxlID0gd2hpdGVCbGFja0dyYWRpZW50O1xuICAgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgIGN0eC5maWxsU3R5bGUgPSBjb2xvckdyYWRpZW50O1xuICAgICAgICBjdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ211bHRpcGx5JztcbiAgICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICBjdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ3NvdXJjZS1vdmVyJztcbiAgICAgIH0sXG4gICAgICBncmFiQ29sb3I6ICh4OiBudW1iZXIsIHk6IG51bWJlcikgPT4gY3R4LmdldEltYWdlRGF0YSh4LCB5LCAxLCAxKS5kYXRhLFxuICAgICAgZmluZENvbG9yOiAocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBbLCBzLCB2XSA9IHJnYlRvSHN2KHIsIGcsIGIpO1xuICAgICAgICBjb25zdCB4ID0gcyAqIHdpZHRoO1xuICAgICAgICBjb25zdCB5ID0gaGVpZ2h0IC0gKHYgKiBoZWlnaHQpO1xuXG4gICAgICAgIHJldHVybiBbeCwgeV07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwQWxwaGFDYW52YXMoKSB7XG4gICAgY29uc3QgY2FudmFzID0gdGhpcy5hbHBoYUVsKCk/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBjYW52YXMud2lkdGggPSB0aGlzLm9wdGlvbnMoKS5hbHBoYUJhclNpemVbMF07XG4gICAgY2FudmFzLmhlaWdodCA9IHRoaXMub3B0aW9ucygpLmFscGhhQmFyU2l6ZVsxXTtcbiAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICBjb25zdCBncmFkaWVudCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCBjYW52YXMud2lkdGggLSAxLCAwKTtcblxuICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgwLCBgaHNsYSgke3RoaXMuaCgpfSwke3RoaXMucygpfSUsJHt0aGlzLmwoKX0lLCAwKWApO1xuICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgxLCBgaHNsYSgke3RoaXMuaCgpfSwke3RoaXMucygpfSUsJHt0aGlzLmwoKX0lLCAxKWApO1xuICAgIGN0eC5maWxsU3R5bGUgPSBncmFkaWVudDtcbiAgICBjdHguZmlsbFJlY3QoMCwgMCwgdGhpcy5vcHRpb25zKCkuYWxwaGFCYXJTaXplWzBdLCB0aGlzLm9wdGlvbnMoKS5hbHBoYUJhclNpemVbMV0pO1xuICAgIFxuICAgIGdldERyYWdFdmVudEJ5RWxlbWVudCh7ZWxlbWVudE1vdXNlRG93bjpjYW52YXMsaXNTdGFydFdpdGhNb3VzZURvbndFdmVudDp0cnVlLG9uRGVzdHJveTp0aGlzLm9uRGVzdHJveX0pLnN1YnNjcmliZSgoZXZlbnQpPT57XG4gICAgICBjb25zdCB4ID0gbGltaXQoZXZlbnQuY2xpZW50WCAtIGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LCAwLCB0aGlzLm9wdGlvbnMoKS5hbHBoYUJhclNpemVbMF0pO1xuICAgICAgY29uc3QgYWxwaGEgPSArKHggLyB0aGlzLm9wdGlvbnMoKS5hbHBoYUJhclNpemVbMF0pLnRvRml4ZWQoMik7XG5cbiAgICAgIHNldCh0aGlzLmFscGhhUG9pbnRlckVsKCk/Lm5hdGl2ZUVsZW1lbnQuc3R5bGUsICdsZWZ0JywgYCR7eCAtIDd9cHhgKTtcbiAgICAgIHRoaXMuaGFuZGxlckNvbG9yQ2hhbmdlKCdhbHBoYScsIGFscGhhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ29weUNvbG9yKGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHdpbmRvdy5uYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0aGlzLmhleCgpKTtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvd0NvbXBUeXBlVGV4dFN1Y2Nlc3MoJ2kxOG5fY29weV9zdWNjZXNzZnVsbHknKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUG9pbnRlckgoaDogbnVtYmVyKSB7XG4gICAgY29uc3QgeCA9IHRoaXMub3B0aW9ucygpLmh1ZUJhclNpemVbMF0gKiBoIC8gMzYwO1xuXG4gICAgc2V0KHRoaXMuaHVlUG9pbnRlckVsKCk/Lm5hdGl2ZUVsZW1lbnQuc3R5bGUsICdsZWZ0JywgYCR7eCAtIDd9cHhgKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUG9pbnRlclNsKGg6IG51bWJlciwgczogbnVtYmVyLCBsOiBudW1iZXIpIHtcbiAgICBjb25zdCBbciwgZywgYl0gPSBoc2xUb1JnYihoLCBzLCBsKTtcbiAgICBjb25zdCBbeCwgeV0gPSB0aGlzLnNsQmFySGVscGVyKCkuZmluZENvbG9yKHIsIGcsIGIpIGFzIEFycmF5PG51bWJlcj47XG5cbiAgICBpZiAoeCA+PSAwKSB7XG4gICAgICBzZXQodGhpcy5zbFBvaW50ZXJFbCgpPy5uYXRpdmVFbGVtZW50LnN0eWxlLCAnbGVmdCcsIGAke3ggLSA3fXB4YCk7XG4gICAgICBzZXQodGhpcy5zbFBvaW50ZXJFbCgpPy5uYXRpdmVFbGVtZW50LnN0eWxlLCAndG9wJywgYCR7eSAtIDd9cHhgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVBvaW50ZXJBKGE6IG51bWJlcikge1xuICAgIGlmICghdGhpcy5vcHRpb25zKCkuc2hvd0FscGhhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHggPSB0aGlzLm9wdGlvbnMoKS5hbHBoYUJhclNpemVbMF0gKiBhO1xuXG4gICAgc2V0KHRoaXMuYWxwaGFQb2ludGVyRWwoKT8ubmF0aXZlRWxlbWVudC5zdHlsZSwgJ2xlZnQnLCBgJHt4IC0gN31weGApO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVIZXgocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlciwgYTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucygpLnNob3dBbHBoYSkge1xuICAgICAgdGhpcy5oZXguc2V0KHBhcnNlQ29sb3IoW3IsIGcsIGIsIGFdLCAnaGV4Y3NzNCcpIGFzIHN0cmluZyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5oZXguc2V0KHJnYlRvSGV4KHIsIGcsIGIpKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUmdiKCkge1xuICAgIGNvbnN0IHJnYiA9IGhzbFRvUmdiKHRoaXMuaCgpLCB0aGlzLnMoKSwgdGhpcy5sKCkpO1xuXG4gICAgdGhpcy5yLnNldChyZ2JbMF0pO1xuICAgIHRoaXMuZy5zZXQocmdiWzFdKTtcbiAgICB0aGlzLmIuc2V0KHJnYlsyXSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUhzbCgpIHtcbiAgICBjb25zdCBoc2wgPSByZ2JUb0hzbCh0aGlzLnIoKSwgdGhpcy5nKCksIHRoaXMuYigpKTtcblxuICAgIHRoaXMuaC5zZXQoaHNsWzBdKTtcbiAgICB0aGlzLnMuc2V0KGhzbFsxXSk7XG4gICAgdGhpcy5sLnNldChoc2xbMl0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVWYWx1ZXNBbmRQb2ludGVyKGNvbmZpZzogSUNvbmZpZ1VwZGF0ZSkge1xuICAgIGlmIChjb25maWcucmdiKSB7XG4gICAgICB0aGlzLnVwZGF0ZVJnYigpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmhzbCkge1xuICAgICAgdGhpcy51cGRhdGVIc2woKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5odWUpIHtcbiAgICAgIHRoaXMuc2xCYXJIZWxwZXIoKS5zZXRIdWUodGhpcy5oKCkpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmhQb2ludCkge1xuICAgICAgdGhpcy51cGRhdGVQb2ludGVySCh0aGlzLmgoKSk7XG4gICAgfVxuICAgIGlmIChjb25maWcuc2xQb2ludCkge1xuICAgICAgdGhpcy51cGRhdGVQb2ludGVyU2wodGhpcy5oKCksIHRoaXMucygpLCB0aGlzLmwoKSk7XG4gICAgfVxuICAgIGlmIChjb25maWcuaGV4KSB7XG4gICAgICB0aGlzLnVwZGF0ZUhleCh0aGlzLnIoKSwgdGhpcy5nKCksIHRoaXMuYigpLCB0aGlzLmEoKSk7XG4gICAgfVxuICAgIGlmIChjb25maWcuYVBvaW50KSB7XG4gICAgICB0aGlzLnVwZGF0ZVBvaW50ZXJBKHRoaXMuYSgpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZXJDb2xvckNoYW5nZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IEFycmF5PG51bWJlcj4sIHNpbGVudCA9IGZhbHNlKSB7XG4gICAgbGV0IGNvbmZpZzogSUNvbmZpZ1VwZGF0ZSA9IHt9O1xuXG4gICAgc3dpdGNoIChrZXkpIHtcbiAgICAgIGNhc2UgJ2gnOlxuICAgICAgICBjb25maWcgPSB7IGhQb2ludDogdHJ1ZSwgaGV4OiB0cnVlLCByZ2I6IHRydWUsIGh1ZTogdHJ1ZSB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3MnOlxuICAgICAgICBjb25maWcgPSB7IHNsUG9pbnQ6IHRydWUsIGhleDogdHJ1ZSwgcmdiOiB0cnVlIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbCc6XG4gICAgICAgIGNvbmZpZyA9IHsgc2xQb2ludDogdHJ1ZSwgaGV4OiB0cnVlLCByZ2I6IHRydWUgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyJzpcbiAgICAgICAgY29uZmlnID0geyBoUG9pbnQ6IHRydWUsIHNsUG9pbnQ6IHRydWUsIGhleDogdHJ1ZSwgaHNsOiB0cnVlLCBodWU6IHRydWUgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdnJzpcbiAgICAgICAgY29uZmlnID0geyBoUG9pbnQ6IHRydWUsIHNsUG9pbnQ6IHRydWUsIGhleDogdHJ1ZSwgaHNsOiB0cnVlLCBodWU6IHRydWUgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdiJzpcbiAgICAgICAgY29uZmlnID0geyBoUG9pbnQ6IHRydWUsIHNsUG9pbnQ6IHRydWUsIGhleDogdHJ1ZSwgaHNsOiB0cnVlLCBodWU6IHRydWUgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZ2InOlxuICAgICAgICB0aGlzLnIuc2V0KCh2YWx1ZSBhcyBBcnJheTxudW1iZXI+KVswXSk7XG4gICAgICAgIHRoaXMuZy5zZXQoKHZhbHVlIGFzIEFycmF5PG51bWJlcj4pWzFdKTtcbiAgICAgICAgdGhpcy5iLnNldCgodmFsdWUgYXMgQXJyYXk8bnVtYmVyPilbMl0pO1xuICAgICAgICBjb25maWcgPSB7IGhleDogdHJ1ZSwgaHNsOiB0cnVlIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmdiYSc6XG4gICAgICAgIHRoaXMuci5zZXQoKHZhbHVlIGFzIEFycmF5PG51bWJlcj4pWzBdKTtcbiAgICAgICAgdGhpcy5nLnNldCgodmFsdWUgYXMgQXJyYXk8bnVtYmVyPilbMV0pO1xuICAgICAgICB0aGlzLmIuc2V0KCh2YWx1ZSBhcyBBcnJheTxudW1iZXI+KVsyXSk7XG4gICAgICAgIHRoaXMuYS5zZXQoKHZhbHVlIGFzIEFycmF5PG51bWJlcj4pWzNdKTtcbiAgICAgICAgY29uZmlnID0geyBoUG9pbnQ6IHRydWUsIHNsUG9pbnQ6IHRydWUsIGhleDogdHJ1ZSwgYVBvaW50OiB0cnVlLCBoc2w6IHRydWUsIGh1ZTogdHJ1ZSB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2hzbCc6XG4gICAgICAgIHRoaXMuaC5zZXQoKHZhbHVlIGFzIEFycmF5PG51bWJlcj4pWzBdKTtcbiAgICAgICAgdGhpcy5zLnNldCgodmFsdWUgYXMgQXJyYXk8bnVtYmVyPilbMV0pO1xuICAgICAgICB0aGlzLmwuc2V0KCh2YWx1ZSBhcyBBcnJheTxudW1iZXI+KVsyXSk7XG4gICAgICAgIGNvbmZpZyA9IHsgaFBvaW50OiB0cnVlLCBzbFBvaW50OiB0cnVlLCBoZXg6IHRydWUsIGFQb2ludDogdHJ1ZSwgcmdiOiB0cnVlLCBodWU6IHRydWUgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdoc2xhJzpcbiAgICAgICAgdGhpcy5oLnNldCgodmFsdWUgYXMgQXJyYXk8bnVtYmVyPilbMF0pO1xuICAgICAgICB0aGlzLnMuc2V0KCh2YWx1ZSBhcyBBcnJheTxudW1iZXI+KVsxXSk7XG4gICAgICAgIHRoaXMubC5zZXQoKHZhbHVlIGFzIEFycmF5PG51bWJlcj4pWzJdKTtcbiAgICAgICAgdGhpcy5hLnNldCgodmFsdWUgYXMgQXJyYXk8bnVtYmVyPilbM10pO1xuICAgICAgICBjb25maWcgPSB7IGhQb2ludDogdHJ1ZSwgc2xQb2ludDogdHJ1ZSwgaGV4OiB0cnVlLCBhUG9pbnQ6IHRydWUsIHJnYjogdHJ1ZSwgaHVlOiB0cnVlIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaGV4Jzoge1xuICAgICAgICBjb25zdCByZ2JhID0gY3NzQ29sb3JUb1JnYmEodmFsdWUgYXMgc3RyaW5nKSB8fCBbdGhpcy5yKCksIHRoaXMuZygpLCB0aGlzLmIoKSwgdGhpcy5hKCldO1xuXG4gICAgICAgIHRoaXMuci5zZXQocmdiYVswXSk7XG4gICAgICAgIHRoaXMuZy5zZXQocmdiYVsxXSk7XG4gICAgICAgIHRoaXMuYi5zZXQocmdiYVsyXSk7XG4gICAgICAgIHRoaXMuYS5zZXQocmdiYVszXSk7XG4gICAgICAgIGNvbmZpZyA9IHsgaFBvaW50OiB0cnVlLCBzbFBvaW50OiB0cnVlLCBhUG9pbnQ6IHRydWUsIGhzbDogdHJ1ZSwgaHVlOiB0cnVlIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnY29sb3InOiB7XG4gICAgICAgIGNvbnN0IHJnYmEgPSAocGFyc2VDb2xvcih2YWx1ZSBhcyBzdHJpbmcgfCBBcnJheTxudW1iZXI+LCAncmdiYScpIHx8IFswLCAwLCAwLCAxXSkgYXMgQXJyYXk8bnVtYmVyPjtcblxuICAgICAgICB0aGlzLnIuc2V0KHJnYmFbMF0pO1xuICAgICAgICB0aGlzLmcuc2V0KHJnYmFbMV0pO1xuICAgICAgICB0aGlzLmIuc2V0KHJnYmFbMl0pO1xuICAgICAgICB0aGlzLmEuc2V0KHJnYmFbM10pO1xuICAgICAgICBjb25maWcgPSB7IGhQb2ludDogdHJ1ZSwgc2xQb2ludDogdHJ1ZSwgaGV4OiB0cnVlLCBhUG9pbnQ6IHRydWUsIGhzbDogdHJ1ZSwgaHVlOiB0cnVlIH07XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdhbHBoYSc6XG4gICAgICAgIHRoaXMuYS5zZXQodmFsdWUgYXMgbnVtYmVyKTtcbiAgICAgICAgdGhpcy51cGRhdGVIZXgodGhpcy5yKCksIHRoaXMuZygpLCB0aGlzLmIoKSwgdGhpcy5hKCkpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgdGhpcy51cGRhdGVWYWx1ZXNBbmRQb2ludGVyKGNvbmZpZyk7XG4gICAgc2V0KHRoaXMucHJldmlld0VsKCk/Lm5hdGl2ZUVsZW1lbnQuc3R5bGUsICdiYWNrZ3JvdW5kQ29sb3InLCB0aGlzLmEoKSA9PT0gMSA/IGByZ2IoJHt0aGlzLnIoKX0sJHt0aGlzLmcoKX0sJHt0aGlzLmIoKX0pYCA6IGByZ2JhKCR7dGhpcy5yKCl9LCR7dGhpcy5nKCl9LCR7dGhpcy5iKCl9LCR7dGhpcy5hKCl9KWApO1xuICAgIGlmICghc2lsZW50KSB7XG4gICAgICB0aGlzLm91dENvbG9yQ2hhbmdlLmVtaXQodGhpcy5oZXgoKSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJGb2N1c0FuZEJsdXIoZXZlbnQ6IElGb2N1c0FuZEJsdXJFdmVudCwga2V5OiBzdHJpbmcpIHtcbiAgICB0aGlzLmZvY3VzLnNldChldmVudC5uYW1lID09PSAnYmx1cicgPyB1bmRlZmluZWQgOiBrZXkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJWYWx1ZUNoYW5nZShldmVudDogc3RyaW5nIHwgbnVtYmVyLCBrZXk6IHN0cmluZykge1xuICAgIHRoaXMuaGFuZGxlckNvbG9yQ2hhbmdlKGtleSwgZXZlbnQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5vbkRlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95LmNvbXBsZXRlKCk7XG4gIH1cblxufSIsIjxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gIFtzdHlsZS53aWR0aC5weF09XCJvcHRpb25zKCkuc2xCYXJTaXplWzBdXCI+XG4gIDxkaXY+XG4gICAgPGNhbnZhcyAjc2xFbFxuICAgICAgY2xhc3M9XCJyb3VuZGVkLXRsLVs0cHhdIHJvdW5kZWQtdHItWzRweF0gbGlicy11aS1jb2xvci1waWNrZXItYmFja2dyb3VuZC10cmFuc3BhcmVudFwiPjwvY2FudmFzPlxuICAgIDxkaXYgI3NsUG9pbnRlckVsXG4gICAgICBjbGFzcz1cImxpYnMtdWktY29sb3ItcGlja2VyLWRvdFwiPjwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInJlbGF0aXZlXCI+XG4gICAgPGNhbnZhcyAjaHVlRWxcbiAgICAgIGNsYXNzPVwibGlicy11aS1jb2xvci1waWNrZXItYmFja2dyb3VuZC10cmFuc3BhcmVudFwiXG4gICAgICBbY2xhc3Mucm91bmRlZC1ibC1bNHB4XV09XCIhb3B0aW9ucygpLnNob3dBbHBoYVwiXG4gICAgICBbY2xhc3Mucm91bmRlZC1ici1bNHB4XV09XCIhb3B0aW9ucygpLnNob3dBbHBoYVwiPjwvY2FudmFzPlxuICAgIDxkaXYgI2h1ZVBvaW50ZXJFbFxuICAgICAgY2xhc3M9XCJsaWJzLXVpLWNvbG9yLXBpY2tlci1kb3RcIj48L2Rpdj5cbiAgPC9kaXY+XG4gIEBpZiAob3B0aW9ucygpLnNob3dBbHBoYSkge1xuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiPlxuICAgICAgPGNhbnZhcyAjYWxwaGFFbFxuICAgICAgICBjbGFzcz1cInJvdW5kZWQtYmwtWzRweF0gcm91bmRlZC1ici1bNHB4XSBsaWJzLXVpLWNvbG9yLXBpY2tlci1iYWNrZ3JvdW5kLXRyYW5zcGFyZW50XCI+XG4gICAgICA8L2NhbnZhcz5cbiAgICAgIDxkaXYgI2FscGhhUG9pbnRlckVsXG4gICAgICAgIGNsYXNzPVwibGlicy11aS1jb2xvci1waWNrZXItZG90XCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gIH1cbiAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtZW5kXCI+XG4gICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG1yLVsxNnB4XVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImxpYnMtdWktY29sb3ItcGlja2VyLWJhY2tncm91bmQtdHJhbnNwYXJlbnQgcm91bmRlZC1bNHB4XVwiPlxuICAgICAgICA8ZGl2ICNwcmV2aWV3RWxcbiAgICAgICAgICBjbGFzcz1cInctWzMycHhdIGgtWzMycHhdIHJvdW5kZWQtWzRweF0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgIChjbGljayk9XCJoYW5kbGVyQ29weUNvbG9yKCRldmVudClcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIEBpZiAob3B0aW9ucygpLnNob3dIZXgpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtci1bMTJweF1cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDdyIHRleHQtWyM2YTczODNdXCI+SEVYPC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidy1bODhweF1cIj5cbiAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWlucHV0cy1pbnB1dCBbKHZhbHVlKV09XCJoZXhcIlxuICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCIndGV4dC1jZW50ZXIgIXAtMCdcIlxuICAgICAgICAgICAgKG91dENoYW5nZSk9XCJoYW5kbGVyVmFsdWVDaGFuZ2UoJGV2ZW50LCAnaGV4JylcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICA8ZGl2PlxuICAgICAgQGlmIChvcHRpb25zKCkuc2hvd0hzbCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDdyIHRleHQtWyM2YTczODNdXCI+SDwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LVs1NnB4XVwiPlxuICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWlucHV0cy1pbnB1dCBbKHZhbHVlKV09XCJoXCJcbiAgICAgICAgICAgICAgICBbZGF0YVR5cGVdPVwiJ2ludCdcIlxuICAgICAgICAgICAgICAgIFttaW5WYWx1ZU51bWJlcl09XCIwXCJcbiAgICAgICAgICAgICAgICBbbWF4VmFsdWVOdW1iZXJdPVwiMzYwXCJcbiAgICAgICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cIid0ZXh0LWNlbnRlciAhcC0wICFyb3VuZGVkLXRyLW5vbmUgIXJvdW5kZWQtYnItbm9uZSAnICsgKGZvY3VzKCkgPT09ICdzJyA/ICchYm9yZGVyLXItdHJhbnNwYXJlbnQnIDogJycpXCJcbiAgICAgICAgICAgICAgICAob3V0Rm9jdXNBbmRCbHVyRXZlbnQpPVwiaGFuZGxlckZvY3VzQW5kQmx1cigkZXZlbnQsICdoJylcIlxuICAgICAgICAgICAgICAgIChvdXRDaGFuZ2UpPVwiaGFuZGxlclZhbHVlQ2hhbmdlKCRldmVudCwgJ2gnKVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGlicy11aS1mb250LWg3ciB0ZXh0LVsjNmE3MzgzXVwiPlM8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1bNTZweF1cIj5cbiAgICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1pbnB1dHMtaW5wdXQgWyh2YWx1ZSldPVwic1wiXG4gICAgICAgICAgICAgICAgW2RhdGFUeXBlXT1cIidpbnQnXCJcbiAgICAgICAgICAgICAgICBbbWluVmFsdWVOdW1iZXJdPVwiMFwiXG4gICAgICAgICAgICAgICAgW21heFZhbHVlTnVtYmVyXT1cIjEwMFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCIndGV4dC1jZW50ZXIgIXAtMCAhcm91bmRlZC1ub25lICcgKyAoZm9jdXMoKSA9PT0gJ3MnID8gJycgOiAnIWJvcmRlci14LXRyYW5zcGFyZW50JylcIlxuICAgICAgICAgICAgICAgIChvdXRGb2N1c0FuZEJsdXJFdmVudCk9XCJoYW5kbGVyRm9jdXNBbmRCbHVyKCRldmVudCwgJ3MnKVwiXG4gICAgICAgICAgICAgICAgKG91dENoYW5nZSk9XCJoYW5kbGVyVmFsdWVDaGFuZ2UoJGV2ZW50LCAncycpXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDdyIHRleHQtWyM2YTczODNdXCI+TDwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LVs1NnB4XVwiPlxuICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWlucHV0cy1pbnB1dCBbKHZhbHVlKV09XCJsXCJcbiAgICAgICAgICAgICAgICBbZGF0YVR5cGVdPVwiJ2ludCdcIlxuICAgICAgICAgICAgICAgIFttaW5WYWx1ZU51bWJlcl09XCIwXCJcbiAgICAgICAgICAgICAgICBbbWF4VmFsdWVOdW1iZXJdPVwiMTAwXCJcbiAgICAgICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cIid0ZXh0LWNlbnRlciAhcC0wICFyb3VuZGVkLXRsLW5vbmUgIXJvdW5kZWQtYmwtbm9uZSAnICsgKGZvY3VzKCkgPT09ICdzJyA/ICchYm9yZGVyLWwtdHJhbnNwYXJlbnQnIDogJycpXCJcbiAgICAgICAgICAgICAgICAob3V0Rm9jdXNBbmRCbHVyRXZlbnQpPVwiaGFuZGxlckZvY3VzQW5kQmx1cigkZXZlbnQsICdsJylcIlxuICAgICAgICAgICAgICAgIChvdXRDaGFuZ2UpPVwiaGFuZGxlclZhbHVlQ2hhbmdlKCRldmVudCwgJ2wnKVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICBAaWYgKG9wdGlvbnMoKS5zaG93UmdiKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpYnMtdWktZm9udC1oN3IgdGV4dC1bIzZhNzM4M11cIj5SPC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctWzU2cHhdXCI+XG4gICAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtaW5wdXRzLWlucHV0IFsodmFsdWUpXT1cInJcIlxuICAgICAgICAgICAgICAgIFtkYXRhVHlwZV09XCInaW50J1wiXG4gICAgICAgICAgICAgICAgW21pblZhbHVlTnVtYmVyXT1cIjBcIlxuICAgICAgICAgICAgICAgIFttYXhWYWx1ZU51bWJlcl09XCIyNTVcIlxuICAgICAgICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiJ3RleHQtY2VudGVyICFwLTAgIXJvdW5kZWQtdHItbm9uZSAhcm91bmRlZC1ici1ub25lICcgKyAoZm9jdXMoKSA9PT0gJ2cnID8gJyFib3JkZXItci10cmFuc3BhcmVudCcgOiAnJylcIlxuICAgICAgICAgICAgICAgIChvdXRGb2N1c0FuZEJsdXJFdmVudCk9XCJoYW5kbGVyRm9jdXNBbmRCbHVyKCRldmVudCwgJ3InKVwiXG4gICAgICAgICAgICAgICAgKG91dENoYW5nZSk9XCJoYW5kbGVyVmFsdWVDaGFuZ2UoJGV2ZW50LCAncicpXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDdyIHRleHQtWyM2YTczODNdXCI+Rzwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LVs1NnB4XVwiPlxuICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWlucHV0cy1pbnB1dCBbKHZhbHVlKV09XCJnXCJcbiAgICAgICAgICAgICAgICBbZGF0YVR5cGVdPVwiJ2ludCdcIlxuICAgICAgICAgICAgICAgIFttaW5WYWx1ZU51bWJlcl09XCIwXCJcbiAgICAgICAgICAgICAgICBbbWF4VmFsdWVOdW1iZXJdPVwiMjU1XCJcbiAgICAgICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cIid0ZXh0LWNlbnRlciAhcC0wICFyb3VuZGVkLW5vbmUgJyArIChmb2N1cygpID09PSAnZycgPyAnJyA6ICchYm9yZGVyLXgtdHJhbnNwYXJlbnQnKVwiXG4gICAgICAgICAgICAgICAgKG91dEZvY3VzQW5kQmx1ckV2ZW50KT1cImhhbmRsZXJGb2N1c0FuZEJsdXIoJGV2ZW50LCAnZycpXCJcbiAgICAgICAgICAgICAgICAob3V0Q2hhbmdlKT1cImhhbmRsZXJWYWx1ZUNoYW5nZSgkZXZlbnQsICdnJylcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpYnMtdWktZm9udC1oN3IgdGV4dC1bIzZhNzM4M11cIj5CPC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctWzU2cHhdXCI+XG4gICAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtaW5wdXRzLWlucHV0IFsodmFsdWUpXT1cImJcIlxuICAgICAgICAgICAgICAgIFtkYXRhVHlwZV09XCInaW50J1wiXG4gICAgICAgICAgICAgICAgW21pblZhbHVlTnVtYmVyXT1cIjBcIlxuICAgICAgICAgICAgICAgIFttYXhWYWx1ZU51bWJlcl09XCIyNTVcIlxuICAgICAgICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiJ3RleHQtY2VudGVyICFwLTAgIXJvdW5kZWQtdGwtbm9uZSAhcm91bmRlZC1ibC1ub25lICcgKyAoZm9jdXMoKSA9PT0gJ2cnID8gJyFib3JkZXItbC10cmFuc3BhcmVudCcgOiAnJylcIlxuICAgICAgICAgICAgICAgIChvdXRGb2N1c0FuZEJsdXJFdmVudCk9XCJoYW5kbGVyRm9jdXNBbmRCbHVyKCRldmVudCwgJ2InKVwiXG4gICAgICAgICAgICAgICAgKG91dENoYW5nZSk9XCJoYW5kbGVyVmFsdWVDaGFuZ2UoJGV2ZW50LCAnYicpXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
323
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9jb2xvci1waWNrZXIvc3JjL2NvbG9yLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvY29sb3ItcGlja2VyL3NyYy9jb2xvci1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQix1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFjLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25LLE9BQU8sRUFBc0Isb0NBQW9DLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFjMUksTUFBTSxPQUFPLG9DQUFvQztJQUUvQyxtQkFBbUI7SUFDVCxPQUFPLEdBQUcsTUFBTSxDQUFpQixjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELEtBQUssR0FBRyxNQUFNLENBQXFCLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLEdBQUcsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7SUFDekIs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QUNoQyxDQUFDO0lBRVMsaUJBQWlCO1FBQ3pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO3dHQXRXVSxvQ0FBb0M7NEZBQXBDLG9DQUFvQyxreENDckJqRCxxL01BOElBLGtjRDdISSxvQ0FBb0Msb2dEQUNwQyxvQ0FBb0M7OzRGQUczQixvQ0FBb0M7a0JBWmhELFNBQVM7K0JBRUUsaUNBQWlDLGNBRy9CLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDUCxvQ0FBb0M7d0JBQ3BDLG9DQUFvQztxQkFDckMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBlZmZlY3QsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBvdXRwdXQsIHNpZ25hbCwgdmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElGb2N1c0FuZEJsdXJFdmVudCwgTGlic1VpQ29tcG9uZW50c0lucHV0c0lucHV0Q29tcG9uZW50IH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtaW5wdXRzLWlucHV0XCI7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzSW5wdXRzVmFsaWRDb21wb25lbnQgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1pbnB1dHMtdmFsaWRcIjtcbmltcG9ydCB7IExpYnNVaU5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tIFwiQGxpYnMtdWkvc2VydmljZXMtbm90aWZpY2F0aW9uXCI7XG5pbXBvcnQgeyBnZXREcmFnRXZlbnRCeUVsZW1lbnQsIHNldCB9IGZyb20gXCJAbGlicy11aS91dGlsc1wiO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBJQ2FudmFzSGVscGVyLCBJQ29uZmlnVXBkYXRlLCBJT3V0cHV0Q29sb3JDaGFuZ2VNdXRpbFR5cGUsIElQaWNrZXJDdXN0b21PcHRpb25zLCBJUGlja2VyT3B0aW9ucyB9IGZyb20gXCIuL2ludGVyZmFjZXMvcGlja2VyLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgY3NzQ29sb3JUb1JnYmEsIGRlZmF1bHRIZWxwZXIsIGhzbFRvUmdiLCBsaW1pdCwgb3B0aW9uc0RlZmF1bHQsIHBhcnNlQ29sb3IsIHJnYlRvSGV4LCByZ2JUb0hzbCwgcmdiVG9Ic3YgfSBmcm9tIFwiLi91dGlscy9waWNrZXJcIjtcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLWNvbG9yX3BpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2xvci1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vY29sb3ItcGlja2VyLmNvbXBvbmVudC5zY3NzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBMaWJzVWlDb21wb25lbnRzSW5wdXRzSW5wdXRDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c0lucHV0c1ZhbGlkQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0NvbG9yUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LE9uRGVzdHJveSB7XG5cbiAgLy8gI3JlZ2lvbiBQUk9QRVJUWVxuICBwcm90ZWN0ZWQgb3B0aW9ucyA9IHNpZ25hbDxJUGlja2VyT3B0aW9ucz4ob3B0aW9uc0RlZmF1bHQoKSk7XG4gIHByb3RlY3RlZCBmb2N1cyA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByb3RlY3RlZCBoZXggPSBzaWduYWw8c3RyaW5nPignJyk7XG4gIHByb3RlY3RlZCBzID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCBoID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCBsID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCByID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCBnID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCBiID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCBhID0gc2lnbmFsPG51bWJlcj4oMSk7XG5cbiAgcHJpdmF0ZSBzbEJhckhlbHBlciA9IHNpZ25hbDxJQ2FudmFzSGVscGVyPihkZWZhdWx0SGVscGVyKCkpO1xuICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2UgPSBpbmplY3QoTGlic1VpTm90aWZpY2F0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvLyAjcmVnaW9uIElOUFVUXG4gIHJlYWRvbmx5IGN1c3RvbU9wdGlvbnMgPSBpbnB1dDxJUGlja2VyQ3VzdG9tT3B0aW9ucz4oKTtcbiAgcmVhZG9ubHkgbm9FbWl0RXZlbnRDb2xvcldoZW5Jbml0Q29tcG9uZW50ID0gaW5wdXQ8Ym9vbGVhbixib29sZWFuIHwgdW5kZWZpbmVkPih0cnVlLCB7dHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IHRydWV9KTtcblxuICAvLyAjcmVnaW9uIE9VVFBVVFxuICByZWFkb25seSBvdXRDb2xvckNoYW5nZSA9IG91dHB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IG91dENvbG9yQ2hhbmdlTXV0aWxUeXBlID0gb3V0cHV0PElPdXRwdXRDb2xvckNoYW5nZU11dGlsVHlwZT4oKTtcblxuICAvKiBWSUVXIENISUxEICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaHVlRWwgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2h1ZUVsJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaHVlUG9pbnRlckVsID0gdmlld0NoaWxkPEVsZW1lbnRSZWY+KCdodWVQb2ludGVyRWwnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzbEVsID0gdmlld0NoaWxkPEVsZW1lbnRSZWY+KCdzbEVsJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2xQb2ludGVyRWwgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ3NsUG9pbnRlckVsJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWxwaGFFbCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPignYWxwaGFFbCcpO1xuICBwcml2YXRlIHJlYWRvbmx5IGFscGhhUG9pbnRlckVsID0gdmlld0NoaWxkPEVsZW1lbnRSZWY+KCdhbHBoYVBvaW50ZXJFbCcpO1xuICBwcml2YXRlIHJlYWRvbmx5IHByZXZpZXdFbCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPigncHJldmlld0VsJyk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGN0eCA9IHRoaXMuYWxwaGFFbCgpPy5uYXRpdmVFbGVtZW50LmdldENvbnRleHQoJzJkJyk7XG5cbiAgICAgIGlmICghY3R4KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGN0eC5jbGVhclJlY3QoMCwgMCwgdGhpcy5vcHRpb25zKCkuYWxwaGFCYXJTaXplWzBdLCB0aGlzLm9wdGlvbnMoKS5hbHBoYUJhclNpemVbMV0pO1xuICAgICAgY29uc3QgZ3JhZGllbnQgPSBjdHguY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgMCwgdGhpcy5hbHBoYUVsKCk/Lm5hdGl2ZUVsZW1lbnQud2lkdGggLSAxLCAwKTtcblxuICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDAsIGBoc2xhKCR7dGhpcy5oKCl9LCR7dGhpcy5zKCl9JSwke3RoaXMubCgpfSUsIDApYCk7XG4gICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMSwgYGhzbGEoJHt0aGlzLmgoKX0sJHt0aGlzLnMoKX0lLCR7dGhpcy5sKCl9JSwgMSlgKTtcbiAgICAgIGN0eC5maWxsU3R5bGUgPSBncmFkaWVudDtcbiAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCB0aGlzLm9wdGlvbnMoKS5hbHBoYUJhclNpemVbMF0sIHRoaXMub3B0aW9ucygpLmFscGhhQmFyU2l6ZVsxXSk7XG4gICAgfSk7XG4gIH1cblxuICAvKiBGVU5DVElPTlMgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY3VzdG9tT3B0aW9ucygpKSB7XG4gICAgICB0aGlzLm9wdGlvbnMudXBkYXRlKG9wdGlvbnMgPT4gKHsgLi4ub3B0aW9ucywgLi4udGhpcy5jdXN0b21PcHRpb25zKCkgfSkpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldHVwSHVlQ2FudmFzKCk7XG4gICAgdGhpcy5zZXR1cFNsQ2FudmFzKCk7XG4gICAgdGhpcy5zZXR1cFNsQmFySGVscGVyKCk7XG4gICAgaWYgKHRoaXMub3B0aW9ucygpLnNob3dBbHBoYSkge1xuICAgICAgdGhpcy5zZXR1cEFscGhhQ2FudmFzKCk7XG4gICAgfVxuICAgIHRoaXMuaGFuZGxlckNvbG9yQ2hhbmdlKHRoaXMub3B0aW9ucygpLmZvcm1hdCwgdGhpcy5vcHRpb25zKCkuY29sb3IsIHRoaXMubm9FbWl0RXZlbnRDb2xvcldoZW5Jbml0Q29tcG9uZW50KCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEh1ZUNhbnZhcygpIHtcbiAgICBjb25zdCBjYW52YXMgPSB0aGlzLmh1ZUVsKCk/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBjYW52YXMud2lkdGggPSB0aGlzLm9wdGlvbnMoKS5odWVCYXJTaXplWzBdO1xuICAgIGNhbnZhcy5oZWlnaHQgPSB0aGlzLm9wdGlvbnMoKS5odWVCYXJTaXplWzFdO1xuICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIGNvbnN0IGdyYWRpZW50ID0gY3R4LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsIDAsIHRoaXMub3B0aW9ucygpLmh1ZUJhclNpemVbMF0sIDApO1xuICAgIGNvbnN0IHN0ZXAgPSAxIC8gMzYwO1xuXG4gICAgZm9yIChsZXQgaWkgPSAwOyBpaSA8PSAxOyBpaSArPSBzdGVwKSB7XG4gICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoaWksIGBoc2woJHszNjAgKiBpaX0sIDEwMCUsIDUwJSlgKTtcbiAgICB9XG4gICAgY3R4LmZpbGxTdHlsZSA9IGdyYWRpZW50O1xuICAgIGN0eC5maWxsUmVjdCgwLCAwLCB0aGlzLm9wdGlvbnMoKS5odWVCYXJTaXplWzBdLCB0aGlzLm9wdGlvbnMoKS5odWVCYXJTaXplWzFdKTtcblxuICAgIGdldERyYWdFdmVudEJ5RWxlbWVudCh7ZWxlbWVudE1vdXNlRG93bjpjYW52YXMsaXNTdGFydFdpdGhNb3VzZURvbndFdmVudDp0cnVlLG9uRGVzdHJveTp0aGlzLm9uRGVzdHJveX0pLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpPT57XG4gICAgICBjb25zdCB4ID0gbGltaXQoZXZlbnQuY2xpZW50WCAtIGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LCAwLCB0aGlzLm9wdGlvbnMoKS5odWVCYXJTaXplWzBdKTtcbiAgICAgIGNvbnN0IGh1ZSA9IE1hdGgucm91bmQoeCAqIDM2MCAvIHRoaXMub3B0aW9ucygpLmh1ZUJhclNpemVbMF0pO1xuICBcbiAgICAgIHNldCh0aGlzLmh1ZVBvaW50ZXJFbCgpPy5uYXRpdmVFbGVtZW50LnN0eWxlLCAnbGVmdCcsIGAke3ggLSA3fXB4YCk7XG4gICAgICB0aGlzLmguc2V0KGh1ZSk7XG4gICAgICB0aGlzLmhhbmRsZXJDb2xvckNoYW5nZSgnaCcsIGh1ZSk7XG4gICAgfSk7XG4gIFxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFNsQ2FudmFzKCkge1xuICAgIGNvbnN0IGNhbnZhcyA9IHRoaXMuc2xFbCgpPy5uYXRpdmVFbGVtZW50O1xuXG4gICAgY2FudmFzLndpZHRoID0gdGhpcy5vcHRpb25zKCkuc2xCYXJTaXplWzBdO1xuICAgIGNhbnZhcy5oZWlnaHQgPSB0aGlzLm9wdGlvbnMoKS5zbEJhclNpemVbMV07XG5cbiAgICBnZXREcmFnRXZlbnRCeUVsZW1lbnQoe2VsZW1lbnRNb3VzZURvd246Y2FudmFzLGlzU3RhcnRXaXRoTW91c2VEb253RXZlbnQ6dHJ1ZSxvbkRlc3Ryb3k6dGhpcy5vbkRlc3Ryb3l9KS5zdWJzY3JpYmUoKGV2ZW50KT0+e1xuICAgICAgY29uc3QgeCA9IGxpbWl0KGV2ZW50LmNsaWVudFggLSBjYW52YXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCwgMCwgdGhpcy5vcHRpb25zKCkuc2xCYXJTaXplWzBdIC0gMSk7XG4gICAgICBjb25zdCB5ID0gbGltaXQoZXZlbnQuY2xpZW50WSAtIGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AsIDAsIHRoaXMub3B0aW9ucygpLnNsQmFyU2l6ZVsxXSAtIDEpO1xuICAgICAgY29uc3QgYyA9IHRoaXMuc2xCYXJIZWxwZXIoKS5ncmFiQ29sb3IoeCwgeSk7XG5cbiAgICAgIHNldCh0aGlzLnNsUG9pbnRlckVsKCk/Lm5hdGl2ZUVsZW1lbnQuc3R5bGUsICdsZWZ0JywgYCR7eCAtIDd9cHhgKTtcbiAgICAgIHNldCh0aGlzLnNsUG9pbnRlckVsKCk/Lm5hdGl2ZUVsZW1lbnQuc3R5bGUsICd0b3AnLCBgJHt5IC0gN31weGApO1xuICAgICAgdGhpcy5oYW5kbGVyQ29sb3JDaGFuZ2UoJ3JnYicsIGMpO1xuICAgIH0pO1xuICAgIFxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFNsQmFySGVscGVyKCkge1xuICAgIGNvbnN0IGNhbnZhcyA9IHRoaXMuc2xFbCgpPy5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIGNvbnN0IHdpZHRoID0gK2NhbnZhcy53aWR0aDtcbiAgICBjb25zdCBoZWlnaHQgPSArY2FudmFzLmhlaWdodDtcbiAgICBjb25zdCB3aGl0ZUJsYWNrR3JhZGllbnQgPSBjdHguY3JlYXRlTGluZWFyR3JhZGllbnQoMSwgMSwgMSwgaGVpZ2h0IC0gMSk7XG5cbiAgICB3aGl0ZUJsYWNrR3JhZGllbnQuYWRkQ29sb3JTdG9wKDAsICd3aGl0ZScpO1xuICAgIHdoaXRlQmxhY2tHcmFkaWVudC5hZGRDb2xvclN0b3AoMSwgJ2JsYWNrJyk7XG5cbiAgICB0aGlzLnNsQmFySGVscGVyLnNldCh7XG4gICAgICBzZXRIdWU6IChodWU6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBjb2xvckdyYWRpZW50ID0gY3R4LmNyZWF0ZUxpbmVhckdyYWRpZW50KDEsIDAsIHdpZHRoIC0gMSwgMCk7XG4gICAgICAgIGNvbG9yR3JhZGllbnQuYWRkQ29sb3JTdG9wKDAsIGBoc2xhKCR7aHVlfSwgMTAwJSwgNTAlLCAwKWApO1xuICAgICAgICBjb2xvckdyYWRpZW50LmFkZENvbG9yU3RvcCgxLCBgaHNsYSgke2h1ZX0sIDEwMCUsIDUwJSwgMSlgKTtcblxuICAgICAgICBjdHguZmlsbFN0eWxlID0gd2hpdGVCbGFja0dyYWRpZW50O1xuICAgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgIGN0eC5maWxsU3R5bGUgPSBjb2xvckdyYWRpZW50O1xuICAgICAgICBjdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ211bHRpcGx5JztcbiAgICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICBjdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ3NvdXJjZS1vdmVyJztcbiAgICAgIH0sXG4gICAgICBncmFiQ29sb3I6ICh4OiBudW1iZXIsIHk6IG51bWJlcikgPT4gY3R4LmdldEltYWdlRGF0YSh4LCB5LCAxLCAxKS5kYXRhLFxuICAgICAgZmluZENvbG9yOiAocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBbLCBzLCB2XSA9IHJnYlRvSHN2KHIsIGcsIGIpO1xuICAgICAgICBjb25zdCB4ID0gcyAqIHdpZHRoO1xuICAgICAgICBjb25zdCB5ID0gaGVpZ2h0IC0gKHYgKiBoZWlnaHQpO1xuXG4gICAgICAgIHJldHVybiBbeCwgeV07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwQWxwaGFDYW52YXMoKSB7XG4gICAgY29uc3QgY2FudmFzID0gdGhpcy5hbHBoYUVsKCk/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBjYW52YXMud2lkdGggPSB0aGlzLm9wdGlvbnMoKS5hbHBoYUJhclNpemVbMF07XG4gICAgY2FudmFzLmhlaWdodCA9IHRoaXMub3B0aW9ucygpLmFscGhhQmFyU2l6ZVsxXTtcbiAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICBjb25zdCBncmFkaWVudCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCBjYW52YXMud2lkdGggLSAxLCAwKTtcblxuICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgwLCBgaHNsYSgke3RoaXMuaCgpfSwke3RoaXMucygpfSUsJHt0aGlzLmwoKX0lLCAwKWApO1xuICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgxLCBgaHNsYSgke3RoaXMuaCgpfSwke3RoaXMucygpfSUsJHt0aGlzLmwoKX0lLCAxKWApO1xuICAgIGN0eC5maWxsU3R5bGUgPSBncmFkaWVudDtcbiAgICBjdHguZmlsbFJlY3QoMCwgMCwgdGhpcy5vcHRpb25zKCkuYWxwaGFCYXJTaXplWzBdLCB0aGlzLm9wdGlvbnMoKS5hbHBoYUJhclNpemVbMV0pO1xuICAgIFxuICAgIGdldERyYWdFdmVudEJ5RWxlbWVudCh7ZWxlbWVudE1vdXNlRG93bjpjYW52YXMsaXNTdGFydFdpdGhNb3VzZURvbndFdmVudDp0cnVlLG9uRGVzdHJveTp0aGlzLm9uRGVzdHJveX0pLnN1YnNjcmliZSgoZXZlbnQpPT57XG4gICAgICBjb25zdCB4ID0gbGltaXQoZXZlbnQuY2xpZW50WCAtIGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LCAwLCB0aGlzLm9wdGlvbnMoKS5hbHBoYUJhclNpemVbMF0pO1xuICAgICAgY29uc3QgYWxwaGEgPSArKHggLyB0aGlzLm9wdGlvbnMoKS5hbHBoYUJhclNpemVbMF0pLnRvRml4ZWQoMik7XG5cbiAgICAgIHNldCh0aGlzLmFscGhhUG9pbnRlckVsKCk/Lm5hdGl2ZUVsZW1lbnQuc3R5bGUsICdsZWZ0JywgYCR7eCAtIDd9cHhgKTtcbiAgICAgIHRoaXMuaGFuZGxlckNvbG9yQ2hhbmdlKCdhbHBoYScsIGFscGhhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ29weUNvbG9yKGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHdpbmRvdy5uYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0aGlzLmhleCgpKTtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvd0NvbXBUeXBlVGV4dFN1Y2Nlc3MoJ2kxOG5fY29weV9zdWNjZXNzZnVsbHknKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUG9pbnRlckgoaDogbnVtYmVyKSB7XG4gICAgY29uc3QgeCA9IHRoaXMub3B0aW9ucygpLmh1ZUJhclNpemVbMF0gKiBoIC8gMzYwO1xuXG4gICAgc2V0KHRoaXMuaHVlUG9pbnRlckVsKCk/Lm5hdGl2ZUVsZW1lbnQuc3R5bGUsICdsZWZ0JywgYCR7eCAtIDd9cHhgKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUG9pbnRlclNsKGg6IG51bWJlciwgczogbnVtYmVyLCBsOiBudW1iZXIpIHtcbiAgICBjb25zdCBbciwgZywgYl0gPSBoc2xUb1JnYihoLCBzLCBsKTtcbiAgICBjb25zdCBbeCwgeV0gPSB0aGlzLnNsQmFySGVscGVyKCkuZmluZENvbG9yKHIsIGcsIGIpIGFzIEFycmF5PG51bWJlcj47XG5cbiAgICBpZiAoeCA+PSAwKSB7XG4gICAgICBzZXQodGhpcy5zbFBvaW50ZXJFbCgpPy5uYXRpdmVFbGVtZW50LnN0eWxlLCAnbGVmdCcsIGAke3ggLSA3fXB4YCk7XG4gICAgICBzZXQodGhpcy5zbFBvaW50ZXJFbCgpPy5uYXRpdmVFbGVtZW50LnN0eWxlLCAndG9wJywgYCR7eSAtIDd9cHhgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVBvaW50ZXJBKGE6IG51bWJlcikge1xuICAgIGlmICghdGhpcy5vcHRpb25zKCkuc2hvd0FscGhhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHggPSB0aGlzLm9wdGlvbnMoKS5hbHBoYUJhclNpemVbMF0gKiBhO1xuXG4gICAgc2V0KHRoaXMuYWxwaGFQb2ludGVyRWwoKT8ubmF0aXZlRWxlbWVudC5zdHlsZSwgJ2xlZnQnLCBgJHt4IC0gN31weGApO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVIZXgocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlciwgYTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucygpLnNob3dBbHBoYSkge1xuICAgICAgdGhpcy5oZXguc2V0KHBhcnNlQ29sb3IoW3IsIGcsIGIsIGFdLCAnaGV4Y3NzNCcpIGFzIHN0cmluZyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5oZXguc2V0KHJnYlRvSGV4KHIsIGcsIGIpKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUmdiKCkge1xuICAgIGNvbnN0IHJnYiA9IGhzbFRvUmdiKHRoaXMuaCgpLCB0aGlzLnMoKSwgdGhpcy5sKCkpO1xuXG4gICAgdGhpcy5yLnNldChyZ2JbMF0pO1xuICAgIHRoaXMuZy5zZXQocmdiWzFdKTtcbiAgICB0aGlzLmIuc2V0KHJnYlsyXSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUhzbCgpIHtcbiAgICBjb25zdCBoc2wgPSByZ2JUb0hzbCh0aGlzLnIoKSwgdGhpcy5nKCksIHRoaXMuYigpKTtcblxuICAgIHRoaXMuaC5zZXQoaHNsWzBdKTtcbiAgICB0aGlzLnMuc2V0KGhzbFsxXSk7XG4gICAgdGhpcy5sLnNldChoc2xbMl0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVWYWx1ZXNBbmRQb2ludGVyKGNvbmZpZzogSUNvbmZpZ1VwZGF0ZSkge1xuICAgIGlmIChjb25maWcucmdiKSB7XG4gICAgICB0aGlzLnVwZGF0ZVJnYigpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmhzbCkge1xuICAgICAgdGhpcy51cGRhdGVIc2woKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5odWUpIHtcbiAgICAgIHRoaXMuc2xCYXJIZWxwZXIoKS5zZXRIdWUodGhpcy5oKCkpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmhQb2ludCkge1xuICAgICAgdGhpcy51cGRhdGVQb2ludGVySCh0aGlzLmgoKSk7XG4gICAgfVxuICAgIGlmIChjb25maWcuc2xQb2ludCkge1xuICAgICAgdGhpcy51cGRhdGVQb2ludGVyU2wodGhpcy5oKCksIHRoaXMucygpLCB0aGlzLmwoKSk7XG4gICAgfVxuICAgIGlmIChjb25maWcuaGV4KSB7XG4gICAgICB0aGlzLnVwZGF0ZUhleCh0aGlzLnIoKSwgdGhpcy5nKCksIHRoaXMuYigpLCB0aGlzLmEoKSk7XG4gICAgfVxuICAgIGlmIChjb25maWcuYVBvaW50KSB7XG4gICAgICB0aGlzLnVwZGF0ZVBvaW50ZXJBKHRoaXMuYSgpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZXJDb2xvckNoYW5nZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IEFycmF5PG51bWJlcj4sIGlzQ2FsbEluaXRDb21wb25lbnQgPSBmYWxzZSkge1xuICAgIGxldCBjb25maWc6IElDb25maWdVcGRhdGUgPSB7fTtcblxuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICBjYXNlICdoJzpcbiAgICAgICAgY29uZmlnID0geyBoUG9pbnQ6IHRydWUsIGhleDogdHJ1ZSwgcmdiOiB0cnVlLCBodWU6IHRydWUgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzJzpcbiAgICAgICAgY29uZmlnID0geyBzbFBvaW50OiB0cnVlLCBoZXg6IHRydWUsIHJnYjogdHJ1ZSB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2wnOlxuICAgICAgICBjb25maWcgPSB7IHNsUG9pbnQ6IHRydWUsIGhleDogdHJ1ZSwgcmdiOiB0cnVlIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncic6XG4gICAgICAgIGNvbmZpZyA9IHsgaFBvaW50OiB0cnVlLCBzbFBvaW50OiB0cnVlLCBoZXg6IHRydWUsIGhzbDogdHJ1ZSwgaHVlOiB0cnVlIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZyc6XG4gICAgICAgIGNvbmZpZyA9IHsgaFBvaW50OiB0cnVlLCBzbFBvaW50OiB0cnVlLCBoZXg6IHRydWUsIGhzbDogdHJ1ZSwgaHVlOiB0cnVlIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYic6XG4gICAgICAgIGNvbmZpZyA9IHsgaFBvaW50OiB0cnVlLCBzbFBvaW50OiB0cnVlLCBoZXg6IHRydWUsIGhzbDogdHJ1ZSwgaHVlOiB0cnVlIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmdiJzpcbiAgICAgICAgdGhpcy5yLnNldCgodmFsdWUgYXMgQXJyYXk8bnVtYmVyPilbMF0pO1xuICAgICAgICB0aGlzLmcuc2V0KCh2YWx1ZSBhcyBBcnJheTxudW1iZXI+KVsxXSk7XG4gICAgICAgIHRoaXMuYi5zZXQoKHZhbHVlIGFzIEFycmF5PG51bWJlcj4pWzJdKTtcbiAgICAgICAgY29uZmlnID0geyBoZXg6IHRydWUsIGhzbDogdHJ1ZSB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JnYmEnOlxuICAgICAgICB0aGlzLnIuc2V0KCh2YWx1ZSBhcyBBcnJheTxudW1iZXI+KVswXSk7XG4gICAgICAgIHRoaXMuZy5zZXQoKHZhbHVlIGFzIEFycmF5PG51bWJlcj4pWzFdKTtcbiAgICAgICAgdGhpcy5iLnNldCgodmFsdWUgYXMgQXJyYXk8bnVtYmVyPilbMl0pO1xuICAgICAgICB0aGlzLmEuc2V0KCh2YWx1ZSBhcyBBcnJheTxudW1iZXI+KVszXSk7XG4gICAgICAgIGNvbmZpZyA9IHsgaFBvaW50OiB0cnVlLCBzbFBvaW50OiB0cnVlLCBoZXg6IHRydWUsIGFQb2ludDogdHJ1ZSwgaHNsOiB0cnVlLCBodWU6IHRydWUgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdoc2wnOlxuICAgICAgICB0aGlzLmguc2V0KCh2YWx1ZSBhcyBBcnJheTxudW1iZXI+KVswXSk7XG4gICAgICAgIHRoaXMucy5zZXQoKHZhbHVlIGFzIEFycmF5PG51bWJlcj4pWzFdKTtcbiAgICAgICAgdGhpcy5sLnNldCgodmFsdWUgYXMgQXJyYXk8bnVtYmVyPilbMl0pO1xuICAgICAgICBjb25maWcgPSB7IGhQb2ludDogdHJ1ZSwgc2xQb2ludDogdHJ1ZSwgaGV4OiB0cnVlLCBhUG9pbnQ6IHRydWUsIHJnYjogdHJ1ZSwgaHVlOiB0cnVlIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaHNsYSc6XG4gICAgICAgIHRoaXMuaC5zZXQoKHZhbHVlIGFzIEFycmF5PG51bWJlcj4pWzBdKTtcbiAgICAgICAgdGhpcy5zLnNldCgodmFsdWUgYXMgQXJyYXk8bnVtYmVyPilbMV0pO1xuICAgICAgICB0aGlzLmwuc2V0KCh2YWx1ZSBhcyBBcnJheTxudW1iZXI+KVsyXSk7XG4gICAgICAgIHRoaXMuYS5zZXQoKHZhbHVlIGFzIEFycmF5PG51bWJlcj4pWzNdKTtcbiAgICAgICAgY29uZmlnID0geyBoUG9pbnQ6IHRydWUsIHNsUG9pbnQ6IHRydWUsIGhleDogdHJ1ZSwgYVBvaW50OiB0cnVlLCByZ2I6IHRydWUsIGh1ZTogdHJ1ZSB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2hleCc6IHtcbiAgICAgICAgY29uc3QgcmdiYSA9IGNzc0NvbG9yVG9SZ2JhKHZhbHVlIGFzIHN0cmluZykgfHwgW3RoaXMucigpLCB0aGlzLmcoKSwgdGhpcy5iKCksIHRoaXMuYSgpXTtcblxuICAgICAgICB0aGlzLnIuc2V0KHJnYmFbMF0pO1xuICAgICAgICB0aGlzLmcuc2V0KHJnYmFbMV0pO1xuICAgICAgICB0aGlzLmIuc2V0KHJnYmFbMl0pO1xuICAgICAgICB0aGlzLmEuc2V0KHJnYmFbM10pO1xuICAgICAgICBjb25maWcgPSB7IGhQb2ludDogdHJ1ZSwgc2xQb2ludDogdHJ1ZSwgYVBvaW50OiB0cnVlLCBoc2w6IHRydWUsIGh1ZTogdHJ1ZSB9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2NvbG9yJzoge1xuICAgICAgICBjb25zdCByZ2JhID0gKHBhcnNlQ29sb3IodmFsdWUgYXMgc3RyaW5nIHwgQXJyYXk8bnVtYmVyPiwgJ3JnYmEnKSB8fCBbMCwgMCwgMCwgMV0pIGFzIEFycmF5PG51bWJlcj47XG5cbiAgICAgICAgdGhpcy5yLnNldChyZ2JhWzBdKTtcbiAgICAgICAgdGhpcy5nLnNldChyZ2JhWzFdKTtcbiAgICAgICAgdGhpcy5iLnNldChyZ2JhWzJdKTtcbiAgICAgICAgdGhpcy5hLnNldChyZ2JhWzNdKTtcbiAgICAgICAgY29uZmlnID0geyBoUG9pbnQ6IHRydWUsIHNsUG9pbnQ6IHRydWUsIGhleDogdHJ1ZSwgYVBvaW50OiB0cnVlLCBoc2w6IHRydWUsIGh1ZTogdHJ1ZSB9O1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnYWxwaGEnOlxuICAgICAgICB0aGlzLmEuc2V0KHZhbHVlIGFzIG51bWJlcik7XG4gICAgICAgIHRoaXMudXBkYXRlSGV4KHRoaXMucigpLCB0aGlzLmcoKSwgdGhpcy5iKCksIHRoaXMuYSgpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlVmFsdWVzQW5kUG9pbnRlcihjb25maWcpO1xuICAgIHNldCh0aGlzLnByZXZpZXdFbCgpPy5uYXRpdmVFbGVtZW50LnN0eWxlLCAnYmFja2dyb3VuZENvbG9yJywgdGhpcy5hKCkgPT09IDEgPyBgcmdiKCR7dGhpcy5yKCl9LCR7dGhpcy5nKCl9LCR7dGhpcy5iKCl9KWAgOiBgcmdiYSgke3RoaXMucigpfSwke3RoaXMuZygpfSwke3RoaXMuYigpfSwke3RoaXMuYSgpfSlgKTtcbiAgICBpZiAoIWlzQ2FsbEluaXRDb21wb25lbnQpIHtcbiAgICAgIHRoaXMub3V0Q29sb3JDaGFuZ2UuZW1pdCh0aGlzLmhleCgpKTtcbiAgICAgIHRoaXMub3V0Q29sb3JDaGFuZ2VNdXRpbFR5cGUuZW1pdCh7XG4gICAgICAgIGhleDp0aGlzLmhleCgpLFxuICAgICAgICByZ2JhOmByZ2JhKCR7dGhpcy5yKCl9LCR7dGhpcy5nKCl9LCR7dGhpcy5iKCl9LCR7dGhpcy5hKCl9KWAsXG4gICAgICAgIHJnYjpgcmdiKCR7dGhpcy5yKCl9LCR7dGhpcy5nKCl9LCR7dGhpcy5iKCl9KWAsXG4gICAgICAgIGhzbDpgaHNsKCR7dGhpcy5oKCl9LCR7dGhpcy5zKCl9LCR7dGhpcy5sKCl9KWAsXG4gICAgICAgIGhzbGE6YGhzbGEoJHt0aGlzLmgoKX0sJHt0aGlzLnMoKX0sJHt0aGlzLmwoKX0sJHt0aGlzLmEoKX0pYFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJGb2N1c0FuZEJsdXIoZXZlbnQ6IElGb2N1c0FuZEJsdXJFdmVudCwga2V5OiBzdHJpbmcpIHtcbiAgICB0aGlzLmZvY3VzLnNldChldmVudC5uYW1lID09PSAnYmx1cicgPyB1bmRlZmluZWQgOiBrZXkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJWYWx1ZUNoYW5nZShldmVudDogc3RyaW5nIHwgbnVtYmVyLCBrZXk6IHN0cmluZykge1xuICAgIHRoaXMuaGFuZGxlckNvbG9yQ2hhbmdlKGtleSwgZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJWYWx1ZUNoYW5nZUFscGhhSW5wdXQoZXZlbnQ6IHN0cmluZyB8IG51bWJlcikge1xuICAgIHRoaXMuaGFuZGxlckNvbG9yQ2hhbmdlKCdhbHBoYScsICggZXZlbnQgYXMgbnVtYmVyIHx8IDApLzEwMCk7XG4gICAgdGhpcy51cGRhdGVQb2ludGVyQSh0aGlzLmEoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlclJlc2V0Q29sb3IoKSB7XG4gICAgdGhpcy5oYW5kbGVyQ29sb3JDaGFuZ2UoJ2FscGhhJywwKTtcbiAgICB0aGlzLnVwZGF0ZVBvaW50ZXJBKHRoaXMuYSgpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub25EZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLm9uRGVzdHJveS5jb21wbGV0ZSgpO1xuICB9XG5cbn0iLCI8ZGl2PlxuICA8ZGl2IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgIFtzdHlsZS53aWR0aC5weF09XCJvcHRpb25zKCkuc2xCYXJTaXplWzBdXCI+XG4gICAgPGRpdj5cbiAgICAgIDxjYW52YXMgI3NsRWxcbiAgICAgICAgY2xhc3M9XCJyb3VuZGVkLXRsLVs0cHhdIHJvdW5kZWQtdHItWzRweF0gbGlicy11aS1jb2xvci1waWNrZXItYmFja2dyb3VuZC10cmFuc3BhcmVudFwiPjwvY2FudmFzPlxuICAgICAgPGRpdiAjc2xQb2ludGVyRWxcbiAgICAgICAgY2xhc3M9XCJsaWJzLXVpLWNvbG9yLXBpY2tlci1kb3RcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmVcIj5cbiAgICAgIDxjYW52YXMgI2h1ZUVsXG4gICAgICAgIGNsYXNzPVwibGlicy11aS1jb2xvci1waWNrZXItYmFja2dyb3VuZC10cmFuc3BhcmVudFwiXG4gICAgICAgIFtjbGFzcy5yb3VuZGVkLWJsLVs0cHhdXT1cIiFvcHRpb25zKCkuc2hvd0FscGhhXCJcbiAgICAgICAgW2NsYXNzLnJvdW5kZWQtYnItWzRweF1dPVwiIW9wdGlvbnMoKS5zaG93QWxwaGFcIj48L2NhbnZhcz5cbiAgICAgIDxkaXYgI2h1ZVBvaW50ZXJFbFxuICAgICAgICBjbGFzcz1cImxpYnMtdWktY29sb3ItcGlja2VyLWRvdFwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIEBpZiAob3B0aW9ucygpLnNob3dBbHBoYSkge1xuICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlXCI+XG4gICAgICAgIDxjYW52YXMgI2FscGhhRWxcbiAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtYmwtWzRweF0gcm91bmRlZC1ici1bNHB4XSBsaWJzLXVpLWNvbG9yLXBpY2tlci1iYWNrZ3JvdW5kLXRyYW5zcGFyZW50XCI+XG4gICAgICAgIDwvY2FudmFzPlxuICAgICAgICA8ZGl2ICNhbHBoYVBvaW50ZXJFbFxuICAgICAgICAgIGNsYXNzPVwibGlicy11aS1jb2xvci1waWNrZXItZG90XCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtZW5kXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbXItWzE2cHhdXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsaWJzLXVpLWNvbG9yLXBpY2tlci1iYWNrZ3JvdW5kLXRyYW5zcGFyZW50IHJvdW5kZWQtWzRweF1cIj5cbiAgICAgICAgICA8ZGl2ICNwcmV2aWV3RWxcbiAgICAgICAgICAgIGNsYXNzPVwidy1bMzJweF0gaC1bMzJweF0gcm91bmRlZC1bNHB4XSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlckNvcHlDb2xvcigkZXZlbnQpXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICBAaWYgKG9wdGlvbnMoKS5zaG93SGV4KSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtci1bMTJweF1cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpYnMtdWktZm9udC1oN3IgdGV4dC1bIzZhNzM4M11cIj5IRVg8L3NwYW4+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInctWzg4cHhdXCI+XG4gICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWlucHV0cy1pbnB1dCBbKHZhbHVlKV09XCJoZXhcIlxuICAgICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cIid0ZXh0LWNlbnRlciAhcC0wJ1wiXG4gICAgICAgICAgICAgIChvdXRDaGFuZ2UpPVwiaGFuZGxlclZhbHVlQ2hhbmdlKCRldmVudCwgJ2hleCcpXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICA8ZGl2PlxuICAgICAgICBAaWYgKG9wdGlvbnMoKS5zaG93SHNsKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpYnMtdWktZm9udC1oN3IgdGV4dC1bIzZhNzM4M11cIj5IPC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1bNTZweF1cIj5cbiAgICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWlucHV0cy1pbnB1dCBbKHZhbHVlKV09XCJoXCJcbiAgICAgICAgICAgICAgICAgIFtkYXRhVHlwZV09XCInaW50J1wiXG4gICAgICAgICAgICAgICAgICBbbWluVmFsdWVOdW1iZXJdPVwiMFwiXG4gICAgICAgICAgICAgICAgICBbbWF4VmFsdWVOdW1iZXJdPVwiMzYwXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiJ3RleHQtY2VudGVyICFwLTAgIXJvdW5kZWQtdHItbm9uZSAhcm91bmRlZC1ici1ub25lICcgKyAoZm9jdXMoKSA9PT0gJ3MnID8gJyFib3JkZXItci10cmFuc3BhcmVudCcgOiAnJylcIlxuICAgICAgICAgICAgICAgICAgKG91dEZvY3VzQW5kQmx1ckV2ZW50KT1cImhhbmRsZXJGb2N1c0FuZEJsdXIoJGV2ZW50LCAnaCcpXCJcbiAgICAgICAgICAgICAgICAgIChvdXRDaGFuZ2UpPVwiaGFuZGxlclZhbHVlQ2hhbmdlKCRldmVudCwgJ2gnKVwiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDdyIHRleHQtWyM2YTczODNdXCI+Uzwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctWzU2cHhdXCI+XG4gICAgICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1pbnB1dHMtaW5wdXQgWyh2YWx1ZSldPVwic1wiXG4gICAgICAgICAgICAgICAgICBbZGF0YVR5cGVdPVwiJ2ludCdcIlxuICAgICAgICAgICAgICAgICAgW21pblZhbHVlTnVtYmVyXT1cIjBcIlxuICAgICAgICAgICAgICAgICAgW21heFZhbHVlTnVtYmVyXT1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cIid0ZXh0LWNlbnRlciAhcC0wICFyb3VuZGVkLW5vbmUgJyArIChmb2N1cygpID09PSAncycgPyAnJyA6ICchYm9yZGVyLXgtdHJhbnNwYXJlbnQnKVwiXG4gICAgICAgICAgICAgICAgICAob3V0Rm9jdXNBbmRCbHVyRXZlbnQpPVwiaGFuZGxlckZvY3VzQW5kQmx1cigkZXZlbnQsICdzJylcIlxuICAgICAgICAgICAgICAgICAgKG91dENoYW5nZSk9XCJoYW5kbGVyVmFsdWVDaGFuZ2UoJGV2ZW50LCAncycpXCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpYnMtdWktZm9udC1oN3IgdGV4dC1bIzZhNzM4M11cIj5MPC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1bNTZweF1cIj5cbiAgICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWlucHV0cy1pbnB1dCBbKHZhbHVlKV09XCJsXCJcbiAgICAgICAgICAgICAgICAgIFtkYXRhVHlwZV09XCInaW50J1wiXG4gICAgICAgICAgICAgICAgICBbbWluVmFsdWVOdW1iZXJdPVwiMFwiXG4gICAgICAgICAgICAgICAgICBbbWF4VmFsdWVOdW1iZXJdPVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiJ3RleHQtY2VudGVyICFwLTAgIXJvdW5kZWQtdGwtbm9uZSAhcm91bmRlZC1ibC1ub25lICcgKyAoZm9jdXMoKSA9PT0gJ3MnID8gJyFib3JkZXItbC10cmFuc3BhcmVudCcgOiAnJylcIlxuICAgICAgICAgICAgICAgICAgKG91dEZvY3VzQW5kQmx1ckV2ZW50KT1cImhhbmRsZXJGb2N1c0FuZEJsdXIoJGV2ZW50LCAnbCcpXCJcbiAgICAgICAgICAgICAgICAgIChvdXRDaGFuZ2UpPVwiaGFuZGxlclZhbHVlQ2hhbmdlKCRldmVudCwgJ2wnKVwiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChvcHRpb25zKCkuc2hvd1JnYikge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDdyIHRleHQtWyM2YTczODNdXCI+Ujwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctWzU2cHhdXCI+XG4gICAgICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1pbnB1dHMtaW5wdXQgWyh2YWx1ZSldPVwiclwiXG4gICAgICAgICAgICAgICAgICBbZGF0YVR5cGVdPVwiJ2ludCdcIlxuICAgICAgICAgICAgICAgICAgW21pblZhbHVlTnVtYmVyXT1cIjBcIlxuICAgICAgICAgICAgICAgICAgW21heFZhbHVlTnVtYmVyXT1cIjI1NVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cIid0ZXh0LWNlbnRlciAhcC0wICFyb3VuZGVkLXRyLW5vbmUgIXJvdW5kZWQtYnItbm9uZSAnICsgKGZvY3VzKCkgPT09ICdnJyA/ICchYm9yZGVyLXItdHJhbnNwYXJlbnQnIDogJycpXCJcbiAgICAgICAgICAgICAgICAgIChvdXRGb2N1c0FuZEJsdXJFdmVudCk9XCJoYW5kbGVyRm9jdXNBbmRCbHVyKCRldmVudCwgJ3InKVwiXG4gICAgICAgICAgICAgICAgICAob3V0Q2hhbmdlKT1cImhhbmRsZXJWYWx1ZUNoYW5nZSgkZXZlbnQsICdyJylcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGlicy11aS1mb250LWg3ciB0ZXh0LVsjNmE3MzgzXVwiPkc8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LVs1NnB4XVwiPlxuICAgICAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtaW5wdXRzLWlucHV0IFsodmFsdWUpXT1cImdcIlxuICAgICAgICAgICAgICAgICAgW2RhdGFUeXBlXT1cIidpbnQnXCJcbiAgICAgICAgICAgICAgICAgIFttaW5WYWx1ZU51bWJlcl09XCIwXCJcbiAgICAgICAgICAgICAgICAgIFttYXhWYWx1ZU51bWJlcl09XCIyNTVcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCIndGV4dC1jZW50ZXIgIXAtMCAhcm91bmRlZC1ub25lICcgKyAoZm9jdXMoKSA9PT0gJ2cnID8gJycgOiAnIWJvcmRlci14LXRyYW5zcGFyZW50JylcIlxuICAgICAgICAgICAgICAgICAgKG91dEZvY3VzQW5kQmx1ckV2ZW50KT1cImhhbmRsZXJGb2N1c0FuZEJsdXIoJGV2ZW50LCAnZycpXCJcbiAgICAgICAgICAgICAgICAgIChvdXRDaGFuZ2UpPVwiaGFuZGxlclZhbHVlQ2hhbmdlKCRldmVudCwgJ2cnKVwiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDdyIHRleHQtWyM2YTczODNdXCI+Qjwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctWzU2cHhdXCI+XG4gICAgICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1pbnB1dHMtaW5wdXQgWyh2YWx1ZSldPVwiYlwiXG4gICAgICAgICAgICAgICAgICBbZGF0YVR5cGVdPVwiJ2ludCdcIlxuICAgICAgICAgICAgICAgICAgW21pblZhbHVlTnVtYmVyXT1cIjBcIlxuICAgICAgICAgICAgICAgICAgW21heFZhbHVlTnVtYmVyXT1cIjI1NVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cIid0ZXh0LWNlbnRlciAhcC0wICFyb3VuZGVkLXRsLW5vbmUgIXJvdW5kZWQtYmwtbm9uZSAnICsgKGZvY3VzKCkgPT09ICdnJyA/ICchYm9yZGVyLWwtdHJhbnNwYXJlbnQnIDogJycpXCJcbiAgICAgICAgICAgICAgICAgIChvdXRGb2N1c0FuZEJsdXJFdmVudCk9XCJoYW5kbGVyRm9jdXNBbmRCbHVyKCRldmVudCwgJ2InKVwiXG4gICAgICAgICAgICAgICAgICAob3V0Q2hhbmdlKT1cImhhbmRsZXJWYWx1ZUNoYW5nZSgkZXZlbnQsICdiJylcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG1sLVs4cHhdXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGlicy11aS1mb250LWg3ciB0ZXh0LVsjNmE3MzgzXVwiPkE8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LVs3OHB4XVwiPlxuICAgICAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtaW5wdXRzLXZhbGlkIFtpdGVtXT1cInthVmFsdWU6YSgpKjEwMH1cIlxuICAgICAgICAgICAgICAgICAgW2ZpZWxkTmFtZUJpbmRdPVwiJ2FWYWx1ZSdcIlxuICAgICAgICAgICAgICAgICAgW2RhdGFUeXBlXT1cIidpbnQnXCJcbiAgICAgICAgICAgICAgICAgIFttaW5WYWx1ZU51bWJlcl09XCIwXCJcbiAgICAgICAgICAgICAgICAgIFttYXhWYWx1ZU51bWJlcl09XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgW3VuaXRzUmlnaHRdPVwiW3tsYWJlbDonJSd9XVwiXG4gICAgICAgICAgICAgICAgICBbZW1pdEVtcHR5SW5EYXRhVHlwZU51bWJlcl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIChvdXRWYWx1ZUNoYW5nZSk9XCJoYW5kbGVyVmFsdWVDaGFuZ2VBbHBoYUlucHV0KCRldmVudClcIi8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9jb2xvci1waWNrZXIvc3JjL2ludGVyZmFjZXMvcGlja2VyLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJUGlja2VyT3B0aW9ucyB7XG4gIHNsQmFyU2l6ZTogQXJyYXk8bnVtYmVyPjtcbiAgaHVlQmFyU2l6ZTogQXJyYXk8bnVtYmVyPjtcbiAgYWxwaGFCYXJTaXplOiBBcnJheTxudW1iZXI+O1xuICBzaG93SHNsOiBib29sZWFuO1xuICBzaG93UmdiOiBib29sZWFuO1xuICBzaG93SGV4OiBib29sZWFuO1xuICBzaG93QWxwaGE6IGJvb2xlYW47XG4gIGNvbG9yOiBzdHJpbmcgfCBBcnJheTxudW1iZXI+O1xuICBmb3JtYXQ6ICdyZ2InIHwgJ3JnYmEnIHwgJ2hzbCcgfCAnaHNsYScgfCAnaGV4JyB8ICdjb2xvcic7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBpY2tlckN1c3RvbU9wdGlvbnMge1xuICBzbEJhclNpemU/OiBBcnJheTxudW1iZXI+O1xuICBodWVCYXJTaXplPzogQXJyYXk8bnVtYmVyPjtcbiAgYWxwaGFCYXJTaXplPzogQXJyYXk8bnVtYmVyPjtcbiAgc2hvd0hzbD86IGJvb2xlYW47XG4gIHNob3dSZ2I/OiBib29sZWFuO1xuICBzaG93SGV4PzogYm9vbGVhbjtcbiAgc2hvd0FscGhhPzogYm9vbGVhbjtcbiAgY29sb3I/OiBzdHJpbmcgfCBBcnJheTxudW1iZXI+O1xuICBmb3JtYXQ/OiAncmdiJyB8ICdyZ2JhJyB8ICdoc2wnIHwgJ2hzbGEnIHwgJ2hleCcgfCAnY29sb3InO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDYW52YXNIZWxwZXIge1xuICBzZXRIdWU6IChodWU6IG51bWJlcikgPT4gdm9pZDtcbiAgZ3JhYkNvbG9yOiAoeDogbnVtYmVyLCB5OiBudW1iZXIpID0+IEFycmF5PG51bWJlcj47XG4gIGZpbmRDb2xvcjogKHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIpID0+IEFycmF5PG51bWJlcj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBpY2tlclZhbHVlIHtcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29uZmlnVXBkYXRlIHtcbiAgaFBvaW50PzogYm9vbGVhbjtcbiAgc2xQb2ludD86IGJvb2xlYW47XG4gIGFQb2ludD86IGJvb2xlYW47XG4gIGhleD86IGJvb2xlYW47XG4gIHJnYj86IGJvb2xlYW47XG4gIGhzbD86IGJvb2xlYW47XG4gIGh1ZT86IGJvb2xlYW47XG59Il19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9jb2xvci1waWNrZXIvc3JjL2ludGVyZmFjZXMvcGlja2VyLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJUGlja2VyT3B0aW9ucyB7XG4gIHNsQmFyU2l6ZTogQXJyYXk8bnVtYmVyPjtcbiAgaHVlQmFyU2l6ZTogQXJyYXk8bnVtYmVyPjtcbiAgYWxwaGFCYXJTaXplOiBBcnJheTxudW1iZXI+O1xuICBzaG93SHNsOiBib29sZWFuO1xuICBzaG93UmdiOiBib29sZWFuO1xuICBzaG93SGV4OiBib29sZWFuO1xuICBzaG93QWxwaGE6IGJvb2xlYW47XG4gIGNvbG9yOiBzdHJpbmcgfCBBcnJheTxudW1iZXI+O1xuICBmb3JtYXQ6ICdyZ2InIHwgJ3JnYmEnIHwgJ2hzbCcgfCAnaHNsYScgfCAnaGV4JyB8ICdjb2xvcic7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBpY2tlckN1c3RvbU9wdGlvbnMge1xuICBzbEJhclNpemU/OiBBcnJheTxudW1iZXI+O1xuICBodWVCYXJTaXplPzogQXJyYXk8bnVtYmVyPjtcbiAgYWxwaGFCYXJTaXplPzogQXJyYXk8bnVtYmVyPjtcbiAgc2hvd0hzbD86IGJvb2xlYW47XG4gIHNob3dSZ2I/OiBib29sZWFuO1xuICBzaG93SGV4PzogYm9vbGVhbjtcbiAgc2hvd0FscGhhPzogYm9vbGVhbjtcbiAgY29sb3I/OiBzdHJpbmcgfCBBcnJheTxudW1iZXI+O1xuICBmb3JtYXQ/OiAncmdiJyB8ICdyZ2JhJyB8ICdoc2wnIHwgJ2hzbGEnIHwgJ2hleCcgfCAnY29sb3InO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDYW52YXNIZWxwZXIge1xuICBzZXRIdWU6IChodWU6IG51bWJlcikgPT4gdm9pZDtcbiAgZ3JhYkNvbG9yOiAoeDogbnVtYmVyLCB5OiBudW1iZXIpID0+IEFycmF5PG51bWJlcj47XG4gIGZpbmRDb2xvcjogKHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIpID0+IEFycmF5PG51bWJlcj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBpY2tlclZhbHVlIHtcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29uZmlnVXBkYXRlIHtcbiAgaFBvaW50PzogYm9vbGVhbjtcbiAgc2xQb2ludD86IGJvb2xlYW47XG4gIGFQb2ludD86IGJvb2xlYW47XG4gIGhleD86IGJvb2xlYW47XG4gIHJnYj86IGJvb2xlYW47XG4gIGhzbD86IGJvb2xlYW47XG4gIGh1ZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU91dHB1dENvbG9yQ2hhbmdlTXV0aWxUeXBlIHtcbiAgcmdiYTogc3RyaW5nO1xuICByZ2I6IHN0cmluZztcbiAgaGV4OiBzdHJpbmc7XG4gIGhzbDogc3RyaW5nO1xuICBoc2xhOiBzdHJpbmc7XG59Il19
@@ -8,9 +8,9 @@ export const optionsDefault = () => {
8
8
  showAlpha: false,
9
9
  color: '#ff0000',
10
10
  format: 'color',
11
- slBarSize: [316, 200],
12
- hueBarSize: [316, 20],
13
- alphaBarSize: [316, 20]
11
+ slBarSize: [420, 200],
12
+ hueBarSize: [420, 20],
13
+ alphaBarSize: [420, 20]
14
14
  };
15
15
  };
16
16
  export const limit = (value, min, max) => {
@@ -229,4 +229,4 @@ export const defaultHelper = () => {
229
229
  findColor: () => []
230
230
  };
231
231
  };
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2NvbG9yLXBpY2tlci9zcmMvdXRpbHMvcGlja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2pELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxX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YSxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUU7SUFDNUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNULE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQUFBRCxFQUFHLENBQUMsQ0FBQyxHQUFHLDRFQUE0RSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEgsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNyRyxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUU7SUFDNUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNULE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQUFBRCxFQUFHLENBQUMsQ0FBQyxHQUFHLDRFQUE0RSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEgsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FB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Q0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBRTtJQUMxRCxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFO0lBQzFELENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDckYsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5QixJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ2YsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ2QsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNwQixDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBRTVCLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVOLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFDRCxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ1osS0FBSyxDQUFDO1lBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFBQyxNQUFNO1FBQ2pELEtBQUssQ0FBQztZQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQUMsTUFBTTtRQUNuQyxLQUFLLENBQUM7WUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUFDLE1BQU07SUFDckMsQ0FBQztJQUNELENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFakIsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBbUIsRUFBRSxNQUFjLEVBQUUsRUFBRTtJQUNqRSxRQUFRLE1BQU0sRUFBRSxDQUFDO1FBQ2YsS0FBSyxLQUFLLENBQUM7UUFDWDtZQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUIsS0FBSyxRQUFRO1lBQ1gsT0FBTyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDbkQsS0FBSyxTQUFTO1lBQ1osT0FBTyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQy9ELEtBQUssTUFBTTtZQUNULE9BQU8sSUFBSSxDQUFDO1FBQ2QsS0FBSyxTQUFTO1lBQ1osT0FBTyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ2hFLEtBQUssS0FBSztZQUNSLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0MsS0FBSyxRQUFRO1lBQ1gsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTNDLE9BQU8sT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ25ELEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztZQUNmLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRS9DLE9BQU8sT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUN6RCxDQUFDO1FBQ0QsS0FBSyxNQUFNO1lBQ1QsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUs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QUFDLEVBQUU7UUFDbkIsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7S0FDcEIsQ0FBQztBQUNKLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldCwgaXNOaWwsIHNldCB9IGZyb20gXCJAbGlicy11aS91dGlsc1wiO1xuaW1wb3J0IHsgSVBpY2tlck9wdGlvbnMgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xuXG5leHBvcnQgY29uc3QgQ29sb3JOYW1lcyA9IHsgJ2FsaWNlYmx1ZSc6ICcjRjBGOEZGJywgJ2FudGlxdWV3aGl0ZSc6ICcjRkFFQkQ3JywgJ2FxdWEnOiAnIzAwRkZGRicsICdhcXVhbWFyaW5lJzogJyM3RkZGRDQnLCAnYXp1cmUnOiAnI0YwRkZGRicsICdiZWlnZSc6ICcjRjVGNURDJywgJ2Jpc3F1ZSc6ICcjRkZFNEM0JywgJ2JsYWNrJzogJyMwMDAwMDAnLCAnYmxhbmNoZWRhbG1vbmQnOiAnI0ZGRUJDRCcsICdibHVlJzogJyMwMDAwRkYnLCAnYmx1ZXZpb2xldCc6ICcjOEEyQkUyJywgJ2Jyb3duJzogJyNBNTJBMkEnLCAnYnVybHl3b29kJzogJyNERUI4ODcnLCAnY2FkZXRibHVlJzogJyM1RjlFQTAnLCAnY2hhcnRyZXVzZSc6ICcjN0ZGRjAwJywgJ2Nob2NvbGF0ZSc6ICcjRDI2OTFFJywgJ2NvcmFsJzogJyNGRjdGNTAnLCAnY29ybmZsb3dlcmJsdWUnOiAnIzY0OTVFRCcsICdjb3Juc2lsayc6ICcjRkZGOERDJywgJ2NyaW1zb24nOiAnI0RDMTQzQycsICdjeWFuJzogJyMwMEZGRkYnLCAnZGFya2JsdWUnOiAnIzAwMDA4QicsICdkYXJrY3lhbic6ICcjMDA4QjhCJywgJ2Rhcmtnb2xkZW5yb2QnOiAnI0I4ODYwQicsICdkYXJrZ3JheSc6ICcjQTlBOUE5JywgJ2RhcmtncmV5JzogJyNBOUE5QTknLCAnZGFya2dyZWVuJzogJyMwMDY0MDAnLCAnZGFya2toYWtpJzogJyNCREI3NkInLCAnZGFya21hZ2VudGEnOiAnIzhCMDA4QicsICdkYXJrb2xpdmVncmVlbic6ICcjNTU2QjJGJywgJ2RhcmtvcmFuZ2UnOiAnI0ZGOEMwMCcsICdkYXJrb3JjaGlkJzogJyM5OTMyQ0MnLCAnZGFya3JlZCc6ICcjOEIwMDAwJywgJ2RhcmtzYWxtb24nOiAnI0U5OTY3QScsICdkYXJrc2VhZ3JlZW4nOiAnIzhGQkM4RicsICdkYXJrc2xhdGVibHVlJzogJyM0ODNEOEInLCAnZGFya3NsYXRlZ3JheSc6ICcjMkY0RjRGJywgJ2RhcmtzbGF0ZWdyZXknOiAnIzJGNEY0RicsICdkYXJrdHVycXVvaXNlJzogJyMwMENFRDEnLCAnZGFya3Zpb2xldCc6ICcjOTQwMEQzJywgJ2RlZXBwaW5rJzogJyNGRjE0OTMnLCAnZGVlcHNreWJsdWUnOiAnIzAwQkZGRicsICdkaW1ncmF5JzogJyM2OTY5NjknLCAnZGltZ3JleSc6ICcjNjk2OTY5JywgJ2RvZGdlcmJsdWUnOiAnIzFFOTBGRicsICdmaXJlYnJpY2snOiAnI0IyMjIyMicsICdmbG9yYWx3aGl0ZSc6ICcjRkZGQUYwJywgJ2ZvcmVzdGdyZWVuJzogJyMyMjhCMjInLCAnZnVjaHNpYSc6ICcjRkYwMEZGJywgJ2dhaW5zYm9ybyc6ICcjRENEQ0RDJywgJ2dob3N0d2hpdGUnOiAnI0Y4RjhGRicsICdnb2xkJzogJyNGRkQ3MDAnLCAnZ29sZGVucm9kJzogJyNEQUE1MjAnLCAnZ3JheSc6ICcjODA4MDgwJywgJ2dyZXknOiAnIzgwODA4MCcsICdncmVlbic6ICcjMDA4MDAwJywgJ2dyZWVueWVsbG93JzogJyNBREZGMkYnLCAnaG9uZXlkZXcnOiAnI0YwRkZGMCcsICdob3RwaW5rJzogJyNGRjY5QjQnLCAnaW5kaWFucmVkICc6ICcjQ0Q1QzVDJywgJ2luZGlnbyAnOiAnIzRCMDA4MicsICdpdm9yeSc6ICcjRkZGRkYwJywgJ2toYWtpJzogJyNGMEU2OEMnLCAnbGF2ZW5kZXInOiAnI0U2RTZGQScsICdsYXZlbmRlcmJsdXNoJzogJyNGRkYwRjUnLCAnbGF3bmdyZWVuJzogJyM3Q0ZDMDAnLCAnbGVtb25jaGlmZm9uJzogJyNGRkZBQ0QnLCAnbGlnaHRibHVlJzogJyNBREQ4RTYnLCAnbGlnaHRjb3JhbCc6ICcjRjA4MDgwJywgJ2xpZ2h0Y3lhbic6ICcjRTBGRkZGJywgJ2xpZ2h0Z29sZGVucm9keWVsbG93JzogJyNGQUZBRDInLCAnbGlnaHRncmF5JzogJyNEM0QzRDMnLCAnbGlnaHRncmV5JzogJyNEM0QzRDMnLCAnbGlnaHRncmVlbic6ICcjOTBFRTkwJywgJ2xpZ2h0cGluayc6ICcjRkZCNkMxJywgJ2xpZ2h0c2FsbW9uJzogJyNGRkEwN0EnLCAnbGlnaHRzZWFncmVlbic6ICcjMjBCMkFBJywgJ2xpZ2h0c2t5Ymx1ZSc6ICcjODdDRUZBJywgJ2xpZ2h0c2xhdGVncmF5JzogJyM3Nzg4OTknLCAnbGlnaHRzbGF0ZWdyZXknOiAnIzc3ODg5OScsICdsaWdodHN0ZWVsYmx1ZSc6ICcjQjBDNERFJywgJ2xpZ2h0eWVsbG93JzogJyNGRkZGRTAnLCAnbGltZSc6ICcjMDBGRjAwJywgJ2xpbWVncmVlbic6ICcjMzJDRDMyJywgJ2xpbmVuJzogJyNGQUYwRTYnLCAnbWFnZW50YSc6ICcjRkYwMEZGJywgJ21hcm9vbic6ICcjODAwMDAwJywgJ21lZGl1bWFxdWFtYXJpbmUnOiAnIzY2Q0RBQScsICdtZWRpdW1ibHVlJzogJyMwMDAwQ0QnLCAnbWVkaXVtb3JjaGlkJzogJyNCQTU1RDMnLCAnbWVkaXVtcHVycGxlJzogJyM5MzcwREInLCAnbWVkaXVtc2VhZ3JlZW4nOiAnIzNDQjM3MScsICdtZWRpdW1zbGF0ZWJsdWUnOiAnIzdCNjhFRScsICdtZWRpdW1zcHJpbmdncmVlbic6ICcjMDBGQTlBJywgJ21lZGl1bXR1cnF1b2lzZSc6ICcjNDhEMUNDJywgJ21lZGl1bXZpb2xldHJlZCc6ICcjQzcxNTg1JywgJ21pZG5pZ2h0Ymx1ZSc6ICcjMTkxOTcwJywgJ21pbnRjcmVhbSc6ICcjRjVGRkZBJywgJ21pc3R5cm9zZSc6ICcjRkZFNEUxJywgJ21vY2Nhc2luJzogJyNGRkU0QjUnLCAnbmF2YWpvd2hpdGUnOiAnI0ZGREVBRCcsICduYXZ5JzogJyMwMDAwODAnLCAnb2xkbGFjZSc6ICcjRkRGNUU2JywgJ29saXZlJzogJyM4MDgwMDAnLCAnb2xpdmVkcmFiJzogJyM2QjhFMjMnLCAnb3JhbmdlJzogJyNGRkE1MDAnLCAnb3JhbmdlcmVkJzogJyNGRjQ1MDAnLCAnb3JjaGlkJzogJyNEQTcwRDYnLCAncGFsZWdvbGRlbnJvZCc6ICcjRUVFOEFBJywgJ3BhbGVncmVlbic6ICcjOThGQjk4JywgJ3BhbGV0dXJxdW9pc2UnOiAnI0FGRUVFRScsICdwYWxldmlvbGV0cmVkJzogJyNEQjcwOTMnLCAncGFwYXlhd2hpcCc6ICcjRkZFRkQ1JywgJ3BlYWNocHVmZic6ICcjRkZEQUI5JywgJ3BlcnUnOiAnI0NEODUzRicsICdwaW5rJzogJyNGRkMwQ0InLCAncGx1bSc6ICcjRERBMEREJywgJ3Bvd2RlcmJsdWUnOiAnI0IwRTBFNicsICdwdXJwbGUnOiAnIzgwMDA4MCcsICdyZWJlY2NhcHVycGxlJzogJyM2NjMzOTknLCAncmVkJzogJyNGRjAwMDAnLCAncm9zeWJyb3duJzogJyNCQzhGOEYnLCAncm95YWxibHVlJzogJyM0MTY5RTEnLCAnc2FkZGxlYnJvd24nOiAnIzhCNDUxMycsICdzYWxtb24nOiAnI0ZBODA3MicsICdzYW5keWJyb3duJzogJyNGNEE0NjAnLCAnc2VhZ3JlZW4nOiAnIzJFOEI1NycsICdzZWFzaGVsbCc6ICcjRkZGNUVFJywgJ3NpZW5uYSc6ICcjQTA1MjJEJywgJ3NpbHZlcic6ICcjQzBDMEMwJywgJ3NreWJsdWUnOiAnIzg3Q0VFQicsICdzbGF0ZWJsdWUnOiAnIzZBNUFDRCcsICdzbGF0ZWdyYXknOiAnIzcwODA5MCcsICdzbGF0ZWdyZXknOiAnIzcwODA5MCcsICdzbm93JzogJyNGRkZBRkEnLCAnc3ByaW5nZ3JlZW4nOiAnIzAwRkY3RicsICdzdGVlbGJsdWUnOiAnIzQ2ODJCNCcsICd0YW4nOiAnI0QyQjQ4QycsICd0ZWFsJzogJyMwMDgwODAnLCAndGhpc3RsZSc6ICcjRDhCRkQ4JywgJ3RvbWF0byc6ICcjRkY2MzQ3JywgJ3R1cnF1b2lzZSc6ICcjNDBFMEQwJywgJ3Zpb2xldCc6ICcjRUU4MkVFJywgJ3doZWF0JzogJyNGNURFQjMnLCAnd2hpdGUnOiAnI0ZGRkZGRicsICd3aGl0ZXNtb2tlJzogJyNGNUY1RjUnLCAneWVsbG93JzogJyNGRkZGMDAnLCAneWVsbG93Z3JlZW4nOiAnIzlBQ0QzMicgfTtcbmV4cG9ydCBjb25zdCBvcHRpb25zRGVmYXVsdCA9ICgpOiBJUGlja2VyT3B0aW9ucyA9PiB7XG4gIHJldHVybiB7XG4gICAgc2hvd0hzbDogZmFsc2UsXG4gICAgc2hvd1JnYjogdHJ1ZSxcbiAgICBzaG93SGV4OiB0cnVlLFxuICAgIHNob3dBbHBoYTogZmFsc2UsXG4gICAgY29sb3I6ICcjZmYwMDAwJyxcbiAgICBmb3JtYXQ6ICdjb2xvcicsXG4gICAgc2xCYXJTaXplOiBbMzE2LCAyMDBdLFxuICAgIGh1ZUJhclNpemU6IFszMTYsIDIwXSxcbiAgICBhbHBoYUJhclNpemU6IFszMTYsIDIwXVxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgbGltaXQgPSAodmFsdWU6IG51bWJlciB8IHN0cmluZywgbWluOiBudW1iZXIsIG1heDogbnVtYmVyKSA9PiB7XG4gIHZhbHVlID0gK3ZhbHVlO1xuICByZXR1cm4gaXNOYU4odmFsdWUpID8gbWluIDogKHZhbHVlIDwgbWluID8gbWluIDogKHZhbHVlID4gbWF4ID8gbWF4IDogdmFsdWUpKTtcbn1cblxuZXhwb3J0IGNvbnN0IGhzbFRvUmdiID0gKGg6IG51bWJlciwgczogbnVtYmVyLCBsOiBudW1iZXIpID0+IHtcbiAgbGV0IHIsIGcsIGI7XG4gIFtoLCBzLCBsXSA9IFtsaW1pdChoLCAwLCAzNjApIC8gMzYwLCBsaW1pdChzLCAwLCAxMDApIC8gMTAwLCBsaW1pdChsLCAwLCAxMDApIC8gMTAwXTtcblxuICBpZiAocyA9PSAwKSB7XG4gICAgciA9IGcgPSBiID0gbDsgLy8gYWNocm9tYXRpY1xuXG4gICAgcmV0dXJuIFtyICogMjU1LCBnICogMjU1LCBiICogMjU1XS5tYXAoTWF0aC5yb3VuZCk7XG4gIH1cbiAgY29uc3QgaHVlVG9SZ2IgPSAocDogbnVtYmVyLCBxOiBudW1iZXIsIHQ6IG51bWJlcikgPT4ge1xuICAgIGlmICh0IDwgMCkgdCArPSAxO1xuICAgIGlmICh0ID4gMSkgdCAtPSAxO1xuICAgIGlmICh0IDwgMSAvIDYpIHJldHVybiBwICsgKHEgLSBwKSAqIDYgKiB0O1xuICAgIGlmICh0IDwgMSAvIDIpIHJldHVybiBxO1xuICAgIGlmICh0IDwgMiAvIDMpIHJldHVybiBwICsgKHEgLSBwKSAqICgyIC8gMyAtIHQpICogNjtcblxuICAgIHJldHVybiBwO1xuICB9O1xuICBjb25zdCBxID0gbCA8IDAuNSA/IGwgKiAoMSArIHMpIDogbCArIHMgLSBsICogcztcbiAgY29uc3QgcCA9ICgyICogbCkgLSBxO1xuXG4gIHIgPSBodWVUb1JnYihwLCBxLCBoICsgKDEgLyAzKSk7XG4gIGcgPSBodWVUb1JnYihwLCBxLCBoKTtcbiAgYiA9IGh1ZVRvUmdiKHAsIHEsIGggLSAoMSAvIDMpKTtcblxuICByZXR1cm4gW3IgKiAyNTUsIGcgKiAyNTUsIGIgKiAyNTVdLm1hcChNYXRoLnJvdW5kKTtcbn1cblxuZXhwb3J0IGNvbnN0IGNzc0NvbG9yVG9SZ2JhID0gKGNvbG9yOiBzdHJpbmcpID0+IHtcbiAgaWYgKGNvbG9yKSB7XG4gICAgY29uc3QgY29sb3JCeU5hbWUgPSBnZXQoQ29sb3JOYW1lcywgY29sb3IudG9Mb3dlckNhc2UoKSk7XG4gICAgY29uc3QgWywgLCAsIHIsIGcsIGIsIGEsICwgcnIsIGdnLCBiYiwgYWFdID0gL15cXHMqIz8oKChbMC05QS1GXSkoWzAtOUEtRl0pKFswLTlBLUZdKShbMC05QS1GXSk/KXwoKFswLTlBLUZdezJ9KShbMC05QS1GXXsyfSkoWzAtOUEtRl17Mn0pKFswLTlBLUZdezJ9KT8pKVxccyokL2kuZXhlYyhjb2xvckJ5TmFtZSB8fCBjb2xvcikgfHwgW107XG4gICAgaWYgKCFpc05pbChyKSkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgcGFyc2VJbnQociArIHIsIDE2KSxcbiAgICAgICAgcGFyc2VJbnQoZyArIGcsIDE2KSxcbiAgICAgICAgcGFyc2VJbnQoYiArIGIsIDE2KSxcbiAgICAgICAgYSA/ICsoKHBhcnNlSW50KGEgKyBhLCAxNikpIC8gMjU1KS50b0ZpeGVkKDIpIDogMVxuICAgICAgXTtcbiAgICB9XG4gICAgaWYgKCFpc05pbChycikpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHBhcnNlSW50KHJyLCAxNiksXG4gICAgICAgIHBhcnNlSW50KGdnLCAxNiksXG4gICAgICAgIHBhcnNlSW50KGJiLCAxNiksXG4gICAgICAgIGFhID8gKygocGFyc2VJbnQoYWEsIDE2KSkgLyAyNTUpLnRvRml4ZWQoMikgOiAxXG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjb25zdCBwYXJzZUNvbG9yVG9SZ2JhID0gKGNvbG9yOiBzdHJpbmcgfCBBcnJheTxudW1iZXI+KSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNvbG9yKSkge1xuICAgIHJldHVybiBbXG4gICAgICBsaW1pdChjb2xvclswXSwgMCwgMjU1KSxcbiAgICAgIGxpbWl0KGNvbG9yWzFdLCAwLCAyNTUpLFxuICAgICAgbGltaXQoY29sb3JbMl0sIDAsIDI1NSksXG4gICAgICBsaW1pdChjb2xvclszXSA/PyAxLCAwLCAxKVxuICAgIF07XG4gIH1cbiAgY29uc3QgcGFyc2VkID0gY3NzQ29sb3JUb1JnYmEoY29sb3IpIHx8IGNzc1JnYmFUb1JnYmEoY29sb3IpO1xuXG4gIGlmIChwYXJzZWQgJiYgcGFyc2VkLmxlbmd0aCA9PT0gMykge1xuICAgIHBhcnNlZC5wdXNoKDEpO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlZDtcbn1cblxuZXhwb3J0IGNvbnN0IGNzc1JnYmFUb1JnYmEgPSAocmdiYTogc3RyaW5nKSA9PiB7XG4gIGlmIChyZ2JhKSB7XG4gICAgY29uc3QgW20sIHIsIGcsIGIsICwgYV0gPSAvXnJnYmE/XFwoKFxcZCspXFxzKltcXHMsXVxccyooXFxkKylcXHMqW1xccyxdXFxzKihcXGQrKShcXHMqW1xccyxdXFxzKihcXGQqKC5cXGQrKT8pKT9cXCkvaS5leGVjKHJnYmEpIHx8IFtdO1xuXG4gICAgcmV0dXJuIG0gPyBbbGltaXQociwgMCwgMjU1KSwgbGltaXQoZywgMCwgMjU1KSwgbGltaXQoYiwgMCwgMjU1KSwgbGltaXQoYSA/PyAxLCAwLCAxKV0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY29uc3QgY3NzSHNsYVRvSHNsYSA9IChoc2xhOiBzdHJpbmcpID0+IHtcbiAgaWYgKGhzbGEpIHtcbiAgICBjb25zdCBbbSwgaCwgcywgbCwgLCBhXSA9IC9eaHNsYT9cXCgoXFxkKylcXHMqW1xccyxdXFxzKihcXGQrKVxccypbXFxzLF1cXHMqKFxcZCspKFxccypbXFxzLF1cXHMqKFxcZCooLlxcZCspPykpP1xcKS9pLmV4ZWMoaHNsYSkgfHwgW107XG5cbiAgICByZXR1cm4gbSA/IFtsaW1pdChoLCAwLCAyNTUpLCBsaW1pdChzLCAwLCAyNTUpLCBsaW1pdChsLCAwLCAyNTUpLCBsaW1pdChhID8/IDEsIDAsIDEpXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjb25zdCBwYXJzZUNvbG9yVG9Ic2xhID0gKGNvbG9yOiBzdHJpbmcgfCBBcnJheTxudW1iZXI+KSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNvbG9yKSkge1xuICAgIHJldHVybiBbXG4gICAgICBsaW1pdChjb2xvclswXSwgMCwgMzYwKSxcbiAgICAgIGxpbWl0KGNvbG9yWzFdLCAwLCAxMDApLFxuICAgICAgbGltaXQoY29sb3JbMl0sIDAsIDEwMCksXG4gICAgICBsaW1pdChjb2xvclszXSA/PyAxLCAwLCAxKVxuICAgIF07XG4gIH1cbiAgY29uc3QgcGFyc2VkID0gY3NzSHNsYVRvSHNsYShjb2xvcik7XG5cbiAgaWYgKHBhcnNlZCAmJiBwYXJzZWQubGVuZ3RoID09PSAzKSB7XG4gICAgcGFyc2VkLnB1c2goMSk7XG4gIH1cblxuICByZXR1cm4gcGFyc2VkO1xufVxuXG5leHBvcnQgY29uc3QgcmdiVG9Ic2wgPSAocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcikgPT4ge1xuICBbciwgZywgYl0gPSBbbGltaXQociwgMCwgMjU1KSAvIDI1NSwgbGltaXQoZywgMCwgMjU1KSAvIDI1NSwgbGltaXQoYiwgMCwgMjU1KSAvIDI1NV07XG4gIGNvbnN0IG1heCA9IE1hdGgubWF4KHIsIGcsIGIpO1xuICBjb25zdCBtaW4gPSBNYXRoLm1pbihyLCBnLCBiKTtcbiAgbGV0IGgsIHMgPSAobWF4ICsgbWluKSAvIDI7XG4gIGNvbnN0IGwgPSAobWF4ICsgbWluKSAvIDI7XG5cbiAgaWYgKG1heCA9PSBtaW4pIHtcbiAgICBoID0gcyA9IDA7IC8vIGFjaHJvbWF0aWNcblxuICAgIHJldHVybiBbaCAqIDM2MCwgcyAqIDEwMCwgbCAqIDEwMF0ubWFwKE1hdGgucm91bmQpO1xuICB9XG4gIGNvbnN0IGQgPSBtYXggLSBtaW47XG5cbiAgcyA9IGwgPiAwLjUgPyBkIC8gKDIgLSBtYXggLSBtaW4pIDogZCAvIChtYXggKyBtaW4pO1xuICBzd2l0Y2ggKG1heCkge1xuICAgIGNhc2UgcjpcbiAgICAgIGggPSAoKGcgLSBiKSAvIGQpICsgKGcgPCBiID8gNiA6IDApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBnOlxuICAgICAgaCA9ICgoYiAtIHIpIC8gZCkgKyAyO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBiOlxuICAgICAgaCA9ICgociAtIGcpIC8gZCkgKyA0O1xuICAgICAgYnJlYWs7XG4gIH1cbiAgaCA9IChoIHx8IDApIC8gNjtcblxuICByZXR1cm4gW2ggKiAzNjAsIHMgKiAxMDAsIGwgKiAxMDBdLm1hcChNYXRoLnJvdW5kKTtcbn1cblxuZXhwb3J0IGNvbnN0IHJnYlRvSGV4ID0gKHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIpID0+IHtcbiAgW3IsIGcsIGJdID0gW2xpbWl0KHIsIDAsIDI1NSksIGxpbWl0KGcsIDAsIDI1NSksIGxpbWl0KGIsIDAsIDI1NSldO1xuXG4gIHJldHVybiBcIiNcIiArIChcIjAwMDAwMFwiICsgKChyIDw8IDE2KSB8IChnIDw8IDgpIHwgYikudG9TdHJpbmcoMTYpKS5zbGljZSgtNik7XG59XG5cbmV4cG9ydCBjb25zdCByZ2JUb0ludCA9IChyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyKSA9PiB7XG4gIHJldHVybiAociA8PCAxNikgfCAoZyA8PCA4KSB8IGI7XG59XG5cbmV4cG9ydCBjb25zdCByZ2JUb0hzdiA9IChyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyKSA9PiB7XG4gIFtyLCBnLCBiXSA9IFtsaW1pdChyLCAwLCAyNTUpIC8gMjU1LCBsaW1pdChnLCAwLCAyNTUpIC8gMjU1LCBsaW1pdChiLCAwLCAyNTUpIC8gMjU1XTtcbiAgY29uc3QgbWF4ID0gTWF0aC5tYXgociwgZywgYik7XG4gIGNvbnN0IG1pbiA9IE1hdGgubWluKHIsIGcsIGIpO1xuICBsZXQgaCwgcyA9IG1heDtcbiAgY29uc3QgdiA9IG1heDtcbiAgY29uc3QgZCA9IG1heCAtIG1pbjtcbiAgcyA9IG1heCA9PT0gMCA/IDAgOiBkIC8gbWF4O1xuXG4gIGlmIChtYXggPT0gbWluKSB7XG4gICAgaCA9IDA7XG5cbiAgICByZXR1cm4gW2gsIHMsIHZdO1xuICB9XG4gIHN3aXRjaCAobWF4KSB7XG4gICAgY2FzZSByOiBoID0gKGcgLSBiKSAvIGQgKyAoZyA8IGIgPyA2IDogMCk7IGJyZWFrO1xuICAgIGNhc2UgZzogaCA9IChiIC0gcikgLyBkICsgMjsgYnJlYWs7XG4gICAgY2FzZSBiOiBoID0gKHIgLSBnKSAvIGQgKyA0OyBicmVhaztcbiAgfVxuICBoID0gKGggfHwgMCkgLyA2O1xuXG4gIHJldHVybiBbaCwgcywgdl07XG59XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDb2xvciA9IChkYXRhOiBBcnJheTxudW1iZXI+LCBmb3JtYXQ6IHN0cmluZykgPT4ge1xuICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgIGNhc2UgJ3JnYic6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkYXRhLnNsaWNlKDAsIDMpO1xuICAgIGNhc2UgJ3JnYmNzcyc6XG4gICAgICByZXR1cm4gYHJnYigke2RhdGFbMF19LCAke2RhdGFbMV19LCAke2RhdGFbMl19KWA7XG4gICAgY2FzZSAncmdiY3NzNCc6XG4gICAgICByZXR1cm4gYHJnYigke2RhdGFbMF19LCAke2RhdGFbMV19LCAke2RhdGFbMl19LCAke2RhdGFbM119KWA7XG4gICAgY2FzZSAncmdiYSc6XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICBjYXNlICdyZ2JhY3NzJzpcbiAgICAgIHJldHVybiBgcmdiYSgke2RhdGFbMF19LCAke2RhdGFbMV19LCAke2RhdGFbMl19LCAke2RhdGFbM119KWA7XG4gICAgY2FzZSAnaHNsJzpcbiAgICAgIHJldHVybiByZ2JUb0hzbChkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdKTtcbiAgICBjYXNlICdoc2xjc3MnOlxuICAgICAgZGF0YSA9IHJnYlRvSHNsKGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0pO1xuXG4gICAgICByZXR1cm4gYGhzbCgke2RhdGFbMF19LCAke2RhdGFbMV19LCAke2RhdGFbMl19KWA7XG4gICAgY2FzZSAnaHNsY3NzNCc6IHtcbiAgICAgIGNvbnN0IGhoID0gcmdiVG9Ic2woZGF0YVswXSwgZGF0YVsxXSwgZGF0YVsyXSk7XG5cbiAgICAgIHJldHVybiBgaHNsKCR7aGhbMF19LCAke2hoWzFdfSwgJHtoaFsyXX0sICR7ZGF0YVszXX0pYDtcbiAgICB9XG4gICAgY2FzZSAnaHNsYSc6XG4gICAgICByZXR1cm4gWy4uLnJnYlRvSHNsKGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0pLCBkYXRhWzNdXTtcbiAgICBjYXNlICdoc2xhY3NzJzoge1xuICAgICAgY29uc3QgaGEgPSByZ2JUb0hzbChkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdKTtcblxuICAgICAgcmV0dXJuIGBoc2xhKCR7aGFbMF19LCAke2hhWzFdfSwgJHtoYVsyXX0sICR7ZGF0YVszXX0pYDtcbiAgICB9XG4gICAgY2FzZSAnaGV4JzpcbiAgICAgIHJldHVybiByZ2JUb0hleChkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdKTtcbiAgICBjYXNlICdoZXhjc3M0JzpcbiAgICAgIHJldHVybiByZ2JUb0hleChkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdKSArICgnMDAnICsgcGFyc2VJbnQoKGRhdGFbM10gKiAyNTUpLnRvU3RyaW5nKCkpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpO1xuICAgIGNhc2UgJ2ludCc6XG4gICAgICByZXR1cm4gcmdiVG9JbnQoZGF0YVswXSwgZGF0YVsxXSwgZGF0YVsyXSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHBhcnNlQ29sb3IgPSAoY29sb3I6IHN0cmluZyB8IEFycmF5PG51bWJlcj4sIGZvcm1hdDogc3RyaW5nIHwgb2JqZWN0KSA9PiB7XG4gIGlmICghaXNOaWwoY29sb3IpKSB7XG4gICAgbGV0IGRhdGE6IEFycmF5PG51bWJlcj4gfCB1bmRlZmluZWQgPSBbXTtcblxuICAgIGRhdGEgPSBwYXJzZUNvbG9yVG9SZ2JhKGNvbG9yKSB8fCAocGFyc2VDb2xvclRvSHNsYShjb2xvcikgJiYgWy4uLmhzbFRvUmdiKGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0pLCBkYXRhWzNdXSk7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmICh0eXBlb2YgZm9ybWF0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gWydyZ2InLCAncmdiY3NzJywgJ3JnYmNzczQnLCAncmdiYScsICdyZ2JhY3NzJywgJ2hzbCcsICdoc2xjc3MnLCAnaHNsY3NzNCcsICdoc2xhJywgJ2hzbGFjc3MnLCAnaGV4JywgJ2hleGNzczQnLCAnaW50J10ucmVkdWNlKChtLCBmKSA9PiB7XG4gICAgICAgICAgc2V0KG0sIGYsIGZvcm1hdENvbG9yKGRhdGEsIGYpKTtcblxuICAgICAgICAgIHJldHVybiBtO1xuICAgICAgICB9LCBmb3JtYXQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm9ybWF0Q29sb3IoZGF0YSwgZm9ybWF0IGFzIHN0cmluZyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRIZWxwZXIgPSAoKSA9PiB7XG4gIHJldHVybiB7XG4gICAgc2V0SHVlOiAoKSA9PiB7IHJldHVybiB9LFxuICAgIGdyYWJDb2xvcjogKCkgPT4gW10sXG4gICAgZmluZENvbG9yOiAoKSA9PiBbXVxuICB9O1xufSJdfQ==
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2NvbG9yLXBpY2tlci9zcmMvdXRpbHMvcGlja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2pELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxX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YSxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUU7SUFDNUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNULE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQUFBRCxFQUFHLENBQUMsQ0FBQyxHQUFHLDRFQUE0RSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEgsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNyRyxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUU7SUFDNUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNULE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQUFBRCxFQUFHLENBQUMsQ0FBQyxHQUFHLDRFQUE0RSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEgsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FB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Q0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBRTtJQUMxRCxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFO0lBQzFELENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDckYsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5QixJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ2YsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ2QsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNwQixDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBRTVCLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVOLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFDRCxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ1osS0FBSyxDQUFDO1lBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFBQyxNQUFNO1FBQ2pELEtBQUssQ0FBQztZQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQUMsTUFBTTtRQUNuQyxLQUFLLENBQUM7WUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUFDLE1BQU07SUFDckMsQ0FBQztJQUNELENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFakIsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBbUIsRUFBRSxNQUFjLEVBQUUsRUFBRTtJQUNqRSxRQUFRLE1BQU0sRUFBRSxDQUFDO1FBQ2YsS0FBSyxLQUFLLENBQUM7UUFDWDtZQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUIsS0FBSyxRQUFRO1lBQ1gsT0FBTyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDbkQsS0FBSyxTQUFTO1lBQ1osT0FBTyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQy9ELEtBQUssTUFBTTtZQUNULE9BQU8sSUFBSSxDQUFDO1FBQ2QsS0FBSyxTQUFTO1lBQ1osT0FBTyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ2hFLEtBQUssS0FBSztZQUNSLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0MsS0FBSyxRQUFRO1lBQ1gsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTNDLE9BQU8sT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ25ELEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztZQUNmLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRS9DLE9BQU8sT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUN6RCxDQUFDO1FBQ0QsS0FBSyxNQUFNO1lBQ1QsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUs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QUFDLEVBQUU7UUFDbkIsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7S0FDcEIsQ0FBQztBQUNKLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldCwgaXNOaWwsIHNldCB9IGZyb20gXCJAbGlicy11aS91dGlsc1wiO1xuaW1wb3J0IHsgSVBpY2tlck9wdGlvbnMgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xuXG5leHBvcnQgY29uc3QgQ29sb3JOYW1lcyA9IHsgJ2FsaWNlYmx1ZSc6ICcjRjBGOEZGJywgJ2FudGlxdWV3aGl0ZSc6ICcjRkFFQkQ3JywgJ2FxdWEnOiAnIzAwRkZGRicsICdhcXVhbWFyaW5lJzogJyM3RkZGRDQnLCAnYXp1cmUnOiAnI0YwRkZGRicsICdiZWlnZSc6ICcjRjVGNURDJywgJ2Jpc3F1ZSc6ICcjRkZFNEM0JywgJ2JsYWNrJzogJyMwMDAwMDAnLCAnYmxhbmNoZWRhbG1vbmQnOiAnI0ZGRUJDRCcsICdibHVlJzogJyMwMDAwRkYnLCAnYmx1ZXZpb2xldCc6ICcjOEEyQkUyJywgJ2Jyb3duJzogJyNBNTJBMkEnLCAnYnVybHl3b29kJzogJyNERUI4ODcnLCAnY2FkZXRibHVlJzogJyM1RjlFQTAnLCAnY2hhcnRyZXVzZSc6ICcjN0ZGRjAwJywgJ2Nob2NvbGF0ZSc6ICcjRDI2OTFFJywgJ2NvcmFsJzogJyNGRjdGNTAnLCAnY29ybmZsb3dlcmJsdWUnOiAnIzY0OTVFRCcsICdjb3Juc2lsayc6ICcjRkZGOERDJywgJ2NyaW1zb24nOiAnI0RDMTQzQycsICdjeWFuJzogJyMwMEZGRkYnLCAnZGFya2JsdWUnOiAnIzAwMDA4QicsICdkYXJrY3lhbic6ICcjMDA4QjhCJywgJ2Rhcmtnb2xkZW5yb2QnOiAnI0I4ODYwQicsICdkYXJrZ3JheSc6ICcjQTlBOUE5JywgJ2RhcmtncmV5JzogJyNBOUE5QTknLCAnZGFya2dyZWVuJzogJyMwMDY0MDAnLCAnZGFya2toYWtpJzogJyNCREI3NkInLCAnZGFya21hZ2VudGEnOiAnIzhCMDA4QicsICdkYXJrb2xpdmVncmVlbic6ICcjNTU2QjJGJywgJ2RhcmtvcmFuZ2UnOiAnI0ZGOEMwMCcsICdkYXJrb3JjaGlkJzogJyM5OTMyQ0MnLCAnZGFya3JlZCc6ICcjOEIwMDAwJywgJ2RhcmtzYWxtb24nOiAnI0U5OTY3QScsICdkYXJrc2VhZ3JlZW4nOiAnIzhGQkM4RicsICdkYXJrc2xhdGVibHVlJzogJyM0ODNEOEInLCAnZGFya3NsYXRlZ3JheSc6ICcjMkY0RjRGJywgJ2RhcmtzbGF0ZWdyZXknOiAnIzJGNEY0RicsICdkYXJrdHVycXVvaXNlJzogJyMwMENFRDEnLCAnZGFya3Zpb2xldCc6ICcjOTQwMEQzJywgJ2RlZXBwaW5rJzogJyNGRjE0OTMnLCAnZGVlcHNreWJsdWUnOiAnIzAwQkZGRicsICdkaW1ncmF5JzogJyM2OTY5NjknLCAnZGltZ3JleSc6ICcjNjk2OTY5JywgJ2RvZGdlcmJsdWUnOiAnIzFFOTBGRicsICdmaXJlYnJpY2snOiAnI0IyMjIyMicsICdmbG9yYWx3aGl0ZSc6ICcjRkZGQUYwJywgJ2ZvcmVzdGdyZWVuJzogJyMyMjhCMjInLCAnZnVjaHNpYSc6ICcjRkYwMEZGJywgJ2dhaW5zYm9ybyc6ICcjRENEQ0RDJywgJ2dob3N0d2hpdGUnOiAnI0Y4RjhGRicsICdnb2xkJzogJyNGRkQ3MDAnLCAnZ29sZGVucm9kJzogJyNEQUE1MjAnLCAnZ3JheSc6ICcjODA4MDgwJywgJ2dyZXknOiAnIzgwODA4MCcsICdncmVlbic6ICcjMDA4MDAwJywgJ2dyZWVueWVsbG93JzogJyNBREZGMkYnLCAnaG9uZXlkZXcnOiAnI0YwRkZGMCcsICdob3RwaW5rJzogJyNGRjY5QjQnLCAnaW5kaWFucmVkICc6ICcjQ0Q1QzVDJywgJ2luZGlnbyAnOiAnIzRCMDA4MicsICdpdm9yeSc6ICcjRkZGRkYwJywgJ2toYWtpJzogJyNGMEU2OEMnLCAnbGF2ZW5kZXInOiAnI0U2RTZGQScsICdsYXZlbmRlcmJsdXNoJzogJyNGRkYwRjUnLCAnbGF3bmdyZWVuJzogJyM3Q0ZDMDAnLCAnbGVtb25jaGlmZm9uJzogJyNGRkZBQ0QnLCAnbGlnaHRibHVlJzogJyNBREQ4RTYnLCAnbGlnaHRjb3JhbCc6ICcjRjA4MDgwJywgJ2xpZ2h0Y3lhbic6ICcjRTBGRkZGJywgJ2xpZ2h0Z29sZGVucm9keWVsbG93JzogJyNGQUZBRDInLCAnbGlnaHRncmF5JzogJyNEM0QzRDMnLCAnbGlnaHRncmV5JzogJyNEM0QzRDMnLCAnbGlnaHRncmVlbic6ICcjOTBFRTkwJywgJ2xpZ2h0cGluayc6ICcjRkZCNkMxJywgJ2xpZ2h0c2FsbW9uJzogJyNGRkEwN0EnLCAnbGlnaHRzZWFncmVlbic6ICcjMjBCMkFBJywgJ2xpZ2h0c2t5Ymx1ZSc6ICcjODdDRUZBJywgJ2xpZ2h0c2xhdGVncmF5JzogJyM3Nzg4OTknLCAnbGlnaHRzbGF0ZWdyZXknOiAnIzc3ODg5OScsICdsaWdodHN0ZWVsYmx1ZSc6ICcjQjBDNERFJywgJ2xpZ2h0eWVsbG93JzogJyNGRkZGRTAnLCAnbGltZSc6ICcjMDBGRjAwJywgJ2xpbWVncmVlbic6ICcjMzJDRDMyJywgJ2xpbmVuJzogJyNGQUYwRTYnLCAnbWFnZW50YSc6ICcjRkYwMEZGJywgJ21hcm9vbic6ICcjODAwMDAwJywgJ21lZGl1bWFxdWFtYXJpbmUnOiAnIzY2Q0RBQScsICdtZWRpdW1ibHVlJzogJyMwMDAwQ0QnLCAnbWVkaXVtb3JjaGlkJzogJyNCQTU1RDMnLCAnbWVkaXVtcHVycGxlJzogJyM5MzcwREInLCAnbWVkaXVtc2VhZ3JlZW4nOiAnIzNDQjM3MScsICdtZWRpdW1zbGF0ZWJsdWUnOiAnIzdCNjhFRScsICdtZWRpdW1zcHJpbmdncmVlbic6ICcjMDBGQTlBJywgJ21lZGl1bXR1cnF1b2lzZSc6ICcjNDhEMUNDJywgJ21lZGl1bXZpb2xldHJlZCc6ICcjQzcxNTg1JywgJ21pZG5pZ2h0Ymx1ZSc6ICcjMTkxOTcwJywgJ21pbnRjcmVhbSc6ICcjRjVGRkZBJywgJ21pc3R5cm9zZSc6ICcjRkZFNEUxJywgJ21vY2Nhc2luJzogJyNGRkU0QjUnLCAnbmF2YWpvd2hpdGUnOiAnI0ZGREVBRCcsICduYXZ5JzogJyMwMDAwODAnLCAnb2xkbGFjZSc6ICcjRkRGNUU2JywgJ29saXZlJzogJyM4MDgwMDAnLCAnb2xpdmVkcmFiJzogJyM2QjhFMjMnLCAnb3JhbmdlJzogJyNGRkE1MDAnLCAnb3JhbmdlcmVkJzogJyNGRjQ1MDAnLCAnb3JjaGlkJzogJyNEQTcwRDYnLCAncGFsZWdvbGRlbnJvZCc6ICcjRUVFOEFBJywgJ3BhbGVncmVlbic6ICcjOThGQjk4JywgJ3BhbGV0dXJxdW9pc2UnOiAnI0FGRUVFRScsICdwYWxldmlvbGV0cmVkJzogJyNEQjcwOTMnLCAncGFwYXlhd2hpcCc6ICcjRkZFRkQ1JywgJ3BlYWNocHVmZic6ICcjRkZEQUI5JywgJ3BlcnUnOiAnI0NEODUzRicsICdwaW5rJzogJyNGRkMwQ0InLCAncGx1bSc6ICcjRERBMEREJywgJ3Bvd2RlcmJsdWUnOiAnI0IwRTBFNicsICdwdXJwbGUnOiAnIzgwMDA4MCcsICdyZWJlY2NhcHVycGxlJzogJyM2NjMzOTknLCAncmVkJzogJyNGRjAwMDAnLCAncm9zeWJyb3duJzogJyNCQzhGOEYnLCAncm95YWxibHVlJzogJyM0MTY5RTEnLCAnc2FkZGxlYnJvd24nOiAnIzhCNDUxMycsICdzYWxtb24nOiAnI0ZBODA3MicsICdzYW5keWJyb3duJzogJyNGNEE0NjAnLCAnc2VhZ3JlZW4nOiAnIzJFOEI1NycsICdzZWFzaGVsbCc6ICcjRkZGNUVFJywgJ3NpZW5uYSc6ICcjQTA1MjJEJywgJ3NpbHZlcic6ICcjQzBDMEMwJywgJ3NreWJsdWUnOiAnIzg3Q0VFQicsICdzbGF0ZWJsdWUnOiAnIzZBNUFDRCcsICdzbGF0ZWdyYXknOiAnIzcwODA5MCcsICdzbGF0ZWdyZXknOiAnIzcwODA5MCcsICdzbm93JzogJyNGRkZBRkEnLCAnc3ByaW5nZ3JlZW4nOiAnIzAwRkY3RicsICdzdGVlbGJsdWUnOiAnIzQ2ODJCNCcsICd0YW4nOiAnI0QyQjQ4QycsICd0ZWFsJzogJyMwMDgwODAnLCAndGhpc3RsZSc6ICcjRDhCRkQ4JywgJ3RvbWF0byc6ICcjRkY2MzQ3JywgJ3R1cnF1b2lzZSc6ICcjNDBFMEQwJywgJ3Zpb2xldCc6ICcjRUU4MkVFJywgJ3doZWF0JzogJyNGNURFQjMnLCAnd2hpdGUnOiAnI0ZGRkZGRicsICd3aGl0ZXNtb2tlJzogJyNGNUY1RjUnLCAneWVsbG93JzogJyNGRkZGMDAnLCAneWVsbG93Z3JlZW4nOiAnIzlBQ0QzMicgfTtcbmV4cG9ydCBjb25zdCBvcHRpb25zRGVmYXVsdCA9ICgpOiBJUGlja2VyT3B0aW9ucyA9PiB7XG4gIHJldHVybiB7XG4gICAgc2hvd0hzbDogZmFsc2UsXG4gICAgc2hvd1JnYjogdHJ1ZSxcbiAgICBzaG93SGV4OiB0cnVlLFxuICAgIHNob3dBbHBoYTogZmFsc2UsXG4gICAgY29sb3I6ICcjZmYwMDAwJyxcbiAgICBmb3JtYXQ6ICdjb2xvcicsXG4gICAgc2xCYXJTaXplOiBbNDIwLCAyMDBdLFxuICAgIGh1ZUJhclNpemU6IFs0MjAsIDIwXSxcbiAgICBhbHBoYUJhclNpemU6IFs0MjAsIDIwXVxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgbGltaXQgPSAodmFsdWU6IG51bWJlciB8IHN0cmluZywgbWluOiBudW1iZXIsIG1heDogbnVtYmVyKSA9PiB7XG4gIHZhbHVlID0gK3ZhbHVlO1xuICByZXR1cm4gaXNOYU4odmFsdWUpID8gbWluIDogKHZhbHVlIDwgbWluID8gbWluIDogKHZhbHVlID4gbWF4ID8gbWF4IDogdmFsdWUpKTtcbn1cblxuZXhwb3J0IGNvbnN0IGhzbFRvUmdiID0gKGg6IG51bWJlciwgczogbnVtYmVyLCBsOiBudW1iZXIpID0+IHtcbiAgbGV0IHIsIGcsIGI7XG4gIFtoLCBzLCBsXSA9IFtsaW1pdChoLCAwLCAzNjApIC8gMzYwLCBsaW1pdChzLCAwLCAxMDApIC8gMTAwLCBsaW1pdChsLCAwLCAxMDApIC8gMTAwXTtcblxuICBpZiAocyA9PSAwKSB7XG4gICAgciA9IGcgPSBiID0gbDsgLy8gYWNocm9tYXRpY1xuXG4gICAgcmV0dXJuIFtyICogMjU1LCBnICogMjU1LCBiICogMjU1XS5tYXAoTWF0aC5yb3VuZCk7XG4gIH1cbiAgY29uc3QgaHVlVG9SZ2IgPSAocDogbnVtYmVyLCBxOiBudW1iZXIsIHQ6IG51bWJlcikgPT4ge1xuICAgIGlmICh0IDwgMCkgdCArPSAxO1xuICAgIGlmICh0ID4gMSkgdCAtPSAxO1xuICAgIGlmICh0IDwgMSAvIDYpIHJldHVybiBwICsgKHEgLSBwKSAqIDYgKiB0O1xuICAgIGlmICh0IDwgMSAvIDIpIHJldHVybiBxO1xuICAgIGlmICh0IDwgMiAvIDMpIHJldHVybiBwICsgKHEgLSBwKSAqICgyIC8gMyAtIHQpICogNjtcblxuICAgIHJldHVybiBwO1xuICB9O1xuICBjb25zdCBxID0gbCA8IDAuNSA/IGwgKiAoMSArIHMpIDogbCArIHMgLSBsICogcztcbiAgY29uc3QgcCA9ICgyICogbCkgLSBxO1xuXG4gIHIgPSBodWVUb1JnYihwLCBxLCBoICsgKDEgLyAzKSk7XG4gIGcgPSBodWVUb1JnYihwLCBxLCBoKTtcbiAgYiA9IGh1ZVRvUmdiKHAsIHEsIGggLSAoMSAvIDMpKTtcblxuICByZXR1cm4gW3IgKiAyNTUsIGcgKiAyNTUsIGIgKiAyNTVdLm1hcChNYXRoLnJvdW5kKTtcbn1cblxuZXhwb3J0IGNvbnN0IGNzc0NvbG9yVG9SZ2JhID0gKGNvbG9yOiBzdHJpbmcpID0+IHtcbiAgaWYgKGNvbG9yKSB7XG4gICAgY29uc3QgY29sb3JCeU5hbWUgPSBnZXQoQ29sb3JOYW1lcywgY29sb3IudG9Mb3dlckNhc2UoKSk7XG4gICAgY29uc3QgWywgLCAsIHIsIGcsIGIsIGEsICwgcnIsIGdnLCBiYiwgYWFdID0gL15cXHMqIz8oKChbMC05QS1GXSkoWzAtOUEtRl0pKFswLTlBLUZdKShbMC05QS1GXSk/KXwoKFswLTlBLUZdezJ9KShbMC05QS1GXXsyfSkoWzAtOUEtRl17Mn0pKFswLTlBLUZdezJ9KT8pKVxccyokL2kuZXhlYyhjb2xvckJ5TmFtZSB8fCBjb2xvcikgfHwgW107XG4gICAgaWYgKCFpc05pbChyKSkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgcGFyc2VJbnQociArIHIsIDE2KSxcbiAgICAgICAgcGFyc2VJbnQoZyArIGcsIDE2KSxcbiAgICAgICAgcGFyc2VJbnQoYiArIGIsIDE2KSxcbiAgICAgICAgYSA/ICsoKHBhcnNlSW50KGEgKyBhLCAxNikpIC8gMjU1KS50b0ZpeGVkKDIpIDogMVxuICAgICAgXTtcbiAgICB9XG4gICAgaWYgKCFpc05pbChycikpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHBhcnNlSW50KHJyLCAxNiksXG4gICAgICAgIHBhcnNlSW50KGdnLCAxNiksXG4gICAgICAgIHBhcnNlSW50KGJiLCAxNiksXG4gICAgICAgIGFhID8gKygocGFyc2VJbnQoYWEsIDE2KSkgLyAyNTUpLnRvRml4ZWQoMikgOiAxXG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjb25zdCBwYXJzZUNvbG9yVG9SZ2JhID0gKGNvbG9yOiBzdHJpbmcgfCBBcnJheTxudW1iZXI+KSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNvbG9yKSkge1xuICAgIHJldHVybiBbXG4gICAgICBsaW1pdChjb2xvclswXSwgMCwgMjU1KSxcbiAgICAgIGxpbWl0KGNvbG9yWzFdLCAwLCAyNTUpLFxuICAgICAgbGltaXQoY29sb3JbMl0sIDAsIDI1NSksXG4gICAgICBsaW1pdChjb2xvclszXSA/PyAxLCAwLCAxKVxuICAgIF07XG4gIH1cbiAgY29uc3QgcGFyc2VkID0gY3NzQ29sb3JUb1JnYmEoY29sb3IpIHx8IGNzc1JnYmFUb1JnYmEoY29sb3IpO1xuXG4gIGlmIChwYXJzZWQgJiYgcGFyc2VkLmxlbmd0aCA9PT0gMykge1xuICAgIHBhcnNlZC5wdXNoKDEpO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlZDtcbn1cblxuZXhwb3J0IGNvbnN0IGNzc1JnYmFUb1JnYmEgPSAocmdiYTogc3RyaW5nKSA9PiB7XG4gIGlmIChyZ2JhKSB7XG4gICAgY29uc3QgW20sIHIsIGcsIGIsICwgYV0gPSAvXnJnYmE/XFwoKFxcZCspXFxzKltcXHMsXVxccyooXFxkKylcXHMqW1xccyxdXFxzKihcXGQrKShcXHMqW1xccyxdXFxzKihcXGQqKC5cXGQrKT8pKT9cXCkvaS5leGVjKHJnYmEpIHx8IFtdO1xuXG4gICAgcmV0dXJuIG0gPyBbbGltaXQociwgMCwgMjU1KSwgbGltaXQoZywgMCwgMjU1KSwgbGltaXQoYiwgMCwgMjU1KSwgbGltaXQoYSA/PyAxLCAwLCAxKV0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY29uc3QgY3NzSHNsYVRvSHNsYSA9IChoc2xhOiBzdHJpbmcpID0+IHtcbiAgaWYgKGhzbGEpIHtcbiAgICBjb25zdCBbbSwgaCwgcywgbCwgLCBhXSA9IC9eaHNsYT9cXCgoXFxkKylcXHMqW1xccyxdXFxzKihcXGQrKVxccypbXFxzLF1cXHMqKFxcZCspKFxccypbXFxzLF1cXHMqKFxcZCooLlxcZCspPykpP1xcKS9pLmV4ZWMoaHNsYSkgfHwgW107XG5cbiAgICByZXR1cm4gbSA/IFtsaW1pdChoLCAwLCAyNTUpLCBsaW1pdChzLCAwLCAyNTUpLCBsaW1pdChsLCAwLCAyNTUpLCBsaW1pdChhID8/IDEsIDAsIDEpXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjb25zdCBwYXJzZUNvbG9yVG9Ic2xhID0gKGNvbG9yOiBzdHJpbmcgfCBBcnJheTxudW1iZXI+KSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNvbG9yKSkge1xuICAgIHJldHVybiBbXG4gICAgICBsaW1pdChjb2xvclswXSwgMCwgMzYwKSxcbiAgICAgIGxpbWl0KGNvbG9yWzFdLCAwLCAxMDApLFxuICAgICAgbGltaXQoY29sb3JbMl0sIDAsIDEwMCksXG4gICAgICBsaW1pdChjb2xvclszXSA/PyAxLCAwLCAxKVxuICAgIF07XG4gIH1cbiAgY29uc3QgcGFyc2VkID0gY3NzSHNsYVRvSHNsYShjb2xvcik7XG5cbiAgaWYgKHBhcnNlZCAmJiBwYXJzZWQubGVuZ3RoID09PSAzKSB7XG4gICAgcGFyc2VkLnB1c2goMSk7XG4gIH1cblxuICByZXR1cm4gcGFyc2VkO1xufVxuXG5leHBvcnQgY29uc3QgcmdiVG9Ic2wgPSAocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcikgPT4ge1xuICBbciwgZywgYl0gPSBbbGltaXQociwgMCwgMjU1KSAvIDI1NSwgbGltaXQoZywgMCwgMjU1KSAvIDI1NSwgbGltaXQoYiwgMCwgMjU1KSAvIDI1NV07XG4gIGNvbnN0IG1heCA9IE1hdGgubWF4KHIsIGcsIGIpO1xuICBjb25zdCBtaW4gPSBNYXRoLm1pbihyLCBnLCBiKTtcbiAgbGV0IGgsIHMgPSAobWF4ICsgbWluKSAvIDI7XG4gIGNvbnN0IGwgPSAobWF4ICsgbWluKSAvIDI7XG5cbiAgaWYgKG1heCA9PSBtaW4pIHtcbiAgICBoID0gcyA9IDA7IC8vIGFjaHJvbWF0aWNcblxuICAgIHJldHVybiBbaCAqIDM2MCwgcyAqIDEwMCwgbCAqIDEwMF0ubWFwKE1hdGgucm91bmQpO1xuICB9XG4gIGNvbnN0IGQgPSBtYXggLSBtaW47XG5cbiAgcyA9IGwgPiAwLjUgPyBkIC8gKDIgLSBtYXggLSBtaW4pIDogZCAvIChtYXggKyBtaW4pO1xuICBzd2l0Y2ggKG1heCkge1xuICAgIGNhc2UgcjpcbiAgICAgIGggPSAoKGcgLSBiKSAvIGQpICsgKGcgPCBiID8gNiA6IDApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBnOlxuICAgICAgaCA9ICgoYiAtIHIpIC8gZCkgKyAyO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBiOlxuICAgICAgaCA9ICgociAtIGcpIC8gZCkgKyA0O1xuICAgICAgYnJlYWs7XG4gIH1cbiAgaCA9IChoIHx8IDApIC8gNjtcblxuICByZXR1cm4gW2ggKiAzNjAsIHMgKiAxMDAsIGwgKiAxMDBdLm1hcChNYXRoLnJvdW5kKTtcbn1cblxuZXhwb3J0IGNvbnN0IHJnYlRvSGV4ID0gKHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIpID0+IHtcbiAgW3IsIGcsIGJdID0gW2xpbWl0KHIsIDAsIDI1NSksIGxpbWl0KGcsIDAsIDI1NSksIGxpbWl0KGIsIDAsIDI1NSldO1xuXG4gIHJldHVybiBcIiNcIiArIChcIjAwMDAwMFwiICsgKChyIDw8IDE2KSB8IChnIDw8IDgpIHwgYikudG9TdHJpbmcoMTYpKS5zbGljZSgtNik7XG59XG5cbmV4cG9ydCBjb25zdCByZ2JUb0ludCA9IChyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyKSA9PiB7XG4gIHJldHVybiAociA8PCAxNikgfCAoZyA8PCA4KSB8IGI7XG59XG5cbmV4cG9ydCBjb25zdCByZ2JUb0hzdiA9IChyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyKSA9PiB7XG4gIFtyLCBnLCBiXSA9IFtsaW1pdChyLCAwLCAyNTUpIC8gMjU1LCBsaW1pdChnLCAwLCAyNTUpIC8gMjU1LCBsaW1pdChiLCAwLCAyNTUpIC8gMjU1XTtcbiAgY29uc3QgbWF4ID0gTWF0aC5tYXgociwgZywgYik7XG4gIGNvbnN0IG1pbiA9IE1hdGgubWluKHIsIGcsIGIpO1xuICBsZXQgaCwgcyA9IG1heDtcbiAgY29uc3QgdiA9IG1heDtcbiAgY29uc3QgZCA9IG1heCAtIG1pbjtcbiAgcyA9IG1heCA9PT0gMCA/IDAgOiBkIC8gbWF4O1xuXG4gIGlmIChtYXggPT0gbWluKSB7XG4gICAgaCA9IDA7XG5cbiAgICByZXR1cm4gW2gsIHMsIHZdO1xuICB9XG4gIHN3aXRjaCAobWF4KSB7XG4gICAgY2FzZSByOiBoID0gKGcgLSBiKSAvIGQgKyAoZyA8IGIgPyA2IDogMCk7IGJyZWFrO1xuICAgIGNhc2UgZzogaCA9IChiIC0gcikgLyBkICsgMjsgYnJlYWs7XG4gICAgY2FzZSBiOiBoID0gKHIgLSBnKSAvIGQgKyA0OyBicmVhaztcbiAgfVxuICBoID0gKGggfHwgMCkgLyA2O1xuXG4gIHJldHVybiBbaCwgcywgdl07XG59XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDb2xvciA9IChkYXRhOiBBcnJheTxudW1iZXI+LCBmb3JtYXQ6IHN0cmluZykgPT4ge1xuICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgIGNhc2UgJ3JnYic6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkYXRhLnNsaWNlKDAsIDMpO1xuICAgIGNhc2UgJ3JnYmNzcyc6XG4gICAgICByZXR1cm4gYHJnYigke2RhdGFbMF19LCAke2RhdGFbMV19LCAke2RhdGFbMl19KWA7XG4gICAgY2FzZSAncmdiY3NzNCc6XG4gICAgICByZXR1cm4gYHJnYigke2RhdGFbMF19LCAke2RhdGFbMV19LCAke2RhdGFbMl19LCAke2RhdGFbM119KWA7XG4gICAgY2FzZSAncmdiYSc6XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICBjYXNlICdyZ2JhY3NzJzpcbiAgICAgIHJldHVybiBgcmdiYSgke2RhdGFbMF19LCAke2RhdGFbMV19LCAke2RhdGFbMl19LCAke2RhdGFbM119KWA7XG4gICAgY2FzZSAnaHNsJzpcbiAgICAgIHJldHVybiByZ2JUb0hzbChkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdKTtcbiAgICBjYXNlICdoc2xjc3MnOlxuICAgICAgZGF0YSA9IHJnYlRvSHNsKGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0pO1xuXG4gICAgICByZXR1cm4gYGhzbCgke2RhdGFbMF19LCAke2RhdGFbMV19LCAke2RhdGFbMl19KWA7XG4gICAgY2FzZSAnaHNsY3NzNCc6IHtcbiAgICAgIGNvbnN0IGhoID0gcmdiVG9Ic2woZGF0YVswXSwgZGF0YVsxXSwgZGF0YVsyXSk7XG5cbiAgICAgIHJldHVybiBgaHNsKCR7aGhbMF19LCAke2hoWzFdfSwgJHtoaFsyXX0sICR7ZGF0YVszXX0pYDtcbiAgICB9XG4gICAgY2FzZSAnaHNsYSc6XG4gICAgICByZXR1cm4gWy4uLnJnYlRvSHNsKGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0pLCBkYXRhWzNdXTtcbiAgICBjYXNlICdoc2xhY3NzJzoge1xuICAgICAgY29uc3QgaGEgPSByZ2JUb0hzbChkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdKTtcblxuICAgICAgcmV0dXJuIGBoc2xhKCR7aGFbMF19LCAke2hhWzFdfSwgJHtoYVsyXX0sICR7ZGF0YVszXX0pYDtcbiAgICB9XG4gICAgY2FzZSAnaGV4JzpcbiAgICAgIHJldHVybiByZ2JUb0hleChkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdKTtcbiAgICBjYXNlICdoZXhjc3M0JzpcbiAgICAgIHJldHVybiByZ2JUb0hleChkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdKSArICgnMDAnICsgcGFyc2VJbnQoKGRhdGFbM10gKiAyNTUpLnRvU3RyaW5nKCkpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpO1xuICAgIGNhc2UgJ2ludCc6XG4gICAgICByZXR1cm4gcmdiVG9JbnQoZGF0YVswXSwgZGF0YVsxXSwgZGF0YVsyXSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHBhcnNlQ29sb3IgPSAoY29sb3I6IHN0cmluZyB8IEFycmF5PG51bWJlcj4sIGZvcm1hdDogc3RyaW5nIHwgb2JqZWN0KSA9PiB7XG4gIGlmICghaXNOaWwoY29sb3IpKSB7XG4gICAgbGV0IGRhdGE6IEFycmF5PG51bWJlcj4gfCB1bmRlZmluZWQgPSBbXTtcblxuICAgIGRhdGEgPSBwYXJzZUNvbG9yVG9SZ2JhKGNvbG9yKSB8fCAocGFyc2VDb2xvclRvSHNsYShjb2xvcikgJiYgWy4uLmhzbFRvUmdiKGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0pLCBkYXRhWzNdXSk7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmICh0eXBlb2YgZm9ybWF0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gWydyZ2InLCAncmdiY3NzJywgJ3JnYmNzczQnLCAncmdiYScsICdyZ2JhY3NzJywgJ2hzbCcsICdoc2xjc3MnLCAnaHNsY3NzNCcsICdoc2xhJywgJ2hzbGFjc3MnLCAnaGV4JywgJ2hleGNzczQnLCAnaW50J10ucmVkdWNlKChtLCBmKSA9PiB7XG4gICAgICAgICAgc2V0KG0sIGYsIGZvcm1hdENvbG9yKGRhdGEsIGYpKTtcblxuICAgICAgICAgIHJldHVybiBtO1xuICAgICAgICB9LCBmb3JtYXQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm9ybWF0Q29sb3IoZGF0YSwgZm9ybWF0IGFzIHN0cmluZyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRIZWxwZXIgPSAoKSA9PiB7XG4gIHJldHVybiB7XG4gICAgc2V0SHVlOiAoKSA9PiB7IHJldHVybiB9LFxuICAgIGdyYWJDb2xvcjogKCkgPT4gW10sXG4gICAgZmluZENvbG9yOiAoKSA9PiBbXVxuICB9O1xufSJdfQ==
@@ -1,6 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { signal, inject, input, output, viewChild, effect, ChangeDetectionStrategy, Component } from '@angular/core';
3
3
  import { LibsUiComponentsInputsInputComponent } from '@libs-ui/components-inputs-input';
4
+ import { LibsUiComponentsInputsValidComponent } from '@libs-ui/components-inputs-valid';
4
5
  import { LibsUiNotificationService } from '@libs-ui/services-notification';
5
6
  import { get, isNil, set, getDragEventByElement } from '@libs-ui/utils';
6
7
  import { Subject } from 'rxjs';
@@ -14,9 +15,9 @@ const optionsDefault = () => {
14
15
  showAlpha: false,
15
16
  color: '#ff0000',
16
17
  format: 'color',
17
- slBarSize: [316, 200],
18
- hueBarSize: [316, 20],
19
- alphaBarSize: [316, 20]
18
+ slBarSize: [420, 200],
19
+ hueBarSize: [420, 20],
20
+ alphaBarSize: [420, 20]
20
21
  };
21
22
  };
22
23
  const limit = (value, min, max) => {
@@ -253,8 +254,10 @@ class LibsUiComponentsColorPickerComponent {
253
254
  onDestroy = new Subject();
254
255
  // #region INPUT
255
256
  customOptions = input();
257
+ noEmitEventColorWhenInitComponent = input(true, { transform: (value) => value ?? true });
256
258
  // #region OUTPUT
257
259
  outColorChange = output();
260
+ outColorChangeMutilType = output();
258
261
  /* VIEW CHILD */
259
262
  hueEl = viewChild('hueEl');
260
263
  huePointerEl = viewChild('huePointerEl');
@@ -290,7 +293,7 @@ class LibsUiComponentsColorPickerComponent {
290
293
  if (this.options().showAlpha) {
291
294
  this.setupAlphaCanvas();
292
295
  }
293
- this.handlerColorChange(this.options().format, this.options().color, true);
296
+ this.handlerColorChange(this.options().format, this.options().color, this.noEmitEventColorWhenInitComponent());
294
297
  }
295
298
  setupHueCanvas() {
296
299
  const canvas = this.hueEl()?.nativeElement;
@@ -437,7 +440,7 @@ class LibsUiComponentsColorPickerComponent {
437
440
  this.updatePointerA(this.a());
438
441
  }
439
442
  }
440
- handlerColorChange(key, value, silent = false) {
443
+ handlerColorChange(key, value, isCallInitComponent = false) {
441
444
  let config = {};
442
445
  switch (key) {
443
446
  case 'h':
@@ -509,8 +512,15 @@ class LibsUiComponentsColorPickerComponent {
509
512
  }
510
513
  this.updateValuesAndPointer(config);
511
514
  set(this.previewEl()?.nativeElement.style, 'backgroundColor', this.a() === 1 ? `rgb(${this.r()},${this.g()},${this.b()})` : `rgba(${this.r()},${this.g()},${this.b()},${this.a()})`);
512
- if (!silent) {
515
+ if (!isCallInitComponent) {
513
516
  this.outColorChange.emit(this.hex());
517
+ this.outColorChangeMutilType.emit({
518
+ hex: this.hex(),
519
+ rgba: `rgba(${this.r()},${this.g()},${this.b()},${this.a()})`,
520
+ rgb: `rgb(${this.r()},${this.g()},${this.b()})`,
521
+ hsl: `hsl(${this.h()},${this.s()},${this.l()})`,
522
+ hsla: `hsla(${this.h()},${this.s()},${this.l()},${this.a()})`
523
+ });
514
524
  }
515
525
  }
516
526
  handlerFocusAndBlur(event, key) {
@@ -519,18 +529,27 @@ class LibsUiComponentsColorPickerComponent {
519
529
  handlerValueChange(event, key) {
520
530
  this.handlerColorChange(key, event);
521
531
  }
532
+ handlerValueChangeAlphaInput(event) {
533
+ this.handlerColorChange('alpha', (event || 0) / 100);
534
+ this.updatePointerA(this.a());
535
+ }
536
+ handlerResetColor() {
537
+ this.handlerColorChange('alpha', 0);
538
+ this.updatePointerA(this.a());
539
+ }
522
540
  ngOnDestroy() {
523
541
  this.onDestroy.next();
524
542
  this.onDestroy.complete();
525
543
  }
526
544
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsColorPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
527
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsColorPickerComponent, isStandalone: true, selector: "libs_ui-components-color_picker", inputs: { customOptions: { classPropertyName: "customOptions", publicName: "customOptions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outColorChange: "outColorChange" }, viewQueries: [{ propertyName: "hueEl", first: true, predicate: ["hueEl"], descendants: true, isSignal: true }, { propertyName: "huePointerEl", first: true, predicate: ["huePointerEl"], descendants: true, isSignal: true }, { propertyName: "slEl", first: true, predicate: ["slEl"], descendants: true, isSignal: true }, { propertyName: "slPointerEl", first: true, predicate: ["slPointerEl"], descendants: true, isSignal: true }, { propertyName: "alphaEl", first: true, predicate: ["alphaEl"], descendants: true, isSignal: true }, { propertyName: "alphaPointerEl", first: true, predicate: ["alphaPointerEl"], descendants: true, isSignal: true }, { propertyName: "previewEl", first: true, predicate: ["previewEl"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"relative\"\n [style.width.px]=\"options().slBarSize[0]\">\n <div>\n <canvas #slEl\n class=\"rounded-tl-[4px] rounded-tr-[4px] libs-ui-color-picker-background-transparent\"></canvas>\n <div #slPointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n <div class=\"relative\">\n <canvas #hueEl\n class=\"libs-ui-color-picker-background-transparent\"\n [class.rounded-bl-[4px]]=\"!options().showAlpha\"\n [class.rounded-br-[4px]]=\"!options().showAlpha\"></canvas>\n <div #huePointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n @if (options().showAlpha) {\n <div class=\"relative\">\n <canvas #alphaEl\n class=\"rounded-bl-[4px] rounded-br-[4px] libs-ui-color-picker-background-transparent\">\n </canvas>\n <div #alphaPointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n }\n <div class=\"flex items-end\">\n <div class=\"text-center mr-[16px]\">\n <div class=\"libs-ui-color-picker-background-transparent rounded-[4px]\">\n <div #previewEl\n class=\"w-[32px] h-[32px] rounded-[4px] cursor-pointer\"\n (click)=\"handlerCopyColor($event)\"></div>\n </div>\n </div>\n @if (options().showHex) {\n <div class=\"text-center mr-[12px]\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">HEX</span>\n <div class=\"w-[88px]\">\n <libs_ui-components-inputs-input [(value)]=\"hex\"\n [classInclude]=\"'text-center !p-0'\"\n (outChange)=\"handlerValueChange($event, 'hex')\" />\n </div>\n </div>\n }\n <div>\n @if (options().showHsl) {\n <div class=\"flex\">\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">H</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"h\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"360\"\n [classInclude]=\"'text-center !p-0 !rounded-tr-none !rounded-br-none ' + (focus() === 's' ? '!border-r-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'h')\"\n (outChange)=\"handlerValueChange($event, 'h')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">S</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"s\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [classInclude]=\"'text-center !p-0 !rounded-none ' + (focus() === 's' ? '' : '!border-x-transparent')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 's')\"\n (outChange)=\"handlerValueChange($event, 's')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">L</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"l\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [classInclude]=\"'text-center !p-0 !rounded-tl-none !rounded-bl-none ' + (focus() === 's' ? '!border-l-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'l')\"\n (outChange)=\"handlerValueChange($event, 'l')\" />\n </div>\n </div>\n </div>\n }\n @if (options().showRgb) {\n <div class=\"flex\">\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">R</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"r\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-tr-none !rounded-br-none ' + (focus() === 'g' ? '!border-r-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'r')\"\n (outChange)=\"handlerValueChange($event, 'r')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">G</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"g\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-none ' + (focus() === 'g' ? '' : '!border-x-transparent')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'g')\"\n (outChange)=\"handlerValueChange($event, 'g')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">B</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"b\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-tl-none !rounded-bl-none ' + (focus() === 'g' ? '!border-l-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'b')\"\n (outChange)=\"handlerValueChange($event, 'b')\" />\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n</div>\n", styles: [".libs-ui-color-picker-background-transparent{background-image:conic-gradient(rgba(0,0,0,.06) 0 25%,transparent 0 50%,rgba(0,0,0,.06) 0 75%,transparent 0);background-size:11px 11px}.libs-ui-color-picker-dot{position:absolute;width:14px;height:14px;top:3px;left:0;background:transparent;border:1px solid #ffffff;pointer-events:none;border-radius:50px;z-index:1;box-shadow:0 1px 2px #000000bf}\n"], dependencies: [{ kind: "component", type: LibsUiComponentsInputsInputComponent, selector: "libs_ui-components-inputs-input", inputs: ["tagInput", "dataType", "typeInput", "modeInput", "tabInsertContentTagInput", "textAreaEnterNotNewLine", "emitEmptyInDataTypeNumber", "keepZeroInTypeInt", "autoAddZeroLessThan10InTypeInt", "ignoreBlockInputMaxValue", "maxValueNumber", "minValueNumber", "fixedFloat", "acceptNegativeValue", "valueUpDownNumber", "classInclude", "maxLength", "readonly", "disable", "noBorder", "backgroundNone", "borderError", "useColorModeExist", "placeholder", "keepPlaceholderOnly", "value", "autoRemoveEmoji", "defaultHeight", "minHeightTextArea", "maxHeightTextArea", "focusTimeOut", "blurTimeOut", "zIndexPopoverContent", "classContainerInput", "showCount", "ignoreStopPropagationEvent", "resize", "templateLeftBottomInput", "templateRightBottomInput", "classContainerBottomInput", "ignoreWidthInput100", "iframeTextareaCustomStyle", "iconLeftClass", "popoverContentIconLeft", "iconRightClass", "popoverContentIconRight", "resetAutoCompletePassword", "acceptOnlyClickIcon", "setIconRightColorSameColorDisableReadOnly", "onlyAcceptNegativeValue", "maxLengthNumberCount", "focusInput"], outputs: ["maxValueNumberChange", "minValueNumberChange", "fixedFloatChange", "acceptNegativeValueChange", "maxLengthChange", "valueChange", "maxLengthNumberCountChange", "outHeightAreaChange", "outChange", "outFocusAndBlurEvent", "outEnterEvent", "outInputEvent", "outIconLeft", "outIconRight", "outFunctionsControl", "outFilesDrop", "outFileDrop", "outChangeValueByButtonUpDown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
545
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsColorPickerComponent, isStandalone: true, selector: "libs_ui-components-color_picker", inputs: { customOptions: { classPropertyName: "customOptions", publicName: "customOptions", isSignal: true, isRequired: false, transformFunction: null }, noEmitEventColorWhenInitComponent: { classPropertyName: "noEmitEventColorWhenInitComponent", publicName: "noEmitEventColorWhenInitComponent", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outColorChange: "outColorChange", outColorChangeMutilType: "outColorChangeMutilType" }, viewQueries: [{ propertyName: "hueEl", first: true, predicate: ["hueEl"], descendants: true, isSignal: true }, { propertyName: "huePointerEl", first: true, predicate: ["huePointerEl"], descendants: true, isSignal: true }, { propertyName: "slEl", first: true, predicate: ["slEl"], descendants: true, isSignal: true }, { propertyName: "slPointerEl", first: true, predicate: ["slPointerEl"], descendants: true, isSignal: true }, { propertyName: "alphaEl", first: true, predicate: ["alphaEl"], descendants: true, isSignal: true }, { propertyName: "alphaPointerEl", first: true, predicate: ["alphaPointerEl"], descendants: true, isSignal: true }, { propertyName: "previewEl", first: true, predicate: ["previewEl"], descendants: true, isSignal: true }], ngImport: i0, template: "<div>\n <div class=\"relative\"\n [style.width.px]=\"options().slBarSize[0]\">\n <div>\n <canvas #slEl\n class=\"rounded-tl-[4px] rounded-tr-[4px] libs-ui-color-picker-background-transparent\"></canvas>\n <div #slPointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n <div class=\"relative\">\n <canvas #hueEl\n class=\"libs-ui-color-picker-background-transparent\"\n [class.rounded-bl-[4px]]=\"!options().showAlpha\"\n [class.rounded-br-[4px]]=\"!options().showAlpha\"></canvas>\n <div #huePointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n @if (options().showAlpha) {\n <div class=\"relative\">\n <canvas #alphaEl\n class=\"rounded-bl-[4px] rounded-br-[4px] libs-ui-color-picker-background-transparent\">\n </canvas>\n <div #alphaPointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n }\n <div class=\"flex items-end\">\n <div class=\"text-center mr-[16px]\">\n <div class=\"libs-ui-color-picker-background-transparent rounded-[4px]\">\n <div #previewEl\n class=\"w-[32px] h-[32px] rounded-[4px] cursor-pointer\"\n (click)=\"handlerCopyColor($event)\"></div>\n </div>\n </div>\n @if (options().showHex) {\n <div class=\"text-center mr-[12px]\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">HEX</span>\n <div class=\"w-[88px]\">\n <libs_ui-components-inputs-input [(value)]=\"hex\"\n [classInclude]=\"'text-center !p-0'\"\n (outChange)=\"handlerValueChange($event, 'hex')\" />\n </div>\n </div>\n }\n <div>\n @if (options().showHsl) {\n <div class=\"flex\">\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">H</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"h\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"360\"\n [classInclude]=\"'text-center !p-0 !rounded-tr-none !rounded-br-none ' + (focus() === 's' ? '!border-r-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'h')\"\n (outChange)=\"handlerValueChange($event, 'h')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">S</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"s\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [classInclude]=\"'text-center !p-0 !rounded-none ' + (focus() === 's' ? '' : '!border-x-transparent')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 's')\"\n (outChange)=\"handlerValueChange($event, 's')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">L</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"l\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [classInclude]=\"'text-center !p-0 !rounded-tl-none !rounded-bl-none ' + (focus() === 's' ? '!border-l-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'l')\"\n (outChange)=\"handlerValueChange($event, 'l')\" />\n </div>\n </div>\n </div>\n }\n @if (options().showRgb) {\n <div class=\"flex\">\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">R</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"r\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-tr-none !rounded-br-none ' + (focus() === 'g' ? '!border-r-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'r')\"\n (outChange)=\"handlerValueChange($event, 'r')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">G</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"g\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-none ' + (focus() === 'g' ? '' : '!border-x-transparent')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'g')\"\n (outChange)=\"handlerValueChange($event, 'g')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">B</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"b\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-tl-none !rounded-bl-none ' + (focus() === 'g' ? '!border-l-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'b')\"\n (outChange)=\"handlerValueChange($event, 'b')\" />\n </div>\n </div>\n <div class=\"text-center ml-[8px]\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">A</span>\n <div class=\"w-[78px]\">\n <libs_ui-components-inputs-valid [item]=\"{aValue:a()*100}\"\n [fieldNameBind]=\"'aValue'\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [unitsRight]=\"[{label:'%'}]\"\n [emitEmptyInDataTypeNumber]=\"true\"\n (outValueChange)=\"handlerValueChangeAlphaInput($event)\"/>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n", styles: [".libs-ui-color-picker-background-transparent{background-image:conic-gradient(rgba(0,0,0,.06) 0 25%,transparent 0 50%,rgba(0,0,0,.06) 0 75%,transparent 0);background-size:11px 11px}.libs-ui-color-picker-dot{position:absolute;width:14px;height:14px;top:3px;left:0;background:transparent;border:1px solid #ffffff;pointer-events:none;border-radius:50px;z-index:1;box-shadow:0 1px 2px #000000bf}\n"], dependencies: [{ kind: "component", type: LibsUiComponentsInputsInputComponent, selector: "libs_ui-components-inputs-input", inputs: ["tagInput", "dataType", "typeInput", "modeInput", "tabInsertContentTagInput", "textAreaEnterNotNewLine", "emitEmptyInDataTypeNumber", "keepZeroInTypeInt", "autoAddZeroLessThan10InTypeInt", "ignoreBlockInputMaxValue", "maxValueNumber", "minValueNumber", "fixedFloat", "acceptNegativeValue", "valueUpDownNumber", "classInclude", "maxLength", "readonly", "disable", "noBorder", "backgroundNone", "borderError", "useColorModeExist", "placeholder", "keepPlaceholderOnly", "value", "autoRemoveEmoji", "defaultHeight", "minHeightTextArea", "maxHeightTextArea", "focusTimeOut", "blurTimeOut", "zIndexPopoverContent", "classContainerInput", "showCount", "ignoreStopPropagationEvent", "resize", "templateLeftBottomInput", "templateRightBottomInput", "classContainerBottomInput", "ignoreWidthInput100", "iframeTextareaCustomStyle", "iconLeftClass", "popoverContentIconLeft", "iconRightClass", "popoverContentIconRight", "resetAutoCompletePassword", "acceptOnlyClickIcon", "setIconRightColorSameColorDisableReadOnly", "onlyAcceptNegativeValue", "maxLengthNumberCount", "focusInput"], outputs: ["maxValueNumberChange", "minValueNumberChange", "fixedFloatChange", "acceptNegativeValueChange", "maxLengthChange", "valueChange", "maxLengthNumberCountChange", "outHeightAreaChange", "outChange", "outFocusAndBlurEvent", "outEnterEvent", "outInputEvent", "outIconLeft", "outIconRight", "outFunctionsControl", "outFilesDrop", "outFileDrop", "outChangeValueByButtonUpDown"] }, { kind: "component", type: LibsUiComponentsInputsValidComponent, selector: "libs_ui-components-inputs-valid", inputs: ["item", "labelConfig", "emitEmptyInDataTypeNumber", "ignoreBlockInputMaxValue", "fieldNameBind", "showCount", "typeComponentSelectItem", "valueComponentSelectItem", "disableComponentSelectItem", "tagInput", "dataType", "typeInput", "modeInput", "resetAutoCompletePassword", "textAreaEnterNotNewLine", "fixedFloat", "acceptNegativeValue", "valueUpDownNumber", "ignoreWidthInput100", "classIncludeInput", "classContainerInput", "readonly", "disable", "noBorder", "backgroundNone", "useColorModeExist", "placeholder", "keepPlaceholderOnly", "classContainerBottomInput", "autoRemoveEmoji", "defaultHeight", "maxHeightTextArea", "minHeightTextArea", "ignoreShowError", "borderError", "iconLeftClass", "popoverContentIconLeft", "iconRightClass", "popoverContentIconRight", "zIndexPopoverContent", "unitsLeft", "configUnitLeft", "keySelectedUnitLeft", "unitsRight", "configUnitRight", "keySelectedUnitRight", "maxValueNumber", "minValueNumber", "ignoreContentLeft", "ignoreContentRight", "isBaselineStyle", "valuePatternShowError", "validPattern", "validRequired", "validMinLength", "validMinValue", "validMaxValue", "validMaxLength", "functionValid", "maxLength", "positionMessageErrorStartInput", "classInclude", "resize", "templateLeftBottomInput", "templateRightBottomInput", "onlyAcceptNegativeValue", "autoAddZeroLessThan10InTypeInt", "maxLengthNumberCount", "classMessageErrorInclude", "ignoreStopPropagationEvent", "ignoreUnitRightClassReadOnly", "paddingRightCustomSpecific", "focusTimeOut", "deboundTimeValiate"], outputs: ["itemChange", "outValueChange", "outSelect", "outIconLeft", "outIconRight", "outClickButtonLabel", "outSwitchEventLabel", "outLabelRightClick", "outEnterInputEvent", "outHeightAreaChange", "outFunctionsControl", "outFocusAndBlur", "outChangeValueByButtonUpDown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
528
546
  }
529
547
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsColorPickerComponent, decorators: [{
530
548
  type: Component,
531
549
  args: [{ selector: 'libs_ui-components-color_picker', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
532
- LibsUiComponentsInputsInputComponent
533
- ], template: "<div class=\"relative\"\n [style.width.px]=\"options().slBarSize[0]\">\n <div>\n <canvas #slEl\n class=\"rounded-tl-[4px] rounded-tr-[4px] libs-ui-color-picker-background-transparent\"></canvas>\n <div #slPointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n <div class=\"relative\">\n <canvas #hueEl\n class=\"libs-ui-color-picker-background-transparent\"\n [class.rounded-bl-[4px]]=\"!options().showAlpha\"\n [class.rounded-br-[4px]]=\"!options().showAlpha\"></canvas>\n <div #huePointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n @if (options().showAlpha) {\n <div class=\"relative\">\n <canvas #alphaEl\n class=\"rounded-bl-[4px] rounded-br-[4px] libs-ui-color-picker-background-transparent\">\n </canvas>\n <div #alphaPointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n }\n <div class=\"flex items-end\">\n <div class=\"text-center mr-[16px]\">\n <div class=\"libs-ui-color-picker-background-transparent rounded-[4px]\">\n <div #previewEl\n class=\"w-[32px] h-[32px] rounded-[4px] cursor-pointer\"\n (click)=\"handlerCopyColor($event)\"></div>\n </div>\n </div>\n @if (options().showHex) {\n <div class=\"text-center mr-[12px]\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">HEX</span>\n <div class=\"w-[88px]\">\n <libs_ui-components-inputs-input [(value)]=\"hex\"\n [classInclude]=\"'text-center !p-0'\"\n (outChange)=\"handlerValueChange($event, 'hex')\" />\n </div>\n </div>\n }\n <div>\n @if (options().showHsl) {\n <div class=\"flex\">\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">H</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"h\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"360\"\n [classInclude]=\"'text-center !p-0 !rounded-tr-none !rounded-br-none ' + (focus() === 's' ? '!border-r-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'h')\"\n (outChange)=\"handlerValueChange($event, 'h')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">S</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"s\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [classInclude]=\"'text-center !p-0 !rounded-none ' + (focus() === 's' ? '' : '!border-x-transparent')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 's')\"\n (outChange)=\"handlerValueChange($event, 's')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">L</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"l\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [classInclude]=\"'text-center !p-0 !rounded-tl-none !rounded-bl-none ' + (focus() === 's' ? '!border-l-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'l')\"\n (outChange)=\"handlerValueChange($event, 'l')\" />\n </div>\n </div>\n </div>\n }\n @if (options().showRgb) {\n <div class=\"flex\">\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">R</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"r\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-tr-none !rounded-br-none ' + (focus() === 'g' ? '!border-r-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'r')\"\n (outChange)=\"handlerValueChange($event, 'r')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">G</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"g\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-none ' + (focus() === 'g' ? '' : '!border-x-transparent')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'g')\"\n (outChange)=\"handlerValueChange($event, 'g')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">B</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"b\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-tl-none !rounded-bl-none ' + (focus() === 'g' ? '!border-l-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'b')\"\n (outChange)=\"handlerValueChange($event, 'b')\" />\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n</div>\n", styles: [".libs-ui-color-picker-background-transparent{background-image:conic-gradient(rgba(0,0,0,.06) 0 25%,transparent 0 50%,rgba(0,0,0,.06) 0 75%,transparent 0);background-size:11px 11px}.libs-ui-color-picker-dot{position:absolute;width:14px;height:14px;top:3px;left:0;background:transparent;border:1px solid #ffffff;pointer-events:none;border-radius:50px;z-index:1;box-shadow:0 1px 2px #000000bf}\n"] }]
550
+ LibsUiComponentsInputsInputComponent,
551
+ LibsUiComponentsInputsValidComponent
552
+ ], template: "<div>\n <div class=\"relative\"\n [style.width.px]=\"options().slBarSize[0]\">\n <div>\n <canvas #slEl\n class=\"rounded-tl-[4px] rounded-tr-[4px] libs-ui-color-picker-background-transparent\"></canvas>\n <div #slPointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n <div class=\"relative\">\n <canvas #hueEl\n class=\"libs-ui-color-picker-background-transparent\"\n [class.rounded-bl-[4px]]=\"!options().showAlpha\"\n [class.rounded-br-[4px]]=\"!options().showAlpha\"></canvas>\n <div #huePointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n @if (options().showAlpha) {\n <div class=\"relative\">\n <canvas #alphaEl\n class=\"rounded-bl-[4px] rounded-br-[4px] libs-ui-color-picker-background-transparent\">\n </canvas>\n <div #alphaPointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n }\n <div class=\"flex items-end\">\n <div class=\"text-center mr-[16px]\">\n <div class=\"libs-ui-color-picker-background-transparent rounded-[4px]\">\n <div #previewEl\n class=\"w-[32px] h-[32px] rounded-[4px] cursor-pointer\"\n (click)=\"handlerCopyColor($event)\"></div>\n </div>\n </div>\n @if (options().showHex) {\n <div class=\"text-center mr-[12px]\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">HEX</span>\n <div class=\"w-[88px]\">\n <libs_ui-components-inputs-input [(value)]=\"hex\"\n [classInclude]=\"'text-center !p-0'\"\n (outChange)=\"handlerValueChange($event, 'hex')\" />\n </div>\n </div>\n }\n <div>\n @if (options().showHsl) {\n <div class=\"flex\">\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">H</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"h\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"360\"\n [classInclude]=\"'text-center !p-0 !rounded-tr-none !rounded-br-none ' + (focus() === 's' ? '!border-r-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'h')\"\n (outChange)=\"handlerValueChange($event, 'h')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">S</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"s\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [classInclude]=\"'text-center !p-0 !rounded-none ' + (focus() === 's' ? '' : '!border-x-transparent')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 's')\"\n (outChange)=\"handlerValueChange($event, 's')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">L</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"l\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [classInclude]=\"'text-center !p-0 !rounded-tl-none !rounded-bl-none ' + (focus() === 's' ? '!border-l-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'l')\"\n (outChange)=\"handlerValueChange($event, 'l')\" />\n </div>\n </div>\n </div>\n }\n @if (options().showRgb) {\n <div class=\"flex\">\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">R</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"r\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-tr-none !rounded-br-none ' + (focus() === 'g' ? '!border-r-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'r')\"\n (outChange)=\"handlerValueChange($event, 'r')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">G</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"g\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-none ' + (focus() === 'g' ? '' : '!border-x-transparent')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'g')\"\n (outChange)=\"handlerValueChange($event, 'g')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">B</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"b\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-tl-none !rounded-bl-none ' + (focus() === 'g' ? '!border-l-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'b')\"\n (outChange)=\"handlerValueChange($event, 'b')\" />\n </div>\n </div>\n <div class=\"text-center ml-[8px]\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">A</span>\n <div class=\"w-[78px]\">\n <libs_ui-components-inputs-valid [item]=\"{aValue:a()*100}\"\n [fieldNameBind]=\"'aValue'\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [unitsRight]=\"[{label:'%'}]\"\n [emitEmptyInDataTypeNumber]=\"true\"\n (outValueChange)=\"handlerValueChangeAlphaInput($event)\"/>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n", styles: [".libs-ui-color-picker-background-transparent{background-image:conic-gradient(rgba(0,0,0,.06) 0 25%,transparent 0 50%,rgba(0,0,0,.06) 0 75%,transparent 0);background-size:11px 11px}.libs-ui-color-picker-dot{position:absolute;width:14px;height:14px;top:3px;left:0;background:transparent;border:1px solid #ffffff;pointer-events:none;border-radius:50px;z-index:1;box-shadow:0 1px 2px #000000bf}\n"] }]
534
553
  }], ctorParameters: () => [] });
535
554
 
536
555
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"libs-ui-components-color-picker.mjs","sources":["../../../../../libs-ui/components/color-picker/src/utils/picker.ts","../../../../../libs-ui/components/color-picker/src/color-picker.component.ts","../../../../../libs-ui/components/color-picker/src/color-picker.component.html","../../../../../libs-ui/components/color-picker/src/libs-ui-components-color-picker.ts"],"sourcesContent":["import { get, isNil, set } from \"@libs-ui/utils\";\nimport { IPickerOptions } from \"../interfaces\";\n\nexport const ColorNames = { 'aliceblue': '#F0F8FF', 'antiquewhite': '#FAEBD7', 'aqua': '#00FFFF', 'aquamarine': '#7FFFD4', 'azure': '#F0FFFF', 'beige': '#F5F5DC', 'bisque': '#FFE4C4', 'black': '#000000', 'blanchedalmond': '#FFEBCD', 'blue': '#0000FF', 'blueviolet': '#8A2BE2', 'brown': '#A52A2A', 'burlywood': '#DEB887', 'cadetblue': '#5F9EA0', 'chartreuse': '#7FFF00', 'chocolate': '#D2691E', 'coral': '#FF7F50', 'cornflowerblue': '#6495ED', 'cornsilk': '#FFF8DC', 'crimson': '#DC143C', 'cyan': '#00FFFF', 'darkblue': '#00008B', 'darkcyan': '#008B8B', 'darkgoldenrod': '#B8860B', 'darkgray': '#A9A9A9', 'darkgrey': '#A9A9A9', 'darkgreen': '#006400', 'darkkhaki': '#BDB76B', 'darkmagenta': '#8B008B', 'darkolivegreen': '#556B2F', 'darkorange': '#FF8C00', 'darkorchid': '#9932CC', 'darkred': '#8B0000', 'darksalmon': '#E9967A', 'darkseagreen': '#8FBC8F', 'darkslateblue': '#483D8B', 'darkslategray': '#2F4F4F', 'darkslategrey': '#2F4F4F', 'darkturquoise': '#00CED1', 'darkviolet': '#9400D3', 'deeppink': '#FF1493', 'deepskyblue': '#00BFFF', 'dimgray': '#696969', 'dimgrey': '#696969', 'dodgerblue': '#1E90FF', 'firebrick': '#B22222', 'floralwhite': '#FFFAF0', 'forestgreen': '#228B22', 'fuchsia': '#FF00FF', 'gainsboro': '#DCDCDC', 'ghostwhite': '#F8F8FF', 'gold': '#FFD700', 'goldenrod': '#DAA520', 'gray': '#808080', 'grey': '#808080', 'green': '#008000', 'greenyellow': '#ADFF2F', 'honeydew': '#F0FFF0', 'hotpink': '#FF69B4', 'indianred ': '#CD5C5C', 'indigo ': '#4B0082', 'ivory': '#FFFFF0', 'khaki': '#F0E68C', 'lavender': '#E6E6FA', 'lavenderblush': '#FFF0F5', 'lawngreen': '#7CFC00', 'lemonchiffon': '#FFFACD', 'lightblue': '#ADD8E6', 'lightcoral': '#F08080', 'lightcyan': '#E0FFFF', 'lightgoldenrodyellow': '#FAFAD2', 'lightgray': '#D3D3D3', 'lightgrey': '#D3D3D3', 'lightgreen': '#90EE90', 'lightpink': '#FFB6C1', 'lightsalmon': '#FFA07A', 'lightseagreen': '#20B2AA', 'lightskyblue': '#87CEFA', 'lightslategray': '#778899', 'lightslategrey': '#778899', 'lightsteelblue': '#B0C4DE', 'lightyellow': '#FFFFE0', 'lime': '#00FF00', 'limegreen': '#32CD32', 'linen': '#FAF0E6', 'magenta': '#FF00FF', 'maroon': '#800000', 'mediumaquamarine': '#66CDAA', 'mediumblue': '#0000CD', 'mediumorchid': '#BA55D3', 'mediumpurple': '#9370DB', 'mediumseagreen': '#3CB371', 'mediumslateblue': '#7B68EE', 'mediumspringgreen': '#00FA9A', 'mediumturquoise': '#48D1CC', 'mediumvioletred': '#C71585', 'midnightblue': '#191970', 'mintcream': '#F5FFFA', 'mistyrose': '#FFE4E1', 'moccasin': '#FFE4B5', 'navajowhite': '#FFDEAD', 'navy': '#000080', 'oldlace': '#FDF5E6', 'olive': '#808000', 'olivedrab': '#6B8E23', 'orange': '#FFA500', 'orangered': '#FF4500', 'orchid': '#DA70D6', 'palegoldenrod': '#EEE8AA', 'palegreen': '#98FB98', 'paleturquoise': '#AFEEEE', 'palevioletred': '#DB7093', 'papayawhip': '#FFEFD5', 'peachpuff': '#FFDAB9', 'peru': '#CD853F', 'pink': '#FFC0CB', 'plum': '#DDA0DD', 'powderblue': '#B0E0E6', 'purple': '#800080', 'rebeccapurple': '#663399', 'red': '#FF0000', 'rosybrown': '#BC8F8F', 'royalblue': '#4169E1', 'saddlebrown': '#8B4513', 'salmon': '#FA8072', 'sandybrown': '#F4A460', 'seagreen': '#2E8B57', 'seashell': '#FFF5EE', 'sienna': '#A0522D', 'silver': '#C0C0C0', 'skyblue': '#87CEEB', 'slateblue': '#6A5ACD', 'slategray': '#708090', 'slategrey': '#708090', 'snow': '#FFFAFA', 'springgreen': '#00FF7F', 'steelblue': '#4682B4', 'tan': '#D2B48C', 'teal': '#008080', 'thistle': '#D8BFD8', 'tomato': '#FF6347', 'turquoise': '#40E0D0', 'violet': '#EE82EE', 'wheat': '#F5DEB3', 'white': '#FFFFFF', 'whitesmoke': '#F5F5F5', 'yellow': '#FFFF00', 'yellowgreen': '#9ACD32' };\nexport const optionsDefault = (): IPickerOptions => {\n return {\n showHsl: false,\n showRgb: true,\n showHex: true,\n showAlpha: false,\n color: '#ff0000',\n format: 'color',\n slBarSize: [316, 200],\n hueBarSize: [316, 20],\n alphaBarSize: [316, 20]\n };\n}\n\nexport const limit = (value: number | string, min: number, max: number) => {\n value = +value;\n return isNaN(value) ? min : (value < min ? min : (value > max ? max : value));\n}\n\nexport const hslToRgb = (h: number, s: number, l: number) => {\n let r, g, b;\n [h, s, l] = [limit(h, 0, 360) / 360, limit(s, 0, 100) / 100, limit(l, 0, 100) / 100];\n\n if (s == 0) {\n r = g = b = l; // achromatic\n\n return [r * 255, g * 255, b * 255].map(Math.round);\n }\n const hueToRgb = (p: number, q: number, t: number) => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n\n return p;\n };\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = (2 * l) - q;\n\n r = hueToRgb(p, q, h + (1 / 3));\n g = hueToRgb(p, q, h);\n b = hueToRgb(p, q, h - (1 / 3));\n\n return [r * 255, g * 255, b * 255].map(Math.round);\n}\n\nexport const cssColorToRgba = (color: string) => {\n if (color) {\n const colorByName = get(ColorNames, color.toLowerCase());\n const [, , , r, g, b, a, , rr, gg, bb, aa] = /^\\s*#?((([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])?)|(([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})?))\\s*$/i.exec(colorByName || color) || [];\n if (!isNil(r)) {\n return [\n parseInt(r + r, 16),\n parseInt(g + g, 16),\n parseInt(b + b, 16),\n a ? +((parseInt(a + a, 16)) / 255).toFixed(2) : 1\n ];\n }\n if (!isNil(rr)) {\n return [\n parseInt(rr, 16),\n parseInt(gg, 16),\n parseInt(bb, 16),\n aa ? +((parseInt(aa, 16)) / 255).toFixed(2) : 1\n ];\n }\n }\n\n return undefined;\n}\n\nexport const parseColorToRgba = (color: string | Array<number>) => {\n if (Array.isArray(color)) {\n return [\n limit(color[0], 0, 255),\n limit(color[1], 0, 255),\n limit(color[2], 0, 255),\n limit(color[3] ?? 1, 0, 1)\n ];\n }\n const parsed = cssColorToRgba(color) || cssRgbaToRgba(color);\n\n if (parsed && parsed.length === 3) {\n parsed.push(1);\n }\n\n return parsed;\n}\n\nexport const cssRgbaToRgba = (rgba: string) => {\n if (rgba) {\n const [m, r, g, b, , a] = /^rgba?\\((\\d+)\\s*[\\s,]\\s*(\\d+)\\s*[\\s,]\\s*(\\d+)(\\s*[\\s,]\\s*(\\d*(.\\d+)?))?\\)/i.exec(rgba) || [];\n\n return m ? [limit(r, 0, 255), limit(g, 0, 255), limit(b, 0, 255), limit(a ?? 1, 0, 1)] : undefined;\n }\n\n return undefined;\n}\n\nexport const cssHslaToHsla = (hsla: string) => {\n if (hsla) {\n const [m, h, s, l, , a] = /^hsla?\\((\\d+)\\s*[\\s,]\\s*(\\d+)\\s*[\\s,]\\s*(\\d+)(\\s*[\\s,]\\s*(\\d*(.\\d+)?))?\\)/i.exec(hsla) || [];\n\n return m ? [limit(h, 0, 255), limit(s, 0, 255), limit(l, 0, 255), limit(a ?? 1, 0, 1)] : undefined;\n }\n\n return undefined;\n}\n\nexport const parseColorToHsla = (color: string | Array<number>) => {\n if (Array.isArray(color)) {\n return [\n limit(color[0], 0, 360),\n limit(color[1], 0, 100),\n limit(color[2], 0, 100),\n limit(color[3] ?? 1, 0, 1)\n ];\n }\n const parsed = cssHslaToHsla(color);\n\n if (parsed && parsed.length === 3) {\n parsed.push(1);\n }\n\n return parsed;\n}\n\nexport const rgbToHsl = (r: number, g: number, b: number) => {\n [r, g, b] = [limit(r, 0, 255) / 255, limit(g, 0, 255) / 255, limit(b, 0, 255) / 255];\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h, s = (max + min) / 2;\n const l = (max + min) / 2;\n\n if (max == min) {\n h = s = 0; // achromatic\n\n return [h * 360, s * 100, l * 100].map(Math.round);\n }\n const d = max - min;\n\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = ((g - b) / d) + (g < b ? 6 : 0);\n break;\n case g:\n h = ((b - r) / d) + 2;\n break;\n case b:\n h = ((r - g) / d) + 4;\n break;\n }\n h = (h || 0) / 6;\n\n return [h * 360, s * 100, l * 100].map(Math.round);\n}\n\nexport const rgbToHex = (r: number, g: number, b: number) => {\n [r, g, b] = [limit(r, 0, 255), limit(g, 0, 255), limit(b, 0, 255)];\n\n return \"#\" + (\"000000\" + ((r << 16) | (g << 8) | b).toString(16)).slice(-6);\n}\n\nexport const rgbToInt = (r: number, g: number, b: number) => {\n return (r << 16) | (g << 8) | b;\n}\n\nexport const rgbToHsv = (r: number, g: number, b: number) => {\n [r, g, b] = [limit(r, 0, 255) / 255, limit(g, 0, 255) / 255, limit(b, 0, 255) / 255];\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h, s = max;\n const v = max;\n const d = max - min;\n s = max === 0 ? 0 : d / max;\n\n if (max == min) {\n h = 0;\n\n return [h, s, v];\n }\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h = (h || 0) / 6;\n\n return [h, s, v];\n}\n\nexport const formatColor = (data: Array<number>, format: string) => {\n switch (format) {\n case 'rgb':\n default:\n return data.slice(0, 3);\n case 'rgbcss':\n return `rgb(${data[0]}, ${data[1]}, ${data[2]})`;\n case 'rgbcss4':\n return `rgb(${data[0]}, ${data[1]}, ${data[2]}, ${data[3]})`;\n case 'rgba':\n return data;\n case 'rgbacss':\n return `rgba(${data[0]}, ${data[1]}, ${data[2]}, ${data[3]})`;\n case 'hsl':\n return rgbToHsl(data[0], data[1], data[2]);\n case 'hslcss':\n data = rgbToHsl(data[0], data[1], data[2]);\n\n return `hsl(${data[0]}, ${data[1]}, ${data[2]})`;\n case 'hslcss4': {\n const hh = rgbToHsl(data[0], data[1], data[2]);\n\n return `hsl(${hh[0]}, ${hh[1]}, ${hh[2]}, ${data[3]})`;\n }\n case 'hsla':\n return [...rgbToHsl(data[0], data[1], data[2]), data[3]];\n case 'hslacss': {\n const ha = rgbToHsl(data[0], data[1], data[2]);\n\n return `hsla(${ha[0]}, ${ha[1]}, ${ha[2]}, ${data[3]})`;\n }\n case 'hex':\n return rgbToHex(data[0], data[1], data[2]);\n case 'hexcss4':\n return rgbToHex(data[0], data[1], data[2]) + ('00' + parseInt((data[3] * 255).toString()).toString(16)).slice(-2);\n case 'int':\n return rgbToInt(data[0], data[1], data[2]);\n }\n}\n\nexport const parseColor = (color: string | Array<number>, format: string | object) => {\n if (!isNil(color)) {\n let data: Array<number> | undefined = [];\n\n data = parseColorToRgba(color) || (parseColorToHsla(color) && [...hslToRgb(data[0], data[1], data[2]), data[3]]);\n if (data) {\n if (typeof format === 'object') {\n return ['rgb', 'rgbcss', 'rgbcss4', 'rgba', 'rgbacss', 'hsl', 'hslcss', 'hslcss4', 'hsla', 'hslacss', 'hex', 'hexcss4', 'int'].reduce((m, f) => {\n set(m, f, formatColor(data, f));\n\n return m;\n }, format);\n }\n\n return formatColor(data, format as string);\n }\n }\n\n return undefined;\n}\n\nexport const defaultHelper = () => {\n return {\n setHue: () => { return },\n grabColor: () => [],\n findColor: () => []\n };\n}","import { AfterViewInit, ChangeDetectionStrategy, Component, effect, ElementRef, inject, input, OnDestroy, OnInit, output, signal, viewChild } from \"@angular/core\";\nimport { IFocusAndBlurEvent, LibsUiComponentsInputsInputComponent } from \"@libs-ui/components-inputs-input\";\nimport { LibsUiNotificationService } from \"@libs-ui/services-notification\";\nimport { getDragEventByElement, set } from \"@libs-ui/utils\";\nimport { Subject } from \"rxjs\";\nimport { ICanvasHelper, IConfigUpdate, IPickerCustomOptions, IPickerOptions } from \"./interfaces/picker.interface\";\nimport { cssColorToRgba, defaultHelper, hslToRgb, limit, optionsDefault, parseColor, rgbToHex, rgbToHsl, rgbToHsv } from \"./utils/picker\";\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-color_picker',\n templateUrl: './color-picker.component.html',\n styleUrl: './color-picker.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n LibsUiComponentsInputsInputComponent\n ]\n})\nexport class LibsUiComponentsColorPickerComponent implements OnInit, AfterViewInit,OnDestroy {\n\n // #region PROPERTY\n protected options = signal<IPickerOptions>(optionsDefault());\n protected focus = signal<string | undefined>(undefined);\n protected hex = signal<string>('');\n protected s = signal<number>(0);\n protected h = signal<number>(0);\n protected l = signal<number>(0);\n protected r = signal<number>(0);\n protected g = signal<number>(0);\n protected b = signal<number>(0);\n protected a = signal<number>(1);\n\n private slBarHelper = signal<ICanvasHelper>(defaultHelper());\n private notificationService = inject(LibsUiNotificationService);\n private onDestroy = new Subject<void>();\n\n // #region INPUT\n readonly customOptions = input<IPickerCustomOptions>();\n\n // #region OUTPUT\n readonly outColorChange = output<string>();\n\n /* VIEW CHILD */\n private readonly hueEl = viewChild<ElementRef>('hueEl');\n private readonly huePointerEl = viewChild<ElementRef>('huePointerEl');\n private readonly slEl = viewChild<ElementRef>('slEl');\n private readonly slPointerEl = viewChild<ElementRef>('slPointerEl');\n private readonly alphaEl = viewChild<ElementRef>('alphaEl');\n private readonly alphaPointerEl = viewChild<ElementRef>('alphaPointerEl');\n private readonly previewEl = viewChild<ElementRef>('previewEl');\n\n constructor() {\n effect(() => {\n const ctx = this.alphaEl()?.nativeElement.getContext('2d');\n\n if (!ctx) {\n return;\n }\n ctx.clearRect(0, 0, this.options().alphaBarSize[0], this.options().alphaBarSize[1]);\n const gradient = ctx.createLinearGradient(0, 0, this.alphaEl()?.nativeElement.width - 1, 0);\n\n gradient.addColorStop(0, `hsla(${this.h()},${this.s()}%,${this.l()}%, 0)`);\n gradient.addColorStop(1, `hsla(${this.h()},${this.s()}%,${this.l()}%, 1)`);\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, this.options().alphaBarSize[0], this.options().alphaBarSize[1]);\n })\n }\n\n /* FUNCTIONS */\n ngOnInit(): void {\n if (this.customOptions()) {\n this.options.update(options => ({ ...options, ...this.customOptions() }))\n }\n }\n\n ngAfterViewInit(): void {\n this.setupHueCanvas();\n this.setupSlCanvas();\n this.setupSlBarHelper();\n if (this.options().showAlpha) {\n this.setupAlphaCanvas();\n }\n this.handlerColorChange(this.options().format, this.options().color, true);\n }\n\n private setupHueCanvas() {\n const canvas = this.hueEl()?.nativeElement;\n\n canvas.width = this.options().hueBarSize[0];\n canvas.height = this.options().hueBarSize[1];\n const ctx = canvas.getContext('2d');\n const gradient = ctx.createLinearGradient(0, 0, this.options().hueBarSize[0], 0);\n const step = 1 / 360;\n\n for (let ii = 0; ii <= 1; ii += step) {\n gradient.addColorStop(ii, `hsl(${360 * ii}, 100%, 50%)`);\n }\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, this.options().hueBarSize[0], this.options().hueBarSize[1]);\n\n getDragEventByElement({elementMouseDown:canvas,isStartWithMouseDonwEvent:true,onDestroy:this.onDestroy}).subscribe((event: MouseEvent)=>{\n const x = limit(event.clientX - canvas.getBoundingClientRect().left, 0, this.options().hueBarSize[0]);\n const hue = Math.round(x * 360 / this.options().hueBarSize[0]);\n \n set(this.huePointerEl()?.nativeElement.style, 'left', `${x - 7}px`);\n this.h.set(hue);\n this.handlerColorChange('h', hue);\n });\n \n }\n\n private setupSlCanvas() {\n const canvas = this.slEl()?.nativeElement;\n\n canvas.width = this.options().slBarSize[0];\n canvas.height = this.options().slBarSize[1];\n\n getDragEventByElement({elementMouseDown:canvas,isStartWithMouseDonwEvent:true,onDestroy:this.onDestroy}).subscribe((event)=>{\n const x = limit(event.clientX - canvas.getBoundingClientRect().left, 0, this.options().slBarSize[0] - 1);\n const y = limit(event.clientY - canvas.getBoundingClientRect().top, 0, this.options().slBarSize[1] - 1);\n const c = this.slBarHelper().grabColor(x, y);\n\n set(this.slPointerEl()?.nativeElement.style, 'left', `${x - 7}px`);\n set(this.slPointerEl()?.nativeElement.style, 'top', `${y - 7}px`);\n this.handlerColorChange('rgb', c);\n });\n \n }\n\n private setupSlBarHelper() {\n const canvas = this.slEl()?.nativeElement;\n const ctx = canvas.getContext('2d');\n const width = +canvas.width;\n const height = +canvas.height;\n const whiteBlackGradient = ctx.createLinearGradient(1, 1, 1, height - 1);\n\n whiteBlackGradient.addColorStop(0, 'white');\n whiteBlackGradient.addColorStop(1, 'black');\n\n this.slBarHelper.set({\n setHue: (hue: number) => {\n const colorGradient = ctx.createLinearGradient(1, 0, width - 1, 0);\n colorGradient.addColorStop(0, `hsla(${hue}, 100%, 50%, 0)`);\n colorGradient.addColorStop(1, `hsla(${hue}, 100%, 50%, 1)`);\n\n ctx.fillStyle = whiteBlackGradient;\n ctx.fillRect(0, 0, width, height);\n ctx.fillStyle = colorGradient;\n ctx.globalCompositeOperation = 'multiply';\n ctx.fillRect(0, 0, width, height);\n ctx.globalCompositeOperation = 'source-over';\n },\n grabColor: (x: number, y: number) => ctx.getImageData(x, y, 1, 1).data,\n findColor: (r: number, g: number, b: number) => {\n const [, s, v] = rgbToHsv(r, g, b);\n const x = s * width;\n const y = height - (v * height);\n\n return [x, y];\n }\n });\n }\n\n private setupAlphaCanvas() {\n const canvas = this.alphaEl()?.nativeElement;\n\n canvas.width = this.options().alphaBarSize[0];\n canvas.height = this.options().alphaBarSize[1];\n const ctx = canvas.getContext('2d');\n const gradient = ctx.createLinearGradient(0, 0, canvas.width - 1, 0);\n\n gradient.addColorStop(0, `hsla(${this.h()},${this.s()}%,${this.l()}%, 0)`);\n gradient.addColorStop(1, `hsla(${this.h()},${this.s()}%,${this.l()}%, 1)`);\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, this.options().alphaBarSize[0], this.options().alphaBarSize[1]);\n \n getDragEventByElement({elementMouseDown:canvas,isStartWithMouseDonwEvent:true,onDestroy:this.onDestroy}).subscribe((event)=>{\n const x = limit(event.clientX - canvas.getBoundingClientRect().left, 0, this.options().alphaBarSize[0]);\n const alpha = +(x / this.options().alphaBarSize[0]).toFixed(2);\n\n set(this.alphaPointerEl()?.nativeElement.style, 'left', `${x - 7}px`);\n this.handlerColorChange('alpha', alpha);\n });\n }\n\n protected handlerCopyColor(event: Event) {\n event.stopPropagation();\n window.navigator.clipboard.writeText(this.hex());\n this.notificationService.showCompTypeTextSuccess('i18n_copy_successfully');\n }\n\n private updatePointerH(h: number) {\n const x = this.options().hueBarSize[0] * h / 360;\n\n set(this.huePointerEl()?.nativeElement.style, 'left', `${x - 7}px`);\n }\n\n private updatePointerSl(h: number, s: number, l: number) {\n const [r, g, b] = hslToRgb(h, s, l);\n const [x, y] = this.slBarHelper().findColor(r, g, b) as Array<number>;\n\n if (x >= 0) {\n set(this.slPointerEl()?.nativeElement.style, 'left', `${x - 7}px`);\n set(this.slPointerEl()?.nativeElement.style, 'top', `${y - 7}px`);\n }\n }\n\n private updatePointerA(a: number) {\n if (!this.options().showAlpha) {\n return;\n }\n const x = this.options().alphaBarSize[0] * a;\n\n set(this.alphaPointerEl()?.nativeElement.style, 'left', `${x - 7}px`);\n }\n\n private updateHex(r: number, g: number, b: number, a: number) {\n if (this.options().showAlpha) {\n this.hex.set(parseColor([r, g, b, a], 'hexcss4') as string);\n\n return;\n }\n this.hex.set(rgbToHex(r, g, b));\n }\n\n private updateRgb() {\n const rgb = hslToRgb(this.h(), this.s(), this.l());\n\n this.r.set(rgb[0]);\n this.g.set(rgb[1]);\n this.b.set(rgb[2]);\n }\n\n private updateHsl() {\n const hsl = rgbToHsl(this.r(), this.g(), this.b());\n\n this.h.set(hsl[0]);\n this.s.set(hsl[1]);\n this.l.set(hsl[2]);\n }\n\n private updateValuesAndPointer(config: IConfigUpdate) {\n if (config.rgb) {\n this.updateRgb();\n }\n if (config.hsl) {\n this.updateHsl();\n }\n if (config.hue) {\n this.slBarHelper().setHue(this.h());\n }\n if (config.hPoint) {\n this.updatePointerH(this.h());\n }\n if (config.slPoint) {\n this.updatePointerSl(this.h(), this.s(), this.l());\n }\n if (config.hex) {\n this.updateHex(this.r(), this.g(), this.b(), this.a());\n }\n if (config.aPoint) {\n this.updatePointerA(this.a());\n }\n }\n\n private handlerColorChange(key: string, value: string | number | Array<number>, silent = false) {\n let config: IConfigUpdate = {};\n\n switch (key) {\n case 'h':\n config = { hPoint: true, hex: true, rgb: true, hue: true };\n break;\n case 's':\n config = { slPoint: true, hex: true, rgb: true };\n break;\n case 'l':\n config = { slPoint: true, hex: true, rgb: true };\n break;\n case 'r':\n config = { hPoint: true, slPoint: true, hex: true, hsl: true, hue: true };\n break;\n case 'g':\n config = { hPoint: true, slPoint: true, hex: true, hsl: true, hue: true };\n break;\n case 'b':\n config = { hPoint: true, slPoint: true, hex: true, hsl: true, hue: true };\n break;\n case 'rgb':\n this.r.set((value as Array<number>)[0]);\n this.g.set((value as Array<number>)[1]);\n this.b.set((value as Array<number>)[2]);\n config = { hex: true, hsl: true };\n break;\n case 'rgba':\n this.r.set((value as Array<number>)[0]);\n this.g.set((value as Array<number>)[1]);\n this.b.set((value as Array<number>)[2]);\n this.a.set((value as Array<number>)[3]);\n config = { hPoint: true, slPoint: true, hex: true, aPoint: true, hsl: true, hue: true };\n break;\n case 'hsl':\n this.h.set((value as Array<number>)[0]);\n this.s.set((value as Array<number>)[1]);\n this.l.set((value as Array<number>)[2]);\n config = { hPoint: true, slPoint: true, hex: true, aPoint: true, rgb: true, hue: true };\n break;\n case 'hsla':\n this.h.set((value as Array<number>)[0]);\n this.s.set((value as Array<number>)[1]);\n this.l.set((value as Array<number>)[2]);\n this.a.set((value as Array<number>)[3]);\n config = { hPoint: true, slPoint: true, hex: true, aPoint: true, rgb: true, hue: true };\n break;\n case 'hex': {\n const rgba = cssColorToRgba(value as string) || [this.r(), this.g(), this.b(), this.a()];\n\n this.r.set(rgba[0]);\n this.g.set(rgba[1]);\n this.b.set(rgba[2]);\n this.a.set(rgba[3]);\n config = { hPoint: true, slPoint: true, aPoint: true, hsl: true, hue: true };\n break;\n }\n case 'color': {\n const rgba = (parseColor(value as string | Array<number>, 'rgba') || [0, 0, 0, 1]) as Array<number>;\n\n this.r.set(rgba[0]);\n this.g.set(rgba[1]);\n this.b.set(rgba[2]);\n this.a.set(rgba[3]);\n config = { hPoint: true, slPoint: true, hex: true, aPoint: true, hsl: true, hue: true };\n\n break;\n }\n case 'alpha':\n this.a.set(value as number);\n this.updateHex(this.r(), this.g(), this.b(), this.a());\n break;\n }\n this.updateValuesAndPointer(config);\n set(this.previewEl()?.nativeElement.style, 'backgroundColor', this.a() === 1 ? `rgb(${this.r()},${this.g()},${this.b()})` : `rgba(${this.r()},${this.g()},${this.b()},${this.a()})`);\n if (!silent) {\n this.outColorChange.emit(this.hex());\n }\n }\n\n protected handlerFocusAndBlur(event: IFocusAndBlurEvent, key: string) {\n this.focus.set(event.name === 'blur' ? undefined : key);\n }\n\n protected handlerValueChange(event: string | number, key: string) {\n this.handlerColorChange(key, event);\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n\n}","<div class=\"relative\"\n [style.width.px]=\"options().slBarSize[0]\">\n <div>\n <canvas #slEl\n class=\"rounded-tl-[4px] rounded-tr-[4px] libs-ui-color-picker-background-transparent\"></canvas>\n <div #slPointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n <div class=\"relative\">\n <canvas #hueEl\n class=\"libs-ui-color-picker-background-transparent\"\n [class.rounded-bl-[4px]]=\"!options().showAlpha\"\n [class.rounded-br-[4px]]=\"!options().showAlpha\"></canvas>\n <div #huePointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n @if (options().showAlpha) {\n <div class=\"relative\">\n <canvas #alphaEl\n class=\"rounded-bl-[4px] rounded-br-[4px] libs-ui-color-picker-background-transparent\">\n </canvas>\n <div #alphaPointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n }\n <div class=\"flex items-end\">\n <div class=\"text-center mr-[16px]\">\n <div class=\"libs-ui-color-picker-background-transparent rounded-[4px]\">\n <div #previewEl\n class=\"w-[32px] h-[32px] rounded-[4px] cursor-pointer\"\n (click)=\"handlerCopyColor($event)\"></div>\n </div>\n </div>\n @if (options().showHex) {\n <div class=\"text-center mr-[12px]\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">HEX</span>\n <div class=\"w-[88px]\">\n <libs_ui-components-inputs-input [(value)]=\"hex\"\n [classInclude]=\"'text-center !p-0'\"\n (outChange)=\"handlerValueChange($event, 'hex')\" />\n </div>\n </div>\n }\n <div>\n @if (options().showHsl) {\n <div class=\"flex\">\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">H</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"h\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"360\"\n [classInclude]=\"'text-center !p-0 !rounded-tr-none !rounded-br-none ' + (focus() === 's' ? '!border-r-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'h')\"\n (outChange)=\"handlerValueChange($event, 'h')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">S</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"s\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [classInclude]=\"'text-center !p-0 !rounded-none ' + (focus() === 's' ? '' : '!border-x-transparent')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 's')\"\n (outChange)=\"handlerValueChange($event, 's')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">L</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"l\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [classInclude]=\"'text-center !p-0 !rounded-tl-none !rounded-bl-none ' + (focus() === 's' ? '!border-l-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'l')\"\n (outChange)=\"handlerValueChange($event, 'l')\" />\n </div>\n </div>\n </div>\n }\n @if (options().showRgb) {\n <div class=\"flex\">\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">R</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"r\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-tr-none !rounded-br-none ' + (focus() === 'g' ? '!border-r-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'r')\"\n (outChange)=\"handlerValueChange($event, 'r')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">G</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"g\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-none ' + (focus() === 'g' ? '' : '!border-x-transparent')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'g')\"\n (outChange)=\"handlerValueChange($event, 'g')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">B</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"b\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-tl-none !rounded-bl-none ' + (focus() === 'g' ? '!border-l-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'b')\"\n (outChange)=\"handlerValueChange($event, 'b')\" />\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"libs-ui-components-color-picker.mjs","sources":["../../../../../libs-ui/components/color-picker/src/utils/picker.ts","../../../../../libs-ui/components/color-picker/src/color-picker.component.ts","../../../../../libs-ui/components/color-picker/src/color-picker.component.html","../../../../../libs-ui/components/color-picker/src/libs-ui-components-color-picker.ts"],"sourcesContent":["import { get, isNil, set } from \"@libs-ui/utils\";\nimport { IPickerOptions } from \"../interfaces\";\n\nexport const ColorNames = { 'aliceblue': '#F0F8FF', 'antiquewhite': '#FAEBD7', 'aqua': '#00FFFF', 'aquamarine': '#7FFFD4', 'azure': '#F0FFFF', 'beige': '#F5F5DC', 'bisque': '#FFE4C4', 'black': '#000000', 'blanchedalmond': '#FFEBCD', 'blue': '#0000FF', 'blueviolet': '#8A2BE2', 'brown': '#A52A2A', 'burlywood': '#DEB887', 'cadetblue': '#5F9EA0', 'chartreuse': '#7FFF00', 'chocolate': '#D2691E', 'coral': '#FF7F50', 'cornflowerblue': '#6495ED', 'cornsilk': '#FFF8DC', 'crimson': '#DC143C', 'cyan': '#00FFFF', 'darkblue': '#00008B', 'darkcyan': '#008B8B', 'darkgoldenrod': '#B8860B', 'darkgray': '#A9A9A9', 'darkgrey': '#A9A9A9', 'darkgreen': '#006400', 'darkkhaki': '#BDB76B', 'darkmagenta': '#8B008B', 'darkolivegreen': '#556B2F', 'darkorange': '#FF8C00', 'darkorchid': '#9932CC', 'darkred': '#8B0000', 'darksalmon': '#E9967A', 'darkseagreen': '#8FBC8F', 'darkslateblue': '#483D8B', 'darkslategray': '#2F4F4F', 'darkslategrey': '#2F4F4F', 'darkturquoise': '#00CED1', 'darkviolet': '#9400D3', 'deeppink': '#FF1493', 'deepskyblue': '#00BFFF', 'dimgray': '#696969', 'dimgrey': '#696969', 'dodgerblue': '#1E90FF', 'firebrick': '#B22222', 'floralwhite': '#FFFAF0', 'forestgreen': '#228B22', 'fuchsia': '#FF00FF', 'gainsboro': '#DCDCDC', 'ghostwhite': '#F8F8FF', 'gold': '#FFD700', 'goldenrod': '#DAA520', 'gray': '#808080', 'grey': '#808080', 'green': '#008000', 'greenyellow': '#ADFF2F', 'honeydew': '#F0FFF0', 'hotpink': '#FF69B4', 'indianred ': '#CD5C5C', 'indigo ': '#4B0082', 'ivory': '#FFFFF0', 'khaki': '#F0E68C', 'lavender': '#E6E6FA', 'lavenderblush': '#FFF0F5', 'lawngreen': '#7CFC00', 'lemonchiffon': '#FFFACD', 'lightblue': '#ADD8E6', 'lightcoral': '#F08080', 'lightcyan': '#E0FFFF', 'lightgoldenrodyellow': '#FAFAD2', 'lightgray': '#D3D3D3', 'lightgrey': '#D3D3D3', 'lightgreen': '#90EE90', 'lightpink': '#FFB6C1', 'lightsalmon': '#FFA07A', 'lightseagreen': '#20B2AA', 'lightskyblue': '#87CEFA', 'lightslategray': '#778899', 'lightslategrey': '#778899', 'lightsteelblue': '#B0C4DE', 'lightyellow': '#FFFFE0', 'lime': '#00FF00', 'limegreen': '#32CD32', 'linen': '#FAF0E6', 'magenta': '#FF00FF', 'maroon': '#800000', 'mediumaquamarine': '#66CDAA', 'mediumblue': '#0000CD', 'mediumorchid': '#BA55D3', 'mediumpurple': '#9370DB', 'mediumseagreen': '#3CB371', 'mediumslateblue': '#7B68EE', 'mediumspringgreen': '#00FA9A', 'mediumturquoise': '#48D1CC', 'mediumvioletred': '#C71585', 'midnightblue': '#191970', 'mintcream': '#F5FFFA', 'mistyrose': '#FFE4E1', 'moccasin': '#FFE4B5', 'navajowhite': '#FFDEAD', 'navy': '#000080', 'oldlace': '#FDF5E6', 'olive': '#808000', 'olivedrab': '#6B8E23', 'orange': '#FFA500', 'orangered': '#FF4500', 'orchid': '#DA70D6', 'palegoldenrod': '#EEE8AA', 'palegreen': '#98FB98', 'paleturquoise': '#AFEEEE', 'palevioletred': '#DB7093', 'papayawhip': '#FFEFD5', 'peachpuff': '#FFDAB9', 'peru': '#CD853F', 'pink': '#FFC0CB', 'plum': '#DDA0DD', 'powderblue': '#B0E0E6', 'purple': '#800080', 'rebeccapurple': '#663399', 'red': '#FF0000', 'rosybrown': '#BC8F8F', 'royalblue': '#4169E1', 'saddlebrown': '#8B4513', 'salmon': '#FA8072', 'sandybrown': '#F4A460', 'seagreen': '#2E8B57', 'seashell': '#FFF5EE', 'sienna': '#A0522D', 'silver': '#C0C0C0', 'skyblue': '#87CEEB', 'slateblue': '#6A5ACD', 'slategray': '#708090', 'slategrey': '#708090', 'snow': '#FFFAFA', 'springgreen': '#00FF7F', 'steelblue': '#4682B4', 'tan': '#D2B48C', 'teal': '#008080', 'thistle': '#D8BFD8', 'tomato': '#FF6347', 'turquoise': '#40E0D0', 'violet': '#EE82EE', 'wheat': '#F5DEB3', 'white': '#FFFFFF', 'whitesmoke': '#F5F5F5', 'yellow': '#FFFF00', 'yellowgreen': '#9ACD32' };\nexport const optionsDefault = (): IPickerOptions => {\n return {\n showHsl: false,\n showRgb: true,\n showHex: true,\n showAlpha: false,\n color: '#ff0000',\n format: 'color',\n slBarSize: [420, 200],\n hueBarSize: [420, 20],\n alphaBarSize: [420, 20]\n };\n}\n\nexport const limit = (value: number | string, min: number, max: number) => {\n value = +value;\n return isNaN(value) ? min : (value < min ? min : (value > max ? max : value));\n}\n\nexport const hslToRgb = (h: number, s: number, l: number) => {\n let r, g, b;\n [h, s, l] = [limit(h, 0, 360) / 360, limit(s, 0, 100) / 100, limit(l, 0, 100) / 100];\n\n if (s == 0) {\n r = g = b = l; // achromatic\n\n return [r * 255, g * 255, b * 255].map(Math.round);\n }\n const hueToRgb = (p: number, q: number, t: number) => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n\n return p;\n };\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = (2 * l) - q;\n\n r = hueToRgb(p, q, h + (1 / 3));\n g = hueToRgb(p, q, h);\n b = hueToRgb(p, q, h - (1 / 3));\n\n return [r * 255, g * 255, b * 255].map(Math.round);\n}\n\nexport const cssColorToRgba = (color: string) => {\n if (color) {\n const colorByName = get(ColorNames, color.toLowerCase());\n const [, , , r, g, b, a, , rr, gg, bb, aa] = /^\\s*#?((([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])?)|(([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})?))\\s*$/i.exec(colorByName || color) || [];\n if (!isNil(r)) {\n return [\n parseInt(r + r, 16),\n parseInt(g + g, 16),\n parseInt(b + b, 16),\n a ? +((parseInt(a + a, 16)) / 255).toFixed(2) : 1\n ];\n }\n if (!isNil(rr)) {\n return [\n parseInt(rr, 16),\n parseInt(gg, 16),\n parseInt(bb, 16),\n aa ? +((parseInt(aa, 16)) / 255).toFixed(2) : 1\n ];\n }\n }\n\n return undefined;\n}\n\nexport const parseColorToRgba = (color: string | Array<number>) => {\n if (Array.isArray(color)) {\n return [\n limit(color[0], 0, 255),\n limit(color[1], 0, 255),\n limit(color[2], 0, 255),\n limit(color[3] ?? 1, 0, 1)\n ];\n }\n const parsed = cssColorToRgba(color) || cssRgbaToRgba(color);\n\n if (parsed && parsed.length === 3) {\n parsed.push(1);\n }\n\n return parsed;\n}\n\nexport const cssRgbaToRgba = (rgba: string) => {\n if (rgba) {\n const [m, r, g, b, , a] = /^rgba?\\((\\d+)\\s*[\\s,]\\s*(\\d+)\\s*[\\s,]\\s*(\\d+)(\\s*[\\s,]\\s*(\\d*(.\\d+)?))?\\)/i.exec(rgba) || [];\n\n return m ? [limit(r, 0, 255), limit(g, 0, 255), limit(b, 0, 255), limit(a ?? 1, 0, 1)] : undefined;\n }\n\n return undefined;\n}\n\nexport const cssHslaToHsla = (hsla: string) => {\n if (hsla) {\n const [m, h, s, l, , a] = /^hsla?\\((\\d+)\\s*[\\s,]\\s*(\\d+)\\s*[\\s,]\\s*(\\d+)(\\s*[\\s,]\\s*(\\d*(.\\d+)?))?\\)/i.exec(hsla) || [];\n\n return m ? [limit(h, 0, 255), limit(s, 0, 255), limit(l, 0, 255), limit(a ?? 1, 0, 1)] : undefined;\n }\n\n return undefined;\n}\n\nexport const parseColorToHsla = (color: string | Array<number>) => {\n if (Array.isArray(color)) {\n return [\n limit(color[0], 0, 360),\n limit(color[1], 0, 100),\n limit(color[2], 0, 100),\n limit(color[3] ?? 1, 0, 1)\n ];\n }\n const parsed = cssHslaToHsla(color);\n\n if (parsed && parsed.length === 3) {\n parsed.push(1);\n }\n\n return parsed;\n}\n\nexport const rgbToHsl = (r: number, g: number, b: number) => {\n [r, g, b] = [limit(r, 0, 255) / 255, limit(g, 0, 255) / 255, limit(b, 0, 255) / 255];\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h, s = (max + min) / 2;\n const l = (max + min) / 2;\n\n if (max == min) {\n h = s = 0; // achromatic\n\n return [h * 360, s * 100, l * 100].map(Math.round);\n }\n const d = max - min;\n\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = ((g - b) / d) + (g < b ? 6 : 0);\n break;\n case g:\n h = ((b - r) / d) + 2;\n break;\n case b:\n h = ((r - g) / d) + 4;\n break;\n }\n h = (h || 0) / 6;\n\n return [h * 360, s * 100, l * 100].map(Math.round);\n}\n\nexport const rgbToHex = (r: number, g: number, b: number) => {\n [r, g, b] = [limit(r, 0, 255), limit(g, 0, 255), limit(b, 0, 255)];\n\n return \"#\" + (\"000000\" + ((r << 16) | (g << 8) | b).toString(16)).slice(-6);\n}\n\nexport const rgbToInt = (r: number, g: number, b: number) => {\n return (r << 16) | (g << 8) | b;\n}\n\nexport const rgbToHsv = (r: number, g: number, b: number) => {\n [r, g, b] = [limit(r, 0, 255) / 255, limit(g, 0, 255) / 255, limit(b, 0, 255) / 255];\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h, s = max;\n const v = max;\n const d = max - min;\n s = max === 0 ? 0 : d / max;\n\n if (max == min) {\n h = 0;\n\n return [h, s, v];\n }\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h = (h || 0) / 6;\n\n return [h, s, v];\n}\n\nexport const formatColor = (data: Array<number>, format: string) => {\n switch (format) {\n case 'rgb':\n default:\n return data.slice(0, 3);\n case 'rgbcss':\n return `rgb(${data[0]}, ${data[1]}, ${data[2]})`;\n case 'rgbcss4':\n return `rgb(${data[0]}, ${data[1]}, ${data[2]}, ${data[3]})`;\n case 'rgba':\n return data;\n case 'rgbacss':\n return `rgba(${data[0]}, ${data[1]}, ${data[2]}, ${data[3]})`;\n case 'hsl':\n return rgbToHsl(data[0], data[1], data[2]);\n case 'hslcss':\n data = rgbToHsl(data[0], data[1], data[2]);\n\n return `hsl(${data[0]}, ${data[1]}, ${data[2]})`;\n case 'hslcss4': {\n const hh = rgbToHsl(data[0], data[1], data[2]);\n\n return `hsl(${hh[0]}, ${hh[1]}, ${hh[2]}, ${data[3]})`;\n }\n case 'hsla':\n return [...rgbToHsl(data[0], data[1], data[2]), data[3]];\n case 'hslacss': {\n const ha = rgbToHsl(data[0], data[1], data[2]);\n\n return `hsla(${ha[0]}, ${ha[1]}, ${ha[2]}, ${data[3]})`;\n }\n case 'hex':\n return rgbToHex(data[0], data[1], data[2]);\n case 'hexcss4':\n return rgbToHex(data[0], data[1], data[2]) + ('00' + parseInt((data[3] * 255).toString()).toString(16)).slice(-2);\n case 'int':\n return rgbToInt(data[0], data[1], data[2]);\n }\n}\n\nexport const parseColor = (color: string | Array<number>, format: string | object) => {\n if (!isNil(color)) {\n let data: Array<number> | undefined = [];\n\n data = parseColorToRgba(color) || (parseColorToHsla(color) && [...hslToRgb(data[0], data[1], data[2]), data[3]]);\n if (data) {\n if (typeof format === 'object') {\n return ['rgb', 'rgbcss', 'rgbcss4', 'rgba', 'rgbacss', 'hsl', 'hslcss', 'hslcss4', 'hsla', 'hslacss', 'hex', 'hexcss4', 'int'].reduce((m, f) => {\n set(m, f, formatColor(data, f));\n\n return m;\n }, format);\n }\n\n return formatColor(data, format as string);\n }\n }\n\n return undefined;\n}\n\nexport const defaultHelper = () => {\n return {\n setHue: () => { return },\n grabColor: () => [],\n findColor: () => []\n };\n}","import { AfterViewInit, ChangeDetectionStrategy, Component, effect, ElementRef, inject, input, OnDestroy, OnInit, output, signal, viewChild } from \"@angular/core\";\nimport { IFocusAndBlurEvent, LibsUiComponentsInputsInputComponent } from \"@libs-ui/components-inputs-input\";\nimport { LibsUiComponentsInputsValidComponent } from \"@libs-ui/components-inputs-valid\";\nimport { LibsUiNotificationService } from \"@libs-ui/services-notification\";\nimport { getDragEventByElement, set } from \"@libs-ui/utils\";\nimport { Subject } from \"rxjs\";\nimport { ICanvasHelper, IConfigUpdate, IOutputColorChangeMutilType, IPickerCustomOptions, IPickerOptions } from \"./interfaces/picker.interface\";\nimport { cssColorToRgba, defaultHelper, hslToRgb, limit, optionsDefault, parseColor, rgbToHex, rgbToHsl, rgbToHsv } from \"./utils/picker\";\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-color_picker',\n templateUrl: './color-picker.component.html',\n styleUrl: './color-picker.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n LibsUiComponentsInputsInputComponent,\n LibsUiComponentsInputsValidComponent\n ]\n})\nexport class LibsUiComponentsColorPickerComponent implements OnInit, AfterViewInit,OnDestroy {\n\n // #region PROPERTY\n protected options = signal<IPickerOptions>(optionsDefault());\n protected focus = signal<string | undefined>(undefined);\n protected hex = signal<string>('');\n protected s = signal<number>(0);\n protected h = signal<number>(0);\n protected l = signal<number>(0);\n protected r = signal<number>(0);\n protected g = signal<number>(0);\n protected b = signal<number>(0);\n protected a = signal<number>(1);\n\n private slBarHelper = signal<ICanvasHelper>(defaultHelper());\n private notificationService = inject(LibsUiNotificationService);\n private onDestroy = new Subject<void>();\n\n // #region INPUT\n readonly customOptions = input<IPickerCustomOptions>();\n readonly noEmitEventColorWhenInitComponent = input<boolean,boolean | undefined>(true, {transform: (value) => value ?? true});\n\n // #region OUTPUT\n readonly outColorChange = output<string>();\n readonly outColorChangeMutilType = output<IOutputColorChangeMutilType>();\n\n /* VIEW CHILD */\n private readonly hueEl = viewChild<ElementRef>('hueEl');\n private readonly huePointerEl = viewChild<ElementRef>('huePointerEl');\n private readonly slEl = viewChild<ElementRef>('slEl');\n private readonly slPointerEl = viewChild<ElementRef>('slPointerEl');\n private readonly alphaEl = viewChild<ElementRef>('alphaEl');\n private readonly alphaPointerEl = viewChild<ElementRef>('alphaPointerEl');\n private readonly previewEl = viewChild<ElementRef>('previewEl');\n\n constructor() {\n effect(() => {\n const ctx = this.alphaEl()?.nativeElement.getContext('2d');\n\n if (!ctx) {\n return;\n }\n ctx.clearRect(0, 0, this.options().alphaBarSize[0], this.options().alphaBarSize[1]);\n const gradient = ctx.createLinearGradient(0, 0, this.alphaEl()?.nativeElement.width - 1, 0);\n\n gradient.addColorStop(0, `hsla(${this.h()},${this.s()}%,${this.l()}%, 0)`);\n gradient.addColorStop(1, `hsla(${this.h()},${this.s()}%,${this.l()}%, 1)`);\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, this.options().alphaBarSize[0], this.options().alphaBarSize[1]);\n });\n }\n\n /* FUNCTIONS */\n ngOnInit(): void {\n if (this.customOptions()) {\n this.options.update(options => ({ ...options, ...this.customOptions() }));\n }\n }\n\n ngAfterViewInit(): void {\n this.setupHueCanvas();\n this.setupSlCanvas();\n this.setupSlBarHelper();\n if (this.options().showAlpha) {\n this.setupAlphaCanvas();\n }\n this.handlerColorChange(this.options().format, this.options().color, this.noEmitEventColorWhenInitComponent());\n }\n\n private setupHueCanvas() {\n const canvas = this.hueEl()?.nativeElement;\n\n canvas.width = this.options().hueBarSize[0];\n canvas.height = this.options().hueBarSize[1];\n const ctx = canvas.getContext('2d');\n const gradient = ctx.createLinearGradient(0, 0, this.options().hueBarSize[0], 0);\n const step = 1 / 360;\n\n for (let ii = 0; ii <= 1; ii += step) {\n gradient.addColorStop(ii, `hsl(${360 * ii}, 100%, 50%)`);\n }\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, this.options().hueBarSize[0], this.options().hueBarSize[1]);\n\n getDragEventByElement({elementMouseDown:canvas,isStartWithMouseDonwEvent:true,onDestroy:this.onDestroy}).subscribe((event: MouseEvent)=>{\n const x = limit(event.clientX - canvas.getBoundingClientRect().left, 0, this.options().hueBarSize[0]);\n const hue = Math.round(x * 360 / this.options().hueBarSize[0]);\n \n set(this.huePointerEl()?.nativeElement.style, 'left', `${x - 7}px`);\n this.h.set(hue);\n this.handlerColorChange('h', hue);\n });\n \n }\n\n private setupSlCanvas() {\n const canvas = this.slEl()?.nativeElement;\n\n canvas.width = this.options().slBarSize[0];\n canvas.height = this.options().slBarSize[1];\n\n getDragEventByElement({elementMouseDown:canvas,isStartWithMouseDonwEvent:true,onDestroy:this.onDestroy}).subscribe((event)=>{\n const x = limit(event.clientX - canvas.getBoundingClientRect().left, 0, this.options().slBarSize[0] - 1);\n const y = limit(event.clientY - canvas.getBoundingClientRect().top, 0, this.options().slBarSize[1] - 1);\n const c = this.slBarHelper().grabColor(x, y);\n\n set(this.slPointerEl()?.nativeElement.style, 'left', `${x - 7}px`);\n set(this.slPointerEl()?.nativeElement.style, 'top', `${y - 7}px`);\n this.handlerColorChange('rgb', c);\n });\n \n }\n\n private setupSlBarHelper() {\n const canvas = this.slEl()?.nativeElement;\n const ctx = canvas.getContext('2d');\n const width = +canvas.width;\n const height = +canvas.height;\n const whiteBlackGradient = ctx.createLinearGradient(1, 1, 1, height - 1);\n\n whiteBlackGradient.addColorStop(0, 'white');\n whiteBlackGradient.addColorStop(1, 'black');\n\n this.slBarHelper.set({\n setHue: (hue: number) => {\n const colorGradient = ctx.createLinearGradient(1, 0, width - 1, 0);\n colorGradient.addColorStop(0, `hsla(${hue}, 100%, 50%, 0)`);\n colorGradient.addColorStop(1, `hsla(${hue}, 100%, 50%, 1)`);\n\n ctx.fillStyle = whiteBlackGradient;\n ctx.fillRect(0, 0, width, height);\n ctx.fillStyle = colorGradient;\n ctx.globalCompositeOperation = 'multiply';\n ctx.fillRect(0, 0, width, height);\n ctx.globalCompositeOperation = 'source-over';\n },\n grabColor: (x: number, y: number) => ctx.getImageData(x, y, 1, 1).data,\n findColor: (r: number, g: number, b: number) => {\n const [, s, v] = rgbToHsv(r, g, b);\n const x = s * width;\n const y = height - (v * height);\n\n return [x, y];\n }\n });\n }\n\n private setupAlphaCanvas() {\n const canvas = this.alphaEl()?.nativeElement;\n\n canvas.width = this.options().alphaBarSize[0];\n canvas.height = this.options().alphaBarSize[1];\n const ctx = canvas.getContext('2d');\n const gradient = ctx.createLinearGradient(0, 0, canvas.width - 1, 0);\n\n gradient.addColorStop(0, `hsla(${this.h()},${this.s()}%,${this.l()}%, 0)`);\n gradient.addColorStop(1, `hsla(${this.h()},${this.s()}%,${this.l()}%, 1)`);\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, this.options().alphaBarSize[0], this.options().alphaBarSize[1]);\n \n getDragEventByElement({elementMouseDown:canvas,isStartWithMouseDonwEvent:true,onDestroy:this.onDestroy}).subscribe((event)=>{\n const x = limit(event.clientX - canvas.getBoundingClientRect().left, 0, this.options().alphaBarSize[0]);\n const alpha = +(x / this.options().alphaBarSize[0]).toFixed(2);\n\n set(this.alphaPointerEl()?.nativeElement.style, 'left', `${x - 7}px`);\n this.handlerColorChange('alpha', alpha);\n });\n }\n\n protected handlerCopyColor(event: Event) {\n event.stopPropagation();\n window.navigator.clipboard.writeText(this.hex());\n this.notificationService.showCompTypeTextSuccess('i18n_copy_successfully');\n }\n\n private updatePointerH(h: number) {\n const x = this.options().hueBarSize[0] * h / 360;\n\n set(this.huePointerEl()?.nativeElement.style, 'left', `${x - 7}px`);\n }\n\n private updatePointerSl(h: number, s: number, l: number) {\n const [r, g, b] = hslToRgb(h, s, l);\n const [x, y] = this.slBarHelper().findColor(r, g, b) as Array<number>;\n\n if (x >= 0) {\n set(this.slPointerEl()?.nativeElement.style, 'left', `${x - 7}px`);\n set(this.slPointerEl()?.nativeElement.style, 'top', `${y - 7}px`);\n }\n }\n\n private updatePointerA(a: number) {\n if (!this.options().showAlpha) {\n return;\n }\n const x = this.options().alphaBarSize[0] * a;\n\n set(this.alphaPointerEl()?.nativeElement.style, 'left', `${x - 7}px`);\n }\n\n private updateHex(r: number, g: number, b: number, a: number) {\n if (this.options().showAlpha) {\n this.hex.set(parseColor([r, g, b, a], 'hexcss4') as string);\n\n return;\n }\n this.hex.set(rgbToHex(r, g, b));\n }\n\n private updateRgb() {\n const rgb = hslToRgb(this.h(), this.s(), this.l());\n\n this.r.set(rgb[0]);\n this.g.set(rgb[1]);\n this.b.set(rgb[2]);\n }\n\n private updateHsl() {\n const hsl = rgbToHsl(this.r(), this.g(), this.b());\n\n this.h.set(hsl[0]);\n this.s.set(hsl[1]);\n this.l.set(hsl[2]);\n }\n\n private updateValuesAndPointer(config: IConfigUpdate) {\n if (config.rgb) {\n this.updateRgb();\n }\n if (config.hsl) {\n this.updateHsl();\n }\n if (config.hue) {\n this.slBarHelper().setHue(this.h());\n }\n if (config.hPoint) {\n this.updatePointerH(this.h());\n }\n if (config.slPoint) {\n this.updatePointerSl(this.h(), this.s(), this.l());\n }\n if (config.hex) {\n this.updateHex(this.r(), this.g(), this.b(), this.a());\n }\n if (config.aPoint) {\n this.updatePointerA(this.a());\n }\n }\n\n private handlerColorChange(key: string, value: string | number | Array<number>, isCallInitComponent = false) {\n let config: IConfigUpdate = {};\n\n switch (key) {\n case 'h':\n config = { hPoint: true, hex: true, rgb: true, hue: true };\n break;\n case 's':\n config = { slPoint: true, hex: true, rgb: true };\n break;\n case 'l':\n config = { slPoint: true, hex: true, rgb: true };\n break;\n case 'r':\n config = { hPoint: true, slPoint: true, hex: true, hsl: true, hue: true };\n break;\n case 'g':\n config = { hPoint: true, slPoint: true, hex: true, hsl: true, hue: true };\n break;\n case 'b':\n config = { hPoint: true, slPoint: true, hex: true, hsl: true, hue: true };\n break;\n case 'rgb':\n this.r.set((value as Array<number>)[0]);\n this.g.set((value as Array<number>)[1]);\n this.b.set((value as Array<number>)[2]);\n config = { hex: true, hsl: true };\n break;\n case 'rgba':\n this.r.set((value as Array<number>)[0]);\n this.g.set((value as Array<number>)[1]);\n this.b.set((value as Array<number>)[2]);\n this.a.set((value as Array<number>)[3]);\n config = { hPoint: true, slPoint: true, hex: true, aPoint: true, hsl: true, hue: true };\n break;\n case 'hsl':\n this.h.set((value as Array<number>)[0]);\n this.s.set((value as Array<number>)[1]);\n this.l.set((value as Array<number>)[2]);\n config = { hPoint: true, slPoint: true, hex: true, aPoint: true, rgb: true, hue: true };\n break;\n case 'hsla':\n this.h.set((value as Array<number>)[0]);\n this.s.set((value as Array<number>)[1]);\n this.l.set((value as Array<number>)[2]);\n this.a.set((value as Array<number>)[3]);\n config = { hPoint: true, slPoint: true, hex: true, aPoint: true, rgb: true, hue: true };\n break;\n case 'hex': {\n const rgba = cssColorToRgba(value as string) || [this.r(), this.g(), this.b(), this.a()];\n\n this.r.set(rgba[0]);\n this.g.set(rgba[1]);\n this.b.set(rgba[2]);\n this.a.set(rgba[3]);\n config = { hPoint: true, slPoint: true, aPoint: true, hsl: true, hue: true };\n break;\n }\n case 'color': {\n const rgba = (parseColor(value as string | Array<number>, 'rgba') || [0, 0, 0, 1]) as Array<number>;\n\n this.r.set(rgba[0]);\n this.g.set(rgba[1]);\n this.b.set(rgba[2]);\n this.a.set(rgba[3]);\n config = { hPoint: true, slPoint: true, hex: true, aPoint: true, hsl: true, hue: true };\n\n break;\n }\n case 'alpha':\n this.a.set(value as number);\n this.updateHex(this.r(), this.g(), this.b(), this.a());\n break;\n }\n this.updateValuesAndPointer(config);\n set(this.previewEl()?.nativeElement.style, 'backgroundColor', this.a() === 1 ? `rgb(${this.r()},${this.g()},${this.b()})` : `rgba(${this.r()},${this.g()},${this.b()},${this.a()})`);\n if (!isCallInitComponent) {\n this.outColorChange.emit(this.hex());\n this.outColorChangeMutilType.emit({\n hex:this.hex(),\n rgba:`rgba(${this.r()},${this.g()},${this.b()},${this.a()})`,\n rgb:`rgb(${this.r()},${this.g()},${this.b()})`,\n hsl:`hsl(${this.h()},${this.s()},${this.l()})`,\n hsla:`hsla(${this.h()},${this.s()},${this.l()},${this.a()})`\n });\n }\n }\n\n protected handlerFocusAndBlur(event: IFocusAndBlurEvent, key: string) {\n this.focus.set(event.name === 'blur' ? undefined : key);\n }\n\n protected handlerValueChange(event: string | number, key: string) {\n this.handlerColorChange(key, event);\n }\n\n protected handlerValueChangeAlphaInput(event: string | number) {\n this.handlerColorChange('alpha', ( event as number || 0)/100);\n this.updatePointerA(this.a());\n }\n\n protected handlerResetColor() {\n this.handlerColorChange('alpha',0);\n this.updatePointerA(this.a());\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n\n}","<div>\n <div class=\"relative\"\n [style.width.px]=\"options().slBarSize[0]\">\n <div>\n <canvas #slEl\n class=\"rounded-tl-[4px] rounded-tr-[4px] libs-ui-color-picker-background-transparent\"></canvas>\n <div #slPointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n <div class=\"relative\">\n <canvas #hueEl\n class=\"libs-ui-color-picker-background-transparent\"\n [class.rounded-bl-[4px]]=\"!options().showAlpha\"\n [class.rounded-br-[4px]]=\"!options().showAlpha\"></canvas>\n <div #huePointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n @if (options().showAlpha) {\n <div class=\"relative\">\n <canvas #alphaEl\n class=\"rounded-bl-[4px] rounded-br-[4px] libs-ui-color-picker-background-transparent\">\n </canvas>\n <div #alphaPointerEl\n class=\"libs-ui-color-picker-dot\"></div>\n </div>\n }\n <div class=\"flex items-end\">\n <div class=\"text-center mr-[16px]\">\n <div class=\"libs-ui-color-picker-background-transparent rounded-[4px]\">\n <div #previewEl\n class=\"w-[32px] h-[32px] rounded-[4px] cursor-pointer\"\n (click)=\"handlerCopyColor($event)\"></div>\n </div>\n </div>\n @if (options().showHex) {\n <div class=\"text-center mr-[12px]\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">HEX</span>\n <div class=\"w-[88px]\">\n <libs_ui-components-inputs-input [(value)]=\"hex\"\n [classInclude]=\"'text-center !p-0'\"\n (outChange)=\"handlerValueChange($event, 'hex')\" />\n </div>\n </div>\n }\n <div>\n @if (options().showHsl) {\n <div class=\"flex\">\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">H</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"h\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"360\"\n [classInclude]=\"'text-center !p-0 !rounded-tr-none !rounded-br-none ' + (focus() === 's' ? '!border-r-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'h')\"\n (outChange)=\"handlerValueChange($event, 'h')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">S</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"s\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [classInclude]=\"'text-center !p-0 !rounded-none ' + (focus() === 's' ? '' : '!border-x-transparent')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 's')\"\n (outChange)=\"handlerValueChange($event, 's')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">L</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"l\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [classInclude]=\"'text-center !p-0 !rounded-tl-none !rounded-bl-none ' + (focus() === 's' ? '!border-l-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'l')\"\n (outChange)=\"handlerValueChange($event, 'l')\" />\n </div>\n </div>\n </div>\n }\n @if (options().showRgb) {\n <div class=\"flex\">\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">R</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"r\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-tr-none !rounded-br-none ' + (focus() === 'g' ? '!border-r-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'r')\"\n (outChange)=\"handlerValueChange($event, 'r')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">G</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"g\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-none ' + (focus() === 'g' ? '' : '!border-x-transparent')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'g')\"\n (outChange)=\"handlerValueChange($event, 'g')\" />\n </div>\n </div>\n <div class=\"text-center\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">B</span>\n <div class=\"w-[56px]\">\n <libs_ui-components-inputs-input [(value)]=\"b\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"255\"\n [classInclude]=\"'text-center !p-0 !rounded-tl-none !rounded-bl-none ' + (focus() === 'g' ? '!border-l-transparent' : '')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlur($event, 'b')\"\n (outChange)=\"handlerValueChange($event, 'b')\" />\n </div>\n </div>\n <div class=\"text-center ml-[8px]\">\n <span class=\"libs-ui-font-h7r text-[#6a7383]\">A</span>\n <div class=\"w-[78px]\">\n <libs_ui-components-inputs-valid [item]=\"{aValue:a()*100}\"\n [fieldNameBind]=\"'aValue'\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [unitsRight]=\"[{label:'%'}]\"\n [emitEmptyInDataTypeNumber]=\"true\"\n (outValueChange)=\"handlerValueChangeAlphaInput($event)\"/>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -37,3 +37,10 @@ export interface IConfigUpdate {
37
37
  hsl?: boolean;
38
38
  hue?: boolean;
39
39
  }
40
+ export interface IOutputColorChangeMutilType {
41
+ rgba: string;
42
+ rgb: string;
43
+ hex: string;
44
+ hsl: string;
45
+ hsla: string;
46
+ }
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@libs-ui/components-color-picker",
3
- "version": "0.2.253",
3
+ "version": "0.2.255",
4
4
  "peerDependencies": {
5
5
  "@angular/core": "^18.2.0",
6
- "@libs-ui/components-inputs-input": "^0.2.253",
7
- "@libs-ui/services-notification": "^0.2.253",
8
- "@libs-ui/utils": "^0.2.253",
6
+ "@libs-ui/components-inputs-input": "^0.2.255",
7
+ "@libs-ui/services-notification": "^0.2.255",
8
+ "@libs-ui/utils": "^0.2.255",
9
9
  "rxjs": "~7.8.0"
10
10
  },
11
11
  "sideEffects": false,