{"version":3,"file":"color.mjs","sources":["../../../../../../../packages/components/captcha/src/hooks/color.ts"],"sourcesContent":["export function isDefined<T = unknown>(\n  value: T | undefined | null\n): value is Exclude<T, undefined | null> {\n  return value !== undefined && value !== null\n}\n\ninterface RGB extends Record<any, any> {\n  r: number\n  g: number\n  b: number\n  a?: number\n}\n\nexport interface RGBColor extends RGB {\n  a?: 1\n  format?: 'name' | 'rgb'\n}\n\nexport interface RGBAColor extends RGB {\n  a: number\n  format?: 'name' | 'rgba'\n}\n\nexport interface HEX3Color extends RGB {\n  a?: 1\n  format?: 'name' | 'hex3'\n}\nexport interface HEX4Color extends RGB {\n  a: number\n  format?: 'name' | 'hex4'\n}\nexport interface HEX6Color extends RGB {\n  a?: 1\n  format?: 'name' | 'hex6'\n}\nexport interface HEX8Color extends RGB {\n  a: number\n  format?: 'name' | 'hex8'\n}\n\ninterface HSL extends Record<any, any> {\n  h: number\n  s: number\n  l: number\n  a?: number\n}\n\nexport interface HSLColor extends HSL {\n  a?: 1\n  format?: 'name' | 'hsl'\n}\n\nexport interface HSLAColor extends HSL {\n  a: number\n  format?: 'name' | 'hsla'\n}\n\ninterface HSV extends Record<any, any> {\n  h: number\n  s: number\n  v: number\n  a?: number\n}\n\nexport interface HSVColor extends HSV {\n  a?: 1\n  format?: 'name' | 'hsv'\n}\n\nexport interface HSVAColor extends HSV {\n  a: number\n  format?: 'name' | 'hsva'\n}\n\nexport type Color =\n  | string\n  | RGBColor\n  | RGBAColor\n  | HSLColor\n  | HSLAColor\n  | HSVColor\n  | HSVAColor\n  | HEX3Color\n  | HEX4Color\n  | HEX6Color\n  | HEX8Color\n\nexport type ObjectColor = Exclude<Color, string>\n\nexport type ColorType = 'hex' | 'rgb' | 'hsv' | 'hsl'\n\n/**\n * 将原始的 h、s、l 值标准化为 0 ~ 1 的值\n *\n * @param h 0 ~ 360\n * @param s 0 ~ 1，0% ~ 100%\n * @param l 0 ~ 1，0% ~ 100%\n *\n * @returns 标准化后的 HSL 对象\n */\nexport function normalizeHsl(\n  h: number | string,\n  s: number | string,\n  l: number | string\n) {\n  return {\n    h: boundRange(h, 0, 360) / 360,\n    s: boundRange(isPercentage(s) ? parsePercentage(s) : s, 0, 1),\n    l: boundRange(isPercentage(l) ? parsePercentage(l) : l, 0, 1),\n  }\n}\n\n/**\n * 将原始的 r、g、b 值标准化为 0 ~ 1 的值\n *\n * @param r 0 ~ 255\n * @param g 0 ~ 255\n * @param b 0 ~ 255\n *\n * @returns 标准化后 RGB 对象\n */\nexport function normalizeRgb(\n  r: number | string,\n  g: number | string,\n  b: number | string\n) {\n  return {\n    r: boundRange(r, 0, 255) / 255,\n    g: boundRange(g, 0, 255) / 255,\n    b: boundRange(b, 0, 255) / 255,\n  }\n}\n\n/**\n * 将原始透明度值标准化为 0 ~ 1 的值\n *\n * @param a 0 ~ 1，0% ~ 100%\n *\n * @returns 标准化后的透明度\n */\nexport function normalizeAlpha(a: number | string) {\n  return boundRange(isPercentage(a) ? parsePercentage(a) : a, 0, 1)\n}\n\n/**\n * 将 HSL 颜色转换为 RGB 颜色\n *\n * @param h 0 ~ 360\n * @param s 0 ~ 1，0% ~ 100%\n * @param l 0 ~ 1，0% ~ 100%\n *\n * @returns 转换后的 RGB 颜色\n */\nexport function hslToRgb(\n  h: number | string,\n  s: number | string,\n  l: number | string\n): RGBColor {\n  let r, g, b\n  ;({ h, s, l } = normalizeHsl(h, s, l))\n\n  if (s === 0) {\n    r = g = b = l\n  } else {\n    const q = l < 0.5 ? 1 * (1 + s) : l + s - l * s\n    const p = 2 * l - q\n\n    r = hueToRgb(p, q, h + 1 / 3)\n    g = hueToRgb(p, q, h)\n    b = hueToRgb(p, q, h - 1 / 3)\n  }\n\n  r *= 255\n  g *= 255\n  b *= 255\n\n  return { r, g, b, toString: toRgbString }\n}\n\n/**\n * 将 HSL 颜色转换为 HSV 颜色\n *\n * @param h 0 ~ 360\n * @param s 0 ~ 1，0% ~ 100%\n * @param l 0 ~ 1，0% ~ 100%\n *\n * @returns 转换后的 HSV 颜色\n */\nexport function hslToHsv(\n  h: number | string,\n  s: number | string,\n  l: number | string\n): HSVColor {\n  ;({ h, s, l } = normalizeHsl(h, s, l))\n\n  const v = 0.5 * (2 * l + s * (1 - Math.abs(2 * l - 1)))\n\n  s = (2 * (v - l)) / v\n\n  return { h: h * 360, s, v, toString: toHsvString }\n}\n\n/**\n * 将 RGB 颜色转换为 HEX 颜色\n *\n * @param r 0 ~ 255\n * @param g 0 ~ 255\n * @param b 0 ~ 255\n * @param allow3Char 是否允许 3 位的 HEX 值\n *\n * @returns 转换后的 HEX 颜色\n */\nexport function rgbToHex(\n  r: number | string,\n  g: number | string,\n  b: number | string,\n  allow3Char = false\n) {\n  ;({ r, g, b } = normalizeRgb(r, g, b))\n\n  const hex = [\n    repairDigits(Math.round(r * 255).toString(16)),\n    repairDigits(Math.round(g * 255).toString(16)),\n    repairDigits(Math.round(b * 255).toString(16)),\n  ]\n\n  if (\n    allow3Char &&\n    isRepetitive(hex[0]) &&\n    isRepetitive(hex[1]) &&\n    isRepetitive(hex[2])\n  ) {\n    return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0)\n  }\n\n  return `#${hex.join('')}`\n}\n\n/**\n * 将 RGBA 颜色转换为 HEX 颜色\n *\n * @param r 0 ~ 255\n * @param g 0 ~ 255\n * @param b 0 ~ 255\n * @param a 0 ~ 1，0% ~ 100%\n * @param allow4Char 是否允许 4 位的 HEX 值\n *\n * @returns 转换后的 HEX 颜色\n */\nexport function rgbaToHex(\n  r: number | string,\n  g: number | string,\n  b: number | string,\n  a: number | string,\n  allow4Char = false\n) {\n  ;({ r, g, b } = normalizeRgb(r, g, b))\n\n  const hex = [\n    repairDigits(Math.round(r * 255).toString(16)),\n    repairDigits(Math.round(g * 255).toString(16)),\n    repairDigits(Math.round(b * 255).toString(16)),\n    repairDigits(convertDecimalToHex(normalizeAlpha(a))),\n  ]\n\n  if (\n    allow4Char &&\n    isRepetitive(hex[0]) &&\n    isRepetitive(hex[1]) &&\n    isRepetitive(hex[2]) &&\n    isRepetitive(hex[3])\n  ) {\n    return (\n      hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0)\n    )\n  }\n\n  return `#${hex.join('')}`\n}\n\n/**\n * 随机生成一个特定色调（冷暖色）的颜色值\n *\n * @param prefer 色调 hard-冷色调，soft-暖色调\n * @param withAlpha 是否具有透明度\n * @param type 颜色的类型\n *\n * @returns 生成的颜色字面值\n */\nexport function randomPreferColor(\n  prefer: 'hard' | 'soft',\n  withAlpha = false,\n  type: ColorType = 'hex'\n) {\n  const h = Math.round(Math.random() * 360)\n  const s =\n    Math.round(\n      prefer === 'hard' ? 80 + Math.random() * 20 : 20 + Math.random() * 70\n    ) / 100\n  const l =\n    Math.round(\n      prefer === 'hard' ? 40 + Math.random() * 20 : 80 + Math.random() * 15\n    ) / 100\n\n  if (type === 'hsl') {\n    return toHslString.bind({ h, s, l })()\n  }\n\n  let color!: ObjectColor\n\n  if (type === 'hex' || type === 'rgb') {\n    color = hslToRgb(h, s, l)\n\n    if (type === 'hex') {\n      const { r, g, b } = color\n\n      return withAlpha ? rgbaToHex(r, g, b, Math.random()) : rgbToHex(r, g, b)\n    }\n  } else if (type === 'hsv') {\n    color = hslToHsv(h, s, l)\n  }\n\n  if (withAlpha) {\n    ;(color as RGBAColor).a = Math.random()\n  }\n\n  return color.toString()\n}\n\n/**\n * 随机生成一个冷色调的颜色值\n *\n * @param withAlpha 是否具有透明度\n * @param type 颜色的类型\n *\n * @returns 生成的颜色字面值\n */\nexport function randomHardColor(withAlpha = false, type: ColorType = 'hex') {\n  return randomPreferColor('hard', withAlpha, type)\n}\n\nfunction repairDigits(str: string) {\n  return str.length === 1 ? `0${str}` : str.toString()\n}\n\nfunction isRepetitive(string: string): boolean {\n  return string.charAt(0) === string.charAt(1)\n}\n\nfunction convertDecimalToHex(number: number | string): string {\n  return Math.round(Number.parseFloat(number as string) * 255).toString(16)\n}\n\nfunction boundRange(number: number | string, min: number, max: number): number {\n  return Math.max(min, Math.min(max, Number.parseFloat(number as string)))\n}\n\nfunction hueToRgb(p: number, q: number, t: number): number {\n  if (t < 0) t += 1\n  if (t > 1) t -= 1\n  if (t < 1 / 6) return p + (q - p) * 6 * t\n  if (t < 1 / 2) return q\n  if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6\n\n  return p\n}\n\nfunction isPercentage(percent: number | string): boolean {\n  return String(percent).trim().includes('%')\n}\n\nfunction parsePercentage(percent: number | string): number {\n  const number = Number.parseFloat(percent as string) / 100\n\n  return Number.isNaN(number) ? 0 : number\n}\n\nfunction toRgbString(this: RGB) {\n  if (isDefined(this.a) && this.a >= 0 && this.a < 1) {\n    return `rgba(${this.r}, ${this.g}, ${this.b}, ${this.a})`\n  }\n\n  return `rgb(${this.r}, ${this.g}, ${this.b})`\n}\n\nfunction toHslString(this: HSL) {\n  const s = `${this.s * 100}%`\n  const l = `${this.l * 100}%`\n\n  if (isDefined(this.a) && this.a >= 0 && this.a < 1) {\n    return `hsla(${this.h}, ${s}, ${l}, ${this.a})`\n  }\n\n  return `hsl(${this.h}, ${s}, ${l})`\n}\n\nfunction toHsvString(this: HSV) {\n  const s = `${this.s * 100}%`\n  const v = `${this.v * 100}%`\n\n  if (isDefined(this.a) && this.a >= 0 && this.a < 1) {\n    return `hsva(${this.h}, ${s}, ${v}, ${this.a})`\n  }\n\n  return `hsv(${this.h}, ${s}, ${v})`\n}\n"],"names":[],"mappings":"AAAO,SAAS,SAAS,CAAC,KAAK,EAAE;AACjC,EAAE,OAAO,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC;AAC5C,CAAC;AACM,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACtC,EAAE,OAAO;AACT,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG;AAClC,IAAI,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACjE,IAAI,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACjE,GAAG,CAAC;AACJ,CAAC;AACM,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACtC,EAAE,OAAO;AACT,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG;AAClC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG;AAClC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG;AAClC,GAAG,CAAC;AACJ,CAAC;AACM,SAAS,cAAc,CAAC,CAAC,EAAE;AAClC,EAAE,OAAO,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpE,CAAC;AACM,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAClC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACd,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACxC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;AACf,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAClB,GAAG,MAAM;AACT,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpD,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACxB,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1B,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,GAAG;AACH,EAAE,CAAC,IAAI,GAAG,CAAC;AACX,EAAE,CAAC,IAAI,GAAG,CAAC;AACX,EAAE,CAAC,IAAI,GAAG,CAAC;AACX,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AAC5C,CAAC;AACM,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAClC,EAAE,CAAC;AACH,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACxC,EAAE,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AACrD,CAAC;AACM,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,KAAK,EAAE;AACtD,EAAE,CAAC;AACH,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACxC,EAAE,MAAM,GAAG,GAAG;AACd,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClD,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClD,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClD,GAAG,CAAC;AACJ,EAAE,IAAI,UAAU,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1F,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClE,GAAG;AACH,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC;AACM,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,KAAK,EAAE;AAC1D,EAAE,CAAC;AACH,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACxC,EAAE,MAAM,GAAG,GAAG;AACd,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClD,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClD,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClD,IAAI,YAAY,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,GAAG,CAAC;AACJ,EAAE,IAAI,UAAU,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;AAClH,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACrF,GAAG;AACH,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC;AACM,SAAS,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;AAC3E,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;AAC5C,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;AACpG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;AACpG,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE;AACtB,IAAI,OAAO,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAC3C,GAAG;AACH,EAAE,IAAI,KAAK,CAAC;AACZ,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;AACxC,IAAI,KAAK,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE;AACxB,MAAM,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC;AAChC,MAAM,OAAO,SAAS,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/E,KAAK;AACL,GAAG,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE;AAC7B,IAAI,KAAK,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,GAAG;AACH,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC5B,GAAG;AACH,EAAE,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC1B,CAAC;AACM,SAAS,eAAe,CAAC,SAAS,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;AACjE,EAAE,OAAO,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AACpD,CAAC;AACD,SAAS,YAAY,CAAC,GAAG,EAAE;AAC3B,EAAE,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;AACvD,CAAC;AACD,SAAS,YAAY,CAAC,MAAM,EAAE;AAC9B,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AACD,SAAS,mBAAmB,CAAC,MAAM,EAAE;AACrC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClE,CAAC;AACD,SAAS,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE;AACtC,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC;AACD,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC3B,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,CAAC,CAAC;AACX,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,CAAC,CAAC;AACX,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACf,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/B,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACf,IAAI,OAAO,CAAC,CAAC;AACb,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACf,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD,SAAS,YAAY,CAAC,OAAO,EAAE;AAC/B,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC;AACD,SAAS,eAAe,CAAC,OAAO,EAAE;AAClC,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;AAClD,EAAE,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;AAC3C,CAAC;AACD,SAAS,WAAW,GAAG;AACvB,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE;AACtD,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,GAAG;AACH,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AACD,SAAS,WAAW,GAAG;AACvB,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/B,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/B,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE;AACtD,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,GAAG;AACH,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC;AACD,SAAS,WAAW,GAAG;AACvB,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/B,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/B,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE;AACtD,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,GAAG;AACH,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC;;;;"}