{"version":3,"sources":["../src/consts.ts","../src/Matrix.ts","../src/getRefWhiteMtx.ts","../src/getMtxAdaptation.ts","../src/getRefWhiteRgbMtx.ts","../src/getRgbToXyzMtx.ts","../src/getGammaValue.ts","../src/compand.ts","../src/Luv.ts","../src/XYZ.ts","../src/Lab.ts","../src/LCHab.ts","../src/LCHuv.ts","../src/inverseCompand.ts","../src/RGB.ts","../src/xyY.ts"],"sourcesContent":["import {\n  AdaptationType,\n  GammaModelType,\n  RefWhiteType,\n  RGBModelType,\n} from \"./types\";\n\nexport const DEFAULT_OPTIONS = {\n  REF_WHITE: \"D50\" as RefWhiteType,\n  RGB_MODEL: \"sRGB\" as RGBModelType,\n  GAMMA_MODEL: \"sRGB\" as GammaModelType,\n  ADAPTION: \"Bradford\" as AdaptationType,\n} as const;\n\nexport const kE = 216 / 24389;\nexport const kK = 24389 / 27;\n","export class Matrix {\n  /**\n   * n x m matrix transposes to an m x n\n   */\n  static transpose = (A: Matrix_3x3): Matrix_3x3 => {\n    const n = A.length || 0;\n    const m = A[0]?.length;\n    const A_t = Identity_3x3();\n\n    for (let i = 0; i < n; i++) {\n      for (let j = 0; j < m; j++) {\n        A_t[j][i] = A[i][j];\n      }\n    }\n\n    return A_t;\n  };\n\n  /**\n   * Return inverse of a matrix (if invertible)\n   * Throws if matrix not invertible.\n   */\n  static inv = (A: Matrix_3x3): Matrix_3x3 => {\n    const res = Identity_3x3();\n    const [[a, b, c], [d, e, f], [h, i, j]] = A;\n\n    const det =\n      a * e * j - a * f * i - b * d * j + b * f * h + c * d * i - c * e * h;\n\n    if (det === 0) {\n      throw new Error(\"Matrix not invertible\");\n    }\n\n    const detInv = 1 / det;\n\n    res[0][0] = detInv * (e * j - f * i);\n    res[0][1] = detInv * (c * i - b * j);\n    res[0][2] = detInv * (b * f - c * e);\n\n    res[1][0] = detInv * (f * h - d * j);\n    res[1][1] = detInv * (a * j - c * h);\n    res[1][2] = detInv * (c * d - a * f);\n\n    res[2][0] = detInv * (d * i - e * h);\n    res[2][1] = detInv * (b * h - a * i);\n    res[2][2] = detInv * (a * e - b * d);\n\n    return res;\n  };\n\n  static multiply_3x3_times_triple = (\n    A: Matrix_3x3,\n    x: NumericTriple,\n  ): NumericTriple => {\n    const [[a, b, c], [d, e, f], [g, h, i]] = A;\n    const [t, u, v] = x;\n\n    return [\n      a * t + b * u + c * v,\n      d * t + e * u + f * v,\n      g * t + h * u + i * v,\n    ];\n  };\n\n  static multiply_triple_times_3x3 = (\n    x: NumericTriple,\n    A: Matrix_3x3,\n  ): NumericTriple => {\n    const [t, u, v] = x;\n    const [[a, b, c], [d, e, f], [g, h, i]] = A;\n\n    return [\n      a * t + d * u + g * v,\n      b * t + e * u + h * v,\n      c * t + f * u + i * v,\n    ];\n  };\n\n  static multiply_3x3_times_3x3 = (\n    A: Matrix_3x3,\n    B: Matrix_3x3,\n  ): Matrix_3x3 => {\n    const [[a, b, c], [d, e, f], [g, h, i]] = A;\n    const [[j, k, l], [m, n, o], [p, q, r]] = B;\n\n    return [\n      [a * j + b * m + c * p, a * k + b * n + c * q, a * l + b * o + c * r],\n      [d * j + e * m + f * p, d * k + e * n + f * q, d * l + e * o + f * r],\n      [g * j + h * m + i * p, g * k + h * n + i * q, g * l + h * o + i * r],\n    ];\n  };\n}\n\nconst Identity_3x3 = (): Matrix_3x3 => [\n  [1, 0, 0],\n  [0, 1, 0],\n  [0, 0, 1],\n];\n\nexport type Matrix_3x3 = [\n  [number, number, number],\n  [number, number, number],\n  [number, number, number],\n];\n\nexport type NumericTriple = readonly [number, number, number];\nexport type FatNumericTriple = readonly [[number], [number], [number]];\n","import { RefWhiteType } from \"./types\";\nimport { NumericTriple } from \"./Matrix\";\n\n// RefWhite Matrix\nexport const getRefWhiteMtx = (refWhite: RefWhiteType): NumericTriple =>\n  Map[refWhite] || [1, 1, 1];\n\nconst Map: Record<RefWhiteType, NumericTriple> = {\n  A: [1.0985, 1, 0.35585],\n  B: [0.99072, 1, 0.85223],\n  C: [0.98074, 1, 1.18232],\n  D50: [0.96422, 1, 0.82521],\n  D55: [0.95682, 1, 0.92149],\n  D65: [0.95047, 1, 1.0888],\n  D75: [0.94972, 1, 1.22638],\n  E: [1, 1, 1],\n  F2: [0.99186, 1, 0.67393],\n  F7: [0.95041, 1, 1.08747],\n  F11: [1.00962, 1, 0.6435],\n};\n","import { AdaptationType } from \"./types\";\nimport { Matrix_3x3 } from \"./Matrix\";\n\n/**\n * Matrix adaptation\n */\nexport const getMtxAdaptation = (adaptation: AdaptationType): Matrix_3x3 =>\n  Map[adaptation] || [\n    [1, 0, 0],\n    [0, 1, 0],\n    [0, 0, 1],\n  ];\n\nconst Map: Partial<Record<AdaptationType, Matrix_3x3>> = {\n  Bradford: [\n    [0.8951, -0.7502, 0.0389],\n    [0.2664, 1.7135, -0.0685],\n    [-0.1614, 0.0367, 1.0296],\n  ],\n  \"von Kries\": [\n    [0.40024, -0.2263, 0],\n    [0.7076, 1.16532, 0],\n    [-0.08081, 0.0457, 0.91822],\n  ],\n};\n","import { RGBModelType } from \"./types\";\nimport { NumericTriple } from \"./Matrix\";\n\n/**\n * RefWhite RGB Matrix\n */\nexport const getRefWhiteRgbMtx = (rgbModel: RGBModelType): NumericTriple =>\n  Map[rgbModel];\n\nconst Map: Record<RGBModelType, NumericTriple> = {\n  \"Adobe RGB (1998)\": [0.95047, 1, 1.08883],\n  AppleRGB: [0.95047, 1, 1.08883],\n  \"Best RGB\": [0.96422, 1, 0.82521],\n  \"Beta RGB\": [0.96422, 1, 0.82521],\n  \"Bruce RGB\": [0.95047, 1, 1.08883],\n  \"CIE RGB\": [1, 1, 1],\n  \"ColorMatch RGB\": [0.96422, 1, 0.82521],\n  \"Don RGB 4\": [0.96422, 1, 0.82521],\n  \"ECI RGB v2\": [0.96422, 1, 0.82521],\n  \"Ekta Space PS5\": [0.96422, 1, 0.82521],\n  \"NTSC RGB\": [0.98074, 1, 1.18232],\n  \"PAL/SECAM RGB\": [0.95047, 1, 1.08883],\n  \"ProPhoto RGB\": [0.96422, 1, 0.82521],\n  \"SMPTE-C RGB\": [0.95047, 1, 1.08883],\n  sRGB: [0.95047, 1, 1.08883],\n  \"Wide Gamut RGB\": [0.96422, 1, 0.82521],\n};\n","import { RGBModelType } from \"./types\";\nimport { Matrix, Matrix_3x3 } from \"./Matrix\";\nimport { getRefWhiteRgbMtx } from \"./getRefWhiteRgbMtx\";\n\n// RGB to XYZ matrix\n// Values come from table on http://www.brucelindbloom.com/\nexport const getRgbToXyzMtx = (rgbModel: RGBModelType): Matrix_3x3 => {\n  let xr, yr, xg, yg, xb, yb;\n  switch (rgbModel) {\n    case \"Adobe RGB (1998)\": {\n      [xr, yr, xg, yg, xb, yb] = [0.64, 0.33, 0.21, 0.71, 0.15, 0.06];\n      break;\n    }\n    case \"AppleRGB\": {\n      [xr, yr, xg, yg, xb, yb] = [0.625, 0.34, 0.28, 0.595, 0.155, 0.07];\n      break;\n    }\n    case \"Best RGB\": {\n      [xr, yr, xg, yg, xb, yb] = [0.7347, 0.2653, 0.215, 0.775, 0.13, 0.035];\n      break;\n    }\n    case \"Beta RGB\": {\n      [xr, yr, xg, yg, xb, yb] = [\n        0.6888, 0.3112, 0.1986, 0.7551, 0.1265, 0.0352,\n      ];\n      break;\n    }\n    case \"Bruce RGB\": {\n      [xr, yr, xg, yg, xb, yb] = [0.64, 0.33, 0.28, 0.65, 0.15, 0.06];\n      break;\n    }\n    case \"CIE RGB\": {\n      [xr, yr, xg, yg, xb, yb] = [0.735, 0.265, 0.274, 0.717, 0.167, 0.009];\n      break;\n    }\n    case \"ColorMatch RGB\": {\n      [xr, yr, xg, yg, xb, yb] = [0.63, 0.34, 0.295, 0.605, 0.15, 0.075];\n      break;\n    }\n    case \"Don RGB 4\": {\n      [xr, yr, xg, yg, xb, yb] = [0.696, 0.3, 0.215, 0.765, 0.13, 0.035];\n      break;\n    }\n    case \"ECI RGB v2\": {\n      [xr, yr, xg, yg, xb, yb] = [0.67, 0.33, 0.21, 0.71, 0.14, 0.08];\n      break;\n    }\n    case \"Ekta Space PS5\": {\n      [xr, yr, xg, yg, xb, yb] = [0.695, 0.305, 0.26, 0.7, 0.11, 0.005];\n      break;\n    }\n    case \"NTSC RGB\": {\n      [xr, yr, xg, yg, xb, yb] = [0.67, 0.33, 0.21, 0.71, 0.14, 0.08];\n      break;\n    }\n    case \"PAL/SECAM RGB\": {\n      [xr, yr, xg, yg, xb, yb] = [0.64, 0.33, 0.29, 0.6, 0.15, 0.06];\n      break;\n    }\n    case \"ProPhoto RGB\": {\n      [xr, yr, xg, yg, xb, yb] = [\n        0.7347, 0.2653, 0.1596, 0.8404, 0.0366, 0.0001,\n      ];\n      break;\n    }\n    case \"SMPTE-C RGB\": {\n      [xr, yr, xg, yg, xb, yb] = [0.63, 0.34, 0.31, 0.595, 0.155, 0.07];\n      break;\n    }\n    case \"sRGB\": {\n      [xr, yr, xg, yg, xb, yb] = [0.64, 0.33, 0.3, 0.6, 0.15, 0.06];\n      break;\n    }\n    case \"Wide Gamut RGB\": {\n      [xr, yr, xg, yg, xb, yb] = [0.735, 0.265, 0.115, 0.826, 0.157, 0.018];\n      break;\n    }\n  } // End switch\n\n  const X_r = xr / yr,\n    Y_r = 1,\n    Z_r = (1 - xr - yr) / yr,\n    X_g = xg / yg,\n    Y_g = 1,\n    Z_g = (1 - xg - yg) / yg,\n    X_b = xb / yb,\n    Y_b = 1,\n    Z_b = (1 - xb - yb) / yb,\n    RW_RGB = getRefWhiteRgbMtx(rgbModel),\n    X_W = RW_RGB[0],\n    Y_W = RW_RGB[1],\n    Z_W = RW_RGB[2];\n\n  const [S_r, S_g, S_b] = Matrix.multiply_3x3_times_triple(\n    Matrix.inv([\n      [X_r, X_g, X_b],\n      [Y_r, Y_g, Y_b],\n      [Z_r, Z_g, Z_b],\n    ]),\n    [X_W, Y_W, Z_W],\n  );\n\n  return Matrix.transpose([\n    [S_r * X_r, S_g * X_g, S_b * X_b],\n    [S_r * Y_r, S_g * Y_g, S_b * Y_b],\n    [S_r * Z_r, S_g * Z_g, S_b * Z_b],\n  ]);\n};\n","import { GammaModelType } from \"./types\";\n\nexport const getGammaValue = (Gamma: GammaModelType): number => Map[Gamma] || 1;\n\nconst Map: Record<GammaModelType, number> = {\n  \"1.0\": 1,\n  \"1.8\": 1.8,\n  \"2.2\": 2.2,\n  sRGB: -2.2,\n  \"L*\": 0,\n};\n","import { GammaModelType } from \"./types\";\nimport { getGammaValue } from \"./getGammaValue\";\n\nexport const compand = (linear: number, gammaModel: GammaModelType): number => {\n  let G = getGammaValue(gammaModel);\n\n  // Depends on sign of Gamma\n  if (G > 0) {\n    return linear >= 0 ? Math.pow(linear, 1 / G) : -Math.pow(-linear, 1 / G);\n  } else if (G < 0) {\n    /** sRGB */\n    let sign = 1;\n    if (linear < 0) {\n      sign = -1;\n      linear = -linear;\n    }\n    return (\n      sign *\n      (linear <= 0.0031308\n        ? linear * 12.92\n        : 1.055 * Math.pow(linear, 1.0 / 2.4) - 0.055)\n    );\n  } else {\n    /** L* */\n    let sign = 1;\n    if (linear < 0) {\n      sign = -1;\n      linear = -linear;\n    }\n    return (\n      sign *\n      (linear <= 216.0 / 24389.0\n        ? (linear * 24389.0) / 2700.0\n        : 1.16 * Math.pow(linear, 1.0 / 3.0) - 0.16)\n    );\n  }\n};\n","import { NumericTriple } from \"./Matrix\";\nimport { DEFAULT_OPTIONS, kE, kK } from \"./consts\";\nimport { ConverterOptions } from \"./types\";\nimport { getRefWhiteMtx } from \"./getRefWhiteMtx\";\nimport { XYZToLab, XYZToRGB, XYZToxyY } from \"./XYZ\";\nimport { LabToLCHab } from \"./Lab\";\n\nexport const LuvToLCHuv = (Luv: NumericTriple): NumericTriple => {\n  const [L, u, v] = Luv;\n  const H = (180 / Math.PI) * Math.atan2(v, u);\n\n  return [\n    L,\n    Math.sqrt(Math.pow(u, 2) + Math.pow(v, 2)),\n    H + (H >= 0 ? 0 : 360),\n  ];\n};\n\nexport const LuvToXYZ = (\n  Luv: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  const [L, u, v] = Luv;\n\n  const Y = L > kK * kE ? Math.pow((L + 16) / 116, 3) : L / kK;\n\n  const RefWhite = getRefWhiteMtx(refWhite),\n    X_r = RefWhite[0],\n    Y_r = RefWhite[1],\n    Z_r = RefWhite[2],\n    Den = X_r + 15 * Y_r + 3 * Z_r,\n    v_0 = (9 * Y_r) / Den,\n    u_0 = (4 * X_r) / Den,\n    d = Y * ((39 * L) / (v + 13 * L * v_0) - 5),\n    c = -1 / 3,\n    b = -5 * Y,\n    a = (1 / 3) * ((52 * L) / (u + 13 * L * u_0) - 1),\n    X = (d - b) / (a - c),\n    Z = X * a + b;\n\n  return [X, Y, Z];\n};\n\nexport const LuvToxyY = (\n  Luv: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  return XYZToxyY(LuvToXYZ(Luv, { refWhite }), { refWhite });\n};\n\nexport const LuvToLab = (\n  Luv: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  return XYZToLab(LuvToXYZ(Luv, { refWhite }), { refWhite });\n};\n\nexport const LuvToLCHab = (\n  Luv: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  return LabToLCHab(LuvToLab(Luv, { refWhite }));\n};\n\nexport const LuvToRGB = (\n  Luv: NumericTriple,\n  {\n    adaptation = DEFAULT_OPTIONS.ADAPTION,\n    refWhite = DEFAULT_OPTIONS.REF_WHITE,\n    rgbModel = DEFAULT_OPTIONS.RGB_MODEL,\n    gammaModel = DEFAULT_OPTIONS.GAMMA_MODEL,\n  }: ConverterOptions = {},\n): NumericTriple => {\n  return XYZToRGB(LuvToXYZ(Luv, { refWhite }), {\n    adaptation,\n    refWhite,\n    rgbModel,\n    gammaModel,\n  });\n};\n","import { Matrix, NumericTriple } from \"./Matrix\";\nimport { DEFAULT_OPTIONS, kE, kK } from \"./consts\";\nimport { ConverterOptions } from \"./types\";\nimport { getRefWhiteMtx } from \"./getRefWhiteMtx\";\nimport { getMtxAdaptation } from \"./getMtxAdaptation\";\nimport { getRefWhiteRgbMtx } from \"./getRefWhiteRgbMtx\";\nimport { getRgbToXyzMtx } from \"./getRgbToXyzMtx\";\nimport { compand } from \"./compand\";\nimport { LabToLCHab } from \"./Lab\";\nimport { LuvToLCHuv } from \"./Luv\";\n\nexport const XYZToLab = (\n  XYZ: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  const X = XYZ[0],\n    Y = XYZ[1],\n    Z = XYZ[2],\n    RefWhite = getRefWhiteMtx(refWhite),\n    X_r = RefWhite[0],\n    Y_r = RefWhite[1],\n    Z_r = RefWhite[2],\n    x_r = X / X_r,\n    y_r = Y / Y_r,\n    z_r = Z / Z_r,\n    f_x = x_r > kE ? Math.pow(x_r, 1 / 3) : (kK * x_r + 16) / 116,\n    f_y = y_r > kE ? Math.pow(y_r, 1 / 3) : (kK * y_r + 16) / 116,\n    f_z = z_r > kE ? Math.pow(z_r, 1 / 3) : (kK * z_r + 16) / 116;\n\n  return [116 * f_y - 16, 500 * (f_x - f_y), 200 * (f_y - f_z)];\n};\n\nexport const XYZToLuv = (\n  XYZ: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  const [X, Y, Z] = XYZ,\n    RefWhite = getRefWhiteMtx(refWhite),\n    X_r = RefWhite[0],\n    Y_r = RefWhite[1],\n    Z_r = RefWhite[2],\n    Den = X + 15 * Y + 3 * Z,\n    up = Den > 0 ? (4 * X) / Den : 0,\n    vp = Den > 0 ? (9 * Y) / Den : 0,\n    urp = (4 * X_r) / (X_r + 15 * Y_r + 3 * Z_r),\n    vrp = (9 * Y_r) / (X_r + 15 * Y_r + 3 * Z_r),\n    yr = Y / Y_r,\n    L = yr > kE ? 116 * Math.pow(yr, 1 / 3) - 16 : kK * yr;\n\n  return [L, 13 * L * (up - urp), 13 * L * (vp - vrp)];\n};\n\nexport const XYZToRGB = (\n  XYZ: NumericTriple,\n  {\n    adaptation = DEFAULT_OPTIONS.ADAPTION,\n    refWhite = DEFAULT_OPTIONS.REF_WHITE,\n    rgbModel = DEFAULT_OPTIONS.RGB_MODEL,\n    gammaModel = DEFAULT_OPTIONS.GAMMA_MODEL,\n  }: ConverterOptions = {},\n): NumericTriple => {\n  let XYZd = XYZ;\n  const mtxAdp = getMtxAdaptation(adaptation);\n\n  if (adaptation != \"None\") {\n    // Get source/domain scale factors\n    const [As, Bs, Cs] = Matrix.multiply_triple_times_3x3(\n      getRefWhiteMtx(refWhite),\n      mtxAdp,\n    );\n    let [Ad, Bd, Cd] = Matrix.multiply_triple_times_3x3(\n      getRefWhiteRgbMtx(rgbModel),\n      mtxAdp,\n    );\n\n    XYZd = Matrix.multiply_triple_times_3x3(\n      XYZ,\n      Matrix.multiply_3x3_times_3x3(\n        mtxAdp,\n        Matrix.multiply_3x3_times_3x3(\n          [\n            [Ad / As, 0, 0],\n            [0, Bd / Bs, 0],\n            [0, 0, Cd / Cs],\n          ],\n          Matrix.inv(mtxAdp),\n        ),\n      ),\n    );\n  }\n\n  const RGB = Matrix.multiply_triple_times_3x3(\n    XYZd,\n    Matrix.inv(getRgbToXyzMtx(rgbModel)),\n  );\n\n  return RGB.map(\n    (v) => 255 * compand(v, gammaModel),\n  ) as unknown as NumericTriple;\n};\n\nexport const XYZToxyY = (\n  XYZ: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  const [X, Y, Z] = XYZ,\n    Den = X + Y + Z;\n  // Non-zero Den:\n  if (Den > 0) {\n    return [X / Den, Y / Den, Y];\n  }\n  // Zero den\n  else {\n    let [RW_X, RW_Y, RW_Z] = getRefWhiteMtx(refWhite),\n      RW_Den = RW_X + RW_Y + RW_Z;\n    return [RW_X / RW_Den, RW_Y / RW_Den, Y];\n  }\n};\n\nexport const XYZToLCHab = (\n  XYZ: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  return LabToLCHab(XYZToLab(XYZ, { refWhite }));\n};\n\nexport const XYZToLCHuv = (\n  XYZ: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  return LuvToLCHuv(XYZToLuv(XYZ, { refWhite }));\n};\n","import { NumericTriple } from \"./Matrix\";\nimport { DEFAULT_OPTIONS, kE, kK } from \"./consts\";\nimport { ConverterOptions } from \"./types\";\nimport { XYZToLuv, XYZToRGB, XYZToxyY } from \"./XYZ\";\nimport { getRefWhiteMtx } from \"./getRefWhiteMtx\";\nimport { LuvToLCHuv } from \"./Luv\";\n\nexport const LabToLCHab = (Lab: NumericTriple): NumericTriple => {\n  const [L, a, b] = Lab;\n\n  let H = (180 / Math.PI) * Math.atan2(b, a);\n  return [\n    L,\n    Math.sqrt(Math.pow(a, 2) + Math.pow(b, 2)),\n    H + (H >= 0 ? 0 : 360),\n  ];\n};\n\nexport const LabToRGB = (\n  Lab: NumericTriple,\n  {\n    adaptation = DEFAULT_OPTIONS.ADAPTION,\n    refWhite = DEFAULT_OPTIONS.REF_WHITE,\n    rgbModel = DEFAULT_OPTIONS.RGB_MODEL,\n    gammaModel = DEFAULT_OPTIONS.GAMMA_MODEL,\n  }: ConverterOptions = {},\n): NumericTriple => {\n  return XYZToRGB(LabToXYZ(Lab, { refWhite }), {\n    adaptation,\n    refWhite,\n    rgbModel,\n    gammaModel,\n  });\n};\n\nexport const LabToXYZ = (\n  Lab: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  let L = Lab[0],\n    a = Lab[1],\n    b = Lab[2],\n    f_y = (L + 16) / 116,\n    f_x = a / 500 + f_y,\n    f_z = f_y - b / 200,\n    x_r = Math.pow(f_x, 3) > kE ? Math.pow(f_x, 3) : (116 * f_x - 16) / kK,\n    y_r = L > kK * kE ? Math.pow((L + 16) / 116, 3) : L / kK,\n    z_r = Math.pow(f_z, 3) > kE ? Math.pow(f_z, 3) : (116 * f_z - 16) / kK,\n    RefWhite = getRefWhiteMtx(refWhite);\n\n  return [x_r * RefWhite[0], y_r * RefWhite[1], z_r * RefWhite[2]];\n};\n\nexport const LabToxyY = (\n  Lab: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  return XYZToxyY(LabToXYZ(Lab, { refWhite }), { refWhite });\n};\n\nexport const LabToLuv = (\n  Lab: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  return XYZToLuv(LabToXYZ(Lab, { refWhite }), { refWhite });\n};\n\nexport const LabToLCHuv = (\n  Lab: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  return LuvToLCHuv(LabToLuv(Lab, { refWhite }));\n};\n","import { NumericTriple } from \"./Matrix\";\nimport { LabToXYZ } from \"./Lab\";\nimport { DEFAULT_OPTIONS } from \"./consts\";\nimport { ConverterOptions } from \"./types\";\nimport { XYZToLuv, XYZToRGB, XYZToxyY } from \"./XYZ\";\nimport { LuvToLCHuv } from \"./Luv\";\n\nexport const LCHabToLab = (LCH: NumericTriple): NumericTriple => {\n  const [L, C, H] = LCH;\n  return [\n    L,\n    C * Math.cos((H * Math.PI) / 180),\n    C * Math.sin((H * Math.PI) / 180),\n  ];\n};\n\nexport const LCHabToXYZ = (\n  LCH: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  return LabToXYZ(LCHabToLab(LCH), { refWhite });\n};\n\nexport const LCHabToxyY = (\n  LCH: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  return XYZToxyY(LabToXYZ(LCHabToLab(LCH), { refWhite }), { refWhite });\n};\n\nexport const LCHabToLuv = (\n  LCH: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  return XYZToLuv(LabToXYZ(LCHabToLab(LCH), { refWhite }), { refWhite });\n};\n\nexport const LCHabToLCHuv = (\n  LCH: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  return LuvToLCHuv(LCHabToLuv(LCH, { refWhite }));\n};\n\nexport const LCHabToRGB = (\n  LCH: NumericTriple,\n  {\n    adaptation = DEFAULT_OPTIONS.ADAPTION,\n    refWhite = DEFAULT_OPTIONS.REF_WHITE,\n    rgbModel = DEFAULT_OPTIONS.RGB_MODEL,\n    gammaModel = DEFAULT_OPTIONS.GAMMA_MODEL,\n  }: ConverterOptions = {},\n): NumericTriple => {\n  return XYZToRGB(LCHabToXYZ(LCH, { refWhite }), {\n    adaptation,\n    refWhite,\n    rgbModel,\n    gammaModel,\n  });\n};\n","import { NumericTriple } from \"./Matrix\";\nimport { LuvToXYZ } from \"./Luv\";\nimport { DEFAULT_OPTIONS } from \"./consts\";\nimport { ConverterOptions } from \"./types\";\nimport { XYZToLab, XYZToRGB, XYZToxyY } from \"./XYZ\";\nimport { LabToLCHab } from \"./Lab\";\n\nexport const LCHuvToLuv = (LCH: NumericTriple): NumericTriple => {\n  const [L, C, H] = LCH;\n\n  return [\n    L,\n    C * Math.cos((H * Math.PI) / 180),\n    C * Math.sin((H * Math.PI) / 180),\n  ];\n};\n\nexport const LCHuvToXYZ = (\n  LCH: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  return LuvToXYZ(LCHuvToLuv(LCH), { refWhite });\n};\n\nexport const LCHuvToxyY = (\n  LCH: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  return XYZToxyY(LCHuvToXYZ(LCH, { refWhite }), { refWhite });\n};\n\nexport const LCHuvToLab = (\n  LCH: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  return XYZToLab(LCHuvToXYZ(LCH, { refWhite }), { refWhite });\n};\n\nexport const LCHuvToLCHab = (\n  LCH: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  return LabToLCHab(LCHuvToLab(LCH, { refWhite }));\n};\n\nexport const LCHuvToRGB = (\n  LCH: NumericTriple,\n  {\n    adaptation = DEFAULT_OPTIONS.ADAPTION,\n    refWhite = DEFAULT_OPTIONS.REF_WHITE,\n    rgbModel = DEFAULT_OPTIONS.RGB_MODEL,\n    gammaModel = DEFAULT_OPTIONS.GAMMA_MODEL,\n  }: ConverterOptions = {},\n): NumericTriple => {\n  return XYZToRGB(LCHuvToXYZ(LCH, { refWhite }), {\n    adaptation,\n    refWhite,\n    rgbModel,\n    gammaModel,\n  });\n};\n","import { GammaModelType } from \"./types\";\nimport { getGammaValue } from \"./getGammaValue\";\n\n/**\n * Inverse compand function\n */\nexport const inverseCompand = (\n  companded: number,\n  gammaModel: GammaModelType,\n): number => {\n  const G = getGammaValue(gammaModel);\n\n  if (G > 0) {\n    return companded >= 0 ? Math.pow(companded, G) : -Math.pow(-companded, G);\n  } else if (G < 0) {\n    /** sRGB */\n    let sign = 1;\n    if (companded < 0) {\n      sign = -1;\n      companded = -companded;\n    }\n    return (\n      sign *\n      (companded <= 0.04045\n        ? companded / 12.92\n        : Math.pow((companded + 0.055) / 1.055, 2.4))\n    );\n  } else {\n    /** L* */\n    let sign = 1;\n    if (companded < 0) {\n      sign = -1;\n      companded = -companded;\n    }\n    return (\n      sign *\n      (companded <= 0.08\n        ? (2700.0 * companded) / 24389.0\n        : (((1000000.0 * companded + 480000.0) * companded + 76800.0) *\n            companded +\n            4096.0) /\n          1560896.0)\n    );\n  }\n};\n","import { Matrix, NumericTriple } from \"./Matrix\";\nimport { ConverterOptions } from \"./types\";\nimport { inverseCompand } from \"./inverseCompand\";\nimport { DEFAULT_OPTIONS } from \"./consts\";\nimport { getMtxAdaptation } from \"./getMtxAdaptation\";\nimport { getRefWhiteRgbMtx } from \"./getRefWhiteRgbMtx\";\nimport { getRefWhiteMtx } from \"./getRefWhiteMtx\";\nimport { getRgbToXyzMtx } from \"./getRgbToXyzMtx\";\nimport { XYZToLab, XYZToLuv, XYZToxyY } from \"./XYZ\";\nimport { LabToLCHab } from \"./Lab\";\nimport { LuvToLCHuv } from \"./Luv\";\n\nexport const RGBToXYZ = (\n  RGB: NumericTriple,\n  {\n    adaptation = DEFAULT_OPTIONS.ADAPTION,\n    rgbModel = DEFAULT_OPTIONS.RGB_MODEL,\n    gammaModel = DEFAULT_OPTIONS.GAMMA_MODEL,\n    refWhite = DEFAULT_OPTIONS.REF_WHITE,\n  }: ConverterOptions = {},\n): NumericTriple => {\n  // utils\n  const MtxAdp = getMtxAdaptation(adaptation);\n  const Mtx_RefWhiteRGB = getRefWhiteRgbMtx(rgbModel);\n  const Mtx_RefWhite = getRefWhiteMtx(refWhite);\n  const Mtx_RGB2XYZ = getRgbToXyzMtx(rgbModel);\n\n  // Inverse compound the values\n  RGB = RGB.map((v) =>\n    inverseCompand(v / 255, gammaModel),\n  ) as unknown as NumericTriple;\n  // Linear RGB to XYZ\n  let XYZ = Matrix.multiply_triple_times_3x3(RGB, Mtx_RGB2XYZ);\n\n  // Adaptation if necessary\n  if (adaptation != \"None\") {\n    // Get source/domain scale factors\n    const [As, Bs, Cs] = Matrix.multiply_triple_times_3x3(\n      Mtx_RefWhiteRGB,\n      MtxAdp,\n    );\n    const [Ad, Bd, Cd] = Matrix.multiply_triple_times_3x3(Mtx_RefWhite, MtxAdp);\n\n    return Matrix.multiply_triple_times_3x3(\n      XYZ,\n      Matrix.multiply_3x3_times_3x3(\n        MtxAdp,\n        Matrix.multiply_3x3_times_3x3(\n          [\n            [Ad / As, 0, 0],\n            [0, Bd / Bs, 0],\n            [0, 0, Cd / Cs],\n          ],\n          Matrix.inv(MtxAdp),\n        ),\n      ),\n    );\n  } else {\n    return XYZ;\n  }\n};\n\nexport const RGBToLab = (\n  RGB: NumericTriple,\n  {\n    adaptation = DEFAULT_OPTIONS.ADAPTION,\n    rgbModel = DEFAULT_OPTIONS.RGB_MODEL,\n    gammaModel = DEFAULT_OPTIONS.GAMMA_MODEL,\n    refWhite = DEFAULT_OPTIONS.REF_WHITE,\n  }: ConverterOptions = {},\n): NumericTriple => {\n  return XYZToLab(\n    RGBToXYZ(RGB, { adaptation, rgbModel, gammaModel, refWhite }),\n    { refWhite },\n  );\n};\n\nexport const RGBToxyY = (\n  RGB: NumericTriple,\n  {\n    adaptation = DEFAULT_OPTIONS.ADAPTION,\n    rgbModel = DEFAULT_OPTIONS.RGB_MODEL,\n    gammaModel = DEFAULT_OPTIONS.GAMMA_MODEL,\n    refWhite = DEFAULT_OPTIONS.REF_WHITE,\n  }: ConverterOptions = {},\n): NumericTriple => {\n  return XYZToxyY(\n    RGBToXYZ(RGB, { adaptation, rgbModel, refWhite, gammaModel }),\n    { refWhite },\n  );\n};\n\nexport const RGBToLCHab = (\n  RGB: NumericTriple,\n  {\n    adaptation = DEFAULT_OPTIONS.ADAPTION,\n    rgbModel = DEFAULT_OPTIONS.RGB_MODEL,\n    gammaModel = DEFAULT_OPTIONS.GAMMA_MODEL,\n    refWhite = DEFAULT_OPTIONS.REF_WHITE,\n  }: ConverterOptions = {},\n): NumericTriple => {\n  return LabToLCHab(\n    RGBToLab(RGB, { adaptation, rgbModel, refWhite, gammaModel }),\n  );\n};\n\nexport const RGBToLuv = (\n  RGB: NumericTriple,\n  {\n    adaptation = DEFAULT_OPTIONS.ADAPTION,\n    rgbModel = DEFAULT_OPTIONS.RGB_MODEL,\n    gammaModel = DEFAULT_OPTIONS.GAMMA_MODEL,\n    refWhite = DEFAULT_OPTIONS.REF_WHITE,\n  }: ConverterOptions = {},\n): NumericTriple => {\n  return XYZToLuv(\n    RGBToXYZ(RGB, { adaptation, rgbModel, refWhite, gammaModel }),\n    { refWhite },\n  );\n};\n\nexport const RGBToLCHuv = (\n  RGB: NumericTriple,\n  {\n    adaptation = DEFAULT_OPTIONS.ADAPTION,\n    rgbModel = DEFAULT_OPTIONS.RGB_MODEL,\n    gammaModel = DEFAULT_OPTIONS.GAMMA_MODEL,\n    refWhite = DEFAULT_OPTIONS.REF_WHITE,\n  }: ConverterOptions = {},\n): NumericTriple => {\n  return LuvToLCHuv(\n    RGBToLuv(RGB, { adaptation, rgbModel, refWhite, gammaModel }),\n  );\n};\n","import { NumericTriple } from \"./Matrix\";\nimport { DEFAULT_OPTIONS, kE, kK } from \"./consts\";\nimport { ConverterOptions } from \"./types\";\nimport { XYZToLab, XYZToLuv, XYZToRGB } from \"./XYZ\";\nimport { LabToLCHab } from \"./Lab\";\nimport { LuvToLCHuv } from \"./Luv\";\n\nexport const xyYToXYZ = (xyY: NumericTriple): NumericTriple => {\n  const [x, y, Y] = xyY;\n  if (y < 0.000001) {\n    return [0, 0, 0];\n  } else {\n    return [(x * Y) / y, Y, ((1 - x - y) * Y) / y];\n  }\n};\n\nexport const xyYToLab = (\n  xyY: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  return XYZToLab(xyYToXYZ(xyY), { refWhite });\n};\n\nexport const xyYToLCHab = (\n  xyY: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  return LabToLCHab(XYZToLab(xyYToXYZ(xyY), { refWhite }));\n};\n\nexport const xyYToLuv = (\n  xyY: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  return XYZToLuv(xyYToXYZ(xyY), { refWhite });\n};\n\nexport const xyYToLCHuv = (\n  xyY: NumericTriple,\n  { refWhite = DEFAULT_OPTIONS.REF_WHITE }: Pick<ConverterOptions, \"refWhite\"> = {},\n): NumericTriple => {\n  return LuvToLCHuv(XYZToLuv(xyYToXYZ(xyY), { refWhite }));\n};\n\nexport const xyYToRGB = (\n  xyY: NumericTriple,\n  {\n    adaptation = DEFAULT_OPTIONS.ADAPTION,\n    refWhite = DEFAULT_OPTIONS.REF_WHITE,\n    rgbModel = DEFAULT_OPTIONS.RGB_MODEL,\n    gammaModel = DEFAULT_OPTIONS.GAMMA_MODEL,\n  }: ConverterOptions = {},\n): NumericTriple => {\n  return XYZToRGB(xyYToXYZ(xyY), {\n    adaptation,\n    rgbModel,\n    refWhite,\n    gammaModel,\n  });\n};\n"],"mappings":"AAOO,GAAM,GAAkB,CAC7B,UAAW,MACX,UAAW,OACX,YAAa,OACb,SAAU,YAGC,EAAK,IAAM,MACX,EAAK,MAAQ,GCfnB,WAAa,GAIX,AAJF,EAIE,UAAY,AAAC,GAA8B,CAJpD,MAKI,GAAM,GAAI,EAAE,QAAU,EAChB,EAAI,KAAE,KAAF,cAAM,OACV,EAAM,IAEZ,OAAS,GAAI,EAAG,EAAI,EAAG,IACrB,OAAS,GAAI,EAAG,EAAI,EAAG,IACrB,EAAI,GAAG,GAAK,EAAE,GAAG,GAIrB,MAAO,IAOF,AAtBF,EAsBE,IAAM,AAAC,GAA8B,CAC1C,GAAM,GAAM,IACN,CAAC,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,IAAM,EAEpC,EACJ,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAEtE,GAAI,IAAQ,EACV,KAAM,IAAI,OAAM,yBAGlB,GAAM,GAAS,EAAI,EAEnB,SAAI,GAAG,GAAK,EAAU,GAAI,EAAI,EAAI,GAClC,EAAI,GAAG,GAAK,EAAU,GAAI,EAAI,EAAI,GAClC,EAAI,GAAG,GAAK,EAAU,GAAI,EAAI,EAAI,GAElC,EAAI,GAAG,GAAK,EAAU,GAAI,EAAI,EAAI,GAClC,EAAI,GAAG,GAAK,EAAU,GAAI,EAAI,EAAI,GAClC,EAAI,GAAG,GAAK,EAAU,GAAI,EAAI,EAAI,GAElC,EAAI,GAAG,GAAK,EAAU,GAAI,EAAI,EAAI,GAClC,EAAI,GAAG,GAAK,EAAU,GAAI,EAAI,EAAI,GAClC,EAAI,GAAG,GAAK,EAAU,GAAI,EAAI,EAAI,GAE3B,GAGF,AAlDF,EAkDE,0BAA4B,CACjC,EACA,IACkB,CAClB,GAAM,CAAC,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,IAAM,EACpC,CAAC,EAAG,EAAG,GAAK,EAElB,MAAO,CACL,EAAI,EAAI,EAAI,EAAI,EAAI,EACpB,EAAI,EAAI,EAAI,EAAI,EAAI,EACpB,EAAI,EAAI,EAAI,EAAI,EAAI,IAIjB,AAhEF,EAgEE,0BAA4B,CACjC,EACA,IACkB,CAClB,GAAM,CAAC,EAAG,EAAG,GAAK,EACZ,CAAC,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,IAAM,EAE1C,MAAO,CACL,EAAI,EAAI,EAAI,EAAI,EAAI,EACpB,EAAI,EAAI,EAAI,EAAI,EAAI,EACpB,EAAI,EAAI,EAAI,EAAI,EAAI,IAIjB,AA9EF,EA8EE,uBAAyB,CAC9B,EACA,IACe,CACf,GAAM,CAAC,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,IAAM,EACpC,CAAC,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,IAAM,EAE1C,MAAO,CACL,CAAC,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,EAAI,EAAI,EAAI,EAAI,EAAI,GACnE,CAAC,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,EAAI,EAAI,EAAI,EAAI,EAAI,GACnE,CAAC,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,EAAI,EAAI,EAAI,EAAI,EAAI,KAKzE,GAAM,GAAe,IAAkB,CACrC,CAAC,EAAG,EAAG,GACP,CAAC,EAAG,EAAG,GACP,CAAC,EAAG,EAAG,IC5FF,GAAM,GAAiB,AAAC,GAC7B,EAAI,IAAa,CAAC,EAAG,EAAG,GAEpB,EAA2C,CAC/C,EAAG,CAAC,OAAQ,EAAG,QACf,EAAG,CAAC,OAAS,EAAG,QAChB,EAAG,CAAC,OAAS,EAAG,SAChB,IAAK,CAAC,OAAS,EAAG,QAClB,IAAK,CAAC,OAAS,EAAG,QAClB,IAAK,CAAC,OAAS,EAAG,QAClB,IAAK,CAAC,OAAS,EAAG,SAClB,EAAG,CAAC,EAAG,EAAG,GACV,GAAI,CAAC,OAAS,EAAG,QACjB,GAAI,CAAC,OAAS,EAAG,SACjB,IAAK,CAAC,QAAS,EAAG,QCZb,GAAM,GAAmB,AAAC,GAC/B,EAAI,IAAe,CACjB,CAAC,EAAG,EAAG,GACP,CAAC,EAAG,EAAG,GACP,CAAC,EAAG,EAAG,IAGL,EAAmD,CACvD,SAAU,CACR,CAAC,MAAQ,OAAS,OAClB,CAAC,MAAQ,OAAQ,QACjB,CAAC,OAAS,MAAQ,SAEpB,YAAa,CACX,CAAC,OAAS,OAAS,GACnB,CAAC,MAAQ,QAAS,GAClB,CAAC,QAAU,MAAQ,UChBhB,GAAM,GAAoB,AAAC,GAChC,EAAI,GAEA,EAA2C,CAC/C,mBAAoB,CAAC,OAAS,EAAG,SACjC,SAAU,CAAC,OAAS,EAAG,SACvB,WAAY,CAAC,OAAS,EAAG,QACzB,WAAY,CAAC,OAAS,EAAG,QACzB,YAAa,CAAC,OAAS,EAAG,SAC1B,UAAW,CAAC,EAAG,EAAG,GAClB,iBAAkB,CAAC,OAAS,EAAG,QAC/B,YAAa,CAAC,OAAS,EAAG,QAC1B,aAAc,CAAC,OAAS,EAAG,QAC3B,iBAAkB,CAAC,OAAS,EAAG,QAC/B,WAAY,CAAC,OAAS,EAAG,SACzB,gBAAiB,CAAC,OAAS,EAAG,SAC9B,eAAgB,CAAC,OAAS,EAAG,QAC7B,cAAe,CAAC,OAAS,EAAG,SAC5B,KAAM,CAAC,OAAS,EAAG,SACnB,iBAAkB,CAAC,OAAS,EAAG,SCnB1B,GAAM,GAAiB,AAAC,GAAuC,CACpE,GAAI,GAAI,EAAI,EAAI,EAAI,EAAI,EACxB,OAAQ,OACD,mBAAoB,CACvB,CAAC,EAAI,EAAI,EAAI,EAAI,EAAI,GAAM,CAAC,IAAM,IAAM,IAAM,IAAM,IAAM,KAC1D,UAEG,WAAY,CACf,CAAC,EAAI,EAAI,EAAI,EAAI,EAAI,GAAM,CAAC,KAAO,IAAM,IAAM,KAAO,KAAO,KAC7D,UAEG,WAAY,CACf,CAAC,EAAI,EAAI,EAAI,EAAI,EAAI,GAAM,CAAC,MAAQ,MAAQ,KAAO,KAAO,IAAM,MAChE,UAEG,WAAY,CACf,CAAC,EAAI,EAAI,EAAI,EAAI,EAAI,GAAM,CACzB,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAE1C,UAEG,YAAa,CAChB,CAAC,EAAI,EAAI,EAAI,EAAI,EAAI,GAAM,CAAC,IAAM,IAAM,IAAM,IAAM,IAAM,KAC1D,UAEG,UAAW,CACd,CAAC,EAAI,EAAI,EAAI,EAAI,EAAI,GAAM,CAAC,KAAO,KAAO,KAAO,KAAO,KAAO,MAC/D,UAEG,iBAAkB,CACrB,CAAC,EAAI,EAAI,EAAI,EAAI,EAAI,GAAM,CAAC,IAAM,IAAM,KAAO,KAAO,IAAM,MAC5D,UAEG,YAAa,CAChB,CAAC,EAAI,EAAI,EAAI,EAAI,EAAI,GAAM,CAAC,KAAO,GAAK,KAAO,KAAO,IAAM,MAC5D,UAEG,aAAc,CACjB,CAAC,EAAI,EAAI,EAAI,EAAI,EAAI,GAAM,CAAC,IAAM,IAAM,IAAM,IAAM,IAAM,KAC1D,UAEG,iBAAkB,CACrB,CAAC,EAAI,EAAI,EAAI,EAAI,EAAI,GAAM,CAAC,KAAO,KAAO,IAAM,GAAK,IAAM,MAC3D,UAEG,WAAY,CACf,CAAC,EAAI,EAAI,EAAI,EAAI,EAAI,GAAM,CAAC,IAAM,IAAM,IAAM,IAAM,IAAM,KAC1D,UAEG,gBAAiB,CACpB,CAAC,EAAI,EAAI,EAAI,EAAI,EAAI,GAAM,CAAC,IAAM,IAAM,IAAM,GAAK,IAAM,KACzD,UAEG,eAAgB,CACnB,CAAC,EAAI,EAAI,EAAI,EAAI,EAAI,GAAM,CACzB,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAE1C,UAEG,cAAe,CAClB,CAAC,EAAI,EAAI,EAAI,EAAI,EAAI,GAAM,CAAC,IAAM,IAAM,IAAM,KAAO,KAAO,KAC5D,UAEG,OAAQ,CACX,CAAC,EAAI,EAAI,EAAI,EAAI,EAAI,GAAM,CAAC,IAAM,IAAM,GAAK,GAAK,IAAM,KACxD,UAEG,iBAAkB,CACrB,CAAC,EAAI,EAAI,EAAI,EAAI,EAAI,GAAM,CAAC,KAAO,KAAO,KAAO,KAAO,KAAO,MAC/D,OAIJ,GAAM,GAAM,EAAK,EACf,EAAM,EACN,EAAO,GAAI,EAAK,GAAM,EACtB,EAAM,EAAK,EACX,EAAM,EACN,EAAO,GAAI,EAAK,GAAM,EACtB,EAAM,EAAK,EACX,EAAM,EACN,EAAO,GAAI,EAAK,GAAM,EACtB,EAAS,EAAkB,GAC3B,EAAM,EAAO,GACb,EAAM,EAAO,GACb,EAAM,EAAO,GAET,CAAC,EAAK,EAAK,GAAO,EAAO,0BAC7B,EAAO,IAAI,CACT,CAAC,EAAK,EAAK,GACX,CAAC,EAAK,EAAK,GACX,CAAC,EAAK,EAAK,KAEb,CAAC,EAAK,EAAK,IAGb,MAAO,GAAO,UAAU,CACtB,CAAC,EAAM,EAAK,EAAM,EAAK,EAAM,GAC7B,CAAC,EAAM,EAAK,EAAM,EAAK,EAAM,GAC7B,CAAC,EAAM,EAAK,EAAM,EAAK,EAAM,MCvG1B,GAAM,GAAgB,AAAC,GAAkC,EAAI,IAAU,EAExE,EAAsC,CAC1C,MAAO,EACP,MAAO,IACP,MAAO,IACP,KAAM,KACN,KAAM,GCND,GAAM,GAAU,CAAC,EAAgB,IAAuC,CAC7E,GAAI,GAAI,EAAc,GAGtB,GAAI,EAAI,EACN,MAAO,IAAU,EAAI,KAAK,IAAI,EAAQ,EAAI,GAAK,CAAC,KAAK,IAAI,CAAC,EAAQ,EAAI,GACjE,GAAI,EAAI,EAAG,CAEhB,GAAI,GAAO,EACX,MAAI,GAAS,GACX,GAAO,GACP,EAAS,CAAC,GAGV,EACC,IAAU,SACP,EAAS,MACT,MAAQ,KAAK,IAAI,EAAQ,EAAM,KAAO,UAEvC,CAEL,GAAI,GAAO,EACX,MAAI,GAAS,GACX,GAAO,GACP,EAAS,CAAC,GAGV,EACC,IAAU,IAAQ,MACd,EAAS,MAAW,KACrB,KAAO,KAAK,IAAI,EAAQ,EAAM,GAAO,OC1BxC,GAAM,GAAa,AAAC,GAAsC,CAC/D,GAAM,CAAC,EAAG,EAAG,GAAK,EACZ,EAAK,IAAM,KAAK,GAAM,KAAK,MAAM,EAAG,GAE1C,MAAO,CACL,EACA,KAAK,KAAK,KAAK,IAAI,EAAG,GAAK,KAAK,IAAI,EAAG,IACvC,EAAK,IAAK,EAAI,EAAI,OAIT,EAAW,CACtB,EACA,CAAE,WAAW,EAAgB,WAAkD,KAC7D,CAClB,GAAM,CAAC,EAAG,EAAG,GAAK,EAEZ,EAAI,EAAI,EAAK,EAAK,KAAK,IAAK,GAAI,IAAM,IAAK,GAAK,EAAI,EAEpD,EAAW,EAAe,GAC9B,EAAM,EAAS,GACf,EAAM,EAAS,GACf,EAAM,EAAS,GACf,EAAM,EAAM,GAAK,EAAM,EAAI,EAC3B,EAAO,EAAI,EAAO,EAClB,EAAO,EAAI,EAAO,EAClB,EAAI,EAAM,IAAK,EAAM,GAAI,GAAK,EAAI,GAAO,GACzC,EAAI,GAAK,EACT,EAAI,GAAK,EACT,EAAK,EAAI,EAAO,IAAK,EAAM,GAAI,GAAK,EAAI,GAAO,GAC/C,EAAK,GAAI,GAAM,GAAI,GACnB,EAAI,EAAI,EAAI,EAEd,MAAO,CAAC,EAAG,EAAG,IAGH,GAAW,CACtB,EACA,CAAE,WAAW,EAAgB,WAAkD,KAExE,EAAS,EAAS,EAAK,CAAE,aAAa,CAAE,aAGpC,EAAW,CACtB,EACA,CAAE,WAAW,EAAgB,WAAkD,KAExE,EAAS,EAAS,EAAK,CAAE,aAAa,CAAE,aAGpC,GAAa,CACxB,EACA,CAAE,WAAW,EAAgB,WAAkD,KAExE,EAAW,EAAS,EAAK,CAAE,cAGvB,GAAW,CACtB,EACA,CACE,aAAa,EAAgB,SAC7B,WAAW,EAAgB,UAC3B,WAAW,EAAgB,UAC3B,aAAa,EAAgB,aACT,KAEf,EAAS,EAAS,EAAK,CAAE,aAAa,CAC3C,aACA,WACA,WACA,eClEG,GAAM,GAAW,CACtB,EACA,CAAE,WAAW,EAAgB,WAAkD,KAC7D,CAClB,GAAM,GAAI,EAAI,GACZ,EAAI,EAAI,GACR,EAAI,EAAI,GACR,EAAW,EAAe,GAC1B,EAAM,EAAS,GACf,EAAM,EAAS,GACf,EAAM,EAAS,GACf,EAAM,EAAI,EACV,EAAM,EAAI,EACV,EAAM,EAAI,EACV,EAAM,EAAM,EAAK,KAAK,IAAI,EAAK,EAAI,GAAM,GAAK,EAAM,IAAM,IAC1D,EAAM,EAAM,EAAK,KAAK,IAAI,EAAK,EAAI,GAAM,GAAK,EAAM,IAAM,IAC1D,EAAM,EAAM,EAAK,KAAK,IAAI,EAAK,EAAI,GAAM,GAAK,EAAM,IAAM,IAE5D,MAAO,CAAC,IAAM,EAAM,GAAI,IAAO,GAAM,GAAM,IAAO,GAAM,KAG7C,EAAW,CACtB,EACA,CAAE,WAAW,EAAgB,WAAkD,KAC7D,CAClB,GAAM,CAAC,EAAG,EAAG,GAAK,EAChB,EAAW,EAAe,GAC1B,EAAM,EAAS,GACf,EAAM,EAAS,GACf,EAAM,EAAS,GACf,EAAM,EAAI,GAAK,EAAI,EAAI,EACvB,EAAK,EAAM,EAAK,EAAI,EAAK,EAAM,EAC/B,EAAK,EAAM,EAAK,EAAI,EAAK,EAAM,EAC/B,EAAO,EAAI,EAAQ,GAAM,GAAK,EAAM,EAAI,GACxC,EAAO,EAAI,EAAQ,GAAM,GAAK,EAAM,EAAI,GACxC,EAAK,EAAI,EACT,EAAI,EAAK,EAAK,IAAM,KAAK,IAAI,EAAI,EAAI,GAAK,GAAK,EAAK,EAEtD,MAAO,CAAC,EAAG,GAAK,EAAK,GAAK,GAAM,GAAK,EAAK,GAAK,KAGpC,EAAW,CACtB,EACA,CACE,aAAa,EAAgB,SAC7B,WAAW,EAAgB,UAC3B,WAAW,EAAgB,UAC3B,aAAa,EAAgB,aACT,KACJ,CAClB,GAAI,GAAO,EACL,EAAS,EAAiB,GAEhC,GAAI,GAAc,OAAQ,CAExB,GAAM,CAAC,EAAI,EAAI,GAAM,EAAO,0BAC1B,EAAe,GACf,GAEE,CAAC,EAAI,EAAI,GAAM,EAAO,0BACxB,EAAkB,GAClB,GAGF,EAAO,EAAO,0BACZ,EACA,EAAO,uBACL,EACA,EAAO,uBACL,CACE,CAAC,EAAK,EAAI,EAAG,GACb,CAAC,EAAG,EAAK,EAAI,GACb,CAAC,EAAG,EAAG,EAAK,IAEd,EAAO,IAAI,MAWnB,MAAO,AALK,GAAO,0BACjB,EACA,EAAO,IAAI,EAAe,KAGjB,IACT,AAAC,GAAM,IAAM,EAAQ,EAAG,KAIf,EAAW,CACtB,EACA,CAAE,WAAW,EAAgB,WAAkD,KAC7D,CAClB,GAAM,CAAC,EAAG,EAAG,GAAK,EAChB,EAAM,EAAI,EAAI,EAEhB,GAAI,EAAM,EACR,MAAO,CAAC,EAAI,EAAK,EAAI,EAAK,GAGvB,CACH,GAAI,CAAC,EAAM,EAAM,GAAQ,EAAe,GACtC,EAAS,EAAO,EAAO,EACzB,MAAO,CAAC,EAAO,EAAQ,EAAO,EAAQ,KAI7B,GAAa,CACxB,EACA,CAAE,WAAW,EAAgB,WAAkD,KAExE,EAAW,EAAS,EAAK,CAAE,cAGvB,GAAa,CACxB,EACA,CAAE,WAAW,EAAgB,WAAkD,KAExE,EAAW,EAAS,EAAK,CAAE,cC3H7B,GAAM,GAAa,AAAC,GAAsC,CAC/D,GAAM,CAAC,EAAG,EAAG,GAAK,EAEd,EAAK,IAAM,KAAK,GAAM,KAAK,MAAM,EAAG,GACxC,MAAO,CACL,EACA,KAAK,KAAK,KAAK,IAAI,EAAG,GAAK,KAAK,IAAI,EAAG,IACvC,EAAK,IAAK,EAAI,EAAI,OAIT,GAAW,CACtB,EACA,CACE,aAAa,EAAgB,SAC7B,WAAW,EAAgB,UAC3B,WAAW,EAAgB,UAC3B,aAAa,EAAgB,aACT,KAEf,EAAS,EAAS,EAAK,CAAE,aAAa,CAC3C,aACA,WACA,WACA,eAIS,EAAW,CACtB,EACA,CAAE,WAAW,EAAgB,WAAkD,KAC7D,CAClB,GAAI,GAAI,EAAI,GACV,EAAI,EAAI,GACR,EAAI,EAAI,GACR,EAAO,GAAI,IAAM,IACjB,EAAM,EAAI,IAAM,EAChB,EAAM,EAAM,EAAI,IAChB,EAAM,KAAK,IAAI,EAAK,GAAK,EAAK,KAAK,IAAI,EAAK,GAAM,KAAM,EAAM,IAAM,EACpE,EAAM,EAAI,EAAK,EAAK,KAAK,IAAK,GAAI,IAAM,IAAK,GAAK,EAAI,EACtD,EAAM,KAAK,IAAI,EAAK,GAAK,EAAK,KAAK,IAAI,EAAK,GAAM,KAAM,EAAM,IAAM,EACpE,EAAW,EAAe,GAE5B,MAAO,CAAC,EAAM,EAAS,GAAI,EAAM,EAAS,GAAI,EAAM,EAAS,KAGlD,GAAW,CACtB,EACA,CAAE,WAAW,EAAgB,WAAkD,KAExE,EAAS,EAAS,EAAK,CAAE,aAAa,CAAE,aAGpC,GAAW,CACtB,EACA,CAAE,WAAW,EAAgB,WAAkD,KAExE,EAAS,EAAS,EAAK,CAAE,aAAa,CAAE,aAGpC,GAAa,CACxB,EACA,CAAE,WAAW,EAAgB,WAAkD,KAExE,EAAW,GAAS,EAAK,CAAE,cChE7B,GAAM,GAAa,AAAC,GAAsC,CAC/D,GAAM,CAAC,EAAG,EAAG,GAAK,EAClB,MAAO,CACL,EACA,EAAI,KAAK,IAAK,EAAI,KAAK,GAAM,KAC7B,EAAI,KAAK,IAAK,EAAI,KAAK,GAAM,OAIpB,GAAa,CACxB,EACA,CAAE,WAAW,EAAgB,WAAkD,KAExE,EAAS,EAAW,GAAM,CAAE,aAGxB,GAAa,CACxB,EACA,CAAE,WAAW,EAAgB,WAAkD,KAExE,EAAS,EAAS,EAAW,GAAM,CAAE,aAAa,CAAE,aAGhD,GAAa,CACxB,EACA,CAAE,WAAW,EAAgB,WAAkD,KAExE,EAAS,EAAS,EAAW,GAAM,CAAE,aAAa,CAAE,aAGhD,GAAe,CAC1B,EACA,CAAE,WAAW,EAAgB,WAAkD,KAExE,EAAW,GAAW,EAAK,CAAE,cAGzB,GAAa,CACxB,EACA,CACE,aAAa,EAAgB,SAC7B,WAAW,EAAgB,UAC3B,WAAW,EAAgB,UAC3B,aAAa,EAAgB,aACT,KAEf,EAAS,GAAW,EAAK,CAAE,aAAa,CAC7C,aACA,WACA,WACA,eClDG,GAAM,IAAa,AAAC,GAAsC,CAC/D,GAAM,CAAC,EAAG,EAAG,GAAK,EAElB,MAAO,CACL,EACA,EAAI,KAAK,IAAK,EAAI,KAAK,GAAM,KAC7B,EAAI,KAAK,IAAK,EAAI,KAAK,GAAM,OAIpB,EAAa,CACxB,EACA,CAAE,WAAW,EAAgB,WAAkD,KAExE,EAAS,GAAW,GAAM,CAAE,aAGxB,GAAa,CACxB,EACA,CAAE,WAAW,EAAgB,WAAkD,KAExE,EAAS,EAAW,EAAK,CAAE,aAAa,CAAE,aAGtC,GAAa,CACxB,EACA,CAAE,WAAW,EAAgB,WAAkD,KAExE,EAAS,EAAW,EAAK,CAAE,aAAa,CAAE,aAGtC,GAAe,CAC1B,EACA,CAAE,WAAW,EAAgB,WAAkD,KAExE,EAAW,GAAW,EAAK,CAAE,cAGzB,GAAa,CACxB,EACA,CACE,aAAa,EAAgB,SAC7B,WAAW,EAAgB,UAC3B,WAAW,EAAgB,UAC3B,aAAa,EAAgB,aACT,KAEf,EAAS,EAAW,EAAK,CAAE,aAAa,CAC7C,aACA,WACA,WACA,eCpDG,GAAM,GAAiB,CAC5B,EACA,IACW,CACX,GAAM,GAAI,EAAc,GAExB,GAAI,EAAI,EACN,MAAO,IAAa,EAAI,KAAK,IAAI,EAAW,GAAK,CAAC,KAAK,IAAI,CAAC,EAAW,GAClE,GAAI,EAAI,EAAG,CAEhB,GAAI,GAAO,EACX,MAAI,GAAY,GACd,GAAO,GACP,EAAY,CAAC,GAGb,EACC,IAAa,OACV,EAAY,MACZ,KAAK,IAAK,GAAY,MAAS,MAAO,UAEvC,CAEL,GAAI,GAAO,EACX,MAAI,GAAY,GACd,GAAO,GACP,EAAY,CAAC,GAGb,EACC,IAAa,IACT,KAAS,EAAa,MACpB,OAAY,EAAY,MAAY,EAAY,OACjD,EACA,MACF,WC7BH,GAAM,GAAW,CACtB,EACA,CACE,aAAa,EAAgB,SAC7B,WAAW,EAAgB,UAC3B,aAAa,EAAgB,YAC7B,WAAW,EAAgB,WACP,KACJ,CAElB,GAAM,GAAS,EAAiB,GAC1B,EAAkB,EAAkB,GACpC,EAAe,EAAe,GAC9B,EAAc,EAAe,GAGnC,EAAM,EAAI,IAAI,AAAC,GACb,EAAe,EAAI,IAAK,IAG1B,GAAI,GAAM,EAAO,0BAA0B,EAAK,GAGhD,GAAI,GAAc,OAAQ,CAExB,GAAM,CAAC,EAAI,EAAI,GAAM,EAAO,0BAC1B,EACA,GAEI,CAAC,EAAI,EAAI,GAAM,EAAO,0BAA0B,EAAc,GAEpE,MAAO,GAAO,0BACZ,EACA,EAAO,uBACL,EACA,EAAO,uBACL,CACE,CAAC,EAAK,EAAI,EAAG,GACb,CAAC,EAAG,EAAK,EAAI,GACb,CAAC,EAAG,EAAG,EAAK,IAEd,EAAO,IAAI,UAKjB,OAAO,IAIE,GAAW,CACtB,EACA,CACE,aAAa,EAAgB,SAC7B,WAAW,EAAgB,UAC3B,aAAa,EAAgB,YAC7B,WAAW,EAAgB,WACP,KAEf,EACL,EAAS,EAAK,CAAE,aAAY,WAAU,aAAY,aAClD,CAAE,aAIO,GAAW,CACtB,EACA,CACE,aAAa,EAAgB,SAC7B,WAAW,EAAgB,UAC3B,aAAa,EAAgB,YAC7B,WAAW,EAAgB,WACP,KAEf,EACL,EAAS,EAAK,CAAE,aAAY,WAAU,WAAU,eAChD,CAAE,aAIO,GAAa,CACxB,EACA,CACE,aAAa,EAAgB,SAC7B,WAAW,EAAgB,UAC3B,aAAa,EAAgB,YAC7B,WAAW,EAAgB,WACP,KAEf,EACL,GAAS,EAAK,CAAE,aAAY,WAAU,WAAU,gBAIvC,GAAW,CACtB,EACA,CACE,aAAa,EAAgB,SAC7B,WAAW,EAAgB,UAC3B,aAAa,EAAgB,YAC7B,WAAW,EAAgB,WACP,KAEf,EACL,EAAS,EAAK,CAAE,aAAY,WAAU,WAAU,eAChD,CAAE,aAIO,GAAa,CACxB,EACA,CACE,aAAa,EAAgB,SAC7B,WAAW,EAAgB,UAC3B,aAAa,EAAgB,YAC7B,WAAW,EAAgB,WACP,KAEf,EACL,GAAS,EAAK,CAAE,aAAY,WAAU,WAAU,gBC5H7C,GAAM,GAAW,AAAC,GAAsC,CAC7D,GAAM,CAAC,EAAG,EAAG,GAAK,EAClB,MAAI,GAAI,KACC,CAAC,EAAG,EAAG,GAEP,CAAE,EAAI,EAAK,EAAG,EAAK,GAAI,EAAI,GAAK,EAAK,IAInC,GAAW,CACtB,EACA,CAAE,WAAW,EAAgB,WAAkD,KAExE,EAAS,EAAS,GAAM,CAAE,aAGtB,GAAa,CACxB,EACA,CAAE,WAAW,EAAgB,WAAkD,KAExE,EAAW,EAAS,EAAS,GAAM,CAAE,cAGjC,GAAW,CACtB,EACA,CAAE,WAAW,EAAgB,WAAkD,KAExE,EAAS,EAAS,GAAM,CAAE,aAGtB,GAAa,CACxB,EACA,CAAE,WAAW,EAAgB,WAAkD,KAExE,EAAW,EAAS,EAAS,GAAM,CAAE,cAGjC,GAAW,CACtB,EACA,CACE,aAAa,EAAgB,SAC7B,WAAW,EAAgB,UAC3B,WAAW,EAAgB,UAC3B,aAAa,EAAgB,aACT,KAEf,EAAS,EAAS,GAAM,CAC7B,aACA,WACA,WACA","names":[]}