diff --git a/dist/receipt-printer-encoder.esm.js.map b/dist/receipt-printer-encoder.esm.js.map index 5d94869..79c6958 100644 --- a/dist/receipt-printer-encoder.esm.js.map +++ b/dist/receipt-printer-encoder.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"receipt-printer-encoder.esm.js","sources":["../node_modules/canvas-dither/src/canvas-dither.js","../node_modules/canvas-flatten/src/canvas-flatten.js","../node_modules/@point-of-sale/codepage-encoder/dist/codepage-encoder.mjs","../node_modules/@canvas/image-data/browser.js","../node_modules/resize-image-data/index.js","../src/languages/esc-pos.js","../src/languages/star-prnt.js","../src/text-style.js","../src/text-wrap.js","../src/line-composer.js","../generated/mapping.js","../generated/printers.js","../src/receipt-printer-encoder.js"],"sourcesContent":["/**\n * Use the ImageData from a Canvas and turn the image in a 1-bit black and white image using dithering\n */\nclass CanvasDither {\n /**\n * Change the image to grayscale\n *\n * @param {object} image The imageData of a Canvas 2d context\n * @return {object} The resulting imageData\n *\n */\n grayscale(image) {\n for (let i = 0; i < image.data.length; i += 4) {\n const luminance = (image.data[i] * 0.299) + (image.data[i + 1] * 0.587) + (image.data[i + 2] * 0.114);\n image.data.fill(luminance, i, i + 3);\n }\n\n return image;\n }\n\n /**\n * Change the image to blank and white using a simple threshold\n *\n * @param {object} image The imageData of a Canvas 2d context\n * @param {number} threshold Threshold value (0-255)\n * @return {object} The resulting imageData\n *\n */\n threshold(image, threshold) {\n for (let i = 0; i < image.data.length; i += 4) {\n const luminance = (image.data[i] * 0.299) + (image.data[i + 1] * 0.587) + (image.data[i + 2] * 0.114);\n\n const value = luminance < threshold ? 0 : 255;\n image.data.fill(value, i, i + 3);\n }\n\n return image;\n }\n\n /**\n * Change the image to blank and white using the Bayer algorithm\n *\n * @param {object} image The imageData of a Canvas 2d context\n * @param {number} threshold Threshold value (0-255)\n * @return {object} The resulting imageData\n *\n */\n bayer(image, threshold) {\n const thresholdMap = [\n [15, 135, 45, 165],\n [195, 75, 225, 105],\n [60, 180, 30, 150],\n [240, 120, 210, 90],\n ];\n\n for (let i = 0; i < image.data.length; i += 4) {\n const luminance = (image.data[i] * 0.299) + (image.data[i + 1] * 0.587) + (image.data[i + 2] * 0.114);\n\n const x = i / 4 % image.width;\n const y = Math.floor(i / 4 / image.width);\n const map = Math.floor((luminance + thresholdMap[x % 4][y % 4]) / 2);\n const value = map < threshold ? 0 : 255;\n image.data.fill(value, i, i + 3);\n }\n\n return image;\n }\n\n /**\n * Change the image to blank and white using the Floyd-Steinberg algorithm\n *\n * @param {object} image The imageData of a Canvas 2d context\n * @return {object} The resulting imageData\n *\n */\n floydsteinberg(image) {\n const width = image.width;\n const luminance = new Uint8ClampedArray(image.width * image.height);\n\n for (let l = 0, i = 0; i < image.data.length; l++, i += 4) {\n luminance[l] = (image.data[i] * 0.299) + (image.data[i + 1] * 0.587) + (image.data[i + 2] * 0.114);\n }\n\n for (let l = 0, i = 0; i < image.data.length; l++, i += 4) {\n const value = luminance[l] < 129 ? 0 : 255;\n const error = Math.floor((luminance[l] - value) / 16);\n image.data.fill(value, i, i + 3);\n\n luminance[l + 1] += error * 7;\n luminance[l + width - 1] += error * 3;\n luminance[l + width] += error * 5;\n luminance[l + width + 1] += error * 1;\n }\n\n return image;\n }\n\n /**\n * Change the image to blank and white using the Atkinson algorithm\n *\n * @param {object} image The imageData of a Canvas 2d context\n * @return {object} The resulting imageData\n *\n */\n atkinson(image) {\n const width = image.width;\n const luminance = new Uint8ClampedArray(image.width * image.height);\n\n for (let l = 0, i = 0; i < image.data.length; l++, i += 4) {\n luminance[l] = (image.data[i] * 0.299) + (image.data[i + 1] * 0.587) + (image.data[i + 2] * 0.114);\n }\n\n for (let l = 0, i = 0; i < image.data.length; l++, i += 4) {\n const value = luminance[l] < 129 ? 0 : 255;\n const error = Math.floor((luminance[l] - value) / 8);\n image.data.fill(value, i, i + 3);\n\n luminance[l + 1] += error;\n luminance[l + 2] += error;\n luminance[l + width - 1] += error;\n luminance[l + width] += error;\n luminance[l + width + 1] += error;\n luminance[l + 2 * width] += error;\n }\n\n return image;\n }\n}\n\nmodule.exports = new CanvasDither();\n","/**\n * Use the ImageData from a Canvas and flatten the image on a solid background\n */\nclass CanvasFlatten {\n /**\n * Change the image to grayscale\n *\n * @param {object} image The imageData of a Canvas 2d context\n * @param {array} background Three values consisting of the r, g, b of the background\n * @return {object} The resulting imageData\n *\n */\n flatten(image, background) {\n for (let i = 0; i < image.data.length; i += 4) {\n const alpha = image.data[i + 3];\n const invAlpha = 255 - alpha;\n\n image.data[i] = (alpha * image.data[i] + invAlpha * background[0]) / 255;\n image.data[i + 1] = (alpha * image.data[i + 1] + invAlpha * background[1]) / 255;\n image.data[i + 2] = (alpha * image.data[i + 2] + invAlpha * background[2]) / 255;\n image.data[i + 3] = 0xff;\n }\n\n return image;\n }\n}\n\nmodule.exports = new CanvasFlatten();\n","const definitions = {\n\n\t'ascii': {\n\t\tname: 'ASCII',\n\t\tlanguages: ['en'],\n\t\tvalue: new Array(256).fill(1,0,128).map((v,i) => i),\n\t},\n\n\t'cp437': {\n\t\tname: 'USA, Standard Europe',\n\t\tlanguages: ['en'],\n\t\textends: 'ascii',\n\t\tvalue: [[,9786,9787,9829,9830,9827,9824,8226,9688,9675,9689,9794,9792,9834,9835,9788,],[9658,9668,8597,8252,182,167,9644,8616,8593,8595,8594,8592,8735,8596,9650,9660,],,,,,,[,,,,,,,,,,,,,,,8962,],[199,252,233,226,228,224,229,231,234,235,232,239,238,236,196,197,],[201,230,198,244,246,242,251,249,255,214,220,162,163,165,8359,402,],[225,237,243,250,241,209,170,186,191,8976,172,189,188,161,171,187,],[9617,9618,9619,9474,9508,9569,9570,9558,9557,9571,9553,9559,9565,9564,9563,9488,],[9492,9524,9516,9500,9472,9532,9566,9567,9562,9556,9577,9574,9568,9552,9580,9575,],[9576,9572,9573,9561,9560,9554,9555,9579,9578,9496,9484,9608,9604,9612,9616,9600,],[945,223,915,960,931,963,181,964,934,920,937,948,8734,966,949,8745,],[8801,177,8805,8804,8992,8993,247,8776,176,8729,183,8730,8319,178,9632,160,],]\n\t},\n\n\t'cp720': {\n\t\tname: 'Arabic',\n\t\tlanguages: ['ar'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[65533,65533,,,65533,,65533,,,,,,,65533,65533,65533,],[65533,1617,1618,,164,1600,,,1569,1570,1571,1572,,1573,1574,1575,],[1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,,,],,,,[1590,1591,1592,1593,1594,1601,,1602,1603,1604,1605,1606,1607,1608,1609,1610,],[,1611,1612,1613,1614,1615,1616,,,,,,,,,,],]\n\t},\n\n\t'cp737': {\n\t\tname: 'Greek',\n\t\tlanguages: ['el'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,],[929,931,932,933,934,935,936,937,945,946,947,948,949,950,951,952,],[953,954,955,956,957,958,959,960,961,963,962,964,965,966,967,968,],,,,[969,940,941,942,970,943,972,973,971,974,902,904,905,906,908,910,],[911,,,,938,939,,,,,,,,,,,],]\n\t},\n\n\t'cp771': {\n\t\tname: 'Lithuanian KBL',\n\t\tlanguages: ['lt'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,,,[,,,,,,,,,,,,260,261,268,269,],,[280,281,278,279,302,303,352,353,370,371,362,363,381,382,,,],]\n\t},\n\n\t'cp772': {\n\t\tname: 'Lithuanian LST 1284',\n\t\tlanguages: ['lt'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,[,,,,,260,268,280,278,,,,,302,352,,],[,,,,,,370,362,,,,,,,,381,],[261,269,281,279,303,353,371,363,382,,,,,,,,],,[,,8805,8804,8222,8220,247,8776,,,,,8319,178,,,],]\n\t},\n\n\t'cp774': {\n\t\tname: 'Lithuanian LST 1283',\n\t\tlanguages: ['lt'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,,,,[,,,,,260,268,280,278,,,,,302,352,,],[,,,,,,370,362,,,,,,,,381,],[261,269,281,279,303,353,371,363,382,,,,,,,,],[,946,,,,,,,,,,,,,,8898,],[,,,,8222,8220,,,,,729,,,,,,],]\n\t},\n\n\t'cp775': {\n\t\tname: 'Baltic Rim',\n\t\tlanguages: ['et','lt'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[262,,,257,,291,,263,322,275,342,343,299,377,,,],[,,,333,,290,162,346,347,,,248,,216,215,164,],[256,298,,379,380,378,8221,166,169,174,,,,321,,,],[,,,,,260,268,280,278,,,,,302,352,,],[,,,,,,370,362,,,,,,,,381,],[261,269,281,279,303,353,371,363,382,,,,,,,,],[211,,332,323,245,213,,324,310,311,315,316,326,274,325,8217,],[173,,8220,190,182,167,,8222,,,,185,179,,,,],]\n\t},\n\n\t'cp850': {\n\t\tname: 'Multilingual',\n\t\tlanguages: ['en'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,,[,,,,,,,,,,,248,,216,215,,],[,,,,,,,,,174,,,,,,,],[,,,,,193,194,192,169,,,,,162,165,,],[,,,,,,227,195,,,,,,,,164,],[240,208,202,203,200,305,205,206,207,,,,,166,204,,],[211,,212,210,245,213,,254,222,218,219,217,253,221,175,180,],[173,,8215,190,182,167,,184,,168,,185,179,,,,],]\n\t},\n\n\t'cp851': {\n\t\tname: 'Greek',\n\t\tlanguages: ['el'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,902,,,,,,,904,,905,],[906,65533,908,,,910,,,911,,,940,,941,942,943,],[970,912,972,973,913,914,915,916,917,918,919,,920,921,,,],[,,,,,922,923,924,925,,,,,926,927,,],[,,,,,,928,929,,,,,,,,931,],[932,933,934,935,936,937,945,946,947,,,,,948,949,,],[950,951,952,953,954,955,956,957,958,959,960,961,963,962,964,180,],[173,,965,966,967,167,968,184,,168,969,971,944,974,,,],]\n\t},\n\n\t'cp852': {\n\t\tname: 'Latin 2',\n\t\tlanguages: ['hu','pl','cz'],\n\t\textends: 'cp850',\n\t\tvalue: [,,,,,,,,[,,,,,367,263,,322,,336,337,,377,,262,],[,313,314,,,317,318,346,347,,,356,357,321,,269,],[,,,,260,261,381,382,280,281,,378,268,351,,,],[,,,,,,,282,350,,,,,379,380,,],[,,,,,,258,259,,,,,,,,,],[273,272,270,,271,327,,,283,,,,,354,366,,],[,,,323,324,328,352,353,340,,341,368,,,355,,],[,733,731,711,728,,,,,,729,369,344,345,,,],]\n\t},\n\n\t'cp853': {\n\t\tname: 'Turkish',\n\t\tlanguages: ['tr'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,265,,,,,,,,,264,],[,267,266,,,,,,304,,,285,,284,215,309,],[,,,,,,286,287,292,293,65533,,308,351,,,],[,,,,,193,194,192,350,,,,,379,380,,],[,,,,,,348,349,,,,,,,,164,],[65533,65533,202,203,200,305,205,206,207,,,,,65533,204,,],[211,,212,210,288,289,,294,295,218,219,217,364,365,65533,180,],[173,65533,8467,329,728,167,,184,,168,729,65533,179,,,,],]\n\t},\n\n\t'cp855': {\n\t\tname: 'Cyrillic',\n\t\tlanguages: ['bg'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[1106,1026,1107,1027,1105,1025,1108,1028,1109,1029,1110,1030,1111,1031,1112,1032,],[1113,1033,1114,1034,1115,1035,1116,1036,1118,1038,1119,1039,1102,1070,1098,1066,],[1072,1040,1073,1041,1094,1062,1076,1044,1077,1045,1092,1060,1075,1043,,,],[,,,,,1093,1061,1080,1048,,,,,1081,1049,,],[,,,,,,1082,1050,,,,,,,,164,],[1083,1051,1084,1052,1085,1053,1086,1054,1087,,,,,1055,1103,,],[1071,1088,1056,1089,1057,1090,1058,1091,1059,1078,1046,1074,1042,1100,1068,8470,],[173,1099,1067,1079,1047,1096,1064,1101,1069,1097,1065,1095,1063,167,,,],]\n\t},\n\n\t'cp857': {\n\t\tname: 'Turkish',\n\t\tlanguages: ['tr'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,,,305,,,],[,,,,,,,,304,,,248,,216,350,351,],[,,,,,,286,287,,174,,,,,,,],[,,,,,193,194,192,169,,,,,162,165,,],[,,,,,,227,195,,,,,,,,164,],[186,170,202,203,200,8364,205,206,207,,,,,166,204,,],[211,,212,210,245,213,,65533,215,218,219,217,236,255,175,180,],[173,,65533,190,182,167,,184,,168,,185,179,,,,],]\n\t},\n\n\t'cp858': {\n\t\tname: 'Euro',\n\t\tlanguages: ['en'],\n\t\textends: 'cp850',\n\t\tvalue: [,,,,,,,,,,,,,[,,,,,8364,,,,,,,,,,,],,,]\n\t},\n\n\t'cp860': {\n\t\tname: 'Portuguese',\n\t\tlanguages: ['pt'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,227,,193,,,202,,205,212,,195,194,],[,192,200,,245,,218,,204,213,,,,217,,211,],[,,,,,,,,,210,,,,,,,],,,,,,]\n\t},\n\n\t'cp861': {\n\t\tname: 'Icelandic',\n\t\tlanguages: ['is'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,208,240,222,,,],[,,,,,254,,221,253,,,248,,216,,,],[,,,,193,205,211,218,,,,,,,,,],,,,,,]\n\t},\n\n\t'cp862': {\n\t\tname: 'Hebrew',\n\t\tlanguages: ['he'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,],[1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,,,,,,],,,,,,,]\n\t},\n\n\t'cp863': {\n\t\tname: 'Canadian French',\n\t\tlanguages: ['fr'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,194,,182,,,,,,,8215,192,167,],[,200,202,,203,207,,,164,212,,,,217,219,,],[166,180,,,168,184,179,175,206,,,,,190,,,],,,,,,]\n\t},\n\n\t'cp864': {\n\t\tname: 'Arabic',\n\t\tlanguages: ['ar'],\n\t\textends: 'cp437',\n\t\toffset: 128,\n\t\tvalue: [176,183,8729,8730,9618,9472,9474,9532,9508,9516,9500,9524,9488,9484,9492,9496,946,8734,966,177,189,188,8776,171,187,65271,65272,65533,65533,65275,65276,65533,160,173,65154,163,164,65156,65533,65533,65166,65167,65173,65177,1548,65181,65185,65189,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,65233,1563,65201,65205,65209,1567,162,65152,65153,65155,65157,65226,65163,65165,65169,65171,65175,65179,65183,65187,65191,65193,65195,65197,65199,65203,65207,65211,65215,65217,65221,65227,65231,166,172,247,215,65225,1600,65235,65239,65243,65247,65251,65255,65259,65261,65263,65267,65213,65228,65230,65229,65249,65149,1617,65253,65257,65260,65264,65266,65232,65237,65269,65270,65245,65241,65265,9632,65533]\n\t},\n\n\t'cp865': {\n\t\tname: 'Nordic',\n\t\tlanguages: ['sv','dk'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,,[,,,,,,,,,,,248,,216,,,],[,,,,,,,,,,,,,,,164,],,,,,,]\n\t},\n\n\t'cp866': {\n\t\tname: 'Cyrillic 2',\n\t\tlanguages: ['ru'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,],[1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,],[1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,],,,,[1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,],[1025,1105,1028,1108,1031,1111,1038,1118,,,,,8470,164,,,],]\n\t},\n\n\t'cp869': {\n\t\tname: 'Greek',\n\t\tlanguages: ['el'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[65533,65533,65533,65533,65533,65533,902,65533,183,172,166,8216,8217,904,8213,905,],[906,938,908,65533,65533,910,939,169,911,178,179,940,,941,942,943,],[970,912,972,973,913,914,915,916,917,918,919,,920,921,,,],[,,,,,922,923,924,925,,,,,926,927,,],[,,,,,,928,929,,,,,,,,931,],[932,933,934,935,936,937,945,946,947,,,,,948,949,,],[950,951,952,953,954,955,956,957,958,959,960,961,963,962,964,900,],[173,,965,966,967,167,968,901,,168,969,971,944,974,,,],]\n\t},\n\n\t'cp874': {\n\t\tname: 'Thai',\n\t\tlanguages: ['th'],\n\t\textends: 'ascii',\n\t\toffset: 128,\n\t\tvalue: [8364,65533,65533,65533,65533,8230,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,8216,8217,8220,8221,8226,8211,8212,65533,65533,65533,65533,65533,65533,65533,65533,160,3585,3586,3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,3632,3633,3634,3635,3636,3637,3638,3639,3640,3641,3642,65533,65533,65533,65533,3647,3648,3649,3650,3651,3652,3653,3654,3655,3656,3657,3658,3659,3660,3661,3662,3663,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3674,3675,65533,65533,65533,65533]\n\t},\n\n\t'cp1001': {\n\t\tname: 'Arabic',\n\t\tlanguages: ['ar'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[1569,1570,1571,1572,1573,65163,1575,1576,65169,1577,1578,65175,1579,65179,1583,1584,],[1585,1586,1587,65203,65204,1588,65207,65208,1589,65211,65212,1590,65215,65216,1591,1592,],[1593,65227,1594,65231,1601,65235,1602,65239,1603,1705,1604,65271,65273,65275,9496,1605,],[65251,1606,65255,1607,65259,1608,1609,1657,65267,9474,1548,1563,1567,65154,65156,65162,],[,1580,65183,1581,65187,1582,65191,65226,65228,65230,65231,65272,65274,65276,65259,65260,],[1632,65264,9472,65533,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,65533,65533,],[65533,65533,65275,65533,65533,65533,65533,9524,,,,,,,,,],,]\n\t},\n\n\t'cp1098': {\n\t\tname: 'Farsi',\n\t\tlanguages: ['fa'],\n\t\textends: 'cp437',\n\t\tvalue: [,,[,,,,,65533,,,,,65533,,,,,,],,,,,,[65533,65533,1548,1563,1567,1611,1570,65154,63738,1575,65166,63739,1569,1571,65156,63737,],[1572,65163,1576,65169,64342,64344,1578,65175,1579,65179,1580,65183,64378,64380,215,1581,],[65187,1582,65191,1583,1584,1585,1586,64394,1587,65203,1588,65207,1589,65211,,,],[,,,,,1590,65215,65217,65219,,,,,164,65221,,],[,,,,,,65223,1593,,,,,,,,65533,],[65226,65227,65228,1594,65230,65231,65232,1601,65235,,,,,1602,65239,,],[64398,65243,64402,64404,1604,65247,1605,65251,1606,65255,1608,1607,65259,65260,64420,64508,],[173,64509,64510,1600,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,,,],]\n\t},\n\n\t'cp1125': {\n\t\tname: 'Ukrainian',\n\t\tlanguages: ['uk'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,,,,,[,,1168,1169,1028,1108,1030,1110,1031,1111,247,177,,,,,],]\n\t},\n\n\t'cp3001': {\n\t\tname: 'Estonian 1 or 1116',\n\t\tlanguages: ['et'],\n\t\textends: 'cp850',\n\t\tvalue: [,,,,,,,,,,,,,[353,352,,,,,,,,,,,,,,,],[,,,,,,,382,381,,,,,,,,],,]\n\t},\n\n\t'cp3002': {\n\t\tname: 'Estonian 2',\n\t\tlanguages: ['et'],\n\t\textends: 'iso8859-1',\n\t\tvalue: [,,,,,,,,[65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,],[65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,],[32,,,,,,,,,,,,,,,8254,],,,[352,,,,,,,,,,,,,,381,,],,[353,,,,,,,,,,,,,,382,,],]\n\t},\n\n\t'cp3011': {\n\t\tname: 'Latvian 1',\n\t\tlanguages: ['lv'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,,,,[,,,,,256,,326,,,,,,,,,],[,,,,,,257,,,,,,,,,,],[352,,269,268,,,291,298,299,,,,,363,362,,],,[274,275,290,311,310,316,315,382,381,,,,325,353,,,],]\n\t},\n\n\t'cp3012': {\n\t\tname: 'Latvian 2 (modified 866)',\n\t\tlanguages: ['lv'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,[,,,,,256,,326,,,,,,332,,,],[,,,,,,257,,,,,,,,,,],[352,,269,268,,,291,298,299,,,,,363,362,,],,[274,275,290,311,310,316,315,382,381,333,,,325,353,,,],]\n\t},\n\n\t'cp3021': {\n\t\tname: 'Bulgarian (MIK)',\n\t\tlanguages: ['bg'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,[1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,],[,,,,,,9571,9553,,,,,,,,9488,],[9617,9618,9619,9474,9508,8470,167,9559,9565,,,,,,,,],[945,223,915,960,931,963,181,964,934,920,937,948,8734,966,949,8745,],[8801,177,8805,8804,8992,8993,247,8776,,,,,8319,178,,,],]\n\t},\n\n\t'cp3041': {\n\t\tname: 'Maltese ISO 646',\n\t\tlanguages: ['mt'],\n\t\textends: 'ascii',\n\t\tvalue: [,,,,,[,,,,,,,,,,,289,380,295,,,],[267,,,,,,,,,,,,,,,,],[,,,,,,,,,,,288,379,294,266,,],,,,,,,,,]\n\t},\n\n\t'cp3840': {\n\t\tname: 'Russian (modified 866)',\n\t\tlanguages: ['ru'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,,,,,[8801,177,8805,8804,8992,8993,247,8776,,,,,8319,178,,,],]\n\t},\n\n\t'cp3841': {\n\t\tname: 'Ghost',\n\t\tlanguages: ['ru'],\n\t\textends: 'cp437',\n\t\toffset: 128,\n\t\tvalue: [1171,1241,1105,1110,1111,1112,1181,1257,1118,1199,1277,1224,1209,1207,1108,163,1170,1240,1025,1030,1031,1032,1180,1256,1038,1198,1276,1223,1208,1206,1028,1066,32,33,34,35,164,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,1102,1072,1073,1094,1076,1077,1092,1075,1093,1080,1081,1082,1083,1084,1085,1086,1087,1103,1088,1089,1090,1091,1078,1074,1100,1099,1079,1096,1101,1097,1095,1098,1070,1040,1041,1062,1044,1045,1060,1043,1061,1048,1049,1050,1051,1052,1053,1054,1055,1071,1056,1057,1058,1059,1046,1042,1068,1067,1047,1064,1069,1065,1063,8709]\n\t},\n\n\t'cp3843': {\n\t\tname: 'Polish (Mazovia)',\n\t\tlanguages: ['pl'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,261,,,,,,,263,,260,],[280,281,322,,,262,,,346,,,,321,,347,,],[377,379,,211,324,323,378,380,,,,,,,,,],,,,,,]\n\t},\n\n\t'cp3844': {\n\t\tname: 'Czech (Kamenický)',\n\t\tlanguages: ['cz'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[268,,,271,,270,356,269,283,282,313,205,318,314,,193,],[,382,381,,,211,367,218,253,,,352,317,221,344,357,],[,,,,328,327,366,212,353,345,341,340,,167,,,],,,,,,]\n\t},\n\n\t'cp3845': {\n\t\tname: 'Hungarian (CWI-2)',\n\t\tlanguages: ['hu'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,,,205,,193,],[,,,337,,211,369,218,368,,,,,,,,],[,,,,,,,336,,,,,,,,,],,,,,,]\n\t},\n\n\t'cp3846': {\n\t\tname: 'Turkish',\n\t\tlanguages: ['tr'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,,,305,,,],[,,,,,,,,304,,,,,,350,351,],[,,,,,,286,287,,,,,,,,,],,,,,,]\n\t},\n\n\t'cp3847': {\n\t\tname: 'Brazil ABNT',\n\t\tlanguages: ['pt'],\n\t\textends: 'iso8859-1',\n\t\tvalue: [,,,,,,,,,,,,,[,,,,,,,65533,,,,,,,,,],,[,,,,,,,65533,,,,,,,,,],]\n\t},\n\n\t'cp3848': {\n\t\tname: 'Brazil ABICOMP',\n\t\tlanguages: ['pt'],\n\t\textends: 'ascii',\n\t\tvalue: [,,,,,,,,,,[160,192,193,194,195,196,199,200,201,202,203,204,205,206,205,209,],[210,211,212,213,214,198,217,218,219,220,376,168,163,166,167,176,],[161,224,225,226,227,228,231,232,233,234,235,236,237,238,239,241,],[242,243,244,245,246,230,249,250,251,252,255,223,170,186,191,177,],,,]\n\t},\n\n\t'iso8859-1': {\n\t\tname: 'Latin 1',\n\t\tlanguages: ['en'],\n\t\textends: 'ascii',\n\t\toffset: 128,\n\t\tvalue: [128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255]\n\t},\n\n\t'iso8859-2': {\n\t\tname: 'Latin 2',\n\t\tlanguages: ['hu','pl','cz'],\n\t\textends: 'iso8859-1',\n\t\tvalue: [,,,,,,,,,,[,260,728,321,,317,346,,,352,350,356,377,,381,379,],[,261,731,322,,318,347,711,,353,351,357,378,733,382,380,],[340,,,258,,313,262,,268,,280,,282,,,270,],[272,323,327,,,336,,,344,366,,368,,,354,,],[341,,,259,,314,263,,269,,281,,283,,,271,],[273,324,328,,,337,,,345,367,,369,,,355,729,],]\n\t},\n\n\t'iso8859-7': {\n\t\tname: 'Greek',\n\t\tlanguages: ['el'],\n\t\textends: 'iso8859-1',\n\t\tvalue: [,,,,,,,,,,[,8216,8217,,8364,8367,,,,,890,,,,,8213,],[,,,,900,901,902,,904,905,906,,908,,910,911,],[912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,],[928,929,,931,932,933,934,935,936,937,938,939,940,941,942,943,],[944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,],[960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,,],]\n\t},\n\n\t'iso8859-15': {\n\t\tname: 'Latin 9',\n\t\tlanguages: ['fr'],\n\t\textends: 'iso8859-1',\n\t\tvalue: [,,,,,,,,,,[,,,,8364,,352,,353,,,,,,,,],[,,,,381,,,,382,,,,338,339,376,,],,,,,]\n\t},\n\n\t'windows1250': {\n\t\tname: 'Latin 2',\n\t\tlanguages: ['hu','pl','cz'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,,,65533,,,,,65533,,,,346,356,,377,],[,,,,,,,,65533,,,,347,357,,378,],[,711,728,321,,260,,,,,350,,,,,379,],[,,731,322,,,,,,261,351,,317,733,318,380,],[340,,,258,,313,262,,268,,280,,282,,,270,],[272,323,327,,,336,,,344,366,,368,,,354,,],[341,,,259,,314,263,,269,,281,,283,,,271,],[273,324,328,,,337,,,345,367,,369,,,355,729,],]\n\t},\n\n\t'windows1251': {\n\t\tname: 'Cyrillic',\n\t\tlanguages: ['ru'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[1026,1027,,1107,,,,,8364,,1033,,1034,1036,1035,1039,],[1106,,,,,,,,65533,,1113,,1114,1116,1115,1119,],[,1038,1118,1032,,1168,,,1025,,1028,,,,,1031,],[,,1030,1110,1169,,,,1105,8470,1108,,1112,1029,1109,1111,],[1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,],[1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,],[1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,],[1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,],]\n\t},\n\n\t'windows1252': {\n\t\tname: 'Latin',\n\t\tlanguages: ['fr'],\n\t\textends: 'iso8859-1',\n\t\tvalue: [,,,,,,,,[8364,65533,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,65533,381,65533,],[65533,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,65533,382,376,],,,,,,,]\n\t},\n\n\t'windows1253': {\n\t\tname: 'Greek',\n\t\tlanguages: ['el'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,,,,,,,,65533,,65533,,65533,,65533,,],[,,,,,,,,65533,,65533,,65533,,65533,65533,],[,901,902,,,,,,,,65533,,,,,8213,],[,,,,900,,,,904,905,906,,908,,910,911,],[912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,],[928,929,65533,931,932,933,934,935,936,937,938,939,940,941,942,943,],[944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,],[960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,65533,],]\n\t},\n\n\t'windows1254': {\n\t\tname: 'Turkish',\n\t\tlanguages: ['tr'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,,,,65533,,],[,,,,,,,,,,,,,,65533,,],,,,[286,,,,,,,,,,,,,304,350,,],,[287,,,,,,,,,,,,,305,351,,],]\n\t},\n\n\t'windows1255': {\n\t\tname: 'Hebrew',\n\t\tlanguages: ['he'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,65533,,65533,,65533,,],[,,,,,,,,,,65533,,65533,,65533,65533,],[,,,,8362,,,,,,215,,,,,,],[,,,,,,,,,,247,,,,,,],[1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,65533,1467,1468,1469,1470,1471,],[1472,1473,1474,1475,1520,1521,1522,1523,1524,65533,65533,65533,65533,65533,65533,65533,],[1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,],[1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,65533,65533,8206,8207,65533,],]\n\t},\n\n\t'windows1256': {\n\t\tname: 'Arabic',\n\t\tlanguages: ['ar'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,1662,,,,,,,,,1657,,,1670,1688,1672,],[1711,,,,,,,,1705,,1681,,,8204,8205,1722,],[,1548,,,,,,,,,1726,,,,,,],[,,,,,,,,,,1563,,,,,1567,],[1729,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,],[1584,1585,1586,1587,1588,1589,1590,,1591,1592,1593,1594,1600,1601,1602,1603,],[,1604,,1605,1606,1607,1608,,,,,,1609,1610,,,],[1611,1612,1613,1614,,1615,1616,,1617,,1618,,,8206,8207,1746,],]\n\t},\n\n\t'windows1257': {\n\t\tname: 'Baltic Rim',\n\t\tlanguages: ['et','lt'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,,,65533,,,,,65533,,65533,,65533,168,711,184,],[,,,,,,,,65533,,65533,,65533,175,731,65533,],[,65533,,,,65533,,,216,,342,,,,,198,],[,,,,,,,,248,,343,,,,,230,],[260,302,256,262,,,280,274,268,,377,278,290,310,298,315,],[352,323,325,,332,,,,370,321,346,362,,379,381,,],[261,303,257,263,,,281,275,269,,378,279,291,311,299,316,],[353,324,326,,333,,,,371,322,347,363,,380,382,729,],]\n\t},\n\n\t'windows1258': {\n\t\tname: 'Vietnamese',\n\t\tlanguages: ['vi'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,65533,,,,65533,,],[,,,,,,,,,,65533,,,,65533,,],,,[,,,258,,,,,,,,,768,,,,],[272,,777,,,416,,,,,,,,431,771,,],[,,,259,,,,,,,,,769,,,,],[273,,803,,,417,,,,,,,,432,8363,,],]\n\t},\n\n\t'rk1048': {\n\t\tname: 'Kazakh',\n\t\tlanguages: ['kk'],\n\t\textends: 'windows1251',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,,,1178,1210,,],[,,,,,,,,,,,,,1179,1211,,],[,1200,1201,1240,,1256,,,,,1170,,,,,1198,],[,,,,1257,,,,,,1171,,1241,1186,1187,1199,],,,,,]\n\t},\n\n\t'thai11': {\n\t\tname: 'Thai (Charcter Code 11)',\n\t\tlanguages: ['th'],\n\t\textends: 'thai13',\n\t\tvalue: [,,,,,,,,,[,,,,,,,,,9484,9488,9492,9496,9474,9500,9508,],,,,[,,,,,,,,,,,9472,9524,9516,9532,,],,[,,,,,,,,,,,3658,3650,3651,3652,65533,],]\n\t},\n\n\t'thai13': {\n\t\tname: 'Thai (Charcter Code 13)',\n\t\tlanguages: ['th'],\n\t\textends: 'cp874',\n\t\tvalue: [,,,,,,,,[65533,,,,,65533,,,,,,,,,,,],[,65533,65533,65533,65533,65533,65533,65533,,,,,,,,,],,,,[,,,,,,,,,,,3619,,,3648,,],,[,,,,,,,,,,,,8592,8593,8594,8595,],]\n\t},\n\n\t'thai14': {\n\t\tname: 'Thai (Charcter Code 14)',\n\t\tlanguages: ['th'],\n\t\textends: 'cp874',\n\t\tvalue: [,,,,,,,,[9484,9488,9492,9496,9474,9472,9500,9508,9524,9516,9532,9608,,,,,],[3619,3634,65533,3632,65533,65533,65533,65533,,,,,,,,3648,],,,,,,[,,,,,,,,,,3675,65533,,,,3652,],]\n\t},\n\n\t'thai16': {\n\t\tname: 'Thai (Charcter Code 16)',\n\t\tlanguages: ['th'],\n\t\textends: 'thai18',\n\t\tvalue: [,,,,,,,,,[3650,3651,,,,,,,,,,,,,,,],,,,,,,]\n\t},\n\n\t'thai18': {\n\t\tname: 'Thai (Charcter Code 18)',\n\t\tlanguages: ['th'],\n\t\textends: 'thai14',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,,8592,8593,8594,8595,],,,,,,[,,,,,,,,,,,,,,3652,,],[,,,,,,,,,,,,,,,65533,],]\n\t},\n\n\t'thai42': {\n\t\tname: 'Thai (Charcter Code 42)',\n\t\tlanguages: ['th'],\n\t\textends: 'thai18',\n\t\tvalue: [,,,,,,,,,[3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3587,3589,3619,3634,3652,,],[,,,3588,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,],[3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,],[3618,3619,3620,3621,3623,3624,3625,3626,3627,3628,3629,3630,3632,3622,3634,3635,],[3648,3649,3650,3651,3652,3654,3631,3640,3641,3636,3637,3638,3639,3658,3661,3655,],[3656,3657,3658,3659,3660,65533,65533,65533,65533,65533,65533,3632,65533,65533,65533,65533,],[65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,,,,,160,],]\n\t},\n\n\t'tcvn3': {\n\t\tname: 'Vietnamese (VSCII3 / TCVN3)',\n\t\tlanguages: ['vi'],\n\t\textends: 'ascii',\n\t\tvalue: [,,,,,,,,,,[,,,,,,,,259,226,234,244,417,432,273,,],[,,,,,224,7843,227,225,7841,,7857,7859,7861,7855,,],[,,,,,,7863,7847,7849,7851,7845,7853,232,,7867,7869,],[233,7865,7873,7875,7877,7871,7879,236,7881,,,,297,237,7883,242,],[,7887,245,243,7885,7891,7893,7895,7889,7897,7901,7903,7905,7899,7907,249,],[,7911,361,250,7909,7915,7917,7919,7913,7921,7923,7927,7929,253,7925,,],]\n\t},\n\n\t'tcvn3capitals': {\n\t\tname: 'Vietnamese (VSCII3 / TCVN3 Capitals)',\n\t\tlanguages: ['vi'],\n\t\textends: 'ascii',\n\t\tvalue: [,,,,,,,,,,[,258,194,,,,,208,,,202,212,416,431,,,],[,,,,,192,7842,195,193,7840,,7856,7858,7860,7854,,],[,,,,,,7862,7846,7848,7850,7844,7852,200,,7866,7868,],[201,7864,7872,7874,7876,7870,7878,204,7880,,,,296,205,7882,210,],[,7886,213,211,7884,7890,7892,7894,7888,7896,7900,7902,7904,7898,7906,217,],[,7910,360,218,7908,7914,7916,7918,7912,7920,7922,7926,7928,221,7924,,],]\n\t},\n\n\t'viscii': {\n\t\tname: 'Vietnamese (VISCII)',\n\t\tlanguages: ['vi'],\n\t\textends: 'ascii',\n\t\tvalue: [[,,7858,,,7860,7850,,,,,,,,,,],[,,,,7926,,,,,7928,,,,,7924,,],,,,,,,[7840,7854,7856,7862,7844,7846,7848,7852,7868,7864,7870,7872,7874,7876,7878,7888,],[7890,7892,7894,7896,7906,7898,7900,7902,7882,7886,7884,7880,7910,360,7908,7922,],[213,7855,7857,7863,7845,7847,7849,7853,7869,7865,7871,7873,7875,7877,7879,7889,],[7891,7893,7895,7904,416,7897,7901,7903,7883,7920,7912,7914,7916,417,7899,431,],[192,193,194,195,7842,258,7859,7861,200,201,202,7866,204,205,296,7923,],[272,7913,210,211,212,7841,7927,7915,7917,217,218,7929,7925,221,7905,432,],[224,225,226,227,7843,259,7919,7851,232,233,234,7867,236,237,297,7881,],[273,7921,242,243,244,245,7887,7885,7909,249,250,361,7911,253,7907,7918,],]\n\t},\n\n\t'khmer': {\n\t\tname: 'Khmer',\n\t\tlanguages: ['km'],\n\t\textends: 'ascii',\n\t\tvalue: [,,,,,,,,[6016,6017,6016,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,],[6032,6033,6032,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,],[6048,6049,6048,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,],[6064,6065,6064,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,],[6080,6081,6080,6083,6084,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,],[6096,6097,6096,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,,,],[6112,6113,6112,6115,6116,6117,6118,6119,6120,6121,,,,,,,],[6128,6129,6128,6131,6132,6133,6134,,,,,,,,,,],]\n\t},\n\n\t'latvian': {\n\t\tname: 'Latvian (based on cp3012)',\n\t\tlanguages: ['lv'],\n\t\textends: 'cp3012',\n\t\tvalue: [,,,,,,,,,,,,,[,,,,298,299,,,,,,,,,,,],,,]\n\t},\n\n\t'epson/katakana': {\n\t\tname: 'Katakana',\n\t\tlanguages: ['ja'],\n\t\textends: 'cp437',\n\t\toffset: 128,\n\t\tvalue: [9601,9602,9603,9604,9605,9606,9607,9608,9615,9614,9613,9612,9611,9610,9609,9532,9524,9516,9508,9500,9620,9472,9474,9621,9484,9488,9492,9496,9581,9582,9584,9583,32,65377,65378,65379,65380,65381,65382,65383,65384,65385,65386,65387,65388,65389,65390,65391,65392,65393,65394,65395,65396,65397,65398,65399,65400,65401,65402,65403,65404,65405,65406,65407,65408,65409,65410,65411,65412,65413,65414,65415,65416,65417,65418,65419,65420,65421,65422,65423,65424,65425,65426,65427,65428,65429,65430,65431,65432,65433,65434,65435,65436,65437,65438,65439,9552,9566,9578,9569,9698,9699,9701,9700,9824,9829,9830,9827,9679,9675,9585,9586,9587,20870,24180,26376,26085,26178,20998,31186,12306,24066,21306,30010,26449,20154,9618,160]\n\t},\n\n\t'epson/iso8859-2': {\n\t\tname: 'Latin 2 modified with box drawing characters',\n\t\tlanguages: ['hu','pl','cz'],\n\t\textends: 'iso8859-2',\n\t\tvalue: [,,,,,,,,[9617,9618,9619,9474,9508,9496,9484,9608,169,9571,9553,9559,9565,162,165,9488,],[9492,9524,9516,9500,9472,9532,9604,9600,9562,9556,9577,9574,9568,9552,9580,174,],,,,,,,]\n\t},\n\n\t'star/standard': {\n\t\tname: 'Standard',\n\t\tlanguages: ['en'],\n\t\textends: 'cp437',\n\t\toffset: 128,\n\t\tvalue: [160,129904,129910,129905,129911,129906,129912,129907,129913,129908,129914,129909,9500,129915,129916,129918,129919,129917,9624,9623,9622,9629,9585,9586,9701,9700,9484,9524,9516,9508,9830,9587,196,214,220,223,167,170,186,65533,162,189,65533,65533,165,188,256,235,233,232,275,234,239,237,236,299,238,246,243,242,333,244,252,250,249,363,251,231,191,65533,65533,274,8580,161,197,248,216,228,225,224,257,226,176,8451,8457,937,181,931,963,65533,65533,967,8734,177,247,960,9612,9604,9600,9616,9532,9496,9492,9488,9608,9618,9162,8592,8593,8594,8595,9581,9161,129923,65533,9601,9613,65533,129928,9626,9630,9698,9699,129840,9208,9584,9583,9582]\n\t},\n\n\t'star/katakana': {\n\t\tname: 'Katakana',\n\t\tlanguages: ['ja'],\n\t\textends: 'star/standard',\n\t\tvalue: [,,,,,,,,,,[32,65377,65378,65379,65380,65381,65382,65383,65384,65385,65386,65387,65388,65389,65390,65391,],[65392,65393,65394,65395,65396,65397,65398,65399,65400,65401,65402,65403,65404,65405,65406,65407,],[65408,65409,65410,65411,65412,65413,65414,65415,65416,65417,65418,65419,65420,65421,65422,65423,],[65424,65425,65426,65427,65428,65429,65430,65431,65432,65433,65434,65435,65436,65437,65438,65439,],,,]\n\t},\n\n\t'star/cp874': {\n\t\tname: 'Thai',\n\t\tlanguages: ['th'],\n\t\textends: 'cp874',\n\t\tvalue: [,,,,,,,,,[,,,,,9474,9472,9532,9484,9488,9492,9496,9500,9516,9508,9524,],,,,[,,,,,,,,,,,3657,3658,3659,3660,,],,[,,,,,,,,,,,,162,172,166,,],]\n\t},\n\n\t'star/cp928': {\n\t\tname: 'Greek',\n\t\tlanguages: ['el'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,,,[160,8216,8217,163,65533,65533,166,167,168,169,65533,171,172,173,65533,8213,],[176,177,178,179,900,901,902,183,904,905,906,187,908,189,910,911,],[912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,],[928,929,65533,931,932,933,934,935,936,937,938,939,940,941,942,943,],[944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,],[960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,65533,],]\n\t},\n\n\t'bixolon/cp866': {\n\t\tname: 'Cyrillic 2 (modified with euro sign)',\n\t\tlanguages: ['ru'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,,,,,[,,,,9093,1055,8801,9824,8364,,,,,,,,],]\n\t},\n\n\t'bixolon/hebrew': {\n\t\tname: 'Hebrew',\n\t\tlanguages: ['he'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,,,[32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,],[48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,],[64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,],[80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,],[1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,],[1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,123,124,125,126,,],]\n\t},\n\n\t'xprinter/hebrew': {\n\t\tname: 'Hebrew (based on CP862 minus CP437)',\n\t\tlanguages: ['he'],\n\t\textends: 'ascii',\n\t\tvalue: [,,,,,,,,[1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,],[1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,,,,,,],,,,,,,]\n\t},\n\n\t'pos8360/hebrew': {\n\t\tname: 'Hebrew (based on cp862 with repeated characters)',\n\t\tlanguages: ['he'],\n\t\textends: 'cp862',\n\t\tvalue: [,,,,,,,,,,,,,,[1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,],[1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,,,,,,],]\n\t},\n\n};\n\nconst aliases = {\n\t'cp2001': 'cp771',\n\t'cp1119': 'cp772',\n\t'cp1118': 'cp774',\n\t'cp1162': 'cp874',\n\t'iso88591': 'iso8859-1',\n\t'iso88592': 'iso8859-2',\n\t'iso88597': 'iso8859-7',\n\t'iso885915': 'iso8859-15',\n\t'shiftjis': 'epson/katakana',\n\t'katakana': 'epson/katakana',\n\t'cp928': 'star/cp928',\n};\n\nconst strings = {\n en: 'The quick brown fox jumps over the lazy dog.',\n jp: 'イロハニホヘト チリヌルヲ ワカヨタレソ ツネナラム',\n pt: 'O próximo vôo à noite sobre o Atlântico, põe freqüentemente o único médico.',\n fr: 'Les naïfs ægithales hâtifs pondant à Noël où il gèle sont sûrs d\\'être déçus en voyant leurs drôles d\\'œufs abîmés.',\n sv: 'Flygande bäckasiner söka strax hwila på mjuka tuvor.',\n dk: 'Quizdeltagerne spiste jordbær med fløde',\n el: 'ξεσκεπάζω την ψυχοφθόρα βδελυγμία',\n tr: 'Pijamalı hasta, yağız şoföre çabucak güvendi.',\n ru: 'Съешь же ещё этих мягких французских булок да выпей чаю',\n hu: 'Árvíztűrő tükörfúrógép',\n pl: 'Pchnąć w tę łódź jeża lub ośm skrzyń fig',\n cz: 'Mohu jíst sklo, neublíží mi.',\n ar: 'أنا قادر على أكل الزجاج و هذا لا يؤلمني.',\n et: 'Ma võin klaasi süüa, see ei tee mulle midagi.',\n lt: 'Aš galiu valgyti stiklą ir jis manęs nežeidžia.',\n bg: 'Мога да ям стъкло, то не ми вреди.',\n is: 'Ég get etið gler án þess að meiða mig.',\n he: 'אני יכול לאכול זכוכית וזה לא מזיק לי.',\n fa: '.من می توانم بدونِ احساس درد شيشه بخورم',\n uk: 'Я можу їсти скло, і воно мені не зашкодить.',\n vi: 'Tôi có thể ăn thủy tinh mà không hại gì.',\n kk: 'қазақша',\n lv: 'Es varu ēst stiklu, tas man nekaitē.',\n mt: 'Nista\\' niekol il-ħġieġ u ma jagħmilli xejn.',\n th: 'ฉันกินกระจกได้ แต่มันไม่ทำให้ฉันเจ็บ',\n};\n\n/**\n * A library for converting Unicode to obscure single byte codepage for use with thermal printers\n */\nclass CodepageEncoder {\n /**\n * Get list of supported codepages\n *\n * @return {array} Return an array with the supported codepages\n *\n */\n static getEncodings() {\n return Object.keys(definitions);\n }\n\n /**\n * Get codepage definition\n *\n * @param {string} codepage The codepage, defaults to ascii when it cannot find the codepage\n * @return {object} Return an object with the codepage definition\n *\n */\n static getEncoding(codepage) {\n if (typeof aliases[codepage] !== 'undefined') {\n codepage = aliases[codepage];\n }\n\n if (typeof definitions[codepage] === 'undefined') {\n codepage = 'ascii';\n }\n\n /* Create codepoints array if it doesn't exist */\n\n if (typeof definitions[codepage].codepoints === 'undefined') {\n definitions[codepage].codepoints = this.getCodepoints(codepage, true);\n }\n\n /* Return codepage definition */\n\n return structuredClone(definitions[codepage]);\n }\n\n\n /**\n * Get test strings for the specified codepage\n *\n * @param {string} codepage The codepage\n * @return {array} Return an array with one or more objects\n * containing a property for the language of\n * the string and a property for the string itself\n *\n */\n static getTestStrings(codepage) {\n if (typeof aliases[codepage] !== 'undefined') {\n codepage = aliases[codepage];\n }\n\n if (typeof definitions[codepage] !== 'undefined' &&\n typeof definitions[codepage].languages !== 'undefined') {\n return definitions[codepage].languages.map((i) => ({language: i, string: strings[i]}));\n }\n\n return [];\n }\n\n /**\n * Determine if the specified codepage is supported\n *\n * @param {string} codepage The codepage\n * @return {boolean} Return a boolean, true if the encoding is supported,\n * otherwise false\n *\n */\n static supports(codepage) {\n if (typeof aliases[codepage] !== 'undefined') {\n codepage = aliases[codepage];\n }\n\n if (typeof definitions[codepage] === 'undefined') {\n return false;\n }\n\n return true;\n }\n\n /**\n * Encode a string in the specified codepage\n *\n * @param {string} input Text that needs encoded to the specified codepage\n * @param {string} codepage The codepage\n * @return {Uint8Array} Return an array of bytes with the encoded string\n *\n */\n static encode(input, codepage) {\n const output = new Uint8Array(input.length);\n const definition = this.getEncoding(codepage);\n\n for (let c = 0; c < input.length; c++) {\n const codepoint = input.codePointAt(c);\n const position = definition.codepoints.findIndex((i) => i === codepoint);\n\n if (position !== -1) {\n output[c] = position;\n } else {\n output[c] = 0x3f;\n }\n }\n\n return output;\n }\n\n /**\n * Encode a string in the most optimal set of codepages.\n *\n * @param {string} input Text that needs encoded\n * @param {array} candidates An array of candidate codepages that are allowed to be used, ranked by importance\n * @return {Uint8Array} Return an array of bytes with the encoded string\n *\n */\n static autoEncode(input, candidates) {\n const fragments = [];\n let fragment = -1;\n let current;\n\n for (let c = 0; c < input.length; c++) {\n const codepoint = input.codePointAt(c);\n\n let available;\n let char = 0;\n\n if (!available && current) {\n const definition = this.getEncoding(current);\n const position = definition.codepoints.findIndex((i) => i === codepoint);\n\n if (position !== -1) {\n available = current;\n char = position;\n }\n }\n\n if (!available) {\n for (let i = 0; i < candidates.length; i++) {\n const definition = this.getEncoding(candidates[i]);\n const position = definition.codepoints.findIndex((i) => i === codepoint);\n\n if (position !== -1) {\n available = candidates[i];\n char = position;\n break;\n }\n }\n }\n\n if (!available) {\n available = current || candidates[0];\n char = 0x3f;\n }\n\n if (current != available) {\n if (current) {\n fragments[fragment].bytes = new Uint8Array(fragments[fragment].bytes);\n }\n\n fragment++;\n fragments[fragment] = {\n codepage: available,\n bytes: [],\n };\n\n current = available;\n }\n\n fragments[fragment].bytes.push(char);\n }\n\n if (current) {\n fragments[fragment].bytes = new Uint8Array(fragments[fragment].bytes);\n }\n\n return fragments;\n }\n\n /**\n * Get codepoints\n *\n * @param {string} codepage The codepage\n * @param {boolean} evaluateExtends Evaluate the extends property\n * @return {array} Return an object array with 256 codepoints for the specified codepage\n *\n */\n static getCodepoints(codepage, evaluateExtends) {\n let codepoints = new Array(256);\n\n if (evaluateExtends) {\n if (typeof definitions[codepage].extends === 'undefined') {\n codepoints = codepoints.fill(0xfffd);\n } else {\n codepoints = this.getEncoding(definitions[codepage].extends).codepoints;\n }\n }\n\n if (definitions[codepage].value.length === 16) {\n for (let i = 0; i < 16; i++) {\n if (typeof definitions[codepage].value[i] !== 'object') {\n continue;\n }\n\n for (let j = 0; j < 16; j++) {\n if (typeof definitions[codepage].value[i][j] !== 'number') {\n continue;\n }\n\n codepoints[i * 16 + j] = definitions[codepage].value[i][j];\n }\n }\n } else {\n const offset = definitions[codepage].offset || 0;\n\n for (let i = 0; i < definitions[codepage].value.length; i++) {\n if (typeof definitions[codepage].value[i] !== 'number') {\n continue;\n }\n\n codepoints[offset + i] = definitions[codepage].value[i];\n }\n }\n\n return codepoints;\n }\n}\n\nexport { CodepageEncoder as default };\n","/* eslint-env browser */\n\nmodule.exports = ImageData\n","'use strict'\n\nconst ImageData = require('@canvas/image-data')\n\nfunction nearestNeighbor (src, dst) {\n let pos = 0\n\n for (let y = 0; y < dst.height; y++) {\n for (let x = 0; x < dst.width; x++) {\n const srcX = Math.floor(x * src.width / dst.width)\n const srcY = Math.floor(y * src.height / dst.height)\n\n let srcPos = ((srcY * src.width) + srcX) * 4\n\n dst.data[pos++] = src.data[srcPos++] // R\n dst.data[pos++] = src.data[srcPos++] // G\n dst.data[pos++] = src.data[srcPos++] // B\n dst.data[pos++] = src.data[srcPos++] // A\n }\n }\n}\n\nfunction bilinearInterpolation (src, dst) {\n function interpolate (k, kMin, kMax, vMin, vMax) {\n return Math.round((k - kMin) * vMax + (kMax - k) * vMin)\n }\n\n function interpolateHorizontal (offset, x, y, xMin, xMax) {\n const vMin = src.data[((y * src.width + xMin) * 4) + offset]\n if (xMin === xMax) return vMin\n\n const vMax = src.data[((y * src.width + xMax) * 4) + offset]\n return interpolate(x, xMin, xMax, vMin, vMax)\n }\n\n function interpolateVertical (offset, x, xMin, xMax, y, yMin, yMax) {\n const vMin = interpolateHorizontal(offset, x, yMin, xMin, xMax)\n if (yMin === yMax) return vMin\n\n const vMax = interpolateHorizontal(offset, x, yMax, xMin, xMax)\n return interpolate(y, yMin, yMax, vMin, vMax)\n }\n\n let pos = 0\n\n for (let y = 0; y < dst.height; y++) {\n for (let x = 0; x < dst.width; x++) {\n const srcX = x * src.width / dst.width\n const srcY = y * src.height / dst.height\n\n const xMin = Math.floor(srcX)\n const yMin = Math.floor(srcY)\n\n const xMax = Math.min(Math.ceil(srcX), src.width - 1)\n const yMax = Math.min(Math.ceil(srcY), src.height - 1)\n\n dst.data[pos++] = interpolateVertical(0, srcX, xMin, xMax, srcY, yMin, yMax) // R\n dst.data[pos++] = interpolateVertical(1, srcX, xMin, xMax, srcY, yMin, yMax) // G\n dst.data[pos++] = interpolateVertical(2, srcX, xMin, xMax, srcY, yMin, yMax) // B\n dst.data[pos++] = interpolateVertical(3, srcX, xMin, xMax, srcY, yMin, yMax) // A\n }\n }\n}\n\nmodule.exports = function resizeImageData (image, width, height, algorithm) {\n algorithm = algorithm || 'bilinear-interpolation'\n\n let resize\n switch (algorithm) {\n case 'nearest-neighbor': resize = nearestNeighbor; break\n case 'bilinear-interpolation': resize = bilinearInterpolation; break\n // FIXME: Only for backwards compatibility, remove in next major version\n case 'biliniear-interpolation': resize = bilinearInterpolation; break\n default: throw new Error(`Unknown algorithm: ${algorithm}`)\n }\n\n const result = new ImageData(width, height)\n\n resize(image, result)\n\n return result\n}\n","import CodepageEncoder from '@point-of-sale/codepage-encoder';\n\n/**\n * ESC/POS Language commands\n */\nclass LanguageEscPos {\n /**\n * Initialize the printer\n * @return {Array} Array of bytes to send to the printer\n */\n initialize() {\n return [\n {\n type: 'initialize',\n payload: [0x1b, 0x40],\n },\n {\n type: 'character-mode',\n value: 'single byte',\n payload: [0x1c, 0x2e],\n },\n {\n type: 'font',\n value: 'A',\n payload: [0x1b, 0x4d, 0x00],\n },\n ];\n }\n\n /**\n * Change the font\n * @param {string} value Font type ('A', 'B', or more)\n * @return {Array} Array of bytes to send to the printer\n */\n font(value) {\n const type = value.charCodeAt(0) - 0x41;\n\n return [\n {\n type: 'font',\n value,\n payload: [0x1b, 0x4d, type],\n },\n ];\n }\n\n /**\n * Change the alignment\n * @param {string} value Alignment value ('left', 'center', 'right')\n * @return {Array} Array of bytes to send to the printer\n */\n align(value) {\n let align = 0x00;\n\n if (value === 'center') {\n align = 0x01;\n } else if (value === 'right') {\n align = 0x02;\n }\n\n return [\n {\n type: 'align',\n value,\n payload: [0x1b, 0x61, align],\n },\n ];\n }\n\n /**\n * Generate a barcode\n * @param {string} value Value to encode\n * @param {string|number} symbology Barcode symbology\n * @param {object} options Configuration object\n * @return {Array} Array of bytes to send to the printer\n */\n barcode(value, symbology, options) {\n const result = [];\n\n const symbologies = {\n 'upca': 0x00,\n 'upce': 0x01,\n 'ean13': 0x02,\n 'ean8': 0x03,\n 'code39': 0x04,\n 'coda39': 0x04, /* typo, leave here for backwards compatibility */\n 'itf': 0x05,\n 'interleaved-2-of-5': 0x05,\n 'nw-7': 0x06,\n 'codabar': 0x06,\n 'code93': 0x48,\n 'code128': 0x49,\n 'gs1-128': 0x48,\n 'gs1-databar-omni': 0x4b,\n 'gs1-databar-truncated': 0x4c,\n 'gs1-databar-limited': 0x4d,\n 'gs1-databar-expanded': 0x4e,\n 'code128-auto': 0x4f,\n };\n\n if (typeof symbology === 'string' && typeof symbologies[symbology] === 'undefined') {\n throw new Error(`Symbology '${symbology}' not supported by language`);\n }\n\n /* Calculate segment width */\n\n if (options.width < 1 || options.width > 3) {\n throw new Error('Width must be between 1 and 3');\n }\n\n let width = options.width + 1;\n\n if (symbology === 'itf') {\n width = options.width * 2;\n }\n\n if (symbology === 'gs1-128' || symbology === 'gs1-databar-omni' ||\n symbology === 'gs1-databar-truncated' || symbology === 'gs1-databar-limited' ||\n symbology === 'gs1-databar-expanded') {\n width = options.width;\n }\n\n /* Set barcode options */\n\n result.push(\n {\n type: 'barcode',\n property: 'height',\n value: options.height,\n payload: [0x1d, 0x68, options.height],\n },\n {\n type: 'barcode',\n property: 'width',\n value: options.width,\n payload: [0x1d, 0x77, width],\n },\n {\n type: 'barcode',\n property: 'text',\n value: options.text,\n payload: [0x1d, 0x48, options.text ? 0x02 : 0x00],\n },\n );\n\n\n /* Encode barcode */\n\n if (symbology == 'code128' && !value.startsWith('{')) {\n value = '{B' + value;\n }\n\n if (symbology == 'gs1-128') {\n value = value.replace(/[()*]/g, '');\n }\n\n const bytes = CodepageEncoder.encode(value, 'ascii');\n\n const identifier = typeof symbology === 'string' ? symbologies[symbology] : symbology;\n\n if (identifier > 0x40) {\n /* Function B symbologies */\n\n result.push(\n {\n type: 'barcode',\n value: {symbology: symbology, data: value},\n payload: [0x1d, 0x6b, identifier, bytes.length, ...bytes],\n },\n );\n } else {\n /* Function A symbologies */\n\n result.push(\n {\n type: 'barcode',\n value: {symbology: symbology, data: value},\n payload: [0x1d, 0x6b, identifier, ...bytes, 0x00],\n },\n );\n }\n\n return result;\n }\n\n /**\n * Generate a QR code\n * @param {string} value Value to encode\n * @param {object} options Configuration object\n * @return {Array} Array of bytes to send to the printer\n */\n qrcode(value, options) {\n const result = [];\n\n /* Model */\n\n if (typeof options.model === 'number') {\n const models = {\n 1: 0x31,\n 2: 0x32,\n };\n\n if (options.model in models) {\n result.push(\n {\n type: 'qrcode',\n property: 'model',\n value: options.model,\n payload: [0x1d, 0x28, 0x6b, 0x04, 0x00, 0x31, 0x41, models[options.model], 0x00],\n },\n );\n } else {\n throw new Error('Model must be 1 or 2');\n }\n }\n\n /* Size */\n\n if (typeof options.size !== 'number') {\n throw new Error('Size must be a number');\n }\n\n if (options.size < 1 || options.size > 8) {\n throw new Error('Size must be between 1 and 8');\n }\n\n result.push(\n {\n type: 'qrcode',\n property: 'size',\n value: options.size,\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x31, 0x43, options.size],\n },\n );\n\n /* Error level */\n\n const errorlevels = {\n 'l': 0x30,\n 'm': 0x31,\n 'q': 0x32,\n 'h': 0x33,\n };\n\n if (options.errorlevel in errorlevels) {\n result.push(\n {\n type: 'qrcode',\n property: 'errorlevel',\n value: options.errorlevel,\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x31, 0x45, errorlevels[options.errorlevel]],\n },\n );\n } else {\n throw new Error('Error level must be l, m, q or h');\n }\n\n /* Data */\n\n const bytes = CodepageEncoder.encode(value, 'iso8859-1');\n const length = bytes.length + 3;\n\n result.push(\n {\n type: 'qrcode',\n property: 'data',\n value,\n payload: [0x1d, 0x28, 0x6b, length & 0xff, (length >> 8) & 0xff, 0x31, 0x50, 0x30, ...bytes],\n },\n );\n\n /* Print QR code */\n\n result.push(\n {\n type: 'qrcode',\n command: 'print',\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x31, 0x51, 0x30],\n },\n );\n\n return result;\n }\n\n /**\n * Generate a PDF417 code\n * @param {string} value Value to encode\n * @param {object} options Configuration object\n * @return {Array} Array of bytes to send to the printer\n */\n pdf417(value, options) {\n const result = [];\n\n /* Columns */\n\n if (typeof options.columns !== 'number') {\n throw new Error('Columns must be a number');\n }\n\n if (options.columns !== 0 && (options.columns < 1 || options.columns > 30)) {\n throw new Error('Columns must be 0, or between 1 and 30');\n }\n\n result.push(\n {\n type: 'pdf417',\n property: 'columns',\n value: options.columns,\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x30, 0x41, options.columns],\n },\n );\n\n /* Rows */\n\n if (typeof options.rows !== 'number') {\n throw new Error('Rows must be a number');\n }\n\n if (options.rows !== 0 && (options.rows < 3 || options.rows > 90)) {\n throw new Error('Rows must be 0, or between 3 and 90');\n }\n\n result.push(\n {\n type: 'pdf417',\n property: 'rows',\n value: options.rows,\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x30, 0x42, options.rows],\n },\n );\n\n /* Width */\n\n if (typeof options.width !== 'number') {\n throw new Error('Width must be a number');\n }\n\n if (options.width < 2 || options.width > 8) {\n throw new Error('Width must be between 2 and 8');\n }\n\n result.push(\n {\n type: 'pdf417',\n property: 'width',\n value: options.width,\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x30, 0x43, options.width],\n },\n );\n\n /* Height */\n\n if (typeof options.height !== 'number') {\n throw new Error('Height must be a number');\n }\n\n if (options.height < 2 || options.height > 8) {\n throw new Error('Height must be between 2 and 8');\n }\n\n result.push(\n {\n type: 'pdf417',\n property: 'height',\n value: options.height,\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x30, 0x44, options.height],\n },\n );\n\n /* Error level */\n\n if (typeof options.errorlevel !== 'number') {\n throw new Error('Errorlevel must be a number');\n }\n\n if (options.errorlevel < 0 || options.errorlevel > 8) {\n throw new Error('Errorlevel must be between 0 and 8');\n }\n\n result.push(\n {\n type: 'pdf417',\n property: 'errorlevel',\n value: options.errorlevel,\n payload: [0x1d, 0x28, 0x6b, 0x04, 0x00, 0x30, 0x45, 0x30, options.errorlevel + 0x30],\n },\n );\n\n /* Model: standard or truncated */\n\n result.push(\n {\n type: 'pdf417',\n property: 'truncated',\n value: !!options.truncated,\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x30, 0x46, options.truncated ? 0x01 : 0x00],\n },\n );\n\n /* Data */\n\n const bytes = CodepageEncoder.encode(value, 'ascii');\n const length = bytes.length + 3;\n\n result.push(\n {\n type: 'pdf417',\n property: 'data',\n value,\n payload: [0x1d, 0x28, 0x6b, length & 0xff, (length >> 8) & 0xff, 0x30, 0x50, 0x30, ...bytes],\n },\n );\n\n /* Print PDF417 code */\n\n result.push(\n {\n type: 'pdf417',\n command: 'print',\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x30, 0x51, 0x30],\n },\n );\n\n return result;\n }\n\n /**\n * Encode an image\n * @param {ImageData} image ImageData object\n * @param {number} width Width of the image\n * @param {number} height Height of the image\n * @param {string} mode Image encoding mode ('column' or 'raster')\n * @return {Array} Array of bytes to send to the printer\n */\n image(image, width, height, mode) {\n const result = [];\n\n const getPixel = (x, y) => x < width && y < height ? (image.data[((width * y) + x) * 4] > 0 ? 0 : 1) : 0;\n\n const getColumnData = (width, height) => {\n const data = [];\n\n for (let s = 0; s < Math.ceil(height / 24); s++) {\n const bytes = new Uint8Array(width * 3);\n\n for (let x = 0; x < width; x++) {\n for (let c = 0; c < 3; c++) {\n for (let b = 0; b < 8; b++) {\n bytes[(x * 3) + c] |= getPixel(x, (s * 24) + b + (8 * c)) << (7 - b);\n }\n }\n }\n\n data.push(bytes);\n }\n\n return data;\n };\n\n const getRowData = (width, height) => {\n const bytes = new Uint8Array((width * height) >> 3);\n\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x = x + 8) {\n for (let b = 0; b < 8; b++) {\n bytes[(y * (width >> 3)) + (x >> 3)] |= getPixel(x + b, y) << (7 - b);\n }\n }\n }\n\n return bytes;\n };\n\n /* Encode images with ESC * */\n\n if (mode == 'column') {\n result.push(\n {\n type: 'line-spacing',\n value: '24 dots',\n payload: [0x1b, 0x33, 0x24],\n },\n );\n\n getColumnData(width, height).forEach((bytes) => {\n result.push(\n {\n type: 'image',\n property: 'data',\n value: 'column',\n width,\n height: 24,\n payload: [0x1b, 0x2a, 0x21, width & 0xff, (width >> 8) & 0xff, ...bytes, 0x0a],\n },\n );\n });\n\n result.push(\n {\n type: 'line-spacing',\n value: 'default',\n payload: [0x1b, 0x32],\n },\n );\n }\n\n /* Encode images with GS v */\n\n if (mode == 'raster') {\n result.push(\n {\n type: 'image',\n command: 'data',\n value: 'raster',\n width,\n height,\n payload: [\n 0x1d, 0x76, 0x30, 0x00,\n (width >> 3) & 0xff, (((width >> 3) >> 8) & 0xff),\n height & 0xff, ((height >> 8) & 0xff),\n ...getRowData(width, height),\n ],\n },\n );\n }\n\n return result;\n }\n\n /**\n * Cut the paper\n * @param {string} value Cut type ('full' or 'partial')\n * @return {Array} Array of bytes to send to the printer\n */\n cut(value) {\n let data = 0x00;\n\n if (value == 'partial') {\n data = 0x01;\n }\n\n return [\n {\n type: 'cut',\n payload: [0x1d, 0x56, data],\n },\n ];\n }\n\n /**\n * Send a pulse to the cash drawer\n * @param {number} device Device number\n * @param {number} on Pulse ON time\n * @param {number} off Pulse OFF time\n * @return {Array} Array of bytes to send to the printer\n */\n pulse(device, on, off) {\n if (typeof device === 'undefined') {\n device = 0;\n }\n\n if (typeof on === 'undefined') {\n on = 100;\n }\n\n if (typeof off === 'undefined') {\n off = 500;\n }\n\n on = Math.min(500, Math.round(on / 2));\n off = Math.min(500, Math.round(off / 2));\n\n\n return [\n {\n type: 'pulse',\n payload: [0x1b, 0x70, device ? 1 : 0, on & 0xff, off & 0xff],\n },\n ];\n }\n\n /**\n * Enable or disable bold text\n * @param {boolean} value Enable or disable bold text, optional, default toggles between states\n * @return {Array} Array of bytes to send to the printer\n */\n bold(value) {\n let data = 0x00;\n\n if (value) {\n data = 0x01;\n }\n\n return [\n 0x1b, 0x45, data,\n ];\n }\n\n /**\n * Enable or disable underline text\n * @param {boolean} value Enable or disable underline text, optional, default toggles between states\n * @return {Array} Array of bytes to send to the printer\n */\n underline(value) {\n let data = 0x00;\n\n if (value) {\n data = 0x01;\n }\n\n return [\n 0x1b, 0x2d, data,\n ];\n }\n\n /**\n * Enable or disable italic text\n * @param {boolean} value Enable or disable italic text, optional, default toggles between states\n * @return {Array} Array of bytes to send to the printer\n */\n italic(value) {\n let data = 0x00;\n\n if (value) {\n data = 0x01;\n }\n\n return [\n 0x1b, 0x34, data,\n ];\n }\n\n /**\n * Enable or disable inverted text\n * @param {boolean} value Enable or disable inverted text, optional, default toggles between states\n * @return {Array} Array of bytes to send to the printer\n */\n invert(value) {\n let data = 0x00;\n\n if (value) {\n data = 0x01;\n }\n\n return [\n 0x1d, 0x42, data,\n ];\n }\n\n /**\n * Change text size\n * @param {number} width Width of the text (1-8)\n * @param {number} height Height of the text (1-8)\n * @return {Array} Array of bytes to send to the printer\n */\n size(width, height) {\n return [\n 0x1d, 0x21, (height - 1) | (width - 1) << 4,\n ];\n }\n\n /**\n * Change the codepage\n * @param {number} value Codepage value\n * @return {Array} Array of bytes to send to the printer\n */\n codepage(value) {\n return [\n 0x1b, 0x74, value,\n ];\n }\n\n /**\n * Flush the printers line buffer\n * @return {Array} Array of bytes to send to the printer\n */\n flush() {\n return [];\n }\n}\n\nexport default LanguageEscPos;\n","import CodepageEncoder from '@point-of-sale/codepage-encoder';\n\n/**\n * StarPRNT Language commands\n */\nclass LanguageStarPrnt {\n /**\n * Initialize the printer\n * @return {Array} Array of bytes to send to the printer\n */\n initialize() {\n return [\n {\n type: 'initialize',\n payload: [0x1b, 0x40, 0x18],\n },\n ];\n }\n\n /**\n * Change the font\n * @param {string} value Font type ('A', 'B' or 'C')\n * @return {Array} Array of bytes to send to the printer\n */\n font(value) {\n let type = 0x00;\n\n if (value === 'B') {\n type = 0x01;\n }\n\n if (value === 'C') {\n type = 0x02;\n }\n\n return [\n {\n type: 'font',\n value,\n payload: [0x1b, 0x1e, 0x46, type],\n },\n ];\n }\n\n /**\n * Change the alignment\n * @param {string} value Alignment value ('left', 'center', 'right')\n * @return {Array} Array of bytes to send to the printer\n */\n align(value) {\n let align = 0x00;\n\n if (value === 'center') {\n align = 0x01;\n } else if (value === 'right') {\n align = 0x02;\n }\n\n return [\n {\n type: 'align',\n value,\n payload: [0x1b, 0x1d, 0x61, align],\n },\n ];\n }\n\n /**\n * Generate a barcode\n * @param {string} value Value to encode\n * @param {string|number} symbology Barcode symbology\n * @param {object} options Configuration object\n * @return {Array} Array of bytes to send to the printer\n */\n barcode(value, symbology, options) {\n const result = [];\n\n const symbologies = {\n 'upce': 0x00,\n 'upca': 0x01,\n 'ean8': 0x02,\n 'ean13': 0x03,\n 'code39': 0x04,\n 'itf': 0x05,\n 'interleaved-2-of-5': 0x05,\n 'code128': 0x06,\n 'code93': 0x07,\n 'nw-7': 0x08,\n 'codabar': 0x08,\n 'gs1-128': 0x09,\n 'gs1-databar-omni': 0x0a,\n 'gs1-databar-truncated': 0x0b,\n 'gs1-databar-limited': 0x0c,\n 'gs1-databar-expanded': 0x0d,\n };\n\n if (typeof symbology === 'string' && typeof symbologies[symbology] === 'undefined') {\n throw new Error(`Symbology '${symbology}' not supported by language`);\n }\n\n if (options.width < 1 || options.width > 3) {\n throw new Error('Width must be between 1 and 3');\n }\n\n /* Selecting mode A, B or C for Code128 is not supported for StarPRNT, so ignore it and let the printer choose */\n\n if (symbology === 'code128' && value.startsWith('{')) {\n value = value.slice(2);\n }\n\n /* Encode the barcode value */\n\n const bytes = CodepageEncoder.encode(value, 'ascii');\n\n const identifier = typeof symbology === 'string' ? symbologies[symbology] : symbology;\n\n result.push(\n {\n type: 'barcode',\n value: {symbology: symbology, data: value, width: options.width, height: options.height, text: options.text},\n payload: [\n 0x1b, 0x62,\n identifier,\n options.text ? 0x02 : 0x01,\n options.width,\n options.height,\n ...bytes, 0x1e,\n ],\n },\n );\n\n return result;\n }\n\n /**\n * Generate a QR code\n * @param {string} value Value to encode\n * @param {object} options Configuration object\n * @return {Array} Array of bytes to send to the printer\n */\n qrcode(value, options) {\n const result = [];\n\n /* Model */\n\n const models = {\n 1: 0x01,\n 2: 0x02,\n };\n\n if (options.model in models) {\n result.push(\n {\n type: 'qrcode',\n property: 'model',\n value: options.model,\n payload: [0x1b, 0x1d, 0x79, 0x53, 0x30, models[options.model]],\n },\n );\n } else {\n throw new Error('Model must be 1 or 2');\n }\n\n /* Size */\n\n if (typeof options.size !== 'number') {\n throw new Error('Size must be a number');\n }\n\n if (options.size < 1 || options.size > 8) {\n throw new Error('Size must be between 1 and 8');\n }\n\n result.push(\n {\n type: 'qrcode',\n property: 'size',\n value: options.size,\n payload: [0x1b, 0x1d, 0x79, 0x53, 0x32, options.size],\n },\n );\n\n /* Error level */\n\n const errorlevels = {\n 'l': 0x00,\n 'm': 0x01,\n 'q': 0x02,\n 'h': 0x03,\n };\n\n if (options.errorlevel in errorlevels) {\n result.push(\n {\n type: 'qrcode',\n property: 'errorlevel',\n value: options.errorlevel,\n payload: [0x1b, 0x1d, 0x79, 0x53, 0x31, errorlevels[options.errorlevel]],\n },\n );\n } else {\n throw new Error('Error level must be l, m, q or h');\n }\n\n /* Data */\n\n const bytes = CodepageEncoder.encode(value, 'iso8859-1');\n const length = bytes.length;\n\n result.push(\n {\n type: 'qrcode',\n property: 'data',\n value,\n payload: [\n 0x1b, 0x1d, 0x79, 0x44, 0x31, 0x00,\n length & 0xff, (length >> 8) & 0xff,\n ...bytes,\n ],\n },\n );\n\n /* Print QR code */\n\n result.push(\n {\n type: 'qrcode',\n command: 'print',\n payload: [0x1b, 0x1d, 0x79, 0x50],\n },\n );\n\n return result;\n }\n\n /**\n * Generate a PDF417 code\n * @param {string} value Value to encode\n * @param {object} options Configuration object\n * @return {Array} Array of bytes to send to the printer\n */\n pdf417(value, options) {\n const result = [];\n\n /* Columns and Rows */\n\n if (typeof options.columns !== 'number') {\n throw new Error('Columns must be a number');\n }\n\n if (options.columns !== 0 && (options.columns < 1 || options.columns > 30)) {\n throw new Error('Columns must be 0, or between 1 and 30');\n }\n\n if (typeof options.rows !== 'number') {\n throw new Error('Rows must be a number');\n }\n\n if (options.rows !== 0 && (options.rows < 3 || options.rows > 90)) {\n throw new Error('Rows must be 0, or between 3 and 90');\n }\n\n result.push(\n {\n type: 'pdf417',\n value: `rows: ${options.rows}, columns: ${options.columns}`,\n payload: [0x1b, 0x1d, 0x78, 0x53, 0x30, 0x01, options.rows, options.columns],\n },\n );\n\n /* Width */\n\n if (typeof options.width !== 'number') {\n throw new Error('Width must be a number');\n }\n\n if (options.width < 2 || options.width > 8) {\n throw new Error('Width must be between 2 and 8');\n }\n\n result.push(\n {\n type: 'pdf417',\n property: 'width',\n value: options.width,\n payload: [0x1b, 0x1d, 0x78, 0x53, 0x32, options.width],\n },\n );\n\n /* Height */\n\n if (typeof options.height !== 'number') {\n throw new Error('Height must be a number');\n }\n\n if (options.height < 2 || options.height > 8) {\n throw new Error('Height must be between 2 and 8');\n }\n\n result.push(\n {\n type: 'pdf417',\n property: 'height',\n value: options.height,\n payload: [0x1b, 0x1d, 0x78, 0x53, 0x33, options.height],\n },\n );\n\n /* Error level */\n\n if (typeof options.errorlevel !== 'number') {\n throw new Error('Errorlevel must be a number');\n }\n\n if (options.errorlevel < 0 || options.errorlevel > 8) {\n throw new Error('Errorlevel must be between 0 and 8');\n }\n\n result.push(\n {\n type: 'pdf417',\n property: 'errorlevel',\n value: options.errorlevel,\n payload: [0x1b, 0x1d, 0x78, 0x53, 0x31, options.errorlevel],\n },\n );\n\n /* Data */\n\n const bytes = CodepageEncoder.encode(value, 'ascii');\n const length = bytes.length;\n\n result.push(\n {\n type: 'pdf417',\n property: 'data',\n value,\n payload: [\n 0x1b, 0x1d, 0x78, 0x44,\n length & 0xff, (length >> 8) & 0xff,\n ...bytes,\n ],\n },\n );\n\n /* Print PDF417 code */\n\n result.push(\n {\n type: 'pdf417',\n command: 'print',\n payload: [0x1b, 0x1d, 0x78, 0x50],\n },\n );\n\n return result;\n }\n\n /**\n * Encode an image\n * @param {ImageData} image ImageData object\n * @param {number} width Width of the image\n * @param {number} height Height of the image\n * @param {string} mode Image encoding mode (value is ignored)\n * @return {Array} Array of bytes to send to the printer\n */\n image(image, width, height, mode) {\n const result = [];\n\n const getPixel = (x, y) => typeof image.data[((width * y) + x) * 4] === 'undefined' ||\n image.data[((width * y) + x) * 4] > 0 ? 0 : 1;\n\n result.push(\n {\n type: 'line-spacing',\n value: '24 dots',\n payload: [0x1b, 0x30],\n },\n );\n\n for (let s = 0; s < height / 24; s++) {\n const y = s * 24;\n const bytes = new Uint8Array(width * 3);\n\n for (let x = 0; x < width; x++) {\n const i = x * 3;\n\n bytes[i] =\n getPixel(x, y + 0) << 7 |\n getPixel(x, y + 1) << 6 |\n getPixel(x, y + 2) << 5 |\n getPixel(x, y + 3) << 4 |\n getPixel(x, y + 4) << 3 |\n getPixel(x, y + 5) << 2 |\n getPixel(x, y + 6) << 1 |\n getPixel(x, y + 7);\n\n bytes[i + 1] =\n getPixel(x, y + 8) << 7 |\n getPixel(x, y + 9) << 6 |\n getPixel(x, y + 10) << 5 |\n getPixel(x, y + 11) << 4 |\n getPixel(x, y + 12) << 3 |\n getPixel(x, y + 13) << 2 |\n getPixel(x, y + 14) << 1 |\n getPixel(x, y + 15);\n\n bytes[i + 2] =\n getPixel(x, y + 16) << 7 |\n getPixel(x, y + 17) << 6 |\n getPixel(x, y + 18) << 5 |\n getPixel(x, y + 19) << 4 |\n getPixel(x, y + 20) << 3 |\n getPixel(x, y + 21) << 2 |\n getPixel(x, y + 22) << 1 |\n getPixel(x, y + 23);\n }\n\n result.push(\n {\n type: 'image',\n property: 'data',\n value: 'column',\n width,\n height: 24,\n payload: [\n 0x1b, 0x58,\n width & 0xff, (width >> 8) & 0xff,\n ...bytes,\n 0x0a, 0x0d,\n ],\n },\n );\n }\n\n result.push(\n {\n type: 'line-spacing',\n value: 'default',\n payload: [0x1b, 0x7a, 0x01],\n },\n );\n\n return result;\n }\n\n /**\n * Cut the paper\n * @param {string} value Cut type ('full' or 'partial')\n * @return {Array} Array of bytes to send to the printer\n */\n cut(value) {\n let data = 0x00;\n\n if (value == 'partial') {\n data = 0x01;\n }\n\n return [\n {\n type: 'cut',\n payload: [0x1b, 0x64, data],\n },\n ];\n }\n\n /**\n * Send a pulse to the cash drawer\n * @param {number} device Device number\n * @param {number} on Pulse ON time\n * @param {number} off Pulse OFF time\n * @return {Array} Array of bytes to send to the printer\n */\n pulse(device, on, off) {\n if (typeof device === 'undefined') {\n device = 0;\n }\n\n if (typeof on === 'undefined') {\n on = 200;\n }\n\n if (typeof off === 'undefined') {\n off = 200;\n }\n\n on = Math.min(127, Math.round(on / 10));\n off = Math.min(127, Math.round(off / 10));\n\n return [\n {\n type: 'pulse',\n payload: [0x1b, 0x07, on & 0xff, off & 0xff, device ? 0x1a : 0x07],\n },\n ];\n }\n\n /**\n * Enable or disable bold text\n * @param {boolean} value Enable or disable bold text, optional, default toggles between states\n * @return {Array} Array of bytes to send to the printer\n */\n bold(value) {\n let data = 0x46;\n\n if (value) {\n data = 0x45;\n }\n\n return [\n 0x1b, data,\n ];\n }\n\n /**\n * Enable or disable underline text\n * @param {boolean} value Enable or disable underline text, optional, default toggles between states\n * @return {Array} Array of bytes to send to the printer\n */\n underline(value) {\n let data = 0x00;\n\n if (value) {\n data = 0x01;\n }\n\n return [\n 0x1b, 0x2d, data,\n ];\n }\n\n /**\n * Enable or disable italic text\n * @param {boolean} value Enable or disable italic text, optional, default toggles between states\n * @return {Array} Array of bytes to send to the printer\n */\n italic(value) {\n return [];\n }\n\n /**\n * Enable or disable inverted text\n * @param {boolean} value Enable or disable inverted text, optional, default toggles between states\n * @return {Array} Array of bytes to send to the printer\n */\n invert(value) {\n let data = 0x35;\n\n if (value) {\n data = 0x34;\n }\n\n return [\n 0x1b, data,\n ];\n }\n\n /**\n * Change text size\n * @param {number} width Width of the text (1-8)\n * @param {number} height Height of the text (1-8)\n * @return {Array} Array of bytes to send to the printer\n */\n size(width, height) {\n return [\n 0x1b, 0x69, height - 1, width - 1,\n ];\n }\n\n /**\n * Change the codepage\n * @param {number} value Codepage value\n * @return {Array} Array of bytes to send to the printer\n */\n codepage(value) {\n return [\n 0x1b, 0x1d, 0x74, value,\n ];\n }\n\n /**\n * Flush the printers line buffer\n * @return {Array} Array of bytes to send to the printer\n */\n flush() {\n return [\n {\n type: 'print-mode',\n value: 'page',\n payload: [0x1b, 0x1d, 0x50, 0x30],\n },\n {\n type: 'print-mode',\n value: 'line',\n payload: [0x1b, 0x1d, 0x50, 0x31],\n },\n ];\n }\n}\n\nexport default LanguageStarPrnt;\n","\n/**\n * Store and manage text styles\n */\nclass TextStyle {\n #default = {\n bold: false,\n italic: false,\n underline: false,\n invert: false,\n width: 1,\n height: 1,\n };\n\n #current;\n #callback;\n\n /**\n * Create a new TextStyle object\n *\n * @param {object} options Object containing configuration options\n */\n constructor(options) {\n this.#current = structuredClone(this.#default);\n this.#callback = options.callback || (() => {});\n }\n\n /**\n * Return commands to get to the default style from the current style\n *\n * @return {array} Array of modified properties\n */\n store() {\n const result = [];\n\n const properties = new Map();\n\n for (const property in this.#current) {\n if (this.#current[property] !== this.#default[property]) {\n if (property === 'width' || property === 'height') {\n properties.set('size', {width: this.#default.width, height: this.#default.height});\n } else {\n properties.set(property, this.#default[property]);\n }\n }\n }\n\n for (const property of properties) {\n result.push({\n type: 'style',\n property: property[0],\n value: property[1],\n });\n }\n\n return result;\n }\n\n /**\n * Return commands to get to the current style from the default style\n *\n * @return {array} Array of modified properties\n */\n restore() {\n const result = [];\n\n const properties = new Map();\n\n for (const property in this.#current) {\n if (this.#current[property] !== this.#default[property]) {\n if (property === 'width' || property === 'height') {\n properties.set('size', {width: this.#current.width, height: this.#current.height});\n } else {\n properties.set(property, this.#current[property]);\n }\n }\n }\n\n for (const property of properties) {\n result.push({\n type: 'style',\n property: property[0],\n value: property[1],\n });\n }\n\n return result;\n }\n\n /**\n * Set the bold property\n *\n * @param {boolean} value Is bold enabled, or not?\n */\n set bold(value) {\n if (value !== this.#current.bold) {\n this.#current.bold = value;\n\n this.#callback({\n type: 'style',\n property: 'bold',\n value,\n });\n }\n }\n\n /**\n * Get the bold property\n *\n * @return {boolean} Is bold enabled, or not?\n */\n get bold() {\n return this.#current.bold;\n }\n\n /**\n * Set the italic property\n *\n * @param {boolean} value Is italic enabled, or not?\n */\n set italic(value) {\n if (value !== this.#current.italic) {\n this.#current.italic = value;\n\n this.#callback({\n type: 'style',\n property: 'italic',\n value,\n });\n }\n }\n\n /**\n * Get the italic property\n *\n * @return {boolean} Is italic enabled, or not?\n */\n get italic() {\n return this.#current.italic;\n }\n\n /**\n * Set the underline property\n *\n * @param {boolean} value Is underline enabled, or not?\n */\n set underline(value) {\n if (value !== this.#current.underline) {\n this.#current.underline = value;\n\n this.#callback({\n type: 'style',\n property: 'underline',\n value,\n });\n }\n }\n\n /**\n * Get the underline property\n *\n * @return {boolean} Is underline enabled, or not?\n */\n get underline() {\n return this.#current.underline;\n }\n\n /**\n * Set the invert property\n *\n * @param {boolean} value Is invert enabled, or not?\n */\n set invert(value) {\n if (value !== this.#current.invert) {\n this.#current.invert = value;\n\n this.#callback({\n type: 'style',\n property: 'invert',\n value,\n });\n }\n }\n\n /**\n * Get the invert property\n *\n * @return {boolean} Is invert enabled, or not?\n */\n get invert() {\n return this.#current.invert;\n }\n\n /**\n * Set the width property\n *\n * @param {number} value The width of a character\n */\n set width(value) {\n if (value !== this.#current.width) {\n this.#current.width = value;\n\n this.#callback({\n type: 'style',\n property: 'size',\n value: {width: this.#current.width, height: this.#current.height},\n });\n }\n }\n\n /**\n * Get the width property\n *\n * @return {number} The width of a character\n */\n get width() {\n return this.#current.width;\n }\n\n /**\n * Set the height property\n *\n * @param {number} value The height of a character\n */\n set height(value) {\n if (value !== this.#current.height) {\n this.#current.height = value;\n\n this.#callback({\n type: 'style',\n property: 'size',\n value: {width: this.#current.width, height: this.#current.height},\n });\n }\n }\n\n /**\n * Get the height property\n *\n * @return {number} The height of a character\n */\n get height() {\n return this.#current.height;\n }\n}\n\nexport default TextStyle;\n","\n/**\n * Wrap text into lines of a specified width.\n */\nclass TextWrap {\n /**\n * Static function to wrap text into lines of a specified width.\n *\n * @param {string} value Text to wrap\n * @param {object} options Object containing configuration options\n * @return {array} Array of lines\n */\n static wrap(value, options) {\n const result = [];\n let line = [];\n let length = options.indent || 0;\n const width = options.width || 1;\n const columns = options.columns || 42;\n\n const lines = String(value).split(/\\r\\n|\\n/g);\n\n for (const value of lines) {\n const chunks = value.match(/[^\\s-]+?-\\b|\\S+|\\s+|\\r\\n?|\\n/g) || ['~~empty~~'];\n\n for (const chunk of chunks) {\n if (chunk === '~~empty~~') {\n result.push(line);\n line = [];\n length = 0;\n continue;\n }\n\n /* The word does not fit on the line */\n\n if (length + (chunk.length * width) > columns) {\n /* The word is longer than the line */\n\n if (chunk.length * width > columns) {\n /* Calculate the remaining space on the line */\n\n const remaining = columns - length;\n\n /* Split the word into pieces */\n\n const letters = chunk.split('');\n let piece;\n const pieces = [];\n\n /* If there are at least 8 position remaining, break early */\n\n if (remaining > 8 * width) {\n piece = letters.splice(0, Math.floor(remaining / width)).join('');\n\n line.push(piece);\n result.push(line);\n\n line = [];\n length = 0;\n }\n\n /* The remaining letters can be split into pieces the size of the width */\n\n while ((piece = letters.splice(0, Math.floor(columns / width))).length) {\n pieces.push(piece.join(''));\n }\n\n for (const piece of pieces) {\n if (length + (piece.length * width) > columns) {\n result.push(line);\n line = [];\n length = 0;\n }\n\n line.push(piece);\n length += piece.length * width;\n }\n\n continue;\n }\n\n /* Word fits on the next line */\n result.push(line);\n line = [];\n length = 0;\n }\n\n /* Check if we are whitespace */\n\n if (chunk.match(/\\s+/) && length == 0) {\n continue;\n }\n\n line.push(chunk);\n length += chunk.length * width;\n }\n\n if (line.length > 0) {\n result.push(line);\n line = [];\n length = 0;\n }\n }\n\n for (let i = 0; i < result.length; i++) {\n result[i] = result[i].join('');\n\n if (i < result.length - 1) {\n result[i] = result[i].trimEnd();\n }\n }\n\n return result;\n }\n}\n\nexport default TextWrap;\n","import TextStyle from './text-style.js';\nimport TextWrap from './text-wrap.js';\n\n/**\n * Compose lines of text and commands\n */\nclass LineComposer {\n #embedded;\n #columns;\n #align;\n #callback;\n\n #cursor = 0;\n #stored;\n #buffer = [];\n\n\n /**\n * Create a new LineComposer object\n *\n * @param {object} options Object containing configuration options\n */\n constructor(options) {\n this.#embedded = options.embedded || false;\n this.#columns = options.columns || 42;\n this.#align = options.align || 'left';\n this.#callback = options.callback || (() => {});\n\n this.style = new TextStyle({\n callback: (value) => {\n this.add(value, 0);\n },\n });\n\n this.#stored = this.style.store();\n }\n\n /**\n * Add text to the line, potentially wrapping it\n *\n * @param {string} value Text to add to the line\n * @param {number} codepage Codepage to use for the text\n */\n text(value, codepage) {\n const lines = TextWrap.wrap(value, {columns: this.#columns, width: this.style.width, indent: this.#cursor});\n\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].length) {\n /* Add the line to the buffer */\n this.add({type: 'text', value: lines[i], codepage}, lines[i].length * this.style.width);\n\n /* If it is not the last line, flush the buffer */\n if (i < lines.length - 1) {\n this.flush();\n }\n } else {\n /* In case the line is empty, flush the buffer */\n this.flush({forceNewline: true});\n }\n }\n }\n\n /**\n * Add spaces to the line\n *\n * @param {number} size Number of spaces to add to the line\n */\n space(size) {\n this.add({type: 'space', size}, size);\n }\n\n /**\n * Add raw bytes to to the line\n *\n * @param {array} value Array of bytes to add to the line\n * @param {number} length Length in characters of the value\n */\n raw(value, length) {\n this.add({type: 'raw', payload: value}, length || 0);\n }\n\n /**\n * Add an item to the line buffer, potentially flushing it\n *\n * @param {object} value Item to add to the line buffer\n * @param {number} length Length in characters of the value\n */\n add(value, length) {\n if (value instanceof Array) {\n for (const item of value) {\n this.add(item);\n }\n\n this.#cursor += length || 0;\n return;\n }\n\n length = length || 0;\n\n if (length + this.#cursor > this.#columns) {\n this.flush();\n }\n\n this.#cursor += length;\n this.#buffer = this.#buffer.concat(value);\n }\n\n /**\n * Move the cursor to the end of the line, forcing a flush\n * with the next item to add to the line buffer\n */\n end() {\n this.#cursor = this.#columns;\n }\n\n /**\n * Fetch the contents of line buffer\n *\n * @param {options} options Options for flushing the buffer\n * @return {array} Array of items in the line buffer\n */\n fetch(options) {\n /* Unless forced keep style changes for the next line */\n\n if (this.#cursor === 0 && !options.forceNewline && !options.forceFlush) {\n return [];\n }\n\n /* Check the alignment of the current line */\n\n const align = {\n current: this.#align,\n next: null,\n };\n\n for (let i = 0; i < this.#buffer.length - 1; i++) {\n if (this.#buffer[i].type === 'align' && !this.#buffer[i].payload) {\n align.current = this.#buffer[i].value;\n }\n }\n\n /* Check the last item in the buffer, to see if it changes the alignment, then save it for the next line */\n\n if (this.#buffer.length) {\n const last = this.#buffer[this.#buffer.length - 1];\n\n if (last.type === 'align' && !last.payload) {\n align.next = last.value;\n }\n }\n\n this.#align = align.current;\n\n /* Create a clean buffer without alignment changes */\n\n const buffer = this.#buffer.filter((item) => item.type !== 'align' || item.payload);\n\n /* Fetch the contents of the line buffer */\n\n let result = [];\n\n const restore = this.style.restore();\n const store = this.style.store();\n\n if (this.#cursor === 0 && (options.ignoreAlignment || !this.#embedded)) {\n result = this.#merge([\n ...this.#stored,\n ...buffer,\n ...store,\n ]);\n } else {\n if (this.#align === 'right') {\n let last;\n\n /* Find index of last text or space element */\n\n for (let i = buffer.length - 1; i >= 0; i--) {\n if (buffer[i].type === 'text' || buffer[i].type === 'space') {\n last = i;\n break;\n }\n }\n\n /* Remove trailing spaces from lines */\n\n if (typeof last === 'number') {\n if (buffer[last].type === 'space' && buffer[last].size > this.style.width) {\n buffer[last].size -= this.style.width;\n this.#cursor -= this.style.width;\n }\n\n if (buffer[last].type === 'text' && buffer[last].value.endsWith(' ')) {\n buffer[last].value = buffer[last].value.slice(0, -1);\n this.#cursor -= this.style.width;\n }\n }\n\n result = this.#merge([\n {type: 'space', size: this.#columns - this.#cursor},\n ...this.#stored,\n ...buffer,\n ...store,\n ]);\n }\n\n if (this.#align === 'center') {\n const left = (this.#columns - this.#cursor) >> 1;\n\n result = this.#merge([\n {type: 'space', size: left},\n ...this.#stored,\n ...buffer,\n ...store,\n {type: 'space', size: this.#embedded ? this.#columns - this.#cursor - left : 0},\n ]);\n }\n\n if (this.#align === 'left') {\n result = this.#merge([\n ...this.#stored,\n ...buffer,\n ...store,\n {type: 'space', size: this.#embedded ? this.#columns - this.#cursor : 0},\n ]);\n }\n }\n\n this.#stored = restore;\n this.#buffer = [];\n this.#cursor = 0;\n\n if (result.length === 0 && options.forceNewline) {\n result.push({type: 'empty'});\n }\n\n if (align.next) {\n this.#align = align.next;\n }\n\n return result;\n }\n\n /**\n * Flush the contents of the line buffer\n *\n * @param {options} options Options for flushing the buffer\n */\n flush(options) {\n options = Object.assign({\n forceNewline: false,\n forceFlush: false,\n ignoreAlignment: false,\n }, options || {});\n\n const result = this.fetch(options);\n\n if (result.length) {\n this.#callback(result);\n }\n }\n\n /**\n * Merge text items and spaces in the line buffer\n *\n * @param {array} items Array of items\n * @return {array} Array of merged items\n */\n #merge(items) {\n const result = [];\n let last = -1;\n\n for (let item of items) {\n if (item.type === 'space') {\n if (item.size === 0) {\n continue;\n }\n\n item = {type: 'text', value: ' '.repeat(item.size), codepage: null};\n }\n\n if (item.type === 'text') {\n /* Check if we can merge the text with the last item */\n\n const allowMerge =\n last >= 0 &&\n result[last].type === 'text' &&\n (\n result[last].codepage === item.codepage ||\n result[last].codepage === null ||\n item.codepage === null\n );\n\n if (allowMerge) {\n result[last].value += item.value;\n result[last].codepage = result[last].codepage || item.codepage;\n continue;\n }\n\n result.push(item);\n last++;\n } else if (item.type === 'style' && item.property === 'size') {\n const allowMerge =\n last >= 0 &&\n result[last].type === 'style' &&\n result[last].property === 'size';\n\n if (allowMerge) {\n result[last].value = item.value;\n continue;\n }\n\n result.push(item);\n last++;\n } else {\n result.push(item);\n last++;\n }\n }\n\n return result;\n }\n\n /**\n * Get the current position of the cursor\n *\n * @return {number} Current position of the cursor\n */\n get cursor() {\n return this.#cursor;\n }\n\n /**\n * Set the alignment of the current line\n *\n * @param {string} value Text alignment, can be 'left', 'center', or 'right'\n */\n set align(value) {\n this.add({type: 'align', value}, 0);\n }\n\n /**\n * Get the alignment of the current line\n *\n * @return {string} Text alignment, can be 'left', 'center', or 'right'\n */\n get align() {\n let align = this.#align;\n\n for (let i = 0; i < this.#buffer.length; i++) {\n if (this.#buffer[i].type === 'align') {\n align = this.#buffer[i].value;\n }\n }\n\n return align;\n }\n\n /**\n * Set the number of columns of the current line\n *\n * @param {number} value columns of the line\n */\n set columns(value) {\n this.#columns = value;\n }\n\n /**\n * Get the number of columns of the current line\n *\n * @return {number} columns of the line\n */\n get columns() {\n return this.#columns;\n }\n}\n\nexport default LineComposer;\n","const codepageMappings = {\n\t'esc-pos': {\n\t\t'bixolon/legacy': ['cp437','epson/katakana','cp850','cp860','cp863','cp865',,,,,,,,,,,,,,'cp858'],\n\t\t'bixolon': ['cp437','epson/katakana','cp850','cp860','cp863','cp865',,,,,,,,,,,'windows1252','cp866','cp852','cp858',,'cp862','cp864','thai42','windows1253','windows1254','windows1257',,'windows1251','cp737','cp775','thai14','bixolon/hebrew','windows1255','thai11','thai18','cp885','cp857','iso8859-7','thai16','windows1256','windows1258','khmer',,,,'bixolon/cp866','windows1250',,'tcvn3','tcvn3capitals','viscii'],\n\t\t'citizen': ['cp437','epson/katakana','cp858','cp860','cp863','cp865','cp852','cp866','cp857',,,,,,,,'windows1252',,,,,'thai11',,,,,'thai13',,,,'tcvn3','tcvn3capitals','windows1258',,,,,,,,'cp864'],\n\t\t'epson/legacy': ['cp437','epson/katakana','cp850','cp860','cp863','cp865',,,,,,,,,,,'windows1252','cp866','cp852','cp858'],\n\t\t'epson': ['cp437','epson/katakana','cp850','cp860','cp863','cp865',,,,,,'cp851','cp853','cp857','cp737','iso8859-7','windows1252','cp866','cp852','cp858','thai42','thai11',,,,,'thai13',,,,'tcvn3','tcvn3capitals','cp720','cp775','cp855','cp861','cp862','cp864','cp869','epson/iso8859-2','iso8859-15','cp1098','cp774','cp772','cp1125','windows1250','windows1251','windows1253','windows1254','windows1255','windows1256','windows1257','windows1258','rk1048'],\n\t\t'fujitsu': ['cp437','epson/katakana','cp850','cp860','cp863','cp865',,,'cp857',,,,,,,,'windows1252','cp866','cp852','cp858',,,,,,,'thai13',,,,,,,,,,,,,,'cp864'],\n\t\t'hp': ['cp437','cp850','cp852','cp860','cp863','cp865','cp858','cp866','windows1252','cp862','cp737','cp874','cp857','windows1251','windows1255','rk1048'],\n\t\t'metapace': ['cp437','epson/katakana','cp850','cp860','cp863','cp865',,,,,,,,,,,,,,'cp858'],\n\t\t'mpt': ['cp437',,'cp850','cp860','cp863','cp865','windows1251','cp866','cp3021','cp3012'],\n\t\t'pos-5890': ['cp437','epson/katakana','cp850','cp860','cp863','cp865','iso8859-1',,'cp862',,,,,,,,'windows1252','cp866','cp852','cp858',,,,'windows1251','cp737','windows1257',,'windows1258','cp864',,,,'windows1255',,,,,,,,,,,,,,,,,,,,,,,,'cp861',,,,'cp855','cp857',,,,'cp851','cp869',,'cp772','cp774',,,'windows1250',,'cp3840',,'cp3843','cp3844','cp3845','cp3846','cp3847','cp3848',,'cp771','cp3001','cp3002','cp3011','cp3012',,'cp3041','windows1253','windows1254','windows1256','cp720',,'cp775'],\n\t\t'pos-8360': ['cp437','epson/katakana','cp850','cp860','cp863','cp865','iso8859-1','windows1253','cp862',,,,,,,,'windows1252','cp866','cp852','cp858',,'latvian',,'windows1251','cp737','windows1257',,'windows1258','cp864',,,'pos8360/hebrew','windows1255',,,,,,,,,,,,,,,,,,,,,,,,'cp861',,,,'cp855','cp857',,,,'cp851','cp869',,'cp772','cp774',,,'windows1250',,'cp3840',,'cp3843','cp3844','cp3845','cp3846','cp3847','cp3848',,'cp771','cp3001','cp3002','cp3011','cp3012',,,,'windows1254','windows1256','cp720',,'cp775'],\n\t\t'star': ['cp437','star/katakana','cp850','cp860','cp863','cp865',,,,,,,,,,,'windows1252','cp866','cp852','cp858','thai42','thai11','thai13','thai14','thai16',,'thai18'],\n\t\t'xprinter': ['cp437','epson/katakana','cp850','cp860','cp863','cp865','iso8859-1','windows1253','xprinter/hebrew','cp3012',,'windows1255',,,,,'windows1252','cp866','cp852','cp858',,'latvian','cp864','windows1251','cp737','windows1257',,,,,,,,'windows1256'],\n\t\t'youku': ['cp437','epson/katakana','cp850','cp860','cp863','cp865','windows1251','cp866','cp3021','cp3012',,,,,,'cp862','windows1252',,'cp852','cp858',,,'cp864','iso8859-1','cp737','windows1257',,,'cp855','cp857','windows1250','cp775','windows1254','windows1255','windows1256','windows1258',,,'iso8859-1',,,,,,'iso8859-15',,,'cp874'],\n\t},\n\t'star-prnt': {\n\t\t'star': ['star/standard','cp437','star/katakana',,'cp858','cp852','cp860','cp861','cp863','cp865','cp866','cp855','cp857','cp862','cp864','cp737','cp851','cp869','star/cp928','cp772','cp774','star/cp874',,,,,,,,,,,'windows1252','windows1250','windows1251',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'cp3840','cp3841','cp3843','cp3844','cp3845','cp3846','cp3847','cp3848','cp1001','cp771','cp3001','cp3002','cp3011','cp3012','cp3021','cp3041'],\n\t}\n};\n\ncodepageMappings['star-line'] = codepageMappings['star-prnt'];\ncodepageMappings['esc-pos']['zijang'] = codepageMappings['esc-pos']['pos-5890'];\n\nexport default codepageMappings;\n","const printerDefinitions = {\n\t'bixolon-srp350': {vendor:'Bixolon',model:'SRP-350',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'bixolon/legacy',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:false,models:[]},pdf417:{supported:false},cutter:{feed:4}}},\n\t'bixolon-srp350iii': {vendor:'Bixolon',model:'SRP-350III',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'bixolon',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56},C:{size:'9x24',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'citizen-ct-s310ii': {vendor:'Citizen',model:'CT-S310II',media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'citizen',fonts:{A:{size:'12x24',columns:48},B:{size:'9x24',columns:64},C:{size:'8x16',columns:72}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:3}}},\n\t'epson-tm-m30ii': {vendor:'Epson',model:'TM-m30II',interfaces:{usb:{productName:'TM-m30II'}},media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:48},B:{size:'10x24',columns:57},C:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded','code128-auto']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-m30iii': {vendor:'Epson',model:'TM-m30III',interfaces:{usb:{productName:'TM-m30III'}},media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:48},B:{size:'10x24',columns:57},C:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded','code128-auto']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-p20ii': {vendor:'Epson',model:'TM-P20II',media:{dpi:203,width:58},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:32},B:{size:'9x24',columns:42},C:{size:'9x17',columns:42},D:{size:'10x24',columns:38},E:{size:'8x16',columns:48}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded','code128-auto']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},images:{mode:'raster'},cutter:{feed:3}}},\n\t'epson-tm-t20ii': {vendor:'Epson',model:'TM-T20II',interfaces:{usb:{productName:'TM-T20II'}},media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t20iii': {vendor:'Epson',model:'TM-T20III',interfaces:{usb:{productName:'TM-T20III'}},media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t20iv': {vendor:'Epson',model:'TM-T20IV',interfaces:{usb:{productName:'TM-T20IV'}},media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded','code128-auto']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t70': {vendor:'Epson',model:'TM-T70',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson/legacy',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},images:{mode:'raster'},cutter:{feed:4}}},\n\t'epson-tm-t70ii': {vendor:'Epson',model:'TM-T70II','interface':{usb:{productName:'TM-T70II'}},media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},images:{mode:'raster'},cutter:{feed:4}}},\n\t'epson-tm-t88ii': {vendor:'Epson',model:'TM-T88II',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson/legacy',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t88iii': {vendor:'Epson',model:'TM-T88III',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson/legacy',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t88iv': {vendor:'Epson',model:'TM-T88IV',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson/legacy',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t88v': {vendor:'Epson',model:'TM-T88V',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t88vi': {vendor:'Epson',model:'TM-T88VI',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t88vii': {vendor:'Epson',model:'TM-T88VII',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded','code128-auto']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'fujitsu-fp1000': {vendor:'Fujitsu',model:'FP-1000',media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'fujitsu',fonts:{A:{size:'12x24',columns:48},B:{size:'9x24',columns:56},C:{size:'8x16',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:false},cutter:{feed:4}}},\n\t'hp-a779': {vendor:'HP',model:'A779',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'hp',newline:'\\n',fonts:{A:{size:'12x24',columns:44}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:false,fallback:{type:'barcode',symbology:75}},cutter:{feed:4}}},\n\t'metapace-t1': {vendor:'Metapace',model:'T-1',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'metapace',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:false,models:[]},pdf417:{supported:false},cutter:{feed:4}}},\n\t'mpt-ii': {vendor:'',model:'MPT-II',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'mpt',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64},C:{size:'0x0',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:[]},pdf417:{supported:false}}},\n\t'pos-5890': {vendor:'',model:'POS-5890',media:{dpi:203,width:58},capabilities:{language:'esc-pos',codepages:'pos-5890',fonts:{A:{size:'12x24',columns:32},B:{size:'9x17',columns:42}},barcodes:{supported:true,symbologies:['upca','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['2']},pdf417:{supported:true},images:{mode:'raster'},cutter:{feed:1}}},\n\t'pos-8360': {vendor:'',model:'POS-8360',media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'pos-8360',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['2']},pdf417:{supported:true},images:{mode:'raster'},cutter:{feed:4}}},\n\t'star-mc-print2': {vendor:'Star',model:'mC-Print2',interfaces:{usb:{productName:'mC-Print2'}},media:{dpi:203,width:58},capabilities:{language:'star-prnt',codepages:'star',fonts:{A:{size:'12x24',columns:32},B:{size:'9x24',columns:42}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','itf','codabar','code93','code128','gs1-128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:3}}},\n\t'star-mpop': {vendor:'Star',model:'mPOP',interfaces:{usb:{productName:'mPOP'}},media:{dpi:203,width:58},capabilities:{language:'star-prnt',codepages:'star',fonts:{A:{size:'12x24',columns:32},B:{size:'9x24',columns:42}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','itf','codabar','code93','code128','gs1-128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:3}}},\n\t'star-sm-l200': {vendor:'Star',model:'SM-L200',media:{dpi:203,width:58},capabilities:{language:'star-prnt',codepages:'star',fonts:{A:{size:'12x24',columns:32},B:{size:'9x24',columns:42},C:{size:'9x17',columns:42}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','itf','codabar','code93','code128']},qrcode:{supported:true,models:['2']},pdf417:{supported:true}}},\n\t'star-tsp100iii': {vendor:'Star',model:'TSP100III',media:{dpi:203,width:80},capabilities:{language:'star-prnt',codepages:'star',fonts:{A:{size:'12x24',columns:48},B:{size:'9x24',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:3}}},\n\t'star-tsp100iv': {vendor:'Star',model:'TSP100IV',media:{dpi:203,width:80},capabilities:{language:'star-prnt',codepages:'star',fonts:{A:{size:'12x24',columns:48},B:{size:'9x24',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:3}}},\n\t'star-tsp650': {vendor:'Star',model:'TSP650',media:{dpi:203,width:80},capabilities:{language:'star-line',codepages:'star',fonts:{A:{size:'12x24',columns:48},B:{size:'9x24',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:false,models:[]},pdf417:{supported:false},cutter:{feed:3}}},\n\t'star-tsp650ii': {vendor:'Star',model:'TSP650II',media:{dpi:203,width:80},capabilities:{language:'star-line',codepages:'star',fonts:{A:{size:'12x24',columns:48},B:{size:'9x24',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:3}}},\n\t'xprinter-xp-n160ii': {vendor:'Xprinter',model:'XP-N160II',interfaces:{usb:{productName:'Printer-80\\u0000'}},media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'xprinter',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-128']},qrcode:{supported:true,models:['2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'xprinter-xp-t80q': {vendor:'Xprinter',model:'XP-T80Q',media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'xprinter',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-128']},qrcode:{supported:true,models:['2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'youku-58t': {vendor:'Youku',model:'58T',media:{dpi:203,width:58},capabilities:{language:'esc-pos',codepages:'youku',fonts:{A:{size:'12x24',columns:32},B:{size:'9x24',columns:42}},barcodes:{supported:true,symbologies:['upca','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['2']},pdf417:{supported:false}}},\n};\n\nexport default printerDefinitions;\n","import Dither from 'canvas-dither';\nimport Flatten from 'canvas-flatten';\nimport CodepageEncoder from '@point-of-sale/codepage-encoder';\nimport ImageData from '@canvas/image-data';\nimport resizeImageData from 'resize-image-data';\n\n/* Import local dependencies */\n\nimport LanguageEscPos from './languages/esc-pos.js';\nimport LanguageStarPrnt from './languages/star-prnt.js';\nimport LineComposer from './line-composer.js';\n\n/* Import generated data */\n\nimport codepageMappings from '../generated/mapping.js';\nimport printerDefinitions from '../generated/printers.js';\n\n\n/**\n * Create a byte stream based on commands for receipt printers\n */\nclass ReceiptPrinterEncoder {\n #options = {};\n #queue = [];\n\n #language;\n #composer;\n\n #printerCapabilities = {\n 'fonts': {\n 'A': {size: '12x24', columns: 42},\n 'B': {size: '9x24', columns: 56},\n },\n 'barcodes': {\n 'supported': true,\n 'symbologies': [\n 'upca', 'upce', 'ean13', 'ean8', 'code39', 'itf', 'codabar', 'code93',\n 'code128', 'gs1-databar-omni', 'gs1-databar-truncated',\n 'gs1-databar-limited', 'gs1-databar-expanded',\n ],\n },\n 'qrcode': {\n 'supported': true,\n 'models': ['1', '2'],\n },\n 'pdf417': {\n 'supported': true,\n },\n };\n\n #codepageMapping = {};\n #codepageCandidates = [];\n #codepage = 'cp437';\n\n #state = {\n 'codepage': 0,\n 'font': 'A',\n };\n\n\n /**\n * Create a new object\n *\n * @param {object} options Object containing configuration options\n */\n constructor(options) {\n options = options || {};\n\n const defaults = {\n columns: 42,\n language: 'esc-pos',\n imageMode: 'column',\n feedBeforeCut: 0,\n newline: '\\n\\r',\n codepageMapping: 'epson',\n codepageCandidates: null,\n errors: 'relaxed',\n };\n\n /* Determine default settings based on the printer language */\n\n if (typeof options.language === 'string') {\n defaults.columns = options.language === 'esc-pos' ? 42 : 48;\n defaults.codepageMapping = options.language === 'esc-pos' ? 'epson' : 'star';\n }\n\n /* Determine default settings based on the printer model */\n\n if (typeof options.printerModel === 'string') {\n if (typeof printerDefinitions[options.printerModel] === 'undefined') {\n throw new Error('Unknown printer model');\n }\n\n this.#printerCapabilities = printerDefinitions[options.printerModel].capabilities;\n\n /* Apply the printer definition to the defaults */\n\n defaults.columns = this.#printerCapabilities.fonts['A'].columns;\n defaults.language = this.#printerCapabilities.language;\n defaults.codepageMapping = this.#printerCapabilities.codepages;\n defaults.newline = this.#printerCapabilities?.newline || defaults.newline;\n defaults.feedBeforeCut = this.#printerCapabilities?.cutter?.feed || defaults.feedBeforeCut;\n defaults.imageMode = this.#printerCapabilities?.images?.mode || defaults.imageMode;\n }\n\n /* Merge options */\n\n if (options) {\n this.#options = Object.assign(defaults, {\n debug: false,\n embedded: false,\n createCanvas: null,\n }, options);\n }\n\n /* Backwards compatibility for the width option */\n\n if (this.#options.width) {\n this.#options.columns = this.#options.width;\n }\n\n /* Get the printer language */\n\n if (this.#options.language === 'esc-pos') {\n this.#language = new LanguageEscPos();\n } else if (this.#options.language === 'star-prnt' || this.#options.language === 'star-line') {\n this.#language = new LanguageStarPrnt();\n } else {\n throw new Error('The specified language is not supported');\n }\n\n /* Determine autoflush settings */\n /*\n\n StarPRNT printers are set up to have print start control set to page units.\n That means the printer will only print after it has received a cut or ff command.\n This is not ideal, so we set autoFlush to true by default, which will force\n the printer to print after each encode().\n\n One problem, we do not want to do this for embedded content. Only the top level\n encoder should flush the buffer.\n\n ESC/POS and Star Line Mode printers are set up to have print start control set to\n line units, which means the printer will print after each line feed command.\n We do not need to flush the buffer for these printers.\n\n */\n\n if (typeof this.#options.autoFlush === 'undefined') {\n this.#options.autoFlush = ! this.#options.embedded && this.#options.language == 'star-prnt';\n }\n\n /* Check column width */\n\n if (![32, 35, 42, 44, 48].includes(this.#options.columns) && !this.#options.embedded) {\n throw new Error('The width of the paper must me either 32, 35, 42, 44 or 48 columns');\n }\n\n /* Determine codepage mapping and candidates */\n\n if (typeof this.#options.codepageMapping === 'string') {\n if (typeof codepageMappings[this.#options.language][this.#options.codepageMapping] === 'undefined') {\n throw new Error('Unknown codepage mapping');\n }\n\n this.#codepageMapping = Object.fromEntries(codepageMappings[this.#options.language][this.#options.codepageMapping]\n .map((v, i) => [v, i])\n .filter((i) => i));\n } else {\n this.#codepageMapping = this.#options.codepageMapping;\n }\n\n if (this.#options.codepageCandidates) {\n this.#codepageCandidates = this.#options.codepageCandidates;\n } else {\n this.#codepageCandidates = Object.keys(this.#codepageMapping);\n }\n\n /* Create our line composer */\n\n this.#composer = new LineComposer({\n embedded: this.#options.embedded,\n columns: this.#options.columns,\n align: 'left',\n size: 1,\n\n callback: (value) => this.#queue.push(value),\n });\n\n this.#reset();\n }\n\n /**\n * Reset the state of the object\n */\n #reset() {\n this.#queue = [];\n this.#codepage = this.#options.language == 'esc-pos' ? 'cp437' : 'star/standard';\n this.#state.codepage = -1;\n this.#state.font = 'A';\n }\n\n /**\n * Initialize the printer\n *\n * @return {object} Return the object, for easy chaining commands\n *\n */\n initialize() {\n if (this.#options.embedded) {\n throw new Error('Initialize is not supported in table cells or boxes');\n }\n\n this.#composer.add(\n this.#language.initialize(),\n );\n\n return this;\n }\n\n /**\n * Change the code page\n *\n * @param {string} codepage The codepage that we set the printer to\n * @return {object} Return the object, for easy chaining commands\n *\n */\n codepage(codepage) {\n if (codepage === 'auto') {\n this.#codepage = codepage;\n return this;\n }\n\n if (!CodepageEncoder.supports(codepage)) {\n throw new Error('Unknown codepage');\n }\n\n if (typeof this.#codepageMapping[codepage] !== 'undefined') {\n this.#codepage = codepage;\n } else {\n throw new Error('Codepage not supported by printer');\n }\n\n return this;\n }\n\n /**\n * Print text\n *\n * @param {string} value Text that needs to be printed\n * @return {object} Return the object, for easy chaining commands\n *\n */\n text(value) {\n this.#composer.text(value, this.#codepage);\n\n return this;\n }\n\n /**\n * Print a newline\n *\n * @param {string} value The number of newlines that need to be printed, defaults to 1\n * @return {object} Return the object, for easy chaining commands\n *\n */\n newline(value) {\n value = parseInt(value, 10) || 1;\n\n for (let i = 0; i < value; i++) {\n this.#composer.flush({forceNewline: true});\n }\n\n return this;\n }\n\n /**\n * Print text, followed by a newline\n *\n * @param {string} value Text that needs to be printed\n * @return {object} Return the object, for easy chaining commands\n *\n */\n line(value) {\n this.text(value);\n this.newline();\n\n return this;\n }\n\n /**\n * Underline text\n *\n * @param {boolean|number} value true to turn on underline, false to turn off, or 2 for double underline\n * @return {object} Return the object, for easy chaining commands\n *\n */\n underline(value) {\n if (typeof value === 'undefined') {\n this.#composer.style.underline = ! this.#composer.style.underline;\n } else {\n this.#composer.style.underline = value;\n }\n\n return this;\n }\n\n /**\n * Italic text\n *\n * @param {boolean} value true to turn on italic, false to turn off\n * @return {object} Return the object, for easy chaining commands\n *\n */\n italic(value) {\n if (typeof value === 'undefined') {\n this.#composer.style.italic = ! this.#composer.style.italic;\n } else {\n this.#composer.style.italic = value;\n }\n\n return this;\n }\n\n /**\n * Bold text\n *\n * @param {boolean} value true to turn on bold, false to turn off\n * @return {object} Return the object, for easy chaining commands\n *\n */\n bold(value) {\n if (typeof value === 'undefined') {\n this.#composer.style.bold = ! this.#composer.style.bold;\n } else {\n this.#composer.style.bold = value;\n }\n\n return this;\n }\n\n /**\n * Invert text\n *\n * @param {boolean} value true to turn on white text on black, false to turn off\n * @return {object} Return the object, for easy chaining commands\n *\n */\n invert(value) {\n if (typeof value === 'undefined') {\n this.#composer.style.invert = ! this.#composer.style.invert;\n } else {\n this.#composer.style.invert = value;\n }\n\n return this;\n }\n\n /**\n * Change width of text\n *\n * @param {number} width The width of the text, 1 - 8\n * @return {object} Return the object, for easy chaining commands\n *\n */\n width(width) {\n if (typeof width === 'undefined') {\n width = 1;\n }\n\n if (typeof width !== 'number') {\n throw new Error('Width must be a number');\n }\n\n if (width < 1 || width > 8) {\n throw new Error('Width must be between 1 and 8');\n }\n\n this.#composer.style.width = width;\n\n return this;\n }\n\n /**\n * Change height of text\n *\n * @param {number} height The height of the text, 1 - 8\n * @return {object} Return the object, for easy chaining commands\n *\n */\n height(height) {\n if (typeof height === 'undefined') {\n height = 1;\n }\n\n if (typeof height !== 'number') {\n throw new Error('Height must be a number');\n }\n\n if (height < 1 || height > 8) {\n throw new Error('Height must be between 1 and 8');\n }\n\n this.#composer.style.height = height;\n\n return this;\n }\n\n /**\n * Change text size\n *\n * @param {Number|string} width The width of the text, 1 - 8\n * @param {Number} height The height of the text, 1 - 8\n * @return {object} Return the object, for easy chaining commands\n *\n */\n size(width, height) {\n /* Backwards compatiblity for changing the font */\n if (typeof width === 'string') {\n return this.font(width === 'small' ? 'B' : 'A');\n }\n\n if (typeof height === 'undefined') {\n height = width;\n }\n\n this.width(width);\n this.height(height);\n\n return this;\n }\n\n /**\n * Choose different font\n *\n * @param {string} value 'A', 'B' or others\n * @return {object} Return the object, for easy chaining commands\n *\n */\n font(value) {\n if (this.#options.embedded) {\n throw new Error('Changing fonts is not supported in table cells or boxes');\n }\n\n if (this.#composer.cursor > 0) {\n throw new Error('Changing fonts is not supported in the middle of a line');\n }\n\n /* If size is specified, find the matching font */\n\n const matches = value.match(/^[0-9]+x[0-9]+$/);\n if (matches) {\n value = Object.entries(this.#printerCapabilities.fonts).find((i) => i[1].size == matches[0])[0];\n }\n\n /* Make sure the font name is uppercase */\n\n value = value.toUpperCase();\n\n /* Check if the font is supported */\n\n if (typeof this.#printerCapabilities.fonts[value] === 'undefined') {\n return this.#error('This font is not supported by this printer', 'relaxed');\n }\n\n /* Change the font */\n\n this.#composer.add(\n this.#language.font(value),\n );\n\n this.#state.font = value;\n\n /* Change the width of the composer */\n\n if (value === 'A') {\n this.#composer.columns = this.#options.columns;\n } else {\n this.#composer.columns =\n (this.#options.columns / this.#printerCapabilities.fonts['A'].columns) *\n this.#printerCapabilities.fonts[value].columns;\n }\n\n return this;\n }\n\n /**\n * Change text alignment\n *\n * @param {string} value left, center or right\n * @return {object} Return the object, for easy chaining commands\n *\n */\n align(value) {\n const alignments = ['left', 'center', 'right'];\n\n if (!alignments.includes(value)) {\n throw new Error('Unknown alignment');\n }\n\n this.#composer.align = value;\n\n return this;\n }\n\n /**\n * Insert a table\n *\n * @param {array} columns The column definitions\n * @param {array} data Array containing rows. Each row is an array containing cells.\n * Each cell can be a string value, or a callback function.\n * The first parameter of the callback is the encoder object on\n * which the function can call its methods.\n * @return {object} Return the object, for easy chaining commands\n *\n */\n table(columns, data) {\n this.#composer.flush();\n\n /* Process all lines */\n\n for (let r = 0; r < data.length; r++) {\n const lines = [];\n let maxLines = 0;\n\n /* Render all columns */\n\n for (let c = 0; c < columns.length; c++) {\n const columnEncoder = new ReceiptPrinterEncoder(Object.assign({}, this.#options, {\n width: columns[c].width,\n embedded: true,\n }));\n\n columnEncoder.codepage(this.#codepage);\n columnEncoder.align(columns[c].align);\n\n if (typeof data[r][c] === 'string') {\n columnEncoder.text(data[r][c]);\n }\n\n if (typeof data[r][c] === 'function') {\n data[r][c](columnEncoder);\n }\n\n const cell = columnEncoder.commands();\n\n /* Determine the height in lines of the row */\n\n maxLines = Math.max(maxLines, cell.length);\n\n lines[c] = cell;\n }\n\n /* Pad the cells in this line to the same height */\n\n for (let c = 0; c < columns.length; c++) {\n if (lines[c].length >= maxLines) {\n continue;\n }\n\n for (let p = lines[c].length; p < maxLines; p++) {\n let verticalAlign = 'top';\n if (typeof columns[c].verticalAlign !== 'undefined') {\n verticalAlign = columns[c].verticalAlign;\n }\n\n const line = {commands: [{type: 'space', size: columns[c].width}], height: 1};\n\n if (verticalAlign == 'bottom') {\n lines[c].unshift(line);\n } else {\n lines[c].push(line);\n }\n }\n }\n\n /* Add the lines to the composer */\n\n for (let l = 0; l < maxLines; l++) {\n for (let c = 0; c < columns.length; c++) {\n if (typeof columns[c].marginLeft !== 'undefined') {\n this.#composer.space(columns[c].marginLeft);\n }\n\n this.#composer.add(lines[c][l].commands, columns[c].width);\n\n if (typeof columns[c].marginRight !== 'undefined') {\n this.#composer.space(columns[c].marginRight);\n }\n }\n\n this.#composer.flush();\n }\n }\n\n return this;\n }\n\n /**\n * Insert a horizontal rule\n *\n * @param {object} options And object with the following properties:\n * - style: The style of the line, either single or double\n * - width: The width of the line, by default the width of the paper\n * @return {object} Return the object, for easy chaining commands\n *\n */\n rule(options) {\n options = Object.assign({\n style: 'single',\n width: this.#options.columns || 10,\n }, options || {});\n\n this.#composer.flush();\n\n this.#composer.text((options.style === 'double' ? '═' : '─').repeat(options.width), 'cp437');\n this.#composer.flush({forceNewline: true});\n\n return this;\n }\n\n /**\n * Insert a box\n *\n * @param {object} options And object with the following properties:\n * - style: The style of the border, either single or double\n * - width: The width of the box, by default the width of the paper\n * - marginLeft: Space between the left border and the left edge\n * - marginRight: Space between the right border and the right edge\n * - paddingLeft: Space between the contents and the left border of the box\n * - paddingRight: Space between the contents and the right border of the box\n * @param {string|function} contents A string value, or a callback function.\n * The first parameter of the callback is the encoder object on\n * which the function can call its methods.\n * @return {object} Return the object, for easy chaining commands\n *\n */\n box(options, contents) {\n options = Object.assign({\n style: 'single',\n width: this.#options.columns,\n marginLeft: 0,\n marginRight: 0,\n paddingLeft: 0,\n paddingRight: 0,\n }, options || {});\n\n if (options.width + options.marginLeft + options.marginRight > this.#options.columns) {\n throw new Error('Box is too wide');\n }\n\n let elements;\n\n if (options.style == 'single') {\n elements = ['┌', '┐', '└', '┘', '─', '│'];\n } else if (options.style == 'double') {\n elements = ['╔', '╗', '╚', '╝', '═', '║'];\n }\n\n /* Render the contents of the box */\n\n const columnEncoder = new ReceiptPrinterEncoder(Object.assign({}, this.#options, {\n width: options.width - (options.style == 'none' ? 0 : 2) - options.paddingLeft - options.paddingRight,\n embedded: true,\n }));\n\n columnEncoder.codepage(this.#codepage);\n columnEncoder.align(options.align);\n\n if (typeof contents === 'function') {\n contents(columnEncoder);\n }\n\n if (typeof contents === 'string') {\n columnEncoder.text(contents);\n }\n\n const lines = columnEncoder.commands();\n\n /* Header */\n\n this.#composer.flush();\n\n if (options.style != 'none') {\n this.#composer.space(options.marginLeft);\n this.#composer.text(elements[0], 'cp437');\n this.#composer.text(elements[4].repeat(options.width - 2), 'cp437');\n this.#composer.text(elements[1], 'cp437');\n this.#composer.space(options.marginRight);\n this.#composer.flush();\n }\n\n /* Content */\n\n for (let i = 0; i < lines.length; i++) {\n this.#composer.space(options.marginLeft);\n\n if (options.style != 'none') {\n this.#composer.style.height = lines[i].height;\n this.#composer.text(elements[5], 'cp437');\n this.#composer.style.height = 1;\n }\n\n this.#composer.space(options.paddingLeft);\n this.#composer.add(lines[i].commands,\n options.width - (options.style == 'none' ? 0 : 2) - options.paddingLeft - options.paddingRight);\n this.#composer.space(options.paddingRight);\n\n if (options.style != 'none') {\n this.#composer.style.height = lines[i].height;\n this.#composer.text(elements[5], 'cp437');\n this.#composer.style.height = 1;\n }\n\n this.#composer.space(options.marginRight);\n this.#composer.flush();\n }\n\n /* Footer */\n\n if (options.style != 'none') {\n this.#composer.space(options.marginLeft);\n this.#composer.text(elements[2], 'cp437');\n this.#composer.text(elements[4].repeat(options.width - 2), 'cp437');\n this.#composer.text(elements[3], 'cp437');\n this.#composer.space(options.marginRight);\n this.#composer.flush();\n }\n\n return this;\n }\n\n /**\n * Barcode\n *\n * @param {string} value the value of the barcode\n * @param {string|number} symbology the type of the barcode\n * @param {number|object} height Either the configuration object, or backwards compatible height of the barcode\n * @return {object} Return the object, for easy chaining commands\n *\n */\n barcode(value, symbology, height) {\n let options = {\n height: 60,\n width: 2,\n text: false,\n };\n\n if (typeof height === 'object') {\n options = Object.assign(options, height);\n }\n\n if (typeof height === 'number') {\n options.height = height;\n }\n\n if (this.#options.embedded) {\n throw new Error('Barcodes are not supported in table cells or boxes');\n }\n\n if (this.#printerCapabilities.barcodes.supported === false) {\n return this.#error('Barcodes are not supported by this printer', 'relaxed');\n }\n\n if (typeof symbology === 'string' && !this.#printerCapabilities.barcodes.symbologies.includes(symbology)) {\n return this.#error(`Symbology '${symbology}' not supported by this printer`, 'relaxed');\n }\n\n /* Force printing the print buffer and moving to a new line */\n\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\n\n /* Set alignment */\n\n if (this.#composer.align !== 'left') {\n this.#composer.add(this.#language.align(this.#composer.align));\n }\n\n /* Barcode */\n\n this.#composer.add(\n this.#language.barcode(value, symbology, options),\n );\n\n /* Reset alignment */\n\n if (this.#composer.align !== 'left') {\n this.#composer.add(this.#language.align('left'));\n }\n\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\n\n return this;\n }\n\n /**\n * QR code\n *\n * @param {string} value The value of the qr code\n * @param {number|object} model Either the configuration object, or\n * backwards compatible model of the qrcode, either 1 or 2\n * @param {number} size Backwards compatible size of the qrcode, a value between 1 and 8\n * @param {string} errorlevel Backwards compatible the amount of error correction used,\n * either 'l', 'm', 'q', 'h'\n * @return {object} Return the object, for easy chaining commands\n */\n qrcode(value, model, size, errorlevel) {\n let options = {\n model: 2,\n size: 6,\n errorlevel: 'm',\n };\n\n if (typeof model === 'object') {\n options = Object.assign(options, model);\n }\n\n if (typeof model === 'number') {\n options.model = model;\n }\n\n if (typeof size === 'number') {\n options.size = size;\n }\n\n if (typeof errorlevel === 'string') {\n options.errorlevel = errorlevel;\n }\n\n if (this.#options.embedded) {\n throw new Error('QR codes are not supported in table cells or boxes');\n }\n\n if (this.#printerCapabilities.qrcode.supported === false) {\n return this.#error('QR codes are not supported by this printer', 'relaxed');\n }\n\n if (options.model && !this.#printerCapabilities.qrcode.models.includes(String(options.model))) {\n return this.#error('QR code model is not supported by this printer', 'relaxed');\n }\n\n /* Force printing the print buffer and moving to a new line */\n\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\n\n /* Set alignment */\n\n if (this.#composer.align !== 'left') {\n this.#composer.add(this.#language.align(this.#composer.align));\n }\n\n /* QR code */\n\n this.#composer.add(\n this.#language.qrcode(value, options),\n );\n\n /* Reset alignment */\n\n if (this.#composer.align !== 'left') {\n this.#composer.add(this.#language.align('left'));\n }\n\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\n\n return this;\n }\n\n\n /**\n * PDF417 code\n *\n * @param {string} value The value of the qr code\n * @param {object} options Configuration object\n * @return {object} Return the object, for easy chaining commands\n *\n */\n pdf417(value, options) {\n options = Object.assign({\n width: 3,\n height: 3,\n columns: 0,\n rows: 0,\n errorlevel: 1,\n truncated: false,\n }, options || {});\n\n if (this.#options.embedded) {\n throw new Error('PDF417 codes are not supported in table cells or boxes');\n }\n\n if (this.#printerCapabilities.pdf417.supported === false) {\n /* If possible, fallback to a barcode with symbology */\n\n if (typeof this.#printerCapabilities.pdf417.fallback === 'object') {\n return this.barcode(value, this.#printerCapabilities.pdf417.fallback.symbology);\n }\n\n return this.#error('PDF417 codes are not supported by this printer', 'relaxed');\n }\n\n /* Force printing the print buffer and moving to a new line */\n\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\n\n /* Set alignment */\n\n if (this.#composer.align !== 'left') {\n this.#composer.add(this.#language.align(this.#composer.align));\n }\n\n /* PDF417 code */\n\n this.#composer.add(\n this.#language.pdf417(value, options),\n );\n\n /* Reset alignment */\n\n if (this.#composer.align !== 'left') {\n this.#composer.add(this.#language.align('left'));\n }\n\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\n\n return this;\n }\n\n\n /**\n * Image\n *\n * @param {object} input an element, like a canvas or image that needs to be printed\n * @param {number} width width of the image on the printer\n * @param {number} height height of the image on the printer\n * @param {string} algorithm the dithering algorithm for making the image black and white\n * @param {number} threshold threshold for the dithering algorithm\n * @return {object} Return the object, for easy chaining commands\n *\n */\n image(input, width, height, algorithm, threshold) {\n if (this.#options.embedded) {\n throw new Error('Images are not supported in table cells or boxes');\n }\n\n if (width % 8 !== 0) {\n throw new Error('Width must be a multiple of 8');\n }\n\n if (height % 8 !== 0) {\n throw new Error('Height must be a multiple of 8');\n }\n\n if (typeof algorithm === 'undefined') {\n algorithm = 'threshold';\n }\n\n if (typeof threshold === 'undefined') {\n threshold = 128;\n }\n\n /* Determine the type of the input */\n\n const name = input.constructor.name;\n let type;\n\n name.endsWith('Element') ? type = 'element' : null;\n name == 'ImageData' ? type = 'imagedata' : null;\n name == 'Canvas' && typeof input.getContext !== 'undefined' ? type = 'node-canvas' : null;\n name == 'Image' ? type = 'node-canvas-image' : null;\n name == 'Image' && typeof input.frames !== 'undefined' ? type = 'node-read-image' : null;\n name == 'Object' && input.data && input.info ? type = 'node-sharp' : null;\n name == 'View3duint8' && input.data && input.shape ? type = 'ndarray' : null;\n name == 'Object' && input.data && input.width && input.height ? type = 'object' : null;\n\n if (!type) {\n throw new Error('Could not determine the type of image input');\n }\n\n /* Turn provided data into an ImageData object */\n\n let image;\n\n if (type == 'element') {\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const context = canvas.getContext('2d');\n context.drawImage(input, 0, 0, width, height);\n image = context.getImageData(0, 0, width, height);\n }\n\n if (type == 'node-canvas') {\n const context = input.getContext('2d');\n image = context.getImageData(0, 0, input.width, input.height);\n }\n\n if (type == 'node-canvas-image') {\n if (typeof this.#options.createCanvas !== 'function') {\n throw new Error('Canvas is not supported in this environment, specify a createCanvas function in the options');\n }\n\n const canvas = this.#options.createCanvas(width, height);\n const context = canvas.getContext('2d');\n context.drawImage(input, 0, 0, width, height);\n image = context.getImageData(0, 0, width, height);\n }\n\n if (type == 'node-read-image') {\n image = new ImageData(input.width, input.height);\n image.data.set(input.frames[0].data);\n }\n\n if (type == 'node-sharp') {\n image = new ImageData(input.info.width, input.info.height);\n image.data.set(input.data);\n }\n\n if (type == 'ndarray') {\n image = new ImageData(input.shape[0], input.shape[1]);\n image.data.set(input.data);\n }\n\n if (type == 'object') {\n image = new ImageData(input.width, input.height);\n image.data.set(input.data);\n }\n\n if (type == 'imagedata') {\n image = input;\n }\n\n if (!image) {\n throw new Error('Image could not be loaded');\n }\n\n /* Resize image */\n\n if (width !== image.width || height !== image.height) {\n image = resizeImageData(image, width, height, 'bilinear-interpolation');\n }\n\n /* Check if the image has the correct dimensions */\n\n if (width !== image.width || height !== image.height) {\n throw new Error('Image could not be resized');\n }\n\n /* Flatten the image and dither it */\n\n image = Flatten.flatten(image, [0xff, 0xff, 0xff]);\n\n switch (algorithm) {\n case 'threshold': image = Dither.threshold(image, threshold); break;\n case 'bayer': image = Dither.bayer(image, threshold); break;\n case 'floydsteinberg': image = Dither.floydsteinberg(image); break;\n case 'atkinson': image = Dither.atkinson(image); break;\n }\n\n\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\n\n /* Set alignment */\n\n if (this.#composer.align !== 'left') {\n this.#composer.add(this.#language.align(this.#composer.align));\n }\n\n /* Encode the image data */\n\n this.#composer.add(\n this.#language.image(image, width, height, this.#options.imageMode),\n );\n\n /* Reset alignment */\n\n if (this.#composer.align !== 'left') {\n this.#composer.add(this.#language.align('left'));\n }\n\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\n\n return this;\n }\n\n /**\n * Cut paper\n *\n * @param {string} value full or partial. When not specified a full cut will be assumed\n * @return {object} Return the object, for easy chaining commands\n *\n */\n cut(value) {\n if (this.#options.embedded) {\n throw new Error('Cut is not supported in table cells or boxes');\n }\n\n for (let i = 0; i < this.#options.feedBeforeCut; i++) {\n this.#composer.flush({forceNewline: true});\n }\n\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\n\n this.#composer.add(\n this.#language.cut(value),\n );\n\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\n\n return this;\n }\n\n /**\n * Pulse\n *\n * @param {number} device 0 or 1 for on which pin the device is connected, default of 0\n * @param {number} on Time the pulse is on in milliseconds, default of 100\n * @param {number} off Time the pulse is off in milliseconds, default of 500\n * @return {object} Return the object, for easy chaining commands\n *\n */\n pulse(device, on, off) {\n if (this.#options.embedded) {\n throw new Error('Pulse is not supported in table cells or boxes');\n }\n\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\n\n this.#composer.add(\n this.#language.pulse(device, on, off),\n );\n\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\n\n return this;\n }\n\n /**\n * Add raw printer commands\n *\n * @param {array} data raw bytes to be included\n * @return {object} Return the object, for easy chaining commands\n *\n */\n raw(data) {\n this.#composer.raw(data);\n\n return this;\n }\n\n /**\n * Internal function for encoding style changes\n * @param {string} property The property that needs to be changed\n * @param {boolean} value Is the property enabled or disabled\n * @return {array} Return the encoded bytes\n */\n #encodeStyle(property, value) {\n if (property === 'bold') {\n return this.#language.bold(value);\n }\n\n if (property === 'underline') {\n return this.#language.underline(value);\n }\n\n if (property === 'italic') {\n return this.#language.italic(value);\n }\n\n if (property === 'invert') {\n return this.#language.invert(value);\n }\n\n if (property === 'size') {\n return this.#language.size(value.width, value.height);\n }\n }\n\n /**\n * Internal function for encoding text in the correct codepage\n * @param {string} value The text that needs to be encoded\n * @param {string} codepage The codepage that needs to be used\n * @return {array} Return the encoded bytes\n */\n #encodeText(value, codepage) {\n if (codepage === null) {\n const fragment = CodepageEncoder.encode(value, 'ascii');\n\n return [\n {type: 'text', payload: [...fragment]},\n ];\n }\n\n if (codepage !== 'auto') {\n const fragment = CodepageEncoder.encode(value, codepage);\n\n if (this.#state.codepage != this.#codepageMapping[codepage]) {\n this.#state.codepage = this.#codepageMapping[codepage];\n\n return [\n {type: 'codepage', payload: this.#language.codepage(this.#codepageMapping[codepage])},\n {type: 'text', payload: [...fragment]},\n ];\n }\n\n return [\n {type: 'text', payload: [...fragment]},\n ];\n }\n\n const fragments = CodepageEncoder.autoEncode(value, this.#codepageCandidates);\n const buffer = [];\n\n for (const fragment of fragments) {\n this.#state.codepage = this.#codepageMapping[fragment.codepage];\n buffer.push(\n {type: 'codepage', payload: this.#language.codepage(this.#codepageMapping[fragment.codepage])},\n {type: 'text', payload: [...fragment.bytes]},\n );\n }\n\n return buffer;\n }\n\n /**\n * Get all the commands\n *\n * @return {array} All the commands currently in the queue\n */\n commands() {\n let requiresFlush = true;\n\n /* Determine if the last command is a pulse or cut, the we do not need a flush */\n\n let lastLine = this.#queue[this.#queue.length - 1];\n \n if (lastLine) {\n let lastCommand = lastLine[lastLine.length - 1];\n\n if (lastCommand && [ 'pulse', 'cut' ].includes(lastCommand.type)) {\n requiresFlush = false;\n }\n }\n\n /* Flush the printer line buffer if needed */\n\n if (requiresFlush && this.#options.autoFlush && !this.#options.embedded) {\n this.#composer.add(\n this.#language.flush(),\n );\n }\n\n /* Get the remaining from the composer */\n\n const result = [];\n\n const remaining = this.#composer.fetch({forceFlush: true, ignoreAlignment: true});\n\n if (remaining.length) {\n this.#queue.push(remaining);\n }\n\n /* Process all lines in the queue */\n\n while (this.#queue.length) {\n const line = this.#queue.shift();\n const height = line\n .filter((i) => i.type === 'style' && i.property === 'size')\n .map((i) => i.value.height)\n .reduce((a, b) => Math.max(a, b), 1);\n\n if (this.#options.debug) {\n console.log('|' + line.filter((i) => i.type === 'text').map((i) => i.value).join('') + '|', height);\n }\n\n result.push({\n commands: line,\n height: height,\n });\n }\n\n if (this.#options.debug) {\n console.log('commands', result);\n }\n\n this.#reset();\n\n return result;\n }\n\n /**\n * Encode all previous commands\n *\n * @param {string} format The format of the output, either 'commands',\n * 'lines' or 'array', defaults to 'array'\n * @return {Uint8Array} Return the encoded bytes in the format specified\n */\n encode(format) {\n /* Get the commands */\n\n const commands = this.commands();\n\n if (format === 'commands') {\n return commands;\n }\n\n /* Build the lines */\n\n const lines = [];\n\n for (const line of commands) {\n const buffer = [];\n\n for (const item of line.commands) {\n if (item.type === 'text') {\n buffer.push(...this.#encodeText(item.value, item.codepage));\n } else if (item.type === 'style') {\n buffer.push(Object.assign(item, {payload: this.#encodeStyle(item.property, item.value)}));\n } else if (item.value || item.payload) {\n buffer.push(item);\n }\n }\n\n lines.push(buffer);\n }\n\n if (format === 'lines') {\n return lines;\n }\n\n /* Build the array */\n\n let result = [];\n let last = null;\n\n for (const line of lines) {\n for (const item of line) {\n result.push(...item.payload);\n last = item;\n }\n\n if (this.#options.newline === '\\n\\r') {\n result.push(0x0a, 0x0d);\n }\n\n if (this.#options.newline === '\\n') {\n result.push(0x0a);\n }\n }\n\n /* If the last command is a pulse, do not feed */\n\n if (last && last.type === 'pulse') {\n result = result.slice(0, 0 - this.#options.newline.length);\n }\n\n return Uint8Array.from(result);\n }\n\n /**\n * Throw an error\n *\n * @param {string} message The error message\n * @param {string} level The error level, if level is strict,\n * an error will be thrown, if level is relaxed,\n * a warning will be logged\n * @return {object} Return the object, for easy chaining commands\n */\n #error(message, level) {\n if (level === 'strict' || this.#options.errors === 'strict') {\n throw new Error(message);\n }\n\n console.warn(message);\n\n return this;\n }\n\n /**\n * Get all supported printer models\n *\n * @return {object} An object with all supported printer models\n */\n static get printerModels() {\n return Object.entries(printerDefinitions).map((i) => ({id: i[0], name: i[1].vendor + ' ' + i[1].model}));\n }\n\n /**\n * Get the current column width\n *\n * @return {number} The column width in characters\n */\n get columns() {\n return this.#composer.columns;\n }\n\n /**\n * Get the current language\n * @return {string} The language that is currently used\n */\n get language() {\n return this.#options.language;\n }\n\n /**\n * Get the capabilities of the printer\n * @return {object} The capabilities of the printer\n */\n get printerCapabilities() {\n return this.#printerCapabilities;\n }\n}\n\nexport default ReceiptPrinterEncoder;\n"],"names":["grayscale","image","i","data","length","luminance","fill","threshold","value","bayer","thresholdMap","x","width","y","Math","floor","floydsteinberg","Uint8ClampedArray","height","l","error","atkinson","flatten","background","alpha","invAlpha","definitions","ascii","name","languages","Array","map","v","cp437","extends","cp720","cp737","cp771","cp772","cp774","cp775","cp850","cp851","cp852","cp853","cp855","cp857","cp858","cp860","cp861","cp862","cp863","cp864","offset","cp865","cp866","cp869","cp874","cp1001","cp1098","cp1125","cp3001","cp3002","cp3011","cp3012","cp3021","cp3041","cp3840","cp3841","cp3843","cp3844","cp3845","cp3846","cp3847","cp3848","windows1250","windows1251","windows1252","windows1253","windows1254","windows1255","windows1256","windows1257","windows1258","rk1048","thai11","thai13","thai14","thai16","thai18","thai42","tcvn3","tcvn3capitals","viscii","khmer","latvian","aliases","cp2001","cp1119","cp1118","cp1162","iso88591","iso88592","iso88597","iso885915","shiftjis","katakana","cp928","strings","en","jp","pt","fr","sv","dk","el","tr","ru","hu","pl","cz","ar","et","lt","bg","is","he","fa","uk","vi","kk","lv","mt","th","CodepageEncoder","static","Object","keys","codepage","codepoints","this","getCodepoints","structuredClone","language","string","input","output","Uint8Array","definition","getEncoding","c","codepoint","codePointAt","position","findIndex","candidates","fragments","current","fragment","available","char","bytes","push","evaluateExtends","j","browser","ImageData","require$$0","nearestNeighbor","src","dst","pos","srcX","srcPos","bilinearInterpolation","interpolate","k","kMin","kMax","vMin","vMax","round","interpolateHorizontal","xMin","xMax","interpolateVertical","yMin","yMax","srcY","min","ceil","algorithm","resize","Error","result","LanguageEscPos","initialize","type","payload","font","charCodeAt","align","barcode","symbology","options","symbologies","upca","upce","ean13","ean8","code39","coda39","itf","codabar","code93","code128","property","text","startsWith","replace","encode","identifier","qrcode","model","models","size","errorlevels","m","q","h","errorlevel","command","pdf417","columns","rows","truncated","mode","getPixel","getRowData","b","s","getColumnData","forEach","cut","pulse","device","on","off","bold","underline","italic","invert","flush","LanguageStarPrnt","slice","TextStyle","default","callback","constructor","store","properties","Map","set","restore","TextWrap","line","indent","lines","String","split","chunks","match","chunk","remaining","letters","piece","pieces","splice","join","trimEnd","LineComposer","embedded","cursor","stored","buffer","style","add","wrap","forceNewline","space","raw","item","concat","end","fetch","forceFlush","next","last","filter","ignoreAlignment","endsWith","merge","left","assign","items","repeat","codepageMappings","bixolon","citizen","epson","fujitsu","hp","metapace","mpt","star","xprinter","youku","printerDefinitions","vendor","media","dpi","capabilities","codepages","fonts","A","B","barcodes","supported","cutter","feed","C","interfaces","usb","productName","D","E","images","interface","newline","fallback","ReceiptPrinterEncoder","queue","composer","printerCapabilities","codepageMapping","codepageCandidates","state","defaults","imageMode","feedBeforeCut","errors","printerModel","debug","createCanvas","autoFlush","includes","fromEntries","reset","supports","parseInt","matches","entries","find","toUpperCase","table","r","maxLines","columnEncoder","cell","commands","max","p","verticalAlign","unshift","marginLeft","marginRight","rule","box","contents","paddingLeft","paddingRight","elements","getContext","frames","info","shape","canvas","document","createElement","context","drawImage","getImageData","resizeImageData","Flatten","Dither","encodeStyle","encodeText","autoEncode","requiresFlush","lastLine","lastCommand","shift","reduce","a","console","log","format","from","message","level","warn","printerModels","id"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]} \ No newline at end of file +{"version":3,"file":"receipt-printer-encoder.esm.js","sources":["../node_modules/canvas-dither/src/canvas-dither.js","../node_modules/canvas-flatten/src/canvas-flatten.js","../node_modules/@point-of-sale/codepage-encoder/dist/codepage-encoder.mjs","../node_modules/@canvas/image-data/browser.js","../node_modules/resize-image-data/index.js","../src/languages/esc-pos.js","../src/languages/star-prnt.js","../src/text-style.js","../src/text-wrap.js","../src/line-composer.js","../generated/mapping.js","../generated/printers.js","../src/receipt-printer-encoder.js"],"sourcesContent":["/**\n * Use the ImageData from a Canvas and turn the image in a 1-bit black and white image using dithering\n */\nclass CanvasDither {\n /**\n * Change the image to grayscale\n *\n * @param {object} image The imageData of a Canvas 2d context\n * @return {object} The resulting imageData\n *\n */\n grayscale(image) {\n for (let i = 0; i < image.data.length; i += 4) {\n const luminance = (image.data[i] * 0.299) + (image.data[i + 1] * 0.587) + (image.data[i + 2] * 0.114);\n image.data.fill(luminance, i, i + 3);\n }\n\n return image;\n }\n\n /**\n * Change the image to blank and white using a simple threshold\n *\n * @param {object} image The imageData of a Canvas 2d context\n * @param {number} threshold Threshold value (0-255)\n * @return {object} The resulting imageData\n *\n */\n threshold(image, threshold) {\n for (let i = 0; i < image.data.length; i += 4) {\n const luminance = (image.data[i] * 0.299) + (image.data[i + 1] * 0.587) + (image.data[i + 2] * 0.114);\n\n const value = luminance < threshold ? 0 : 255;\n image.data.fill(value, i, i + 3);\n }\n\n return image;\n }\n\n /**\n * Change the image to blank and white using the Bayer algorithm\n *\n * @param {object} image The imageData of a Canvas 2d context\n * @param {number} threshold Threshold value (0-255)\n * @return {object} The resulting imageData\n *\n */\n bayer(image, threshold) {\n const thresholdMap = [\n [15, 135, 45, 165],\n [195, 75, 225, 105],\n [60, 180, 30, 150],\n [240, 120, 210, 90],\n ];\n\n for (let i = 0; i < image.data.length; i += 4) {\n const luminance = (image.data[i] * 0.299) + (image.data[i + 1] * 0.587) + (image.data[i + 2] * 0.114);\n\n const x = i / 4 % image.width;\n const y = Math.floor(i / 4 / image.width);\n const map = Math.floor((luminance + thresholdMap[x % 4][y % 4]) / 2);\n const value = map < threshold ? 0 : 255;\n image.data.fill(value, i, i + 3);\n }\n\n return image;\n }\n\n /**\n * Change the image to blank and white using the Floyd-Steinberg algorithm\n *\n * @param {object} image The imageData of a Canvas 2d context\n * @return {object} The resulting imageData\n *\n */\n floydsteinberg(image) {\n const width = image.width;\n const luminance = new Uint8ClampedArray(image.width * image.height);\n\n for (let l = 0, i = 0; i < image.data.length; l++, i += 4) {\n luminance[l] = (image.data[i] * 0.299) + (image.data[i + 1] * 0.587) + (image.data[i + 2] * 0.114);\n }\n\n for (let l = 0, i = 0; i < image.data.length; l++, i += 4) {\n const value = luminance[l] < 129 ? 0 : 255;\n const error = Math.floor((luminance[l] - value) / 16);\n image.data.fill(value, i, i + 3);\n\n luminance[l + 1] += error * 7;\n luminance[l + width - 1] += error * 3;\n luminance[l + width] += error * 5;\n luminance[l + width + 1] += error * 1;\n }\n\n return image;\n }\n\n /**\n * Change the image to blank and white using the Atkinson algorithm\n *\n * @param {object} image The imageData of a Canvas 2d context\n * @return {object} The resulting imageData\n *\n */\n atkinson(image) {\n const width = image.width;\n const luminance = new Uint8ClampedArray(image.width * image.height);\n\n for (let l = 0, i = 0; i < image.data.length; l++, i += 4) {\n luminance[l] = (image.data[i] * 0.299) + (image.data[i + 1] * 0.587) + (image.data[i + 2] * 0.114);\n }\n\n for (let l = 0, i = 0; i < image.data.length; l++, i += 4) {\n const value = luminance[l] < 129 ? 0 : 255;\n const error = Math.floor((luminance[l] - value) / 8);\n image.data.fill(value, i, i + 3);\n\n luminance[l + 1] += error;\n luminance[l + 2] += error;\n luminance[l + width - 1] += error;\n luminance[l + width] += error;\n luminance[l + width + 1] += error;\n luminance[l + 2 * width] += error;\n }\n\n return image;\n }\n}\n\nmodule.exports = new CanvasDither();\n","/**\n * Use the ImageData from a Canvas and flatten the image on a solid background\n */\nclass CanvasFlatten {\n /**\n * Change the image to grayscale\n *\n * @param {object} image The imageData of a Canvas 2d context\n * @param {array} background Three values consisting of the r, g, b of the background\n * @return {object} The resulting imageData\n *\n */\n flatten(image, background) {\n for (let i = 0; i < image.data.length; i += 4) {\n const alpha = image.data[i + 3];\n const invAlpha = 255 - alpha;\n\n image.data[i] = (alpha * image.data[i] + invAlpha * background[0]) / 255;\n image.data[i + 1] = (alpha * image.data[i + 1] + invAlpha * background[1]) / 255;\n image.data[i + 2] = (alpha * image.data[i + 2] + invAlpha * background[2]) / 255;\n image.data[i + 3] = 0xff;\n }\n\n return image;\n }\n}\n\nmodule.exports = new CanvasFlatten();\n","const definitions = {\n\n\t'ascii': {\n\t\tname: 'ASCII',\n\t\tlanguages: ['en'],\n\t\tvalue: new Array(256).fill(1,0,128).map((v,i) => i),\n\t},\n\n\t'cp437': {\n\t\tname: 'USA, Standard Europe',\n\t\tlanguages: ['en'],\n\t\textends: 'ascii',\n\t\tvalue: [[,9786,9787,9829,9830,9827,9824,8226,9688,9675,9689,9794,9792,9834,9835,9788,],[9658,9668,8597,8252,182,167,9644,8616,8593,8595,8594,8592,8735,8596,9650,9660,],,,,,,[,,,,,,,,,,,,,,,8962,],[199,252,233,226,228,224,229,231,234,235,232,239,238,236,196,197,],[201,230,198,244,246,242,251,249,255,214,220,162,163,165,8359,402,],[225,237,243,250,241,209,170,186,191,8976,172,189,188,161,171,187,],[9617,9618,9619,9474,9508,9569,9570,9558,9557,9571,9553,9559,9565,9564,9563,9488,],[9492,9524,9516,9500,9472,9532,9566,9567,9562,9556,9577,9574,9568,9552,9580,9575,],[9576,9572,9573,9561,9560,9554,9555,9579,9578,9496,9484,9608,9604,9612,9616,9600,],[945,223,915,960,931,963,181,964,934,920,937,948,8734,966,949,8745,],[8801,177,8805,8804,8992,8993,247,8776,176,8729,183,8730,8319,178,9632,160,],]\n\t},\n\n\t'cp720': {\n\t\tname: 'Arabic',\n\t\tlanguages: ['ar'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[65533,65533,,,65533,,65533,,,,,,,65533,65533,65533,],[65533,1617,1618,,164,1600,,,1569,1570,1571,1572,,1573,1574,1575,],[1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,,,],,,,[1590,1591,1592,1593,1594,1601,,1602,1603,1604,1605,1606,1607,1608,1609,1610,],[,1611,1612,1613,1614,1615,1616,,,,,,,,,,],]\n\t},\n\n\t'cp737': {\n\t\tname: 'Greek',\n\t\tlanguages: ['el'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,],[929,931,932,933,934,935,936,937,945,946,947,948,949,950,951,952,],[953,954,955,956,957,958,959,960,961,963,962,964,965,966,967,968,],,,,[969,940,941,942,970,943,972,973,971,974,902,904,905,906,908,910,],[911,,,,938,939,,,,,,,,,,,],]\n\t},\n\n\t'cp771': {\n\t\tname: 'Lithuanian KBL',\n\t\tlanguages: ['lt'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,,,[,,,,,,,,,,,,260,261,268,269,],,[280,281,278,279,302,303,352,353,370,371,362,363,381,382,,,],]\n\t},\n\n\t'cp772': {\n\t\tname: 'Lithuanian LST 1284',\n\t\tlanguages: ['lt'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,[,,,,,260,268,280,278,,,,,302,352,,],[,,,,,,370,362,,,,,,,,381,],[261,269,281,279,303,353,371,363,382,,,,,,,,],,[,,8805,8804,8222,8220,247,8776,,,,,8319,178,,,],]\n\t},\n\n\t'cp774': {\n\t\tname: 'Lithuanian LST 1283',\n\t\tlanguages: ['lt'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,,,,[,,,,,260,268,280,278,,,,,302,352,,],[,,,,,,370,362,,,,,,,,381,],[261,269,281,279,303,353,371,363,382,,,,,,,,],[,946,,,,,,,,,,,,,,8898,],[,,,,8222,8220,,,,,729,,,,,,],]\n\t},\n\n\t'cp775': {\n\t\tname: 'Baltic Rim',\n\t\tlanguages: ['et','lt'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[262,,,257,,291,,263,322,275,342,343,299,377,,,],[,,,333,,290,162,346,347,,,248,,216,215,164,],[256,298,,379,380,378,8221,166,169,174,,,,321,,,],[,,,,,260,268,280,278,,,,,302,352,,],[,,,,,,370,362,,,,,,,,381,],[261,269,281,279,303,353,371,363,382,,,,,,,,],[211,,332,323,245,213,,324,310,311,315,316,326,274,325,8217,],[173,,8220,190,182,167,,8222,,,,185,179,,,,],]\n\t},\n\n\t'cp850': {\n\t\tname: 'Multilingual',\n\t\tlanguages: ['en'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,,[,,,,,,,,,,,248,,216,215,,],[,,,,,,,,,174,,,,,,,],[,,,,,193,194,192,169,,,,,162,165,,],[,,,,,,227,195,,,,,,,,164,],[240,208,202,203,200,305,205,206,207,,,,,166,204,,],[211,,212,210,245,213,,254,222,218,219,217,253,221,175,180,],[173,,8215,190,182,167,,184,,168,,185,179,,,,],]\n\t},\n\n\t'cp851': {\n\t\tname: 'Greek',\n\t\tlanguages: ['el'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,902,,,,,,,904,,905,],[906,65533,908,,,910,,,911,,,940,,941,942,943,],[970,912,972,973,913,914,915,916,917,918,919,,920,921,,,],[,,,,,922,923,924,925,,,,,926,927,,],[,,,,,,928,929,,,,,,,,931,],[932,933,934,935,936,937,945,946,947,,,,,948,949,,],[950,951,952,953,954,955,956,957,958,959,960,961,963,962,964,180,],[173,,965,966,967,167,968,184,,168,969,971,944,974,,,],]\n\t},\n\n\t'cp852': {\n\t\tname: 'Latin 2',\n\t\tlanguages: ['hu','pl','cz'],\n\t\textends: 'cp850',\n\t\tvalue: [,,,,,,,,[,,,,,367,263,,322,,336,337,,377,,262,],[,313,314,,,317,318,346,347,,,356,357,321,,269,],[,,,,260,261,381,382,280,281,,378,268,351,,,],[,,,,,,,282,350,,,,,379,380,,],[,,,,,,258,259,,,,,,,,,],[273,272,270,,271,327,,,283,,,,,354,366,,],[,,,323,324,328,352,353,340,,341,368,,,355,,],[,733,731,711,728,,,,,,729,369,344,345,,,],]\n\t},\n\n\t'cp853': {\n\t\tname: 'Turkish',\n\t\tlanguages: ['tr'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,265,,,,,,,,,264,],[,267,266,,,,,,304,,,285,,284,215,309,],[,,,,,,286,287,292,293,65533,,308,351,,,],[,,,,,193,194,192,350,,,,,379,380,,],[,,,,,,348,349,,,,,,,,164,],[65533,65533,202,203,200,305,205,206,207,,,,,65533,204,,],[211,,212,210,288,289,,294,295,218,219,217,364,365,65533,180,],[173,65533,8467,329,728,167,,184,,168,729,65533,179,,,,],]\n\t},\n\n\t'cp855': {\n\t\tname: 'Cyrillic',\n\t\tlanguages: ['bg'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[1106,1026,1107,1027,1105,1025,1108,1028,1109,1029,1110,1030,1111,1031,1112,1032,],[1113,1033,1114,1034,1115,1035,1116,1036,1118,1038,1119,1039,1102,1070,1098,1066,],[1072,1040,1073,1041,1094,1062,1076,1044,1077,1045,1092,1060,1075,1043,,,],[,,,,,1093,1061,1080,1048,,,,,1081,1049,,],[,,,,,,1082,1050,,,,,,,,164,],[1083,1051,1084,1052,1085,1053,1086,1054,1087,,,,,1055,1103,,],[1071,1088,1056,1089,1057,1090,1058,1091,1059,1078,1046,1074,1042,1100,1068,8470,],[173,1099,1067,1079,1047,1096,1064,1101,1069,1097,1065,1095,1063,167,,,],]\n\t},\n\n\t'cp857': {\n\t\tname: 'Turkish',\n\t\tlanguages: ['tr'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,,,305,,,],[,,,,,,,,304,,,248,,216,350,351,],[,,,,,,286,287,,174,,,,,,,],[,,,,,193,194,192,169,,,,,162,165,,],[,,,,,,227,195,,,,,,,,164,],[186,170,202,203,200,8364,205,206,207,,,,,166,204,,],[211,,212,210,245,213,,65533,215,218,219,217,236,255,175,180,],[173,,65533,190,182,167,,184,,168,,185,179,,,,],]\n\t},\n\n\t'cp858': {\n\t\tname: 'Euro',\n\t\tlanguages: ['en'],\n\t\textends: 'cp850',\n\t\tvalue: [,,,,,,,,,,,,,[,,,,,8364,,,,,,,,,,,],,,]\n\t},\n\n\t'cp860': {\n\t\tname: 'Portuguese',\n\t\tlanguages: ['pt'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,227,,193,,,202,,205,212,,195,194,],[,192,200,,245,,218,,204,213,,,,217,,211,],[,,,,,,,,,210,,,,,,,],,,,,,]\n\t},\n\n\t'cp861': {\n\t\tname: 'Icelandic',\n\t\tlanguages: ['is'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,208,240,222,,,],[,,,,,254,,221,253,,,248,,216,,,],[,,,,193,205,211,218,,,,,,,,,],,,,,,]\n\t},\n\n\t'cp862': {\n\t\tname: 'Hebrew',\n\t\tlanguages: ['he'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,],[1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,,,,,,],,,,,,,]\n\t},\n\n\t'cp863': {\n\t\tname: 'Canadian French',\n\t\tlanguages: ['fr'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,194,,182,,,,,,,8215,192,167,],[,200,202,,203,207,,,164,212,,,,217,219,,],[166,180,,,168,184,179,175,206,,,,,190,,,],,,,,,]\n\t},\n\n\t'cp864': {\n\t\tname: 'Arabic',\n\t\tlanguages: ['ar'],\n\t\textends: 'cp437',\n\t\toffset: 128,\n\t\tvalue: [176,183,8729,8730,9618,9472,9474,9532,9508,9516,9500,9524,9488,9484,9492,9496,946,8734,966,177,189,188,8776,171,187,65271,65272,65533,65533,65275,65276,65533,160,173,65154,163,164,65156,65533,65533,65166,65167,65173,65177,1548,65181,65185,65189,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,65233,1563,65201,65205,65209,1567,162,65152,65153,65155,65157,65226,65163,65165,65169,65171,65175,65179,65183,65187,65191,65193,65195,65197,65199,65203,65207,65211,65215,65217,65221,65227,65231,166,172,247,215,65225,1600,65235,65239,65243,65247,65251,65255,65259,65261,65263,65267,65213,65228,65230,65229,65249,65149,1617,65253,65257,65260,65264,65266,65232,65237,65269,65270,65245,65241,65265,9632,65533]\n\t},\n\n\t'cp865': {\n\t\tname: 'Nordic',\n\t\tlanguages: ['sv','dk'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,,[,,,,,,,,,,,248,,216,,,],[,,,,,,,,,,,,,,,164,],,,,,,]\n\t},\n\n\t'cp866': {\n\t\tname: 'Cyrillic 2',\n\t\tlanguages: ['ru'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,],[1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,],[1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,],,,,[1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,],[1025,1105,1028,1108,1031,1111,1038,1118,,,,,8470,164,,,],]\n\t},\n\n\t'cp869': {\n\t\tname: 'Greek',\n\t\tlanguages: ['el'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[65533,65533,65533,65533,65533,65533,902,65533,183,172,166,8216,8217,904,8213,905,],[906,938,908,65533,65533,910,939,169,911,178,179,940,,941,942,943,],[970,912,972,973,913,914,915,916,917,918,919,,920,921,,,],[,,,,,922,923,924,925,,,,,926,927,,],[,,,,,,928,929,,,,,,,,931,],[932,933,934,935,936,937,945,946,947,,,,,948,949,,],[950,951,952,953,954,955,956,957,958,959,960,961,963,962,964,900,],[173,,965,966,967,167,968,901,,168,969,971,944,974,,,],]\n\t},\n\n\t'cp874': {\n\t\tname: 'Thai',\n\t\tlanguages: ['th'],\n\t\textends: 'ascii',\n\t\toffset: 128,\n\t\tvalue: [8364,65533,65533,65533,65533,8230,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,8216,8217,8220,8221,8226,8211,8212,65533,65533,65533,65533,65533,65533,65533,65533,160,3585,3586,3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,3632,3633,3634,3635,3636,3637,3638,3639,3640,3641,3642,65533,65533,65533,65533,3647,3648,3649,3650,3651,3652,3653,3654,3655,3656,3657,3658,3659,3660,3661,3662,3663,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3674,3675,65533,65533,65533,65533]\n\t},\n\n\t'cp1001': {\n\t\tname: 'Arabic',\n\t\tlanguages: ['ar'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[1569,1570,1571,1572,1573,65163,1575,1576,65169,1577,1578,65175,1579,65179,1583,1584,],[1585,1586,1587,65203,65204,1588,65207,65208,1589,65211,65212,1590,65215,65216,1591,1592,],[1593,65227,1594,65231,1601,65235,1602,65239,1603,1705,1604,65271,65273,65275,9496,1605,],[65251,1606,65255,1607,65259,1608,1609,1657,65267,9474,1548,1563,1567,65154,65156,65162,],[,1580,65183,1581,65187,1582,65191,65226,65228,65230,65231,65272,65274,65276,65259,65260,],[1632,65264,9472,65533,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,65533,65533,],[65533,65533,65275,65533,65533,65533,65533,9524,,,,,,,,,],,]\n\t},\n\n\t'cp1098': {\n\t\tname: 'Farsi',\n\t\tlanguages: ['fa'],\n\t\textends: 'cp437',\n\t\tvalue: [,,[,,,,,65533,,,,,65533,,,,,,],,,,,,[65533,65533,1548,1563,1567,1611,1570,65154,63738,1575,65166,63739,1569,1571,65156,63737,],[1572,65163,1576,65169,64342,64344,1578,65175,1579,65179,1580,65183,64378,64380,215,1581,],[65187,1582,65191,1583,1584,1585,1586,64394,1587,65203,1588,65207,1589,65211,,,],[,,,,,1590,65215,65217,65219,,,,,164,65221,,],[,,,,,,65223,1593,,,,,,,,65533,],[65226,65227,65228,1594,65230,65231,65232,1601,65235,,,,,1602,65239,,],[64398,65243,64402,64404,1604,65247,1605,65251,1606,65255,1608,1607,65259,65260,64420,64508,],[173,64509,64510,1600,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,,,],]\n\t},\n\n\t'cp1125': {\n\t\tname: 'Ukrainian',\n\t\tlanguages: ['uk'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,,,,,[,,1168,1169,1028,1108,1030,1110,1031,1111,247,177,,,,,],]\n\t},\n\n\t'cp3001': {\n\t\tname: 'Estonian 1 or 1116',\n\t\tlanguages: ['et'],\n\t\textends: 'cp850',\n\t\tvalue: [,,,,,,,,,,,,,[353,352,,,,,,,,,,,,,,,],[,,,,,,,382,381,,,,,,,,],,]\n\t},\n\n\t'cp3002': {\n\t\tname: 'Estonian 2',\n\t\tlanguages: ['et'],\n\t\textends: 'iso8859-1',\n\t\tvalue: [,,,,,,,,[65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,],[65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,],[32,,,,,,,,,,,,,,,8254,],,,[352,,,,,,,,,,,,,,381,,],,[353,,,,,,,,,,,,,,382,,],]\n\t},\n\n\t'cp3011': {\n\t\tname: 'Latvian 1',\n\t\tlanguages: ['lv'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,,,,[,,,,,256,,326,,,,,,,,,],[,,,,,,257,,,,,,,,,,],[352,,269,268,,,291,298,299,,,,,363,362,,],,[274,275,290,311,310,316,315,382,381,,,,325,353,,,],]\n\t},\n\n\t'cp3012': {\n\t\tname: 'Latvian 2 (modified 866)',\n\t\tlanguages: ['lv'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,[,,,,,256,,326,,,,,,332,,,],[,,,,,,257,,,,,,,,,,],[352,,269,268,,,291,298,299,,,,,363,362,,],,[274,275,290,311,310,316,315,382,381,333,,,325,353,,,],]\n\t},\n\n\t'cp3021': {\n\t\tname: 'Bulgarian (MIK)',\n\t\tlanguages: ['bg'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,[1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,],[,,,,,,9571,9553,,,,,,,,9488,],[9617,9618,9619,9474,9508,8470,167,9559,9565,,,,,,,,],[945,223,915,960,931,963,181,964,934,920,937,948,8734,966,949,8745,],[8801,177,8805,8804,8992,8993,247,8776,,,,,8319,178,,,],]\n\t},\n\n\t'cp3041': {\n\t\tname: 'Maltese ISO 646',\n\t\tlanguages: ['mt'],\n\t\textends: 'ascii',\n\t\tvalue: [,,,,,[,,,,,,,,,,,289,380,295,,,],[267,,,,,,,,,,,,,,,,],[,,,,,,,,,,,288,379,294,266,,],,,,,,,,,]\n\t},\n\n\t'cp3840': {\n\t\tname: 'Russian (modified 866)',\n\t\tlanguages: ['ru'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,,,,,[8801,177,8805,8804,8992,8993,247,8776,,,,,8319,178,,,],]\n\t},\n\n\t'cp3841': {\n\t\tname: 'Ghost',\n\t\tlanguages: ['ru'],\n\t\textends: 'cp437',\n\t\toffset: 128,\n\t\tvalue: [1171,1241,1105,1110,1111,1112,1181,1257,1118,1199,1277,1224,1209,1207,1108,163,1170,1240,1025,1030,1031,1032,1180,1256,1038,1198,1276,1223,1208,1206,1028,1066,32,33,34,35,164,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,1102,1072,1073,1094,1076,1077,1092,1075,1093,1080,1081,1082,1083,1084,1085,1086,1087,1103,1088,1089,1090,1091,1078,1074,1100,1099,1079,1096,1101,1097,1095,1098,1070,1040,1041,1062,1044,1045,1060,1043,1061,1048,1049,1050,1051,1052,1053,1054,1055,1071,1056,1057,1058,1059,1046,1042,1068,1067,1047,1064,1069,1065,1063,8709]\n\t},\n\n\t'cp3843': {\n\t\tname: 'Polish (Mazovia)',\n\t\tlanguages: ['pl'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,261,,,,,,,263,,260,],[280,281,322,,,262,,,346,,,,321,,347,,],[377,379,,211,324,323,378,380,,,,,,,,,],,,,,,]\n\t},\n\n\t'cp3844': {\n\t\tname: 'Czech (Kamenický)',\n\t\tlanguages: ['cz'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[268,,,271,,270,356,269,283,282,313,205,318,314,,193,],[,382,381,,,211,367,218,253,,,352,317,221,344,357,],[,,,,328,327,366,212,353,345,341,340,,167,,,],,,,,,]\n\t},\n\n\t'cp3845': {\n\t\tname: 'Hungarian (CWI-2)',\n\t\tlanguages: ['hu'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,,,205,,193,],[,,,337,,211,369,218,368,,,,,,,,],[,,,,,,,336,,,,,,,,,],,,,,,]\n\t},\n\n\t'cp3846': {\n\t\tname: 'Turkish',\n\t\tlanguages: ['tr'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,,,305,,,],[,,,,,,,,304,,,,,,350,351,],[,,,,,,286,287,,,,,,,,,],,,,,,]\n\t},\n\n\t'cp3847': {\n\t\tname: 'Brazil ABNT',\n\t\tlanguages: ['pt'],\n\t\textends: 'iso8859-1',\n\t\tvalue: [,,,,,,,,,,,,,[,,,,,,,65533,,,,,,,,,],,[,,,,,,,65533,,,,,,,,,],]\n\t},\n\n\t'cp3848': {\n\t\tname: 'Brazil ABICOMP',\n\t\tlanguages: ['pt'],\n\t\textends: 'ascii',\n\t\tvalue: [,,,,,,,,,,[160,192,193,194,195,196,199,200,201,202,203,204,205,206,205,209,],[210,211,212,213,214,198,217,218,219,220,376,168,163,166,167,176,],[161,224,225,226,227,228,231,232,233,234,235,236,237,238,239,241,],[242,243,244,245,246,230,249,250,251,252,255,223,170,186,191,177,],,,]\n\t},\n\n\t'iso8859-1': {\n\t\tname: 'Latin 1',\n\t\tlanguages: ['en'],\n\t\textends: 'ascii',\n\t\toffset: 128,\n\t\tvalue: [128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255]\n\t},\n\n\t'iso8859-2': {\n\t\tname: 'Latin 2',\n\t\tlanguages: ['hu','pl','cz'],\n\t\textends: 'iso8859-1',\n\t\tvalue: [,,,,,,,,,,[,260,728,321,,317,346,,,352,350,356,377,,381,379,],[,261,731,322,,318,347,711,,353,351,357,378,733,382,380,],[340,,,258,,313,262,,268,,280,,282,,,270,],[272,323,327,,,336,,,344,366,,368,,,354,,],[341,,,259,,314,263,,269,,281,,283,,,271,],[273,324,328,,,337,,,345,367,,369,,,355,729,],]\n\t},\n\n\t'iso8859-7': {\n\t\tname: 'Greek',\n\t\tlanguages: ['el'],\n\t\textends: 'iso8859-1',\n\t\tvalue: [,,,,,,,,,,[,8216,8217,,8364,8367,,,,,890,,,,,8213,],[,,,,900,901,902,,904,905,906,,908,,910,911,],[912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,],[928,929,,931,932,933,934,935,936,937,938,939,940,941,942,943,],[944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,],[960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,,],]\n\t},\n\n\t'iso8859-15': {\n\t\tname: 'Latin 9',\n\t\tlanguages: ['fr'],\n\t\textends: 'iso8859-1',\n\t\tvalue: [,,,,,,,,,,[,,,,8364,,352,,353,,,,,,,,],[,,,,381,,,,382,,,,338,339,376,,],,,,,]\n\t},\n\n\t'windows1250': {\n\t\tname: 'Latin 2',\n\t\tlanguages: ['hu','pl','cz'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,,,65533,,,,,65533,,,,346,356,,377,],[,,,,,,,,65533,,,,347,357,,378,],[,711,728,321,,260,,,,,350,,,,,379,],[,,731,322,,,,,,261,351,,317,733,318,380,],[340,,,258,,313,262,,268,,280,,282,,,270,],[272,323,327,,,336,,,344,366,,368,,,354,,],[341,,,259,,314,263,,269,,281,,283,,,271,],[273,324,328,,,337,,,345,367,,369,,,355,729,],]\n\t},\n\n\t'windows1251': {\n\t\tname: 'Cyrillic',\n\t\tlanguages: ['ru'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[1026,1027,,1107,,,,,8364,,1033,,1034,1036,1035,1039,],[1106,,,,,,,,65533,,1113,,1114,1116,1115,1119,],[,1038,1118,1032,,1168,,,1025,,1028,,,,,1031,],[,,1030,1110,1169,,,,1105,8470,1108,,1112,1029,1109,1111,],[1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,],[1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,],[1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,],[1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,],]\n\t},\n\n\t'windows1252': {\n\t\tname: 'Latin',\n\t\tlanguages: ['fr'],\n\t\textends: 'iso8859-1',\n\t\tvalue: [,,,,,,,,[8364,65533,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,65533,381,65533,],[65533,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,65533,382,376,],,,,,,,]\n\t},\n\n\t'windows1253': {\n\t\tname: 'Greek',\n\t\tlanguages: ['el'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,,,,,,,,65533,,65533,,65533,,65533,,],[,,,,,,,,65533,,65533,,65533,,65533,65533,],[,901,902,,,,,,,,65533,,,,,8213,],[,,,,900,,,,904,905,906,,908,,910,911,],[912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,],[928,929,65533,931,932,933,934,935,936,937,938,939,940,941,942,943,],[944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,],[960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,65533,],]\n\t},\n\n\t'windows1254': {\n\t\tname: 'Turkish',\n\t\tlanguages: ['tr'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,,,,65533,,],[,,,,,,,,,,,,,,65533,,],,,,[286,,,,,,,,,,,,,304,350,,],,[287,,,,,,,,,,,,,305,351,,],]\n\t},\n\n\t'windows1255': {\n\t\tname: 'Hebrew',\n\t\tlanguages: ['he'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,65533,,65533,,65533,,],[,,,,,,,,,,65533,,65533,,65533,65533,],[,,,,8362,,,,,,215,,,,,,],[,,,,,,,,,,247,,,,,,],[1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,65533,1467,1468,1469,1470,1471,],[1472,1473,1474,1475,1520,1521,1522,1523,1524,65533,65533,65533,65533,65533,65533,65533,],[1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,],[1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,65533,65533,8206,8207,65533,],]\n\t},\n\n\t'windows1256': {\n\t\tname: 'Arabic',\n\t\tlanguages: ['ar'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,1662,,,,,,,,,1657,,,1670,1688,1672,],[1711,,,,,,,,1705,,1681,,,8204,8205,1722,],[,1548,,,,,,,,,1726,,,,,,],[,,,,,,,,,,1563,,,,,1567,],[1729,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,],[1584,1585,1586,1587,1588,1589,1590,,1591,1592,1593,1594,1600,1601,1602,1603,],[,1604,,1605,1606,1607,1608,,,,,,1609,1610,,,],[1611,1612,1613,1614,,1615,1616,,1617,,1618,,,8206,8207,1746,],]\n\t},\n\n\t'windows1257': {\n\t\tname: 'Baltic Rim',\n\t\tlanguages: ['et','lt'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,,,65533,,,,,65533,,65533,,65533,168,711,184,],[,,,,,,,,65533,,65533,,65533,175,731,65533,],[,65533,,,,65533,,,216,,342,,,,,198,],[,,,,,,,,248,,343,,,,,230,],[260,302,256,262,,,280,274,268,,377,278,290,310,298,315,],[352,323,325,,332,,,,370,321,346,362,,379,381,,],[261,303,257,263,,,281,275,269,,378,279,291,311,299,316,],[353,324,326,,333,,,,371,322,347,363,,380,382,729,],]\n\t},\n\n\t'windows1258': {\n\t\tname: 'Vietnamese',\n\t\tlanguages: ['vi'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,65533,,,,65533,,],[,,,,,,,,,,65533,,,,65533,,],,,[,,,258,,,,,,,,,768,,,,],[272,,777,,,416,,,,,,,,431,771,,],[,,,259,,,,,,,,,769,,,,],[273,,803,,,417,,,,,,,,432,8363,,],]\n\t},\n\n\t'rk1048': {\n\t\tname: 'Kazakh',\n\t\tlanguages: ['kk'],\n\t\textends: 'windows1251',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,,,1178,1210,,],[,,,,,,,,,,,,,1179,1211,,],[,1200,1201,1240,,1256,,,,,1170,,,,,1198,],[,,,,1257,,,,,,1171,,1241,1186,1187,1199,],,,,,]\n\t},\n\n\t'thai11': {\n\t\tname: 'Thai (Charcter Code 11)',\n\t\tlanguages: ['th'],\n\t\textends: 'thai13',\n\t\tvalue: [,,,,,,,,,[,,,,,,,,,9484,9488,9492,9496,9474,9500,9508,],,,,[,,,,,,,,,,,9472,9524,9516,9532,,],,[,,,,,,,,,,,3658,3650,3651,3652,65533,],]\n\t},\n\n\t'thai13': {\n\t\tname: 'Thai (Charcter Code 13)',\n\t\tlanguages: ['th'],\n\t\textends: 'cp874',\n\t\tvalue: [,,,,,,,,[65533,,,,,65533,,,,,,,,,,,],[,65533,65533,65533,65533,65533,65533,65533,,,,,,,,,],,,,[,,,,,,,,,,,3619,,,3648,,],,[,,,,,,,,,,,,8592,8593,8594,8595,],]\n\t},\n\n\t'thai14': {\n\t\tname: 'Thai (Charcter Code 14)',\n\t\tlanguages: ['th'],\n\t\textends: 'cp874',\n\t\tvalue: [,,,,,,,,[9484,9488,9492,9496,9474,9472,9500,9508,9524,9516,9532,9608,,,,,],[3619,3634,65533,3632,65533,65533,65533,65533,,,,,,,,3648,],,,,,,[,,,,,,,,,,3675,65533,,,,3652,],]\n\t},\n\n\t'thai16': {\n\t\tname: 'Thai (Charcter Code 16)',\n\t\tlanguages: ['th'],\n\t\textends: 'thai18',\n\t\tvalue: [,,,,,,,,,[3650,3651,,,,,,,,,,,,,,,],,,,,,,]\n\t},\n\n\t'thai18': {\n\t\tname: 'Thai (Charcter Code 18)',\n\t\tlanguages: ['th'],\n\t\textends: 'thai14',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,,8592,8593,8594,8595,],,,,,,[,,,,,,,,,,,,,,3652,,],[,,,,,,,,,,,,,,,65533,],]\n\t},\n\n\t'thai42': {\n\t\tname: 'Thai (Charcter Code 42)',\n\t\tlanguages: ['th'],\n\t\textends: 'thai18',\n\t\tvalue: [,,,,,,,,,[3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3587,3589,3619,3634,3652,,],[,,,3588,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,],[3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,],[3618,3619,3620,3621,3623,3624,3625,3626,3627,3628,3629,3630,3632,3622,3634,3635,],[3648,3649,3650,3651,3652,3654,3631,3640,3641,3636,3637,3638,3639,3658,3661,3655,],[3656,3657,3658,3659,3660,65533,65533,65533,65533,65533,65533,3632,65533,65533,65533,65533,],[65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,,,,,160,],]\n\t},\n\n\t'tcvn3': {\n\t\tname: 'Vietnamese (VSCII3 / TCVN3)',\n\t\tlanguages: ['vi'],\n\t\textends: 'ascii',\n\t\tvalue: [,,,,,,,,,,[,,,,,,,,259,226,234,244,417,432,273,,],[,,,,,224,7843,227,225,7841,,7857,7859,7861,7855,,],[,,,,,,7863,7847,7849,7851,7845,7853,232,,7867,7869,],[233,7865,7873,7875,7877,7871,7879,236,7881,,,,297,237,7883,242,],[,7887,245,243,7885,7891,7893,7895,7889,7897,7901,7903,7905,7899,7907,249,],[,7911,361,250,7909,7915,7917,7919,7913,7921,7923,7927,7929,253,7925,,],]\n\t},\n\n\t'tcvn3capitals': {\n\t\tname: 'Vietnamese (VSCII3 / TCVN3 Capitals)',\n\t\tlanguages: ['vi'],\n\t\textends: 'ascii',\n\t\tvalue: [,,,,,,,,,,[,258,194,,,,,208,,,202,212,416,431,,,],[,,,,,192,7842,195,193,7840,,7856,7858,7860,7854,,],[,,,,,,7862,7846,7848,7850,7844,7852,200,,7866,7868,],[201,7864,7872,7874,7876,7870,7878,204,7880,,,,296,205,7882,210,],[,7886,213,211,7884,7890,7892,7894,7888,7896,7900,7902,7904,7898,7906,217,],[,7910,360,218,7908,7914,7916,7918,7912,7920,7922,7926,7928,221,7924,,],]\n\t},\n\n\t'viscii': {\n\t\tname: 'Vietnamese (VISCII)',\n\t\tlanguages: ['vi'],\n\t\textends: 'ascii',\n\t\tvalue: [[,,7858,,,7860,7850,,,,,,,,,,],[,,,,7926,,,,,7928,,,,,7924,,],,,,,,,[7840,7854,7856,7862,7844,7846,7848,7852,7868,7864,7870,7872,7874,7876,7878,7888,],[7890,7892,7894,7896,7906,7898,7900,7902,7882,7886,7884,7880,7910,360,7908,7922,],[213,7855,7857,7863,7845,7847,7849,7853,7869,7865,7871,7873,7875,7877,7879,7889,],[7891,7893,7895,7904,416,7897,7901,7903,7883,7920,7912,7914,7916,417,7899,431,],[192,193,194,195,7842,258,7859,7861,200,201,202,7866,204,205,296,7923,],[272,7913,210,211,212,7841,7927,7915,7917,217,218,7929,7925,221,7905,432,],[224,225,226,227,7843,259,7919,7851,232,233,234,7867,236,237,297,7881,],[273,7921,242,243,244,245,7887,7885,7909,249,250,361,7911,253,7907,7918,],]\n\t},\n\n\t'khmer': {\n\t\tname: 'Khmer',\n\t\tlanguages: ['km'],\n\t\textends: 'ascii',\n\t\tvalue: [,,,,,,,,[6016,6017,6016,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,],[6032,6033,6032,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,],[6048,6049,6048,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,],[6064,6065,6064,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,],[6080,6081,6080,6083,6084,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,],[6096,6097,6096,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,,,],[6112,6113,6112,6115,6116,6117,6118,6119,6120,6121,,,,,,,],[6128,6129,6128,6131,6132,6133,6134,,,,,,,,,,],]\n\t},\n\n\t'latvian': {\n\t\tname: 'Latvian (based on cp3012)',\n\t\tlanguages: ['lv'],\n\t\textends: 'cp3012',\n\t\tvalue: [,,,,,,,,,,,,,[,,,,298,299,,,,,,,,,,,],,,]\n\t},\n\n\t'epson/katakana': {\n\t\tname: 'Katakana',\n\t\tlanguages: ['ja'],\n\t\textends: 'cp437',\n\t\toffset: 128,\n\t\tvalue: [9601,9602,9603,9604,9605,9606,9607,9608,9615,9614,9613,9612,9611,9610,9609,9532,9524,9516,9508,9500,9620,9472,9474,9621,9484,9488,9492,9496,9581,9582,9584,9583,32,65377,65378,65379,65380,65381,65382,65383,65384,65385,65386,65387,65388,65389,65390,65391,65392,65393,65394,65395,65396,65397,65398,65399,65400,65401,65402,65403,65404,65405,65406,65407,65408,65409,65410,65411,65412,65413,65414,65415,65416,65417,65418,65419,65420,65421,65422,65423,65424,65425,65426,65427,65428,65429,65430,65431,65432,65433,65434,65435,65436,65437,65438,65439,9552,9566,9578,9569,9698,9699,9701,9700,9824,9829,9830,9827,9679,9675,9585,9586,9587,20870,24180,26376,26085,26178,20998,31186,12306,24066,21306,30010,26449,20154,9618,160]\n\t},\n\n\t'epson/iso8859-2': {\n\t\tname: 'Latin 2 modified with box drawing characters',\n\t\tlanguages: ['hu','pl','cz'],\n\t\textends: 'iso8859-2',\n\t\tvalue: [,,,,,,,,[9617,9618,9619,9474,9508,9496,9484,9608,169,9571,9553,9559,9565,162,165,9488,],[9492,9524,9516,9500,9472,9532,9604,9600,9562,9556,9577,9574,9568,9552,9580,174,],,,,,,,]\n\t},\n\n\t'star/standard': {\n\t\tname: 'Standard',\n\t\tlanguages: ['en'],\n\t\textends: 'cp437',\n\t\toffset: 128,\n\t\tvalue: [160,129904,129910,129905,129911,129906,129912,129907,129913,129908,129914,129909,9500,129915,129916,129918,129919,129917,9624,9623,9622,9629,9585,9586,9701,9700,9484,9524,9516,9508,9830,9587,196,214,220,223,167,170,186,65533,162,189,65533,65533,165,188,256,235,233,232,275,234,239,237,236,299,238,246,243,242,333,244,252,250,249,363,251,231,191,65533,65533,274,8580,161,197,248,216,228,225,224,257,226,176,8451,8457,937,181,931,963,65533,65533,967,8734,177,247,960,9612,9604,9600,9616,9532,9496,9492,9488,9608,9618,9162,8592,8593,8594,8595,9581,9161,129923,65533,9601,9613,65533,129928,9626,9630,9698,9699,129840,9208,9584,9583,9582]\n\t},\n\n\t'star/katakana': {\n\t\tname: 'Katakana',\n\t\tlanguages: ['ja'],\n\t\textends: 'star/standard',\n\t\tvalue: [,,,,,,,,,,[32,65377,65378,65379,65380,65381,65382,65383,65384,65385,65386,65387,65388,65389,65390,65391,],[65392,65393,65394,65395,65396,65397,65398,65399,65400,65401,65402,65403,65404,65405,65406,65407,],[65408,65409,65410,65411,65412,65413,65414,65415,65416,65417,65418,65419,65420,65421,65422,65423,],[65424,65425,65426,65427,65428,65429,65430,65431,65432,65433,65434,65435,65436,65437,65438,65439,],,,]\n\t},\n\n\t'star/cp874': {\n\t\tname: 'Thai',\n\t\tlanguages: ['th'],\n\t\textends: 'cp874',\n\t\tvalue: [,,,,,,,,,[,,,,,9474,9472,9532,9484,9488,9492,9496,9500,9516,9508,9524,],,,,[,,,,,,,,,,,3657,3658,3659,3660,,],,[,,,,,,,,,,,,162,172,166,,],]\n\t},\n\n\t'star/cp928': {\n\t\tname: 'Greek',\n\t\tlanguages: ['el'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,,,[160,8216,8217,163,65533,65533,166,167,168,169,65533,171,172,173,65533,8213,],[176,177,178,179,900,901,902,183,904,905,906,187,908,189,910,911,],[912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,],[928,929,65533,931,932,933,934,935,936,937,938,939,940,941,942,943,],[944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,],[960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,65533,],]\n\t},\n\n\t'bixolon/cp866': {\n\t\tname: 'Cyrillic 2 (modified with euro sign)',\n\t\tlanguages: ['ru'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,,,,,[,,,,9093,1055,8801,9824,8364,,,,,,,,],]\n\t},\n\n\t'bixolon/hebrew': {\n\t\tname: 'Hebrew',\n\t\tlanguages: ['he'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,,,[32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,],[48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,],[64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,],[80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,],[1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,],[1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,123,124,125,126,,],]\n\t},\n\n\t'xprinter/hebrew': {\n\t\tname: 'Hebrew (based on CP862 minus CP437)',\n\t\tlanguages: ['he'],\n\t\textends: 'ascii',\n\t\tvalue: [,,,,,,,,[1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,],[1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,,,,,,],,,,,,,]\n\t},\n\n\t'pos8360/hebrew': {\n\t\tname: 'Hebrew (based on cp862 with repeated characters)',\n\t\tlanguages: ['he'],\n\t\textends: 'cp862',\n\t\tvalue: [,,,,,,,,,,,,,,[1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,],[1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,,,,,,],]\n\t},\n\n};\n\nconst aliases = {\n\t'cp2001': 'cp771',\n\t'cp1119': 'cp772',\n\t'cp1118': 'cp774',\n\t'cp1162': 'cp874',\n\t'iso88591': 'iso8859-1',\n\t'iso88592': 'iso8859-2',\n\t'iso88597': 'iso8859-7',\n\t'iso885915': 'iso8859-15',\n\t'shiftjis': 'epson/katakana',\n\t'katakana': 'epson/katakana',\n\t'cp928': 'star/cp928',\n};\n\nconst strings = {\n en: 'The quick brown fox jumps over the lazy dog.',\n jp: 'イロハニホヘト チリヌルヲ ワカヨタレソ ツネナラム',\n pt: 'O próximo vôo à noite sobre o Atlântico, põe freqüentemente o único médico.',\n fr: 'Les naïfs ægithales hâtifs pondant à Noël où il gèle sont sûrs d\\'être déçus en voyant leurs drôles d\\'œufs abîmés.',\n sv: 'Flygande bäckasiner söka strax hwila på mjuka tuvor.',\n dk: 'Quizdeltagerne spiste jordbær med fløde',\n el: 'ξεσκεπάζω την ψυχοφθόρα βδελυγμία',\n tr: 'Pijamalı hasta, yağız şoföre çabucak güvendi.',\n ru: 'Съешь же ещё этих мягких французских булок да выпей чаю',\n hu: 'Árvíztűrő tükörfúrógép',\n pl: 'Pchnąć w tę łódź jeża lub ośm skrzyń fig',\n cz: 'Mohu jíst sklo, neublíží mi.',\n ar: 'أنا قادر على أكل الزجاج و هذا لا يؤلمني.',\n et: 'Ma võin klaasi süüa, see ei tee mulle midagi.',\n lt: 'Aš galiu valgyti stiklą ir jis manęs nežeidžia.',\n bg: 'Мога да ям стъкло, то не ми вреди.',\n is: 'Ég get etið gler án þess að meiða mig.',\n he: 'אני יכול לאכול זכוכית וזה לא מזיק לי.',\n fa: '.من می توانم بدونِ احساس درد شيشه بخورم',\n uk: 'Я можу їсти скло, і воно мені не зашкодить.',\n vi: 'Tôi có thể ăn thủy tinh mà không hại gì.',\n kk: 'қазақша',\n lv: 'Es varu ēst stiklu, tas man nekaitē.',\n mt: 'Nista\\' niekol il-ħġieġ u ma jagħmilli xejn.',\n th: 'ฉันกินกระจกได้ แต่มันไม่ทำให้ฉันเจ็บ',\n};\n\n/**\n * A library for converting Unicode to obscure single byte codepage for use with thermal printers\n */\nclass CodepageEncoder {\n /**\n * Get list of supported codepages\n *\n * @return {array} Return an array with the supported codepages\n *\n */\n static getEncodings() {\n return Object.keys(definitions);\n }\n\n /**\n * Get codepage definition\n *\n * @param {string} codepage The codepage, defaults to ascii when it cannot find the codepage\n * @return {object} Return an object with the codepage definition\n *\n */\n static getEncoding(codepage) {\n if (typeof aliases[codepage] !== 'undefined') {\n codepage = aliases[codepage];\n }\n\n if (typeof definitions[codepage] === 'undefined') {\n codepage = 'ascii';\n }\n\n /* Create codepoints array if it doesn't exist */\n\n if (typeof definitions[codepage].codepoints === 'undefined') {\n definitions[codepage].codepoints = this.getCodepoints(codepage, true);\n }\n\n /* Return codepage definition */\n\n return structuredClone(definitions[codepage]);\n }\n\n\n /**\n * Get test strings for the specified codepage\n *\n * @param {string} codepage The codepage\n * @return {array} Return an array with one or more objects\n * containing a property for the language of\n * the string and a property for the string itself\n *\n */\n static getTestStrings(codepage) {\n if (typeof aliases[codepage] !== 'undefined') {\n codepage = aliases[codepage];\n }\n\n if (typeof definitions[codepage] !== 'undefined' &&\n typeof definitions[codepage].languages !== 'undefined') {\n return definitions[codepage].languages.map((i) => ({language: i, string: strings[i]}));\n }\n\n return [];\n }\n\n /**\n * Determine if the specified codepage is supported\n *\n * @param {string} codepage The codepage\n * @return {boolean} Return a boolean, true if the encoding is supported,\n * otherwise false\n *\n */\n static supports(codepage) {\n if (typeof aliases[codepage] !== 'undefined') {\n codepage = aliases[codepage];\n }\n\n if (typeof definitions[codepage] === 'undefined') {\n return false;\n }\n\n return true;\n }\n\n /**\n * Encode a string in the specified codepage\n *\n * @param {string} input Text that needs encoded to the specified codepage\n * @param {string} codepage The codepage\n * @return {Uint8Array} Return an array of bytes with the encoded string\n *\n */\n static encode(input, codepage) {\n const output = new Uint8Array(input.length);\n const definition = this.getEncoding(codepage);\n\n for (let c = 0; c < input.length; c++) {\n const codepoint = input.codePointAt(c);\n const position = definition.codepoints.findIndex((i) => i === codepoint);\n\n if (position !== -1) {\n output[c] = position;\n } else {\n output[c] = 0x3f;\n }\n }\n\n return output;\n }\n\n /**\n * Encode a string in the most optimal set of codepages.\n *\n * @param {string} input Text that needs encoded\n * @param {array} candidates An array of candidate codepages that are allowed to be used, ranked by importance\n * @return {Uint8Array} Return an array of bytes with the encoded string\n *\n */\n static autoEncode(input, candidates) {\n const fragments = [];\n let fragment = -1;\n let current;\n\n for (let c = 0; c < input.length; c++) {\n const codepoint = input.codePointAt(c);\n\n let available;\n let char = 0;\n\n if (!available && current) {\n const definition = this.getEncoding(current);\n const position = definition.codepoints.findIndex((i) => i === codepoint);\n\n if (position !== -1) {\n available = current;\n char = position;\n }\n }\n\n if (!available) {\n for (let i = 0; i < candidates.length; i++) {\n const definition = this.getEncoding(candidates[i]);\n const position = definition.codepoints.findIndex((i) => i === codepoint);\n\n if (position !== -1) {\n available = candidates[i];\n char = position;\n break;\n }\n }\n }\n\n if (!available) {\n available = current || candidates[0];\n char = 0x3f;\n }\n\n if (current != available) {\n if (current) {\n fragments[fragment].bytes = new Uint8Array(fragments[fragment].bytes);\n }\n\n fragment++;\n fragments[fragment] = {\n codepage: available,\n bytes: [],\n };\n\n current = available;\n }\n\n fragments[fragment].bytes.push(char);\n }\n\n if (current) {\n fragments[fragment].bytes = new Uint8Array(fragments[fragment].bytes);\n }\n\n return fragments;\n }\n\n /**\n * Get codepoints\n *\n * @param {string} codepage The codepage\n * @param {boolean} evaluateExtends Evaluate the extends property\n * @return {array} Return an object array with 256 codepoints for the specified codepage\n *\n */\n static getCodepoints(codepage, evaluateExtends) {\n let codepoints = new Array(256);\n\n if (evaluateExtends) {\n if (typeof definitions[codepage].extends === 'undefined') {\n codepoints = codepoints.fill(0xfffd);\n } else {\n codepoints = this.getEncoding(definitions[codepage].extends).codepoints;\n }\n }\n\n if (definitions[codepage].value.length === 16) {\n for (let i = 0; i < 16; i++) {\n if (typeof definitions[codepage].value[i] !== 'object') {\n continue;\n }\n\n for (let j = 0; j < 16; j++) {\n if (typeof definitions[codepage].value[i][j] !== 'number') {\n continue;\n }\n\n codepoints[i * 16 + j] = definitions[codepage].value[i][j];\n }\n }\n } else {\n const offset = definitions[codepage].offset || 0;\n\n for (let i = 0; i < definitions[codepage].value.length; i++) {\n if (typeof definitions[codepage].value[i] !== 'number') {\n continue;\n }\n\n codepoints[offset + i] = definitions[codepage].value[i];\n }\n }\n\n return codepoints;\n }\n}\n\nexport { CodepageEncoder as default };\n","/* eslint-env browser */\n\nmodule.exports = ImageData\n","'use strict'\n\nconst ImageData = require('@canvas/image-data')\n\nfunction nearestNeighbor (src, dst) {\n let pos = 0\n\n for (let y = 0; y < dst.height; y++) {\n for (let x = 0; x < dst.width; x++) {\n const srcX = Math.floor(x * src.width / dst.width)\n const srcY = Math.floor(y * src.height / dst.height)\n\n let srcPos = ((srcY * src.width) + srcX) * 4\n\n dst.data[pos++] = src.data[srcPos++] // R\n dst.data[pos++] = src.data[srcPos++] // G\n dst.data[pos++] = src.data[srcPos++] // B\n dst.data[pos++] = src.data[srcPos++] // A\n }\n }\n}\n\nfunction bilinearInterpolation (src, dst) {\n function interpolate (k, kMin, kMax, vMin, vMax) {\n return Math.round((k - kMin) * vMax + (kMax - k) * vMin)\n }\n\n function interpolateHorizontal (offset, x, y, xMin, xMax) {\n const vMin = src.data[((y * src.width + xMin) * 4) + offset]\n if (xMin === xMax) return vMin\n\n const vMax = src.data[((y * src.width + xMax) * 4) + offset]\n return interpolate(x, xMin, xMax, vMin, vMax)\n }\n\n function interpolateVertical (offset, x, xMin, xMax, y, yMin, yMax) {\n const vMin = interpolateHorizontal(offset, x, yMin, xMin, xMax)\n if (yMin === yMax) return vMin\n\n const vMax = interpolateHorizontal(offset, x, yMax, xMin, xMax)\n return interpolate(y, yMin, yMax, vMin, vMax)\n }\n\n let pos = 0\n\n for (let y = 0; y < dst.height; y++) {\n for (let x = 0; x < dst.width; x++) {\n const srcX = x * src.width / dst.width\n const srcY = y * src.height / dst.height\n\n const xMin = Math.floor(srcX)\n const yMin = Math.floor(srcY)\n\n const xMax = Math.min(Math.ceil(srcX), src.width - 1)\n const yMax = Math.min(Math.ceil(srcY), src.height - 1)\n\n dst.data[pos++] = interpolateVertical(0, srcX, xMin, xMax, srcY, yMin, yMax) // R\n dst.data[pos++] = interpolateVertical(1, srcX, xMin, xMax, srcY, yMin, yMax) // G\n dst.data[pos++] = interpolateVertical(2, srcX, xMin, xMax, srcY, yMin, yMax) // B\n dst.data[pos++] = interpolateVertical(3, srcX, xMin, xMax, srcY, yMin, yMax) // A\n }\n }\n}\n\nmodule.exports = function resizeImageData (image, width, height, algorithm) {\n algorithm = algorithm || 'bilinear-interpolation'\n\n let resize\n switch (algorithm) {\n case 'nearest-neighbor': resize = nearestNeighbor; break\n case 'bilinear-interpolation': resize = bilinearInterpolation; break\n // FIXME: Only for backwards compatibility, remove in next major version\n case 'biliniear-interpolation': resize = bilinearInterpolation; break\n default: throw new Error(`Unknown algorithm: ${algorithm}`)\n }\n\n const result = new ImageData(width, height)\n\n resize(image, result)\n\n return result\n}\n","import CodepageEncoder from '@point-of-sale/codepage-encoder';\r\n\r\n/**\r\n * ESC/POS Language commands\r\n */\r\nclass LanguageEscPos {\r\n /**\r\n * Initialize the printer\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n initialize() {\r\n return [\r\n {\r\n type: 'initialize',\r\n payload: [0x1b, 0x40],\r\n },\r\n {\r\n type: 'character-mode',\r\n value: 'single byte',\r\n payload: [0x1c, 0x2e],\r\n },\r\n {\r\n type: 'font',\r\n value: 'A',\r\n payload: [0x1b, 0x4d, 0x00],\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Change the font\r\n * @param {string} value Font type ('A', 'B', or more)\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n font(value) {\r\n const type = value.charCodeAt(0) - 0x41;\r\n\r\n return [\r\n {\r\n type: 'font',\r\n value,\r\n payload: [0x1b, 0x4d, type],\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Change the alignment\r\n * @param {string} value Alignment value ('left', 'center', 'right')\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n align(value) {\r\n let align = 0x00;\r\n\r\n if (value === 'center') {\r\n align = 0x01;\r\n } else if (value === 'right') {\r\n align = 0x02;\r\n }\r\n\r\n return [\r\n {\r\n type: 'align',\r\n value,\r\n payload: [0x1b, 0x61, align],\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Generate a barcode\r\n * @param {string} value Value to encode\r\n * @param {string|number} symbology Barcode symbology\r\n * @param {object} options Configuration object\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n barcode(value, symbology, options) {\r\n const result = [];\r\n\r\n const symbologies = {\r\n 'upca': 0x00,\r\n 'upce': 0x01,\r\n 'ean13': 0x02,\r\n 'ean8': 0x03,\r\n 'code39': 0x04,\r\n 'coda39': 0x04, /* typo, leave here for backwards compatibility */\r\n 'itf': 0x05,\r\n 'interleaved-2-of-5': 0x05,\r\n 'nw-7': 0x06,\r\n 'codabar': 0x06,\r\n 'code93': 0x48,\r\n 'code128': 0x49,\r\n 'gs1-128': 0x48,\r\n 'gs1-databar-omni': 0x4b,\r\n 'gs1-databar-truncated': 0x4c,\r\n 'gs1-databar-limited': 0x4d,\r\n 'gs1-databar-expanded': 0x4e,\r\n 'code128-auto': 0x4f,\r\n };\r\n\r\n if (typeof symbology === 'string' && typeof symbologies[symbology] === 'undefined') {\r\n throw new Error(`Symbology '${symbology}' not supported by language`);\r\n }\r\n\r\n /* Calculate segment width */\r\n\r\n if (options.width < 1 || options.width > 3) {\r\n throw new Error('Width must be between 1 and 3');\r\n }\r\n\r\n let width = options.width + 1;\r\n\r\n if (symbology === 'itf') {\r\n width = options.width * 2;\r\n }\r\n\r\n if (symbology === 'gs1-128' || symbology === 'gs1-databar-omni' ||\r\n symbology === 'gs1-databar-truncated' || symbology === 'gs1-databar-limited' ||\r\n symbology === 'gs1-databar-expanded') {\r\n width = options.width;\r\n }\r\n\r\n /* Set barcode options */\r\n\r\n result.push(\r\n {\r\n type: 'barcode',\r\n property: 'height',\r\n value: options.height,\r\n payload: [0x1d, 0x68, options.height],\r\n },\r\n {\r\n type: 'barcode',\r\n property: 'width',\r\n value: options.width,\r\n payload: [0x1d, 0x77, width],\r\n },\r\n {\r\n type: 'barcode',\r\n property: 'text',\r\n value: options.text,\r\n payload: [0x1d, 0x48, options.text ? 0x02 : 0x00],\r\n },\r\n );\r\n\r\n\r\n /* Encode barcode */\r\n\r\n if (symbology == 'code128' && !value.startsWith('{')) {\r\n value = '{B' + value;\r\n }\r\n\r\n if (symbology == 'gs1-128') {\r\n value = value.replace(/[()*]/g, '');\r\n }\r\n\r\n const bytes = CodepageEncoder.encode(value, 'ascii');\r\n\r\n const identifier = typeof symbology === 'string' ? symbologies[symbology] : symbology;\r\n\r\n if (identifier > 0x40) {\r\n /* Function B symbologies */\r\n\r\n result.push(\r\n {\r\n type: 'barcode',\r\n value: {symbology: symbology, data: value},\r\n payload: [0x1d, 0x6b, identifier, bytes.length, ...bytes],\r\n },\r\n );\r\n } else {\r\n /* Function A symbologies */\r\n\r\n result.push(\r\n {\r\n type: 'barcode',\r\n value: {symbology: symbology, data: value},\r\n payload: [0x1d, 0x6b, identifier, ...bytes, 0x00],\r\n },\r\n );\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Generate a QR code\r\n * @param {string} value Value to encode\r\n * @param {object} options Configuration object\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n qrcode(value, options) {\r\n const result = [];\r\n\r\n /* Model */\r\n\r\n if (typeof options.model === 'number') {\r\n const models = {\r\n 1: 0x31,\r\n 2: 0x32,\r\n };\r\n\r\n if (options.model in models) {\r\n result.push(\r\n {\r\n type: 'qrcode',\r\n property: 'model',\r\n value: options.model,\r\n payload: [0x1d, 0x28, 0x6b, 0x04, 0x00, 0x31, 0x41, models[options.model], 0x00],\r\n },\r\n );\r\n } else {\r\n throw new Error('Model must be 1 or 2');\r\n }\r\n }\r\n\r\n /* Size */\r\n\r\n if (typeof options.size !== 'number') {\r\n throw new Error('Size must be a number');\r\n }\r\n\r\n if (options.size < 1 || options.size > 8) {\r\n throw new Error('Size must be between 1 and 8');\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'qrcode',\r\n property: 'size',\r\n value: options.size,\r\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x31, 0x43, options.size],\r\n },\r\n );\r\n\r\n /* Error level */\r\n\r\n const errorlevels = {\r\n 'l': 0x30,\r\n 'm': 0x31,\r\n 'q': 0x32,\r\n 'h': 0x33,\r\n };\r\n\r\n if (options.errorlevel in errorlevels) {\r\n result.push(\r\n {\r\n type: 'qrcode',\r\n property: 'errorlevel',\r\n value: options.errorlevel,\r\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x31, 0x45, errorlevels[options.errorlevel]],\r\n },\r\n );\r\n } else {\r\n throw new Error('Error level must be l, m, q or h');\r\n }\r\n\r\n /* Data */\r\n\r\n const bytes = CodepageEncoder.encode(value, 'iso8859-1');\r\n const length = bytes.length + 3;\r\n\r\n result.push(\r\n {\r\n type: 'qrcode',\r\n property: 'data',\r\n value,\r\n payload: [0x1d, 0x28, 0x6b, length & 0xff, (length >> 8) & 0xff, 0x31, 0x50, 0x30, ...bytes],\r\n },\r\n );\r\n\r\n /* Print QR code */\r\n\r\n result.push(\r\n {\r\n type: 'qrcode',\r\n command: 'print',\r\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x31, 0x51, 0x30],\r\n },\r\n );\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Generate a PDF417 code\r\n * @param {string} value Value to encode\r\n * @param {object} options Configuration object\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n pdf417(value, options) {\r\n const result = [];\r\n\r\n /* Columns */\r\n\r\n if (typeof options.columns !== 'number') {\r\n throw new Error('Columns must be a number');\r\n }\r\n\r\n if (options.columns !== 0 && (options.columns < 1 || options.columns > 30)) {\r\n throw new Error('Columns must be 0, or between 1 and 30');\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n property: 'columns',\r\n value: options.columns,\r\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x30, 0x41, options.columns],\r\n },\r\n );\r\n\r\n /* Rows */\r\n\r\n if (typeof options.rows !== 'number') {\r\n throw new Error('Rows must be a number');\r\n }\r\n\r\n if (options.rows !== 0 && (options.rows < 3 || options.rows > 90)) {\r\n throw new Error('Rows must be 0, or between 3 and 90');\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n property: 'rows',\r\n value: options.rows,\r\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x30, 0x42, options.rows],\r\n },\r\n );\r\n\r\n /* Width */\r\n\r\n if (typeof options.width !== 'number') {\r\n throw new Error('Width must be a number');\r\n }\r\n\r\n if (options.width < 2 || options.width > 8) {\r\n throw new Error('Width must be between 2 and 8');\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n property: 'width',\r\n value: options.width,\r\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x30, 0x43, options.width],\r\n },\r\n );\r\n\r\n /* Height */\r\n\r\n if (typeof options.height !== 'number') {\r\n throw new Error('Height must be a number');\r\n }\r\n\r\n if (options.height < 2 || options.height > 8) {\r\n throw new Error('Height must be between 2 and 8');\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n property: 'height',\r\n value: options.height,\r\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x30, 0x44, options.height],\r\n },\r\n );\r\n\r\n /* Error level */\r\n\r\n if (typeof options.errorlevel !== 'number') {\r\n throw new Error('Errorlevel must be a number');\r\n }\r\n\r\n if (options.errorlevel < 0 || options.errorlevel > 8) {\r\n throw new Error('Errorlevel must be between 0 and 8');\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n property: 'errorlevel',\r\n value: options.errorlevel,\r\n payload: [0x1d, 0x28, 0x6b, 0x04, 0x00, 0x30, 0x45, 0x30, options.errorlevel + 0x30],\r\n },\r\n );\r\n\r\n /* Model: standard or truncated */\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n property: 'truncated',\r\n value: !!options.truncated,\r\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x30, 0x46, options.truncated ? 0x01 : 0x00],\r\n },\r\n );\r\n\r\n /* Data */\r\n\r\n const bytes = CodepageEncoder.encode(value, 'ascii');\r\n const length = bytes.length + 3;\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n property: 'data',\r\n value,\r\n payload: [0x1d, 0x28, 0x6b, length & 0xff, (length >> 8) & 0xff, 0x30, 0x50, 0x30, ...bytes],\r\n },\r\n );\r\n\r\n /* Print PDF417 code */\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n command: 'print',\r\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x30, 0x51, 0x30],\r\n },\r\n );\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Encode an image\r\n * @param {ImageData} image ImageData object\r\n * @param {number} width Width of the image\r\n * @param {number} height Height of the image\r\n * @param {string} mode Image encoding mode ('column' or 'raster')\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n image(image, width, height, mode) {\r\n const result = [];\r\n\r\n const getPixel = (x, y) => x < width && y < height ? (image.data[((width * y) + x) * 4] > 0 ? 0 : 1) : 0;\r\n\r\n const getColumnData = (width, height) => {\r\n const data = [];\r\n\r\n for (let s = 0; s < Math.ceil(height / 24); s++) {\r\n const bytes = new Uint8Array(width * 3);\r\n\r\n for (let x = 0; x < width; x++) {\r\n for (let c = 0; c < 3; c++) {\r\n for (let b = 0; b < 8; b++) {\r\n bytes[(x * 3) + c] |= getPixel(x, (s * 24) + b + (8 * c)) << (7 - b);\r\n }\r\n }\r\n }\r\n\r\n data.push(bytes);\r\n }\r\n\r\n return data;\r\n };\r\n\r\n const getRowData = (width, height) => {\r\n const bytes = new Uint8Array((width * height) >> 3);\r\n\r\n for (let y = 0; y < height; y++) {\r\n for (let x = 0; x < width; x = x + 8) {\r\n for (let b = 0; b < 8; b++) {\r\n bytes[(y * (width >> 3)) + (x >> 3)] |= getPixel(x + b, y) << (7 - b);\r\n }\r\n }\r\n }\r\n\r\n return bytes;\r\n };\r\n\r\n /* Encode images with ESC * */\r\n\r\n if (mode == 'column') {\r\n result.push(\r\n {\r\n type: 'line-spacing',\r\n value: '24 dots',\r\n payload: [0x1b, 0x33, 0x24],\r\n },\r\n );\r\n\r\n getColumnData(width, height).forEach((bytes) => {\r\n result.push(\r\n {\r\n type: 'image',\r\n property: 'data',\r\n value: 'column',\r\n width,\r\n height: 24,\r\n payload: [0x1b, 0x2a, 0x21, width & 0xff, (width >> 8) & 0xff, ...bytes, 0x0a],\r\n },\r\n );\r\n });\r\n\r\n result.push(\r\n {\r\n type: 'line-spacing',\r\n value: 'default',\r\n payload: [0x1b, 0x32],\r\n },\r\n );\r\n }\r\n\r\n /* Encode images with GS v */\r\n\r\n if (mode == 'raster') {\r\n result.push(\r\n {\r\n type: 'image',\r\n command: 'data',\r\n value: 'raster',\r\n width,\r\n height,\r\n payload: [\r\n 0x1d, 0x76, 0x30, 0x00,\r\n (width >> 3) & 0xff, (((width >> 3) >> 8) & 0xff),\r\n height & 0xff, ((height >> 8) & 0xff),\r\n ...getRowData(width, height),\r\n ],\r\n },\r\n );\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Cut the paper\r\n * @param {string} value Cut type ('full' or 'partial')\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n cut(value) {\r\n let data = 0x00;\r\n\r\n if (value == 'partial') {\r\n data = 0x01;\r\n }\r\n\r\n return [\r\n {\r\n type: 'cut',\r\n payload: [0x1d, 0x56, data],\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Send a pulse to the cash drawer\r\n * @param {number} device Device number\r\n * @param {number} on Pulse ON time\r\n * @param {number} off Pulse OFF time\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n pulse(device, on, off) {\r\n if (typeof device === 'undefined') {\r\n device = 0;\r\n }\r\n\r\n if (typeof on === 'undefined') {\r\n on = 100;\r\n }\r\n\r\n if (typeof off === 'undefined') {\r\n off = 500;\r\n }\r\n\r\n on = Math.min(500, Math.round(on / 2));\r\n off = Math.min(500, Math.round(off / 2));\r\n\r\n\r\n return [\r\n {\r\n type: 'pulse',\r\n payload: [0x1b, 0x70, device ? 1 : 0, on & 0xff, off & 0xff],\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Enable or disable bold text\r\n * @param {boolean} value Enable or disable bold text, optional, default toggles between states\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n bold(value) {\r\n let data = 0x00;\r\n\r\n if (value) {\r\n data = 0x01;\r\n }\r\n\r\n return [\r\n 0x1b, 0x45, data,\r\n ];\r\n }\r\n\r\n /**\r\n * Enable or disable underline text\r\n * @param {boolean} value Enable or disable underline text, optional, default toggles between states\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n underline(value) {\r\n let data = 0x00;\r\n\r\n if (value) {\r\n data = 0x01;\r\n }\r\n\r\n return [\r\n 0x1b, 0x2d, data,\r\n ];\r\n }\r\n\r\n /**\r\n * Enable or disable italic text\r\n * @param {boolean} value Enable or disable italic text, optional, default toggles between states\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n italic(value) {\r\n let data = 0x00;\r\n\r\n if (value) {\r\n data = 0x01;\r\n }\r\n\r\n return [\r\n 0x1b, 0x34, data,\r\n ];\r\n }\r\n\r\n /**\r\n * Enable or disable inverted text\r\n * @param {boolean} value Enable or disable inverted text, optional, default toggles between states\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n invert(value) {\r\n let data = 0x00;\r\n\r\n if (value) {\r\n data = 0x01;\r\n }\r\n\r\n return [\r\n 0x1d, 0x42, data,\r\n ];\r\n }\r\n\r\n /**\r\n * Change text size\r\n * @param {number} width Width of the text (1-8)\r\n * @param {number} height Height of the text (1-8)\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n size(width, height) {\r\n return [\r\n 0x1d, 0x21, (height - 1) | (width - 1) << 4,\r\n ];\r\n }\r\n\r\n /**\r\n * Change the codepage\r\n * @param {number} value Codepage value\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n codepage(value) {\r\n return [\r\n 0x1b, 0x74, value,\r\n ];\r\n }\r\n\r\n /**\r\n * Flush the printers line buffer\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n flush() {\r\n return [];\r\n }\r\n}\r\n\r\nexport default LanguageEscPos;\r\n","import CodepageEncoder from '@point-of-sale/codepage-encoder';\r\n\r\n/**\r\n * StarPRNT Language commands\r\n */\r\nclass LanguageStarPrnt {\r\n /**\r\n * Initialize the printer\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n initialize() {\r\n return [\r\n {\r\n type: 'initialize',\r\n payload: [0x1b, 0x40, 0x18],\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Change the font\r\n * @param {string} value Font type ('A', 'B' or 'C')\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n font(value) {\r\n let type = 0x00;\r\n\r\n if (value === 'B') {\r\n type = 0x01;\r\n }\r\n\r\n if (value === 'C') {\r\n type = 0x02;\r\n }\r\n\r\n return [\r\n {\r\n type: 'font',\r\n value,\r\n payload: [0x1b, 0x1e, 0x46, type],\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Change the alignment\r\n * @param {string} value Alignment value ('left', 'center', 'right')\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n align(value) {\r\n let align = 0x00;\r\n\r\n if (value === 'center') {\r\n align = 0x01;\r\n } else if (value === 'right') {\r\n align = 0x02;\r\n }\r\n\r\n return [\r\n {\r\n type: 'align',\r\n value,\r\n payload: [0x1b, 0x1d, 0x61, align],\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Generate a barcode\r\n * @param {string} value Value to encode\r\n * @param {string|number} symbology Barcode symbology\r\n * @param {object} options Configuration object\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n barcode(value, symbology, options) {\r\n const result = [];\r\n\r\n const symbologies = {\r\n 'upce': 0x00,\r\n 'upca': 0x01,\r\n 'ean8': 0x02,\r\n 'ean13': 0x03,\r\n 'code39': 0x04,\r\n 'itf': 0x05,\r\n 'interleaved-2-of-5': 0x05,\r\n 'code128': 0x06,\r\n 'code93': 0x07,\r\n 'nw-7': 0x08,\r\n 'codabar': 0x08,\r\n 'gs1-128': 0x09,\r\n 'gs1-databar-omni': 0x0a,\r\n 'gs1-databar-truncated': 0x0b,\r\n 'gs1-databar-limited': 0x0c,\r\n 'gs1-databar-expanded': 0x0d,\r\n };\r\n\r\n if (typeof symbology === 'string' && typeof symbologies[symbology] === 'undefined') {\r\n throw new Error(`Symbology '${symbology}' not supported by language`);\r\n }\r\n\r\n if (options.width < 1 || options.width > 3) {\r\n throw new Error('Width must be between 1 and 3');\r\n }\r\n\r\n /* Selecting mode A, B or C for Code128 is not supported for StarPRNT, so ignore it and let the printer choose */\r\n\r\n if (symbology === 'code128' && value.startsWith('{')) {\r\n value = value.slice(2);\r\n }\r\n\r\n /* Encode the barcode value */\r\n\r\n const bytes = CodepageEncoder.encode(value, 'ascii');\r\n\r\n const identifier = typeof symbology === 'string' ? symbologies[symbology] : symbology;\r\n\r\n result.push(\r\n {\r\n type: 'barcode',\r\n value: {symbology: symbology, data: value, width: options.width, height: options.height, text: options.text},\r\n payload: [\r\n 0x1b, 0x62,\r\n identifier,\r\n options.text ? 0x02 : 0x01,\r\n options.width,\r\n options.height,\r\n ...bytes, 0x1e,\r\n ],\r\n },\r\n );\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Generate a QR code\r\n * @param {string} value Value to encode\r\n * @param {object} options Configuration object\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n qrcode(value, options) {\r\n const result = [];\r\n\r\n /* Model */\r\n\r\n const models = {\r\n 1: 0x01,\r\n 2: 0x02,\r\n };\r\n\r\n if (options.model in models) {\r\n result.push(\r\n {\r\n type: 'qrcode',\r\n property: 'model',\r\n value: options.model,\r\n payload: [0x1b, 0x1d, 0x79, 0x53, 0x30, models[options.model]],\r\n },\r\n );\r\n } else {\r\n throw new Error('Model must be 1 or 2');\r\n }\r\n\r\n /* Size */\r\n\r\n if (typeof options.size !== 'number') {\r\n throw new Error('Size must be a number');\r\n }\r\n\r\n if (options.size < 1 || options.size > 8) {\r\n throw new Error('Size must be between 1 and 8');\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'qrcode',\r\n property: 'size',\r\n value: options.size,\r\n payload: [0x1b, 0x1d, 0x79, 0x53, 0x32, options.size],\r\n },\r\n );\r\n\r\n /* Error level */\r\n\r\n const errorlevels = {\r\n 'l': 0x00,\r\n 'm': 0x01,\r\n 'q': 0x02,\r\n 'h': 0x03,\r\n };\r\n\r\n if (options.errorlevel in errorlevels) {\r\n result.push(\r\n {\r\n type: 'qrcode',\r\n property: 'errorlevel',\r\n value: options.errorlevel,\r\n payload: [0x1b, 0x1d, 0x79, 0x53, 0x31, errorlevels[options.errorlevel]],\r\n },\r\n );\r\n } else {\r\n throw new Error('Error level must be l, m, q or h');\r\n }\r\n\r\n /* Data */\r\n\r\n const bytes = CodepageEncoder.encode(value, 'iso8859-1');\r\n const length = bytes.length;\r\n\r\n result.push(\r\n {\r\n type: 'qrcode',\r\n property: 'data',\r\n value,\r\n payload: [\r\n 0x1b, 0x1d, 0x79, 0x44, 0x31, 0x00,\r\n length & 0xff, (length >> 8) & 0xff,\r\n ...bytes,\r\n ],\r\n },\r\n );\r\n\r\n /* Print QR code */\r\n\r\n result.push(\r\n {\r\n type: 'qrcode',\r\n command: 'print',\r\n payload: [0x1b, 0x1d, 0x79, 0x50],\r\n },\r\n );\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Generate a PDF417 code\r\n * @param {string} value Value to encode\r\n * @param {object} options Configuration object\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n pdf417(value, options) {\r\n const result = [];\r\n\r\n /* Columns and Rows */\r\n\r\n if (typeof options.columns !== 'number') {\r\n throw new Error('Columns must be a number');\r\n }\r\n\r\n if (options.columns !== 0 && (options.columns < 1 || options.columns > 30)) {\r\n throw new Error('Columns must be 0, or between 1 and 30');\r\n }\r\n\r\n if (typeof options.rows !== 'number') {\r\n throw new Error('Rows must be a number');\r\n }\r\n\r\n if (options.rows !== 0 && (options.rows < 3 || options.rows > 90)) {\r\n throw new Error('Rows must be 0, or between 3 and 90');\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n value: `rows: ${options.rows}, columns: ${options.columns}`,\r\n payload: [0x1b, 0x1d, 0x78, 0x53, 0x30, 0x01, options.rows, options.columns],\r\n },\r\n );\r\n\r\n /* Width */\r\n\r\n if (typeof options.width !== 'number') {\r\n throw new Error('Width must be a number');\r\n }\r\n\r\n if (options.width < 2 || options.width > 8) {\r\n throw new Error('Width must be between 2 and 8');\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n property: 'width',\r\n value: options.width,\r\n payload: [0x1b, 0x1d, 0x78, 0x53, 0x32, options.width],\r\n },\r\n );\r\n\r\n /* Height */\r\n\r\n if (typeof options.height !== 'number') {\r\n throw new Error('Height must be a number');\r\n }\r\n\r\n if (options.height < 2 || options.height > 8) {\r\n throw new Error('Height must be between 2 and 8');\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n property: 'height',\r\n value: options.height,\r\n payload: [0x1b, 0x1d, 0x78, 0x53, 0x33, options.height],\r\n },\r\n );\r\n\r\n /* Error level */\r\n\r\n if (typeof options.errorlevel !== 'number') {\r\n throw new Error('Errorlevel must be a number');\r\n }\r\n\r\n if (options.errorlevel < 0 || options.errorlevel > 8) {\r\n throw new Error('Errorlevel must be between 0 and 8');\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n property: 'errorlevel',\r\n value: options.errorlevel,\r\n payload: [0x1b, 0x1d, 0x78, 0x53, 0x31, options.errorlevel],\r\n },\r\n );\r\n\r\n /* Data */\r\n\r\n const bytes = CodepageEncoder.encode(value, 'ascii');\r\n const length = bytes.length;\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n property: 'data',\r\n value,\r\n payload: [\r\n 0x1b, 0x1d, 0x78, 0x44,\r\n length & 0xff, (length >> 8) & 0xff,\r\n ...bytes,\r\n ],\r\n },\r\n );\r\n\r\n /* Print PDF417 code */\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n command: 'print',\r\n payload: [0x1b, 0x1d, 0x78, 0x50],\r\n },\r\n );\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Encode an image\r\n * @param {ImageData} image ImageData object\r\n * @param {number} width Width of the image\r\n * @param {number} height Height of the image\r\n * @param {string} mode Image encoding mode (value is ignored)\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n image(image, width, height, mode) {\r\n const result = [];\r\n\r\n const getPixel = (x, y) => typeof image.data[((width * y) + x) * 4] === 'undefined' ||\r\n image.data[((width * y) + x) * 4] > 0 ? 0 : 1;\r\n\r\n result.push(\r\n {\r\n type: 'line-spacing',\r\n value: '24 dots',\r\n payload: [0x1b, 0x30],\r\n },\r\n );\r\n\r\n for (let s = 0; s < height / 24; s++) {\r\n const y = s * 24;\r\n const bytes = new Uint8Array(width * 3);\r\n\r\n for (let x = 0; x < width; x++) {\r\n const i = x * 3;\r\n\r\n bytes[i] =\r\n getPixel(x, y + 0) << 7 |\r\n getPixel(x, y + 1) << 6 |\r\n getPixel(x, y + 2) << 5 |\r\n getPixel(x, y + 3) << 4 |\r\n getPixel(x, y + 4) << 3 |\r\n getPixel(x, y + 5) << 2 |\r\n getPixel(x, y + 6) << 1 |\r\n getPixel(x, y + 7);\r\n\r\n bytes[i + 1] =\r\n getPixel(x, y + 8) << 7 |\r\n getPixel(x, y + 9) << 6 |\r\n getPixel(x, y + 10) << 5 |\r\n getPixel(x, y + 11) << 4 |\r\n getPixel(x, y + 12) << 3 |\r\n getPixel(x, y + 13) << 2 |\r\n getPixel(x, y + 14) << 1 |\r\n getPixel(x, y + 15);\r\n\r\n bytes[i + 2] =\r\n getPixel(x, y + 16) << 7 |\r\n getPixel(x, y + 17) << 6 |\r\n getPixel(x, y + 18) << 5 |\r\n getPixel(x, y + 19) << 4 |\r\n getPixel(x, y + 20) << 3 |\r\n getPixel(x, y + 21) << 2 |\r\n getPixel(x, y + 22) << 1 |\r\n getPixel(x, y + 23);\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'image',\r\n property: 'data',\r\n value: 'column',\r\n width,\r\n height: 24,\r\n payload: [\r\n 0x1b, 0x58,\r\n width & 0xff, (width >> 8) & 0xff,\r\n ...bytes,\r\n 0x0a, 0x0d,\r\n ],\r\n },\r\n );\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'line-spacing',\r\n value: 'default',\r\n payload: [0x1b, 0x7a, 0x01],\r\n },\r\n );\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Cut the paper\r\n * @param {string} value Cut type ('full' or 'partial')\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n cut(value) {\r\n let data = 0x00;\r\n\r\n if (value == 'partial') {\r\n data = 0x01;\r\n }\r\n\r\n return [\r\n {\r\n type: 'cut',\r\n payload: [0x1b, 0x64, data],\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Send a pulse to the cash drawer\r\n * @param {number} device Device number\r\n * @param {number} on Pulse ON time\r\n * @param {number} off Pulse OFF time\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n pulse(device, on, off) {\r\n if (typeof device === 'undefined') {\r\n device = 0;\r\n }\r\n\r\n if (typeof on === 'undefined') {\r\n on = 200;\r\n }\r\n\r\n if (typeof off === 'undefined') {\r\n off = 200;\r\n }\r\n\r\n on = Math.min(127, Math.round(on / 10));\r\n off = Math.min(127, Math.round(off / 10));\r\n\r\n return [\r\n {\r\n type: 'pulse',\r\n payload: [0x1b, 0x07, on & 0xff, off & 0xff, device ? 0x1a : 0x07],\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Enable or disable bold text\r\n * @param {boolean} value Enable or disable bold text, optional, default toggles between states\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n bold(value) {\r\n let data = 0x46;\r\n\r\n if (value) {\r\n data = 0x45;\r\n }\r\n\r\n return [\r\n 0x1b, data,\r\n ];\r\n }\r\n\r\n /**\r\n * Enable or disable underline text\r\n * @param {boolean} value Enable or disable underline text, optional, default toggles between states\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n underline(value) {\r\n let data = 0x00;\r\n\r\n if (value) {\r\n data = 0x01;\r\n }\r\n\r\n return [\r\n 0x1b, 0x2d, data,\r\n ];\r\n }\r\n\r\n /**\r\n * Enable or disable italic text\r\n * @param {boolean} value Enable or disable italic text, optional, default toggles between states\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n italic(value) {\r\n return [];\r\n }\r\n\r\n /**\r\n * Enable or disable inverted text\r\n * @param {boolean} value Enable or disable inverted text, optional, default toggles between states\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n invert(value) {\r\n let data = 0x35;\r\n\r\n if (value) {\r\n data = 0x34;\r\n }\r\n\r\n return [\r\n 0x1b, data,\r\n ];\r\n }\r\n\r\n /**\r\n * Change text size\r\n * @param {number} width Width of the text (1-8)\r\n * @param {number} height Height of the text (1-8)\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n size(width, height) {\r\n return [\r\n 0x1b, 0x69, height - 1, width - 1,\r\n ];\r\n }\r\n\r\n /**\r\n * Change the codepage\r\n * @param {number} value Codepage value\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n codepage(value) {\r\n return [\r\n 0x1b, 0x1d, 0x74, value,\r\n ];\r\n }\r\n\r\n /**\r\n * Flush the printers line buffer\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n flush() {\r\n return [\r\n {\r\n type: 'print-mode',\r\n value: 'page',\r\n payload: [0x1b, 0x1d, 0x50, 0x30],\r\n },\r\n {\r\n type: 'print-mode',\r\n value: 'line',\r\n payload: [0x1b, 0x1d, 0x50, 0x31],\r\n },\r\n ];\r\n }\r\n}\r\n\r\nexport default LanguageStarPrnt;\r\n","\r\n/**\r\n * Store and manage text styles\r\n */\r\nclass TextStyle {\r\n #default = {\r\n bold: false,\r\n italic: false,\r\n underline: false,\r\n invert: false,\r\n width: 1,\r\n height: 1,\r\n };\r\n\r\n #current;\r\n #callback;\r\n\r\n /**\r\n * Create a new TextStyle object\r\n *\r\n * @param {object} options Object containing configuration options\r\n */\r\n constructor(options) {\r\n this.#current = structuredClone(this.#default);\r\n this.#callback = options.callback || (() => {});\r\n }\r\n\r\n /**\r\n * Return commands to get to the default style from the current style\r\n *\r\n * @return {array} Array of modified properties\r\n */\r\n store() {\r\n const result = [];\r\n\r\n const properties = new Map();\r\n\r\n for (const property in this.#current) {\r\n if (this.#current[property] !== this.#default[property]) {\r\n if (property === 'width' || property === 'height') {\r\n properties.set('size', {width: this.#default.width, height: this.#default.height});\r\n } else {\r\n properties.set(property, this.#default[property]);\r\n }\r\n }\r\n }\r\n\r\n for (const property of properties) {\r\n result.push({\r\n type: 'style',\r\n property: property[0],\r\n value: property[1],\r\n });\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Return commands to get to the current style from the default style\r\n *\r\n * @return {array} Array of modified properties\r\n */\r\n restore() {\r\n const result = [];\r\n\r\n const properties = new Map();\r\n\r\n for (const property in this.#current) {\r\n if (this.#current[property] !== this.#default[property]) {\r\n if (property === 'width' || property === 'height') {\r\n properties.set('size', {width: this.#current.width, height: this.#current.height});\r\n } else {\r\n properties.set(property, this.#current[property]);\r\n }\r\n }\r\n }\r\n\r\n for (const property of properties) {\r\n result.push({\r\n type: 'style',\r\n property: property[0],\r\n value: property[1],\r\n });\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Set the bold property\r\n *\r\n * @param {boolean} value Is bold enabled, or not?\r\n */\r\n set bold(value) {\r\n if (value !== this.#current.bold) {\r\n this.#current.bold = value;\r\n\r\n this.#callback({\r\n type: 'style',\r\n property: 'bold',\r\n value,\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Get the bold property\r\n *\r\n * @return {boolean} Is bold enabled, or not?\r\n */\r\n get bold() {\r\n return this.#current.bold;\r\n }\r\n\r\n /**\r\n * Set the italic property\r\n *\r\n * @param {boolean} value Is italic enabled, or not?\r\n */\r\n set italic(value) {\r\n if (value !== this.#current.italic) {\r\n this.#current.italic = value;\r\n\r\n this.#callback({\r\n type: 'style',\r\n property: 'italic',\r\n value,\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Get the italic property\r\n *\r\n * @return {boolean} Is italic enabled, or not?\r\n */\r\n get italic() {\r\n return this.#current.italic;\r\n }\r\n\r\n /**\r\n * Set the underline property\r\n *\r\n * @param {boolean} value Is underline enabled, or not?\r\n */\r\n set underline(value) {\r\n if (value !== this.#current.underline) {\r\n this.#current.underline = value;\r\n\r\n this.#callback({\r\n type: 'style',\r\n property: 'underline',\r\n value,\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Get the underline property\r\n *\r\n * @return {boolean} Is underline enabled, or not?\r\n */\r\n get underline() {\r\n return this.#current.underline;\r\n }\r\n\r\n /**\r\n * Set the invert property\r\n *\r\n * @param {boolean} value Is invert enabled, or not?\r\n */\r\n set invert(value) {\r\n if (value !== this.#current.invert) {\r\n this.#current.invert = value;\r\n\r\n this.#callback({\r\n type: 'style',\r\n property: 'invert',\r\n value,\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Get the invert property\r\n *\r\n * @return {boolean} Is invert enabled, or not?\r\n */\r\n get invert() {\r\n return this.#current.invert;\r\n }\r\n\r\n /**\r\n * Set the width property\r\n *\r\n * @param {number} value The width of a character\r\n */\r\n set width(value) {\r\n if (value !== this.#current.width) {\r\n this.#current.width = value;\r\n\r\n this.#callback({\r\n type: 'style',\r\n property: 'size',\r\n value: {width: this.#current.width, height: this.#current.height},\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Get the width property\r\n *\r\n * @return {number} The width of a character\r\n */\r\n get width() {\r\n return this.#current.width;\r\n }\r\n\r\n /**\r\n * Set the height property\r\n *\r\n * @param {number} value The height of a character\r\n */\r\n set height(value) {\r\n if (value !== this.#current.height) {\r\n this.#current.height = value;\r\n\r\n this.#callback({\r\n type: 'style',\r\n property: 'size',\r\n value: {width: this.#current.width, height: this.#current.height},\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Get the height property\r\n *\r\n * @return {number} The height of a character\r\n */\r\n get height() {\r\n return this.#current.height;\r\n }\r\n}\r\n\r\nexport default TextStyle;\r\n","\r\n/**\r\n * Wrap text into lines of a specified width.\r\n */\r\nclass TextWrap {\r\n /**\r\n * Static function to wrap text into lines of a specified width.\r\n *\r\n * @param {string} value Text to wrap\r\n * @param {object} options Object containing configuration options\r\n * @return {array} Array of lines\r\n */\r\n static wrap(value, options) {\r\n const result = [];\r\n let line = [];\r\n let length = options.indent || 0;\r\n const width = options.width || 1;\r\n const columns = options.columns || 42;\r\n\r\n const lines = String(value).split(/\\r\\n|\\n/g);\r\n\r\n for (const value of lines) {\r\n const chunks = value.match(/[^\\s-]+?-\\b|\\S+|\\s+|\\r\\n?|\\n/g) || ['~~empty~~'];\r\n\r\n for (const chunk of chunks) {\r\n if (chunk === '~~empty~~') {\r\n result.push(line);\r\n line = [];\r\n length = 0;\r\n continue;\r\n }\r\n\r\n /* The word does not fit on the line */\r\n\r\n if (length + (chunk.length * width) > columns) {\r\n /* The word is longer than the line */\r\n\r\n if (chunk.length * width > columns) {\r\n /* Calculate the remaining space on the line */\r\n\r\n const remaining = columns - length;\r\n\r\n /* Split the word into pieces */\r\n\r\n const letters = chunk.split('');\r\n let piece;\r\n const pieces = [];\r\n\r\n /* If there are at least 8 position remaining, break early */\r\n\r\n if (remaining > 8 * width) {\r\n piece = letters.splice(0, Math.floor(remaining / width)).join('');\r\n\r\n line.push(piece);\r\n result.push(line);\r\n\r\n line = [];\r\n length = 0;\r\n }\r\n\r\n /* The remaining letters can be split into pieces the size of the width */\r\n\r\n while ((piece = letters.splice(0, Math.floor(columns / width))).length) {\r\n pieces.push(piece.join(''));\r\n }\r\n\r\n for (const piece of pieces) {\r\n if (length + (piece.length * width) > columns) {\r\n result.push(line);\r\n line = [];\r\n length = 0;\r\n }\r\n\r\n line.push(piece);\r\n length += piece.length * width;\r\n }\r\n\r\n continue;\r\n }\r\n\r\n /* Word fits on the next line */\r\n result.push(line);\r\n line = [];\r\n length = 0;\r\n }\r\n\r\n /* Check if we are whitespace */\r\n\r\n if (chunk.match(/\\s+/) && length == 0) {\r\n continue;\r\n }\r\n\r\n line.push(chunk);\r\n length += chunk.length * width;\r\n }\r\n\r\n if (line.length > 0) {\r\n result.push(line);\r\n line = [];\r\n length = 0;\r\n }\r\n }\r\n\r\n for (let i = 0; i < result.length; i++) {\r\n result[i] = result[i].join('');\r\n\r\n if (i < result.length - 1) {\r\n result[i] = result[i].trimEnd();\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n\r\nexport default TextWrap;\r\n","import TextStyle from './text-style.js';\r\nimport TextWrap from './text-wrap.js';\r\n\r\n/**\r\n * Compose lines of text and commands\r\n */\r\nclass LineComposer {\r\n #embedded;\r\n #columns;\r\n #align;\r\n #callback;\r\n\r\n #cursor = 0;\r\n #stored;\r\n #buffer = [];\r\n\r\n\r\n /**\r\n * Create a new LineComposer object\r\n *\r\n * @param {object} options Object containing configuration options\r\n */\r\n constructor(options) {\r\n this.#embedded = options.embedded || false;\r\n this.#columns = options.columns || 42;\r\n this.#align = options.align || 'left';\r\n this.#callback = options.callback || (() => {});\r\n\r\n this.style = new TextStyle({\r\n callback: (value) => {\r\n this.add(value, 0);\r\n },\r\n });\r\n\r\n this.#stored = this.style.store();\r\n }\r\n\r\n /**\r\n * Add text to the line, potentially wrapping it\r\n *\r\n * @param {string} value Text to add to the line\r\n * @param {number} codepage Codepage to use for the text\r\n */\r\n text(value, codepage) {\r\n const lines = TextWrap.wrap(value, {columns: this.#columns, width: this.style.width, indent: this.#cursor});\r\n\r\n for (let i = 0; i < lines.length; i++) {\r\n if (lines[i].length) {\r\n /* Add the line to the buffer */\r\n this.add({type: 'text', value: lines[i], codepage}, lines[i].length * this.style.width);\r\n\r\n /* If it is not the last line, flush the buffer */\r\n if (i < lines.length - 1) {\r\n this.flush();\r\n }\r\n } else {\r\n /* In case the line is empty, flush the buffer */\r\n this.flush({forceNewline: true});\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Add spaces to the line\r\n *\r\n * @param {number} size Number of spaces to add to the line\r\n */\r\n space(size) {\r\n this.add({type: 'space', size}, size);\r\n }\r\n\r\n /**\r\n * Add raw bytes to to the line\r\n *\r\n * @param {array} value Array of bytes to add to the line\r\n * @param {number} length Length in characters of the value\r\n */\r\n raw(value, length) {\r\n this.add({type: 'raw', payload: value}, length || 0);\r\n }\r\n\r\n /**\r\n * Add an item to the line buffer, potentially flushing it\r\n *\r\n * @param {object} value Item to add to the line buffer\r\n * @param {number} length Length in characters of the value\r\n */\r\n add(value, length) {\r\n if (value instanceof Array) {\r\n for (const item of value) {\r\n this.add(item);\r\n }\r\n\r\n this.#cursor += length || 0;\r\n return;\r\n }\r\n\r\n length = length || 0;\r\n\r\n if (length + this.#cursor > this.#columns) {\r\n this.flush();\r\n }\r\n\r\n this.#cursor += length;\r\n this.#buffer = this.#buffer.concat(value);\r\n }\r\n\r\n /**\r\n * Move the cursor to the end of the line, forcing a flush\r\n * with the next item to add to the line buffer\r\n */\r\n end() {\r\n this.#cursor = this.#columns;\r\n }\r\n\r\n /**\r\n * Fetch the contents of line buffer\r\n *\r\n * @param {options} options Options for flushing the buffer\r\n * @return {array} Array of items in the line buffer\r\n */\r\n fetch(options) {\r\n /* Unless forced keep style changes for the next line */\r\n\r\n if (this.#cursor === 0 && !options.forceNewline && !options.forceFlush) {\r\n return [];\r\n }\r\n\r\n /* Check the alignment of the current line */\r\n\r\n const align = {\r\n current: this.#align,\r\n next: null,\r\n };\r\n\r\n for (let i = 0; i < this.#buffer.length - 1; i++) {\r\n if (this.#buffer[i].type === 'align' && !this.#buffer[i].payload) {\r\n align.current = this.#buffer[i].value;\r\n }\r\n }\r\n\r\n /* Check the last item in the buffer, to see if it changes the alignment, then save it for the next line */\r\n\r\n if (this.#buffer.length) {\r\n const last = this.#buffer[this.#buffer.length - 1];\r\n\r\n if (last.type === 'align' && !last.payload) {\r\n align.next = last.value;\r\n }\r\n }\r\n\r\n this.#align = align.current;\r\n\r\n /* Create a clean buffer without alignment changes */\r\n\r\n const buffer = this.#buffer.filter((item) => item.type !== 'align' || item.payload);\r\n\r\n /* Fetch the contents of the line buffer */\r\n\r\n let result = [];\r\n\r\n const restore = this.style.restore();\r\n const store = this.style.store();\r\n\r\n if (this.#cursor === 0 && (options.ignoreAlignment || !this.#embedded)) {\r\n result = this.#merge([\r\n ...this.#stored,\r\n ...buffer,\r\n ...store,\r\n ]);\r\n } else {\r\n if (this.#align === 'right') {\r\n let last;\r\n\r\n /* Find index of last text or space element */\r\n\r\n for (let i = buffer.length - 1; i >= 0; i--) {\r\n if (buffer[i].type === 'text' || buffer[i].type === 'space') {\r\n last = i;\r\n break;\r\n }\r\n }\r\n\r\n /* Remove trailing spaces from lines */\r\n\r\n if (typeof last === 'number') {\r\n if (buffer[last].type === 'space' && buffer[last].size > this.style.width) {\r\n buffer[last].size -= this.style.width;\r\n this.#cursor -= this.style.width;\r\n }\r\n\r\n if (buffer[last].type === 'text' && buffer[last].value.endsWith(' ')) {\r\n buffer[last].value = buffer[last].value.slice(0, -1);\r\n this.#cursor -= this.style.width;\r\n }\r\n }\r\n\r\n result = this.#merge([\r\n {type: 'space', size: this.#columns - this.#cursor},\r\n ...this.#stored,\r\n ...buffer,\r\n ...store,\r\n ]);\r\n }\r\n\r\n if (this.#align === 'center') {\r\n const left = (this.#columns - this.#cursor) >> 1;\r\n\r\n result = this.#merge([\r\n {type: 'space', size: left},\r\n ...this.#stored,\r\n ...buffer,\r\n ...store,\r\n {type: 'space', size: this.#embedded ? this.#columns - this.#cursor - left : 0},\r\n ]);\r\n }\r\n\r\n if (this.#align === 'left') {\r\n result = this.#merge([\r\n ...this.#stored,\r\n ...buffer,\r\n ...store,\r\n {type: 'space', size: this.#embedded ? this.#columns - this.#cursor : 0},\r\n ]);\r\n }\r\n }\r\n\r\n this.#stored = restore;\r\n this.#buffer = [];\r\n this.#cursor = 0;\r\n\r\n if (result.length === 0 && options.forceNewline) {\r\n result.push({type: 'empty'});\r\n }\r\n\r\n if (align.next) {\r\n this.#align = align.next;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Flush the contents of the line buffer\r\n *\r\n * @param {options} options Options for flushing the buffer\r\n */\r\n flush(options) {\r\n options = Object.assign({\r\n forceNewline: false,\r\n forceFlush: false,\r\n ignoreAlignment: false,\r\n }, options || {});\r\n\r\n const result = this.fetch(options);\r\n\r\n if (result.length) {\r\n this.#callback(result);\r\n }\r\n }\r\n\r\n /**\r\n * Merge text items and spaces in the line buffer\r\n *\r\n * @param {array} items Array of items\r\n * @return {array} Array of merged items\r\n */\r\n #merge(items) {\r\n const result = [];\r\n let last = -1;\r\n\r\n for (let item of items) {\r\n if (item.type === 'space') {\r\n if (item.size === 0) {\r\n continue;\r\n }\r\n\r\n item = {type: 'text', value: ' '.repeat(item.size), codepage: null};\r\n }\r\n\r\n if (item.type === 'text') {\r\n /* Check if we can merge the text with the last item */\r\n\r\n const allowMerge =\r\n last >= 0 &&\r\n result[last].type === 'text' &&\r\n (\r\n result[last].codepage === item.codepage ||\r\n result[last].codepage === null ||\r\n item.codepage === null\r\n );\r\n\r\n if (allowMerge) {\r\n result[last].value += item.value;\r\n result[last].codepage = result[last].codepage || item.codepage;\r\n continue;\r\n }\r\n\r\n result.push(item);\r\n last++;\r\n } else if (item.type === 'style' && item.property === 'size') {\r\n const allowMerge =\r\n last >= 0 &&\r\n result[last].type === 'style' &&\r\n result[last].property === 'size';\r\n\r\n if (allowMerge) {\r\n result[last].value = item.value;\r\n continue;\r\n }\r\n\r\n result.push(item);\r\n last++;\r\n } else {\r\n result.push(item);\r\n last++;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Get the current position of the cursor\r\n *\r\n * @return {number} Current position of the cursor\r\n */\r\n get cursor() {\r\n return this.#cursor;\r\n }\r\n\r\n /**\r\n * Set the alignment of the current line\r\n *\r\n * @param {string} value Text alignment, can be 'left', 'center', or 'right'\r\n */\r\n set align(value) {\r\n this.add({type: 'align', value}, 0);\r\n }\r\n\r\n /**\r\n * Get the alignment of the current line\r\n *\r\n * @return {string} Text alignment, can be 'left', 'center', or 'right'\r\n */\r\n get align() {\r\n let align = this.#align;\r\n\r\n for (let i = 0; i < this.#buffer.length; i++) {\r\n if (this.#buffer[i].type === 'align') {\r\n align = this.#buffer[i].value;\r\n }\r\n }\r\n\r\n return align;\r\n }\r\n\r\n /**\r\n * Set the number of columns of the current line\r\n *\r\n * @param {number} value columns of the line\r\n */\r\n set columns(value) {\r\n this.#columns = value;\r\n }\r\n\r\n /**\r\n * Get the number of columns of the current line\r\n *\r\n * @return {number} columns of the line\r\n */\r\n get columns() {\r\n return this.#columns;\r\n }\r\n}\r\n\r\nexport default LineComposer;\r\n","const codepageMappings = {\n\t'esc-pos': {\n\t\t'bixolon/legacy': ['cp437','epson/katakana','cp850','cp860','cp863','cp865',,,,,,,,,,,,,,'cp858'],\n\t\t'bixolon': ['cp437','epson/katakana','cp850','cp860','cp863','cp865',,,,,,,,,,,'windows1252','cp866','cp852','cp858',,'cp862','cp864','thai42','windows1253','windows1254','windows1257',,'windows1251','cp737','cp775','thai14','bixolon/hebrew','windows1255','thai11','thai18','cp885','cp857','iso8859-7','thai16','windows1256','windows1258','khmer',,,,'bixolon/cp866','windows1250',,'tcvn3','tcvn3capitals','viscii'],\n\t\t'citizen': ['cp437','epson/katakana','cp858','cp860','cp863','cp865','cp852','cp866','cp857',,,,,,,,'windows1252',,,,,'thai11',,,,,'thai13',,,,'tcvn3','tcvn3capitals','windows1258',,,,,,,,'cp864'],\n\t\t'epson/legacy': ['cp437','epson/katakana','cp850','cp860','cp863','cp865',,,,,,,,,,,'windows1252','cp866','cp852','cp858'],\n\t\t'epson': ['cp437','epson/katakana','cp850','cp860','cp863','cp865',,,,,,'cp851','cp853','cp857','cp737','iso8859-7','windows1252','cp866','cp852','cp858','thai42','thai11',,,,,'thai13',,,,'tcvn3','tcvn3capitals','cp720','cp775','cp855','cp861','cp862','cp864','cp869','epson/iso8859-2','iso8859-15','cp1098','cp774','cp772','cp1125','windows1250','windows1251','windows1253','windows1254','windows1255','windows1256','windows1257','windows1258','rk1048'],\n\t\t'fujitsu': ['cp437','epson/katakana','cp850','cp860','cp863','cp865',,,'cp857',,,,,,,,'windows1252','cp866','cp852','cp858',,,,,,,'thai13',,,,,,,,,,,,,,'cp864'],\n\t\t'hp': ['cp437','cp850','cp852','cp860','cp863','cp865','cp858','cp866','windows1252','cp862','cp737','cp874','cp857','windows1251','windows1255','rk1048'],\n\t\t'metapace': ['cp437','epson/katakana','cp850','cp860','cp863','cp865',,,,,,,,,,,,,,'cp858'],\n\t\t'mpt': ['cp437',,'cp850','cp860','cp863','cp865','windows1251','cp866','cp3021','cp3012'],\n\t\t'pos-5890': ['cp437','epson/katakana','cp850','cp860','cp863','cp865','iso8859-1',,'cp862',,,,,,,,'windows1252','cp866','cp852','cp858',,,,'windows1251','cp737','windows1257',,'windows1258','cp864',,,,'windows1255',,,,,,,,,,,,,,,,,,,,,,,,'cp861',,,,'cp855','cp857',,,,'cp851','cp869',,'cp772','cp774',,,'windows1250',,'cp3840',,'cp3843','cp3844','cp3845','cp3846','cp3847','cp3848',,'cp771','cp3001','cp3002','cp3011','cp3012',,'cp3041','windows1253','windows1254','windows1256','cp720',,'cp775'],\n\t\t'pos-8360': ['cp437','epson/katakana','cp850','cp860','cp863','cp865','iso8859-1','windows1253','cp862',,,,,,,,'windows1252','cp866','cp852','cp858',,'latvian',,'windows1251','cp737','windows1257',,'windows1258','cp864',,,'pos8360/hebrew','windows1255',,,,,,,,,,,,,,,,,,,,,,,,'cp861',,,,'cp855','cp857',,,,'cp851','cp869',,'cp772','cp774',,,'windows1250',,'cp3840',,'cp3843','cp3844','cp3845','cp3846','cp3847','cp3848',,'cp771','cp3001','cp3002','cp3011','cp3012',,,,'windows1254','windows1256','cp720',,'cp775'],\n\t\t'star': ['cp437','star/katakana','cp850','cp860','cp863','cp865',,,,,,,,,,,'windows1252','cp866','cp852','cp858','thai42','thai11','thai13','thai14','thai16',,'thai18'],\n\t\t'xprinter': ['cp437','epson/katakana','cp850','cp860','cp863','cp865','iso8859-1','windows1253','xprinter/hebrew','cp3012',,'windows1255',,,,,'windows1252','cp866','cp852','cp858',,'latvian','cp864','windows1251','cp737','windows1257',,,,,,,,'windows1256'],\n\t\t'youku': ['cp437','epson/katakana','cp850','cp860','cp863','cp865','windows1251','cp866','cp3021','cp3012',,,,,,'cp862','windows1252',,'cp852','cp858',,,'cp864','iso8859-1','cp737','windows1257',,,'cp855','cp857','windows1250','cp775','windows1254','windows1255','windows1256','windows1258',,,'iso8859-1',,,,,,'iso8859-15',,,'cp874'],\n\t},\n\t'star-prnt': {\n\t\t'star': ['star/standard','cp437','star/katakana',,'cp858','cp852','cp860','cp861','cp863','cp865','cp866','cp855','cp857','cp862','cp864','cp737','cp851','cp869','star/cp928','cp772','cp774','star/cp874',,,,,,,,,,,'windows1252','windows1250','windows1251',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'cp3840','cp3841','cp3843','cp3844','cp3845','cp3846','cp3847','cp3848','cp1001','cp771','cp3001','cp3002','cp3011','cp3012','cp3021','cp3041'],\n\t}\n};\n\ncodepageMappings['star-line'] = codepageMappings['star-prnt'];\ncodepageMappings['esc-pos']['zijang'] = codepageMappings['esc-pos']['pos-5890'];\n\nexport default codepageMappings;\n","const printerDefinitions = {\n\t'bixolon-srp350': {vendor:'Bixolon',model:'SRP-350',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'bixolon/legacy',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:false,models:[]},pdf417:{supported:false},cutter:{feed:4}}},\n\t'bixolon-srp350iii': {vendor:'Bixolon',model:'SRP-350III',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'bixolon',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56},C:{size:'9x24',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'citizen-ct-s310ii': {vendor:'Citizen',model:'CT-S310II',media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'citizen',fonts:{A:{size:'12x24',columns:48},B:{size:'9x24',columns:64},C:{size:'8x16',columns:72}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:3}}},\n\t'epson-tm-m30ii': {vendor:'Epson',model:'TM-m30II',interfaces:{usb:{productName:'TM-m30II'}},media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:48},B:{size:'10x24',columns:57},C:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded','code128-auto']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-m30iii': {vendor:'Epson',model:'TM-m30III',interfaces:{usb:{productName:'TM-m30III'}},media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:48},B:{size:'10x24',columns:57},C:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded','code128-auto']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-p20ii': {vendor:'Epson',model:'TM-P20II',media:{dpi:203,width:58},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:32},B:{size:'9x24',columns:42},C:{size:'9x17',columns:42},D:{size:'10x24',columns:38},E:{size:'8x16',columns:48}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded','code128-auto']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},images:{mode:'raster'},cutter:{feed:3}}},\n\t'epson-tm-t20ii': {vendor:'Epson',model:'TM-T20II',interfaces:{usb:{productName:'TM-T20II'}},media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t20iii': {vendor:'Epson',model:'TM-T20III',interfaces:{usb:{productName:'TM-T20III'}},media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t20iv': {vendor:'Epson',model:'TM-T20IV',interfaces:{usb:{productName:'TM-T20IV'}},media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded','code128-auto']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t70': {vendor:'Epson',model:'TM-T70',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson/legacy',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},images:{mode:'raster'},cutter:{feed:4}}},\n\t'epson-tm-t70ii': {vendor:'Epson',model:'TM-T70II','interface':{usb:{productName:'TM-T70II'}},media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},images:{mode:'raster'},cutter:{feed:4}}},\n\t'epson-tm-t88ii': {vendor:'Epson',model:'TM-T88II',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson/legacy',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t88iii': {vendor:'Epson',model:'TM-T88III',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson/legacy',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t88iv': {vendor:'Epson',model:'TM-T88IV',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson/legacy',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t88v': {vendor:'Epson',model:'TM-T88V',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t88vi': {vendor:'Epson',model:'TM-T88VI',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t88vii': {vendor:'Epson',model:'TM-T88VII',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded','code128-auto']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'fujitsu-fp1000': {vendor:'Fujitsu',model:'FP-1000',media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'fujitsu',fonts:{A:{size:'12x24',columns:48},B:{size:'9x24',columns:56},C:{size:'8x16',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:false},cutter:{feed:4}}},\n\t'hp-a779': {vendor:'HP',model:'A779',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'hp',newline:'\\n',fonts:{A:{size:'12x24',columns:44}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:false,fallback:{type:'barcode',symbology:75}},cutter:{feed:4}}},\n\t'metapace-t1': {vendor:'Metapace',model:'T-1',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'metapace',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:false,models:[]},pdf417:{supported:false},cutter:{feed:4}}},\n\t'mpt-ii': {vendor:'',model:'MPT-II',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'mpt',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64},C:{size:'0x0',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:[]},pdf417:{supported:false}}},\n\t'pos-5890': {vendor:'',model:'POS-5890',media:{dpi:203,width:58},capabilities:{language:'esc-pos',codepages:'pos-5890',fonts:{A:{size:'12x24',columns:32},B:{size:'9x17',columns:42}},barcodes:{supported:true,symbologies:['upca','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['2']},pdf417:{supported:true},images:{mode:'raster'},cutter:{feed:1}}},\n\t'pos-8360': {vendor:'',model:'POS-8360',media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'pos-8360',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['2']},pdf417:{supported:true},images:{mode:'raster'},cutter:{feed:4}}},\n\t'star-mc-print2': {vendor:'Star',model:'mC-Print2',interfaces:{usb:{productName:'mC-Print2'}},media:{dpi:203,width:58},capabilities:{language:'star-prnt',codepages:'star',fonts:{A:{size:'12x24',columns:32},B:{size:'9x24',columns:42}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','itf','codabar','code93','code128','gs1-128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:3}}},\n\t'star-mpop': {vendor:'Star',model:'mPOP',interfaces:{usb:{productName:'mPOP'}},media:{dpi:203,width:58},capabilities:{language:'star-prnt',codepages:'star',fonts:{A:{size:'12x24',columns:32},B:{size:'9x24',columns:42}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','itf','codabar','code93','code128','gs1-128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:3}}},\n\t'star-sm-l200': {vendor:'Star',model:'SM-L200',media:{dpi:203,width:58},capabilities:{language:'star-prnt',codepages:'star',fonts:{A:{size:'12x24',columns:32},B:{size:'9x24',columns:42},C:{size:'9x17',columns:42}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','itf','codabar','code93','code128']},qrcode:{supported:true,models:['2']},pdf417:{supported:true}}},\n\t'star-tsp100iii': {vendor:'Star',model:'TSP100III',media:{dpi:203,width:80},capabilities:{language:'star-prnt',codepages:'star',fonts:{A:{size:'12x24',columns:48},B:{size:'9x24',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:3}}},\n\t'star-tsp100iv': {vendor:'Star',model:'TSP100IV',media:{dpi:203,width:80},capabilities:{language:'star-prnt',codepages:'star',fonts:{A:{size:'12x24',columns:48},B:{size:'9x24',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:3}}},\n\t'star-tsp650': {vendor:'Star',model:'TSP650',media:{dpi:203,width:80},capabilities:{language:'star-line',codepages:'star',fonts:{A:{size:'12x24',columns:48},B:{size:'9x24',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:false,models:[]},pdf417:{supported:false},cutter:{feed:3}}},\n\t'star-tsp650ii': {vendor:'Star',model:'TSP650II',media:{dpi:203,width:80},capabilities:{language:'star-line',codepages:'star',fonts:{A:{size:'12x24',columns:48},B:{size:'9x24',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:3}}},\n\t'xprinter-xp-n160ii': {vendor:'Xprinter',model:'XP-N160II',interfaces:{usb:{productName:'Printer-80\\u0000'}},media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'xprinter',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-128']},qrcode:{supported:true,models:['2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'xprinter-xp-t80q': {vendor:'Xprinter',model:'XP-T80Q',media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'xprinter',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-128']},qrcode:{supported:true,models:['2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'youku-58t': {vendor:'Youku',model:'58T',media:{dpi:203,width:58},capabilities:{language:'esc-pos',codepages:'youku',fonts:{A:{size:'12x24',columns:32},B:{size:'9x24',columns:42}},barcodes:{supported:true,symbologies:['upca','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['2']},pdf417:{supported:false}}},\n};\n\nexport default printerDefinitions;\n","import Dither from 'canvas-dither';\r\nimport Flatten from 'canvas-flatten';\r\nimport CodepageEncoder from '@point-of-sale/codepage-encoder';\r\nimport ImageData from '@canvas/image-data';\r\nimport resizeImageData from 'resize-image-data';\r\n\r\n/* Import local dependencies */\r\n\r\nimport LanguageEscPos from './languages/esc-pos.js';\r\nimport LanguageStarPrnt from './languages/star-prnt.js';\r\nimport LineComposer from './line-composer.js';\r\n\r\n/* Import generated data */\r\n\r\nimport codepageMappings from '../generated/mapping.js';\r\nimport printerDefinitions from '../generated/printers.js';\r\n\r\n\r\n/**\r\n * Create a byte stream based on commands for receipt printers\r\n */\r\nclass ReceiptPrinterEncoder {\r\n #options = {};\r\n #queue = [];\r\n\r\n #language;\r\n #composer;\r\n\r\n #printerCapabilities = {\r\n 'fonts': {\r\n 'A': {size: '12x24', columns: 42},\r\n 'B': {size: '9x24', columns: 56},\r\n },\r\n 'barcodes': {\r\n 'supported': true,\r\n 'symbologies': [\r\n 'upca', 'upce', 'ean13', 'ean8', 'code39', 'itf', 'codabar', 'code93',\r\n 'code128', 'gs1-databar-omni', 'gs1-databar-truncated',\r\n 'gs1-databar-limited', 'gs1-databar-expanded',\r\n ],\r\n },\r\n 'qrcode': {\r\n 'supported': true,\r\n 'models': ['1', '2'],\r\n },\r\n 'pdf417': {\r\n 'supported': true,\r\n },\r\n };\r\n\r\n #codepageMapping = {};\r\n #codepageCandidates = [];\r\n #codepage = 'cp437';\r\n\r\n #state = {\r\n 'codepage': 0,\r\n 'font': 'A',\r\n };\r\n\r\n\r\n /**\r\n * Create a new object\r\n *\r\n * @param {object} options Object containing configuration options\r\n */\r\n constructor(options) {\r\n options = options || {};\r\n\r\n const defaults = {\r\n columns: 42,\r\n language: 'esc-pos',\r\n imageMode: 'column',\r\n feedBeforeCut: 0,\r\n newline: '\\n\\r',\r\n codepageMapping: 'epson',\r\n codepageCandidates: null,\r\n errors: 'relaxed',\r\n };\r\n\r\n /* Determine default settings based on the printer language */\r\n\r\n if (typeof options.language === 'string') {\r\n defaults.columns = options.language === 'esc-pos' ? 42 : 48;\r\n defaults.codepageMapping = options.language === 'esc-pos' ? 'epson' : 'star';\r\n }\r\n\r\n /* Determine default settings based on the printer model */\r\n\r\n if (typeof options.printerModel === 'string') {\r\n if (typeof printerDefinitions[options.printerModel] === 'undefined') {\r\n throw new Error('Unknown printer model');\r\n }\r\n\r\n this.#printerCapabilities = printerDefinitions[options.printerModel].capabilities;\r\n\r\n /* Apply the printer definition to the defaults */\r\n\r\n defaults.columns = this.#printerCapabilities.fonts['A'].columns;\r\n defaults.language = this.#printerCapabilities.language;\r\n defaults.codepageMapping = this.#printerCapabilities.codepages;\r\n defaults.newline = this.#printerCapabilities?.newline || defaults.newline;\r\n defaults.feedBeforeCut = this.#printerCapabilities?.cutter?.feed || defaults.feedBeforeCut;\r\n defaults.imageMode = this.#printerCapabilities?.images?.mode || defaults.imageMode;\r\n }\r\n\r\n /* Merge options */\r\n\r\n if (options) {\r\n this.#options = Object.assign(defaults, {\r\n debug: false,\r\n embedded: false,\r\n createCanvas: null,\r\n }, options);\r\n }\r\n\r\n /* Backwards compatibility for the width option */\r\n\r\n if (this.#options.width) {\r\n this.#options.columns = this.#options.width;\r\n }\r\n\r\n /* Get the printer language */\r\n\r\n if (this.#options.language === 'esc-pos') {\r\n this.#language = new LanguageEscPos();\r\n } else if (this.#options.language === 'star-prnt' || this.#options.language === 'star-line') {\r\n this.#language = new LanguageStarPrnt();\r\n } else {\r\n throw new Error('The specified language is not supported');\r\n }\r\n\r\n /* Determine autoflush settings */\r\n /*\r\n\r\n StarPRNT printers are set up to have print start control set to page units.\r\n That means the printer will only print after it has received a cut or ff command.\r\n This is not ideal, so we set autoFlush to true by default, which will force\r\n the printer to print after each encode().\r\n\r\n One problem, we do not want to do this for embedded content. Only the top level\r\n encoder should flush the buffer.\r\n\r\n ESC/POS and Star Line Mode printers are set up to have print start control set to\r\n line units, which means the printer will print after each line feed command.\r\n We do not need to flush the buffer for these printers.\r\n\r\n */\r\n\r\n if (typeof this.#options.autoFlush === 'undefined') {\r\n this.#options.autoFlush = ! this.#options.embedded && this.#options.language == 'star-prnt';\r\n }\r\n\r\n /* Check column width */\r\n\r\n if (![32, 35, 42, 44, 48].includes(this.#options.columns) && !this.#options.embedded) {\r\n throw new Error('The width of the paper must me either 32, 35, 42, 44 or 48 columns');\r\n }\r\n\r\n /* Determine codepage mapping and candidates */\r\n\r\n if (typeof this.#options.codepageMapping === 'string') {\r\n if (typeof codepageMappings[this.#options.language][this.#options.codepageMapping] === 'undefined') {\r\n throw new Error('Unknown codepage mapping');\r\n }\r\n\r\n this.#codepageMapping = Object.fromEntries(codepageMappings[this.#options.language][this.#options.codepageMapping]\r\n .map((v, i) => [v, i])\r\n .filter((i) => i));\r\n } else {\r\n this.#codepageMapping = this.#options.codepageMapping;\r\n }\r\n\r\n if (this.#options.codepageCandidates) {\r\n this.#codepageCandidates = this.#options.codepageCandidates;\r\n } else {\r\n this.#codepageCandidates = Object.keys(this.#codepageMapping);\r\n }\r\n\r\n /* Create our line composer */\r\n\r\n this.#composer = new LineComposer({\r\n embedded: this.#options.embedded,\r\n columns: this.#options.columns,\r\n align: 'left',\r\n size: 1,\r\n\r\n callback: (value) => this.#queue.push(value),\r\n });\r\n\r\n this.#reset();\r\n }\r\n\r\n /**\r\n * Reset the state of the object\r\n */\r\n #reset() {\r\n this.#queue = [];\r\n this.#codepage = this.#options.language == 'esc-pos' ? 'cp437' : 'star/standard';\r\n this.#state.codepage = -1;\r\n this.#state.font = 'A';\r\n }\r\n\r\n /**\r\n * Initialize the printer\r\n *\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n initialize() {\r\n if (this.#options.embedded) {\r\n throw new Error('Initialize is not supported in table cells or boxes');\r\n }\r\n\r\n this.#composer.add(\r\n this.#language.initialize(),\r\n );\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Change the code page\r\n *\r\n * @param {string} codepage The codepage that we set the printer to\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n codepage(codepage) {\r\n if (codepage === 'auto') {\r\n this.#codepage = codepage;\r\n return this;\r\n }\r\n\r\n if (!CodepageEncoder.supports(codepage)) {\r\n throw new Error('Unknown codepage');\r\n }\r\n\r\n if (typeof this.#codepageMapping[codepage] !== 'undefined') {\r\n this.#codepage = codepage;\r\n } else {\r\n throw new Error('Codepage not supported by printer');\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Print text\r\n *\r\n * @param {string} value Text that needs to be printed\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n text(value) {\r\n this.#composer.text(value, this.#codepage);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Print a newline\r\n *\r\n * @param {string} value The number of newlines that need to be printed, defaults to 1\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n newline(value) {\r\n value = parseInt(value, 10) || 1;\r\n\r\n for (let i = 0; i < value; i++) {\r\n this.#composer.flush({forceNewline: true});\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Print text, followed by a newline\r\n *\r\n * @param {string} value Text that needs to be printed\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n line(value) {\r\n this.text(value);\r\n this.newline();\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Underline text\r\n *\r\n * @param {boolean|number} value true to turn on underline, false to turn off, or 2 for double underline\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n underline(value) {\r\n if (typeof value === 'undefined') {\r\n this.#composer.style.underline = ! this.#composer.style.underline;\r\n } else {\r\n this.#composer.style.underline = value;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Italic text\r\n *\r\n * @param {boolean} value true to turn on italic, false to turn off\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n italic(value) {\r\n if (typeof value === 'undefined') {\r\n this.#composer.style.italic = ! this.#composer.style.italic;\r\n } else {\r\n this.#composer.style.italic = value;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Bold text\r\n *\r\n * @param {boolean} value true to turn on bold, false to turn off\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n bold(value) {\r\n if (typeof value === 'undefined') {\r\n this.#composer.style.bold = ! this.#composer.style.bold;\r\n } else {\r\n this.#composer.style.bold = value;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Invert text\r\n *\r\n * @param {boolean} value true to turn on white text on black, false to turn off\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n invert(value) {\r\n if (typeof value === 'undefined') {\r\n this.#composer.style.invert = ! this.#composer.style.invert;\r\n } else {\r\n this.#composer.style.invert = value;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Change width of text\r\n *\r\n * @param {number} width The width of the text, 1 - 8\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n width(width) {\r\n if (typeof width === 'undefined') {\r\n width = 1;\r\n }\r\n\r\n if (typeof width !== 'number') {\r\n throw new Error('Width must be a number');\r\n }\r\n\r\n if (width < 1 || width > 8) {\r\n throw new Error('Width must be between 1 and 8');\r\n }\r\n\r\n this.#composer.style.width = width;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Change height of text\r\n *\r\n * @param {number} height The height of the text, 1 - 8\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n height(height) {\r\n if (typeof height === 'undefined') {\r\n height = 1;\r\n }\r\n\r\n if (typeof height !== 'number') {\r\n throw new Error('Height must be a number');\r\n }\r\n\r\n if (height < 1 || height > 8) {\r\n throw new Error('Height must be between 1 and 8');\r\n }\r\n\r\n this.#composer.style.height = height;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Change text size\r\n *\r\n * @param {Number|string} width The width of the text, 1 - 8\r\n * @param {Number} height The height of the text, 1 - 8\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n size(width, height) {\r\n /* Backwards compatiblity for changing the font */\r\n if (typeof width === 'string') {\r\n return this.font(width === 'small' ? 'B' : 'A');\r\n }\r\n\r\n if (typeof height === 'undefined') {\r\n height = width;\r\n }\r\n\r\n this.width(width);\r\n this.height(height);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Choose different font\r\n *\r\n * @param {string} value 'A', 'B' or others\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n font(value) {\r\n if (this.#options.embedded) {\r\n throw new Error('Changing fonts is not supported in table cells or boxes');\r\n }\r\n\r\n if (this.#composer.cursor > 0) {\r\n throw new Error('Changing fonts is not supported in the middle of a line');\r\n }\r\n\r\n /* If size is specified, find the matching font */\r\n\r\n const matches = value.match(/^[0-9]+x[0-9]+$/);\r\n if (matches) {\r\n value = Object.entries(this.#printerCapabilities.fonts).find((i) => i[1].size == matches[0])[0];\r\n }\r\n\r\n /* Make sure the font name is uppercase */\r\n\r\n value = value.toUpperCase();\r\n\r\n /* Check if the font is supported */\r\n\r\n if (typeof this.#printerCapabilities.fonts[value] === 'undefined') {\r\n return this.#error('This font is not supported by this printer', 'relaxed');\r\n }\r\n\r\n /* Change the font */\r\n\r\n this.#composer.add(\r\n this.#language.font(value),\r\n );\r\n\r\n this.#state.font = value;\r\n\r\n /* Change the width of the composer */\r\n\r\n if (value === 'A') {\r\n this.#composer.columns = this.#options.columns;\r\n } else {\r\n this.#composer.columns =\r\n (this.#options.columns / this.#printerCapabilities.fonts['A'].columns) *\r\n this.#printerCapabilities.fonts[value].columns;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Change text alignment\r\n *\r\n * @param {string} value left, center or right\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n align(value) {\r\n const alignments = ['left', 'center', 'right'];\r\n\r\n if (!alignments.includes(value)) {\r\n throw new Error('Unknown alignment');\r\n }\r\n\r\n this.#composer.align = value;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Insert a table\r\n *\r\n * @param {array} columns The column definitions\r\n * @param {array} data Array containing rows. Each row is an array containing cells.\r\n * Each cell can be a string value, or a callback function.\r\n * The first parameter of the callback is the encoder object on\r\n * which the function can call its methods.\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n table(columns, data) {\r\n this.#composer.flush();\r\n\r\n /* Process all lines */\r\n\r\n for (let r = 0; r < data.length; r++) {\r\n const lines = [];\r\n let maxLines = 0;\r\n\r\n /* Render all columns */\r\n\r\n for (let c = 0; c < columns.length; c++) {\r\n const columnEncoder = new ReceiptPrinterEncoder(Object.assign({}, this.#options, {\r\n width: columns[c].width,\r\n embedded: true,\r\n }));\r\n\r\n columnEncoder.codepage(this.#codepage);\r\n columnEncoder.align(columns[c].align);\r\n\r\n if (typeof data[r][c] === 'string') {\r\n columnEncoder.text(data[r][c]);\r\n }\r\n\r\n if (typeof data[r][c] === 'function') {\r\n data[r][c](columnEncoder);\r\n }\r\n\r\n const cell = columnEncoder.commands();\r\n\r\n /* Determine the height in lines of the row */\r\n\r\n maxLines = Math.max(maxLines, cell.length);\r\n\r\n lines[c] = cell;\r\n }\r\n\r\n /* Pad the cells in this line to the same height */\r\n\r\n for (let c = 0; c < columns.length; c++) {\r\n if (lines[c].length >= maxLines) {\r\n continue;\r\n }\r\n\r\n for (let p = lines[c].length; p < maxLines; p++) {\r\n let verticalAlign = 'top';\r\n if (typeof columns[c].verticalAlign !== 'undefined') {\r\n verticalAlign = columns[c].verticalAlign;\r\n }\r\n\r\n const line = {commands: [{type: 'space', size: columns[c].width}], height: 1};\r\n\r\n if (verticalAlign == 'bottom') {\r\n lines[c].unshift(line);\r\n } else {\r\n lines[c].push(line);\r\n }\r\n }\r\n }\r\n\r\n /* Add the lines to the composer */\r\n\r\n for (let l = 0; l < maxLines; l++) {\r\n for (let c = 0; c < columns.length; c++) {\r\n if (typeof columns[c].marginLeft !== 'undefined') {\r\n this.#composer.space(columns[c].marginLeft);\r\n }\r\n\r\n this.#composer.add(lines[c][l].commands, columns[c].width);\r\n\r\n if (typeof columns[c].marginRight !== 'undefined') {\r\n this.#composer.space(columns[c].marginRight);\r\n }\r\n }\r\n\r\n this.#composer.flush();\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Insert a horizontal rule\r\n *\r\n * @param {object} options And object with the following properties:\r\n * - style: The style of the line, either single or double\r\n * - width: The width of the line, by default the width of the paper\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n rule(options) {\r\n options = Object.assign({\r\n style: 'single',\r\n width: this.#options.columns || 10,\r\n }, options || {});\r\n\r\n this.#composer.flush();\r\n\r\n this.#composer.text((options.style === 'double' ? '═' : '─').repeat(options.width), 'cp437');\r\n this.#composer.flush({forceNewline: true});\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Insert a box\r\n *\r\n * @param {object} options And object with the following properties:\r\n * - style: The style of the border, either single or double\r\n * - width: The width of the box, by default the width of the paper\r\n * - marginLeft: Space between the left border and the left edge\r\n * - marginRight: Space between the right border and the right edge\r\n * - paddingLeft: Space between the contents and the left border of the box\r\n * - paddingRight: Space between the contents and the right border of the box\r\n * @param {string|function} contents A string value, or a callback function.\r\n * The first parameter of the callback is the encoder object on\r\n * which the function can call its methods.\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n box(options, contents) {\r\n options = Object.assign({\r\n style: 'single',\r\n width: this.#options.columns,\r\n marginLeft: 0,\r\n marginRight: 0,\r\n paddingLeft: 0,\r\n paddingRight: 0,\r\n }, options || {});\r\n\r\n if (options.width + options.marginLeft + options.marginRight > this.#options.columns) {\r\n throw new Error('Box is too wide');\r\n }\r\n\r\n let elements;\r\n\r\n if (options.style == 'single') {\r\n elements = ['┌', '┐', '└', '┘', '─', '│'];\r\n } else if (options.style == 'double') {\r\n elements = ['╔', '╗', '╚', '╝', '═', '║'];\r\n }\r\n\r\n /* Render the contents of the box */\r\n\r\n const columnEncoder = new ReceiptPrinterEncoder(Object.assign({}, this.#options, {\r\n width: options.width - (options.style == 'none' ? 0 : 2) - options.paddingLeft - options.paddingRight,\r\n embedded: true,\r\n }));\r\n\r\n columnEncoder.codepage(this.#codepage);\r\n columnEncoder.align(options.align);\r\n\r\n if (typeof contents === 'function') {\r\n contents(columnEncoder);\r\n }\r\n\r\n if (typeof contents === 'string') {\r\n columnEncoder.text(contents);\r\n }\r\n\r\n const lines = columnEncoder.commands();\r\n\r\n /* Header */\r\n\r\n this.#composer.flush();\r\n\r\n if (options.style != 'none') {\r\n this.#composer.space(options.marginLeft);\r\n this.#composer.text(elements[0], 'cp437');\r\n this.#composer.text(elements[4].repeat(options.width - 2), 'cp437');\r\n this.#composer.text(elements[1], 'cp437');\r\n this.#composer.space(options.marginRight);\r\n this.#composer.flush();\r\n }\r\n\r\n /* Content */\r\n\r\n for (let i = 0; i < lines.length; i++) {\r\n this.#composer.space(options.marginLeft);\r\n\r\n if (options.style != 'none') {\r\n this.#composer.style.height = lines[i].height;\r\n this.#composer.text(elements[5], 'cp437');\r\n this.#composer.style.height = 1;\r\n }\r\n\r\n this.#composer.space(options.paddingLeft);\r\n this.#composer.add(lines[i].commands,\r\n options.width - (options.style == 'none' ? 0 : 2) - options.paddingLeft - options.paddingRight);\r\n this.#composer.space(options.paddingRight);\r\n\r\n if (options.style != 'none') {\r\n this.#composer.style.height = lines[i].height;\r\n this.#composer.text(elements[5], 'cp437');\r\n this.#composer.style.height = 1;\r\n }\r\n\r\n this.#composer.space(options.marginRight);\r\n this.#composer.flush();\r\n }\r\n\r\n /* Footer */\r\n\r\n if (options.style != 'none') {\r\n this.#composer.space(options.marginLeft);\r\n this.#composer.text(elements[2], 'cp437');\r\n this.#composer.text(elements[4].repeat(options.width - 2), 'cp437');\r\n this.#composer.text(elements[3], 'cp437');\r\n this.#composer.space(options.marginRight);\r\n this.#composer.flush();\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Barcode\r\n *\r\n * @param {string} value the value of the barcode\r\n * @param {string|number} symbology the type of the barcode\r\n * @param {number|object} height Either the configuration object, or backwards compatible height of the barcode\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n barcode(value, symbology, height) {\r\n let options = {\r\n height: 60,\r\n width: 2,\r\n text: false,\r\n };\r\n\r\n if (typeof height === 'object') {\r\n options = Object.assign(options, height);\r\n }\r\n\r\n if (typeof height === 'number') {\r\n options.height = height;\r\n }\r\n\r\n if (this.#options.embedded) {\r\n throw new Error('Barcodes are not supported in table cells or boxes');\r\n }\r\n\r\n if (this.#printerCapabilities.barcodes.supported === false) {\r\n return this.#error('Barcodes are not supported by this printer', 'relaxed');\r\n }\r\n\r\n if (typeof symbology === 'string' && !this.#printerCapabilities.barcodes.symbologies.includes(symbology)) {\r\n return this.#error(`Symbology '${symbology}' not supported by this printer`, 'relaxed');\r\n }\r\n\r\n /* Force printing the print buffer and moving to a new line */\r\n\r\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\r\n\r\n /* Set alignment */\r\n\r\n if (this.#composer.align !== 'left') {\r\n this.#composer.add(this.#language.align(this.#composer.align));\r\n }\r\n\r\n /* Barcode */\r\n\r\n this.#composer.add(\r\n this.#language.barcode(value, symbology, options),\r\n );\r\n\r\n /* Reset alignment */\r\n\r\n if (this.#composer.align !== 'left') {\r\n this.#composer.add(this.#language.align('left'));\r\n }\r\n\r\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * QR code\r\n *\r\n * @param {string} value The value of the qr code\r\n * @param {number|object} model Either the configuration object, or\r\n * backwards compatible model of the qrcode, either 1 or 2\r\n * @param {number} size Backwards compatible size of the qrcode, a value between 1 and 8\r\n * @param {string} errorlevel Backwards compatible the amount of error correction used,\r\n * either 'l', 'm', 'q', 'h'\r\n * @return {object} Return the object, for easy chaining commands\r\n */\r\n qrcode(value, model, size, errorlevel) {\r\n let options = {\r\n model: 2,\r\n size: 6,\r\n errorlevel: 'm',\r\n };\r\n\r\n if (typeof model === 'object') {\r\n options = Object.assign(options, model);\r\n }\r\n\r\n if (typeof model === 'number') {\r\n options.model = model;\r\n }\r\n\r\n if (typeof size === 'number') {\r\n options.size = size;\r\n }\r\n\r\n if (typeof errorlevel === 'string') {\r\n options.errorlevel = errorlevel;\r\n }\r\n\r\n if (this.#options.embedded) {\r\n throw new Error('QR codes are not supported in table cells or boxes');\r\n }\r\n\r\n if (this.#printerCapabilities.qrcode.supported === false) {\r\n return this.#error('QR codes are not supported by this printer', 'relaxed');\r\n }\r\n\r\n if (options.model && !this.#printerCapabilities.qrcode.models.includes(String(options.model))) {\r\n return this.#error('QR code model is not supported by this printer', 'relaxed');\r\n }\r\n\r\n /* Force printing the print buffer and moving to a new line */\r\n\r\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\r\n\r\n /* Set alignment */\r\n\r\n if (this.#composer.align !== 'left') {\r\n this.#composer.add(this.#language.align(this.#composer.align));\r\n }\r\n\r\n /* QR code */\r\n\r\n this.#composer.add(\r\n this.#language.qrcode(value, options),\r\n );\r\n\r\n /* Reset alignment */\r\n\r\n if (this.#composer.align !== 'left') {\r\n this.#composer.add(this.#language.align('left'));\r\n }\r\n\r\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\r\n\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * PDF417 code\r\n *\r\n * @param {string} value The value of the qr code\r\n * @param {object} options Configuration object\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n pdf417(value, options) {\r\n options = Object.assign({\r\n width: 3,\r\n height: 3,\r\n columns: 0,\r\n rows: 0,\r\n errorlevel: 1,\r\n truncated: false,\r\n }, options || {});\r\n\r\n if (this.#options.embedded) {\r\n throw new Error('PDF417 codes are not supported in table cells or boxes');\r\n }\r\n\r\n if (this.#printerCapabilities.pdf417.supported === false) {\r\n /* If possible, fallback to a barcode with symbology */\r\n\r\n if (typeof this.#printerCapabilities.pdf417.fallback === 'object') {\r\n return this.barcode(value, this.#printerCapabilities.pdf417.fallback.symbology);\r\n }\r\n\r\n return this.#error('PDF417 codes are not supported by this printer', 'relaxed');\r\n }\r\n\r\n /* Force printing the print buffer and moving to a new line */\r\n\r\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\r\n\r\n /* Set alignment */\r\n\r\n if (this.#composer.align !== 'left') {\r\n this.#composer.add(this.#language.align(this.#composer.align));\r\n }\r\n\r\n /* PDF417 code */\r\n\r\n this.#composer.add(\r\n this.#language.pdf417(value, options),\r\n );\r\n\r\n /* Reset alignment */\r\n\r\n if (this.#composer.align !== 'left') {\r\n this.#composer.add(this.#language.align('left'));\r\n }\r\n\r\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\r\n\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * Image\r\n *\r\n * @param {object} input an element, like a canvas or image that needs to be printed\r\n * @param {number} width width of the image on the printer\r\n * @param {number} height height of the image on the printer\r\n * @param {string} algorithm the dithering algorithm for making the image black and white\r\n * @param {number} threshold threshold for the dithering algorithm\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n image(input, width, height, algorithm, threshold) {\r\n if (this.#options.embedded) {\r\n throw new Error('Images are not supported in table cells or boxes');\r\n }\r\n\r\n if (width % 8 !== 0) {\r\n throw new Error('Width must be a multiple of 8');\r\n }\r\n\r\n if (height % 8 !== 0) {\r\n throw new Error('Height must be a multiple of 8');\r\n }\r\n\r\n if (typeof algorithm === 'undefined') {\r\n algorithm = 'threshold';\r\n }\r\n\r\n if (typeof threshold === 'undefined') {\r\n threshold = 128;\r\n }\r\n\r\n /* Determine the type of the input */\r\n\r\n const name = input.constructor.name;\r\n let type;\r\n\r\n name.endsWith('Element') ? type = 'element' : null;\r\n name == 'ImageData' ? type = 'imagedata' : null;\r\n name == 'Canvas' && typeof input.getContext !== 'undefined' ? type = 'node-canvas' : null;\r\n name == 'Image' ? type = 'node-canvas-image' : null;\r\n name == 'Image' && typeof input.frames !== 'undefined' ? type = 'node-read-image' : null;\r\n name == 'Object' && input.data && input.info ? type = 'node-sharp' : null;\r\n name == 'View3duint8' && input.data && input.shape ? type = 'ndarray' : null;\r\n name == 'Object' && input.data && input.width && input.height ? type = 'object' : null;\r\n\r\n if (!type) {\r\n throw new Error('Could not determine the type of image input');\r\n }\r\n\r\n /* Turn provided data into an ImageData object */\r\n\r\n let image;\r\n\r\n if (type == 'element') {\r\n const canvas = document.createElement('canvas');\r\n canvas.width = width;\r\n canvas.height = height;\r\n const context = canvas.getContext('2d');\r\n context.drawImage(input, 0, 0, width, height);\r\n image = context.getImageData(0, 0, width, height);\r\n }\r\n\r\n if (type == 'node-canvas') {\r\n const context = input.getContext('2d');\r\n image = context.getImageData(0, 0, input.width, input.height);\r\n }\r\n\r\n if (type == 'node-canvas-image') {\r\n if (typeof this.#options.createCanvas !== 'function') {\r\n throw new Error('Canvas is not supported in this environment, specify a createCanvas function in the options');\r\n }\r\n\r\n const canvas = this.#options.createCanvas(width, height);\r\n const context = canvas.getContext('2d');\r\n context.drawImage(input, 0, 0, width, height);\r\n image = context.getImageData(0, 0, width, height);\r\n }\r\n\r\n if (type == 'node-read-image') {\r\n image = new ImageData(input.width, input.height);\r\n image.data.set(input.frames[0].data);\r\n }\r\n\r\n if (type == 'node-sharp') {\r\n image = new ImageData(input.info.width, input.info.height);\r\n image.data.set(input.data);\r\n }\r\n\r\n if (type == 'ndarray') {\r\n image = new ImageData(input.shape[0], input.shape[1]);\r\n image.data.set(input.data);\r\n }\r\n\r\n if (type == 'object') {\r\n image = new ImageData(input.width, input.height);\r\n image.data.set(input.data);\r\n }\r\n\r\n if (type == 'imagedata') {\r\n image = input;\r\n }\r\n\r\n if (!image) {\r\n throw new Error('Image could not be loaded');\r\n }\r\n\r\n /* Resize image */\r\n\r\n if (width !== image.width || height !== image.height) {\r\n image = resizeImageData(image, width, height, 'bilinear-interpolation');\r\n }\r\n\r\n /* Check if the image has the correct dimensions */\r\n\r\n if (width !== image.width || height !== image.height) {\r\n throw new Error('Image could not be resized');\r\n }\r\n\r\n /* Flatten the image and dither it */\r\n\r\n image = Flatten.flatten(image, [0xff, 0xff, 0xff]);\r\n\r\n switch (algorithm) {\r\n case 'threshold': image = Dither.threshold(image, threshold); break;\r\n case 'bayer': image = Dither.bayer(image, threshold); break;\r\n case 'floydsteinberg': image = Dither.floydsteinberg(image); break;\r\n case 'atkinson': image = Dither.atkinson(image); break;\r\n }\r\n\r\n\r\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\r\n\r\n /* Set alignment */\r\n\r\n if (this.#composer.align !== 'left') {\r\n this.#composer.add(this.#language.align(this.#composer.align));\r\n }\r\n\r\n /* Encode the image data */\r\n\r\n this.#composer.add(\r\n this.#language.image(image, width, height, this.#options.imageMode),\r\n );\r\n\r\n /* Reset alignment */\r\n\r\n if (this.#composer.align !== 'left') {\r\n this.#composer.add(this.#language.align('left'));\r\n }\r\n\r\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Cut paper\r\n *\r\n * @param {string} value full or partial. When not specified a full cut will be assumed\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n cut(value) {\r\n if (this.#options.embedded) {\r\n throw new Error('Cut is not supported in table cells or boxes');\r\n }\r\n\r\n for (let i = 0; i < this.#options.feedBeforeCut; i++) {\r\n this.#composer.flush({forceNewline: true});\r\n }\r\n\r\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\r\n\r\n this.#composer.add(\r\n this.#language.cut(value),\r\n );\r\n\r\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Pulse\r\n *\r\n * @param {number} device 0 or 1 for on which pin the device is connected, default of 0\r\n * @param {number} on Time the pulse is on in milliseconds, default of 100\r\n * @param {number} off Time the pulse is off in milliseconds, default of 500\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n pulse(device, on, off) {\r\n if (this.#options.embedded) {\r\n throw new Error('Pulse is not supported in table cells or boxes');\r\n }\r\n\r\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\r\n\r\n this.#composer.add(\r\n this.#language.pulse(device, on, off),\r\n );\r\n\r\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Add raw printer commands\r\n *\r\n * @param {array} data raw bytes to be included\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n raw(data) {\r\n this.#composer.raw(data);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Internal function for encoding style changes\r\n * @param {string} property The property that needs to be changed\r\n * @param {boolean} value Is the property enabled or disabled\r\n * @return {array} Return the encoded bytes\r\n */\r\n #encodeStyle(property, value) {\r\n if (property === 'bold') {\r\n return this.#language.bold(value);\r\n }\r\n\r\n if (property === 'underline') {\r\n return this.#language.underline(value);\r\n }\r\n\r\n if (property === 'italic') {\r\n return this.#language.italic(value);\r\n }\r\n\r\n if (property === 'invert') {\r\n return this.#language.invert(value);\r\n }\r\n\r\n if (property === 'size') {\r\n return this.#language.size(value.width, value.height);\r\n }\r\n }\r\n\r\n /**\r\n * Internal function for encoding text in the correct codepage\r\n * @param {string} value The text that needs to be encoded\r\n * @param {string} codepage The codepage that needs to be used\r\n * @return {array} Return the encoded bytes\r\n */\r\n #encodeText(value, codepage) {\r\n if (codepage === null) {\r\n const fragment = CodepageEncoder.encode(value, 'ascii');\r\n\r\n return [\r\n {type: 'text', payload: [...fragment]},\r\n ];\r\n }\r\n\r\n if (codepage !== 'auto') {\r\n const fragment = CodepageEncoder.encode(value, codepage);\r\n\r\n if (this.#state.codepage != this.#codepageMapping[codepage]) {\r\n this.#state.codepage = this.#codepageMapping[codepage];\r\n\r\n return [\r\n {type: 'codepage', payload: this.#language.codepage(this.#codepageMapping[codepage])},\r\n {type: 'text', payload: [...fragment]},\r\n ];\r\n }\r\n\r\n return [\r\n {type: 'text', payload: [...fragment]},\r\n ];\r\n }\r\n\r\n const fragments = CodepageEncoder.autoEncode(value, this.#codepageCandidates);\r\n const buffer = [];\r\n\r\n for (const fragment of fragments) {\r\n this.#state.codepage = this.#codepageMapping[fragment.codepage];\r\n buffer.push(\r\n {type: 'codepage', payload: this.#language.codepage(this.#codepageMapping[fragment.codepage])},\r\n {type: 'text', payload: [...fragment.bytes]},\r\n );\r\n }\r\n\r\n return buffer;\r\n }\r\n\r\n /**\r\n * Get all the commands\r\n *\r\n * @return {array} All the commands currently in the queue\r\n */\r\n commands() {\r\n let requiresFlush = true;\r\n\r\n /* Determine if the last command is a pulse or cut, the we do not need a flush */\r\n\r\n let lastLine = this.#queue[this.#queue.length - 1];\r\n \r\n if (lastLine) {\r\n let lastCommand = lastLine[lastLine.length - 1];\r\n\r\n if (lastCommand && [ 'pulse', 'cut' ].includes(lastCommand.type)) {\r\n requiresFlush = false;\r\n }\r\n }\r\n\r\n /* Flush the printer line buffer if needed */\r\n\r\n if (requiresFlush && this.#options.autoFlush && !this.#options.embedded) {\r\n this.#composer.add(\r\n this.#language.flush(),\r\n );\r\n }\r\n\r\n /* Get the remaining from the composer */\r\n\r\n const result = [];\r\n\r\n const remaining = this.#composer.fetch({forceFlush: true, ignoreAlignment: true});\r\n\r\n if (remaining.length) {\r\n this.#queue.push(remaining);\r\n }\r\n\r\n /* Process all lines in the queue */\r\n\r\n while (this.#queue.length) {\r\n const line = this.#queue.shift();\r\n const height = line\r\n .filter((i) => i.type === 'style' && i.property === 'size')\r\n .map((i) => i.value.height)\r\n .reduce((a, b) => Math.max(a, b), 1);\r\n\r\n if (this.#options.debug) {\r\n console.log('|' + line.filter((i) => i.type === 'text').map((i) => i.value).join('') + '|', height);\r\n }\r\n\r\n result.push({\r\n commands: line,\r\n height: height,\r\n });\r\n }\r\n\r\n if (this.#options.debug) {\r\n console.log('commands', result);\r\n }\r\n\r\n this.#reset();\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Encode all previous commands\r\n *\r\n * @param {string} format The format of the output, either 'commands',\r\n * 'lines' or 'array', defaults to 'array'\r\n * @return {Uint8Array} Return the encoded bytes in the format specified\r\n */\r\n encode(format) {\r\n /* Get the commands */\r\n\r\n const commands = this.commands();\r\n\r\n if (format === 'commands') {\r\n return commands;\r\n }\r\n\r\n /* Build the lines */\r\n\r\n const lines = [];\r\n\r\n for (const line of commands) {\r\n const buffer = [];\r\n\r\n for (const item of line.commands) {\r\n if (item.type === 'text') {\r\n buffer.push(...this.#encodeText(item.value, item.codepage));\r\n } else if (item.type === 'style') {\r\n buffer.push(Object.assign(item, {payload: this.#encodeStyle(item.property, item.value)}));\r\n } else if (item.value || item.payload) {\r\n buffer.push(item);\r\n }\r\n }\r\n\r\n lines.push(buffer);\r\n }\r\n\r\n if (format === 'lines') {\r\n return lines;\r\n }\r\n\r\n /* Build the array */\r\n\r\n let result = [];\r\n let last = null;\r\n\r\n for (const line of lines) {\r\n for (const item of line) {\r\n result.push(...item.payload);\r\n last = item;\r\n }\r\n\r\n if (this.#options.newline === '\\n\\r') {\r\n result.push(0x0a, 0x0d);\r\n }\r\n\r\n if (this.#options.newline === '\\n') {\r\n result.push(0x0a);\r\n }\r\n }\r\n\r\n /* If the last command is a pulse, do not feed */\r\n\r\n if (last && last.type === 'pulse') {\r\n result = result.slice(0, 0 - this.#options.newline.length);\r\n }\r\n\r\n return Uint8Array.from(result);\r\n }\r\n\r\n /**\r\n * Throw an error\r\n *\r\n * @param {string} message The error message\r\n * @param {string} level The error level, if level is strict,\r\n * an error will be thrown, if level is relaxed,\r\n * a warning will be logged\r\n * @return {object} Return the object, for easy chaining commands\r\n */\r\n #error(message, level) {\r\n if (level === 'strict' || this.#options.errors === 'strict') {\r\n throw new Error(message);\r\n }\r\n\r\n console.warn(message);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Get all supported printer models\r\n *\r\n * @return {object} An object with all supported printer models\r\n */\r\n static get printerModels() {\r\n return Object.entries(printerDefinitions).map((i) => ({id: i[0], name: i[1].vendor + ' ' + i[1].model}));\r\n }\r\n\r\n /**\r\n * Get the current column width\r\n *\r\n * @return {number} The column width in characters\r\n */\r\n get columns() {\r\n return this.#composer.columns;\r\n }\r\n\r\n /**\r\n * Get the current language\r\n * @return {string} The language that is currently used\r\n */\r\n get language() {\r\n return this.#options.language;\r\n }\r\n\r\n /**\r\n * Get the capabilities of the printer\r\n * @return {object} The capabilities of the printer\r\n */\r\n get printerCapabilities() {\r\n return this.#printerCapabilities;\r\n }\r\n}\r\n\r\nexport default ReceiptPrinterEncoder;\r\n"],"names":["grayscale","image","i","data","length","luminance","fill","threshold","value","bayer","thresholdMap","x","width","y","Math","floor","floydsteinberg","Uint8ClampedArray","height","l","error","atkinson","flatten","background","alpha","invAlpha","definitions","ascii","name","languages","Array","map","v","cp437","extends","cp720","cp737","cp771","cp772","cp774","cp775","cp850","cp851","cp852","cp853","cp855","cp857","cp858","cp860","cp861","cp862","cp863","cp864","offset","cp865","cp866","cp869","cp874","cp1001","cp1098","cp1125","cp3001","cp3002","cp3011","cp3012","cp3021","cp3041","cp3840","cp3841","cp3843","cp3844","cp3845","cp3846","cp3847","cp3848","windows1250","windows1251","windows1252","windows1253","windows1254","windows1255","windows1256","windows1257","windows1258","rk1048","thai11","thai13","thai14","thai16","thai18","thai42","tcvn3","tcvn3capitals","viscii","khmer","latvian","aliases","cp2001","cp1119","cp1118","cp1162","iso88591","iso88592","iso88597","iso885915","shiftjis","katakana","cp928","strings","en","jp","pt","fr","sv","dk","el","tr","ru","hu","pl","cz","ar","et","lt","bg","is","he","fa","uk","vi","kk","lv","mt","th","CodepageEncoder","static","Object","keys","codepage","codepoints","this","getCodepoints","structuredClone","language","string","input","output","Uint8Array","definition","getEncoding","c","codepoint","codePointAt","position","findIndex","candidates","fragments","current","fragment","available","char","bytes","push","evaluateExtends","j","browser","ImageData","require$$0","nearestNeighbor","src","dst","pos","srcX","srcPos","bilinearInterpolation","interpolate","k","kMin","kMax","vMin","vMax","round","interpolateHorizontal","xMin","xMax","interpolateVertical","yMin","yMax","srcY","min","ceil","algorithm","resize","Error","result","LanguageEscPos","initialize","type","payload","font","charCodeAt","align","barcode","symbology","options","symbologies","upca","upce","ean13","ean8","code39","coda39","itf","codabar","code93","code128","property","text","startsWith","replace","encode","identifier","qrcode","model","models","size","errorlevels","m","q","h","errorlevel","command","pdf417","columns","rows","truncated","mode","getPixel","getRowData","b","s","getColumnData","forEach","cut","pulse","device","on","off","bold","underline","italic","invert","flush","LanguageStarPrnt","slice","TextStyle","default","callback","constructor","store","properties","Map","set","restore","TextWrap","line","indent","lines","String","split","chunks","match","chunk","remaining","letters","piece","pieces","splice","join","trimEnd","LineComposer","embedded","cursor","stored","buffer","style","add","wrap","forceNewline","space","raw","item","concat","end","fetch","forceFlush","next","last","filter","ignoreAlignment","endsWith","merge","left","assign","items","repeat","codepageMappings","bixolon","citizen","epson","fujitsu","hp","metapace","mpt","star","xprinter","youku","printerDefinitions","vendor","media","dpi","capabilities","codepages","fonts","A","B","barcodes","supported","cutter","feed","C","interfaces","usb","productName","D","E","images","interface","newline","fallback","ReceiptPrinterEncoder","queue","composer","printerCapabilities","codepageMapping","codepageCandidates","state","defaults","imageMode","feedBeforeCut","errors","printerModel","debug","createCanvas","autoFlush","includes","fromEntries","reset","supports","parseInt","matches","entries","find","toUpperCase","table","r","maxLines","columnEncoder","cell","commands","max","p","verticalAlign","unshift","marginLeft","marginRight","rule","box","contents","paddingLeft","paddingRight","elements","getContext","frames","info","shape","canvas","document","createElement","context","drawImage","getImageData","resizeImageData","Flatten","Dither","encodeStyle","encodeText","autoEncode","requiresFlush","lastLine","lastCommand","shift","reduce","a","console","log","format","from","message","level","warn","printerModels","id"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]} \ No newline at end of file diff --git a/dist/receipt-printer-encoder.umd.js.map b/dist/receipt-printer-encoder.umd.js.map index 06e6bfe..9bab9cf 100644 --- a/dist/receipt-printer-encoder.umd.js.map +++ b/dist/receipt-printer-encoder.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"receipt-printer-encoder.umd.js","sources":["../node_modules/canvas-dither/src/canvas-dither.js","../node_modules/canvas-flatten/src/canvas-flatten.js","../node_modules/@point-of-sale/codepage-encoder/dist/codepage-encoder.mjs","../node_modules/@canvas/image-data/browser.js","../node_modules/resize-image-data/index.js","../src/languages/esc-pos.js","../src/languages/star-prnt.js","../src/text-style.js","../src/text-wrap.js","../src/line-composer.js","../generated/mapping.js","../generated/printers.js","../src/receipt-printer-encoder.js"],"sourcesContent":["/**\n * Use the ImageData from a Canvas and turn the image in a 1-bit black and white image using dithering\n */\nclass CanvasDither {\n /**\n * Change the image to grayscale\n *\n * @param {object} image The imageData of a Canvas 2d context\n * @return {object} The resulting imageData\n *\n */\n grayscale(image) {\n for (let i = 0; i < image.data.length; i += 4) {\n const luminance = (image.data[i] * 0.299) + (image.data[i + 1] * 0.587) + (image.data[i + 2] * 0.114);\n image.data.fill(luminance, i, i + 3);\n }\n\n return image;\n }\n\n /**\n * Change the image to blank and white using a simple threshold\n *\n * @param {object} image The imageData of a Canvas 2d context\n * @param {number} threshold Threshold value (0-255)\n * @return {object} The resulting imageData\n *\n */\n threshold(image, threshold) {\n for (let i = 0; i < image.data.length; i += 4) {\n const luminance = (image.data[i] * 0.299) + (image.data[i + 1] * 0.587) + (image.data[i + 2] * 0.114);\n\n const value = luminance < threshold ? 0 : 255;\n image.data.fill(value, i, i + 3);\n }\n\n return image;\n }\n\n /**\n * Change the image to blank and white using the Bayer algorithm\n *\n * @param {object} image The imageData of a Canvas 2d context\n * @param {number} threshold Threshold value (0-255)\n * @return {object} The resulting imageData\n *\n */\n bayer(image, threshold) {\n const thresholdMap = [\n [15, 135, 45, 165],\n [195, 75, 225, 105],\n [60, 180, 30, 150],\n [240, 120, 210, 90],\n ];\n\n for (let i = 0; i < image.data.length; i += 4) {\n const luminance = (image.data[i] * 0.299) + (image.data[i + 1] * 0.587) + (image.data[i + 2] * 0.114);\n\n const x = i / 4 % image.width;\n const y = Math.floor(i / 4 / image.width);\n const map = Math.floor((luminance + thresholdMap[x % 4][y % 4]) / 2);\n const value = map < threshold ? 0 : 255;\n image.data.fill(value, i, i + 3);\n }\n\n return image;\n }\n\n /**\n * Change the image to blank and white using the Floyd-Steinberg algorithm\n *\n * @param {object} image The imageData of a Canvas 2d context\n * @return {object} The resulting imageData\n *\n */\n floydsteinberg(image) {\n const width = image.width;\n const luminance = new Uint8ClampedArray(image.width * image.height);\n\n for (let l = 0, i = 0; i < image.data.length; l++, i += 4) {\n luminance[l] = (image.data[i] * 0.299) + (image.data[i + 1] * 0.587) + (image.data[i + 2] * 0.114);\n }\n\n for (let l = 0, i = 0; i < image.data.length; l++, i += 4) {\n const value = luminance[l] < 129 ? 0 : 255;\n const error = Math.floor((luminance[l] - value) / 16);\n image.data.fill(value, i, i + 3);\n\n luminance[l + 1] += error * 7;\n luminance[l + width - 1] += error * 3;\n luminance[l + width] += error * 5;\n luminance[l + width + 1] += error * 1;\n }\n\n return image;\n }\n\n /**\n * Change the image to blank and white using the Atkinson algorithm\n *\n * @param {object} image The imageData of a Canvas 2d context\n * @return {object} The resulting imageData\n *\n */\n atkinson(image) {\n const width = image.width;\n const luminance = new Uint8ClampedArray(image.width * image.height);\n\n for (let l = 0, i = 0; i < image.data.length; l++, i += 4) {\n luminance[l] = (image.data[i] * 0.299) + (image.data[i + 1] * 0.587) + (image.data[i + 2] * 0.114);\n }\n\n for (let l = 0, i = 0; i < image.data.length; l++, i += 4) {\n const value = luminance[l] < 129 ? 0 : 255;\n const error = Math.floor((luminance[l] - value) / 8);\n image.data.fill(value, i, i + 3);\n\n luminance[l + 1] += error;\n luminance[l + 2] += error;\n luminance[l + width - 1] += error;\n luminance[l + width] += error;\n luminance[l + width + 1] += error;\n luminance[l + 2 * width] += error;\n }\n\n return image;\n }\n}\n\nmodule.exports = new CanvasDither();\n","/**\n * Use the ImageData from a Canvas and flatten the image on a solid background\n */\nclass CanvasFlatten {\n /**\n * Change the image to grayscale\n *\n * @param {object} image The imageData of a Canvas 2d context\n * @param {array} background Three values consisting of the r, g, b of the background\n * @return {object} The resulting imageData\n *\n */\n flatten(image, background) {\n for (let i = 0; i < image.data.length; i += 4) {\n const alpha = image.data[i + 3];\n const invAlpha = 255 - alpha;\n\n image.data[i] = (alpha * image.data[i] + invAlpha * background[0]) / 255;\n image.data[i + 1] = (alpha * image.data[i + 1] + invAlpha * background[1]) / 255;\n image.data[i + 2] = (alpha * image.data[i + 2] + invAlpha * background[2]) / 255;\n image.data[i + 3] = 0xff;\n }\n\n return image;\n }\n}\n\nmodule.exports = new CanvasFlatten();\n","const definitions = {\n\n\t'ascii': {\n\t\tname: 'ASCII',\n\t\tlanguages: ['en'],\n\t\tvalue: new Array(256).fill(1,0,128).map((v,i) => i),\n\t},\n\n\t'cp437': {\n\t\tname: 'USA, Standard Europe',\n\t\tlanguages: ['en'],\n\t\textends: 'ascii',\n\t\tvalue: [[,9786,9787,9829,9830,9827,9824,8226,9688,9675,9689,9794,9792,9834,9835,9788,],[9658,9668,8597,8252,182,167,9644,8616,8593,8595,8594,8592,8735,8596,9650,9660,],,,,,,[,,,,,,,,,,,,,,,8962,],[199,252,233,226,228,224,229,231,234,235,232,239,238,236,196,197,],[201,230,198,244,246,242,251,249,255,214,220,162,163,165,8359,402,],[225,237,243,250,241,209,170,186,191,8976,172,189,188,161,171,187,],[9617,9618,9619,9474,9508,9569,9570,9558,9557,9571,9553,9559,9565,9564,9563,9488,],[9492,9524,9516,9500,9472,9532,9566,9567,9562,9556,9577,9574,9568,9552,9580,9575,],[9576,9572,9573,9561,9560,9554,9555,9579,9578,9496,9484,9608,9604,9612,9616,9600,],[945,223,915,960,931,963,181,964,934,920,937,948,8734,966,949,8745,],[8801,177,8805,8804,8992,8993,247,8776,176,8729,183,8730,8319,178,9632,160,],]\n\t},\n\n\t'cp720': {\n\t\tname: 'Arabic',\n\t\tlanguages: ['ar'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[65533,65533,,,65533,,65533,,,,,,,65533,65533,65533,],[65533,1617,1618,,164,1600,,,1569,1570,1571,1572,,1573,1574,1575,],[1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,,,],,,,[1590,1591,1592,1593,1594,1601,,1602,1603,1604,1605,1606,1607,1608,1609,1610,],[,1611,1612,1613,1614,1615,1616,,,,,,,,,,],]\n\t},\n\n\t'cp737': {\n\t\tname: 'Greek',\n\t\tlanguages: ['el'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,],[929,931,932,933,934,935,936,937,945,946,947,948,949,950,951,952,],[953,954,955,956,957,958,959,960,961,963,962,964,965,966,967,968,],,,,[969,940,941,942,970,943,972,973,971,974,902,904,905,906,908,910,],[911,,,,938,939,,,,,,,,,,,],]\n\t},\n\n\t'cp771': {\n\t\tname: 'Lithuanian KBL',\n\t\tlanguages: ['lt'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,,,[,,,,,,,,,,,,260,261,268,269,],,[280,281,278,279,302,303,352,353,370,371,362,363,381,382,,,],]\n\t},\n\n\t'cp772': {\n\t\tname: 'Lithuanian LST 1284',\n\t\tlanguages: ['lt'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,[,,,,,260,268,280,278,,,,,302,352,,],[,,,,,,370,362,,,,,,,,381,],[261,269,281,279,303,353,371,363,382,,,,,,,,],,[,,8805,8804,8222,8220,247,8776,,,,,8319,178,,,],]\n\t},\n\n\t'cp774': {\n\t\tname: 'Lithuanian LST 1283',\n\t\tlanguages: ['lt'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,,,,[,,,,,260,268,280,278,,,,,302,352,,],[,,,,,,370,362,,,,,,,,381,],[261,269,281,279,303,353,371,363,382,,,,,,,,],[,946,,,,,,,,,,,,,,8898,],[,,,,8222,8220,,,,,729,,,,,,],]\n\t},\n\n\t'cp775': {\n\t\tname: 'Baltic Rim',\n\t\tlanguages: ['et','lt'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[262,,,257,,291,,263,322,275,342,343,299,377,,,],[,,,333,,290,162,346,347,,,248,,216,215,164,],[256,298,,379,380,378,8221,166,169,174,,,,321,,,],[,,,,,260,268,280,278,,,,,302,352,,],[,,,,,,370,362,,,,,,,,381,],[261,269,281,279,303,353,371,363,382,,,,,,,,],[211,,332,323,245,213,,324,310,311,315,316,326,274,325,8217,],[173,,8220,190,182,167,,8222,,,,185,179,,,,],]\n\t},\n\n\t'cp850': {\n\t\tname: 'Multilingual',\n\t\tlanguages: ['en'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,,[,,,,,,,,,,,248,,216,215,,],[,,,,,,,,,174,,,,,,,],[,,,,,193,194,192,169,,,,,162,165,,],[,,,,,,227,195,,,,,,,,164,],[240,208,202,203,200,305,205,206,207,,,,,166,204,,],[211,,212,210,245,213,,254,222,218,219,217,253,221,175,180,],[173,,8215,190,182,167,,184,,168,,185,179,,,,],]\n\t},\n\n\t'cp851': {\n\t\tname: 'Greek',\n\t\tlanguages: ['el'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,902,,,,,,,904,,905,],[906,65533,908,,,910,,,911,,,940,,941,942,943,],[970,912,972,973,913,914,915,916,917,918,919,,920,921,,,],[,,,,,922,923,924,925,,,,,926,927,,],[,,,,,,928,929,,,,,,,,931,],[932,933,934,935,936,937,945,946,947,,,,,948,949,,],[950,951,952,953,954,955,956,957,958,959,960,961,963,962,964,180,],[173,,965,966,967,167,968,184,,168,969,971,944,974,,,],]\n\t},\n\n\t'cp852': {\n\t\tname: 'Latin 2',\n\t\tlanguages: ['hu','pl','cz'],\n\t\textends: 'cp850',\n\t\tvalue: [,,,,,,,,[,,,,,367,263,,322,,336,337,,377,,262,],[,313,314,,,317,318,346,347,,,356,357,321,,269,],[,,,,260,261,381,382,280,281,,378,268,351,,,],[,,,,,,,282,350,,,,,379,380,,],[,,,,,,258,259,,,,,,,,,],[273,272,270,,271,327,,,283,,,,,354,366,,],[,,,323,324,328,352,353,340,,341,368,,,355,,],[,733,731,711,728,,,,,,729,369,344,345,,,],]\n\t},\n\n\t'cp853': {\n\t\tname: 'Turkish',\n\t\tlanguages: ['tr'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,265,,,,,,,,,264,],[,267,266,,,,,,304,,,285,,284,215,309,],[,,,,,,286,287,292,293,65533,,308,351,,,],[,,,,,193,194,192,350,,,,,379,380,,],[,,,,,,348,349,,,,,,,,164,],[65533,65533,202,203,200,305,205,206,207,,,,,65533,204,,],[211,,212,210,288,289,,294,295,218,219,217,364,365,65533,180,],[173,65533,8467,329,728,167,,184,,168,729,65533,179,,,,],]\n\t},\n\n\t'cp855': {\n\t\tname: 'Cyrillic',\n\t\tlanguages: ['bg'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[1106,1026,1107,1027,1105,1025,1108,1028,1109,1029,1110,1030,1111,1031,1112,1032,],[1113,1033,1114,1034,1115,1035,1116,1036,1118,1038,1119,1039,1102,1070,1098,1066,],[1072,1040,1073,1041,1094,1062,1076,1044,1077,1045,1092,1060,1075,1043,,,],[,,,,,1093,1061,1080,1048,,,,,1081,1049,,],[,,,,,,1082,1050,,,,,,,,164,],[1083,1051,1084,1052,1085,1053,1086,1054,1087,,,,,1055,1103,,],[1071,1088,1056,1089,1057,1090,1058,1091,1059,1078,1046,1074,1042,1100,1068,8470,],[173,1099,1067,1079,1047,1096,1064,1101,1069,1097,1065,1095,1063,167,,,],]\n\t},\n\n\t'cp857': {\n\t\tname: 'Turkish',\n\t\tlanguages: ['tr'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,,,305,,,],[,,,,,,,,304,,,248,,216,350,351,],[,,,,,,286,287,,174,,,,,,,],[,,,,,193,194,192,169,,,,,162,165,,],[,,,,,,227,195,,,,,,,,164,],[186,170,202,203,200,8364,205,206,207,,,,,166,204,,],[211,,212,210,245,213,,65533,215,218,219,217,236,255,175,180,],[173,,65533,190,182,167,,184,,168,,185,179,,,,],]\n\t},\n\n\t'cp858': {\n\t\tname: 'Euro',\n\t\tlanguages: ['en'],\n\t\textends: 'cp850',\n\t\tvalue: [,,,,,,,,,,,,,[,,,,,8364,,,,,,,,,,,],,,]\n\t},\n\n\t'cp860': {\n\t\tname: 'Portuguese',\n\t\tlanguages: ['pt'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,227,,193,,,202,,205,212,,195,194,],[,192,200,,245,,218,,204,213,,,,217,,211,],[,,,,,,,,,210,,,,,,,],,,,,,]\n\t},\n\n\t'cp861': {\n\t\tname: 'Icelandic',\n\t\tlanguages: ['is'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,208,240,222,,,],[,,,,,254,,221,253,,,248,,216,,,],[,,,,193,205,211,218,,,,,,,,,],,,,,,]\n\t},\n\n\t'cp862': {\n\t\tname: 'Hebrew',\n\t\tlanguages: ['he'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,],[1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,,,,,,],,,,,,,]\n\t},\n\n\t'cp863': {\n\t\tname: 'Canadian French',\n\t\tlanguages: ['fr'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,194,,182,,,,,,,8215,192,167,],[,200,202,,203,207,,,164,212,,,,217,219,,],[166,180,,,168,184,179,175,206,,,,,190,,,],,,,,,]\n\t},\n\n\t'cp864': {\n\t\tname: 'Arabic',\n\t\tlanguages: ['ar'],\n\t\textends: 'cp437',\n\t\toffset: 128,\n\t\tvalue: [176,183,8729,8730,9618,9472,9474,9532,9508,9516,9500,9524,9488,9484,9492,9496,946,8734,966,177,189,188,8776,171,187,65271,65272,65533,65533,65275,65276,65533,160,173,65154,163,164,65156,65533,65533,65166,65167,65173,65177,1548,65181,65185,65189,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,65233,1563,65201,65205,65209,1567,162,65152,65153,65155,65157,65226,65163,65165,65169,65171,65175,65179,65183,65187,65191,65193,65195,65197,65199,65203,65207,65211,65215,65217,65221,65227,65231,166,172,247,215,65225,1600,65235,65239,65243,65247,65251,65255,65259,65261,65263,65267,65213,65228,65230,65229,65249,65149,1617,65253,65257,65260,65264,65266,65232,65237,65269,65270,65245,65241,65265,9632,65533]\n\t},\n\n\t'cp865': {\n\t\tname: 'Nordic',\n\t\tlanguages: ['sv','dk'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,,[,,,,,,,,,,,248,,216,,,],[,,,,,,,,,,,,,,,164,],,,,,,]\n\t},\n\n\t'cp866': {\n\t\tname: 'Cyrillic 2',\n\t\tlanguages: ['ru'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,],[1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,],[1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,],,,,[1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,],[1025,1105,1028,1108,1031,1111,1038,1118,,,,,8470,164,,,],]\n\t},\n\n\t'cp869': {\n\t\tname: 'Greek',\n\t\tlanguages: ['el'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[65533,65533,65533,65533,65533,65533,902,65533,183,172,166,8216,8217,904,8213,905,],[906,938,908,65533,65533,910,939,169,911,178,179,940,,941,942,943,],[970,912,972,973,913,914,915,916,917,918,919,,920,921,,,],[,,,,,922,923,924,925,,,,,926,927,,],[,,,,,,928,929,,,,,,,,931,],[932,933,934,935,936,937,945,946,947,,,,,948,949,,],[950,951,952,953,954,955,956,957,958,959,960,961,963,962,964,900,],[173,,965,966,967,167,968,901,,168,969,971,944,974,,,],]\n\t},\n\n\t'cp874': {\n\t\tname: 'Thai',\n\t\tlanguages: ['th'],\n\t\textends: 'ascii',\n\t\toffset: 128,\n\t\tvalue: [8364,65533,65533,65533,65533,8230,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,8216,8217,8220,8221,8226,8211,8212,65533,65533,65533,65533,65533,65533,65533,65533,160,3585,3586,3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,3632,3633,3634,3635,3636,3637,3638,3639,3640,3641,3642,65533,65533,65533,65533,3647,3648,3649,3650,3651,3652,3653,3654,3655,3656,3657,3658,3659,3660,3661,3662,3663,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3674,3675,65533,65533,65533,65533]\n\t},\n\n\t'cp1001': {\n\t\tname: 'Arabic',\n\t\tlanguages: ['ar'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[1569,1570,1571,1572,1573,65163,1575,1576,65169,1577,1578,65175,1579,65179,1583,1584,],[1585,1586,1587,65203,65204,1588,65207,65208,1589,65211,65212,1590,65215,65216,1591,1592,],[1593,65227,1594,65231,1601,65235,1602,65239,1603,1705,1604,65271,65273,65275,9496,1605,],[65251,1606,65255,1607,65259,1608,1609,1657,65267,9474,1548,1563,1567,65154,65156,65162,],[,1580,65183,1581,65187,1582,65191,65226,65228,65230,65231,65272,65274,65276,65259,65260,],[1632,65264,9472,65533,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,65533,65533,],[65533,65533,65275,65533,65533,65533,65533,9524,,,,,,,,,],,]\n\t},\n\n\t'cp1098': {\n\t\tname: 'Farsi',\n\t\tlanguages: ['fa'],\n\t\textends: 'cp437',\n\t\tvalue: [,,[,,,,,65533,,,,,65533,,,,,,],,,,,,[65533,65533,1548,1563,1567,1611,1570,65154,63738,1575,65166,63739,1569,1571,65156,63737,],[1572,65163,1576,65169,64342,64344,1578,65175,1579,65179,1580,65183,64378,64380,215,1581,],[65187,1582,65191,1583,1584,1585,1586,64394,1587,65203,1588,65207,1589,65211,,,],[,,,,,1590,65215,65217,65219,,,,,164,65221,,],[,,,,,,65223,1593,,,,,,,,65533,],[65226,65227,65228,1594,65230,65231,65232,1601,65235,,,,,1602,65239,,],[64398,65243,64402,64404,1604,65247,1605,65251,1606,65255,1608,1607,65259,65260,64420,64508,],[173,64509,64510,1600,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,,,],]\n\t},\n\n\t'cp1125': {\n\t\tname: 'Ukrainian',\n\t\tlanguages: ['uk'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,,,,,[,,1168,1169,1028,1108,1030,1110,1031,1111,247,177,,,,,],]\n\t},\n\n\t'cp3001': {\n\t\tname: 'Estonian 1 or 1116',\n\t\tlanguages: ['et'],\n\t\textends: 'cp850',\n\t\tvalue: [,,,,,,,,,,,,,[353,352,,,,,,,,,,,,,,,],[,,,,,,,382,381,,,,,,,,],,]\n\t},\n\n\t'cp3002': {\n\t\tname: 'Estonian 2',\n\t\tlanguages: ['et'],\n\t\textends: 'iso8859-1',\n\t\tvalue: [,,,,,,,,[65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,],[65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,],[32,,,,,,,,,,,,,,,8254,],,,[352,,,,,,,,,,,,,,381,,],,[353,,,,,,,,,,,,,,382,,],]\n\t},\n\n\t'cp3011': {\n\t\tname: 'Latvian 1',\n\t\tlanguages: ['lv'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,,,,[,,,,,256,,326,,,,,,,,,],[,,,,,,257,,,,,,,,,,],[352,,269,268,,,291,298,299,,,,,363,362,,],,[274,275,290,311,310,316,315,382,381,,,,325,353,,,],]\n\t},\n\n\t'cp3012': {\n\t\tname: 'Latvian 2 (modified 866)',\n\t\tlanguages: ['lv'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,[,,,,,256,,326,,,,,,332,,,],[,,,,,,257,,,,,,,,,,],[352,,269,268,,,291,298,299,,,,,363,362,,],,[274,275,290,311,310,316,315,382,381,333,,,325,353,,,],]\n\t},\n\n\t'cp3021': {\n\t\tname: 'Bulgarian (MIK)',\n\t\tlanguages: ['bg'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,[1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,],[,,,,,,9571,9553,,,,,,,,9488,],[9617,9618,9619,9474,9508,8470,167,9559,9565,,,,,,,,],[945,223,915,960,931,963,181,964,934,920,937,948,8734,966,949,8745,],[8801,177,8805,8804,8992,8993,247,8776,,,,,8319,178,,,],]\n\t},\n\n\t'cp3041': {\n\t\tname: 'Maltese ISO 646',\n\t\tlanguages: ['mt'],\n\t\textends: 'ascii',\n\t\tvalue: [,,,,,[,,,,,,,,,,,289,380,295,,,],[267,,,,,,,,,,,,,,,,],[,,,,,,,,,,,288,379,294,266,,],,,,,,,,,]\n\t},\n\n\t'cp3840': {\n\t\tname: 'Russian (modified 866)',\n\t\tlanguages: ['ru'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,,,,,[8801,177,8805,8804,8992,8993,247,8776,,,,,8319,178,,,],]\n\t},\n\n\t'cp3841': {\n\t\tname: 'Ghost',\n\t\tlanguages: ['ru'],\n\t\textends: 'cp437',\n\t\toffset: 128,\n\t\tvalue: [1171,1241,1105,1110,1111,1112,1181,1257,1118,1199,1277,1224,1209,1207,1108,163,1170,1240,1025,1030,1031,1032,1180,1256,1038,1198,1276,1223,1208,1206,1028,1066,32,33,34,35,164,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,1102,1072,1073,1094,1076,1077,1092,1075,1093,1080,1081,1082,1083,1084,1085,1086,1087,1103,1088,1089,1090,1091,1078,1074,1100,1099,1079,1096,1101,1097,1095,1098,1070,1040,1041,1062,1044,1045,1060,1043,1061,1048,1049,1050,1051,1052,1053,1054,1055,1071,1056,1057,1058,1059,1046,1042,1068,1067,1047,1064,1069,1065,1063,8709]\n\t},\n\n\t'cp3843': {\n\t\tname: 'Polish (Mazovia)',\n\t\tlanguages: ['pl'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,261,,,,,,,263,,260,],[280,281,322,,,262,,,346,,,,321,,347,,],[377,379,,211,324,323,378,380,,,,,,,,,],,,,,,]\n\t},\n\n\t'cp3844': {\n\t\tname: 'Czech (Kamenický)',\n\t\tlanguages: ['cz'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[268,,,271,,270,356,269,283,282,313,205,318,314,,193,],[,382,381,,,211,367,218,253,,,352,317,221,344,357,],[,,,,328,327,366,212,353,345,341,340,,167,,,],,,,,,]\n\t},\n\n\t'cp3845': {\n\t\tname: 'Hungarian (CWI-2)',\n\t\tlanguages: ['hu'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,,,205,,193,],[,,,337,,211,369,218,368,,,,,,,,],[,,,,,,,336,,,,,,,,,],,,,,,]\n\t},\n\n\t'cp3846': {\n\t\tname: 'Turkish',\n\t\tlanguages: ['tr'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,,,305,,,],[,,,,,,,,304,,,,,,350,351,],[,,,,,,286,287,,,,,,,,,],,,,,,]\n\t},\n\n\t'cp3847': {\n\t\tname: 'Brazil ABNT',\n\t\tlanguages: ['pt'],\n\t\textends: 'iso8859-1',\n\t\tvalue: [,,,,,,,,,,,,,[,,,,,,,65533,,,,,,,,,],,[,,,,,,,65533,,,,,,,,,],]\n\t},\n\n\t'cp3848': {\n\t\tname: 'Brazil ABICOMP',\n\t\tlanguages: ['pt'],\n\t\textends: 'ascii',\n\t\tvalue: [,,,,,,,,,,[160,192,193,194,195,196,199,200,201,202,203,204,205,206,205,209,],[210,211,212,213,214,198,217,218,219,220,376,168,163,166,167,176,],[161,224,225,226,227,228,231,232,233,234,235,236,237,238,239,241,],[242,243,244,245,246,230,249,250,251,252,255,223,170,186,191,177,],,,]\n\t},\n\n\t'iso8859-1': {\n\t\tname: 'Latin 1',\n\t\tlanguages: ['en'],\n\t\textends: 'ascii',\n\t\toffset: 128,\n\t\tvalue: [128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255]\n\t},\n\n\t'iso8859-2': {\n\t\tname: 'Latin 2',\n\t\tlanguages: ['hu','pl','cz'],\n\t\textends: 'iso8859-1',\n\t\tvalue: [,,,,,,,,,,[,260,728,321,,317,346,,,352,350,356,377,,381,379,],[,261,731,322,,318,347,711,,353,351,357,378,733,382,380,],[340,,,258,,313,262,,268,,280,,282,,,270,],[272,323,327,,,336,,,344,366,,368,,,354,,],[341,,,259,,314,263,,269,,281,,283,,,271,],[273,324,328,,,337,,,345,367,,369,,,355,729,],]\n\t},\n\n\t'iso8859-7': {\n\t\tname: 'Greek',\n\t\tlanguages: ['el'],\n\t\textends: 'iso8859-1',\n\t\tvalue: [,,,,,,,,,,[,8216,8217,,8364,8367,,,,,890,,,,,8213,],[,,,,900,901,902,,904,905,906,,908,,910,911,],[912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,],[928,929,,931,932,933,934,935,936,937,938,939,940,941,942,943,],[944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,],[960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,,],]\n\t},\n\n\t'iso8859-15': {\n\t\tname: 'Latin 9',\n\t\tlanguages: ['fr'],\n\t\textends: 'iso8859-1',\n\t\tvalue: [,,,,,,,,,,[,,,,8364,,352,,353,,,,,,,,],[,,,,381,,,,382,,,,338,339,376,,],,,,,]\n\t},\n\n\t'windows1250': {\n\t\tname: 'Latin 2',\n\t\tlanguages: ['hu','pl','cz'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,,,65533,,,,,65533,,,,346,356,,377,],[,,,,,,,,65533,,,,347,357,,378,],[,711,728,321,,260,,,,,350,,,,,379,],[,,731,322,,,,,,261,351,,317,733,318,380,],[340,,,258,,313,262,,268,,280,,282,,,270,],[272,323,327,,,336,,,344,366,,368,,,354,,],[341,,,259,,314,263,,269,,281,,283,,,271,],[273,324,328,,,337,,,345,367,,369,,,355,729,],]\n\t},\n\n\t'windows1251': {\n\t\tname: 'Cyrillic',\n\t\tlanguages: ['ru'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[1026,1027,,1107,,,,,8364,,1033,,1034,1036,1035,1039,],[1106,,,,,,,,65533,,1113,,1114,1116,1115,1119,],[,1038,1118,1032,,1168,,,1025,,1028,,,,,1031,],[,,1030,1110,1169,,,,1105,8470,1108,,1112,1029,1109,1111,],[1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,],[1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,],[1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,],[1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,],]\n\t},\n\n\t'windows1252': {\n\t\tname: 'Latin',\n\t\tlanguages: ['fr'],\n\t\textends: 'iso8859-1',\n\t\tvalue: [,,,,,,,,[8364,65533,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,65533,381,65533,],[65533,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,65533,382,376,],,,,,,,]\n\t},\n\n\t'windows1253': {\n\t\tname: 'Greek',\n\t\tlanguages: ['el'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,,,,,,,,65533,,65533,,65533,,65533,,],[,,,,,,,,65533,,65533,,65533,,65533,65533,],[,901,902,,,,,,,,65533,,,,,8213,],[,,,,900,,,,904,905,906,,908,,910,911,],[912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,],[928,929,65533,931,932,933,934,935,936,937,938,939,940,941,942,943,],[944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,],[960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,65533,],]\n\t},\n\n\t'windows1254': {\n\t\tname: 'Turkish',\n\t\tlanguages: ['tr'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,,,,65533,,],[,,,,,,,,,,,,,,65533,,],,,,[286,,,,,,,,,,,,,304,350,,],,[287,,,,,,,,,,,,,305,351,,],]\n\t},\n\n\t'windows1255': {\n\t\tname: 'Hebrew',\n\t\tlanguages: ['he'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,65533,,65533,,65533,,],[,,,,,,,,,,65533,,65533,,65533,65533,],[,,,,8362,,,,,,215,,,,,,],[,,,,,,,,,,247,,,,,,],[1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,65533,1467,1468,1469,1470,1471,],[1472,1473,1474,1475,1520,1521,1522,1523,1524,65533,65533,65533,65533,65533,65533,65533,],[1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,],[1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,65533,65533,8206,8207,65533,],]\n\t},\n\n\t'windows1256': {\n\t\tname: 'Arabic',\n\t\tlanguages: ['ar'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,1662,,,,,,,,,1657,,,1670,1688,1672,],[1711,,,,,,,,1705,,1681,,,8204,8205,1722,],[,1548,,,,,,,,,1726,,,,,,],[,,,,,,,,,,1563,,,,,1567,],[1729,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,],[1584,1585,1586,1587,1588,1589,1590,,1591,1592,1593,1594,1600,1601,1602,1603,],[,1604,,1605,1606,1607,1608,,,,,,1609,1610,,,],[1611,1612,1613,1614,,1615,1616,,1617,,1618,,,8206,8207,1746,],]\n\t},\n\n\t'windows1257': {\n\t\tname: 'Baltic Rim',\n\t\tlanguages: ['et','lt'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,,,65533,,,,,65533,,65533,,65533,168,711,184,],[,,,,,,,,65533,,65533,,65533,175,731,65533,],[,65533,,,,65533,,,216,,342,,,,,198,],[,,,,,,,,248,,343,,,,,230,],[260,302,256,262,,,280,274,268,,377,278,290,310,298,315,],[352,323,325,,332,,,,370,321,346,362,,379,381,,],[261,303,257,263,,,281,275,269,,378,279,291,311,299,316,],[353,324,326,,333,,,,371,322,347,363,,380,382,729,],]\n\t},\n\n\t'windows1258': {\n\t\tname: 'Vietnamese',\n\t\tlanguages: ['vi'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,65533,,,,65533,,],[,,,,,,,,,,65533,,,,65533,,],,,[,,,258,,,,,,,,,768,,,,],[272,,777,,,416,,,,,,,,431,771,,],[,,,259,,,,,,,,,769,,,,],[273,,803,,,417,,,,,,,,432,8363,,],]\n\t},\n\n\t'rk1048': {\n\t\tname: 'Kazakh',\n\t\tlanguages: ['kk'],\n\t\textends: 'windows1251',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,,,1178,1210,,],[,,,,,,,,,,,,,1179,1211,,],[,1200,1201,1240,,1256,,,,,1170,,,,,1198,],[,,,,1257,,,,,,1171,,1241,1186,1187,1199,],,,,,]\n\t},\n\n\t'thai11': {\n\t\tname: 'Thai (Charcter Code 11)',\n\t\tlanguages: ['th'],\n\t\textends: 'thai13',\n\t\tvalue: [,,,,,,,,,[,,,,,,,,,9484,9488,9492,9496,9474,9500,9508,],,,,[,,,,,,,,,,,9472,9524,9516,9532,,],,[,,,,,,,,,,,3658,3650,3651,3652,65533,],]\n\t},\n\n\t'thai13': {\n\t\tname: 'Thai (Charcter Code 13)',\n\t\tlanguages: ['th'],\n\t\textends: 'cp874',\n\t\tvalue: [,,,,,,,,[65533,,,,,65533,,,,,,,,,,,],[,65533,65533,65533,65533,65533,65533,65533,,,,,,,,,],,,,[,,,,,,,,,,,3619,,,3648,,],,[,,,,,,,,,,,,8592,8593,8594,8595,],]\n\t},\n\n\t'thai14': {\n\t\tname: 'Thai (Charcter Code 14)',\n\t\tlanguages: ['th'],\n\t\textends: 'cp874',\n\t\tvalue: [,,,,,,,,[9484,9488,9492,9496,9474,9472,9500,9508,9524,9516,9532,9608,,,,,],[3619,3634,65533,3632,65533,65533,65533,65533,,,,,,,,3648,],,,,,,[,,,,,,,,,,3675,65533,,,,3652,],]\n\t},\n\n\t'thai16': {\n\t\tname: 'Thai (Charcter Code 16)',\n\t\tlanguages: ['th'],\n\t\textends: 'thai18',\n\t\tvalue: [,,,,,,,,,[3650,3651,,,,,,,,,,,,,,,],,,,,,,]\n\t},\n\n\t'thai18': {\n\t\tname: 'Thai (Charcter Code 18)',\n\t\tlanguages: ['th'],\n\t\textends: 'thai14',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,,8592,8593,8594,8595,],,,,,,[,,,,,,,,,,,,,,3652,,],[,,,,,,,,,,,,,,,65533,],]\n\t},\n\n\t'thai42': {\n\t\tname: 'Thai (Charcter Code 42)',\n\t\tlanguages: ['th'],\n\t\textends: 'thai18',\n\t\tvalue: [,,,,,,,,,[3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3587,3589,3619,3634,3652,,],[,,,3588,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,],[3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,],[3618,3619,3620,3621,3623,3624,3625,3626,3627,3628,3629,3630,3632,3622,3634,3635,],[3648,3649,3650,3651,3652,3654,3631,3640,3641,3636,3637,3638,3639,3658,3661,3655,],[3656,3657,3658,3659,3660,65533,65533,65533,65533,65533,65533,3632,65533,65533,65533,65533,],[65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,,,,,160,],]\n\t},\n\n\t'tcvn3': {\n\t\tname: 'Vietnamese (VSCII3 / TCVN3)',\n\t\tlanguages: ['vi'],\n\t\textends: 'ascii',\n\t\tvalue: [,,,,,,,,,,[,,,,,,,,259,226,234,244,417,432,273,,],[,,,,,224,7843,227,225,7841,,7857,7859,7861,7855,,],[,,,,,,7863,7847,7849,7851,7845,7853,232,,7867,7869,],[233,7865,7873,7875,7877,7871,7879,236,7881,,,,297,237,7883,242,],[,7887,245,243,7885,7891,7893,7895,7889,7897,7901,7903,7905,7899,7907,249,],[,7911,361,250,7909,7915,7917,7919,7913,7921,7923,7927,7929,253,7925,,],]\n\t},\n\n\t'tcvn3capitals': {\n\t\tname: 'Vietnamese (VSCII3 / TCVN3 Capitals)',\n\t\tlanguages: ['vi'],\n\t\textends: 'ascii',\n\t\tvalue: [,,,,,,,,,,[,258,194,,,,,208,,,202,212,416,431,,,],[,,,,,192,7842,195,193,7840,,7856,7858,7860,7854,,],[,,,,,,7862,7846,7848,7850,7844,7852,200,,7866,7868,],[201,7864,7872,7874,7876,7870,7878,204,7880,,,,296,205,7882,210,],[,7886,213,211,7884,7890,7892,7894,7888,7896,7900,7902,7904,7898,7906,217,],[,7910,360,218,7908,7914,7916,7918,7912,7920,7922,7926,7928,221,7924,,],]\n\t},\n\n\t'viscii': {\n\t\tname: 'Vietnamese (VISCII)',\n\t\tlanguages: ['vi'],\n\t\textends: 'ascii',\n\t\tvalue: [[,,7858,,,7860,7850,,,,,,,,,,],[,,,,7926,,,,,7928,,,,,7924,,],,,,,,,[7840,7854,7856,7862,7844,7846,7848,7852,7868,7864,7870,7872,7874,7876,7878,7888,],[7890,7892,7894,7896,7906,7898,7900,7902,7882,7886,7884,7880,7910,360,7908,7922,],[213,7855,7857,7863,7845,7847,7849,7853,7869,7865,7871,7873,7875,7877,7879,7889,],[7891,7893,7895,7904,416,7897,7901,7903,7883,7920,7912,7914,7916,417,7899,431,],[192,193,194,195,7842,258,7859,7861,200,201,202,7866,204,205,296,7923,],[272,7913,210,211,212,7841,7927,7915,7917,217,218,7929,7925,221,7905,432,],[224,225,226,227,7843,259,7919,7851,232,233,234,7867,236,237,297,7881,],[273,7921,242,243,244,245,7887,7885,7909,249,250,361,7911,253,7907,7918,],]\n\t},\n\n\t'khmer': {\n\t\tname: 'Khmer',\n\t\tlanguages: ['km'],\n\t\textends: 'ascii',\n\t\tvalue: [,,,,,,,,[6016,6017,6016,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,],[6032,6033,6032,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,],[6048,6049,6048,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,],[6064,6065,6064,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,],[6080,6081,6080,6083,6084,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,],[6096,6097,6096,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,,,],[6112,6113,6112,6115,6116,6117,6118,6119,6120,6121,,,,,,,],[6128,6129,6128,6131,6132,6133,6134,,,,,,,,,,],]\n\t},\n\n\t'latvian': {\n\t\tname: 'Latvian (based on cp3012)',\n\t\tlanguages: ['lv'],\n\t\textends: 'cp3012',\n\t\tvalue: [,,,,,,,,,,,,,[,,,,298,299,,,,,,,,,,,],,,]\n\t},\n\n\t'epson/katakana': {\n\t\tname: 'Katakana',\n\t\tlanguages: ['ja'],\n\t\textends: 'cp437',\n\t\toffset: 128,\n\t\tvalue: [9601,9602,9603,9604,9605,9606,9607,9608,9615,9614,9613,9612,9611,9610,9609,9532,9524,9516,9508,9500,9620,9472,9474,9621,9484,9488,9492,9496,9581,9582,9584,9583,32,65377,65378,65379,65380,65381,65382,65383,65384,65385,65386,65387,65388,65389,65390,65391,65392,65393,65394,65395,65396,65397,65398,65399,65400,65401,65402,65403,65404,65405,65406,65407,65408,65409,65410,65411,65412,65413,65414,65415,65416,65417,65418,65419,65420,65421,65422,65423,65424,65425,65426,65427,65428,65429,65430,65431,65432,65433,65434,65435,65436,65437,65438,65439,9552,9566,9578,9569,9698,9699,9701,9700,9824,9829,9830,9827,9679,9675,9585,9586,9587,20870,24180,26376,26085,26178,20998,31186,12306,24066,21306,30010,26449,20154,9618,160]\n\t},\n\n\t'epson/iso8859-2': {\n\t\tname: 'Latin 2 modified with box drawing characters',\n\t\tlanguages: ['hu','pl','cz'],\n\t\textends: 'iso8859-2',\n\t\tvalue: [,,,,,,,,[9617,9618,9619,9474,9508,9496,9484,9608,169,9571,9553,9559,9565,162,165,9488,],[9492,9524,9516,9500,9472,9532,9604,9600,9562,9556,9577,9574,9568,9552,9580,174,],,,,,,,]\n\t},\n\n\t'star/standard': {\n\t\tname: 'Standard',\n\t\tlanguages: ['en'],\n\t\textends: 'cp437',\n\t\toffset: 128,\n\t\tvalue: [160,129904,129910,129905,129911,129906,129912,129907,129913,129908,129914,129909,9500,129915,129916,129918,129919,129917,9624,9623,9622,9629,9585,9586,9701,9700,9484,9524,9516,9508,9830,9587,196,214,220,223,167,170,186,65533,162,189,65533,65533,165,188,256,235,233,232,275,234,239,237,236,299,238,246,243,242,333,244,252,250,249,363,251,231,191,65533,65533,274,8580,161,197,248,216,228,225,224,257,226,176,8451,8457,937,181,931,963,65533,65533,967,8734,177,247,960,9612,9604,9600,9616,9532,9496,9492,9488,9608,9618,9162,8592,8593,8594,8595,9581,9161,129923,65533,9601,9613,65533,129928,9626,9630,9698,9699,129840,9208,9584,9583,9582]\n\t},\n\n\t'star/katakana': {\n\t\tname: 'Katakana',\n\t\tlanguages: ['ja'],\n\t\textends: 'star/standard',\n\t\tvalue: [,,,,,,,,,,[32,65377,65378,65379,65380,65381,65382,65383,65384,65385,65386,65387,65388,65389,65390,65391,],[65392,65393,65394,65395,65396,65397,65398,65399,65400,65401,65402,65403,65404,65405,65406,65407,],[65408,65409,65410,65411,65412,65413,65414,65415,65416,65417,65418,65419,65420,65421,65422,65423,],[65424,65425,65426,65427,65428,65429,65430,65431,65432,65433,65434,65435,65436,65437,65438,65439,],,,]\n\t},\n\n\t'star/cp874': {\n\t\tname: 'Thai',\n\t\tlanguages: ['th'],\n\t\textends: 'cp874',\n\t\tvalue: [,,,,,,,,,[,,,,,9474,9472,9532,9484,9488,9492,9496,9500,9516,9508,9524,],,,,[,,,,,,,,,,,3657,3658,3659,3660,,],,[,,,,,,,,,,,,162,172,166,,],]\n\t},\n\n\t'star/cp928': {\n\t\tname: 'Greek',\n\t\tlanguages: ['el'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,,,[160,8216,8217,163,65533,65533,166,167,168,169,65533,171,172,173,65533,8213,],[176,177,178,179,900,901,902,183,904,905,906,187,908,189,910,911,],[912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,],[928,929,65533,931,932,933,934,935,936,937,938,939,940,941,942,943,],[944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,],[960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,65533,],]\n\t},\n\n\t'bixolon/cp866': {\n\t\tname: 'Cyrillic 2 (modified with euro sign)',\n\t\tlanguages: ['ru'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,,,,,[,,,,9093,1055,8801,9824,8364,,,,,,,,],]\n\t},\n\n\t'bixolon/hebrew': {\n\t\tname: 'Hebrew',\n\t\tlanguages: ['he'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,,,[32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,],[48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,],[64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,],[80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,],[1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,],[1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,123,124,125,126,,],]\n\t},\n\n\t'xprinter/hebrew': {\n\t\tname: 'Hebrew (based on CP862 minus CP437)',\n\t\tlanguages: ['he'],\n\t\textends: 'ascii',\n\t\tvalue: [,,,,,,,,[1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,],[1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,,,,,,],,,,,,,]\n\t},\n\n\t'pos8360/hebrew': {\n\t\tname: 'Hebrew (based on cp862 with repeated characters)',\n\t\tlanguages: ['he'],\n\t\textends: 'cp862',\n\t\tvalue: [,,,,,,,,,,,,,,[1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,],[1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,,,,,,],]\n\t},\n\n};\n\nconst aliases = {\n\t'cp2001': 'cp771',\n\t'cp1119': 'cp772',\n\t'cp1118': 'cp774',\n\t'cp1162': 'cp874',\n\t'iso88591': 'iso8859-1',\n\t'iso88592': 'iso8859-2',\n\t'iso88597': 'iso8859-7',\n\t'iso885915': 'iso8859-15',\n\t'shiftjis': 'epson/katakana',\n\t'katakana': 'epson/katakana',\n\t'cp928': 'star/cp928',\n};\n\nconst strings = {\n en: 'The quick brown fox jumps over the lazy dog.',\n jp: 'イロハニホヘト チリヌルヲ ワカヨタレソ ツネナラム',\n pt: 'O próximo vôo à noite sobre o Atlântico, põe freqüentemente o único médico.',\n fr: 'Les naïfs ægithales hâtifs pondant à Noël où il gèle sont sûrs d\\'être déçus en voyant leurs drôles d\\'œufs abîmés.',\n sv: 'Flygande bäckasiner söka strax hwila på mjuka tuvor.',\n dk: 'Quizdeltagerne spiste jordbær med fløde',\n el: 'ξεσκεπάζω την ψυχοφθόρα βδελυγμία',\n tr: 'Pijamalı hasta, yağız şoföre çabucak güvendi.',\n ru: 'Съешь же ещё этих мягких французских булок да выпей чаю',\n hu: 'Árvíztűrő tükörfúrógép',\n pl: 'Pchnąć w tę łódź jeża lub ośm skrzyń fig',\n cz: 'Mohu jíst sklo, neublíží mi.',\n ar: 'أنا قادر على أكل الزجاج و هذا لا يؤلمني.',\n et: 'Ma võin klaasi süüa, see ei tee mulle midagi.',\n lt: 'Aš galiu valgyti stiklą ir jis manęs nežeidžia.',\n bg: 'Мога да ям стъкло, то не ми вреди.',\n is: 'Ég get etið gler án þess að meiða mig.',\n he: 'אני יכול לאכול זכוכית וזה לא מזיק לי.',\n fa: '.من می توانم بدونِ احساس درد شيشه بخورم',\n uk: 'Я можу їсти скло, і воно мені не зашкодить.',\n vi: 'Tôi có thể ăn thủy tinh mà không hại gì.',\n kk: 'қазақша',\n lv: 'Es varu ēst stiklu, tas man nekaitē.',\n mt: 'Nista\\' niekol il-ħġieġ u ma jagħmilli xejn.',\n th: 'ฉันกินกระจกได้ แต่มันไม่ทำให้ฉันเจ็บ',\n};\n\n/**\n * A library for converting Unicode to obscure single byte codepage for use with thermal printers\n */\nclass CodepageEncoder {\n /**\n * Get list of supported codepages\n *\n * @return {array} Return an array with the supported codepages\n *\n */\n static getEncodings() {\n return Object.keys(definitions);\n }\n\n /**\n * Get codepage definition\n *\n * @param {string} codepage The codepage, defaults to ascii when it cannot find the codepage\n * @return {object} Return an object with the codepage definition\n *\n */\n static getEncoding(codepage) {\n if (typeof aliases[codepage] !== 'undefined') {\n codepage = aliases[codepage];\n }\n\n if (typeof definitions[codepage] === 'undefined') {\n codepage = 'ascii';\n }\n\n /* Create codepoints array if it doesn't exist */\n\n if (typeof definitions[codepage].codepoints === 'undefined') {\n definitions[codepage].codepoints = this.getCodepoints(codepage, true);\n }\n\n /* Return codepage definition */\n\n return structuredClone(definitions[codepage]);\n }\n\n\n /**\n * Get test strings for the specified codepage\n *\n * @param {string} codepage The codepage\n * @return {array} Return an array with one or more objects\n * containing a property for the language of\n * the string and a property for the string itself\n *\n */\n static getTestStrings(codepage) {\n if (typeof aliases[codepage] !== 'undefined') {\n codepage = aliases[codepage];\n }\n\n if (typeof definitions[codepage] !== 'undefined' &&\n typeof definitions[codepage].languages !== 'undefined') {\n return definitions[codepage].languages.map((i) => ({language: i, string: strings[i]}));\n }\n\n return [];\n }\n\n /**\n * Determine if the specified codepage is supported\n *\n * @param {string} codepage The codepage\n * @return {boolean} Return a boolean, true if the encoding is supported,\n * otherwise false\n *\n */\n static supports(codepage) {\n if (typeof aliases[codepage] !== 'undefined') {\n codepage = aliases[codepage];\n }\n\n if (typeof definitions[codepage] === 'undefined') {\n return false;\n }\n\n return true;\n }\n\n /**\n * Encode a string in the specified codepage\n *\n * @param {string} input Text that needs encoded to the specified codepage\n * @param {string} codepage The codepage\n * @return {Uint8Array} Return an array of bytes with the encoded string\n *\n */\n static encode(input, codepage) {\n const output = new Uint8Array(input.length);\n const definition = this.getEncoding(codepage);\n\n for (let c = 0; c < input.length; c++) {\n const codepoint = input.codePointAt(c);\n const position = definition.codepoints.findIndex((i) => i === codepoint);\n\n if (position !== -1) {\n output[c] = position;\n } else {\n output[c] = 0x3f;\n }\n }\n\n return output;\n }\n\n /**\n * Encode a string in the most optimal set of codepages.\n *\n * @param {string} input Text that needs encoded\n * @param {array} candidates An array of candidate codepages that are allowed to be used, ranked by importance\n * @return {Uint8Array} Return an array of bytes with the encoded string\n *\n */\n static autoEncode(input, candidates) {\n const fragments = [];\n let fragment = -1;\n let current;\n\n for (let c = 0; c < input.length; c++) {\n const codepoint = input.codePointAt(c);\n\n let available;\n let char = 0;\n\n if (!available && current) {\n const definition = this.getEncoding(current);\n const position = definition.codepoints.findIndex((i) => i === codepoint);\n\n if (position !== -1) {\n available = current;\n char = position;\n }\n }\n\n if (!available) {\n for (let i = 0; i < candidates.length; i++) {\n const definition = this.getEncoding(candidates[i]);\n const position = definition.codepoints.findIndex((i) => i === codepoint);\n\n if (position !== -1) {\n available = candidates[i];\n char = position;\n break;\n }\n }\n }\n\n if (!available) {\n available = current || candidates[0];\n char = 0x3f;\n }\n\n if (current != available) {\n if (current) {\n fragments[fragment].bytes = new Uint8Array(fragments[fragment].bytes);\n }\n\n fragment++;\n fragments[fragment] = {\n codepage: available,\n bytes: [],\n };\n\n current = available;\n }\n\n fragments[fragment].bytes.push(char);\n }\n\n if (current) {\n fragments[fragment].bytes = new Uint8Array(fragments[fragment].bytes);\n }\n\n return fragments;\n }\n\n /**\n * Get codepoints\n *\n * @param {string} codepage The codepage\n * @param {boolean} evaluateExtends Evaluate the extends property\n * @return {array} Return an object array with 256 codepoints for the specified codepage\n *\n */\n static getCodepoints(codepage, evaluateExtends) {\n let codepoints = new Array(256);\n\n if (evaluateExtends) {\n if (typeof definitions[codepage].extends === 'undefined') {\n codepoints = codepoints.fill(0xfffd);\n } else {\n codepoints = this.getEncoding(definitions[codepage].extends).codepoints;\n }\n }\n\n if (definitions[codepage].value.length === 16) {\n for (let i = 0; i < 16; i++) {\n if (typeof definitions[codepage].value[i] !== 'object') {\n continue;\n }\n\n for (let j = 0; j < 16; j++) {\n if (typeof definitions[codepage].value[i][j] !== 'number') {\n continue;\n }\n\n codepoints[i * 16 + j] = definitions[codepage].value[i][j];\n }\n }\n } else {\n const offset = definitions[codepage].offset || 0;\n\n for (let i = 0; i < definitions[codepage].value.length; i++) {\n if (typeof definitions[codepage].value[i] !== 'number') {\n continue;\n }\n\n codepoints[offset + i] = definitions[codepage].value[i];\n }\n }\n\n return codepoints;\n }\n}\n\nexport { CodepageEncoder as default };\n","/* eslint-env browser */\n\nmodule.exports = ImageData\n","'use strict'\n\nconst ImageData = require('@canvas/image-data')\n\nfunction nearestNeighbor (src, dst) {\n let pos = 0\n\n for (let y = 0; y < dst.height; y++) {\n for (let x = 0; x < dst.width; x++) {\n const srcX = Math.floor(x * src.width / dst.width)\n const srcY = Math.floor(y * src.height / dst.height)\n\n let srcPos = ((srcY * src.width) + srcX) * 4\n\n dst.data[pos++] = src.data[srcPos++] // R\n dst.data[pos++] = src.data[srcPos++] // G\n dst.data[pos++] = src.data[srcPos++] // B\n dst.data[pos++] = src.data[srcPos++] // A\n }\n }\n}\n\nfunction bilinearInterpolation (src, dst) {\n function interpolate (k, kMin, kMax, vMin, vMax) {\n return Math.round((k - kMin) * vMax + (kMax - k) * vMin)\n }\n\n function interpolateHorizontal (offset, x, y, xMin, xMax) {\n const vMin = src.data[((y * src.width + xMin) * 4) + offset]\n if (xMin === xMax) return vMin\n\n const vMax = src.data[((y * src.width + xMax) * 4) + offset]\n return interpolate(x, xMin, xMax, vMin, vMax)\n }\n\n function interpolateVertical (offset, x, xMin, xMax, y, yMin, yMax) {\n const vMin = interpolateHorizontal(offset, x, yMin, xMin, xMax)\n if (yMin === yMax) return vMin\n\n const vMax = interpolateHorizontal(offset, x, yMax, xMin, xMax)\n return interpolate(y, yMin, yMax, vMin, vMax)\n }\n\n let pos = 0\n\n for (let y = 0; y < dst.height; y++) {\n for (let x = 0; x < dst.width; x++) {\n const srcX = x * src.width / dst.width\n const srcY = y * src.height / dst.height\n\n const xMin = Math.floor(srcX)\n const yMin = Math.floor(srcY)\n\n const xMax = Math.min(Math.ceil(srcX), src.width - 1)\n const yMax = Math.min(Math.ceil(srcY), src.height - 1)\n\n dst.data[pos++] = interpolateVertical(0, srcX, xMin, xMax, srcY, yMin, yMax) // R\n dst.data[pos++] = interpolateVertical(1, srcX, xMin, xMax, srcY, yMin, yMax) // G\n dst.data[pos++] = interpolateVertical(2, srcX, xMin, xMax, srcY, yMin, yMax) // B\n dst.data[pos++] = interpolateVertical(3, srcX, xMin, xMax, srcY, yMin, yMax) // A\n }\n }\n}\n\nmodule.exports = function resizeImageData (image, width, height, algorithm) {\n algorithm = algorithm || 'bilinear-interpolation'\n\n let resize\n switch (algorithm) {\n case 'nearest-neighbor': resize = nearestNeighbor; break\n case 'bilinear-interpolation': resize = bilinearInterpolation; break\n // FIXME: Only for backwards compatibility, remove in next major version\n case 'biliniear-interpolation': resize = bilinearInterpolation; break\n default: throw new Error(`Unknown algorithm: ${algorithm}`)\n }\n\n const result = new ImageData(width, height)\n\n resize(image, result)\n\n return result\n}\n","import CodepageEncoder from '@point-of-sale/codepage-encoder';\n\n/**\n * ESC/POS Language commands\n */\nclass LanguageEscPos {\n /**\n * Initialize the printer\n * @return {Array} Array of bytes to send to the printer\n */\n initialize() {\n return [\n {\n type: 'initialize',\n payload: [0x1b, 0x40],\n },\n {\n type: 'character-mode',\n value: 'single byte',\n payload: [0x1c, 0x2e],\n },\n {\n type: 'font',\n value: 'A',\n payload: [0x1b, 0x4d, 0x00],\n },\n ];\n }\n\n /**\n * Change the font\n * @param {string} value Font type ('A', 'B', or more)\n * @return {Array} Array of bytes to send to the printer\n */\n font(value) {\n const type = value.charCodeAt(0) - 0x41;\n\n return [\n {\n type: 'font',\n value,\n payload: [0x1b, 0x4d, type],\n },\n ];\n }\n\n /**\n * Change the alignment\n * @param {string} value Alignment value ('left', 'center', 'right')\n * @return {Array} Array of bytes to send to the printer\n */\n align(value) {\n let align = 0x00;\n\n if (value === 'center') {\n align = 0x01;\n } else if (value === 'right') {\n align = 0x02;\n }\n\n return [\n {\n type: 'align',\n value,\n payload: [0x1b, 0x61, align],\n },\n ];\n }\n\n /**\n * Generate a barcode\n * @param {string} value Value to encode\n * @param {string|number} symbology Barcode symbology\n * @param {object} options Configuration object\n * @return {Array} Array of bytes to send to the printer\n */\n barcode(value, symbology, options) {\n const result = [];\n\n const symbologies = {\n 'upca': 0x00,\n 'upce': 0x01,\n 'ean13': 0x02,\n 'ean8': 0x03,\n 'code39': 0x04,\n 'coda39': 0x04, /* typo, leave here for backwards compatibility */\n 'itf': 0x05,\n 'interleaved-2-of-5': 0x05,\n 'nw-7': 0x06,\n 'codabar': 0x06,\n 'code93': 0x48,\n 'code128': 0x49,\n 'gs1-128': 0x48,\n 'gs1-databar-omni': 0x4b,\n 'gs1-databar-truncated': 0x4c,\n 'gs1-databar-limited': 0x4d,\n 'gs1-databar-expanded': 0x4e,\n 'code128-auto': 0x4f,\n };\n\n if (typeof symbology === 'string' && typeof symbologies[symbology] === 'undefined') {\n throw new Error(`Symbology '${symbology}' not supported by language`);\n }\n\n /* Calculate segment width */\n\n if (options.width < 1 || options.width > 3) {\n throw new Error('Width must be between 1 and 3');\n }\n\n let width = options.width + 1;\n\n if (symbology === 'itf') {\n width = options.width * 2;\n }\n\n if (symbology === 'gs1-128' || symbology === 'gs1-databar-omni' ||\n symbology === 'gs1-databar-truncated' || symbology === 'gs1-databar-limited' ||\n symbology === 'gs1-databar-expanded') {\n width = options.width;\n }\n\n /* Set barcode options */\n\n result.push(\n {\n type: 'barcode',\n property: 'height',\n value: options.height,\n payload: [0x1d, 0x68, options.height],\n },\n {\n type: 'barcode',\n property: 'width',\n value: options.width,\n payload: [0x1d, 0x77, width],\n },\n {\n type: 'barcode',\n property: 'text',\n value: options.text,\n payload: [0x1d, 0x48, options.text ? 0x02 : 0x00],\n },\n );\n\n\n /* Encode barcode */\n\n if (symbology == 'code128' && !value.startsWith('{')) {\n value = '{B' + value;\n }\n\n if (symbology == 'gs1-128') {\n value = value.replace(/[()*]/g, '');\n }\n\n const bytes = CodepageEncoder.encode(value, 'ascii');\n\n const identifier = typeof symbology === 'string' ? symbologies[symbology] : symbology;\n\n if (identifier > 0x40) {\n /* Function B symbologies */\n\n result.push(\n {\n type: 'barcode',\n value: {symbology: symbology, data: value},\n payload: [0x1d, 0x6b, identifier, bytes.length, ...bytes],\n },\n );\n } else {\n /* Function A symbologies */\n\n result.push(\n {\n type: 'barcode',\n value: {symbology: symbology, data: value},\n payload: [0x1d, 0x6b, identifier, ...bytes, 0x00],\n },\n );\n }\n\n return result;\n }\n\n /**\n * Generate a QR code\n * @param {string} value Value to encode\n * @param {object} options Configuration object\n * @return {Array} Array of bytes to send to the printer\n */\n qrcode(value, options) {\n const result = [];\n\n /* Model */\n\n if (typeof options.model === 'number') {\n const models = {\n 1: 0x31,\n 2: 0x32,\n };\n\n if (options.model in models) {\n result.push(\n {\n type: 'qrcode',\n property: 'model',\n value: options.model,\n payload: [0x1d, 0x28, 0x6b, 0x04, 0x00, 0x31, 0x41, models[options.model], 0x00],\n },\n );\n } else {\n throw new Error('Model must be 1 or 2');\n }\n }\n\n /* Size */\n\n if (typeof options.size !== 'number') {\n throw new Error('Size must be a number');\n }\n\n if (options.size < 1 || options.size > 8) {\n throw new Error('Size must be between 1 and 8');\n }\n\n result.push(\n {\n type: 'qrcode',\n property: 'size',\n value: options.size,\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x31, 0x43, options.size],\n },\n );\n\n /* Error level */\n\n const errorlevels = {\n 'l': 0x30,\n 'm': 0x31,\n 'q': 0x32,\n 'h': 0x33,\n };\n\n if (options.errorlevel in errorlevels) {\n result.push(\n {\n type: 'qrcode',\n property: 'errorlevel',\n value: options.errorlevel,\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x31, 0x45, errorlevels[options.errorlevel]],\n },\n );\n } else {\n throw new Error('Error level must be l, m, q or h');\n }\n\n /* Data */\n\n const bytes = CodepageEncoder.encode(value, 'iso8859-1');\n const length = bytes.length + 3;\n\n result.push(\n {\n type: 'qrcode',\n property: 'data',\n value,\n payload: [0x1d, 0x28, 0x6b, length & 0xff, (length >> 8) & 0xff, 0x31, 0x50, 0x30, ...bytes],\n },\n );\n\n /* Print QR code */\n\n result.push(\n {\n type: 'qrcode',\n command: 'print',\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x31, 0x51, 0x30],\n },\n );\n\n return result;\n }\n\n /**\n * Generate a PDF417 code\n * @param {string} value Value to encode\n * @param {object} options Configuration object\n * @return {Array} Array of bytes to send to the printer\n */\n pdf417(value, options) {\n const result = [];\n\n /* Columns */\n\n if (typeof options.columns !== 'number') {\n throw new Error('Columns must be a number');\n }\n\n if (options.columns !== 0 && (options.columns < 1 || options.columns > 30)) {\n throw new Error('Columns must be 0, or between 1 and 30');\n }\n\n result.push(\n {\n type: 'pdf417',\n property: 'columns',\n value: options.columns,\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x30, 0x41, options.columns],\n },\n );\n\n /* Rows */\n\n if (typeof options.rows !== 'number') {\n throw new Error('Rows must be a number');\n }\n\n if (options.rows !== 0 && (options.rows < 3 || options.rows > 90)) {\n throw new Error('Rows must be 0, or between 3 and 90');\n }\n\n result.push(\n {\n type: 'pdf417',\n property: 'rows',\n value: options.rows,\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x30, 0x42, options.rows],\n },\n );\n\n /* Width */\n\n if (typeof options.width !== 'number') {\n throw new Error('Width must be a number');\n }\n\n if (options.width < 2 || options.width > 8) {\n throw new Error('Width must be between 2 and 8');\n }\n\n result.push(\n {\n type: 'pdf417',\n property: 'width',\n value: options.width,\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x30, 0x43, options.width],\n },\n );\n\n /* Height */\n\n if (typeof options.height !== 'number') {\n throw new Error('Height must be a number');\n }\n\n if (options.height < 2 || options.height > 8) {\n throw new Error('Height must be between 2 and 8');\n }\n\n result.push(\n {\n type: 'pdf417',\n property: 'height',\n value: options.height,\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x30, 0x44, options.height],\n },\n );\n\n /* Error level */\n\n if (typeof options.errorlevel !== 'number') {\n throw new Error('Errorlevel must be a number');\n }\n\n if (options.errorlevel < 0 || options.errorlevel > 8) {\n throw new Error('Errorlevel must be between 0 and 8');\n }\n\n result.push(\n {\n type: 'pdf417',\n property: 'errorlevel',\n value: options.errorlevel,\n payload: [0x1d, 0x28, 0x6b, 0x04, 0x00, 0x30, 0x45, 0x30, options.errorlevel + 0x30],\n },\n );\n\n /* Model: standard or truncated */\n\n result.push(\n {\n type: 'pdf417',\n property: 'truncated',\n value: !!options.truncated,\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x30, 0x46, options.truncated ? 0x01 : 0x00],\n },\n );\n\n /* Data */\n\n const bytes = CodepageEncoder.encode(value, 'ascii');\n const length = bytes.length + 3;\n\n result.push(\n {\n type: 'pdf417',\n property: 'data',\n value,\n payload: [0x1d, 0x28, 0x6b, length & 0xff, (length >> 8) & 0xff, 0x30, 0x50, 0x30, ...bytes],\n },\n );\n\n /* Print PDF417 code */\n\n result.push(\n {\n type: 'pdf417',\n command: 'print',\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x30, 0x51, 0x30],\n },\n );\n\n return result;\n }\n\n /**\n * Encode an image\n * @param {ImageData} image ImageData object\n * @param {number} width Width of the image\n * @param {number} height Height of the image\n * @param {string} mode Image encoding mode ('column' or 'raster')\n * @return {Array} Array of bytes to send to the printer\n */\n image(image, width, height, mode) {\n const result = [];\n\n const getPixel = (x, y) => x < width && y < height ? (image.data[((width * y) + x) * 4] > 0 ? 0 : 1) : 0;\n\n const getColumnData = (width, height) => {\n const data = [];\n\n for (let s = 0; s < Math.ceil(height / 24); s++) {\n const bytes = new Uint8Array(width * 3);\n\n for (let x = 0; x < width; x++) {\n for (let c = 0; c < 3; c++) {\n for (let b = 0; b < 8; b++) {\n bytes[(x * 3) + c] |= getPixel(x, (s * 24) + b + (8 * c)) << (7 - b);\n }\n }\n }\n\n data.push(bytes);\n }\n\n return data;\n };\n\n const getRowData = (width, height) => {\n const bytes = new Uint8Array((width * height) >> 3);\n\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x = x + 8) {\n for (let b = 0; b < 8; b++) {\n bytes[(y * (width >> 3)) + (x >> 3)] |= getPixel(x + b, y) << (7 - b);\n }\n }\n }\n\n return bytes;\n };\n\n /* Encode images with ESC * */\n\n if (mode == 'column') {\n result.push(\n {\n type: 'line-spacing',\n value: '24 dots',\n payload: [0x1b, 0x33, 0x24],\n },\n );\n\n getColumnData(width, height).forEach((bytes) => {\n result.push(\n {\n type: 'image',\n property: 'data',\n value: 'column',\n width,\n height: 24,\n payload: [0x1b, 0x2a, 0x21, width & 0xff, (width >> 8) & 0xff, ...bytes, 0x0a],\n },\n );\n });\n\n result.push(\n {\n type: 'line-spacing',\n value: 'default',\n payload: [0x1b, 0x32],\n },\n );\n }\n\n /* Encode images with GS v */\n\n if (mode == 'raster') {\n result.push(\n {\n type: 'image',\n command: 'data',\n value: 'raster',\n width,\n height,\n payload: [\n 0x1d, 0x76, 0x30, 0x00,\n (width >> 3) & 0xff, (((width >> 3) >> 8) & 0xff),\n height & 0xff, ((height >> 8) & 0xff),\n ...getRowData(width, height),\n ],\n },\n );\n }\n\n return result;\n }\n\n /**\n * Cut the paper\n * @param {string} value Cut type ('full' or 'partial')\n * @return {Array} Array of bytes to send to the printer\n */\n cut(value) {\n let data = 0x00;\n\n if (value == 'partial') {\n data = 0x01;\n }\n\n return [\n {\n type: 'cut',\n payload: [0x1d, 0x56, data],\n },\n ];\n }\n\n /**\n * Send a pulse to the cash drawer\n * @param {number} device Device number\n * @param {number} on Pulse ON time\n * @param {number} off Pulse OFF time\n * @return {Array} Array of bytes to send to the printer\n */\n pulse(device, on, off) {\n if (typeof device === 'undefined') {\n device = 0;\n }\n\n if (typeof on === 'undefined') {\n on = 100;\n }\n\n if (typeof off === 'undefined') {\n off = 500;\n }\n\n on = Math.min(500, Math.round(on / 2));\n off = Math.min(500, Math.round(off / 2));\n\n\n return [\n {\n type: 'pulse',\n payload: [0x1b, 0x70, device ? 1 : 0, on & 0xff, off & 0xff],\n },\n ];\n }\n\n /**\n * Enable or disable bold text\n * @param {boolean} value Enable or disable bold text, optional, default toggles between states\n * @return {Array} Array of bytes to send to the printer\n */\n bold(value) {\n let data = 0x00;\n\n if (value) {\n data = 0x01;\n }\n\n return [\n 0x1b, 0x45, data,\n ];\n }\n\n /**\n * Enable or disable underline text\n * @param {boolean} value Enable or disable underline text, optional, default toggles between states\n * @return {Array} Array of bytes to send to the printer\n */\n underline(value) {\n let data = 0x00;\n\n if (value) {\n data = 0x01;\n }\n\n return [\n 0x1b, 0x2d, data,\n ];\n }\n\n /**\n * Enable or disable italic text\n * @param {boolean} value Enable or disable italic text, optional, default toggles between states\n * @return {Array} Array of bytes to send to the printer\n */\n italic(value) {\n let data = 0x00;\n\n if (value) {\n data = 0x01;\n }\n\n return [\n 0x1b, 0x34, data,\n ];\n }\n\n /**\n * Enable or disable inverted text\n * @param {boolean} value Enable or disable inverted text, optional, default toggles between states\n * @return {Array} Array of bytes to send to the printer\n */\n invert(value) {\n let data = 0x00;\n\n if (value) {\n data = 0x01;\n }\n\n return [\n 0x1d, 0x42, data,\n ];\n }\n\n /**\n * Change text size\n * @param {number} width Width of the text (1-8)\n * @param {number} height Height of the text (1-8)\n * @return {Array} Array of bytes to send to the printer\n */\n size(width, height) {\n return [\n 0x1d, 0x21, (height - 1) | (width - 1) << 4,\n ];\n }\n\n /**\n * Change the codepage\n * @param {number} value Codepage value\n * @return {Array} Array of bytes to send to the printer\n */\n codepage(value) {\n return [\n 0x1b, 0x74, value,\n ];\n }\n\n /**\n * Flush the printers line buffer\n * @return {Array} Array of bytes to send to the printer\n */\n flush() {\n return [];\n }\n}\n\nexport default LanguageEscPos;\n","import CodepageEncoder from '@point-of-sale/codepage-encoder';\n\n/**\n * StarPRNT Language commands\n */\nclass LanguageStarPrnt {\n /**\n * Initialize the printer\n * @return {Array} Array of bytes to send to the printer\n */\n initialize() {\n return [\n {\n type: 'initialize',\n payload: [0x1b, 0x40, 0x18],\n },\n ];\n }\n\n /**\n * Change the font\n * @param {string} value Font type ('A', 'B' or 'C')\n * @return {Array} Array of bytes to send to the printer\n */\n font(value) {\n let type = 0x00;\n\n if (value === 'B') {\n type = 0x01;\n }\n\n if (value === 'C') {\n type = 0x02;\n }\n\n return [\n {\n type: 'font',\n value,\n payload: [0x1b, 0x1e, 0x46, type],\n },\n ];\n }\n\n /**\n * Change the alignment\n * @param {string} value Alignment value ('left', 'center', 'right')\n * @return {Array} Array of bytes to send to the printer\n */\n align(value) {\n let align = 0x00;\n\n if (value === 'center') {\n align = 0x01;\n } else if (value === 'right') {\n align = 0x02;\n }\n\n return [\n {\n type: 'align',\n value,\n payload: [0x1b, 0x1d, 0x61, align],\n },\n ];\n }\n\n /**\n * Generate a barcode\n * @param {string} value Value to encode\n * @param {string|number} symbology Barcode symbology\n * @param {object} options Configuration object\n * @return {Array} Array of bytes to send to the printer\n */\n barcode(value, symbology, options) {\n const result = [];\n\n const symbologies = {\n 'upce': 0x00,\n 'upca': 0x01,\n 'ean8': 0x02,\n 'ean13': 0x03,\n 'code39': 0x04,\n 'itf': 0x05,\n 'interleaved-2-of-5': 0x05,\n 'code128': 0x06,\n 'code93': 0x07,\n 'nw-7': 0x08,\n 'codabar': 0x08,\n 'gs1-128': 0x09,\n 'gs1-databar-omni': 0x0a,\n 'gs1-databar-truncated': 0x0b,\n 'gs1-databar-limited': 0x0c,\n 'gs1-databar-expanded': 0x0d,\n };\n\n if (typeof symbology === 'string' && typeof symbologies[symbology] === 'undefined') {\n throw new Error(`Symbology '${symbology}' not supported by language`);\n }\n\n if (options.width < 1 || options.width > 3) {\n throw new Error('Width must be between 1 and 3');\n }\n\n /* Selecting mode A, B or C for Code128 is not supported for StarPRNT, so ignore it and let the printer choose */\n\n if (symbology === 'code128' && value.startsWith('{')) {\n value = value.slice(2);\n }\n\n /* Encode the barcode value */\n\n const bytes = CodepageEncoder.encode(value, 'ascii');\n\n const identifier = typeof symbology === 'string' ? symbologies[symbology] : symbology;\n\n result.push(\n {\n type: 'barcode',\n value: {symbology: symbology, data: value, width: options.width, height: options.height, text: options.text},\n payload: [\n 0x1b, 0x62,\n identifier,\n options.text ? 0x02 : 0x01,\n options.width,\n options.height,\n ...bytes, 0x1e,\n ],\n },\n );\n\n return result;\n }\n\n /**\n * Generate a QR code\n * @param {string} value Value to encode\n * @param {object} options Configuration object\n * @return {Array} Array of bytes to send to the printer\n */\n qrcode(value, options) {\n const result = [];\n\n /* Model */\n\n const models = {\n 1: 0x01,\n 2: 0x02,\n };\n\n if (options.model in models) {\n result.push(\n {\n type: 'qrcode',\n property: 'model',\n value: options.model,\n payload: [0x1b, 0x1d, 0x79, 0x53, 0x30, models[options.model]],\n },\n );\n } else {\n throw new Error('Model must be 1 or 2');\n }\n\n /* Size */\n\n if (typeof options.size !== 'number') {\n throw new Error('Size must be a number');\n }\n\n if (options.size < 1 || options.size > 8) {\n throw new Error('Size must be between 1 and 8');\n }\n\n result.push(\n {\n type: 'qrcode',\n property: 'size',\n value: options.size,\n payload: [0x1b, 0x1d, 0x79, 0x53, 0x32, options.size],\n },\n );\n\n /* Error level */\n\n const errorlevels = {\n 'l': 0x00,\n 'm': 0x01,\n 'q': 0x02,\n 'h': 0x03,\n };\n\n if (options.errorlevel in errorlevels) {\n result.push(\n {\n type: 'qrcode',\n property: 'errorlevel',\n value: options.errorlevel,\n payload: [0x1b, 0x1d, 0x79, 0x53, 0x31, errorlevels[options.errorlevel]],\n },\n );\n } else {\n throw new Error('Error level must be l, m, q or h');\n }\n\n /* Data */\n\n const bytes = CodepageEncoder.encode(value, 'iso8859-1');\n const length = bytes.length;\n\n result.push(\n {\n type: 'qrcode',\n property: 'data',\n value,\n payload: [\n 0x1b, 0x1d, 0x79, 0x44, 0x31, 0x00,\n length & 0xff, (length >> 8) & 0xff,\n ...bytes,\n ],\n },\n );\n\n /* Print QR code */\n\n result.push(\n {\n type: 'qrcode',\n command: 'print',\n payload: [0x1b, 0x1d, 0x79, 0x50],\n },\n );\n\n return result;\n }\n\n /**\n * Generate a PDF417 code\n * @param {string} value Value to encode\n * @param {object} options Configuration object\n * @return {Array} Array of bytes to send to the printer\n */\n pdf417(value, options) {\n const result = [];\n\n /* Columns and Rows */\n\n if (typeof options.columns !== 'number') {\n throw new Error('Columns must be a number');\n }\n\n if (options.columns !== 0 && (options.columns < 1 || options.columns > 30)) {\n throw new Error('Columns must be 0, or between 1 and 30');\n }\n\n if (typeof options.rows !== 'number') {\n throw new Error('Rows must be a number');\n }\n\n if (options.rows !== 0 && (options.rows < 3 || options.rows > 90)) {\n throw new Error('Rows must be 0, or between 3 and 90');\n }\n\n result.push(\n {\n type: 'pdf417',\n value: `rows: ${options.rows}, columns: ${options.columns}`,\n payload: [0x1b, 0x1d, 0x78, 0x53, 0x30, 0x01, options.rows, options.columns],\n },\n );\n\n /* Width */\n\n if (typeof options.width !== 'number') {\n throw new Error('Width must be a number');\n }\n\n if (options.width < 2 || options.width > 8) {\n throw new Error('Width must be between 2 and 8');\n }\n\n result.push(\n {\n type: 'pdf417',\n property: 'width',\n value: options.width,\n payload: [0x1b, 0x1d, 0x78, 0x53, 0x32, options.width],\n },\n );\n\n /* Height */\n\n if (typeof options.height !== 'number') {\n throw new Error('Height must be a number');\n }\n\n if (options.height < 2 || options.height > 8) {\n throw new Error('Height must be between 2 and 8');\n }\n\n result.push(\n {\n type: 'pdf417',\n property: 'height',\n value: options.height,\n payload: [0x1b, 0x1d, 0x78, 0x53, 0x33, options.height],\n },\n );\n\n /* Error level */\n\n if (typeof options.errorlevel !== 'number') {\n throw new Error('Errorlevel must be a number');\n }\n\n if (options.errorlevel < 0 || options.errorlevel > 8) {\n throw new Error('Errorlevel must be between 0 and 8');\n }\n\n result.push(\n {\n type: 'pdf417',\n property: 'errorlevel',\n value: options.errorlevel,\n payload: [0x1b, 0x1d, 0x78, 0x53, 0x31, options.errorlevel],\n },\n );\n\n /* Data */\n\n const bytes = CodepageEncoder.encode(value, 'ascii');\n const length = bytes.length;\n\n result.push(\n {\n type: 'pdf417',\n property: 'data',\n value,\n payload: [\n 0x1b, 0x1d, 0x78, 0x44,\n length & 0xff, (length >> 8) & 0xff,\n ...bytes,\n ],\n },\n );\n\n /* Print PDF417 code */\n\n result.push(\n {\n type: 'pdf417',\n command: 'print',\n payload: [0x1b, 0x1d, 0x78, 0x50],\n },\n );\n\n return result;\n }\n\n /**\n * Encode an image\n * @param {ImageData} image ImageData object\n * @param {number} width Width of the image\n * @param {number} height Height of the image\n * @param {string} mode Image encoding mode (value is ignored)\n * @return {Array} Array of bytes to send to the printer\n */\n image(image, width, height, mode) {\n const result = [];\n\n const getPixel = (x, y) => typeof image.data[((width * y) + x) * 4] === 'undefined' ||\n image.data[((width * y) + x) * 4] > 0 ? 0 : 1;\n\n result.push(\n {\n type: 'line-spacing',\n value: '24 dots',\n payload: [0x1b, 0x30],\n },\n );\n\n for (let s = 0; s < height / 24; s++) {\n const y = s * 24;\n const bytes = new Uint8Array(width * 3);\n\n for (let x = 0; x < width; x++) {\n const i = x * 3;\n\n bytes[i] =\n getPixel(x, y + 0) << 7 |\n getPixel(x, y + 1) << 6 |\n getPixel(x, y + 2) << 5 |\n getPixel(x, y + 3) << 4 |\n getPixel(x, y + 4) << 3 |\n getPixel(x, y + 5) << 2 |\n getPixel(x, y + 6) << 1 |\n getPixel(x, y + 7);\n\n bytes[i + 1] =\n getPixel(x, y + 8) << 7 |\n getPixel(x, y + 9) << 6 |\n getPixel(x, y + 10) << 5 |\n getPixel(x, y + 11) << 4 |\n getPixel(x, y + 12) << 3 |\n getPixel(x, y + 13) << 2 |\n getPixel(x, y + 14) << 1 |\n getPixel(x, y + 15);\n\n bytes[i + 2] =\n getPixel(x, y + 16) << 7 |\n getPixel(x, y + 17) << 6 |\n getPixel(x, y + 18) << 5 |\n getPixel(x, y + 19) << 4 |\n getPixel(x, y + 20) << 3 |\n getPixel(x, y + 21) << 2 |\n getPixel(x, y + 22) << 1 |\n getPixel(x, y + 23);\n }\n\n result.push(\n {\n type: 'image',\n property: 'data',\n value: 'column',\n width,\n height: 24,\n payload: [\n 0x1b, 0x58,\n width & 0xff, (width >> 8) & 0xff,\n ...bytes,\n 0x0a, 0x0d,\n ],\n },\n );\n }\n\n result.push(\n {\n type: 'line-spacing',\n value: 'default',\n payload: [0x1b, 0x7a, 0x01],\n },\n );\n\n return result;\n }\n\n /**\n * Cut the paper\n * @param {string} value Cut type ('full' or 'partial')\n * @return {Array} Array of bytes to send to the printer\n */\n cut(value) {\n let data = 0x00;\n\n if (value == 'partial') {\n data = 0x01;\n }\n\n return [\n {\n type: 'cut',\n payload: [0x1b, 0x64, data],\n },\n ];\n }\n\n /**\n * Send a pulse to the cash drawer\n * @param {number} device Device number\n * @param {number} on Pulse ON time\n * @param {number} off Pulse OFF time\n * @return {Array} Array of bytes to send to the printer\n */\n pulse(device, on, off) {\n if (typeof device === 'undefined') {\n device = 0;\n }\n\n if (typeof on === 'undefined') {\n on = 200;\n }\n\n if (typeof off === 'undefined') {\n off = 200;\n }\n\n on = Math.min(127, Math.round(on / 10));\n off = Math.min(127, Math.round(off / 10));\n\n return [\n {\n type: 'pulse',\n payload: [0x1b, 0x07, on & 0xff, off & 0xff, device ? 0x1a : 0x07],\n },\n ];\n }\n\n /**\n * Enable or disable bold text\n * @param {boolean} value Enable or disable bold text, optional, default toggles between states\n * @return {Array} Array of bytes to send to the printer\n */\n bold(value) {\n let data = 0x46;\n\n if (value) {\n data = 0x45;\n }\n\n return [\n 0x1b, data,\n ];\n }\n\n /**\n * Enable or disable underline text\n * @param {boolean} value Enable or disable underline text, optional, default toggles between states\n * @return {Array} Array of bytes to send to the printer\n */\n underline(value) {\n let data = 0x00;\n\n if (value) {\n data = 0x01;\n }\n\n return [\n 0x1b, 0x2d, data,\n ];\n }\n\n /**\n * Enable or disable italic text\n * @param {boolean} value Enable or disable italic text, optional, default toggles between states\n * @return {Array} Array of bytes to send to the printer\n */\n italic(value) {\n return [];\n }\n\n /**\n * Enable or disable inverted text\n * @param {boolean} value Enable or disable inverted text, optional, default toggles between states\n * @return {Array} Array of bytes to send to the printer\n */\n invert(value) {\n let data = 0x35;\n\n if (value) {\n data = 0x34;\n }\n\n return [\n 0x1b, data,\n ];\n }\n\n /**\n * Change text size\n * @param {number} width Width of the text (1-8)\n * @param {number} height Height of the text (1-8)\n * @return {Array} Array of bytes to send to the printer\n */\n size(width, height) {\n return [\n 0x1b, 0x69, height - 1, width - 1,\n ];\n }\n\n /**\n * Change the codepage\n * @param {number} value Codepage value\n * @return {Array} Array of bytes to send to the printer\n */\n codepage(value) {\n return [\n 0x1b, 0x1d, 0x74, value,\n ];\n }\n\n /**\n * Flush the printers line buffer\n * @return {Array} Array of bytes to send to the printer\n */\n flush() {\n return [\n {\n type: 'print-mode',\n value: 'page',\n payload: [0x1b, 0x1d, 0x50, 0x30],\n },\n {\n type: 'print-mode',\n value: 'line',\n payload: [0x1b, 0x1d, 0x50, 0x31],\n },\n ];\n }\n}\n\nexport default LanguageStarPrnt;\n","\n/**\n * Store and manage text styles\n */\nclass TextStyle {\n #default = {\n bold: false,\n italic: false,\n underline: false,\n invert: false,\n width: 1,\n height: 1,\n };\n\n #current;\n #callback;\n\n /**\n * Create a new TextStyle object\n *\n * @param {object} options Object containing configuration options\n */\n constructor(options) {\n this.#current = structuredClone(this.#default);\n this.#callback = options.callback || (() => {});\n }\n\n /**\n * Return commands to get to the default style from the current style\n *\n * @return {array} Array of modified properties\n */\n store() {\n const result = [];\n\n const properties = new Map();\n\n for (const property in this.#current) {\n if (this.#current[property] !== this.#default[property]) {\n if (property === 'width' || property === 'height') {\n properties.set('size', {width: this.#default.width, height: this.#default.height});\n } else {\n properties.set(property, this.#default[property]);\n }\n }\n }\n\n for (const property of properties) {\n result.push({\n type: 'style',\n property: property[0],\n value: property[1],\n });\n }\n\n return result;\n }\n\n /**\n * Return commands to get to the current style from the default style\n *\n * @return {array} Array of modified properties\n */\n restore() {\n const result = [];\n\n const properties = new Map();\n\n for (const property in this.#current) {\n if (this.#current[property] !== this.#default[property]) {\n if (property === 'width' || property === 'height') {\n properties.set('size', {width: this.#current.width, height: this.#current.height});\n } else {\n properties.set(property, this.#current[property]);\n }\n }\n }\n\n for (const property of properties) {\n result.push({\n type: 'style',\n property: property[0],\n value: property[1],\n });\n }\n\n return result;\n }\n\n /**\n * Set the bold property\n *\n * @param {boolean} value Is bold enabled, or not?\n */\n set bold(value) {\n if (value !== this.#current.bold) {\n this.#current.bold = value;\n\n this.#callback({\n type: 'style',\n property: 'bold',\n value,\n });\n }\n }\n\n /**\n * Get the bold property\n *\n * @return {boolean} Is bold enabled, or not?\n */\n get bold() {\n return this.#current.bold;\n }\n\n /**\n * Set the italic property\n *\n * @param {boolean} value Is italic enabled, or not?\n */\n set italic(value) {\n if (value !== this.#current.italic) {\n this.#current.italic = value;\n\n this.#callback({\n type: 'style',\n property: 'italic',\n value,\n });\n }\n }\n\n /**\n * Get the italic property\n *\n * @return {boolean} Is italic enabled, or not?\n */\n get italic() {\n return this.#current.italic;\n }\n\n /**\n * Set the underline property\n *\n * @param {boolean} value Is underline enabled, or not?\n */\n set underline(value) {\n if (value !== this.#current.underline) {\n this.#current.underline = value;\n\n this.#callback({\n type: 'style',\n property: 'underline',\n value,\n });\n }\n }\n\n /**\n * Get the underline property\n *\n * @return {boolean} Is underline enabled, or not?\n */\n get underline() {\n return this.#current.underline;\n }\n\n /**\n * Set the invert property\n *\n * @param {boolean} value Is invert enabled, or not?\n */\n set invert(value) {\n if (value !== this.#current.invert) {\n this.#current.invert = value;\n\n this.#callback({\n type: 'style',\n property: 'invert',\n value,\n });\n }\n }\n\n /**\n * Get the invert property\n *\n * @return {boolean} Is invert enabled, or not?\n */\n get invert() {\n return this.#current.invert;\n }\n\n /**\n * Set the width property\n *\n * @param {number} value The width of a character\n */\n set width(value) {\n if (value !== this.#current.width) {\n this.#current.width = value;\n\n this.#callback({\n type: 'style',\n property: 'size',\n value: {width: this.#current.width, height: this.#current.height},\n });\n }\n }\n\n /**\n * Get the width property\n *\n * @return {number} The width of a character\n */\n get width() {\n return this.#current.width;\n }\n\n /**\n * Set the height property\n *\n * @param {number} value The height of a character\n */\n set height(value) {\n if (value !== this.#current.height) {\n this.#current.height = value;\n\n this.#callback({\n type: 'style',\n property: 'size',\n value: {width: this.#current.width, height: this.#current.height},\n });\n }\n }\n\n /**\n * Get the height property\n *\n * @return {number} The height of a character\n */\n get height() {\n return this.#current.height;\n }\n}\n\nexport default TextStyle;\n","\n/**\n * Wrap text into lines of a specified width.\n */\nclass TextWrap {\n /**\n * Static function to wrap text into lines of a specified width.\n *\n * @param {string} value Text to wrap\n * @param {object} options Object containing configuration options\n * @return {array} Array of lines\n */\n static wrap(value, options) {\n const result = [];\n let line = [];\n let length = options.indent || 0;\n const width = options.width || 1;\n const columns = options.columns || 42;\n\n const lines = String(value).split(/\\r\\n|\\n/g);\n\n for (const value of lines) {\n const chunks = value.match(/[^\\s-]+?-\\b|\\S+|\\s+|\\r\\n?|\\n/g) || ['~~empty~~'];\n\n for (const chunk of chunks) {\n if (chunk === '~~empty~~') {\n result.push(line);\n line = [];\n length = 0;\n continue;\n }\n\n /* The word does not fit on the line */\n\n if (length + (chunk.length * width) > columns) {\n /* The word is longer than the line */\n\n if (chunk.length * width > columns) {\n /* Calculate the remaining space on the line */\n\n const remaining = columns - length;\n\n /* Split the word into pieces */\n\n const letters = chunk.split('');\n let piece;\n const pieces = [];\n\n /* If there are at least 8 position remaining, break early */\n\n if (remaining > 8 * width) {\n piece = letters.splice(0, Math.floor(remaining / width)).join('');\n\n line.push(piece);\n result.push(line);\n\n line = [];\n length = 0;\n }\n\n /* The remaining letters can be split into pieces the size of the width */\n\n while ((piece = letters.splice(0, Math.floor(columns / width))).length) {\n pieces.push(piece.join(''));\n }\n\n for (const piece of pieces) {\n if (length + (piece.length * width) > columns) {\n result.push(line);\n line = [];\n length = 0;\n }\n\n line.push(piece);\n length += piece.length * width;\n }\n\n continue;\n }\n\n /* Word fits on the next line */\n result.push(line);\n line = [];\n length = 0;\n }\n\n /* Check if we are whitespace */\n\n if (chunk.match(/\\s+/) && length == 0) {\n continue;\n }\n\n line.push(chunk);\n length += chunk.length * width;\n }\n\n if (line.length > 0) {\n result.push(line);\n line = [];\n length = 0;\n }\n }\n\n for (let i = 0; i < result.length; i++) {\n result[i] = result[i].join('');\n\n if (i < result.length - 1) {\n result[i] = result[i].trimEnd();\n }\n }\n\n return result;\n }\n}\n\nexport default TextWrap;\n","import TextStyle from './text-style.js';\nimport TextWrap from './text-wrap.js';\n\n/**\n * Compose lines of text and commands\n */\nclass LineComposer {\n #embedded;\n #columns;\n #align;\n #callback;\n\n #cursor = 0;\n #stored;\n #buffer = [];\n\n\n /**\n * Create a new LineComposer object\n *\n * @param {object} options Object containing configuration options\n */\n constructor(options) {\n this.#embedded = options.embedded || false;\n this.#columns = options.columns || 42;\n this.#align = options.align || 'left';\n this.#callback = options.callback || (() => {});\n\n this.style = new TextStyle({\n callback: (value) => {\n this.add(value, 0);\n },\n });\n\n this.#stored = this.style.store();\n }\n\n /**\n * Add text to the line, potentially wrapping it\n *\n * @param {string} value Text to add to the line\n * @param {number} codepage Codepage to use for the text\n */\n text(value, codepage) {\n const lines = TextWrap.wrap(value, {columns: this.#columns, width: this.style.width, indent: this.#cursor});\n\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].length) {\n /* Add the line to the buffer */\n this.add({type: 'text', value: lines[i], codepage}, lines[i].length * this.style.width);\n\n /* If it is not the last line, flush the buffer */\n if (i < lines.length - 1) {\n this.flush();\n }\n } else {\n /* In case the line is empty, flush the buffer */\n this.flush({forceNewline: true});\n }\n }\n }\n\n /**\n * Add spaces to the line\n *\n * @param {number} size Number of spaces to add to the line\n */\n space(size) {\n this.add({type: 'space', size}, size);\n }\n\n /**\n * Add raw bytes to to the line\n *\n * @param {array} value Array of bytes to add to the line\n * @param {number} length Length in characters of the value\n */\n raw(value, length) {\n this.add({type: 'raw', payload: value}, length || 0);\n }\n\n /**\n * Add an item to the line buffer, potentially flushing it\n *\n * @param {object} value Item to add to the line buffer\n * @param {number} length Length in characters of the value\n */\n add(value, length) {\n if (value instanceof Array) {\n for (const item of value) {\n this.add(item);\n }\n\n this.#cursor += length || 0;\n return;\n }\n\n length = length || 0;\n\n if (length + this.#cursor > this.#columns) {\n this.flush();\n }\n\n this.#cursor += length;\n this.#buffer = this.#buffer.concat(value);\n }\n\n /**\n * Move the cursor to the end of the line, forcing a flush\n * with the next item to add to the line buffer\n */\n end() {\n this.#cursor = this.#columns;\n }\n\n /**\n * Fetch the contents of line buffer\n *\n * @param {options} options Options for flushing the buffer\n * @return {array} Array of items in the line buffer\n */\n fetch(options) {\n /* Unless forced keep style changes for the next line */\n\n if (this.#cursor === 0 && !options.forceNewline && !options.forceFlush) {\n return [];\n }\n\n /* Check the alignment of the current line */\n\n const align = {\n current: this.#align,\n next: null,\n };\n\n for (let i = 0; i < this.#buffer.length - 1; i++) {\n if (this.#buffer[i].type === 'align' && !this.#buffer[i].payload) {\n align.current = this.#buffer[i].value;\n }\n }\n\n /* Check the last item in the buffer, to see if it changes the alignment, then save it for the next line */\n\n if (this.#buffer.length) {\n const last = this.#buffer[this.#buffer.length - 1];\n\n if (last.type === 'align' && !last.payload) {\n align.next = last.value;\n }\n }\n\n this.#align = align.current;\n\n /* Create a clean buffer without alignment changes */\n\n const buffer = this.#buffer.filter((item) => item.type !== 'align' || item.payload);\n\n /* Fetch the contents of the line buffer */\n\n let result = [];\n\n const restore = this.style.restore();\n const store = this.style.store();\n\n if (this.#cursor === 0 && (options.ignoreAlignment || !this.#embedded)) {\n result = this.#merge([\n ...this.#stored,\n ...buffer,\n ...store,\n ]);\n } else {\n if (this.#align === 'right') {\n let last;\n\n /* Find index of last text or space element */\n\n for (let i = buffer.length - 1; i >= 0; i--) {\n if (buffer[i].type === 'text' || buffer[i].type === 'space') {\n last = i;\n break;\n }\n }\n\n /* Remove trailing spaces from lines */\n\n if (typeof last === 'number') {\n if (buffer[last].type === 'space' && buffer[last].size > this.style.width) {\n buffer[last].size -= this.style.width;\n this.#cursor -= this.style.width;\n }\n\n if (buffer[last].type === 'text' && buffer[last].value.endsWith(' ')) {\n buffer[last].value = buffer[last].value.slice(0, -1);\n this.#cursor -= this.style.width;\n }\n }\n\n result = this.#merge([\n {type: 'space', size: this.#columns - this.#cursor},\n ...this.#stored,\n ...buffer,\n ...store,\n ]);\n }\n\n if (this.#align === 'center') {\n const left = (this.#columns - this.#cursor) >> 1;\n\n result = this.#merge([\n {type: 'space', size: left},\n ...this.#stored,\n ...buffer,\n ...store,\n {type: 'space', size: this.#embedded ? this.#columns - this.#cursor - left : 0},\n ]);\n }\n\n if (this.#align === 'left') {\n result = this.#merge([\n ...this.#stored,\n ...buffer,\n ...store,\n {type: 'space', size: this.#embedded ? this.#columns - this.#cursor : 0},\n ]);\n }\n }\n\n this.#stored = restore;\n this.#buffer = [];\n this.#cursor = 0;\n\n if (result.length === 0 && options.forceNewline) {\n result.push({type: 'empty'});\n }\n\n if (align.next) {\n this.#align = align.next;\n }\n\n return result;\n }\n\n /**\n * Flush the contents of the line buffer\n *\n * @param {options} options Options for flushing the buffer\n */\n flush(options) {\n options = Object.assign({\n forceNewline: false,\n forceFlush: false,\n ignoreAlignment: false,\n }, options || {});\n\n const result = this.fetch(options);\n\n if (result.length) {\n this.#callback(result);\n }\n }\n\n /**\n * Merge text items and spaces in the line buffer\n *\n * @param {array} items Array of items\n * @return {array} Array of merged items\n */\n #merge(items) {\n const result = [];\n let last = -1;\n\n for (let item of items) {\n if (item.type === 'space') {\n if (item.size === 0) {\n continue;\n }\n\n item = {type: 'text', value: ' '.repeat(item.size), codepage: null};\n }\n\n if (item.type === 'text') {\n /* Check if we can merge the text with the last item */\n\n const allowMerge =\n last >= 0 &&\n result[last].type === 'text' &&\n (\n result[last].codepage === item.codepage ||\n result[last].codepage === null ||\n item.codepage === null\n );\n\n if (allowMerge) {\n result[last].value += item.value;\n result[last].codepage = result[last].codepage || item.codepage;\n continue;\n }\n\n result.push(item);\n last++;\n } else if (item.type === 'style' && item.property === 'size') {\n const allowMerge =\n last >= 0 &&\n result[last].type === 'style' &&\n result[last].property === 'size';\n\n if (allowMerge) {\n result[last].value = item.value;\n continue;\n }\n\n result.push(item);\n last++;\n } else {\n result.push(item);\n last++;\n }\n }\n\n return result;\n }\n\n /**\n * Get the current position of the cursor\n *\n * @return {number} Current position of the cursor\n */\n get cursor() {\n return this.#cursor;\n }\n\n /**\n * Set the alignment of the current line\n *\n * @param {string} value Text alignment, can be 'left', 'center', or 'right'\n */\n set align(value) {\n this.add({type: 'align', value}, 0);\n }\n\n /**\n * Get the alignment of the current line\n *\n * @return {string} Text alignment, can be 'left', 'center', or 'right'\n */\n get align() {\n let align = this.#align;\n\n for (let i = 0; i < this.#buffer.length; i++) {\n if (this.#buffer[i].type === 'align') {\n align = this.#buffer[i].value;\n }\n }\n\n return align;\n }\n\n /**\n * Set the number of columns of the current line\n *\n * @param {number} value columns of the line\n */\n set columns(value) {\n this.#columns = value;\n }\n\n /**\n * Get the number of columns of the current line\n *\n * @return {number} columns of the line\n */\n get columns() {\n return this.#columns;\n }\n}\n\nexport default LineComposer;\n","const codepageMappings = {\n\t'esc-pos': {\n\t\t'bixolon/legacy': ['cp437','epson/katakana','cp850','cp860','cp863','cp865',,,,,,,,,,,,,,'cp858'],\n\t\t'bixolon': ['cp437','epson/katakana','cp850','cp860','cp863','cp865',,,,,,,,,,,'windows1252','cp866','cp852','cp858',,'cp862','cp864','thai42','windows1253','windows1254','windows1257',,'windows1251','cp737','cp775','thai14','bixolon/hebrew','windows1255','thai11','thai18','cp885','cp857','iso8859-7','thai16','windows1256','windows1258','khmer',,,,'bixolon/cp866','windows1250',,'tcvn3','tcvn3capitals','viscii'],\n\t\t'citizen': ['cp437','epson/katakana','cp858','cp860','cp863','cp865','cp852','cp866','cp857',,,,,,,,'windows1252',,,,,'thai11',,,,,'thai13',,,,'tcvn3','tcvn3capitals','windows1258',,,,,,,,'cp864'],\n\t\t'epson/legacy': ['cp437','epson/katakana','cp850','cp860','cp863','cp865',,,,,,,,,,,'windows1252','cp866','cp852','cp858'],\n\t\t'epson': ['cp437','epson/katakana','cp850','cp860','cp863','cp865',,,,,,'cp851','cp853','cp857','cp737','iso8859-7','windows1252','cp866','cp852','cp858','thai42','thai11',,,,,'thai13',,,,'tcvn3','tcvn3capitals','cp720','cp775','cp855','cp861','cp862','cp864','cp869','epson/iso8859-2','iso8859-15','cp1098','cp774','cp772','cp1125','windows1250','windows1251','windows1253','windows1254','windows1255','windows1256','windows1257','windows1258','rk1048'],\n\t\t'fujitsu': ['cp437','epson/katakana','cp850','cp860','cp863','cp865',,,'cp857',,,,,,,,'windows1252','cp866','cp852','cp858',,,,,,,'thai13',,,,,,,,,,,,,,'cp864'],\n\t\t'hp': ['cp437','cp850','cp852','cp860','cp863','cp865','cp858','cp866','windows1252','cp862','cp737','cp874','cp857','windows1251','windows1255','rk1048'],\n\t\t'metapace': ['cp437','epson/katakana','cp850','cp860','cp863','cp865',,,,,,,,,,,,,,'cp858'],\n\t\t'mpt': ['cp437',,'cp850','cp860','cp863','cp865','windows1251','cp866','cp3021','cp3012'],\n\t\t'pos-5890': ['cp437','epson/katakana','cp850','cp860','cp863','cp865','iso8859-1',,'cp862',,,,,,,,'windows1252','cp866','cp852','cp858',,,,'windows1251','cp737','windows1257',,'windows1258','cp864',,,,'windows1255',,,,,,,,,,,,,,,,,,,,,,,,'cp861',,,,'cp855','cp857',,,,'cp851','cp869',,'cp772','cp774',,,'windows1250',,'cp3840',,'cp3843','cp3844','cp3845','cp3846','cp3847','cp3848',,'cp771','cp3001','cp3002','cp3011','cp3012',,'cp3041','windows1253','windows1254','windows1256','cp720',,'cp775'],\n\t\t'pos-8360': ['cp437','epson/katakana','cp850','cp860','cp863','cp865','iso8859-1','windows1253','cp862',,,,,,,,'windows1252','cp866','cp852','cp858',,'latvian',,'windows1251','cp737','windows1257',,'windows1258','cp864',,,'pos8360/hebrew','windows1255',,,,,,,,,,,,,,,,,,,,,,,,'cp861',,,,'cp855','cp857',,,,'cp851','cp869',,'cp772','cp774',,,'windows1250',,'cp3840',,'cp3843','cp3844','cp3845','cp3846','cp3847','cp3848',,'cp771','cp3001','cp3002','cp3011','cp3012',,,,'windows1254','windows1256','cp720',,'cp775'],\n\t\t'star': ['cp437','star/katakana','cp850','cp860','cp863','cp865',,,,,,,,,,,'windows1252','cp866','cp852','cp858','thai42','thai11','thai13','thai14','thai16',,'thai18'],\n\t\t'xprinter': ['cp437','epson/katakana','cp850','cp860','cp863','cp865','iso8859-1','windows1253','xprinter/hebrew','cp3012',,'windows1255',,,,,'windows1252','cp866','cp852','cp858',,'latvian','cp864','windows1251','cp737','windows1257',,,,,,,,'windows1256'],\n\t\t'youku': ['cp437','epson/katakana','cp850','cp860','cp863','cp865','windows1251','cp866','cp3021','cp3012',,,,,,'cp862','windows1252',,'cp852','cp858',,,'cp864','iso8859-1','cp737','windows1257',,,'cp855','cp857','windows1250','cp775','windows1254','windows1255','windows1256','windows1258',,,'iso8859-1',,,,,,'iso8859-15',,,'cp874'],\n\t},\n\t'star-prnt': {\n\t\t'star': ['star/standard','cp437','star/katakana',,'cp858','cp852','cp860','cp861','cp863','cp865','cp866','cp855','cp857','cp862','cp864','cp737','cp851','cp869','star/cp928','cp772','cp774','star/cp874',,,,,,,,,,,'windows1252','windows1250','windows1251',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'cp3840','cp3841','cp3843','cp3844','cp3845','cp3846','cp3847','cp3848','cp1001','cp771','cp3001','cp3002','cp3011','cp3012','cp3021','cp3041'],\n\t}\n};\n\ncodepageMappings['star-line'] = codepageMappings['star-prnt'];\ncodepageMappings['esc-pos']['zijang'] = codepageMappings['esc-pos']['pos-5890'];\n\nexport default codepageMappings;\n","const printerDefinitions = {\n\t'bixolon-srp350': {vendor:'Bixolon',model:'SRP-350',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'bixolon/legacy',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:false,models:[]},pdf417:{supported:false},cutter:{feed:4}}},\n\t'bixolon-srp350iii': {vendor:'Bixolon',model:'SRP-350III',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'bixolon',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56},C:{size:'9x24',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'citizen-ct-s310ii': {vendor:'Citizen',model:'CT-S310II',media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'citizen',fonts:{A:{size:'12x24',columns:48},B:{size:'9x24',columns:64},C:{size:'8x16',columns:72}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:3}}},\n\t'epson-tm-m30ii': {vendor:'Epson',model:'TM-m30II',interfaces:{usb:{productName:'TM-m30II'}},media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:48},B:{size:'10x24',columns:57},C:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded','code128-auto']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-m30iii': {vendor:'Epson',model:'TM-m30III',interfaces:{usb:{productName:'TM-m30III'}},media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:48},B:{size:'10x24',columns:57},C:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded','code128-auto']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-p20ii': {vendor:'Epson',model:'TM-P20II',media:{dpi:203,width:58},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:32},B:{size:'9x24',columns:42},C:{size:'9x17',columns:42},D:{size:'10x24',columns:38},E:{size:'8x16',columns:48}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded','code128-auto']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},images:{mode:'raster'},cutter:{feed:3}}},\n\t'epson-tm-t20ii': {vendor:'Epson',model:'TM-T20II',interfaces:{usb:{productName:'TM-T20II'}},media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t20iii': {vendor:'Epson',model:'TM-T20III',interfaces:{usb:{productName:'TM-T20III'}},media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t20iv': {vendor:'Epson',model:'TM-T20IV',interfaces:{usb:{productName:'TM-T20IV'}},media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded','code128-auto']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t70': {vendor:'Epson',model:'TM-T70',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson/legacy',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},images:{mode:'raster'},cutter:{feed:4}}},\n\t'epson-tm-t70ii': {vendor:'Epson',model:'TM-T70II','interface':{usb:{productName:'TM-T70II'}},media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},images:{mode:'raster'},cutter:{feed:4}}},\n\t'epson-tm-t88ii': {vendor:'Epson',model:'TM-T88II',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson/legacy',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t88iii': {vendor:'Epson',model:'TM-T88III',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson/legacy',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t88iv': {vendor:'Epson',model:'TM-T88IV',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson/legacy',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t88v': {vendor:'Epson',model:'TM-T88V',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t88vi': {vendor:'Epson',model:'TM-T88VI',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t88vii': {vendor:'Epson',model:'TM-T88VII',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded','code128-auto']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'fujitsu-fp1000': {vendor:'Fujitsu',model:'FP-1000',media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'fujitsu',fonts:{A:{size:'12x24',columns:48},B:{size:'9x24',columns:56},C:{size:'8x16',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:false},cutter:{feed:4}}},\n\t'hp-a779': {vendor:'HP',model:'A779',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'hp',newline:'\\n',fonts:{A:{size:'12x24',columns:44}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:false,fallback:{type:'barcode',symbology:75}},cutter:{feed:4}}},\n\t'metapace-t1': {vendor:'Metapace',model:'T-1',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'metapace',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:false,models:[]},pdf417:{supported:false},cutter:{feed:4}}},\n\t'mpt-ii': {vendor:'',model:'MPT-II',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'mpt',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64},C:{size:'0x0',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:[]},pdf417:{supported:false}}},\n\t'pos-5890': {vendor:'',model:'POS-5890',media:{dpi:203,width:58},capabilities:{language:'esc-pos',codepages:'pos-5890',fonts:{A:{size:'12x24',columns:32},B:{size:'9x17',columns:42}},barcodes:{supported:true,symbologies:['upca','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['2']},pdf417:{supported:true},images:{mode:'raster'},cutter:{feed:1}}},\n\t'pos-8360': {vendor:'',model:'POS-8360',media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'pos-8360',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['2']},pdf417:{supported:true},images:{mode:'raster'},cutter:{feed:4}}},\n\t'star-mc-print2': {vendor:'Star',model:'mC-Print2',interfaces:{usb:{productName:'mC-Print2'}},media:{dpi:203,width:58},capabilities:{language:'star-prnt',codepages:'star',fonts:{A:{size:'12x24',columns:32},B:{size:'9x24',columns:42}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','itf','codabar','code93','code128','gs1-128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:3}}},\n\t'star-mpop': {vendor:'Star',model:'mPOP',interfaces:{usb:{productName:'mPOP'}},media:{dpi:203,width:58},capabilities:{language:'star-prnt',codepages:'star',fonts:{A:{size:'12x24',columns:32},B:{size:'9x24',columns:42}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','itf','codabar','code93','code128','gs1-128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:3}}},\n\t'star-sm-l200': {vendor:'Star',model:'SM-L200',media:{dpi:203,width:58},capabilities:{language:'star-prnt',codepages:'star',fonts:{A:{size:'12x24',columns:32},B:{size:'9x24',columns:42},C:{size:'9x17',columns:42}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','itf','codabar','code93','code128']},qrcode:{supported:true,models:['2']},pdf417:{supported:true}}},\n\t'star-tsp100iii': {vendor:'Star',model:'TSP100III',media:{dpi:203,width:80},capabilities:{language:'star-prnt',codepages:'star',fonts:{A:{size:'12x24',columns:48},B:{size:'9x24',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:3}}},\n\t'star-tsp100iv': {vendor:'Star',model:'TSP100IV',media:{dpi:203,width:80},capabilities:{language:'star-prnt',codepages:'star',fonts:{A:{size:'12x24',columns:48},B:{size:'9x24',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:3}}},\n\t'star-tsp650': {vendor:'Star',model:'TSP650',media:{dpi:203,width:80},capabilities:{language:'star-line',codepages:'star',fonts:{A:{size:'12x24',columns:48},B:{size:'9x24',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:false,models:[]},pdf417:{supported:false},cutter:{feed:3}}},\n\t'star-tsp650ii': {vendor:'Star',model:'TSP650II',media:{dpi:203,width:80},capabilities:{language:'star-line',codepages:'star',fonts:{A:{size:'12x24',columns:48},B:{size:'9x24',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:3}}},\n\t'xprinter-xp-n160ii': {vendor:'Xprinter',model:'XP-N160II',interfaces:{usb:{productName:'Printer-80\\u0000'}},media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'xprinter',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-128']},qrcode:{supported:true,models:['2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'xprinter-xp-t80q': {vendor:'Xprinter',model:'XP-T80Q',media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'xprinter',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-128']},qrcode:{supported:true,models:['2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'youku-58t': {vendor:'Youku',model:'58T',media:{dpi:203,width:58},capabilities:{language:'esc-pos',codepages:'youku',fonts:{A:{size:'12x24',columns:32},B:{size:'9x24',columns:42}},barcodes:{supported:true,symbologies:['upca','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['2']},pdf417:{supported:false}}},\n};\n\nexport default printerDefinitions;\n","import Dither from 'canvas-dither';\nimport Flatten from 'canvas-flatten';\nimport CodepageEncoder from '@point-of-sale/codepage-encoder';\nimport ImageData from '@canvas/image-data';\nimport resizeImageData from 'resize-image-data';\n\n/* Import local dependencies */\n\nimport LanguageEscPos from './languages/esc-pos.js';\nimport LanguageStarPrnt from './languages/star-prnt.js';\nimport LineComposer from './line-composer.js';\n\n/* Import generated data */\n\nimport codepageMappings from '../generated/mapping.js';\nimport printerDefinitions from '../generated/printers.js';\n\n\n/**\n * Create a byte stream based on commands for receipt printers\n */\nclass ReceiptPrinterEncoder {\n #options = {};\n #queue = [];\n\n #language;\n #composer;\n\n #printerCapabilities = {\n 'fonts': {\n 'A': {size: '12x24', columns: 42},\n 'B': {size: '9x24', columns: 56},\n },\n 'barcodes': {\n 'supported': true,\n 'symbologies': [\n 'upca', 'upce', 'ean13', 'ean8', 'code39', 'itf', 'codabar', 'code93',\n 'code128', 'gs1-databar-omni', 'gs1-databar-truncated',\n 'gs1-databar-limited', 'gs1-databar-expanded',\n ],\n },\n 'qrcode': {\n 'supported': true,\n 'models': ['1', '2'],\n },\n 'pdf417': {\n 'supported': true,\n },\n };\n\n #codepageMapping = {};\n #codepageCandidates = [];\n #codepage = 'cp437';\n\n #state = {\n 'codepage': 0,\n 'font': 'A',\n };\n\n\n /**\n * Create a new object\n *\n * @param {object} options Object containing configuration options\n */\n constructor(options) {\n options = options || {};\n\n const defaults = {\n columns: 42,\n language: 'esc-pos',\n imageMode: 'column',\n feedBeforeCut: 0,\n newline: '\\n\\r',\n codepageMapping: 'epson',\n codepageCandidates: null,\n errors: 'relaxed',\n };\n\n /* Determine default settings based on the printer language */\n\n if (typeof options.language === 'string') {\n defaults.columns = options.language === 'esc-pos' ? 42 : 48;\n defaults.codepageMapping = options.language === 'esc-pos' ? 'epson' : 'star';\n }\n\n /* Determine default settings based on the printer model */\n\n if (typeof options.printerModel === 'string') {\n if (typeof printerDefinitions[options.printerModel] === 'undefined') {\n throw new Error('Unknown printer model');\n }\n\n this.#printerCapabilities = printerDefinitions[options.printerModel].capabilities;\n\n /* Apply the printer definition to the defaults */\n\n defaults.columns = this.#printerCapabilities.fonts['A'].columns;\n defaults.language = this.#printerCapabilities.language;\n defaults.codepageMapping = this.#printerCapabilities.codepages;\n defaults.newline = this.#printerCapabilities?.newline || defaults.newline;\n defaults.feedBeforeCut = this.#printerCapabilities?.cutter?.feed || defaults.feedBeforeCut;\n defaults.imageMode = this.#printerCapabilities?.images?.mode || defaults.imageMode;\n }\n\n /* Merge options */\n\n if (options) {\n this.#options = Object.assign(defaults, {\n debug: false,\n embedded: false,\n createCanvas: null,\n }, options);\n }\n\n /* Backwards compatibility for the width option */\n\n if (this.#options.width) {\n this.#options.columns = this.#options.width;\n }\n\n /* Get the printer language */\n\n if (this.#options.language === 'esc-pos') {\n this.#language = new LanguageEscPos();\n } else if (this.#options.language === 'star-prnt' || this.#options.language === 'star-line') {\n this.#language = new LanguageStarPrnt();\n } else {\n throw new Error('The specified language is not supported');\n }\n\n /* Determine autoflush settings */\n /*\n\n StarPRNT printers are set up to have print start control set to page units.\n That means the printer will only print after it has received a cut or ff command.\n This is not ideal, so we set autoFlush to true by default, which will force\n the printer to print after each encode().\n\n One problem, we do not want to do this for embedded content. Only the top level\n encoder should flush the buffer.\n\n ESC/POS and Star Line Mode printers are set up to have print start control set to\n line units, which means the printer will print after each line feed command.\n We do not need to flush the buffer for these printers.\n\n */\n\n if (typeof this.#options.autoFlush === 'undefined') {\n this.#options.autoFlush = ! this.#options.embedded && this.#options.language == 'star-prnt';\n }\n\n /* Check column width */\n\n if (![32, 35, 42, 44, 48].includes(this.#options.columns) && !this.#options.embedded) {\n throw new Error('The width of the paper must me either 32, 35, 42, 44 or 48 columns');\n }\n\n /* Determine codepage mapping and candidates */\n\n if (typeof this.#options.codepageMapping === 'string') {\n if (typeof codepageMappings[this.#options.language][this.#options.codepageMapping] === 'undefined') {\n throw new Error('Unknown codepage mapping');\n }\n\n this.#codepageMapping = Object.fromEntries(codepageMappings[this.#options.language][this.#options.codepageMapping]\n .map((v, i) => [v, i])\n .filter((i) => i));\n } else {\n this.#codepageMapping = this.#options.codepageMapping;\n }\n\n if (this.#options.codepageCandidates) {\n this.#codepageCandidates = this.#options.codepageCandidates;\n } else {\n this.#codepageCandidates = Object.keys(this.#codepageMapping);\n }\n\n /* Create our line composer */\n\n this.#composer = new LineComposer({\n embedded: this.#options.embedded,\n columns: this.#options.columns,\n align: 'left',\n size: 1,\n\n callback: (value) => this.#queue.push(value),\n });\n\n this.#reset();\n }\n\n /**\n * Reset the state of the object\n */\n #reset() {\n this.#queue = [];\n this.#codepage = this.#options.language == 'esc-pos' ? 'cp437' : 'star/standard';\n this.#state.codepage = -1;\n this.#state.font = 'A';\n }\n\n /**\n * Initialize the printer\n *\n * @return {object} Return the object, for easy chaining commands\n *\n */\n initialize() {\n if (this.#options.embedded) {\n throw new Error('Initialize is not supported in table cells or boxes');\n }\n\n this.#composer.add(\n this.#language.initialize(),\n );\n\n return this;\n }\n\n /**\n * Change the code page\n *\n * @param {string} codepage The codepage that we set the printer to\n * @return {object} Return the object, for easy chaining commands\n *\n */\n codepage(codepage) {\n if (codepage === 'auto') {\n this.#codepage = codepage;\n return this;\n }\n\n if (!CodepageEncoder.supports(codepage)) {\n throw new Error('Unknown codepage');\n }\n\n if (typeof this.#codepageMapping[codepage] !== 'undefined') {\n this.#codepage = codepage;\n } else {\n throw new Error('Codepage not supported by printer');\n }\n\n return this;\n }\n\n /**\n * Print text\n *\n * @param {string} value Text that needs to be printed\n * @return {object} Return the object, for easy chaining commands\n *\n */\n text(value) {\n this.#composer.text(value, this.#codepage);\n\n return this;\n }\n\n /**\n * Print a newline\n *\n * @param {string} value The number of newlines that need to be printed, defaults to 1\n * @return {object} Return the object, for easy chaining commands\n *\n */\n newline(value) {\n value = parseInt(value, 10) || 1;\n\n for (let i = 0; i < value; i++) {\n this.#composer.flush({forceNewline: true});\n }\n\n return this;\n }\n\n /**\n * Print text, followed by a newline\n *\n * @param {string} value Text that needs to be printed\n * @return {object} Return the object, for easy chaining commands\n *\n */\n line(value) {\n this.text(value);\n this.newline();\n\n return this;\n }\n\n /**\n * Underline text\n *\n * @param {boolean|number} value true to turn on underline, false to turn off, or 2 for double underline\n * @return {object} Return the object, for easy chaining commands\n *\n */\n underline(value) {\n if (typeof value === 'undefined') {\n this.#composer.style.underline = ! this.#composer.style.underline;\n } else {\n this.#composer.style.underline = value;\n }\n\n return this;\n }\n\n /**\n * Italic text\n *\n * @param {boolean} value true to turn on italic, false to turn off\n * @return {object} Return the object, for easy chaining commands\n *\n */\n italic(value) {\n if (typeof value === 'undefined') {\n this.#composer.style.italic = ! this.#composer.style.italic;\n } else {\n this.#composer.style.italic = value;\n }\n\n return this;\n }\n\n /**\n * Bold text\n *\n * @param {boolean} value true to turn on bold, false to turn off\n * @return {object} Return the object, for easy chaining commands\n *\n */\n bold(value) {\n if (typeof value === 'undefined') {\n this.#composer.style.bold = ! this.#composer.style.bold;\n } else {\n this.#composer.style.bold = value;\n }\n\n return this;\n }\n\n /**\n * Invert text\n *\n * @param {boolean} value true to turn on white text on black, false to turn off\n * @return {object} Return the object, for easy chaining commands\n *\n */\n invert(value) {\n if (typeof value === 'undefined') {\n this.#composer.style.invert = ! this.#composer.style.invert;\n } else {\n this.#composer.style.invert = value;\n }\n\n return this;\n }\n\n /**\n * Change width of text\n *\n * @param {number} width The width of the text, 1 - 8\n * @return {object} Return the object, for easy chaining commands\n *\n */\n width(width) {\n if (typeof width === 'undefined') {\n width = 1;\n }\n\n if (typeof width !== 'number') {\n throw new Error('Width must be a number');\n }\n\n if (width < 1 || width > 8) {\n throw new Error('Width must be between 1 and 8');\n }\n\n this.#composer.style.width = width;\n\n return this;\n }\n\n /**\n * Change height of text\n *\n * @param {number} height The height of the text, 1 - 8\n * @return {object} Return the object, for easy chaining commands\n *\n */\n height(height) {\n if (typeof height === 'undefined') {\n height = 1;\n }\n\n if (typeof height !== 'number') {\n throw new Error('Height must be a number');\n }\n\n if (height < 1 || height > 8) {\n throw new Error('Height must be between 1 and 8');\n }\n\n this.#composer.style.height = height;\n\n return this;\n }\n\n /**\n * Change text size\n *\n * @param {Number|string} width The width of the text, 1 - 8\n * @param {Number} height The height of the text, 1 - 8\n * @return {object} Return the object, for easy chaining commands\n *\n */\n size(width, height) {\n /* Backwards compatiblity for changing the font */\n if (typeof width === 'string') {\n return this.font(width === 'small' ? 'B' : 'A');\n }\n\n if (typeof height === 'undefined') {\n height = width;\n }\n\n this.width(width);\n this.height(height);\n\n return this;\n }\n\n /**\n * Choose different font\n *\n * @param {string} value 'A', 'B' or others\n * @return {object} Return the object, for easy chaining commands\n *\n */\n font(value) {\n if (this.#options.embedded) {\n throw new Error('Changing fonts is not supported in table cells or boxes');\n }\n\n if (this.#composer.cursor > 0) {\n throw new Error('Changing fonts is not supported in the middle of a line');\n }\n\n /* If size is specified, find the matching font */\n\n const matches = value.match(/^[0-9]+x[0-9]+$/);\n if (matches) {\n value = Object.entries(this.#printerCapabilities.fonts).find((i) => i[1].size == matches[0])[0];\n }\n\n /* Make sure the font name is uppercase */\n\n value = value.toUpperCase();\n\n /* Check if the font is supported */\n\n if (typeof this.#printerCapabilities.fonts[value] === 'undefined') {\n return this.#error('This font is not supported by this printer', 'relaxed');\n }\n\n /* Change the font */\n\n this.#composer.add(\n this.#language.font(value),\n );\n\n this.#state.font = value;\n\n /* Change the width of the composer */\n\n if (value === 'A') {\n this.#composer.columns = this.#options.columns;\n } else {\n this.#composer.columns =\n (this.#options.columns / this.#printerCapabilities.fonts['A'].columns) *\n this.#printerCapabilities.fonts[value].columns;\n }\n\n return this;\n }\n\n /**\n * Change text alignment\n *\n * @param {string} value left, center or right\n * @return {object} Return the object, for easy chaining commands\n *\n */\n align(value) {\n const alignments = ['left', 'center', 'right'];\n\n if (!alignments.includes(value)) {\n throw new Error('Unknown alignment');\n }\n\n this.#composer.align = value;\n\n return this;\n }\n\n /**\n * Insert a table\n *\n * @param {array} columns The column definitions\n * @param {array} data Array containing rows. Each row is an array containing cells.\n * Each cell can be a string value, or a callback function.\n * The first parameter of the callback is the encoder object on\n * which the function can call its methods.\n * @return {object} Return the object, for easy chaining commands\n *\n */\n table(columns, data) {\n this.#composer.flush();\n\n /* Process all lines */\n\n for (let r = 0; r < data.length; r++) {\n const lines = [];\n let maxLines = 0;\n\n /* Render all columns */\n\n for (let c = 0; c < columns.length; c++) {\n const columnEncoder = new ReceiptPrinterEncoder(Object.assign({}, this.#options, {\n width: columns[c].width,\n embedded: true,\n }));\n\n columnEncoder.codepage(this.#codepage);\n columnEncoder.align(columns[c].align);\n\n if (typeof data[r][c] === 'string') {\n columnEncoder.text(data[r][c]);\n }\n\n if (typeof data[r][c] === 'function') {\n data[r][c](columnEncoder);\n }\n\n const cell = columnEncoder.commands();\n\n /* Determine the height in lines of the row */\n\n maxLines = Math.max(maxLines, cell.length);\n\n lines[c] = cell;\n }\n\n /* Pad the cells in this line to the same height */\n\n for (let c = 0; c < columns.length; c++) {\n if (lines[c].length >= maxLines) {\n continue;\n }\n\n for (let p = lines[c].length; p < maxLines; p++) {\n let verticalAlign = 'top';\n if (typeof columns[c].verticalAlign !== 'undefined') {\n verticalAlign = columns[c].verticalAlign;\n }\n\n const line = {commands: [{type: 'space', size: columns[c].width}], height: 1};\n\n if (verticalAlign == 'bottom') {\n lines[c].unshift(line);\n } else {\n lines[c].push(line);\n }\n }\n }\n\n /* Add the lines to the composer */\n\n for (let l = 0; l < maxLines; l++) {\n for (let c = 0; c < columns.length; c++) {\n if (typeof columns[c].marginLeft !== 'undefined') {\n this.#composer.space(columns[c].marginLeft);\n }\n\n this.#composer.add(lines[c][l].commands, columns[c].width);\n\n if (typeof columns[c].marginRight !== 'undefined') {\n this.#composer.space(columns[c].marginRight);\n }\n }\n\n this.#composer.flush();\n }\n }\n\n return this;\n }\n\n /**\n * Insert a horizontal rule\n *\n * @param {object} options And object with the following properties:\n * - style: The style of the line, either single or double\n * - width: The width of the line, by default the width of the paper\n * @return {object} Return the object, for easy chaining commands\n *\n */\n rule(options) {\n options = Object.assign({\n style: 'single',\n width: this.#options.columns || 10,\n }, options || {});\n\n this.#composer.flush();\n\n this.#composer.text((options.style === 'double' ? '═' : '─').repeat(options.width), 'cp437');\n this.#composer.flush({forceNewline: true});\n\n return this;\n }\n\n /**\n * Insert a box\n *\n * @param {object} options And object with the following properties:\n * - style: The style of the border, either single or double\n * - width: The width of the box, by default the width of the paper\n * - marginLeft: Space between the left border and the left edge\n * - marginRight: Space between the right border and the right edge\n * - paddingLeft: Space between the contents and the left border of the box\n * - paddingRight: Space between the contents and the right border of the box\n * @param {string|function} contents A string value, or a callback function.\n * The first parameter of the callback is the encoder object on\n * which the function can call its methods.\n * @return {object} Return the object, for easy chaining commands\n *\n */\n box(options, contents) {\n options = Object.assign({\n style: 'single',\n width: this.#options.columns,\n marginLeft: 0,\n marginRight: 0,\n paddingLeft: 0,\n paddingRight: 0,\n }, options || {});\n\n if (options.width + options.marginLeft + options.marginRight > this.#options.columns) {\n throw new Error('Box is too wide');\n }\n\n let elements;\n\n if (options.style == 'single') {\n elements = ['┌', '┐', '└', '┘', '─', '│'];\n } else if (options.style == 'double') {\n elements = ['╔', '╗', '╚', '╝', '═', '║'];\n }\n\n /* Render the contents of the box */\n\n const columnEncoder = new ReceiptPrinterEncoder(Object.assign({}, this.#options, {\n width: options.width - (options.style == 'none' ? 0 : 2) - options.paddingLeft - options.paddingRight,\n embedded: true,\n }));\n\n columnEncoder.codepage(this.#codepage);\n columnEncoder.align(options.align);\n\n if (typeof contents === 'function') {\n contents(columnEncoder);\n }\n\n if (typeof contents === 'string') {\n columnEncoder.text(contents);\n }\n\n const lines = columnEncoder.commands();\n\n /* Header */\n\n this.#composer.flush();\n\n if (options.style != 'none') {\n this.#composer.space(options.marginLeft);\n this.#composer.text(elements[0], 'cp437');\n this.#composer.text(elements[4].repeat(options.width - 2), 'cp437');\n this.#composer.text(elements[1], 'cp437');\n this.#composer.space(options.marginRight);\n this.#composer.flush();\n }\n\n /* Content */\n\n for (let i = 0; i < lines.length; i++) {\n this.#composer.space(options.marginLeft);\n\n if (options.style != 'none') {\n this.#composer.style.height = lines[i].height;\n this.#composer.text(elements[5], 'cp437');\n this.#composer.style.height = 1;\n }\n\n this.#composer.space(options.paddingLeft);\n this.#composer.add(lines[i].commands,\n options.width - (options.style == 'none' ? 0 : 2) - options.paddingLeft - options.paddingRight);\n this.#composer.space(options.paddingRight);\n\n if (options.style != 'none') {\n this.#composer.style.height = lines[i].height;\n this.#composer.text(elements[5], 'cp437');\n this.#composer.style.height = 1;\n }\n\n this.#composer.space(options.marginRight);\n this.#composer.flush();\n }\n\n /* Footer */\n\n if (options.style != 'none') {\n this.#composer.space(options.marginLeft);\n this.#composer.text(elements[2], 'cp437');\n this.#composer.text(elements[4].repeat(options.width - 2), 'cp437');\n this.#composer.text(elements[3], 'cp437');\n this.#composer.space(options.marginRight);\n this.#composer.flush();\n }\n\n return this;\n }\n\n /**\n * Barcode\n *\n * @param {string} value the value of the barcode\n * @param {string|number} symbology the type of the barcode\n * @param {number|object} height Either the configuration object, or backwards compatible height of the barcode\n * @return {object} Return the object, for easy chaining commands\n *\n */\n barcode(value, symbology, height) {\n let options = {\n height: 60,\n width: 2,\n text: false,\n };\n\n if (typeof height === 'object') {\n options = Object.assign(options, height);\n }\n\n if (typeof height === 'number') {\n options.height = height;\n }\n\n if (this.#options.embedded) {\n throw new Error('Barcodes are not supported in table cells or boxes');\n }\n\n if (this.#printerCapabilities.barcodes.supported === false) {\n return this.#error('Barcodes are not supported by this printer', 'relaxed');\n }\n\n if (typeof symbology === 'string' && !this.#printerCapabilities.barcodes.symbologies.includes(symbology)) {\n return this.#error(`Symbology '${symbology}' not supported by this printer`, 'relaxed');\n }\n\n /* Force printing the print buffer and moving to a new line */\n\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\n\n /* Set alignment */\n\n if (this.#composer.align !== 'left') {\n this.#composer.add(this.#language.align(this.#composer.align));\n }\n\n /* Barcode */\n\n this.#composer.add(\n this.#language.barcode(value, symbology, options),\n );\n\n /* Reset alignment */\n\n if (this.#composer.align !== 'left') {\n this.#composer.add(this.#language.align('left'));\n }\n\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\n\n return this;\n }\n\n /**\n * QR code\n *\n * @param {string} value The value of the qr code\n * @param {number|object} model Either the configuration object, or\n * backwards compatible model of the qrcode, either 1 or 2\n * @param {number} size Backwards compatible size of the qrcode, a value between 1 and 8\n * @param {string} errorlevel Backwards compatible the amount of error correction used,\n * either 'l', 'm', 'q', 'h'\n * @return {object} Return the object, for easy chaining commands\n */\n qrcode(value, model, size, errorlevel) {\n let options = {\n model: 2,\n size: 6,\n errorlevel: 'm',\n };\n\n if (typeof model === 'object') {\n options = Object.assign(options, model);\n }\n\n if (typeof model === 'number') {\n options.model = model;\n }\n\n if (typeof size === 'number') {\n options.size = size;\n }\n\n if (typeof errorlevel === 'string') {\n options.errorlevel = errorlevel;\n }\n\n if (this.#options.embedded) {\n throw new Error('QR codes are not supported in table cells or boxes');\n }\n\n if (this.#printerCapabilities.qrcode.supported === false) {\n return this.#error('QR codes are not supported by this printer', 'relaxed');\n }\n\n if (options.model && !this.#printerCapabilities.qrcode.models.includes(String(options.model))) {\n return this.#error('QR code model is not supported by this printer', 'relaxed');\n }\n\n /* Force printing the print buffer and moving to a new line */\n\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\n\n /* Set alignment */\n\n if (this.#composer.align !== 'left') {\n this.#composer.add(this.#language.align(this.#composer.align));\n }\n\n /* QR code */\n\n this.#composer.add(\n this.#language.qrcode(value, options),\n );\n\n /* Reset alignment */\n\n if (this.#composer.align !== 'left') {\n this.#composer.add(this.#language.align('left'));\n }\n\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\n\n return this;\n }\n\n\n /**\n * PDF417 code\n *\n * @param {string} value The value of the qr code\n * @param {object} options Configuration object\n * @return {object} Return the object, for easy chaining commands\n *\n */\n pdf417(value, options) {\n options = Object.assign({\n width: 3,\n height: 3,\n columns: 0,\n rows: 0,\n errorlevel: 1,\n truncated: false,\n }, options || {});\n\n if (this.#options.embedded) {\n throw new Error('PDF417 codes are not supported in table cells or boxes');\n }\n\n if (this.#printerCapabilities.pdf417.supported === false) {\n /* If possible, fallback to a barcode with symbology */\n\n if (typeof this.#printerCapabilities.pdf417.fallback === 'object') {\n return this.barcode(value, this.#printerCapabilities.pdf417.fallback.symbology);\n }\n\n return this.#error('PDF417 codes are not supported by this printer', 'relaxed');\n }\n\n /* Force printing the print buffer and moving to a new line */\n\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\n\n /* Set alignment */\n\n if (this.#composer.align !== 'left') {\n this.#composer.add(this.#language.align(this.#composer.align));\n }\n\n /* PDF417 code */\n\n this.#composer.add(\n this.#language.pdf417(value, options),\n );\n\n /* Reset alignment */\n\n if (this.#composer.align !== 'left') {\n this.#composer.add(this.#language.align('left'));\n }\n\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\n\n return this;\n }\n\n\n /**\n * Image\n *\n * @param {object} input an element, like a canvas or image that needs to be printed\n * @param {number} width width of the image on the printer\n * @param {number} height height of the image on the printer\n * @param {string} algorithm the dithering algorithm for making the image black and white\n * @param {number} threshold threshold for the dithering algorithm\n * @return {object} Return the object, for easy chaining commands\n *\n */\n image(input, width, height, algorithm, threshold) {\n if (this.#options.embedded) {\n throw new Error('Images are not supported in table cells or boxes');\n }\n\n if (width % 8 !== 0) {\n throw new Error('Width must be a multiple of 8');\n }\n\n if (height % 8 !== 0) {\n throw new Error('Height must be a multiple of 8');\n }\n\n if (typeof algorithm === 'undefined') {\n algorithm = 'threshold';\n }\n\n if (typeof threshold === 'undefined') {\n threshold = 128;\n }\n\n /* Determine the type of the input */\n\n const name = input.constructor.name;\n let type;\n\n name.endsWith('Element') ? type = 'element' : null;\n name == 'ImageData' ? type = 'imagedata' : null;\n name == 'Canvas' && typeof input.getContext !== 'undefined' ? type = 'node-canvas' : null;\n name == 'Image' ? type = 'node-canvas-image' : null;\n name == 'Image' && typeof input.frames !== 'undefined' ? type = 'node-read-image' : null;\n name == 'Object' && input.data && input.info ? type = 'node-sharp' : null;\n name == 'View3duint8' && input.data && input.shape ? type = 'ndarray' : null;\n name == 'Object' && input.data && input.width && input.height ? type = 'object' : null;\n\n if (!type) {\n throw new Error('Could not determine the type of image input');\n }\n\n /* Turn provided data into an ImageData object */\n\n let image;\n\n if (type == 'element') {\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const context = canvas.getContext('2d');\n context.drawImage(input, 0, 0, width, height);\n image = context.getImageData(0, 0, width, height);\n }\n\n if (type == 'node-canvas') {\n const context = input.getContext('2d');\n image = context.getImageData(0, 0, input.width, input.height);\n }\n\n if (type == 'node-canvas-image') {\n if (typeof this.#options.createCanvas !== 'function') {\n throw new Error('Canvas is not supported in this environment, specify a createCanvas function in the options');\n }\n\n const canvas = this.#options.createCanvas(width, height);\n const context = canvas.getContext('2d');\n context.drawImage(input, 0, 0, width, height);\n image = context.getImageData(0, 0, width, height);\n }\n\n if (type == 'node-read-image') {\n image = new ImageData(input.width, input.height);\n image.data.set(input.frames[0].data);\n }\n\n if (type == 'node-sharp') {\n image = new ImageData(input.info.width, input.info.height);\n image.data.set(input.data);\n }\n\n if (type == 'ndarray') {\n image = new ImageData(input.shape[0], input.shape[1]);\n image.data.set(input.data);\n }\n\n if (type == 'object') {\n image = new ImageData(input.width, input.height);\n image.data.set(input.data);\n }\n\n if (type == 'imagedata') {\n image = input;\n }\n\n if (!image) {\n throw new Error('Image could not be loaded');\n }\n\n /* Resize image */\n\n if (width !== image.width || height !== image.height) {\n image = resizeImageData(image, width, height, 'bilinear-interpolation');\n }\n\n /* Check if the image has the correct dimensions */\n\n if (width !== image.width || height !== image.height) {\n throw new Error('Image could not be resized');\n }\n\n /* Flatten the image and dither it */\n\n image = Flatten.flatten(image, [0xff, 0xff, 0xff]);\n\n switch (algorithm) {\n case 'threshold': image = Dither.threshold(image, threshold); break;\n case 'bayer': image = Dither.bayer(image, threshold); break;\n case 'floydsteinberg': image = Dither.floydsteinberg(image); break;\n case 'atkinson': image = Dither.atkinson(image); break;\n }\n\n\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\n\n /* Set alignment */\n\n if (this.#composer.align !== 'left') {\n this.#composer.add(this.#language.align(this.#composer.align));\n }\n\n /* Encode the image data */\n\n this.#composer.add(\n this.#language.image(image, width, height, this.#options.imageMode),\n );\n\n /* Reset alignment */\n\n if (this.#composer.align !== 'left') {\n this.#composer.add(this.#language.align('left'));\n }\n\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\n\n return this;\n }\n\n /**\n * Cut paper\n *\n * @param {string} value full or partial. When not specified a full cut will be assumed\n * @return {object} Return the object, for easy chaining commands\n *\n */\n cut(value) {\n if (this.#options.embedded) {\n throw new Error('Cut is not supported in table cells or boxes');\n }\n\n for (let i = 0; i < this.#options.feedBeforeCut; i++) {\n this.#composer.flush({forceNewline: true});\n }\n\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\n\n this.#composer.add(\n this.#language.cut(value),\n );\n\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\n\n return this;\n }\n\n /**\n * Pulse\n *\n * @param {number} device 0 or 1 for on which pin the device is connected, default of 0\n * @param {number} on Time the pulse is on in milliseconds, default of 100\n * @param {number} off Time the pulse is off in milliseconds, default of 500\n * @return {object} Return the object, for easy chaining commands\n *\n */\n pulse(device, on, off) {\n if (this.#options.embedded) {\n throw new Error('Pulse is not supported in table cells or boxes');\n }\n\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\n\n this.#composer.add(\n this.#language.pulse(device, on, off),\n );\n\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\n\n return this;\n }\n\n /**\n * Add raw printer commands\n *\n * @param {array} data raw bytes to be included\n * @return {object} Return the object, for easy chaining commands\n *\n */\n raw(data) {\n this.#composer.raw(data);\n\n return this;\n }\n\n /**\n * Internal function for encoding style changes\n * @param {string} property The property that needs to be changed\n * @param {boolean} value Is the property enabled or disabled\n * @return {array} Return the encoded bytes\n */\n #encodeStyle(property, value) {\n if (property === 'bold') {\n return this.#language.bold(value);\n }\n\n if (property === 'underline') {\n return this.#language.underline(value);\n }\n\n if (property === 'italic') {\n return this.#language.italic(value);\n }\n\n if (property === 'invert') {\n return this.#language.invert(value);\n }\n\n if (property === 'size') {\n return this.#language.size(value.width, value.height);\n }\n }\n\n /**\n * Internal function for encoding text in the correct codepage\n * @param {string} value The text that needs to be encoded\n * @param {string} codepage The codepage that needs to be used\n * @return {array} Return the encoded bytes\n */\n #encodeText(value, codepage) {\n if (codepage === null) {\n const fragment = CodepageEncoder.encode(value, 'ascii');\n\n return [\n {type: 'text', payload: [...fragment]},\n ];\n }\n\n if (codepage !== 'auto') {\n const fragment = CodepageEncoder.encode(value, codepage);\n\n if (this.#state.codepage != this.#codepageMapping[codepage]) {\n this.#state.codepage = this.#codepageMapping[codepage];\n\n return [\n {type: 'codepage', payload: this.#language.codepage(this.#codepageMapping[codepage])},\n {type: 'text', payload: [...fragment]},\n ];\n }\n\n return [\n {type: 'text', payload: [...fragment]},\n ];\n }\n\n const fragments = CodepageEncoder.autoEncode(value, this.#codepageCandidates);\n const buffer = [];\n\n for (const fragment of fragments) {\n this.#state.codepage = this.#codepageMapping[fragment.codepage];\n buffer.push(\n {type: 'codepage', payload: this.#language.codepage(this.#codepageMapping[fragment.codepage])},\n {type: 'text', payload: [...fragment.bytes]},\n );\n }\n\n return buffer;\n }\n\n /**\n * Get all the commands\n *\n * @return {array} All the commands currently in the queue\n */\n commands() {\n let requiresFlush = true;\n\n /* Determine if the last command is a pulse or cut, the we do not need a flush */\n\n let lastLine = this.#queue[this.#queue.length - 1];\n \n if (lastLine) {\n let lastCommand = lastLine[lastLine.length - 1];\n\n if (lastCommand && [ 'pulse', 'cut' ].includes(lastCommand.type)) {\n requiresFlush = false;\n }\n }\n\n /* Flush the printer line buffer if needed */\n\n if (requiresFlush && this.#options.autoFlush && !this.#options.embedded) {\n this.#composer.add(\n this.#language.flush(),\n );\n }\n\n /* Get the remaining from the composer */\n\n const result = [];\n\n const remaining = this.#composer.fetch({forceFlush: true, ignoreAlignment: true});\n\n if (remaining.length) {\n this.#queue.push(remaining);\n }\n\n /* Process all lines in the queue */\n\n while (this.#queue.length) {\n const line = this.#queue.shift();\n const height = line\n .filter((i) => i.type === 'style' && i.property === 'size')\n .map((i) => i.value.height)\n .reduce((a, b) => Math.max(a, b), 1);\n\n if (this.#options.debug) {\n console.log('|' + line.filter((i) => i.type === 'text').map((i) => i.value).join('') + '|', height);\n }\n\n result.push({\n commands: line,\n height: height,\n });\n }\n\n if (this.#options.debug) {\n console.log('commands', result);\n }\n\n this.#reset();\n\n return result;\n }\n\n /**\n * Encode all previous commands\n *\n * @param {string} format The format of the output, either 'commands',\n * 'lines' or 'array', defaults to 'array'\n * @return {Uint8Array} Return the encoded bytes in the format specified\n */\n encode(format) {\n /* Get the commands */\n\n const commands = this.commands();\n\n if (format === 'commands') {\n return commands;\n }\n\n /* Build the lines */\n\n const lines = [];\n\n for (const line of commands) {\n const buffer = [];\n\n for (const item of line.commands) {\n if (item.type === 'text') {\n buffer.push(...this.#encodeText(item.value, item.codepage));\n } else if (item.type === 'style') {\n buffer.push(Object.assign(item, {payload: this.#encodeStyle(item.property, item.value)}));\n } else if (item.value || item.payload) {\n buffer.push(item);\n }\n }\n\n lines.push(buffer);\n }\n\n if (format === 'lines') {\n return lines;\n }\n\n /* Build the array */\n\n let result = [];\n let last = null;\n\n for (const line of lines) {\n for (const item of line) {\n result.push(...item.payload);\n last = item;\n }\n\n if (this.#options.newline === '\\n\\r') {\n result.push(0x0a, 0x0d);\n }\n\n if (this.#options.newline === '\\n') {\n result.push(0x0a);\n }\n }\n\n /* If the last command is a pulse, do not feed */\n\n if (last && last.type === 'pulse') {\n result = result.slice(0, 0 - this.#options.newline.length);\n }\n\n return Uint8Array.from(result);\n }\n\n /**\n * Throw an error\n *\n * @param {string} message The error message\n * @param {string} level The error level, if level is strict,\n * an error will be thrown, if level is relaxed,\n * a warning will be logged\n * @return {object} Return the object, for easy chaining commands\n */\n #error(message, level) {\n if (level === 'strict' || this.#options.errors === 'strict') {\n throw new Error(message);\n }\n\n console.warn(message);\n\n return this;\n }\n\n /**\n * Get all supported printer models\n *\n * @return {object} An object with all supported printer models\n */\n static get printerModels() {\n return Object.entries(printerDefinitions).map((i) => ({id: i[0], name: i[1].vendor + ' ' + i[1].model}));\n }\n\n /**\n * Get the current column width\n *\n * @return {number} The column width in characters\n */\n get columns() {\n return this.#composer.columns;\n }\n\n /**\n * Get the current language\n * @return {string} The language that is currently used\n */\n get language() {\n return this.#options.language;\n }\n\n /**\n * Get the capabilities of the printer\n * @return {object} The capabilities of the printer\n */\n get printerCapabilities() {\n return this.#printerCapabilities;\n }\n}\n\nexport default ReceiptPrinterEncoder;\n"],"names":["grayscale","image","i","data","length","luminance","fill","threshold","value","bayer","thresholdMap","x","width","y","Math","floor","floydsteinberg","Uint8ClampedArray","height","l","error","atkinson","flatten","background","alpha","invAlpha","definitions","ascii","name","languages","Array","map","v","cp437","extends","cp720","cp737","cp771","cp772","cp774","cp775","cp850","cp851","cp852","cp853","cp855","cp857","cp858","cp860","cp861","cp862","cp863","cp864","offset","cp865","cp866","cp869","cp874","cp1001","cp1098","cp1125","cp3001","cp3002","cp3011","cp3012","cp3021","cp3041","cp3840","cp3841","cp3843","cp3844","cp3845","cp3846","cp3847","cp3848","windows1250","windows1251","windows1252","windows1253","windows1254","windows1255","windows1256","windows1257","windows1258","rk1048","thai11","thai13","thai14","thai16","thai18","thai42","tcvn3","tcvn3capitals","viscii","khmer","latvian","aliases","cp2001","cp1119","cp1118","cp1162","iso88591","iso88592","iso88597","iso885915","shiftjis","katakana","cp928","strings","en","jp","pt","fr","sv","dk","el","tr","ru","hu","pl","cz","ar","et","lt","bg","is","he","fa","uk","vi","kk","lv","mt","th","CodepageEncoder","static","Object","keys","codepage","codepoints","this","getCodepoints","structuredClone","language","string","input","output","Uint8Array","definition","getEncoding","c","codepoint","codePointAt","position","findIndex","candidates","fragments","current","fragment","available","char","bytes","push","evaluateExtends","j","browser","ImageData","require$$0","nearestNeighbor","src","dst","pos","srcX","srcPos","bilinearInterpolation","interpolate","k","kMin","kMax","vMin","vMax","round","interpolateHorizontal","xMin","xMax","interpolateVertical","yMin","yMax","srcY","min","ceil","algorithm","resize","Error","result","LanguageEscPos","initialize","type","payload","font","charCodeAt","align","barcode","symbology","options","symbologies","upca","upce","ean13","ean8","code39","coda39","itf","codabar","code93","code128","property","text","startsWith","replace","encode","identifier","qrcode","model","models","size","errorlevels","m","q","h","errorlevel","command","pdf417","columns","rows","truncated","mode","getPixel","getRowData","b","s","getColumnData","forEach","cut","pulse","device","on","off","bold","underline","italic","invert","flush","LanguageStarPrnt","slice","TextStyle","default","callback","constructor","store","properties","Map","set","restore","TextWrap","line","indent","lines","String","split","chunks","match","chunk","remaining","letters","piece","pieces","splice","join","trimEnd","LineComposer","embedded","cursor","stored","buffer","style","add","wrap","forceNewline","space","raw","item","concat","end","fetch","forceFlush","next","last","filter","ignoreAlignment","endsWith","merge","left","assign","items","repeat","codepageMappings","bixolon","citizen","epson","fujitsu","hp","metapace","mpt","star","xprinter","youku","printerDefinitions","vendor","media","dpi","capabilities","codepages","fonts","A","B","barcodes","supported","cutter","feed","C","interfaces","usb","productName","D","E","images","interface","newline","fallback","ReceiptPrinterEncoder","queue","composer","printerCapabilities","codepageMapping","codepageCandidates","state","defaults","imageMode","feedBeforeCut","errors","printerModel","debug","createCanvas","autoFlush","includes","fromEntries","reset","supports","parseInt","matches","entries","find","toUpperCase","table","r","maxLines","columnEncoder","cell","commands","max","p","verticalAlign","unshift","marginLeft","marginRight","rule","box","contents","paddingLeft","paddingRight","elements","getContext","frames","info","shape","canvas","document","createElement","context","drawImage","getImageData","resizeImageData","Flatten","Dither","encodeStyle","encodeText","autoEncode","requiresFlush","lastLine","lastCommand","shift","reduce","a","console","log","format","from","message","level","warn","printerModels","id"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]} \ No newline at end of file +{"version":3,"file":"receipt-printer-encoder.umd.js","sources":["../node_modules/canvas-dither/src/canvas-dither.js","../node_modules/canvas-flatten/src/canvas-flatten.js","../node_modules/@point-of-sale/codepage-encoder/dist/codepage-encoder.mjs","../node_modules/@canvas/image-data/browser.js","../node_modules/resize-image-data/index.js","../src/languages/esc-pos.js","../src/languages/star-prnt.js","../src/text-style.js","../src/text-wrap.js","../src/line-composer.js","../generated/mapping.js","../generated/printers.js","../src/receipt-printer-encoder.js"],"sourcesContent":["/**\n * Use the ImageData from a Canvas and turn the image in a 1-bit black and white image using dithering\n */\nclass CanvasDither {\n /**\n * Change the image to grayscale\n *\n * @param {object} image The imageData of a Canvas 2d context\n * @return {object} The resulting imageData\n *\n */\n grayscale(image) {\n for (let i = 0; i < image.data.length; i += 4) {\n const luminance = (image.data[i] * 0.299) + (image.data[i + 1] * 0.587) + (image.data[i + 2] * 0.114);\n image.data.fill(luminance, i, i + 3);\n }\n\n return image;\n }\n\n /**\n * Change the image to blank and white using a simple threshold\n *\n * @param {object} image The imageData of a Canvas 2d context\n * @param {number} threshold Threshold value (0-255)\n * @return {object} The resulting imageData\n *\n */\n threshold(image, threshold) {\n for (let i = 0; i < image.data.length; i += 4) {\n const luminance = (image.data[i] * 0.299) + (image.data[i + 1] * 0.587) + (image.data[i + 2] * 0.114);\n\n const value = luminance < threshold ? 0 : 255;\n image.data.fill(value, i, i + 3);\n }\n\n return image;\n }\n\n /**\n * Change the image to blank and white using the Bayer algorithm\n *\n * @param {object} image The imageData of a Canvas 2d context\n * @param {number} threshold Threshold value (0-255)\n * @return {object} The resulting imageData\n *\n */\n bayer(image, threshold) {\n const thresholdMap = [\n [15, 135, 45, 165],\n [195, 75, 225, 105],\n [60, 180, 30, 150],\n [240, 120, 210, 90],\n ];\n\n for (let i = 0; i < image.data.length; i += 4) {\n const luminance = (image.data[i] * 0.299) + (image.data[i + 1] * 0.587) + (image.data[i + 2] * 0.114);\n\n const x = i / 4 % image.width;\n const y = Math.floor(i / 4 / image.width);\n const map = Math.floor((luminance + thresholdMap[x % 4][y % 4]) / 2);\n const value = map < threshold ? 0 : 255;\n image.data.fill(value, i, i + 3);\n }\n\n return image;\n }\n\n /**\n * Change the image to blank and white using the Floyd-Steinberg algorithm\n *\n * @param {object} image The imageData of a Canvas 2d context\n * @return {object} The resulting imageData\n *\n */\n floydsteinberg(image) {\n const width = image.width;\n const luminance = new Uint8ClampedArray(image.width * image.height);\n\n for (let l = 0, i = 0; i < image.data.length; l++, i += 4) {\n luminance[l] = (image.data[i] * 0.299) + (image.data[i + 1] * 0.587) + (image.data[i + 2] * 0.114);\n }\n\n for (let l = 0, i = 0; i < image.data.length; l++, i += 4) {\n const value = luminance[l] < 129 ? 0 : 255;\n const error = Math.floor((luminance[l] - value) / 16);\n image.data.fill(value, i, i + 3);\n\n luminance[l + 1] += error * 7;\n luminance[l + width - 1] += error * 3;\n luminance[l + width] += error * 5;\n luminance[l + width + 1] += error * 1;\n }\n\n return image;\n }\n\n /**\n * Change the image to blank and white using the Atkinson algorithm\n *\n * @param {object} image The imageData of a Canvas 2d context\n * @return {object} The resulting imageData\n *\n */\n atkinson(image) {\n const width = image.width;\n const luminance = new Uint8ClampedArray(image.width * image.height);\n\n for (let l = 0, i = 0; i < image.data.length; l++, i += 4) {\n luminance[l] = (image.data[i] * 0.299) + (image.data[i + 1] * 0.587) + (image.data[i + 2] * 0.114);\n }\n\n for (let l = 0, i = 0; i < image.data.length; l++, i += 4) {\n const value = luminance[l] < 129 ? 0 : 255;\n const error = Math.floor((luminance[l] - value) / 8);\n image.data.fill(value, i, i + 3);\n\n luminance[l + 1] += error;\n luminance[l + 2] += error;\n luminance[l + width - 1] += error;\n luminance[l + width] += error;\n luminance[l + width + 1] += error;\n luminance[l + 2 * width] += error;\n }\n\n return image;\n }\n}\n\nmodule.exports = new CanvasDither();\n","/**\n * Use the ImageData from a Canvas and flatten the image on a solid background\n */\nclass CanvasFlatten {\n /**\n * Change the image to grayscale\n *\n * @param {object} image The imageData of a Canvas 2d context\n * @param {array} background Three values consisting of the r, g, b of the background\n * @return {object} The resulting imageData\n *\n */\n flatten(image, background) {\n for (let i = 0; i < image.data.length; i += 4) {\n const alpha = image.data[i + 3];\n const invAlpha = 255 - alpha;\n\n image.data[i] = (alpha * image.data[i] + invAlpha * background[0]) / 255;\n image.data[i + 1] = (alpha * image.data[i + 1] + invAlpha * background[1]) / 255;\n image.data[i + 2] = (alpha * image.data[i + 2] + invAlpha * background[2]) / 255;\n image.data[i + 3] = 0xff;\n }\n\n return image;\n }\n}\n\nmodule.exports = new CanvasFlatten();\n","const definitions = {\n\n\t'ascii': {\n\t\tname: 'ASCII',\n\t\tlanguages: ['en'],\n\t\tvalue: new Array(256).fill(1,0,128).map((v,i) => i),\n\t},\n\n\t'cp437': {\n\t\tname: 'USA, Standard Europe',\n\t\tlanguages: ['en'],\n\t\textends: 'ascii',\n\t\tvalue: [[,9786,9787,9829,9830,9827,9824,8226,9688,9675,9689,9794,9792,9834,9835,9788,],[9658,9668,8597,8252,182,167,9644,8616,8593,8595,8594,8592,8735,8596,9650,9660,],,,,,,[,,,,,,,,,,,,,,,8962,],[199,252,233,226,228,224,229,231,234,235,232,239,238,236,196,197,],[201,230,198,244,246,242,251,249,255,214,220,162,163,165,8359,402,],[225,237,243,250,241,209,170,186,191,8976,172,189,188,161,171,187,],[9617,9618,9619,9474,9508,9569,9570,9558,9557,9571,9553,9559,9565,9564,9563,9488,],[9492,9524,9516,9500,9472,9532,9566,9567,9562,9556,9577,9574,9568,9552,9580,9575,],[9576,9572,9573,9561,9560,9554,9555,9579,9578,9496,9484,9608,9604,9612,9616,9600,],[945,223,915,960,931,963,181,964,934,920,937,948,8734,966,949,8745,],[8801,177,8805,8804,8992,8993,247,8776,176,8729,183,8730,8319,178,9632,160,],]\n\t},\n\n\t'cp720': {\n\t\tname: 'Arabic',\n\t\tlanguages: ['ar'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[65533,65533,,,65533,,65533,,,,,,,65533,65533,65533,],[65533,1617,1618,,164,1600,,,1569,1570,1571,1572,,1573,1574,1575,],[1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,,,],,,,[1590,1591,1592,1593,1594,1601,,1602,1603,1604,1605,1606,1607,1608,1609,1610,],[,1611,1612,1613,1614,1615,1616,,,,,,,,,,],]\n\t},\n\n\t'cp737': {\n\t\tname: 'Greek',\n\t\tlanguages: ['el'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,],[929,931,932,933,934,935,936,937,945,946,947,948,949,950,951,952,],[953,954,955,956,957,958,959,960,961,963,962,964,965,966,967,968,],,,,[969,940,941,942,970,943,972,973,971,974,902,904,905,906,908,910,],[911,,,,938,939,,,,,,,,,,,],]\n\t},\n\n\t'cp771': {\n\t\tname: 'Lithuanian KBL',\n\t\tlanguages: ['lt'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,,,[,,,,,,,,,,,,260,261,268,269,],,[280,281,278,279,302,303,352,353,370,371,362,363,381,382,,,],]\n\t},\n\n\t'cp772': {\n\t\tname: 'Lithuanian LST 1284',\n\t\tlanguages: ['lt'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,[,,,,,260,268,280,278,,,,,302,352,,],[,,,,,,370,362,,,,,,,,381,],[261,269,281,279,303,353,371,363,382,,,,,,,,],,[,,8805,8804,8222,8220,247,8776,,,,,8319,178,,,],]\n\t},\n\n\t'cp774': {\n\t\tname: 'Lithuanian LST 1283',\n\t\tlanguages: ['lt'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,,,,[,,,,,260,268,280,278,,,,,302,352,,],[,,,,,,370,362,,,,,,,,381,],[261,269,281,279,303,353,371,363,382,,,,,,,,],[,946,,,,,,,,,,,,,,8898,],[,,,,8222,8220,,,,,729,,,,,,],]\n\t},\n\n\t'cp775': {\n\t\tname: 'Baltic Rim',\n\t\tlanguages: ['et','lt'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[262,,,257,,291,,263,322,275,342,343,299,377,,,],[,,,333,,290,162,346,347,,,248,,216,215,164,],[256,298,,379,380,378,8221,166,169,174,,,,321,,,],[,,,,,260,268,280,278,,,,,302,352,,],[,,,,,,370,362,,,,,,,,381,],[261,269,281,279,303,353,371,363,382,,,,,,,,],[211,,332,323,245,213,,324,310,311,315,316,326,274,325,8217,],[173,,8220,190,182,167,,8222,,,,185,179,,,,],]\n\t},\n\n\t'cp850': {\n\t\tname: 'Multilingual',\n\t\tlanguages: ['en'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,,[,,,,,,,,,,,248,,216,215,,],[,,,,,,,,,174,,,,,,,],[,,,,,193,194,192,169,,,,,162,165,,],[,,,,,,227,195,,,,,,,,164,],[240,208,202,203,200,305,205,206,207,,,,,166,204,,],[211,,212,210,245,213,,254,222,218,219,217,253,221,175,180,],[173,,8215,190,182,167,,184,,168,,185,179,,,,],]\n\t},\n\n\t'cp851': {\n\t\tname: 'Greek',\n\t\tlanguages: ['el'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,902,,,,,,,904,,905,],[906,65533,908,,,910,,,911,,,940,,941,942,943,],[970,912,972,973,913,914,915,916,917,918,919,,920,921,,,],[,,,,,922,923,924,925,,,,,926,927,,],[,,,,,,928,929,,,,,,,,931,],[932,933,934,935,936,937,945,946,947,,,,,948,949,,],[950,951,952,953,954,955,956,957,958,959,960,961,963,962,964,180,],[173,,965,966,967,167,968,184,,168,969,971,944,974,,,],]\n\t},\n\n\t'cp852': {\n\t\tname: 'Latin 2',\n\t\tlanguages: ['hu','pl','cz'],\n\t\textends: 'cp850',\n\t\tvalue: [,,,,,,,,[,,,,,367,263,,322,,336,337,,377,,262,],[,313,314,,,317,318,346,347,,,356,357,321,,269,],[,,,,260,261,381,382,280,281,,378,268,351,,,],[,,,,,,,282,350,,,,,379,380,,],[,,,,,,258,259,,,,,,,,,],[273,272,270,,271,327,,,283,,,,,354,366,,],[,,,323,324,328,352,353,340,,341,368,,,355,,],[,733,731,711,728,,,,,,729,369,344,345,,,],]\n\t},\n\n\t'cp853': {\n\t\tname: 'Turkish',\n\t\tlanguages: ['tr'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,265,,,,,,,,,264,],[,267,266,,,,,,304,,,285,,284,215,309,],[,,,,,,286,287,292,293,65533,,308,351,,,],[,,,,,193,194,192,350,,,,,379,380,,],[,,,,,,348,349,,,,,,,,164,],[65533,65533,202,203,200,305,205,206,207,,,,,65533,204,,],[211,,212,210,288,289,,294,295,218,219,217,364,365,65533,180,],[173,65533,8467,329,728,167,,184,,168,729,65533,179,,,,],]\n\t},\n\n\t'cp855': {\n\t\tname: 'Cyrillic',\n\t\tlanguages: ['bg'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[1106,1026,1107,1027,1105,1025,1108,1028,1109,1029,1110,1030,1111,1031,1112,1032,],[1113,1033,1114,1034,1115,1035,1116,1036,1118,1038,1119,1039,1102,1070,1098,1066,],[1072,1040,1073,1041,1094,1062,1076,1044,1077,1045,1092,1060,1075,1043,,,],[,,,,,1093,1061,1080,1048,,,,,1081,1049,,],[,,,,,,1082,1050,,,,,,,,164,],[1083,1051,1084,1052,1085,1053,1086,1054,1087,,,,,1055,1103,,],[1071,1088,1056,1089,1057,1090,1058,1091,1059,1078,1046,1074,1042,1100,1068,8470,],[173,1099,1067,1079,1047,1096,1064,1101,1069,1097,1065,1095,1063,167,,,],]\n\t},\n\n\t'cp857': {\n\t\tname: 'Turkish',\n\t\tlanguages: ['tr'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,,,305,,,],[,,,,,,,,304,,,248,,216,350,351,],[,,,,,,286,287,,174,,,,,,,],[,,,,,193,194,192,169,,,,,162,165,,],[,,,,,,227,195,,,,,,,,164,],[186,170,202,203,200,8364,205,206,207,,,,,166,204,,],[211,,212,210,245,213,,65533,215,218,219,217,236,255,175,180,],[173,,65533,190,182,167,,184,,168,,185,179,,,,],]\n\t},\n\n\t'cp858': {\n\t\tname: 'Euro',\n\t\tlanguages: ['en'],\n\t\textends: 'cp850',\n\t\tvalue: [,,,,,,,,,,,,,[,,,,,8364,,,,,,,,,,,],,,]\n\t},\n\n\t'cp860': {\n\t\tname: 'Portuguese',\n\t\tlanguages: ['pt'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,227,,193,,,202,,205,212,,195,194,],[,192,200,,245,,218,,204,213,,,,217,,211,],[,,,,,,,,,210,,,,,,,],,,,,,]\n\t},\n\n\t'cp861': {\n\t\tname: 'Icelandic',\n\t\tlanguages: ['is'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,208,240,222,,,],[,,,,,254,,221,253,,,248,,216,,,],[,,,,193,205,211,218,,,,,,,,,],,,,,,]\n\t},\n\n\t'cp862': {\n\t\tname: 'Hebrew',\n\t\tlanguages: ['he'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,],[1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,,,,,,],,,,,,,]\n\t},\n\n\t'cp863': {\n\t\tname: 'Canadian French',\n\t\tlanguages: ['fr'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,194,,182,,,,,,,8215,192,167,],[,200,202,,203,207,,,164,212,,,,217,219,,],[166,180,,,168,184,179,175,206,,,,,190,,,],,,,,,]\n\t},\n\n\t'cp864': {\n\t\tname: 'Arabic',\n\t\tlanguages: ['ar'],\n\t\textends: 'cp437',\n\t\toffset: 128,\n\t\tvalue: [176,183,8729,8730,9618,9472,9474,9532,9508,9516,9500,9524,9488,9484,9492,9496,946,8734,966,177,189,188,8776,171,187,65271,65272,65533,65533,65275,65276,65533,160,173,65154,163,164,65156,65533,65533,65166,65167,65173,65177,1548,65181,65185,65189,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,65233,1563,65201,65205,65209,1567,162,65152,65153,65155,65157,65226,65163,65165,65169,65171,65175,65179,65183,65187,65191,65193,65195,65197,65199,65203,65207,65211,65215,65217,65221,65227,65231,166,172,247,215,65225,1600,65235,65239,65243,65247,65251,65255,65259,65261,65263,65267,65213,65228,65230,65229,65249,65149,1617,65253,65257,65260,65264,65266,65232,65237,65269,65270,65245,65241,65265,9632,65533]\n\t},\n\n\t'cp865': {\n\t\tname: 'Nordic',\n\t\tlanguages: ['sv','dk'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,,[,,,,,,,,,,,248,,216,,,],[,,,,,,,,,,,,,,,164,],,,,,,]\n\t},\n\n\t'cp866': {\n\t\tname: 'Cyrillic 2',\n\t\tlanguages: ['ru'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,],[1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,],[1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,],,,,[1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,],[1025,1105,1028,1108,1031,1111,1038,1118,,,,,8470,164,,,],]\n\t},\n\n\t'cp869': {\n\t\tname: 'Greek',\n\t\tlanguages: ['el'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[65533,65533,65533,65533,65533,65533,902,65533,183,172,166,8216,8217,904,8213,905,],[906,938,908,65533,65533,910,939,169,911,178,179,940,,941,942,943,],[970,912,972,973,913,914,915,916,917,918,919,,920,921,,,],[,,,,,922,923,924,925,,,,,926,927,,],[,,,,,,928,929,,,,,,,,931,],[932,933,934,935,936,937,945,946,947,,,,,948,949,,],[950,951,952,953,954,955,956,957,958,959,960,961,963,962,964,900,],[173,,965,966,967,167,968,901,,168,969,971,944,974,,,],]\n\t},\n\n\t'cp874': {\n\t\tname: 'Thai',\n\t\tlanguages: ['th'],\n\t\textends: 'ascii',\n\t\toffset: 128,\n\t\tvalue: [8364,65533,65533,65533,65533,8230,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,8216,8217,8220,8221,8226,8211,8212,65533,65533,65533,65533,65533,65533,65533,65533,160,3585,3586,3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,3632,3633,3634,3635,3636,3637,3638,3639,3640,3641,3642,65533,65533,65533,65533,3647,3648,3649,3650,3651,3652,3653,3654,3655,3656,3657,3658,3659,3660,3661,3662,3663,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3674,3675,65533,65533,65533,65533]\n\t},\n\n\t'cp1001': {\n\t\tname: 'Arabic',\n\t\tlanguages: ['ar'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[1569,1570,1571,1572,1573,65163,1575,1576,65169,1577,1578,65175,1579,65179,1583,1584,],[1585,1586,1587,65203,65204,1588,65207,65208,1589,65211,65212,1590,65215,65216,1591,1592,],[1593,65227,1594,65231,1601,65235,1602,65239,1603,1705,1604,65271,65273,65275,9496,1605,],[65251,1606,65255,1607,65259,1608,1609,1657,65267,9474,1548,1563,1567,65154,65156,65162,],[,1580,65183,1581,65187,1582,65191,65226,65228,65230,65231,65272,65274,65276,65259,65260,],[1632,65264,9472,65533,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,65533,65533,],[65533,65533,65275,65533,65533,65533,65533,9524,,,,,,,,,],,]\n\t},\n\n\t'cp1098': {\n\t\tname: 'Farsi',\n\t\tlanguages: ['fa'],\n\t\textends: 'cp437',\n\t\tvalue: [,,[,,,,,65533,,,,,65533,,,,,,],,,,,,[65533,65533,1548,1563,1567,1611,1570,65154,63738,1575,65166,63739,1569,1571,65156,63737,],[1572,65163,1576,65169,64342,64344,1578,65175,1579,65179,1580,65183,64378,64380,215,1581,],[65187,1582,65191,1583,1584,1585,1586,64394,1587,65203,1588,65207,1589,65211,,,],[,,,,,1590,65215,65217,65219,,,,,164,65221,,],[,,,,,,65223,1593,,,,,,,,65533,],[65226,65227,65228,1594,65230,65231,65232,1601,65235,,,,,1602,65239,,],[64398,65243,64402,64404,1604,65247,1605,65251,1606,65255,1608,1607,65259,65260,64420,64508,],[173,64509,64510,1600,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,,,],]\n\t},\n\n\t'cp1125': {\n\t\tname: 'Ukrainian',\n\t\tlanguages: ['uk'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,,,,,[,,1168,1169,1028,1108,1030,1110,1031,1111,247,177,,,,,],]\n\t},\n\n\t'cp3001': {\n\t\tname: 'Estonian 1 or 1116',\n\t\tlanguages: ['et'],\n\t\textends: 'cp850',\n\t\tvalue: [,,,,,,,,,,,,,[353,352,,,,,,,,,,,,,,,],[,,,,,,,382,381,,,,,,,,],,]\n\t},\n\n\t'cp3002': {\n\t\tname: 'Estonian 2',\n\t\tlanguages: ['et'],\n\t\textends: 'iso8859-1',\n\t\tvalue: [,,,,,,,,[65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,],[65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,],[32,,,,,,,,,,,,,,,8254,],,,[352,,,,,,,,,,,,,,381,,],,[353,,,,,,,,,,,,,,382,,],]\n\t},\n\n\t'cp3011': {\n\t\tname: 'Latvian 1',\n\t\tlanguages: ['lv'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,,,,[,,,,,256,,326,,,,,,,,,],[,,,,,,257,,,,,,,,,,],[352,,269,268,,,291,298,299,,,,,363,362,,],,[274,275,290,311,310,316,315,382,381,,,,325,353,,,],]\n\t},\n\n\t'cp3012': {\n\t\tname: 'Latvian 2 (modified 866)',\n\t\tlanguages: ['lv'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,[,,,,,256,,326,,,,,,332,,,],[,,,,,,257,,,,,,,,,,],[352,,269,268,,,291,298,299,,,,,363,362,,],,[274,275,290,311,310,316,315,382,381,333,,,325,353,,,],]\n\t},\n\n\t'cp3021': {\n\t\tname: 'Bulgarian (MIK)',\n\t\tlanguages: ['bg'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,[1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,],[,,,,,,9571,9553,,,,,,,,9488,],[9617,9618,9619,9474,9508,8470,167,9559,9565,,,,,,,,],[945,223,915,960,931,963,181,964,934,920,937,948,8734,966,949,8745,],[8801,177,8805,8804,8992,8993,247,8776,,,,,8319,178,,,],]\n\t},\n\n\t'cp3041': {\n\t\tname: 'Maltese ISO 646',\n\t\tlanguages: ['mt'],\n\t\textends: 'ascii',\n\t\tvalue: [,,,,,[,,,,,,,,,,,289,380,295,,,],[267,,,,,,,,,,,,,,,,],[,,,,,,,,,,,288,379,294,266,,],,,,,,,,,]\n\t},\n\n\t'cp3840': {\n\t\tname: 'Russian (modified 866)',\n\t\tlanguages: ['ru'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,,,,,[8801,177,8805,8804,8992,8993,247,8776,,,,,8319,178,,,],]\n\t},\n\n\t'cp3841': {\n\t\tname: 'Ghost',\n\t\tlanguages: ['ru'],\n\t\textends: 'cp437',\n\t\toffset: 128,\n\t\tvalue: [1171,1241,1105,1110,1111,1112,1181,1257,1118,1199,1277,1224,1209,1207,1108,163,1170,1240,1025,1030,1031,1032,1180,1256,1038,1198,1276,1223,1208,1206,1028,1066,32,33,34,35,164,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,1102,1072,1073,1094,1076,1077,1092,1075,1093,1080,1081,1082,1083,1084,1085,1086,1087,1103,1088,1089,1090,1091,1078,1074,1100,1099,1079,1096,1101,1097,1095,1098,1070,1040,1041,1062,1044,1045,1060,1043,1061,1048,1049,1050,1051,1052,1053,1054,1055,1071,1056,1057,1058,1059,1046,1042,1068,1067,1047,1064,1069,1065,1063,8709]\n\t},\n\n\t'cp3843': {\n\t\tname: 'Polish (Mazovia)',\n\t\tlanguages: ['pl'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,261,,,,,,,263,,260,],[280,281,322,,,262,,,346,,,,321,,347,,],[377,379,,211,324,323,378,380,,,,,,,,,],,,,,,]\n\t},\n\n\t'cp3844': {\n\t\tname: 'Czech (Kamenický)',\n\t\tlanguages: ['cz'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[268,,,271,,270,356,269,283,282,313,205,318,314,,193,],[,382,381,,,211,367,218,253,,,352,317,221,344,357,],[,,,,328,327,366,212,353,345,341,340,,167,,,],,,,,,]\n\t},\n\n\t'cp3845': {\n\t\tname: 'Hungarian (CWI-2)',\n\t\tlanguages: ['hu'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,,,205,,193,],[,,,337,,211,369,218,368,,,,,,,,],[,,,,,,,336,,,,,,,,,],,,,,,]\n\t},\n\n\t'cp3846': {\n\t\tname: 'Turkish',\n\t\tlanguages: ['tr'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,,,305,,,],[,,,,,,,,304,,,,,,350,351,],[,,,,,,286,287,,,,,,,,,],,,,,,]\n\t},\n\n\t'cp3847': {\n\t\tname: 'Brazil ABNT',\n\t\tlanguages: ['pt'],\n\t\textends: 'iso8859-1',\n\t\tvalue: [,,,,,,,,,,,,,[,,,,,,,65533,,,,,,,,,],,[,,,,,,,65533,,,,,,,,,],]\n\t},\n\n\t'cp3848': {\n\t\tname: 'Brazil ABICOMP',\n\t\tlanguages: ['pt'],\n\t\textends: 'ascii',\n\t\tvalue: [,,,,,,,,,,[160,192,193,194,195,196,199,200,201,202,203,204,205,206,205,209,],[210,211,212,213,214,198,217,218,219,220,376,168,163,166,167,176,],[161,224,225,226,227,228,231,232,233,234,235,236,237,238,239,241,],[242,243,244,245,246,230,249,250,251,252,255,223,170,186,191,177,],,,]\n\t},\n\n\t'iso8859-1': {\n\t\tname: 'Latin 1',\n\t\tlanguages: ['en'],\n\t\textends: 'ascii',\n\t\toffset: 128,\n\t\tvalue: [128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255]\n\t},\n\n\t'iso8859-2': {\n\t\tname: 'Latin 2',\n\t\tlanguages: ['hu','pl','cz'],\n\t\textends: 'iso8859-1',\n\t\tvalue: [,,,,,,,,,,[,260,728,321,,317,346,,,352,350,356,377,,381,379,],[,261,731,322,,318,347,711,,353,351,357,378,733,382,380,],[340,,,258,,313,262,,268,,280,,282,,,270,],[272,323,327,,,336,,,344,366,,368,,,354,,],[341,,,259,,314,263,,269,,281,,283,,,271,],[273,324,328,,,337,,,345,367,,369,,,355,729,],]\n\t},\n\n\t'iso8859-7': {\n\t\tname: 'Greek',\n\t\tlanguages: ['el'],\n\t\textends: 'iso8859-1',\n\t\tvalue: [,,,,,,,,,,[,8216,8217,,8364,8367,,,,,890,,,,,8213,],[,,,,900,901,902,,904,905,906,,908,,910,911,],[912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,],[928,929,,931,932,933,934,935,936,937,938,939,940,941,942,943,],[944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,],[960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,,],]\n\t},\n\n\t'iso8859-15': {\n\t\tname: 'Latin 9',\n\t\tlanguages: ['fr'],\n\t\textends: 'iso8859-1',\n\t\tvalue: [,,,,,,,,,,[,,,,8364,,352,,353,,,,,,,,],[,,,,381,,,,382,,,,338,339,376,,],,,,,]\n\t},\n\n\t'windows1250': {\n\t\tname: 'Latin 2',\n\t\tlanguages: ['hu','pl','cz'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,,,65533,,,,,65533,,,,346,356,,377,],[,,,,,,,,65533,,,,347,357,,378,],[,711,728,321,,260,,,,,350,,,,,379,],[,,731,322,,,,,,261,351,,317,733,318,380,],[340,,,258,,313,262,,268,,280,,282,,,270,],[272,323,327,,,336,,,344,366,,368,,,354,,],[341,,,259,,314,263,,269,,281,,283,,,271,],[273,324,328,,,337,,,345,367,,369,,,355,729,],]\n\t},\n\n\t'windows1251': {\n\t\tname: 'Cyrillic',\n\t\tlanguages: ['ru'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[1026,1027,,1107,,,,,8364,,1033,,1034,1036,1035,1039,],[1106,,,,,,,,65533,,1113,,1114,1116,1115,1119,],[,1038,1118,1032,,1168,,,1025,,1028,,,,,1031,],[,,1030,1110,1169,,,,1105,8470,1108,,1112,1029,1109,1111,],[1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,],[1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,],[1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,],[1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,],]\n\t},\n\n\t'windows1252': {\n\t\tname: 'Latin',\n\t\tlanguages: ['fr'],\n\t\textends: 'iso8859-1',\n\t\tvalue: [,,,,,,,,[8364,65533,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,65533,381,65533,],[65533,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,65533,382,376,],,,,,,,]\n\t},\n\n\t'windows1253': {\n\t\tname: 'Greek',\n\t\tlanguages: ['el'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,,,,,,,,65533,,65533,,65533,,65533,,],[,,,,,,,,65533,,65533,,65533,,65533,65533,],[,901,902,,,,,,,,65533,,,,,8213,],[,,,,900,,,,904,905,906,,908,,910,911,],[912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,],[928,929,65533,931,932,933,934,935,936,937,938,939,940,941,942,943,],[944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,],[960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,65533,],]\n\t},\n\n\t'windows1254': {\n\t\tname: 'Turkish',\n\t\tlanguages: ['tr'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,,,,65533,,],[,,,,,,,,,,,,,,65533,,],,,,[286,,,,,,,,,,,,,304,350,,],,[287,,,,,,,,,,,,,305,351,,],]\n\t},\n\n\t'windows1255': {\n\t\tname: 'Hebrew',\n\t\tlanguages: ['he'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,65533,,65533,,65533,,],[,,,,,,,,,,65533,,65533,,65533,65533,],[,,,,8362,,,,,,215,,,,,,],[,,,,,,,,,,247,,,,,,],[1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,65533,1467,1468,1469,1470,1471,],[1472,1473,1474,1475,1520,1521,1522,1523,1524,65533,65533,65533,65533,65533,65533,65533,],[1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,],[1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,65533,65533,8206,8207,65533,],]\n\t},\n\n\t'windows1256': {\n\t\tname: 'Arabic',\n\t\tlanguages: ['ar'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,1662,,,,,,,,,1657,,,1670,1688,1672,],[1711,,,,,,,,1705,,1681,,,8204,8205,1722,],[,1548,,,,,,,,,1726,,,,,,],[,,,,,,,,,,1563,,,,,1567,],[1729,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,],[1584,1585,1586,1587,1588,1589,1590,,1591,1592,1593,1594,1600,1601,1602,1603,],[,1604,,1605,1606,1607,1608,,,,,,1609,1610,,,],[1611,1612,1613,1614,,1615,1616,,1617,,1618,,,8206,8207,1746,],]\n\t},\n\n\t'windows1257': {\n\t\tname: 'Baltic Rim',\n\t\tlanguages: ['et','lt'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,,,65533,,,,,65533,,65533,,65533,168,711,184,],[,,,,,,,,65533,,65533,,65533,175,731,65533,],[,65533,,,,65533,,,216,,342,,,,,198,],[,,,,,,,,248,,343,,,,,230,],[260,302,256,262,,,280,274,268,,377,278,290,310,298,315,],[352,323,325,,332,,,,370,321,346,362,,379,381,,],[261,303,257,263,,,281,275,269,,378,279,291,311,299,316,],[353,324,326,,333,,,,371,322,347,363,,380,382,729,],]\n\t},\n\n\t'windows1258': {\n\t\tname: 'Vietnamese',\n\t\tlanguages: ['vi'],\n\t\textends: 'windows1252',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,65533,,,,65533,,],[,,,,,,,,,,65533,,,,65533,,],,,[,,,258,,,,,,,,,768,,,,],[272,,777,,,416,,,,,,,,431,771,,],[,,,259,,,,,,,,,769,,,,],[273,,803,,,417,,,,,,,,432,8363,,],]\n\t},\n\n\t'rk1048': {\n\t\tname: 'Kazakh',\n\t\tlanguages: ['kk'],\n\t\textends: 'windows1251',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,,,1178,1210,,],[,,,,,,,,,,,,,1179,1211,,],[,1200,1201,1240,,1256,,,,,1170,,,,,1198,],[,,,,1257,,,,,,1171,,1241,1186,1187,1199,],,,,,]\n\t},\n\n\t'thai11': {\n\t\tname: 'Thai (Charcter Code 11)',\n\t\tlanguages: ['th'],\n\t\textends: 'thai13',\n\t\tvalue: [,,,,,,,,,[,,,,,,,,,9484,9488,9492,9496,9474,9500,9508,],,,,[,,,,,,,,,,,9472,9524,9516,9532,,],,[,,,,,,,,,,,3658,3650,3651,3652,65533,],]\n\t},\n\n\t'thai13': {\n\t\tname: 'Thai (Charcter Code 13)',\n\t\tlanguages: ['th'],\n\t\textends: 'cp874',\n\t\tvalue: [,,,,,,,,[65533,,,,,65533,,,,,,,,,,,],[,65533,65533,65533,65533,65533,65533,65533,,,,,,,,,],,,,[,,,,,,,,,,,3619,,,3648,,],,[,,,,,,,,,,,,8592,8593,8594,8595,],]\n\t},\n\n\t'thai14': {\n\t\tname: 'Thai (Charcter Code 14)',\n\t\tlanguages: ['th'],\n\t\textends: 'cp874',\n\t\tvalue: [,,,,,,,,[9484,9488,9492,9496,9474,9472,9500,9508,9524,9516,9532,9608,,,,,],[3619,3634,65533,3632,65533,65533,65533,65533,,,,,,,,3648,],,,,,,[,,,,,,,,,,3675,65533,,,,3652,],]\n\t},\n\n\t'thai16': {\n\t\tname: 'Thai (Charcter Code 16)',\n\t\tlanguages: ['th'],\n\t\textends: 'thai18',\n\t\tvalue: [,,,,,,,,,[3650,3651,,,,,,,,,,,,,,,],,,,,,,]\n\t},\n\n\t'thai18': {\n\t\tname: 'Thai (Charcter Code 18)',\n\t\tlanguages: ['th'],\n\t\textends: 'thai14',\n\t\tvalue: [,,,,,,,,[,,,,,,,,,,,,8592,8593,8594,8595,],,,,,,[,,,,,,,,,,,,,,3652,,],[,,,,,,,,,,,,,,,65533,],]\n\t},\n\n\t'thai42': {\n\t\tname: 'Thai (Charcter Code 42)',\n\t\tlanguages: ['th'],\n\t\textends: 'thai18',\n\t\tvalue: [,,,,,,,,,[3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3587,3589,3619,3634,3652,,],[,,,3588,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,],[3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,],[3618,3619,3620,3621,3623,3624,3625,3626,3627,3628,3629,3630,3632,3622,3634,3635,],[3648,3649,3650,3651,3652,3654,3631,3640,3641,3636,3637,3638,3639,3658,3661,3655,],[3656,3657,3658,3659,3660,65533,65533,65533,65533,65533,65533,3632,65533,65533,65533,65533,],[65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,65533,,,,,160,],]\n\t},\n\n\t'tcvn3': {\n\t\tname: 'Vietnamese (VSCII3 / TCVN3)',\n\t\tlanguages: ['vi'],\n\t\textends: 'ascii',\n\t\tvalue: [,,,,,,,,,,[,,,,,,,,259,226,234,244,417,432,273,,],[,,,,,224,7843,227,225,7841,,7857,7859,7861,7855,,],[,,,,,,7863,7847,7849,7851,7845,7853,232,,7867,7869,],[233,7865,7873,7875,7877,7871,7879,236,7881,,,,297,237,7883,242,],[,7887,245,243,7885,7891,7893,7895,7889,7897,7901,7903,7905,7899,7907,249,],[,7911,361,250,7909,7915,7917,7919,7913,7921,7923,7927,7929,253,7925,,],]\n\t},\n\n\t'tcvn3capitals': {\n\t\tname: 'Vietnamese (VSCII3 / TCVN3 Capitals)',\n\t\tlanguages: ['vi'],\n\t\textends: 'ascii',\n\t\tvalue: [,,,,,,,,,,[,258,194,,,,,208,,,202,212,416,431,,,],[,,,,,192,7842,195,193,7840,,7856,7858,7860,7854,,],[,,,,,,7862,7846,7848,7850,7844,7852,200,,7866,7868,],[201,7864,7872,7874,7876,7870,7878,204,7880,,,,296,205,7882,210,],[,7886,213,211,7884,7890,7892,7894,7888,7896,7900,7902,7904,7898,7906,217,],[,7910,360,218,7908,7914,7916,7918,7912,7920,7922,7926,7928,221,7924,,],]\n\t},\n\n\t'viscii': {\n\t\tname: 'Vietnamese (VISCII)',\n\t\tlanguages: ['vi'],\n\t\textends: 'ascii',\n\t\tvalue: [[,,7858,,,7860,7850,,,,,,,,,,],[,,,,7926,,,,,7928,,,,,7924,,],,,,,,,[7840,7854,7856,7862,7844,7846,7848,7852,7868,7864,7870,7872,7874,7876,7878,7888,],[7890,7892,7894,7896,7906,7898,7900,7902,7882,7886,7884,7880,7910,360,7908,7922,],[213,7855,7857,7863,7845,7847,7849,7853,7869,7865,7871,7873,7875,7877,7879,7889,],[7891,7893,7895,7904,416,7897,7901,7903,7883,7920,7912,7914,7916,417,7899,431,],[192,193,194,195,7842,258,7859,7861,200,201,202,7866,204,205,296,7923,],[272,7913,210,211,212,7841,7927,7915,7917,217,218,7929,7925,221,7905,432,],[224,225,226,227,7843,259,7919,7851,232,233,234,7867,236,237,297,7881,],[273,7921,242,243,244,245,7887,7885,7909,249,250,361,7911,253,7907,7918,],]\n\t},\n\n\t'khmer': {\n\t\tname: 'Khmer',\n\t\tlanguages: ['km'],\n\t\textends: 'ascii',\n\t\tvalue: [,,,,,,,,[6016,6017,6016,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,],[6032,6033,6032,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,],[6048,6049,6048,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,],[6064,6065,6064,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,],[6080,6081,6080,6083,6084,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,],[6096,6097,6096,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,,,],[6112,6113,6112,6115,6116,6117,6118,6119,6120,6121,,,,,,,],[6128,6129,6128,6131,6132,6133,6134,,,,,,,,,,],]\n\t},\n\n\t'latvian': {\n\t\tname: 'Latvian (based on cp3012)',\n\t\tlanguages: ['lv'],\n\t\textends: 'cp3012',\n\t\tvalue: [,,,,,,,,,,,,,[,,,,298,299,,,,,,,,,,,],,,]\n\t},\n\n\t'epson/katakana': {\n\t\tname: 'Katakana',\n\t\tlanguages: ['ja'],\n\t\textends: 'cp437',\n\t\toffset: 128,\n\t\tvalue: [9601,9602,9603,9604,9605,9606,9607,9608,9615,9614,9613,9612,9611,9610,9609,9532,9524,9516,9508,9500,9620,9472,9474,9621,9484,9488,9492,9496,9581,9582,9584,9583,32,65377,65378,65379,65380,65381,65382,65383,65384,65385,65386,65387,65388,65389,65390,65391,65392,65393,65394,65395,65396,65397,65398,65399,65400,65401,65402,65403,65404,65405,65406,65407,65408,65409,65410,65411,65412,65413,65414,65415,65416,65417,65418,65419,65420,65421,65422,65423,65424,65425,65426,65427,65428,65429,65430,65431,65432,65433,65434,65435,65436,65437,65438,65439,9552,9566,9578,9569,9698,9699,9701,9700,9824,9829,9830,9827,9679,9675,9585,9586,9587,20870,24180,26376,26085,26178,20998,31186,12306,24066,21306,30010,26449,20154,9618,160]\n\t},\n\n\t'epson/iso8859-2': {\n\t\tname: 'Latin 2 modified with box drawing characters',\n\t\tlanguages: ['hu','pl','cz'],\n\t\textends: 'iso8859-2',\n\t\tvalue: [,,,,,,,,[9617,9618,9619,9474,9508,9496,9484,9608,169,9571,9553,9559,9565,162,165,9488,],[9492,9524,9516,9500,9472,9532,9604,9600,9562,9556,9577,9574,9568,9552,9580,174,],,,,,,,]\n\t},\n\n\t'star/standard': {\n\t\tname: 'Standard',\n\t\tlanguages: ['en'],\n\t\textends: 'cp437',\n\t\toffset: 128,\n\t\tvalue: [160,129904,129910,129905,129911,129906,129912,129907,129913,129908,129914,129909,9500,129915,129916,129918,129919,129917,9624,9623,9622,9629,9585,9586,9701,9700,9484,9524,9516,9508,9830,9587,196,214,220,223,167,170,186,65533,162,189,65533,65533,165,188,256,235,233,232,275,234,239,237,236,299,238,246,243,242,333,244,252,250,249,363,251,231,191,65533,65533,274,8580,161,197,248,216,228,225,224,257,226,176,8451,8457,937,181,931,963,65533,65533,967,8734,177,247,960,9612,9604,9600,9616,9532,9496,9492,9488,9608,9618,9162,8592,8593,8594,8595,9581,9161,129923,65533,9601,9613,65533,129928,9626,9630,9698,9699,129840,9208,9584,9583,9582]\n\t},\n\n\t'star/katakana': {\n\t\tname: 'Katakana',\n\t\tlanguages: ['ja'],\n\t\textends: 'star/standard',\n\t\tvalue: [,,,,,,,,,,[32,65377,65378,65379,65380,65381,65382,65383,65384,65385,65386,65387,65388,65389,65390,65391,],[65392,65393,65394,65395,65396,65397,65398,65399,65400,65401,65402,65403,65404,65405,65406,65407,],[65408,65409,65410,65411,65412,65413,65414,65415,65416,65417,65418,65419,65420,65421,65422,65423,],[65424,65425,65426,65427,65428,65429,65430,65431,65432,65433,65434,65435,65436,65437,65438,65439,],,,]\n\t},\n\n\t'star/cp874': {\n\t\tname: 'Thai',\n\t\tlanguages: ['th'],\n\t\textends: 'cp874',\n\t\tvalue: [,,,,,,,,,[,,,,,9474,9472,9532,9484,9488,9492,9496,9500,9516,9508,9524,],,,,[,,,,,,,,,,,3657,3658,3659,3660,,],,[,,,,,,,,,,,,162,172,166,,],]\n\t},\n\n\t'star/cp928': {\n\t\tname: 'Greek',\n\t\tlanguages: ['el'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,,,[160,8216,8217,163,65533,65533,166,167,168,169,65533,171,172,173,65533,8213,],[176,177,178,179,900,901,902,183,904,905,906,187,908,189,910,911,],[912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,],[928,929,65533,931,932,933,934,935,936,937,938,939,940,941,942,943,],[944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,],[960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,65533,],]\n\t},\n\n\t'bixolon/cp866': {\n\t\tname: 'Cyrillic 2 (modified with euro sign)',\n\t\tlanguages: ['ru'],\n\t\textends: 'cp866',\n\t\tvalue: [,,,,,,,,,,,,,,,[,,,,9093,1055,8801,9824,8364,,,,,,,,],]\n\t},\n\n\t'bixolon/hebrew': {\n\t\tname: 'Hebrew',\n\t\tlanguages: ['he'],\n\t\textends: 'cp437',\n\t\tvalue: [,,,,,,,,,,[32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,],[48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,],[64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,],[80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,],[1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,],[1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,123,124,125,126,,],]\n\t},\n\n\t'xprinter/hebrew': {\n\t\tname: 'Hebrew (based on CP862 minus CP437)',\n\t\tlanguages: ['he'],\n\t\textends: 'ascii',\n\t\tvalue: [,,,,,,,,[1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,],[1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,,,,,,],,,,,,,]\n\t},\n\n\t'pos8360/hebrew': {\n\t\tname: 'Hebrew (based on cp862 with repeated characters)',\n\t\tlanguages: ['he'],\n\t\textends: 'cp862',\n\t\tvalue: [,,,,,,,,,,,,,,[1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,],[1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,,,,,,],]\n\t},\n\n};\n\nconst aliases = {\n\t'cp2001': 'cp771',\n\t'cp1119': 'cp772',\n\t'cp1118': 'cp774',\n\t'cp1162': 'cp874',\n\t'iso88591': 'iso8859-1',\n\t'iso88592': 'iso8859-2',\n\t'iso88597': 'iso8859-7',\n\t'iso885915': 'iso8859-15',\n\t'shiftjis': 'epson/katakana',\n\t'katakana': 'epson/katakana',\n\t'cp928': 'star/cp928',\n};\n\nconst strings = {\n en: 'The quick brown fox jumps over the lazy dog.',\n jp: 'イロハニホヘト チリヌルヲ ワカヨタレソ ツネナラム',\n pt: 'O próximo vôo à noite sobre o Atlântico, põe freqüentemente o único médico.',\n fr: 'Les naïfs ægithales hâtifs pondant à Noël où il gèle sont sûrs d\\'être déçus en voyant leurs drôles d\\'œufs abîmés.',\n sv: 'Flygande bäckasiner söka strax hwila på mjuka tuvor.',\n dk: 'Quizdeltagerne spiste jordbær med fløde',\n el: 'ξεσκεπάζω την ψυχοφθόρα βδελυγμία',\n tr: 'Pijamalı hasta, yağız şoföre çabucak güvendi.',\n ru: 'Съешь же ещё этих мягких французских булок да выпей чаю',\n hu: 'Árvíztűrő tükörfúrógép',\n pl: 'Pchnąć w tę łódź jeża lub ośm skrzyń fig',\n cz: 'Mohu jíst sklo, neublíží mi.',\n ar: 'أنا قادر على أكل الزجاج و هذا لا يؤلمني.',\n et: 'Ma võin klaasi süüa, see ei tee mulle midagi.',\n lt: 'Aš galiu valgyti stiklą ir jis manęs nežeidžia.',\n bg: 'Мога да ям стъкло, то не ми вреди.',\n is: 'Ég get etið gler án þess að meiða mig.',\n he: 'אני יכול לאכול זכוכית וזה לא מזיק לי.',\n fa: '.من می توانم بدونِ احساس درد شيشه بخورم',\n uk: 'Я можу їсти скло, і воно мені не зашкодить.',\n vi: 'Tôi có thể ăn thủy tinh mà không hại gì.',\n kk: 'қазақша',\n lv: 'Es varu ēst stiklu, tas man nekaitē.',\n mt: 'Nista\\' niekol il-ħġieġ u ma jagħmilli xejn.',\n th: 'ฉันกินกระจกได้ แต่มันไม่ทำให้ฉันเจ็บ',\n};\n\n/**\n * A library for converting Unicode to obscure single byte codepage for use with thermal printers\n */\nclass CodepageEncoder {\n /**\n * Get list of supported codepages\n *\n * @return {array} Return an array with the supported codepages\n *\n */\n static getEncodings() {\n return Object.keys(definitions);\n }\n\n /**\n * Get codepage definition\n *\n * @param {string} codepage The codepage, defaults to ascii when it cannot find the codepage\n * @return {object} Return an object with the codepage definition\n *\n */\n static getEncoding(codepage) {\n if (typeof aliases[codepage] !== 'undefined') {\n codepage = aliases[codepage];\n }\n\n if (typeof definitions[codepage] === 'undefined') {\n codepage = 'ascii';\n }\n\n /* Create codepoints array if it doesn't exist */\n\n if (typeof definitions[codepage].codepoints === 'undefined') {\n definitions[codepage].codepoints = this.getCodepoints(codepage, true);\n }\n\n /* Return codepage definition */\n\n return structuredClone(definitions[codepage]);\n }\n\n\n /**\n * Get test strings for the specified codepage\n *\n * @param {string} codepage The codepage\n * @return {array} Return an array with one or more objects\n * containing a property for the language of\n * the string and a property for the string itself\n *\n */\n static getTestStrings(codepage) {\n if (typeof aliases[codepage] !== 'undefined') {\n codepage = aliases[codepage];\n }\n\n if (typeof definitions[codepage] !== 'undefined' &&\n typeof definitions[codepage].languages !== 'undefined') {\n return definitions[codepage].languages.map((i) => ({language: i, string: strings[i]}));\n }\n\n return [];\n }\n\n /**\n * Determine if the specified codepage is supported\n *\n * @param {string} codepage The codepage\n * @return {boolean} Return a boolean, true if the encoding is supported,\n * otherwise false\n *\n */\n static supports(codepage) {\n if (typeof aliases[codepage] !== 'undefined') {\n codepage = aliases[codepage];\n }\n\n if (typeof definitions[codepage] === 'undefined') {\n return false;\n }\n\n return true;\n }\n\n /**\n * Encode a string in the specified codepage\n *\n * @param {string} input Text that needs encoded to the specified codepage\n * @param {string} codepage The codepage\n * @return {Uint8Array} Return an array of bytes with the encoded string\n *\n */\n static encode(input, codepage) {\n const output = new Uint8Array(input.length);\n const definition = this.getEncoding(codepage);\n\n for (let c = 0; c < input.length; c++) {\n const codepoint = input.codePointAt(c);\n const position = definition.codepoints.findIndex((i) => i === codepoint);\n\n if (position !== -1) {\n output[c] = position;\n } else {\n output[c] = 0x3f;\n }\n }\n\n return output;\n }\n\n /**\n * Encode a string in the most optimal set of codepages.\n *\n * @param {string} input Text that needs encoded\n * @param {array} candidates An array of candidate codepages that are allowed to be used, ranked by importance\n * @return {Uint8Array} Return an array of bytes with the encoded string\n *\n */\n static autoEncode(input, candidates) {\n const fragments = [];\n let fragment = -1;\n let current;\n\n for (let c = 0; c < input.length; c++) {\n const codepoint = input.codePointAt(c);\n\n let available;\n let char = 0;\n\n if (!available && current) {\n const definition = this.getEncoding(current);\n const position = definition.codepoints.findIndex((i) => i === codepoint);\n\n if (position !== -1) {\n available = current;\n char = position;\n }\n }\n\n if (!available) {\n for (let i = 0; i < candidates.length; i++) {\n const definition = this.getEncoding(candidates[i]);\n const position = definition.codepoints.findIndex((i) => i === codepoint);\n\n if (position !== -1) {\n available = candidates[i];\n char = position;\n break;\n }\n }\n }\n\n if (!available) {\n available = current || candidates[0];\n char = 0x3f;\n }\n\n if (current != available) {\n if (current) {\n fragments[fragment].bytes = new Uint8Array(fragments[fragment].bytes);\n }\n\n fragment++;\n fragments[fragment] = {\n codepage: available,\n bytes: [],\n };\n\n current = available;\n }\n\n fragments[fragment].bytes.push(char);\n }\n\n if (current) {\n fragments[fragment].bytes = new Uint8Array(fragments[fragment].bytes);\n }\n\n return fragments;\n }\n\n /**\n * Get codepoints\n *\n * @param {string} codepage The codepage\n * @param {boolean} evaluateExtends Evaluate the extends property\n * @return {array} Return an object array with 256 codepoints for the specified codepage\n *\n */\n static getCodepoints(codepage, evaluateExtends) {\n let codepoints = new Array(256);\n\n if (evaluateExtends) {\n if (typeof definitions[codepage].extends === 'undefined') {\n codepoints = codepoints.fill(0xfffd);\n } else {\n codepoints = this.getEncoding(definitions[codepage].extends).codepoints;\n }\n }\n\n if (definitions[codepage].value.length === 16) {\n for (let i = 0; i < 16; i++) {\n if (typeof definitions[codepage].value[i] !== 'object') {\n continue;\n }\n\n for (let j = 0; j < 16; j++) {\n if (typeof definitions[codepage].value[i][j] !== 'number') {\n continue;\n }\n\n codepoints[i * 16 + j] = definitions[codepage].value[i][j];\n }\n }\n } else {\n const offset = definitions[codepage].offset || 0;\n\n for (let i = 0; i < definitions[codepage].value.length; i++) {\n if (typeof definitions[codepage].value[i] !== 'number') {\n continue;\n }\n\n codepoints[offset + i] = definitions[codepage].value[i];\n }\n }\n\n return codepoints;\n }\n}\n\nexport { CodepageEncoder as default };\n","/* eslint-env browser */\n\nmodule.exports = ImageData\n","'use strict'\n\nconst ImageData = require('@canvas/image-data')\n\nfunction nearestNeighbor (src, dst) {\n let pos = 0\n\n for (let y = 0; y < dst.height; y++) {\n for (let x = 0; x < dst.width; x++) {\n const srcX = Math.floor(x * src.width / dst.width)\n const srcY = Math.floor(y * src.height / dst.height)\n\n let srcPos = ((srcY * src.width) + srcX) * 4\n\n dst.data[pos++] = src.data[srcPos++] // R\n dst.data[pos++] = src.data[srcPos++] // G\n dst.data[pos++] = src.data[srcPos++] // B\n dst.data[pos++] = src.data[srcPos++] // A\n }\n }\n}\n\nfunction bilinearInterpolation (src, dst) {\n function interpolate (k, kMin, kMax, vMin, vMax) {\n return Math.round((k - kMin) * vMax + (kMax - k) * vMin)\n }\n\n function interpolateHorizontal (offset, x, y, xMin, xMax) {\n const vMin = src.data[((y * src.width + xMin) * 4) + offset]\n if (xMin === xMax) return vMin\n\n const vMax = src.data[((y * src.width + xMax) * 4) + offset]\n return interpolate(x, xMin, xMax, vMin, vMax)\n }\n\n function interpolateVertical (offset, x, xMin, xMax, y, yMin, yMax) {\n const vMin = interpolateHorizontal(offset, x, yMin, xMin, xMax)\n if (yMin === yMax) return vMin\n\n const vMax = interpolateHorizontal(offset, x, yMax, xMin, xMax)\n return interpolate(y, yMin, yMax, vMin, vMax)\n }\n\n let pos = 0\n\n for (let y = 0; y < dst.height; y++) {\n for (let x = 0; x < dst.width; x++) {\n const srcX = x * src.width / dst.width\n const srcY = y * src.height / dst.height\n\n const xMin = Math.floor(srcX)\n const yMin = Math.floor(srcY)\n\n const xMax = Math.min(Math.ceil(srcX), src.width - 1)\n const yMax = Math.min(Math.ceil(srcY), src.height - 1)\n\n dst.data[pos++] = interpolateVertical(0, srcX, xMin, xMax, srcY, yMin, yMax) // R\n dst.data[pos++] = interpolateVertical(1, srcX, xMin, xMax, srcY, yMin, yMax) // G\n dst.data[pos++] = interpolateVertical(2, srcX, xMin, xMax, srcY, yMin, yMax) // B\n dst.data[pos++] = interpolateVertical(3, srcX, xMin, xMax, srcY, yMin, yMax) // A\n }\n }\n}\n\nmodule.exports = function resizeImageData (image, width, height, algorithm) {\n algorithm = algorithm || 'bilinear-interpolation'\n\n let resize\n switch (algorithm) {\n case 'nearest-neighbor': resize = nearestNeighbor; break\n case 'bilinear-interpolation': resize = bilinearInterpolation; break\n // FIXME: Only for backwards compatibility, remove in next major version\n case 'biliniear-interpolation': resize = bilinearInterpolation; break\n default: throw new Error(`Unknown algorithm: ${algorithm}`)\n }\n\n const result = new ImageData(width, height)\n\n resize(image, result)\n\n return result\n}\n","import CodepageEncoder from '@point-of-sale/codepage-encoder';\r\n\r\n/**\r\n * ESC/POS Language commands\r\n */\r\nclass LanguageEscPos {\r\n /**\r\n * Initialize the printer\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n initialize() {\r\n return [\r\n {\r\n type: 'initialize',\r\n payload: [0x1b, 0x40],\r\n },\r\n {\r\n type: 'character-mode',\r\n value: 'single byte',\r\n payload: [0x1c, 0x2e],\r\n },\r\n {\r\n type: 'font',\r\n value: 'A',\r\n payload: [0x1b, 0x4d, 0x00],\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Change the font\r\n * @param {string} value Font type ('A', 'B', or more)\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n font(value) {\r\n const type = value.charCodeAt(0) - 0x41;\r\n\r\n return [\r\n {\r\n type: 'font',\r\n value,\r\n payload: [0x1b, 0x4d, type],\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Change the alignment\r\n * @param {string} value Alignment value ('left', 'center', 'right')\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n align(value) {\r\n let align = 0x00;\r\n\r\n if (value === 'center') {\r\n align = 0x01;\r\n } else if (value === 'right') {\r\n align = 0x02;\r\n }\r\n\r\n return [\r\n {\r\n type: 'align',\r\n value,\r\n payload: [0x1b, 0x61, align],\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Generate a barcode\r\n * @param {string} value Value to encode\r\n * @param {string|number} symbology Barcode symbology\r\n * @param {object} options Configuration object\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n barcode(value, symbology, options) {\r\n const result = [];\r\n\r\n const symbologies = {\r\n 'upca': 0x00,\r\n 'upce': 0x01,\r\n 'ean13': 0x02,\r\n 'ean8': 0x03,\r\n 'code39': 0x04,\r\n 'coda39': 0x04, /* typo, leave here for backwards compatibility */\r\n 'itf': 0x05,\r\n 'interleaved-2-of-5': 0x05,\r\n 'nw-7': 0x06,\r\n 'codabar': 0x06,\r\n 'code93': 0x48,\r\n 'code128': 0x49,\r\n 'gs1-128': 0x48,\r\n 'gs1-databar-omni': 0x4b,\r\n 'gs1-databar-truncated': 0x4c,\r\n 'gs1-databar-limited': 0x4d,\r\n 'gs1-databar-expanded': 0x4e,\r\n 'code128-auto': 0x4f,\r\n };\r\n\r\n if (typeof symbology === 'string' && typeof symbologies[symbology] === 'undefined') {\r\n throw new Error(`Symbology '${symbology}' not supported by language`);\r\n }\r\n\r\n /* Calculate segment width */\r\n\r\n if (options.width < 1 || options.width > 3) {\r\n throw new Error('Width must be between 1 and 3');\r\n }\r\n\r\n let width = options.width + 1;\r\n\r\n if (symbology === 'itf') {\r\n width = options.width * 2;\r\n }\r\n\r\n if (symbology === 'gs1-128' || symbology === 'gs1-databar-omni' ||\r\n symbology === 'gs1-databar-truncated' || symbology === 'gs1-databar-limited' ||\r\n symbology === 'gs1-databar-expanded') {\r\n width = options.width;\r\n }\r\n\r\n /* Set barcode options */\r\n\r\n result.push(\r\n {\r\n type: 'barcode',\r\n property: 'height',\r\n value: options.height,\r\n payload: [0x1d, 0x68, options.height],\r\n },\r\n {\r\n type: 'barcode',\r\n property: 'width',\r\n value: options.width,\r\n payload: [0x1d, 0x77, width],\r\n },\r\n {\r\n type: 'barcode',\r\n property: 'text',\r\n value: options.text,\r\n payload: [0x1d, 0x48, options.text ? 0x02 : 0x00],\r\n },\r\n );\r\n\r\n\r\n /* Encode barcode */\r\n\r\n if (symbology == 'code128' && !value.startsWith('{')) {\r\n value = '{B' + value;\r\n }\r\n\r\n if (symbology == 'gs1-128') {\r\n value = value.replace(/[()*]/g, '');\r\n }\r\n\r\n const bytes = CodepageEncoder.encode(value, 'ascii');\r\n\r\n const identifier = typeof symbology === 'string' ? symbologies[symbology] : symbology;\r\n\r\n if (identifier > 0x40) {\r\n /* Function B symbologies */\r\n\r\n result.push(\r\n {\r\n type: 'barcode',\r\n value: {symbology: symbology, data: value},\r\n payload: [0x1d, 0x6b, identifier, bytes.length, ...bytes],\r\n },\r\n );\r\n } else {\r\n /* Function A symbologies */\r\n\r\n result.push(\r\n {\r\n type: 'barcode',\r\n value: {symbology: symbology, data: value},\r\n payload: [0x1d, 0x6b, identifier, ...bytes, 0x00],\r\n },\r\n );\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Generate a QR code\r\n * @param {string} value Value to encode\r\n * @param {object} options Configuration object\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n qrcode(value, options) {\r\n const result = [];\r\n\r\n /* Model */\r\n\r\n if (typeof options.model === 'number') {\r\n const models = {\r\n 1: 0x31,\r\n 2: 0x32,\r\n };\r\n\r\n if (options.model in models) {\r\n result.push(\r\n {\r\n type: 'qrcode',\r\n property: 'model',\r\n value: options.model,\r\n payload: [0x1d, 0x28, 0x6b, 0x04, 0x00, 0x31, 0x41, models[options.model], 0x00],\r\n },\r\n );\r\n } else {\r\n throw new Error('Model must be 1 or 2');\r\n }\r\n }\r\n\r\n /* Size */\r\n\r\n if (typeof options.size !== 'number') {\r\n throw new Error('Size must be a number');\r\n }\r\n\r\n if (options.size < 1 || options.size > 8) {\r\n throw new Error('Size must be between 1 and 8');\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'qrcode',\r\n property: 'size',\r\n value: options.size,\r\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x31, 0x43, options.size],\r\n },\r\n );\r\n\r\n /* Error level */\r\n\r\n const errorlevels = {\r\n 'l': 0x30,\r\n 'm': 0x31,\r\n 'q': 0x32,\r\n 'h': 0x33,\r\n };\r\n\r\n if (options.errorlevel in errorlevels) {\r\n result.push(\r\n {\r\n type: 'qrcode',\r\n property: 'errorlevel',\r\n value: options.errorlevel,\r\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x31, 0x45, errorlevels[options.errorlevel]],\r\n },\r\n );\r\n } else {\r\n throw new Error('Error level must be l, m, q or h');\r\n }\r\n\r\n /* Data */\r\n\r\n const bytes = CodepageEncoder.encode(value, 'iso8859-1');\r\n const length = bytes.length + 3;\r\n\r\n result.push(\r\n {\r\n type: 'qrcode',\r\n property: 'data',\r\n value,\r\n payload: [0x1d, 0x28, 0x6b, length & 0xff, (length >> 8) & 0xff, 0x31, 0x50, 0x30, ...bytes],\r\n },\r\n );\r\n\r\n /* Print QR code */\r\n\r\n result.push(\r\n {\r\n type: 'qrcode',\r\n command: 'print',\r\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x31, 0x51, 0x30],\r\n },\r\n );\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Generate a PDF417 code\r\n * @param {string} value Value to encode\r\n * @param {object} options Configuration object\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n pdf417(value, options) {\r\n const result = [];\r\n\r\n /* Columns */\r\n\r\n if (typeof options.columns !== 'number') {\r\n throw new Error('Columns must be a number');\r\n }\r\n\r\n if (options.columns !== 0 && (options.columns < 1 || options.columns > 30)) {\r\n throw new Error('Columns must be 0, or between 1 and 30');\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n property: 'columns',\r\n value: options.columns,\r\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x30, 0x41, options.columns],\r\n },\r\n );\r\n\r\n /* Rows */\r\n\r\n if (typeof options.rows !== 'number') {\r\n throw new Error('Rows must be a number');\r\n }\r\n\r\n if (options.rows !== 0 && (options.rows < 3 || options.rows > 90)) {\r\n throw new Error('Rows must be 0, or between 3 and 90');\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n property: 'rows',\r\n value: options.rows,\r\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x30, 0x42, options.rows],\r\n },\r\n );\r\n\r\n /* Width */\r\n\r\n if (typeof options.width !== 'number') {\r\n throw new Error('Width must be a number');\r\n }\r\n\r\n if (options.width < 2 || options.width > 8) {\r\n throw new Error('Width must be between 2 and 8');\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n property: 'width',\r\n value: options.width,\r\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x30, 0x43, options.width],\r\n },\r\n );\r\n\r\n /* Height */\r\n\r\n if (typeof options.height !== 'number') {\r\n throw new Error('Height must be a number');\r\n }\r\n\r\n if (options.height < 2 || options.height > 8) {\r\n throw new Error('Height must be between 2 and 8');\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n property: 'height',\r\n value: options.height,\r\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x30, 0x44, options.height],\r\n },\r\n );\r\n\r\n /* Error level */\r\n\r\n if (typeof options.errorlevel !== 'number') {\r\n throw new Error('Errorlevel must be a number');\r\n }\r\n\r\n if (options.errorlevel < 0 || options.errorlevel > 8) {\r\n throw new Error('Errorlevel must be between 0 and 8');\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n property: 'errorlevel',\r\n value: options.errorlevel,\r\n payload: [0x1d, 0x28, 0x6b, 0x04, 0x00, 0x30, 0x45, 0x30, options.errorlevel + 0x30],\r\n },\r\n );\r\n\r\n /* Model: standard or truncated */\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n property: 'truncated',\r\n value: !!options.truncated,\r\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x30, 0x46, options.truncated ? 0x01 : 0x00],\r\n },\r\n );\r\n\r\n /* Data */\r\n\r\n const bytes = CodepageEncoder.encode(value, 'ascii');\r\n const length = bytes.length + 3;\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n property: 'data',\r\n value,\r\n payload: [0x1d, 0x28, 0x6b, length & 0xff, (length >> 8) & 0xff, 0x30, 0x50, 0x30, ...bytes],\r\n },\r\n );\r\n\r\n /* Print PDF417 code */\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n command: 'print',\r\n payload: [0x1d, 0x28, 0x6b, 0x03, 0x00, 0x30, 0x51, 0x30],\r\n },\r\n );\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Encode an image\r\n * @param {ImageData} image ImageData object\r\n * @param {number} width Width of the image\r\n * @param {number} height Height of the image\r\n * @param {string} mode Image encoding mode ('column' or 'raster')\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n image(image, width, height, mode) {\r\n const result = [];\r\n\r\n const getPixel = (x, y) => x < width && y < height ? (image.data[((width * y) + x) * 4] > 0 ? 0 : 1) : 0;\r\n\r\n const getColumnData = (width, height) => {\r\n const data = [];\r\n\r\n for (let s = 0; s < Math.ceil(height / 24); s++) {\r\n const bytes = new Uint8Array(width * 3);\r\n\r\n for (let x = 0; x < width; x++) {\r\n for (let c = 0; c < 3; c++) {\r\n for (let b = 0; b < 8; b++) {\r\n bytes[(x * 3) + c] |= getPixel(x, (s * 24) + b + (8 * c)) << (7 - b);\r\n }\r\n }\r\n }\r\n\r\n data.push(bytes);\r\n }\r\n\r\n return data;\r\n };\r\n\r\n const getRowData = (width, height) => {\r\n const bytes = new Uint8Array((width * height) >> 3);\r\n\r\n for (let y = 0; y < height; y++) {\r\n for (let x = 0; x < width; x = x + 8) {\r\n for (let b = 0; b < 8; b++) {\r\n bytes[(y * (width >> 3)) + (x >> 3)] |= getPixel(x + b, y) << (7 - b);\r\n }\r\n }\r\n }\r\n\r\n return bytes;\r\n };\r\n\r\n /* Encode images with ESC * */\r\n\r\n if (mode == 'column') {\r\n result.push(\r\n {\r\n type: 'line-spacing',\r\n value: '24 dots',\r\n payload: [0x1b, 0x33, 0x24],\r\n },\r\n );\r\n\r\n getColumnData(width, height).forEach((bytes) => {\r\n result.push(\r\n {\r\n type: 'image',\r\n property: 'data',\r\n value: 'column',\r\n width,\r\n height: 24,\r\n payload: [0x1b, 0x2a, 0x21, width & 0xff, (width >> 8) & 0xff, ...bytes, 0x0a],\r\n },\r\n );\r\n });\r\n\r\n result.push(\r\n {\r\n type: 'line-spacing',\r\n value: 'default',\r\n payload: [0x1b, 0x32],\r\n },\r\n );\r\n }\r\n\r\n /* Encode images with GS v */\r\n\r\n if (mode == 'raster') {\r\n result.push(\r\n {\r\n type: 'image',\r\n command: 'data',\r\n value: 'raster',\r\n width,\r\n height,\r\n payload: [\r\n 0x1d, 0x76, 0x30, 0x00,\r\n (width >> 3) & 0xff, (((width >> 3) >> 8) & 0xff),\r\n height & 0xff, ((height >> 8) & 0xff),\r\n ...getRowData(width, height),\r\n ],\r\n },\r\n );\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Cut the paper\r\n * @param {string} value Cut type ('full' or 'partial')\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n cut(value) {\r\n let data = 0x00;\r\n\r\n if (value == 'partial') {\r\n data = 0x01;\r\n }\r\n\r\n return [\r\n {\r\n type: 'cut',\r\n payload: [0x1d, 0x56, data],\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Send a pulse to the cash drawer\r\n * @param {number} device Device number\r\n * @param {number} on Pulse ON time\r\n * @param {number} off Pulse OFF time\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n pulse(device, on, off) {\r\n if (typeof device === 'undefined') {\r\n device = 0;\r\n }\r\n\r\n if (typeof on === 'undefined') {\r\n on = 100;\r\n }\r\n\r\n if (typeof off === 'undefined') {\r\n off = 500;\r\n }\r\n\r\n on = Math.min(500, Math.round(on / 2));\r\n off = Math.min(500, Math.round(off / 2));\r\n\r\n\r\n return [\r\n {\r\n type: 'pulse',\r\n payload: [0x1b, 0x70, device ? 1 : 0, on & 0xff, off & 0xff],\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Enable or disable bold text\r\n * @param {boolean} value Enable or disable bold text, optional, default toggles between states\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n bold(value) {\r\n let data = 0x00;\r\n\r\n if (value) {\r\n data = 0x01;\r\n }\r\n\r\n return [\r\n 0x1b, 0x45, data,\r\n ];\r\n }\r\n\r\n /**\r\n * Enable or disable underline text\r\n * @param {boolean} value Enable or disable underline text, optional, default toggles between states\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n underline(value) {\r\n let data = 0x00;\r\n\r\n if (value) {\r\n data = 0x01;\r\n }\r\n\r\n return [\r\n 0x1b, 0x2d, data,\r\n ];\r\n }\r\n\r\n /**\r\n * Enable or disable italic text\r\n * @param {boolean} value Enable or disable italic text, optional, default toggles between states\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n italic(value) {\r\n let data = 0x00;\r\n\r\n if (value) {\r\n data = 0x01;\r\n }\r\n\r\n return [\r\n 0x1b, 0x34, data,\r\n ];\r\n }\r\n\r\n /**\r\n * Enable or disable inverted text\r\n * @param {boolean} value Enable or disable inverted text, optional, default toggles between states\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n invert(value) {\r\n let data = 0x00;\r\n\r\n if (value) {\r\n data = 0x01;\r\n }\r\n\r\n return [\r\n 0x1d, 0x42, data,\r\n ];\r\n }\r\n\r\n /**\r\n * Change text size\r\n * @param {number} width Width of the text (1-8)\r\n * @param {number} height Height of the text (1-8)\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n size(width, height) {\r\n return [\r\n 0x1d, 0x21, (height - 1) | (width - 1) << 4,\r\n ];\r\n }\r\n\r\n /**\r\n * Change the codepage\r\n * @param {number} value Codepage value\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n codepage(value) {\r\n return [\r\n 0x1b, 0x74, value,\r\n ];\r\n }\r\n\r\n /**\r\n * Flush the printers line buffer\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n flush() {\r\n return [];\r\n }\r\n}\r\n\r\nexport default LanguageEscPos;\r\n","import CodepageEncoder from '@point-of-sale/codepage-encoder';\r\n\r\n/**\r\n * StarPRNT Language commands\r\n */\r\nclass LanguageStarPrnt {\r\n /**\r\n * Initialize the printer\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n initialize() {\r\n return [\r\n {\r\n type: 'initialize',\r\n payload: [0x1b, 0x40, 0x18],\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Change the font\r\n * @param {string} value Font type ('A', 'B' or 'C')\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n font(value) {\r\n let type = 0x00;\r\n\r\n if (value === 'B') {\r\n type = 0x01;\r\n }\r\n\r\n if (value === 'C') {\r\n type = 0x02;\r\n }\r\n\r\n return [\r\n {\r\n type: 'font',\r\n value,\r\n payload: [0x1b, 0x1e, 0x46, type],\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Change the alignment\r\n * @param {string} value Alignment value ('left', 'center', 'right')\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n align(value) {\r\n let align = 0x00;\r\n\r\n if (value === 'center') {\r\n align = 0x01;\r\n } else if (value === 'right') {\r\n align = 0x02;\r\n }\r\n\r\n return [\r\n {\r\n type: 'align',\r\n value,\r\n payload: [0x1b, 0x1d, 0x61, align],\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Generate a barcode\r\n * @param {string} value Value to encode\r\n * @param {string|number} symbology Barcode symbology\r\n * @param {object} options Configuration object\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n barcode(value, symbology, options) {\r\n const result = [];\r\n\r\n const symbologies = {\r\n 'upce': 0x00,\r\n 'upca': 0x01,\r\n 'ean8': 0x02,\r\n 'ean13': 0x03,\r\n 'code39': 0x04,\r\n 'itf': 0x05,\r\n 'interleaved-2-of-5': 0x05,\r\n 'code128': 0x06,\r\n 'code93': 0x07,\r\n 'nw-7': 0x08,\r\n 'codabar': 0x08,\r\n 'gs1-128': 0x09,\r\n 'gs1-databar-omni': 0x0a,\r\n 'gs1-databar-truncated': 0x0b,\r\n 'gs1-databar-limited': 0x0c,\r\n 'gs1-databar-expanded': 0x0d,\r\n };\r\n\r\n if (typeof symbology === 'string' && typeof symbologies[symbology] === 'undefined') {\r\n throw new Error(`Symbology '${symbology}' not supported by language`);\r\n }\r\n\r\n if (options.width < 1 || options.width > 3) {\r\n throw new Error('Width must be between 1 and 3');\r\n }\r\n\r\n /* Selecting mode A, B or C for Code128 is not supported for StarPRNT, so ignore it and let the printer choose */\r\n\r\n if (symbology === 'code128' && value.startsWith('{')) {\r\n value = value.slice(2);\r\n }\r\n\r\n /* Encode the barcode value */\r\n\r\n const bytes = CodepageEncoder.encode(value, 'ascii');\r\n\r\n const identifier = typeof symbology === 'string' ? symbologies[symbology] : symbology;\r\n\r\n result.push(\r\n {\r\n type: 'barcode',\r\n value: {symbology: symbology, data: value, width: options.width, height: options.height, text: options.text},\r\n payload: [\r\n 0x1b, 0x62,\r\n identifier,\r\n options.text ? 0x02 : 0x01,\r\n options.width,\r\n options.height,\r\n ...bytes, 0x1e,\r\n ],\r\n },\r\n );\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Generate a QR code\r\n * @param {string} value Value to encode\r\n * @param {object} options Configuration object\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n qrcode(value, options) {\r\n const result = [];\r\n\r\n /* Model */\r\n\r\n const models = {\r\n 1: 0x01,\r\n 2: 0x02,\r\n };\r\n\r\n if (options.model in models) {\r\n result.push(\r\n {\r\n type: 'qrcode',\r\n property: 'model',\r\n value: options.model,\r\n payload: [0x1b, 0x1d, 0x79, 0x53, 0x30, models[options.model]],\r\n },\r\n );\r\n } else {\r\n throw new Error('Model must be 1 or 2');\r\n }\r\n\r\n /* Size */\r\n\r\n if (typeof options.size !== 'number') {\r\n throw new Error('Size must be a number');\r\n }\r\n\r\n if (options.size < 1 || options.size > 8) {\r\n throw new Error('Size must be between 1 and 8');\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'qrcode',\r\n property: 'size',\r\n value: options.size,\r\n payload: [0x1b, 0x1d, 0x79, 0x53, 0x32, options.size],\r\n },\r\n );\r\n\r\n /* Error level */\r\n\r\n const errorlevels = {\r\n 'l': 0x00,\r\n 'm': 0x01,\r\n 'q': 0x02,\r\n 'h': 0x03,\r\n };\r\n\r\n if (options.errorlevel in errorlevels) {\r\n result.push(\r\n {\r\n type: 'qrcode',\r\n property: 'errorlevel',\r\n value: options.errorlevel,\r\n payload: [0x1b, 0x1d, 0x79, 0x53, 0x31, errorlevels[options.errorlevel]],\r\n },\r\n );\r\n } else {\r\n throw new Error('Error level must be l, m, q or h');\r\n }\r\n\r\n /* Data */\r\n\r\n const bytes = CodepageEncoder.encode(value, 'iso8859-1');\r\n const length = bytes.length;\r\n\r\n result.push(\r\n {\r\n type: 'qrcode',\r\n property: 'data',\r\n value,\r\n payload: [\r\n 0x1b, 0x1d, 0x79, 0x44, 0x31, 0x00,\r\n length & 0xff, (length >> 8) & 0xff,\r\n ...bytes,\r\n ],\r\n },\r\n );\r\n\r\n /* Print QR code */\r\n\r\n result.push(\r\n {\r\n type: 'qrcode',\r\n command: 'print',\r\n payload: [0x1b, 0x1d, 0x79, 0x50],\r\n },\r\n );\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Generate a PDF417 code\r\n * @param {string} value Value to encode\r\n * @param {object} options Configuration object\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n pdf417(value, options) {\r\n const result = [];\r\n\r\n /* Columns and Rows */\r\n\r\n if (typeof options.columns !== 'number') {\r\n throw new Error('Columns must be a number');\r\n }\r\n\r\n if (options.columns !== 0 && (options.columns < 1 || options.columns > 30)) {\r\n throw new Error('Columns must be 0, or between 1 and 30');\r\n }\r\n\r\n if (typeof options.rows !== 'number') {\r\n throw new Error('Rows must be a number');\r\n }\r\n\r\n if (options.rows !== 0 && (options.rows < 3 || options.rows > 90)) {\r\n throw new Error('Rows must be 0, or between 3 and 90');\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n value: `rows: ${options.rows}, columns: ${options.columns}`,\r\n payload: [0x1b, 0x1d, 0x78, 0x53, 0x30, 0x01, options.rows, options.columns],\r\n },\r\n );\r\n\r\n /* Width */\r\n\r\n if (typeof options.width !== 'number') {\r\n throw new Error('Width must be a number');\r\n }\r\n\r\n if (options.width < 2 || options.width > 8) {\r\n throw new Error('Width must be between 2 and 8');\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n property: 'width',\r\n value: options.width,\r\n payload: [0x1b, 0x1d, 0x78, 0x53, 0x32, options.width],\r\n },\r\n );\r\n\r\n /* Height */\r\n\r\n if (typeof options.height !== 'number') {\r\n throw new Error('Height must be a number');\r\n }\r\n\r\n if (options.height < 2 || options.height > 8) {\r\n throw new Error('Height must be between 2 and 8');\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n property: 'height',\r\n value: options.height,\r\n payload: [0x1b, 0x1d, 0x78, 0x53, 0x33, options.height],\r\n },\r\n );\r\n\r\n /* Error level */\r\n\r\n if (typeof options.errorlevel !== 'number') {\r\n throw new Error('Errorlevel must be a number');\r\n }\r\n\r\n if (options.errorlevel < 0 || options.errorlevel > 8) {\r\n throw new Error('Errorlevel must be between 0 and 8');\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n property: 'errorlevel',\r\n value: options.errorlevel,\r\n payload: [0x1b, 0x1d, 0x78, 0x53, 0x31, options.errorlevel],\r\n },\r\n );\r\n\r\n /* Data */\r\n\r\n const bytes = CodepageEncoder.encode(value, 'ascii');\r\n const length = bytes.length;\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n property: 'data',\r\n value,\r\n payload: [\r\n 0x1b, 0x1d, 0x78, 0x44,\r\n length & 0xff, (length >> 8) & 0xff,\r\n ...bytes,\r\n ],\r\n },\r\n );\r\n\r\n /* Print PDF417 code */\r\n\r\n result.push(\r\n {\r\n type: 'pdf417',\r\n command: 'print',\r\n payload: [0x1b, 0x1d, 0x78, 0x50],\r\n },\r\n );\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Encode an image\r\n * @param {ImageData} image ImageData object\r\n * @param {number} width Width of the image\r\n * @param {number} height Height of the image\r\n * @param {string} mode Image encoding mode (value is ignored)\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n image(image, width, height, mode) {\r\n const result = [];\r\n\r\n const getPixel = (x, y) => typeof image.data[((width * y) + x) * 4] === 'undefined' ||\r\n image.data[((width * y) + x) * 4] > 0 ? 0 : 1;\r\n\r\n result.push(\r\n {\r\n type: 'line-spacing',\r\n value: '24 dots',\r\n payload: [0x1b, 0x30],\r\n },\r\n );\r\n\r\n for (let s = 0; s < height / 24; s++) {\r\n const y = s * 24;\r\n const bytes = new Uint8Array(width * 3);\r\n\r\n for (let x = 0; x < width; x++) {\r\n const i = x * 3;\r\n\r\n bytes[i] =\r\n getPixel(x, y + 0) << 7 |\r\n getPixel(x, y + 1) << 6 |\r\n getPixel(x, y + 2) << 5 |\r\n getPixel(x, y + 3) << 4 |\r\n getPixel(x, y + 4) << 3 |\r\n getPixel(x, y + 5) << 2 |\r\n getPixel(x, y + 6) << 1 |\r\n getPixel(x, y + 7);\r\n\r\n bytes[i + 1] =\r\n getPixel(x, y + 8) << 7 |\r\n getPixel(x, y + 9) << 6 |\r\n getPixel(x, y + 10) << 5 |\r\n getPixel(x, y + 11) << 4 |\r\n getPixel(x, y + 12) << 3 |\r\n getPixel(x, y + 13) << 2 |\r\n getPixel(x, y + 14) << 1 |\r\n getPixel(x, y + 15);\r\n\r\n bytes[i + 2] =\r\n getPixel(x, y + 16) << 7 |\r\n getPixel(x, y + 17) << 6 |\r\n getPixel(x, y + 18) << 5 |\r\n getPixel(x, y + 19) << 4 |\r\n getPixel(x, y + 20) << 3 |\r\n getPixel(x, y + 21) << 2 |\r\n getPixel(x, y + 22) << 1 |\r\n getPixel(x, y + 23);\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'image',\r\n property: 'data',\r\n value: 'column',\r\n width,\r\n height: 24,\r\n payload: [\r\n 0x1b, 0x58,\r\n width & 0xff, (width >> 8) & 0xff,\r\n ...bytes,\r\n 0x0a, 0x0d,\r\n ],\r\n },\r\n );\r\n }\r\n\r\n result.push(\r\n {\r\n type: 'line-spacing',\r\n value: 'default',\r\n payload: [0x1b, 0x7a, 0x01],\r\n },\r\n );\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Cut the paper\r\n * @param {string} value Cut type ('full' or 'partial')\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n cut(value) {\r\n let data = 0x00;\r\n\r\n if (value == 'partial') {\r\n data = 0x01;\r\n }\r\n\r\n return [\r\n {\r\n type: 'cut',\r\n payload: [0x1b, 0x64, data],\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Send a pulse to the cash drawer\r\n * @param {number} device Device number\r\n * @param {number} on Pulse ON time\r\n * @param {number} off Pulse OFF time\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n pulse(device, on, off) {\r\n if (typeof device === 'undefined') {\r\n device = 0;\r\n }\r\n\r\n if (typeof on === 'undefined') {\r\n on = 200;\r\n }\r\n\r\n if (typeof off === 'undefined') {\r\n off = 200;\r\n }\r\n\r\n on = Math.min(127, Math.round(on / 10));\r\n off = Math.min(127, Math.round(off / 10));\r\n\r\n return [\r\n {\r\n type: 'pulse',\r\n payload: [0x1b, 0x07, on & 0xff, off & 0xff, device ? 0x1a : 0x07],\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Enable or disable bold text\r\n * @param {boolean} value Enable or disable bold text, optional, default toggles between states\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n bold(value) {\r\n let data = 0x46;\r\n\r\n if (value) {\r\n data = 0x45;\r\n }\r\n\r\n return [\r\n 0x1b, data,\r\n ];\r\n }\r\n\r\n /**\r\n * Enable or disable underline text\r\n * @param {boolean} value Enable or disable underline text, optional, default toggles between states\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n underline(value) {\r\n let data = 0x00;\r\n\r\n if (value) {\r\n data = 0x01;\r\n }\r\n\r\n return [\r\n 0x1b, 0x2d, data,\r\n ];\r\n }\r\n\r\n /**\r\n * Enable or disable italic text\r\n * @param {boolean} value Enable or disable italic text, optional, default toggles between states\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n italic(value) {\r\n return [];\r\n }\r\n\r\n /**\r\n * Enable or disable inverted text\r\n * @param {boolean} value Enable or disable inverted text, optional, default toggles between states\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n invert(value) {\r\n let data = 0x35;\r\n\r\n if (value) {\r\n data = 0x34;\r\n }\r\n\r\n return [\r\n 0x1b, data,\r\n ];\r\n }\r\n\r\n /**\r\n * Change text size\r\n * @param {number} width Width of the text (1-8)\r\n * @param {number} height Height of the text (1-8)\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n size(width, height) {\r\n return [\r\n 0x1b, 0x69, height - 1, width - 1,\r\n ];\r\n }\r\n\r\n /**\r\n * Change the codepage\r\n * @param {number} value Codepage value\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n codepage(value) {\r\n return [\r\n 0x1b, 0x1d, 0x74, value,\r\n ];\r\n }\r\n\r\n /**\r\n * Flush the printers line buffer\r\n * @return {Array} Array of bytes to send to the printer\r\n */\r\n flush() {\r\n return [\r\n {\r\n type: 'print-mode',\r\n value: 'page',\r\n payload: [0x1b, 0x1d, 0x50, 0x30],\r\n },\r\n {\r\n type: 'print-mode',\r\n value: 'line',\r\n payload: [0x1b, 0x1d, 0x50, 0x31],\r\n },\r\n ];\r\n }\r\n}\r\n\r\nexport default LanguageStarPrnt;\r\n","\r\n/**\r\n * Store and manage text styles\r\n */\r\nclass TextStyle {\r\n #default = {\r\n bold: false,\r\n italic: false,\r\n underline: false,\r\n invert: false,\r\n width: 1,\r\n height: 1,\r\n };\r\n\r\n #current;\r\n #callback;\r\n\r\n /**\r\n * Create a new TextStyle object\r\n *\r\n * @param {object} options Object containing configuration options\r\n */\r\n constructor(options) {\r\n this.#current = structuredClone(this.#default);\r\n this.#callback = options.callback || (() => {});\r\n }\r\n\r\n /**\r\n * Return commands to get to the default style from the current style\r\n *\r\n * @return {array} Array of modified properties\r\n */\r\n store() {\r\n const result = [];\r\n\r\n const properties = new Map();\r\n\r\n for (const property in this.#current) {\r\n if (this.#current[property] !== this.#default[property]) {\r\n if (property === 'width' || property === 'height') {\r\n properties.set('size', {width: this.#default.width, height: this.#default.height});\r\n } else {\r\n properties.set(property, this.#default[property]);\r\n }\r\n }\r\n }\r\n\r\n for (const property of properties) {\r\n result.push({\r\n type: 'style',\r\n property: property[0],\r\n value: property[1],\r\n });\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Return commands to get to the current style from the default style\r\n *\r\n * @return {array} Array of modified properties\r\n */\r\n restore() {\r\n const result = [];\r\n\r\n const properties = new Map();\r\n\r\n for (const property in this.#current) {\r\n if (this.#current[property] !== this.#default[property]) {\r\n if (property === 'width' || property === 'height') {\r\n properties.set('size', {width: this.#current.width, height: this.#current.height});\r\n } else {\r\n properties.set(property, this.#current[property]);\r\n }\r\n }\r\n }\r\n\r\n for (const property of properties) {\r\n result.push({\r\n type: 'style',\r\n property: property[0],\r\n value: property[1],\r\n });\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Set the bold property\r\n *\r\n * @param {boolean} value Is bold enabled, or not?\r\n */\r\n set bold(value) {\r\n if (value !== this.#current.bold) {\r\n this.#current.bold = value;\r\n\r\n this.#callback({\r\n type: 'style',\r\n property: 'bold',\r\n value,\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Get the bold property\r\n *\r\n * @return {boolean} Is bold enabled, or not?\r\n */\r\n get bold() {\r\n return this.#current.bold;\r\n }\r\n\r\n /**\r\n * Set the italic property\r\n *\r\n * @param {boolean} value Is italic enabled, or not?\r\n */\r\n set italic(value) {\r\n if (value !== this.#current.italic) {\r\n this.#current.italic = value;\r\n\r\n this.#callback({\r\n type: 'style',\r\n property: 'italic',\r\n value,\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Get the italic property\r\n *\r\n * @return {boolean} Is italic enabled, or not?\r\n */\r\n get italic() {\r\n return this.#current.italic;\r\n }\r\n\r\n /**\r\n * Set the underline property\r\n *\r\n * @param {boolean} value Is underline enabled, or not?\r\n */\r\n set underline(value) {\r\n if (value !== this.#current.underline) {\r\n this.#current.underline = value;\r\n\r\n this.#callback({\r\n type: 'style',\r\n property: 'underline',\r\n value,\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Get the underline property\r\n *\r\n * @return {boolean} Is underline enabled, or not?\r\n */\r\n get underline() {\r\n return this.#current.underline;\r\n }\r\n\r\n /**\r\n * Set the invert property\r\n *\r\n * @param {boolean} value Is invert enabled, or not?\r\n */\r\n set invert(value) {\r\n if (value !== this.#current.invert) {\r\n this.#current.invert = value;\r\n\r\n this.#callback({\r\n type: 'style',\r\n property: 'invert',\r\n value,\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Get the invert property\r\n *\r\n * @return {boolean} Is invert enabled, or not?\r\n */\r\n get invert() {\r\n return this.#current.invert;\r\n }\r\n\r\n /**\r\n * Set the width property\r\n *\r\n * @param {number} value The width of a character\r\n */\r\n set width(value) {\r\n if (value !== this.#current.width) {\r\n this.#current.width = value;\r\n\r\n this.#callback({\r\n type: 'style',\r\n property: 'size',\r\n value: {width: this.#current.width, height: this.#current.height},\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Get the width property\r\n *\r\n * @return {number} The width of a character\r\n */\r\n get width() {\r\n return this.#current.width;\r\n }\r\n\r\n /**\r\n * Set the height property\r\n *\r\n * @param {number} value The height of a character\r\n */\r\n set height(value) {\r\n if (value !== this.#current.height) {\r\n this.#current.height = value;\r\n\r\n this.#callback({\r\n type: 'style',\r\n property: 'size',\r\n value: {width: this.#current.width, height: this.#current.height},\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Get the height property\r\n *\r\n * @return {number} The height of a character\r\n */\r\n get height() {\r\n return this.#current.height;\r\n }\r\n}\r\n\r\nexport default TextStyle;\r\n","\r\n/**\r\n * Wrap text into lines of a specified width.\r\n */\r\nclass TextWrap {\r\n /**\r\n * Static function to wrap text into lines of a specified width.\r\n *\r\n * @param {string} value Text to wrap\r\n * @param {object} options Object containing configuration options\r\n * @return {array} Array of lines\r\n */\r\n static wrap(value, options) {\r\n const result = [];\r\n let line = [];\r\n let length = options.indent || 0;\r\n const width = options.width || 1;\r\n const columns = options.columns || 42;\r\n\r\n const lines = String(value).split(/\\r\\n|\\n/g);\r\n\r\n for (const value of lines) {\r\n const chunks = value.match(/[^\\s-]+?-\\b|\\S+|\\s+|\\r\\n?|\\n/g) || ['~~empty~~'];\r\n\r\n for (const chunk of chunks) {\r\n if (chunk === '~~empty~~') {\r\n result.push(line);\r\n line = [];\r\n length = 0;\r\n continue;\r\n }\r\n\r\n /* The word does not fit on the line */\r\n\r\n if (length + (chunk.length * width) > columns) {\r\n /* The word is longer than the line */\r\n\r\n if (chunk.length * width > columns) {\r\n /* Calculate the remaining space on the line */\r\n\r\n const remaining = columns - length;\r\n\r\n /* Split the word into pieces */\r\n\r\n const letters = chunk.split('');\r\n let piece;\r\n const pieces = [];\r\n\r\n /* If there are at least 8 position remaining, break early */\r\n\r\n if (remaining > 8 * width) {\r\n piece = letters.splice(0, Math.floor(remaining / width)).join('');\r\n\r\n line.push(piece);\r\n result.push(line);\r\n\r\n line = [];\r\n length = 0;\r\n }\r\n\r\n /* The remaining letters can be split into pieces the size of the width */\r\n\r\n while ((piece = letters.splice(0, Math.floor(columns / width))).length) {\r\n pieces.push(piece.join(''));\r\n }\r\n\r\n for (const piece of pieces) {\r\n if (length + (piece.length * width) > columns) {\r\n result.push(line);\r\n line = [];\r\n length = 0;\r\n }\r\n\r\n line.push(piece);\r\n length += piece.length * width;\r\n }\r\n\r\n continue;\r\n }\r\n\r\n /* Word fits on the next line */\r\n result.push(line);\r\n line = [];\r\n length = 0;\r\n }\r\n\r\n /* Check if we are whitespace */\r\n\r\n if (chunk.match(/\\s+/) && length == 0) {\r\n continue;\r\n }\r\n\r\n line.push(chunk);\r\n length += chunk.length * width;\r\n }\r\n\r\n if (line.length > 0) {\r\n result.push(line);\r\n line = [];\r\n length = 0;\r\n }\r\n }\r\n\r\n for (let i = 0; i < result.length; i++) {\r\n result[i] = result[i].join('');\r\n\r\n if (i < result.length - 1) {\r\n result[i] = result[i].trimEnd();\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n\r\nexport default TextWrap;\r\n","import TextStyle from './text-style.js';\r\nimport TextWrap from './text-wrap.js';\r\n\r\n/**\r\n * Compose lines of text and commands\r\n */\r\nclass LineComposer {\r\n #embedded;\r\n #columns;\r\n #align;\r\n #callback;\r\n\r\n #cursor = 0;\r\n #stored;\r\n #buffer = [];\r\n\r\n\r\n /**\r\n * Create a new LineComposer object\r\n *\r\n * @param {object} options Object containing configuration options\r\n */\r\n constructor(options) {\r\n this.#embedded = options.embedded || false;\r\n this.#columns = options.columns || 42;\r\n this.#align = options.align || 'left';\r\n this.#callback = options.callback || (() => {});\r\n\r\n this.style = new TextStyle({\r\n callback: (value) => {\r\n this.add(value, 0);\r\n },\r\n });\r\n\r\n this.#stored = this.style.store();\r\n }\r\n\r\n /**\r\n * Add text to the line, potentially wrapping it\r\n *\r\n * @param {string} value Text to add to the line\r\n * @param {number} codepage Codepage to use for the text\r\n */\r\n text(value, codepage) {\r\n const lines = TextWrap.wrap(value, {columns: this.#columns, width: this.style.width, indent: this.#cursor});\r\n\r\n for (let i = 0; i < lines.length; i++) {\r\n if (lines[i].length) {\r\n /* Add the line to the buffer */\r\n this.add({type: 'text', value: lines[i], codepage}, lines[i].length * this.style.width);\r\n\r\n /* If it is not the last line, flush the buffer */\r\n if (i < lines.length - 1) {\r\n this.flush();\r\n }\r\n } else {\r\n /* In case the line is empty, flush the buffer */\r\n this.flush({forceNewline: true});\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Add spaces to the line\r\n *\r\n * @param {number} size Number of spaces to add to the line\r\n */\r\n space(size) {\r\n this.add({type: 'space', size}, size);\r\n }\r\n\r\n /**\r\n * Add raw bytes to to the line\r\n *\r\n * @param {array} value Array of bytes to add to the line\r\n * @param {number} length Length in characters of the value\r\n */\r\n raw(value, length) {\r\n this.add({type: 'raw', payload: value}, length || 0);\r\n }\r\n\r\n /**\r\n * Add an item to the line buffer, potentially flushing it\r\n *\r\n * @param {object} value Item to add to the line buffer\r\n * @param {number} length Length in characters of the value\r\n */\r\n add(value, length) {\r\n if (value instanceof Array) {\r\n for (const item of value) {\r\n this.add(item);\r\n }\r\n\r\n this.#cursor += length || 0;\r\n return;\r\n }\r\n\r\n length = length || 0;\r\n\r\n if (length + this.#cursor > this.#columns) {\r\n this.flush();\r\n }\r\n\r\n this.#cursor += length;\r\n this.#buffer = this.#buffer.concat(value);\r\n }\r\n\r\n /**\r\n * Move the cursor to the end of the line, forcing a flush\r\n * with the next item to add to the line buffer\r\n */\r\n end() {\r\n this.#cursor = this.#columns;\r\n }\r\n\r\n /**\r\n * Fetch the contents of line buffer\r\n *\r\n * @param {options} options Options for flushing the buffer\r\n * @return {array} Array of items in the line buffer\r\n */\r\n fetch(options) {\r\n /* Unless forced keep style changes for the next line */\r\n\r\n if (this.#cursor === 0 && !options.forceNewline && !options.forceFlush) {\r\n return [];\r\n }\r\n\r\n /* Check the alignment of the current line */\r\n\r\n const align = {\r\n current: this.#align,\r\n next: null,\r\n };\r\n\r\n for (let i = 0; i < this.#buffer.length - 1; i++) {\r\n if (this.#buffer[i].type === 'align' && !this.#buffer[i].payload) {\r\n align.current = this.#buffer[i].value;\r\n }\r\n }\r\n\r\n /* Check the last item in the buffer, to see if it changes the alignment, then save it for the next line */\r\n\r\n if (this.#buffer.length) {\r\n const last = this.#buffer[this.#buffer.length - 1];\r\n\r\n if (last.type === 'align' && !last.payload) {\r\n align.next = last.value;\r\n }\r\n }\r\n\r\n this.#align = align.current;\r\n\r\n /* Create a clean buffer without alignment changes */\r\n\r\n const buffer = this.#buffer.filter((item) => item.type !== 'align' || item.payload);\r\n\r\n /* Fetch the contents of the line buffer */\r\n\r\n let result = [];\r\n\r\n const restore = this.style.restore();\r\n const store = this.style.store();\r\n\r\n if (this.#cursor === 0 && (options.ignoreAlignment || !this.#embedded)) {\r\n result = this.#merge([\r\n ...this.#stored,\r\n ...buffer,\r\n ...store,\r\n ]);\r\n } else {\r\n if (this.#align === 'right') {\r\n let last;\r\n\r\n /* Find index of last text or space element */\r\n\r\n for (let i = buffer.length - 1; i >= 0; i--) {\r\n if (buffer[i].type === 'text' || buffer[i].type === 'space') {\r\n last = i;\r\n break;\r\n }\r\n }\r\n\r\n /* Remove trailing spaces from lines */\r\n\r\n if (typeof last === 'number') {\r\n if (buffer[last].type === 'space' && buffer[last].size > this.style.width) {\r\n buffer[last].size -= this.style.width;\r\n this.#cursor -= this.style.width;\r\n }\r\n\r\n if (buffer[last].type === 'text' && buffer[last].value.endsWith(' ')) {\r\n buffer[last].value = buffer[last].value.slice(0, -1);\r\n this.#cursor -= this.style.width;\r\n }\r\n }\r\n\r\n result = this.#merge([\r\n {type: 'space', size: this.#columns - this.#cursor},\r\n ...this.#stored,\r\n ...buffer,\r\n ...store,\r\n ]);\r\n }\r\n\r\n if (this.#align === 'center') {\r\n const left = (this.#columns - this.#cursor) >> 1;\r\n\r\n result = this.#merge([\r\n {type: 'space', size: left},\r\n ...this.#stored,\r\n ...buffer,\r\n ...store,\r\n {type: 'space', size: this.#embedded ? this.#columns - this.#cursor - left : 0},\r\n ]);\r\n }\r\n\r\n if (this.#align === 'left') {\r\n result = this.#merge([\r\n ...this.#stored,\r\n ...buffer,\r\n ...store,\r\n {type: 'space', size: this.#embedded ? this.#columns - this.#cursor : 0},\r\n ]);\r\n }\r\n }\r\n\r\n this.#stored = restore;\r\n this.#buffer = [];\r\n this.#cursor = 0;\r\n\r\n if (result.length === 0 && options.forceNewline) {\r\n result.push({type: 'empty'});\r\n }\r\n\r\n if (align.next) {\r\n this.#align = align.next;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Flush the contents of the line buffer\r\n *\r\n * @param {options} options Options for flushing the buffer\r\n */\r\n flush(options) {\r\n options = Object.assign({\r\n forceNewline: false,\r\n forceFlush: false,\r\n ignoreAlignment: false,\r\n }, options || {});\r\n\r\n const result = this.fetch(options);\r\n\r\n if (result.length) {\r\n this.#callback(result);\r\n }\r\n }\r\n\r\n /**\r\n * Merge text items and spaces in the line buffer\r\n *\r\n * @param {array} items Array of items\r\n * @return {array} Array of merged items\r\n */\r\n #merge(items) {\r\n const result = [];\r\n let last = -1;\r\n\r\n for (let item of items) {\r\n if (item.type === 'space') {\r\n if (item.size === 0) {\r\n continue;\r\n }\r\n\r\n item = {type: 'text', value: ' '.repeat(item.size), codepage: null};\r\n }\r\n\r\n if (item.type === 'text') {\r\n /* Check if we can merge the text with the last item */\r\n\r\n const allowMerge =\r\n last >= 0 &&\r\n result[last].type === 'text' &&\r\n (\r\n result[last].codepage === item.codepage ||\r\n result[last].codepage === null ||\r\n item.codepage === null\r\n );\r\n\r\n if (allowMerge) {\r\n result[last].value += item.value;\r\n result[last].codepage = result[last].codepage || item.codepage;\r\n continue;\r\n }\r\n\r\n result.push(item);\r\n last++;\r\n } else if (item.type === 'style' && item.property === 'size') {\r\n const allowMerge =\r\n last >= 0 &&\r\n result[last].type === 'style' &&\r\n result[last].property === 'size';\r\n\r\n if (allowMerge) {\r\n result[last].value = item.value;\r\n continue;\r\n }\r\n\r\n result.push(item);\r\n last++;\r\n } else {\r\n result.push(item);\r\n last++;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Get the current position of the cursor\r\n *\r\n * @return {number} Current position of the cursor\r\n */\r\n get cursor() {\r\n return this.#cursor;\r\n }\r\n\r\n /**\r\n * Set the alignment of the current line\r\n *\r\n * @param {string} value Text alignment, can be 'left', 'center', or 'right'\r\n */\r\n set align(value) {\r\n this.add({type: 'align', value}, 0);\r\n }\r\n\r\n /**\r\n * Get the alignment of the current line\r\n *\r\n * @return {string} Text alignment, can be 'left', 'center', or 'right'\r\n */\r\n get align() {\r\n let align = this.#align;\r\n\r\n for (let i = 0; i < this.#buffer.length; i++) {\r\n if (this.#buffer[i].type === 'align') {\r\n align = this.#buffer[i].value;\r\n }\r\n }\r\n\r\n return align;\r\n }\r\n\r\n /**\r\n * Set the number of columns of the current line\r\n *\r\n * @param {number} value columns of the line\r\n */\r\n set columns(value) {\r\n this.#columns = value;\r\n }\r\n\r\n /**\r\n * Get the number of columns of the current line\r\n *\r\n * @return {number} columns of the line\r\n */\r\n get columns() {\r\n return this.#columns;\r\n }\r\n}\r\n\r\nexport default LineComposer;\r\n","const codepageMappings = {\n\t'esc-pos': {\n\t\t'bixolon/legacy': ['cp437','epson/katakana','cp850','cp860','cp863','cp865',,,,,,,,,,,,,,'cp858'],\n\t\t'bixolon': ['cp437','epson/katakana','cp850','cp860','cp863','cp865',,,,,,,,,,,'windows1252','cp866','cp852','cp858',,'cp862','cp864','thai42','windows1253','windows1254','windows1257',,'windows1251','cp737','cp775','thai14','bixolon/hebrew','windows1255','thai11','thai18','cp885','cp857','iso8859-7','thai16','windows1256','windows1258','khmer',,,,'bixolon/cp866','windows1250',,'tcvn3','tcvn3capitals','viscii'],\n\t\t'citizen': ['cp437','epson/katakana','cp858','cp860','cp863','cp865','cp852','cp866','cp857',,,,,,,,'windows1252',,,,,'thai11',,,,,'thai13',,,,'tcvn3','tcvn3capitals','windows1258',,,,,,,,'cp864'],\n\t\t'epson/legacy': ['cp437','epson/katakana','cp850','cp860','cp863','cp865',,,,,,,,,,,'windows1252','cp866','cp852','cp858'],\n\t\t'epson': ['cp437','epson/katakana','cp850','cp860','cp863','cp865',,,,,,'cp851','cp853','cp857','cp737','iso8859-7','windows1252','cp866','cp852','cp858','thai42','thai11',,,,,'thai13',,,,'tcvn3','tcvn3capitals','cp720','cp775','cp855','cp861','cp862','cp864','cp869','epson/iso8859-2','iso8859-15','cp1098','cp774','cp772','cp1125','windows1250','windows1251','windows1253','windows1254','windows1255','windows1256','windows1257','windows1258','rk1048'],\n\t\t'fujitsu': ['cp437','epson/katakana','cp850','cp860','cp863','cp865',,,'cp857',,,,,,,,'windows1252','cp866','cp852','cp858',,,,,,,'thai13',,,,,,,,,,,,,,'cp864'],\n\t\t'hp': ['cp437','cp850','cp852','cp860','cp863','cp865','cp858','cp866','windows1252','cp862','cp737','cp874','cp857','windows1251','windows1255','rk1048'],\n\t\t'metapace': ['cp437','epson/katakana','cp850','cp860','cp863','cp865',,,,,,,,,,,,,,'cp858'],\n\t\t'mpt': ['cp437',,'cp850','cp860','cp863','cp865','windows1251','cp866','cp3021','cp3012'],\n\t\t'pos-5890': ['cp437','epson/katakana','cp850','cp860','cp863','cp865','iso8859-1',,'cp862',,,,,,,,'windows1252','cp866','cp852','cp858',,,,'windows1251','cp737','windows1257',,'windows1258','cp864',,,,'windows1255',,,,,,,,,,,,,,,,,,,,,,,,'cp861',,,,'cp855','cp857',,,,'cp851','cp869',,'cp772','cp774',,,'windows1250',,'cp3840',,'cp3843','cp3844','cp3845','cp3846','cp3847','cp3848',,'cp771','cp3001','cp3002','cp3011','cp3012',,'cp3041','windows1253','windows1254','windows1256','cp720',,'cp775'],\n\t\t'pos-8360': ['cp437','epson/katakana','cp850','cp860','cp863','cp865','iso8859-1','windows1253','cp862',,,,,,,,'windows1252','cp866','cp852','cp858',,'latvian',,'windows1251','cp737','windows1257',,'windows1258','cp864',,,'pos8360/hebrew','windows1255',,,,,,,,,,,,,,,,,,,,,,,,'cp861',,,,'cp855','cp857',,,,'cp851','cp869',,'cp772','cp774',,,'windows1250',,'cp3840',,'cp3843','cp3844','cp3845','cp3846','cp3847','cp3848',,'cp771','cp3001','cp3002','cp3011','cp3012',,,,'windows1254','windows1256','cp720',,'cp775'],\n\t\t'star': ['cp437','star/katakana','cp850','cp860','cp863','cp865',,,,,,,,,,,'windows1252','cp866','cp852','cp858','thai42','thai11','thai13','thai14','thai16',,'thai18'],\n\t\t'xprinter': ['cp437','epson/katakana','cp850','cp860','cp863','cp865','iso8859-1','windows1253','xprinter/hebrew','cp3012',,'windows1255',,,,,'windows1252','cp866','cp852','cp858',,'latvian','cp864','windows1251','cp737','windows1257',,,,,,,,'windows1256'],\n\t\t'youku': ['cp437','epson/katakana','cp850','cp860','cp863','cp865','windows1251','cp866','cp3021','cp3012',,,,,,'cp862','windows1252',,'cp852','cp858',,,'cp864','iso8859-1','cp737','windows1257',,,'cp855','cp857','windows1250','cp775','windows1254','windows1255','windows1256','windows1258',,,'iso8859-1',,,,,,'iso8859-15',,,'cp874'],\n\t},\n\t'star-prnt': {\n\t\t'star': ['star/standard','cp437','star/katakana',,'cp858','cp852','cp860','cp861','cp863','cp865','cp866','cp855','cp857','cp862','cp864','cp737','cp851','cp869','star/cp928','cp772','cp774','star/cp874',,,,,,,,,,,'windows1252','windows1250','windows1251',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'cp3840','cp3841','cp3843','cp3844','cp3845','cp3846','cp3847','cp3848','cp1001','cp771','cp3001','cp3002','cp3011','cp3012','cp3021','cp3041'],\n\t}\n};\n\ncodepageMappings['star-line'] = codepageMappings['star-prnt'];\ncodepageMappings['esc-pos']['zijang'] = codepageMappings['esc-pos']['pos-5890'];\n\nexport default codepageMappings;\n","const printerDefinitions = {\n\t'bixolon-srp350': {vendor:'Bixolon',model:'SRP-350',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'bixolon/legacy',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:false,models:[]},pdf417:{supported:false},cutter:{feed:4}}},\n\t'bixolon-srp350iii': {vendor:'Bixolon',model:'SRP-350III',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'bixolon',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56},C:{size:'9x24',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'citizen-ct-s310ii': {vendor:'Citizen',model:'CT-S310II',media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'citizen',fonts:{A:{size:'12x24',columns:48},B:{size:'9x24',columns:64},C:{size:'8x16',columns:72}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:3}}},\n\t'epson-tm-m30ii': {vendor:'Epson',model:'TM-m30II',interfaces:{usb:{productName:'TM-m30II'}},media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:48},B:{size:'10x24',columns:57},C:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded','code128-auto']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-m30iii': {vendor:'Epson',model:'TM-m30III',interfaces:{usb:{productName:'TM-m30III'}},media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:48},B:{size:'10x24',columns:57},C:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded','code128-auto']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-p20ii': {vendor:'Epson',model:'TM-P20II',media:{dpi:203,width:58},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:32},B:{size:'9x24',columns:42},C:{size:'9x17',columns:42},D:{size:'10x24',columns:38},E:{size:'8x16',columns:48}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded','code128-auto']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},images:{mode:'raster'},cutter:{feed:3}}},\n\t'epson-tm-t20ii': {vendor:'Epson',model:'TM-T20II',interfaces:{usb:{productName:'TM-T20II'}},media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t20iii': {vendor:'Epson',model:'TM-T20III',interfaces:{usb:{productName:'TM-T20III'}},media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t20iv': {vendor:'Epson',model:'TM-T20IV',interfaces:{usb:{productName:'TM-T20IV'}},media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded','code128-auto']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t70': {vendor:'Epson',model:'TM-T70',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson/legacy',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},images:{mode:'raster'},cutter:{feed:4}}},\n\t'epson-tm-t70ii': {vendor:'Epson',model:'TM-T70II','interface':{usb:{productName:'TM-T70II'}},media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},images:{mode:'raster'},cutter:{feed:4}}},\n\t'epson-tm-t88ii': {vendor:'Epson',model:'TM-T88II',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson/legacy',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t88iii': {vendor:'Epson',model:'TM-T88III',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson/legacy',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t88iv': {vendor:'Epson',model:'TM-T88IV',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson/legacy',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t88v': {vendor:'Epson',model:'TM-T88V',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t88vi': {vendor:'Epson',model:'TM-T88VI',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'epson-tm-t88vii': {vendor:'Epson',model:'TM-T88VII',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'epson',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded','code128-auto']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'fujitsu-fp1000': {vendor:'Fujitsu',model:'FP-1000',media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'fujitsu',fonts:{A:{size:'12x24',columns:48},B:{size:'9x24',columns:56},C:{size:'8x16',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:false},cutter:{feed:4}}},\n\t'hp-a779': {vendor:'HP',model:'A779',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'hp',newline:'\\n',fonts:{A:{size:'12x24',columns:44}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:false,fallback:{type:'barcode',symbology:75}},cutter:{feed:4}}},\n\t'metapace-t1': {vendor:'Metapace',model:'T-1',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'metapace',fonts:{A:{size:'12x24',columns:42},B:{size:'9x17',columns:56}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:false,models:[]},pdf417:{supported:false},cutter:{feed:4}}},\n\t'mpt-ii': {vendor:'',model:'MPT-II',media:{dpi:180,width:80},capabilities:{language:'esc-pos',codepages:'mpt',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64},C:{size:'0x0',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:[]},pdf417:{supported:false}}},\n\t'pos-5890': {vendor:'',model:'POS-5890',media:{dpi:203,width:58},capabilities:{language:'esc-pos',codepages:'pos-5890',fonts:{A:{size:'12x24',columns:32},B:{size:'9x17',columns:42}},barcodes:{supported:true,symbologies:['upca','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['2']},pdf417:{supported:true},images:{mode:'raster'},cutter:{feed:1}}},\n\t'pos-8360': {vendor:'',model:'POS-8360',media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'pos-8360',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['2']},pdf417:{supported:true},images:{mode:'raster'},cutter:{feed:4}}},\n\t'star-mc-print2': {vendor:'Star',model:'mC-Print2',interfaces:{usb:{productName:'mC-Print2'}},media:{dpi:203,width:58},capabilities:{language:'star-prnt',codepages:'star',fonts:{A:{size:'12x24',columns:32},B:{size:'9x24',columns:42}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','itf','codabar','code93','code128','gs1-128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:3}}},\n\t'star-mpop': {vendor:'Star',model:'mPOP',interfaces:{usb:{productName:'mPOP'}},media:{dpi:203,width:58},capabilities:{language:'star-prnt',codepages:'star',fonts:{A:{size:'12x24',columns:32},B:{size:'9x24',columns:42}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','itf','codabar','code93','code128','gs1-128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:3}}},\n\t'star-sm-l200': {vendor:'Star',model:'SM-L200',media:{dpi:203,width:58},capabilities:{language:'star-prnt',codepages:'star',fonts:{A:{size:'12x24',columns:32},B:{size:'9x24',columns:42},C:{size:'9x17',columns:42}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','itf','codabar','code93','code128']},qrcode:{supported:true,models:['2']},pdf417:{supported:true}}},\n\t'star-tsp100iii': {vendor:'Star',model:'TSP100III',media:{dpi:203,width:80},capabilities:{language:'star-prnt',codepages:'star',fonts:{A:{size:'12x24',columns:48},B:{size:'9x24',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:3}}},\n\t'star-tsp100iv': {vendor:'Star',model:'TSP100IV',media:{dpi:203,width:80},capabilities:{language:'star-prnt',codepages:'star',fonts:{A:{size:'12x24',columns:48},B:{size:'9x24',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:3}}},\n\t'star-tsp650': {vendor:'Star',model:'TSP650',media:{dpi:203,width:80},capabilities:{language:'star-line',codepages:'star',fonts:{A:{size:'12x24',columns:48},B:{size:'9x24',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:false,models:[]},pdf417:{supported:false},cutter:{feed:3}}},\n\t'star-tsp650ii': {vendor:'Star',model:'TSP650II',media:{dpi:203,width:80},capabilities:{language:'star-line',codepages:'star',fonts:{A:{size:'12x24',columns:48},B:{size:'9x24',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-128','gs1-databar-omni','gs1-databar-truncated','gs1-databar-limited','gs1-databar-expanded']},qrcode:{supported:true,models:['1','2']},pdf417:{supported:true},cutter:{feed:3}}},\n\t'xprinter-xp-n160ii': {vendor:'Xprinter',model:'XP-N160II',interfaces:{usb:{productName:'Printer-80\\u0000'}},media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'xprinter',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-128']},qrcode:{supported:true,models:['2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'xprinter-xp-t80q': {vendor:'Xprinter',model:'XP-T80Q',media:{dpi:203,width:80},capabilities:{language:'esc-pos',codepages:'xprinter',fonts:{A:{size:'12x24',columns:48},B:{size:'9x17',columns:64}},barcodes:{supported:true,symbologies:['upca','upce','ean13','ean8','code39','itf','codabar','code93','code128','gs1-128']},qrcode:{supported:true,models:['2']},pdf417:{supported:true},cutter:{feed:4}}},\n\t'youku-58t': {vendor:'Youku',model:'58T',media:{dpi:203,width:58},capabilities:{language:'esc-pos',codepages:'youku',fonts:{A:{size:'12x24',columns:32},B:{size:'9x24',columns:42}},barcodes:{supported:true,symbologies:['upca','ean13','ean8','code39','itf','codabar','code93','code128']},qrcode:{supported:true,models:['2']},pdf417:{supported:false}}},\n};\n\nexport default printerDefinitions;\n","import Dither from 'canvas-dither';\r\nimport Flatten from 'canvas-flatten';\r\nimport CodepageEncoder from '@point-of-sale/codepage-encoder';\r\nimport ImageData from '@canvas/image-data';\r\nimport resizeImageData from 'resize-image-data';\r\n\r\n/* Import local dependencies */\r\n\r\nimport LanguageEscPos from './languages/esc-pos.js';\r\nimport LanguageStarPrnt from './languages/star-prnt.js';\r\nimport LineComposer from './line-composer.js';\r\n\r\n/* Import generated data */\r\n\r\nimport codepageMappings from '../generated/mapping.js';\r\nimport printerDefinitions from '../generated/printers.js';\r\n\r\n\r\n/**\r\n * Create a byte stream based on commands for receipt printers\r\n */\r\nclass ReceiptPrinterEncoder {\r\n #options = {};\r\n #queue = [];\r\n\r\n #language;\r\n #composer;\r\n\r\n #printerCapabilities = {\r\n 'fonts': {\r\n 'A': {size: '12x24', columns: 42},\r\n 'B': {size: '9x24', columns: 56},\r\n },\r\n 'barcodes': {\r\n 'supported': true,\r\n 'symbologies': [\r\n 'upca', 'upce', 'ean13', 'ean8', 'code39', 'itf', 'codabar', 'code93',\r\n 'code128', 'gs1-databar-omni', 'gs1-databar-truncated',\r\n 'gs1-databar-limited', 'gs1-databar-expanded',\r\n ],\r\n },\r\n 'qrcode': {\r\n 'supported': true,\r\n 'models': ['1', '2'],\r\n },\r\n 'pdf417': {\r\n 'supported': true,\r\n },\r\n };\r\n\r\n #codepageMapping = {};\r\n #codepageCandidates = [];\r\n #codepage = 'cp437';\r\n\r\n #state = {\r\n 'codepage': 0,\r\n 'font': 'A',\r\n };\r\n\r\n\r\n /**\r\n * Create a new object\r\n *\r\n * @param {object} options Object containing configuration options\r\n */\r\n constructor(options) {\r\n options = options || {};\r\n\r\n const defaults = {\r\n columns: 42,\r\n language: 'esc-pos',\r\n imageMode: 'column',\r\n feedBeforeCut: 0,\r\n newline: '\\n\\r',\r\n codepageMapping: 'epson',\r\n codepageCandidates: null,\r\n errors: 'relaxed',\r\n };\r\n\r\n /* Determine default settings based on the printer language */\r\n\r\n if (typeof options.language === 'string') {\r\n defaults.columns = options.language === 'esc-pos' ? 42 : 48;\r\n defaults.codepageMapping = options.language === 'esc-pos' ? 'epson' : 'star';\r\n }\r\n\r\n /* Determine default settings based on the printer model */\r\n\r\n if (typeof options.printerModel === 'string') {\r\n if (typeof printerDefinitions[options.printerModel] === 'undefined') {\r\n throw new Error('Unknown printer model');\r\n }\r\n\r\n this.#printerCapabilities = printerDefinitions[options.printerModel].capabilities;\r\n\r\n /* Apply the printer definition to the defaults */\r\n\r\n defaults.columns = this.#printerCapabilities.fonts['A'].columns;\r\n defaults.language = this.#printerCapabilities.language;\r\n defaults.codepageMapping = this.#printerCapabilities.codepages;\r\n defaults.newline = this.#printerCapabilities?.newline || defaults.newline;\r\n defaults.feedBeforeCut = this.#printerCapabilities?.cutter?.feed || defaults.feedBeforeCut;\r\n defaults.imageMode = this.#printerCapabilities?.images?.mode || defaults.imageMode;\r\n }\r\n\r\n /* Merge options */\r\n\r\n if (options) {\r\n this.#options = Object.assign(defaults, {\r\n debug: false,\r\n embedded: false,\r\n createCanvas: null,\r\n }, options);\r\n }\r\n\r\n /* Backwards compatibility for the width option */\r\n\r\n if (this.#options.width) {\r\n this.#options.columns = this.#options.width;\r\n }\r\n\r\n /* Get the printer language */\r\n\r\n if (this.#options.language === 'esc-pos') {\r\n this.#language = new LanguageEscPos();\r\n } else if (this.#options.language === 'star-prnt' || this.#options.language === 'star-line') {\r\n this.#language = new LanguageStarPrnt();\r\n } else {\r\n throw new Error('The specified language is not supported');\r\n }\r\n\r\n /* Determine autoflush settings */\r\n /*\r\n\r\n StarPRNT printers are set up to have print start control set to page units.\r\n That means the printer will only print after it has received a cut or ff command.\r\n This is not ideal, so we set autoFlush to true by default, which will force\r\n the printer to print after each encode().\r\n\r\n One problem, we do not want to do this for embedded content. Only the top level\r\n encoder should flush the buffer.\r\n\r\n ESC/POS and Star Line Mode printers are set up to have print start control set to\r\n line units, which means the printer will print after each line feed command.\r\n We do not need to flush the buffer for these printers.\r\n\r\n */\r\n\r\n if (typeof this.#options.autoFlush === 'undefined') {\r\n this.#options.autoFlush = ! this.#options.embedded && this.#options.language == 'star-prnt';\r\n }\r\n\r\n /* Check column width */\r\n\r\n if (![32, 35, 42, 44, 48].includes(this.#options.columns) && !this.#options.embedded) {\r\n throw new Error('The width of the paper must me either 32, 35, 42, 44 or 48 columns');\r\n }\r\n\r\n /* Determine codepage mapping and candidates */\r\n\r\n if (typeof this.#options.codepageMapping === 'string') {\r\n if (typeof codepageMappings[this.#options.language][this.#options.codepageMapping] === 'undefined') {\r\n throw new Error('Unknown codepage mapping');\r\n }\r\n\r\n this.#codepageMapping = Object.fromEntries(codepageMappings[this.#options.language][this.#options.codepageMapping]\r\n .map((v, i) => [v, i])\r\n .filter((i) => i));\r\n } else {\r\n this.#codepageMapping = this.#options.codepageMapping;\r\n }\r\n\r\n if (this.#options.codepageCandidates) {\r\n this.#codepageCandidates = this.#options.codepageCandidates;\r\n } else {\r\n this.#codepageCandidates = Object.keys(this.#codepageMapping);\r\n }\r\n\r\n /* Create our line composer */\r\n\r\n this.#composer = new LineComposer({\r\n embedded: this.#options.embedded,\r\n columns: this.#options.columns,\r\n align: 'left',\r\n size: 1,\r\n\r\n callback: (value) => this.#queue.push(value),\r\n });\r\n\r\n this.#reset();\r\n }\r\n\r\n /**\r\n * Reset the state of the object\r\n */\r\n #reset() {\r\n this.#queue = [];\r\n this.#codepage = this.#options.language == 'esc-pos' ? 'cp437' : 'star/standard';\r\n this.#state.codepage = -1;\r\n this.#state.font = 'A';\r\n }\r\n\r\n /**\r\n * Initialize the printer\r\n *\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n initialize() {\r\n if (this.#options.embedded) {\r\n throw new Error('Initialize is not supported in table cells or boxes');\r\n }\r\n\r\n this.#composer.add(\r\n this.#language.initialize(),\r\n );\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Change the code page\r\n *\r\n * @param {string} codepage The codepage that we set the printer to\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n codepage(codepage) {\r\n if (codepage === 'auto') {\r\n this.#codepage = codepage;\r\n return this;\r\n }\r\n\r\n if (!CodepageEncoder.supports(codepage)) {\r\n throw new Error('Unknown codepage');\r\n }\r\n\r\n if (typeof this.#codepageMapping[codepage] !== 'undefined') {\r\n this.#codepage = codepage;\r\n } else {\r\n throw new Error('Codepage not supported by printer');\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Print text\r\n *\r\n * @param {string} value Text that needs to be printed\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n text(value) {\r\n this.#composer.text(value, this.#codepage);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Print a newline\r\n *\r\n * @param {string} value The number of newlines that need to be printed, defaults to 1\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n newline(value) {\r\n value = parseInt(value, 10) || 1;\r\n\r\n for (let i = 0; i < value; i++) {\r\n this.#composer.flush({forceNewline: true});\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Print text, followed by a newline\r\n *\r\n * @param {string} value Text that needs to be printed\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n line(value) {\r\n this.text(value);\r\n this.newline();\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Underline text\r\n *\r\n * @param {boolean|number} value true to turn on underline, false to turn off, or 2 for double underline\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n underline(value) {\r\n if (typeof value === 'undefined') {\r\n this.#composer.style.underline = ! this.#composer.style.underline;\r\n } else {\r\n this.#composer.style.underline = value;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Italic text\r\n *\r\n * @param {boolean} value true to turn on italic, false to turn off\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n italic(value) {\r\n if (typeof value === 'undefined') {\r\n this.#composer.style.italic = ! this.#composer.style.italic;\r\n } else {\r\n this.#composer.style.italic = value;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Bold text\r\n *\r\n * @param {boolean} value true to turn on bold, false to turn off\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n bold(value) {\r\n if (typeof value === 'undefined') {\r\n this.#composer.style.bold = ! this.#composer.style.bold;\r\n } else {\r\n this.#composer.style.bold = value;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Invert text\r\n *\r\n * @param {boolean} value true to turn on white text on black, false to turn off\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n invert(value) {\r\n if (typeof value === 'undefined') {\r\n this.#composer.style.invert = ! this.#composer.style.invert;\r\n } else {\r\n this.#composer.style.invert = value;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Change width of text\r\n *\r\n * @param {number} width The width of the text, 1 - 8\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n width(width) {\r\n if (typeof width === 'undefined') {\r\n width = 1;\r\n }\r\n\r\n if (typeof width !== 'number') {\r\n throw new Error('Width must be a number');\r\n }\r\n\r\n if (width < 1 || width > 8) {\r\n throw new Error('Width must be between 1 and 8');\r\n }\r\n\r\n this.#composer.style.width = width;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Change height of text\r\n *\r\n * @param {number} height The height of the text, 1 - 8\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n height(height) {\r\n if (typeof height === 'undefined') {\r\n height = 1;\r\n }\r\n\r\n if (typeof height !== 'number') {\r\n throw new Error('Height must be a number');\r\n }\r\n\r\n if (height < 1 || height > 8) {\r\n throw new Error('Height must be between 1 and 8');\r\n }\r\n\r\n this.#composer.style.height = height;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Change text size\r\n *\r\n * @param {Number|string} width The width of the text, 1 - 8\r\n * @param {Number} height The height of the text, 1 - 8\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n size(width, height) {\r\n /* Backwards compatiblity for changing the font */\r\n if (typeof width === 'string') {\r\n return this.font(width === 'small' ? 'B' : 'A');\r\n }\r\n\r\n if (typeof height === 'undefined') {\r\n height = width;\r\n }\r\n\r\n this.width(width);\r\n this.height(height);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Choose different font\r\n *\r\n * @param {string} value 'A', 'B' or others\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n font(value) {\r\n if (this.#options.embedded) {\r\n throw new Error('Changing fonts is not supported in table cells or boxes');\r\n }\r\n\r\n if (this.#composer.cursor > 0) {\r\n throw new Error('Changing fonts is not supported in the middle of a line');\r\n }\r\n\r\n /* If size is specified, find the matching font */\r\n\r\n const matches = value.match(/^[0-9]+x[0-9]+$/);\r\n if (matches) {\r\n value = Object.entries(this.#printerCapabilities.fonts).find((i) => i[1].size == matches[0])[0];\r\n }\r\n\r\n /* Make sure the font name is uppercase */\r\n\r\n value = value.toUpperCase();\r\n\r\n /* Check if the font is supported */\r\n\r\n if (typeof this.#printerCapabilities.fonts[value] === 'undefined') {\r\n return this.#error('This font is not supported by this printer', 'relaxed');\r\n }\r\n\r\n /* Change the font */\r\n\r\n this.#composer.add(\r\n this.#language.font(value),\r\n );\r\n\r\n this.#state.font = value;\r\n\r\n /* Change the width of the composer */\r\n\r\n if (value === 'A') {\r\n this.#composer.columns = this.#options.columns;\r\n } else {\r\n this.#composer.columns =\r\n (this.#options.columns / this.#printerCapabilities.fonts['A'].columns) *\r\n this.#printerCapabilities.fonts[value].columns;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Change text alignment\r\n *\r\n * @param {string} value left, center or right\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n align(value) {\r\n const alignments = ['left', 'center', 'right'];\r\n\r\n if (!alignments.includes(value)) {\r\n throw new Error('Unknown alignment');\r\n }\r\n\r\n this.#composer.align = value;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Insert a table\r\n *\r\n * @param {array} columns The column definitions\r\n * @param {array} data Array containing rows. Each row is an array containing cells.\r\n * Each cell can be a string value, or a callback function.\r\n * The first parameter of the callback is the encoder object on\r\n * which the function can call its methods.\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n table(columns, data) {\r\n this.#composer.flush();\r\n\r\n /* Process all lines */\r\n\r\n for (let r = 0; r < data.length; r++) {\r\n const lines = [];\r\n let maxLines = 0;\r\n\r\n /* Render all columns */\r\n\r\n for (let c = 0; c < columns.length; c++) {\r\n const columnEncoder = new ReceiptPrinterEncoder(Object.assign({}, this.#options, {\r\n width: columns[c].width,\r\n embedded: true,\r\n }));\r\n\r\n columnEncoder.codepage(this.#codepage);\r\n columnEncoder.align(columns[c].align);\r\n\r\n if (typeof data[r][c] === 'string') {\r\n columnEncoder.text(data[r][c]);\r\n }\r\n\r\n if (typeof data[r][c] === 'function') {\r\n data[r][c](columnEncoder);\r\n }\r\n\r\n const cell = columnEncoder.commands();\r\n\r\n /* Determine the height in lines of the row */\r\n\r\n maxLines = Math.max(maxLines, cell.length);\r\n\r\n lines[c] = cell;\r\n }\r\n\r\n /* Pad the cells in this line to the same height */\r\n\r\n for (let c = 0; c < columns.length; c++) {\r\n if (lines[c].length >= maxLines) {\r\n continue;\r\n }\r\n\r\n for (let p = lines[c].length; p < maxLines; p++) {\r\n let verticalAlign = 'top';\r\n if (typeof columns[c].verticalAlign !== 'undefined') {\r\n verticalAlign = columns[c].verticalAlign;\r\n }\r\n\r\n const line = {commands: [{type: 'space', size: columns[c].width}], height: 1};\r\n\r\n if (verticalAlign == 'bottom') {\r\n lines[c].unshift(line);\r\n } else {\r\n lines[c].push(line);\r\n }\r\n }\r\n }\r\n\r\n /* Add the lines to the composer */\r\n\r\n for (let l = 0; l < maxLines; l++) {\r\n for (let c = 0; c < columns.length; c++) {\r\n if (typeof columns[c].marginLeft !== 'undefined') {\r\n this.#composer.space(columns[c].marginLeft);\r\n }\r\n\r\n this.#composer.add(lines[c][l].commands, columns[c].width);\r\n\r\n if (typeof columns[c].marginRight !== 'undefined') {\r\n this.#composer.space(columns[c].marginRight);\r\n }\r\n }\r\n\r\n this.#composer.flush();\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Insert a horizontal rule\r\n *\r\n * @param {object} options And object with the following properties:\r\n * - style: The style of the line, either single or double\r\n * - width: The width of the line, by default the width of the paper\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n rule(options) {\r\n options = Object.assign({\r\n style: 'single',\r\n width: this.#options.columns || 10,\r\n }, options || {});\r\n\r\n this.#composer.flush();\r\n\r\n this.#composer.text((options.style === 'double' ? '═' : '─').repeat(options.width), 'cp437');\r\n this.#composer.flush({forceNewline: true});\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Insert a box\r\n *\r\n * @param {object} options And object with the following properties:\r\n * - style: The style of the border, either single or double\r\n * - width: The width of the box, by default the width of the paper\r\n * - marginLeft: Space between the left border and the left edge\r\n * - marginRight: Space between the right border and the right edge\r\n * - paddingLeft: Space between the contents and the left border of the box\r\n * - paddingRight: Space between the contents and the right border of the box\r\n * @param {string|function} contents A string value, or a callback function.\r\n * The first parameter of the callback is the encoder object on\r\n * which the function can call its methods.\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n box(options, contents) {\r\n options = Object.assign({\r\n style: 'single',\r\n width: this.#options.columns,\r\n marginLeft: 0,\r\n marginRight: 0,\r\n paddingLeft: 0,\r\n paddingRight: 0,\r\n }, options || {});\r\n\r\n if (options.width + options.marginLeft + options.marginRight > this.#options.columns) {\r\n throw new Error('Box is too wide');\r\n }\r\n\r\n let elements;\r\n\r\n if (options.style == 'single') {\r\n elements = ['┌', '┐', '└', '┘', '─', '│'];\r\n } else if (options.style == 'double') {\r\n elements = ['╔', '╗', '╚', '╝', '═', '║'];\r\n }\r\n\r\n /* Render the contents of the box */\r\n\r\n const columnEncoder = new ReceiptPrinterEncoder(Object.assign({}, this.#options, {\r\n width: options.width - (options.style == 'none' ? 0 : 2) - options.paddingLeft - options.paddingRight,\r\n embedded: true,\r\n }));\r\n\r\n columnEncoder.codepage(this.#codepage);\r\n columnEncoder.align(options.align);\r\n\r\n if (typeof contents === 'function') {\r\n contents(columnEncoder);\r\n }\r\n\r\n if (typeof contents === 'string') {\r\n columnEncoder.text(contents);\r\n }\r\n\r\n const lines = columnEncoder.commands();\r\n\r\n /* Header */\r\n\r\n this.#composer.flush();\r\n\r\n if (options.style != 'none') {\r\n this.#composer.space(options.marginLeft);\r\n this.#composer.text(elements[0], 'cp437');\r\n this.#composer.text(elements[4].repeat(options.width - 2), 'cp437');\r\n this.#composer.text(elements[1], 'cp437');\r\n this.#composer.space(options.marginRight);\r\n this.#composer.flush();\r\n }\r\n\r\n /* Content */\r\n\r\n for (let i = 0; i < lines.length; i++) {\r\n this.#composer.space(options.marginLeft);\r\n\r\n if (options.style != 'none') {\r\n this.#composer.style.height = lines[i].height;\r\n this.#composer.text(elements[5], 'cp437');\r\n this.#composer.style.height = 1;\r\n }\r\n\r\n this.#composer.space(options.paddingLeft);\r\n this.#composer.add(lines[i].commands,\r\n options.width - (options.style == 'none' ? 0 : 2) - options.paddingLeft - options.paddingRight);\r\n this.#composer.space(options.paddingRight);\r\n\r\n if (options.style != 'none') {\r\n this.#composer.style.height = lines[i].height;\r\n this.#composer.text(elements[5], 'cp437');\r\n this.#composer.style.height = 1;\r\n }\r\n\r\n this.#composer.space(options.marginRight);\r\n this.#composer.flush();\r\n }\r\n\r\n /* Footer */\r\n\r\n if (options.style != 'none') {\r\n this.#composer.space(options.marginLeft);\r\n this.#composer.text(elements[2], 'cp437');\r\n this.#composer.text(elements[4].repeat(options.width - 2), 'cp437');\r\n this.#composer.text(elements[3], 'cp437');\r\n this.#composer.space(options.marginRight);\r\n this.#composer.flush();\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Barcode\r\n *\r\n * @param {string} value the value of the barcode\r\n * @param {string|number} symbology the type of the barcode\r\n * @param {number|object} height Either the configuration object, or backwards compatible height of the barcode\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n barcode(value, symbology, height) {\r\n let options = {\r\n height: 60,\r\n width: 2,\r\n text: false,\r\n };\r\n\r\n if (typeof height === 'object') {\r\n options = Object.assign(options, height);\r\n }\r\n\r\n if (typeof height === 'number') {\r\n options.height = height;\r\n }\r\n\r\n if (this.#options.embedded) {\r\n throw new Error('Barcodes are not supported in table cells or boxes');\r\n }\r\n\r\n if (this.#printerCapabilities.barcodes.supported === false) {\r\n return this.#error('Barcodes are not supported by this printer', 'relaxed');\r\n }\r\n\r\n if (typeof symbology === 'string' && !this.#printerCapabilities.barcodes.symbologies.includes(symbology)) {\r\n return this.#error(`Symbology '${symbology}' not supported by this printer`, 'relaxed');\r\n }\r\n\r\n /* Force printing the print buffer and moving to a new line */\r\n\r\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\r\n\r\n /* Set alignment */\r\n\r\n if (this.#composer.align !== 'left') {\r\n this.#composer.add(this.#language.align(this.#composer.align));\r\n }\r\n\r\n /* Barcode */\r\n\r\n this.#composer.add(\r\n this.#language.barcode(value, symbology, options),\r\n );\r\n\r\n /* Reset alignment */\r\n\r\n if (this.#composer.align !== 'left') {\r\n this.#composer.add(this.#language.align('left'));\r\n }\r\n\r\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * QR code\r\n *\r\n * @param {string} value The value of the qr code\r\n * @param {number|object} model Either the configuration object, or\r\n * backwards compatible model of the qrcode, either 1 or 2\r\n * @param {number} size Backwards compatible size of the qrcode, a value between 1 and 8\r\n * @param {string} errorlevel Backwards compatible the amount of error correction used,\r\n * either 'l', 'm', 'q', 'h'\r\n * @return {object} Return the object, for easy chaining commands\r\n */\r\n qrcode(value, model, size, errorlevel) {\r\n let options = {\r\n model: 2,\r\n size: 6,\r\n errorlevel: 'm',\r\n };\r\n\r\n if (typeof model === 'object') {\r\n options = Object.assign(options, model);\r\n }\r\n\r\n if (typeof model === 'number') {\r\n options.model = model;\r\n }\r\n\r\n if (typeof size === 'number') {\r\n options.size = size;\r\n }\r\n\r\n if (typeof errorlevel === 'string') {\r\n options.errorlevel = errorlevel;\r\n }\r\n\r\n if (this.#options.embedded) {\r\n throw new Error('QR codes are not supported in table cells or boxes');\r\n }\r\n\r\n if (this.#printerCapabilities.qrcode.supported === false) {\r\n return this.#error('QR codes are not supported by this printer', 'relaxed');\r\n }\r\n\r\n if (options.model && !this.#printerCapabilities.qrcode.models.includes(String(options.model))) {\r\n return this.#error('QR code model is not supported by this printer', 'relaxed');\r\n }\r\n\r\n /* Force printing the print buffer and moving to a new line */\r\n\r\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\r\n\r\n /* Set alignment */\r\n\r\n if (this.#composer.align !== 'left') {\r\n this.#composer.add(this.#language.align(this.#composer.align));\r\n }\r\n\r\n /* QR code */\r\n\r\n this.#composer.add(\r\n this.#language.qrcode(value, options),\r\n );\r\n\r\n /* Reset alignment */\r\n\r\n if (this.#composer.align !== 'left') {\r\n this.#composer.add(this.#language.align('left'));\r\n }\r\n\r\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\r\n\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * PDF417 code\r\n *\r\n * @param {string} value The value of the qr code\r\n * @param {object} options Configuration object\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n pdf417(value, options) {\r\n options = Object.assign({\r\n width: 3,\r\n height: 3,\r\n columns: 0,\r\n rows: 0,\r\n errorlevel: 1,\r\n truncated: false,\r\n }, options || {});\r\n\r\n if (this.#options.embedded) {\r\n throw new Error('PDF417 codes are not supported in table cells or boxes');\r\n }\r\n\r\n if (this.#printerCapabilities.pdf417.supported === false) {\r\n /* If possible, fallback to a barcode with symbology */\r\n\r\n if (typeof this.#printerCapabilities.pdf417.fallback === 'object') {\r\n return this.barcode(value, this.#printerCapabilities.pdf417.fallback.symbology);\r\n }\r\n\r\n return this.#error('PDF417 codes are not supported by this printer', 'relaxed');\r\n }\r\n\r\n /* Force printing the print buffer and moving to a new line */\r\n\r\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\r\n\r\n /* Set alignment */\r\n\r\n if (this.#composer.align !== 'left') {\r\n this.#composer.add(this.#language.align(this.#composer.align));\r\n }\r\n\r\n /* PDF417 code */\r\n\r\n this.#composer.add(\r\n this.#language.pdf417(value, options),\r\n );\r\n\r\n /* Reset alignment */\r\n\r\n if (this.#composer.align !== 'left') {\r\n this.#composer.add(this.#language.align('left'));\r\n }\r\n\r\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\r\n\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * Image\r\n *\r\n * @param {object} input an element, like a canvas or image that needs to be printed\r\n * @param {number} width width of the image on the printer\r\n * @param {number} height height of the image on the printer\r\n * @param {string} algorithm the dithering algorithm for making the image black and white\r\n * @param {number} threshold threshold for the dithering algorithm\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n image(input, width, height, algorithm, threshold) {\r\n if (this.#options.embedded) {\r\n throw new Error('Images are not supported in table cells or boxes');\r\n }\r\n\r\n if (width % 8 !== 0) {\r\n throw new Error('Width must be a multiple of 8');\r\n }\r\n\r\n if (height % 8 !== 0) {\r\n throw new Error('Height must be a multiple of 8');\r\n }\r\n\r\n if (typeof algorithm === 'undefined') {\r\n algorithm = 'threshold';\r\n }\r\n\r\n if (typeof threshold === 'undefined') {\r\n threshold = 128;\r\n }\r\n\r\n /* Determine the type of the input */\r\n\r\n const name = input.constructor.name;\r\n let type;\r\n\r\n name.endsWith('Element') ? type = 'element' : null;\r\n name == 'ImageData' ? type = 'imagedata' : null;\r\n name == 'Canvas' && typeof input.getContext !== 'undefined' ? type = 'node-canvas' : null;\r\n name == 'Image' ? type = 'node-canvas-image' : null;\r\n name == 'Image' && typeof input.frames !== 'undefined' ? type = 'node-read-image' : null;\r\n name == 'Object' && input.data && input.info ? type = 'node-sharp' : null;\r\n name == 'View3duint8' && input.data && input.shape ? type = 'ndarray' : null;\r\n name == 'Object' && input.data && input.width && input.height ? type = 'object' : null;\r\n\r\n if (!type) {\r\n throw new Error('Could not determine the type of image input');\r\n }\r\n\r\n /* Turn provided data into an ImageData object */\r\n\r\n let image;\r\n\r\n if (type == 'element') {\r\n const canvas = document.createElement('canvas');\r\n canvas.width = width;\r\n canvas.height = height;\r\n const context = canvas.getContext('2d');\r\n context.drawImage(input, 0, 0, width, height);\r\n image = context.getImageData(0, 0, width, height);\r\n }\r\n\r\n if (type == 'node-canvas') {\r\n const context = input.getContext('2d');\r\n image = context.getImageData(0, 0, input.width, input.height);\r\n }\r\n\r\n if (type == 'node-canvas-image') {\r\n if (typeof this.#options.createCanvas !== 'function') {\r\n throw new Error('Canvas is not supported in this environment, specify a createCanvas function in the options');\r\n }\r\n\r\n const canvas = this.#options.createCanvas(width, height);\r\n const context = canvas.getContext('2d');\r\n context.drawImage(input, 0, 0, width, height);\r\n image = context.getImageData(0, 0, width, height);\r\n }\r\n\r\n if (type == 'node-read-image') {\r\n image = new ImageData(input.width, input.height);\r\n image.data.set(input.frames[0].data);\r\n }\r\n\r\n if (type == 'node-sharp') {\r\n image = new ImageData(input.info.width, input.info.height);\r\n image.data.set(input.data);\r\n }\r\n\r\n if (type == 'ndarray') {\r\n image = new ImageData(input.shape[0], input.shape[1]);\r\n image.data.set(input.data);\r\n }\r\n\r\n if (type == 'object') {\r\n image = new ImageData(input.width, input.height);\r\n image.data.set(input.data);\r\n }\r\n\r\n if (type == 'imagedata') {\r\n image = input;\r\n }\r\n\r\n if (!image) {\r\n throw new Error('Image could not be loaded');\r\n }\r\n\r\n /* Resize image */\r\n\r\n if (width !== image.width || height !== image.height) {\r\n image = resizeImageData(image, width, height, 'bilinear-interpolation');\r\n }\r\n\r\n /* Check if the image has the correct dimensions */\r\n\r\n if (width !== image.width || height !== image.height) {\r\n throw new Error('Image could not be resized');\r\n }\r\n\r\n /* Flatten the image and dither it */\r\n\r\n image = Flatten.flatten(image, [0xff, 0xff, 0xff]);\r\n\r\n switch (algorithm) {\r\n case 'threshold': image = Dither.threshold(image, threshold); break;\r\n case 'bayer': image = Dither.bayer(image, threshold); break;\r\n case 'floydsteinberg': image = Dither.floydsteinberg(image); break;\r\n case 'atkinson': image = Dither.atkinson(image); break;\r\n }\r\n\r\n\r\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\r\n\r\n /* Set alignment */\r\n\r\n if (this.#composer.align !== 'left') {\r\n this.#composer.add(this.#language.align(this.#composer.align));\r\n }\r\n\r\n /* Encode the image data */\r\n\r\n this.#composer.add(\r\n this.#language.image(image, width, height, this.#options.imageMode),\r\n );\r\n\r\n /* Reset alignment */\r\n\r\n if (this.#composer.align !== 'left') {\r\n this.#composer.add(this.#language.align('left'));\r\n }\r\n\r\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Cut paper\r\n *\r\n * @param {string} value full or partial. When not specified a full cut will be assumed\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n cut(value) {\r\n if (this.#options.embedded) {\r\n throw new Error('Cut is not supported in table cells or boxes');\r\n }\r\n\r\n for (let i = 0; i < this.#options.feedBeforeCut; i++) {\r\n this.#composer.flush({forceNewline: true});\r\n }\r\n\r\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\r\n\r\n this.#composer.add(\r\n this.#language.cut(value),\r\n );\r\n\r\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Pulse\r\n *\r\n * @param {number} device 0 or 1 for on which pin the device is connected, default of 0\r\n * @param {number} on Time the pulse is on in milliseconds, default of 100\r\n * @param {number} off Time the pulse is off in milliseconds, default of 500\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n pulse(device, on, off) {\r\n if (this.#options.embedded) {\r\n throw new Error('Pulse is not supported in table cells or boxes');\r\n }\r\n\r\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\r\n\r\n this.#composer.add(\r\n this.#language.pulse(device, on, off),\r\n );\r\n\r\n this.#composer.flush({forceFlush: true, ignoreAlignment: true});\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Add raw printer commands\r\n *\r\n * @param {array} data raw bytes to be included\r\n * @return {object} Return the object, for easy chaining commands\r\n *\r\n */\r\n raw(data) {\r\n this.#composer.raw(data);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Internal function for encoding style changes\r\n * @param {string} property The property that needs to be changed\r\n * @param {boolean} value Is the property enabled or disabled\r\n * @return {array} Return the encoded bytes\r\n */\r\n #encodeStyle(property, value) {\r\n if (property === 'bold') {\r\n return this.#language.bold(value);\r\n }\r\n\r\n if (property === 'underline') {\r\n return this.#language.underline(value);\r\n }\r\n\r\n if (property === 'italic') {\r\n return this.#language.italic(value);\r\n }\r\n\r\n if (property === 'invert') {\r\n return this.#language.invert(value);\r\n }\r\n\r\n if (property === 'size') {\r\n return this.#language.size(value.width, value.height);\r\n }\r\n }\r\n\r\n /**\r\n * Internal function for encoding text in the correct codepage\r\n * @param {string} value The text that needs to be encoded\r\n * @param {string} codepage The codepage that needs to be used\r\n * @return {array} Return the encoded bytes\r\n */\r\n #encodeText(value, codepage) {\r\n if (codepage === null) {\r\n const fragment = CodepageEncoder.encode(value, 'ascii');\r\n\r\n return [\r\n {type: 'text', payload: [...fragment]},\r\n ];\r\n }\r\n\r\n if (codepage !== 'auto') {\r\n const fragment = CodepageEncoder.encode(value, codepage);\r\n\r\n if (this.#state.codepage != this.#codepageMapping[codepage]) {\r\n this.#state.codepage = this.#codepageMapping[codepage];\r\n\r\n return [\r\n {type: 'codepage', payload: this.#language.codepage(this.#codepageMapping[codepage])},\r\n {type: 'text', payload: [...fragment]},\r\n ];\r\n }\r\n\r\n return [\r\n {type: 'text', payload: [...fragment]},\r\n ];\r\n }\r\n\r\n const fragments = CodepageEncoder.autoEncode(value, this.#codepageCandidates);\r\n const buffer = [];\r\n\r\n for (const fragment of fragments) {\r\n this.#state.codepage = this.#codepageMapping[fragment.codepage];\r\n buffer.push(\r\n {type: 'codepage', payload: this.#language.codepage(this.#codepageMapping[fragment.codepage])},\r\n {type: 'text', payload: [...fragment.bytes]},\r\n );\r\n }\r\n\r\n return buffer;\r\n }\r\n\r\n /**\r\n * Get all the commands\r\n *\r\n * @return {array} All the commands currently in the queue\r\n */\r\n commands() {\r\n let requiresFlush = true;\r\n\r\n /* Determine if the last command is a pulse or cut, the we do not need a flush */\r\n\r\n let lastLine = this.#queue[this.#queue.length - 1];\r\n \r\n if (lastLine) {\r\n let lastCommand = lastLine[lastLine.length - 1];\r\n\r\n if (lastCommand && [ 'pulse', 'cut' ].includes(lastCommand.type)) {\r\n requiresFlush = false;\r\n }\r\n }\r\n\r\n /* Flush the printer line buffer if needed */\r\n\r\n if (requiresFlush && this.#options.autoFlush && !this.#options.embedded) {\r\n this.#composer.add(\r\n this.#language.flush(),\r\n );\r\n }\r\n\r\n /* Get the remaining from the composer */\r\n\r\n const result = [];\r\n\r\n const remaining = this.#composer.fetch({forceFlush: true, ignoreAlignment: true});\r\n\r\n if (remaining.length) {\r\n this.#queue.push(remaining);\r\n }\r\n\r\n /* Process all lines in the queue */\r\n\r\n while (this.#queue.length) {\r\n const line = this.#queue.shift();\r\n const height = line\r\n .filter((i) => i.type === 'style' && i.property === 'size')\r\n .map((i) => i.value.height)\r\n .reduce((a, b) => Math.max(a, b), 1);\r\n\r\n if (this.#options.debug) {\r\n console.log('|' + line.filter((i) => i.type === 'text').map((i) => i.value).join('') + '|', height);\r\n }\r\n\r\n result.push({\r\n commands: line,\r\n height: height,\r\n });\r\n }\r\n\r\n if (this.#options.debug) {\r\n console.log('commands', result);\r\n }\r\n\r\n this.#reset();\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Encode all previous commands\r\n *\r\n * @param {string} format The format of the output, either 'commands',\r\n * 'lines' or 'array', defaults to 'array'\r\n * @return {Uint8Array} Return the encoded bytes in the format specified\r\n */\r\n encode(format) {\r\n /* Get the commands */\r\n\r\n const commands = this.commands();\r\n\r\n if (format === 'commands') {\r\n return commands;\r\n }\r\n\r\n /* Build the lines */\r\n\r\n const lines = [];\r\n\r\n for (const line of commands) {\r\n const buffer = [];\r\n\r\n for (const item of line.commands) {\r\n if (item.type === 'text') {\r\n buffer.push(...this.#encodeText(item.value, item.codepage));\r\n } else if (item.type === 'style') {\r\n buffer.push(Object.assign(item, {payload: this.#encodeStyle(item.property, item.value)}));\r\n } else if (item.value || item.payload) {\r\n buffer.push(item);\r\n }\r\n }\r\n\r\n lines.push(buffer);\r\n }\r\n\r\n if (format === 'lines') {\r\n return lines;\r\n }\r\n\r\n /* Build the array */\r\n\r\n let result = [];\r\n let last = null;\r\n\r\n for (const line of lines) {\r\n for (const item of line) {\r\n result.push(...item.payload);\r\n last = item;\r\n }\r\n\r\n if (this.#options.newline === '\\n\\r') {\r\n result.push(0x0a, 0x0d);\r\n }\r\n\r\n if (this.#options.newline === '\\n') {\r\n result.push(0x0a);\r\n }\r\n }\r\n\r\n /* If the last command is a pulse, do not feed */\r\n\r\n if (last && last.type === 'pulse') {\r\n result = result.slice(0, 0 - this.#options.newline.length);\r\n }\r\n\r\n return Uint8Array.from(result);\r\n }\r\n\r\n /**\r\n * Throw an error\r\n *\r\n * @param {string} message The error message\r\n * @param {string} level The error level, if level is strict,\r\n * an error will be thrown, if level is relaxed,\r\n * a warning will be logged\r\n * @return {object} Return the object, for easy chaining commands\r\n */\r\n #error(message, level) {\r\n if (level === 'strict' || this.#options.errors === 'strict') {\r\n throw new Error(message);\r\n }\r\n\r\n console.warn(message);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Get all supported printer models\r\n *\r\n * @return {object} An object with all supported printer models\r\n */\r\n static get printerModels() {\r\n return Object.entries(printerDefinitions).map((i) => ({id: i[0], name: i[1].vendor + ' ' + i[1].model}));\r\n }\r\n\r\n /**\r\n * Get the current column width\r\n *\r\n * @return {number} The column width in characters\r\n */\r\n get columns() {\r\n return this.#composer.columns;\r\n }\r\n\r\n /**\r\n * Get the current language\r\n * @return {string} The language that is currently used\r\n */\r\n get language() {\r\n return this.#options.language;\r\n }\r\n\r\n /**\r\n * Get the capabilities of the printer\r\n * @return {object} The capabilities of the printer\r\n */\r\n get printerCapabilities() {\r\n return this.#printerCapabilities;\r\n }\r\n}\r\n\r\nexport default ReceiptPrinterEncoder;\r\n"],"names":["grayscale","image","i","data","length","luminance","fill","threshold","value","bayer","thresholdMap","x","width","y","Math","floor","floydsteinberg","Uint8ClampedArray","height","l","error","atkinson","flatten","background","alpha","invAlpha","definitions","ascii","name","languages","Array","map","v","cp437","extends","cp720","cp737","cp771","cp772","cp774","cp775","cp850","cp851","cp852","cp853","cp855","cp857","cp858","cp860","cp861","cp862","cp863","cp864","offset","cp865","cp866","cp869","cp874","cp1001","cp1098","cp1125","cp3001","cp3002","cp3011","cp3012","cp3021","cp3041","cp3840","cp3841","cp3843","cp3844","cp3845","cp3846","cp3847","cp3848","windows1250","windows1251","windows1252","windows1253","windows1254","windows1255","windows1256","windows1257","windows1258","rk1048","thai11","thai13","thai14","thai16","thai18","thai42","tcvn3","tcvn3capitals","viscii","khmer","latvian","aliases","cp2001","cp1119","cp1118","cp1162","iso88591","iso88592","iso88597","iso885915","shiftjis","katakana","cp928","strings","en","jp","pt","fr","sv","dk","el","tr","ru","hu","pl","cz","ar","et","lt","bg","is","he","fa","uk","vi","kk","lv","mt","th","CodepageEncoder","static","Object","keys","codepage","codepoints","this","getCodepoints","structuredClone","language","string","input","output","Uint8Array","definition","getEncoding","c","codepoint","codePointAt","position","findIndex","candidates","fragments","current","fragment","available","char","bytes","push","evaluateExtends","j","browser","ImageData","require$$0","nearestNeighbor","src","dst","pos","srcX","srcPos","bilinearInterpolation","interpolate","k","kMin","kMax","vMin","vMax","round","interpolateHorizontal","xMin","xMax","interpolateVertical","yMin","yMax","srcY","min","ceil","algorithm","resize","Error","result","LanguageEscPos","initialize","type","payload","font","charCodeAt","align","barcode","symbology","options","symbologies","upca","upce","ean13","ean8","code39","coda39","itf","codabar","code93","code128","property","text","startsWith","replace","encode","identifier","qrcode","model","models","size","errorlevels","m","q","h","errorlevel","command","pdf417","columns","rows","truncated","mode","getPixel","getRowData","b","s","getColumnData","forEach","cut","pulse","device","on","off","bold","underline","italic","invert","flush","LanguageStarPrnt","slice","TextStyle","default","callback","constructor","store","properties","Map","set","restore","TextWrap","line","indent","lines","String","split","chunks","match","chunk","remaining","letters","piece","pieces","splice","join","trimEnd","LineComposer","embedded","cursor","stored","buffer","style","add","wrap","forceNewline","space","raw","item","concat","end","fetch","forceFlush","next","last","filter","ignoreAlignment","endsWith","merge","left","assign","items","repeat","codepageMappings","bixolon","citizen","epson","fujitsu","hp","metapace","mpt","star","xprinter","youku","printerDefinitions","vendor","media","dpi","capabilities","codepages","fonts","A","B","barcodes","supported","cutter","feed","C","interfaces","usb","productName","D","E","images","interface","newline","fallback","ReceiptPrinterEncoder","queue","composer","printerCapabilities","codepageMapping","codepageCandidates","state","defaults","imageMode","feedBeforeCut","errors","printerModel","debug","createCanvas","autoFlush","includes","fromEntries","reset","supports","parseInt","matches","entries","find","toUpperCase","table","r","maxLines","columnEncoder","cell","commands","max","p","verticalAlign","unshift","marginLeft","marginRight","rule","box","contents","paddingLeft","paddingRight","elements","getContext","frames","info","shape","canvas","document","createElement","context","drawImage","getImageData","resizeImageData","Flatten","Dither","encodeStyle","encodeText","autoEncode","requiresFlush","lastLine","lastCommand","shift","reduce","a","console","log","format","from","message","level","warn","printerModels","id"],"mappings":"kWAiIiB,IA9HjB,MAQEA,UAAUC,GACR,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAME,KAAKC,OAAQF,GAAK,EAAG,CAC7C,MAAMG,EAA6B,KAAhBJ,EAAME,KAAKD,GAAmC,KAApBD,EAAME,KAAKD,EAAI,GAAmC,KAApBD,EAAME,KAAKD,EAAI,GAC1FD,EAAME,KAAKG,KAAKD,EAAWH,EAAGA,EAAI,EACnC,CAED,OAAOD,CACR,CAUDM,UAAUN,EAAOM,GACf,IAAK,IAAIL,EAAI,EAAGA,EAAID,EAAME,KAAKC,OAAQF,GAAK,EAAG,CAC7C,MAEMM,EAF6B,KAAhBP,EAAME,KAAKD,GAAmC,KAApBD,EAAME,KAAKD,EAAI,GAAmC,KAApBD,EAAME,KAAKD,EAAI,GAEhEK,EAAY,EAAI,IAC1CN,EAAME,KAAKG,KAAKE,EAAON,EAAGA,EAAI,EAC/B,CAED,OAAOD,CACR,CAUDQ,MAAMR,EAAOM,GACX,MAAMG,EAAe,CACnB,CAAC,GAAI,IAAK,GAAI,KACd,CAAC,IAAK,GAAI,IAAK,KACf,CAAC,GAAI,IAAK,GAAI,KACd,CAAC,IAAK,IAAK,IAAK,KAGlB,IAAK,IAAIR,EAAI,EAAGA,EAAID,EAAME,KAAKC,OAAQF,GAAK,EAAG,CAC7C,MAAMG,EAA6B,KAAhBJ,EAAME,KAAKD,GAAmC,KAApBD,EAAME,KAAKD,EAAI,GAAmC,KAApBD,EAAME,KAAKD,EAAI,GAEpFS,EAAIT,EAAI,EAAID,EAAMW,MAClBC,EAAIC,KAAKC,MAAMb,EAAI,EAAID,EAAMW,OAE7BJ,EADMM,KAAKC,OAAOV,EAAYK,EAAaC,EAAI,GAAGE,EAAI,IAAM,GAC9CN,EAAY,EAAI,IACpCN,EAAME,KAAKG,KAAKE,EAAON,EAAGA,EAAI,EAC/B,CAED,OAAOD,CACR,CASDe,eAAef,GACb,MAAMW,EAAQX,EAAMW,MACdP,EAAY,IAAIY,kBAAkBhB,EAAMW,MAAQX,EAAMiB,QAE5D,IAAK,IAAIC,EAAI,EAAGjB,EAAI,EAAGA,EAAID,EAAME,KAAKC,OAAQe,IAAKjB,GAAK,EACtDG,EAAUc,GAAsB,KAAhBlB,EAAME,KAAKD,GAAmC,KAApBD,EAAME,KAAKD,EAAI,GAAmC,KAApBD,EAAME,KAAKD,EAAI,GAGzF,IAAK,IAAIiB,EAAI,EAAGjB,EAAI,EAAGA,EAAID,EAAME,KAAKC,OAAQe,IAAKjB,GAAK,EAAG,CACzD,MAAMM,EAAQH,EAAUc,GAAK,IAAM,EAAI,IACjCC,EAAQN,KAAKC,OAAOV,EAAUc,GAAKX,GAAS,IAClDP,EAAME,KAAKG,KAAKE,EAAON,EAAGA,EAAI,GAE9BG,EAAUc,EAAI,IAAc,EAARC,EACpBf,EAAUc,EAAIP,EAAQ,IAAc,EAARQ,EAC5Bf,EAAUc,EAAIP,IAAkB,EAARQ,EACxBf,EAAUc,EAAIP,EAAQ,IAAc,EAARQ,CAC7B,CAED,OAAOnB,CACR,CASDoB,SAASpB,GACP,MAAMW,EAAQX,EAAMW,MACdP,EAAY,IAAIY,kBAAkBhB,EAAMW,MAAQX,EAAMiB,QAE5D,IAAK,IAAIC,EAAI,EAAGjB,EAAI,EAAGA,EAAID,EAAME,KAAKC,OAAQe,IAAKjB,GAAK,EACtDG,EAAUc,GAAsB,KAAhBlB,EAAME,KAAKD,GAAmC,KAApBD,EAAME,KAAKD,EAAI,GAAmC,KAApBD,EAAME,KAAKD,EAAI,GAGzF,IAAK,IAAIiB,EAAI,EAAGjB,EAAI,EAAGA,EAAID,EAAME,KAAKC,OAAQe,IAAKjB,GAAK,EAAG,CACzD,MAAMM,EAAQH,EAAUc,GAAK,IAAM,EAAI,IACjCC,EAAQN,KAAKC,OAAOV,EAAUc,GAAKX,GAAS,GAClDP,EAAME,KAAKG,KAAKE,EAAON,EAAGA,EAAI,GAE9BG,EAAUc,EAAI,IAAMC,EACpBf,EAAUc,EAAI,IAAMC,EACpBf,EAAUc,EAAIP,EAAQ,IAAMQ,EAC5Bf,EAAUc,EAAIP,IAAUQ,EACxBf,EAAUc,EAAIP,EAAQ,IAAMQ,EAC5Bf,EAAUc,EAAI,EAAIP,IAAUQ,CAC7B,CAED,OAAOnB,CACR,YCnGc,IAxBjB,MASEqB,QAAQrB,EAAOsB,GACb,IAAK,IAAIrB,EAAI,EAAGA,EAAID,EAAME,KAAKC,OAAQF,GAAK,EAAG,CAC7C,MAAMsB,EAAQvB,EAAME,KAAKD,EAAI,GACvBuB,EAAW,IAAMD,EAEvBvB,EAAME,KAAKD,IAAMsB,EAAQvB,EAAME,KAAKD,GAAKuB,EAAWF,EAAW,IAAM,IACrEtB,EAAME,KAAKD,EAAI,IAAMsB,EAAQvB,EAAME,KAAKD,EAAI,GAAKuB,EAAWF,EAAW,IAAM,IAC7EtB,EAAME,KAAKD,EAAI,IAAMsB,EAAQvB,EAAME,KAAKD,EAAI,GAAKuB,EAAWF,EAAW,IAAM,IAC7EtB,EAAME,KAAKD,EAAI,GAAK,GACrB,CAED,OAAOD,CACR,ICxBH,MAAMyB,EAAc,CAEnBC,MAAS,CACRC,KAAM,QACNC,UAAW,CAAC,MACZrB,MAAO,IAAIsB,MAAM,KAAKxB,KAAK,EAAE,EAAE,KAAKyB,KAAI,CAACC,EAAE9B,IAAMA,KAGlD+B,MAAS,CACRL,KAAM,uBACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAC,CAAE,CAAA,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,WAAY,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAO,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,MAAO,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,OAGrxB2B,MAAS,CACRP,KAAM,SACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,MAAM,MAAQ,CAAA,CAAA,MAAO,CAAA,MAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAM,MAAM,OAAQ,CAAC,MAAM,KAAK,KAAM,CAAA,IAAI,OAAO,KAAK,KAAK,KAAK,KAAI,CAAE,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAQ,CAAA,GAAA,CAAA,CAAA,CAAI,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAM,CAAA,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAA,CAAE,KAAK,KAAK,KAAK,KAAK,KAAK,KAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAGtU4B,MAAS,CACRR,KAAM,QACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAA,CAAA,CAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,IAAO,CAAA,CAAA,CAAA,IAAI,kBAG5S6B,MAAS,CACRT,KAAM,iBACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,aAAa,IAAI,IAAI,IAAI,MAAO,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,UAG3G8B,MAAS,CACRV,KAAM,sBACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,IAAI,IAAI,IAAI,IAAG,CAAA,CAAA,CAAA,CAAK,IAAI,IAAG,GAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,IAAI,IAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAE,CAAG,CAAA,CAAA,KAAK,KAAK,KAAK,KAAK,IAAI,KAAS,CAAA,CAAA,CAAA,CAAA,KAAK,UAG7K+B,MAAS,CACRX,KAAM,sBACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,IAAI,IAAI,IAAQ,CAAA,CAAA,CAAA,CAAA,IAAI,IAAM,GAAC,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,IAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAU,CAAA,CAAE,IAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,MAAO,CAAA,CAAA,CAAA,CAAA,CAAK,KAAK,KAAI,CAAA,CAAA,CAAA,CAAK,IAAG,CAAA,CAAA,CAAA,CAAA,KAGnLgC,MAAS,CACRZ,KAAM,aACNC,UAAW,CAAC,KAAK,MACjBK,QAAS,QACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,MAAM,IAAG,CAAE,IAAG,CAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAO,CAAA,GAAC,IAAI,IAAG,CAAE,IAAI,IAAI,IAAI,MAAM,IAAG,CAAE,IAAI,IAAI,KAAM,CAAC,IAAI,IAAG,CAAE,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAO,CAAA,CAAA,CAAA,QAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAG,GAAI,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,WAAW,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAU,CAAC,IAAK,CAAA,IAAI,IAAI,IAAI,IAAG,CAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAO,CAAC,IAAK,CAAA,KAAK,IAAI,IAAI,IAAG,CAAE,KAAQ,CAAA,CAAA,CAAA,IAAI,WAGnXiC,MAAS,CACRb,KAAM,eACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,IAAI,IAAG,GAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,IAAW,CAAA,CAAA,CAAA,CAAA,CAAA,GAAC,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,IAAI,IAAI,IAAG,CAAA,CAAA,CAAA,CAAK,IAAI,IAAM,GAAC,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,WAAW,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAG,GAAI,CAAC,IAAK,CAAA,IAAI,IAAI,IAAI,IAAG,CAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,IAAK,CAAA,KAAK,IAAI,IAAI,IAAG,CAAE,IAAG,CAAE,IAAG,CAAE,IAAI,IAAG,CAAA,CAAA,KAG/RkC,MAAS,CACRd,KAAM,QACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,UAAU,IAAG,CAAE,KAAM,CAAC,IAAI,MAAM,IAAM,CAAA,CAAA,IAAM,CAAA,CAAA,MAAM,IAAG,CAAE,IAAI,IAAI,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAK,CAAA,IAAI,IAAG,CAAA,GAAK,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,IAAI,IAAI,IAAG,CAAA,CAAA,CAAA,CAAK,IAAI,IAAM,GAAC,OAAO,IAAI,IAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAG,CAAA,CAAA,CAAA,CAAK,IAAI,IAAM,GAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,IAAG,CAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAK,CAAA,IAAI,IAAI,IAAI,IAAI,UAG9XmC,MAAS,CACRf,KAAM,UACNC,UAAW,CAAC,KAAK,KAAK,MACtBK,QAAS,QACT1B,MAAO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,IAAI,IAAG,CAAE,IAAG,CAAE,IAAI,IAAK,CAAA,IAAK,CAAA,KAAM,CAAE,CAAA,IAAI,IAAM,CAAA,CAAA,IAAI,IAAI,IAAI,IAAG,CAAA,CAAG,IAAI,IAAI,IAAG,CAAE,KAAM,CAAA,CAAA,CAAA,CAAA,CAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAK,CAAA,IAAI,IAAI,IAAO,CAAA,GAAC,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,IAAG,CAAA,CAAA,CAAA,CAAK,IAAI,IAAG,GAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,IAAI,IAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAW,CAAC,IAAI,IAAI,IAAK,CAAA,IAAI,IAAM,CAAA,CAAA,IAAQ,CAAA,CAAA,CAAA,CAAA,IAAI,IAAM,GAAC,CAAI,CAAA,CAAA,CAAA,IAAI,IAAI,IAAI,IAAI,IAAI,IAAG,CAAE,IAAI,IAAG,CAAA,CAAG,IAAG,GAAI,CAAE,CAAA,IAAI,IAAI,IAAI,IAAS,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,IAAI,IAAI,UAG5UoC,MAAS,CACRhB,KAAM,UACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,IAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAM,CAAE,CAAA,IAAI,SAAS,IAAG,CAAA,CAAG,IAAG,CAAE,IAAI,IAAI,KAAM,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,IAAI,IAAI,IAAI,MAAK,CAAE,IAAI,IAAG,CAAA,GAAK,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAG,GAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,IAAI,IAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAM,CAAC,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAQ,CAAA,CAAA,CAAA,CAAA,MAAM,OAAO,CAAC,IAAG,CAAE,IAAI,IAAI,IAAI,IAAK,CAAA,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,KAAM,CAAC,IAAI,MAAM,KAAK,IAAI,IAAI,IAAG,CAAE,IAAK,CAAA,IAAI,IAAI,MAAM,WAGtWqC,MAAS,CACRjB,KAAM,WACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAQ,CAAA,GAAC,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,KAAK,KAAK,KAAS,CAAA,CAAA,CAAA,CAAA,KAAK,KAAI,GAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,KAAK,KAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAM,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAI,CAAA,CAAA,CAAA,CAAK,KAAK,KAAO,GAAC,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAG,CAAA,KAGjiBsC,MAAS,CACRlB,KAAM,UACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAO,CAAA,GAAC,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAM,CAAA,CAAA,IAAK,CAAA,IAAI,IAAI,KAAM,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,IAAK,CAAA,IAAW,CAAA,CAAA,CAAA,CAAA,CAAA,GAAC,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,IAAI,IAAI,IAAQ,CAAA,CAAA,CAAA,CAAA,IAAI,IAAM,GAAC,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,IAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAG,CAAA,CAAA,CAAA,CAAK,IAAI,IAAG,GAAI,CAAC,IAAG,CAAE,IAAI,IAAI,IAAI,IAAG,CAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,IAAG,CAAE,MAAM,IAAI,IAAI,IAAG,CAAE,IAAG,CAAE,IAAG,CAAE,IAAI,IAAG,CAAA,CAAA,KAGpUuC,MAAS,CACRnB,KAAM,OACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,iBAAoB,CAAA,IAGhDwC,MAAS,CACRpB,KAAM,aACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,KAAK,IAAG,CAAE,IAAM,CAAA,CAAA,IAAK,CAAA,IAAI,IAAG,CAAE,IAAI,KAAM,CAAA,CAAE,IAAI,IAAK,CAAA,KAAK,IAAG,CAAE,IAAI,IAAO,CAAA,CAAA,CAAA,KAAK,KAAM,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,YAAkB,CAAA,CAAA,CAAA,CAAA,IAGhIyC,MAAS,CACRrB,KAAM,YACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,IAAI,IAAI,IAAO,CAAA,GAAC,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,IAAI,IAAG,CAAA,CAAG,IAAG,CAAE,IAAG,CAAA,GAAK,CAAK,CAAA,CAAA,CAAA,CAAA,IAAI,IAAI,IAAI,cAAoB,CAAA,CAAA,CAAA,CAAA,IAGpH0C,MAAS,CACRtB,KAAM,SACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAI,CAAA,CAAA,CAAA,CAAA,GAAe,CAAA,CAAA,CAAA,CAAA,CAAA,IAG1K2C,MAAS,CACRvB,KAAM,kBACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,IAAK,CAAA,IAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,IAAI,KAAM,CAAA,CAAE,IAAI,IAAK,CAAA,IAAI,IAAM,CAAA,CAAA,IAAI,IAAG,CAAA,CAAA,CAAI,IAAI,OAAO,CAAC,IAAI,IAAG,CAAA,CAAG,IAAI,IAAI,IAAI,IAAI,IAAG,CAAA,CAAA,CAAA,CAAK,IAAG,CAAA,GAAW,CAAA,CAAA,CAAA,CAAA,IAGhJ4C,MAAS,CACRxB,KAAM,SACNC,UAAW,CAAC,MACZK,QAAS,QACTmB,OAAQ,IACR7C,MAAO,CAAC,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,MAAM,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,QAG/rB8C,MAAS,CACR1B,KAAM,SACNC,UAAW,CAAC,KAAK,MACjBK,QAAS,QACT1B,MAAO,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,IAAG,CAAE,IAAG,CAAA,GAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,KAAY,CAAA,CAAA,CAAA,CAAA,IAGvE+C,MAAS,CACR3B,KAAM,aACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,CAAA,CAAA,CAAI,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAI,CAAA,CAAA,CAAA,CAAK,KAAK,UAGlZgD,MAAS,CACR5B,KAAM,QACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,MAAM,IAAI,IAAI,IAAI,KAAK,KAAK,IAAI,KAAK,KAAM,CAAC,IAAI,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAG,CAAE,IAAI,IAAI,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAO,CAAA,GAAC,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,IAAI,IAAI,IAAQ,CAAA,CAAA,CAAA,CAAA,IAAI,IAAG,GAAI,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,IAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAQ,CAAA,CAAA,CAAA,CAAA,IAAI,IAAG,GAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,IAAK,CAAA,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAG,CAAA,KAG7ciD,MAAS,CACR7B,KAAM,OACNC,UAAW,CAAC,MACZK,QAAS,QACTmB,OAAQ,IACR7C,MAAO,CAAC,KAAK,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,QAGjqBkD,OAAU,CACT9B,KAAM,SACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,KAAK,MAAM,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,MAAM,MAAM,KAAK,MAAM,MAAM,KAAK,MAAM,MAAM,KAAK,MAAM,MAAM,KAAK,MAAO,CAAC,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,KAAK,MAAO,CAAC,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,OAAQ,EAAE,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAQ,CAAC,KAAK,MAAM,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,OAAQ,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAa,IAGrmBmD,OAAU,CACT/B,KAAM,QACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,MAAU,CAAA,CAAA,CAAA,CAAA,MAAY,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,MAAM,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,KAAK,MAAM,MAAM,KAAK,KAAK,MAAM,OAAQ,CAAC,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,IAAI,MAAO,CAAC,MAAM,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAK,CAAA,GAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,KAAK,MAAM,MAAM,MAAU,CAAA,CAAA,CAAA,CAAA,IAAI,MAAQ,GAAC,OAAO,MAAM,KAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,OAAQ,CAAC,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAU,CAAA,CAAA,CAAA,CAAA,KAAK,MAAK,GAAI,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,KAAK,MAAM,MAAM,MAAM,OAAQ,CAAC,IAAI,MAAM,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAI,CAAA,KAG/mBoD,OAAU,CACThC,KAAM,YACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CAAG,CAAA,CAAA,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAG,CAAA,CAAA,CAAA,KAG1EqD,OAAU,CACTjC,KAAM,qBACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,IAAI,IAAmB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAC,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,aAAe,IAG1EsD,OAAU,CACTlC,KAAM,aACNC,UAAW,CAAC,MACZK,QAAS,YACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAQ,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAQ,CAAC,GAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAS,CAAA,CAAA,CAAC,IAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAQ,CAAA,CAAC,IAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,SAG9RuD,OAAU,CACTnC,KAAM,YACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,IAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,IAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAY,CAAC,IAAK,CAAA,IAAI,IAAM,CAAA,CAAA,IAAI,IAAI,IAAQ,CAAA,CAAA,CAAA,CAAA,IAAI,IAAG,GAAK,CAAA,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAG,CAAA,CAAA,CAAI,IAAI,IAAG,CAAA,KAG9JwD,OAAU,CACTpC,KAAM,2BACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,IAAK,CAAA,IAAS,CAAA,CAAA,CAAA,CAAA,CAAA,IAAO,CAAA,GAAC,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAC,CAAC,IAAK,CAAA,IAAI,IAAM,CAAA,CAAA,IAAI,IAAI,IAAQ,CAAA,CAAA,CAAA,CAAA,IAAI,IAAG,GAAK,CAAA,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAG,CAAA,CAAG,IAAI,IAAG,CAAA,KAGpKyD,OAAU,CACTrC,KAAM,kBACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,KAAK,KAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,MAAO,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,KAAI,CAAA,CAAA,CAAA,CAAK,KAAK,IAAG,CAAA,KAGpT0D,OAAU,CACTtC,KAAM,kBACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,IAAI,IAAG,CAAA,GAAK,CAAC,IAAoB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAC,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,IAAI,IAAI,IAAG,GAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAGxG2D,OAAU,CACTvC,KAAM,yBACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,SAAS,KAAK,IAAG,CAAA,KAG3E4D,OAAU,CACTxC,KAAM,QACNC,UAAW,CAAC,MACZK,QAAS,QACTmB,OAAQ,IACR7C,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,OAGpkB6D,OAAU,CACTzC,KAAM,mBACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,OAAO,IAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,IAAK,CAAA,KAAM,CAAC,IAAI,IAAI,IAAG,CAAA,CAAG,IAAM,CAAA,CAAA,IAAO,CAAA,CAAA,CAAA,KAAK,IAAG,GAAI,CAAC,IAAI,IAAG,CAAE,IAAI,IAAI,IAAI,IAAI,cAAoB,CAAA,CAAA,CAAA,CAAA,IAGnI8D,OAAU,CACT1C,KAAM,oBACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,IAAM,CAAA,CAAA,IAAK,CAAA,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAG,CAAE,KAAM,CAAE,CAAA,IAAI,MAAM,IAAI,IAAI,IAAI,IAAG,CAAA,CAAG,IAAI,IAAI,IAAI,IAAI,KAAM,CAAK,CAAA,CAAA,CAAA,CAAA,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAK,CAAA,QAAc,CAAA,CAAA,CAAA,CAAA,IAGhL+D,OAAU,CACT3C,KAAM,oBACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,KAAM,CAAA,CAAA,CAAA,CAAI,IAAG,CAAE,IAAI,IAAI,IAAI,aAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,IAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAiB,CAAA,CAAA,CAAA,CAAA,IAGxGgE,OAAU,CACT5C,KAAM,UACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,IAAO,CAAA,GAAC,SAAS,IAAG,CAAA,CAAA,CAAA,CAAA,CAAM,IAAI,KAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,IAAI,cAAoB,CAAA,CAAA,CAAA,CAAA,IAGlGiE,OAAU,CACT7C,KAAM,cACNC,UAAW,CAAC,MACZK,QAAS,YACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,gBAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,MAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAG5DkE,OAAU,CACT9C,KAAM,iBACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAS,CAAA,IAGlS,YAAa,CACZoB,KAAM,UACNC,UAAW,CAAC,MACZK,QAAS,QACTmB,OAAQ,IACR7C,MAAO,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAGrgB,YAAa,CACZoB,KAAM,UACNC,UAAW,CAAC,KAAK,KAAK,MACtBK,QAAS,YACT1B,MAAO,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,IAAI,IAAI,IAAG,CAAE,IAAI,IAAG,CAAA,CAAG,IAAI,IAAI,IAAI,IAAG,CAAE,IAAI,KAAM,CAAA,CAAE,IAAI,IAAI,IAAK,CAAA,IAAI,IAAI,IAAK,CAAA,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,IAAM,CAAA,CAAA,IAAK,CAAA,IAAI,IAAG,CAAE,IAAG,CAAE,IAAG,CAAE,IAAG,CAAA,CAAG,KAAM,CAAC,IAAI,IAAI,IAAG,CAAA,CAAG,IAAG,CAAA,CAAG,IAAI,IAAG,CAAE,IAAG,CAAA,CAAG,IAAG,GAAI,CAAC,IAAG,CAAA,CAAG,IAAK,CAAA,IAAI,IAAK,CAAA,IAAK,CAAA,IAAK,CAAA,IAAM,CAAA,CAAA,KAAM,CAAC,IAAI,IAAI,IAAM,CAAA,CAAA,IAAM,CAAA,CAAA,IAAI,IAAK,CAAA,IAAM,CAAA,CAAA,IAAI,OAG1S,YAAa,CACZoB,KAAM,QACNC,UAAW,CAAC,MACZK,QAAS,YACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAE,CAAA,KAAK,KAAI,CAAE,KAAK,KAAS,CAAA,CAAA,CAAA,CAAA,QAAQ,MAAO,CAAK,CAAA,CAAA,CAAA,CAAA,IAAI,IAAI,IAAG,CAAE,IAAI,IAAI,IAAG,CAAE,IAAG,CAAE,IAAI,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,SAG1W,aAAc,CACboB,KAAM,UACNC,UAAW,CAAC,MACZK,QAAS,YACT1B,MAAO,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,KAAM,CAAA,IAAK,CAAA,IAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAC,KAAK,IAAG,CAAA,CAAA,CAAI,IAAO,CAAA,CAAA,CAAA,IAAI,IAAI,IAAG,GAAS,CAAA,CAAA,CAAA,IAGvFmE,YAAe,CACd/C,KAAM,UACNC,UAAW,CAAC,KAAK,KAAK,MACtBK,QAAS,cACT1B,MAAO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,MAAK,CAAA,CAAA,CAAA,CAAK,MAAK,CAAA,CAAA,CAAI,IAAI,IAAG,CAAE,KAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,MAAK,CAAA,CAAA,CAAI,IAAI,IAAG,CAAE,KAAM,CAAA,CAAE,IAAI,IAAI,IAAK,CAAA,IAAQ,CAAA,CAAA,CAAA,CAAA,IAAQ,CAAA,CAAA,CAAA,CAAA,KAAM,CAAG,CAAA,CAAA,IAAI,IAAS,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,IAAG,CAAE,IAAI,IAAI,IAAI,KAAM,CAAC,IAAG,CAAA,CAAG,IAAG,CAAE,IAAI,IAAK,CAAA,IAAK,CAAA,IAAK,CAAA,IAAM,CAAA,CAAA,KAAM,CAAC,IAAI,IAAI,IAAM,CAAA,CAAA,IAAM,CAAA,CAAA,IAAI,IAAK,CAAA,IAAM,CAAA,CAAA,IAAM,GAAC,CAAC,MAAM,IAAG,CAAE,IAAI,IAAG,CAAE,IAAG,CAAE,IAAG,CAAE,IAAG,CAAA,CAAG,KAAM,CAAC,IAAI,IAAI,IAAM,CAAA,CAAA,IAAM,CAAA,CAAA,IAAI,IAAK,CAAA,IAAM,CAAA,CAAA,IAAI,OAGjVoE,YAAe,CACdhD,KAAM,WACNC,UAAW,CAAC,MACZK,QAAS,cACT1B,MAAO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,KAAK,KAAM,CAAA,KAAS,CAAA,CAAA,CAAA,CAAA,MAAM,KAAI,CAAE,KAAK,KAAK,KAAK,MAAO,CAAC,YAAY,MAAK,CAAE,KAAM,CAAA,KAAK,KAAK,KAAK,MAAO,CAAE,CAAA,KAAK,KAAK,MAAM,KAAI,CAAA,CAAG,KAAI,CAAE,KAAI,CAAA,CAAA,CAAA,CAAK,MAAO,GAAG,KAAK,KAAK,KAAQ,CAAA,CAAA,CAAA,KAAK,KAAK,KAAI,CAAE,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,QAGviBqE,YAAe,CACdjD,KAAM,QACNC,UAAW,CAAC,MACZK,QAAS,YACT1B,MAAO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,KAAK,MAAM,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,OAAQ,CAAC,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,KAAa,CAAA,CAAA,CAAA,CAAA,CAAA,IAGzLsE,YAAe,CACdlD,KAAM,QACNC,UAAW,CAAC,MACZK,QAAS,cACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,SAAS,MAAK,CAAE,MAAO,CAAA,OAAO,MAAK,GAAI,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAO,MAAK,CAAE,MAAO,CAAA,MAAM,OAAQ,CAAE,CAAA,IAAI,IAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,MAAU,CAAA,CAAA,CAAA,CAAA,MAAO,CAAA,CAAA,CAAA,CAAA,CAAK,IAAO,CAAA,CAAA,CAAA,IAAI,IAAI,IAAK,CAAA,KAAK,IAAI,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,SAGtbuE,YAAe,CACdnD,KAAM,UACNC,UAAW,CAAC,MACZK,QAAS,cACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAQ,GAAC,CAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAQ,GAAA,CAAA,CAAA,CAAI,CAAC,gBAAgB,IAAI,IAAG,GAAK,CAAA,CAAC,IAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,IAAI,IAAG,KAGzHwE,YAAe,CACdpD,KAAM,SACNC,UAAW,CAAC,MACZK,QAAS,cACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAO,MAAK,CAAE,MAAK,GAAI,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAO,MAAK,CAAE,MAAM,OAAQ,KAAK,KAAI,CAAA,CAAA,CAAA,CAAA,CAAM,IAAG,CAAA,CAAA,CAAA,CAAA,GAAQ,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAU,CAAA,CAAA,CAAA,CAAA,GAAC,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAQ,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,KAAK,KAAK,SAGzdyE,YAAe,CACdrD,KAAM,SACNC,UAAW,CAAC,MACZK,QAAS,cACT1B,MAAO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,KAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAO,CAAA,CAAA,KAAK,KAAK,MAAO,CAAC,KAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,KAAI,CAAE,KAAI,CAAA,CAAG,KAAK,KAAK,MAAO,CAAA,CAAE,KAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,KAAW,CAAA,CAAA,CAAA,CAAA,GAAC,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAS,CAAA,CAAA,CAAA,CAAA,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAM,CAAA,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,EAAE,KAAI,CAAE,KAAK,KAAK,KAAK,KAAU,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,SAAS,CAAC,KAAK,KAAK,KAAK,KAAM,CAAA,KAAK,MAAM,KAAI,CAAE,KAAI,CAAA,CAAG,KAAK,KAAK,QAGla0E,YAAe,CACdtD,KAAM,aACNC,UAAW,CAAC,KAAK,MACjBK,QAAS,cACT1B,MAAO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,MAAU,CAAA,CAAA,CAAA,CAAA,MAAO,CAAA,OAAO,MAAM,IAAI,IAAI,KAAM,SAAS,MAAK,CAAE,MAAK,CAAE,MAAM,IAAI,IAAI,OAAQ,CAAA,CAAE,MAAS,CAAA,CAAA,CAAA,MAAQ,CAAA,CAAA,KAAK,IAAG,CAAA,CAAA,CAAA,CAAK,KAAM,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAK,CAAA,QAAQ,KAAM,CAAC,IAAI,IAAI,IAAI,IAAG,CAAA,CAAG,IAAI,IAAI,IAAK,CAAA,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,IAAI,IAAI,IAAG,CAAE,IAAO,CAAA,CAAA,CAAA,IAAI,IAAI,IAAI,IAAG,CAAE,IAAI,IAAM,GAAC,CAAC,IAAI,IAAI,IAAI,IAAM,CAAA,CAAA,IAAI,IAAI,IAAG,CAAE,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,IAAI,IAAI,IAAG,CAAE,IAAO,CAAA,CAAA,CAAA,IAAI,IAAI,IAAI,IAAG,CAAE,IAAI,IAAI,OAGnY2E,YAAe,CACdvD,KAAM,aACNC,UAAW,CAAC,MACZK,QAAS,cACT1B,MAAO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,MAAS,CAAA,CAAA,CAAA,MAAQ,GAAC,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,SAAS,MAAK,GAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,IAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,IAAQ,CAAA,CAAA,GAAC,CAAC,IAAK,CAAA,MAAM,IAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,IAAI,OAAO,CAAA,CAAA,CAAA,CAAI,IAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,IAAG,CAAA,CAAA,GAAM,CAAC,IAAK,CAAA,IAAM,CAAA,CAAA,WAAW,IAAI,KAAI,KAGhM4E,OAAU,CACTxD,KAAM,SACNC,UAAW,CAAC,MACZK,QAAS,cACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,cAAc,KAAK,KAAO,GAAC,cAAc,KAAK,KAAO,GAAC,EAAE,KAAK,KAAK,KAAM,CAAA,SAAS,KAAI,CAAA,CAAA,CAAA,CAAK,MAAO,KAAK,KAAI,CAAA,CAAA,CAAA,CAAA,CAAM,KAAM,CAAA,KAAK,KAAK,KAAK,MAAY,CAAA,CAAA,CAAA,IAGlK6E,OAAU,CACTzD,KAAM,0BACNC,UAAW,CAAC,MACZK,QAAS,SACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,UAAU,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,KAAK,KAAK,KAAK,KAAI,IAAK,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,KAAK,KAAK,KAAK,SAGxI8E,OAAU,CACT1D,KAAM,0BACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,MAAK,CAAA,CAAA,CAAA,CAAK,MAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAC,CAAE,CAAA,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAI,YAAY,KAAI,CAAA,CAAG,KAAO,GAAA,CAAE,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,KAAK,KAAK,QAG/J+E,OAAU,CACT3D,KAAM,0BACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAI,CAAA,CAAA,CAAA,GAAO,CAAC,KAAK,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,MAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,MAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,KAAK,MAAK,CAAA,CAAA,CAAI,QAG9KgF,OAAU,CACT5D,KAAM,0BACNC,UAAW,CAAC,MACZK,QAAS,SACT1B,MAAO,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,KAAK,qBAA4B,CAAA,CAAA,CAAA,CAAA,CAAA,IAGpDiF,OAAU,CACT7D,KAAM,0BACNC,UAAW,CAAC,MACZK,QAAS,SACT1B,MAAO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,KAAK,KAAK,KAAK,MAAM,CAAA,CAAA,CAAA,CAAA,CAAM,eAAe,KAAI,GAAI,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,SAGhGkF,OAAU,CACT9D,KAAM,0BACNC,UAAW,CAAC,MACZK,QAAS,SACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,QAAQ,CAAA,CAAA,CAAA,CAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,OAAQ,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAK,CAAA,CAAA,CAAA,CAAK,OAGrkBmF,MAAS,CACR/D,KAAM,8BACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAM,GAAC,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,KAAK,IAAI,IAAI,KAAM,CAAA,KAAK,KAAK,KAAK,KAAI,GAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAK,CAAA,KAAK,MAAO,CAAC,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAI,CAAA,CAAA,CAAI,IAAI,IAAI,KAAK,KAAM,CAAA,CAAE,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAM,CAAE,CAAA,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,UAGnXoF,cAAiB,CAChBhE,KAAM,uCACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,IAAI,IAAQ,CAAA,CAAA,CAAA,CAAA,MAAM,IAAI,IAAI,IAAI,IAAO,CAAA,GAAC,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,KAAK,IAAI,IAAI,KAAM,CAAA,KAAK,KAAK,KAAK,KAAI,GAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAK,CAAA,KAAK,MAAO,CAAC,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAI,CAAA,CAAA,CAAI,IAAI,IAAI,KAAK,KAAM,CAAA,CAAE,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAM,CAAE,CAAA,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,UAGnXqF,OAAU,CACTjE,KAAM,sBACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAC,CAAA,CAAA,CAAG,KAAO,CAAA,CAAA,KAAK,KAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAC,CAAK,CAAA,CAAA,CAAA,CAAA,SAAS,KAAI,CAAA,CAAA,CAAA,CAAK,KAAI,GAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,MAAO,CAAC,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,MAAO,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,KAAK,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,MAAO,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,QAGlrBsF,MAAS,CACRlE,KAAM,QACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAQ,CAAA,GAAC,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAI,CAAA,CAAA,CAAA,CAAA,CAAA,GAAS,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAGzlBuF,QAAW,CACVnE,KAAM,4BACNC,UAAW,CAAC,MACZK,QAAS,SACT1B,MAAO,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,IAAI,gBAAmB,CAAA,IAGlD,iBAAkB,CACjBoB,KAAM,WACNC,UAAW,CAAC,MACZK,QAAS,QACTmB,OAAQ,IACR7C,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,MAG9sB,kBAAmB,CAClBoB,KAAM,+CACNC,UAAW,CAAC,KAAK,KAAK,MACtBK,QAAS,YACT1B,MAAO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAa,CAAA,CAAA,CAAA,CAAA,CAAA,IAG1L,gBAAiB,CAChBoB,KAAM,WACNC,UAAW,CAAC,MACZK,QAAS,QACTmB,OAAQ,IACR7C,MAAO,CAAC,IAAI,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,OAAO,MAAM,KAAK,KAAK,MAAM,OAAO,KAAK,KAAK,KAAK,KAAK,OAAO,KAAK,KAAK,KAAK,OAG7nB,gBAAiB,CAChBoB,KAAM,WACNC,UAAW,CAAC,MACZK,QAAS,gBACT1B,MAAO,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,GAAG,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAQ,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAQ,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAQ,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAW,CAAA,IAG/Z,aAAc,CACboB,KAAM,OACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,KAAK,KAAK,KAAK,KAAO,GAAA,CAAE,aAAa,IAAI,IAAI,SAG7I,aAAc,CACboB,KAAM,QACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,MAAO,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,SAG5a,gBAAiB,CAChBoB,KAAM,uCACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,KAAK,KAAK,KAAK,KAAK,gBAGjD,iBAAkB,CACjBoB,KAAM,SACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAK,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAG,KAGzX,kBAAmB,CAClBoB,KAAM,sCACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAI,CAAA,CAAA,CAAA,CAAA,GAAe,CAAA,CAAA,CAAA,CAAA,CAAA,IAG1K,iBAAkB,CACjBoB,KAAM,mDACNC,UAAW,CAAC,MACZK,QAAS,QACT1B,MAAO,CAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAI,CAAA,CAAA,CAAA,CAAA,MAK5JwF,EAAU,CACfC,OAAU,QACVC,OAAU,QACVC,OAAU,QACVC,OAAU,QACVC,SAAY,YACZC,SAAY,YACZC,SAAY,YACZC,UAAa,aACbC,SAAY,iBACZC,SAAY,iBACZC,MAAS,cAGJC,EAAU,CACZC,GAAI,+CACJC,GAAI,6BACJC,GAAI,8EACJC,GAAI,oHACJC,GAAI,uDACJC,GAAI,0CACJC,GAAI,oCACJC,GAAI,gDACJC,GAAI,0DACJC,GAAI,yBACJC,GAAI,2CACJC,GAAI,+BACJC,GAAI,2CACJC,GAAI,gDACJC,GAAI,kDACJC,GAAI,qCACJC,GAAI,yCACJC,GAAI,wCACJC,GAAI,0CACJC,GAAI,8CACJC,GAAI,2CACJC,GAAI,UACJC,GAAI,uCACJC,GAAI,8CACJC,GAAI,wCAMR,MAAMC,EAOJC,sBACE,OAAOC,OAAOC,KAAK/G,EACpB,CASD6G,mBAAmBG,GAiBjB,YAhBiC,IAAtB1C,EAAQ0C,KACjBA,EAAW1C,EAAQ0C,SAGgB,IAA1BhH,EAAYgH,KACrBA,EAAW,cAKmC,IAArChH,EAAYgH,GAAUC,aAC/BjH,EAAYgH,GAAUC,WAAaC,KAAKC,cAAcH,GAAU,IAK3DI,gBAAgBpH,EAAYgH,GACpC,CAYDH,sBAAsBG,GAKpB,YAJiC,IAAtB1C,EAAQ0C,KACjBA,EAAW1C,EAAQ0C,SAGgB,IAA1BhH,EAAYgH,SACwB,IAApChH,EAAYgH,GAAU7G,UACxBH,EAAYgH,GAAU7G,UAAUE,KAAK7B,IAAC,CAAO6I,SAAU7I,EAAG8I,OAAQpC,EAAQ1G,OAG5E,EACR,CAUDqI,gBAAgBG,GAKd,YAJiC,IAAtB1C,EAAQ0C,KACjBA,EAAW1C,EAAQ0C,SAGgB,IAA1BhH,EAAYgH,EAKxB,CAUDH,cAAcU,EAAOP,GACnB,MAAMQ,EAAS,IAAIC,WAAWF,EAAM7I,QAC9BgJ,EAAaR,KAAKS,YAAYX,GAEpC,IAAK,IAAIY,EAAI,EAAGA,EAAIL,EAAM7I,OAAQkJ,IAAK,CACrC,MAAMC,EAAYN,EAAMO,YAAYF,GAC9BG,EAAWL,EAAWT,WAAWe,WAAWxJ,GAAMA,IAAMqJ,IAG5DL,EAAOI,IADS,IAAdG,EACUA,EAEA,EAEf,CAED,OAAOP,CACR,CAUDX,kBAAkBU,EAAOU,GACvB,MAAMC,EAAY,GAClB,IACIC,EADAC,GAAY,EAGhB,IAAK,IAAIR,EAAI,EAAGA,EAAIL,EAAM7I,OAAQkJ,IAAK,CACrC,MAAMC,EAAYN,EAAMO,YAAYF,GAEpC,IAAIS,EACAC,EAAO,EAEX,IAAKD,GAAaF,EAAS,CACzB,MACMJ,EADab,KAAKS,YAAYQ,GACRlB,WAAWe,WAAWxJ,GAAMA,IAAMqJ,KAE5C,IAAdE,IACFM,EAAYF,EACZG,EAAOP,EAEV,CAED,IAAKM,EACH,IAAK,IAAI7J,EAAI,EAAGA,EAAIyJ,EAAWvJ,OAAQF,IAAK,CAC1C,MACMuJ,EADab,KAAKS,YAAYM,EAAWzJ,IACnByI,WAAWe,WAAWxJ,GAAMA,IAAMqJ,IAE9D,IAAkB,IAAdE,EAAiB,CACnBM,EAAYJ,EAAWzJ,GACvB8J,EAAOP,EACP,KACD,CACF,CAGEM,IACHA,EAAYF,GAAWF,EAAW,GAClCK,EAAO,IAGLH,GAAWE,IACTF,IACFD,EAAUE,GAAUG,MAAQ,IAAId,WAAWS,EAAUE,GAAUG,QAGjEH,IACAF,EAAUE,GAAY,CACpBpB,SAAUqB,EACVE,MAAO,IAGTJ,EAAUE,GAGZH,EAAUE,GAAUG,MAAMC,KAAKF,EAChC,CAMD,OAJIH,IACFD,EAAUE,GAAUG,MAAQ,IAAId,WAAWS,EAAUE,GAAUG,QAG1DL,CACR,CAUDrB,qBAAqBG,EAAUyB,GAC7B,IAAIxB,EAAa,IAAI7G,MAAM,KAU3B,GARIqI,IAEAxB,OAD2C,IAAlCjH,EAAYgH,GAAUxG,QAClByG,EAAWrI,KAAK,OAEhBsI,KAAKS,YAAY3H,EAAYgH,GAAUxG,SAASyG,YAItB,KAAvCjH,EAAYgH,GAAUlI,MAAMJ,QAC9B,IAAK,IAAIF,EAAI,EAAGA,EAAI,GAAIA,IACtB,GAA8C,iBAAnCwB,EAAYgH,GAAUlI,MAAMN,GAIvC,IAAK,IAAIkK,EAAI,EAAGA,EAAI,GAAIA,IAC2B,iBAAtC1I,EAAYgH,GAAUlI,MAAMN,GAAGkK,KAI1CzB,EAAe,GAAJzI,EAASkK,GAAK1I,EAAYgH,GAAUlI,MAAMN,GAAGkK,QAGvD,CACL,MAAM/G,EAAS3B,EAAYgH,GAAUrF,QAAU,EAE/C,IAAK,IAAInD,EAAI,EAAGA,EAAIwB,EAAYgH,GAAUlI,MAAMJ,OAAQF,IACR,iBAAnCwB,EAAYgH,GAAUlI,MAAMN,KAIvCyI,EAAWtF,EAASnD,GAAKwB,EAAYgH,GAAUlI,MAAMN,GAExD,CAED,OAAOyI,CACR,ECxyBH,IAAA0B,EAAiBC,iBCAjB,MAAMA,EAAYC,EAElB,SAASC,EAAiBC,EAAKC,GAC7B,IAAIC,EAAM,EAEV,IAAK,IAAI9J,EAAI,EAAGA,EAAI6J,EAAIxJ,OAAQL,IAC9B,IAAK,IAAIF,EAAI,EAAGA,EAAI+J,EAAI9J,MAAOD,IAAK,CAClC,MAAMiK,EAAO9J,KAAKC,MAAMJ,EAAI8J,EAAI7J,MAAQ8J,EAAI9J,OAG5C,IAAIiK,EAAuC,GAF9B/J,KAAKC,MAAMF,EAAI4J,EAAIvJ,OAASwJ,EAAIxJ,QAEvBuJ,EAAI7J,MAASgK,GAEnCF,EAAIvK,KAAKwK,KAASF,EAAItK,KAAK0K,KAC3BH,EAAIvK,KAAKwK,KAASF,EAAItK,KAAK0K,KAC3BH,EAAIvK,KAAKwK,KAASF,EAAItK,KAAK0K,KAC3BH,EAAIvK,KAAKwK,KAASF,EAAItK,KAAK0K,IAC5B,CAEL,CAEA,SAASC,EAAuBL,EAAKC,GACnC,SAASK,EAAaC,EAAGC,EAAMC,EAAMC,EAAMC,GACzC,OAAOtK,KAAKuK,OAAOL,EAAIC,GAAQG,GAAQF,EAAOF,GAAKG,EACpD,CAED,SAASG,EAAuBjI,EAAQ1C,EAAGE,EAAG0K,EAAMC,GAClD,MAAML,EAAOV,EAAItK,KAA+B,GAAxBU,EAAI4J,EAAI7J,MAAQ2K,GAAalI,GACrD,GAAIkI,IAASC,EAAM,OAAOL,EAG1B,OAAOJ,EAAYpK,EAAG4K,EAAMC,EAAML,EADrBV,EAAItK,KAA+B,GAAxBU,EAAI4J,EAAI7J,MAAQ4K,GAAanI,GAEtD,CAED,SAASoI,EAAqBpI,EAAQ1C,EAAG4K,EAAMC,EAAM3K,EAAG6K,EAAMC,GAC5D,MAAMR,EAAOG,EAAsBjI,EAAQ1C,EAAG+K,EAAMH,EAAMC,GAC1D,GAAIE,IAASC,EAAM,OAAOR,EAG1B,OAAOJ,EAAYlK,EAAG6K,EAAMC,EAAMR,EADrBG,EAAsBjI,EAAQ1C,EAAGgL,EAAMJ,EAAMC,GAE3D,CAED,IAAIb,EAAM,EAEV,IAAK,IAAI9J,EAAI,EAAGA,EAAI6J,EAAIxJ,OAAQL,IAC9B,IAAK,IAAIF,EAAI,EAAGA,EAAI+J,EAAI9J,MAAOD,IAAK,CAClC,MAAMiK,EAAOjK,EAAI8J,EAAI7J,MAAQ8J,EAAI9J,MAC3BgL,EAAO/K,EAAI4J,EAAIvJ,OAASwJ,EAAIxJ,OAE5BqK,EAAOzK,KAAKC,MAAM6J,GAClBc,EAAO5K,KAAKC,MAAM6K,GAElBJ,EAAO1K,KAAK+K,IAAI/K,KAAKgL,KAAKlB,GAAOH,EAAI7J,MAAQ,GAC7C+K,EAAO7K,KAAK+K,IAAI/K,KAAKgL,KAAKF,GAAOnB,EAAIvJ,OAAS,GAEpDwJ,EAAIvK,KAAKwK,KAASc,EAAoB,EAAGb,EAAMW,EAAMC,EAAMI,EAAMF,EAAMC,GACvEjB,EAAIvK,KAAKwK,KAASc,EAAoB,EAAGb,EAAMW,EAAMC,EAAMI,EAAMF,EAAMC,GACvEjB,EAAIvK,KAAKwK,KAASc,EAAoB,EAAGb,EAAMW,EAAMC,EAAMI,EAAMF,EAAMC,GACvEjB,EAAIvK,KAAKwK,KAASc,EAAoB,EAAGb,EAAMW,EAAMC,EAAMI,EAAMF,EAAMC,EACxE,CAEL,UAEiB,SAA0B1L,EAAOW,EAAOM,EAAQ6K,GAG/D,IAAIC,EACJ,OAHAD,EAAYA,GAAa,0BAIvB,IAAK,mBAAoBC,EAASxB,EAAiB,MACnD,IAAK,yBAEL,IAAK,0BAA2BwB,EAASlB,EAAuB,MAChE,QAAS,MAAM,IAAImB,MAAM,sBAAsBF,KAGjD,MAAMG,EAAS,IAAI5B,EAAU1J,EAAOM,GAIpC,OAFA8K,EAAO/L,EAAOiM,GAEPA,CACT,IC5EA,MAAMC,EAKJC,aACE,MAAO,CACL,CACEC,KAAM,aACNC,QAAS,CAAC,GAAM,KAElB,CACED,KAAM,iBACN7L,MAAO,cACP8L,QAAS,CAAC,GAAM,KAElB,CACED,KAAM,OACN7L,MAAO,IACP8L,QAAS,CAAC,GAAM,GAAM,IAG3B,CAODC,KAAK/L,GACH,MAAM6L,EAAO7L,EAAMgM,WAAW,GAAK,GAEnC,MAAO,CACL,CACEH,KAAM,OACN7L,QACA8L,QAAS,CAAC,GAAM,GAAMD,IAG3B,CAODI,MAAMjM,GACJ,IAAIiM,EAAQ,EAQZ,MANc,WAAVjM,EACFiM,EAAQ,EACW,UAAVjM,IACTiM,EAAQ,GAGH,CACL,CACEJ,KAAM,QACN7L,QACA8L,QAAS,CAAC,GAAM,GAAMG,IAG3B,CASDC,QAAQlM,EAAOmM,EAAWC,GACxB,MAAMV,EAAS,GAETW,EAAc,CAClBC,KAAQ,EACRC,KAAQ,EACRC,MAAS,EACTC,KAAQ,EACRC,OAAU,EACVC,OAAU,EACVC,IAAO,EACP,qBAAsB,EACtB,OAAQ,EACRC,QAAW,EACXC,OAAU,GACVC,QAAW,GACX,UAAW,GACX,mBAAoB,GACpB,wBAAyB,GACzB,sBAAuB,GACvB,uBAAwB,GACxB,eAAgB,IAGlB,GAAyB,iBAAdZ,QAA4D,IAA3BE,EAAYF,GACtD,MAAM,IAAIV,MAAM,cAAcU,gCAKhC,GAAIC,EAAQhM,MAAQ,GAAKgM,EAAQhM,MAAQ,EACvC,MAAM,IAAIqL,MAAM,iCAGlB,IAAIrL,EAAQgM,EAAQhM,MAAQ,EAEV,QAAd+L,IACF/L,EAAwB,EAAhBgM,EAAQhM,OAGA,YAAd+L,GAAyC,qBAAdA,GACb,0BAAdA,GAAuD,wBAAdA,GAC3B,yBAAdA,IACF/L,EAAQgM,EAAQhM,OAKlBsL,EAAOhC,KACH,CACEmC,KAAM,UACNmB,SAAU,SACVhN,MAAOoM,EAAQ1L,OACfoL,QAAS,CAAC,GAAM,IAAMM,EAAQ1L,SAEhC,CACEmL,KAAM,UACNmB,SAAU,QACVhN,MAAOoM,EAAQhM,MACf0L,QAAS,CAAC,GAAM,IAAM1L,IAExB,CACEyL,KAAM,UACNmB,SAAU,OACVhN,MAAOoM,EAAQa,KACfnB,QAAS,CAAC,GAAM,GAAMM,EAAQa,KAAO,EAAO,KAOjC,WAAbd,GAA2BnM,EAAMkN,WAAW,OAC9ClN,EAAQ,KAAOA,GAGA,WAAbmM,IACFnM,EAAQA,EAAMmN,QAAQ,SAAU,KAGlC,MAAM1D,EAAQ3B,EAAgBsF,OAAOpN,EAAO,SAEtCqN,EAAkC,iBAAdlB,EAAyBE,EAAYF,GAAaA,EAwB5E,OAtBIkB,EAAa,GAGf3B,EAAOhC,KACH,CACEmC,KAAM,UACN7L,MAAO,CAACmM,UAAWA,EAAWxM,KAAMK,GACpC8L,QAAS,CAAC,GAAM,IAAMuB,EAAY5D,EAAM7J,UAAW6J,KAMzDiC,EAAOhC,KACH,CACEmC,KAAM,UACN7L,MAAO,CAACmM,UAAWA,EAAWxM,KAAMK,GACpC8L,QAAS,CAAC,GAAM,IAAMuB,KAAe5D,EAAO,KAK7CiC,CACR,CAQD4B,OAAOtN,EAAOoM,GACZ,MAAMV,EAAS,GAIf,GAA6B,iBAAlBU,EAAQmB,MAAoB,CACrC,MAAMC,EAAS,CACb,EAAG,GACH,EAAG,IAGL,KAAIpB,EAAQmB,SAASC,GAUnB,MAAM,IAAI/B,MAAM,wBAThBC,EAAOhC,KACH,CACEmC,KAAM,SACNmB,SAAU,QACVhN,MAAOoM,EAAQmB,MACfzB,QAAS,CAAC,GAAM,GAAM,IAAM,EAAM,EAAM,GAAM,GAAM0B,EAAOpB,EAAQmB,OAAQ,IAMpF,CAID,GAA4B,iBAAjBnB,EAAQqB,KACjB,MAAM,IAAIhC,MAAM,yBAGlB,GAAIW,EAAQqB,KAAO,GAAKrB,EAAQqB,KAAO,EACrC,MAAM,IAAIhC,MAAM,gCAGlBC,EAAOhC,KACH,CACEmC,KAAM,SACNmB,SAAU,OACVhN,MAAOoM,EAAQqB,KACf3B,QAAS,CAAC,GAAM,GAAM,IAAM,EAAM,EAAM,GAAM,GAAMM,EAAQqB,QAMlE,MAAMC,EAAc,CAClB/M,EAAK,GACLgN,EAAK,GACLC,EAAK,GACLC,EAAK,IAGP,KAAIzB,EAAQ0B,cAAcJ,GAUxB,MAAM,IAAIjC,MAAM,oCAThBC,EAAOhC,KACH,CACEmC,KAAM,SACNmB,SAAU,aACVhN,MAAOoM,EAAQ0B,WACfhC,QAAS,CAAC,GAAM,GAAM,IAAM,EAAM,EAAM,GAAM,GAAM4B,EAAYtB,EAAQ0B,eAShF,MAAMrE,EAAQ3B,EAAgBsF,OAAOpN,EAAO,aACtCJ,EAAS6J,EAAM7J,OAAS,EAqB9B,OAnBA8L,EAAOhC,KACH,CACEmC,KAAM,SACNmB,SAAU,OACVhN,QACA8L,QAAS,CAAC,GAAM,GAAM,IAAe,IAATlM,EAAgBA,GAAU,EAAK,IAAM,GAAM,GAAM,MAAS6J,KAM5FiC,EAAOhC,KACH,CACEmC,KAAM,SACNkC,QAAS,QACTjC,QAAS,CAAC,GAAM,GAAM,IAAM,EAAM,EAAM,GAAM,GAAM,MAInDJ,CACR,CAQDsC,OAAOhO,EAAOoM,GACZ,MAAMV,EAAS,GAIf,GAA+B,iBAApBU,EAAQ6B,QACjB,MAAM,IAAIxC,MAAM,4BAGlB,GAAwB,IAApBW,EAAQ6B,UAAkB7B,EAAQ6B,QAAU,GAAK7B,EAAQ6B,QAAU,IACrE,MAAM,IAAIxC,MAAM,0CAclB,GAXAC,EAAOhC,KACH,CACEmC,KAAM,SACNmB,SAAU,UACVhN,MAAOoM,EAAQ6B,QACfnC,QAAS,CAAC,GAAM,GAAM,IAAM,EAAM,EAAM,GAAM,GAAMM,EAAQ6B,WAMtC,iBAAjB7B,EAAQ8B,KACjB,MAAM,IAAIzC,MAAM,yBAGlB,GAAqB,IAAjBW,EAAQ8B,OAAe9B,EAAQ8B,KAAO,GAAK9B,EAAQ8B,KAAO,IAC5D,MAAM,IAAIzC,MAAM,uCAclB,GAXAC,EAAOhC,KACH,CACEmC,KAAM,SACNmB,SAAU,OACVhN,MAAOoM,EAAQ8B,KACfpC,QAAS,CAAC,GAAM,GAAM,IAAM,EAAM,EAAM,GAAM,GAAMM,EAAQ8B,QAMrC,iBAAlB9B,EAAQhM,MACjB,MAAM,IAAIqL,MAAM,0BAGlB,GAAIW,EAAQhM,MAAQ,GAAKgM,EAAQhM,MAAQ,EACvC,MAAM,IAAIqL,MAAM,iCAclB,GAXAC,EAAOhC,KACH,CACEmC,KAAM,SACNmB,SAAU,QACVhN,MAAOoM,EAAQhM,MACf0L,QAAS,CAAC,GAAM,GAAM,IAAM,EAAM,EAAM,GAAM,GAAMM,EAAQhM,SAMpC,iBAAnBgM,EAAQ1L,OACjB,MAAM,IAAI+K,MAAM,2BAGlB,GAAIW,EAAQ1L,OAAS,GAAK0L,EAAQ1L,OAAS,EACzC,MAAM,IAAI+K,MAAM,kCAclB,GAXAC,EAAOhC,KACH,CACEmC,KAAM,SACNmB,SAAU,SACVhN,MAAOoM,EAAQ1L,OACfoL,QAAS,CAAC,GAAM,GAAM,IAAM,EAAM,EAAM,GAAM,GAAMM,EAAQ1L,UAMhC,iBAAvB0L,EAAQ0B,WACjB,MAAM,IAAIrC,MAAM,+BAGlB,GAAIW,EAAQ0B,WAAa,GAAK1B,EAAQ0B,WAAa,EACjD,MAAM,IAAIrC,MAAM,sCAGlBC,EAAOhC,KACH,CACEmC,KAAM,SACNmB,SAAU,aACVhN,MAAOoM,EAAQ0B,WACfhC,QAAS,CAAC,GAAM,GAAM,IAAM,EAAM,EAAM,GAAM,GAAM,GAAMM,EAAQ0B,WAAa,MAMrFpC,EAAOhC,KACH,CACEmC,KAAM,SACNmB,SAAU,YACVhN,QAASoM,EAAQ+B,UACjBrC,QAAS,CAAC,GAAM,GAAM,IAAM,EAAM,EAAM,GAAM,GAAMM,EAAQ+B,UAAY,EAAO,KAMrF,MAAM1E,EAAQ3B,EAAgBsF,OAAOpN,EAAO,SACtCJ,EAAS6J,EAAM7J,OAAS,EAqB9B,OAnBA8L,EAAOhC,KACH,CACEmC,KAAM,SACNmB,SAAU,OACVhN,QACA8L,QAAS,CAAC,GAAM,GAAM,IAAe,IAATlM,EAAgBA,GAAU,EAAK,IAAM,GAAM,GAAM,MAAS6J,KAM5FiC,EAAOhC,KACH,CACEmC,KAAM,SACNkC,QAAS,QACTjC,QAAS,CAAC,GAAM,GAAM,IAAM,EAAM,EAAM,GAAM,GAAM,MAInDJ,CACR,CAUDjM,MAAMA,EAAOW,EAAOM,EAAQ0N,GAC1B,MAAM1C,EAAS,GAET2C,EAAW,CAAClO,EAAGE,IAAMF,EAAIC,GAASC,EAAIK,EAAUjB,EAAME,KAAyB,GAAlBS,EAAQC,EAAKF,IAAU,EAAI,EAAI,EAAK,EAsBjGmO,EAAa,CAAClO,EAAOM,KACzB,MAAM+I,EAAQ,IAAId,WAAYvI,EAAQM,GAAW,GAEjD,IAAK,IAAIL,EAAI,EAAGA,EAAIK,EAAQL,IAC1B,IAAK,IAAIF,EAAI,EAAGA,EAAIC,EAAOD,GAAQ,EACjC,IAAK,IAAIoO,EAAI,EAAGA,EAAI,EAAGA,IACrB9E,EAAOpJ,GAAKD,GAAS,IAAOD,GAAK,KAAOkO,EAASlO,EAAIoO,EAAGlO,IAAO,EAAIkO,EAKzE,OAAO9E,CAAK,EAwDd,MAnDY,UAAR2E,IACF1C,EAAOhC,KACH,CACEmC,KAAM,eACN7L,MAAO,UACP8L,QAAS,CAAC,GAAM,GAAM,MAzCR,EAAC1L,EAAOM,KAC5B,MAAMf,EAAO,GAEb,IAAK,IAAI6O,EAAI,EAAGA,EAAIlO,KAAKgL,KAAK5K,EAAS,IAAK8N,IAAK,CAC/C,MAAM/E,EAAQ,IAAId,WAAmB,EAARvI,GAE7B,IAAK,IAAID,EAAI,EAAGA,EAAIC,EAAOD,IACzB,IAAK,IAAI2I,EAAI,EAAGA,EAAI,EAAGA,IACrB,IAAK,IAAIyF,EAAI,EAAGA,EAAI,EAAGA,IACrB9E,EAAW,EAAJtJ,EAAS2I,IAAMuF,EAASlO,EAAQ,GAAJqO,EAAUD,EAAK,EAAIzF,IAAQ,EAAIyF,EAKxE5O,EAAK+J,KAAKD,EACX,CAED,OAAO9J,CAAI,EA4BX8O,CAAcrO,EAAOM,GAAQgO,SAASjF,IACpCiC,EAAOhC,KACH,CACEmC,KAAM,QACNmB,SAAU,OACVhN,MAAO,SACPI,QACAM,OAAQ,GACRoL,QAAS,CAAC,GAAM,GAAM,GAAc,IAAR1L,EAAeA,GAAS,EAAK,OAASqJ,EAAO,KAE9E,IAGHiC,EAAOhC,KACH,CACEmC,KAAM,eACN7L,MAAO,UACP8L,QAAS,CAAC,GAAM,OAOZ,UAARsC,GACF1C,EAAOhC,KACH,CACEmC,KAAM,QACNkC,QAAS,OACT/N,MAAO,SACPI,QACAM,SACAoL,QAAS,CACP,GAAM,IAAM,GAAM,EACjB1L,GAAS,EAAK,IAASA,GAAS,GAAM,EAAK,IACnC,IAATM,EAAiBA,GAAU,EAAK,OAC7B4N,EAAWlO,EAAOM,MAMxBgL,CACR,CAODiD,IAAI3O,GACF,IAAIL,EAAO,EAMX,MAJa,WAATK,IACFL,EAAO,GAGF,CACL,CACEkM,KAAM,MACNC,QAAS,CAAC,GAAM,GAAMnM,IAG3B,CASDiP,MAAMC,EAAQC,EAAIC,GAiBhB,YAhBsB,IAAXF,IACTA,EAAS,QAGO,IAAPC,IACTA,EAAK,UAGY,IAARC,IACTA,EAAM,KAOD,CACL,CACElD,KAAM,QACNC,QAAS,CAAC,GAAM,IAAM+C,EAAS,EAAI,EAAQ,KAP/CC,EAAKxO,KAAK+K,IAAI,IAAK/K,KAAKuK,MAAMiE,EAAK,KAOwB,KAN3DC,EAAMzO,KAAK+K,IAAI,IAAK/K,KAAKuK,MAAMkE,EAAM,OAStC,CAODC,KAAKhP,GACH,IAAIL,EAAO,EAMX,OAJIK,IACFL,EAAO,GAGF,CACL,GAAM,GAAMA,EAEf,CAODsP,UAAUjP,GACR,IAAIL,EAAO,EAMX,OAJIK,IACFL,EAAO,GAGF,CACL,GAAM,GAAMA,EAEf,CAODuP,OAAOlP,GACL,IAAIL,EAAO,EAMX,OAJIK,IACFL,EAAO,GAGF,CACL,GAAM,GAAMA,EAEf,CAODwP,OAAOnP,GACL,IAAIL,EAAO,EAMX,OAJIK,IACFL,EAAO,GAGF,CACL,GAAM,GAAMA,EAEf,CAQD8N,KAAKrN,EAAOM,GACV,MAAO,CACL,GAAM,GAAOA,EAAS,EAAMN,EAAQ,GAAM,EAE7C,CAOD8H,SAASlI,GACP,MAAO,CACL,GAAM,IAAMA,EAEf,CAMDoP,QACE,MAAO,EACR,ECjqBH,MAAMC,EAKJzD,aACE,MAAO,CACL,CACEC,KAAM,aACNC,QAAS,CAAC,GAAM,GAAM,KAG3B,CAODC,KAAK/L,GACH,IAAI6L,EAAO,EAUX,MARc,MAAV7L,IACF6L,EAAO,GAGK,MAAV7L,IACF6L,EAAO,GAGF,CACL,CACEA,KAAM,OACN7L,QACA8L,QAAS,CAAC,GAAM,GAAM,GAAMD,IAGjC,CAODI,MAAMjM,GACJ,IAAIiM,EAAQ,EAQZ,MANc,WAAVjM,EACFiM,EAAQ,EACW,UAAVjM,IACTiM,EAAQ,GAGH,CACL,CACEJ,KAAM,QACN7L,QACA8L,QAAS,CAAC,GAAM,GAAM,GAAMG,IAGjC,CASDC,QAAQlM,EAAOmM,EAAWC,GACxB,MAAMV,EAAS,GAETW,EAAc,CAClBE,KAAQ,EACRD,KAAQ,EACRG,KAAQ,EACRD,MAAS,EACTE,OAAU,EACVE,IAAO,EACP,qBAAsB,EACtBG,QAAW,EACXD,OAAU,EACV,OAAQ,EACRD,QAAW,EACX,UAAW,EACX,mBAAoB,GACpB,wBAAyB,GACzB,sBAAuB,GACvB,uBAAwB,IAG1B,GAAyB,iBAAdV,QAA4D,IAA3BE,EAAYF,GACtD,MAAM,IAAIV,MAAM,cAAcU,gCAGhC,GAAIC,EAAQhM,MAAQ,GAAKgM,EAAQhM,MAAQ,EACvC,MAAM,IAAIqL,MAAM,iCAKA,YAAdU,GAA2BnM,EAAMkN,WAAW,OAC9ClN,EAAQA,EAAMsP,MAAM,IAKtB,MAAM7F,EAAQ3B,EAAgBsF,OAAOpN,EAAO,SAEtCqN,EAAkC,iBAAdlB,EAAyBE,EAAYF,GAAaA,EAiB5E,OAfAT,EAAOhC,KACH,CACEmC,KAAM,UACN7L,MAAO,CAACmM,UAAWA,EAAWxM,KAAMK,EAAOI,MAAOgM,EAAQhM,MAAOM,OAAQ0L,EAAQ1L,OAAQuM,KAAMb,EAAQa,MACvGnB,QAAS,CACP,GAAM,GACNuB,EACAjB,EAAQa,KAAO,EAAO,EACtBb,EAAQhM,MACRgM,EAAQ1L,UACL+I,EAAO,MAKXiC,CACR,CAQD4B,OAAOtN,EAAOoM,GACZ,MAAMV,EAAS,GAIT8B,EAAS,CACb,EAAG,EACH,EAAG,GAGL,KAAIpB,EAAQmB,SAASC,GAUnB,MAAM,IAAI/B,MAAM,wBAKlB,GAdEC,EAAOhC,KACH,CACEmC,KAAM,SACNmB,SAAU,QACVhN,MAAOoM,EAAQmB,MACfzB,QAAS,CAAC,GAAM,GAAM,IAAM,GAAM,GAAM0B,EAAOpB,EAAQmB,UASnC,iBAAjBnB,EAAQqB,KACjB,MAAM,IAAIhC,MAAM,yBAGlB,GAAIW,EAAQqB,KAAO,GAAKrB,EAAQqB,KAAO,EACrC,MAAM,IAAIhC,MAAM,gCAGlBC,EAAOhC,KACH,CACEmC,KAAM,SACNmB,SAAU,OACVhN,MAAOoM,EAAQqB,KACf3B,QAAS,CAAC,GAAM,GAAM,IAAM,GAAM,GAAMM,EAAQqB,QAMtD,MAAMC,EAAc,CAClB/M,EAAK,EACLgN,EAAK,EACLC,EAAK,EACLC,EAAK,GAGP,KAAIzB,EAAQ0B,cAAcJ,GAUxB,MAAM,IAAIjC,MAAM,oCAThBC,EAAOhC,KACH,CACEmC,KAAM,SACNmB,SAAU,aACVhN,MAAOoM,EAAQ0B,WACfhC,QAAS,CAAC,GAAM,GAAM,IAAM,GAAM,GAAM4B,EAAYtB,EAAQ0B,eASpE,MAAMrE,EAAQ3B,EAAgBsF,OAAOpN,EAAO,aACtCJ,EAAS6J,EAAM7J,OAyBrB,OAvBA8L,EAAOhC,KACH,CACEmC,KAAM,SACNmB,SAAU,OACVhN,QACA8L,QAAS,CACP,GAAM,GAAM,IAAM,GAAM,GAAM,EACrB,IAATlM,EAAgBA,GAAU,EAAK,OAC5B6J,KAOXiC,EAAOhC,KACH,CACEmC,KAAM,SACNkC,QAAS,QACTjC,QAAS,CAAC,GAAM,GAAM,IAAM,MAI3BJ,CACR,CAQDsC,OAAOhO,EAAOoM,GACZ,MAAMV,EAAS,GAIf,GAA+B,iBAApBU,EAAQ6B,QACjB,MAAM,IAAIxC,MAAM,4BAGlB,GAAwB,IAApBW,EAAQ6B,UAAkB7B,EAAQ6B,QAAU,GAAK7B,EAAQ6B,QAAU,IACrE,MAAM,IAAIxC,MAAM,0CAGlB,GAA4B,iBAAjBW,EAAQ8B,KACjB,MAAM,IAAIzC,MAAM,yBAGlB,GAAqB,IAAjBW,EAAQ8B,OAAe9B,EAAQ8B,KAAO,GAAK9B,EAAQ8B,KAAO,IAC5D,MAAM,IAAIzC,MAAM,uCAalB,GAVAC,EAAOhC,KACH,CACEmC,KAAM,SACN7L,MAAO,SAASoM,EAAQ8B,kBAAkB9B,EAAQ6B,UAClDnC,QAAS,CAAC,GAAM,GAAM,IAAM,GAAM,GAAM,EAAMM,EAAQ8B,KAAM9B,EAAQ6B,WAM7C,iBAAlB7B,EAAQhM,MACjB,MAAM,IAAIqL,MAAM,0BAGlB,GAAIW,EAAQhM,MAAQ,GAAKgM,EAAQhM,MAAQ,EACvC,MAAM,IAAIqL,MAAM,iCAclB,GAXAC,EAAOhC,KACH,CACEmC,KAAM,SACNmB,SAAU,QACVhN,MAAOoM,EAAQhM,MACf0L,QAAS,CAAC,GAAM,GAAM,IAAM,GAAM,GAAMM,EAAQhM,SAMxB,iBAAnBgM,EAAQ1L,OACjB,MAAM,IAAI+K,MAAM,2BAGlB,GAAIW,EAAQ1L,OAAS,GAAK0L,EAAQ1L,OAAS,EACzC,MAAM,IAAI+K,MAAM,kCAclB,GAXAC,EAAOhC,KACH,CACEmC,KAAM,SACNmB,SAAU,SACVhN,MAAOoM,EAAQ1L,OACfoL,QAAS,CAAC,GAAM,GAAM,IAAM,GAAM,GAAMM,EAAQ1L,UAMpB,iBAAvB0L,EAAQ0B,WACjB,MAAM,IAAIrC,MAAM,+BAGlB,GAAIW,EAAQ0B,WAAa,GAAK1B,EAAQ0B,WAAa,EACjD,MAAM,IAAIrC,MAAM,sCAGlBC,EAAOhC,KACH,CACEmC,KAAM,SACNmB,SAAU,aACVhN,MAAOoM,EAAQ0B,WACfhC,QAAS,CAAC,GAAM,GAAM,IAAM,GAAM,GAAMM,EAAQ0B,cAMtD,MAAMrE,EAAQ3B,EAAgBsF,OAAOpN,EAAO,SACtCJ,EAAS6J,EAAM7J,OAyBrB,OAvBA8L,EAAOhC,KACH,CACEmC,KAAM,SACNmB,SAAU,OACVhN,QACA8L,QAAS,CACP,GAAM,GAAM,IAAM,GACT,IAATlM,EAAgBA,GAAU,EAAK,OAC5B6J,KAOXiC,EAAOhC,KACH,CACEmC,KAAM,SACNkC,QAAS,QACTjC,QAAS,CAAC,GAAM,GAAM,IAAM,MAI3BJ,CACR,CAUDjM,MAAMA,EAAOW,EAAOM,EAAQ0N,GAC1B,MAAM1C,EAAS,GAET2C,EAAW,CAAClO,EAAGE,SAAmD,IAAtCZ,EAAME,KAAyB,GAAlBS,EAAQC,EAAKF,KAC1BV,EAAME,KAAyB,GAAlBS,EAAQC,EAAKF,IAAU,EAAI,EAAI,EAE9EuL,EAAOhC,KACH,CACEmC,KAAM,eACN7L,MAAO,UACP8L,QAAS,CAAC,GAAM,MAItB,IAAK,IAAI0C,EAAI,EAAGA,EAAI9N,EAAS,GAAI8N,IAAK,CACpC,MAAMnO,EAAQ,GAAJmO,EACJ/E,EAAQ,IAAId,WAAmB,EAARvI,GAE7B,IAAK,IAAID,EAAI,EAAGA,EAAIC,EAAOD,IAAK,CAC9B,MAAMT,EAAQ,EAAJS,EAEVsJ,EAAM/J,GACM2O,EAASlO,EAAGE,EAAI,IAAM,EACtBgO,EAASlO,EAAGE,EAAI,IAAM,EACtBgO,EAASlO,EAAGE,EAAI,IAAM,EACtBgO,EAASlO,EAAGE,EAAI,IAAM,EACtBgO,EAASlO,EAAGE,EAAI,IAAM,EACtBgO,EAASlO,EAAGE,EAAI,IAAM,EACtBgO,EAASlO,EAAGE,EAAI,IAAM,EACtBgO,EAASlO,EAAGE,EAAI,GAE5BoJ,EAAM/J,EAAI,GACE2O,EAASlO,EAAGE,EAAI,IAAM,EACtBgO,EAASlO,EAAGE,EAAI,IAAM,EACtBgO,EAASlO,EAAGE,EAAI,KAAO,EACvBgO,EAASlO,EAAGE,EAAI,KAAO,EACvBgO,EAASlO,EAAGE,EAAI,KAAO,EACvBgO,EAASlO,EAAGE,EAAI,KAAO,EACvBgO,EAASlO,EAAGE,EAAI,KAAO,EACvBgO,EAASlO,EAAGE,EAAI,IAE5BoJ,EAAM/J,EAAI,GACE2O,EAASlO,EAAGE,EAAI,KAAO,EACvBgO,EAASlO,EAAGE,EAAI,KAAO,EACvBgO,EAASlO,EAAGE,EAAI,KAAO,EACvBgO,EAASlO,EAAGE,EAAI,KAAO,EACvBgO,EAASlO,EAAGE,EAAI,KAAO,EACvBgO,EAASlO,EAAGE,EAAI,KAAO,EACvBgO,EAASlO,EAAGE,EAAI,KAAO,EACvBgO,EAASlO,EAAGE,EAAI,GAC7B,CAEDqL,EAAOhC,KACH,CACEmC,KAAM,QACNmB,SAAU,OACVhN,MAAO,SACPI,QACAM,OAAQ,GACRoL,QAAS,CACP,GAAM,GACE,IAAR1L,EAAeA,GAAS,EAAK,OAC1BqJ,EACH,GAAM,KAIf,CAUD,OARAiC,EAAOhC,KACH,CACEmC,KAAM,eACN7L,MAAO,UACP8L,QAAS,CAAC,GAAM,IAAM,KAIrBJ,CACR,CAODiD,IAAI3O,GACF,IAAIL,EAAO,EAMX,MAJa,WAATK,IACFL,EAAO,GAGF,CACL,CACEkM,KAAM,MACNC,QAAS,CAAC,GAAM,IAAMnM,IAG3B,CASDiP,MAAMC,EAAQC,EAAIC,GAgBhB,YAfsB,IAAXF,IACTA,EAAS,QAGO,IAAPC,IACTA,EAAK,UAGY,IAARC,IACTA,EAAM,KAMD,CACL,CACElD,KAAM,QACNC,QAAS,CAAC,GAAM,EAAW,KAN/BgD,EAAKxO,KAAK+K,IAAI,IAAK/K,KAAKuK,MAAMiE,EAAK,MAMQ,KAL3CC,EAAMzO,KAAK+K,IAAI,IAAK/K,KAAKuK,MAAMkE,EAAM,MAKYF,EAAS,GAAO,IAGlE,CAODG,KAAKhP,GACH,IAAIL,EAAO,GAMX,OAJIK,IACFL,EAAO,IAGF,CACL,GAAMA,EAET,CAODsP,UAAUjP,GACR,IAAIL,EAAO,EAMX,OAJIK,IACFL,EAAO,GAGF,CACL,GAAM,GAAMA,EAEf,CAODuP,OAAOlP,GACL,MAAO,EACR,CAODmP,OAAOnP,GACL,IAAIL,EAAO,GAMX,OAJIK,IACFL,EAAO,IAGF,CACL,GAAMA,EAET,CAQD8N,KAAKrN,EAAOM,GACV,MAAO,CACL,GAAM,IAAMA,EAAS,EAAGN,EAAQ,EAEnC,CAOD8H,SAASlI,GACP,MAAO,CACL,GAAM,GAAM,IAAMA,EAErB,CAMDoP,QACE,MAAO,CACL,CACEvD,KAAM,aACN7L,MAAO,OACP8L,QAAS,CAAC,GAAM,GAAM,GAAM,KAE9B,CACED,KAAM,aACN7L,MAAO,OACP8L,QAAS,CAAC,GAAM,GAAM,GAAM,KAGjC,ECjlBH,MAAMyD,EACJC,GAAW,CACTR,MAAM,EACNE,QAAQ,EACRD,WAAW,EACXE,QAAQ,EACR/O,MAAO,EACPM,OAAQ,GAGV2I,GACAoG,GAOAC,YAAYtD,GACVhE,MAAKiB,EAAWf,gBAAgBF,MAAKoH,GACrCpH,MAAKqH,EAAYrD,EAAQqD,UAAa,MAAQ,EAC/C,CAODE,QACE,MAAMjE,EAAS,GAETkE,EAAa,IAAIC,IAEvB,IAAK,MAAM7C,KAAY5E,MAAKiB,EACtBjB,MAAKiB,EAAS2D,KAAc5E,MAAKoH,EAASxC,KAC3B,UAAbA,GAAqC,WAAbA,EAC1B4C,EAAWE,IAAI,OAAQ,CAAC1P,MAAOgI,MAAKoH,EAASpP,MAAOM,OAAQ0H,MAAKoH,EAAS9O,SAE1EkP,EAAWE,IAAI9C,EAAU5E,MAAKoH,EAASxC,KAK7C,IAAK,MAAMA,KAAY4C,EACrBlE,EAAOhC,KAAK,CACVmC,KAAM,QACNmB,SAAUA,EAAS,GACnBhN,MAAOgN,EAAS,KAIpB,OAAOtB,CACR,CAODqE,UACE,MAAMrE,EAAS,GAETkE,EAAa,IAAIC,IAEvB,IAAK,MAAM7C,KAAY5E,MAAKiB,EACtBjB,MAAKiB,EAAS2D,KAAc5E,MAAKoH,EAASxC,KAC3B,UAAbA,GAAqC,WAAbA,EAC1B4C,EAAWE,IAAI,OAAQ,CAAC1P,MAAOgI,MAAKiB,EAASjJ,MAAOM,OAAQ0H,MAAKiB,EAAS3I,SAE1EkP,EAAWE,IAAI9C,EAAU5E,MAAKiB,EAAS2D,KAK7C,IAAK,MAAMA,KAAY4C,EACrBlE,EAAOhC,KAAK,CACVmC,KAAM,QACNmB,SAAUA,EAAS,GACnBhN,MAAOgN,EAAS,KAIpB,OAAOtB,CACR,CAOGsD,SAAKhP,GACHA,IAAUoI,MAAKiB,EAAS2F,OAC1B5G,MAAKiB,EAAS2F,KAAOhP,EAErBoI,MAAKqH,EAAU,CACb5D,KAAM,QACNmB,SAAU,OACVhN,UAGL,CAOGgP,WACF,OAAO5G,MAAKiB,EAAS2F,IACtB,CAOGE,WAAOlP,GACLA,IAAUoI,MAAKiB,EAAS6F,SAC1B9G,MAAKiB,EAAS6F,OAASlP,EAEvBoI,MAAKqH,EAAU,CACb5D,KAAM,QACNmB,SAAU,SACVhN,UAGL,CAOGkP,aACF,OAAO9G,MAAKiB,EAAS6F,MACtB,CAOGD,cAAUjP,GACRA,IAAUoI,MAAKiB,EAAS4F,YAC1B7G,MAAKiB,EAAS4F,UAAYjP,EAE1BoI,MAAKqH,EAAU,CACb5D,KAAM,QACNmB,SAAU,YACVhN,UAGL,CAOGiP,gBACF,OAAO7G,MAAKiB,EAAS4F,SACtB,CAOGE,WAAOnP,GACLA,IAAUoI,MAAKiB,EAAS8F,SAC1B/G,MAAKiB,EAAS8F,OAASnP,EAEvBoI,MAAKqH,EAAU,CACb5D,KAAM,QACNmB,SAAU,SACVhN,UAGL,CAOGmP,aACF,OAAO/G,MAAKiB,EAAS8F,MACtB,CAOG/O,UAAMJ,GACJA,IAAUoI,MAAKiB,EAASjJ,QAC1BgI,MAAKiB,EAASjJ,MAAQJ,EAEtBoI,MAAKqH,EAAU,CACb5D,KAAM,QACNmB,SAAU,OACVhN,MAAO,CAACI,MAAOgI,MAAKiB,EAASjJ,MAAOM,OAAQ0H,MAAKiB,EAAS3I,UAG/D,CAOGN,YACF,OAAOgI,MAAKiB,EAASjJ,KACtB,CAOGM,WAAOV,GACLA,IAAUoI,MAAKiB,EAAS3I,SAC1B0H,MAAKiB,EAAS3I,OAASV,EAEvBoI,MAAKqH,EAAU,CACb5D,KAAM,QACNmB,SAAU,OACVhN,MAAO,CAACI,MAAOgI,MAAKiB,EAASjJ,MAAOM,OAAQ0H,MAAKiB,EAAS3I,UAG/D,CAOGA,aACF,OAAO0H,MAAKiB,EAAS3I,MACtB,EC/OH,MAAMsP,EAQJjI,YAAY/H,EAAOoM,GACjB,MAAMV,EAAS,GACf,IAAIuE,EAAO,GACPrQ,EAASwM,EAAQ8D,QAAU,EAC/B,MAAM9P,EAAQgM,EAAQhM,OAAS,EACzB6N,EAAU7B,EAAQ6B,SAAW,GAE7BkC,EAAQC,OAAOpQ,GAAOqQ,MAAM,YAElC,IAAK,MAAMrQ,KAASmQ,EAAO,CACzB,MAAMG,EAAStQ,EAAMuQ,MAAM,kCAAoC,CAAC,aAEhE,IAAK,MAAMC,KAASF,EAClB,GAAc,cAAVE,EAAJ,CASA,GAAI5Q,EAAU4Q,EAAM5Q,OAASQ,EAAS6N,EAAS,CAG7C,GAAIuC,EAAM5Q,OAASQ,EAAQ6N,EAAS,CAGlC,MAAMwC,EAAYxC,EAAUrO,EAItB8Q,EAAUF,EAAMH,MAAM,IAC5B,IAAIM,EACJ,MAAMC,EAAS,GAgBf,IAZIH,EAAY,EAAIrQ,IAClBuQ,EAAQD,EAAQG,OAAO,EAAGvQ,KAAKC,MAAMkQ,EAAYrQ,IAAQ0Q,KAAK,IAE9Db,EAAKvG,KAAKiH,GACVjF,EAAOhC,KAAKuG,GAEZA,EAAO,GACPrQ,EAAS,IAKH+Q,EAAQD,EAAQG,OAAO,EAAGvQ,KAAKC,MAAM0N,EAAU7N,KAASR,QAC9DgR,EAAOlH,KAAKiH,EAAMG,KAAK,KAGzB,IAAK,MAAMH,KAASC,EACdhR,EAAU+Q,EAAM/Q,OAASQ,EAAS6N,IACpCvC,EAAOhC,KAAKuG,GACZA,EAAO,GACPrQ,EAAS,GAGXqQ,EAAKvG,KAAKiH,GACV/Q,GAAU+Q,EAAM/Q,OAASQ,EAG3B,QACD,CAGDsL,EAAOhC,KAAKuG,GACZA,EAAO,GACPrQ,EAAS,CACV,CAIG4Q,EAAMD,MAAM,QAAoB,GAAV3Q,IAI1BqQ,EAAKvG,KAAK8G,GACV5Q,GAAU4Q,EAAM5Q,OAASQ,EA/DxB,MAJCsL,EAAOhC,KAAKuG,GACZA,EAAO,GACPrQ,EAAS,EAoETqQ,EAAKrQ,OAAS,IAChB8L,EAAOhC,KAAKuG,GACZA,EAAO,GACPrQ,EAAS,EAEZ,CAED,IAAK,IAAIF,EAAI,EAAGA,EAAIgM,EAAO9L,OAAQF,IACjCgM,EAAOhM,GAAKgM,EAAOhM,GAAGoR,KAAK,IAEvBpR,EAAIgM,EAAO9L,OAAS,IACtB8L,EAAOhM,GAAKgM,EAAOhM,GAAGqR,WAI1B,OAAOrF,CACR,EC1GH,MAAMsF,EACJC,GACAhD,GACAhC,GACAwD,GAEAyB,GAAU,EACVC,GACAC,GAAU,GAQV1B,YAAYtD,GACVhE,MAAK6I,EAAY7E,EAAQ6E,WAAY,EACrC7I,MAAK6F,EAAW7B,EAAQ6B,SAAW,GACnC7F,MAAK6D,EAASG,EAAQH,OAAS,OAC/B7D,MAAKqH,EAAYrD,EAAQqD,UAAa,MAAQ,GAE9CrH,KAAKiJ,MAAQ,IAAI9B,EAAU,CACzBE,SAAWzP,IACToI,KAAKkJ,IAAItR,EAAO,EAAE,IAItBoI,MAAK+I,EAAU/I,KAAKiJ,MAAM1B,OAC3B,CAQD1C,KAAKjN,EAAOkI,GACV,MAAMiI,EAAQH,EAASuB,KAAKvR,EAAO,CAACiO,QAAS7F,MAAK6F,EAAU7N,MAAOgI,KAAKiJ,MAAMjR,MAAO8P,OAAQ9H,MAAK8I,IAElG,IAAK,IAAIxR,EAAI,EAAGA,EAAIyQ,EAAMvQ,OAAQF,IAC5ByQ,EAAMzQ,GAAGE,QAEXwI,KAAKkJ,IAAI,CAACzF,KAAM,OAAQ7L,MAAOmQ,EAAMzQ,GAAIwI,YAAWiI,EAAMzQ,GAAGE,OAASwI,KAAKiJ,MAAMjR,OAG7EV,EAAIyQ,EAAMvQ,OAAS,GACrBwI,KAAKgH,SAIPhH,KAAKgH,MAAM,CAACoC,cAAc,GAG/B,CAODC,MAAMhE,GACJrF,KAAKkJ,IAAI,CAACzF,KAAM,QAAS4B,QAAOA,EACjC,CAQDiE,IAAI1R,EAAOJ,GACTwI,KAAKkJ,IAAI,CAACzF,KAAM,MAAOC,QAAS9L,GAAQJ,GAAU,EACnD,CAQD0R,IAAItR,EAAOJ,GACT,GAAII,aAAiBsB,MAArB,CACE,IAAK,MAAMqQ,KAAQ3R,EACjBoI,KAAKkJ,IAAIK,GAGXvJ,MAAK8I,GAAWtR,GAAU,CAE3B,MAEDA,EAASA,GAAU,GAENwI,MAAK8I,EAAU9I,MAAK6F,GAC/B7F,KAAKgH,QAGPhH,MAAK8I,GAAWtR,EAChBwI,MAAKgJ,EAAUhJ,MAAKgJ,EAAQQ,OAAO5R,EACpC,CAMD6R,MACEzJ,MAAK8I,EAAU9I,MAAK6F,CACrB,CAQD6D,MAAM1F,GAGJ,GAAqB,IAAjBhE,MAAK8I,IAAkB9E,EAAQoF,eAAiBpF,EAAQ2F,WAC1D,MAAO,GAKT,MAAM9F,EAAQ,CACZ5C,QAASjB,MAAK6D,EACd+F,KAAM,MAGR,IAAK,IAAItS,EAAI,EAAGA,EAAI0I,MAAKgJ,EAAQxR,OAAS,EAAGF,IACd,UAAzB0I,MAAKgJ,EAAQ1R,GAAGmM,MAAqBzD,MAAKgJ,EAAQ1R,GAAGoM,UACvDG,EAAM5C,QAAUjB,MAAKgJ,EAAQ1R,GAAGM,OAMpC,GAAIoI,MAAKgJ,EAAQxR,OAAQ,CACvB,MAAMqS,EAAO7J,MAAKgJ,EAAQhJ,MAAKgJ,EAAQxR,OAAS,GAE9B,UAAdqS,EAAKpG,MAAqBoG,EAAKnG,UACjCG,EAAM+F,KAAOC,EAAKjS,MAErB,CAEDoI,MAAK6D,EAASA,EAAM5C,QAIpB,MAAM+H,EAAShJ,MAAKgJ,EAAQc,QAAQP,GAAuB,UAAdA,EAAK9F,MAAoB8F,EAAK7F,UAI3E,IAAIJ,EAAS,GAEb,MAAMqE,EAAU3H,KAAKiJ,MAAMtB,UACrBJ,EAAQvH,KAAKiJ,MAAM1B,QAEzB,GAAqB,IAAjBvH,MAAK8I,IAAkB9E,EAAQ+F,iBAAoB/J,MAAK6I,EAMrD,CACL,GAAoB,UAAhB7I,MAAK6D,EAAoB,CAC3B,IAAIgG,EAIJ,IAAK,IAAIvS,EAAI0R,EAAOxR,OAAS,EAAGF,GAAK,EAAGA,IACtC,GAAuB,SAAnB0R,EAAO1R,GAAGmM,MAAsC,UAAnBuF,EAAO1R,GAAGmM,KAAkB,CAC3DoG,EAAOvS,EACP,KACD,CAKiB,iBAATuS,IACiB,UAAtBb,EAAOa,GAAMpG,MAAoBuF,EAAOa,GAAMxE,KAAOrF,KAAKiJ,MAAMjR,QAClEgR,EAAOa,GAAMxE,MAAQrF,KAAKiJ,MAAMjR,MAChCgI,MAAK8I,GAAW9I,KAAKiJ,MAAMjR,OAGH,SAAtBgR,EAAOa,GAAMpG,MAAmBuF,EAAOa,GAAMjS,MAAMoS,SAAS,OAC9DhB,EAAOa,GAAMjS,MAAQoR,EAAOa,GAAMjS,MAAMsP,MAAM,GAAI,GAClDlH,MAAK8I,GAAW9I,KAAKiJ,MAAMjR,QAI/BsL,EAAStD,MAAKiK,EAAO,CACnB,CAACxG,KAAM,QAAS4B,KAAMrF,MAAK6F,EAAW7F,MAAK8I,MACxC9I,MAAK+I,KACLC,KACAzB,GAEN,CAED,GAAoB,WAAhBvH,MAAK6D,EAAqB,CAC5B,MAAMqG,EAAQlK,MAAK6F,EAAW7F,MAAK8I,GAAY,EAE/CxF,EAAStD,MAAKiK,EAAO,CACnB,CAACxG,KAAM,QAAS4B,KAAM6E,MACnBlK,MAAK+I,KACLC,KACAzB,EACH,CAAC9D,KAAM,QAAS4B,KAAMrF,MAAK6I,EAAY7I,MAAK6F,EAAW7F,MAAK8I,EAAUoB,EAAO,IAEhF,CAEmB,SAAhBlK,MAAK6D,IACPP,EAAStD,MAAKiK,EAAO,IAChBjK,MAAK+I,KACLC,KACAzB,EACH,CAAC9D,KAAM,QAAS4B,KAAMrF,MAAK6I,EAAY7I,MAAK6F,EAAW7F,MAAK8I,EAAU,KAG3E,MA5DCxF,EAAStD,MAAKiK,EAAO,IAChBjK,MAAK+I,KACLC,KACAzB,IAuEP,OAZAvH,MAAK+I,EAAUpB,EACf3H,MAAKgJ,EAAU,GACfhJ,MAAK8I,EAAU,EAEO,IAAlBxF,EAAO9L,QAAgBwM,EAAQoF,cACjC9F,EAAOhC,KAAK,CAACmC,KAAM,UAGjBI,EAAM+F,OACR5J,MAAK6D,EAASA,EAAM+F,MAGftG,CACR,CAOD0D,MAAMhD,GACJA,EAAUpE,OAAOuK,OAAO,CACtBf,cAAc,EACdO,YAAY,EACZI,iBAAiB,GAChB/F,GAAW,CAAA,GAEd,MAAMV,EAAStD,KAAK0J,MAAM1F,GAEtBV,EAAO9L,QACTwI,MAAKqH,EAAU/D,EAElB,CAQD2G,GAAOG,GACL,MAAM9G,EAAS,GACf,IAAIuG,GAAQ,EAEZ,IAAK,IAAIN,KAAQa,EAAO,CACtB,GAAkB,UAAdb,EAAK9F,KAAkB,CACzB,GAAkB,IAAd8F,EAAKlE,KACP,SAGFkE,EAAO,CAAC9F,KAAM,OAAQ7L,MAAO,IAAIyS,OAAOd,EAAKlE,MAAOvF,SAAU,KAC/D,CAED,GAAkB,SAAdyJ,EAAK9F,KAAiB,CAYxB,GARIoG,GAAQ,GACc,SAAtBvG,EAAOuG,GAAMpG,OAEXH,EAAOuG,GAAM/J,WAAayJ,EAAKzJ,UACL,OAA1BwD,EAAOuG,GAAM/J,UACK,OAAlByJ,EAAKzJ,UAGK,CACdwD,EAAOuG,GAAMjS,OAAS2R,EAAK3R,MAC3B0L,EAAOuG,GAAM/J,SAAWwD,EAAOuG,GAAM/J,UAAYyJ,EAAKzJ,SACtD,QACD,CAEDwD,EAAOhC,KAAKiI,GACZM,GACR,MAAa,GAAkB,UAAdN,EAAK9F,MAAsC,SAAlB8F,EAAK3E,SAAqB,CAM5D,GAJEiF,GAAQ,GACc,UAAtBvG,EAAOuG,GAAMpG,MACa,SAA1BH,EAAOuG,GAAMjF,SAEC,CACdtB,EAAOuG,GAAMjS,MAAQ2R,EAAK3R,MAC1B,QACD,CAED0L,EAAOhC,KAAKiI,GACZM,GACR,MACQvG,EAAOhC,KAAKiI,GACZM,GAEH,CAED,OAAOvG,CACR,CAOGwF,aACF,OAAO9I,MAAK8I,CACb,CAOGjF,UAAMjM,GACRoI,KAAKkJ,IAAI,CAACzF,KAAM,QAAS7L,SAAQ,EAClC,CAOGiM,YACF,IAAIA,EAAQ7D,MAAK6D,EAEjB,IAAK,IAAIvM,EAAI,EAAGA,EAAI0I,MAAKgJ,EAAQxR,OAAQF,IACV,UAAzB0I,MAAKgJ,EAAQ1R,GAAGmM,OAClBI,EAAQ7D,MAAKgJ,EAAQ1R,GAAGM,OAI5B,OAAOiM,CACR,CAOGgC,YAAQjO,GACVoI,MAAK6F,EAAWjO,CACjB,CAOGiO,cACF,OAAO7F,MAAK6F,CACb,ECrXH,MAAMyE,EAAmB,CACxB,UAAW,CACV,iBAAkB,CAAC,QAAQ,iBAAiB,QAAQ,QAAQ,QAAQ,QAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,SACzFC,QAAW,CAAC,QAAQ,iBAAiB,QAAQ,QAAQ,QAAQ,kBAAkB,cAAc,QAAQ,QAAQ,QAAS,CAAA,QAAQ,QAAQ,SAAS,cAAc,cAAc,eAAe,cAAc,QAAQ,QAAQ,SAAS,iBAAiB,cAAc,SAAS,SAAS,QAAQ,QAAQ,YAAY,SAAS,cAAc,cAAc,QAAW,CAAA,CAAA,CAAA,gBAAgB,eAAe,QAAQ,gBAAgB,UACrZC,QAAW,CAAC,QAAQ,iBAAiB,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,cAAa,CAAA,CAAA,CAAA,CAAK,SAAa,CAAA,CAAA,CAAA,CAAA,SAAY,CAAA,CAAA,CAAA,QAAQ,gBAAgB,cAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,SAC5L,eAAgB,CAAC,QAAQ,iBAAiB,QAAQ,QAAQ,QAAQ,kBAAkB,cAAc,QAAQ,QAAQ,SAClHC,MAAS,CAAC,QAAQ,iBAAiB,QAAQ,QAAQ,QAAQ,aAAa,QAAQ,QAAQ,QAAQ,QAAQ,YAAY,cAAc,QAAQ,QAAQ,QAAQ,SAAS,SAAQ,CAAA,CAAA,CAAA,CAAK,SAAY,CAAA,CAAA,CAAA,QAAQ,gBAAgB,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,kBAAkB,aAAa,SAAS,QAAQ,QAAQ,SAAS,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,UAC7bC,QAAW,CAAC,QAAQ,iBAAiB,QAAQ,QAAQ,QAAQ,QAAU,CAAA,CAAA,QAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,cAAc,QAAQ,QAAQ,QAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,SAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,SACxJC,GAAM,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,cAAc,QAAQ,QAAQ,QAAQ,QAAQ,cAAc,cAAc,UACjJC,SAAY,CAAC,QAAQ,iBAAiB,QAAQ,QAAQ,QAAQ,QAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,SACnFC,IAAO,CAAC,SAAS,QAAQ,QAAQ,QAAQ,QAAQ,cAAc,QAAQ,SAAS,UAChF,WAAY,CAAC,QAAQ,iBAAiB,QAAQ,QAAQ,QAAQ,QAAQ,YAAa,CAAA,eAAe,cAAc,QAAQ,QAAQ,QAAO,CAAA,CAAA,CAAI,cAAc,QAAQ,cAAa,CAAE,cAAc,WAAW,cAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAwB,QAAW,CAAA,CAAA,CAAA,QAAQ,QAAO,CAAA,CAAA,CAAI,QAAQ,QAAS,CAAA,QAAQ,QAAO,CAAA,CAAG,cAAe,CAAA,UAAU,SAAS,SAAS,SAAS,SAAS,SAAS,UAAU,QAAQ,SAAS,SAAS,SAAS,SAAU,CAAA,SAAS,cAAc,cAAc,cAAc,QAAO,CAAE,SACxe,WAAY,CAAC,QAAQ,iBAAiB,QAAQ,QAAQ,QAAQ,QAAQ,YAAY,cAAc,QAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,cAAc,QAAQ,QAAQ,SAAS,UAAS,CAAE,cAAc,QAAQ,cAAa,CAAE,cAAc,UAAU,iBAAiB,cAAqC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,WAAW,QAAQ,QAAW,CAAA,CAAA,CAAA,QAAQ,QAAO,CAAE,QAAQ,UAAU,cAAa,CAAE,SAAU,CAAA,SAAS,SAAS,SAAS,SAAS,SAAS,SAAU,CAAA,QAAQ,SAAS,SAAS,SAAS,SAAQ,CAAA,CAAA,CAAI,cAAc,cAAc,QAAO,CAAE,SACzfC,KAAQ,CAAC,QAAQ,gBAAgB,QAAQ,QAAQ,QAAQ,kBAAkB,cAAc,QAAQ,QAAQ,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAQ,CAAE,UAC/JC,SAAY,CAAC,QAAQ,iBAAiB,QAAQ,QAAQ,QAAQ,QAAQ,YAAY,cAAc,kBAAkB,UAAU,cAAa,CAAA,CAAA,CAAA,CAAK,cAAc,QAAQ,QAAQ,QAAS,CAAA,UAAU,QAAQ,cAAc,QAAQ,cAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,eAClPC,MAAS,CAAC,QAAQ,iBAAiB,QAAQ,QAAQ,QAAQ,QAAQ,cAAc,QAAQ,SAAS,SAAc,CAAA,CAAA,CAAA,CAAA,CAAA,QAAQ,cAAe,CAAA,QAAQ,QAAU,CAAA,CAAA,QAAQ,YAAY,QAAQ,cAAgB,CAAA,CAAA,QAAQ,QAAQ,cAAc,QAAQ,cAAc,cAAc,cAAc,cAAgB,CAAA,CAAA,YAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,aAAe,CAAA,CAAA,UAEtU,YAAa,CACZF,KAAQ,CAAC,gBAAgB,QAAQ,gBAAiB,CAAA,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,aAAa,QAAQ,QAAQ,aAAuB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,cAAc,cAAc,cAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA8B,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAS,YAIraR,EAAiB,aAAeA,EAAiB,aACjDA,EAAiB,WAAmB,OAAIA,EAAiB,WAAW,YCvBpE,MAAMW,EAAqB,CAC1B,iBAAkB,CAACC,OAAO,UAAU/F,MAAM,UAAUgG,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,iBAAiBC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,YAAYiB,OAAO,CAACyG,WAAU,EAAMvG,OAAO,IAAIQ,OAAO,CAAC+F,WAAU,GAAOC,OAAO,CAACC,KAAK,KAClY,oBAAqB,CAACX,OAAO,UAAU/F,MAAM,aAAagG,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,UAAUC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,IAAIiG,EAAE,CAACzG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,YAAYiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,MAAMQ,OAAO,CAAC+F,WAAU,GAAMC,OAAO,CAACC,KAAK,KAC7Z,oBAAqB,CAACX,OAAO,UAAU/F,MAAM,YAAYgG,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,UAAUC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,IAAIiG,EAAE,CAACzG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,UAAU,mBAAmB,wBAAwB,sBAAsB,yBAAyBiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,IAAI,MAAMQ,OAAO,CAAC+F,WAAU,GAAMC,OAAO,CAACC,KAAK,KACxf,iBAAkB,CAACX,OAAO,QAAQ/F,MAAM,WAAW4G,WAAW,CAACC,IAAI,CAACC,YAAY,aAAad,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,QAAQC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,QAAQQ,QAAQ,IAAIiG,EAAE,CAACzG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,UAAU,mBAAmB,wBAAwB,sBAAsB,uBAAuB,iBAAiBiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,IAAI,MAAMQ,OAAO,CAAC+F,WAAU,GAAMC,OAAO,CAACC,KAAK,KAC1iB,kBAAmB,CAACX,OAAO,QAAQ/F,MAAM,YAAY4G,WAAW,CAACC,IAAI,CAACC,YAAY,cAAcd,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,QAAQC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,QAAQQ,QAAQ,IAAIiG,EAAE,CAACzG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,UAAU,mBAAmB,wBAAwB,sBAAsB,uBAAuB,iBAAiBiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,IAAI,MAAMQ,OAAO,CAAC+F,WAAU,GAAMC,OAAO,CAACC,KAAK,KAC7iB,iBAAkB,CAACX,OAAO,QAAQ/F,MAAM,WAAWgG,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,QAAQC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,IAAIiG,EAAE,CAACzG,KAAK,OAAOQ,QAAQ,IAAIqG,EAAE,CAAC7G,KAAK,QAAQQ,QAAQ,IAAIsG,EAAE,CAAC9G,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,UAAU,mBAAmB,wBAAwB,sBAAsB,uBAAuB,iBAAiBiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,IAAI,MAAMQ,OAAO,CAAC+F,WAAU,GAAMS,OAAO,CAACpG,KAAK,UAAU4F,OAAO,CAACC,KAAK,KAC7kB,iBAAkB,CAACX,OAAO,QAAQ/F,MAAM,WAAW4G,WAAW,CAACC,IAAI,CAACC,YAAY,aAAad,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,QAAQC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,UAAU,mBAAmB,wBAAwB,sBAAsB,yBAAyBiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,IAAI,MAAMQ,OAAO,CAAC+F,WAAU,GAAMC,OAAO,CAACC,KAAK,KAC/f,kBAAmB,CAACX,OAAO,QAAQ/F,MAAM,YAAY4G,WAAW,CAACC,IAAI,CAACC,YAAY,cAAcd,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,QAAQC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,UAAU,mBAAmB,wBAAwB,sBAAsB,yBAAyBiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,IAAI,MAAMQ,OAAO,CAAC+F,WAAU,GAAMC,OAAO,CAACC,KAAK,KAClgB,iBAAkB,CAACX,OAAO,QAAQ/F,MAAM,WAAW4G,WAAW,CAACC,IAAI,CAACC,YAAY,aAAad,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,QAAQC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,UAAU,mBAAmB,wBAAwB,sBAAsB,uBAAuB,iBAAiBiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,IAAI,MAAMQ,OAAO,CAAC+F,WAAU,GAAMC,OAAO,CAACC,KAAK,KAC9gB,eAAgB,CAACX,OAAO,QAAQ/F,MAAM,SAASgG,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,eAAeC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,YAAYiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,IAAI,MAAMQ,OAAO,CAAC+F,WAAU,GAAMS,OAAO,CAACpG,KAAK,UAAU4F,OAAO,CAACC,KAAK,KACvZ,iBAAkB,CAACX,OAAO,QAAQ/F,MAAM,WAAWkH,UAAY,CAACL,IAAI,CAACC,YAAY,aAAad,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,QAAQC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,UAAU,mBAAmB,wBAAwB,sBAAsB,yBAAyBiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,IAAI,MAAMQ,OAAO,CAAC+F,WAAU,GAAMS,OAAO,CAACpG,KAAK,UAAU4F,OAAO,CAACC,KAAK,KACvhB,iBAAkB,CAACX,OAAO,QAAQ/F,MAAM,WAAWgG,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,eAAeC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,YAAYiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,IAAI,MAAMQ,OAAO,CAAC+F,WAAU,GAAMC,OAAO,CAACC,KAAK,KACpY,kBAAmB,CAACX,OAAO,QAAQ/F,MAAM,YAAYgG,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,eAAeC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,YAAYiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,IAAI,MAAMQ,OAAO,CAAC+F,WAAU,GAAMC,OAAO,CAACC,KAAK,KACtY,iBAAkB,CAACX,OAAO,QAAQ/F,MAAM,WAAWgG,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,eAAeC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,YAAYiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,IAAI,MAAMQ,OAAO,CAAC+F,WAAU,GAAMC,OAAO,CAACC,KAAK,KACpY,gBAAiB,CAACX,OAAO,QAAQ/F,MAAM,UAAUgG,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,QAAQC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,UAAU,mBAAmB,wBAAwB,sBAAsB,yBAAyBiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,IAAI,MAAMQ,OAAO,CAAC+F,WAAU,GAAMC,OAAO,CAACC,KAAK,KACnd,iBAAkB,CAACX,OAAO,QAAQ/F,MAAM,WAAWgG,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,QAAQC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,UAAU,mBAAmB,wBAAwB,sBAAsB,yBAAyBiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,IAAI,MAAMQ,OAAO,CAAC+F,WAAU,GAAMC,OAAO,CAACC,KAAK,KACrd,kBAAmB,CAACX,OAAO,QAAQ/F,MAAM,YAAYgG,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,QAAQC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,UAAU,mBAAmB,wBAAwB,sBAAsB,uBAAuB,iBAAiBiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,IAAI,MAAMQ,OAAO,CAAC+F,WAAU,GAAMC,OAAO,CAACC,KAAK,KACte,iBAAkB,CAACX,OAAO,UAAU/F,MAAM,UAAUgG,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,UAAUC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,IAAIiG,EAAE,CAACzG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,UAAU,mBAAmB,wBAAwB,sBAAsB,yBAAyBiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,IAAI,MAAMQ,OAAO,CAAC+F,WAAU,GAAOC,OAAO,CAACC,KAAK,KACpf,UAAW,CAACX,OAAO,KAAK/F,MAAM,OAAOgG,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,KAAKgB,QAAQ,KAAKf,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,YAAYiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,IAAI,MAAMQ,OAAO,CAAC+F,WAAU,EAAMY,SAAS,CAAC9I,KAAK,UAAUM,UAAU,KAAK6H,OAAO,CAACC,KAAK,KACtY,cAAe,CAACX,OAAO,WAAW/F,MAAM,MAAMgG,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,WAAWC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,YAAYiB,OAAO,CAACyG,WAAU,EAAMvG,OAAO,IAAIQ,OAAO,CAAC+F,WAAU,GAAOC,OAAO,CAACC,KAAK,KACtX,SAAU,CAACX,OAAO,GAAG/F,MAAM,SAASgG,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,MAAMC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,IAAIiG,EAAE,CAACzG,KAAK,MAAMQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,YAAYiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,IAAIQ,OAAO,CAAC+F,WAAU,KAC5W,WAAY,CAACT,OAAO,GAAG/F,MAAM,WAAWgG,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,WAAWC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,YAAYiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,MAAMQ,OAAO,CAAC+F,WAAU,GAAMS,OAAO,CAACpG,KAAK,UAAU4F,OAAO,CAACC,KAAK,KACjY,WAAY,CAACX,OAAO,GAAG/F,MAAM,WAAWgG,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,WAAWC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,YAAYiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,MAAMQ,OAAO,CAAC+F,WAAU,GAAMS,OAAO,CAACpG,KAAK,UAAU4F,OAAO,CAACC,KAAK,KACjY,iBAAkB,CAACX,OAAO,OAAO/F,MAAM,YAAY4G,WAAW,CAACC,IAAI,CAACC,YAAY,cAAcd,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,YAAYmL,UAAU,OAAOC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,MAAM,UAAU,SAAS,UAAU,UAAU,mBAAmB,wBAAwB,sBAAsB,yBAAyBiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,IAAI,MAAMQ,OAAO,CAAC+F,WAAU,GAAMC,OAAO,CAACC,KAAK,KAClgB,YAAa,CAACX,OAAO,OAAO/F,MAAM,OAAO4G,WAAW,CAACC,IAAI,CAACC,YAAY,SAASd,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,YAAYmL,UAAU,OAAOC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,MAAM,UAAU,SAAS,UAAU,UAAU,mBAAmB,wBAAwB,sBAAsB,yBAAyBiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,IAAI,MAAMQ,OAAO,CAAC+F,WAAU,GAAMC,OAAO,CAACC,KAAK,KACnf,eAAgB,CAACX,OAAO,OAAO/F,MAAM,UAAUgG,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,YAAYmL,UAAU,OAAOC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,IAAIiG,EAAE,CAACzG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,MAAM,UAAU,SAAS,YAAYiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,MAAMQ,OAAO,CAAC+F,WAAU,KACrX,iBAAkB,CAACT,OAAO,OAAO/F,MAAM,YAAYgG,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,YAAYmL,UAAU,OAAOC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,YAAYiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,IAAI,MAAMQ,OAAO,CAAC+F,WAAU,GAAMC,OAAO,CAACC,KAAK,KAC9X,gBAAiB,CAACX,OAAO,OAAO/F,MAAM,WAAWgG,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,YAAYmL,UAAU,OAAOC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,UAAU,UAAU,mBAAmB,wBAAwB,sBAAsB,yBAAyBiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,IAAI,MAAMQ,OAAO,CAAC+F,WAAU,GAAMC,OAAO,CAACC,KAAK,KAC9d,cAAe,CAACX,OAAO,OAAO/F,MAAM,SAASgG,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,YAAYmL,UAAU,OAAOC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,YAAYiB,OAAO,CAACyG,WAAU,EAAMvG,OAAO,IAAIQ,OAAO,CAAC+F,WAAU,GAAOC,OAAO,CAACC,KAAK,KACnX,gBAAiB,CAACX,OAAO,OAAO/F,MAAM,WAAWgG,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,YAAYmL,UAAU,OAAOC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,UAAU,UAAU,mBAAmB,wBAAwB,sBAAsB,yBAAyBiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,IAAI,MAAMQ,OAAO,CAAC+F,WAAU,GAAMC,OAAO,CAACC,KAAK,KAC9d,qBAAsB,CAACX,OAAO,WAAW/F,MAAM,YAAY4G,WAAW,CAACC,IAAI,CAACC,YAAY,iBAAqBd,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,WAAWC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,UAAU,YAAYiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,MAAMQ,OAAO,CAAC+F,WAAU,GAAMC,OAAO,CAACC,KAAK,KAChc,mBAAoB,CAACX,OAAO,WAAW/F,MAAM,UAAUgG,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,WAAWC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,UAAU,YAAYiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,MAAMQ,OAAO,CAAC+F,WAAU,GAAMC,OAAO,CAACC,KAAK,KAC1Y,YAAa,CAACX,OAAO,QAAQ/F,MAAM,MAAMgG,MAAM,CAACC,IAAI,IAAIpT,MAAM,IAAIqT,aAAa,CAAClL,SAAS,UAAUmL,UAAU,QAAQC,MAAM,CAACC,EAAE,CAACnG,KAAK,QAAQQ,QAAQ,IAAI4F,EAAE,CAACpG,KAAK,OAAOQ,QAAQ,KAAK6F,SAAS,CAACC,WAAU,EAAK1H,YAAY,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,SAAS,YAAYiB,OAAO,CAACyG,WAAU,EAAKvG,OAAO,CAAC,MAAMQ,OAAO,CAAC+F,WAAU,MCZtV,MAAMa,EACJxI,GAAW,CAAA,EACXyI,GAAS,GAETtM,GACAuM,GAEAC,GAAuB,CACrBpB,MAAS,CACPC,EAAK,CAACnG,KAAM,QAASQ,QAAS,IAC9B4F,EAAK,CAACpG,KAAM,OAAQQ,QAAS,KAE/B6F,SAAY,CACVC,WAAa,EACb1H,YAAe,CACb,OAAQ,OAAQ,QAAS,OAAQ,SAAU,MAAO,UAAW,SAC7D,UAAW,mBAAoB,wBAC/B,sBAAuB,yBAG3BiB,OAAU,CACRyG,WAAa,EACbvG,OAAU,CAAC,IAAK,MAElBQ,OAAU,CACR+F,WAAa,IAIjBiB,GAAmB,CAAA,EACnBC,GAAsB,GACtB/M,GAAY,QAEZgN,GAAS,CACPhN,SAAY,EACZ6D,KAAQ,KASV2D,YAAYtD,GAGV,MAAM+I,EAAW,CACflH,QAAS,GACT1F,SAAU,UACV6M,UAAW,SACXC,cAAe,EACfX,QAAS,OACTM,gBAAiB,QACjBC,mBAAoB,KACpBK,OAAQ,WAYV,GAPgC,iBAfhClJ,EAAUA,GAAW,IAeF7D,WACjB4M,EAASlH,QAA+B,YAArB7B,EAAQ7D,SAAyB,GAAK,GACzD4M,EAASH,gBAAuC,YAArB5I,EAAQ7D,SAAyB,QAAU,QAKpC,iBAAzB6D,EAAQmJ,aAA2B,CAC5C,QAAwD,IAA7ClC,EAAmBjH,EAAQmJ,cACpC,MAAM,IAAI9J,MAAM,yBAGlBrD,MAAK2M,EAAuB1B,EAAmBjH,EAAQmJ,cAAc9B,aAIrE0B,EAASlH,QAAU7F,MAAK2M,EAAqBpB,MAAS,EAAE1F,QACxDkH,EAAS5M,SAAWH,MAAK2M,EAAqBxM,SAC9C4M,EAASH,gBAAkB5M,MAAK2M,EAAqBrB,UACrDyB,EAAST,QAAUtM,MAAK2M,GAAsBL,SAAWS,EAAST,QAClES,EAASE,cAAgBjN,MAAK2M,GAAsBf,QAAQC,MAAQkB,EAASE,cAC7EF,EAASC,UAAYhN,MAAK2M,GAAsBP,QAAQpG,MAAQ+G,EAASC,SAC1E,CAoBD,GAhBIhJ,IACFhE,MAAKgE,EAAWpE,OAAOuK,OAAO4C,EAAU,CACtCK,OAAO,EACPvE,UAAU,EACVwE,aAAc,MACbrJ,IAKDhE,MAAKgE,EAAShM,QAChBgI,MAAKgE,EAAS6B,QAAU7F,MAAKgE,EAAShM,OAKT,YAA3BgI,MAAKgE,EAAS7D,SAChBH,MAAKG,EAAY,IAAIoD,MAChB,IAA+B,cAA3BvD,MAAKgE,EAAS7D,UAAuD,cAA3BH,MAAKgE,EAAS7D,SAGjE,MAAM,IAAIkD,MAAM,2CAFhBrD,MAAKG,EAAY,IAAI8G,CAGtB,CAyBD,QANuC,IAA5BjH,MAAKgE,EAASsJ,YACvBtN,MAAKgE,EAASsJ,WAActN,MAAKgE,EAAS6E,UAAsC,aAA1B7I,MAAKgE,EAAS7D,WAKjE,CAAC,GAAI,GAAI,GAAI,GAAI,IAAIoN,SAASvN,MAAKgE,EAAS6B,WAAa7F,MAAKgE,EAAS6E,SAC1E,MAAM,IAAIxF,MAAM,sEAKlB,GAA6C,iBAAlCrD,MAAKgE,EAAS4I,gBAA8B,CACrD,QAAuF,IAA5EtC,EAAiBtK,MAAKgE,EAAS7D,UAAUH,MAAKgE,EAAS4I,iBAChE,MAAM,IAAIvJ,MAAM,4BAGlBrD,MAAK4M,EAAmBhN,OAAO4N,YAAYlD,EAAiBtK,MAAKgE,EAAS7D,UAAUH,MAAKgE,EAAS4I,iBAC7FzT,KAAI,CAACC,EAAG9B,IAAM,CAAC8B,EAAG9B,KAClBwS,QAAQxS,GAAMA,IACzB,MACM0I,MAAK4M,EAAmB5M,MAAKgE,EAAS4I,gBAGpC5M,MAAKgE,EAAS6I,mBAChB7M,MAAK6M,EAAsB7M,MAAKgE,EAAS6I,mBAEzC7M,MAAK6M,EAAsBjN,OAAOC,KAAKG,MAAK4M,GAK9C5M,MAAK0M,EAAY,IAAI9D,EAAa,CAChCC,SAAU7I,MAAKgE,EAAS6E,SACxBhD,QAAS7F,MAAKgE,EAAS6B,QACvBhC,MAAO,OACPwB,KAAM,EAENgC,SAAWzP,GAAUoI,MAAKyM,EAAOnL,KAAK1J,KAGxCoI,MAAKyN,GACN,CAKDA,KACEzN,MAAKyM,EAAS,GACdzM,MAAKF,EAAsC,WAA1BE,MAAKgE,EAAS7D,SAAwB,QAAU,gBACjEH,MAAK8M,EAAOhN,UAAY,EACxBE,MAAK8M,EAAOnJ,KAAO,GACpB,CAQDH,aACE,GAAIxD,MAAKgE,EAAS6E,SAChB,MAAM,IAAIxF,MAAM,uDAOlB,OAJArD,MAAK0M,EAAUxD,IACXlJ,MAAKG,EAAUqD,cAGZxD,IACR,CASDF,SAASA,GACP,GAAiB,SAAbA,EAEF,OADAE,MAAKF,EAAYA,EACVE,KAGT,IAAKN,EAAgBgO,SAAS5N,GAC5B,MAAM,IAAIuD,MAAM,oBAGlB,QAA+C,IAApCrD,MAAK4M,EAAiB9M,GAG/B,MAAM,IAAIuD,MAAM,qCAGlB,OALErD,MAAKF,EAAYA,EAKZE,IACR,CASD6E,KAAKjN,GAGH,OAFAoI,MAAK0M,EAAU7H,KAAKjN,EAAOoI,MAAKF,GAEzBE,IACR,CASDsM,QAAQ1U,GACNA,EAAQ+V,SAAS/V,EAAO,KAAO,EAE/B,IAAK,IAAIN,EAAI,EAAGA,EAAIM,EAAON,IACzB0I,MAAK0M,EAAU1F,MAAM,CAACoC,cAAc,IAGtC,OAAOpJ,IACR,CASD6H,KAAKjQ,GAIH,OAHAoI,KAAK6E,KAAKjN,GACVoI,KAAKsM,UAEEtM,IACR,CASD6G,UAAUjP,GAOR,OALEoI,MAAK0M,EAAUzD,MAAMpC,eADF,IAAVjP,GAC0BoI,MAAK0M,EAAUzD,MAAMpC,UAEvBjP,EAG5BoI,IACR,CASD8G,OAAOlP,GAOL,OALEoI,MAAK0M,EAAUzD,MAAMnC,YADF,IAAVlP,GACuBoI,MAAK0M,EAAUzD,MAAMnC,OAEvBlP,EAGzBoI,IACR,CASD4G,KAAKhP,GAOH,OALEoI,MAAK0M,EAAUzD,MAAMrC,UADF,IAAVhP,GACqBoI,MAAK0M,EAAUzD,MAAMrC,KAEvBhP,EAGvBoI,IACR,CASD+G,OAAOnP,GAOL,OALEoI,MAAK0M,EAAUzD,MAAMlC,YADF,IAAVnP,GACuBoI,MAAK0M,EAAUzD,MAAMlC,OAEvBnP,EAGzBoI,IACR,CASDhI,MAAMA,GAKJ,QAJqB,IAAVA,IACTA,EAAQ,GAGW,iBAAVA,EACT,MAAM,IAAIqL,MAAM,0BAGlB,GAAIrL,EAAQ,GAAKA,EAAQ,EACvB,MAAM,IAAIqL,MAAM,iCAKlB,OAFArD,MAAK0M,EAAUzD,MAAMjR,MAAQA,EAEtBgI,IACR,CASD1H,OAAOA,GAKL,QAJsB,IAAXA,IACTA,EAAS,GAGW,iBAAXA,EACT,MAAM,IAAI+K,MAAM,2BAGlB,GAAI/K,EAAS,GAAKA,EAAS,EACzB,MAAM,IAAI+K,MAAM,kCAKlB,OAFArD,MAAK0M,EAAUzD,MAAM3Q,OAASA,EAEvB0H,IACR,CAUDqF,KAAKrN,EAAOM,GAEV,MAAqB,iBAAVN,EACFgI,KAAK2D,KAAe,UAAV3L,EAAoB,IAAM,WAGvB,IAAXM,IACTA,EAASN,GAGXgI,KAAKhI,MAAMA,GACXgI,KAAK1H,OAAOA,GAEL0H,KACR,CASD2D,KAAK/L,GACH,GAAIoI,MAAKgE,EAAS6E,SAChB,MAAM,IAAIxF,MAAM,2DAGlB,GAAIrD,MAAK0M,EAAU5D,OAAS,EAC1B,MAAM,IAAIzF,MAAM,2DAKlB,MAAMuK,EAAUhW,EAAMuQ,MAAM,mBAW5B,OAVIyF,IACFhW,EAAQgI,OAAOiO,QAAQ7N,MAAK2M,EAAqBpB,OAAOuC,MAAMxW,GAAMA,EAAE,GAAG+N,MAAQuI,EAAQ,KAAI,IAK/FhW,EAAQA,EAAMmW,mBAIwC,IAA3C/N,MAAK2M,EAAqBpB,MAAM3T,GAClCoI,MAAKxH,EAAO,6CAA8C,YAKnEwH,MAAK0M,EAAUxD,IACXlJ,MAAKG,EAAUwD,KAAK/L,IAGxBoI,MAAK8M,EAAOnJ,KAAO/L,EAKjBoI,MAAK0M,EAAU7G,QADH,MAAVjO,EACuBoI,MAAKgE,EAAS6B,QAGpC7F,MAAKgE,EAAS6B,QAAU7F,MAAK2M,EAAqBpB,MAAS,EAAE1F,QAC9D7F,MAAK2M,EAAqBpB,MAAM3T,GAAOiO,QAGpC7F,KACR,CASD6D,MAAMjM,GAGJ,IAFmB,CAAC,OAAQ,SAAU,SAEtB2V,SAAS3V,GACvB,MAAM,IAAIyL,MAAM,qBAKlB,OAFArD,MAAK0M,EAAU7I,MAAQjM,EAEhBoI,IACR,CAaDgO,MAAMnI,EAAStO,GACbyI,MAAK0M,EAAU1F,QAIf,IAAK,IAAIiH,EAAI,EAAGA,EAAI1W,EAAKC,OAAQyW,IAAK,CACpC,MAAMlG,EAAQ,GACd,IAAImG,EAAW,EAIf,IAAK,IAAIxN,EAAI,EAAGA,EAAImF,EAAQrO,OAAQkJ,IAAK,CACvC,MAAMyN,EAAgB,IAAI3B,EAAsB5M,OAAOuK,OAAO,CAAE,EAAEnK,MAAKgE,EAAU,CAC/EhM,MAAO6N,EAAQnF,GAAG1I,MAClB6Q,UAAU,KAGZsF,EAAcrO,SAASE,MAAKF,GAC5BqO,EAActK,MAAMgC,EAAQnF,GAAGmD,OAEL,iBAAftM,EAAK0W,GAAGvN,IACjByN,EAActJ,KAAKtN,EAAK0W,GAAGvN,IAGH,mBAAfnJ,EAAK0W,GAAGvN,IACjBnJ,EAAK0W,GAAGvN,GAAGyN,GAGb,MAAMC,EAAOD,EAAcE,WAI3BH,EAAWhW,KAAKoW,IAAIJ,EAAUE,EAAK5W,QAEnCuQ,EAAMrH,GAAK0N,CACZ,CAID,IAAK,IAAI1N,EAAI,EAAGA,EAAImF,EAAQrO,OAAQkJ,IAClC,KAAIqH,EAAMrH,GAAGlJ,QAAU0W,GAIvB,IAAK,IAAIK,EAAIxG,EAAMrH,GAAGlJ,OAAQ+W,EAAIL,EAAUK,IAAK,CAC/C,IAAIC,EAAgB,WACoB,IAA7B3I,EAAQnF,GAAG8N,gBACpBA,EAAgB3I,EAAQnF,GAAG8N,eAG7B,MAAM3G,EAAO,CAACwG,SAAU,CAAC,CAAC5K,KAAM,QAAS4B,KAAMQ,EAAQnF,GAAG1I,QAASM,OAAQ,GAEtD,UAAjBkW,EACFzG,EAAMrH,GAAG+N,QAAQ5G,GAEjBE,EAAMrH,GAAGY,KAAKuG,EAEjB,CAKH,IAAK,IAAItP,EAAI,EAAGA,EAAI2V,EAAU3V,IAAK,CACjC,IAAK,IAAImI,EAAI,EAAGA,EAAImF,EAAQrO,OAAQkJ,SACG,IAA1BmF,EAAQnF,GAAGgO,YACpB1O,MAAK0M,EAAUrD,MAAMxD,EAAQnF,GAAGgO,YAGlC1O,MAAK0M,EAAUxD,IAAInB,EAAMrH,GAAGnI,GAAG8V,SAAUxI,EAAQnF,GAAG1I,YAEd,IAA3B6N,EAAQnF,GAAGiO,aACpB3O,MAAK0M,EAAUrD,MAAMxD,EAAQnF,GAAGiO,aAIpC3O,MAAK0M,EAAU1F,OAChB,CACF,CAED,OAAOhH,IACR,CAWD4O,KAAK5K,GAWH,OAVAA,EAAUpE,OAAOuK,OAAO,CACtBlB,MAAO,SACPjR,MAAOgI,MAAKgE,EAAS6B,SAAW,IAC/B7B,GAAW,CAAA,GAEdhE,MAAK0M,EAAU1F,QAEfhH,MAAK0M,EAAU7H,MAAwB,WAAlBb,EAAQiF,MAAqB,IAAM,KAAKoB,OAAOrG,EAAQhM,OAAQ,SACpFgI,MAAK0M,EAAU1F,MAAM,CAACoC,cAAc,IAE7BpJ,IACR,CAkBD6O,IAAI7K,EAAS8K,GAUX,IATA9K,EAAUpE,OAAOuK,OAAO,CACtBlB,MAAO,SACPjR,MAAOgI,MAAKgE,EAAS6B,QACrB6I,WAAY,EACZC,YAAa,EACbI,YAAa,EACbC,aAAc,GACbhL,GAAW,CAAA,IAEFhM,MAAQgM,EAAQ0K,WAAa1K,EAAQ2K,YAAc3O,MAAKgE,EAAS6B,QAC3E,MAAM,IAAIxC,MAAM,mBAGlB,IAAI4L,EAEiB,UAAjBjL,EAAQiF,MACVgG,EAAW,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,KACX,UAAjBjL,EAAQiF,QACjBgG,EAAW,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,MAKvC,MAAMd,EAAgB,IAAI3B,EAAsB5M,OAAOuK,OAAO,CAAE,EAAEnK,MAAKgE,EAAU,CAC/EhM,MAAOgM,EAAQhM,OAA0B,QAAjBgM,EAAQiF,MAAkB,EAAI,GAAKjF,EAAQ+K,YAAc/K,EAAQgL,aACzFnG,UAAU,KAGZsF,EAAcrO,SAASE,MAAKF,GAC5BqO,EAActK,MAAMG,EAAQH,OAEJ,mBAAbiL,GACTA,EAASX,GAGa,iBAAbW,GACTX,EAActJ,KAAKiK,GAGrB,MAAM/G,EAAQoG,EAAcE,WAI5BrO,MAAK0M,EAAU1F,QAEM,QAAjBhD,EAAQiF,QACVjJ,MAAK0M,EAAUrD,MAAMrF,EAAQ0K,YAC7B1O,MAAK0M,EAAU7H,KAAKoK,EAAS,GAAI,SACjCjP,MAAK0M,EAAU7H,KAAKoK,EAAS,GAAG5E,OAAOrG,EAAQhM,MAAQ,GAAI,SAC3DgI,MAAK0M,EAAU7H,KAAKoK,EAAS,GAAI,SACjCjP,MAAK0M,EAAUrD,MAAMrF,EAAQ2K,aAC7B3O,MAAK0M,EAAU1F,SAKjB,IAAK,IAAI1P,EAAI,EAAGA,EAAIyQ,EAAMvQ,OAAQF,IAChC0I,MAAK0M,EAAUrD,MAAMrF,EAAQ0K,YAER,QAAjB1K,EAAQiF,QACVjJ,MAAK0M,EAAUzD,MAAM3Q,OAASyP,EAAMzQ,GAAGgB,OACvC0H,MAAK0M,EAAU7H,KAAKoK,EAAS,GAAI,SACjCjP,MAAK0M,EAAUzD,MAAM3Q,OAAS,GAGhC0H,MAAK0M,EAAUrD,MAAMrF,EAAQ+K,aAC7B/O,MAAK0M,EAAUxD,IAAInB,EAAMzQ,GAAG+W,SACxBrK,EAAQhM,OAA0B,QAAjBgM,EAAQiF,MAAkB,EAAI,GAAKjF,EAAQ+K,YAAc/K,EAAQgL,cACtFhP,MAAK0M,EAAUrD,MAAMrF,EAAQgL,cAER,QAAjBhL,EAAQiF,QACVjJ,MAAK0M,EAAUzD,MAAM3Q,OAASyP,EAAMzQ,GAAGgB,OACvC0H,MAAK0M,EAAU7H,KAAKoK,EAAS,GAAI,SACjCjP,MAAK0M,EAAUzD,MAAM3Q,OAAS,GAGhC0H,MAAK0M,EAAUrD,MAAMrF,EAAQ2K,aAC7B3O,MAAK0M,EAAU1F,QAcjB,MATqB,QAAjBhD,EAAQiF,QACVjJ,MAAK0M,EAAUrD,MAAMrF,EAAQ0K,YAC7B1O,MAAK0M,EAAU7H,KAAKoK,EAAS,GAAI,SACjCjP,MAAK0M,EAAU7H,KAAKoK,EAAS,GAAG5E,OAAOrG,EAAQhM,MAAQ,GAAI,SAC3DgI,MAAK0M,EAAU7H,KAAKoK,EAAS,GAAI,SACjCjP,MAAK0M,EAAUrD,MAAMrF,EAAQ2K,aAC7B3O,MAAK0M,EAAU1F,SAGVhH,IACR,CAWD8D,QAAQlM,EAAOmM,EAAWzL,GACxB,IAAI0L,EAAU,CACZ1L,OAAQ,GACRN,MAAO,EACP6M,MAAM,GAWR,GARsB,iBAAXvM,IACT0L,EAAUpE,OAAOuK,OAAOnG,EAAS1L,IAGb,iBAAXA,IACT0L,EAAQ1L,OAASA,GAGf0H,MAAKgE,EAAS6E,SAChB,MAAM,IAAIxF,MAAM,sDAGlB,OAAqD,IAAjDrD,MAAK2M,EAAqBjB,SAASC,UAC9B3L,MAAKxH,EAAO,6CAA8C,WAG1C,iBAAduL,GAA2B/D,MAAK2M,EAAqBjB,SAASzH,YAAYsJ,SAASxJ,IAM9F/D,MAAK0M,EAAU1F,MAAM,CAAC2C,YAAY,EAAMI,iBAAiB,IAI5B,SAAzB/J,MAAK0M,EAAU7I,OACjB7D,MAAK0M,EAAUxD,IAAIlJ,MAAKG,EAAU0D,MAAM7D,MAAK0M,EAAU7I,QAKzD7D,MAAK0M,EAAUxD,IACXlJ,MAAKG,EAAU2D,QAAQlM,EAAOmM,EAAWC,IAKhB,SAAzBhE,MAAK0M,EAAU7I,OACjB7D,MAAK0M,EAAUxD,IAAIlJ,MAAKG,EAAU0D,MAAM,SAG1C7D,MAAK0M,EAAU1F,MAAM,CAAC2C,YAAY,EAAMI,iBAAiB,IAElD/J,MA3BEA,MAAKxH,EAAO,cAAcuL,mCAA4C,UA4BhF,CAaDmB,OAAOtN,EAAOuN,EAAOE,EAAMK,GACzB,IAAI1B,EAAU,CACZmB,MAAO,EACPE,KAAM,EACNK,WAAY,KAmBd,GAhBqB,iBAAVP,IACTnB,EAAUpE,OAAOuK,OAAOnG,EAASmB,IAGd,iBAAVA,IACTnB,EAAQmB,MAAQA,GAGE,iBAATE,IACTrB,EAAQqB,KAAOA,GAGS,iBAAfK,IACT1B,EAAQ0B,WAAaA,GAGnB1F,MAAKgE,EAAS6E,SAChB,MAAM,IAAIxF,MAAM,sDAGlB,OAAmD,IAA/CrD,MAAK2M,EAAqBzH,OAAOyG,UAC5B3L,MAAKxH,EAAO,6CAA8C,WAG/DwL,EAAQmB,QAAUnF,MAAK2M,EAAqBzH,OAAOE,OAAOmI,SAASvF,OAAOhE,EAAQmB,QAC7EnF,MAAKxH,EAAO,iDAAkD,YAKvEwH,MAAK0M,EAAU1F,MAAM,CAAC2C,YAAY,EAAMI,iBAAiB,IAI5B,SAAzB/J,MAAK0M,EAAU7I,OACjB7D,MAAK0M,EAAUxD,IAAIlJ,MAAKG,EAAU0D,MAAM7D,MAAK0M,EAAU7I,QAKzD7D,MAAK0M,EAAUxD,IACXlJ,MAAKG,EAAU+E,OAAOtN,EAAOoM,IAKJ,SAAzBhE,MAAK0M,EAAU7I,OACjB7D,MAAK0M,EAAUxD,IAAIlJ,MAAKG,EAAU0D,MAAM,SAG1C7D,MAAK0M,EAAU1F,MAAM,CAAC2C,YAAY,EAAMI,iBAAiB,IAElD/J,KACR,CAWD4F,OAAOhO,EAAOoM,GAUZ,GATAA,EAAUpE,OAAOuK,OAAO,CACtBnS,MAAO,EACPM,OAAQ,EACRuN,QAAS,EACTC,KAAM,EACNJ,WAAY,EACZK,WAAW,GACV/B,GAAW,CAAA,GAEVhE,MAAKgE,EAAS6E,SAChB,MAAM,IAAIxF,MAAM,0DAGlB,OAAmD,IAA/CrD,MAAK2M,EAAqB/G,OAAO+F,UAGsB,iBAA9C3L,MAAK2M,EAAqB/G,OAAO2G,SACnCvM,KAAK8D,QAAQlM,EAAOoI,MAAK2M,EAAqB/G,OAAO2G,SAASxI,WAGhE/D,MAAKxH,EAAO,iDAAkD,YAKvEwH,MAAK0M,EAAU1F,MAAM,CAAC2C,YAAY,EAAMI,iBAAiB,IAI5B,SAAzB/J,MAAK0M,EAAU7I,OACjB7D,MAAK0M,EAAUxD,IAAIlJ,MAAKG,EAAU0D,MAAM7D,MAAK0M,EAAU7I,QAKzD7D,MAAK0M,EAAUxD,IACXlJ,MAAKG,EAAUyF,OAAOhO,EAAOoM,IAKJ,SAAzBhE,MAAK0M,EAAU7I,OACjB7D,MAAK0M,EAAUxD,IAAIlJ,MAAKG,EAAU0D,MAAM,SAG1C7D,MAAK0M,EAAU1F,MAAM,CAAC2C,YAAY,EAAMI,iBAAiB,IAElD/J,KACR,CAcD3I,MAAMgJ,EAAOrI,EAAOM,EAAQ6K,EAAWxL,GACrC,GAAIqI,MAAKgE,EAAS6E,SAChB,MAAM,IAAIxF,MAAM,oDAGlB,GAAIrL,EAAQ,GAAM,EAChB,MAAM,IAAIqL,MAAM,iCAGlB,GAAI/K,EAAS,GAAM,EACjB,MAAM,IAAI+K,MAAM,uCAGO,IAAdF,IACTA,EAAY,kBAGW,IAAdxL,IACTA,EAAY,KAKd,MAAMqB,EAAOqH,EAAMiH,YAAYtO,KAC/B,IAAIyK,EAiBApM,EANJ,GATA2B,EAAKgR,SAAS,aAAavG,EAAO,WAC1B,aAARzK,IAAsByK,EAAO,aACrB,UAARzK,QAAgD,IAArBqH,EAAM6O,aAA6BzL,EAAO,eAC7D,SAARzK,IAAkByK,EAAO,qBACjB,SAARzK,QAA2C,IAAjBqH,EAAM8O,SAAyB1L,EAAO,mBACxD,UAARzK,GAAoBqH,EAAM9I,MAAQ8I,EAAM+O,OAAO3L,EAAO,cAC9C,eAARzK,GAAyBqH,EAAM9I,MAAQ8I,EAAMgP,QAAQ5L,EAAO,WACpD,UAARzK,GAAoBqH,EAAM9I,MAAQ8I,EAAMrI,OAASqI,EAAM/H,SAASmL,EAAO,WAElEA,EACH,MAAM,IAAIJ,MAAM,+CAOlB,GAAY,WAARI,EAAmB,CACrB,MAAM6L,EAASC,SAASC,cAAc,UACtCF,EAAOtX,MAAQA,EACfsX,EAAOhX,OAASA,EAChB,MAAMmX,EAAUH,EAAOJ,WAAW,MAClCO,EAAQC,UAAUrP,EAAO,EAAG,EAAGrI,EAAOM,GACtCjB,EAAQoY,EAAQE,aAAa,EAAG,EAAG3X,EAAOM,EAC3C,CAED,GAAY,eAARmL,EAAuB,CAEzBpM,EADgBgJ,EAAM6O,WAAW,MACjBS,aAAa,EAAG,EAAGtP,EAAMrI,MAAOqI,EAAM/H,OACvD,CAED,GAAY,qBAARmL,EAA6B,CAC/B,GAA0C,mBAA/BzD,MAAKgE,EAASqJ,aACvB,MAAM,IAAIhK,MAAM,+FAGlB,MACMoM,EADSzP,MAAKgE,EAASqJ,aAAarV,EAAOM,GAC1B4W,WAAW,MAClCO,EAAQC,UAAUrP,EAAO,EAAG,EAAGrI,EAAOM,GACtCjB,EAAQoY,EAAQE,aAAa,EAAG,EAAG3X,EAAOM,EAC3C,CA0BD,GAxBY,mBAARmL,IACFpM,EAAQ,IAAIqK,EAAUrB,EAAMrI,MAAOqI,EAAM/H,QACzCjB,EAAME,KAAKmQ,IAAIrH,EAAM8O,OAAO,GAAG5X,OAGrB,cAARkM,IACFpM,EAAQ,IAAIqK,EAAUrB,EAAM+O,KAAKpX,MAAOqI,EAAM+O,KAAK9W,QACnDjB,EAAME,KAAKmQ,IAAIrH,EAAM9I,OAGX,WAARkM,IACFpM,EAAQ,IAAIqK,EAAUrB,EAAMgP,MAAM,GAAIhP,EAAMgP,MAAM,IAClDhY,EAAME,KAAKmQ,IAAIrH,EAAM9I,OAGX,UAARkM,IACFpM,EAAQ,IAAIqK,EAAUrB,EAAMrI,MAAOqI,EAAM/H,QACzCjB,EAAME,KAAKmQ,IAAIrH,EAAM9I,OAGX,aAARkM,IACFpM,EAAQgJ,IAGLhJ,EACH,MAAM,IAAIgM,MAAM,6BAWlB,GANIrL,IAAUX,EAAMW,OAASM,IAAWjB,EAAMiB,SAC5CjB,EAAQuY,EAAgBvY,EAAOW,EAAOM,EAAQ,2BAK5CN,IAAUX,EAAMW,OAASM,IAAWjB,EAAMiB,OAC5C,MAAM,IAAI+K,MAAM,8BAOlB,OAFAhM,EAAQwY,EAAQnX,QAAQrB,EAAO,CAAC,IAAM,IAAM,MAEpC8L,GACN,IAAK,YAAa9L,EAAQyY,EAAOnY,UAAUN,EAAOM,GAAY,MAC9D,IAAK,QAASN,EAAQyY,EAAOjY,MAAMR,EAAOM,GAAY,MACtD,IAAK,iBAAkBN,EAAQyY,EAAO1X,eAAef,GAAQ,MAC7D,IAAK,WAAYA,EAAQyY,EAAOrX,SAASpB,GA0B3C,OAtBA2I,MAAK0M,EAAU1F,MAAM,CAAC2C,YAAY,EAAMI,iBAAiB,IAI5B,SAAzB/J,MAAK0M,EAAU7I,OACjB7D,MAAK0M,EAAUxD,IAAIlJ,MAAKG,EAAU0D,MAAM7D,MAAK0M,EAAU7I,QAKzD7D,MAAK0M,EAAUxD,IACXlJ,MAAKG,EAAU9I,MAAMA,EAAOW,EAAOM,EAAQ0H,MAAKgE,EAASgJ,YAKhC,SAAzBhN,MAAK0M,EAAU7I,OACjB7D,MAAK0M,EAAUxD,IAAIlJ,MAAKG,EAAU0D,MAAM,SAG1C7D,MAAK0M,EAAU1F,MAAM,CAAC2C,YAAY,EAAMI,iBAAiB,IAElD/J,IACR,CASDuG,IAAI3O,GACF,GAAIoI,MAAKgE,EAAS6E,SAChB,MAAM,IAAIxF,MAAM,gDAGlB,IAAK,IAAI/L,EAAI,EAAGA,EAAI0I,MAAKgE,EAASiJ,cAAe3V,IAC/C0I,MAAK0M,EAAU1F,MAAM,CAACoC,cAAc,IAWtC,OARApJ,MAAK0M,EAAU1F,MAAM,CAAC2C,YAAY,EAAMI,iBAAiB,IAEzD/J,MAAK0M,EAAUxD,IACXlJ,MAAKG,EAAUoG,IAAI3O,IAGvBoI,MAAK0M,EAAU1F,MAAM,CAAC2C,YAAY,EAAMI,iBAAiB,IAElD/J,IACR,CAWDwG,MAAMC,EAAQC,EAAIC,GAChB,GAAI3G,MAAKgE,EAAS6E,SAChB,MAAM,IAAIxF,MAAM,kDAWlB,OARArD,MAAK0M,EAAU1F,MAAM,CAAC2C,YAAY,EAAMI,iBAAiB,IAEzD/J,MAAK0M,EAAUxD,IACXlJ,MAAKG,EAAUqG,MAAMC,EAAQC,EAAIC,IAGrC3G,MAAK0M,EAAU1F,MAAM,CAAC2C,YAAY,EAAMI,iBAAiB,IAElD/J,IACR,CASDsJ,IAAI/R,GAGF,OAFAyI,MAAK0M,EAAUpD,IAAI/R,GAEZyI,IACR,CAQD+P,GAAanL,EAAUhN,GACrB,MAAiB,SAAbgN,EACK5E,MAAKG,EAAUyG,KAAKhP,GAGZ,cAAbgN,EACK5E,MAAKG,EAAU0G,UAAUjP,GAGjB,WAAbgN,EACK5E,MAAKG,EAAU2G,OAAOlP,GAGd,WAAbgN,EACK5E,MAAKG,EAAU4G,OAAOnP,GAGd,SAAbgN,EACK5E,MAAKG,EAAUkF,KAAKzN,EAAMI,MAAOJ,EAAMU,aADhD,CAGD,CAQD0X,GAAYpY,EAAOkI,GACjB,GAAiB,OAAbA,EAAmB,CAGrB,MAAO,CACL,CAAC2D,KAAM,OAAQC,QAAS,IAHThE,EAAgBsF,OAAOpN,EAAO,WAKhD,CAED,GAAiB,SAAbkI,EAAqB,CACvB,MAAMoB,EAAWxB,EAAgBsF,OAAOpN,EAAOkI,GAE/C,OAAIE,MAAK8M,EAAOhN,UAAYE,MAAK4M,EAAiB9M,IAChDE,MAAK8M,EAAOhN,SAAWE,MAAK4M,EAAiB9M,GAEtC,CACL,CAAC2D,KAAM,WAAYC,QAAS1D,MAAKG,EAAUL,SAASE,MAAK4M,EAAiB9M,KAC1E,CAAC2D,KAAM,OAAQC,QAAS,IAAIxC,MAIzB,CACL,CAACuC,KAAM,OAAQC,QAAS,IAAIxC,IAE/B,CAED,MAAMF,EAAYtB,EAAgBuQ,WAAWrY,EAAOoI,MAAK6M,GACnD7D,EAAS,GAEf,IAAK,MAAM9H,KAAYF,EACrBhB,MAAK8M,EAAOhN,SAAWE,MAAK4M,EAAiB1L,EAASpB,UACtDkJ,EAAO1H,KACH,CAACmC,KAAM,WAAYC,QAAS1D,MAAKG,EAAUL,SAASE,MAAK4M,EAAiB1L,EAASpB,YACnF,CAAC2D,KAAM,OAAQC,QAAS,IAAIxC,EAASG,SAI3C,OAAO2H,CACR,CAODqF,WACE,IAAI6B,GAAgB,EAIhBC,EAAWnQ,MAAKyM,EAAOzM,MAAKyM,EAAOjV,OAAS,GAEhD,GAAI2Y,EAAU,CACZ,IAAIC,EAAcD,EAASA,EAAS3Y,OAAS,GAEzC4Y,GAAe,CAAE,QAAS,OAAQ7C,SAAS6C,EAAY3M,QACzDyM,GAAgB,EAEnB,CAIGA,GAAiBlQ,MAAKgE,EAASsJ,YAActN,MAAKgE,EAAS6E,UAC7D7I,MAAK0M,EAAUxD,IACXlJ,MAAKG,EAAU6G,SAMrB,MAAM1D,EAAS,GAET+E,EAAYrI,MAAK0M,EAAUhD,MAAM,CAACC,YAAY,EAAMI,iBAAiB,IAQ3E,IANI1B,EAAU7Q,QACZwI,MAAKyM,EAAOnL,KAAK+G,GAKZrI,MAAKyM,EAAOjV,QAAQ,CACzB,MAAMqQ,EAAO7H,MAAKyM,EAAO4D,QACnB/X,EAASuP,EACViC,QAAQxS,GAAiB,UAAXA,EAAEmM,MAAmC,SAAfnM,EAAEsN,WACtCzL,KAAK7B,GAAMA,EAAEM,MAAMU,SACnBgY,QAAO,CAACC,EAAGpK,IAAMjO,KAAKoW,IAAIiC,EAAGpK,IAAI,GAElCnG,MAAKgE,EAASoJ,OAChBoD,QAAQC,IAAI,IAAM5I,EAAKiC,QAAQxS,GAAiB,SAAXA,EAAEmM,OAAiBtK,KAAK7B,GAAMA,EAAEM,QAAO8Q,KAAK,IAAM,IAAKpQ,GAG9FgL,EAAOhC,KAAK,CACV+M,SAAUxG,EACVvP,OAAQA,GAEX,CAQD,OANI0H,MAAKgE,EAASoJ,OAChBoD,QAAQC,IAAI,WAAYnN,GAG1BtD,MAAKyN,IAEEnK,CACR,CASD0B,OAAO0L,GAGL,MAAMrC,EAAWrO,KAAKqO,WAEtB,GAAe,aAAXqC,EACF,OAAOrC,EAKT,MAAMtG,EAAQ,GAEd,IAAK,MAAMF,KAAQwG,EAAU,CAC3B,MAAMrF,EAAS,GAEf,IAAK,MAAMO,KAAQ1B,EAAKwG,SACJ,SAAd9E,EAAK9F,KACPuF,EAAO1H,QAAQtB,MAAKgQ,EAAYzG,EAAK3R,MAAO2R,EAAKzJ,WAC1B,UAAdyJ,EAAK9F,KACduF,EAAO1H,KAAK1B,OAAOuK,OAAOZ,EAAM,CAAC7F,QAAS1D,MAAK+P,EAAaxG,EAAK3E,SAAU2E,EAAK3R,WACvE2R,EAAK3R,OAAS2R,EAAK7F,UAC5BsF,EAAO1H,KAAKiI,GAIhBxB,EAAMzG,KAAK0H,EACZ,CAED,GAAe,UAAX0H,EACF,OAAO3I,EAKT,IAAIzE,EAAS,GACTuG,EAAO,KAEX,IAAK,MAAMhC,KAAQE,EAAO,CACxB,IAAK,MAAMwB,KAAQ1B,EACjBvE,EAAOhC,QAAQiI,EAAK7F,SACpBmG,EAAON,EAGqB,SAA1BvJ,MAAKgE,EAASsI,SAChBhJ,EAAOhC,KAAK,GAAM,IAGU,OAA1BtB,MAAKgE,EAASsI,SAChBhJ,EAAOhC,KAAK,GAEf,CAQD,OAJIuI,GAAsB,UAAdA,EAAKpG,OACfH,EAASA,EAAO4D,MAAM,EAAG,EAAIlH,MAAKgE,EAASsI,QAAQ9U,SAG9C+I,WAAWoQ,KAAKrN,EACxB,CAWD9K,GAAOoY,EAASC,GACd,GAAc,WAAVA,GAA+C,WAAzB7Q,MAAKgE,EAASkJ,OACtC,MAAM,IAAI7J,MAAMuN,GAKlB,OAFAJ,QAAQM,KAAKF,GAEN5Q,IACR,CAOU+Q,2BACT,OAAOnR,OAAOiO,QAAQ5C,GAAoB9R,KAAK7B,IAAO,CAAC0Z,GAAI1Z,EAAE,GAAI0B,KAAM1B,EAAE,GAAG4T,OAAS,IAAM5T,EAAE,GAAG6N,SACjG,CAOGU,cACF,OAAO7F,MAAK0M,EAAU7G,OACvB,CAMG1F,eACF,OAAOH,MAAKgE,EAAS7D,QACtB,CAMGwM,0BACF,OAAO3M,MAAK2M,CACb","x_google_ignoreList":[0,1,2,3,4]} \ No newline at end of file diff --git a/dist/types/codepage-mappings.d.ts b/dist/types/codepage-mappings.d.ts new file mode 100644 index 0000000..8292e41 --- /dev/null +++ b/dist/types/codepage-mappings.d.ts @@ -0,0 +1,25 @@ +export type CodePageMapping = { + [key: string]: string[]; +}; + +export const codePageMappings: Record = { + 'esc-pos': { + 'bixolon/legacy': ["cp437","epson/katakana","cp850","cp860","cp863","cp865",null,null,null,null,null,null,null,null,null,null,null,null,null,"cp858"], + 'bixolon': ["cp437","epson/katakana","cp850","cp860","cp863","cp865",null,null,null,null,null,null,null,null,null,null,"windows1252","cp866","cp852","cp858",null,"cp862","cp864","thai42","windows1253","windows1254","windows1257",null,"windows1251","cp737","cp775","thai14","bixolon/hebrew","windows1255","thai11","thai18","cp885","cp857","iso8859-7","thai16","windows1256","windows1258","khmer",null,null,null,"bixolon/cp866","windows1250",null,"tcvn3","tcvn3capitals","viscii"], + 'citizen': ["cp437","epson/katakana","cp858","cp860","cp863","cp865","cp852","cp866","cp857",null,null,null,null,null,null,null,"windows1252",null,null,null,null,"thai11",null,null,null,null,"thai13",null,null,null,"tcvn3","tcvn3capitals","windows1258",null,null,null,null,null,null,null,"cp864"], + 'epson/legacy': ["cp437","epson/katakana","cp850","cp860","cp863","cp865",null,null,null,null,null,null,null,null,null,null,"windows1252","cp866","cp852","cp858"], + 'epson': ["cp437","epson/katakana","cp850","cp860","cp863","cp865",null,null,null,null,null,"cp851","cp853","cp857","cp737","iso8859-7","windows1252","cp866","cp852","cp858","thai42","thai11",null,null,null,null,"thai13",null,null,null,"tcvn3","tcvn3capitals","cp720","cp775","cp855","cp861","cp862","cp864","cp869","epson/iso8859-2","iso8859-15","cp1098","cp774","cp772","cp1125","windows1250","windows1251","windows1253","windows1254","windows1255","windows1256","windows1257","windows1258","rk1048"], + 'fujitsu': ["cp437","epson/katakana","cp850","cp860","cp863","cp865",null,null,"cp857",null,null,null,null,null,null,null,"windows1252","cp866","cp852","cp858",null,null,null,null,null,null,"thai13",null,null,null,null,null,null,null,null,null,null,null,null,null,"cp864"], + 'hp': ["cp437","cp850","cp852","cp860","cp863","cp865","cp858","cp866","windows1252","cp862","cp737","cp874","cp857","windows1251","windows1255","rk1048"], + 'metapace': ["cp437","epson/katakana","cp850","cp860","cp863","cp865",null,null,null,null,null,null,null,null,null,null,null,null,null,"cp858"], + 'mpt': ["cp437",null,"cp850","cp860","cp863","cp865","windows1251","cp866","cp3021","cp3012"], + 'pos-5890': ["cp437","epson/katakana","cp850","cp860","cp863","cp865","iso8859-1",null,"cp862",null,null,null,null,null,null,null,"windows1252","cp866","cp852","cp858",null,null,null,"windows1251","cp737","windows1257",null,"windows1258","cp864",null,null,null,"windows1255",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"cp861",null,null,null,"cp855","cp857",null,null,null,"cp851","cp869",null,"cp772","cp774",null,null,"windows1250",null,"cp3840",null,"cp3843","cp3844","cp3845","cp3846","cp3847","cp3848",null,"cp771","cp3001","cp3002","cp3011","cp3012",null,"cp3041","windows1253","windows1254","windows1256","cp720",null,"cp775"], + 'pos-8360': ["cp437","epson/katakana","cp850","cp860","cp863","cp865","iso8859-1","windows1253","cp862",null,null,null,null,null,null,null,"windows1252","cp866","cp852","cp858",null,"latvian",null,"windows1251","cp737","windows1257",null,"windows1258","cp864",null,null,"pos8360/hebrew","windows1255",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"cp861",null,null,null,"cp855","cp857",null,null,null,"cp851","cp869",null,"cp772","cp774",null,null,"windows1250",null,"cp3840",null,"cp3843","cp3844","cp3845","cp3846","cp3847","cp3848",null,"cp771","cp3001","cp3002","cp3011","cp3012",null,null,null,"windows1254","windows1256","cp720",null,"cp775"], + 'star': ["cp437","star/katakana","cp850","cp860","cp863","cp865",null,null,null,null,null,null,null,null,null,null,"windows1252","cp866","cp852","cp858","thai42","thai11","thai13","thai14","thai16",null,"thai18"], + 'xprinter': ["cp437","epson/katakana","cp850","cp860","cp863","cp865","iso8859-1","windows1253","xprinter/hebrew","cp3012",null,"windows1255",null,null,null,null,"windows1252","cp866","cp852","cp858",null,"latvian","cp864","windows1251","cp737","windows1257",null,null,null,null,null,null,null,"windows1256"], + 'youku': ["cp437","epson/katakana","cp850","cp860","cp863","cp865","windows1251","cp866","cp3021","cp3012",null,null,null,null,null,"cp862","windows1252",null,"cp852","cp858",null,null,"cp864","iso8859-1","cp737","windows1257",null,null,"cp855","cp857","windows1250","cp775","windows1254","windows1255","windows1256","windows1258",null,null,"iso8859-1",null,null,null,null,null,"iso8859-15",null,null,"cp874"], + }, + 'star-prnt': { + 'star': ["star/standard","cp437","star/katakana",null,"cp858","cp852","cp860","cp861","cp863","cp865","cp866","cp855","cp857","cp862","cp864","cp737","cp851","cp869","star/cp928","cp772","cp774","star/cp874",null,null,null,null,null,null,null,null,null,null,"windows1252","windows1250","windows1251",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"cp3840","cp3841","cp3843","cp3844","cp3845","cp3846","cp3847","cp3848","cp1001","cp771","cp3001","cp3002","cp3011","cp3012","cp3021","cp3041"], + }, +}; \ No newline at end of file diff --git a/dist/types/codepages.d.ts b/dist/types/codepages.d.ts new file mode 100644 index 0000000..210f179 --- /dev/null +++ b/dist/types/codepages.d.ts @@ -0,0 +1,155 @@ +export type CodePage = + | "bixolon/cp866" + | "bixolon/hebrew" + | "cp1001" + | "cp1098" + | "cp1125" + | "cp3001" + | "cp3002" + | "cp3011" + | "cp3012" + | "cp3021" + | "cp3041" + | "cp3840" + | "cp3841" + | "cp3843" + | "cp3844" + | "cp3845" + | "cp3846" + | "cp3847" + | "cp3848" + | "cp437" + | "cp720" + | "cp737" + | "cp771" + | "cp772" + | "cp774" + | "cp775" + | "cp850" + | "cp851" + | "cp852" + | "cp853" + | "cp855" + | "cp857" + | "cp858" + | "cp860" + | "cp861" + | "cp862" + | "cp863" + | "cp864" + | "cp865" + | "cp866" + | "cp869" + | "cp874" + | "cp885" + | "epson/iso8859-2" + | "epson/katakana" + | "iso8859-1" + | "iso8859-15" + | "iso8859-7" + | "khmer" + | "latvian" + | "pos8360/hebrew" + | "rk1048" + | "star/cp874" + | "star/cp928" + | "star/katakana" + | "star/standard" + | "tcvn3" + | "tcvn3capitals" + | "thai11" + | "thai13" + | "thai14" + | "thai16" + | "thai18" + | "thai42" + | "viscii" + | "windows1250" + | "windows1251" + | "windows1252" + | "windows1253" + | "windows1254" + | "windows1255" + | "windows1256" + | "windows1257" + | "windows1258" + | "xprinter/hebrew" +; + +export const codePages: Record = { + 'bixolon/cp866': 'bixolon/cp866', + 'bixolon/hebrew': 'bixolon/hebrew', + 'cp1001': 'cp1001', + 'cp1098': 'cp1098', + 'cp1125': 'cp1125', + 'cp3001': 'cp3001', + 'cp3002': 'cp3002', + 'cp3011': 'cp3011', + 'cp3012': 'cp3012', + 'cp3021': 'cp3021', + 'cp3041': 'cp3041', + 'cp3840': 'cp3840', + 'cp3841': 'cp3841', + 'cp3843': 'cp3843', + 'cp3844': 'cp3844', + 'cp3845': 'cp3845', + 'cp3846': 'cp3846', + 'cp3847': 'cp3847', + 'cp3848': 'cp3848', + 'cp437': 'cp437', + 'cp720': 'cp720', + 'cp737': 'cp737', + 'cp771': 'cp771', + 'cp772': 'cp772', + 'cp774': 'cp774', + 'cp775': 'cp775', + 'cp850': 'cp850', + 'cp851': 'cp851', + 'cp852': 'cp852', + 'cp853': 'cp853', + 'cp855': 'cp855', + 'cp857': 'cp857', + 'cp858': 'cp858', + 'cp860': 'cp860', + 'cp861': 'cp861', + 'cp862': 'cp862', + 'cp863': 'cp863', + 'cp864': 'cp864', + 'cp865': 'cp865', + 'cp866': 'cp866', + 'cp869': 'cp869', + 'cp874': 'cp874', + 'cp885': 'cp885', + 'epson/iso8859-2': 'epson/iso8859-2', + 'epson/katakana': 'epson/katakana', + 'iso8859-1': 'iso8859-1', + 'iso8859-15': 'iso8859-15', + 'iso8859-7': 'iso8859-7', + 'khmer': 'khmer', + 'latvian': 'latvian', + 'pos8360/hebrew': 'pos8360/hebrew', + 'rk1048': 'rk1048', + 'star/cp874': 'star/cp874', + 'star/cp928': 'star/cp928', + 'star/katakana': 'star/katakana', + 'star/standard': 'star/standard', + 'tcvn3': 'tcvn3', + 'tcvn3capitals': 'tcvn3capitals', + 'thai11': 'thai11', + 'thai13': 'thai13', + 'thai14': 'thai14', + 'thai16': 'thai16', + 'thai18': 'thai18', + 'thai42': 'thai42', + 'viscii': 'viscii', + 'windows1250': 'windows1250', + 'windows1251': 'windows1251', + 'windows1252': 'windows1252', + 'windows1253': 'windows1253', + 'windows1254': 'windows1254', + 'windows1255': 'windows1255', + 'windows1256': 'windows1256', + 'windows1257': 'windows1257', + 'windows1258': 'windows1258', + 'xprinter/hebrew': 'xprinter/hebrew', +}; \ No newline at end of file diff --git a/dist/types/printer-models.d.ts b/dist/types/printer-models.d.ts new file mode 100644 index 0000000..7b6e975 --- /dev/null +++ b/dist/types/printer-models.d.ts @@ -0,0 +1,1770 @@ +export type PrinterModel = { + id: string; + name: string; + vendor: string; + description?: string; + features?: string[]; + codepages?: string[]; +}; + +export const printerModels: Record = { + 'bixolon-srp350': { + "vendor": "Bixolon", + "model": "SRP-350", + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "bixolon/legacy", + "fonts": { + "A": { + "size": "12x24", + "columns": 42 + }, + "B": { + "size": "9x17", + "columns": 56 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": false, + "models": [] + }, + "pdf417": { + "supported": false + }, + "cutter": { + "feed": 4 + } + } +}, + 'bixolon-srp350iii': { + "vendor": "Bixolon", + "model": "SRP-350III", + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "bixolon", + "fonts": { + "A": { + "size": "12x24", + "columns": 42 + }, + "B": { + "size": "9x17", + "columns": 56 + }, + "C": { + "size": "9x24", + "columns": 56 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'citizen-ct-s310ii': { + "vendor": "Citizen", + "model": "CT-S310II", + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "citizen", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x24", + "columns": 64 + }, + "C": { + "size": "8x16", + "columns": 72 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 3 + } + } +}, + 'epson-tm-m30ii': { + "vendor": "Epson", + "model": "TM-m30II", + "interfaces": { + "usb": { + "productName": "TM-m30II" + } + }, + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "10x24", + "columns": 57 + }, + "C": { + "size": "9x17", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded", + "code128-auto" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'epson-tm-m30iii': { + "vendor": "Epson", + "model": "TM-m30III", + "interfaces": { + "usb": { + "productName": "TM-m30III" + } + }, + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "10x24", + "columns": 57 + }, + "C": { + "size": "9x17", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded", + "code128-auto" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'epson-tm-p20ii': { + "vendor": "Epson", + "model": "TM-P20II", + "media": { + "dpi": 203, + "width": 58 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson", + "fonts": { + "A": { + "size": "12x24", + "columns": 32 + }, + "B": { + "size": "9x24", + "columns": 42 + }, + "C": { + "size": "9x17", + "columns": 42 + }, + "D": { + "size": "10x24", + "columns": 38 + }, + "E": { + "size": "8x16", + "columns": 48 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded", + "code128-auto" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "images": { + "mode": "raster" + }, + "cutter": { + "feed": 3 + } + } +}, + 'epson-tm-t20ii': { + "vendor": "Epson", + "model": "TM-T20II", + "interfaces": { + "usb": { + "productName": "TM-T20II" + } + }, + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x17", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'epson-tm-t20iii': { + "vendor": "Epson", + "model": "TM-T20III", + "interfaces": { + "usb": { + "productName": "TM-T20III" + } + }, + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x17", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'epson-tm-t20iv': { + "vendor": "Epson", + "model": "TM-T20IV", + "interfaces": { + "usb": { + "productName": "TM-T20IV" + } + }, + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x17", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded", + "code128-auto" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'epson-tm-t70': { + "vendor": "Epson", + "model": "TM-T70", + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson/legacy", + "fonts": { + "A": { + "size": "12x24", + "columns": 42 + }, + "B": { + "size": "9x17", + "columns": 56 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "images": { + "mode": "raster" + }, + "cutter": { + "feed": 4 + } + } +}, + 'epson-tm-t70ii': { + "vendor": "Epson", + "model": "TM-T70II", + "interface": { + "usb": { + "productName": "TM-T70II" + } + }, + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson", + "fonts": { + "A": { + "size": "12x24", + "columns": 42 + }, + "B": { + "size": "9x17", + "columns": 56 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "images": { + "mode": "raster" + }, + "cutter": { + "feed": 4 + } + } +}, + 'epson-tm-t88ii': { + "vendor": "Epson", + "model": "TM-T88II", + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson/legacy", + "fonts": { + "A": { + "size": "12x24", + "columns": 42 + }, + "B": { + "size": "9x17", + "columns": 56 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'epson-tm-t88iii': { + "vendor": "Epson", + "model": "TM-T88III", + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson/legacy", + "fonts": { + "A": { + "size": "12x24", + "columns": 42 + }, + "B": { + "size": "9x17", + "columns": 56 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'epson-tm-t88iv': { + "vendor": "Epson", + "model": "TM-T88IV", + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson/legacy", + "fonts": { + "A": { + "size": "12x24", + "columns": 42 + }, + "B": { + "size": "9x17", + "columns": 56 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'epson-tm-t88v': { + "vendor": "Epson", + "model": "TM-T88V", + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson", + "fonts": { + "A": { + "size": "12x24", + "columns": 42 + }, + "B": { + "size": "9x17", + "columns": 56 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'epson-tm-t88vi': { + "vendor": "Epson", + "model": "TM-T88VI", + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson", + "fonts": { + "A": { + "size": "12x24", + "columns": 42 + }, + "B": { + "size": "9x17", + "columns": 56 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'epson-tm-t88vii': { + "vendor": "Epson", + "model": "TM-T88VII", + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson", + "fonts": { + "A": { + "size": "12x24", + "columns": 42 + }, + "B": { + "size": "9x17", + "columns": 56 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded", + "code128-auto" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'fujitsu-fp1000': { + "vendor": "Fujitsu", + "model": "FP-1000", + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "fujitsu", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x24", + "columns": 56 + }, + "C": { + "size": "8x16", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": false + }, + "cutter": { + "feed": 4 + } + } +}, + 'hp-a779': { + "vendor": "HP", + "model": "A779", + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "hp", + "newline": "\n", + "fonts": { + "A": { + "size": "12x24", + "columns": 44 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": false, + "fallback": { + "type": "barcode", + "symbology": 75 + } + }, + "cutter": { + "feed": 4 + } + } +}, + 'metapace-t1': { + "vendor": "Metapace", + "model": "T-1", + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "metapace", + "fonts": { + "A": { + "size": "12x24", + "columns": 42 + }, + "B": { + "size": "9x17", + "columns": 56 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": false, + "models": [] + }, + "pdf417": { + "supported": false + }, + "cutter": { + "feed": 4 + } + } +}, + 'mpt-ii': { + "vendor": "", + "model": "MPT-II", + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "mpt", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x17", + "columns": 64 + }, + "C": { + "size": "0x0", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": true, + "models": [] + }, + "pdf417": { + "supported": false + } + } +}, + 'pos-5890': { + "vendor": "", + "model": "POS-5890", + "media": { + "dpi": 203, + "width": 58 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "pos-5890", + "fonts": { + "A": { + "size": "12x24", + "columns": 32 + }, + "B": { + "size": "9x17", + "columns": 42 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "2" + ] + }, + "pdf417": { + "supported": true + }, + "images": { + "mode": "raster" + }, + "cutter": { + "feed": 1 + } + } +}, + 'pos-8360': { + "vendor": "", + "model": "POS-8360", + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "pos-8360", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x17", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "2" + ] + }, + "pdf417": { + "supported": true + }, + "images": { + "mode": "raster" + }, + "cutter": { + "feed": 4 + } + } +}, + 'star-mc-print2': { + "vendor": "Star", + "model": "mC-Print2", + "interfaces": { + "usb": { + "productName": "mC-Print2" + } + }, + "media": { + "dpi": 203, + "width": 58 + }, + "capabilities": { + "language": "star-prnt", + "codepages": "star", + "fonts": { + "A": { + "size": "12x24", + "columns": 32 + }, + "B": { + "size": "9x24", + "columns": 42 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "itf", + "codabar", + "code93", + "code128", + "gs1-128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 3 + } + } +}, + 'star-mpop': { + "vendor": "Star", + "model": "mPOP", + "interfaces": { + "usb": { + "productName": "mPOP" + } + }, + "media": { + "dpi": 203, + "width": 58 + }, + "capabilities": { + "language": "star-prnt", + "codepages": "star", + "fonts": { + "A": { + "size": "12x24", + "columns": 32 + }, + "B": { + "size": "9x24", + "columns": 42 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "itf", + "codabar", + "code93", + "code128", + "gs1-128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 3 + } + } +}, + 'star-sm-l200': { + "vendor": "Star", + "model": "SM-L200", + "media": { + "dpi": 203, + "width": 58 + }, + "capabilities": { + "language": "star-prnt", + "codepages": "star", + "fonts": { + "A": { + "size": "12x24", + "columns": 32 + }, + "B": { + "size": "9x24", + "columns": 42 + }, + "C": { + "size": "9x17", + "columns": 42 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "2" + ] + }, + "pdf417": { + "supported": true + } + } +}, + 'star-tsp100iii': { + "vendor": "Star", + "model": "TSP100III", + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "star-prnt", + "codepages": "star", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x24", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 3 + } + } +}, + 'star-tsp100iv': { + "vendor": "Star", + "model": "TSP100IV", + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "star-prnt", + "codepages": "star", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x24", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 3 + } + } +}, + 'star-tsp650': { + "vendor": "Star", + "model": "TSP650", + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "star-line", + "codepages": "star", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x24", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": false, + "models": [] + }, + "pdf417": { + "supported": false + }, + "cutter": { + "feed": 3 + } + } +}, + 'star-tsp650ii': { + "vendor": "Star", + "model": "TSP650II", + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "star-line", + "codepages": "star", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x24", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 3 + } + } +}, + 'xprinter-xp-n160ii': { + "vendor": "Xprinter", + "model": "XP-N160II", + "interfaces": { + "usb": { + "productName": "Printer-80\u0000" + } + }, + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "xprinter", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x17", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'xprinter-xp-t80q': { + "vendor": "Xprinter", + "model": "XP-T80Q", + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "xprinter", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x17", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'youku-58t': { + "vendor": "Youku", + "model": "58T", + "media": { + "dpi": 203, + "width": 58 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "youku", + "fonts": { + "A": { + "size": "12x24", + "columns": 32 + }, + "B": { + "size": "9x24", + "columns": 42 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "2" + ] + }, + "pdf417": { + "supported": false + } + } +}, +}; \ No newline at end of file diff --git a/dist/types/receipt-printer-encoder.d.ts b/dist/types/receipt-printer-encoder.d.ts new file mode 100644 index 0000000..9e1618a --- /dev/null +++ b/dist/types/receipt-printer-encoder.d.ts @@ -0,0 +1,161 @@ +import type { PrinterModel } from "./printer-models"; +import type { CodePageMapping } from "./codepage-mappings"; +import type { CodePage } from "./codepages"; + +export type { CodePage }; + +export type Language = "esc-pos" | "star-prnt" | "star-line"; + +export type ImageMode = "column" | "raster"; + +export type ImageAlgorithm = + | "threshold" + | "bayer" + | "floydsteinberg" + | "atkinson"; + +export interface ReceiptPrinterOptions { + columns?: number; + /** + * @deprecated The width parameter has now been changed to the columns parameter. + */ + width?: number; + language?: Language; + imageMode?: ImageMode; + feedBeforeCut?: number; + newline?: string; + codepageMapping?: CodePageMapping | Record; + codepageCandidates?: CodePageMapping[]; + debug?: boolean; + embedded?: boolean; + createCanvas?: (width: number, height: number) => HTMLCanvasElement; + autoFlush?: boolean; + printerModel?: PrinterModel; +} + +export interface TableColumn { + width?: number; + marginLeft?: number; + marginRight?: number; + align?: "left" | "center" | "right"; + verticalAlign?: "top" | "bottom"; +} + +export interface BoxOptions { + style?: "none" | "single" | "double"; + width?: number; + marginLeft?: number; + marginRight?: number; + paddingLeft?: number; + paddingRight?: number; + align: "left" | "center" | "right"; +} + +export interface QRCodeOptions { + model?: 1 | 2; + size?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; + errorlevel?: "l" | "m" | "q" | "h"; +} + +export interface PDF417Options { + width?: number; + height?: number; + columns?: number; + rows?: number; + errorlevel?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; + truncated?: boolean; +} + +export interface RuleOptions { + style?: "none" | "single" | "double"; + width?: number; +} + +export default class ReceiptPrinterEncoder { + constructor(options?: ReceiptPrinterOptions); + + initialize(): ReceiptPrinterEncoder; + + codepage(codepage: CodePage): ReceiptPrinterEncoder; + + text(value: string): ReceiptPrinterEncoder; + + newline(count?: number): ReceiptPrinterEncoder; + + line(value: string): ReceiptPrinterEncoder; + + underline(value?: boolean | number): ReceiptPrinterEncoder; + + italic(value?: boolean): ReceiptPrinterEncoder; + + bold(value?: boolean): ReceiptPrinterEncoder; + + invert(value?: boolean): ReceiptPrinterEncoder; + + width(width: number): ReceiptPrinterEncoder; + + height(height: number): ReceiptPrinterEncoder; + + size(width: number | string, height?: number): ReceiptPrinterEncoder; + + font(value: "A" | "B"): ReceiptPrinterEncoder; + + align(value: "left" | "center" | "right"): ReceiptPrinterEncoder; + + table( + columns: ReadonlyArray, + data: ReadonlyArray< + ReadonlyArray< + string | ((encoder: ReceiptPrinterEncoder) => ReceiptPrinterEncoder) + > + > + ): ReceiptPrinterEncoder; + + rule(options?: RuleOptions): ReceiptPrinterEncoder; + + box( + options: BoxOptions, + value: string | ((encoder: ReceiptPrinterEncoder) => void) + ): ReceiptPrinterEncoder; + + barcode( + value: string, + symbology: + | "upca" + | "upce" + | "ean13" + | "ean8" + | "coda39" + | "itf" + | "codabar", + height?: number | object + ): ReceiptPrinterEncoder; + + qrcode(value: string, options?: QRCodeOptions): ReceiptPrinterEncoder; + + pdf417(value: string, options?: PDF417Options): ReceiptPrinterEncoder; + + image( + input: HTMLCanvasElement | ImageData | object, + width: number, + height: number, + algorithm?: ImageAlgorithm, + threshold?: number + ): ReceiptPrinterEncoder; + + pulse(device?: "0" | "1", on?: number, off?: number): ReceiptPrinterEncoder; + + cut(value?: "full" | "partial"): ReceiptPrinterEncoder; + + raw(data: Uint8Array): ReceiptPrinterEncoder; + + encode(): Uint8Array; + + commands(): any[]; + + static get printerModels(): { id: string; name: string }[]; + + get columns(): number; + + get language(): string; +} diff --git a/package-lock.json b/package-lock.json index e8eb0e2..a2eacfe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,4765 +1,5247 @@ { - "name": "@point-of-sale/receipt-printer-encoder", - "version": "3.0.3", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "@point-of-sale/receipt-printer-encoder", - "version": "3.0.3", - "license": "MIT", - "dependencies": { - "@canvas/image-data": "^1.0.0", - "@point-of-sale/codepage-encoder": "^3.0.0", - "canvas-dither": "^1.0.1", - "canvas-flatten": "^1.0.1", - "resize-image-data": "^0.3.1" - }, - "devDependencies": { - "@rollup/plugin-commonjs": "^24.1.0", - "@rollup/plugin-node-resolve": "^15.0.2", - "@rollup/plugin-terser": "^0.4.1", - "canvas": "^2.11.2", - "chai": "^4.3.7", - "eslint": "^8.39.0", - "eslint-config-google": "^0.14.0", - "javascript-stringify": "^2.1.0", - "mocha": "^10.2.0", - "rollup": "^3.20.7" - } - }, - "node_modules/@canvas/image-data": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@canvas/image-data/-/image-data-1.0.0.tgz", - "integrity": "sha512-BxOqI5LgsIQP1odU5KMwV9yoijleOPzHL18/YvNqF9KFSGF2K/DLlYAbDQsWqd/1nbaFuSkYD/191dpMtNh4vw==", - "license": "MIT" - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", - "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", - "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.1", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/js": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz", - "integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", - "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==", - "dev": true, - "dependencies": { - "detect-libc": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.7", - "nopt": "^5.0.0", - "npmlog": "^5.0.1", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@point-of-sale/codepage-encoder": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@point-of-sale/codepage-encoder/-/codepage-encoder-3.0.0.tgz", - "integrity": "sha512-HNNptRtuj5KjjqIhMpelUJFxkkX5Epk7v2pqXqTsBxbZrO/W5GLSsC5liG7wYuru1+xBF5VaotwIXGq4FweFMA==", - "license": "MIT" - }, - "node_modules/@rollup/plugin-commonjs": { - "version": "24.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-24.1.0.tgz", - "integrity": "sha512-eSL45hjhCWI0jCCXcNtLVqM5N1JlBGvlFfY0m6oOYnLCJ6N0qEXoZql4sY2MOUArzhH4SA/qBpTxvvZp2Sc+DQ==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "commondir": "^1.0.1", - "estree-walker": "^2.0.2", - "glob": "^8.0.3", - "is-reference": "1.2.1", - "magic-string": "^0.27.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.68.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.2.tgz", - "integrity": "sha512-Y35fRGUjC3FaurG722uhUuG8YHOJRJQbI6/CkbRkdPotSpDj9NtIN85z1zrcyDcCQIW4qp5mgG72U+gJ0TAFEg==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "@types/resolve": "1.20.2", - "deepmerge": "^4.2.2", - "is-builtin-module": "^3.2.1", - "is-module": "^1.0.0", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.78.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-terser": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.1.tgz", - "integrity": "sha512-aKS32sw5a7hy+fEXVy+5T95aDIwjpGHCTv833HXVtyKMDoVS7pBr5K3L9hEQoNqbJFjfANPrNpIXlTQ7is00eA==", - "dev": true, - "dependencies": { - "serialize-javascript": "^6.0.0", - "smob": "^0.0.6", - "terser": "^5.15.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.x || ^3.x" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", - "dev": true, - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true - }, - "node_modules/@types/resolve": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", - "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", - "dev": true - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true - }, - "node_modules/are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "dev": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/canvas": { - "version": "2.11.2", - "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", - "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.0", - "nan": "^2.17.0", - "simple-get": "^3.0.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/canvas-dither": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/canvas-dither/-/canvas-dither-1.0.1.tgz", - "integrity": "sha512-wT1RnV2y9SauibcsfMMCagQTnXmyQq2nJXuX5tTEvo0sXm1vVbJ2r8QxSC3fRQMY3ZgZVq1j54cOvmO4u+Lu/A==" - }, - "node_modules/canvas-flatten": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/canvas-flatten/-/canvas-flatten-1.0.1.tgz", - "integrity": "sha512-UhHeKeWGS23Bm5teZiHk6NEOme1OKCpv6arFovV89dydt0Xz+U4HkPXAKBZS/hmpR15x5U9tDj1ieMQMTwvCAA==" - }, - "node_modules/chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", - "dev": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true, - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", - "dev": true, - "dependencies": { - "mimic-response": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true - }, - "node_modules/detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz", - "integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.2", - "@eslint/js": "8.39.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.0", - "espree": "^9.5.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-google": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", - "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "eslint": ">=5.16.0" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", - "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", - "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "dev": true, - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "dev": true, - "dependencies": { - "builtin-modules": "^3.3.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-core-module": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", - "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "dev": true - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", - "dev": true, - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/javascript-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", - "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-sdsl": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", - "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", - "dev": true, - "dependencies": { - "get-func-name": "^2.0.0" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "dev": true, - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/mocha/node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npmlog": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", - "dev": true, - "dependencies": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resize-image-data": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/resize-image-data/-/resize-image-data-0.3.1.tgz", - "integrity": "sha512-6hVRn2S6W1cdycreA6Vth5XRN2NnGs7/RnVpxNw/1OCK8aCoevRFH2WprmQRZDnnH3e6awLv2tTIPuv7/7xeGg==", - "license": "MIT", - "dependencies": { - "@canvas/image-data": "^1.0.0" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, - "dependencies": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "3.20.7", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.20.7.tgz", - "integrity": "sha512-P7E2zezKSLhWnTz46XxjSmInrbOCiul1yf+kJccMxT56vxjHwCbDfoLbiqFgu+WQoo9ij2PkraYaBstgB2prBA==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-get": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", - "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", - "dev": true, - "dependencies": { - "decompress-response": "^4.2.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/smob": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/smob/-/smob-0.0.6.tgz", - "integrity": "sha512-V21+XeNni+tTyiST1MHsa84AQhT1aFZipzPpOFAVB8DkHzwJyjjAmt9bgwnuZiZWnIbMo2duE29wybxv/7HWUw==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tar": { - "version": "6.1.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", - "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", - "dev": true, - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^4.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", - "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "name": "@point-of-sale/receipt-printer-encoder", + "version": "3.0.3", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "@point-of-sale/receipt-printer-encoder", + "version": "3.0.3", + "license": "MIT", + "dependencies": { + "@canvas/image-data": "^1.0.0", + "@point-of-sale/codepage-encoder": "^3.0.0", + "canvas-dither": "^1.0.1", + "canvas-flatten": "^1.0.1", + "resize-image-data": "^0.3.1" + }, + "devDependencies": { + "@rollup/plugin-commonjs": "^24.1.0", + "@rollup/plugin-node-resolve": "^15.0.2", + "@rollup/plugin-terser": "^0.4.1", + "canvas": "^2.11.2", + "chai": "^4.3.7", + "eslint": "^8.39.0", + "eslint-config-google": "^0.14.0", + "javascript-stringify": "^2.1.0", + "mocha": "^10.2.0", + "rollup": "^3.20.7", + "rollup-plugin-copy": "^3.5.0", + "typescript": "^5.8.3" + } + }, + "node_modules/@canvas/image-data": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@canvas/image-data/-/image-data-1.0.0.tgz", + "integrity": "sha512-BxOqI5LgsIQP1odU5KMwV9yoijleOPzHL18/YvNqF9KFSGF2K/DLlYAbDQsWqd/1nbaFuSkYD/191dpMtNh4vw==", + "license": "MIT" + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", + "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", + "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.1", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.39.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz", + "integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", + "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", + "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==", + "dev": true, + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@point-of-sale/codepage-encoder": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@point-of-sale/codepage-encoder/-/codepage-encoder-3.0.0.tgz", + "integrity": "sha512-HNNptRtuj5KjjqIhMpelUJFxkkX5Epk7v2pqXqTsBxbZrO/W5GLSsC5liG7wYuru1+xBF5VaotwIXGq4FweFMA==", + "license": "MIT" + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-24.1.0.tgz", + "integrity": "sha512-eSL45hjhCWI0jCCXcNtLVqM5N1JlBGvlFfY0m6oOYnLCJ6N0qEXoZql4sY2MOUArzhH4SA/qBpTxvvZp2Sc+DQ==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "glob": "^8.0.3", + "is-reference": "1.2.1", + "magic-string": "^0.27.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.2.tgz", + "integrity": "sha512-Y35fRGUjC3FaurG722uhUuG8YHOJRJQbI6/CkbRkdPotSpDj9NtIN85z1zrcyDcCQIW4qp5mgG72U+gJ0TAFEg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.2.1", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-terser": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.1.tgz", + "integrity": "sha512-aKS32sw5a7hy+fEXVy+5T95aDIwjpGHCTv833HXVtyKMDoVS7pBr5K3L9hEQoNqbJFjfANPrNpIXlTQ7is00eA==", + "dev": true, + "dependencies": { + "serialize-javascript": "^6.0.0", + "smob": "^0.0.6", + "terser": "^5.15.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.x || ^3.x" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "dev": true + }, + "node_modules/@types/fs-extra": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.5.tgz", + "integrity": "sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.15.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.18.tgz", + "integrity": "sha512-v1DKRfUdyW+jJhZNEI1PYy29S2YRxMV5AOO/x/SjKmW0acCIOqmbj6Haf9eHAhsPmrhlHSxEhv/1WszcLWV4cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/canvas": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", + "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.0", + "nan": "^2.17.0", + "simple-get": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/canvas-dither": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/canvas-dither/-/canvas-dither-1.0.1.tgz", + "integrity": "sha512-wT1RnV2y9SauibcsfMMCagQTnXmyQq2nJXuX5tTEvo0sXm1vVbJ2r8QxSC3fRQMY3ZgZVq1j54cOvmO4u+Lu/A==" + }, + "node_modules/canvas-flatten": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/canvas-flatten/-/canvas-flatten-1.0.1.tgz", + "integrity": "sha512-UhHeKeWGS23Bm5teZiHk6NEOme1OKCpv6arFovV89dydt0Xz+U4HkPXAKBZS/hmpR15x5U9tDj1ieMQMTwvCAA==" + }, + "node_modules/chai": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^4.1.2", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "dev": true, + "dependencies": { + "mimic-response": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.39.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz", + "integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.2", + "@eslint/js": "8.39.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.0", + "eslint-visitor-keys": "^3.4.0", + "espree": "^9.5.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-google": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", + "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", + "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz", + "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/globby/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-core-module": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", + "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz", + "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/javascript-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", + "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-sdsl": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", + "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, + "dependencies": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resize-image-data": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/resize-image-data/-/resize-image-data-0.3.1.tgz", + "integrity": "sha512-6hVRn2S6W1cdycreA6Vth5XRN2NnGs7/RnVpxNw/1OCK8aCoevRFH2WprmQRZDnnH3e6awLv2tTIPuv7/7xeGg==", + "license": "MIT", + "dependencies": { + "@canvas/image-data": "^1.0.0" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.20.7", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.20.7.tgz", + "integrity": "sha512-P7E2zezKSLhWnTz46XxjSmInrbOCiul1yf+kJccMxT56vxjHwCbDfoLbiqFgu+WQoo9ij2PkraYaBstgB2prBA==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-copy": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-copy/-/rollup-plugin-copy-3.5.0.tgz", + "integrity": "sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/fs-extra": "^8.0.1", + "colorette": "^1.1.0", + "fs-extra": "^8.1.0", + "globby": "10.0.1", + "is-plain-object": "^3.0.0" + }, + "engines": { + "node": ">=8.3" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "dev": true, + "dependencies": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/smob": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/smob/-/smob-0.0.6.tgz", + "integrity": "sha512-V21+XeNni+tTyiST1MHsa84AQhT1aFZipzPpOFAVB8DkHzwJyjjAmt9bgwnuZiZWnIbMo2duE29wybxv/7HWUw==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tar": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", + "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@canvas/image-data": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@canvas/image-data/-/image-data-1.0.0.tgz", + "integrity": "sha512-BxOqI5LgsIQP1odU5KMwV9yoijleOPzHL18/YvNqF9KFSGF2K/DLlYAbDQsWqd/1nbaFuSkYD/191dpMtNh4vw==" + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", + "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", + "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.1", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@eslint/js": { + "version": "8.39.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz", + "integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==", + "dev": true + }, + "@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", + "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + }, + "dependencies": { + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + } + } + }, + "@mapbox/node-pre-gyp": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", + "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==", + "dev": true, + "requires": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@point-of-sale/codepage-encoder": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@point-of-sale/codepage-encoder/-/codepage-encoder-3.0.0.tgz", + "integrity": "sha512-HNNptRtuj5KjjqIhMpelUJFxkkX5Epk7v2pqXqTsBxbZrO/W5GLSsC5liG7wYuru1+xBF5VaotwIXGq4FweFMA==" + }, + "@rollup/plugin-commonjs": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-24.1.0.tgz", + "integrity": "sha512-eSL45hjhCWI0jCCXcNtLVqM5N1JlBGvlFfY0m6oOYnLCJ6N0qEXoZql4sY2MOUArzhH4SA/qBpTxvvZp2Sc+DQ==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "glob": "^8.0.3", + "is-reference": "1.2.1", + "magic-string": "^0.27.0" + } + }, + "@rollup/plugin-node-resolve": { + "version": "15.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.2.tgz", + "integrity": "sha512-Y35fRGUjC3FaurG722uhUuG8YHOJRJQbI6/CkbRkdPotSpDj9NtIN85z1zrcyDcCQIW4qp5mgG72U+gJ0TAFEg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.2.1", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + } + }, + "@rollup/plugin-terser": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.1.tgz", + "integrity": "sha512-aKS32sw5a7hy+fEXVy+5T95aDIwjpGHCTv833HXVtyKMDoVS7pBr5K3L9hEQoNqbJFjfANPrNpIXlTQ7is00eA==", + "dev": true, + "requires": { + "serialize-javascript": "^6.0.0", + "smob": "^0.0.6", + "terser": "^5.15.1" + } + }, + "@rollup/pluginutils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "dev": true, + "requires": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + } + }, + "@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "dev": true + }, + "@types/fs-extra": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.5.tgz", + "integrity": "sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true + }, + "@types/node": { + "version": "22.15.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.18.tgz", + "integrity": "sha512-v1DKRfUdyW+jJhZNEI1PYy29S2YRxMV5AOO/x/SjKmW0acCIOqmbj6Haf9eHAhsPmrhlHSxEhv/1WszcLWV4cg==", + "dev": true, + "requires": { + "undici-types": "~6.21.0" + } + }, + "@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "requires": { + "fill-range": "^7.1.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "canvas": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", + "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", + "dev": true, + "requires": { + "@mapbox/node-pre-gyp": "^1.0.0", + "nan": "^2.17.0", + "simple-get": "^3.0.3" + } + }, + "canvas-dither": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/canvas-dither/-/canvas-dither-1.0.1.tgz", + "integrity": "sha512-wT1RnV2y9SauibcsfMMCagQTnXmyQq2nJXuX5tTEvo0sXm1vVbJ2r8QxSC3fRQMY3ZgZVq1j54cOvmO4u+Lu/A==" + }, + "canvas-flatten": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/canvas-flatten/-/canvas-flatten-1.0.1.tgz", + "integrity": "sha512-UhHeKeWGS23Bm5teZiHk6NEOme1OKCpv6arFovV89dydt0Xz+U4HkPXAKBZS/hmpR15x5U9tDj1ieMQMTwvCAA==" + }, + "chai": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^4.1.2", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + }, + "decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "dev": true, + "requires": { + "mimic-response": "^2.0.0" + } + }, + "deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "dev": true + }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "8.39.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz", + "integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.2", + "@eslint/js": "8.39.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.0", + "eslint-visitor-keys": "^3.4.0", + "espree": "^9.5.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + } + }, + "eslint-config-google": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", + "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", + "dev": true, + "requires": {} + }, + "eslint-scope": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-visitor-keys": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", + "dev": true + }, + "espree": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", + "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.0" + } + }, + "esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } } + } }, - "dependencies": { - "@canvas/image-data": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@canvas/image-data/-/image-data-1.0.0.tgz", - "integrity": "sha512-BxOqI5LgsIQP1odU5KMwV9yoijleOPzHL18/YvNqF9KFSGF2K/DLlYAbDQsWqd/1nbaFuSkYD/191dpMtNh4vw==" - }, - "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^3.3.0" - } - }, - "@eslint-community/regexpp": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", - "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", - "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.1", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - } - }, - "@eslint/js": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz", - "integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==", - "dev": true - }, - "@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - }, - "dependencies": { - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - } - } - }, - "@mapbox/node-pre-gyp": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", - "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==", - "dev": true, - "requires": { - "detect-libc": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.7", - "nopt": "^5.0.0", - "npmlog": "^5.0.1", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@point-of-sale/codepage-encoder": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@point-of-sale/codepage-encoder/-/codepage-encoder-3.0.0.tgz", - "integrity": "sha512-HNNptRtuj5KjjqIhMpelUJFxkkX5Epk7v2pqXqTsBxbZrO/W5GLSsC5liG7wYuru1+xBF5VaotwIXGq4FweFMA==" - }, - "@rollup/plugin-commonjs": { - "version": "24.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-24.1.0.tgz", - "integrity": "sha512-eSL45hjhCWI0jCCXcNtLVqM5N1JlBGvlFfY0m6oOYnLCJ6N0qEXoZql4sY2MOUArzhH4SA/qBpTxvvZp2Sc+DQ==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^5.0.1", - "commondir": "^1.0.1", - "estree-walker": "^2.0.2", - "glob": "^8.0.3", - "is-reference": "1.2.1", - "magic-string": "^0.27.0" - } - }, - "@rollup/plugin-node-resolve": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.2.tgz", - "integrity": "sha512-Y35fRGUjC3FaurG722uhUuG8YHOJRJQbI6/CkbRkdPotSpDj9NtIN85z1zrcyDcCQIW4qp5mgG72U+gJ0TAFEg==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^5.0.1", - "@types/resolve": "1.20.2", - "deepmerge": "^4.2.2", - "is-builtin-module": "^3.2.1", - "is-module": "^1.0.0", - "resolve": "^1.22.1" - } - }, - "@rollup/plugin-terser": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.1.tgz", - "integrity": "sha512-aKS32sw5a7hy+fEXVy+5T95aDIwjpGHCTv833HXVtyKMDoVS7pBr5K3L9hEQoNqbJFjfANPrNpIXlTQ7is00eA==", - "dev": true, - "requires": { - "serialize-javascript": "^6.0.0", - "smob": "^0.0.6", - "terser": "^5.15.1" - } - }, - "@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", - "dev": true, - "requires": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - } - }, - "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true - }, - "@types/resolve": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", - "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true - }, - "are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "dev": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "dev": true + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "dependencies": { "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, - "canvas": { - "version": "2.11.2", - "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", - "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", - "dev": true, - "requires": { - "@mapbox/node-pre-gyp": "^1.0.0", - "nan": "^2.17.0", - "simple-get": "^3.0.3" - } - }, - "canvas-dither": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/canvas-dither/-/canvas-dither-1.0.1.tgz", - "integrity": "sha512-wT1RnV2y9SauibcsfMMCagQTnXmyQq2nJXuX5tTEvo0sXm1vVbJ2r8QxSC3fRQMY3ZgZVq1j54cOvmO4u+Lu/A==" - }, - "canvas-flatten": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/canvas-flatten/-/canvas-flatten-1.0.1.tgz", - "integrity": "sha512-UhHeKeWGS23Bm5teZiHk6NEOme1OKCpv6arFovV89dydt0Xz+U4HkPXAKBZS/hmpR15x5U9tDj1ieMQMTwvCAA==" - }, - "chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", - "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true - }, - "decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", - "dev": true, - "requires": { - "mimic-response": "^2.0.0" - } - }, - "deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true - }, - "detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "dev": true - }, - "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz", - "integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.2", - "@eslint/js": "8.39.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.0", - "espree": "^9.5.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - } - }, - "eslint-config-google": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", - "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", - "dev": true, - "requires": {} - }, - "eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-visitor-keys": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", - "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", - "dev": true - }, - "espree": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", - "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", - "dev": true, - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.0" - } - }, - "esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "dev": true, - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - } - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", - "dev": true - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "dev": true, - "requires": { - "builtin-modules": "^3.3.0" - } - }, - "is-core-module": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", - "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true - }, - "is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", - "dev": true, - "requires": { - "@types/estree": "*" - } - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "javascript-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", - "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==", - "dev": true - }, - "js-sdsl": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", - "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, - "loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", - "dev": true, - "requires": { - "get-func-name": "^2.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", - "dev": true, - "requires": { - "@jridgewell/sourcemap-codec": "^1.4.13" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", - "dev": true + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } }, "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globby": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz", + "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, + "requires": { + "builtin-modules": "^3.3.0" + } + }, + "is-core-module": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", + "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "is-plain-object": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz", + "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==", + "dev": true + }, + "is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "javascript-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", + "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==", + "dev": true + }, + "js-sdsl": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", + "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "requires": { + "get-func-name": "^2.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.13" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "requires": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + } + }, + "mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "dependencies": { "minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", - "dev": true - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, + "requires": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "dependencies": { + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "dependencies": { + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } } + } }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "dev": true, - "requires": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "dependencies": { - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "dependencies": { - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - } - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } } + } }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", - "dev": true - }, - "nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "dev": true, - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "npmlog": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", - "dev": true, - "requires": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "resize-image-data": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/resize-image-data/-/resize-image-data-0.3.1.tgz", - "integrity": "sha512-6hVRn2S6W1cdycreA6Vth5XRN2NnGs7/RnVpxNw/1OCK8aCoevRFH2WprmQRZDnnH3e6awLv2tTIPuv7/7xeGg==", - "requires": { - "@canvas/image-data": "^1.0.0" - } - }, - "resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, - "requires": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "rollup": { - "version": "3.20.7", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.20.7.tgz", - "integrity": "sha512-P7E2zezKSLhWnTz46XxjSmInrbOCiul1yf+kJccMxT56vxjHwCbDfoLbiqFgu+WQoo9ij2PkraYaBstgB2prBA==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true }, "serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true - }, - "simple-get": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", - "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", - "dev": true, - "requires": { - "decompress-response": "^4.2.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "smob": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/smob/-/smob-0.0.6.tgz", - "integrity": "sha512-V21+XeNni+tTyiST1MHsa84AQhT1aFZipzPpOFAVB8DkHzwJyjjAmt9bgwnuZiZWnIbMo2duE29wybxv/7HWUw==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } }, "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "tar": { - "version": "6.1.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", - "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^4.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "terser": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", - "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", - "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true - }, - "yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "requires": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - } - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true + }, + "nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node-fetch": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dev": true, + "requires": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "resize-image-data": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/resize-image-data/-/resize-image-data-0.3.1.tgz", + "integrity": "sha512-6hVRn2S6W1cdycreA6Vth5XRN2NnGs7/RnVpxNw/1OCK8aCoevRFH2WprmQRZDnnH3e6awLv2tTIPuv7/7xeGg==", + "requires": { + "@canvas/image-data": "^1.0.0" + } + }, + "resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "requires": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } } + } + }, + "rollup": { + "version": "3.20.7", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.20.7.tgz", + "integrity": "sha512-P7E2zezKSLhWnTz46XxjSmInrbOCiul1yf+kJccMxT56vxjHwCbDfoLbiqFgu+WQoo9ij2PkraYaBstgB2prBA==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "rollup-plugin-copy": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-copy/-/rollup-plugin-copy-3.5.0.tgz", + "integrity": "sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==", + "dev": true, + "requires": { + "@types/fs-extra": "^8.0.1", + "colorette": "^1.1.0", + "fs-extra": "^8.1.0", + "globby": "10.0.1", + "is-plain-object": "^3.0.0" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true + }, + "simple-get": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "dev": true, + "requires": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "smob": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/smob/-/smob-0.0.6.tgz", + "integrity": "sha512-V21+XeNni+tTyiST1MHsa84AQhT1aFZipzPpOFAVB8DkHzwJyjjAmt9bgwnuZiZWnIbMo2duE29wybxv/7HWUw==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "tar": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "terser": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", + "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true + }, + "undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true } + } } diff --git a/package.json b/package.json index 907d032..7cfb633 100644 --- a/package.json +++ b/package.json @@ -1,65 +1,69 @@ { - "name": "@point-of-sale/receipt-printer-encoder", - "version": "3.0.3", - "description": "Create a set of commands that can be send to any receipt printer that supports ESC/POS, StarLine or StarPRNT", - "type": "module", - "exports": { - "browser": { - "import": "./dist/receipt-printer-encoder.esm.js", - "require": "./dist/receipt-printer-encoder.umd.js", - "script": "./dist/receipt-printer-encoder.umd.js" - }, - "import": "./dist/receipt-printer-encoder.mjs", - "require": "./dist/receipt-printer-encoder.cjs" + "name": "@point-of-sale/receipt-printer-encoder", + "version": "3.0.3", + "description": "Create a set of commands that can be send to any receipt printer that supports ESC/POS, StarLine or StarPRNT", + "type": "module", + "types": "./dist/types/receipt-printer-encoder.d.ts", + "exports": { + "browser": { + "import": "./dist/receipt-printer-encoder.esm.js", + "require": "./dist/receipt-printer-encoder.umd.js", + "script": "./dist/receipt-printer-encoder.umd.js" }, - "main": "dist/receipt-printer-encoder.cjs", - "module": "dist/receipt-printer-encoder.mjs", - "scripts": { - "build": "npm run generate && rollup -c", - "generate": "node tools/generate.js", - "lint": "eslint --fix src/*.js src/**/*.js", - "mocha": "mocha test/", - "test": "npm run lint && npm run mocha" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/NielsLeenheer/ReceiptPrinterEncoder.git" - }, - "keywords": [ - "pos", - "escpos", - "starline", - "starprnt", - "receipt", - "printer" - ], - "author": "Niels Leenheer", - "license": "MIT", - "bugs": { - "url": "https://github.com/NielsLeenheer/ReceiptPrinterEncoder/issues" - }, - "homepage": "https://github.com/NielsLeenheer/ReceiptPrinterEncoder#readme", - "devDependencies": { - "@rollup/plugin-commonjs": "^24.1.0", - "@rollup/plugin-node-resolve": "^15.0.2", - "@rollup/plugin-terser": "^0.4.1", - "canvas": "^2.11.2", - "chai": "^4.3.7", - "eslint": "^8.39.0", - "eslint-config-google": "^0.14.0", - "javascript-stringify": "^2.1.0", - "mocha": "^10.2.0", - "rollup": "^3.20.7" - }, - "dependencies": { - "@canvas/image-data": "^1.0.0", - "canvas-dither": "^1.0.1", - "canvas-flatten": "^1.0.1", - "@point-of-sale/codepage-encoder": "^3.0.0", - "resize-image-data": "^0.3.1" - }, - "files": [ - "dist" - ] - } - \ No newline at end of file + "import": "./dist/receipt-printer-encoder.mjs", + "require": "./dist/receipt-printer-encoder.cjs", + "types": "./dist/types/receipt-printer-encoder.d.ts" + }, + "main": "dist/receipt-printer-encoder.cjs", + "module": "dist/receipt-printer-encoder.mjs", + "scripts": { + "build": "npm run generate && npm run build:types && rollup -c", + "build:types": "npx tsc", + "generate": "node tools/generate.js && node tools/generate-types.js", + "lint": "eslint --fix src/*.js src/**/*.js", + "mocha": "mocha test/", + "test": "npm run lint && npm run mocha" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/NielsLeenheer/ReceiptPrinterEncoder.git" + }, + "keywords": [ + "pos", + "escpos", + "starline", + "starprnt", + "receipt", + "printer" + ], + "author": "Niels Leenheer", + "license": "MIT", + "bugs": { + "url": "https://github.com/NielsLeenheer/ReceiptPrinterEncoder/issues" + }, + "homepage": "https://github.com/NielsLeenheer/ReceiptPrinterEncoder#readme", + "devDependencies": { + "@rollup/plugin-commonjs": "^24.1.0", + "@rollup/plugin-node-resolve": "^15.0.2", + "@rollup/plugin-terser": "^0.4.1", + "rollup-plugin-copy": "^3.5.0", + "canvas": "^2.11.2", + "chai": "^4.3.7", + "eslint": "^8.39.0", + "eslint-config-google": "^0.14.0", + "javascript-stringify": "^2.1.0", + "mocha": "^10.2.0", + "rollup": "^3.20.7", + "typescript": "^5.8.3" + }, + "dependencies": { + "@canvas/image-data": "^1.0.0", + "canvas-dither": "^1.0.1", + "canvas-flatten": "^1.0.1", + "@point-of-sale/codepage-encoder": "^3.0.0", + "resize-image-data": "^0.3.1" + }, + "files": [ + "dist" + ] +} diff --git a/rollup.config.js b/rollup.config.js index 1b45543..97445ca 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,47 +1,52 @@ -import resolve from '@rollup/plugin-node-resolve'; -import commonjs from '@rollup/plugin-commonjs'; -import terser from '@rollup/plugin-terser'; +import resolve from "@rollup/plugin-node-resolve"; +import commonjs from "@rollup/plugin-commonjs"; +import terser from "@rollup/plugin-terser"; +import copy from "rollup-plugin-copy"; export default [ + // Browser-friendly UMD build + { + input: "src/receipt-printer-encoder.js", + output: { + name: "ReceiptPrinterEncoder", + file: "dist/receipt-printer-encoder.umd.js", + sourcemap: true, + format: "umd", + }, + plugins: [ + resolve({ browser: true }), + commonjs(), + terser(), + copy({ + targets: [{ src: "src/types/*.d.ts", dest: "dist/types" }], + }), + ], + }, - // Browser-friendly UMD build - { - input: 'src/receipt-printer-encoder.js', - output: { - name: 'ReceiptPrinterEncoder', - file: 'dist/receipt-printer-encoder.umd.js', - sourcemap: true, - format: 'umd' - }, - plugins: [ - resolve({ browser: true }), - commonjs(), - terser() - ] - }, + // Browser-friendly ES module build + { + input: "src/receipt-printer-encoder.js", + output: { + file: "dist/receipt-printer-encoder.esm.js", + sourcemap: true, + format: "es", + }, + plugins: [resolve({ browser: true }), commonjs(), terser()], + }, - // Browser-friendly ES module build - { - input: 'src/receipt-printer-encoder.js', - output: { - file: 'dist/receipt-printer-encoder.esm.js', - sourcemap: true, - format: 'es' - }, - plugins: [ - resolve({ browser: true }), - commonjs(), - terser() - ] - }, - - // CommonJS (for Node) and ES module (for bundlers) build - { - input: 'src/receipt-printer-encoder.js', - external: ['@canvas/image-data', 'canvas-dither', 'canvas-flatten', 'resize-image-data', '@point-of-sale/codepage-encoder'], - output: [ - { file: 'dist/receipt-printer-encoder.cjs', format: 'cjs' }, - { file: 'dist/receipt-printer-encoder.mjs', format: 'es' } - ] - } + // CommonJS (for Node) and ES module (for bundlers) build + { + input: "src/receipt-printer-encoder.js", + external: [ + "@canvas/image-data", + "canvas-dither", + "canvas-flatten", + "resize-image-data", + "@point-of-sale/codepage-encoder", + ], + output: [ + { file: "dist/receipt-printer-encoder.cjs", format: "cjs" }, + { file: "dist/receipt-printer-encoder.mjs", format: "es" }, + ], + }, ]; diff --git a/src/types/codepage-mappings.d.ts b/src/types/codepage-mappings.d.ts new file mode 100644 index 0000000..8292e41 --- /dev/null +++ b/src/types/codepage-mappings.d.ts @@ -0,0 +1,25 @@ +export type CodePageMapping = { + [key: string]: string[]; +}; + +export const codePageMappings: Record = { + 'esc-pos': { + 'bixolon/legacy': ["cp437","epson/katakana","cp850","cp860","cp863","cp865",null,null,null,null,null,null,null,null,null,null,null,null,null,"cp858"], + 'bixolon': ["cp437","epson/katakana","cp850","cp860","cp863","cp865",null,null,null,null,null,null,null,null,null,null,"windows1252","cp866","cp852","cp858",null,"cp862","cp864","thai42","windows1253","windows1254","windows1257",null,"windows1251","cp737","cp775","thai14","bixolon/hebrew","windows1255","thai11","thai18","cp885","cp857","iso8859-7","thai16","windows1256","windows1258","khmer",null,null,null,"bixolon/cp866","windows1250",null,"tcvn3","tcvn3capitals","viscii"], + 'citizen': ["cp437","epson/katakana","cp858","cp860","cp863","cp865","cp852","cp866","cp857",null,null,null,null,null,null,null,"windows1252",null,null,null,null,"thai11",null,null,null,null,"thai13",null,null,null,"tcvn3","tcvn3capitals","windows1258",null,null,null,null,null,null,null,"cp864"], + 'epson/legacy': ["cp437","epson/katakana","cp850","cp860","cp863","cp865",null,null,null,null,null,null,null,null,null,null,"windows1252","cp866","cp852","cp858"], + 'epson': ["cp437","epson/katakana","cp850","cp860","cp863","cp865",null,null,null,null,null,"cp851","cp853","cp857","cp737","iso8859-7","windows1252","cp866","cp852","cp858","thai42","thai11",null,null,null,null,"thai13",null,null,null,"tcvn3","tcvn3capitals","cp720","cp775","cp855","cp861","cp862","cp864","cp869","epson/iso8859-2","iso8859-15","cp1098","cp774","cp772","cp1125","windows1250","windows1251","windows1253","windows1254","windows1255","windows1256","windows1257","windows1258","rk1048"], + 'fujitsu': ["cp437","epson/katakana","cp850","cp860","cp863","cp865",null,null,"cp857",null,null,null,null,null,null,null,"windows1252","cp866","cp852","cp858",null,null,null,null,null,null,"thai13",null,null,null,null,null,null,null,null,null,null,null,null,null,"cp864"], + 'hp': ["cp437","cp850","cp852","cp860","cp863","cp865","cp858","cp866","windows1252","cp862","cp737","cp874","cp857","windows1251","windows1255","rk1048"], + 'metapace': ["cp437","epson/katakana","cp850","cp860","cp863","cp865",null,null,null,null,null,null,null,null,null,null,null,null,null,"cp858"], + 'mpt': ["cp437",null,"cp850","cp860","cp863","cp865","windows1251","cp866","cp3021","cp3012"], + 'pos-5890': ["cp437","epson/katakana","cp850","cp860","cp863","cp865","iso8859-1",null,"cp862",null,null,null,null,null,null,null,"windows1252","cp866","cp852","cp858",null,null,null,"windows1251","cp737","windows1257",null,"windows1258","cp864",null,null,null,"windows1255",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"cp861",null,null,null,"cp855","cp857",null,null,null,"cp851","cp869",null,"cp772","cp774",null,null,"windows1250",null,"cp3840",null,"cp3843","cp3844","cp3845","cp3846","cp3847","cp3848",null,"cp771","cp3001","cp3002","cp3011","cp3012",null,"cp3041","windows1253","windows1254","windows1256","cp720",null,"cp775"], + 'pos-8360': ["cp437","epson/katakana","cp850","cp860","cp863","cp865","iso8859-1","windows1253","cp862",null,null,null,null,null,null,null,"windows1252","cp866","cp852","cp858",null,"latvian",null,"windows1251","cp737","windows1257",null,"windows1258","cp864",null,null,"pos8360/hebrew","windows1255",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"cp861",null,null,null,"cp855","cp857",null,null,null,"cp851","cp869",null,"cp772","cp774",null,null,"windows1250",null,"cp3840",null,"cp3843","cp3844","cp3845","cp3846","cp3847","cp3848",null,"cp771","cp3001","cp3002","cp3011","cp3012",null,null,null,"windows1254","windows1256","cp720",null,"cp775"], + 'star': ["cp437","star/katakana","cp850","cp860","cp863","cp865",null,null,null,null,null,null,null,null,null,null,"windows1252","cp866","cp852","cp858","thai42","thai11","thai13","thai14","thai16",null,"thai18"], + 'xprinter': ["cp437","epson/katakana","cp850","cp860","cp863","cp865","iso8859-1","windows1253","xprinter/hebrew","cp3012",null,"windows1255",null,null,null,null,"windows1252","cp866","cp852","cp858",null,"latvian","cp864","windows1251","cp737","windows1257",null,null,null,null,null,null,null,"windows1256"], + 'youku': ["cp437","epson/katakana","cp850","cp860","cp863","cp865","windows1251","cp866","cp3021","cp3012",null,null,null,null,null,"cp862","windows1252",null,"cp852","cp858",null,null,"cp864","iso8859-1","cp737","windows1257",null,null,"cp855","cp857","windows1250","cp775","windows1254","windows1255","windows1256","windows1258",null,null,"iso8859-1",null,null,null,null,null,"iso8859-15",null,null,"cp874"], + }, + 'star-prnt': { + 'star': ["star/standard","cp437","star/katakana",null,"cp858","cp852","cp860","cp861","cp863","cp865","cp866","cp855","cp857","cp862","cp864","cp737","cp851","cp869","star/cp928","cp772","cp774","star/cp874",null,null,null,null,null,null,null,null,null,null,"windows1252","windows1250","windows1251",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"cp3840","cp3841","cp3843","cp3844","cp3845","cp3846","cp3847","cp3848","cp1001","cp771","cp3001","cp3002","cp3011","cp3012","cp3021","cp3041"], + }, +}; \ No newline at end of file diff --git a/src/types/codepages.d.ts b/src/types/codepages.d.ts new file mode 100644 index 0000000..210f179 --- /dev/null +++ b/src/types/codepages.d.ts @@ -0,0 +1,155 @@ +export type CodePage = + | "bixolon/cp866" + | "bixolon/hebrew" + | "cp1001" + | "cp1098" + | "cp1125" + | "cp3001" + | "cp3002" + | "cp3011" + | "cp3012" + | "cp3021" + | "cp3041" + | "cp3840" + | "cp3841" + | "cp3843" + | "cp3844" + | "cp3845" + | "cp3846" + | "cp3847" + | "cp3848" + | "cp437" + | "cp720" + | "cp737" + | "cp771" + | "cp772" + | "cp774" + | "cp775" + | "cp850" + | "cp851" + | "cp852" + | "cp853" + | "cp855" + | "cp857" + | "cp858" + | "cp860" + | "cp861" + | "cp862" + | "cp863" + | "cp864" + | "cp865" + | "cp866" + | "cp869" + | "cp874" + | "cp885" + | "epson/iso8859-2" + | "epson/katakana" + | "iso8859-1" + | "iso8859-15" + | "iso8859-7" + | "khmer" + | "latvian" + | "pos8360/hebrew" + | "rk1048" + | "star/cp874" + | "star/cp928" + | "star/katakana" + | "star/standard" + | "tcvn3" + | "tcvn3capitals" + | "thai11" + | "thai13" + | "thai14" + | "thai16" + | "thai18" + | "thai42" + | "viscii" + | "windows1250" + | "windows1251" + | "windows1252" + | "windows1253" + | "windows1254" + | "windows1255" + | "windows1256" + | "windows1257" + | "windows1258" + | "xprinter/hebrew" +; + +export const codePages: Record = { + 'bixolon/cp866': 'bixolon/cp866', + 'bixolon/hebrew': 'bixolon/hebrew', + 'cp1001': 'cp1001', + 'cp1098': 'cp1098', + 'cp1125': 'cp1125', + 'cp3001': 'cp3001', + 'cp3002': 'cp3002', + 'cp3011': 'cp3011', + 'cp3012': 'cp3012', + 'cp3021': 'cp3021', + 'cp3041': 'cp3041', + 'cp3840': 'cp3840', + 'cp3841': 'cp3841', + 'cp3843': 'cp3843', + 'cp3844': 'cp3844', + 'cp3845': 'cp3845', + 'cp3846': 'cp3846', + 'cp3847': 'cp3847', + 'cp3848': 'cp3848', + 'cp437': 'cp437', + 'cp720': 'cp720', + 'cp737': 'cp737', + 'cp771': 'cp771', + 'cp772': 'cp772', + 'cp774': 'cp774', + 'cp775': 'cp775', + 'cp850': 'cp850', + 'cp851': 'cp851', + 'cp852': 'cp852', + 'cp853': 'cp853', + 'cp855': 'cp855', + 'cp857': 'cp857', + 'cp858': 'cp858', + 'cp860': 'cp860', + 'cp861': 'cp861', + 'cp862': 'cp862', + 'cp863': 'cp863', + 'cp864': 'cp864', + 'cp865': 'cp865', + 'cp866': 'cp866', + 'cp869': 'cp869', + 'cp874': 'cp874', + 'cp885': 'cp885', + 'epson/iso8859-2': 'epson/iso8859-2', + 'epson/katakana': 'epson/katakana', + 'iso8859-1': 'iso8859-1', + 'iso8859-15': 'iso8859-15', + 'iso8859-7': 'iso8859-7', + 'khmer': 'khmer', + 'latvian': 'latvian', + 'pos8360/hebrew': 'pos8360/hebrew', + 'rk1048': 'rk1048', + 'star/cp874': 'star/cp874', + 'star/cp928': 'star/cp928', + 'star/katakana': 'star/katakana', + 'star/standard': 'star/standard', + 'tcvn3': 'tcvn3', + 'tcvn3capitals': 'tcvn3capitals', + 'thai11': 'thai11', + 'thai13': 'thai13', + 'thai14': 'thai14', + 'thai16': 'thai16', + 'thai18': 'thai18', + 'thai42': 'thai42', + 'viscii': 'viscii', + 'windows1250': 'windows1250', + 'windows1251': 'windows1251', + 'windows1252': 'windows1252', + 'windows1253': 'windows1253', + 'windows1254': 'windows1254', + 'windows1255': 'windows1255', + 'windows1256': 'windows1256', + 'windows1257': 'windows1257', + 'windows1258': 'windows1258', + 'xprinter/hebrew': 'xprinter/hebrew', +}; \ No newline at end of file diff --git a/src/types/printer-models.d.ts b/src/types/printer-models.d.ts new file mode 100644 index 0000000..7b6e975 --- /dev/null +++ b/src/types/printer-models.d.ts @@ -0,0 +1,1770 @@ +export type PrinterModel = { + id: string; + name: string; + vendor: string; + description?: string; + features?: string[]; + codepages?: string[]; +}; + +export const printerModels: Record = { + 'bixolon-srp350': { + "vendor": "Bixolon", + "model": "SRP-350", + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "bixolon/legacy", + "fonts": { + "A": { + "size": "12x24", + "columns": 42 + }, + "B": { + "size": "9x17", + "columns": 56 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": false, + "models": [] + }, + "pdf417": { + "supported": false + }, + "cutter": { + "feed": 4 + } + } +}, + 'bixolon-srp350iii': { + "vendor": "Bixolon", + "model": "SRP-350III", + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "bixolon", + "fonts": { + "A": { + "size": "12x24", + "columns": 42 + }, + "B": { + "size": "9x17", + "columns": 56 + }, + "C": { + "size": "9x24", + "columns": 56 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'citizen-ct-s310ii': { + "vendor": "Citizen", + "model": "CT-S310II", + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "citizen", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x24", + "columns": 64 + }, + "C": { + "size": "8x16", + "columns": 72 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 3 + } + } +}, + 'epson-tm-m30ii': { + "vendor": "Epson", + "model": "TM-m30II", + "interfaces": { + "usb": { + "productName": "TM-m30II" + } + }, + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "10x24", + "columns": 57 + }, + "C": { + "size": "9x17", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded", + "code128-auto" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'epson-tm-m30iii': { + "vendor": "Epson", + "model": "TM-m30III", + "interfaces": { + "usb": { + "productName": "TM-m30III" + } + }, + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "10x24", + "columns": 57 + }, + "C": { + "size": "9x17", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded", + "code128-auto" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'epson-tm-p20ii': { + "vendor": "Epson", + "model": "TM-P20II", + "media": { + "dpi": 203, + "width": 58 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson", + "fonts": { + "A": { + "size": "12x24", + "columns": 32 + }, + "B": { + "size": "9x24", + "columns": 42 + }, + "C": { + "size": "9x17", + "columns": 42 + }, + "D": { + "size": "10x24", + "columns": 38 + }, + "E": { + "size": "8x16", + "columns": 48 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded", + "code128-auto" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "images": { + "mode": "raster" + }, + "cutter": { + "feed": 3 + } + } +}, + 'epson-tm-t20ii': { + "vendor": "Epson", + "model": "TM-T20II", + "interfaces": { + "usb": { + "productName": "TM-T20II" + } + }, + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x17", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'epson-tm-t20iii': { + "vendor": "Epson", + "model": "TM-T20III", + "interfaces": { + "usb": { + "productName": "TM-T20III" + } + }, + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x17", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'epson-tm-t20iv': { + "vendor": "Epson", + "model": "TM-T20IV", + "interfaces": { + "usb": { + "productName": "TM-T20IV" + } + }, + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x17", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded", + "code128-auto" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'epson-tm-t70': { + "vendor": "Epson", + "model": "TM-T70", + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson/legacy", + "fonts": { + "A": { + "size": "12x24", + "columns": 42 + }, + "B": { + "size": "9x17", + "columns": 56 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "images": { + "mode": "raster" + }, + "cutter": { + "feed": 4 + } + } +}, + 'epson-tm-t70ii': { + "vendor": "Epson", + "model": "TM-T70II", + "interface": { + "usb": { + "productName": "TM-T70II" + } + }, + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson", + "fonts": { + "A": { + "size": "12x24", + "columns": 42 + }, + "B": { + "size": "9x17", + "columns": 56 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "images": { + "mode": "raster" + }, + "cutter": { + "feed": 4 + } + } +}, + 'epson-tm-t88ii': { + "vendor": "Epson", + "model": "TM-T88II", + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson/legacy", + "fonts": { + "A": { + "size": "12x24", + "columns": 42 + }, + "B": { + "size": "9x17", + "columns": 56 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'epson-tm-t88iii': { + "vendor": "Epson", + "model": "TM-T88III", + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson/legacy", + "fonts": { + "A": { + "size": "12x24", + "columns": 42 + }, + "B": { + "size": "9x17", + "columns": 56 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'epson-tm-t88iv': { + "vendor": "Epson", + "model": "TM-T88IV", + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson/legacy", + "fonts": { + "A": { + "size": "12x24", + "columns": 42 + }, + "B": { + "size": "9x17", + "columns": 56 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'epson-tm-t88v': { + "vendor": "Epson", + "model": "TM-T88V", + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson", + "fonts": { + "A": { + "size": "12x24", + "columns": 42 + }, + "B": { + "size": "9x17", + "columns": 56 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'epson-tm-t88vi': { + "vendor": "Epson", + "model": "TM-T88VI", + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson", + "fonts": { + "A": { + "size": "12x24", + "columns": 42 + }, + "B": { + "size": "9x17", + "columns": 56 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'epson-tm-t88vii': { + "vendor": "Epson", + "model": "TM-T88VII", + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "epson", + "fonts": { + "A": { + "size": "12x24", + "columns": 42 + }, + "B": { + "size": "9x17", + "columns": 56 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded", + "code128-auto" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'fujitsu-fp1000': { + "vendor": "Fujitsu", + "model": "FP-1000", + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "fujitsu", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x24", + "columns": 56 + }, + "C": { + "size": "8x16", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": false + }, + "cutter": { + "feed": 4 + } + } +}, + 'hp-a779': { + "vendor": "HP", + "model": "A779", + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "hp", + "newline": "\n", + "fonts": { + "A": { + "size": "12x24", + "columns": 44 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": false, + "fallback": { + "type": "barcode", + "symbology": 75 + } + }, + "cutter": { + "feed": 4 + } + } +}, + 'metapace-t1': { + "vendor": "Metapace", + "model": "T-1", + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "metapace", + "fonts": { + "A": { + "size": "12x24", + "columns": 42 + }, + "B": { + "size": "9x17", + "columns": 56 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": false, + "models": [] + }, + "pdf417": { + "supported": false + }, + "cutter": { + "feed": 4 + } + } +}, + 'mpt-ii': { + "vendor": "", + "model": "MPT-II", + "media": { + "dpi": 180, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "mpt", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x17", + "columns": 64 + }, + "C": { + "size": "0x0", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": true, + "models": [] + }, + "pdf417": { + "supported": false + } + } +}, + 'pos-5890': { + "vendor": "", + "model": "POS-5890", + "media": { + "dpi": 203, + "width": 58 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "pos-5890", + "fonts": { + "A": { + "size": "12x24", + "columns": 32 + }, + "B": { + "size": "9x17", + "columns": 42 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "2" + ] + }, + "pdf417": { + "supported": true + }, + "images": { + "mode": "raster" + }, + "cutter": { + "feed": 1 + } + } +}, + 'pos-8360': { + "vendor": "", + "model": "POS-8360", + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "pos-8360", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x17", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "2" + ] + }, + "pdf417": { + "supported": true + }, + "images": { + "mode": "raster" + }, + "cutter": { + "feed": 4 + } + } +}, + 'star-mc-print2': { + "vendor": "Star", + "model": "mC-Print2", + "interfaces": { + "usb": { + "productName": "mC-Print2" + } + }, + "media": { + "dpi": 203, + "width": 58 + }, + "capabilities": { + "language": "star-prnt", + "codepages": "star", + "fonts": { + "A": { + "size": "12x24", + "columns": 32 + }, + "B": { + "size": "9x24", + "columns": 42 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "itf", + "codabar", + "code93", + "code128", + "gs1-128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 3 + } + } +}, + 'star-mpop': { + "vendor": "Star", + "model": "mPOP", + "interfaces": { + "usb": { + "productName": "mPOP" + } + }, + "media": { + "dpi": 203, + "width": 58 + }, + "capabilities": { + "language": "star-prnt", + "codepages": "star", + "fonts": { + "A": { + "size": "12x24", + "columns": 32 + }, + "B": { + "size": "9x24", + "columns": 42 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "itf", + "codabar", + "code93", + "code128", + "gs1-128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 3 + } + } +}, + 'star-sm-l200': { + "vendor": "Star", + "model": "SM-L200", + "media": { + "dpi": 203, + "width": 58 + }, + "capabilities": { + "language": "star-prnt", + "codepages": "star", + "fonts": { + "A": { + "size": "12x24", + "columns": 32 + }, + "B": { + "size": "9x24", + "columns": 42 + }, + "C": { + "size": "9x17", + "columns": 42 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "2" + ] + }, + "pdf417": { + "supported": true + } + } +}, + 'star-tsp100iii': { + "vendor": "Star", + "model": "TSP100III", + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "star-prnt", + "codepages": "star", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x24", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 3 + } + } +}, + 'star-tsp100iv': { + "vendor": "Star", + "model": "TSP100IV", + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "star-prnt", + "codepages": "star", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x24", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 3 + } + } +}, + 'star-tsp650': { + "vendor": "Star", + "model": "TSP650", + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "star-line", + "codepages": "star", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x24", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": false, + "models": [] + }, + "pdf417": { + "supported": false + }, + "cutter": { + "feed": 3 + } + } +}, + 'star-tsp650ii': { + "vendor": "Star", + "model": "TSP650II", + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "star-line", + "codepages": "star", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x24", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-128", + "gs1-databar-omni", + "gs1-databar-truncated", + "gs1-databar-limited", + "gs1-databar-expanded" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "1", + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 3 + } + } +}, + 'xprinter-xp-n160ii': { + "vendor": "Xprinter", + "model": "XP-N160II", + "interfaces": { + "usb": { + "productName": "Printer-80\u0000" + } + }, + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "xprinter", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x17", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'xprinter-xp-t80q': { + "vendor": "Xprinter", + "model": "XP-T80Q", + "media": { + "dpi": 203, + "width": 80 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "xprinter", + "fonts": { + "A": { + "size": "12x24", + "columns": 48 + }, + "B": { + "size": "9x17", + "columns": 64 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "upce", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128", + "gs1-128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "2" + ] + }, + "pdf417": { + "supported": true + }, + "cutter": { + "feed": 4 + } + } +}, + 'youku-58t': { + "vendor": "Youku", + "model": "58T", + "media": { + "dpi": 203, + "width": 58 + }, + "capabilities": { + "language": "esc-pos", + "codepages": "youku", + "fonts": { + "A": { + "size": "12x24", + "columns": 32 + }, + "B": { + "size": "9x24", + "columns": 42 + } + }, + "barcodes": { + "supported": true, + "symbologies": [ + "upca", + "ean13", + "ean8", + "code39", + "itf", + "codabar", + "code93", + "code128" + ] + }, + "qrcode": { + "supported": true, + "models": [ + "2" + ] + }, + "pdf417": { + "supported": false + } + } +}, +}; \ No newline at end of file diff --git a/src/types/receipt-printer-encoder.d.ts b/src/types/receipt-printer-encoder.d.ts new file mode 100644 index 0000000..9e1618a --- /dev/null +++ b/src/types/receipt-printer-encoder.d.ts @@ -0,0 +1,161 @@ +import type { PrinterModel } from "./printer-models"; +import type { CodePageMapping } from "./codepage-mappings"; +import type { CodePage } from "./codepages"; + +export type { CodePage }; + +export type Language = "esc-pos" | "star-prnt" | "star-line"; + +export type ImageMode = "column" | "raster"; + +export type ImageAlgorithm = + | "threshold" + | "bayer" + | "floydsteinberg" + | "atkinson"; + +export interface ReceiptPrinterOptions { + columns?: number; + /** + * @deprecated The width parameter has now been changed to the columns parameter. + */ + width?: number; + language?: Language; + imageMode?: ImageMode; + feedBeforeCut?: number; + newline?: string; + codepageMapping?: CodePageMapping | Record; + codepageCandidates?: CodePageMapping[]; + debug?: boolean; + embedded?: boolean; + createCanvas?: (width: number, height: number) => HTMLCanvasElement; + autoFlush?: boolean; + printerModel?: PrinterModel; +} + +export interface TableColumn { + width?: number; + marginLeft?: number; + marginRight?: number; + align?: "left" | "center" | "right"; + verticalAlign?: "top" | "bottom"; +} + +export interface BoxOptions { + style?: "none" | "single" | "double"; + width?: number; + marginLeft?: number; + marginRight?: number; + paddingLeft?: number; + paddingRight?: number; + align: "left" | "center" | "right"; +} + +export interface QRCodeOptions { + model?: 1 | 2; + size?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; + errorlevel?: "l" | "m" | "q" | "h"; +} + +export interface PDF417Options { + width?: number; + height?: number; + columns?: number; + rows?: number; + errorlevel?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; + truncated?: boolean; +} + +export interface RuleOptions { + style?: "none" | "single" | "double"; + width?: number; +} + +export default class ReceiptPrinterEncoder { + constructor(options?: ReceiptPrinterOptions); + + initialize(): ReceiptPrinterEncoder; + + codepage(codepage: CodePage): ReceiptPrinterEncoder; + + text(value: string): ReceiptPrinterEncoder; + + newline(count?: number): ReceiptPrinterEncoder; + + line(value: string): ReceiptPrinterEncoder; + + underline(value?: boolean | number): ReceiptPrinterEncoder; + + italic(value?: boolean): ReceiptPrinterEncoder; + + bold(value?: boolean): ReceiptPrinterEncoder; + + invert(value?: boolean): ReceiptPrinterEncoder; + + width(width: number): ReceiptPrinterEncoder; + + height(height: number): ReceiptPrinterEncoder; + + size(width: number | string, height?: number): ReceiptPrinterEncoder; + + font(value: "A" | "B"): ReceiptPrinterEncoder; + + align(value: "left" | "center" | "right"): ReceiptPrinterEncoder; + + table( + columns: ReadonlyArray, + data: ReadonlyArray< + ReadonlyArray< + string | ((encoder: ReceiptPrinterEncoder) => ReceiptPrinterEncoder) + > + > + ): ReceiptPrinterEncoder; + + rule(options?: RuleOptions): ReceiptPrinterEncoder; + + box( + options: BoxOptions, + value: string | ((encoder: ReceiptPrinterEncoder) => void) + ): ReceiptPrinterEncoder; + + barcode( + value: string, + symbology: + | "upca" + | "upce" + | "ean13" + | "ean8" + | "coda39" + | "itf" + | "codabar", + height?: number | object + ): ReceiptPrinterEncoder; + + qrcode(value: string, options?: QRCodeOptions): ReceiptPrinterEncoder; + + pdf417(value: string, options?: PDF417Options): ReceiptPrinterEncoder; + + image( + input: HTMLCanvasElement | ImageData | object, + width: number, + height: number, + algorithm?: ImageAlgorithm, + threshold?: number + ): ReceiptPrinterEncoder; + + pulse(device?: "0" | "1", on?: number, off?: number): ReceiptPrinterEncoder; + + cut(value?: "full" | "partial"): ReceiptPrinterEncoder; + + raw(data: Uint8Array): ReceiptPrinterEncoder; + + encode(): Uint8Array; + + commands(): any[]; + + static get printerModels(): { id: string; name: string }[]; + + get columns(): number; + + get language(): string; +} diff --git a/tools/generate-types.js b/tools/generate-types.js new file mode 100644 index 0000000..c2cb13b --- /dev/null +++ b/tools/generate-types.js @@ -0,0 +1,146 @@ +import fs from "node:fs"; +import path from "node:path"; + +function generatePrinterTypes() { + const output = []; + output.push("export type PrinterModel = {"); + output.push(" id: string;"); + output.push(" name: string;"); + output.push(" vendor: string;"); + output.push(" description?: string;"); + output.push(" features?: string[];"); + output.push(" codepages?: string[];"); + output.push("};"); + output.push(""); + output.push("export const printerModels: Record = {"); + + try { + const printerDataPath = path.join( + process.cwd(), + "generated", + "printers.js" + ); + const printerData = fs.readFileSync(printerDataPath, "utf8"); + + const printerMatch = printerData.match( + /const printerDefinitions = ({[\s\S]*?});/ + ); + if (printerMatch) { + const printers = eval(`(${printerMatch[1]})`); + for (const [name, printer] of Object.entries(printers)) { + output.push(` '${name}': ${JSON.stringify(printer, null, 8)},`); + } + } else { + console.error("Could not find printer definitions in the file"); + } + } catch (err) { + console.error("Error generating printer types:", err); + } + + output.push("};"); + const outputPath = path.join( + process.cwd(), + "src", + "types", + "printer-models.d.ts" + ); + fs.writeFileSync(outputPath, output.join("\n"), "utf8"); +} + +function generateCodePageTypes() { + const output = []; + + try { + const mappingDataPath = path.join(process.cwd(), "generated", "mapping.js"); + const mappingData = fs.readFileSync(mappingDataPath, "utf8"); + + const codePageMatch = mappingData.match( + /const codepageMappings = ({[\s\S]*?});/ + ); + if (codePageMatch) { + const mappings = eval(`(${codePageMatch[1]})`); + const codePages = new Set(); + + for (const languageMappings of Object.values(mappings)) { + for (const mapping of Object.values(languageMappings)) { + for (const codePage of Object.values(mapping)) { + codePages.add(codePage); + } + } + } + + const codePageValues = Array.from(codePages).sort(); + output.push("export type CodePage ="); + output.push( + " | " + codePageValues.map((cp) => `"${cp}"`).join("\n | ") + ); + output.push(";"); + output.push(""); + output.push("export const codePages: Record = {"); + + for (const codePage of codePageValues) { + output.push(` '${codePage}': '${codePage}',`); + } + } else { + console.error("Could not find codepage mappings in the file"); + } + } catch (err) { + console.error("Error generating codepage types:", err); + } + + output.push("};"); + const outputPath = path.join(process.cwd(), "src", "types", "codepages.d.ts"); + fs.writeFileSync(outputPath, output.join("\n"), "utf8"); +} + +function generateCodePageMappingTypes() { + const output = []; + output.push("export type CodePageMapping = {"); + output.push(" [key: string]: string[];"); + output.push("};"); + output.push(""); + output.push( + "export const codePageMappings: Record = {" + ); + + try { + const mappingDataPath = path.join(process.cwd(), "generated", "mapping.js"); + const mappingData = fs.readFileSync(mappingDataPath, "utf8"); + + const mappingMatch = mappingData.match( + /const codepageMappings = ({[\s\S]*?});/ + ); + if (mappingMatch) { + const mappings = eval(`(${mappingMatch[1]})`); + for (const [language, mapping] of Object.entries(mappings)) { + output.push(` '${language}': {`); + for (const [name, value] of Object.entries(mapping)) { + output.push(` '${name}': ${JSON.stringify(value)},`); + } + output.push(" },"); + } + } else { + console.error("Could not find codepage mappings in the file"); + } + } catch (err) { + console.error("Error generating codepage mapping types:", err); + } + + output.push("};"); + const outputPath = path.join( + process.cwd(), + "src", + "types", + "codepage-mappings.d.ts" + ); + fs.writeFileSync(outputPath, output.join("\n"), "utf8"); +} + +const typesDir = path.join(process.cwd(), "src", "types"); +if (!fs.existsSync(typesDir)) { + fs.mkdirSync(typesDir, { recursive: true }); +} + +generatePrinterTypes(); +generateCodePageTypes(); +generateCodePageMappingTypes(); diff --git a/tools/generate.js b/tools/generate.js index b2bbe3e..bdd14da 100644 --- a/tools/generate.js +++ b/tools/generate.js @@ -62,8 +62,11 @@ function generateMappings() { for (let line of lines) { if (line.length > 1 && line.charAt(0) != '#') { - let [ skip, key, value ] = line.split(/\t/); - list.set(parseInt(key, 16), value.trim()); + const parts = line.split(/\t/); + if (parts.length >= 3) { + const [, key, value] = parts; + list.set(parseInt(key, 16), value.trim()); + } } } @@ -96,8 +99,11 @@ function generateMappings() { for (let line of lines) { if (line.length > 1 && line.charAt(0) != '#') { - let [ skip, key, value ] = line.split(/\t/); - list.set(parseInt(key, 16), value.trim()); + const parts = line.split(/\t/); + if (parts.length >= 3) { + const [, key, value] = parts; + list.set(parseInt(key, 16), value.trim()); + } } } diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..1aa5642 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "ES2020", + "moduleResolution": "node", + "declaration": true, + "outDir": "./dist/types", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "test", "examples", "tools"] +} \ No newline at end of file