From b14934252aa85df8c956f343f7d4c29ade07732b Mon Sep 17 00:00:00 2001 From: jaames Date: Tue, 24 Nov 2020 00:10:36 +0000 Subject: [PATCH] add boxHeight option (#142), pass origin to input events (#140), mitigate kelvin issue (#138) --- CHANGELOG.md | 4 ++++ demo/demo.js | 6 ++++++ dist/index.d.ts | 2 +- dist/iro.es.js | 6 +++--- dist/iro.js | 6 +++--- dist/iro.js.map | 2 +- dist/iro.min.js | 4 ++-- docs/.vuepress/theme/js/iro.es.js | 6 +++--- docs/advanced.md | 6 ++++++ package.json | 4 ++-- src/Box.tsx | 3 ++- 11 files changed, 33 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f9e90d..17584ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ ### Changelog +#### 5.3.0 + +Added optional `boxHeight` option for setting the height of the box component. Added `id` option for all components, which will get passed to the `input:start`, `input:move` and `input:end` event callbacks as a second param (see https://github.com/jaames/iro.js/issues/140). Also mitigated an issue related to kelvin temperatures under 2000 (see https://github.com/jaames/iro.js/issues/138). + #### 5.2.3 Bumps iro-core version to fix server-side environment issues noted in https://github.com/jaames/iro.js/issues/131 diff --git a/demo/demo.js b/demo/demo.js index 3af6c68..bdf4721 100644 --- a/demo/demo.js +++ b/demo/demo.js @@ -24,6 +24,12 @@ var colorPicker = new iro.ColorPicker("#demoWheel", { options: { } }, + { + component: iro.ui.Box, + options: { + boxHeight: 60 + } + }, { component: iro.ui.Slider, options: { diff --git a/dist/index.d.ts b/dist/index.d.ts index f3e8b14..38043c9 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -7,7 +7,7 @@ import { IroBox } from './Box'; import { IroWheel } from './Wheel'; import { IroColorPicker } from './ColorPicker'; declare namespace iro { - const version = "5.2.3"; + const version = "5.3.0"; type Color = IroColor; const Color: typeof IroColor; type ColorPicker = IroColorPicker; diff --git a/dist/iro.es.js b/dist/iro.es.js index 402808a..7a05e19 100644 --- a/dist/iro.es.js +++ b/dist/iro.es.js @@ -1,5 +1,5 @@ /*! - * iro.js v5.2.3 + * iro.js v5.3.0 * 2016-2020 James Daniel * Licensed under MPL 2.0 * github.com/jaames/iro.js @@ -1293,7 +1293,7 @@ function IroBox(props) { h("pattern", { id: 'f' + uid, width: "100%", height: "100%" }, h("rect", { x: "0", y: "0", width: "100%", height: "100%", fill: ("url(" + (resolveSvgUrl('#s' + uid)) + ")") }), h("rect", { x: "0", y: "0", width: "100%", height: "100%", fill: ("url(" + (resolveSvgUrl('#l' + uid)) + ")") }))), - h("rect", { rx: radius, ry: radius, x: props.borderWidth / 2, y: props.borderWidth / 2, width: width - props.borderWidth, height: height - props.borderWidth, "stroke-width": props.borderWidth, stroke: props.borderColor, fill: ("url(" + (resolveSvgUrl('#f' + uid)) + ")") }), + h("rect", { className: "IroBoxBg", rx: radius, ry: radius, x: props.borderWidth / 2, y: props.borderWidth / 2, width: width - props.borderWidth, height: height - props.borderWidth, "stroke-width": props.borderWidth, stroke: props.borderColor, fill: ("url(" + (resolveSvgUrl('#f' + uid)) + ")") }), colors.filter(function (color) { return color !== activeColor; }).map(function (color) { return (h(IroHandle, { isActive: false, index: color.index, fill: color.hslString, r: props.handleRadius, url: props.handleSvg, props: props.handleProps, x: handlePositions[color.index].x, y: handlePositions[color.index].y })); }), h(IroHandle, { isActive: true, index: activeColor.index, fill: activeColor.hslString, r: props.handleRadius, url: props.handleSvg, props: props.handleProps, x: handlePositions[activeColor.index].x, y: handlePositions[activeColor.index].y }))); })); } @@ -1650,7 +1650,7 @@ var IroColorPickerWidget = createWidget(IroColorPicker); var iro; (function (iro) { - iro.version = "5.2.3"; // replaced by @rollup/plugin-replace; see rollup.config.js + iro.version = "5.3.0"; // replaced by @rollup/plugin-replace; see rollup.config.js iro.Color = IroColor; iro.ColorPicker = IroColorPickerWidget; var ui; diff --git a/dist/iro.js b/dist/iro.js index 88eeb58..05873f4 100644 --- a/dist/iro.js +++ b/dist/iro.js @@ -1,5 +1,5 @@ /*! - * iro.js v5.2.3 + * iro.js v5.3.0 * 2016-2020 James Daniel * Licensed under MPL 2.0 * github.com/jaames/iro.js @@ -1299,7 +1299,7 @@ h("pattern", { id: 'f' + uid, width: "100%", height: "100%" }, h("rect", { x: "0", y: "0", width: "100%", height: "100%", fill: ("url(" + (resolveSvgUrl('#s' + uid)) + ")") }), h("rect", { x: "0", y: "0", width: "100%", height: "100%", fill: ("url(" + (resolveSvgUrl('#l' + uid)) + ")") }))), - h("rect", { rx: radius, ry: radius, x: props.borderWidth / 2, y: props.borderWidth / 2, width: width - props.borderWidth, height: height - props.borderWidth, "stroke-width": props.borderWidth, stroke: props.borderColor, fill: ("url(" + (resolveSvgUrl('#f' + uid)) + ")") }), + h("rect", { className: "IroBoxBg", rx: radius, ry: radius, x: props.borderWidth / 2, y: props.borderWidth / 2, width: width - props.borderWidth, height: height - props.borderWidth, "stroke-width": props.borderWidth, stroke: props.borderColor, fill: ("url(" + (resolveSvgUrl('#f' + uid)) + ")") }), colors.filter(function (color) { return color !== activeColor; }).map(function (color) { return (h(IroHandle, { isActive: false, index: color.index, fill: color.hslString, r: props.handleRadius, url: props.handleSvg, props: props.handleProps, x: handlePositions[color.index].x, y: handlePositions[color.index].y })); }), h(IroHandle, { isActive: true, index: activeColor.index, fill: activeColor.hslString, r: props.handleRadius, url: props.handleSvg, props: props.handleProps, x: handlePositions[activeColor.index].x, y: handlePositions[activeColor.index].y }))); })); } @@ -1656,7 +1656,7 @@ var iro; (function (iro) { - iro.version = "5.2.3"; // replaced by @rollup/plugin-replace; see rollup.config.js + iro.version = "5.3.0"; // replaced by @rollup/plugin-replace; see rollup.config.js iro.Color = IroColor; iro.ColorPicker = IroColorPickerWidget; var ui; diff --git a/dist/iro.js.map b/dist/iro.js.map index 4934dce..6970c39 100644 --- a/dist/iro.js.map +++ b/dist/iro.js.map @@ -1 +1 @@ -{"version":3,"file":"iro.js.map","sources":["../node_modules/preact/dist/preact.module.js","../../iro-core/dist/iro-core.es.js","../src/ComponentWrapper.tsx","../src/Handle.tsx","../src/Slider.tsx","../src/Box.tsx","../src/Wheel.tsx","../src/createWidget.ts","../src/ColorPicker.tsx","../src/index.ts"],"sourcesContent":["var n,l,u,t,i,r,o,f={},e=[],c=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i;function s(n,l){for(var u in l)n[u]=l[u];return n}function a(n){var l=n.parentNode;l&&l.removeChild(n)}function h(n,l,u){var t,i,r,o,f=arguments;if(l=s({},l),arguments.length>3)for(u=[u],t=3;t2&&(l.children=e.slice.call(arguments,2)),v(n.type,l,l.key||n.key,l.ref||n.ref)}function O(n){var l={},u={__c:\"__cC\"+o++,__p:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var t,i=this;return this.getChildContext||(t=[],this.getChildContext=function(){return l[u.__c]=i,l},this.shouldComponentUpdate=function(i){n.value!==i.value&&(l[u.__c].props.value=i.value,t.some(function(n){n.__P&&(n.context=i.value,k(n))}))},this.sub=function(n){t.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){t.splice(t.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Consumer.contextType=u,u}n={},l=function(n){return null!=n&&void 0===n.constructor},m.prototype.setState=function(n,l){var u=this.__s!==this.state&&this.__s||(this.__s=s({},this.state));(\"function\"!=typeof n||(n=n(u,this.props)))&&s(u,n),null!=n&&this.__v&&(this.u=!1,l&&this.__h.push(l),k(this))},m.prototype.forceUpdate=function(n){this.__v&&(n&&this.__h.push(n),this.u=!0,k(this))},m.prototype.render=d,u=[],t=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,i=n.debounceRendering,n.__e=function(n,l,u){for(var t;l=l.__p;)if((t=l.__c)&&!t.__p)try{if(t.constructor&&null!=t.constructor.getDerivedStateFromError)t.setState(t.constructor.getDerivedStateFromError(n));else{if(null==t.componentDidCatch)continue;t.componentDidCatch(n)}return k(t.__E=t)}catch(l){n=l}throw n},r=f,o=0;export{I as render,L as hydrate,h as createElement,h,d as Fragment,p as createRef,l as isValidElement,m as Component,M as cloneElement,O as createContext,x as toChildArray,D as _unmount,n as options};\n//# sourceMappingURL=preact.module.js.map\n","// Some regular expressions for rgb() and hsl() Colors are borrowed from tinyColor\n// https://github.com/bgrins/TinyColor\n// Kelvin temperature math borrowed from Neil Barlett's implementation\n// from https://github.com/neilbartlett/color-temperature\n// https://www.w3.org/TR/css3-values/#integers\nvar CSS_INTEGER = '[-\\\\+]?\\\\d+%?'; // http://www.w3.org/TR/css3-values/#number-value\n\nvar CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?'; // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome\n\nvar CSS_UNIT = '(?:' + CSS_NUMBER + ')|(?:' + CSS_INTEGER + ')'; // Parse function params\n// Parens and commas are optional, and this also allows for whitespace between numbers\n\nvar PERMISSIVE_MATCH_3 = '[\\\\s|\\\\(]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')\\\\s*\\\\)?';\nvar PERMISSIVE_MATCH_4 = '[\\\\s|\\\\(]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')\\\\s*\\\\)?'; // Regex patterns for functional color strings\n\nvar REGEX_FUNCTIONAL_RGB = new RegExp('rgb' + PERMISSIVE_MATCH_3);\nvar REGEX_FUNCTIONAL_RGBA = new RegExp('rgba' + PERMISSIVE_MATCH_4);\nvar REGEX_FUNCTIONAL_HSL = new RegExp('hsl' + PERMISSIVE_MATCH_3);\nvar REGEX_FUNCTIONAL_HSLA = new RegExp('hsla' + PERMISSIVE_MATCH_4); // Color string parsing regex\n\nvar HEX_START = '^(?:#?|0x?)';\nvar HEX_INT_SINGLE = '([0-9a-fA-F]{1})';\nvar HEX_INT_DOUBLE = '([0-9a-fA-F]{2})';\nvar REGEX_HEX_3 = new RegExp(HEX_START + HEX_INT_SINGLE + HEX_INT_SINGLE + HEX_INT_SINGLE + '$');\nvar REGEX_HEX_4 = new RegExp(HEX_START + HEX_INT_SINGLE + HEX_INT_SINGLE + HEX_INT_SINGLE + HEX_INT_SINGLE + '$');\nvar REGEX_HEX_6 = new RegExp(HEX_START + HEX_INT_DOUBLE + HEX_INT_DOUBLE + HEX_INT_DOUBLE + '$');\nvar REGEX_HEX_8 = new RegExp(HEX_START + HEX_INT_DOUBLE + HEX_INT_DOUBLE + HEX_INT_DOUBLE + HEX_INT_DOUBLE + '$'); // Kelvin temperature bounds\n\nvar KELVIN_MIN = 2000;\nvar KELVIN_MAX = 40000; // Math shorthands\n\nvar log = Math.log;\nvar round = Math.round;\nvar floor = Math.floor;\n/**\r\n * @desc Clamp a number between a min and max value\r\n * @param num - input value\r\n * @param min - min allowed value\r\n * @param max - max allowed value\r\n */\n\nfunction clamp(num, min, max) {\n return Math.min(Math.max(num, min), max);\n}\n/**\r\n * @desc Parse a css unit string - either regular int or a percentage number\r\n * @param str - css unit string\r\n * @param max - max unit value, used for calculating percentages\r\n */\n\n\nfunction parseUnit(str, max) {\n var isPercentage = str.indexOf('%') > -1;\n var num = parseFloat(str);\n return isPercentage ? max / 100 * num : num;\n}\n/**\r\n * @desc Parse hex str to an int\r\n * @param str - hex string to parse\r\n */\n\n\nfunction parseHexInt(str) {\n return parseInt(str, 16);\n}\n/**\r\n * @desc Convert nunber into to 2-digit hex\r\n * @param int - number to convert\r\n */\n\n\nfunction intToHex(int) {\n return int.toString(16).padStart(2, '0');\n}\n\nvar IroColor = function IroColor(value, onChange) {\n // The default Color value\n this.$ = {\n h: 0,\n s: 0,\n v: 0,\n a: 1\n };\n if (value) { this.set(value); } // The watch callback function for this Color will be stored here\n\n this.onChange = onChange;\n this.initialValue = Object.assign({}, this.$); // copy initial value\n};\n\nvar prototypeAccessors = { hsv: { configurable: true },hsva: { configurable: true },hue: { configurable: true },saturation: { configurable: true },value: { configurable: true },alpha: { configurable: true },kelvin: { configurable: true },red: { configurable: true },green: { configurable: true },blue: { configurable: true },rgb: { configurable: true },rgba: { configurable: true },hsl: { configurable: true },hsla: { configurable: true },rgbString: { configurable: true },rgbaString: { configurable: true },hexString: { configurable: true },hex8String: { configurable: true },hslString: { configurable: true },hslaString: { configurable: true } };\n/**\r\n * @desc Set the Color from any valid value\r\n * @param value - new color value\r\n*/\n\n\nIroColor.prototype.set = function set (value) {\n if (typeof value === 'string') {\n if (/^(?:#?|0x?)[0-9a-fA-F]{3,8}$/.test(value)) {\n this.hexString = value;\n } else if (/^rgba?/.test(value)) {\n this.rgbString = value;\n } else if (/^hsla?/.test(value)) {\n this.hslString = value;\n }\n } else if (typeof value === 'object') {\n if (value instanceof IroColor) {\n this.hsv = value.hsv;\n } else if (typeof value === 'object' && 'r' in value && 'g' in value && 'b' in value) {\n this.rgb = value;\n } else if (typeof value === 'object' && 'h' in value && 's' in value && 'v' in value) {\n this.hsv = value;\n } else if (typeof value === 'object' && 'h' in value && 's' in value && 'l' in value) {\n this.hsl = value;\n }\n } else {\n throw new Error('Invalid color value');\n }\n};\n/**\r\n * @desc Shortcut to set a specific channel value\r\n * @param format - hsv | hsl | rgb\r\n * @param channel - individual channel to set, for example if model = hsl, chanel = h | s | l\r\n * @param value - new value for the channel\r\n*/\n\n\nIroColor.prototype.setChannel = function setChannel (format, channel, value) {\n var obj;\n\n this[format] = Object.assign({}, this[format],\n ( obj = {}, obj[channel] = value, obj ));\n};\n/**\r\n * @desc Reset color back to its initial value\r\n */\n\n\nIroColor.prototype.reset = function reset () {\n this.hsva = this.initialValue;\n};\n/**\r\n * @desc make new Color instance with the same value as this one\r\n*/\n\n\nIroColor.prototype.clone = function clone () {\n return new IroColor(this);\n};\n/**\r\n * @desc remove color onChange\r\n */\n\n\nIroColor.prototype.unbind = function unbind () {\n this.onChange = undefined;\n};\n/**\r\n * @desc Convert hsv object to rgb\r\n * @param hsv - hsv color object\r\n*/\n\n\nIroColor.hsvToRgb = function hsvToRgb (hsv) {\n var h = hsv.h / 60;\n var s = hsv.s / 100;\n var v = hsv.v / 100;\n var i = floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - f * s);\n var t = v * (1 - (1 - f) * s);\n var mod = i % 6;\n var r = [v, q, p, p, t, v][mod];\n var g = [t, v, v, q, p, p][mod];\n var b = [p, p, t, v, v, q][mod];\n return {\n r: clamp(r * 255, 0, 255),\n g: clamp(g * 255, 0, 255),\n b: clamp(b * 255, 0, 255)\n };\n};\n/**\r\n * @desc Convert rgb object to hsv\r\n * @param rgb - rgb object\r\n*/\n\n\nIroColor.rgbToHsv = function rgbToHsv (rgb) {\n var r = rgb.r / 255;\n var g = rgb.g / 255;\n var b = rgb.b / 255;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var delta = max - min;\n var hue = 0;\n var value = max;\n var saturation = max === 0 ? 0 : delta / max;\n\n switch (max) {\n case min:\n hue = 0; // achromatic\n\n break;\n\n case r:\n hue = (g - b) / delta + (g < b ? 6 : 0);\n break;\n\n case g:\n hue = (b - r) / delta + 2;\n break;\n\n case b:\n hue = (r - g) / delta + 4;\n break;\n }\n\n return {\n h: hue * 60 % 360,\n s: clamp(saturation * 100, 0, 100),\n v: clamp(value * 100, 0, 100)\n };\n};\n/**\r\n * @desc Convert hsv object to hsl\r\n * @param hsv - hsv object\r\n*/\n\n\nIroColor.hsvToHsl = function hsvToHsl (hsv) {\n var s = hsv.s / 100;\n var v = hsv.v / 100;\n var l = (2 - s) * v;\n var divisor = l <= 1 ? l : 2 - l; // Avoid division by zero when lightness is close to zero\n\n var saturation = divisor < 1e-9 ? 0 : s * v / divisor;\n return {\n h: hsv.h,\n s: clamp(saturation * 100, 0, 100),\n l: clamp(l * 50, 0, 100)\n };\n};\n/**\r\n * @desc Convert hsl object to hsv\r\n * @param hsl - hsl object\r\n*/\n\n\nIroColor.hslToHsv = function hslToHsv (hsl) {\n var l = hsl.l * 2;\n var s = hsl.s * (l <= 100 ? l : 200 - l) / 100; // Avoid division by zero when l + s is near 0\n\n var saturation = l + s < 1e-9 ? 0 : 2 * s / (l + s);\n return {\n h: hsl.h,\n s: clamp(saturation * 100, 0, 100),\n v: clamp((l + s) / 2, 0, 100)\n };\n};\n/**\r\n * @desc Convert a kelvin temperature to an approx, RGB value\r\n * @param kelvin - kelvin temperature\r\n*/\n\n\nIroColor.kelvinToRgb = function kelvinToRgb (kelvin) {\n var temp = kelvin / 100;\n var r, g, b;\n\n if (temp < 66) {\n r = 255;\n g = -155.25485562709179 - 0.44596950469579133 * (g = temp - 2) + 104.49216199393888 * log(g);\n b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp - 10) + 115.67994401066147 * log(b);\n } else {\n r = 351.97690566805693 + 0.114206453784165 * (r = temp - 55) - 40.25366309332127 * log(r);\n g = 325.4494125711974 + 0.07943456536662342 * (g = temp - 50) - 28.0852963507957 * log(g);\n b = 255;\n }\n\n return {\n r: clamp(floor(r), 0, 255),\n g: clamp(floor(g), 0, 255),\n b: clamp(floor(b), 0, 255)\n };\n};\n/**\r\n * @desc Convert an RGB color to an approximate kelvin temperature\r\n * @param kelvin - kelvin temperature\r\n*/\n\n\nIroColor.rgbToKelvin = function rgbToKelvin (rgb) {\n var r = rgb.r;\n var b = rgb.b;\n var eps = 0.4;\n var minTemp = KELVIN_MIN;\n var maxTemp = KELVIN_MAX;\n var temp;\n\n while (maxTemp - minTemp > eps) {\n temp = (maxTemp + minTemp) * 0.5;\n var rgb$1 = IroColor.kelvinToRgb(temp);\n\n if (rgb$1.b / rgb$1.r >= b / r) {\n maxTemp = temp;\n } else {\n minTemp = temp;\n }\n }\n\n return temp;\n};\n\nprototypeAccessors.hsv.get = function () {\n // value is cloned to allow changes to be made to the values before passing them back\n var value = this.$;\n return {\n h: value.h,\n s: value.s,\n v: value.v\n };\n};\n\nprototypeAccessors.hsv.set = function (newValue) {\n var oldValue = this.$;\n newValue = Object.assign({}, oldValue,\n newValue); // If this Color is being watched for changes we need to compare the new and old values to check the difference\n // Otherwise we can just be lazy\n\n if (this.onChange) {\n // Compute changed values\n var changes = {\n h: false,\n v: false,\n s: false,\n a: false\n };\n\n for (var key in oldValue) {\n changes[key] = newValue[key] != oldValue[key];\n }\n\n this.$ = newValue; // If the value has changed, call hook callback\n\n if (changes.h || changes.s || changes.v || changes.a) { this.onChange(this, changes); }\n } else {\n this.$ = newValue;\n }\n};\n\nprototypeAccessors.hsva.get = function () {\n return Object.assign({}, this.$);\n};\n\nprototypeAccessors.hsva.set = function (value) {\n this.hsv = value;\n};\n\nprototypeAccessors.hue.get = function () {\n return this.$.h;\n};\n\nprototypeAccessors.hue.set = function (value) {\n this.hsv = {\n h: value\n };\n};\n\nprototypeAccessors.saturation.get = function () {\n return this.$.s;\n};\n\nprototypeAccessors.saturation.set = function (value) {\n this.hsv = {\n s: value\n };\n};\n\nprototypeAccessors.value.get = function () {\n return this.$.v;\n};\n\nprototypeAccessors.value.set = function (value) {\n this.hsv = {\n v: value\n };\n};\n\nprototypeAccessors.alpha.get = function () {\n return this.$.a;\n};\n\nprototypeAccessors.alpha.set = function (value) {\n this.hsv = Object.assign({}, this.hsv,\n {a: value});\n};\n\nprototypeAccessors.kelvin.get = function () {\n return IroColor.rgbToKelvin(this.rgb);\n};\n\nprototypeAccessors.kelvin.set = function (value) {\n this.rgb = IroColor.kelvinToRgb(value);\n};\n\nprototypeAccessors.red.get = function () {\n var rgb = this.rgb;\n return rgb.r;\n};\n\nprototypeAccessors.red.set = function (value) {\n this.rgb = Object.assign({}, this.rgb,\n {r: value});\n};\n\nprototypeAccessors.green.get = function () {\n var rgb = this.rgb;\n return rgb.g;\n};\n\nprototypeAccessors.green.set = function (value) {\n this.rgb = Object.assign({}, this.rgb,\n {g: value});\n};\n\nprototypeAccessors.blue.get = function () {\n var rgb = this.rgb;\n return rgb.b;\n};\n\nprototypeAccessors.blue.set = function (value) {\n this.rgb = Object.assign({}, this.rgb,\n {b: value});\n};\n\nprototypeAccessors.rgb.get = function () {\n var ref = IroColor.hsvToRgb(this.$);\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n return {\n r: round(r),\n g: round(g),\n b: round(b)\n };\n};\n\nprototypeAccessors.rgb.set = function (value) {\n this.hsv = Object.assign({}, IroColor.rgbToHsv(value),\n {a: value.a === undefined ? 1 : value.a});\n};\n\nprototypeAccessors.rgba.get = function () {\n return Object.assign({}, this.rgb,\n {a: this.alpha});\n};\n\nprototypeAccessors.rgba.set = function (value) {\n this.rgb = value;\n};\n\nprototypeAccessors.hsl.get = function () {\n var ref = IroColor.hsvToHsl(this.$);\n var h = ref.h;\n var s = ref.s;\n var l = ref.l;\n return {\n h: round(h),\n s: round(s),\n l: round(l)\n };\n};\n\nprototypeAccessors.hsl.set = function (value) {\n this.hsv = Object.assign({}, IroColor.hslToHsv(value),\n {a: value.a === undefined ? 1 : value.a});\n};\n\nprototypeAccessors.hsla.get = function () {\n return Object.assign({}, this.hsl,\n {a: this.alpha});\n};\n\nprototypeAccessors.hsla.set = function (value) {\n this.hsl = value;\n};\n\nprototypeAccessors.rgbString.get = function () {\n var rgb = this.rgb;\n return (\"rgb(\" + (rgb.r) + \", \" + (rgb.g) + \", \" + (rgb.b) + \")\");\n};\n\nprototypeAccessors.rgbString.set = function (value) {\n var match;\n var r,\n g,\n b,\n a = 1;\n\n if (match = REGEX_FUNCTIONAL_RGB.exec(value)) {\n r = parseUnit(match[1], 255);\n g = parseUnit(match[2], 255);\n b = parseUnit(match[3], 255);\n } else if (match = REGEX_FUNCTIONAL_RGBA.exec(value)) {\n r = parseUnit(match[1], 255);\n g = parseUnit(match[2], 255);\n b = parseUnit(match[3], 255);\n a = parseUnit(match[4], 1);\n }\n\n if (match) {\n this.rgb = {\n r: r,\n g: g,\n b: b,\n a: a\n };\n } else {\n throw new Error('Invalid rgb string');\n }\n};\n\nprototypeAccessors.rgbaString.get = function () {\n var rgba = this.rgba;\n return (\"rgba(\" + (rgba.r) + \", \" + (rgba.g) + \", \" + (rgba.b) + \", \" + (rgba.a) + \")\");\n};\n\nprototypeAccessors.rgbaString.set = function (value) {\n this.rgbString = value;\n};\n\nprototypeAccessors.hexString.get = function () {\n var rgb = this.rgb;\n return (\"#\" + (intToHex(rgb.r)) + (intToHex(rgb.g)) + (intToHex(rgb.b)));\n};\n\nprototypeAccessors.hexString.set = function (value) {\n var match;\n var r,\n g,\n b,\n a = 255;\n\n if (match = REGEX_HEX_3.exec(value)) {\n r = parseHexInt(match[1]) * 17;\n g = parseHexInt(match[2]) * 17;\n b = parseHexInt(match[3]) * 17;\n } else if (match = REGEX_HEX_4.exec(value)) {\n r = parseHexInt(match[1]) * 17;\n g = parseHexInt(match[2]) * 17;\n b = parseHexInt(match[3]) * 17;\n a = parseHexInt(match[4]) * 17;\n } else if (match = REGEX_HEX_6.exec(value)) {\n r = parseHexInt(match[1]);\n g = parseHexInt(match[2]);\n b = parseHexInt(match[3]);\n } else if (match = REGEX_HEX_8.exec(value)) {\n r = parseHexInt(match[1]);\n g = parseHexInt(match[2]);\n b = parseHexInt(match[3]);\n a = parseHexInt(match[4]);\n }\n\n if (match) {\n this.rgb = {\n r: r,\n g: g,\n b: b,\n a: a / 255\n };\n } else {\n throw new Error('Invalid hex string');\n }\n};\n\nprototypeAccessors.hex8String.get = function () {\n var rgba = this.rgba;\n return (\"#\" + (intToHex(rgba.r)) + (intToHex(rgba.g)) + (intToHex(rgba.b)) + (intToHex(floor(rgba.a * 255))));\n};\n\nprototypeAccessors.hex8String.set = function (value) {\n this.hexString = value;\n};\n\nprototypeAccessors.hslString.get = function () {\n var hsl = this.hsl;\n return (\"hsl(\" + (hsl.h) + \", \" + (hsl.s) + \"%, \" + (hsl.l) + \"%)\");\n};\n\nprototypeAccessors.hslString.set = function (value) {\n var match;\n var h,\n s,\n l,\n a = 1;\n\n if (match = REGEX_FUNCTIONAL_HSL.exec(value)) {\n h = parseUnit(match[1], 360);\n s = parseUnit(match[2], 100);\n l = parseUnit(match[3], 100);\n } else if (match = REGEX_FUNCTIONAL_HSLA.exec(value)) {\n h = parseUnit(match[1], 360);\n s = parseUnit(match[2], 100);\n l = parseUnit(match[3], 100);\n a = parseUnit(match[4], 1);\n }\n\n if (match) {\n this.hsl = {\n h: h,\n s: s,\n l: l,\n a: a\n };\n } else {\n throw new Error('Invalid hsl string');\n }\n};\n\nprototypeAccessors.hslaString.get = function () {\n var hsla = this.hsla;\n return (\"hsl(\" + (hsla.h) + \", \" + (hsla.s) + \"%, \" + (hsla.l) + \"%, \" + (hsla.a) + \")\");\n};\n\nprototypeAccessors.hslaString.set = function (value) {\n this.hslString = value;\n};\n\nObject.defineProperties( IroColor.prototype, prototypeAccessors );\n\nvar sliderDefaultOptions = {\n sliderShape: 'bar',\n sliderType: 'value',\n minTemperature: 2200,\n maxTemperature: 11000\n};\n/**\r\n * @desc Get the CSS styles for the slider root\r\n * @param props - slider props\r\n */\n\nfunction getSliderStyles(props) {\n var obj;\n\n return ( obj = {}, obj[props.layoutDirection === 'horizontal' ? 'marginLeft' : 'marginTop'] = props.sliderMargin, obj );\n}\n/**\r\n * @desc Get the bounding dimensions of the slider\r\n * @param props - slider props\r\n */\n\nfunction getSliderDimensions(props) {\n var width = props.width;\n var sliderSize = props.sliderSize;\n var borderWidth = props.borderWidth;\n var handleRadius = props.handleRadius;\n var padding = props.padding;\n var sliderShape = props.sliderShape;\n var ishorizontal = props.layoutDirection === 'horizontal'; // automatically calculate sliderSize if its not defined\n\n sliderSize = sliderSize ? sliderSize : padding * 2 + handleRadius * 2 + borderWidth * 2;\n\n if (sliderShape === 'circle') {\n return {\n handleStart: props.padding + props.handleRadius,\n handleRange: width - padding * 2 - handleRadius * 2 - borderWidth * 2,\n width: width,\n height: width,\n cx: width / 2,\n cy: width / 2,\n radius: width / 2 - borderWidth / 2\n };\n } else {\n return {\n handleStart: sliderSize / 2,\n handleRange: width - sliderSize,\n radius: sliderSize / 2,\n x: 0,\n y: 0,\n width: ishorizontal ? sliderSize : width,\n height: ishorizontal ? width : sliderSize\n };\n }\n}\n/**\r\n * @desc Get the current slider value for a given color, as a percentage\r\n * @param props - slider props\r\n * @param color\r\n */\n\nfunction getCurrentSliderValue(props, color) {\n var hsva = color.hsva;\n var rgb = color.rgb;\n\n switch (props.sliderType) {\n case 'red':\n return rgb.r / 2.55;\n\n case 'green':\n return rgb.g / 2.55;\n\n case 'blue':\n return rgb.b / 2.55;\n\n case 'alpha':\n return hsva.a * 100;\n\n case 'kelvin':\n var minTemperature = props.minTemperature;\n var maxTemperature = props.maxTemperature;\n var temperatureRange = maxTemperature - minTemperature;\n var percent = (color.kelvin - minTemperature) / temperatureRange * 100; // clmap percentage\n\n return Math.max(0, Math.min(percent, 100));\n\n case 'hue':\n return hsva.h /= 3.6;\n\n case 'saturation':\n return hsva.s;\n\n case 'value':\n default:\n return hsva.v;\n }\n}\n/**\r\n * @desc Get the current slider value from user input\r\n * @param props - slider props\r\n * @param x - global input x position\r\n * @param y - global input y position\r\n */\n\nfunction getSliderValueFromInput(props, x, y) {\n var ref = getSliderDimensions(props);\n var handleRange = ref.handleRange;\n var handleStart = ref.handleStart;\n var handlePos;\n\n if (props.layoutDirection === 'horizontal') {\n handlePos = -1 * y + handleRange + handleStart;\n } else {\n handlePos = x - handleStart;\n } // clamp handle position\n\n\n handlePos = Math.max(Math.min(handlePos, handleRange), 0);\n var percent = Math.round(100 / handleRange * handlePos);\n\n switch (props.sliderType) {\n case 'kelvin':\n var minTemperature = props.minTemperature;\n var maxTemperature = props.maxTemperature;\n var temperatureRange = maxTemperature - minTemperature;\n return minTemperature + temperatureRange * (percent / 100);\n\n case 'alpha':\n return percent / 100;\n\n case 'hue':\n return percent * 3.6;\n\n case 'red':\n case 'blue':\n case 'green':\n return percent * 2.55;\n\n default:\n return percent;\n }\n}\n/**\r\n * @desc Get the current handle position for a given color\r\n * @param props - slider props\r\n * @param color\r\n */\n\nfunction getSliderHandlePosition(props, color) {\n var ref = getSliderDimensions(props);\n var width = ref.width;\n var height = ref.height;\n var handleRange = ref.handleRange;\n var handleStart = ref.handleStart;\n var ishorizontal = props.layoutDirection === 'horizontal';\n var sliderValue = getCurrentSliderValue(props, color);\n var midPoint = ishorizontal ? width / 2 : height / 2;\n var handlePos = handleStart + sliderValue / 100 * handleRange;\n\n if (ishorizontal) {\n handlePos = -1 * handlePos + handleRange + handleStart * 2;\n }\n\n return {\n x: ishorizontal ? midPoint : handlePos,\n y: ishorizontal ? handlePos : midPoint\n };\n}\n/**\r\n * @desc Get the gradient stops for a slider\r\n * @param props - slider props\r\n * @param color\r\n */\n\nfunction getSliderGradient(props, color) {\n var hsv = color.hsv;\n var rgb = color.rgb;\n\n switch (props.sliderType) {\n case 'red':\n return [[0, (\"rgb(\" + (0) + \",\" + (rgb.g) + \",\" + (rgb.b) + \")\")], [100, (\"rgb(\" + (255) + \",\" + (rgb.g) + \",\" + (rgb.b) + \")\")]];\n\n case 'green':\n return [[0, (\"rgb(\" + (rgb.r) + \",\" + (0) + \",\" + (rgb.b) + \")\")], [100, (\"rgb(\" + (rgb.r) + \",\" + (255) + \",\" + (rgb.b) + \")\")]];\n\n case 'blue':\n return [[0, (\"rgb(\" + (rgb.r) + \",\" + (rgb.g) + \",\" + (0) + \")\")], [100, (\"rgb(\" + (rgb.r) + \",\" + (rgb.g) + \",\" + (255) + \")\")]];\n\n case 'alpha':\n return [[0, (\"rgba(\" + (rgb.r) + \",\" + (rgb.g) + \",\" + (rgb.b) + \",0)\")], [100, (\"rgb(\" + (rgb.r) + \",\" + (rgb.g) + \",\" + (rgb.b) + \")\")]];\n\n case 'kelvin':\n var stops = [];\n var min = props.minTemperature;\n var max = props.maxTemperature;\n var numStops = 8;\n var range = max - min;\n\n for (var kelvin = min, stop = 0; kelvin < max; kelvin += range / numStops, stop += 1) {\n var ref = IroColor.kelvinToRgb(kelvin);\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n stops.push([100 / numStops * stop, (\"rgb(\" + r + \",\" + g + \",\" + b + \")\")]);\n }\n\n return stops;\n\n case 'hue':\n return [[0, '#f00'], [16.666, '#ff0'], [33.333, '#0f0'], [50, '#0ff'], [66.666, '#00f'], [83.333, '#f0f'], [100, '#f00']];\n\n case 'saturation':\n var noSat = IroColor.hsvToHsl({\n h: hsv.h,\n s: 0,\n v: hsv.v\n });\n var fullSat = IroColor.hsvToHsl({\n h: hsv.h,\n s: 100,\n v: hsv.v\n });\n return [[0, (\"hsl(\" + (noSat.h) + \",\" + (noSat.s) + \"%,\" + (noSat.l) + \"%)\")], [100, (\"hsl(\" + (fullSat.h) + \",\" + (fullSat.s) + \"%,\" + (fullSat.l) + \"%)\")]];\n\n case 'value':\n default:\n var hsl = IroColor.hsvToHsl({\n h: hsv.h,\n s: hsv.s,\n v: 100\n });\n return [[0, '#000'], [100, (\"hsl(\" + (hsl.h) + \",\" + (hsl.s) + \"%,\" + (hsl.l) + \"%)\")]];\n }\n}\n/**\r\n * @desc Get the gradient coords for a slider\r\n * @param props - slider props\r\n */\n\nfunction getSliderGradientCoords(props) {\n var ishorizontal = props.layoutDirection === 'horizontal';\n return {\n x1: '0%',\n y1: ishorizontal ? '100%' : '0%',\n x2: ishorizontal ? '0%' : '100%',\n y2: '0%'\n };\n}\n\n/**\r\n * @desc Get the point as the center of the wheel\r\n * @param props - wheel props\r\n */\nfunction getWheelDimensions(props) {\n var rad = props.width / 2;\n return {\n width: props.width,\n radius: rad - props.borderWidth,\n cx: rad,\n cy: rad\n };\n}\n/**\r\n * @desc Translate an angle according to wheelAngle and wheelDirection\r\n * @param props - wheel props\r\n * @param angle - input angle\r\n */\n\nfunction translateWheelAngle(props, angle, invert) {\n var wheelAngle = props.wheelAngle;\n var wheelDirection = props.wheelDirection;\n\n if (!invert && wheelDirection === 'clockwise' || invert && wheelDirection === 'anticlockwise') {\n angle = (invert ? 180 : 360) - (wheelAngle - angle);\n } else {\n angle = wheelAngle + angle;\n } // javascript's modulo operator doesn't produce positive numbers with negative input\n // https://dev.to/maurobringolf/a-neat-trick-to-compute-modulo-of-negative-numbers-111e\n\n\n return (angle % 360 + 360) % 360;\n}\n/**\r\n * @desc Get the current handle position for a given color\r\n * @param props - wheel props\r\n * @param color\r\n */\n\nfunction getWheelHandlePosition(props, color) {\n var hsv = color.hsv;\n var ref = getWheelDimensions(props);\n var cx = ref.cx;\n var cy = ref.cy;\n var handleRange = props.width / 2 - props.padding - props.handleRadius - props.borderWidth;\n var handleAngle = (180 + translateWheelAngle(props, hsv.h, true)) * (Math.PI / 180);\n var handleDist = hsv.s / 100 * handleRange;\n var direction = props.wheelDirection === 'clockwise' ? -1 : 1;\n return {\n x: cx + handleDist * Math.cos(handleAngle) * direction,\n y: cy + handleDist * Math.sin(handleAngle) * direction\n };\n}\n/**\r\n * @desc Get the current wheel value from user input\r\n * @param props - wheel props\r\n * @param x - global input x position\r\n * @param y - global input y position\r\n */\n\nfunction getWheelValueFromInput(props, x, y) {\n var ref = getWheelDimensions(props);\n var cx = ref.cx;\n var cy = ref.cy;\n var handleRange = props.width / 2 - props.padding - props.handleRadius - props.borderWidth;\n x = cx - x;\n y = cy - y; // Calculate the hue by converting the angle to radians\n\n var hue = translateWheelAngle(props, Math.atan2(-y, -x) * (180 / Math.PI)); // Find the point's distance from the center of the wheel\n // This is used to show the saturation level\n\n var handleDist = Math.min(Math.sqrt(x * x + y * y), handleRange);\n return {\n h: Math.round(hue),\n s: Math.round(100 / handleRange * handleDist)\n };\n}\n\n/**\r\n * @desc Get the CSS styles for the box root element\r\n * @param props - box props\r\n */\nfunction getBoxStyles(props) {\n var obj;\n\n return ( obj = {}, obj[props.layoutDirection === 'horizontal' ? 'marginLeft' : 'marginTop'] = props.sliderMargin, obj );\n}\n/**\r\n * @desc Get the bounding dimensions of the box\r\n * @param props - box props\r\n */\n\nfunction getBoxDimensions(props) {\n var width = props.width;\n var padding = props.padding;\n var handleRadius = props.handleRadius;\n return {\n width: width,\n height: width,\n radius: padding + handleRadius\n };\n}\n/**\r\n * @desc Get the current box value from user input\r\n * @param props - box props\r\n * @param x - global input x position\r\n * @param y - global input y position\r\n */\n\nfunction getBoxValueFromInput(props, x, y) {\n var ref = getBoxDimensions(props);\n var width = ref.width;\n var height = ref.height;\n var radius = ref.radius;\n var handleStart = radius;\n var handleRangeX = width - radius * 2;\n var handleRangeY = height - radius * 2;\n var percentX = (x - handleStart) / handleRangeX * 100;\n var percentY = (y - handleStart) / handleRangeY * 100;\n return {\n s: Math.max(0, Math.min(percentX, 100)),\n v: Math.max(0, Math.min(100 - percentY, 100))\n };\n}\n/**\r\n * @desc Get the current box handle position for a given color\r\n * @param props - box props\r\n * @param color\r\n */\n\nfunction getBoxHandlePosition(props, color) {\n var ref = getBoxDimensions(props);\n var width = ref.width;\n var height = ref.height;\n var radius = ref.radius;\n var hsv = color.hsv;\n var handleStart = radius;\n var handleRangeX = width - radius * 2;\n var handleRangeY = height - radius * 2;\n return {\n x: handleStart + hsv.s / 100 * handleRangeX,\n y: handleStart + (handleRangeY - hsv.v / 100 * handleRangeY)\n };\n}\n/**\r\n * @desc Get the gradient stops for a box\r\n * @param props - box props\r\n * @param color\r\n */\n\nfunction getBoxGradients(props, color) {\n var hue = color.hue;\n return [// saturation gradient\n [[0, '#fff'], [100, (\"hsl(\" + hue + \",100%,50%)\")]], // lightness gradient\n [[0, 'rgba(0,0,0,0)'], [100, '#000']]];\n}\n\n// Keep track of html elements for resolveSvgUrl\n// getElementsByTagName returns a live HTMLCollection, which stays in sync with the DOM tree\n// So it only needs to be called once\nvar BASE_ELEMENTS;\n/**\r\n * @desc Resolve an SVG reference URL\r\n * This is required to work around how Safari and iOS webviews handle gradient URLS under certain conditions\r\n * If a page is using a client-side routing library which makes use of the HTML tag,\r\n * Safari won't be able to render SVG gradients properly (as they are referenced by URLs)\r\n * More info on the problem:\r\n * https://stackoverflow.com/questions/19742805/angular-and-svg-filters/19753427#19753427\r\n * https://github.com/jaames/iro.js/issues/18\r\n * https://github.com/jaames/iro.js/issues/45\r\n * https://github.com/jaames/iro.js/pull/89\r\n * @props url - SVG reference URL\r\n */\n\nfunction resolveSvgUrl(url) {\n if (!BASE_ELEMENTS) { BASE_ELEMENTS = document.getElementsByTagName('base'); } // Sniff useragent string to check if the user is running Safari\n\n var ua = window.navigator.userAgent;\n var isSafari = /^((?!chrome|android).)*safari/i.test(ua);\n var isIos = /iPhone|iPod|iPad/i.test(ua);\n var location = window.location;\n return (isSafari || isIos) && BASE_ELEMENTS.length > 0 ? ((location.protocol) + \"//\" + (location.host) + (location.pathname) + (location.search) + url) : url;\n}\n/**\r\n * @desc Get the path commands to draw an svg arc\r\n * @props cx - arc center point x\r\n * @props cy - arc center point y\r\n * @props radius - arc radius\r\n * @props startAngle - arc start angle\r\n * @props endAngle - arc end angle\r\n */\n\nfunction getSvgArcPath(cx, cy, radius, startAngle, endAngle) {\n var largeArcFlag = endAngle - startAngle <= 180 ? 0 : 1;\n startAngle *= Math.PI / 180;\n endAngle *= Math.PI / 180;\n var x1 = cx + radius * Math.cos(endAngle);\n var y1 = cy + radius * Math.sin(endAngle);\n var x2 = cx + radius * Math.cos(startAngle);\n var y2 = cy + radius * Math.sin(startAngle);\n return (\"M \" + x1 + \" \" + y1 + \" A \" + radius + \" \" + radius + \" 0 \" + largeArcFlag + \" 0 \" + x2 + \" \" + y2);\n}\n/**\r\n * @desc Given a specifc (x, y) position, test if there's a handle there and return its index, else return null.\r\n * This is used for components like the box and wheel which support multiple handles when multicolor is active\r\n * @props x - point x position\r\n * @props y - point y position\r\n * @props handlePositions - array of {x, y} coords for each handle\r\n */\n\nfunction getHandleAtPoint(props, x, y, handlePositions) {\n for (var i = 0; i < handlePositions.length; i++) {\n var dX = handlePositions[i].x - x;\n var dY = handlePositions[i].y - y;\n var dist = Math.sqrt(dX * dX + dY * dY);\n\n if (dist < props.handleRadius) {\n return i;\n }\n }\n\n return null;\n}\n\nvar iroColorPickerOptionDefaults = {\n width: 300,\n height: 300,\n handleRadius: 8,\n handleSvg: null,\n handleProps: {\n x: 0,\n y: 0\n },\n color: '#fff',\n colors: [],\n borderColor: '#fff',\n borderWidth: 0,\n wheelLightness: true,\n wheelAngle: 0,\n wheelDirection: 'anticlockwise',\n layoutDirection: 'vertical',\n sliderSize: null,\n sliderMargin: 12,\n padding: 6\n};\n\nexport { IroColor, sliderDefaultOptions, getSliderStyles, getSliderDimensions, getCurrentSliderValue, getSliderValueFromInput, getSliderHandlePosition, getSliderGradient, getSliderGradientCoords, getWheelDimensions, translateWheelAngle, getWheelHandlePosition, getWheelValueFromInput, getBoxStyles, getBoxDimensions, getBoxValueFromInput, getBoxHandlePosition, getBoxGradients, resolveSvgUrl, getSvgArcPath, getHandleAtPoint, iroColorPickerOptionDefaults };\n//# sourceMappingURL=iro-core.es.js.map\n","import { Fragment, Component, h } from 'preact';\nimport { IroInputType } from './ComponentTypes';\n\nconst enum InputEventType {\n MouseDown = 'mousedown',\n MouseMove = 'mousemove',\n MouseUp = 'mouseup',\n TouchStart = 'touchstart',\n TouchMove = 'touchmove',\n TouchEnd = 'touchend'\n};\n\nconst SECONDARY_EVENTS = [InputEventType.MouseMove, InputEventType.TouchMove, InputEventType.MouseUp, InputEventType.TouchEnd];\n\ninterface Props {\n onInput: (x: number, y: number, type: IroInputType) => void;\n}\n\ninterface State {}\n\n// Base component class for iro UI components\n// This extends the Preact component class to allow them to react to mouse/touch input events by themselves\nexport class IroComponentWrapper extends Component {\n public uid: string\n public base: HTMLElement;\n\n constructor(props) {\n super(props);\n // Generate unique ID for the component\n // This can be used to generate unique IDs for gradients, etc\n this.uid = (Math.random() + 1).toString(36).substring(5);\n }\n\n render(props) {\n const eventHandler = this.handleEvent.bind(this);\n\n let rootProps = {\n onMouseDown: eventHandler,\n // https://github.com/jaames/iro.js/issues/126\n // https://github.com/preactjs/preact/issues/2113#issuecomment-553408767\n ontouchstart: eventHandler,\n // onTouchStart: eventHandler,\n };\n\n const isHorizontal = props.layoutDirection === 'horizontal';\n const margin = props.margin === null ? props.sliderMargin : props.margin;\n\n const rootStyles = {\n overflow: 'visible',\n display: isHorizontal ? 'inline-block' : 'block'\n };\n\n // first component shouldn't have any margin\n if (props.index > 0) {\n rootStyles[isHorizontal ? 'marginLeft' : 'marginTop'] = margin;\n }\n\n return (\n \n { props.children(this.uid, rootProps, rootStyles) }\n \n )\n }\n\n // More info on handleEvent:\n // https://medium.com/@WebReflection/dom-handleevent-a-cross-platform-standard-since-year-2000-5bf17287fd38\n // TL;DR this lets us have a single point of entry for multiple events, and we can avoid callback/binding hell\n handleEvent(e: MouseEvent & TouchEvent) {\n const inputHandler = this.props.onInput;\n // Get the screen position of the component\n const bounds = this.base.getBoundingClientRect();\n // Prefect default browser action\n e.preventDefault();\n // Detect if the event is a touch event by checking if it has the `touches` property\n // If it is a touch event, use the first touch input\n const point = e.touches ? e.changedTouches[0] : e;\n const x = point.clientX - bounds.left;\n const y = point.clientY - bounds.top;\n switch (e.type) {\n case InputEventType.MouseDown:\n case InputEventType.TouchStart:\n SECONDARY_EVENTS.forEach(event => {\n document.addEventListener(event, this, { passive: false });\n });\n inputHandler(x, y, IroInputType.Start);\n break;\n case InputEventType.MouseMove:\n case InputEventType.TouchMove:\n inputHandler(x, y, IroInputType.Move);\n break;\n case InputEventType.MouseUp:\n case InputEventType.TouchEnd:\n inputHandler(x, y, IroInputType.End);\n SECONDARY_EVENTS.forEach(event => {\n document.removeEventListener(event, this);\n });\n break;\n }\n }\n\n\n}\n","import { h } from 'preact';\nimport { resolveSvgUrl } from '@irojs/iro-core';\n\ninterface IroHandleProps {\n isActive: boolean;\n index: number;\n x: number;\n y: number;\n r: number;\n url: string;\n props: any;\n fill?: string;\n}\n\nexport function IroHandle(props: IroHandleProps) {\n const radius = props.r;\n const url = props.url;\n\n return (\n \n {url && (\n \n )}\n {!url && (\n \n )}\n {!url && (\n \n )}\n \n );\n}\n\nIroHandle.defaultProps = {\n fill: 'none',\n x: 0,\n y: 0,\n r: 8,\n url: null,\n props: {x: 0, y: 0}\n};","import { h } from 'preact';\nimport {\n IroColor,\n SliderShape,\n SliderType,\n sliderDefaultOptions,\n resolveSvgUrl,\n getSliderDimensions, \n getSliderValueFromInput, \n getSliderHandlePosition, \n getSliderGradient,\n getSliderGradientCoords,\n} from '@irojs/iro-core';\n\nimport { IroComponentWrapper } from './ComponentWrapper';\nimport { IroComponentProps, IroInputType } from './ComponentTypes';\nimport { IroHandle } from './Handle';\n\ninterface IroSliderProps extends IroComponentProps {\n sliderType: SliderType;\n sliderShape: SliderShape;\n minTemperature: number;\n maxTemperature: number;\n};\n\nexport function IroSlider(props: IroSliderProps) {\n const activeIndex = props.activeIndex;\n const activeColor = (activeIndex !== undefined && activeIndex < props.colors.length) ? props.colors[activeIndex] : props.color;\n const { width, height, radius } = getSliderDimensions(props);\n const handlePos = getSliderHandlePosition(props, activeColor);\n const gradient = getSliderGradient(props, activeColor);\n const isAlpha = props.sliderType === 'alpha';\n\n function handleInput(x: number, y: number, type: IroInputType) {\n const value = getSliderValueFromInput(props, x, y);\n props.parent.inputActive = true;\n activeColor[props.sliderType] = value;\n props.onInput(type, props.id);\n }\n\n return (\n \n {(uid, rootProps, rootStyles) => (\n \n \n \n { gradient.map(([ offset, color ]) => (\n \n ))}\n \n { isAlpha && (\n \n \n \n \n \n )}\n { isAlpha && (\n \n \n \n \n )}\n \n \n \n \n )}\n \n );\n}\n\nIroSlider.defaultProps = {\n ...sliderDefaultOptions\n};","import { h } from 'preact';\nimport {\n IroColor,\n resolveSvgUrl,\n getBoxDimensions,\n getBoxGradients,\n getBoxValueFromInput,\n getBoxHandlePosition,\n getHandleAtPoint\n} from '@irojs/iro-core';\n\nimport { IroComponentWrapper } from './ComponentWrapper';\nimport { IroComponentProps, IroInputType } from './ComponentTypes';\nimport { IroHandle } from './Handle';\n\ninterface IroBoxProps extends IroComponentProps {\n colors: IroColor[];\n}\n\nexport function IroBox(props: IroBoxProps) {\n const { width, height, radius } = getBoxDimensions(props);\n const { colors } = props;\n\n const colorPicker = props.parent;\n const activeIndex = props.activeIndex;\n const activeColor = (activeIndex !== undefined && activeIndex < props.colors.length) ? props.colors[activeIndex] : props.color;\n const gradients = getBoxGradients(props, activeColor);\n const handlePositions = colors.map(color => getBoxHandlePosition(props, color));\n\n function handleInput(x: number, y: number, inputType: IroInputType) {\n if (inputType === IroInputType.Start) {\n // getHandleAtPoint() returns the index for the handle if the point 'hits' it, or null otherwise\n const activeHandle = getHandleAtPoint(props, x, y, handlePositions);\n // If the input hit a handle, set it as the active handle, but don't update the color\n if (activeHandle !== null) {\n colorPicker.setActiveColor(activeHandle);\n } \n // If the input didn't hit a handle, set the currently active handle to that position\n else {\n colorPicker.inputActive = true;\n activeColor.hsv = getBoxValueFromInput(props, x, y);\n props.onInput(inputType, props.id);\n }\n }\n // move is fired when the user has started dragging\n else if (inputType === IroInputType.Move) {\n colorPicker.inputActive = true;\n activeColor.hsv = getBoxValueFromInput(props, x, y);\n }\n // let the color picker fire input:start, input:move or input:end events\n props.onInput(inputType, props.id);\n }\n\n return (\n \n {(uid, rootProps, rootStyles) => (\n \n \n \n { gradients[0].map(([ offset, color ]) => (\n \n ))}\n \n \n { gradients[1].map(([ offset, color ]) => (\n \n ))}\n \n \n \n \n \n \n \n { colors.filter(color => color !== activeColor).map(color => (\n \n ))}\n \n \n )}\n \n );\n}\n","import { h } from 'preact';\nimport { \n IroColor,\n resolveSvgUrl,\n getSvgArcPath,\n translateWheelAngle, \n getWheelDimensions,\n getWheelHandlePosition,\n getWheelValueFromInput,\n getHandleAtPoint\n} from '@irojs/iro-core';\n\nimport { IroComponentWrapper } from './ComponentWrapper';\nimport { IroComponentProps, IroInputType } from './ComponentTypes';\nimport { IroHandle } from './Handle';\n\nconst HUE_STEPS = Array.apply(null, {length: 360}).map((_, index) => index);\n\ninterface IroWheelProps extends IroComponentProps {\n colors: IroColor[];\n}\n\nexport function IroWheel(props: IroWheelProps) {\n\n const { width, radius, cx, cy } = getWheelDimensions(props);\n const { colors, borderWidth } = props;\n\n const colorPicker = props.parent;\n const activeColor = props.color;\n const hsv = activeColor.hsv;\n const handlePositions = colors.map(color => getWheelHandlePosition(props, color));\n\n function handleInput(x: number, y: number, inputType: IroInputType) {\n if (inputType === IroInputType.Start) {\n // getHandleAtPoint() returns the index for the handle if the point 'hits' it, or null otherwise\n const activeHandle = getHandleAtPoint(props, x, y, handlePositions);\n // If the input hit a handle, set it as the active handle, but don't update the color\n if (activeHandle !== null) {\n colorPicker.setActiveColor(activeHandle);\n } \n // If the input didn't hit a handle, set the currently active handle to that position\n else {\n colorPicker.inputActive = true;\n activeColor.hsv = getWheelValueFromInput(props, x, y);\n props.onInput(inputType, props.id);\n }\n }\n // move is fired when the user has started dragging\n else if (inputType === IroInputType.Move) {\n colorPicker.inputActive = true;\n activeColor.hsv = getWheelValueFromInput(props, x, y);\n }\n // let the color picker fire input:start, input:move or input:end events\n props.onInput(inputType, props.id);\n }\n\n return (\n \n {(uid, rootProps, rootStyles) => (\n \n \n \n \n \n \n \n \n { HUE_STEPS.map(angle => (\n \n ))}\n \n \n { props.wheelLightness && (\n \n )}\n \n { colors.filter(color => color !== activeColor).map(color => (\n \n ))}\n \n \n )}\n \n );\n}","import { h, render, ComponentType, Attributes } from 'preact';\n\n// Turn a component into a widget\n// This returns a factory function that can be used to create an instance of the widget component\n// The first function param is a DOM element or CSS selector for the element to mount to,\n// The second param is for config options which are passed to the component as props\n// This factory function can also delay mounting the element into the DOM until the page is ready\n\nexport interface Widget {\n base?: Element | Text;\n onMount: (root: Element) => void;\n}\n\nexport function createWidget(WidgetComponent: ComponentType) {\n\n const widgetFactory = function (parent: string | HTMLElement, props: Partial

): C {\n let widget: C; // will become an instance of the widget component class\n const widgetRoot = document.createElement('div');\n\n // Render widget into a temp DOM node\n render(\n h(WidgetComponent, {\n ref: ref => widget = ref,\n ...props,\n } as Attributes),\n widgetRoot\n );\n \n function mountWidget() {\n const container = parent instanceof Element ? parent : document.querySelector(parent);\n container.appendChild(widget.base);\n widget.onMount(container);\n };\n // Mount it into the DOM when the page document is ready\n if (document.readyState !== 'loading') {\n mountWidget();\n } else {\n document.addEventListener('DOMContentLoaded', mountWidget);\n }\n\n return widget;\n }\n\n // Allow the widget factory to inherit component prototype + static class methods\n // This makes it easier for plugin authors to extend the base widget component\n widgetFactory.prototype = WidgetComponent.prototype;\n Object.assign(widgetFactory, WidgetComponent);\n // Add reference to base component too\n widgetFactory.__component = WidgetComponent; \n\n return widgetFactory;\n\n}","import { h, Component } from 'preact';\nimport { IroColor, IroColorValue, IroColorPickerOptions, iroColorPickerOptionDefaults } from '@irojs/iro-core';\n\nimport { IroInputType } from './ComponentTypes';\nimport { IroWheel } from './Wheel';\nimport { IroSlider } from './Slider';\nimport { createWidget } from './createWidget';\n\ninterface ColorPickerEvents {\n [key: string]: Function[];\n}\n\ninterface ColorDeferredEvents {\n [key: string]: Array;\n}\n\ninterface ColorPickerEventGuards {\n [key: string]: boolean;\n}\n\ninterface ColorPickerLayoutDefinition {\n component: any;\n options?: any;\n}\n\ntype ColorPickerLayoutShorthand = 'default';\n\nexport interface ColorPickerProps extends IroColorPickerOptions {\n display?: string;\n id?: null;\n layout?: ColorPickerLayoutDefinition[] | ColorPickerLayoutShorthand;\n colors?: IroColorValue[];\n transparency?: boolean;\n margin: number;\n}\n\nexport interface ColorPickerState extends ColorPickerProps {\n layout: ColorPickerLayoutDefinition[] | ColorPickerLayoutShorthand;\n color: IroColor;\n colors: IroColor[];\n}\n\nexport class IroColorPicker extends Component {\n\n public static defaultProps: ColorPickerProps = {\n ...iroColorPickerOptionDefaults,\n colors: [],\n display: 'block',\n id: null,\n layout: 'default',\n margin: null\n }\n\n public el: HTMLElement;\n public id: string;\n public colors: IroColor[] = [];\n public color: IroColor;\n public inputActive: boolean = false;\n\n private events: ColorPickerEvents = {};\n private activeEvents: ColorPickerEventGuards = {};\n private deferredEvents: ColorDeferredEvents = {};\n\n constructor(props: ColorPickerProps) {\n super(props);\n this.id = props.id;\n const colors = props.colors.length > 0 ? props.colors : [props.color];\n colors.forEach(colorValue => this.addColor(colorValue));\n this.setActiveColor(0);\n // Pass all the props into the component's state,\n // Except we want to add the color object and make sure that refs aren't passed down to children\n this.state = {\n ...props,\n color: this.color,\n colors: this.colors,\n layout: props.layout\n };\n }\n\n // Plubic multicolor API\n\n /**\n * @desc Add a color to the color picker\n * @param color new color to add\n * @param index optional color index\n */\n public addColor(color: IroColorValue, index: number = this.colors.length) {\n // Create a new iro.Color\n // Also bind it to onColorChange, so whenever the color changes it updates the color picker\n const newColor = new IroColor(color, this.onColorChange.bind(this));\n // Insert color @ the given index\n this.colors.splice(index, 0, newColor);\n // Reindex colors\n this.colors.forEach((color, index) => color.index = index);\n // Update picker state if necessary\n if (this.state) {\n this.setState({ colors: this.colors });\n }\n // Fire color init event\n this.deferredEmit('color:init', newColor);\n }\n\n /**\n * @desc Remove a color from the color picker\n * @param index color index\n */\n public removeColor(index: number) {\n const color = this.colors.splice(index, 1)[0];\n // Destroy the color object -- this unbinds it from the color picker\n color.unbind();\n // Reindex colors\n this.colors.forEach((color, index) => color.index = index);\n // Update picker state if necessary\n if (this.state) {\n this.setState({ colors: this.colors });\n }\n // If the active color was removed, default active color to 0\n if (color.index === this.color.index) {\n this.setActiveColor(0);\n }\n // Fire color remove event\n this.emit('color:remove', color);\n }\n\n /**\n * @desc Set the currently active color\n * @param index color index\n */\n public setActiveColor(index: number) {\n this.color = this.colors[index];\n if (this.state) {\n this.setState({ color: this.color });\n }\n // Fire color switch event\n this.emit('color:setActive', this.color);\n }\n\n /**\n * @desc Replace all of the current colorPicker colors\n * @param newColorValues list of new colors to add\n */\n public setColors(newColorValues: IroColorValue[]) {\n // Unbind color events\n this.colors.forEach(color => color.unbind());\n // Destroy old colors\n this.colors = [];\n // Add new colors\n newColorValues.forEach(colorValue => this.addColor(colorValue));\n // Reset active color\n this.setActiveColor(0);\n this.emit('color:setAll', this.colors);\n }\n\n // Public ColorPicker events API\n\n /**\n * @desc Set a callback function for an event\n * @param eventList event(s) to listen to\n * @param callback - Function called when the event is fired\n */\n public on(eventList: string[] | string, callback: Function) {\n const events = this.events;\n // eventList can be an eventType string or an array of eventType strings\n (!Array.isArray(eventList) ? [eventList] : eventList).forEach(eventType => {\n // Add event callback\n (events[eventType] || (events[eventType] = [])).push(callback);\n // Call deferred events\n // These are events that can be stored until a listener for them is added\n if (this.deferredEvents[eventType]) {\n // Deffered events store an array of arguments from when the event was called\n this.deferredEvents[eventType].forEach(args => {\n callback.apply(null, args); \n });\n // Clear deferred events\n this.deferredEvents[eventType] = [];\n }\n });\n }\n\n /**\n * @desc Remove a callback function for an event added with on()\n * @param eventList - event(s) to listen to\n * @param callback - original callback function to remove\n */\n public off(eventList: string[] | string, callback: Function) {\n (!Array.isArray(eventList) ? [eventList] : eventList).forEach(eventType => {\n const callbackList = this.events[eventType];\n // this.emitHook('event:off', eventType, callback);\n if (callbackList) callbackList.splice(callbackList.indexOf(callback), 1);\n });\n }\n\n /**\n * @desc Emit an event\n * @param eventType event to emit\n */\n public emit(eventType: string, ...args: any) {\n const activeEvents = this.activeEvents;\n const isEventActive = activeEvents.hasOwnProperty(eventType) ? activeEvents[eventType] : false;\n // Prevent event callbacks from firing if the event is already active\n // This stops infinite loops if something in an event callback causes the same event to be fired again\n // (e.g. setting the color inside a color:change callback)\n if (!isEventActive) {\n activeEvents[eventType] = true;\n const callbackList = this.events[eventType] || [];\n callbackList.forEach(fn => fn.apply(this, args));\n activeEvents[eventType] = false;\n }\n }\n\n /**\n * @desc Emit an event now, or save it for when the relevent event listener is added\n * @param eventType - The name of the event to emit\n */\n public deferredEmit(eventType: string, ...args: any) {\n const deferredEvents = this.deferredEvents;\n this.emit(eventType, ...args);\n (deferredEvents[eventType] || (deferredEvents[eventType] = [])).push(args);\n }\n\n // Public utility methods\n\n public setOptions(newOptions: Partial) {\n this.setState({ ...this.state, ...newOptions });\n }\n\n /**\n * @desc Resize the color picker\n * @param width - new width\n */\n public resize(width: number) {\n this.setOptions({ width })\n }\n\n /**\n * @desc Reset the color picker to the initial color provided in the color picker options\n */\n public reset() {\n this.colors.forEach(color => color.reset());\n this.setState({ colors: this.colors });\n }\n\n /**\n * @desc Called by the createWidget wrapper when the element is mounted into the page\n * @param container - the container element for this ColorPicker instance\n */\n public onMount(container: HTMLElement) {\n this.el = container;\n this.deferredEmit('mount', this);\n }\n\n // Internal methods\n\n /**\n * @desc React to a color update\n * @param color - current color\n * @param changes - shows which h,s,v,a color channels changed\n */\n private onColorChange(color: IroColor, changes: any) {\n this.setState({ color: this.color });\n if (this.inputActive) {\n this.inputActive = false;\n this.emit('input:change', color, changes);\n } \n this.emit('color:change', color, changes);\n }\n\n /**\n * @desc Handle input from a UI control element\n * @param type - event type\n */\n private emitInputEvent(type: IroInputType, originId: string) {\n if (type === IroInputType.Start) {\n this.emit('input:start', this.color, originId);\n }\n else if (type === IroInputType.Move) {\n this.emit('input:move', this.color, originId);\n }\n else if (type === IroInputType.End) {\n this.emit('input:end', this.color, originId);\n }\n }\n\n public render(props, state) {\n let layout = state.layout;\n\n // use layout shorthands\n if (!Array.isArray(layout)) {\n switch (layout) {\n // TODO: implement some?\n default:\n layout = [\n { component: IroWheel },\n { component: IroSlider },\n ];\n }\n // add transparency slider to the layout\n if (state.transparency) {\n layout.push({\n component: IroSlider,\n options: {\n sliderType: 'alpha'\n }\n })\n }\n }\n\n return (\n

\n { layout.map(({component: UiComponent, options: options }, componentIndex: number) => (\n \n ))}\n
\n )\n }\n}\n\nexport const IroColorPickerWidget = createWidget(IroColorPicker);\n","import { h as _h } from 'preact';\nimport { IroColor } from '@irojs/iro-core';\nimport { IroComponentWrapper } from './ComponentWrapper';\nimport { IroHandle } from './Handle';\nimport { IroSlider } from './Slider';\nimport { IroBox } from './Box';\nimport { IroWheel } from './Wheel';\nimport { IroColorPicker, IroColorPickerWidget } from './ColorPicker';\n\nnamespace iro {\n export const version = VERSION; // replaced by @rollup/plugin-replace; see rollup.config.js\n\n export type Color = IroColor;\n export const Color = IroColor;\n export type ColorPicker = IroColorPicker;\n export const ColorPicker = IroColorPickerWidget;\n\n export namespace ui {\n export const h = _h;\n export const ComponentBase = IroComponentWrapper;\n export const Handle = IroHandle;\n export const Slider = IroSlider;\n export const Wheel = IroWheel;\n export const Box = IroBox;\n }\n}\n\nexport default iro;\n"],"names":["const","super","let","Fragment","this","Component","render","_h"],"mappings":";;;;;;;;;;;;;;MAAI,CAAC,CAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iEAAiE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,YAAY,GAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,GAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAsB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,GAAC,OAAO,IAAI,GAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,GAAC,OAAO,CAAC,CAAC,GAAG,KAAC,OAAM,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAC,OAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAI,GAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,GAAG,CAAC,GAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAC,GAAG,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC,KAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,GAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,IAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,GAAG,CAAC,GAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,GAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAC,OAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,IAAI,CAAC,GAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,CAAC,GAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAC,IAAI,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAC,GAAG,CAAC,GAAC,IAAI,CAAC,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAC,GAAC,MAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,8BAA8B,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,GAAC,OAAO,IAAI,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAC,IAAI,EAAE,CAAC,CAAC,wBAAwB,EAAE,IAAI,EAAE,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,wBAAwB,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,yBAAyB,EAAE,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,uBAAuB,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,IAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAC,CAAC,OAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAE,GAAG,CAAC,CAAC,CAAC,iBAAiB,GAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAC,GAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,GAAC,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,4BAA4B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,oBAAoB,GAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB,GAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,GAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,AAAisB,CAAC,CAAC,EAAE,CAAC,AAAsD,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAC,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,wBAAwB,GAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,iBAAiB,GAAC,WAAS,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,KAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;ECAzuR;;;;;EAKA,IAAI,WAAW,GAAG,eAAe,CAAC;;EAElC,IAAI,UAAU,GAAG,sBAAsB,CAAC;;EAExC,IAAI,QAAQ,GAAG,KAAK,GAAG,UAAU,GAAG,OAAO,GAAG,WAAW,GAAG,GAAG,CAAC;;;EAGhE,IAAI,kBAAkB,GAAG,aAAa,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,WAAW,CAAC;EACpH,IAAI,kBAAkB,GAAG,aAAa,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,WAAW,CAAC;;EAE9I,IAAI,oBAAoB,GAAG,IAAI,MAAM,CAAC,KAAK,GAAG,kBAAkB,CAAC,CAAC;EAClE,IAAI,qBAAqB,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,kBAAkB,CAAC,CAAC;EACpE,IAAI,oBAAoB,GAAG,IAAI,MAAM,CAAC,KAAK,GAAG,kBAAkB,CAAC,CAAC;EAClE,IAAI,qBAAqB,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,kBAAkB,CAAC,CAAC;;EAEpE,IAAI,SAAS,GAAG,aAAa,CAAC;EAC9B,IAAI,cAAc,GAAG,kBAAkB,CAAC;EACxC,IAAI,cAAc,GAAG,kBAAkB,CAAC;EACxC,IAAI,WAAW,GAAG,IAAI,MAAM,CAAC,SAAS,GAAG,cAAc,GAAG,cAAc,GAAG,cAAc,GAAG,GAAG,CAAC,CAAC;EACjG,IAAI,WAAW,GAAG,IAAI,MAAM,CAAC,SAAS,GAAG,cAAc,GAAG,cAAc,GAAG,cAAc,GAAG,cAAc,GAAG,GAAG,CAAC,CAAC;EAClH,IAAI,WAAW,GAAG,IAAI,MAAM,CAAC,SAAS,GAAG,cAAc,GAAG,cAAc,GAAG,cAAc,GAAG,GAAG,CAAC,CAAC;EACjG,IAAI,WAAW,GAAG,IAAI,MAAM,CAAC,SAAS,GAAG,cAAc,GAAG,cAAc,GAAG,cAAc,GAAG,cAAc,GAAG,GAAG,CAAC,CAAC;;EAElH,IAAI,UAAU,GAAG,IAAI,CAAC;EACtB,IAAI,UAAU,GAAG,KAAK,CAAC;;EAEvB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;EACnB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;EACvB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;;;;;;;;EAQvB,SAAS,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;GAC1C;;;;;;;;EAQD,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE;IAC3B,IAAI,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,IAAI,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,YAAY,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;GAC7C;;;;;;;EAOD,SAAS,WAAW,CAAC,GAAG,EAAE;IACxB,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;GAC1B;;;;;;;EAOD,SAAS,QAAQ,CAAC,GAAG,EAAE;IACrB,OAAO,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;GAC1C;;EAED,IAAI,QAAQ,GAAG,SAAS,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE;;IAEhD,IAAI,CAAC,CAAC,GAAG;MACP,CAAC,EAAE,CAAC;MACJ,CAAC,EAAE,CAAC;MACJ,CAAC,EAAE,CAAC;MACJ,CAAC,EAAE,CAAC;KACL,CAAC;IACF,IAAI,KAAK,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;;IAE/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACzB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;GAC/C,CAAC;;EAEF,IAAI,kBAAkB,GAAG,EAAE,GAAG,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC;;;;;;;EAOxoB,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,KAAK,EAAE;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;MAC7B,IAAI,8BAA8B,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QAC9C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;OACxB,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QAC/B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;OACxB,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QAC/B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;OACxB;KACF,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;MACpC,IAAI,KAAK,YAAY,QAAQ,EAAE;QAC7B,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;OACtB,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,EAAE;QACpF,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;OAClB,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,EAAE;QACpF,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;OAClB,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,EAAE;QACpF,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;OAClB;KACF,MAAM;MACL,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;KACxC;GACF,CAAC;;;;;;;;;EASF,QAAQ,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE;MACzE,IAAI,GAAG,CAAC;;IAEV,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC;QACzC,GAAG,GAAG,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;GAC5C,CAAC;;;;;;EAMF,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,IAAI;IAC3C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;GAC/B,CAAC;;;;;;EAMF,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,IAAI;IAC3C,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;GAC3B,CAAC;;;;;;EAMF,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;IAC7C,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;GAC3B,CAAC;;;;;;;EAOF,QAAQ,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE;IAC1C,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IACnB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IACpB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IACpB,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACjB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACd,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACpB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO;MACL,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;MACzB,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;MACzB,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;KAC1B,CAAC;GACH,CAAC;;;;;;;EAOF,QAAQ,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE;IAC1C,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IACpB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IACpB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IACpB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;IACtB,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,KAAK,GAAG,GAAG,CAAC;IAChB,IAAI,UAAU,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC;;IAE7C,QAAQ,GAAG;MACT,KAAK,GAAG;QACN,GAAG,GAAG,CAAC,CAAC;;QAER,MAAM;;MAER,KAAK,CAAC;QACJ,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACxC,MAAM;;MAER,KAAK,CAAC;QACJ,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;QAC1B,MAAM;;MAER,KAAK,CAAC;QACJ,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;QAC1B,MAAM;KACT;;IAED,OAAO;MACL,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG;MACjB,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;MAClC,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;KAC9B,CAAC;GACH,CAAC;;;;;;;EAOF,QAAQ,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE;IAC1C,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IACpB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IACpB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;IAEjC,IAAI,UAAU,GAAG,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;IACtD,OAAO;MACL,CAAC,EAAE,GAAG,CAAC,CAAC;MACR,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;MAClC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;KACzB,CAAC;GACH,CAAC;;;;;;;EAOF,QAAQ,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE;IAC1C,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAClB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;;IAE/C,IAAI,UAAU,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,OAAO;MACL,CAAC,EAAE,GAAG,CAAC,CAAC;MACR,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;MAClC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;KAC9B,CAAC;GACH,CAAC;;;;;;;EAOF,QAAQ,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,MAAM,EAAE;IACnD,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC;IACxB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;IAEZ,IAAI,IAAI,GAAG,EAAE,EAAE;MACb,CAAC,GAAG,GAAG,CAAC;MACR,CAAC,GAAG,CAAC,kBAAkB,GAAG,mBAAmB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,kBAAkB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;MAC7F,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,kBAAkB,GAAG,kBAAkB,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,kBAAkB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;KAC9G,MAAM;MACL,CAAC,GAAG,kBAAkB,GAAG,iBAAiB,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,iBAAiB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;MAC1F,CAAC,GAAG,iBAAiB,GAAG,mBAAmB,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,gBAAgB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;MAC1F,CAAC,GAAG,GAAG,CAAC;KACT;;IAED,OAAO;MACL,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;MAC1B,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;MAC1B,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;KAC3B,CAAC;GACH,CAAC;;;;;;;EAOF,QAAQ,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,GAAG,EAAE;IAChD,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;MACZ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAChB,IAAI,GAAG,GAAG,GAAG,CAAC;IACd,IAAI,OAAO,GAAG,UAAU,CAAC;IACzB,IAAI,OAAO,GAAG,UAAU,CAAC;IACzB,IAAI,IAAI,CAAC;;IAET,OAAO,OAAO,GAAG,OAAO,GAAG,GAAG,EAAE;MAC9B,IAAI,GAAG,CAAC,OAAO,GAAG,OAAO,IAAI,GAAG,CAAC;MACjC,IAAI,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;;MAEvC,IAAI,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC9B,OAAO,GAAG,IAAI,CAAC;OAChB,MAAM;QACL,OAAO,GAAG,IAAI,CAAC;OAChB;KACF;;IAED,OAAO,IAAI,CAAC;GACb,CAAC;;EAEF,kBAAkB,CAAC,GAAG,CAAC,GAAG,GAAG,YAAY;;IAEvC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;IACnB,OAAO;MACL,CAAC,EAAE,KAAK,CAAC,CAAC;MACV,CAAC,EAAE,KAAK,CAAC,CAAC;MACV,CAAC,EAAE,KAAK,CAAC,CAAC;KACX,CAAC;GACH,CAAC;;EAEF,kBAAkB,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,QAAQ,EAAE;IAC/C,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;IACtB,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ;MACnC,QAAQ,CAAC,CAAC;;;IAGZ,IAAI,IAAI,CAAC,QAAQ,EAAE;;MAEjB,IAAI,OAAO,GAAG;QACZ,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,KAAK;OACT,CAAC;;MAEF,KAAK,IAAI,GAAG,IAAI,QAAQ,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;OAC/C;;MAED,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC;;MAElB,IAAI,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE;KACxF,MAAM;MACL,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC;KACnB;GACF,CAAC;;EAEF,kBAAkB,CAAC,IAAI,CAAC,GAAG,GAAG,YAAY;IACxC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;GAClC,CAAC;;EAEF,kBAAkB,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;IAC7C,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;GAClB,CAAC;;EAEF,kBAAkB,CAAC,GAAG,CAAC,GAAG,GAAG,YAAY;IACvC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;GACjB,CAAC;;EAEF,kBAAkB,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;IAC5C,IAAI,CAAC,GAAG,GAAG;MACT,CAAC,EAAE,KAAK;KACT,CAAC;GACH,CAAC;;EAEF,kBAAkB,CAAC,UAAU,CAAC,GAAG,GAAG,YAAY;IAC9C,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;GACjB,CAAC;;EAEF,kBAAkB,CAAC,UAAU,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;IACnD,IAAI,CAAC,GAAG,GAAG;MACT,CAAC,EAAE,KAAK;KACT,CAAC;GACH,CAAC;;EAEF,kBAAkB,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY;IACzC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;GACjB,CAAC;;EAEF,kBAAkB,CAAC,KAAK,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;IAC9C,IAAI,CAAC,GAAG,GAAG;MACT,CAAC,EAAE,KAAK;KACT,CAAC;GACH,CAAC;;EAEF,kBAAkB,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY;IACzC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;GACjB,CAAC;;EAEF,kBAAkB,CAAC,KAAK,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;IAC9C,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG;MACnC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;GACf,CAAC;;EAEF,kBAAkB,CAAC,MAAM,CAAC,GAAG,GAAG,YAAY;IAC1C,OAAO,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;GACvC,CAAC;;EAEF,kBAAkB,CAAC,MAAM,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;IAC/C,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;GACxC,CAAC;;EAEF,kBAAkB,CAAC,GAAG,CAAC,GAAG,GAAG,YAAY;IACvC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACnB,OAAO,GAAG,CAAC,CAAC,CAAC;GACd,CAAC;;EAEF,kBAAkB,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;IAC5C,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG;MACnC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;GACf,CAAC;;EAEF,kBAAkB,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY;IACzC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACnB,OAAO,GAAG,CAAC,CAAC,CAAC;GACd,CAAC;;EAEF,kBAAkB,CAAC,KAAK,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;IAC9C,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG;MACnC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;GACf,CAAC;;EAEF,kBAAkB,CAAC,IAAI,CAAC,GAAG,GAAG,YAAY;IACxC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACnB,OAAO,GAAG,CAAC,CAAC,CAAC;GACd,CAAC;;EAEF,kBAAkB,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;IAC7C,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG;MACnC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;GACf,CAAC;;EAEF,kBAAkB,CAAC,GAAG,CAAC,GAAG,GAAG,YAAY;IACvC,IAAI,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MAClC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;MACd,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;MACd,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAChB,OAAO;MACL,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;MACX,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;MACX,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;KACZ,CAAC;GACH,CAAC;;EAEF,kBAAkB,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;IAC5C,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;MACnD,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;GAC7C,CAAC;;EAEF,kBAAkB,CAAC,IAAI,CAAC,GAAG,GAAG,YAAY;IACxC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG;MAC/B,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;GACpB,CAAC;;EAEF,kBAAkB,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;IAC7C,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;GAClB,CAAC;;EAEF,kBAAkB,CAAC,GAAG,CAAC,GAAG,GAAG,YAAY;IACvC,IAAI,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MAClC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;MACd,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;MACd,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAChB,OAAO;MACL,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;MACX,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;MACX,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;KACZ,CAAC;GACH,CAAC;;EAEF,kBAAkB,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;IAC5C,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;MACnD,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;GAC7C,CAAC;;EAEF,kBAAkB,CAAC,IAAI,CAAC,GAAG,GAAG,YAAY;IACxC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG;MAC/B,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;GACpB,CAAC;;EAEF,kBAAkB,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;IAC7C,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;GAClB,CAAC;;EAEF,kBAAkB,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY;IAC7C,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACnB,QAAQ,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;GACnE,CAAC;;EAEF,kBAAkB,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;IAClD,IAAI,KAAK,CAAC;IACV,IAAI,CAAC;QACD,CAAC;QACD,CAAC;QACD,CAAC,GAAG,CAAC,CAAC;;IAEV,IAAI,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;MAC5C,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;MAC7B,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;MAC7B,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;KAC9B,MAAM,IAAI,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;MACpD,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;MAC7B,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;MAC7B,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;MAC7B,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC5B;;IAED,IAAI,KAAK,EAAE;MACT,IAAI,CAAC,GAAG,GAAG;QACT,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;OACL,CAAC;KACH,MAAM;MACL,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;KACvC;GACF,CAAC;;EAEF,kBAAkB,CAAC,UAAU,CAAC,GAAG,GAAG,YAAY;IAC9C,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACrB,QAAQ,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;GACzF,CAAC;;EAEF,kBAAkB,CAAC,UAAU,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;IACnD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;GACxB,CAAC;;EAEF,kBAAkB,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY;IAC7C,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACnB,QAAQ,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;GAC1E,CAAC;;EAEF,kBAAkB,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;IAClD,IAAI,KAAK,CAAC;IACV,IAAI,CAAC;QACD,CAAC;QACD,CAAC;QACD,CAAC,GAAG,GAAG,CAAC;;IAEZ,IAAI,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;MACnC,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;MAC/B,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;MAC/B,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;KAChC,MAAM,IAAI,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;MAC1C,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;MAC/B,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;MAC/B,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;MAC/B,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;KAChC,MAAM,IAAI,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;MAC1C,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;MAC1B,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;MAC1B,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3B,MAAM,IAAI,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;MAC1C,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;MAC1B,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;MAC1B,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;MAC1B,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3B;;IAED,IAAI,KAAK,EAAE;MACT,IAAI,CAAC,GAAG,GAAG;QACT,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC,GAAG,GAAG;OACX,CAAC;KACH,MAAM;MACL,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;KACvC;GACF,CAAC;;EAEF,kBAAkB,CAAC,UAAU,CAAC,GAAG,GAAG,YAAY;IAC9C,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACrB,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE;GAC/G,CAAC;;EAEF,kBAAkB,CAAC,UAAU,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;IACnD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;GACxB,CAAC;;EAEF,kBAAkB,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY;IAC7C,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACnB,QAAQ,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE;GACrE,CAAC;;EAEF,kBAAkB,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;IAClD,IAAI,KAAK,CAAC;IACV,IAAI,CAAC;QACD,CAAC;QACD,CAAC;QACD,CAAC,GAAG,CAAC,CAAC;;IAEV,IAAI,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;MAC5C,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;MAC7B,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;MAC7B,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;KAC9B,MAAM,IAAI,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;MACpD,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;MAC7B,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;MAC7B,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;MAC7B,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC5B;;IAED,IAAI,KAAK,EAAE;MACT,IAAI,CAAC,GAAG,GAAG;QACT,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;OACL,CAAC;KACH,MAAM;MACL,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;KACvC;GACF,CAAC;;EAEF,kBAAkB,CAAC,UAAU,CAAC,GAAG,GAAG,YAAY;IAC9C,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACrB,QAAQ,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;GAC1F,CAAC;;EAEF,kBAAkB,CAAC,UAAU,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;IACnD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;GACxB,CAAC;;EAEF,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC,SAAS,EAAE,kBAAkB,EAAE,CAAC;;EAElE,IAAI,oBAAoB,GAAG;IACzB,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,OAAO;IACnB,cAAc,EAAE,IAAI;IACpB,cAAc,EAAE,KAAK;GACtB,CAAC;;;;;;EAgBF,SAAS,mBAAmB,CAAC,KAAK,EAAE;IAClC,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACxB,IAAI,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IAClC,IAAI,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IACpC,IAAI,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IACtC,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5B,IAAI,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IACpC,IAAI,YAAY,GAAG,KAAK,CAAC,eAAe,KAAK,YAAY,CAAC;;IAE1D,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC;;IAExF,IAAI,WAAW,KAAK,QAAQ,EAAE;MAC5B,OAAO;QACL,WAAW,EAAE,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,YAAY;QAC/C,WAAW,EAAE,KAAK,GAAG,OAAO,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC;QACrE,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,KAAK;QACb,EAAE,EAAE,KAAK,GAAG,CAAC;QACb,EAAE,EAAE,KAAK,GAAG,CAAC;QACb,MAAM,EAAE,KAAK,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC;OACpC,CAAC;KACH,MAAM;MACL,OAAO;QACL,WAAW,EAAE,UAAU,GAAG,CAAC;QAC3B,WAAW,EAAE,KAAK,GAAG,UAAU;QAC/B,MAAM,EAAE,UAAU,GAAG,CAAC;QACtB,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,KAAK,EAAE,YAAY,GAAG,UAAU,GAAG,KAAK;QACxC,MAAM,EAAE,YAAY,GAAG,KAAK,GAAG,UAAU;OAC1C,CAAC;KACH;GACF;;;;;;;EAOD,SAAS,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE;IAC3C,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACtB,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;;IAEpB,QAAQ,KAAK,CAAC,UAAU;MACtB,KAAK,KAAK;QACR,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;;MAEtB,KAAK,OAAO;QACV,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;;MAEtB,KAAK,MAAM;QACT,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;;MAEtB,KAAK,OAAO;QACV,OAAO,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;;MAEtB,KAAK,QAAQ;QACX,IAAI,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;IAC9C,IAAI,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;QACtC,IAAI,gBAAgB,GAAG,cAAc,GAAG,cAAc,CAAC;QACvD,IAAI,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,IAAI,gBAAgB,GAAG,GAAG,CAAC;;QAEvE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;;MAE7C,KAAK,KAAK;QACR,OAAO,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC;;MAEvB,KAAK,YAAY;QACf,OAAO,IAAI,CAAC,CAAC,CAAC;;MAEhB,KAAK,OAAO,CAAC;MACb;QACE,OAAO,IAAI,CAAC,CAAC,CAAC;KACjB;GACF;;;;;;;;EAQD,SAAS,uBAAuB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE;IAC5C,IAAI,GAAG,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;IAClC,IAAI,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;IAClC,IAAI,SAAS,CAAC;;IAEd,IAAI,KAAK,CAAC,eAAe,KAAK,YAAY,EAAE;MAC1C,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,WAAW,GAAG,WAAW,CAAC;KAChD,MAAM;MACL,SAAS,GAAG,CAAC,GAAG,WAAW,CAAC;KAC7B;;;IAGD,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,WAAW,GAAG,SAAS,CAAC,CAAC;;IAExD,QAAQ,KAAK,CAAC,UAAU;MACtB,KAAK,QAAQ;QACX,IAAI,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;IAC9C,IAAI,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;QACtC,IAAI,gBAAgB,GAAG,cAAc,GAAG,cAAc,CAAC;QACvD,OAAO,cAAc,GAAG,gBAAgB,IAAI,OAAO,GAAG,GAAG,CAAC,CAAC;;MAE7D,KAAK,OAAO;QACV,OAAO,OAAO,GAAG,GAAG,CAAC;;MAEvB,KAAK,KAAK;QACR,OAAO,OAAO,GAAG,GAAG,CAAC;;MAEvB,KAAK,KAAK,CAAC;MACX,KAAK,MAAM,CAAC;MACZ,KAAK,OAAO;QACV,OAAO,OAAO,GAAG,IAAI,CAAC;;MAExB;QACE,OAAO,OAAO,CAAC;KAClB;GACF;;;;;;;EAOD,SAAS,uBAAuB,CAAC,KAAK,EAAE,KAAK,EAAE;IAC7C,IAAI,GAAG,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACtB,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IACxB,IAAI,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;IAClC,IAAI,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;IAClC,IAAI,YAAY,GAAG,KAAK,CAAC,eAAe,KAAK,YAAY,CAAC;IAC1D,IAAI,WAAW,GAAG,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtD,IAAI,QAAQ,GAAG,YAAY,GAAG,KAAK,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;IACrD,IAAI,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,CAAC;;IAE9D,IAAI,YAAY,EAAE;MAChB,SAAS,GAAG,CAAC,CAAC,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,CAAC,CAAC;KAC5D;;IAED,OAAO;MACL,CAAC,EAAE,YAAY,GAAG,QAAQ,GAAG,SAAS;MACtC,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,QAAQ;KACvC,CAAC;GACH;;;;;;;EAOD,SAAS,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE;IACvC,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACpB,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;;IAEpB,QAAQ,KAAK,CAAC,UAAU;MACtB,KAAK,KAAK;QACR,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;;MAEpI,KAAK,OAAO;QACV,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;;MAEpI,KAAK,MAAM;QACT,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;;MAEpI,KAAK,OAAO;QACV,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;;MAE7I,KAAK,QAAQ;QACX,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,GAAG,GAAG,KAAK,CAAC,cAAc,CAAC;QAC/B,IAAI,GAAG,GAAG,KAAK,CAAC,cAAc,CAAC;QAC/B,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;;QAEtB,KAAK,IAAI,MAAM,GAAG,GAAG,EAAE,IAAI,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,KAAK,GAAG,QAAQ,EAAE,IAAI,IAAI,CAAC,EAAE;UACpF,IAAI,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;UACvC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;UACd,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;UACd,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;UACd,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;SAC7E;;QAED,OAAO,KAAK,CAAC;;MAEf,KAAK,KAAK;QACR,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;;MAE5H,KAAK,YAAY;QACf,IAAI,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC;UAC5B,CAAC,EAAE,GAAG,CAAC,CAAC;UACR,CAAC,EAAE,CAAC;UACJ,CAAC,EAAE,GAAG,CAAC,CAAC;SACT,CAAC,CAAC;QACH,IAAI,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC;UAC9B,CAAC,EAAE,GAAG,CAAC,CAAC;UACR,CAAC,EAAE,GAAG;UACN,CAAC,EAAE,GAAG,CAAC,CAAC;SACT,CAAC,CAAC;QACH,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;;MAEhK,KAAK,OAAO,CAAC;MACb;QACE,IAAI,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC;UAC1B,CAAC,EAAE,GAAG,CAAC,CAAC;UACR,CAAC,EAAE,GAAG,CAAC,CAAC;UACR,CAAC,EAAE,GAAG;SACP,CAAC,CAAC;QACH,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;KAC3F;GACF;;;;;;EAMD,SAAS,uBAAuB,CAAC,KAAK,EAAE;IACtC,IAAI,YAAY,GAAG,KAAK,CAAC,eAAe,KAAK,YAAY,CAAC;IAC1D,OAAO;MACL,EAAE,EAAE,IAAI;MACR,EAAE,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI;MAChC,EAAE,EAAE,YAAY,GAAG,IAAI,GAAG,MAAM;MAChC,EAAE,EAAE,IAAI;KACT,CAAC;GACH;;;;;;EAMD,SAAS,kBAAkB,CAAC,KAAK,EAAE;IACjC,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;IAC1B,OAAO;MACL,KAAK,EAAE,KAAK,CAAC,KAAK;MAClB,MAAM,EAAE,GAAG,GAAG,KAAK,CAAC,WAAW;MAC/B,EAAE,EAAE,GAAG;MACP,EAAE,EAAE,GAAG;KACR,CAAC;GACH;;;;;;;EAOD,SAAS,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;IACjD,IAAI,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IAClC,IAAI,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;;IAE1C,IAAI,CAAC,MAAM,IAAI,cAAc,KAAK,WAAW,IAAI,MAAM,IAAI,cAAc,KAAK,eAAe,EAAE;MAC7F,KAAK,GAAG,CAAC,MAAM,GAAG,GAAG,GAAG,GAAG,KAAK,UAAU,GAAG,KAAK,CAAC,CAAC;KACrD,MAAM;MACL,KAAK,GAAG,UAAU,GAAG,KAAK,CAAC;KAC5B;;;;IAID,OAAO,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC;GAClC;;;;;;;EAOD,SAAS,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE;IAC5C,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACpB,IAAI,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;IAChB,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;IAChB,IAAI,WAAW,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;IAC3F,IAAI,WAAW,GAAG,CAAC,GAAG,GAAG,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;IACpF,IAAI,UAAU,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,WAAW,CAAC;IAC3C,IAAI,SAAS,GAAG,KAAK,CAAC,cAAc,KAAK,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9D,OAAO;MACL,CAAC,EAAE,EAAE,GAAG,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,SAAS;MACtD,CAAC,EAAE,EAAE,GAAG,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,SAAS;KACvD,CAAC;GACH;;;;;;;;EAQD,SAAS,sBAAsB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE;IAC3C,IAAI,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;IAChB,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;IAChB,IAAI,WAAW,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;IAC3F,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;;IAEX,IAAI,GAAG,GAAG,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;;;IAG3E,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IACjE,OAAO;MACL,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;MAClB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,WAAW,GAAG,UAAU,CAAC;KAC9C,CAAC;GACH;;;;;;EAgBD,SAAS,gBAAgB,CAAC,KAAK,EAAE;IAC/B,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACxB,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5B,IAAI,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IACtC,OAAO;MACL,KAAK,EAAE,KAAK;MACZ,MAAM,EAAE,KAAK;MACb,MAAM,EAAE,OAAO,GAAG,YAAY;KAC/B,CAAC;GACH;;;;;;;;EAQD,SAAS,oBAAoB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE;IACzC,IAAI,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACtB,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IACxB,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IACxB,IAAI,WAAW,GAAG,MAAM,CAAC;IACzB,IAAI,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;IACtC,IAAI,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;IACvC,IAAI,QAAQ,GAAG,CAAC,CAAC,GAAG,WAAW,IAAI,YAAY,GAAG,GAAG,CAAC;IACtD,IAAI,QAAQ,GAAG,CAAC,CAAC,GAAG,WAAW,IAAI,YAAY,GAAG,GAAG,CAAC;IACtD,OAAO;MACL,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;MACvC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC;KAC9C,CAAC;GACH;;;;;;;EAOD,SAAS,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE;IAC1C,IAAI,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACtB,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IACxB,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IACxB,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACpB,IAAI,WAAW,GAAG,MAAM,CAAC;IACzB,IAAI,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;IACtC,IAAI,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;IACvC,OAAO;MACL,CAAC,EAAE,WAAW,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,YAAY;MAC3C,CAAC,EAAE,WAAW,IAAI,YAAY,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,YAAY,CAAC;KAC7D,CAAC;GACH;;;;;;;EAOD,SAAS,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE;IACrC,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACpB,OAAO;IACP,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,YAAY,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;GACxC;;;;;EAKD,IAAI,aAAa,CAAC;;;;;;;;;;;;;;EAclB,SAAS,aAAa,CAAC,GAAG,EAAE;IAC1B,IAAI,CAAC,aAAa,EAAE,EAAE,aAAa,GAAG,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,EAAE;;IAE9E,IAAI,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;IACpC,IAAI,QAAQ,GAAG,gCAAgC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzD,IAAI,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzC,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC/B,OAAO,CAAC,QAAQ,IAAI,KAAK,KAAK,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC;GAC/J;;;;;;;;;;EAUD,SAAS,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE;IAC3D,IAAI,YAAY,GAAG,QAAQ,GAAG,UAAU,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACxD,UAAU,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;IAC5B,QAAQ,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;IAC1B,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC5C,QAAQ,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,KAAK,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,KAAK,GAAG,YAAY,GAAG,KAAK,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE;GAC9G;;;;;;;;;EASD,SAAS,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE;IACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MAC/C,IAAI,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;MAClC,IAAI,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;MAClC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;;MAExC,IAAI,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE;QAC7B,OAAO,CAAC,CAAC;OACV;KACF;;IAED,OAAO,IAAI,CAAC;GACb;;EAED,IAAI,4BAA4B,GAAG;IACjC,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;IACX,YAAY,EAAE,CAAC;IACf,SAAS,EAAE,IAAI;IACf,WAAW,EAAE;MACX,CAAC,EAAE,CAAC;MACJ,CAAC,EAAE,CAAC;KACL;IACD,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,EAAE;IACV,WAAW,EAAE,MAAM;IACnB,WAAW,EAAE,CAAC;IACd,cAAc,EAAE,IAAI;IACpB,UAAU,EAAE,CAAC;IACb,cAAc,EAAE,eAAe;IAC/B,eAAe,EAAE,UAAU;IAC3B,UAAU,EAAE,IAAI;IAChB,YAAY,EAAE,EAAE;IAChB,OAAO,EAAE,CAAC;GACX,CAAC;;;ECvlCFA,IAAM,gBAAgB,GAAG,8GAAqG,CAAC;;;AAU/H,MAAa,mBAAoB;MAI/B,6BAAY,KAAK;UACfC,cAAK,OAAC,KAAK,CAAC,CAAC;;;UAGb,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;;;;sEAC1D;oCAED,0BAAO,KAAK;UACVD,IAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;UAEjDE,IAAI,SAAS,GAAG;cACd,WAAW,EAAE,YAAY;;;cAGzB,YAAY,EAAE,YAAY;WAE3B,CAAC;UAEFF,IAAM,YAAY,GAAG,KAAK,CAAC,eAAe,KAAK,YAAY,CAAC;UAC5DA,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,IAAI,GAAG,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC;UAEzEA,IAAM,UAAU,GAAG;cACjB,QAAQ,EAAE,SAAS;cACnB,OAAO,EAAE,YAAY,GAAG,cAAc,GAAG,OAAO;WACjD,CAAC;;UAGF,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE;cACnB,UAAU,CAAC,YAAY,GAAG,YAAY,GAAG,WAAW,CAAC,GAAG,MAAM,CAAC;WAChE;UAED,QACE,EAACG,CAAQ,QACL,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,CACxC,EACZ;QACF;;;;oCAKD,oCAAY,CAA0B;;;UACpCH,IAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;;UAExCA,IAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;;UAEjD,CAAC,CAAC,cAAc,EAAE,CAAC;;;UAGnBA,IAAM,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;UAClDA,IAAM,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;UACtCA,IAAM,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC;UACrC,QAAQ,CAAC,CAAC,IAAI;cACZ,iCAA8B;cAC9B;kBACE,gBAAgB,CAAC,OAAO,WAAC,OAAM;sBAC7B,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAEI,MAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;mBAC5D,CAAC,CAAC;kBACH,YAAY,CAAC,CAAC,EAAE,CAAC,gBAAqB,CAAC;kBACvC,MAAM;cACR,iCAA8B;cAC9B;kBACE,YAAY,CAAC,CAAC,EAAE,CAAC,eAAoB,CAAC;kBACtC,MAAM;cACR,6BAA4B;cAC5B;kBACE,YAAY,CAAC,CAAC,EAAE,CAAC,cAAmB,CAAC;kBACrC,gBAAgB,CAAC,OAAO,WAAC,OAAM;sBAC7B,QAAQ,CAAC,mBAAmB,CAAC,KAAK,EAAEA,MAAI,CAAC,CAAC;mBAC3C,CAAC,CAAC;kBACH,MAAM;WACT;OACF;;;IA5EsCC,IA+ExC;;;WCvFe,SAAS,CAAC,KAAqB;MAC7CL,IAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;MACvBA,IAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;MAEtB,QACE,WACE,SAAS,8BAA0B,KAAK,CAAC,MAAK,UAAI,KAAK,CAAC,QAAQ,GAAG,qBAAqB,GAAG,EAAE,EAAE,EAC/F,CAAC,EAAG,KAAK,CAAC,CAAC,EACX,CAAC,EAAG,KAAK,CAAC,CAAC,EACX,KAAK,EAAE;cACL,QAAQ,EAAE,SAAS;WACpB;UAEA,GAAG,KACF,yBAAK,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,IAAO,KAAK,CAAC,KAAK,EAAI,CACzD;UACA,CAAC,GAAG,KACH,cACE,CAAC,EAAG,MAAM,EACV,IAAI,EAAC,MAAM,kBACI,CAAC,EAChB,MAAM,EAAC,MAAM,GACb,CACH;UACA,CAAC,GAAG,KACH,cACE,CAAC,EAAG,MAAM,GAAG,CAAC,EACd,IAAI,EAAG,KAAK,CAAC,IAAI,kBACF,CAAC,EAChB,MAAM,EAAC,MAAM,GACb,CACH,CACG,EACN;GACH;EAED,SAAS,CAAC,YAAY,GAAG;MACvB,IAAI,EAAE,MAAM;MACZ,CAAC,EAAE,CAAC;MACJ,CAAC,EAAE,CAAC;MACJ,CAAC,EAAE,CAAC;MACJ,GAAG,EAAE,IAAI;MACT,KAAK,EAAE,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC;GACpB,CAAC;;WChCc,SAAS,CAAC,KAAqB;MAC7CA,IAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;MACtCA,IAAM,WAAW,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;MAC/H,OAA+B,GAAG,mBAAmB,CAAC,KAAK;MAAnD;MAAO;MAAQ,wBAAsC;MAC7DA,IAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;MAC9DA,IAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;MACvDA,IAAM,OAAO,GAAG,KAAK,CAAC,UAAU,KAAK,OAAO,CAAC;MAE7C,SAAS,WAAW,CAAC,CAAS,EAAE,CAAS,EAAE,IAAkB;UAC3DA,IAAM,KAAK,GAAG,uBAAuB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;UACnD,KAAK,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;UAChC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;UACtC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;OAC/B;MAED,QACE,EAAC,mBAAmB,oBAAK,KAAK,IAAE,OAAO,EAAG,WAAW,eACjD,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,UAC5B,2BACO,SAAS,IACd,SAAS,EAAC,WAAW,EACrB,KAAK,EAAG,KAAK,EACb,MAAM,EAAG,MAAM,EACf,KAAK,EAAI,UAAU;UAEnB;cACE,oCAAgB,EAAE,EAAG,GAAG,GAAG,GAAG,IAAO,uBAAuB,CAAC,KAAK,CAAC,GAC/D,QAAQ,CAAC,GAAG,WAAE,GAAiB,EAAE;sCAAT;;;0BACxB,YAAM,MAAM,GAAM,MAAO,OAAG,gBAAe,KAAK,GAAK;WACtD,CAAC,CACa;cACf,OAAO,KACP,eAAS,EAAE,EAAG,GAAG,GAAG,GAAG,EAAG,KAAK,EAAC,GAAG,EAAC,MAAM,EAAC,GAAG,EAAC,YAAY,EAAC,gBAAgB;kBAC1E,YAAM,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,GAAG,EAAC,MAAM,EAAC,GAAG,EAAC,IAAI,EAAC,MAAM,GAAE;kBACpD,YAAM,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,GAAG,EAAC,MAAM,EAAC,GAAG,EAAC,IAAI,EAAC,MAAM,GAAE;kBACpD,YAAM,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,GAAG,EAAC,MAAM,EAAC,GAAG,EAAC,IAAI,EAAC,MAAM,GAAE,CAC5C,CACX;cACC,OAAO,KACP,eAAS,EAAE,EAAG,GAAG,GAAG,GAAG,EAAG,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;kBAClD,YAAM,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,IAAI,aAAS,aAAa,CAAE,IAAI,GAAG,GAAG,EAAE,OAAG,GAAS;kBACjG,YAAM,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,IAAI,aAAS,aAAa,CAAE,IAAI,GAAG,GAAG,EAAE,OAAG,GAAS,CACzF,CACX,CACI;UACP,YACE,SAAS,EAAC,aAAa,EACvB,EAAE,EAAG,MAAM,EACX,EAAE,EAAG,MAAM,EACX,CAAC,EAAG,KAAK,CAAC,WAAW,GAAG,CAAC,EACzB,CAAC,EAAG,KAAK,CAAC,WAAW,GAAG,CAAC,EACzB,KAAK,EAAG,KAAK,GAAG,KAAK,CAAC,WAAW,EACjC,MAAM,EAAG,MAAM,GAAG,KAAK,CAAC,WAAW,kBACpB,KAAK,CAAC,WAAW,EAChC,MAAM,EAAG,KAAK,CAAC,WAAW,EAC1B,IAAI,aAAU,aAAa,CAAE,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,OAAG,GAC/D;UACF,EAAC,SAAS,IACR,QAAQ,EAAG,IAAI,EACf,KAAK,EAAG,WAAW,CAAC,KAAK,EACzB,CAAC,EAAG,KAAK,CAAC,YAAY,EACtB,GAAG,EAAG,KAAK,CAAC,SAAS,EACrB,KAAK,EAAG,KAAK,CAAC,WAAW,EACzB,CAAC,EAAG,SAAS,CAAC,CAAC,EACf,CAAC,EAAG,SAAS,CAAC,CAAC,GACf,CACE,IACP,CACmB,EACtB;GACH;EAED,SAAS,CAAC,YAAY,GAAG,kBACpB,oBAAoB,CACxB,CAAC;;WChFc,MAAM,CAAC,KAAkB;MACvC,OAA+B,GAAG,gBAAgB,CAAC,KAAK;MAAhD;MAAO;MAAQ,wBAAmC;MAClD,0BAAiB;MAEzBA,IAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;MACjCA,IAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;MACtCA,IAAM,WAAW,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;MAC/HA,IAAM,SAAS,GAAG,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;MACtDA,IAAM,eAAe,GAAG,MAAM,CAAC,GAAG,WAAC,OAAM,SAAG,oBAAoB,CAAC,KAAK,EAAE,KAAK,IAAC,CAAC,CAAC;MAEhF,SAAS,WAAW,CAAC,CAAS,EAAE,CAAS,EAAE,SAAuB;UAChE,IAAI,SAAS,oBAAyB;;cAEpCA,IAAM,YAAY,GAAG,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;;cAEpE,IAAI,YAAY,KAAK,IAAI,EAAE;kBACzB,WAAW,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;eAC1C;;mBAEI;kBACH,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC;kBAC/B,WAAW,CAAC,GAAG,GAAG,oBAAoB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;kBACpD,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;eACpC;WACF;;eAEI,IAAI,SAAS,mBAAwB;cACxC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC;cAC/B,WAAW,CAAC,GAAG,GAAG,oBAAoB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;WACrD;;UAED,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;OACpC;MAED,QACE,EAAC,mBAAmB,oBAAK,KAAK,IAAE,OAAO,EAAG,WAAW,eACjD,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,UAC5B,2BACO,SAAS,IACd,SAAS,EAAC,QAAQ,EAClB,KAAK,EAAG,KAAK,EACb,MAAM,EAAG,MAAM,EACf,KAAK,EAAI,UAAU;UAEnB;cACE,sBAAgB,EAAE,EAAG,GAAG,GAAG,GAAG,EAAG,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,MAAM,EAAC,EAAE,EAAC,IAAI,IAC9D,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,WAAE,GAAiB,EAAE;sCAAT;;;0BAC5B,YAAM,MAAM,GAAM,MAAO,OAAG,gBAAe,KAAK,GAAK;WACtD,CAAC,CACa;cACjB,sBAAgB,EAAE,EAAG,GAAG,GAAG,GAAG,EAAG,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,MAAM,IAC9D,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,WAAE,GAAiB,EAAE;sCAAT;;;0BAC5B,YAAM,MAAM,GAAM,MAAO,OAAG,gBAAe,KAAK,GAAK;WACtD,CAAC,CACa;cACjB,eAAS,EAAE,EAAG,GAAG,GAAG,GAAG,EAAG,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;kBAClD,YAAM,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,IAAI,aAAS,aAAa,CAAE,IAAI,GAAG,GAAG,EAAE,OAAG,GAAS;kBACjG,YAAM,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,IAAI,aAAS,aAAa,CAAE,IAAI,GAAG,GAAG,EAAE,OAAG,GAAS,CACzF,CACL;UACP,YACE,EAAE,EAAG,MAAM,EACX,EAAE,EAAG,MAAM,EACX,CAAC,EAAG,KAAK,CAAC,WAAW,GAAG,CAAC,EACzB,CAAC,EAAG,KAAK,CAAC,WAAW,GAAG,CAAC,EACzB,KAAK,EAAG,KAAK,GAAG,KAAK,CAAC,WAAW,EACjC,MAAM,EAAG,MAAM,GAAG,KAAK,CAAC,WAAW,kBACpB,KAAK,CAAC,WAAW,EAChC,MAAM,EAAG,KAAK,CAAC,WAAW,EAC1B,IAAI,aAAU,aAAa,CAAC,IAAI,GAAG,GAAG,EAAE,OAAG,GAC3C;UACA,MAAM,CAAC,MAAM,WAAC,OAAM,SAAG,KAAK,KAAK,cAAW,CAAC,CAAC,GAAG,WAAC,OAAM,UACzD,EAAC,SAAS,IACP,QAAQ,EAAG,KAAK,EAChB,KAAK,EAAG,KAAK,CAAC,KAAK,EACnB,IAAI,EAAG,KAAK,CAAC,SAAS,EACtB,CAAC,EAAG,KAAK,CAAC,YAAY,EACtB,GAAG,EAAG,KAAK,CAAC,SAAS,EACrB,KAAK,EAAG,KAAK,CAAC,WAAW,EACzB,CAAC,EAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAClC,CAAC,EAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAClC,IACH,CAAC;UACF,EAAC,SAAS,IACR,QAAQ,EAAG,IAAI,EACf,KAAK,EAAG,WAAW,CAAC,KAAK,EACzB,IAAI,EAAG,WAAW,CAAC,SAAS,EAC5B,CAAC,EAAG,KAAK,CAAC,YAAY,EACtB,GAAG,EAAG,KAAK,CAAC,SAAS,EACrB,KAAK,EAAG,KAAK,CAAC,WAAW,EACzB,CAAC,EAAG,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EACxC,CAAC,EAAG,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GACxC,CACE,IACP,CACmB,EACtB;GACH;;ECpGDA,IAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAC,MAAM,EAAE,GAAG,EAAC,CAAC,CAAC,GAAG,WAAE,CAAC,EAAE,KAAK,EAAE,SAAG,QAAK,CAAC,CAAC;AAM5E,WAAgB,QAAQ,CAAC,KAAoB;MAE3C,OAA+B,GAAG,kBAAkB,CAAC,KAAK;MAAlD;MAAO;MAAQ;MAAI,gBAAiC;MAC5D;MAAgB,oCAAsB;MAEtCA,IAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;MACjCA,IAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC;MAChCA,IAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC;MAC5BA,IAAM,eAAe,GAAG,MAAM,CAAC,GAAG,WAAC,OAAM,SAAG,sBAAsB,CAAC,KAAK,EAAE,KAAK,IAAC,CAAC,CAAC;MAElF,SAAS,WAAW,CAAC,CAAS,EAAE,CAAS,EAAE,SAAuB;UAChE,IAAI,SAAS,oBAAyB;;cAEpCA,IAAM,YAAY,GAAG,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;;cAEpE,IAAI,YAAY,KAAK,IAAI,EAAE;kBACzB,WAAW,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;eAC1C;;mBAEI;kBACH,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC;kBAC/B,WAAW,CAAC,GAAG,GAAG,sBAAsB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;kBACtD,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;eACpC;WACF;;eAEI,IAAI,SAAS,mBAAwB;cACxC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC;cAC/B,WAAW,CAAC,GAAG,GAAG,sBAAsB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;WACvD;;UAED,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;OACpC;MAED,QACE,EAAC,mBAAmB,oBAAK,KAAK,IAAE,OAAO,EAAG,WAAW,eACjD,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,UAC5B,2BACO,SAAS,IACd,SAAS,EAAC,UAAU,EACpB,KAAK,EAAG,KAAK,EACb,MAAM,EAAG,KAAK,EACd,KAAK,EAAG,UAAU;UAEnB;cACE,sBAAgB,EAAE,EAAG,GAAG;kBACtB,YAAM,MAAM,EAAC,IAAI,gBAAY,MAAM,GAAE;kBACrC,YAAM,MAAM,EAAC,MAAM,gBAAY,MAAM,kBAAc,GAAG,GAAE,CACzC,CACZ;UACP,SAAG,SAAS,EAAC,aAAa,kBAAgB,MAAM,EAAG,IAAI,EAAC,MAAM,IAC1D,SAAS,CAAC,GAAG,WAAC,OAAM,UACpB,YACE,GAAG,EAAG,KAAK,EACX,CAAC,EAAG,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,EACzD,MAAM,aAAU,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAC,kBAAc,GAC/D,IACH,CAAC,CACA;UACJ,cACE,SAAS,EAAC,oBAAoB,EAC9B,EAAE,EAAG,EAAE,EACP,EAAE,EAAG,EAAE,EACP,CAAC,EAAG,MAAM,EACV,IAAI,aAAU,aAAa,CAAC,GAAG,GAAG,GAAG,EAAC,OAAG,GACzC;UACA,KAAK,CAAC,cAAc,KACpB,cACE,SAAS,EAAC,mBAAmB,EAC7B,EAAE,EAAG,EAAE,EACP,EAAE,EAAG,EAAE,EACP,CAAC,EAAG,MAAM,EACV,IAAI,EAAC,MAAM,EACX,OAAO,EAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GACzB,CACH;UACD,cACE,SAAS,EAAC,gBAAgB,EAC1B,EAAE,EAAG,EAAE,EACP,EAAE,EAAG,EAAE,EACP,CAAC,EAAG,MAAM,EACV,IAAI,EAAC,MAAM,EACX,MAAM,EAAG,KAAK,CAAC,WAAW,kBACX,WAAW,GAC1B;UACA,MAAM,CAAC,MAAM,WAAC,OAAM,SAAG,KAAK,KAAK,cAAW,CAAC,CAAC,GAAG,WAAC,OAAM,UACxD,EAAC,SAAS,IACP,QAAQ,EAAG,KAAK,EAChB,KAAK,EAAG,KAAK,CAAC,KAAK,EACnB,IAAI,EAAG,KAAK,CAAC,SAAS,EACtB,CAAC,EAAG,KAAK,CAAC,YAAY,EACtB,GAAG,EAAG,KAAK,CAAC,SAAS,EACrB,KAAK,EAAG,KAAK,CAAC,WAAW,EACzB,CAAC,EAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAClC,CAAC,EAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAClC,IACJ,CAAC;UACF,EAAC,SAAS,IACP,QAAQ,EAAG,IAAI,EACf,KAAK,EAAG,WAAW,CAAC,KAAK,EACzB,IAAI,EAAG,WAAW,CAAC,SAAS,EAC5B,CAAC,EAAG,KAAK,CAAC,YAAY,EACtB,GAAG,EAAG,KAAK,CAAC,SAAS,EACrB,KAAK,EAAG,KAAK,CAAC,WAAW,EACzB,CAAC,EAAG,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EACxC,CAAC,EAAG,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GACxC,CACC,IACN,CACmB,EACtB;GACH;;WCxHe,YAAY,CAAsB,eAA8B;MAE9EA,IAAM,aAAa,GAAG,UAAU,MAA4B,EAAE,KAAiB;UAC7EE,IAAI,MAAS,CAAC;UACdF,IAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;;UAGjDM,CAAM,CACJ,CAAC,CAAC,eAAe,EAAE,mBACjB,GAAG,YAAE,KAAI,SAAG,MAAM,GAAG,OAAG;cACrB,KAAK,CACK,CAAC,EAChB,UAAU,CACX,CAAC;UAEF,SAAS,WAAW;cAClBN,IAAM,SAAS,GAAG,MAAM,YAAY,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;cACtF,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;cACnC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;WAC3B;;UAED,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE;cACrC,WAAW,EAAE,CAAC;WACf;eAAM;cACL,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;WAC5D;UAED,OAAO,MAAM,CAAC;OACf,CAAA;;;MAID,aAAa,CAAC,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC;MACpD,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;;MAE9C,aAAa,CAAC,WAAW,GAAG,eAAe,CAAC;MAE5C,OAAO,aAAa,CAAC;GAEtB;;;MCVY,cAAe;MAqB1B,wBAAY,KAAuB;;;UACjCC,cAAK,OAAC,KAAK,CAAC,CAAC;UATR,WAAM,GAAe,EAAE,CAAC;UAExB,gBAAW,GAAY,KAAK,CAAC;UAE5B,WAAM,GAAsB,EAAE,CAAC;UAC/B,iBAAY,GAA2B,EAAE,CAAC;UAC1C,mBAAc,GAAwB,EAAE,CAAC;UAI/C,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;UACnBD,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;UACtE,MAAM,CAAC,OAAO,WAAC,YAAW,SAAGI,MAAI,CAAC,QAAQ,CAAC,UAAU,IAAC,CAAC,CAAC;UACxD,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;;;UAGvB,IAAI,CAAC,KAAK,GAAG,kBACR,KAAK;eACR,KAAK,EAAE,IAAI,CAAC,KAAK;cACjB,MAAM,EAAE,IAAI,CAAC,MAAM;cACnB,MAAM,EAAE,KAAK,CAAC,OAAM,CACrB,CAAC;;;;;4DACH;;;;;;;+BASM,8BAAS,KAAoB,EAAE,KAAkC;0CAAlB,IAAI,CAAC,MAAM,CAAC;;;;UAGhEJ,IAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;;UAEpE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;;UAEvC,IAAI,CAAC,MAAM,CAAC,OAAO,WAAE,KAAK,EAAE,KAAK,EAAE,SAAG,KAAK,CAAC,KAAK,GAAG,QAAK,CAAC,CAAC;;UAE3D,IAAI,IAAI,CAAC,KAAK,EAAE;cACd,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;WACxC;;UAED,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC3C;;;;;+BAMM,oCAAY,KAAa;UAC9BA,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;UAE9C,KAAK,CAAC,MAAM,EAAE,CAAC;;UAEf,IAAI,CAAC,MAAM,CAAC,OAAO,WAAE,KAAK,EAAE,KAAK,EAAE,SAAG,KAAK,CAAC,KAAK,GAAG,QAAK,CAAC,CAAC;;UAE3D,IAAI,IAAI,CAAC,KAAK,EAAE;cACd,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;WACxC;;UAED,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;cACpC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;WACxB;;UAED,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QAClC;;;;;+BAMM,0CAAe,KAAa;UACjC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;UAChC,IAAI,IAAI,CAAC,KAAK,EAAE;cACd,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;WACtC;;UAED,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C;;;;;+BAMM,gCAAU,cAA+B;;;;UAE9C,IAAI,CAAC,MAAM,CAAC,OAAO,WAAC,OAAM,SAAG,KAAK,CAAC,MAAM,KAAE,CAAC,CAAC;;UAE7C,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;;UAEjB,cAAc,CAAC,OAAO,WAAC,YAAW,SAAGI,MAAI,CAAC,QAAQ,CAAC,UAAU,IAAC,CAAC,CAAC;;UAEhE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;UACvB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC;;;;;;;+BASM,kBAAG,SAA4B,EAAE,QAAkB;;;UACxDJ,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;;UAE3B,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,SAAS,EAAE,OAAO,WAAC,WAAU;;cAEtE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;;;cAG/D,IAAII,MAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;;kBAElCA,MAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,OAAO,WAAC,MAAK;sBAC1C,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;mBAC5B,CAAC,CAAC;;kBAEHA,MAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;eACrC;WACF,CAAC,CAAC;QACJ;;;;;;+BAOM,oBAAI,SAA4B,EAAE,QAAkB;;;UACzD,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,SAAS,EAAE,OAAO,WAAC,WAAU;cACtEJ,IAAM,YAAY,GAAGI,MAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;;cAE5C,IAAI,YAAY;oBAAE,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAC;WAC1E,CAAC,CAAC;QACJ;;;;;+BAMM,sBAAK,SAA+B;;;;;UACzCJ,IAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;UACvCA,IAAM,aAAa,GAAG,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;;;;UAI/F,IAAI,CAAC,aAAa,EAAE;cAClB,YAAY,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;cAC/BA,IAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;cAClD,YAAY,CAAC,OAAO,WAAC,IAAG,SAAG,EAAE,CAAC,KAAK,CAACI,MAAI,EAAE,IAAI,IAAC,CAAC,CAAC;cACjD,YAAY,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;WACjC;QACF;;;;;+BAMM,sCAAa,SAA+B;;;;;UACjDJ,IAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;iBAC3C,MAAK,UAAI,QAAC,SAAS,WAAK,MAAI,CAAC,CAAC;UAC9B,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,cAAc,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5E;;+BAIM,kCAAW,UAAqC;UACrD,IAAI,CAAC,QAAQ,CAAC,kBAAK,IAAI,CAAC,KAAK,EAAE,UAAa,CAAE,CAAC,CAAC;QACjD;;;;;+BAMM,0BAAO,KAAa;UACzB,IAAI,CAAC,UAAU,CAAC,SAAE,KAAK,EAAE,CAAC,CAAA;QAC3B;;;;+BAKM;UACL,IAAI,CAAC,MAAM,CAAC,OAAO,WAAC,OAAM,SAAG,KAAK,CAAC,KAAK,KAAE,CAAC,CAAC;UAC5C,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACxC;;;;;+BAMM,4BAAQ,SAAsB;UACnC,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;UACpB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAClC;;;;;;;+BASO,wCAAc,KAAe,EAAE,OAAY;UACjD,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;UACrC,IAAI,IAAI,CAAC,WAAW,EAAE;cACpB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;cACzB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;WAC3C;UACD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3C;;;;;+BAMO,0CAAe,IAAkB,EAAE,QAAgB;UACzD,IAAI,IAAI,oBAAyB;cAC/B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;WAChD;eACI,IAAI,IAAI,mBAAwB;cACnC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;WAC/C;eACI,IAAI,IAAI,kBAAuB;cAClC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;WAC9C;QACF;+BAEM,0BAAO,KAAK,EAAE,KAAK;;;UACxBE,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;;UAG1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;cAC1B,QAAQ,MAAM;;kBAEZ;sBACE,MAAM,GAAG;0BACP,EAAE,SAAS,EAAE,QAAQ,EAAE;0BACvB,EAAE,SAAS,EAAE,SAAS,EAAE,EACzB,CAAC;eACL;;cAED,IAAI,KAAK,CAAC,YAAY,EAAE;kBACtB,MAAM,CAAC,IAAI,CAAC;sBACV,SAAS,EAAE,SAAS;sBACpB,OAAO,EAAE;0BACP,UAAU,EAAE,OAAO;uBACpB;mBACF,CAAC,CAAA;eACH;WACF;UAED,QACE,WACE,KAAK,EAAC,gBAAgB,EACtB,EAAE,EAAG,KAAK,CAAC,EAAE,EACb,KAAK,EAAE;kBACL,OAAO,EAAE,KAAK,CAAC,OAAO;eACvB,IAEC,MAAM,CAAC,GAAG,WAAE,GAA2C,EAAE,cAAsB,EAAE;kDAAnC;;;0BAC9C,EAAC,WAAW,oBACN,KAAK,EACL,OAAO,IACX,GAAG,EAAG,SAAS,EACf,OAAO,EAAGE,MAAI,CAAC,cAAc,CAAC,IAAI,CAACA,MAAI,CAAC,EACxC,MAAM,EAAGA,MAAI,EACb,KAAK,EAAG,cAAc,IACtB;WACH,CAAC,CACE,EACP;OACF;;;IA7RiCC;EAEpB,2BAAY,GAAqB,kBAC1C,4BAA4B;OAC/B,MAAM,EAAE,EAAE;MACV,OAAO,EAAE,OAAO;MAChB,EAAE,EAAE,IAAI;MACR,MAAM,EAAE,SAAS;MACjB,MAAM,EAAE,KAAI,CACb,CAAA;AAuRH,EAAOL,IAAM,oBAAoB,GAAG,YAAY,CAAmC,cAAc,CAAC,CAAC;;ECjUnG,IAAU,GAAG,CAgBZ;EAhBD,WAAU,GAAG;MACE,WAAO,GAAG,OAAO,CAAC;MAGlB,SAAK,GAAG,QAAQ,CAAC;MAEjB,eAAW,GAAG,oBAAoB,CAAC;MAEhDE,IAAiB,EAAE,CAOlB;MAPD,WAAiB,EAAE;UACJ,IAAC,GAAGK,CAAE,CAAC;UACP,gBAAa,GAAG,mBAAmB,CAAC;UACpC,SAAM,GAAG,SAAS,CAAC;UACnB,SAAM,GAAG,SAAS,CAAC;UACnB,QAAK,GAAG,QAAQ,CAAC;UACjB,MAAG,GAAG,MAAM,CAAC;OAC3B,EAPgB,EAAE,GAAF,MAAE,KAAF,MAAE,QAOlB;GACF,EAhBS,GAAG,KAAH,GAAG,QAgBZ;AAED,cAAe,GAAG,CAAC;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"iro.js.map","sources":["../node_modules/preact/dist/preact.module.js","../../iro-core/dist/iro-core.es.js","../src/ComponentWrapper.tsx","../src/Handle.tsx","../src/Slider.tsx","../src/Box.tsx","../src/Wheel.tsx","../src/createWidget.ts","../src/ColorPicker.tsx","../src/index.ts"],"sourcesContent":["var n,l,u,t,i,r,o,f={},e=[],c=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i;function s(n,l){for(var u in l)n[u]=l[u];return n}function a(n){var l=n.parentNode;l&&l.removeChild(n)}function h(n,l,u){var t,i,r,o,f=arguments;if(l=s({},l),arguments.length>3)for(u=[u],t=3;t2&&(l.children=e.slice.call(arguments,2)),v(n.type,l,l.key||n.key,l.ref||n.ref)}function O(n){var l={},u={__c:\"__cC\"+o++,__p:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var t,i=this;return this.getChildContext||(t=[],this.getChildContext=function(){return l[u.__c]=i,l},this.shouldComponentUpdate=function(i){n.value!==i.value&&(l[u.__c].props.value=i.value,t.some(function(n){n.__P&&(n.context=i.value,k(n))}))},this.sub=function(n){t.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){t.splice(t.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Consumer.contextType=u,u}n={},l=function(n){return null!=n&&void 0===n.constructor},m.prototype.setState=function(n,l){var u=this.__s!==this.state&&this.__s||(this.__s=s({},this.state));(\"function\"!=typeof n||(n=n(u,this.props)))&&s(u,n),null!=n&&this.__v&&(this.u=!1,l&&this.__h.push(l),k(this))},m.prototype.forceUpdate=function(n){this.__v&&(n&&this.__h.push(n),this.u=!0,k(this))},m.prototype.render=d,u=[],t=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,i=n.debounceRendering,n.__e=function(n,l,u){for(var t;l=l.__p;)if((t=l.__c)&&!t.__p)try{if(t.constructor&&null!=t.constructor.getDerivedStateFromError)t.setState(t.constructor.getDerivedStateFromError(n));else{if(null==t.componentDidCatch)continue;t.componentDidCatch(n)}return k(t.__E=t)}catch(l){n=l}throw n},r=f,o=0;export{I as render,L as hydrate,h as createElement,h,d as Fragment,p as createRef,l as isValidElement,m as Component,M as cloneElement,O as createContext,x as toChildArray,D as _unmount,n as options};\n//# sourceMappingURL=preact.module.js.map\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\n// Some regular expressions for rgb() and hsl() Colors are borrowed from tinyColor\n// https://github.com/bgrins/TinyColor\n// Kelvin temperature math borrowed from Neil Barlett's implementation\n// from https://github.com/neilbartlett/color-temperature\n// https://www.w3.org/TR/css3-values/#integers\nvar CSS_INTEGER = '[-\\\\+]?\\\\d+%?'; // http://www.w3.org/TR/css3-values/#number-value\n\nvar CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?'; // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome\n\nvar CSS_UNIT = '(?:' + CSS_NUMBER + ')|(?:' + CSS_INTEGER + ')'; // Parse function params\n// Parens and commas are optional, and this also allows for whitespace between numbers\n\nvar PERMISSIVE_MATCH_3 = '[\\\\s|\\\\(]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')\\\\s*\\\\)?';\nvar PERMISSIVE_MATCH_4 = '[\\\\s|\\\\(]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')\\\\s*\\\\)?'; // Regex patterns for functional color strings\n\nvar REGEX_FUNCTIONAL_RGB = new RegExp('rgb' + PERMISSIVE_MATCH_3);\nvar REGEX_FUNCTIONAL_RGBA = new RegExp('rgba' + PERMISSIVE_MATCH_4);\nvar REGEX_FUNCTIONAL_HSL = new RegExp('hsl' + PERMISSIVE_MATCH_3);\nvar REGEX_FUNCTIONAL_HSLA = new RegExp('hsla' + PERMISSIVE_MATCH_4); // Color string parsing regex\n\nvar HEX_START = '^(?:#?|0x?)';\nvar HEX_INT_SINGLE = '([0-9a-fA-F]{1})';\nvar HEX_INT_DOUBLE = '([0-9a-fA-F]{2})';\nvar REGEX_HEX_3 = new RegExp(HEX_START + HEX_INT_SINGLE + HEX_INT_SINGLE + HEX_INT_SINGLE + '$');\nvar REGEX_HEX_4 = new RegExp(HEX_START + HEX_INT_SINGLE + HEX_INT_SINGLE + HEX_INT_SINGLE + HEX_INT_SINGLE + '$');\nvar REGEX_HEX_6 = new RegExp(HEX_START + HEX_INT_DOUBLE + HEX_INT_DOUBLE + HEX_INT_DOUBLE + '$');\nvar REGEX_HEX_8 = new RegExp(HEX_START + HEX_INT_DOUBLE + HEX_INT_DOUBLE + HEX_INT_DOUBLE + HEX_INT_DOUBLE + '$'); // Kelvin temperature bounds\n\nvar KELVIN_MIN = 2000;\nvar KELVIN_MAX = 40000; // Math shorthands\n\nvar log = Math.log,\n round = Math.round,\n floor = Math.floor;\n/**\r\n * @desc Clamp a number between a min and max value\r\n * @param num - input value\r\n * @param min - min allowed value\r\n * @param max - max allowed value\r\n */\n\nfunction clamp(num, min, max) {\n return Math.min(Math.max(num, min), max);\n}\n/**\r\n * @desc Parse a css unit string - either regular int or a percentage number\r\n * @param str - css unit string\r\n * @param max - max unit value, used for calculating percentages\r\n */\n\n\nfunction parseUnit(str, max) {\n var isPercentage = str.indexOf('%') > -1;\n var num = parseFloat(str);\n return isPercentage ? max / 100 * num : num;\n}\n/**\r\n * @desc Parse hex str to an int\r\n * @param str - hex string to parse\r\n */\n\n\nfunction parseHexInt(str) {\n return parseInt(str, 16);\n}\n/**\r\n * @desc Convert nunber into to 2-digit hex\r\n * @param int - number to convert\r\n */\n\n\nfunction intToHex(_int) {\n return _int.toString(16).padStart(2, '0');\n}\n\nvar IroColor =\n/*#__PURE__*/\nfunction () {\n /**\r\n * @constructor Color object\r\n * @param value - initial color value\r\n */\n function IroColor(value, onChange) {\n // The default Color value\n this.$ = {\n h: 0,\n s: 0,\n v: 0,\n a: 1\n };\n if (value) this.set(value); // The watch callback function for this Color will be stored here\n\n this.onChange = onChange;\n this.initialValue = _extends({}, this.$); // copy initial value\n }\n /**\r\n * @desc Set the Color from any valid value\r\n * @param value - new color value\r\n */\n\n\n var _proto = IroColor.prototype;\n\n _proto.set = function set(value) {\n if (typeof value === 'string') {\n if (/^(?:#?|0x?)[0-9a-fA-F]{3,8}$/.test(value)) {\n this.hexString = value;\n } else if (/^rgba?/.test(value)) {\n this.rgbString = value;\n } else if (/^hsla?/.test(value)) {\n this.hslString = value;\n }\n } else if (typeof value === 'object') {\n if (value instanceof IroColor) {\n this.hsv = value.hsv;\n } else if (typeof value === 'object' && 'r' in value && 'g' in value && 'b' in value) {\n this.rgb = value;\n } else if (typeof value === 'object' && 'h' in value && 's' in value && 'v' in value) {\n this.hsv = value;\n } else if (typeof value === 'object' && 'h' in value && 's' in value && 'l' in value) {\n this.hsl = value;\n }\n } else {\n throw new Error('Invalid color value');\n }\n }\n /**\r\n * @desc Shortcut to set a specific channel value\r\n * @param format - hsv | hsl | rgb\r\n * @param channel - individual channel to set, for example if model = hsl, chanel = h | s | l\r\n * @param value - new value for the channel\r\n */\n ;\n\n _proto.setChannel = function setChannel(format, channel, value) {\n var _extends2;\n\n this[format] = _extends({}, this[format], (_extends2 = {}, _extends2[channel] = value, _extends2));\n }\n /**\r\n * @desc Reset color back to its initial value\r\n */\n ;\n\n _proto.reset = function reset() {\n this.hsva = this.initialValue;\n }\n /**\r\n * @desc make new Color instance with the same value as this one\r\n */\n ;\n\n _proto.clone = function clone() {\n return new IroColor(this);\n }\n /**\r\n * @desc remove color onChange\r\n */\n ;\n\n _proto.unbind = function unbind() {\n this.onChange = undefined;\n }\n /**\r\n * @desc Convert hsv object to rgb\r\n * @param hsv - hsv color object\r\n */\n ;\n\n IroColor.hsvToRgb = function hsvToRgb(hsv) {\n var h = hsv.h / 60;\n var s = hsv.s / 100;\n var v = hsv.v / 100;\n var i = floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - f * s);\n var t = v * (1 - (1 - f) * s);\n var mod = i % 6;\n var r = [v, q, p, p, t, v][mod];\n var g = [t, v, v, q, p, p][mod];\n var b = [p, p, t, v, v, q][mod];\n return {\n r: clamp(r * 255, 0, 255),\n g: clamp(g * 255, 0, 255),\n b: clamp(b * 255, 0, 255)\n };\n }\n /**\r\n * @desc Convert rgb object to hsv\r\n * @param rgb - rgb object\r\n */\n ;\n\n IroColor.rgbToHsv = function rgbToHsv(rgb) {\n var r = rgb.r / 255;\n var g = rgb.g / 255;\n var b = rgb.b / 255;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var delta = max - min;\n var hue = 0;\n var value = max;\n var saturation = max === 0 ? 0 : delta / max;\n\n switch (max) {\n case min:\n hue = 0; // achromatic\n\n break;\n\n case r:\n hue = (g - b) / delta + (g < b ? 6 : 0);\n break;\n\n case g:\n hue = (b - r) / delta + 2;\n break;\n\n case b:\n hue = (r - g) / delta + 4;\n break;\n }\n\n return {\n h: hue * 60 % 360,\n s: clamp(saturation * 100, 0, 100),\n v: clamp(value * 100, 0, 100)\n };\n }\n /**\r\n * @desc Convert hsv object to hsl\r\n * @param hsv - hsv object\r\n */\n ;\n\n IroColor.hsvToHsl = function hsvToHsl(hsv) {\n var s = hsv.s / 100;\n var v = hsv.v / 100;\n var l = (2 - s) * v;\n var divisor = l <= 1 ? l : 2 - l; // Avoid division by zero when lightness is close to zero\n\n var saturation = divisor < 1e-9 ? 0 : s * v / divisor;\n return {\n h: hsv.h,\n s: clamp(saturation * 100, 0, 100),\n l: clamp(l * 50, 0, 100)\n };\n }\n /**\r\n * @desc Convert hsl object to hsv\r\n * @param hsl - hsl object\r\n */\n ;\n\n IroColor.hslToHsv = function hslToHsv(hsl) {\n var l = hsl.l * 2;\n var s = hsl.s * (l <= 100 ? l : 200 - l) / 100; // Avoid division by zero when l + s is near 0\n\n var saturation = l + s < 1e-9 ? 0 : 2 * s / (l + s);\n return {\n h: hsl.h,\n s: clamp(saturation * 100, 0, 100),\n v: clamp((l + s) / 2, 0, 100)\n };\n }\n /**\r\n * @desc Convert a kelvin temperature to an approx, RGB value\r\n * @param kelvin - kelvin temperature\r\n */\n ;\n\n IroColor.kelvinToRgb = function kelvinToRgb(kelvin) {\n var temp = kelvin / 100;\n var r, g, b;\n\n if (temp < 66) {\n r = 255;\n g = -155.25485562709179 - 0.44596950469579133 * (g = temp - 2) + 104.49216199393888 * log(g);\n b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp - 10) + 115.67994401066147 * log(b);\n } else {\n r = 351.97690566805693 + 0.114206453784165 * (r = temp - 55) - 40.25366309332127 * log(r);\n g = 325.4494125711974 + 0.07943456536662342 * (g = temp - 50) - 28.0852963507957 * log(g);\n b = 255;\n }\n\n return {\n r: clamp(floor(r), 0, 255),\n g: clamp(floor(g), 0, 255),\n b: clamp(floor(b), 0, 255)\n };\n }\n /**\r\n * @desc Convert an RGB color to an approximate kelvin temperature\r\n * @param kelvin - kelvin temperature\r\n */\n ;\n\n IroColor.rgbToKelvin = function rgbToKelvin(rgb) {\n var r = rgb.r,\n b = rgb.b;\n var eps = 0.4;\n var minTemp = KELVIN_MIN;\n var maxTemp = KELVIN_MAX;\n var temp;\n\n while (maxTemp - minTemp > eps) {\n temp = (maxTemp + minTemp) * 0.5;\n\n var _rgb = IroColor.kelvinToRgb(temp);\n\n if (_rgb.b / _rgb.r >= b / r) {\n maxTemp = temp;\n } else {\n minTemp = temp;\n }\n }\n\n return temp;\n };\n\n _createClass(IroColor, [{\n key: \"hsv\",\n get: function get() {\n // value is cloned to allow changes to be made to the values before passing them back\n var value = this.$;\n return {\n h: value.h,\n s: value.s,\n v: value.v\n };\n },\n set: function set(newValue) {\n var oldValue = this.$;\n newValue = _extends({}, oldValue, newValue); // If this Color is being watched for changes we need to compare the new and old values to check the difference\n // Otherwise we can just be lazy\n\n if (this.onChange) {\n // Compute changed values\n var changes = {\n h: false,\n v: false,\n s: false,\n a: false\n };\n\n for (var key in oldValue) {\n changes[key] = newValue[key] != oldValue[key];\n }\n\n this.$ = newValue; // If the value has changed, call hook callback\n\n if (changes.h || changes.s || changes.v || changes.a) this.onChange(this, changes);\n } else {\n this.$ = newValue;\n }\n }\n }, {\n key: \"hsva\",\n get: function get() {\n return _extends({}, this.$);\n },\n set: function set(value) {\n this.hsv = value;\n }\n }, {\n key: \"hue\",\n get: function get() {\n return this.$.h;\n },\n set: function set(value) {\n this.hsv = {\n h: value\n };\n }\n }, {\n key: \"saturation\",\n get: function get() {\n return this.$.s;\n },\n set: function set(value) {\n this.hsv = {\n s: value\n };\n }\n }, {\n key: \"value\",\n get: function get() {\n return this.$.v;\n },\n set: function set(value) {\n this.hsv = {\n v: value\n };\n }\n }, {\n key: \"alpha\",\n get: function get() {\n return this.$.a;\n },\n set: function set(value) {\n this.hsv = _extends({}, this.hsv, {\n a: value\n });\n }\n }, {\n key: \"kelvin\",\n get: function get() {\n return IroColor.rgbToKelvin(this.rgb);\n },\n set: function set(value) {\n this.rgb = IroColor.kelvinToRgb(value);\n }\n }, {\n key: \"red\",\n get: function get() {\n var rgb = this.rgb;\n return rgb.r;\n },\n set: function set(value) {\n this.rgb = _extends({}, this.rgb, {\n r: value\n });\n }\n }, {\n key: \"green\",\n get: function get() {\n var rgb = this.rgb;\n return rgb.g;\n },\n set: function set(value) {\n this.rgb = _extends({}, this.rgb, {\n g: value\n });\n }\n }, {\n key: \"blue\",\n get: function get() {\n var rgb = this.rgb;\n return rgb.b;\n },\n set: function set(value) {\n this.rgb = _extends({}, this.rgb, {\n b: value\n });\n }\n }, {\n key: \"rgb\",\n get: function get() {\n var _IroColor$hsvToRgb = IroColor.hsvToRgb(this.$),\n r = _IroColor$hsvToRgb.r,\n g = _IroColor$hsvToRgb.g,\n b = _IroColor$hsvToRgb.b;\n\n return {\n r: round(r),\n g: round(g),\n b: round(b)\n };\n },\n set: function set(value) {\n this.hsv = _extends({}, IroColor.rgbToHsv(value), {\n a: value.a === undefined ? 1 : value.a\n });\n }\n }, {\n key: \"rgba\",\n get: function get() {\n return _extends({}, this.rgb, {\n a: this.alpha\n });\n },\n set: function set(value) {\n this.rgb = value;\n }\n }, {\n key: \"hsl\",\n get: function get() {\n var _IroColor$hsvToHsl = IroColor.hsvToHsl(this.$),\n h = _IroColor$hsvToHsl.h,\n s = _IroColor$hsvToHsl.s,\n l = _IroColor$hsvToHsl.l;\n\n return {\n h: round(h),\n s: round(s),\n l: round(l)\n };\n },\n set: function set(value) {\n this.hsv = _extends({}, IroColor.hslToHsv(value), {\n a: value.a === undefined ? 1 : value.a\n });\n }\n }, {\n key: \"hsla\",\n get: function get() {\n return _extends({}, this.hsl, {\n a: this.alpha\n });\n },\n set: function set(value) {\n this.hsl = value;\n }\n }, {\n key: \"rgbString\",\n get: function get() {\n var rgb = this.rgb;\n return \"rgb(\" + rgb.r + \", \" + rgb.g + \", \" + rgb.b + \")\";\n },\n set: function set(value) {\n var match;\n var r,\n g,\n b,\n a = 1;\n\n if (match = REGEX_FUNCTIONAL_RGB.exec(value)) {\n r = parseUnit(match[1], 255);\n g = parseUnit(match[2], 255);\n b = parseUnit(match[3], 255);\n } else if (match = REGEX_FUNCTIONAL_RGBA.exec(value)) {\n r = parseUnit(match[1], 255);\n g = parseUnit(match[2], 255);\n b = parseUnit(match[3], 255);\n a = parseUnit(match[4], 1);\n }\n\n if (match) {\n this.rgb = {\n r: r,\n g: g,\n b: b,\n a: a\n };\n } else {\n throw new Error('Invalid rgb string');\n }\n }\n }, {\n key: \"rgbaString\",\n get: function get() {\n var rgba = this.rgba;\n return \"rgba(\" + rgba.r + \", \" + rgba.g + \", \" + rgba.b + \", \" + rgba.a + \")\";\n },\n set: function set(value) {\n this.rgbString = value;\n }\n }, {\n key: \"hexString\",\n get: function get() {\n var rgb = this.rgb;\n return \"#\" + intToHex(rgb.r) + intToHex(rgb.g) + intToHex(rgb.b);\n },\n set: function set(value) {\n var match;\n var r,\n g,\n b,\n a = 255;\n\n if (match = REGEX_HEX_3.exec(value)) {\n r = parseHexInt(match[1]) * 17;\n g = parseHexInt(match[2]) * 17;\n b = parseHexInt(match[3]) * 17;\n } else if (match = REGEX_HEX_4.exec(value)) {\n r = parseHexInt(match[1]) * 17;\n g = parseHexInt(match[2]) * 17;\n b = parseHexInt(match[3]) * 17;\n a = parseHexInt(match[4]) * 17;\n } else if (match = REGEX_HEX_6.exec(value)) {\n r = parseHexInt(match[1]);\n g = parseHexInt(match[2]);\n b = parseHexInt(match[3]);\n } else if (match = REGEX_HEX_8.exec(value)) {\n r = parseHexInt(match[1]);\n g = parseHexInt(match[2]);\n b = parseHexInt(match[3]);\n a = parseHexInt(match[4]);\n }\n\n if (match) {\n this.rgb = {\n r: r,\n g: g,\n b: b,\n a: a / 255\n };\n } else {\n throw new Error('Invalid hex string');\n }\n }\n }, {\n key: \"hex8String\",\n get: function get() {\n var rgba = this.rgba;\n return \"#\" + intToHex(rgba.r) + intToHex(rgba.g) + intToHex(rgba.b) + intToHex(floor(rgba.a * 255));\n },\n set: function set(value) {\n this.hexString = value;\n }\n }, {\n key: \"hslString\",\n get: function get() {\n var hsl = this.hsl;\n return \"hsl(\" + hsl.h + \", \" + hsl.s + \"%, \" + hsl.l + \"%)\";\n },\n set: function set(value) {\n var match;\n var h,\n s,\n l,\n a = 1;\n\n if (match = REGEX_FUNCTIONAL_HSL.exec(value)) {\n h = parseUnit(match[1], 360);\n s = parseUnit(match[2], 100);\n l = parseUnit(match[3], 100);\n } else if (match = REGEX_FUNCTIONAL_HSLA.exec(value)) {\n h = parseUnit(match[1], 360);\n s = parseUnit(match[2], 100);\n l = parseUnit(match[3], 100);\n a = parseUnit(match[4], 1);\n }\n\n if (match) {\n this.hsl = {\n h: h,\n s: s,\n l: l,\n a: a\n };\n } else {\n throw new Error('Invalid hsl string');\n }\n }\n }, {\n key: \"hslaString\",\n get: function get() {\n var hsla = this.hsla;\n return \"hsl(\" + hsla.h + \", \" + hsla.s + \"%, \" + hsla.l + \"%, \" + hsla.a + \")\";\n },\n set: function set(value) {\n this.hslString = value;\n }\n }]);\n\n return IroColor;\n}();\n\nvar sliderDefaultOptions = {\n sliderShape: 'bar',\n sliderType: 'value',\n minTemperature: 2200,\n maxTemperature: 11000\n};\n/**\r\n * @desc Get the CSS styles for the slider root\r\n * @param props - slider props\r\n */\n\nfunction getSliderStyles(props) {\n var _ref;\n\n return _ref = {}, _ref[props.layoutDirection === 'horizontal' ? 'marginLeft' : 'marginTop'] = props.sliderMargin, _ref;\n}\n/**\r\n * @desc Get the bounding dimensions of the slider\r\n * @param props - slider props\r\n */\n\nfunction getSliderDimensions(props) {\n var _sliderSize;\n\n var width = props.width,\n sliderSize = props.sliderSize,\n borderWidth = props.borderWidth,\n handleRadius = props.handleRadius,\n padding = props.padding,\n sliderShape = props.sliderShape;\n var ishorizontal = props.layoutDirection === 'horizontal'; // automatically calculate sliderSize if its not defined\n\n sliderSize = (_sliderSize = sliderSize) != null ? _sliderSize : padding * 2 + handleRadius * 2 + borderWidth * 2;\n\n if (sliderShape === 'circle') {\n return {\n handleStart: props.padding + props.handleRadius,\n handleRange: width - padding * 2 - handleRadius * 2 - borderWidth * 2,\n width: width,\n height: width,\n cx: width / 2,\n cy: width / 2,\n radius: width / 2 - borderWidth / 2\n };\n } else {\n return {\n handleStart: sliderSize / 2,\n handleRange: width - sliderSize,\n radius: sliderSize / 2,\n x: 0,\n y: 0,\n width: ishorizontal ? sliderSize : width,\n height: ishorizontal ? width : sliderSize\n };\n }\n}\n/**\r\n * @desc Get the current slider value for a given color, as a percentage\r\n * @param props - slider props\r\n * @param color\r\n */\n\nfunction getCurrentSliderValue(props, color) {\n var hsva = color.hsva;\n var rgb = color.rgb;\n\n switch (props.sliderType) {\n case 'red':\n return rgb.r / 2.55;\n\n case 'green':\n return rgb.g / 2.55;\n\n case 'blue':\n return rgb.b / 2.55;\n\n case 'alpha':\n return hsva.a * 100;\n\n case 'kelvin':\n var minTemperature = props.minTemperature,\n maxTemperature = props.maxTemperature;\n var temperatureRange = maxTemperature - minTemperature;\n var percent = (color.kelvin - minTemperature) / temperatureRange * 100; // clmap percentage\n\n return Math.max(0, Math.min(percent, 100));\n\n case 'hue':\n return hsva.h /= 3.6;\n\n case 'saturation':\n return hsva.s;\n\n case 'value':\n default:\n return hsva.v;\n }\n}\n/**\r\n * @desc Get the current slider value from user input\r\n * @param props - slider props\r\n * @param x - global input x position\r\n * @param y - global input y position\r\n */\n\nfunction getSliderValueFromInput(props, x, y) {\n var _getSliderDimensions = getSliderDimensions(props),\n handleRange = _getSliderDimensions.handleRange,\n handleStart = _getSliderDimensions.handleStart;\n\n var handlePos;\n\n if (props.layoutDirection === 'horizontal') {\n handlePos = -1 * y + handleRange + handleStart;\n } else {\n handlePos = x - handleStart;\n } // clamp handle position\n\n\n handlePos = Math.max(Math.min(handlePos, handleRange), 0);\n var percent = Math.round(100 / handleRange * handlePos);\n\n switch (props.sliderType) {\n case 'kelvin':\n var minTemperature = props.minTemperature,\n maxTemperature = props.maxTemperature;\n var temperatureRange = maxTemperature - minTemperature;\n return minTemperature + temperatureRange * (percent / 100);\n\n case 'alpha':\n return percent / 100;\n\n case 'hue':\n return percent * 3.6;\n\n case 'red':\n case 'blue':\n case 'green':\n return percent * 2.55;\n\n default:\n return percent;\n }\n}\n/**\r\n * @desc Get the current handle position for a given color\r\n * @param props - slider props\r\n * @param color\r\n */\n\nfunction getSliderHandlePosition(props, color) {\n var _getSliderDimensions2 = getSliderDimensions(props),\n width = _getSliderDimensions2.width,\n height = _getSliderDimensions2.height,\n handleRange = _getSliderDimensions2.handleRange,\n handleStart = _getSliderDimensions2.handleStart;\n\n var ishorizontal = props.layoutDirection === 'horizontal';\n var sliderValue = getCurrentSliderValue(props, color);\n var midPoint = ishorizontal ? width / 2 : height / 2;\n var handlePos = handleStart + sliderValue / 100 * handleRange;\n\n if (ishorizontal) {\n handlePos = -1 * handlePos + handleRange + handleStart * 2;\n }\n\n return {\n x: ishorizontal ? midPoint : handlePos,\n y: ishorizontal ? handlePos : midPoint\n };\n}\n/**\r\n * @desc Get the gradient stops for a slider\r\n * @param props - slider props\r\n * @param color\r\n */\n\nfunction getSliderGradient(props, color) {\n var hsv = color.hsv;\n var rgb = color.rgb;\n\n switch (props.sliderType) {\n case 'red':\n return [[0, \"rgb(\" + 0 + \",\" + rgb.g + \",\" + rgb.b + \")\"], [100, \"rgb(\" + 255 + \",\" + rgb.g + \",\" + rgb.b + \")\"]];\n\n case 'green':\n return [[0, \"rgb(\" + rgb.r + \",\" + 0 + \",\" + rgb.b + \")\"], [100, \"rgb(\" + rgb.r + \",\" + 255 + \",\" + rgb.b + \")\"]];\n\n case 'blue':\n return [[0, \"rgb(\" + rgb.r + \",\" + rgb.g + \",\" + 0 + \")\"], [100, \"rgb(\" + rgb.r + \",\" + rgb.g + \",\" + 255 + \")\"]];\n\n case 'alpha':\n return [[0, \"rgba(\" + rgb.r + \",\" + rgb.g + \",\" + rgb.b + \",0)\"], [100, \"rgb(\" + rgb.r + \",\" + rgb.g + \",\" + rgb.b + \")\"]];\n\n case 'kelvin':\n var stops = [];\n var min = props.minTemperature;\n var max = props.maxTemperature;\n var numStops = 8;\n var range = max - min;\n\n for (var kelvin = min, stop = 0; kelvin < max; kelvin += range / numStops, stop += 1) {\n var _IroColor$kelvinToRgb = IroColor.kelvinToRgb(kelvin),\n r = _IroColor$kelvinToRgb.r,\n g = _IroColor$kelvinToRgb.g,\n b = _IroColor$kelvinToRgb.b;\n\n stops.push([100 / numStops * stop, \"rgb(\" + r + \",\" + g + \",\" + b + \")\"]);\n }\n\n return stops;\n\n case 'hue':\n return [[0, '#f00'], [16.666, '#ff0'], [33.333, '#0f0'], [50, '#0ff'], [66.666, '#00f'], [83.333, '#f0f'], [100, '#f00']];\n\n case 'saturation':\n var noSat = IroColor.hsvToHsl({\n h: hsv.h,\n s: 0,\n v: hsv.v\n });\n var fullSat = IroColor.hsvToHsl({\n h: hsv.h,\n s: 100,\n v: hsv.v\n });\n return [[0, \"hsl(\" + noSat.h + \",\" + noSat.s + \"%,\" + noSat.l + \"%)\"], [100, \"hsl(\" + fullSat.h + \",\" + fullSat.s + \"%,\" + fullSat.l + \"%)\"]];\n\n case 'value':\n default:\n var hsl = IroColor.hsvToHsl({\n h: hsv.h,\n s: hsv.s,\n v: 100\n });\n return [[0, '#000'], [100, \"hsl(\" + hsl.h + \",\" + hsl.s + \"%,\" + hsl.l + \"%)\"]];\n }\n}\n/**\r\n * @desc Get the gradient coords for a slider\r\n * @param props - slider props\r\n */\n\nfunction getSliderGradientCoords(props) {\n var ishorizontal = props.layoutDirection === 'horizontal';\n return {\n x1: '0%',\n y1: ishorizontal ? '100%' : '0%',\n x2: ishorizontal ? '0%' : '100%',\n y2: '0%'\n };\n}\n\n/**\r\n * @desc Get the point as the center of the wheel\r\n * @param props - wheel props\r\n */\nfunction getWheelDimensions(props) {\n var rad = props.width / 2;\n return {\n width: props.width,\n radius: rad - props.borderWidth,\n cx: rad,\n cy: rad\n };\n}\n/**\r\n * @desc Translate an angle according to wheelAngle and wheelDirection\r\n * @param props - wheel props\r\n * @param angle - input angle\r\n */\n\nfunction translateWheelAngle(props, angle, invert) {\n var wheelAngle = props.wheelAngle;\n var wheelDirection = props.wheelDirection;\n\n if (!invert && wheelDirection === 'clockwise' || invert && wheelDirection === 'anticlockwise') {\n angle = (invert ? 180 : 360) - (wheelAngle - angle);\n } else {\n angle = wheelAngle + angle;\n } // javascript's modulo operator doesn't produce positive numbers with negative input\n // https://dev.to/maurobringolf/a-neat-trick-to-compute-modulo-of-negative-numbers-111e\n\n\n return (angle % 360 + 360) % 360;\n}\n/**\r\n * @desc Get the current handle position for a given color\r\n * @param props - wheel props\r\n * @param color\r\n */\n\nfunction getWheelHandlePosition(props, color) {\n var hsv = color.hsv;\n\n var _getWheelDimensions = getWheelDimensions(props),\n cx = _getWheelDimensions.cx,\n cy = _getWheelDimensions.cy;\n\n var handleRange = props.width / 2 - props.padding - props.handleRadius - props.borderWidth;\n var handleAngle = (180 + translateWheelAngle(props, hsv.h, true)) * (Math.PI / 180);\n var handleDist = hsv.s / 100 * handleRange;\n var direction = props.wheelDirection === 'clockwise' ? -1 : 1;\n return {\n x: cx + handleDist * Math.cos(handleAngle) * direction,\n y: cy + handleDist * Math.sin(handleAngle) * direction\n };\n}\n/**\r\n * @desc Get the current wheel value from user input\r\n * @param props - wheel props\r\n * @param x - global input x position\r\n * @param y - global input y position\r\n */\n\nfunction getWheelValueFromInput(props, x, y) {\n var _getWheelDimensions2 = getWheelDimensions(props),\n cx = _getWheelDimensions2.cx,\n cy = _getWheelDimensions2.cy;\n\n var handleRange = props.width / 2 - props.padding - props.handleRadius - props.borderWidth;\n x = cx - x;\n y = cy - y; // Calculate the hue by converting the angle to radians\n\n var hue = translateWheelAngle(props, Math.atan2(-y, -x) * (180 / Math.PI)); // Find the point's distance from the center of the wheel\n // This is used to show the saturation level\n\n var handleDist = Math.min(Math.sqrt(x * x + y * y), handleRange);\n return {\n h: Math.round(hue),\n s: Math.round(100 / handleRange * handleDist)\n };\n}\n\n/**\r\n * @desc Get the CSS styles for the box root element\r\n * @param props - box props\r\n */\nfunction getBoxStyles(props) {\n var _ref;\n\n return _ref = {}, _ref[props.layoutDirection === 'horizontal' ? 'marginLeft' : 'marginTop'] = props.sliderMargin, _ref;\n}\n/**\r\n * @desc Get the bounding dimensions of the box\r\n * @param props - box props\r\n */\n\nfunction getBoxDimensions(props) {\n var width = props.width,\n boxHeight = props.boxHeight,\n padding = props.padding,\n handleRadius = props.handleRadius;\n return {\n width: width,\n height: boxHeight != null ? boxHeight : width,\n radius: padding + handleRadius\n };\n}\n/**\r\n * @desc Get the current box value from user input\r\n * @param props - box props\r\n * @param x - global input x position\r\n * @param y - global input y position\r\n */\n\nfunction getBoxValueFromInput(props, x, y) {\n var _getBoxDimensions = getBoxDimensions(props),\n width = _getBoxDimensions.width,\n height = _getBoxDimensions.height,\n radius = _getBoxDimensions.radius;\n\n var handleStart = radius;\n var handleRangeX = width - radius * 2;\n var handleRangeY = height - radius * 2;\n var percentX = (x - handleStart) / handleRangeX * 100;\n var percentY = (y - handleStart) / handleRangeY * 100;\n return {\n s: Math.max(0, Math.min(percentX, 100)),\n v: Math.max(0, Math.min(100 - percentY, 100))\n };\n}\n/**\r\n * @desc Get the current box handle position for a given color\r\n * @param props - box props\r\n * @param color\r\n */\n\nfunction getBoxHandlePosition(props, color) {\n var _getBoxDimensions2 = getBoxDimensions(props),\n width = _getBoxDimensions2.width,\n height = _getBoxDimensions2.height,\n radius = _getBoxDimensions2.radius;\n\n var hsv = color.hsv;\n var handleStart = radius;\n var handleRangeX = width - radius * 2;\n var handleRangeY = height - radius * 2;\n return {\n x: handleStart + hsv.s / 100 * handleRangeX,\n y: handleStart + (handleRangeY - hsv.v / 100 * handleRangeY)\n };\n}\n/**\r\n * @desc Get the gradient stops for a box\r\n * @param props - box props\r\n * @param color\r\n */\n\nfunction getBoxGradients(props, color) {\n var hue = color.hue;\n return [// saturation gradient\n [[0, '#fff'], [100, \"hsl(\" + hue + \",100%,50%)\"]], // lightness gradient\n [[0, 'rgba(0,0,0,0)'], [100, '#000']]];\n}\n\n// Keep track of html elements for resolveSvgUrl\n// getElementsByTagName returns a live HTMLCollection, which stays in sync with the DOM tree\n// So it only needs to be called once\nvar BASE_ELEMENTS;\n/**\r\n * @desc Resolve an SVG reference URL\r\n * This is required to work around how Safari and iOS webviews handle gradient URLS under certain conditions\r\n * If a page is using a client-side routing library which makes use of the HTML tag,\r\n * Safari won't be able to render SVG gradients properly (as they are referenced by URLs)\r\n * More info on the problem:\r\n * https://stackoverflow.com/questions/19742805/angular-and-svg-filters/19753427#19753427\r\n * https://github.com/jaames/iro.js/issues/18\r\n * https://github.com/jaames/iro.js/issues/45\r\n * https://github.com/jaames/iro.js/pull/89\r\n * @props url - SVG reference URL\r\n */\n\nfunction resolveSvgUrl(url) {\n if (!BASE_ELEMENTS) BASE_ELEMENTS = document.getElementsByTagName('base'); // Sniff useragent string to check if the user is running Safari\n\n var ua = window.navigator.userAgent;\n var isSafari = /^((?!chrome|android).)*safari/i.test(ua);\n var isIos = /iPhone|iPod|iPad/i.test(ua);\n var location = window.location;\n return (isSafari || isIos) && BASE_ELEMENTS.length > 0 ? location.protocol + \"//\" + location.host + location.pathname + location.search + url : url;\n}\n/**\r\n * @desc Get the path commands to draw an svg arc\r\n * @props cx - arc center point x\r\n * @props cy - arc center point y\r\n * @props radius - arc radius\r\n * @props startAngle - arc start angle\r\n * @props endAngle - arc end angle\r\n */\n\nfunction getSvgArcPath(cx, cy, radius, startAngle, endAngle) {\n var largeArcFlag = endAngle - startAngle <= 180 ? 0 : 1;\n startAngle *= Math.PI / 180;\n endAngle *= Math.PI / 180;\n var x1 = cx + radius * Math.cos(endAngle);\n var y1 = cy + radius * Math.sin(endAngle);\n var x2 = cx + radius * Math.cos(startAngle);\n var y2 = cy + radius * Math.sin(startAngle);\n return \"M \" + x1 + \" \" + y1 + \" A \" + radius + \" \" + radius + \" 0 \" + largeArcFlag + \" 0 \" + x2 + \" \" + y2;\n}\n/**\r\n * @desc Given a specifc (x, y) position, test if there's a handle there and return its index, else return null.\r\n * This is used for components like the box and wheel which support multiple handles when multicolor is active\r\n * @props x - point x position\r\n * @props y - point y position\r\n * @props handlePositions - array of {x, y} coords for each handle\r\n */\n\nfunction getHandleAtPoint(props, x, y, handlePositions) {\n for (var i = 0; i < handlePositions.length; i++) {\n var dX = handlePositions[i].x - x;\n var dY = handlePositions[i].y - y;\n var dist = Math.sqrt(dX * dX + dY * dY);\n\n if (dist < props.handleRadius) {\n return i;\n }\n }\n\n return null;\n}\n\nvar iroColorPickerOptionDefaults = {\n width: 300,\n height: 300,\n color: '#fff',\n colors: [],\n padding: 6,\n layoutDirection: 'vertical',\n borderColor: '#fff',\n borderWidth: 0,\n handleRadius: 8,\n handleSvg: null,\n handleProps: {\n x: 0,\n y: 0\n },\n wheelLightness: true,\n wheelAngle: 0,\n wheelDirection: 'anticlockwise',\n sliderSize: null,\n sliderMargin: 12,\n boxHeight: null\n};\n\nexport { IroColor, getBoxDimensions, getBoxGradients, getBoxHandlePosition, getBoxStyles, getBoxValueFromInput, getCurrentSliderValue, getHandleAtPoint, getSliderDimensions, getSliderGradient, getSliderGradientCoords, getSliderHandlePosition, getSliderStyles, getSliderValueFromInput, getSvgArcPath, getWheelDimensions, getWheelHandlePosition, getWheelValueFromInput, iroColorPickerOptionDefaults, resolveSvgUrl, sliderDefaultOptions, translateWheelAngle };\n//# sourceMappingURL=iro-core.es.js.map\n","import { Fragment, Component, h } from 'preact';\nimport { IroInputType } from './ComponentTypes';\n\nconst enum InputEventType {\n MouseDown = 'mousedown',\n MouseMove = 'mousemove',\n MouseUp = 'mouseup',\n TouchStart = 'touchstart',\n TouchMove = 'touchmove',\n TouchEnd = 'touchend'\n};\n\nconst SECONDARY_EVENTS = [InputEventType.MouseMove, InputEventType.TouchMove, InputEventType.MouseUp, InputEventType.TouchEnd];\n\ninterface Props {\n onInput: (x: number, y: number, type: IroInputType) => void;\n}\n\ninterface State {}\n\n// Base component class for iro UI components\n// This extends the Preact component class to allow them to react to mouse/touch input events by themselves\nexport class IroComponentWrapper extends Component {\n public uid: string\n public base: HTMLElement;\n\n constructor(props) {\n super(props);\n // Generate unique ID for the component\n // This can be used to generate unique IDs for gradients, etc\n this.uid = (Math.random() + 1).toString(36).substring(5);\n }\n\n render(props) {\n const eventHandler = this.handleEvent.bind(this);\n\n let rootProps = {\n onMouseDown: eventHandler,\n // https://github.com/jaames/iro.js/issues/126\n // https://github.com/preactjs/preact/issues/2113#issuecomment-553408767\n ontouchstart: eventHandler,\n // onTouchStart: eventHandler,\n };\n\n const isHorizontal = props.layoutDirection === 'horizontal';\n const margin = props.margin === null ? props.sliderMargin : props.margin;\n\n const rootStyles = {\n overflow: 'visible',\n display: isHorizontal ? 'inline-block' : 'block'\n };\n\n // first component shouldn't have any margin\n if (props.index > 0) {\n rootStyles[isHorizontal ? 'marginLeft' : 'marginTop'] = margin;\n }\n\n return (\n \n { props.children(this.uid, rootProps, rootStyles) }\n \n )\n }\n\n // More info on handleEvent:\n // https://medium.com/@WebReflection/dom-handleevent-a-cross-platform-standard-since-year-2000-5bf17287fd38\n // TL;DR this lets us have a single point of entry for multiple events, and we can avoid callback/binding hell\n handleEvent(e: MouseEvent & TouchEvent) {\n const inputHandler = this.props.onInput;\n // Get the screen position of the component\n const bounds = this.base.getBoundingClientRect();\n // Prefect default browser action\n e.preventDefault();\n // Detect if the event is a touch event by checking if it has the `touches` property\n // If it is a touch event, use the first touch input\n const point = e.touches ? e.changedTouches[0] : e;\n const x = point.clientX - bounds.left;\n const y = point.clientY - bounds.top;\n switch (e.type) {\n case InputEventType.MouseDown:\n case InputEventType.TouchStart:\n SECONDARY_EVENTS.forEach(event => {\n document.addEventListener(event, this, { passive: false });\n });\n inputHandler(x, y, IroInputType.Start);\n break;\n case InputEventType.MouseMove:\n case InputEventType.TouchMove:\n inputHandler(x, y, IroInputType.Move);\n break;\n case InputEventType.MouseUp:\n case InputEventType.TouchEnd:\n inputHandler(x, y, IroInputType.End);\n SECONDARY_EVENTS.forEach(event => {\n document.removeEventListener(event, this);\n });\n break;\n }\n }\n\n\n}\n","import { h } from 'preact';\nimport { resolveSvgUrl } from '@irojs/iro-core';\n\ninterface IroHandleProps {\n isActive: boolean;\n index: number;\n x: number;\n y: number;\n r: number;\n url: string;\n props: any;\n fill?: string;\n}\n\nexport function IroHandle(props: IroHandleProps) {\n const radius = props.r;\n const url = props.url;\n\n return (\n \n {url && (\n \n )}\n {!url && (\n \n )}\n {!url && (\n \n )}\n \n );\n}\n\nIroHandle.defaultProps = {\n fill: 'none',\n x: 0,\n y: 0,\n r: 8,\n url: null,\n props: {x: 0, y: 0}\n};","import { h } from 'preact';\nimport {\n IroColor,\n SliderShape,\n SliderType,\n sliderDefaultOptions,\n resolveSvgUrl,\n getSliderDimensions, \n getSliderValueFromInput, \n getSliderHandlePosition, \n getSliderGradient,\n getSliderGradientCoords,\n} from '@irojs/iro-core';\n\nimport { IroComponentWrapper } from './ComponentWrapper';\nimport { IroComponentProps, IroInputType } from './ComponentTypes';\nimport { IroHandle } from './Handle';\n\ninterface IroSliderProps extends IroComponentProps {\n sliderType: SliderType;\n sliderShape: SliderShape;\n minTemperature: number;\n maxTemperature: number;\n};\n\nexport function IroSlider(props: IroSliderProps) {\n const activeIndex = props.activeIndex;\n const activeColor = (activeIndex !== undefined && activeIndex < props.colors.length) ? props.colors[activeIndex] : props.color;\n const { width, height, radius } = getSliderDimensions(props);\n const handlePos = getSliderHandlePosition(props, activeColor);\n const gradient = getSliderGradient(props, activeColor);\n const isAlpha = props.sliderType === 'alpha';\n\n function handleInput(x: number, y: number, type: IroInputType) {\n const value = getSliderValueFromInput(props, x, y);\n props.parent.inputActive = true;\n activeColor[props.sliderType] = value;\n props.onInput(type, props.id);\n }\n\n return (\n \n {(uid, rootProps, rootStyles) => (\n \n \n \n { gradient.map(([ offset, color ]) => (\n \n ))}\n \n { isAlpha && (\n \n \n \n \n \n )}\n { isAlpha && (\n \n \n \n \n )}\n \n \n \n \n )}\n \n );\n}\n\nIroSlider.defaultProps = {\n ...sliderDefaultOptions\n};","import { h } from 'preact';\nimport {\n IroColor,\n resolveSvgUrl,\n getBoxDimensions,\n getBoxGradients,\n getBoxValueFromInput,\n getBoxHandlePosition,\n getHandleAtPoint\n} from '@irojs/iro-core';\n\nimport { IroComponentWrapper } from './ComponentWrapper';\nimport { IroComponentProps, IroInputType } from './ComponentTypes';\nimport { IroHandle } from './Handle';\n\ninterface IroBoxProps extends IroComponentProps {\n colors: IroColor[];\n}\n\nexport function IroBox(props: IroBoxProps) {\n const { width, height, radius } = getBoxDimensions(props);\n const { colors } = props;\n\n const colorPicker = props.parent;\n const activeIndex = props.activeIndex;\n const activeColor = (activeIndex !== undefined && activeIndex < props.colors.length) ? props.colors[activeIndex] : props.color;\n const gradients = getBoxGradients(props, activeColor);\n const handlePositions = colors.map(color => getBoxHandlePosition(props, color));\n\n function handleInput(x: number, y: number, inputType: IroInputType) {\n if (inputType === IroInputType.Start) {\n // getHandleAtPoint() returns the index for the handle if the point 'hits' it, or null otherwise\n const activeHandle = getHandleAtPoint(props, x, y, handlePositions);\n // If the input hit a handle, set it as the active handle, but don't update the color\n if (activeHandle !== null) {\n colorPicker.setActiveColor(activeHandle);\n } \n // If the input didn't hit a handle, set the currently active handle to that position\n else {\n colorPicker.inputActive = true;\n activeColor.hsv = getBoxValueFromInput(props, x, y);\n props.onInput(inputType, props.id);\n }\n }\n // move is fired when the user has started dragging\n else if (inputType === IroInputType.Move) {\n colorPicker.inputActive = true;\n activeColor.hsv = getBoxValueFromInput(props, x, y);\n }\n // let the color picker fire input:start, input:move or input:end events\n props.onInput(inputType, props.id);\n }\n\n return (\n \n {(uid, rootProps, rootStyles) => (\n \n \n \n { gradients[0].map(([ offset, color ]) => (\n \n ))}\n \n \n { gradients[1].map(([ offset, color ]) => (\n \n ))}\n \n \n \n \n \n \n \n { colors.filter(color => color !== activeColor).map(color => (\n \n ))}\n \n \n )}\n \n );\n}\n","import { h } from 'preact';\nimport { \n IroColor,\n resolveSvgUrl,\n getSvgArcPath,\n translateWheelAngle, \n getWheelDimensions,\n getWheelHandlePosition,\n getWheelValueFromInput,\n getHandleAtPoint\n} from '@irojs/iro-core';\n\nimport { IroComponentWrapper } from './ComponentWrapper';\nimport { IroComponentProps, IroInputType } from './ComponentTypes';\nimport { IroHandle } from './Handle';\n\nconst HUE_STEPS = Array.apply(null, {length: 360}).map((_, index) => index);\n\ninterface IroWheelProps extends IroComponentProps {\n colors: IroColor[];\n}\n\nexport function IroWheel(props: IroWheelProps) {\n\n const { width, radius, cx, cy } = getWheelDimensions(props);\n const { colors, borderWidth } = props;\n\n const colorPicker = props.parent;\n const activeColor = props.color;\n const hsv = activeColor.hsv;\n const handlePositions = colors.map(color => getWheelHandlePosition(props, color));\n\n function handleInput(x: number, y: number, inputType: IroInputType) {\n if (inputType === IroInputType.Start) {\n // getHandleAtPoint() returns the index for the handle if the point 'hits' it, or null otherwise\n const activeHandle = getHandleAtPoint(props, x, y, handlePositions);\n // If the input hit a handle, set it as the active handle, but don't update the color\n if (activeHandle !== null) {\n colorPicker.setActiveColor(activeHandle);\n } \n // If the input didn't hit a handle, set the currently active handle to that position\n else {\n colorPicker.inputActive = true;\n activeColor.hsv = getWheelValueFromInput(props, x, y);\n props.onInput(inputType, props.id);\n }\n }\n // move is fired when the user has started dragging\n else if (inputType === IroInputType.Move) {\n colorPicker.inputActive = true;\n activeColor.hsv = getWheelValueFromInput(props, x, y);\n }\n // let the color picker fire input:start, input:move or input:end events\n props.onInput(inputType, props.id);\n }\n\n return (\n \n {(uid, rootProps, rootStyles) => (\n \n \n \n \n \n \n \n \n { HUE_STEPS.map(angle => (\n \n ))}\n \n \n { props.wheelLightness && (\n \n )}\n \n { colors.filter(color => color !== activeColor).map(color => (\n \n ))}\n \n \n )}\n \n );\n}","import { h, render, ComponentType, Attributes } from 'preact';\n\n// Turn a component into a widget\n// This returns a factory function that can be used to create an instance of the widget component\n// The first function param is a DOM element or CSS selector for the element to mount to,\n// The second param is for config options which are passed to the component as props\n// This factory function can also delay mounting the element into the DOM until the page is ready\n\nexport interface Widget {\n base?: Element | Text;\n onMount: (root: Element) => void;\n}\n\nexport function createWidget(WidgetComponent: ComponentType) {\n\n const widgetFactory = function (parent: string | HTMLElement, props: Partial

): C {\n let widget: C; // will become an instance of the widget component class\n const widgetRoot = document.createElement('div');\n\n // Render widget into a temp DOM node\n render(\n h(WidgetComponent, {\n ref: ref => widget = ref,\n ...props,\n } as Attributes),\n widgetRoot\n );\n \n function mountWidget() {\n const container = parent instanceof Element ? parent : document.querySelector(parent);\n container.appendChild(widget.base);\n widget.onMount(container);\n };\n // Mount it into the DOM when the page document is ready\n if (document.readyState !== 'loading') {\n mountWidget();\n } else {\n document.addEventListener('DOMContentLoaded', mountWidget);\n }\n\n return widget;\n }\n\n // Allow the widget factory to inherit component prototype + static class methods\n // This makes it easier for plugin authors to extend the base widget component\n widgetFactory.prototype = WidgetComponent.prototype;\n Object.assign(widgetFactory, WidgetComponent);\n // Add reference to base component too\n widgetFactory.__component = WidgetComponent; \n\n return widgetFactory;\n\n}","import { h, Component } from 'preact';\nimport { IroColor, IroColorValue, IroColorPickerOptions, iroColorPickerOptionDefaults } from '@irojs/iro-core';\n\nimport { IroInputType } from './ComponentTypes';\nimport { IroWheel } from './Wheel';\nimport { IroSlider } from './Slider';\nimport { createWidget } from './createWidget';\n\ninterface ColorPickerEvents {\n [key: string]: Function[];\n}\n\ninterface ColorDeferredEvents {\n [key: string]: Array;\n}\n\ninterface ColorPickerEventGuards {\n [key: string]: boolean;\n}\n\ninterface ColorPickerLayoutDefinition {\n component: any;\n options?: any;\n}\n\ntype ColorPickerLayoutShorthand = 'default';\n\nexport interface ColorPickerProps extends IroColorPickerOptions {\n display?: string;\n id?: null;\n layout?: ColorPickerLayoutDefinition[] | ColorPickerLayoutShorthand;\n colors?: IroColorValue[];\n transparency?: boolean;\n margin: number;\n}\n\nexport interface ColorPickerState extends ColorPickerProps {\n layout: ColorPickerLayoutDefinition[] | ColorPickerLayoutShorthand;\n color: IroColor;\n colors: IroColor[];\n}\n\nexport class IroColorPicker extends Component {\n\n public static defaultProps: ColorPickerProps = {\n ...iroColorPickerOptionDefaults,\n colors: [],\n display: 'block',\n id: null,\n layout: 'default',\n margin: null\n }\n\n public el: HTMLElement;\n public id: string;\n public colors: IroColor[] = [];\n public color: IroColor;\n public inputActive: boolean = false;\n\n private events: ColorPickerEvents = {};\n private activeEvents: ColorPickerEventGuards = {};\n private deferredEvents: ColorDeferredEvents = {};\n\n constructor(props: ColorPickerProps) {\n super(props);\n this.id = props.id;\n const colors = props.colors.length > 0 ? props.colors : [props.color];\n colors.forEach(colorValue => this.addColor(colorValue));\n this.setActiveColor(0);\n // Pass all the props into the component's state,\n // Except we want to add the color object and make sure that refs aren't passed down to children\n this.state = {\n ...props,\n color: this.color,\n colors: this.colors,\n layout: props.layout\n };\n }\n\n // Plubic multicolor API\n\n /**\n * @desc Add a color to the color picker\n * @param color new color to add\n * @param index optional color index\n */\n public addColor(color: IroColorValue, index: number = this.colors.length) {\n // Create a new iro.Color\n // Also bind it to onColorChange, so whenever the color changes it updates the color picker\n const newColor = new IroColor(color, this.onColorChange.bind(this));\n // Insert color @ the given index\n this.colors.splice(index, 0, newColor);\n // Reindex colors\n this.colors.forEach((color, index) => color.index = index);\n // Update picker state if necessary\n if (this.state) {\n this.setState({ colors: this.colors });\n }\n // Fire color init event\n this.deferredEmit('color:init', newColor);\n }\n\n /**\n * @desc Remove a color from the color picker\n * @param index color index\n */\n public removeColor(index: number) {\n const color = this.colors.splice(index, 1)[0];\n // Destroy the color object -- this unbinds it from the color picker\n color.unbind();\n // Reindex colors\n this.colors.forEach((color, index) => color.index = index);\n // Update picker state if necessary\n if (this.state) {\n this.setState({ colors: this.colors });\n }\n // If the active color was removed, default active color to 0\n if (color.index === this.color.index) {\n this.setActiveColor(0);\n }\n // Fire color remove event\n this.emit('color:remove', color);\n }\n\n /**\n * @desc Set the currently active color\n * @param index color index\n */\n public setActiveColor(index: number) {\n this.color = this.colors[index];\n if (this.state) {\n this.setState({ color: this.color });\n }\n // Fire color switch event\n this.emit('color:setActive', this.color);\n }\n\n /**\n * @desc Replace all of the current colorPicker colors\n * @param newColorValues list of new colors to add\n */\n public setColors(newColorValues: IroColorValue[]) {\n // Unbind color events\n this.colors.forEach(color => color.unbind());\n // Destroy old colors\n this.colors = [];\n // Add new colors\n newColorValues.forEach(colorValue => this.addColor(colorValue));\n // Reset active color\n this.setActiveColor(0);\n this.emit('color:setAll', this.colors);\n }\n\n // Public ColorPicker events API\n\n /**\n * @desc Set a callback function for an event\n * @param eventList event(s) to listen to\n * @param callback - Function called when the event is fired\n */\n public on(eventList: string[] | string, callback: Function) {\n const events = this.events;\n // eventList can be an eventType string or an array of eventType strings\n (!Array.isArray(eventList) ? [eventList] : eventList).forEach(eventType => {\n // Add event callback\n (events[eventType] || (events[eventType] = [])).push(callback);\n // Call deferred events\n // These are events that can be stored until a listener for them is added\n if (this.deferredEvents[eventType]) {\n // Deffered events store an array of arguments from when the event was called\n this.deferredEvents[eventType].forEach(args => {\n callback.apply(null, args); \n });\n // Clear deferred events\n this.deferredEvents[eventType] = [];\n }\n });\n }\n\n /**\n * @desc Remove a callback function for an event added with on()\n * @param eventList - event(s) to listen to\n * @param callback - original callback function to remove\n */\n public off(eventList: string[] | string, callback: Function) {\n (!Array.isArray(eventList) ? [eventList] : eventList).forEach(eventType => {\n const callbackList = this.events[eventType];\n // this.emitHook('event:off', eventType, callback);\n if (callbackList) callbackList.splice(callbackList.indexOf(callback), 1);\n });\n }\n\n /**\n * @desc Emit an event\n * @param eventType event to emit\n */\n public emit(eventType: string, ...args: any) {\n const activeEvents = this.activeEvents;\n const isEventActive = activeEvents.hasOwnProperty(eventType) ? activeEvents[eventType] : false;\n // Prevent event callbacks from firing if the event is already active\n // This stops infinite loops if something in an event callback causes the same event to be fired again\n // (e.g. setting the color inside a color:change callback)\n if (!isEventActive) {\n activeEvents[eventType] = true;\n const callbackList = this.events[eventType] || [];\n callbackList.forEach(fn => fn.apply(this, args));\n activeEvents[eventType] = false;\n }\n }\n\n /**\n * @desc Emit an event now, or save it for when the relevent event listener is added\n * @param eventType - The name of the event to emit\n */\n public deferredEmit(eventType: string, ...args: any) {\n const deferredEvents = this.deferredEvents;\n this.emit(eventType, ...args);\n (deferredEvents[eventType] || (deferredEvents[eventType] = [])).push(args);\n }\n\n // Public utility methods\n\n public setOptions(newOptions: Partial) {\n this.setState({ ...this.state, ...newOptions });\n }\n\n /**\n * @desc Resize the color picker\n * @param width - new width\n */\n public resize(width: number) {\n this.setOptions({ width })\n }\n\n /**\n * @desc Reset the color picker to the initial color provided in the color picker options\n */\n public reset() {\n this.colors.forEach(color => color.reset());\n this.setState({ colors: this.colors });\n }\n\n /**\n * @desc Called by the createWidget wrapper when the element is mounted into the page\n * @param container - the container element for this ColorPicker instance\n */\n public onMount(container: HTMLElement) {\n this.el = container;\n this.deferredEmit('mount', this);\n }\n\n // Internal methods\n\n /**\n * @desc React to a color update\n * @param color - current color\n * @param changes - shows which h,s,v,a color channels changed\n */\n private onColorChange(color: IroColor, changes: any) {\n this.setState({ color: this.color });\n if (this.inputActive) {\n this.inputActive = false;\n this.emit('input:change', color, changes);\n } \n this.emit('color:change', color, changes);\n }\n\n /**\n * @desc Handle input from a UI control element\n * @param type - event type\n */\n private emitInputEvent(type: IroInputType, originId: string) {\n if (type === IroInputType.Start) {\n this.emit('input:start', this.color, originId);\n }\n else if (type === IroInputType.Move) {\n this.emit('input:move', this.color, originId);\n }\n else if (type === IroInputType.End) {\n this.emit('input:end', this.color, originId);\n }\n }\n\n public render(props, state) {\n let layout = state.layout;\n\n // use layout shorthands\n if (!Array.isArray(layout)) {\n switch (layout) {\n // TODO: implement some?\n default:\n layout = [\n { component: IroWheel },\n { component: IroSlider },\n ];\n }\n // add transparency slider to the layout\n if (state.transparency) {\n layout.push({\n component: IroSlider,\n options: {\n sliderType: 'alpha'\n }\n })\n }\n }\n\n return (\n

\n { layout.map(({component: UiComponent, options: options }, componentIndex: number) => (\n \n ))}\n
\n )\n }\n}\n\nexport const IroColorPickerWidget = createWidget(IroColorPicker);\n","import { h as _h } from 'preact';\nimport { IroColor } from '@irojs/iro-core';\nimport { IroComponentWrapper } from './ComponentWrapper';\nimport { IroHandle } from './Handle';\nimport { IroSlider } from './Slider';\nimport { IroBox } from './Box';\nimport { IroWheel } from './Wheel';\nimport { IroColorPicker, IroColorPickerWidget } from './ColorPicker';\n\nnamespace iro {\n export const version = VERSION; // replaced by @rollup/plugin-replace; see rollup.config.js\n\n export type Color = IroColor;\n export const Color = IroColor;\n export type ColorPicker = IroColorPicker;\n export const ColorPicker = IroColorPickerWidget;\n\n export namespace ui {\n export const h = _h;\n export const ComponentBase = IroComponentWrapper;\n export const Handle = IroHandle;\n export const Slider = IroSlider;\n export const Wheel = IroWheel;\n export const Box = IroBox;\n }\n}\n\nexport default iro;\n"],"names":["arguments","const","super","let","Fragment","this","Component","render","_h"],"mappings":"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"} \ No newline at end of file diff --git a/dist/iro.min.js b/dist/iro.min.js index 135e630..cc13afc 100644 --- a/dist/iro.min.js +++ b/dist/iro.min.js @@ -1,7 +1,7 @@ /*! - * iro.js v5.2.3 + * iro.js v5.3.0 * 2016-2020 James Daniel * Licensed under MPL 2.0 * github.com/jaames/iro.js */ -!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(n=n||self).iro=t()}(this,function(){"use strict";var m,s,t,i,o,k={},M=[],r=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i;function j(n,t){for(var i in t)n[i]=t[i];return n}function y(n){var t=n.parentNode;t&&t.removeChild(n)}function d(n,t,i){var r,e,u,o,l=arguments;if(t=j({},t),3=r/i?u=t:e=t}return t},V.hsv.get=function(){var n=this.$;return{h:n.h,s:n.s,v:n.v}},V.hsv.set=function(n){var t=this.$;if(n=Object.assign({},t,n),this.onChange){var i={h:!1,v:!1,s:!1,a:!1};for(var r in t)i[r]=n[r]!=t[r];this.$=n,(i.h||i.s||i.v||i.a)&&this.onChange(this,i)}else this.$=n},V.hsva.get=function(){return Object.assign({},this.$)},V.hsva.set=function(n){this.hsv=n},V.hue.get=function(){return this.$.h},V.hue.set=function(n){this.hsv={h:n}},V.saturation.get=function(){return this.$.s},V.saturation.set=function(n){this.hsv={s:n}},V.value.get=function(){return this.$.v},V.value.set=function(n){this.hsv={v:n}},V.alpha.get=function(){return this.$.a},V.alpha.set=function(n){this.hsv=Object.assign({},this.hsv,{a:n})},V.kelvin.get=function(){return Q.rgbToKelvin(this.rgb)},V.kelvin.set=function(n){this.rgb=Q.kelvinToRgb(n)},V.red.get=function(){return this.rgb.r},V.red.set=function(n){this.rgb=Object.assign({},this.rgb,{r:n})},V.green.get=function(){return this.rgb.g},V.green.set=function(n){this.rgb=Object.assign({},this.rgb,{g:n})},V.blue.get=function(){return this.rgb.b},V.blue.set=function(n){this.rgb=Object.assign({},this.rgb,{b:n})},V.rgb.get=function(){var n=Q.hsvToRgb(this.$),t=n.r,i=n.g,r=n.b;return{r:L(t),g:L(i),b:L(r)}},V.rgb.set=function(n){this.hsv=Object.assign({},Q.rgbToHsv(n),{a:void 0===n.a?1:n.a})},V.rgba.get=function(){return Object.assign({},this.rgb,{a:this.alpha})},V.rgba.set=function(n){this.rgb=n},V.hsl.get=function(){var n=Q.hsvToHsl(this.$),t=n.h,i=n.s,r=n.l;return{h:L(t),s:L(i),l:L(r)}},V.hsl.set=function(n){this.hsv=Object.assign({},Q.hslToHsv(n),{a:void 0===n.a?1:n.a})},V.hsla.get=function(){return Object.assign({},this.hsl,{a:this.alpha})},V.hsla.set=function(n){this.hsl=n},V.rgbString.get=function(){var n=this.rgb;return"rgb("+n.r+", "+n.g+", "+n.b+")"},V.rgbString.set=function(n){var t,i,r,e,u=1;if((t=b.exec(n))?(i=q(t[1],255),r=q(t[2],255),e=q(t[3],255)):(t=p.exec(n))&&(i=q(t[1],255),r=q(t[2],255),e=q(t[3],255),u=q(t[4],1)),!t)throw new Error("Invalid rgb string");this.rgb={r:i,g:r,b:e,a:u}},V.rgbaString.get=function(){var n=this.rgba;return"rgba("+n.r+", "+n.g+", "+n.b+", "+n.a+")"},V.rgbaString.set=function(n){this.rgbString=n},V.hexString.get=function(){var n=this.rgb;return"#"+K(n.r)+K(n.g)+K(n.b)},V.hexString.set=function(n){var t,i,r,e,u=255;if((t=W.exec(n))?(i=17*J(t[1]),r=17*J(t[2]),e=17*J(t[3])):(t=C.exec(n))?(i=17*J(t[1]),r=17*J(t[2]),e=17*J(t[3]),u=17*J(t[4])):(t=D.exec(n))?(i=J(t[1]),r=J(t[2]),e=J(t[3])):(t=F.exec(n))&&(i=J(t[1]),r=J(t[2]),e=J(t[3]),u=J(t[4])),!t)throw new Error("Invalid hex string");this.rgb={r:i,g:r,b:e,a:u/255}},V.hex8String.get=function(){var n=this.rgba;return"#"+K(n.r)+K(n.g)+K(n.b)+K(B(255*n.a))},V.hex8String.set=function(n){this.hexString=n},V.hslString.get=function(){var n=this.hsl;return"hsl("+n.h+", "+n.s+"%, "+n.l+"%)"},V.hslString.set=function(n){var t,i,r,e,u=1;if((t=P.exec(n))?(i=q(t[1],360),r=q(t[2],100),e=q(t[3],100)):(t=z.exec(n))&&(i=q(t[1],360),r=q(t[2],100),e=q(t[3],100),u=q(t[4],1)),!t)throw new Error("Invalid hsl string");this.hsl={h:i,s:r,l:e,a:u}},V.hslaString.get=function(){var n=this.hsla;return"hsl("+n.h+", "+n.s+"%, "+n.l+"%, "+n.a+")"},V.hslaString.set=function(n){this.hslString=n},Object.defineProperties(Q.prototype,V);var X;function Y(n){var t=n.width,i=n.sliderSize,r=n.borderWidth,e=n.handleRadius,u=n.padding,o=n.sliderShape,l="horizontal"===n.layoutDirection;return i=i||2*u+2*e+2*r,"circle"===o?{handleStart:n.padding+n.handleRadius,handleRange:t-2*u-2*e-2*r,width:t,height:t,cx:t/2,cy:t/2,radius:t/2-r/2}:{handleStart:i/2,handleRange:t-i,radius:i/2,x:0,y:0,width:l?i:t,height:l?t:i}}function Z(n,t){var i=Y(n),r=i.width,e=i.height,u=i.handleRange,o=i.handleStart,l="horizontal"===n.layoutDirection,s=l?r/2:e/2,c=o+function(n,t){var i=t.hsva,r=t.rgb;switch(n.sliderType){case"red":return r.r/2.55;case"green":return r.g/2.55;case"blue":return r.b/2.55;case"alpha":return 100*i.a;case"kelvin":var e=n.minTemperature,u=n.maxTemperature-e,o=(t.kelvin-e)/u*100;return Math.max(0,Math.min(o,100));case"hue":return i.h/=3.6;case"saturation":return i.s;case"value":default:return i.v}}(n,t)/100*u;return l&&(c=-1*c+u+2*o),{x:l?s:c,y:l?c:s}}function nn(n){var t=n.width/2;return{width:n.width,radius:t-n.borderWidth,cx:t,cy:t}}function tn(n,t,i){var r=n.wheelAngle,e=n.wheelDirection;return((t=!i&&"clockwise"===e||i&&"anticlockwise"===e?(i?180:360)-(r-t):r+t)%360+360)%360}function rn(n,t,i){var r=nn(n),e=r.cx,u=r.cy,o=n.width/2-n.padding-n.handleRadius-n.borderWidth;t=e-t,i=u-i;var l=tn(n,Math.atan2(-i,-t)*(180/Math.PI)),s=Math.min(Math.sqrt(t*t+i*i),o);return{h:Math.round(l),s:Math.round(100/o*s)}}function en(n){var t=n.width;return{width:t,height:t,radius:n.padding+n.handleRadius}}function un(n,t,i){var r=en(n),e=r.width,u=r.height,o=r.radius,l=(t-o)/(e-2*o)*100,s=(i-o)/(u-2*o)*100;return{s:Math.max(0,Math.min(l,100)),v:Math.max(0,Math.min(100-s,100))}}function on(n){X=X||document.getElementsByTagName("base");var t=window.navigator.userAgent,i=/^((?!chrome|android).)*safari/i.test(t),r=/iPhone|iPod|iPad/i.test(t),e=window.location;return(i||r)&&0=r/i?u=t:e=t}return t},V.hsv.get=function(){var n=this.$;return{h:n.h,s:n.s,v:n.v}},V.hsv.set=function(n){var t=this.$;if(n=Object.assign({},t,n),this.onChange){var i={h:!1,v:!1,s:!1,a:!1};for(var r in t)i[r]=n[r]!=t[r];this.$=n,(i.h||i.s||i.v||i.a)&&this.onChange(this,i)}else this.$=n},V.hsva.get=function(){return Object.assign({},this.$)},V.hsva.set=function(n){this.hsv=n},V.hue.get=function(){return this.$.h},V.hue.set=function(n){this.hsv={h:n}},V.saturation.get=function(){return this.$.s},V.saturation.set=function(n){this.hsv={s:n}},V.value.get=function(){return this.$.v},V.value.set=function(n){this.hsv={v:n}},V.alpha.get=function(){return this.$.a},V.alpha.set=function(n){this.hsv=Object.assign({},this.hsv,{a:n})},V.kelvin.get=function(){return Q.rgbToKelvin(this.rgb)},V.kelvin.set=function(n){this.rgb=Q.kelvinToRgb(n)},V.red.get=function(){return this.rgb.r},V.red.set=function(n){this.rgb=Object.assign({},this.rgb,{r:n})},V.green.get=function(){return this.rgb.g},V.green.set=function(n){this.rgb=Object.assign({},this.rgb,{g:n})},V.blue.get=function(){return this.rgb.b},V.blue.set=function(n){this.rgb=Object.assign({},this.rgb,{b:n})},V.rgb.get=function(){var n=Q.hsvToRgb(this.$),t=n.r,i=n.g,r=n.b;return{r:G(t),g:G(i),b:G(r)}},V.rgb.set=function(n){this.hsv=Object.assign({},Q.rgbToHsv(n),{a:void 0===n.a?1:n.a})},V.rgba.get=function(){return Object.assign({},this.rgb,{a:this.alpha})},V.rgba.set=function(n){this.rgb=n},V.hsl.get=function(){var n=Q.hsvToHsl(this.$),t=n.h,i=n.s,r=n.l;return{h:G(t),s:G(i),l:G(r)}},V.hsl.set=function(n){this.hsv=Object.assign({},Q.hslToHsv(n),{a:void 0===n.a?1:n.a})},V.hsla.get=function(){return Object.assign({},this.hsl,{a:this.alpha})},V.hsla.set=function(n){this.hsl=n},V.rgbString.get=function(){var n=this.rgb;return"rgb("+n.r+", "+n.g+", "+n.b+")"},V.rgbString.set=function(n){var t,i,r,e,u=1;if((t=b.exec(n))?(i=q(t[1],255),r=q(t[2],255),e=q(t[3],255)):(t=p.exec(n))&&(i=q(t[1],255),r=q(t[2],255),e=q(t[3],255),u=q(t[4],1)),!t)throw new Error("Invalid rgb string");this.rgb={r:i,g:r,b:e,a:u}},V.rgbaString.get=function(){var n=this.rgba;return"rgba("+n.r+", "+n.g+", "+n.b+", "+n.a+")"},V.rgbaString.set=function(n){this.rgbString=n},V.hexString.get=function(){var n=this.rgb;return"#"+K(n.r)+K(n.g)+K(n.b)},V.hexString.set=function(n){var t,i,r,e,u=255;if((t=W.exec(n))?(i=17*J(t[1]),r=17*J(t[2]),e=17*J(t[3])):(t=B.exec(n))?(i=17*J(t[1]),r=17*J(t[2]),e=17*J(t[3]),u=17*J(t[4])):(t=C.exec(n))?(i=J(t[1]),r=J(t[2]),e=J(t[3])):(t=D.exec(n))&&(i=J(t[1]),r=J(t[2]),e=J(t[3]),u=J(t[4])),!t)throw new Error("Invalid hex string");this.rgb={r:i,g:r,b:e,a:u/255}},V.hex8String.get=function(){var n=this.rgba;return"#"+K(n.r)+K(n.g)+K(n.b)+K(L(255*n.a))},V.hex8String.set=function(n){this.hexString=n},V.hslString.get=function(){var n=this.hsl;return"hsl("+n.h+", "+n.s+"%, "+n.l+"%)"},V.hslString.set=function(n){var t,i,r,e,u=1;if((t=P.exec(n))?(i=q(t[1],360),r=q(t[2],100),e=q(t[3],100)):(t=z.exec(n))&&(i=q(t[1],360),r=q(t[2],100),e=q(t[3],100),u=q(t[4],1)),!t)throw new Error("Invalid hsl string");this.hsl={h:i,s:r,l:e,a:u}},V.hslaString.get=function(){var n=this.hsla;return"hsl("+n.h+", "+n.s+"%, "+n.l+"%, "+n.a+")"},V.hslaString.set=function(n){this.hslString=n},Object.defineProperties(Q.prototype,V);var X;function Y(n){var t=n.width,i=n.sliderSize,r=n.borderWidth,e=n.handleRadius,u=n.padding,o=n.sliderShape,l="horizontal"===n.layoutDirection;return i=i||2*u+2*e+2*r,"circle"===o?{handleStart:n.padding+n.handleRadius,handleRange:t-2*u-2*e-2*r,width:t,height:t,cx:t/2,cy:t/2,radius:t/2-r/2}:{handleStart:i/2,handleRange:t-i,radius:i/2,x:0,y:0,width:l?i:t,height:l?t:i}}function Z(n,t){var i=Y(n),r=i.width,e=i.height,u=i.handleRange,o=i.handleStart,l="horizontal"===n.layoutDirection,s=l?r/2:e/2,c=o+function(n,t){var i=t.hsva,r=t.rgb;switch(n.sliderType){case"red":return r.r/2.55;case"green":return r.g/2.55;case"blue":return r.b/2.55;case"alpha":return 100*i.a;case"kelvin":var e=n.minTemperature,u=n.maxTemperature-e,o=(t.kelvin-e)/u*100;return Math.max(0,Math.min(o,100));case"hue":return i.h/=3.6;case"saturation":return i.s;case"value":default:return i.v}}(n,t)/100*u;return l&&(c=-1*c+u+2*o),{x:l?s:c,y:l?c:s}}function nn(n){var t=n.width/2;return{width:n.width,radius:t-n.borderWidth,cx:t,cy:t}}function tn(n,t,i){var r=n.wheelAngle,e=n.wheelDirection;return((t=!i&&"clockwise"===e||i&&"anticlockwise"===e?(i?180:360)-(r-t):r+t)%360+360)%360}function rn(n,t,i){var r=nn(n),e=r.cx,u=r.cy,o=n.width/2-n.padding-n.handleRadius-n.borderWidth;t=e-t,i=u-i;var l=tn(n,Math.atan2(-i,-t)*(180/Math.PI)),s=Math.min(Math.sqrt(t*t+i*i),o);return{h:Math.round(l),s:Math.round(100/o*s)}}function en(n){var t=n.width;return{width:t,height:t,radius:n.padding+n.handleRadius}}function un(n,t,i){var r=en(n),e=r.width,u=r.height,o=r.radius,l=(t-o)/(e-2*o)*100,s=(i-o)/(u-2*o)*100;return{s:Math.max(0,Math.min(l,100)),v:Math.max(0,Math.min(100-s,100))}}function on(n){X=X||document.getElementsByTagName("base");var t=window.navigator.userAgent,i=/^((?!chrome|android).)*safari/i.test(t),r=/iPhone|iPod|iPad/i.test(t),e=window.location;return(i||r)&&0 -