@tryghost/color-utils 0.1.8 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tryghost/color-utils",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.11",
|
|
4
4
|
"repository": "https://github.com/TryGhost/SDK/tree/master/packages/color-utils",
|
|
5
5
|
"author": "Ghost Foundation",
|
|
6
6
|
"license": "MIT",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"mocha": "9.2.1",
|
|
33
|
-
"rollup": "2.
|
|
33
|
+
"rollup": "2.70.0",
|
|
34
34
|
"rollup-plugin-babel": "4.4.0",
|
|
35
35
|
"rollup-plugin-commonjs": "10.1.0",
|
|
36
36
|
"rollup-plugin-node-resolve": "5.2.0",
|
|
@@ -42,5 +42,5 @@
|
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"color": "^3.2.1"
|
|
44
44
|
},
|
|
45
|
-
"gitHead": "
|
|
45
|
+
"gitHead": "6182ab7f7af627c445310aa185a4a5aa2c5d30f6"
|
|
46
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color-utils.min.js","sources":["../../../node_modules/color-name/index.js","../../../node_modules/simple-swizzle/index.js","../../../node_modules/is-arrayish/index.js","../../../node_modules/color-string/index.js","../../../node_modules/color-convert/node_modules/color-name/index.js","../../../node_modules/color-convert/conversions.js","../../../node_modules/color-convert/route.js","../../../node_modules/color-convert/index.js","../../../node_modules/color/index.js","../lib/color-utils.js"],"sourcesContent":["'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\n\nvar reverseNames = {};\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (colorNames.hasOwnProperty(name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar keyword = /(\\D+)/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\n\t\tif (!rgb) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = (parseFloat(match[1]) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = num.toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict';\n\nvar colorString = require('color-string');\nvar convert = require('color-convert');\n\nvar _slice = [].slice;\n\nvar skippedModels = [\n\t// to be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// shouldn't really be in color-convert either...\n\t'hex'\n];\n\nvar hashedModelKeys = {};\nObject.keys(convert).forEach(function (model) {\n\thashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;\n});\n\nvar limiters = {};\n\nfunction Color(obj, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tvar i;\n\tvar channels;\n\n\tif (obj == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (obj instanceof Color) {\n\t\tthis.model = obj.model;\n\t\tthis.color = obj.color.slice();\n\t\tthis.valpha = obj.valpha;\n\t} else if (typeof obj === 'string') {\n\t\tvar result = colorString.get(obj);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + obj);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (obj.length) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tvar newArr = _slice.call(obj, 0, channels);\n\t\tthis.color = zeroArray(newArr, channels);\n\t\tthis.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;\n\t} else if (typeof obj === 'number') {\n\t\t// this is always RGB - can be converted later on.\n\t\tobj &= 0xFFFFFF;\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(obj >> 16) & 0xFF,\n\t\t\t(obj >> 8) & 0xFF,\n\t\t\tobj & 0xFF\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tvar keys = Object.keys(obj);\n\t\tif ('alpha' in obj) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;\n\t\t}\n\n\t\tvar hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(obj));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tvar labels = convert[this.model].labels;\n\t\tvar color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(obj[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tvar limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString: function () {\n\t\treturn this.string();\n\t},\n\n\ttoJSON: function () {\n\t\treturn this[this.model]();\n\t},\n\n\tstring: function (places) {\n\t\tvar self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString: function (places) {\n\t\tvar self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray: function () {\n\t\treturn this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);\n\t},\n\n\tobject: function () {\n\t\tvar result = {};\n\t\tvar channels = convert[this.model].channels;\n\t\tvar labels = convert[this.model].labels;\n\n\t\tfor (var i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray: function () {\n\t\tvar rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject: function () {\n\t\tvar rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround: function (places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);\n\t},\n\n\talpha: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) { return ((val % 360) + 360) % 360; }), // eslint-disable-line brace-style\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(100)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(100)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.rgb().color;\n\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.rgb().color;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight: function () {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = this.rgb();\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\t\treturn rgb;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale: function () {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar rgb = this.rgb().color;\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(val, val, val);\n\t},\n\n\tfade: function (ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer: function (ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.hsl();\n\t\tvar hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix: function (mixinColor, weight) {\n\t\t// ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\t\tvar color1 = mixinColor.rgb();\n\t\tvar color2 = this.rgb();\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t}\n};\n\n// model conversion methods and static constructors\nObject.keys(convert).forEach(function (model) {\n\tif (skippedModels.indexOf(model) !== -1) {\n\t\treturn;\n\t}\n\n\tvar channels = convert[model].channels;\n\n\t// conversion methods\n\tColor.prototype[model] = function () {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments.length) {\n\t\t\treturn new Color(arguments, model);\n\t\t}\n\n\t\tvar newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;\n\t\treturn new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (color) {\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(_slice.call(arguments), channels);\n\t\t}\n\t\treturn new Color(color, model);\n\t};\n});\n\nfunction roundTo(num, places) {\n\treturn Number(num.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (num) {\n\t\treturn roundTo(num, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tmodel.forEach(function (m) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t});\n\n\tmodel = model[0];\n\n\treturn function (val) {\n\t\tvar result;\n\n\t\tif (arguments.length) {\n\t\t\tif (modifier) {\n\t\t\t\tval = modifier(val);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = val;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(val) {\n\treturn Array.isArray(val) ? val : [val];\n}\n\nfunction zeroArray(arr, length) {\n\tfor (var i = 0; i < length; i++) {\n\t\tif (typeof arr[i] !== 'number') {\n\t\t\tarr[i] = 0;\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nmodule.exports = Color;\n","import Color from 'color';\n\nexport {Color};\n\nexport function lightenToContrastThreshold(foreground, background, contrastThreshold) {\n const foregroundColor = Color(foreground);\n const backgroundColor = Color(background);\n\n const {h,s} = foregroundColor.hsl().object();\n\n let newColor = foregroundColor;\n\n while (newColor.contrast(backgroundColor) < contrastThreshold) {\n if (newColor.lightness() >= 100) {\n break;\n }\n\n newColor = Color({h, s, l: newColor.lightness() + 5});\n }\n\n return newColor;\n}\n\nexport function darkenToContrastThreshold(foreground, background, contrastThreshold) {\n const foregroundColor = Color(foreground);\n const backgroundColor = Color(background);\n\n const {h,s} = foregroundColor.hsl().object();\n\n let newColor = foregroundColor;\n\n while (newColor.contrast(backgroundColor) < contrastThreshold) {\n if (newColor.lightness() <= 0) {\n break;\n }\n\n newColor = Color({h, s, l: newColor.lightness() - 5});\n }\n\n return newColor;\n}\n\nexport function textColorForBackgroundColor(background) {\n const backgroundColor = Color(background);\n\n const white = Color({r: 255, g: 255, b: 255});\n const black = Color({r: 0, g: 0, b: 0});\n\n // shared with Portal https://github.com/TryGhost/Portal/blob/317876f20d22431df15e655ea6cc197fe636615e/src/utils/contrast-color.js#L26-L29\n const yiq = (\n backgroundColor.red() * 0.299 +\n backgroundColor.green() * 0.587 +\n backgroundColor.b() * 0.114\n );\n\n return (yiq >= 186) ? black : white;\n}\n"],"names":["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","concat","Array","prototype","slice","swizzle","module","args","obj","results","i","len","length","arg","isArray","splice","Function","Object","getOwnPropertyDescriptor","constructor","name","call","push","wrap","fn","arguments","reverseNames","colorNames","hasOwnProperty","cs","to","get","clamp","num","min","max","Math","hexDouble","str","toString","toUpperCase","string","val","model","substring","toLowerCase","hsl","hwb","rgb","value","match","hexAlpha","i2","parseInt","parseFloat","round","alpha","isNaN","hex","rgba","percent","r","g","b","hsla","hwba","a","keyword","reverseKeywords","key","cssKeywords","convert","channels","labels","hsv","cmyk","xyz","lab","lch","ansi16","ansi256","hcg","apple","Error","defineProperty","h","l","delta","rdif","gdif","bdif","s","v","diff","diffc","c","k","reversed","currentClosestKeyword","x","y","currentClosestDistance","Infinity","distance","pow","z","t1","t2","t3","smin","lmin","hi","floor","f","p","q","t","sl","vmin","n","wh","bl","ratio","m","y2","x2","z2","atan2","PI","sqrt","hr","cos","sin","ansi","color","mult","rem","colorString","split","map","char","join","integer","hue","chroma","mg","pure","w","deriveBFS","fromModel","graph","models","keys","conversions","parent","buildGraph","queue","current","pop","adjacents","adjacent","node","unshift","link","from","wrapConversion","toModel","path","cur","conversion","forEach","routes","route","wrappedFn","result","wrapRounded","raw","wrapRaw","_slice","skippedModels","hashedModelKeys","sort","limiters","Color","this","valpha","newArr","zeroArray","indexOf","hashedKeys","JSON","stringify","limit","freeze","getset","channel","modifier","maxfn","assertArray","arr","toJSON","places","self","percentString","array","object","unitArray","unitObject","Number","toFixed","roundTo","roundToPlace","saturationl","lightness","saturationv","wblack","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","isDark","isLight","negate","lighten","darken","saturate","desaturate","whiten","blacken","grayscale","fade","opaquer","rotate","degrees","mix","mixinColor","weight","color1","undefined","w1","w2","newAlpha","foreground","background","contrastThreshold","foregroundColor","backgroundColor","newColor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"color-utils.min.js","sources":["../../../node_modules/color-name/index.js","../../../node_modules/simple-swizzle/index.js","../../../node_modules/is-arrayish/index.js","../../../node_modules/color-string/index.js","../../../node_modules/color-convert/node_modules/color-name/index.js","../../../node_modules/color-convert/conversions.js","../../../node_modules/color-convert/route.js","../../../node_modules/color-convert/index.js","../../../node_modules/color/index.js","../lib/color-utils.js"],"sourcesContent":["'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\n\nvar reverseNames = {};\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (colorNames.hasOwnProperty(name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar keyword = /(\\D+)/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\n\t\tif (!rgb) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = (parseFloat(match[1]) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = num.toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict';\n\nvar colorString = require('color-string');\nvar convert = require('color-convert');\n\nvar _slice = [].slice;\n\nvar skippedModels = [\n\t// to be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// shouldn't really be in color-convert either...\n\t'hex'\n];\n\nvar hashedModelKeys = {};\nObject.keys(convert).forEach(function (model) {\n\thashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;\n});\n\nvar limiters = {};\n\nfunction Color(obj, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tvar i;\n\tvar channels;\n\n\tif (obj == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (obj instanceof Color) {\n\t\tthis.model = obj.model;\n\t\tthis.color = obj.color.slice();\n\t\tthis.valpha = obj.valpha;\n\t} else if (typeof obj === 'string') {\n\t\tvar result = colorString.get(obj);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + obj);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (obj.length) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tvar newArr = _slice.call(obj, 0, channels);\n\t\tthis.color = zeroArray(newArr, channels);\n\t\tthis.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;\n\t} else if (typeof obj === 'number') {\n\t\t// this is always RGB - can be converted later on.\n\t\tobj &= 0xFFFFFF;\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(obj >> 16) & 0xFF,\n\t\t\t(obj >> 8) & 0xFF,\n\t\t\tobj & 0xFF\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tvar keys = Object.keys(obj);\n\t\tif ('alpha' in obj) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;\n\t\t}\n\n\t\tvar hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(obj));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tvar labels = convert[this.model].labels;\n\t\tvar color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(obj[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tvar limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString: function () {\n\t\treturn this.string();\n\t},\n\n\ttoJSON: function () {\n\t\treturn this[this.model]();\n\t},\n\n\tstring: function (places) {\n\t\tvar self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString: function (places) {\n\t\tvar self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray: function () {\n\t\treturn this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);\n\t},\n\n\tobject: function () {\n\t\tvar result = {};\n\t\tvar channels = convert[this.model].channels;\n\t\tvar labels = convert[this.model].labels;\n\n\t\tfor (var i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray: function () {\n\t\tvar rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject: function () {\n\t\tvar rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround: function (places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);\n\t},\n\n\talpha: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) { return ((val % 360) + 360) % 360; }), // eslint-disable-line brace-style\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(100)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(100)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.rgb().color;\n\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.rgb().color;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight: function () {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = this.rgb();\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\t\treturn rgb;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale: function () {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar rgb = this.rgb().color;\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(val, val, val);\n\t},\n\n\tfade: function (ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer: function (ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.hsl();\n\t\tvar hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix: function (mixinColor, weight) {\n\t\t// ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\t\tvar color1 = mixinColor.rgb();\n\t\tvar color2 = this.rgb();\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t}\n};\n\n// model conversion methods and static constructors\nObject.keys(convert).forEach(function (model) {\n\tif (skippedModels.indexOf(model) !== -1) {\n\t\treturn;\n\t}\n\n\tvar channels = convert[model].channels;\n\n\t// conversion methods\n\tColor.prototype[model] = function () {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments.length) {\n\t\t\treturn new Color(arguments, model);\n\t\t}\n\n\t\tvar newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;\n\t\treturn new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (color) {\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(_slice.call(arguments), channels);\n\t\t}\n\t\treturn new Color(color, model);\n\t};\n});\n\nfunction roundTo(num, places) {\n\treturn Number(num.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (num) {\n\t\treturn roundTo(num, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tmodel.forEach(function (m) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t});\n\n\tmodel = model[0];\n\n\treturn function (val) {\n\t\tvar result;\n\n\t\tif (arguments.length) {\n\t\t\tif (modifier) {\n\t\t\t\tval = modifier(val);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = val;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(val) {\n\treturn Array.isArray(val) ? val : [val];\n}\n\nfunction zeroArray(arr, length) {\n\tfor (var i = 0; i < length; i++) {\n\t\tif (typeof arr[i] !== 'number') {\n\t\t\tarr[i] = 0;\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nmodule.exports = Color;\n","import Color from 'color';\n\nexport {Color};\n\nexport function lightenToContrastThreshold(foreground, background, contrastThreshold) {\n const foregroundColor = Color(foreground);\n const backgroundColor = Color(background);\n\n const {h,s} = foregroundColor.hsl().object();\n\n let newColor = foregroundColor;\n\n while (newColor.contrast(backgroundColor) < contrastThreshold) {\n if (newColor.lightness() >= 100) {\n break;\n }\n\n newColor = Color({h, s, l: newColor.lightness() + 5});\n }\n\n return newColor;\n}\n\nexport function darkenToContrastThreshold(foreground, background, contrastThreshold) {\n const foregroundColor = Color(foreground);\n const backgroundColor = Color(background);\n\n const {h,s} = foregroundColor.hsl().object();\n\n let newColor = foregroundColor;\n\n while (newColor.contrast(backgroundColor) < contrastThreshold) {\n if (newColor.lightness() <= 0) {\n break;\n }\n\n newColor = Color({h, s, l: newColor.lightness() - 5});\n }\n\n return newColor;\n}\n\nexport function textColorForBackgroundColor(background) {\n const backgroundColor = Color(background);\n\n const white = Color({r: 255, g: 255, b: 255});\n const black = Color({r: 0, g: 0, b: 0});\n\n // shared with Portal https://github.com/TryGhost/Portal/blob/317876f20d22431df15e655ea6cc197fe636615e/src/utils/contrast-color.js#L26-L29\n const yiq = (\n backgroundColor.red() * 0.299 +\n backgroundColor.green() * 0.587 +\n backgroundColor.b() * 0.114\n );\n\n return (yiq >= 186) ? black : white;\n}\n"],"names":["colorName","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","concat","Array","prototype","slice","swizzle","module","exports","args","obj","results","i","len","length","arg","isArray","splice","Function","Object","getOwnPropertyDescriptor","constructor","name","call","push","wrap","fn","arguments","reverseNames","colorNames","hasOwnProperty","cs","to","get","clamp","num","min","max","Math","hexDouble","str","toString","toUpperCase","string","val","model","substring","toLowerCase","hsl","hwb","rgb","value","match","hexAlpha","i2","parseInt","parseFloat","round","alpha","isNaN","hex","rgba","percent","r","g","b","hsla","hwba","a","keyword","reverseKeywords","key","cssKeywords","convert","channels","labels","hsv","cmyk","xyz","lab","lch","ansi16","ansi256","hcg","apple","Error","defineProperty","h","l","delta","rdif","gdif","bdif","s","v","diff","diffc","c","k","reversed","currentClosestKeyword","x","y","currentClosestDistance","Infinity","distance","pow","z","t1","t2","t3","smin","lmin","hi","floor","f","p","q","t","sl","vmin","n","wh","bl","ratio","m","y2","x2","z2","atan2","PI","sqrt","hr","cos","sin","ansi","color","mult","rem","colorString","split","map","char","join","integer","hue","chroma","mg","pure","w","deriveBFS","fromModel","graph","models","keys","conversions","parent","buildGraph","queue","current","pop","adjacents","adjacent","node","unshift","link","from","wrapConversion","toModel","path","cur","conversion","forEach","routes","route","wrappedFn","result","wrapRounded","raw","wrapRaw","colorConvert","_slice","skippedModels","hashedModelKeys","sort","limiters","Color","this","valpha","newArr","zeroArray","indexOf","hashedKeys","JSON","stringify","limit","freeze","getset","channel","modifier","maxfn","assertArray","arr","toJSON","places","self","percentString","array","object","unitArray","unitObject","Number","toFixed","roundTo","roundToPlace","saturationl","lightness","saturationv","wblack","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","isDark","isLight","negate","lighten","darken","saturate","desaturate","whiten","blacken","grayscale","fade","opaquer","rotate","degrees","mix","mixinColor","weight","color1","undefined","w1","w2","newAlpha","foreground","background","contrastThreshold","foregroundColor","backgroundColor","_foregroundColor$hsl$2","newColor","_foregroundColor$hsl$"],"mappings":"oTAEA,IAAAA,EAAiB,CAChBC,UAAa,CAAC,IAAK,IAAK,KACxBC,aAAgB,CAAC,IAAK,IAAK,KAC3BC,KAAQ,CAAC,EAAG,IAAK,KACjBC,WAAc,CAAC,IAAK,IAAK,KACzBC,MAAS,CAAC,IAAK,IAAK,KACpBC,MAAS,CAAC,IAAK,IAAK,KACpBC,OAAU,CAAC,IAAK,IAAK,KACrBC,MAAS,CAAC,EAAG,EAAG,GAChBC,eAAkB,CAAC,IAAK,IAAK,KAC7BC,KAAQ,CAAC,EAAG,EAAG,KACfC,WAAc,CAAC,IAAK,GAAI,KACxBC,MAAS,CAAC,IAAK,GAAI,IACnBC,UAAa,CAAC,IAAK,IAAK,KACxBC,UAAa,CAAC,GAAI,IAAK,KACvBC,WAAc,CAAC,IAAK,IAAK,GACzBC,UAAa,CAAC,IAAK,IAAK,IACxBC,MAAS,CAAC,IAAK,IAAK,IACpBC,eAAkB,CAAC,IAAK,IAAK,KAC7BC,SAAY,CAAC,IAAK,IAAK,KACvBC,QAAW,CAAC,IAAK,GAAI,IACrBC,KAAQ,CAAC,EAAG,IAAK,KACjBC,SAAY,CAAC,EAAG,EAAG,KACnBC,SAAY,CAAC,EAAG,IAAK,KACrBC,cAAiB,CAAC,IAAK,IAAK,IAC5BC,SAAY,CAAC,IAAK,IAAK,KACvBC,UAAa,CAAC,EAAG,IAAK,GACtBC,SAAY,CAAC,IAAK,IAAK,KACvBC,UAAa,CAAC,IAAK,IAAK,KACxBC,YAAe,CAAC,IAAK,EAAG,KACxBC,eAAkB,CAAC,GAAI,IAAK,IAC5BC,WAAc,CAAC,IAAK,IAAK,GACzBC,WAAc,CAAC,IAAK,GAAI,KACxBC,QAAW,CAAC,IAAK,EAAG,GACpBC,WAAc,CAAC,IAAK,IAAK,KACzBC,aAAgB,CAAC,IAAK,IAAK,KAC3BC,cAAiB,CAAC,GAAI,GAAI,KAC1BC,cAAiB,CAAC,GAAI,GAAI,IAC1BC,cAAiB,CAAC,GAAI,GAAI,IAC1BC,cAAiB,CAAC,EAAG,IAAK,KAC1BC,WAAc,CAAC,IAAK,EAAG,KACvBC,SAAY,CAAC,IAAK,GAAI,KACtBC,YAAe,CAAC,EAAG,IAAK,KACxBC,QAAW,CAAC,IAAK,IAAK,KACtBC,QAAW,CAAC,IAAK,IAAK,KACtBC,WAAc,CAAC,GAAI,IAAK,KACxBC,UAAa,CAAC,IAAK,GAAI,IACvBC,YAAe,CAAC,IAAK,IAAK,KAC1BC,YAAe,CAAC,GAAI,IAAK,IACzBC,QAAW,CAAC,IAAK,EAAG,KACpBC,UAAa,CAAC,IAAK,IAAK,KACxBC,WAAc,CAAC,IAAK,IAAK,KACzBC,KAAQ,CAAC,IAAK,IAAK,GACnBC,UAAa,CAAC,IAAK,IAAK,IACxBC,KAAQ,CAAC,IAAK,IAAK,KACnBC,MAAS,CAAC,EAAG,IAAK,GAClBC,YAAe,CAAC,IAAK,IAAK,IAC1BC,KAAQ,CAAC,IAAK,IAAK,KACnBC,SAAY,CAAC,IAAK,IAAK,KACvBC,QAAW,CAAC,IAAK,IAAK,KACtBC,UAAa,CAAC,IAAK,GAAI,IACvBC,OAAU,CAAC,GAAI,EAAG,KAClBC,MAAS,CAAC,IAAK,IAAK,KACpBC,MAAS,CAAC,IAAK,IAAK,KACpBC,SAAY,CAAC,IAAK,IAAK,KACvBC,cAAiB,CAAC,IAAK,IAAK,KAC5BC,UAAa,CAAC,IAAK,IAAK,GACxBC,aAAgB,CAAC,IAAK,IAAK,KAC3BC,UAAa,CAAC,IAAK,IAAK,KACxBC,WAAc,CAAC,IAAK,IAAK,KACzBC,UAAa,CAAC,IAAK,IAAK,KACxBC,qBAAwB,CAAC,IAAK,IAAK,KACnCC,UAAa,CAAC,IAAK,IAAK,KACxBC,WAAc,CAAC,IAAK,IAAK,KACzBC,UAAa,CAAC,IAAK,IAAK,KACxBC,UAAa,CAAC,IAAK,IAAK,KACxBC,YAAe,CAAC,IAAK,IAAK,KAC1BC,cAAiB,CAAC,GAAI,IAAK,KAC3BC,aAAgB,CAAC,IAAK,IAAK,KAC3BC,eAAkB,CAAC,IAAK,IAAK,KAC7BC,eAAkB,CAAC,IAAK,IAAK,KAC7BC,eAAkB,CAAC,IAAK,IAAK,KAC7BC,YAAe,CAAC,IAAK,IAAK,KAC1BC,KAAQ,CAAC,EAAG,IAAK,GACjBC,UAAa,CAAC,GAAI,IAAK,IACvBC,MAAS,CAAC,IAAK,IAAK,KACpBC,QAAW,CAAC,IAAK,EAAG,KACpBC,OAAU,CAAC,IAAK,EAAG,GACnBC,iBAAoB,CAAC,IAAK,IAAK,KAC/BC,WAAc,CAAC,EAAG,EAAG,KACrBC,aAAgB,CAAC,IAAK,GAAI,KAC1BC,aAAgB,CAAC,IAAK,IAAK,KAC3BC,eAAkB,CAAC,GAAI,IAAK,KAC5BC,gBAAmB,CAAC,IAAK,IAAK,KAC9BC,kBAAqB,CAAC,EAAG,IAAK,KAC9BC,gBAAmB,CAAC,GAAI,IAAK,KAC7BC,gBAAmB,CAAC,IAAK,GAAI,KAC7BC,aAAgB,CAAC,GAAI,GAAI,KACzBC,UAAa,CAAC,IAAK,IAAK,KACxBC,UAAa,CAAC,IAAK,IAAK,KACxBC,SAAY,CAAC,IAAK,IAAK,KACvBC,YAAe,CAAC,IAAK,IAAK,KAC1BC,KAAQ,CAAC,EAAG,EAAG,KACfC,QAAW,CAAC,IAAK,IAAK,KACtBC,MAAS,CAAC,IAAK,IAAK,GACpBC,UAAa,CAAC,IAAK,IAAK,IACxBC,OAAU,CAAC,IAAK,IAAK,GACrBC,UAAa,CAAC,IAAK,GAAI,GACvBC,OAAU,CAAC,IAAK,IAAK,KACrBC,cAAiB,CAAC,IAAK,IAAK,KAC5BC,UAAa,CAAC,IAAK,IAAK,KACxBC,cAAiB,CAAC,IAAK,IAAK,KAC5BC,cAAiB,CAAC,IAAK,IAAK,KAC5BC,WAAc,CAAC,IAAK,IAAK,KACzBC,UAAa,CAAC,IAAK,IAAK,KACxBC,KAAQ,CAAC,IAAK,IAAK,IACnBC,KAAQ,CAAC,IAAK,IAAK,KACnBC,KAAQ,CAAC,IAAK,IAAK,KACnBC,WAAc,CAAC,IAAK,IAAK,KACzBC,OAAU,CAAC,IAAK,EAAG,KACnBC,cAAiB,CAAC,IAAK,GAAI,KAC3BC,IAAO,CAAC,IAAK,EAAG,GAChBC,UAAa,CAAC,IAAK,IAAK,KACxBC,UAAa,CAAC,GAAI,IAAK,KACvBC,YAAe,CAAC,IAAK,GAAI,IACzBC,OAAU,CAAC,IAAK,IAAK,KACrBC,WAAc,CAAC,IAAK,IAAK,IACzBC,SAAY,CAAC,GAAI,IAAK,IACtBC,SAAY,CAAC,IAAK,IAAK,KACvBC,OAAU,CAAC,IAAK,GAAI,IACpBC,OAAU,CAAC,IAAK,IAAK,KACrBC,QAAW,CAAC,IAAK,IAAK,KACtBC,UAAa,CAAC,IAAK,GAAI,KACvBC,UAAa,CAAC,IAAK,IAAK,KACxBC,UAAa,CAAC,IAAK,IAAK,KACxBC,KAAQ,CAAC,IAAK,IAAK,KACnBC,YAAe,CAAC,EAAG,IAAK,KACxBC,UAAa,CAAC,GAAI,IAAK,KACvBC,IAAO,CAAC,IAAK,IAAK,KAClBC,KAAQ,CAAC,EAAG,IAAK,KACjBC,QAAW,CAAC,IAAK,IAAK,KACtBC,OAAU,CAAC,IAAK,GAAI,IACpBC,UAAa,CAAC,GAAI,IAAK,KACvBC,OAAU,CAAC,IAAK,IAAK,KACrBC,MAAS,CAAC,IAAK,IAAK,KACpBC,MAAS,CAAC,IAAK,IAAK,KACpBC,WAAc,CAAC,IAAK,IAAK,KACzBC,OAAU,CAAC,IAAK,IAAK,GACrBC,YAAe,CAAC,IAAK,IAAK,sBClJ3B,IAAIC,EAASC,MAAMC,UAAUF,OACzBG,EAAQF,MAAMC,UAAUC,MAExBC,EAAUC,EAAcC,QAAG,SAAiBC,GAG/C,IAFA,ICRoCC,EDQhCC,EAAU,GAELC,EAAI,EAAGC,EAAMJ,EAAKK,OAAQF,EAAIC,EAAKD,IAAK,CAChD,IAAIG,EAAMN,EAAKG,ICXoBF,EDapBK,ICZW,iBAARL,IAIZA,aAAeP,OAASA,MAAMa,QAAQN,IAC3CA,EAAII,QAAU,IAAMJ,EAAIO,kBAAkBC,UACzCC,OAAOC,yBAAyBV,EAAMA,EAAII,OAAS,IAAgC,WAAzBJ,EAAIW,YAAYC,ODQ3EX,EAAUT,EAAOqB,KAAKZ,EAASN,EAAMkB,KAAKR,IAE1CJ,EAAQa,KAAKT,GAIf,OAAOJ,GAGRL,EAAQmB,KAAO,SAAUC,GACxB,OAAO,WACN,OAAOA,EAAGpB,EAAQqB,kCEtBpB,IAAIC,EAAe,GAGnB,IAAK,IAAIN,KAAQO,EACZA,EAAWC,eAAeR,KAC7BM,EAAaC,EAAWP,IAASA,GAInC,IAAIS,EAAKxB,EAAAC,QAAiB,CACzBwB,GAAI,GACJC,IAAK,IAmNN,SAASC,EAAMC,EAAKC,EAAKC,GACxB,OAAOC,KAAKF,IAAIE,KAAKD,IAAID,EAAKD,GAAME,GAGrC,SAASE,EAAUJ,GAClB,IAAIK,EAAML,EAAIM,SAAS,IAAIC,cAC3B,OAAQF,EAAI1B,OAAS,EAAK,IAAM0B,EAAMA,EAtNvCT,EAAGE,IAAM,SAAUU,GAClB,IACIC,EACAC,EACJ,OAHaF,EAAOG,UAAU,EAAG,GAAGC,eAInC,IAAK,MACJH,EAAMb,EAAGE,IAAIe,IAAIL,GACjBE,EAAQ,MACR,MACD,IAAK,MACJD,EAAMb,EAAGE,IAAIgB,IAAIN,GACjBE,EAAQ,MACR,MACD,QACCD,EAAMb,EAAGE,IAAIiB,IAAIP,GACjBE,EAAQ,MAIV,OAAKD,EAIE,CAACC,MAAOA,EAAOM,MAAOP,GAHrB,MAMTb,EAAGE,IAAIiB,IAAM,SAAUP,GACtB,IAAKA,EACJ,OAAO,KAGR,IAOIS,EACAxC,EACAyC,EAHAH,EAAM,CAAC,EAAG,EAAG,EAAG,GAKpB,GAAIE,EAAQT,EAAOS,MAVT,mCAUqB,CAI9B,IAHAC,EAAWD,EAAM,GACjBA,EAAQA,EAAM,GAETxC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAEvB,IAAI0C,EAAS,EAAJ1C,EACTsC,EAAItC,GAAK2C,SAASH,EAAM/C,MAAMiD,EAAIA,EAAK,GAAI,IAGxCD,IACHH,EAAI,GAAKK,SAASF,EAAU,IAAM,UAE7B,GAAID,EAAQT,EAAOS,MAxBf,uBAwB4B,CAItC,IAFAC,GADAD,EAAQA,EAAM,IACG,GAEZxC,EAAI,EAAGA,EAAI,EAAGA,IAClBsC,EAAItC,GAAK2C,SAASH,EAAMxC,GAAKwC,EAAMxC,GAAI,IAGpCyC,IACHH,EAAI,GAAKK,SAASF,EAAWA,EAAU,IAAM,UAExC,GAAID,EAAQT,EAAOS,MAjCf,2FAiC4B,CACtC,IAAKxC,EAAI,EAAGA,EAAI,EAAGA,IAClBsC,EAAItC,GAAK2C,SAASH,EAAMxC,EAAI,GAAI,GAG7BwC,EAAM,KACTF,EAAI,GAAKM,WAAWJ,EAAM,SAErB,CAAA,KAAIA,EAAQT,EAAOS,MAxChB,8GAgDH,OAAIA,EAAQT,EAAOS,MA/CZ,UAgDI,gBAAbA,EAAM,GACF,CAAC,EAAG,EAAG,EAAG,IAGlBF,EAAMrB,EAAWuB,EAAM,MAMvBF,EAAI,GAAK,EAEFA,GALC,KAOD,KAtBP,IAAKtC,EAAI,EAAGA,EAAI,EAAGA,IAClBsC,EAAItC,GAAK0B,KAAKmB,MAAiC,KAA3BD,WAAWJ,EAAMxC,EAAI,KAGtCwC,EAAM,KACTF,EAAI,GAAKM,WAAWJ,EAAM,KAoB5B,IAAKxC,EAAI,EAAGA,EAAI,EAAGA,IAClBsC,EAAItC,GAAKsB,EAAMgB,EAAItC,GAAI,EAAG,KAI3B,OAFAsC,EAAI,GAAKhB,EAAMgB,EAAI,GAAI,EAAG,GAEnBA,GAGRnB,EAAGE,IAAIe,IAAM,SAAUL,GACtB,IAAKA,EACJ,OAAO,KAGR,IACIS,EAAQT,EAAOS,MADT,kIAGV,GAAIA,EAAO,CACV,IAAIM,EAAQF,WAAWJ,EAAM,IAM7B,MAAO,EALEI,WAAWJ,EAAM,IAAM,KAAO,IAC/BlB,EAAMsB,WAAWJ,EAAM,IAAK,EAAG,KAC/BlB,EAAMsB,WAAWJ,EAAM,IAAK,EAAG,KAC/BlB,EAAMyB,MAAMD,GAAS,EAAIA,EAAO,EAAG,IAK5C,OAAO,MAGR3B,EAAGE,IAAIgB,IAAM,SAAUN,GACtB,IAAKA,EACJ,OAAO,KAGR,IACIS,EAAQT,EAAOS,MADT,yHAGV,GAAIA,EAAO,CACV,IAAIM,EAAQF,WAAWJ,EAAM,IAK7B,MAAO,EAJGI,WAAWJ,EAAM,IAAM,IAAO,KAAO,IACvClB,EAAMsB,WAAWJ,EAAM,IAAK,EAAG,KAC/BlB,EAAMsB,WAAWJ,EAAM,IAAK,EAAG,KAC/BlB,EAAMyB,MAAMD,GAAS,EAAIA,EAAO,EAAG,IAI5C,OAAO,MAGR3B,EAAGC,GAAG4B,IAAM,WACX,IAAIC,EAAOvD,EAAQqB,WAEnB,MACC,IACAY,EAAUsB,EAAK,IACftB,EAAUsB,EAAK,IACftB,EAAUsB,EAAK,KACdA,EAAK,GAAK,EACPtB,EAAUD,KAAKmB,MAAgB,IAAVI,EAAK,KAC3B,KAIL9B,EAAGC,GAAGkB,IAAM,WACX,IAAIW,EAAOvD,EAAQqB,WAEnB,OAAOkC,EAAK/C,OAAS,GAAiB,IAAZ+C,EAAK,GAC5B,OAASvB,KAAKmB,MAAMI,EAAK,IAAM,KAAOvB,KAAKmB,MAAMI,EAAK,IAAM,KAAOvB,KAAKmB,MAAMI,EAAK,IAAM,IACzF,QAAUvB,KAAKmB,MAAMI,EAAK,IAAM,KAAOvB,KAAKmB,MAAMI,EAAK,IAAM,KAAOvB,KAAKmB,MAAMI,EAAK,IAAM,KAAOA,EAAK,GAAK,KAG/G9B,EAAGC,GAAGkB,IAAIY,QAAU,WACnB,IAAID,EAAOvD,EAAQqB,WAEfoC,EAAIzB,KAAKmB,MAAMI,EAAK,GAAK,IAAM,KAC/BG,EAAI1B,KAAKmB,MAAMI,EAAK,GAAK,IAAM,KAC/BI,EAAI3B,KAAKmB,MAAMI,EAAK,GAAK,IAAM,KAEnC,OAAOA,EAAK/C,OAAS,GAAiB,IAAZ+C,EAAK,GAC5B,OAASE,EAAI,MAAQC,EAAI,MAAQC,EAAI,KACrC,QAAUF,EAAI,MAAQC,EAAI,MAAQC,EAAI,MAAQJ,EAAK,GAAK,KAG5D9B,EAAGC,GAAGgB,IAAM,WACX,IAAIkB,EAAO5D,EAAQqB,WACnB,OAAOuC,EAAKpD,OAAS,GAAiB,IAAZoD,EAAK,GAC5B,OAASA,EAAK,GAAK,KAAOA,EAAK,GAAK,MAAQA,EAAK,GAAK,KACtD,QAAUA,EAAK,GAAK,KAAOA,EAAK,GAAK,MAAQA,EAAK,GAAK,MAAQA,EAAK,GAAK,KAK7EnC,EAAGC,GAAGiB,IAAM,WACX,IAAIkB,EAAO7D,EAAQqB,WAEfyC,EAAI,GAKR,OAJID,EAAKrD,QAAU,GAAiB,IAAZqD,EAAK,KAC5BC,EAAI,KAAOD,EAAK,IAGV,OAASA,EAAK,GAAK,KAAOA,EAAK,GAAK,MAAQA,EAAK,GAAK,IAAMC,EAAI,KAGxErC,EAAGC,GAAGqC,QAAU,SAAUnB,GACzB,OAAOtB,EAAasB,EAAI7C,MAAM,EAAG,mBC5NlC,IAAAxJ,EAAiB,CAChBC,UAAa,CAAC,IAAK,IAAK,KACxBC,aAAgB,CAAC,IAAK,IAAK,KAC3BC,KAAQ,CAAC,EAAG,IAAK,KACjBC,WAAc,CAAC,IAAK,IAAK,KACzBC,MAAS,CAAC,IAAK,IAAK,KACpBC,MAAS,CAAC,IAAK,IAAK,KACpBC,OAAU,CAAC,IAAK,IAAK,KACrBC,MAAS,CAAC,EAAG,EAAG,GAChBC,eAAkB,CAAC,IAAK,IAAK,KAC7BC,KAAQ,CAAC,EAAG,EAAG,KACfC,WAAc,CAAC,IAAK,GAAI,KACxBC,MAAS,CAAC,IAAK,GAAI,IACnBC,UAAa,CAAC,IAAK,IAAK,KACxBC,UAAa,CAAC,GAAI,IAAK,KACvBC,WAAc,CAAC,IAAK,IAAK,GACzBC,UAAa,CAAC,IAAK,IAAK,IACxBC,MAAS,CAAC,IAAK,IAAK,IACpBC,eAAkB,CAAC,IAAK,IAAK,KAC7BC,SAAY,CAAC,IAAK,IAAK,KACvBC,QAAW,CAAC,IAAK,GAAI,IACrBC,KAAQ,CAAC,EAAG,IAAK,KACjBC,SAAY,CAAC,EAAG,EAAG,KACnBC,SAAY,CAAC,EAAG,IAAK,KACrBC,cAAiB,CAAC,IAAK,IAAK,IAC5BC,SAAY,CAAC,IAAK,IAAK,KACvBC,UAAa,CAAC,EAAG,IAAK,GACtBC,SAAY,CAAC,IAAK,IAAK,KACvBC,UAAa,CAAC,IAAK,IAAK,KACxBC,YAAe,CAAC,IAAK,EAAG,KACxBC,eAAkB,CAAC,GAAI,IAAK,IAC5BC,WAAc,CAAC,IAAK,IAAK,GACzBC,WAAc,CAAC,IAAK,GAAI,KACxBC,QAAW,CAAC,IAAK,EAAG,GACpBC,WAAc,CAAC,IAAK,IAAK,KACzBC,aAAgB,CAAC,IAAK,IAAK,KAC3BC,cAAiB,CAAC,GAAI,GAAI,KAC1BC,cAAiB,CAAC,GAAI,GAAI,IAC1BC,cAAiB,CAAC,GAAI,GAAI,IAC1BC,cAAiB,CAAC,EAAG,IAAK,KAC1BC,WAAc,CAAC,IAAK,EAAG,KACvBC,SAAY,CAAC,IAAK,GAAI,KACtBC,YAAe,CAAC,EAAG,IAAK,KACxBC,QAAW,CAAC,IAAK,IAAK,KACtBC,QAAW,CAAC,IAAK,IAAK,KACtBC,WAAc,CAAC,GAAI,IAAK,KACxBC,UAAa,CAAC,IAAK,GAAI,IACvBC,YAAe,CAAC,IAAK,IAAK,KAC1BC,YAAe,CAAC,GAAI,IAAK,IACzBC,QAAW,CAAC,IAAK,EAAG,KACpBC,UAAa,CAAC,IAAK,IAAK,KACxBC,WAAc,CAAC,IAAK,IAAK,KACzBC,KAAQ,CAAC,IAAK,IAAK,GACnBC,UAAa,CAAC,IAAK,IAAK,IACxBC,KAAQ,CAAC,IAAK,IAAK,KACnBC,MAAS,CAAC,EAAG,IAAK,GAClBC,YAAe,CAAC,IAAK,IAAK,IAC1BC,KAAQ,CAAC,IAAK,IAAK,KACnBC,SAAY,CAAC,IAAK,IAAK,KACvBC,QAAW,CAAC,IAAK,IAAK,KACtBC,UAAa,CAAC,IAAK,GAAI,IACvBC,OAAU,CAAC,GAAI,EAAG,KAClBC,MAAS,CAAC,IAAK,IAAK,KACpBC,MAAS,CAAC,IAAK,IAAK,KACpBC,SAAY,CAAC,IAAK,IAAK,KACvBC,cAAiB,CAAC,IAAK,IAAK,KAC5BC,UAAa,CAAC,IAAK,IAAK,GACxBC,aAAgB,CAAC,IAAK,IAAK,KAC3BC,UAAa,CAAC,IAAK,IAAK,KACxBC,WAAc,CAAC,IAAK,IAAK,KACzBC,UAAa,CAAC,IAAK,IAAK,KACxBC,qBAAwB,CAAC,IAAK,IAAK,KACnCC,UAAa,CAAC,IAAK,IAAK,KACxBC,WAAc,CAAC,IAAK,IAAK,KACzBC,UAAa,CAAC,IAAK,IAAK,KACxBC,UAAa,CAAC,IAAK,IAAK,KACxBC,YAAe,CAAC,IAAK,IAAK,KAC1BC,cAAiB,CAAC,GAAI,IAAK,KAC3BC,aAAgB,CAAC,IAAK,IAAK,KAC3BC,eAAkB,CAAC,IAAK,IAAK,KAC7BC,eAAkB,CAAC,IAAK,IAAK,KAC7BC,eAAkB,CAAC,IAAK,IAAK,KAC7BC,YAAe,CAAC,IAAK,IAAK,KAC1BC,KAAQ,CAAC,EAAG,IAAK,GACjBC,UAAa,CAAC,GAAI,IAAK,IACvBC,MAAS,CAAC,IAAK,IAAK,KACpBC,QAAW,CAAC,IAAK,EAAG,KACpBC,OAAU,CAAC,IAAK,EAAG,GACnBC,iBAAoB,CAAC,IAAK,IAAK,KAC/BC,WAAc,CAAC,EAAG,EAAG,KACrBC,aAAgB,CAAC,IAAK,GAAI,KAC1BC,aAAgB,CAAC,IAAK,IAAK,KAC3BC,eAAkB,CAAC,GAAI,IAAK,KAC5BC,gBAAmB,CAAC,IAAK,IAAK,KAC9BC,kBAAqB,CAAC,EAAG,IAAK,KAC9BC,gBAAmB,CAAC,GAAI,IAAK,KAC7BC,gBAAmB,CAAC,IAAK,GAAI,KAC7BC,aAAgB,CAAC,GAAI,GAAI,KACzBC,UAAa,CAAC,IAAK,IAAK,KACxBC,UAAa,CAAC,IAAK,IAAK,KACxBC,SAAY,CAAC,IAAK,IAAK,KACvBC,YAAe,CAAC,IAAK,IAAK,KAC1BC,KAAQ,CAAC,EAAG,EAAG,KACfC,QAAW,CAAC,IAAK,IAAK,KACtBC,MAAS,CAAC,IAAK,IAAK,GACpBC,UAAa,CAAC,IAAK,IAAK,IACxBC,OAAU,CAAC,IAAK,IAAK,GACrBC,UAAa,CAAC,IAAK,GAAI,GACvBC,OAAU,CAAC,IAAK,IAAK,KACrBC,cAAiB,CAAC,IAAK,IAAK,KAC5BC,UAAa,CAAC,IAAK,IAAK,KACxBC,cAAiB,CAAC,IAAK,IAAK,KAC5BC,cAAiB,CAAC,IAAK,IAAK,KAC5BC,WAAc,CAAC,IAAK,IAAK,KACzBC,UAAa,CAAC,IAAK,IAAK,KACxBC,KAAQ,CAAC,IAAK,IAAK,IACnBC,KAAQ,CAAC,IAAK,IAAK,KACnBC,KAAQ,CAAC,IAAK,IAAK,KACnBC,WAAc,CAAC,IAAK,IAAK,KACzBC,OAAU,CAAC,IAAK,EAAG,KACnBC,cAAiB,CAAC,IAAK,GAAI,KAC3BC,IAAO,CAAC,IAAK,EAAG,GAChBC,UAAa,CAAC,IAAK,IAAK,KACxBC,UAAa,CAAC,GAAI,IAAK,KACvBC,YAAe,CAAC,IAAK,GAAI,IACzBC,OAAU,CAAC,IAAK,IAAK,KACrBC,WAAc,CAAC,IAAK,IAAK,IACzBC,SAAY,CAAC,GAAI,IAAK,IACtBC,SAAY,CAAC,IAAK,IAAK,KACvBC,OAAU,CAAC,IAAK,GAAI,IACpBC,OAAU,CAAC,IAAK,IAAK,KACrBC,QAAW,CAAC,IAAK,IAAK,KACtBC,UAAa,CAAC,IAAK,GAAI,KACvBC,UAAa,CAAC,IAAK,IAAK,KACxBC,UAAa,CAAC,IAAK,IAAK,KACxBC,KAAQ,CAAC,IAAK,IAAK,KACnBC,YAAe,CAAC,EAAG,IAAK,KACxBC,UAAa,CAAC,GAAI,IAAK,KACvBC,IAAO,CAAC,IAAK,IAAK,KAClBC,KAAQ,CAAC,EAAG,IAAK,KACjBC,QAAW,CAAC,IAAK,IAAK,KACtBC,OAAU,CAAC,IAAK,GAAI,IACpBC,UAAa,CAAC,GAAI,IAAK,KACvBC,OAAU,CAAC,IAAK,IAAK,KACrBC,MAAS,CAAC,IAAK,IAAK,KACpBC,MAAS,CAAC,IAAK,IAAK,KACpBC,WAAc,CAAC,IAAK,IAAK,KACzBC,OAAU,CAAC,IAAK,IAAK,GACrBC,YAAe,CAAC,IAAK,IAAK,sBC/I3B,IAAIqE,EAAkB,GACtB,IAAK,IAAIC,KAAOC,EACXA,EAAY1C,eAAeyC,KAC9BD,EAAgBE,EAAYD,IAAQA,GAItC,IAAIE,EAAUlE,EAAAC,QAAiB,CAC9B0C,IAAK,CAACwB,SAAU,EAAGC,OAAQ,OAC3B3B,IAAK,CAAC0B,SAAU,EAAGC,OAAQ,OAC3BC,IAAK,CAACF,SAAU,EAAGC,OAAQ,OAC3B1B,IAAK,CAACyB,SAAU,EAAGC,OAAQ,OAC3BE,KAAM,CAACH,SAAU,EAAGC,OAAQ,QAC5BG,IAAK,CAACJ,SAAU,EAAGC,OAAQ,OAC3BI,IAAK,CAACL,SAAU,EAAGC,OAAQ,OAC3BK,IAAK,CAACN,SAAU,EAAGC,OAAQ,OAC3Bf,IAAK,CAACc,SAAU,EAAGC,OAAQ,CAAC,QAC5BN,QAAS,CAACK,SAAU,EAAGC,OAAQ,CAAC,YAChCM,OAAQ,CAACP,SAAU,EAAGC,OAAQ,CAAC,WAC/BO,QAAS,CAACR,SAAU,EAAGC,OAAQ,CAAC,YAChCQ,IAAK,CAACT,SAAU,EAAGC,OAAQ,CAAC,IAAK,IAAK,MACtCS,MAAO,CAACV,SAAU,EAAGC,OAAQ,CAAC,MAAO,MAAO,QAC5CxK,KAAM,CAACuK,SAAU,EAAGC,OAAQ,CAAC,UAI9B,IAAK,IAAI9B,KAAS4B,EACjB,GAAIA,EAAQ3C,eAAee,GAAQ,CAClC,KAAM,aAAc4B,EAAQ5B,IAC3B,MAAM,IAAIwC,MAAM,8BAAgCxC,GAGjD,KAAM,WAAY4B,EAAQ5B,IACzB,MAAM,IAAIwC,MAAM,oCAAsCxC,GAGvD,GAAI4B,EAAQ5B,GAAO8B,OAAO7D,SAAW2D,EAAQ5B,GAAO6B,SACnD,MAAM,IAAIW,MAAM,sCAAwCxC,GAGzD,IAAI6B,EAAWD,EAAQ5B,GAAO6B,SAC1BC,EAASF,EAAQ5B,GAAO8B,cACrBF,EAAQ5B,GAAO6B,gBACfD,EAAQ5B,GAAO8B,OACtBxD,OAAOmE,eAAeb,EAAQ5B,GAAQ,WAAY,CAACM,MAAOuB,IAC1DvD,OAAOmE,eAAeb,EAAQ5B,GAAQ,SAAU,CAACM,MAAOwB,IAI1DF,EAAQvB,IAAIF,IAAM,SAAUE,GAC3B,IAMIqC,EAEAC,EARAzB,EAAIb,EAAI,GAAK,IACbc,EAAId,EAAI,GAAK,IACbe,EAAIf,EAAI,GAAK,IACbd,EAAME,KAAKF,IAAI2B,EAAGC,EAAGC,GACrB5B,EAAMC,KAAKD,IAAI0B,EAAGC,EAAGC,GACrBwB,EAAQpD,EAAMD,EA+BlB,OA1BIC,IAAQD,EACXmD,EAAI,EACMxB,IAAM1B,EAChBkD,GAAKvB,EAAIC,GAAKwB,EACJzB,IAAM3B,EAChBkD,EAAI,GAAKtB,EAAIF,GAAK0B,EACRxB,IAAM5B,IAChBkD,EAAI,GAAKxB,EAAIC,GAAKyB,IAGnBF,EAAIjD,KAAKF,IAAQ,GAAJmD,EAAQ,MAEb,IACPA,GAAK,KAGNC,GAAKpD,EAAMC,GAAO,EAUX,CAACkD,EAAO,KARXlD,IAAQD,EACP,EACMoD,GAAK,GACXC,GAASpD,EAAMD,GAEfqD,GAAS,EAAIpD,EAAMD,IAGA,IAAJoD,IAGrBf,EAAQvB,IAAI0B,IAAM,SAAU1B,GAC3B,IAAIwC,EACAC,EACAC,EACAL,EACAM,EAEA9B,EAAIb,EAAI,GAAK,IACbc,EAAId,EAAI,GAAK,IACbe,EAAIf,EAAI,GAAK,IACb4C,EAAIxD,KAAKD,IAAI0B,EAAGC,EAAGC,GACnB8B,EAAOD,EAAIxD,KAAKF,IAAI2B,EAAGC,EAAGC,GAC1B+B,EAAQ,SAAUC,GACrB,OAAQH,EAAIG,GAAK,EAAIF,EAAO,IAyB7B,OAtBa,IAATA,EACHR,EAAIM,EAAI,GAERA,EAAIE,EAAOD,EACXJ,EAAOM,EAAMjC,GACb4B,EAAOK,EAAMhC,GACb4B,EAAOI,EAAM/B,GAETF,IAAM+B,EACTP,EAAIK,EAAOD,EACD3B,IAAM8B,EAChBP,EAAK,EAAI,EAAKG,EAAOE,EACX3B,IAAM6B,IAChBP,EAAK,EAAI,EAAKI,EAAOD,GAElBH,EAAI,EACPA,GAAK,EACKA,EAAI,IACdA,GAAK,IAIA,CACF,IAAJA,EACI,IAAJM,EACI,IAAJC,IAIFrB,EAAQvB,IAAID,IAAM,SAAUC,GAC3B,IAAIa,EAAIb,EAAI,GACRc,EAAId,EAAI,GACRe,EAAIf,EAAI,GAMZ,MAAO,CALCuB,EAAQvB,IAAIF,IAAIE,GAAK,GAKd,KAJP,EAAI,IAAMZ,KAAKF,IAAI2B,EAAGzB,KAAKF,IAAI4B,EAAGC,KAIlB,KAFxBA,EAAI,EAAI,EAAI,IAAM3B,KAAKD,IAAI0B,EAAGzB,KAAKD,IAAI2B,EAAGC,OAK3CQ,EAAQvB,IAAI2B,KAAO,SAAU3B,GAC5B,IAMIgD,EANAnC,EAAIb,EAAI,GAAK,IACbc,EAAId,EAAI,GAAK,IACbe,EAAIf,EAAI,GAAK,IAWjB,MAAO,CAAK,MAJP,EAAIa,GADTmC,EAAI5D,KAAKF,IAAI,EAAI2B,EAAG,EAAIC,EAAG,EAAIC,MACZ,EAAIiC,IAAM,GAIR,MAHhB,EAAIlC,EAAIkC,IAAM,EAAIA,IAAM,GAGC,MAFzB,EAAIjC,EAAIiC,IAAM,EAAIA,IAAM,GAEU,IAAJA,IAcpCzB,EAAQvB,IAAImB,QAAU,SAAUnB,GAC/B,IAAIiD,EAAW7B,EAAgBpB,GAC/B,GAAIiD,EACH,OAAOA,EAGR,IACIC,EAfwBC,EAAGC,EAc3BC,EAAyBC,EAAAA,EAG7B,IAAK,IAAInC,KAAWG,EACnB,GAAIA,EAAY1C,eAAeuC,GAAU,CACxC,IAAIlB,EAAQqB,EAAYH,GAGpBoC,GAtBsBJ,EAsBSnD,EAtBNoD,EAsBWnD,EApBzCb,KAAKoE,IAAIL,EAAE,GAAKC,EAAE,GAAI,GACtBhE,KAAKoE,IAAIL,EAAE,GAAKC,EAAE,GAAI,GACtBhE,KAAKoE,IAAIL,EAAE,GAAKC,EAAE,GAAI,IAqBjBG,EAAWF,IACdA,EAAyBE,EACzBL,EAAwB/B,GAK3B,OAAO+B,GAGR3B,EAAQJ,QAAQnB,IAAM,SAAUmB,GAC/B,OAAOG,EAAYH,IAGpBI,EAAQvB,IAAI4B,IAAM,SAAU5B,GAC3B,IAAIa,EAAIb,EAAI,GAAK,IACbc,EAAId,EAAI,GAAK,IACbe,EAAIf,EAAI,GAAK,IAWjB,MAAO,CAAK,KAJC,OAJba,EAAIA,EAAI,OAAUzB,KAAKoE,KAAM3C,EAAI,MAAS,MAAQ,KAAQA,EAAI,OAIlC,OAH5BC,EAAIA,EAAI,OAAU1B,KAAKoE,KAAM1C,EAAI,MAAS,MAAQ,KAAQA,EAAI,OAGnB,OAF3CC,EAAIA,EAAI,OAAU3B,KAAKoE,KAAMzC,EAAI,MAAS,MAAQ,KAAQA,EAAI,QAMzC,KAHR,MAAJF,EAAmB,MAAJC,EAAmB,MAAJC,GAGT,KAFjB,MAAJF,EAAmB,MAAJC,EAAmB,MAAJC,KAKxCQ,EAAQvB,IAAI6B,IAAM,SAAU7B,GAC3B,IAAI4B,EAAML,EAAQvB,IAAI4B,IAAI5B,GACtBmD,EAAIvB,EAAI,GACRwB,EAAIxB,EAAI,GACR6B,EAAI7B,EAAI,GAiBZ,OAXAwB,GAAK,IACLK,GAAK,QAELN,GAJAA,GAAK,QAIG,QAAW/D,KAAKoE,IAAIL,EAAG,EAAI,GAAM,MAAQA,EAAM,GAAK,IAQrD,CAJF,KAHLC,EAAIA,EAAI,QAAWhE,KAAKoE,IAAIJ,EAAG,EAAI,GAAM,MAAQA,EAAM,GAAK,KAG5C,GACZ,KAAOD,EAAIC,GACX,KAAOA,GAJXK,EAAIA,EAAI,QAAWrE,KAAKoE,IAAIC,EAAG,EAAI,GAAM,MAAQA,EAAM,GAAK,QAS7DlC,EAAQzB,IAAIE,IAAM,SAAUF,GAC3B,IAGI4D,EACAC,EACAC,EACA5D,EACAN,EAPA2C,EAAIvC,EAAI,GAAK,IACb6C,EAAI7C,EAAI,GAAK,IACbwC,EAAIxC,EAAI,GAAK,IAOjB,GAAU,IAAN6C,EAEH,MAAO,CADPjD,EAAU,IAAJ4C,EACO5C,EAAKA,GASnBgE,EAAK,EAAIpB,GALRqB,EADGrB,EAAI,GACFA,GAAK,EAAIK,GAETL,EAAIK,EAAIL,EAAIK,GAKlB3C,EAAM,CAAC,EAAG,EAAG,GACb,IAAK,IAAItC,EAAI,EAAGA,EAAI,EAAGA,KACtBkG,EAAKvB,EAAI,EAAI,IAAM3E,EAAI,IACd,GACRkG,IAEGA,EAAK,GACRA,IAIAlE,EADG,EAAIkE,EAAK,EACNF,EAAiB,GAAXC,EAAKD,GAAUE,EACjB,EAAIA,EAAK,EACbD,EACI,EAAIC,EAAK,EACbF,GAAMC,EAAKD,IAAO,EAAI,EAAIE,GAAM,EAEhCF,EAGP1D,EAAItC,GAAW,IAANgC,EAGV,OAAOM,GAGRuB,EAAQzB,IAAI4B,IAAM,SAAU5B,GAC3B,IAAIuC,EAAIvC,EAAI,GACR6C,EAAI7C,EAAI,GAAK,IACbwC,EAAIxC,EAAI,GAAK,IACb+D,EAAOlB,EACPmB,EAAO1E,KAAKD,IAAImD,EAAG,KAUvB,OALAK,IADAL,GAAK,IACM,EAAKA,EAAI,EAAIA,EACxBuB,GAAQC,GAAQ,EAAIA,EAAO,EAAIA,EAIxB,CAACzB,EAAQ,KAFL,IAANC,EAAW,EAAIuB,GAASC,EAAOD,GAAS,EAAIlB,GAAML,EAAIK,IAElC,MAHpBL,EAAIK,GAAK,KAMfpB,EAAQG,IAAI1B,IAAM,SAAU0B,GAC3B,IAAIW,EAAIX,EAAI,GAAK,GACbiB,EAAIjB,EAAI,GAAK,IACbkB,EAAIlB,EAAI,GAAK,IACbqC,EAAK3E,KAAK4E,MAAM3B,GAAK,EAErB4B,EAAI5B,EAAIjD,KAAK4E,MAAM3B,GACnB6B,EAAI,IAAMtB,GAAK,EAAID,GACnBwB,EAAI,IAAMvB,GAAK,EAAKD,EAAIsB,GACxBG,EAAI,IAAMxB,GAAK,EAAKD,GAAK,EAAIsB,IAGjC,OAFArB,GAAK,IAEGmB,GACP,KAAK,EACJ,MAAO,CAACnB,EAAGwB,EAAGF,GACf,KAAK,EACJ,MAAO,CAACC,EAAGvB,EAAGsB,GACf,KAAK,EACJ,MAAO,CAACA,EAAGtB,EAAGwB,GACf,KAAK,EACJ,MAAO,CAACF,EAAGC,EAAGvB,GACf,KAAK,EACJ,MAAO,CAACwB,EAAGF,EAAGtB,GACf,KAAK,EACJ,MAAO,CAACA,EAAGsB,EAAGC,KAIjB5C,EAAQG,IAAI5B,IAAM,SAAU4B,GAC3B,IAIIoC,EACAO,EACA/B,EANAD,EAAIX,EAAI,GACRiB,EAAIjB,EAAI,GAAK,IACbkB,EAAIlB,EAAI,GAAK,IACb4C,EAAOlF,KAAKD,IAAIyD,EAAG,KAYvB,OAPAN,GAAK,EAAIK,GAAKC,EAEdyB,EAAK1B,EAAI2B,EAKF,CAACjC,EAAQ,KAHhBgC,GADAA,IAFAP,GAAQ,EAAInB,GAAK2B,IAEF,EAAKR,EAAO,EAAIA,IACpB,GAGc,KAFzBxB,GAAK,KAMNf,EAAQxB,IAAIC,IAAM,SAAUD,GAC3B,IAIIrC,EACAkF,EACAqB,EACAM,EAkBA1D,EACAC,EACAC,EA3BAsB,EAAItC,EAAI,GAAK,IACbyE,EAAKzE,EAAI,GAAK,IACd0E,EAAK1E,EAAI,GAAK,IACd2E,EAAQF,EAAKC,EAyBjB,OAlBIC,EAAQ,IACXF,GAAME,EACND,GAAMC,GAKPT,EAAI,EAAI5B,GAFR3E,EAAI0B,KAAK4E,MAAM,EAAI3B,IAIA,IAAV,EAAJ3E,KACJuG,EAAI,EAAIA,GAGTM,EAAIC,EAAKP,IAPTrB,EAAI,EAAI6B,GAOUD,GAKV9G,GACP,QACA,KAAK,EACL,KAAK,EAAGmD,EAAI+B,EAAG9B,EAAIyD,EAAGxD,EAAIyD,EAAI,MAC9B,KAAK,EAAG3D,EAAI0D,EAAGzD,EAAI8B,EAAG7B,EAAIyD,EAAI,MAC9B,KAAK,EAAG3D,EAAI2D,EAAI1D,EAAI8B,EAAG7B,EAAIwD,EAAG,MAC9B,KAAK,EAAG1D,EAAI2D,EAAI1D,EAAIyD,EAAGxD,EAAI6B,EAAG,MAC9B,KAAK,EAAG/B,EAAI0D,EAAGzD,EAAI0D,EAAIzD,EAAI6B,EAAG,MAC9B,KAAK,EAAG/B,EAAI+B,EAAG9B,EAAI0D,EAAIzD,EAAIwD,EAG5B,MAAO,CAAK,IAAJ1D,EAAa,IAAJC,EAAa,IAAJC,IAG3BQ,EAAQI,KAAK3B,IAAM,SAAU2B,GAC5B,IAAIoB,EAAIpB,EAAK,GAAK,IACdgD,EAAIhD,EAAK,GAAK,IACdyB,EAAIzB,EAAK,GAAK,IACdqB,EAAIrB,EAAK,GAAK,IASlB,MAAO,CAAK,KAJR,EAAIvC,KAAKF,IAAI,EAAG6D,GAAK,EAAIC,GAAKA,IAIb,KAHjB,EAAI5D,KAAKF,IAAI,EAAGyF,GAAK,EAAI3B,GAAKA,IAGJ,KAF1B,EAAI5D,KAAKF,IAAI,EAAGkE,GAAK,EAAIJ,GAAKA,MAKnCzB,EAAQK,IAAI5B,IAAM,SAAU4B,GAC3B,IAGIf,EACAC,EACAC,EALAoC,EAAIvB,EAAI,GAAK,IACbwB,EAAIxB,EAAI,GAAK,IACb6B,EAAI7B,EAAI,GAAK,IA0BjB,OApBAd,GAAU,MAALqC,EAAoB,OAAJC,EAAmB,MAAJK,EACpC1C,EAAS,MAAJoC,GAAoB,KAALC,EAAoB,MAAJK,EAGpC5C,GALAA,EAAS,OAAJsC,GAAoB,OAALC,GAAqB,MAALK,GAK5B,SACH,MAAQrE,KAAKoE,IAAI3C,EAAG,EAAM,KAAQ,KAChC,MAAJA,EAEHC,EAAIA,EAAI,SACH,MAAQ1B,KAAKoE,IAAI1C,EAAG,EAAM,KAAQ,KAChC,MAAJA,EAEHC,EAAIA,EAAI,SACH,MAAQ3B,KAAKoE,IAAIzC,EAAG,EAAM,KAAQ,KAChC,MAAJA,EAMI,CAAK,KAJZF,EAAIzB,KAAKF,IAAIE,KAAKD,IAAI,EAAG0B,GAAI,IAIR,KAHrBC,EAAI1B,KAAKF,IAAIE,KAAKD,IAAI,EAAG2B,GAAI,IAGC,KAF9BC,EAAI3B,KAAKF,IAAIE,KAAKD,IAAI,EAAG4B,GAAI,MAK9BQ,EAAQK,IAAIC,IAAM,SAAUD,GAC3B,IAAIuB,EAAIvB,EAAI,GACRwB,EAAIxB,EAAI,GACR6B,EAAI7B,EAAI,GAiBZ,OAXAwB,GAAK,IACLK,GAAK,QAELN,GAJAA,GAAK,QAIG,QAAW/D,KAAKoE,IAAIL,EAAG,EAAI,GAAM,MAAQA,EAAM,GAAK,IAQrD,CAJF,KAHLC,EAAIA,EAAI,QAAWhE,KAAKoE,IAAIJ,EAAG,EAAI,GAAM,MAAQA,EAAM,GAAK,KAG5C,GACZ,KAAOD,EAAIC,GACX,KAAOA,GAJXK,EAAIA,EAAI,QAAWrE,KAAKoE,IAAIC,EAAG,EAAI,GAAM,MAAQA,EAAM,GAAK,QAS7DlC,EAAQM,IAAID,IAAM,SAAUC,GAC3B,IAGIsB,EACAC,EACAK,EALAnB,EAAIT,EAAI,GAQZsB,EAPQtB,EAAI,GAOJ,KADRuB,GAAKd,EAAI,IAAM,KAEfmB,EAAIL,EAPIvB,EAAI,GAOA,IAEZ,IAAI+C,EAAKxF,KAAKoE,IAAIJ,EAAG,GACjByB,EAAKzF,KAAKoE,IAAIL,EAAG,GACjB2B,EAAK1F,KAAKoE,IAAIC,EAAG,GASrB,OARAL,EAAIwB,EAAK,QAAWA,GAAMxB,EAAI,GAAK,KAAO,MAC1CD,EAAI0B,EAAK,QAAWA,GAAM1B,EAAI,GAAK,KAAO,MAC1CM,EAAIqB,EAAK,QAAWA,GAAMrB,EAAI,GAAK,KAAO,MAMnC,CAJPN,GAAK,OACLC,GAAK,IACLK,GAAK,UAKNlC,EAAQM,IAAIC,IAAM,SAAUD,GAC3B,IAIIQ,EAJAC,EAAIT,EAAI,GACRX,EAAIW,EAAI,GACRd,EAAIc,EAAI,GAcZ,OARAQ,EAAS,IADJjD,KAAK2F,MAAMhE,EAAGG,GACJ,EAAI9B,KAAK4F,IAEhB,IACP3C,GAAK,KAKC,CAACC,EAFJlD,KAAK6F,KAAK/D,EAAIA,EAAIH,EAAIA,GAEZsB,IAGfd,EAAQO,IAAID,IAAM,SAAUC,GAC3B,IAKIoD,EALA5C,EAAIR,EAAI,GACRiB,EAAIjB,EAAI,GAUZ,OAJAoD,EALQpD,EAAI,GAKH,IAAM,EAAI1C,KAAK4F,GAIjB,CAAC1C,EAHJS,EAAI3D,KAAK+F,IAAID,GACbnC,EAAI3D,KAAKgG,IAAIF,KAKlB3D,EAAQvB,IAAI+B,OAAS,SAAUxE,GAC9B,IAAIsD,EAAItD,EAAK,GACTuD,EAAIvD,EAAK,GACTwD,EAAIxD,EAAK,GACT0C,EAAQ,KAAKxB,UAAYA,UAAU,GAAK8C,EAAQvB,IAAI0B,IAAInE,GAAM,GAIlE,GAAc,KAFd0C,EAAQb,KAAKmB,MAAMN,EAAQ,KAG1B,OAAO,GAGR,IAAIoF,EAAO,IACNjG,KAAKmB,MAAMQ,EAAI,MAAQ,EACxB3B,KAAKmB,MAAMO,EAAI,MAAQ,EACxB1B,KAAKmB,MAAMM,EAAI,MAMlB,OAJc,IAAVZ,IACHoF,GAAQ,IAGFA,GAGR9D,EAAQG,IAAIK,OAAS,SAAUxE,GAG9B,OAAOgE,EAAQvB,IAAI+B,OAAOR,EAAQG,IAAI1B,IAAIzC,GAAOA,EAAK,KAGvDgE,EAAQvB,IAAIgC,QAAU,SAAUzE,GAC/B,IAAIsD,EAAItD,EAAK,GACTuD,EAAIvD,EAAK,GACTwD,EAAIxD,EAAK,GAIb,OAAIsD,IAAMC,GAAKA,IAAMC,EAChBF,EAAI,EACA,GAGJA,EAAI,IACA,IAGDzB,KAAKmB,OAAQM,EAAI,GAAK,IAAO,IAAM,IAGhC,GACP,GAAKzB,KAAKmB,MAAMM,EAAI,IAAM,GAC1B,EAAIzB,KAAKmB,MAAMO,EAAI,IAAM,GAC1B1B,KAAKmB,MAAMQ,EAAI,IAAM,IAKzBQ,EAAQQ,OAAO/B,IAAM,SAAUzC,GAC9B,IAAI+H,EAAQ/H,EAAO,GAGnB,GAAc,IAAV+H,GAAyB,IAAVA,EAOlB,OANI/H,EAAO,KACV+H,GAAS,KAKH,CAFPA,EAAQA,EAAQ,KAAO,IAERA,EAAOA,GAGvB,IAAIC,EAA6B,IAAL,KAAbhI,EAAO,KAKtB,MAAO,EAJW,EAAR+H,GAAaC,EAAQ,KACpBD,GAAS,EAAK,GAAKC,EAAQ,KAC3BD,GAAS,EAAK,GAAKC,EAAQ,MAKvChE,EAAQS,QAAQhC,IAAM,SAAUzC,GAE/B,GAAIA,GAAQ,IAAK,CAChB,IAAIwF,EAAmB,IAAdxF,EAAO,KAAY,EAC5B,MAAO,CAACwF,EAAGA,EAAGA,GAKf,IAAIyC,EAKJ,OAPAjI,GAAQ,GAOD,CAJC6B,KAAK4E,MAAMzG,EAAO,IAAM,EAAI,IAC5B6B,KAAK4E,OAAOwB,EAAMjI,EAAO,IAAM,GAAK,EAAI,IACvCiI,EAAM,EAAK,EAAI,MAKzBjE,EAAQvB,IAAIU,IAAM,SAAUnD,GAC3B,IAIIkC,KAJkC,IAAtBL,KAAKmB,MAAMhD,EAAK,MAAe,MACpB,IAAtB6B,KAAKmB,MAAMhD,EAAK,MAAe,IACV,IAAtB6B,KAAKmB,MAAMhD,EAAK,MAECgC,SAAS,IAAIC,cAClC,MAAO,SAASI,UAAUH,EAAO7B,QAAU6B,GAG5C8B,EAAQb,IAAIV,IAAM,SAAUzC,GAC3B,IAAI2C,EAAQ3C,EAAKgC,SAAS,IAAIW,MAAM,4BACpC,IAAKA,EACJ,MAAO,CAAC,EAAG,EAAG,GAGf,IAAIuF,EAAcvF,EAAM,GAEA,IAApBA,EAAM,GAAGtC,SACZ6H,EAAcA,EAAYC,MAAM,IAAIC,KAAI,SAAUC,GACjD,OAAOA,EAAOA,KACZC,KAAK,KAGT,IAAIC,EAAUzF,SAASoF,EAAa,IAKpC,MAAO,CAJEK,GAAW,GAAM,IACjBA,GAAW,EAAK,IACP,IAAVA,IAKTvE,EAAQvB,IAAIiC,IAAM,SAAUjC,GAC3B,IAOI+F,EAPAlF,EAAIb,EAAI,GAAK,IACbc,EAAId,EAAI,GAAK,IACbe,EAAIf,EAAI,GAAK,IACbb,EAAMC,KAAKD,IAAIC,KAAKD,IAAI0B,EAAGC,GAAIC,GAC/B7B,EAAME,KAAKF,IAAIE,KAAKF,IAAI2B,EAAGC,GAAIC,GAC/BiF,EAAU7G,EAAMD,EAyBpB,OAdC6G,EADGC,GAAU,EACP,EAEH7G,IAAQ0B,GACHC,EAAIC,GAAKiF,EAAU,EAExB7G,IAAQ2B,EACL,GAAKC,EAAIF,GAAKmF,EAEd,GAAKnF,EAAIC,GAAKkF,EAAS,EAG9BD,GAAO,EAGA,CAAO,KAFdA,GAAO,GAEqB,IAATC,EAA0B,KArBzCA,EAAS,EACA9G,GAAO,EAAI8G,GAEX,KAqBdzE,EAAQzB,IAAImC,IAAM,SAAUnC,GAC3B,IAAI6C,EAAI7C,EAAI,GAAK,IACbwC,EAAIxC,EAAI,GAAK,IACbiD,EAAI,EACJkB,EAAI,EAYR,OATClB,EADGT,EAAI,GACH,EAAMK,EAAIL,EAEV,EAAMK,GAAK,EAAML,IAGd,IACP2B,GAAK3B,EAAI,GAAMS,IAAM,EAAMA,IAGrB,CAACjD,EAAI,GAAQ,IAAJiD,EAAa,IAAJkB,IAG1B1C,EAAQG,IAAIO,IAAM,SAAUP,GAC3B,IAAIiB,EAAIjB,EAAI,GAAK,IACbkB,EAAIlB,EAAI,GAAK,IAEbqB,EAAIJ,EAAIC,EACRqB,EAAI,EAMR,OAJIlB,EAAI,IACPkB,GAAKrB,EAAIG,IAAM,EAAIA,IAGb,CAACrB,EAAI,GAAQ,IAAJqB,EAAa,IAAJkB,IAG1B1C,EAAQU,IAAIjC,IAAM,SAAUiC,GAC3B,IAAII,EAAIJ,EAAI,GAAK,IACbc,EAAId,EAAI,GAAK,IACbnB,EAAImB,EAAI,GAAK,IAEjB,GAAU,IAANc,EACH,MAAO,CAAK,IAAJjC,EAAa,IAAJA,EAAa,IAAJA,GAG3B,IAIImF,EAJAC,EAAO,CAAC,EAAG,EAAG,GACdnC,EAAM1B,EAAI,EAAK,EACfO,EAAImB,EAAK,EACToC,EAAI,EAAIvD,EAGZ,OAAQxD,KAAK4E,MAAMD,IAClB,KAAK,EACJmC,EAAK,GAAK,EAAGA,EAAK,GAAKtD,EAAGsD,EAAK,GAAK,EAAG,MACxC,KAAK,EACJA,EAAK,GAAKC,EAAGD,EAAK,GAAK,EAAGA,EAAK,GAAK,EAAG,MACxC,KAAK,EACJA,EAAK,GAAK,EAAGA,EAAK,GAAK,EAAGA,EAAK,GAAKtD,EAAG,MACxC,KAAK,EACJsD,EAAK,GAAK,EAAGA,EAAK,GAAKC,EAAGD,EAAK,GAAK,EAAG,MACxC,KAAK,EACJA,EAAK,GAAKtD,EAAGsD,EAAK,GAAK,EAAGA,EAAK,GAAK,EAAG,MACxC,QACCA,EAAK,GAAK,EAAGA,EAAK,GAAK,EAAGA,EAAK,GAAKC,EAKtC,OAFAF,GAAM,EAAMlD,GAAKjC,EAEV,CACe,KAApBiC,EAAImD,EAAK,GAAKD,GACM,KAApBlD,EAAImD,EAAK,GAAKD,GACM,KAApBlD,EAAImD,EAAK,GAAKD,KAIjB1E,EAAQU,IAAIP,IAAM,SAAUO,GAC3B,IAAIc,EAAId,EAAI,GAAK,IAGbW,EAAIG,EAFAd,EAAI,GAAK,KAEA,EAAMc,GACnBkB,EAAI,EAMR,OAJIrB,EAAI,IACPqB,EAAIlB,EAAIH,GAGF,CAACX,EAAI,GAAQ,IAAJgC,EAAa,IAAJrB,IAG1BrB,EAAQU,IAAInC,IAAM,SAAUmC,GAC3B,IAAIc,EAAId,EAAI,GAAK,IAGbK,EAFIL,EAAI,GAAK,KAEJ,EAAMc,GAAK,GAAMA,EAC1BJ,EAAI,EASR,OAPIL,EAAI,GAAOA,EAAI,GAClBK,EAAII,GAAK,EAAIT,GAEVA,GAAK,IAAOA,EAAI,IACnBK,EAAII,GAAK,GAAK,EAAIT,KAGZ,CAACL,EAAI,GAAQ,IAAJU,EAAa,IAAJL,IAG1Bf,EAAQU,IAAIlC,IAAM,SAAUkC,GAC3B,IAAIc,EAAId,EAAI,GAAK,IAEbW,EAAIG,EADAd,EAAI,GAAK,KACA,EAAMc,GACvB,MAAO,CAACd,EAAI,GAAc,KAATW,EAAIG,GAAoB,KAAT,EAAIH,KAGrCrB,EAAQxB,IAAIkC,IAAM,SAAUlC,GAC3B,IAAIoG,EAAIpG,EAAI,GAAK,IAEb6C,EAAI,EADA7C,EAAI,GAAK,IAEbgD,EAAIH,EAAIuD,EACRrF,EAAI,EAMR,OAJIiC,EAAI,IACPjC,GAAK8B,EAAIG,IAAM,EAAIA,IAGb,CAAChD,EAAI,GAAQ,IAAJgD,EAAa,IAAJjC,IAG1BS,EAAQW,MAAMlC,IAAM,SAAUkC,GAC7B,MAAO,CAAEA,EAAM,GAAK,MAAS,IAAMA,EAAM,GAAK,MAAS,IAAMA,EAAM,GAAK,MAAS,MAGlFX,EAAQvB,IAAIkC,MAAQ,SAAUlC,GAC7B,MAAO,CAAEA,EAAI,GAAK,IAAO,MAAQA,EAAI,GAAK,IAAO,MAAQA,EAAI,GAAK,IAAO,QAG1EuB,EAAQtK,KAAK+I,IAAM,SAAUzC,GAC5B,MAAO,CAACA,EAAK,GAAK,IAAM,IAAKA,EAAK,GAAK,IAAM,IAAKA,EAAK,GAAK,IAAM,MAGnEgE,EAAQtK,KAAK6I,IAAMyB,EAAQtK,KAAKyK,IAAM,SAAUnE,GAC/C,MAAO,CAAC,EAAG,EAAGA,EAAK,KAGpBgE,EAAQtK,KAAK8I,IAAM,SAAU9I,GAC5B,MAAO,CAAC,EAAG,IAAKA,EAAK,KAGtBsK,EAAQtK,KAAK0K,KAAO,SAAU1K,GAC7B,MAAO,CAAC,EAAG,EAAG,EAAGA,EAAK,KAGvBsK,EAAQtK,KAAK4K,IAAM,SAAU5K,GAC5B,MAAO,CAACA,EAAK,GAAI,EAAG,IAGrBsK,EAAQtK,KAAKyJ,IAAM,SAAUzJ,GAC5B,IAAIyI,EAAwC,IAAlCN,KAAKmB,MAAMtJ,EAAK,GAAK,IAAM,KAGjCwI,IAFWC,GAAO,KAAOA,GAAO,GAAKA,GAEpBH,SAAS,IAAIC,cAClC,MAAO,SAASI,UAAUH,EAAO7B,QAAU6B,GAG5C8B,EAAQvB,IAAI/I,KAAO,SAAU+I,GAE5B,MAAO,EADIA,EAAI,GAAKA,EAAI,GAAKA,EAAI,IAAM,EACzB,IAAM,SCn0BrB,SAASoG,EAAUC,GAClB,IAAIC,EAnBL,WAKC,IAJA,IAAIA,EAAQ,GAERC,EAAStI,OAAOuI,KAAKC,GAEhB9I,EAAM4I,EAAO3I,OAAQF,EAAI,EAAGA,EAAIC,EAAKD,IAC7C4I,EAAMC,EAAO7I,IAAM,CAGlB6F,UAAW,EACXmD,OAAQ,MAIV,OAAOJ,EAKKK,GACRC,EAAQ,CAACP,GAIb,IAFAC,EAAMD,GAAW9C,SAAW,EAErBqD,EAAMhJ,QAIZ,IAHA,IAAIiJ,EAAUD,EAAME,MAChBC,EAAY9I,OAAOuI,KAAKC,EAAYI,IAE/BlJ,EAAMoJ,EAAUnJ,OAAQF,EAAI,EAAGA,EAAIC,EAAKD,IAAK,CACrD,IAAIsJ,EAAWD,EAAUrJ,GACrBuJ,EAAOX,EAAMU,IAEM,IAAnBC,EAAK1D,WACR0D,EAAK1D,SAAW+C,EAAMO,GAAStD,SAAW,EAC1C0D,EAAKP,OAASG,EACdD,EAAMM,QAAQF,IAKjB,OAAOV,EAGR,SAASa,EAAKC,EAAMtI,GACnB,OAAO,SAAUvB,GAChB,OAAOuB,EAAGsI,EAAK7J,KAIjB,SAAS8J,EAAeC,EAAShB,GAKhC,IAJA,IAAIiB,EAAO,CAACjB,EAAMgB,GAASZ,OAAQY,GAC/B9I,EAAKiI,EAAYH,EAAMgB,GAASZ,QAAQY,GAExCE,EAAMlB,EAAMgB,GAASZ,OAClBJ,EAAMkB,GAAKd,QACjBa,EAAKL,QAAQZ,EAAMkB,GAAKd,QACxBlI,EAAK2I,EAAKV,EAAYH,EAAMkB,GAAKd,QAAQc,GAAMhJ,GAC/CgJ,EAAMlB,EAAMkB,GAAKd,OAIlB,OADAlI,EAAGiJ,WAAaF,EACT/I,2GAGR,IC1EI+C,EAAU,GAEDtD,OAAOuI,KAAKC,GAuDlBiB,SAAQ,SAAUrB,GACxB9E,EAAQ8E,GAAa,GAErBpI,OAAOmE,eAAeb,EAAQ8E,GAAY,WAAY,CAACpG,MAAOwG,EAAYJ,GAAW7E,WACrFvD,OAAOmE,eAAeb,EAAQ8E,GAAY,SAAU,CAACpG,MAAOwG,EAAYJ,GAAW5E,SAEnF,IAAIkG,EDWY,SAAUtB,GAK1B,IAJA,IAAIC,EAAQF,EAAUC,GAClBoB,EAAa,GAEblB,EAAStI,OAAOuI,KAAKF,GAChB3I,EAAM4I,EAAO3I,OAAQF,EAAI,EAAGA,EAAIC,EAAKD,IAAK,CAClD,IAAI4J,EAAUf,EAAO7I,GAGD,OAFT4I,EAAMgB,GAERZ,SAKTe,EAAWH,GAAWD,EAAeC,EAAShB,IAG/C,OAAOmB,EC5BMG,CAAMvB,GACDpI,OAAOuI,KAAKmB,GAElBD,SAAQ,SAAUJ,GAC7B,IAAI9I,EAAKmJ,EAAOL,GAEhB/F,EAAQ8E,GAAWiB,GA5CrB,SAAqB9I,GACpB,IAAIqJ,EAAY,SAAUtK,GACzB,GAAIA,MAAAA,EACH,OAAOA,EAGJkB,UAAUb,OAAS,IACtBL,EAAON,MAAMC,UAAUC,MAAMkB,KAAKI,YAGnC,IAAIqJ,EAAStJ,EAAGjB,GAKhB,GAAsB,iBAAXuK,EACV,IAAK,IAAInK,EAAMmK,EAAOlK,OAAQF,EAAI,EAAGA,EAAIC,EAAKD,IAC7CoK,EAAOpK,GAAK0B,KAAKmB,MAAMuH,EAAOpK,IAIhC,OAAOoK,GAQR,MAJI,eAAgBtJ,IACnBqJ,EAAUJ,WAAajJ,EAAGiJ,YAGpBI,EAewBE,CAAYvJ,GAC1C+C,EAAQ8E,GAAWiB,GAASU,IAlE9B,SAAiBxJ,GAChB,IAAIqJ,EAAY,SAAUtK,GACzB,OAAIA,MAAAA,EACIA,GAGJkB,UAAUb,OAAS,IACtBL,EAAON,MAAMC,UAAUC,MAAMkB,KAAKI,YAG5BD,EAAGjB,KAQX,MAJI,eAAgBiB,IACnBqJ,EAAUJ,WAAajJ,EAAGiJ,YAGpBI,EAgD4BI,CAAQzJ,SAI5C,IAAA0J,EAAiB3G,ECxEb4G,EAAS,GAAGhL,MAEZiL,EAAgB,CAEnB,UAGA,OAGA,OAGGC,EAAkB,GACtBpK,OAAOuI,KAAKjF,GAASmG,SAAQ,SAAU/H,GACtC0I,EAAgBF,EAAO9J,KAAKkD,EAAQ5B,GAAO8B,QAAQ6G,OAAOzC,KAAK,KAAOlG,KAGvE,IAAI4I,EAAW,GAEf,SAASC,EAAMhL,EAAKmC,GACnB,KAAM8I,gBAAgBD,GACrB,OAAO,IAAIA,EAAMhL,EAAKmC,GAOvB,GAJIA,GAASA,KAASyI,IACrBzI,EAAQ,MAGLA,KAAWA,KAAS4B,GACvB,MAAM,IAAIY,MAAM,kBAAoBxC,GAGrC,IAAIjC,EACA8D,EAEJ,GAAW,MAAPhE,EACHiL,KAAK9I,MAAQ,MACb8I,KAAKnD,MAAQ,CAAC,EAAG,EAAG,GACpBmD,KAAKC,OAAS,OACR,GAAIlL,aAAegL,EACzBC,KAAK9I,MAAQnC,EAAImC,MACjB8I,KAAKnD,MAAQ9H,EAAI8H,MAAMnI,QACvBsL,KAAKC,OAASlL,EAAIkL,YACZ,GAAmB,iBAARlL,EAAkB,CACnC,IAAIsK,EAASrC,EAAY1G,IAAIvB,GAC7B,GAAe,OAAXsK,EACH,MAAM,IAAI3F,MAAM,sCAAwC3E,GAGzDiL,KAAK9I,MAAQmI,EAAOnI,MACpB6B,EAAWD,EAAQkH,KAAK9I,OAAO6B,SAC/BiH,KAAKnD,MAAQwC,EAAO7H,MAAM9C,MAAM,EAAGqE,GACnCiH,KAAKC,OAA2C,iBAA3BZ,EAAO7H,MAAMuB,GAAyBsG,EAAO7H,MAAMuB,GAAY,OAC9E,GAAIhE,EAAII,OAAQ,CACtB6K,KAAK9I,MAAQA,GAAS,MACtB6B,EAAWD,EAAQkH,KAAK9I,OAAO6B,SAC/B,IAAImH,EAASR,EAAO9J,KAAKb,EAAK,EAAGgE,GACjCiH,KAAKnD,MAAQsD,EAAUD,EAAQnH,GAC/BiH,KAAKC,OAAkC,iBAAlBlL,EAAIgE,GAAyBhE,EAAIgE,GAAY,OAC5D,GAAmB,iBAARhE,EAEjBA,GAAO,SACPiL,KAAK9I,MAAQ,MACb8I,KAAKnD,MAAQ,CACX9H,GAAO,GAAM,IACbA,GAAO,EAAK,IACP,IAANA,GAEDiL,KAAKC,OAAS,MACR,CACND,KAAKC,OAAS,EAEd,IAAIlC,EAAOvI,OAAOuI,KAAKhJ,GACnB,UAAWA,IACdgJ,EAAKzI,OAAOyI,EAAKqC,QAAQ,SAAU,GACnCJ,KAAKC,OAA8B,iBAAdlL,EAAIgD,MAAqBhD,EAAIgD,MAAQ,GAG3D,IAAIsI,EAAatC,EAAK8B,OAAOzC,KAAK,IAClC,KAAMiD,KAAcT,GACnB,MAAM,IAAIlG,MAAM,sCAAwC4G,KAAKC,UAAUxL,IAGxEiL,KAAK9I,MAAQ0I,EAAgBS,GAE7B,IAAIrH,EAASF,EAAQkH,KAAK9I,OAAO8B,OAC7B6D,EAAQ,GACZ,IAAK5H,EAAI,EAAGA,EAAI+D,EAAO7D,OAAQF,IAC9B4H,EAAMhH,KAAKd,EAAIiE,EAAO/D,KAGvB+K,KAAKnD,MAAQsD,EAAUtD,GAIxB,GAAIiD,EAASE,KAAK9I,OAEjB,IADA6B,EAAWD,EAAQkH,KAAK9I,OAAO6B,SAC1B9D,EAAI,EAAGA,EAAI8D,EAAU9D,IAAK,CAC9B,IAAIuL,EAAQV,EAASE,KAAK9I,OAAOjC,GAC7BuL,IACHR,KAAKnD,MAAM5H,GAAKuL,EAAMR,KAAKnD,MAAM5H,KAKpC+K,KAAKC,OAAStJ,KAAKD,IAAI,EAAGC,KAAKF,IAAI,EAAGuJ,KAAKC,SAEvCzK,OAAOiL,QACVjL,OAAOiL,OAAOT,MA4ThB,SAASU,EAAOxJ,EAAOyJ,EAASC,GAS/B,OARA1J,EAAQ1C,MAAMa,QAAQ6B,GAASA,EAAQ,CAACA,IAElC+H,SAAQ,SAAU/C,IACtB4D,EAAS5D,KAAO4D,EAAS5D,GAAK,KAAKyE,GAAWC,KAGhD1J,EAAQA,EAAM,GAEP,SAAUD,GAChB,IAAIoI,EAEJ,OAAIrJ,UAAUb,QACTyL,IACH3J,EAAM2J,EAAS3J,KAGhBoI,EAASW,KAAK9I,MACP2F,MAAM8D,GAAW1J,EACjBoI,IAGRA,EAASW,KAAK9I,KAAS2F,MAAM8D,GACzBC,IACHvB,EAASuB,EAASvB,IAGZA,IAIT,SAASwB,EAAMnK,GACd,OAAO,SAAUyD,GAChB,OAAOxD,KAAKD,IAAI,EAAGC,KAAKF,IAAIC,EAAKyD,KAInC,SAAS2G,EAAY7J,GACpB,OAAOzC,MAAMa,QAAQ4B,GAAOA,EAAM,CAACA,GAGpC,SAASkJ,EAAUY,EAAK5L,GACvB,IAAK,IAAIF,EAAI,EAAGA,EAAIE,EAAQF,IACL,iBAAX8L,EAAI9L,KACd8L,EAAI9L,GAAK,GAIX,OAAO8L,EAxWRhB,EAAMtL,UAAY,CACjBqC,SAAU,WACT,OAAOkJ,KAAKhJ,UAGbgK,OAAQ,WACP,OAAOhB,KAAKA,KAAK9I,UAGlBF,OAAQ,SAAUiK,GACjB,IAAIC,EAAOlB,KAAK9I,SAAS8F,EAAY3G,GAAK2J,KAAOA,KAAKzI,MAElDzC,EAAuB,KAD3BoM,EAAOA,EAAKpJ,MAAwB,iBAAXmJ,EAAsBA,EAAS,IACxChB,OAAeiB,EAAKrE,MAAQqE,EAAKrE,MAAMtI,OAAOyL,KAAKC,QACnE,OAAOjD,EAAY3G,GAAG6K,EAAKhK,OAAOpC,IAGnCqM,cAAe,SAAUF,GACxB,IAAIC,EAAOlB,KAAKzI,MAAMO,MAAwB,iBAAXmJ,EAAsBA,EAAS,GAC9DnM,EAAuB,IAAhBoM,EAAKjB,OAAeiB,EAAKrE,MAAQqE,EAAKrE,MAAMtI,OAAOyL,KAAKC,QACnE,OAAOjD,EAAY3G,GAAGkB,IAAIY,QAAQrD,IAGnCsM,MAAO,WACN,OAAuB,IAAhBpB,KAAKC,OAAeD,KAAKnD,MAAMnI,QAAUsL,KAAKnD,MAAMtI,OAAOyL,KAAKC,SAGxEoB,OAAQ,WAKP,IAJA,IAAIhC,EAAS,GACTtG,EAAWD,EAAQkH,KAAK9I,OAAO6B,SAC/BC,EAASF,EAAQkH,KAAK9I,OAAO8B,OAExB/D,EAAI,EAAGA,EAAI8D,EAAU9D,IAC7BoK,EAAOrG,EAAO/D,IAAM+K,KAAKnD,MAAM5H,GAOhC,OAJoB,IAAhB+K,KAAKC,SACRZ,EAAOtH,MAAQiI,KAAKC,QAGdZ,GAGRiC,UAAW,WACV,IAAI/J,EAAMyI,KAAKzI,MAAMsF,MASrB,OARAtF,EAAI,IAAM,IACVA,EAAI,IAAM,IACVA,EAAI,IAAM,IAEU,IAAhByI,KAAKC,QACR1I,EAAI1B,KAAKmK,KAAKC,QAGR1I,GAGRgK,WAAY,WACX,IAAIhK,EAAMyI,KAAKzI,MAAM8J,SASrB,OARA9J,EAAIa,GAAK,IACTb,EAAIc,GAAK,IACTd,EAAIe,GAAK,IAEW,IAAhB0H,KAAKC,SACR1I,EAAIQ,MAAQiI,KAAKC,QAGX1I,GAGRO,MAAO,SAAUmJ,GAEhB,OADAA,EAAStK,KAAKD,IAAIuK,GAAU,EAAG,GACxB,IAAIlB,EAAMC,KAAKnD,MAAMK,IA4O9B,SAAsB+D,GACrB,OAAO,SAAUzK,GAChB,OANF,SAAiBA,EAAKyK,GACrB,OAAOO,OAAOhL,EAAIiL,QAAQR,IAKlBS,CAAQlL,EAAKyK,IA9OYU,CAAaV,IAAS1M,OAAOyL,KAAKC,QAASD,KAAK9I,QAGjFa,MAAO,SAAUd,GAChB,OAAIjB,UAAUb,OACN,IAAI4K,EAAMC,KAAKnD,MAAMtI,OAAOoC,KAAKD,IAAI,EAAGC,KAAKF,IAAI,EAAGQ,KAAQ+I,KAAK9I,OAGlE8I,KAAKC,QAIbtN,IAAK+N,EAAO,MAAO,EAAGG,EAAM,MAC5BpS,MAAOiS,EAAO,MAAO,EAAGG,EAAM,MAC9BjV,KAAM8U,EAAO,MAAO,EAAGG,EAAM,MAE7BvD,IAAKoD,EAAO,CAAC,MAAO,MAAO,MAAO,MAAO,OAAQ,GAAG,SAAUzJ,GAAO,OAASA,EAAM,IAAO,KAAO,OAElG2K,YAAalB,EAAO,MAAO,EAAGG,EAAM,MACpCgB,UAAWnB,EAAO,MAAO,EAAGG,EAAM,MAElCiB,YAAapB,EAAO,MAAO,EAAGG,EAAM,MACpCrJ,MAAOkJ,EAAO,MAAO,EAAGG,EAAM,MAE9BtD,OAAQmD,EAAO,MAAO,EAAGG,EAAM,MAC/BrS,KAAMkS,EAAO,MAAO,EAAGG,EAAM,MAE7B1M,MAAOuM,EAAO,MAAO,EAAGG,EAAM,MAC9BkB,OAAQrB,EAAO,MAAO,EAAGG,EAAM,MAE/BtU,KAAMmU,EAAO,OAAQ,EAAGG,EAAM,MAC9BrQ,QAASkQ,EAAO,OAAQ,EAAGG,EAAM,MACjCxM,OAAQqM,EAAO,OAAQ,EAAGG,EAAM,MAChCnV,MAAOgV,EAAO,OAAQ,EAAGG,EAAM,MAE/BnG,EAAGgG,EAAO,MAAO,EAAGG,EAAM,MAC1BlG,EAAG+F,EAAO,MAAO,EAAGG,EAAM,MAC1B7F,EAAG0F,EAAO,MAAO,EAAGG,EAAM,MAE1BhH,EAAG6G,EAAO,MAAO,EAAGG,EAAM,MAC1BpI,EAAGiI,EAAO,MAAO,GACjBpI,EAAGoI,EAAO,MAAO,GAEjBhI,QAAS,SAAUzB,GAClB,OAAIjB,UAAUb,OACN,IAAI4K,EAAM9I,GAGX6B,EAAQkH,KAAK9I,OAAOwB,QAAQsH,KAAKnD,QAGzC5E,IAAK,SAAUhB,GACd,OAAIjB,UAAUb,OACN,IAAI4K,EAAM9I,GAGX+F,EAAY3G,GAAG4B,IAAI+H,KAAKzI,MAAMO,QAAQ+E,QAG9CmF,UAAW,WACV,IAAIzK,EAAMyI,KAAKzI,MAAMsF,MACrB,OAAkB,IAATtF,EAAI,KAAc,IAAiB,IAATA,EAAI,KAAc,EAAe,IAATA,EAAI,IAGhE0K,WAAY,WAKX,IAHA,IAAI1K,EAAMyI,KAAKzI,MAAMsF,MAEjBqF,EAAM,GACDjN,EAAI,EAAGA,EAAIsC,EAAIpC,OAAQF,IAAK,CACpC,IAAIkN,EAAO5K,EAAItC,GAAK,IACpBiN,EAAIjN,GAAMkN,GAAQ,OAAWA,EAAO,MAAQxL,KAAKoE,KAAMoH,EAAO,MAAS,MAAQ,KAGhF,MAAO,MAASD,EAAI,GAAK,MAASA,EAAI,GAAK,MAASA,EAAI,IAGzDE,SAAU,SAAUC,GAEnB,IAAIC,EAAOtC,KAAKiC,aACZM,EAAOF,EAAOJ,aAElB,OAAIK,EAAOC,GACFD,EAAO,MAASC,EAAO,MAGxBA,EAAO,MAASD,EAAO,MAGhCE,MAAO,SAAUH,GAChB,IAAII,EAAgBzC,KAAKoC,SAASC,GAClC,OAAII,GAAiB,IACb,MAGAA,GAAiB,IAAO,KAAO,IAGxCC,OAAQ,WAEP,IAAInL,EAAMyI,KAAKzI,MAAMsF,MAErB,OADoB,IAATtF,EAAI,GAAoB,IAATA,EAAI,GAAoB,IAATA,EAAI,IAAY,IAC5C,KAGdoL,QAAS,WACR,OAAQ3C,KAAK0C,UAGdE,OAAQ,WAEP,IADA,IAAIrL,EAAMyI,KAAKzI,MACNtC,EAAI,EAAGA,EAAI,EAAGA,IACtBsC,EAAIsF,MAAM5H,GAAK,IAAMsC,EAAIsF,MAAM5H,GAEhC,OAAOsC,GAGRsL,QAAS,SAAU5G,GAClB,IAAI5E,EAAM2I,KAAK3I,MAEf,OADAA,EAAIwF,MAAM,IAAMxF,EAAIwF,MAAM,GAAKZ,EACxB5E,GAGRyL,OAAQ,SAAU7G,GACjB,IAAI5E,EAAM2I,KAAK3I,MAEf,OADAA,EAAIwF,MAAM,IAAMxF,EAAIwF,MAAM,GAAKZ,EACxB5E,GAGR0L,SAAU,SAAU9G,GACnB,IAAI5E,EAAM2I,KAAK3I,MAEf,OADAA,EAAIwF,MAAM,IAAMxF,EAAIwF,MAAM,GAAKZ,EACxB5E,GAGR2L,WAAY,SAAU/G,GACrB,IAAI5E,EAAM2I,KAAK3I,MAEf,OADAA,EAAIwF,MAAM,IAAMxF,EAAIwF,MAAM,GAAKZ,EACxB5E,GAGR4L,OAAQ,SAAUhH,GACjB,IAAI3E,EAAM0I,KAAK1I,MAEf,OADAA,EAAIuF,MAAM,IAAMvF,EAAIuF,MAAM,GAAKZ,EACxB3E,GAGR4L,QAAS,SAAUjH,GAClB,IAAI3E,EAAM0I,KAAK1I,MAEf,OADAA,EAAIuF,MAAM,IAAMvF,EAAIuF,MAAM,GAAKZ,EACxB3E,GAGR6L,UAAW,WAEV,IAAI5L,EAAMyI,KAAKzI,MAAMsF,MACjB5F,EAAe,GAATM,EAAI,GAAoB,IAATA,EAAI,GAAqB,IAATA,EAAI,GAC7C,OAAOwI,EAAMxI,IAAIN,EAAKA,EAAKA,IAG5BmM,KAAM,SAAUnH,GACf,OAAO+D,KAAKjI,MAAMiI,KAAKC,OAAUD,KAAKC,OAAShE,IAGhDoH,QAAS,SAAUpH,GAClB,OAAO+D,KAAKjI,MAAMiI,KAAKC,OAAUD,KAAKC,OAAShE,IAGhDqH,OAAQ,SAAUC,GACjB,IAAIlM,EAAM2I,KAAK3I,MACXiG,EAAMjG,EAAIwF,MAAM,GAIpB,OAFAS,GADAA,GAAOA,EAAMiG,GAAW,KACZ,EAAI,IAAMjG,EAAMA,EAC5BjG,EAAIwF,MAAM,GAAKS,EACRjG,GAGRmM,IAAK,SAAUC,EAAYC,GAG1B,IAAKD,IAAeA,EAAWlM,IAC9B,MAAM,IAAImC,MAAM,gFAAkF+J,GAEnG,IAAIE,EAASF,EAAWlM,MACpB8K,EAASrC,KAAKzI,MACdkE,OAAemI,IAAXF,EAAuB,GAAMA,EAEjChG,EAAI,EAAIjC,EAAI,EACZhD,EAAIkL,EAAO5L,QAAUsK,EAAOtK,QAE5B8L,IAAQnG,EAAIjF,IAAO,EAAKiF,GAAKA,EAAIjF,IAAM,EAAIiF,EAAIjF,IAAM,GAAK,EAC1DqL,EAAK,EAAID,EAEb,OAAO9D,EAAMxI,IACXsM,EAAKF,EAAOhR,MAAQmR,EAAKzB,EAAO1P,MAChCkR,EAAKF,EAAOlV,QAAUqV,EAAKzB,EAAO5T,QAClCoV,EAAKF,EAAO/X,OAASkY,EAAKzB,EAAOzW,OACjC+X,EAAO5L,QAAU0D,EAAI4G,EAAOtK,SAAW,EAAI0D,MAK/CjG,OAAOuI,KAAKjF,GAASmG,SAAQ,SAAU/H,GACtC,IAAsC,IAAlCyI,EAAcS,QAAQlJ,GAA1B,CAIA,IAAI6B,EAAWD,EAAQ5B,GAAO6B,SAG9BgH,EAAMtL,UAAUyC,GAAS,WACxB,GAAI8I,KAAK9I,QAAUA,EAClB,OAAO,IAAI6I,EAAMC,MAGlB,GAAIhK,UAAUb,OACb,OAAO,IAAI4K,EAAM/J,UAAWkB,GAG7B,IAAI6M,EAA0C,iBAAxB/N,UAAU+C,GAAyBA,EAAWiH,KAAKC,OACzE,OAAO,IAAIF,EAAMe,EAAYhI,EAAQkH,KAAK9I,OAAOA,GAAOqI,IAAIS,KAAKnD,QAAQtI,OAAOwP,GAAW7M,IAI5F6I,EAAM7I,GAAS,SAAU2F,GAIxB,MAHqB,iBAAVA,IACVA,EAAQsD,EAAUT,EAAO9J,KAAKI,WAAY+C,IAEpC,IAAIgH,EAAMlD,EAAO3F,QAiE1B,IAAA2F,EAAiBkD,wCC1cV,SAAmCiE,EAAYC,EAAYC,GAQ9D,IAPA,IAAMC,EAAkBpE,EAAMiE,GACxBI,EAAkBrE,EAAMkE,GAE9BI,EAAcF,EAAgB9M,MAAMgK,SAA7BzH,IAAAA,EAAEM,IAAAA,EAELoK,EAAWH,EAERG,EAASlC,SAASgC,GAAmBF,KACpCI,EAASzC,aAAe,IAI5ByC,EAAWvE,EAAM,CAACnG,EAAAA,EAAGM,EAAAA,EAAGL,EAAGyK,EAASzC,YAAc,IAGtD,OAAOyC,gCAnCJ,SAAoCN,EAAYC,EAAYC,GAQ/D,IAPA,IAAMC,EAAkBpE,EAAMiE,GACxBI,EAAkBrE,EAAMkE,GAE9BM,EAAcJ,EAAgB9M,MAAMgK,SAA7BzH,IAAAA,EAAEM,IAAAA,EAELoK,EAAWH,EAERG,EAASlC,SAASgC,GAAmBF,KACpCI,EAASzC,aAAe,MAI5ByC,EAAWvE,EAAM,CAACnG,EAAAA,EAAGM,EAAAA,EAAGL,EAAGyK,EAASzC,YAAc,IAGtD,OAAOyC,iCAsBJ,SAAqCL,GACxC,IAAMG,EAAkBrE,EAAMkE,GAExB9P,EAAQ4L,EAAM,CAAC3H,EAAG,IAAKC,EAAG,IAAKC,EAAG,MAClC5M,EAAQqU,EAAM,CAAC3H,EAAG,EAAGC,EAAG,EAAGC,EAAG,IASpC,MAL4B,KAAxB8L,EAAgBzR,MACU,KAA1ByR,EAAgB3V,QACM,KAAtB2V,EAAgB9L,KAGL,IAAO5M,EAAQyI"}
|