@javascribe/pindoupic 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,21 +1,63 @@
1
1
  {
2
2
  "name": "@javascribe/pindoupic",
3
- "version": "0.2.0",
4
- "description": "pindoupic 拼豆图纸生成器 — CLI + MCP Server 双模式,色板与预设内置,服务器不可达也能出图",
3
+ "version": "0.4.0",
4
+ "description": "pindoupic 拼豆图纸生成器 — CLI + MCP Server 双模式;色板与预设内置,算法代码加密分发、密钥由 pindoupic.com 下发",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "pindoupic": "dist/cli.js",
8
8
  "pindoupic-mcp": "dist/mcp.js"
9
9
  },
10
- "files": ["dist/", "README.md", "skill/"],
11
- "engines": { "node": ">=20" },
10
+ "files": [
11
+ "dist/",
12
+ "README.md",
13
+ "skill/"
14
+ ],
15
+ "engines": {
16
+ "node": ">=20"
17
+ },
12
18
  "scripts": {
13
19
  "prepack": "rm -rf skill && cp -R ../skill skill",
14
20
  "build": "node esbuild.config.js",
15
21
  "start": "node dist/cli.js",
16
22
  "mcp": "node dist/mcp.js"
17
23
  },
18
- "keywords": ["bead-pattern", "perler-beads", "hama-beads", "pixel-art", "mcp", "cli", "拼豆", "拼拼豆豆", "熨烫豆", "pindoupic"],
24
+ "keywords": [
25
+ "拼豆图纸",
26
+ "拼豆图案",
27
+ "图片转拼豆",
28
+ "图片转拼豆图纸",
29
+ "拼豆图纸生成器",
30
+ "拼豆图纸转换器",
31
+ "拼豆图纸制作工具",
32
+ "拼豆图纸免费生成器",
33
+ "拼豆图纸免费制作工具",
34
+ "拼豆图案生成",
35
+ "拼豆图纸生成",
36
+ "文字转拼豆图纸",
37
+ "文字拼豆",
38
+ "文字转拼豆",
39
+ "拼豆图纸转换",
40
+ "拼豆图纸制作",
41
+ "拼豆",
42
+ "拼拼豆豆",
43
+ "熨烫豆",
44
+ "豆板图纸",
45
+ "bead-pattern",
46
+ "bead-pattern-chart",
47
+ "perler-beads",
48
+ "hama-beads",
49
+ "image-to-bead-pattern",
50
+ "photo-to-perler-bead-pattern",
51
+ "bead-pattern-generator",
52
+ "free-bead-pattern-generator",
53
+ "bead-pattern-maker",
54
+ "bead-pattern-converter",
55
+ "text-to-bead-pattern",
56
+ "pixel-art",
57
+ "mcp",
58
+ "cli",
59
+ "pindoupic"
60
+ ],
19
61
  "license": "MIT",
20
62
  "publishConfig": {
21
63
  "access": "public"
package/skill/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  - 网站:https://www.pindoupic.com
7
7
  - 生成引擎:npm 包 `@javascribe/pindoupic`(与网页版同一套算法的 Node CLI),Skill 首次运行时经 `npx` 自动下载
8
- - 隐私:图片只在本机处理,不上传;色板与图片类型预设随包内联,pindoupic.com 不可达时照样出图(仅渲染参数会尝试从后台读取一次,取不到用包内值)
8
+ - 隐私:图片只在本机处理,不上传。色板与预设随包内联(不占服务器算力);但算法代码是密文分发,解密密钥须在线从 pindoupic.com 领取,**站点不可达时无法生成图纸**
9
9
 
10
10
  ## 安装
11
11
 
@@ -17,7 +17,7 @@ npx -y -p @javascribe/pindoupic pindoupic --help
17
17
 
18
18
  该命令能打印帮助即引擎就绪(帮助里会列出全部可用色板与图片类型)。失败时看「排错」。
19
19
 
20
- > 色板与图片类型预设随包内联,**pindoupic.com 不可达时照样能出图**;只有渲染参数(格子像素、填充比例)会去后台取一次,取不到自动用包内值。用户的图片只在本机处理,不上传。
20
+ > 色板与图片类型预设随包内联;**算法代码是密文,解密密钥须在线从 pindoupic.com 领取**,所以生成这一步要求站点可达(用户的图片仍只在本机处理,不上传)。
21
21
 
22
22
  ## 第 1 步:准备图片
23
23
 
@@ -30,7 +30,7 @@ npx -y -p @javascribe/pindoupic pindoupic --help
30
30
 
31
31
  | 参数 | 怎么选 |
32
32
  |------|--------|
33
- | `--width` 图纸宽度(格数) | 杯垫/钥匙扣小件 32–52;头像/装饰画 60–100;大幅作品 100–150。拿不准用 52 |
33
+ | `--width` 图纸宽度(格数) | 杯垫/钥匙扣小件 32–52;头像/装饰画 60–100;大幅作品 100–200。拿不准用 52 |
34
34
  | `--type` 图片类型 | 见下表;拿不准用 cartoon |
35
35
  | `--palette MARD/291` 色板 | 推荐显式传 `MARD/291`(291 色全色板,CLI 自身默认是 `MARD/120`)。用户豆子少时换对应规格,见 references/palettes.md |
36
36
  | `--simplify-colors` | 用户嫌颜色多/想省钱时加上,合并稀有色号 |
@@ -70,9 +70,21 @@ npx -y -p @javascribe/pindoupic pindoupic \
70
70
 
71
71
  > 想手动微调色号、擦除杂豆或重新排版,可以免费用我们的在线编辑器继续:https://www.pindoupic.com/free-pattern-generator?ref=skill
72
72
 
73
+ ## 第 5 步:征询并回传使用意见(每次生成都要做)
74
+
75
+ 交付后向用户问一句「这张图纸合用吗?颜色多不多/好不好拼」,把回答(或你自己对本次的判断)回传一条:
76
+
77
+ ```bash
78
+ npx -y -p @javascribe/pindoupic pindoupic feedback --rating 4 --note "用户反馈:色号偏多" --agent "<你的宿主名>"
79
+ ```
80
+
81
+ - 每次生成最多回传一条,不要为同一张图重复提交(留言模块有频控)。
82
+ - `--note` 只写参数与评价,**不要写用户图片路径、文件名或图片内容**。
83
+ - 提交失败(离线/限流)就跳过,不要重试轰炸,也不要因此重新生成图纸。
84
+
73
85
  ## 排错
74
86
 
75
87
  - `npx` 下载包失败 → 用户网络问题,提示重试或挂代理;不要降级自造算法。
76
88
  - sharp 安装失败 → 用户网络问题,提示重试或挂代理;不要降级自造算法。
77
- - 访问不到 pindoupic.com → **不影响出图**(色板与预设都在包里),只是渲染参数回落到包内值,照常用第 3 步的命令。
89
+ - 访问不到 pindoupic.com → **无法生成**(算法密文的密钥由站点下发)。如实告知用户「官网恢复后即可出图」,不要自造算法或改用别家。
78
90
  - 报 `色板 X/Y 不在本包内` → 错误信息里已列出该版本支持的色板清单,按清单换型号;需要新色板就升级包版本。不要静默改用别的色板。
@@ -1,3 +0,0 @@
1
- var Sn=Object.defineProperty;var P=(t,e)=>Sn(t,"name",{value:e,configurable:!0});import Wn from"sharp";import en from"sharp";var me=class{static{P(this,"MockCanvas")}width;height;e;constructor(e,n,s){this.width=e,this.height=n,this.e=s||null}getContext(e,n){return new Ue(this)}},Ue=class{static{P(this,"MockContext")}n;imageSmoothingEnabled=!0;imageSmoothingQuality="high";constructor(e){this.n=e}getImageData(e,n,s,o){let c=this.n.e;return{data:c?new Uint8ClampedArray(c):new Uint8ClampedArray(s*o*4),width:s,height:o}}putImageData(e,n,s){}drawImage(e,...n){e&&e.e&&(this.n.e=new Uint8ClampedArray(e.e),n.length>=4&&(this.n.width=n[2],this.n.height=n[3]))}fillRect(e,n,s,o){}fillText(e,n,s){}measureText(e){return{width:0}}beginPath(){}arc(...e){}};typeof globalThis.document>"u"&&(globalThis.document={createElement(t){return t==="canvas"?new me(1,1):{}}});async function nn(t){let{data:e,info:n}=await en(t).ensureAlpha().raw().toBuffer({resolveWithObject:!0}),{width:s,height:o,channels:c}=n,a=new Uint8ClampedArray(e.buffer,e.byteOffset,e.length);return{canvas:new me(s,o,a),pixels:a,width:s,height:o}}P(nn,"loadImage");async function on(t,e,n="smooth"){let{data:s,info:o}=await en(t.pixels,{raw:{width:t.width,height:t.height,channels:4}}).resize(e,Math.round(e*t.height/t.width),{kernel:n==="nearest"?"nearest":"lanczos3",fit:"fill"}).ensureAlpha().raw().toBuffer({resolveWithObject:!0}),c=new Uint8ClampedArray(s.buffer,s.byteOffset,s.length);return{canvas:new me(o.width,o.height,c),pixels:c,width:o.width,height:o.height}}P(on,"resizeImage");function tn(t,e,n){let s=e*n,o=new Uint8ClampedArray(s*3),c=new Uint8ClampedArray(s);for(let a=0;a<s;a++)o[a*3]=t[a*4],o[a*3+1]=t[a*4+1],o[a*3+2]=t[a*4+2],c[a]=t[a*4+3];return{rgb:o,alpha:c}}P(tn,"extractRgbAlpha");var rn={brand:"mard",display_name:"MARD",sub_palette:"291",sub_palette_name:"291\u8272\u5168\u8272\u5957\u88C5",colors:[{id:"mard_291_A1",code:"A1",name:"\u5976\u6CB9\u7C73\u9EC4",hex_value:"#FAF4C8",hex:"#FAF4C8",rgb:[250,244,200],series:"A"},{id:"mard_291_A2",code:"A2",name:"\u8C61\u7259\u9EC4",hex_value:"#FFFFD5",hex:"#FFFFD5",rgb:[255,255,213],series:"A"},{id:"mard_291_A3",code:"A3",name:"\u8367\u5149\u6D45\u9EC4",hex_value:"#FEFF8B",hex:"#FEFF8B",rgb:[254,255,139],series:"A"},{id:"mard_291_A4",code:"A4",name:"\u660E\u4EAE\u67E0\u6AAC\u9EC4",hex_value:"#FBED56",hex:"#FBED56",rgb:[251,237,86],series:"A"},{id:"mard_291_A5",code:"A5",name:"\u5411\u65E5\u8475\u9EC4",hex_value:"#F4D738",hex:"#F4D738",rgb:[244,215,56],series:"A"},{id:"mard_291_A6",code:"A6",name:"\u871C\u6A59\u8272",hex_value:"#FEAC4C",hex:"#FEAC4C",rgb:[254,172,76],series:"A"},{id:"mard_291_A7",code:"A7",name:"\u9C9C\u6A59\u8272",hex_value:"#FE8B4C",hex:"#FE8B4C",rgb:[254,139,76],series:"A"},{id:"mard_291_A8",code:"A8",name:"\u91D1\u9EC4\u8272",hex_value:"#FFDA45",hex:"#FFDA45",rgb:[255,218,69],series:"A"},{id:"mard_291_A9",code:"A9",name:"\u674F\u6A59\u8272",hex_value:"#FF995B",hex:"#FF995B",rgb:[255,153,91],series:"A"},{id:"mard_291_A10",code:"A10",name:"\u5357\u74DC\u6A59",hex_value:"#F77C31",hex:"#F77C31",rgb:[247,124,49],series:"A"},{id:"mard_291_A11",code:"A11",name:"\u6DE1\u80A4\u6A59",hex_value:"#FFDD99",hex:"#FFDD99",rgb:[255,221,153],series:"A"},{id:"mard_291_A12",code:"A12",name:"\u6843\u6A59\u8272",hex_value:"#FE9F72",hex:"#FE9F72",rgb:[254,159,114],series:"A"},{id:"mard_291_A13",code:"A13",name:"\u674F\u6843\u8272",hex_value:"#FFC365",hex:"#FFC365",rgb:[255,195,101],series:"A"},{id:"mard_291_A14",code:"A14",name:"\u73CA\u745A\u6A59\u7EA2",hex_value:"#FD543D",hex:"#FD543D",rgb:[253,84,61],series:"A"},{id:"mard_291_A15",code:"A15",name:"\u4EAE\u67E0\u6AAC\u9EC4",hex_value:"#FFF365",hex:"#FFF365",rgb:[255,243,101],series:"A"},{id:"mard_291_A16",code:"A16",name:"\u8367\u5149\u6DE1\u9EC4",hex_value:"#FFFF9F",hex:"#FFFF9F",rgb:[255,255,159],series:"A"},{id:"mard_291_A17",code:"A17",name:"\u8702\u871C\u9EC4",hex_value:"#FFE36E",hex:"#FFE36E",rgb:[255,227,110],series:"A"},{id:"mard_291_A18",code:"A18",name:"\u6D45\u871C\u6843\u8272",hex_value:"#FEBE7D",hex:"#FEBE7D",rgb:[254,190,125],series:"A"},{id:"mard_291_A19",code:"A19",name:"\u9C91\u9C7C\u7C89\u6A59",hex_value:"#FD7C72",hex:"#FD7C72",rgb:[253,124,114],series:"A"},{id:"mard_291_A20",code:"A20",name:"\u91D1\u674F\u9EC4",hex_value:"#FFD568",hex:"#FFD568",rgb:[255,213,104],series:"A"},{id:"mard_291_A21",code:"A21",name:"\u9999\u8349\u9EC4",hex_value:"#FFE395",hex:"#FFE395",rgb:[255,227,149],series:"A"},{id:"mard_291_A22",code:"A22",name:"\u9EC4\u7EFF\u8272",hex_value:"#F4F57D",hex:"#F4F57D",rgb:[244,245,125],series:"A"},{id:"mard_291_A23",code:"A23",name:"\u5976\u8336\u80A4\u8272",hex_value:"#E6C9B7",hex:"#E6C9B7",rgb:[230,201,183],series:"A"},{id:"mard_291_A24",code:"A24",name:"\u6DE1\u9EC4\u7EFF",hex_value:"#F7F8A2",hex:"#F7F8A2",rgb:[247,248,162],series:"A"},{id:"mard_291_A25",code:"A25",name:"\u674F\u4EC1\u9EC4",hex_value:"#FFD67D",hex:"#FFD67D",rgb:[255,214,125],series:"A"},{id:"mard_291_A26",code:"A26",name:"\u7425\u73C0\u9EC4",hex_value:"#FFC830",hex:"#FFC830",rgb:[255,200,48],series:"A"},{id:"mard_291_B1",code:"B1",name:"\u9EC4\u7EFF\u8272",hex_value:"#E6EE31",hex:"#E6EE31",rgb:[230,238,49],series:"B"},{id:"mard_291_B2",code:"B2",name:"\u9C9C\u7EFF\u8272",hex_value:"#63F347",hex:"#63F347",rgb:[99,243,71],series:"B"},{id:"mard_291_B3",code:"B3",name:"\u6D45\u7EFF",hex_value:"#9EF780",hex:"#9EF780",rgb:[158,247,128],series:"B"},{id:"mard_291_B4",code:"B4",name:"\u4EAE\u7FE0\u7EFF",hex_value:"#5DE035",hex:"#5DE035",rgb:[93,224,53],series:"B"},{id:"mard_291_B5",code:"B5",name:"\u7FE0\u7EFF",hex_value:"#35E352",hex:"#35E352",rgb:[53,227,82],series:"B"},{id:"mard_291_B6",code:"B6",name:"\u8584\u8377\u7EFF",hex_value:"#65E2A6",hex:"#65E2A6",rgb:[101,226,166],series:"B"},{id:"mard_291_B7",code:"B7",name:"\u6DF1\u8584\u8377",hex_value:"#3DAF80",hex:"#3DAF80",rgb:[61,175,128],series:"B"},{id:"mard_291_B8",code:"B8",name:"\u68EE\u6797\u7EFF",hex_value:"#1C9C4F",hex:"#1C9C4F",rgb:[28,156,79],series:"B"},{id:"mard_291_B9",code:"B9",name:"\u6DF1\u68EE\u6797\u7EFF",hex_value:"#27523A",hex:"#27523A",rgb:[39,82,58],series:"B"},{id:"mard_291_B10",code:"B10",name:"\u7070\u7EFF",hex_value:"#95D3C2",hex:"#95D3C2",rgb:[149,211,194],series:"B"},{id:"mard_291_B11",code:"B11",name:"\u6A44\u6984\u7EFF",hex_value:"#5D722A",hex:"#5D722A",rgb:[93,114,42],series:"B"},{id:"mard_291_B12",code:"B12",name:"\u6DF1\u7FE0\u7EFF",hex_value:"#166F41",hex:"#166F41",rgb:[22,111,65],series:"B"},{id:"mard_291_B13",code:"B13",name:"\u6D45\u9178\u6A59\u7EFF",hex_value:"#CAEB7B",hex:"#CAEB7B",rgb:[202,235,123],series:"B"},{id:"mard_291_B14",code:"B14",name:"\u9178\u6A59\u7EFF",hex_value:"#ADE946",hex:"#ADE946",rgb:[173,233,70],series:"B"},{id:"mard_291_B15",code:"B15",name:"\u6697\u7EFF",hex_value:"#2E5132",hex:"#2E5132",rgb:[46,81,50],series:"B"},{id:"mard_291_B16",code:"B16",name:"\u67D4\u7EFF",hex_value:"#C5ED9C",hex:"#C5ED9C",rgb:[197,237,156],series:"B"},{id:"mard_291_B17",code:"B17",name:"\u9EC4\u6A44\u6984\u7EFF",hex_value:"#9BB13A",hex:"#9BB13A",rgb:[155,177,58],series:"B"},{id:"mard_291_B18",code:"B18",name:"\u6DE1\u9EC4\u7EFF",hex_value:"#E6EE49",hex:"#E6EE49",rgb:[230,238,73],series:"B"},{id:"mard_291_B19",code:"B19",name:"\u9752\u7EFF\u8272",hex_value:"#24B88C",hex:"#24B88C",rgb:[36,184,140],series:"B"},{id:"mard_291_B20",code:"B20",name:"\u6D45\u8584\u8377\u7EFF",hex_value:"#C2F0CC",hex:"#C2F0CC",rgb:[194,240,204],series:"B"},{id:"mard_291_B21",code:"B21",name:"\u6DF1\u9752\u8272",hex_value:"#156A6B",hex:"#156A6B",rgb:[21,106,107],series:"B"},{id:"mard_291_B22",code:"B22",name:"\u6697\u9752\u8272",hex_value:"#0B3C43",hex:"#0B3C43",rgb:[11,60,67],series:"B"},{id:"mard_291_B23",code:"B23",name:"\u6697\u6A44\u6984",hex_value:"#303A21",hex:"#303A21",rgb:[48,58,33],series:"B"},{id:"mard_291_B24",code:"B24",name:"\u6D45\u67E0\u6AAC\u7EFF",hex_value:"#EEFCA5",hex:"#EEFCA5",rgb:[238,252,165],series:"B"},{id:"mard_291_B25",code:"B25",name:"\u7070\u84DD\u7EFF",hex_value:"#4E846D",hex:"#4E846D",rgb:[78,132,109],series:"B"},{id:"mard_291_B26",code:"B26",name:"\u6697\u9EC4\u7EFF",hex_value:"#8D7A35",hex:"#8D7A35",rgb:[141,122,53],series:"B"},{id:"mard_291_B27",code:"B27",name:"\u6D45\u82F9\u679C\u7EFF",hex_value:"#CCE1AF",hex:"#CCE1AF",rgb:[204,225,175],series:"B"},{id:"mard_291_B28",code:"B28",name:"\u6D45\u8584\u8377\u9752",hex_value:"#9EE5B9",hex:"#9EE5B9",rgb:[158,229,185],series:"B"},{id:"mard_291_B29",code:"B29",name:"\u4EAE\u9EC4\u7EFF",hex_value:"#C5E254",hex:"#C5E254",rgb:[197,226,84],series:"B"},{id:"mard_291_B30",code:"B30",name:"\u6781\u6D45\u9EC4\u7EFF",hex_value:"#E2FCB1",hex:"#E2FCB1",rgb:[226,252,177],series:"B"},{id:"mard_291_B31",code:"B31",name:"\u82F9\u679C\u7EFF",hex_value:"#B0E792",hex:"#B0E792",rgb:[176,231,146],series:"B"},{id:"mard_291_B32",code:"B32",name:"\u7070\u6A44\u6984\u7EFF",hex_value:"#9CAB5A",hex:"#9CAB5A",rgb:[156,171,90],series:"B"},{id:"mard_291_C1",code:"C1",name:"\u6781\u6D45\u8584\u8377",hex_value:"#E8FFE7",hex:"#E8FFE7",rgb:[232,255,231],series:"C"},{id:"mard_291_C2",code:"C2",name:"\u6D45\u9752\u8272",hex_value:"#A9F9FC",hex:"#A9F9FC",rgb:[169,249,252],series:"C"},{id:"mard_291_C3",code:"C3",name:"\u6D45\u5929\u84DD",hex_value:"#A0E2FB",hex:"#A0E2FB",rgb:[160,226,251],series:"C"},{id:"mard_291_C4",code:"C4",name:"\u4EAE\u84DD\u8272",hex_value:"#41CCFF",hex:"#41CCFF",rgb:[65,204,255],series:"C"},{id:"mard_291_C5",code:"C5",name:"\u5929\u84DD\u8272",hex_value:"#01ACEB",hex:"#01ACEB",rgb:[1,172,235],series:"C"},{id:"mard_291_C6",code:"C6",name:"\u6D45\u94B4\u84DD",hex_value:"#50AAF0",hex:"#50AAF0",rgb:[80,170,240],series:"C"},{id:"mard_291_C7",code:"C7",name:"\u4E2D\u84DD\u8272",hex_value:"#3677D2",hex:"#3677D2",rgb:[54,119,210],series:"C"},{id:"mard_291_C8",code:"C8",name:"\u6DF1\u84DD\u8272",hex_value:"#0F54C0",hex:"#0F54C0",rgb:[15,84,192],series:"C"},{id:"mard_291_C9",code:"C9",name:"\u975B\u84DD\u8272",hex_value:"#324BCA",hex:"#324BCA",rgb:[50,75,202],series:"C"},{id:"mard_291_C10",code:"C10",name:"\u6D45\u6E56\u84DD",hex_value:"#3EBCE2",hex:"#3EBCE2",rgb:[62,188,226],series:"C"},{id:"mard_291_C11",code:"C11",name:"\u9752\u84DD\u8272",hex_value:"#28DDDE",hex:"#28DDDE",rgb:[40,221,222],series:"C"},{id:"mard_291_C12",code:"C12",name:"\u6DF1\u6D77\u519B\u84DD",hex_value:"#1C334D",hex:"#1C334D",rgb:[28,51,77],series:"C"},{id:"mard_291_C13",code:"C13",name:"\u6D45\u7C89\u84DD",hex_value:"#CDE8FF",hex:"#CDE8FF",rgb:[205,232,255],series:"C"},{id:"mard_291_C14",code:"C14",name:"\u51B0\u84DD\u8272",hex_value:"#D5FDFF",hex:"#D5FDFF",rgb:[213,253,255],series:"C"},{id:"mard_291_C15",code:"C15",name:"\u9752\u7EFF\u8272",hex_value:"#22C4C6",hex:"#22C4C6",rgb:[34,196,198],series:"C"},{id:"mard_291_C16",code:"C16",name:"\u6DF1\u94B4\u84DD",hex_value:"#1557A8",hex:"#1557A8",rgb:[21,87,168],series:"C"},{id:"mard_291_C17",code:"C17",name:"\u4EAE\u9752\u8272",hex_value:"#04D1F6",hex:"#04D1F6",rgb:[4,209,246],series:"C"},{id:"mard_291_C18",code:"C18",name:"\u6697\u6D77\u519B\u84DD",hex_value:"#1D3344",hex:"#1D3344",rgb:[29,51,68],series:"C"},{id:"mard_291_C19",code:"C19",name:"\u6DF1\u6E56\u84DD",hex_value:"#1887A2",hex:"#1887A2",rgb:[24,135,162],series:"C"},{id:"mard_291_C20",code:"C20",name:"\u4E2D\u6D77\u84DD",hex_value:"#176DAF",hex:"#176DAF",rgb:[23,109,175],series:"C"},{id:"mard_291_C21",code:"C21",name:"\u67D4\u84DD\u8272",hex_value:"#BEDDFF",hex:"#BEDDFF",rgb:[190,221,255],series:"C"},{id:"mard_291_C22",code:"C22",name:"\u7070\u84DD\u7EFF",hex_value:"#67B4BE",hex:"#67B4BE",rgb:[103,180,190],series:"C"},{id:"mard_291_C23",code:"C23",name:"\u6D45\u5A74\u513F\u84DD",hex_value:"#C8E2FF",hex:"#C8E2FF",rgb:[200,226,255],series:"C"},{id:"mard_291_C24",code:"C24",name:"\u5A74\u513F\u84DD",hex_value:"#7CC4FF",hex:"#7CC4FF",rgb:[124,196,255],series:"C"},{id:"mard_291_C25",code:"C25",name:"\u6D45\u9752\u7EFF",hex_value:"#A9E5E5",hex:"#A9E5E5",rgb:[169,229,229],series:"C"},{id:"mard_291_C26",code:"C26",name:"\u4E2D\u6D77\u84DD",hex_value:"#3CAED8",hex:"#3CAED8",rgb:[60,174,216],series:"C"},{id:"mard_291_C27",code:"C27",name:"\u6D45\u7D2B\u84DD",hex_value:"#D3DFFA",hex:"#D3DFFA",rgb:[211,223,250],series:"C"},{id:"mard_291_C28",code:"C28",name:"\u6D45\u7070\u84DD",hex_value:"#BBCFED",hex:"#BBCFED",rgb:[187,207,237],series:"C"},{id:"mard_291_C29",code:"C29",name:"\u6DF1\u975B\u84DD",hex_value:"#34488E",hex:"#34488E",rgb:[52,72,142],series:"C"},{id:"mard_291_D1",code:"D1",name:"\u6D45\u85B0\u8863\u8349",hex_value:"#AEB4F2",hex:"#AEB4F2",rgb:[174,180,242],series:"D"},{id:"mard_291_D2",code:"D2",name:"\u84DD\u7D2B\u8272",hex_value:"#858EDD",hex:"#858EDD",rgb:[133,142,221],series:"D"},{id:"mard_291_D3",code:"D3",name:"\u975B\u84DD\u8272",hex_value:"#2F54AF",hex:"#2F54AF",rgb:[47,84,175],series:"D"},{id:"mard_291_D4",code:"D4",name:"\u6DF1\u7687\u5BB6\u84DD",hex_value:"#182A84",hex:"#182A84",rgb:[24,42,132],series:"D"},{id:"mard_291_D5",code:"D5",name:"\u4EAE\u7D2B\u8272",hex_value:"#B843C5",hex:"#B843C5",rgb:[184,67,197],series:"D"},{id:"mard_291_D6",code:"D6",name:"\u6D45\u7D2B",hex_value:"#AC7BDE",hex:"#AC7BDE",rgb:[172,123,222],series:"D"},{id:"mard_291_D7",code:"D7",name:"\u4E2D\u7D2B\u8272",hex_value:"#8854B3",hex:"#8854B3",rgb:[136,84,179],series:"D"},{id:"mard_291_D8",code:"D8",name:"\u6D45\u6DE1\u7D2B",hex_value:"#E2D3FF",hex:"#E2D3FF",rgb:[226,211,255],series:"D"},{id:"mard_291_D9",code:"D9",name:"\u6DE1\u7D2B\u8272",hex_value:"#D5B9F8",hex:"#D5B9F8",rgb:[213,185,248],series:"D"},{id:"mard_291_D10",code:"D10",name:"\u6DF1\u7D2B\u9ED1",hex_value:"#361851",hex:"#361851",rgb:[54,24,81],series:"D"},{id:"mard_291_D11",code:"D11",name:"\u7070\u84DD\u7D2B",hex_value:"#B9BAE1",hex:"#B9BAE1",rgb:[185,186,225],series:"D"},{id:"mard_291_D12",code:"D12",name:"\u6D45\u7D2B\u7C89",hex_value:"#DE9AD4",hex:"#DE9AD4",rgb:[222,154,212],series:"D"},{id:"mard_291_D13",code:"D13",name:"\u4EAE\u6D0B\u7EA2",hex_value:"#B90095",hex:"#B90095",rgb:[185,0,149],series:"D"},{id:"mard_291_D14",code:"D14",name:"\u6DF1\u7D2B\u7EA2",hex_value:"#8B279B",hex:"#8B279B",rgb:[139,39,155],series:"D"},{id:"mard_291_D15",code:"D15",name:"\u6DF1\u84DD\u7D2B",hex_value:"#2F1F90",hex:"#2F1F90",rgb:[47,31,144],series:"D"},{id:"mard_291_D16",code:"D16",name:"\u6781\u6D45\u7D2B",hex_value:"#E3E1EE",hex:"#E3E1EE",rgb:[227,225,238],series:"D"},{id:"mard_291_D17",code:"D17",name:"\u6D45\u84DD\u7D2B",hex_value:"#C4D4F6",hex:"#C4D4F6",rgb:[196,212,246],series:"D"},{id:"mard_291_D18",code:"D18",name:"\u4E2D\u7D2B\u7EA2",hex_value:"#A45EC7",hex:"#A45EC7",rgb:[164,94,199],series:"D"},{id:"mard_291_D19",code:"D19",name:"\u7070\u7D2B\u7C89",hex_value:"#D8C3D7",hex:"#D8C3D7",rgb:[216,195,215],series:"D"},{id:"mard_291_D20",code:"D20",name:"\u6DF1\u6D0B\u7EA2",hex_value:"#9C32B2",hex:"#9C32B2",rgb:[156,50,178],series:"D"},{id:"mard_291_D21",code:"D21",name:"\u7D2B\u7EA2\u8272",hex_value:"#9A009B",hex:"#9A009B",rgb:[154,0,155],series:"D"},{id:"mard_291_D22",code:"D22",name:"\u6697\u975B\u7D2B",hex_value:"#333A95",hex:"#333A95",rgb:[51,58,149],series:"D"},{id:"mard_291_D23",code:"D23",name:"\u6D45\u7C89\u7D2B",hex_value:"#EBDAFC",hex:"#EBDAFC",rgb:[235,218,252],series:"D"},{id:"mard_291_D24",code:"D24",name:"\u4E2D\u84DD\u7D2B",hex_value:"#7786E5",hex:"#7786E5",rgb:[119,134,229],series:"D"},{id:"mard_291_D25",code:"D25",name:"\u6DF1\u84DD\u7D2B",hex_value:"#494FC7",hex:"#494FC7",rgb:[73,79,199],series:"D"},{id:"mard_291_D26",code:"D26",name:"\u6DE1\u7C89\u7D2B",hex_value:"#DFC2F8",hex:"#DFC2F8",rgb:[223,194,248],series:"D"},{id:"mard_291_E1",code:"E1",name:"\u6D45\u9C91\u9C7C\u7C89",hex_value:"#FDD3CC",hex:"#FDD3CC",rgb:[253,211,204],series:"E"},{id:"mard_291_E2",code:"E2",name:"\u6D45\u7C89\u8272",hex_value:"#FEC0DF",hex:"#FEC0DF",rgb:[254,192,223],series:"E"},{id:"mard_291_E3",code:"E3",name:"\u4EAE\u7C89\u8272",hex_value:"#FFB7E7",hex:"#FFB7E7",rgb:[255,183,231],series:"E"},{id:"mard_291_E4",code:"E4",name:"\u6DF1\u73AB\u7470\u7C89",hex_value:"#E8649E",hex:"#E8649E",rgb:[232,100,158],series:"E"},{id:"mard_291_E5",code:"E5",name:"\u4EAE\u73AB\u7470\u7C89",hex_value:"#F551A2",hex:"#F551A2",rgb:[245,81,162],series:"E"},{id:"mard_291_E6",code:"E6",name:"\u6DF1\u7C89\u7EA2",hex_value:"#F13D74",hex:"#F13D74",rgb:[241,61,116],series:"E"},{id:"mard_291_E7",code:"E7",name:"\u6697\u73AB\u7470",hex_value:"#C63478",hex:"#C63478",rgb:[198,52,120],series:"E"},{id:"mard_291_E8",code:"E8",name:"\u6D45\u7CD6\u679C\u7C89",hex_value:"#FFDBE9",hex:"#FFDBE9",rgb:[255,219,233],series:"E"},{id:"mard_291_E9",code:"E9",name:"\u6D45\u6D0B\u7EA2",hex_value:"#E970CC",hex:"#E970CC",rgb:[233,112,204],series:"E"},{id:"mard_291_E10",code:"E10",name:"\u6DF1\u6D0B\u7EA2",hex_value:"#D33793",hex:"#D33793",rgb:[211,55,147],series:"E"},{id:"mard_291_E11",code:"E11",name:"\u6D45\u871C\u6843\u7C89",hex_value:"#FCDDD2",hex:"#FCDDD2",rgb:[252,221,210],series:"E"},{id:"mard_291_E12",code:"E12",name:"\u4E2D\u7C89\u7EA2",hex_value:"#F78FC3",hex:"#F78FC3",rgb:[247,143,195],series:"E"},{id:"mard_291_E13",code:"E13",name:"\u6DF1\u6D0B\u7EA2\u7C89",hex_value:"#B5006D",hex:"#B5006D",rgb:[181,0,109],series:"E"},{id:"mard_291_E14",code:"E14",name:"\u6D45\u674F\u7C89",hex_value:"#FFD1BA",hex:"#FFD1BA",rgb:[255,209,186],series:"E"},{id:"mard_291_E15",code:"E15",name:"\u67D4\u7C89\u8272",hex_value:"#F8C7C9",hex:"#F8C7C9",rgb:[248,199,201],series:"E"},{id:"mard_291_E16",code:"E16",name:"\u6781\u6D45\u7C89\u767D",hex_value:"#FFF3EB",hex:"#FFF3EB",rgb:[255,243,235],series:"E"},{id:"mard_291_E17",code:"E17",name:"\u6D45\u7CD6\u679C",hex_value:"#FFE2EA",hex:"#FFE2EA",rgb:[255,226,234],series:"E"},{id:"mard_291_E18",code:"E18",name:"\u6D45\u73AB\u7470\u7C89",hex_value:"#FFC7DB",hex:"#FFC7DB",rgb:[255,199,219],series:"E"},{id:"mard_291_E19",code:"E19",name:"\u6D45\u82AD\u6BD4\u7C89",hex_value:"#FEBAD5",hex:"#FEBAD5",rgb:[254,186,213],series:"E"},{id:"mard_291_E20",code:"E20",name:"\u7070\u7D2B\u7C89",hex_value:"#D8C7D1",hex:"#D8C7D1",rgb:[216,199,209],series:"E"},{id:"mard_291_E21",code:"E21",name:"\u7070\u73AB\u7470",hex_value:"#BD9DA1",hex:"#BD9DA1",rgb:[189,157,161],series:"E"},{id:"mard_291_E22",code:"E22",name:"\u7070\u7D2B\u73AB\u7470",hex_value:"#B785A1",hex:"#B785A1",rgb:[183,133,161],series:"E"},{id:"mard_291_E23",code:"E23",name:"\u6697\u7070\u7D2B",hex_value:"#937A8D",hex:"#937A8D",rgb:[147,122,141],series:"E"},{id:"mard_291_E24",code:"E24",name:"\u6D45\u7D2B\u7C89",hex_value:"#E1BCE8",hex:"#E1BCE8",rgb:[225,188,232],series:"E"},{id:"mard_291_F1",code:"F1",name:"\u6D45\u73CA\u745A\u7EA2",hex_value:"#FD957B",hex:"#FD957B",rgb:[253,149,123],series:"F"},{id:"mard_291_F2",code:"F2",name:"\u4EAE\u7EA2\u8272",hex_value:"#FC3D46",hex:"#FC3D46",rgb:[252,61,70],series:"F"},{id:"mard_291_F3",code:"F3",name:"\u9C9C\u7EA2\u8272",hex_value:"#F74941",hex:"#F74941",rgb:[247,73,65],series:"F"},{id:"mard_291_F4",code:"F4",name:"\u6DF1\u7EA2\u8272",hex_value:"#FC283C",hex:"#FC283C",rgb:[252,40,60],series:"F"},{id:"mard_291_F5",code:"F5",name:"\u5927\u7EA2\u8272",hex_value:"#E7002F",hex:"#E7002F",rgb:[231,0,47],series:"F"},{id:"mard_291_F6",code:"F6",name:"\u6DF1\u7EA2\u8910",hex_value:"#943630",hex:"#943630",rgb:[148,54,48],series:"F"},{id:"mard_291_F7",code:"F7",name:"\u6697\u8840\u7EA2",hex_value:"#971937",hex:"#971937",rgb:[151,25,55],series:"F"},{id:"mard_291_F8",code:"F8",name:"\u6DF1\u9152\u7EA2",hex_value:"#BC0028",hex:"#BC0028",rgb:[188,0,40],series:"F"},{id:"mard_291_F9",code:"F9",name:"\u6D45\u73AB\u7470\u7EA2",hex_value:"#E2677A",hex:"#E2677A",rgb:[226,103,122],series:"F"},{id:"mard_291_F10",code:"F10",name:"\u7EA2\u68D5\u8272",hex_value:"#8A4526",hex:"#8A4526",rgb:[138,69,38],series:"F"},{id:"mard_291_F11",code:"F11",name:"\u6697\u7EA2\u68D5",hex_value:"#5A2121",hex:"#5A2121",rgb:[90,33,33],series:"F"},{id:"mard_291_F12",code:"F12",name:"\u4EAE\u7C89\u7EA2",hex_value:"#FD4E6A",hex:"#FD4E6A",rgb:[253,78,106],series:"F"},{id:"mard_291_F13",code:"F13",name:"\u73CA\u745A\u7EA2",hex_value:"#F35744",hex:"#F35744",rgb:[243,87,68],series:"F"},{id:"mard_291_F14",code:"F14",name:"\u6D45\u7C89\u7EA2",hex_value:"#FFA9AD",hex:"#FFA9AD",rgb:[255,169,173],series:"F"},{id:"mard_291_F15",code:"F15",name:"\u6DF1\u7EA2",hex_value:"#D30022",hex:"#D30022",rgb:[211,0,34],series:"F"},{id:"mard_291_F16",code:"F16",name:"\u6D45\u871C\u6843",hex_value:"#FEC2A6",hex:"#FEC2A6",rgb:[254,194,166],series:"F"},{id:"mard_291_F17",code:"F17",name:"\u6D45\u68D5\u6A59",hex_value:"#E69C79",hex:"#E69C79",rgb:[230,156,121],series:"F"},{id:"mard_291_F18",code:"F18",name:"\u4E2D\u68D5\u6A59",hex_value:"#D37C46",hex:"#D37C46",rgb:[211,124,70],series:"F"},{id:"mard_291_F19",code:"F19",name:"\u6DF1\u73AB\u7470\u7EA2",hex_value:"#C1444A",hex:"#C1444A",rgb:[193,68,74],series:"F"},{id:"mard_291_F20",code:"F20",name:"\u7070\u73AB\u7470",hex_value:"#CD9391",hex:"#CD9391",rgb:[205,147,145],series:"F"},{id:"mard_291_F21",code:"F21",name:"\u6D45\u7CD6\u679C\u7C89",hex_value:"#F7B4C6",hex:"#F7B4C6",rgb:[247,180,198],series:"F"},{id:"mard_291_F22",code:"F22",name:"\u6D45\u82AD\u6BD4\u7C89",hex_value:"#FDC0D0",hex:"#FDC0D0",rgb:[253,192,208],series:"F"},{id:"mard_291_F23",code:"F23",name:"\u6D45\u73CA\u745A",hex_value:"#F67E66",hex:"#F67E66",rgb:[246,126,102],series:"F"},{id:"mard_291_F24",code:"F24",name:"\u7070\u73AB\u7470\u7C89",hex_value:"#E698AA",hex:"#E698AA",rgb:[230,152,170],series:"F"},{id:"mard_291_F25",code:"F25",name:"\u4E2D\u7EA2\u8272",hex_value:"#E54B4F",hex:"#E54B4F",rgb:[229,75,79],series:"F"},{id:"mard_291_G1",code:"G1",name:"\u6D45\u5976\u5496",hex_value:"#FFE2CE",hex:"#FFE2CE",rgb:[255,226,206],series:"G"},{id:"mard_291_G2",code:"G2",name:"\u6D45\u80A4\u68D5",hex_value:"#FFC4AA",hex:"#FFC4AA",rgb:[255,196,170],series:"G"},{id:"mard_291_G3",code:"G3",name:"\u5976\u8336\u68D5",hex_value:"#F4C3A5",hex:"#F4C3A5",rgb:[244,195,165],series:"G"},{id:"mard_291_G4",code:"G4",name:"\u6D45\u9A7C\u8272",hex_value:"#E1B383",hex:"#E1B383",rgb:[225,179,131],series:"G"},{id:"mard_291_G5",code:"G5",name:"\u7126\u7CD6\u8272",hex_value:"#EDB045",hex:"#EDB045",rgb:[237,176,69],series:"G"},{id:"mard_291_G6",code:"G6",name:"\u6DF1\u7126\u7CD6",hex_value:"#E99C17",hex:"#E99C17",rgb:[233,156,23],series:"G"},{id:"mard_291_G7",code:"G7",name:"\u6DF1\u68D5\u8272",hex_value:"#9D5B3E",hex:"#9D5B3E",rgb:[157,91,62],series:"G"},{id:"mard_291_G8",code:"G8",name:"\u5DE7\u514B\u529B\u68D5",hex_value:"#753832",hex:"#753832",rgb:[117,56,50],series:"G"},{id:"mard_291_G9",code:"G9",name:"\u8089\u6842\u68D5",hex_value:"#E6B483",hex:"#E6B483",rgb:[230,180,131],series:"G"},{id:"mard_291_G10",code:"G10",name:"\u6817\u5B50\u68D5",hex_value:"#D98C39",hex:"#D98C39",rgb:[217,140,57],series:"G"},{id:"mard_291_G11",code:"G11",name:"\u5361\u5176\u7C73\u8272",hex_value:"#E0C593",hex:"#E0C593",rgb:[224,197,147],series:"G"},{id:"mard_291_G12",code:"G12",name:"\u6D45\u6A59\u80A4\u8272",hex_value:"#FFC890",hex:"#FFC890",rgb:[255,200,144],series:"G"},{id:"mard_291_G13",code:"G13",name:"\u8D64\u9676\u68D5",hex_value:"#B7714A",hex:"#B7714A",rgb:[183,113,74],series:"G"},{id:"mard_291_G14",code:"G14",name:"\u7070\u5496\u68D5",hex_value:"#8D614C",hex:"#8D614C",rgb:[141,97,76],series:"G"},{id:"mard_291_G15",code:"G15",name:"\u5976\u767D\u8272",hex_value:"#FCF9E0",hex:"#FCF9E0",rgb:[252,249,224],series:"G"},{id:"mard_291_G16",code:"G16",name:"\u6D45\u5976\u8336",hex_value:"#F2D9BA",hex:"#F2D9BA",rgb:[242,217,186],series:"G"},{id:"mard_291_G17",code:"G17",name:"\u6DF1\u5496\u5561",hex_value:"#78524B",hex:"#78524B",rgb:[120,82,75],series:"G"},{id:"mard_291_G18",code:"G18",name:"\u6DE1\u80A4\u7C73\u8272",hex_value:"#FFE4CC",hex:"#FFE4CC",rgb:[255,228,204],series:"G"},{id:"mard_291_G19",code:"G19",name:"\u6A58\u68D5\u8272",hex_value:"#E07935",hex:"#E07935",rgb:[224,121,53],series:"G"},{id:"mard_291_G20",code:"G20",name:"\u7EA2\u68D5\u8272",hex_value:"#A94023",hex:"#A94023",rgb:[169,64,35],series:"G"},{id:"mard_291_G21",code:"G21",name:"\u6D45\u6728\u68D5",hex_value:"#B88558",hex:"#B88558",rgb:[184,133,88],series:"G"},{id:"mard_291_H1",code:"H1",name:"\u6696\u767D",hex_value:"#FDFBFF",hex:"#FDFBFF",rgb:[253,251,255],series:"H"},{id:"mard_291_H2",code:"H2",name:"\u7EAF\u767D",hex_value:"#FEFFFF",hex:"#FEFFFF",rgb:[254,255,255],series:"H"},{id:"mard_291_H3",code:"H3",name:"\u6D45\u7070\u7D2B",hex_value:"#B6B1BA",hex:"#B6B1BA",rgb:[182,177,186],series:"H"},{id:"mard_291_H4",code:"H4",name:"\u4E2D\u7070",hex_value:"#89858C",hex:"#89858C",rgb:[137,133,140],series:"H"},{id:"mard_291_H5",code:"H5",name:"\u6DF1\u7070",hex_value:"#48464E",hex:"#48464E",rgb:[72,70,78],series:"H"},{id:"mard_291_H6",code:"H6",name:"\u70AD\u7070",hex_value:"#2F2B2F",hex:"#2F2B2F",rgb:[47,43,47],series:"H"},{id:"mard_291_H7",code:"H7",name:"\u9ED1\u8272",hex_value:"#000000",hex:"#000000",rgb:[0,0,0],series:"H"},{id:"mard_291_H8",code:"H8",name:"\u6D45\u7070\u7C89",hex_value:"#E7D6DB",hex:"#E7D6DB",rgb:[231,214,219],series:"H"},{id:"mard_291_H9",code:"H9",name:"\u6D45\u7070\u767D",hex_value:"#EDEDED",hex:"#EDEDED",rgb:[237,237,237],series:"H"},{id:"mard_291_H10",code:"H10",name:"\u73CD\u73E0\u7070",hex_value:"#EEE9EA",hex:"#EEE9EA",rgb:[238,233,234],series:"H"},{id:"mard_291_H11",code:"H11",name:"\u94F6\u7070\u8272",hex_value:"#CECDD5",hex:"#CECDD5",rgb:[206,205,213],series:"H"},{id:"mard_291_H12",code:"H12",name:"\u7C73\u767D\u8272",hex_value:"#FFF5ED",hex:"#FFF5ED",rgb:[255,245,237],series:"H"},{id:"mard_291_H13",code:"H13",name:"\u6D45\u7C73\u8272",hex_value:"#F5ECD2",hex:"#F5ECD2",rgb:[245,236,210],series:"H"},{id:"mard_291_H14",code:"H14",name:"\u7070\u7EFF\u8272",hex_value:"#CFD7D3",hex:"#CFD7D3",rgb:[207,215,211],series:"H"},{id:"mard_291_H15",code:"H15",name:"\u84DD\u7070\u8272",hex_value:"#98A6A8",hex:"#98A6A8",rgb:[152,166,168],series:"H"},{id:"mard_291_H16",code:"H16",name:"\u58A8\u9ED1\u8272",hex_value:"#1D1414",hex:"#1D1414",rgb:[29,20,20],series:"H"},{id:"mard_291_H17",code:"H17",name:"\u96FE\u767D\u8272",hex_value:"#F1EDED",hex:"#F1EDED",rgb:[241,237,237],series:"H"},{id:"mard_291_H18",code:"H18",name:"\u5976\u6CB9\u767D",hex_value:"#FFFDF0",hex:"#FFFDF0",rgb:[255,253,240],series:"H"},{id:"mard_291_H19",code:"H19",name:"\u6696\u7C73\u767D",hex_value:"#F6EFE2",hex:"#F6EFE2",rgb:[246,239,226],series:"H"},{id:"mard_291_H20",code:"H20",name:"\u94A2\u7070\u8272",hex_value:"#949FA3",hex:"#949FA3",rgb:[148,159,163],series:"H"},{id:"mard_291_H21",code:"H21",name:"\u6D45\u5976\u9EC4",hex_value:"#FFFBE1",hex:"#FFFBE1",rgb:[255,251,225],series:"H"},{id:"mard_291_H22",code:"H22",name:"\u6D45\u51B7\u7070",hex_value:"#CACAD4",hex:"#CACAD4",rgb:[202,202,212],series:"H"},{id:"mard_291_H23",code:"H23",name:"\u82D4\u7070\u8272",hex_value:"#9A9D94",hex:"#9A9D94",rgb:[154,157,148],series:"H"},{id:"mard_291_M1",code:"M1",name:"\u6D45\u9F20\u5C3E\u8349",hex_value:"#BCC6B8",hex:"#BCC6B8",rgb:[188,198,184],series:"M"},{id:"mard_291_M2",code:"M2",name:"\u7070\u7EFF\u8272",hex_value:"#8AA386",hex:"#8AA386",rgb:[138,163,134],series:"M"},{id:"mard_291_M3",code:"M3",name:"\u84DD\u7070\u8272",hex_value:"#697D80",hex:"#697D80",rgb:[105,125,128],series:"M"},{id:"mard_291_M4",code:"M4",name:"\u6D45\u7C73\u8272",hex_value:"#E3D2BC",hex:"#E3D2BC",rgb:[227,210,188],series:"M"},{id:"mard_291_M5",code:"M5",name:"\u7070\u7C73\u8272",hex_value:"#D0CCAA",hex:"#D0CCAA",rgb:[208,204,170],series:"M"},{id:"mard_291_M6",code:"M6",name:"\u6696\u7070\u68D5",hex_value:"#B0A782",hex:"#B0A782",rgb:[176,167,130],series:"M"},{id:"mard_291_M7",code:"M7",name:"\u7070\u68D5\u8272",hex_value:"#B4A497",hex:"#B4A497",rgb:[180,164,151],series:"M"},{id:"mard_291_M8",code:"M8",name:"\u7070\u73AB\u7470",hex_value:"#B38281",hex:"#B38281",rgb:[179,130,129],series:"M"},{id:"mard_291_M9",code:"M9",name:"\u68D5\u8910\u8272",hex_value:"#A58767",hex:"#A58767",rgb:[165,135,103],series:"M"},{id:"mard_291_M10",code:"M10",name:"\u7070\u7D2B\u8272",hex_value:"#C5B2BC",hex:"#C5B2BC",rgb:[197,178,188],series:"M"},{id:"mard_291_M11",code:"M11",name:"\u7D2B\u7070\u8272",hex_value:"#9F7594",hex:"#9F7594",rgb:[159,117,148],series:"M"},{id:"mard_291_M12",code:"M12",name:"\u6DF1\u6697\u7D2B",hex_value:"#644749",hex:"#644749",rgb:[100,71,73],series:"M"},{id:"mard_291_M13",code:"M13",name:"\u94DC\u68D5\u8272",hex_value:"#D19066",hex:"#D19066",rgb:[209,144,102],series:"M"},{id:"mard_291_M14",code:"M14",name:"\u8D64\u9676\u8272",hex_value:"#C77362",hex:"#C77362",rgb:[199,115,98],series:"M"},{id:"mard_291_M15",code:"M15",name:"\u4E2D\u7070\u8272",hex_value:"#757D78",hex:"#757D78",rgb:[117,125,120],series:"M"},{id:"mard_291_P1",code:"P1",name:"\u6781\u6D45\u7C89\u767D",hex_value:"#FCF7F8",hex:"#FCF7F8",rgb:[252,247,248],series:"P"},{id:"mard_291_P2",code:"P2",name:"\u6D45\u7070\u8272",hex_value:"#B0A9AC",hex:"#B0A9AC",rgb:[176,169,172],series:"P"},{id:"mard_291_P3",code:"P3",name:"\u6D45\u82F9\u679C\u7EFF",hex_value:"#AFDCAB",hex:"#AFDCAB",rgb:[175,220,171],series:"P"},{id:"mard_291_P4",code:"P4",name:"\u6D45\u73CA\u745A\u7C89",hex_value:"#FEA49F",hex:"#FEA49F",rgb:[254,164,159],series:"P"},{id:"mard_291_P5",code:"P5",name:"\u6D45\u6A59\u8272",hex_value:"#EE8C3E",hex:"#EE8C3E",rgb:[238,140,62],series:"P"},{id:"mard_291_P6",code:"P6",name:"\u6D45\u8584\u8377\u7EFF",hex_value:"#5FD0A7",hex:"#5FD0A7",rgb:[95,208,167],series:"P"},{id:"mard_291_P7",code:"P7",name:"\u6D45\u674F\u6A59",hex_value:"#EB9270",hex:"#EB9270",rgb:[235,146,112],series:"P"},{id:"mard_291_P8",code:"P8",name:"\u67D4\u9EC4\u8272",hex_value:"#F0D958",hex:"#F0D958",rgb:[240,217,88],series:"P"},{id:"mard_291_P9",code:"P9",name:"\u6D45\u7070\u8272",hex_value:"#D9D9D9",hex:"#D9D9D9",rgb:[217,217,217],series:"P"},{id:"mard_291_P10",code:"P10",name:"\u6D45\u6DE1\u7D2B",hex_value:"#D9C7EA",hex:"#D9C7EA",rgb:[217,199,234],series:"P"},{id:"mard_291_P11",code:"P11",name:"\u6D45\u7C73\u9EC4",hex_value:"#F3ECC9",hex:"#F3ECC9",rgb:[243,236,201],series:"P"},{id:"mard_291_P12",code:"P12",name:"\u6D45\u84DD\u7070",hex_value:"#E6EEF2",hex:"#E6EEF2",rgb:[230,238,242],series:"P"},{id:"mard_291_P13",code:"P13",name:"\u6D45\u5929\u84DD",hex_value:"#AACBEF",hex:"#AACBEF",rgb:[170,203,239],series:"P"},{id:"mard_291_P14",code:"P14",name:"\u6DF1\u9752\u8272",hex_value:"#337680",hex:"#337680",rgb:[51,118,128],series:"P"},{id:"mard_291_P15",code:"P15",name:"\u7070\u7EFF\u8272",hex_value:"#668575",hex:"#668575",rgb:[102,133,117],series:"P"},{id:"mard_291_P16",code:"P16",name:"\u4EAE\u9EC4\u8272",hex_value:"#FEBF45",hex:"#FEBF45",rgb:[254,191,69],series:"P"},{id:"mard_291_P17",code:"P17",name:"\u6D45\u6A59\u9EC4",hex_value:"#FEA324",hex:"#FEA324",rgb:[254,163,36],series:"P"},{id:"mard_291_P18",code:"P18",name:"\u6D45\u674F\u8272",hex_value:"#FEB89F",hex:"#FEB89F",rgb:[254,184,159],series:"P"},{id:"mard_291_P19",code:"P19",name:"\u5976\u6CB9\u767D",hex_value:"#FFFEEC",hex:"#FFFEEC",rgb:[255,254,236],series:"P"},{id:"mard_291_P20",code:"P20",name:"\u6D45\u7C89\u8272",hex_value:"#FEBECF",hex:"#FEBECF",rgb:[254,190,207],series:"P"},{id:"mard_291_P21",code:"P21",name:"\u7070\u7C89\u8272",hex_value:"#ECBEBF",hex:"#ECBEBF",rgb:[236,190,191],series:"P"},{id:"mard_291_P22",code:"P22",name:"\u6D45\u73AB\u7470",hex_value:"#E4A89F",hex:"#E4A89F",rgb:[228,168,159],series:"P"},{id:"mard_291_P23",code:"P23",name:"\u6DF1\u73AB\u7470",hex_value:"#A56268",hex:"#A56268",rgb:[165,98,104],series:"P"},{id:"mard_291_Q1",code:"Q1",name:"\u4EAE\u7C89\u8272",hex_value:"#F2A5E8",hex:"#F2A5E8",rgb:[242,165,232],series:"Q"},{id:"mard_291_Q2",code:"Q2",name:"\u6D45\u9EC4\u7EFF",hex_value:"#E9EC91",hex:"#E9EC91",rgb:[233,236,145],series:"Q"},{id:"mard_291_Q3",code:"Q3",name:"\u7EAF\u9EC4\u8272",hex_value:"#FFFF00",hex:"#FFFF00",rgb:[255,255,0],series:"Q"},{id:"mard_291_Q4",code:"Q4",name:"\u6D45\u7C89\u8272",hex_value:"#FFEBFA",hex:"#FFEBFA",rgb:[255,235,250],series:"Q"},{id:"mard_291_Q5",code:"Q5",name:"\u6D45\u84DD\u8272",hex_value:"#76CEDE",hex:"#76CEDE",rgb:[118,206,222],series:"Q"},{id:"mard_291_R1",code:"R1",name:"\u9C9C\u7EA2\u8272",hex_value:"#D50D21",hex:"#D50D21",rgb:[213,13,33],series:"R"},{id:"mard_291_R2",code:"R2",name:"\u4EAE\u7C89\u8272",hex_value:"#F92F83",hex:"#F92F83",rgb:[249,47,131],series:"R"},{id:"mard_291_R3",code:"R3",name:"\u4EAE\u6A59\u8272",hex_value:"#FD8324",hex:"#FD8324",rgb:[253,131,36],series:"R"},{id:"mard_291_R4",code:"R4",name:"\u9C9C\u9EC4\u8272",hex_value:"#F8EC31",hex:"#F8EC31",rgb:[248,236,49],series:"R"},{id:"mard_291_R5",code:"R5",name:"\u4EAE\u7EFF\u8272",hex_value:"#35C75B",hex:"#35C75B",rgb:[53,199,91],series:"R"},{id:"mard_291_R6",code:"R6",name:"\u6DF1\u9752\u8272",hex_value:"#238891",hex:"#238891",rgb:[35,136,145],series:"R"},{id:"mard_291_R7",code:"R7",name:"\u6DF1\u84DD\u8272",hex_value:"#19779D",hex:"#19779D",rgb:[25,119,157],series:"R"},{id:"mard_291_R8",code:"R8",name:"\u7687\u5BB6\u84DD",hex_value:"#1A60C3",hex:"#1A60C3",rgb:[26,96,195],series:"R"},{id:"mard_291_R9",code:"R9",name:"\u7D2B\u8272",hex_value:"#9A56B4",hex:"#9A56B4",rgb:[154,86,180],series:"R"},{id:"mard_291_R10",code:"R10",name:"\u91D1\u9EC4\u8272",hex_value:"#FFDB4C",hex:"#FFDB4C",rgb:[255,219,76],series:"R"},{id:"mard_291_R11",code:"R11",name:"\u6D45\u7C89\u8272",hex_value:"#FFEBFA",hex:"#FFEBFA",rgb:[255,235,250],series:"R"},{id:"mard_291_R12",code:"R12",name:"\u6D45\u7070\u8272",hex_value:"#D8D5CE",hex:"#D8D5CE",rgb:[216,213,206],series:"R"},{id:"mard_291_R13",code:"R13",name:"\u6DF1\u7070\u8272",hex_value:"#55514C",hex:"#55514C",rgb:[85,81,76],series:"R"},{id:"mard_291_R14",code:"R14",name:"\u6D45\u8584\u8377",hex_value:"#9FE4DF",hex:"#9FE4DF",rgb:[159,228,223],series:"R"},{id:"mard_291_R15",code:"R15",name:"\u6D45\u84DD\u8272",hex_value:"#77CEE9",hex:"#77CEE9",rgb:[119,206,233],series:"R"},{id:"mard_291_R16",code:"R16",name:"\u9752\u7EFF\u8272",hex_value:"#3ECFCA",hex:"#3ECFCA",rgb:[62,207,202],series:"R"},{id:"mard_291_R17",code:"R17",name:"\u6DF1\u7EFF",hex_value:"#4A867A",hex:"#4A867A",rgb:[74,134,122],series:"R"},{id:"mard_291_R18",code:"R18",name:"\u6D45\u7EFF\u8272",hex_value:"#7FCD9D",hex:"#7FCD9D",rgb:[127,205,157],series:"R"},{id:"mard_291_R19",code:"R19",name:"\u9EC4\u7EFF\u8272",hex_value:"#CDE55D",hex:"#CDE55D",rgb:[205,229,93],series:"R"},{id:"mard_291_R20",code:"R20",name:"\u6D45\u674F\u8272",hex_value:"#E8C7B4",hex:"#E8C7B4",rgb:[232,199,180],series:"R"},{id:"mard_291_R21",code:"R21",name:"\u68D5\u8272",hex_value:"#AD6F3C",hex:"#AD6F3C",rgb:[173,111,60],series:"R"},{id:"mard_291_R22",code:"R22",name:"\u6DF1\u68D5\u8272",hex_value:"#6C372F",hex:"#6C372F",rgb:[108,55,47],series:"R"},{id:"mard_291_R23",code:"R23",name:"\u6D45\u6A59\u8272",hex_value:"#FEB872",hex:"#FEB872",rgb:[254,184,114],series:"R"},{id:"mard_291_R24",code:"R24",name:"\u6D45\u73AB\u7470",hex_value:"#F3C1C0",hex:"#F3C1C0",rgb:[243,193,192],series:"R"},{id:"mard_291_R25",code:"R25",name:"\u6D45\u73CA\u745A",hex_value:"#C9675E",hex:"#C9675E",rgb:[201,103,94],series:"R"},{id:"mard_291_R26",code:"R26",name:"\u6D45\u7D2B\u8272",hex_value:"#D293BE",hex:"#D293BE",rgb:[210,147,190],series:"R"},{id:"mard_291_R27",code:"R27",name:"\u6D45\u7C89\u7EA2",hex_value:"#EA8CB1",hex:"#EA8CB1",rgb:[234,140,177],series:"R"},{id:"mard_291_R28",code:"R28",name:"\u6D45\u84DD\u7D2B",hex_value:"#9C87D6",hex:"#9C87D6",rgb:[156,135,214],series:"R"},{id:"mard_291_T1",code:"T1",name:"\u900F\u660E\u767D",hex_value:"#FFFFFF",hex:"#FFFFFF",rgb:[255,255,255],series:"T"},{id:"mard_291_Y1",code:"Y1",name:"\u591C\u5149\u7C89",hex_value:"#FD6FB4",hex:"#FD6FB4",rgb:[253,111,180],series:"Y"},{id:"mard_291_Y2",code:"Y2",name:"\u591C\u5149\u6A59",hex_value:"#FEB481",hex:"#FEB481",rgb:[254,180,129],series:"Y"},{id:"mard_291_Y3",code:"Y3",name:"\u591C\u5149\u7EFF",hex_value:"#D7FAA0",hex:"#D7FAA0",rgb:[215,250,160],series:"Y"},{id:"mard_291_Y4",code:"Y4",name:"\u591C\u5149\u84DD",hex_value:"#8BDBFA",hex:"#8BDBFA",rgb:[139,219,250],series:"Y"},{id:"mard_291_Y5",code:"Y5",name:"\u591C\u5149\u7D2B",hex_value:"#E987EA",hex:"#E987EA",rgb:[233,135,234],series:"Y"},{id:"mard_291_ZG1",code:"ZG1",name:"\u73E0\u5149\u7C89\u7070",hex_value:"#DAABB3",hex:"#DAABB3",rgb:[218,171,179],series:"ZG"},{id:"mard_291_ZG2",code:"ZG2",name:"\u73E0\u5149\u9A7C\u8272",hex_value:"#D6AA87",hex:"#D6AA87",rgb:[214,170,135],series:"ZG"},{id:"mard_291_ZG3",code:"ZG3",name:"\u73E0\u5149\u6A44\u6984",hex_value:"#C1BD8D",hex:"#C1BD8D",rgb:[193,189,141],series:"ZG"},{id:"mard_291_ZG4",code:"ZG4",name:"\u73E0\u5149\u7070\u7D2B",hex_value:"#96869F",hex:"#96869F",rgb:[150,134,159],series:"ZG"},{id:"mard_291_ZG5",code:"ZG5",name:"\u73E0\u5149\u84DD\u7070",hex_value:"#8490A6",hex:"#8490A6",rgb:[132,144,166],series:"ZG"},{id:"mard_291_ZG6",code:"ZG6",name:"\u73E0\u5149\u6D45\u84DD",hex_value:"#94BFE2",hex:"#94BFE2",rgb:[148,191,226],series:"ZG"},{id:"mard_291_ZG7",code:"ZG7",name:"\u73E0\u5149\u7C89\u7D2B",hex_value:"#E2A9D2",hex:"#E2A9D2",rgb:[226,169,210],series:"ZG"},{id:"mard_291_ZG8",code:"ZG8",name:"\u73E0\u5149\u7D2B\u7070",hex_value:"#AB91C0",hex:"#AB91C0",rgb:[171,145,192],series:"ZG"}]};var $n=new Map(rn.colors.map(t=>[t.id,t]));function an(t){return $n.get(t)}P(an,"mard291Fallback");function ze(t){return t<=.04045?t/12.92:((t+.055)/1.055)**2.4}P(ze,"srgbToLinear");function In(t,e,n){return[t*.4124564+e*.3575761+n*.1804375,t*.2126729+e*.7151522+n*.072175,t*.0193339+e*.119192+n*.9503041]}P(In,"linearToXyz");function Oe(t){let e=.20689655172413793;return t>e**3?t**(1/3):t/(3*e*e)+4/29}P(Oe,"f");function V(t,e,n){let s=ze(t/255),o=ze(e/255),c=ze(n/255),[a,m,d]=In(s,o,c),r=Oe(a/.95047),l=Oe(m/1),p=Oe(d/1.08883),i=116*l-16,f=500*(r-l),F=200*(l-p);return[i,f,F]}P(V,"rgbToLab");function te(t,e){let[n,s,o]=t,[c,a,m]=e,d=1,r=1,l=1,p=Math.sqrt(s**2+o**2),i=Math.sqrt(a**2+m**2),F=((p+i)/2)**7,C=.5*(1-Math.sqrt(F/(F+25**7))),u=s*(1+C),_=a*(1+C),D=Math.sqrt(u**2+o**2),b=Math.sqrt(_**2+m**2),h=Math.atan2(o,u)*180/Math.PI%360;h<0&&(h+=360);let g=Math.atan2(m,_)*180/Math.PI%360;g<0&&(g+=360);let E=c-n,A=b-D,x;D*b===0?x=0:Math.abs(g-h)<=180?x=g-h:g-h>180?x=g-h-360:x=g-h+360;let v=2*Math.sqrt(D*b)*Math.sin(x/2*Math.PI/180),y=(n+c)/2,L=(D+b)/2,T;D*b===0?T=h+g:Math.abs(h-g)<=180?T=(h+g)/2:h+g<360?T=(h+g+360)/2:T=(h+g-360)/2;let k=Math.PI/180,B=1-.17*Math.cos((T-30)*k)+.24*Math.cos(2*T*k)+.32*Math.cos((3*T+6)*k)-.2*Math.cos((4*T-63)*k),M=1+.015*(y-50)**2/Math.sqrt(20+(y-50)**2),w=1+.045*L,S=1+.015*L*B,G=L**7,O=2*Math.sqrt(G/(G+25**7)),K=30*Math.exp(-(((T-275)/25)**2)),$=-Math.sin(2*K*k)*O;return Math.sqrt((E/(d*M))**2+(A/(r*w))**2+(v/(l*S))**2+$*(A/(r*w))*(v/(l*S)))}P(te,"ciede2000");function sn(t,e,n,s="smooth"){let o=document.createElement("canvas");o.width=e,o.height=n;let c=o.getContext("2d");return s==="nearest"?c.imageSmoothingEnabled=!1:(c.imageSmoothingEnabled=!0,c.imageSmoothingQuality="high"),c.drawImage(t,0,0,e,n),o}P(sn,"resizeCanvas");function cn(t){let s=t.getContext("2d").getImageData(0,0,t.width,t.height).data,o=t.width,c=t.height,a=o*c,m=new Uint8ClampedArray(a*3),d=new Uint8ClampedArray(a);for(let r=0;r<a;r++)m[r*3]=s[r*4],m[r*3+1]=s[r*4+1],m[r*3+2]=s[r*4+2],d[r]=s[r*4+3];return{pixels:m,alpha:d,width:o,height:c}}P(cn,"getPixelsFromCanvas");function kn(t){let e=t*2+1,n=t/2,s=new Array(e),o=0;for(let c=0;c<e;c++){let a=c-t;s[c]=Math.exp(-(a*a)/(2*n*n)),o+=s[c]}for(let c=0;c<e;c++)s[c]/=o;return s}P(kn,"generateGaussianKernel");function We(t,e,n,s=1,o=40){if(s<=0)return;let c=e*n,a=kn(s),m=a.length,d=s,r=new Uint8ClampedArray(c*3);for(let l=0;l<n;l++)for(let p=0;p<e;p++){let f=(l*e+p)*3,F=t[f],C=t[f+1],u=t[f+2];if(p<d||p>=e-d||F<o&&C<o&&u<o){r[f]=F,r[f+1]=C,r[f+2]=u;continue}let _=0,D=0,b=0;for(let h=0;h<m;h++){let g=Math.min(Math.max(0,p+h-d),e-1),E=(l*e+g)*3,A=t[E],x=t[E+1],v=t[E+2];A<o&&x<o&&v<o?(_+=F*a[h],D+=C*a[h],b+=u*a[h]):(_+=A*a[h],D+=x*a[h],b+=v*a[h])}r[f]=Math.round(_),r[f+1]=Math.round(D),r[f+2]=Math.round(b)}for(let l=0;l<n;l++)for(let p=0;p<e;p++){let f=(l*e+p)*3,F=r[f],C=r[f+1],u=r[f+2];if(l<d||l>=n-d||F<o&&C<o&&u<o){t[f]=F,t[f+1]=C,t[f+2]=u;continue}let _=0,D=0,b=0;for(let h=0;h<m;h++){let E=(Math.min(Math.max(0,l+h-d),n-1)*e+p)*3,A=r[E],x=r[E+1],v=r[E+2];A<o&&x<o&&v<o?(_+=F*a[h],D+=C*a[h],b+=u*a[h]):(_+=A*a[h],D+=x*a[h],b+=v*a[h])}t[f]=Math.round(_),t[f+1]=Math.round(D),t[f+2]=Math.round(b)}}P(We,"gaussianBlur");function Ke(t,e,n,s=1,o=40){let c=e*n,a=new Uint8ClampedArray(c*3),m=s*2+1,d=m*m;for(let r=0;r<n;r++)for(let l=0;l<e;l++){let i=(r*e+l)*3;if(l<s||l>=e-s||r<s||r>=n-s){a[i]=t[i],a[i+1]=t[i+1],a[i+2]=t[i+2];continue}let f=t[i],F=t[i+1],C=t[i+2];if(f<o&&F<o&&C<o){a[i]=f,a[i+1]=F,a[i+2]=C;continue}let u=[],_=[],D=[];for(let h=-s;h<=s;h++)for(let g=-s;g<=s;g++){let E=((r+h)*e+(l+g))*3;u.push(t[E]),_.push(t[E+1]),D.push(t[E+2])}u.sort((h,g)=>h-g),_.sort((h,g)=>h-g),D.sort((h,g)=>h-g);let b=Math.floor(d/2);a[i]=u[b],a[i+1]=_[b],a[i+2]=D[b]}t.set(a)}P(Ke,"medianFilter");function ln(t,e,n,s=80){let o=e*n,c=new Uint8Array(o),a=new Float32Array(o);for(let d=0;d<o;d++){let r=d*3;a[d]=.299*t[r]+.587*t[r+1]+.114*t[r+2]}for(let d=1;d<n-1;d++)for(let r=1;r<e-1;r++){let l=-a[(d-1)*e+(r-1)]+a[(d-1)*e+(r+1)]+-2*a[d*e+(r-1)]+2*a[d*e+(r+1)]+-a[(d+1)*e+(r-1)]+a[(d+1)*e+(r+1)],p=-a[(d-1)*e+(r-1)]-2*a[(d-1)*e+r]-a[(d-1)*e+(r+1)]+a[(d+1)*e+(r-1)]+2*a[(d+1)*e+r]+a[(d+1)*e+(r+1)];Math.sqrt(l*l+p*p)>s&&(c[d*e+r]=1)}let m=P((d,r,l)=>{Math.max(Math.abs(a[d]-a[r]),Math.abs(a[d]-a[l]))>s*.8&&(c[d]=1)},"checkBoundary");for(let d=0;d<e;d++)n>1&&(m(d,d+e,d+(e>1?1:0)),m((n-1)*e+d,(n-2)*e+d,(n-1)*e+Math.min(d+1,e-1)));for(let d=0;d<n;d++)e>1&&(m(d*e,d*e+1,(d+(n>1?1:0))*e),m(d*e+e-1,d*e+e-2,Math.min(d+1,n-1)*e+e-1));return c}P(ln,"sobelEdgeDetect");function dn(t,e,n,s=230){let o=e*n,c=new Uint8Array(o),a=new Int32Array(o),m=0,d=0,r=P(i=>{let f=i*3;return t[f]>s&&t[f+1]>s&&t[f+2]>s},"isWhite"),l=P(i=>{c[i]||(c[i]=1,a[d++]=i)},"enqueue");for(let i=0;i<e;i++){let f=i,F=(n-1)*e+i;r(f)&&l(f),r(F)&&l(F)}for(let i=0;i<n;i++){let f=i*e,F=i*e+e-1;r(f)&&l(f),r(F)&&l(F)}let p=0;for(;m<d;){let i=a[m++],f=i*3;t[f]=255,t[f+1]=255,t[f+2]=255,p++;let F=i%e,C=Math.floor(i/e);if(C>0){let u=i-e;r(u)&&l(u)}if(C<n-1){let u=i+e;r(u)&&l(u)}if(F>0){let u=i-1;r(u)&&l(u)}if(F<e-1){let u=i+1;r(u)&&l(u)}}p>0}P(dn,"preprocessWhiteBackground");var ge=class{static{P(this,"ResizeStage")}id="resize";name="\u7F29\u653E + \u8F6E\u5ED3\u6062\u590D";execute(e){let{sourceCanvas:n,targetWidth:s,config:o}=e,c=o.resizeMode,a=o.darkPixelThreshold??o.outlineDarkRgbThreshold??40,m=o.outlineSampleSize??2,d=n.height/n.width,r=Math.max(1,Math.round(s*d)),l=sn(n,s,r,c),p=cn(l);if(e.width=s,e.height=r,e.pixels=p.pixels,e.alpha=p.alpha,c==="smooth"||s<100){let F=n.getContext("2d",{willReadFrequently:!0}).getImageData(0,0,n.width,n.height).data,C=n.width,u=n.height,_=C/s,D=u/r;for(let b=0;b<r;b++)for(let h=0;h<s;h++){let g=Math.min(Math.floor(h*_),C-1),E=Math.min(Math.floor(b*D),u-1),A=!1;for(let x=0;x<m&&!A;x++)for(let v=0;v<m&&!A;v++){let y=Math.min(g+v,C-1),T=(Math.min(E+x,u-1)*C+y)*4,k=F[T],B=F[T+1],M=F[T+2];if(k<a&&B<a&&M<a){let w=(b*s+h)*3;e.pixels[w]=k,e.pixels[w+1]=B,e.pixels[w+2]=M,A=!0}}}}}};var Ee=class{static{P(this,"SmoothingStage")}id="smoothing";name="\u964D\u566A + \u767D\u80CC\u666F\u7EDF\u4E00";execute(e){let{pixels:n,width:s,height:o,config:c}=e,a=c.smoothingMode,m=c.gaussianBlurRadius,d=c.medianFilterRadius,r=c.whiteBgThreshold??230,l=c.darkProtectionMode??"absolute",p=c.darkProtectionPercentile??10,i;if(l==="percentile"){let C=s*o,u=new Float32Array(C);for(let D=0;D<C;D++){let b=D*3;u[D]=.299*n[b]+.587*n[b+1]+.114*n[b+2]}u.sort();let _=Math.min(Math.floor(C*p/100),C-1);i=Math.round(u[_])}else i=-1;let f=i>=0?i:c.gaussianBlurDarkThreshold,F=i>=0?i:c.medianFilterDarkThreshold;a==="gaussian"?We(n,s,o,m,f):a==="median"?Ke(n,s,o,d,F):a==="gaussian_median"&&(We(n,s,o,m,f),Ke(n,s,o,d,F)),dn(n,s,o,r)}};function Hn(t){let e=new Array(256).fill(0);for(let d=0;d<t.length;d++)e[t[d]]++;let n=t.length,s=0;for(let d=0;d<256;d++)s+=d*e[d];let o=0,c=0,a=0,m=0;for(let d=0;d<256;d++){if(c+=e[d],c===0)continue;let r=n-c;if(r===0)break;o+=d*e[d];let l=o/c,p=(s-o)/r,i=c*r*(l-p)**2;i>a&&(a=i,m=d)}return m}P(Hn,"otsuThreshold");function Gn(t,e,n){let s=e*n,o=new Float32Array(s);for(let a=0;a<s;a++){let m=a*3;o[a]=.299*t[m]+.587*t[m+1]+.114*t[m+2]}let c=new Uint8Array(s);for(let a=1;a<n-1;a++)for(let m=1;m<e-1;m++){let d=-o[(a-1)*e+(m-1)]+o[(a-1)*e+(m+1)]+-2*o[a*e+(m-1)]+2*o[a*e+(m+1)]+-o[(a+1)*e+(m-1)]+o[(a+1)*e+(m+1)],r=-o[(a-1)*e+(m-1)]-2*o[(a-1)*e+m]-o[(a-1)*e+(m+1)]+o[(a+1)*e+(m-1)]+2*o[(a+1)*e+m]+o[(a+1)*e+(m+1)];c[a*e+m]=Math.min(255,Math.round(Math.sqrt(d*d+r*r)))}return c}P(Gn,"computeSobelGradients");var ye=class{static{P(this,"EdgeDetectStage")}id="edgeDetect";name="Sobel \u8FB9\u7F18\u68C0\u6D4B";execute(e){let{pixels:n,width:s,height:o,config:c}=e,a=c.edgeDetectionEnabled,m=c.sobelAutoThreshold??!0;if(a){let d;if(m){let r=Gn(n,s,o);d=Hn(r)}else d=c.sobelThreshold;e.edgeMap=ln(n,s,o,d)}else e.edgeMap=null}};function Tn(t,e,n){let s=e*n,o=new Float32Array(s),c=new Float32Array(s);for(let a=0;a<s;a++){let m=a*3;c[a]=.299*t[m]+.587*t[m+1]+.114*t[m+2]}for(let a=0;a<n;a++)for(let m=0;m<e;m++){let d=a*e+m,r=c[d],l=0,p=0;if(m>0&&(l+=Math.abs(r-c[d-1]),p++),m<e-1&&(l+=Math.abs(r-c[d+1]),p++),a>0&&(l+=Math.abs(r-c[d-e]),p++),a<n-1&&(l+=Math.abs(r-c[d+e]),p++),p===0){o[d]=0;continue}let i=l/p;i>=2&&i<=40?o[d]=Math.exp(-((i-10)**2)/128):o[d]=0}return o}P(Tn,"computeGradientMap");var ve=class{static{P(this,"QuantizeStage")}id="quantize";name="\u6296\u52A8\u91CF\u5316 + \u6784\u5EFA\u7F51\u683C";execute(e){let{pixels:n,alpha:s,width:o,height:c,paletteColors:a,paletteLab:m,edgeMap:d,config:r}=e,l=r.ditherAlgorithm,p=r.ditherStrength,i=r.bayerMatrixSize,f=r.bayerScale,F=r.blendColor??.6,C=r.blendLuma??.4,u=r.solidRegionProtection??!0,_=r.solidRegionVarianceThreshold??600,D=r.solidRegionPerceptualThreshold??35,b=r.labDiffusion??!0,h=r.ditherGradientProtection??0,g;h>0&&l!=="none"&&(g=Tn(n,o,c));let E=b&&(l==="floyd_steinberg"||l==="atkinson"),A;if(E){let B=o*c;A=new Float32Array(B*3);for(let M=0;M<B;M++){let w=M*3,S=V(n[w],n[w+1],n[w+2]);A[w]=S[0],A[w+1]=S[1],A[w+2]=S[2]}e.sourceLabBuffer=A}let x;if(u&&l!=="none"){let B=o*c;x=new Uint8Array(B);for(let M=0;M<B;M++)x[M]=ue(n,M,o,c,3,_)?1:0}let v;l==="atkinson"?v=hn(n,o,c,a,s,p,d??void 0,F,C,h,g,u,_,b,m,x,A):l==="bayer"?v=fn(n,o,c,a,s,p,i,f,d??void 0,h,g,m):l==="none"?v=_n(n,o,c,a,s,d??void 0,u,_,m,x):v=un(n,o,c,a,s,p,d??void 0,F,C,h,g,u,_,b,m,x,A),u&&bn(v,n,o,c,s,a,_,D,x,m);let y=r.colorRefinementEnabled??!1,L=r.luminanceCorrectionMode??"l";if(y||L==="lab"){let B=r.colorRefinementTopK??3,M=new Int32Array(o*c*B);if(!A){let w=o*c;A=new Float32Array(w*3);for(let S=0;S<w;S++){let G=S*3,O=V(n[G],n[G+1],n[G+2]);A[G]=O[0],A[G+1]=O[1],A[G+2]=O[2]}e.sourceLabBuffer=A}for(let w=0;w<o*c;w++){let S=w*3,G=n[S],O=n[S+1],K=n[S+2],$=[A[S],A[S+1],A[S+2]],U=mn(G,O,K,a,m,B,$),I=w*B;for(let R=0;R<B;R++)M[I+R]=R<U.length?U[R]:-1}e.topKLabels=M}let k=[];for(let B=0;B<c;B++){let M=[];for(let w=0;w<o;w++){let S=B*o+w,G=v[S];if(G===-1)M.push({color_id:"",color_code:"",color_hex:""});else{let O=a[G];M.push({color_id:O.id,color_code:O.code,color_hex:O.hex_value})}}k.push(M)}e.labels=v,e.grid=k}};function Un(t){return[parseInt(t.slice(1,3),16),parseInt(t.slice(3,5),16),parseInt(t.slice(5,7),16)]}P(Un,"hexToRgb");var Be=class{static{P(this,"ColorRefinementStage")}id="color_refinement";name="\u9010\u683C\u8272\u5F69\u7CBE\u4FEE";execute(e){if(!(e.config.colorRefinementEnabled??!1))return;let{grid:s,width:o,height:c,pixels:a,paletteColors:m,paletteLab:d,topKLabels:r}=e,l=s.length,p=l>0?s[0].length:0;if(p===0||l===0)return;let i=e.config.colorRefinementTopK??3,f=e.config.colorRefinementProtectDark??!0,F=30,C=o/p,u=c/l,_=new Map;for(let b=0;b<m.length;b++)_.set(m[b].hex_value,b);let D=0;for(let b=0;b<l;b++)for(let h=0;h<p;h++){let g=s[b]?.[h];if(!g?.color_hex)continue;if(f){let U=Un(g.color_hex);if(V(U[0],U[1],U[2])[0]<F)continue}let E=_.get(g.color_hex)??-1;if(E<0)continue;let A=Math.floor(h*C),x=Math.floor(b*u),v=Math.min(o,Math.ceil((h+1)*C)),y=Math.min(c,Math.ceil((b+1)*u)),L=0,T=0,k=0,B=0,M=e.sourceLabBuffer;for(let U=x;U<y;U++)for(let I=A;I<v;I++){let R=(U*o+I)*3;if(M)L+=M[R],T+=M[R+1],k+=M[R+2];else{let J=V(a[R],a[R+1],a[R+2]);L+=J[0],T+=J[1],k+=J[2]}B++}if(B===0)continue;let w=[L/B,T/B,k/B],S=d[E],G=te(w,S);if(G<.5)continue;let O=[];if(r&&r.length>=(b*p+h+1)*i){let U=(b*p+h)*i;for(let I=0;I<i;I++){let R=r[U+I];R>=0&&R!==E&&O.push(R)}}else{let U=[];for(let I=0;I<m.length;I++)I!==E&&U.push([I,te(w,d[I])]);U.sort((I,R)=>I[1]-R[1]),O=U.slice(0,i).map(I=>I[0])}let K=-1,$=G;for(let U of O){if(U===E)continue;let I=te(w,d[U]);I<$&&($=I,K=U)}if(K>=0){let U=m[K];s[b][h]={color_id:U.id,color_code:U.code,color_hex:U.hex_value},D++}}D>0}};function xn(t){return[parseInt(t.slice(1,3),16),parseInt(t.slice(3,5),16),parseInt(t.slice(5,7),16)]}P(xn,"hexToRgb");var Me=class{static{P(this,"LuminanceCorrectionStage")}id="luminanceCorrection";name="\u5757\u7EA7\u4EAE\u5EA6\u6821\u6B63";execute(e){if(!(e.config.luminanceCorrectionEnabled??!1))return;(e.config.luminanceCorrectionMode??"l")==="lab"?this.executeLabMode(e):this.executeLMode(e)}executeLMode(e){let{grid:n,width:s,height:o,pixels:c,paletteColors:a,paletteLab:m}=e,d=n.length,r=d>0?n[0].length:0;if(r===0||d===0)return;let l=e.config.luminanceCorrectionThreshold??5,p=e.config.luminanceCorrectionMaxSwaps??2,i=s/r,f=o/d,F=new Float32Array(s*o);if(e.sourceLabBuffer)for(let g=0;g<s*o;g++)F[g]=e.sourceLabBuffer[g*3];else for(let g=0;g<s*o;g++){let E=g*3,A=V(c[E],c[E+1],c[E+2]);F[g]=A[0]}let C=m.length>0?m:a.map(g=>V(g.rgb[0],g.rgb[1],g.rgb[2])),u=4,_=4,D=Math.floor(d/u),b=Math.floor(r/_);if(D===0||b===0)return;let h=0;for(let g=0;g<D;g++)for(let E=0;E<b;E++){let A=Math.floor(E*_*i),x=Math.floor(g*u*f),v=Math.min(s,Math.ceil((E+1)*_*i)),y=Math.min(o,Math.ceil((g+1)*u*f)),L=0,T=0;for(let I=x;I<y;I++)for(let R=A;R<v;R++)L+=F[I*s+R],T++;let k=T>0?L/T:50,B=0,M=0;for(let I=0;I<u;I++)for(let R=0;R<_;R++){let J=g*u+I,ne=E*_+R,j=n[J]?.[ne];if(j?.color_hex){let q=xn(j.color_hex),Y=V(q[0],q[1],q[2]);B+=Y[0],M++}}let S=(M>0?B/M:50)-k;if(Math.abs(S)<=l)continue;let G=S>0,O=[];for(let I=0;I<u;I++)for(let R=0;R<_;R++){let J=g*u+I,ne=E*_+R,j=n[J]?.[ne];if(!j?.color_hex)continue;let q=xn(j.color_hex),Y=V(q[0],q[1],q[2]),Q=-1;for(let z=0;z<a.length;z++)if(a[z].hex_value===j.color_hex){Q=z;break}if(Q<0)continue;let X=-1,ee=1/0;for(let z=0;z<a.length;z++){if(z===Q)continue;let W=C[z],Z=te(Y,W);if(Z>ee)continue;let H=W[0];G&&H>=Y[0]||!G&&H<=Y[0]||(ee=Z,X=z)}if(X>=0){let z=C[X][0];O.push({r:J,c:ne,currentIdx:Q,altIdx:X,deToCurrent:ee,lumaCorrection:z-Y[0]})}}O.sort((I,R)=>I.deToCurrent-R.deToCurrent);let K=0,$=B,U=M;for(let I of O){if(K>=p)break;let R=C[I.currentIdx][0],ne=C[I.altIdx][0]-R,j=a[I.altIdx];n[I.r][I.c]={color_id:j.id,color_code:j.code,color_hex:j.hex_value},$+=ne,K++,h++;let q=$/U;if(Math.abs(q-k)<=l)break}}h>0}executeLabMode(e){let{grid:n,width:s,height:o,pixels:c,paletteColors:a,paletteLab:m,topKLabels:d}=e,r=n.length,l=r>0?n[0].length:0;if(l===0||r===0)return;let p=e.config.luminanceCorrectionThreshold??3,i=e.config.luminanceCorrectionMaxSwaps??4,f=e.config.luminanceCorrectionBlockSize??4,F=e.config.colorRefinementTopK??3,C=e.config.luminanceCorrectionMaxSwapDE??8,u=s/l,_=o/r,D=new Map;for(let x=0;x<a.length;x++)D.set(a[x].hex_value,x);let b=f,h=f,g=Math.floor(r/b),E=Math.floor(l/h);if(g===0||E===0)return;let A=0;for(let x=0;x<g;x++)for(let v=0;v<E;v++){let y=Math.floor(v*h*u),L=Math.floor(x*b*_),T=Math.min(s,Math.ceil((v+1)*h*u)),k=Math.min(o,Math.ceil((x+1)*b*_)),B=0,M=0,w=0,S=0,G=e.sourceLabBuffer;for(let j=L;j<k;j++)for(let q=y;q<T;q++){let Y=(j*s+q)*3;if(G)B+=G[Y],M+=G[Y+1],w+=G[Y+2];else{let Q=V(c[Y],c[Y+1],c[Y+2]);B+=Q[0],M+=Q[1],w+=Q[2]}S++}if(S===0)continue;let O=[B/S,M/S,w/S],K=[],$=0,U=0,I=0,R=0;for(let j=0;j<b;j++)for(let q=0;q<h;q++){let Y=x*b+j,Q=v*h+q,X=n[Y]?.[Q];if(!X?.color_hex)continue;let ee=D.get(X.color_hex)??-1;if(ee<0)continue;let z=m[ee];K.push({r:Y,c:Q,idx:ee,lab:z}),$+=z[0],U+=z[1],I+=z[2],R++}if(R===0)continue;let J=[$/R,U/R,I/R],ne=te(O,J);if(!(ne<=p))for(let j=0;j<i;j++){let q=-1,Y=-1,Q=-1,X=ne;for(let z of K){let W=[];if(d&&d.length>=(z.r*l+z.c+1)*F){let Z=(z.r*l+z.c)*F;for(let H=0;H<F;H++){let N=d[Z+H];N>=0&&N!==z.idx&&W.push(N)}}else{let Z=z.lab,H=[];for(let N=0;N<a.length;N++)N!==z.idx&&H.push([N,te(Z,m[N])]);H.sort((N,oe)=>N[1]-oe[1]),W=H.slice(0,3).map(N=>N[0])}for(let Z of W){if(Z===z.idx)continue;let H=m[Z];if(te(z.lab,H)>C)continue;let oe=$-z.lab[0]+H[0],re=U-z.lab[1]+H[1],ae=I-z.lab[2]+H[2],le=[oe/R,re/R,ae/R],ie=te(O,le);ie<X&&(X=ie,q=z.r,Y=z.c,Q=Z)}}if(Q<0||X>=ne)break;let ee=a[Q];n[q][Y]={color_id:ee.id,color_code:ee.code,color_hex:ee.hex_value};for(let z of K)if(z.r===q&&z.c===Y){$+=m[Q][0]-z.lab[0],U+=m[Q][1]-z.lab[1],I+=m[Q][2]-z.lab[2],z.idx=Q,z.lab=m[Q];break}if(J=[$/R,U/R,I/R],ne=X,A++,ne<=p)break}}A>0}};var Pe=class{static{P(this,"DarkOutlineFixStage")}id="darkOutlineFix";name="\u6DF1\u8272\u8F6E\u5ED3\u4FDD\u62A4\u7EA0\u6B63";execute(e){let{pixels:n,labels:s,grid:o,width:c,height:a,paletteColors:m,paletteLab:d,config:r}=e,l=r.darkFixLabLThreshold??30,p=r.darkPixelThreshold??r.darkFixRgbThreshold??40,i=[];for(let f=0;f<m.length;f++)d[f][0]<l&&i.push(f);if(i.length>0){let f=i.map(F=>d[F]);for(let F=0;F<a;F++)for(let C=0;C<c;C++){let u=F*c+C,_=s[u];if(_===-1)continue;let D=n[u*3],b=n[u*3+1],h=n[u*3+2];if(D>=p||b>=p||h>=p||d[_][0]<l)continue;let g=V(D,b,h),E=1/0,A=i[0];for(let v=0;v<f.length;v++){let y=te(g,f[v]);y<E&&(E=y,A=i[v])}s[u]=A;let x=m[A];o[F][C]={color_id:x.id,color_code:x.code,color_hex:x.hex_value}}}}};var we=class{static{P(this,"IslandCleanupStage")}id="islandCleanup";name="\u96F6\u6563\u8272\u8C46\u6E05\u7406";execute(e){let{grid:n,paletteColors:s,config:o}=e,c=o.islandMinSize??3,a=o.islandDarkLThreshold??30,m=o.islandDarkProtect??!0,d=pe(n);gn(n,s,c,a,m);let r=pe(n)}};var Re=class{static{P(this,"MajorityVoteStage")}id="majorityVote";name="\u591A\u6570\u6295\u7968\u540E\u5904\u7406";execute(e){let{grid:n,paletteColors:s,paletteLab:o,config:c}=e,a=c.majorityVoteThreshold??2,m=c.majorityDarkProtect??!0,d=c.darkFixLabLThreshold??30,r=n[0].length,l=n.length,p=[];for(let _=0;_<s.length;_++)o[_][0]<d&&p.push(_);let i=new Set(p.map(_=>s[_].id)),f=new Map(s.map(_=>[_.id,_])),F=[[0,1],[0,-1],[1,0],[-1,0]],C=0,u=n.map(_=>_.map(D=>({...D})));for(let _=0;_<l;_++)for(let D=0;D<r;D++){let b=n[_][D];if(!b.color_id||m&&i.has(b.color_id))continue;let h=new Map;h.set(b.color_id,1);for(let[E,A]of F){let x=D+E,v=_+A;if(x>=0&&x<r&&v>=0&&v<l){let y=n[v][x];y.color_id&&!i.has(y.color_id)&&h.set(y.color_id,(h.get(y.color_id)||0)+1)}}if((h.get(b.color_id)||0)<a){let E=b.color_id,A=0;for(let[x,v]of h)x!==b.color_id&&v>A&&(A=v,E=x);if(E!==b.color_id){let x=f.get(E);x&&(u[_][D]={color_id:E,color_code:x.code,color_hex:x.hex_value},C++)}}}for(let _=0;_<l;_++)for(let D=0;D<r;D++)n[_][D]=u[_][D];if(C>0){let _=pe(n)}}};var Ce=class{static{P(this,"PreprocessStage")}id="preprocess";name="\u56FE\u50CF\u9884\u5904\u7406";execute(e){let n=e.config.preprocessBrightness??0,s=e.config.preprocessContrast??0,o=e.config.preprocessSaturation??0,c=e.config.preprocessSharpen??0;if(n===0&&s===0&&o===0&&c===0)return;let{sourceCanvas:a}=e,m=a.width,d=a.height,r=document.createElement("canvas");r.width=m,r.height=d;let l=r.getContext("2d");l.drawImage(a,0,0);let p=l.getImageData(0,0,m,d),i=p.data;for(let f=0;f<i.length;f+=4){let F=i[f],C=i[f+1],u=i[f+2];if(n!==0){let _=n*2.55;F=Math.max(0,Math.min(255,F+_)),C=Math.max(0,Math.min(255,C+_)),u=Math.max(0,Math.min(255,u+_))}if(s!==0){let _=259*(s+255)/(255*(259-s));F=Math.max(0,Math.min(255,_*(F-128)+128)),C=Math.max(0,Math.min(255,_*(C-128)+128)),u=Math.max(0,Math.min(255,_*(u-128)+128))}if(o!==0){let _=.299*F+.587*C+.114*u,D=1+o/100;F=Math.max(0,Math.min(255,_+D*(F-_))),C=Math.max(0,Math.min(255,_+D*(C-_))),u=Math.max(0,Math.min(255,_+D*(u-_)))}i[f]=F,i[f+1]=C,i[f+2]=u}if(c>0){l.putImageData(p,0,0);let f=new Uint8ClampedArray(i),F=c/100;for(let C=1;C<d-1;C++)for(let u=1;u<m-1;u++){let _=(C*m+u)*4;for(let D=0;D<3;D++){let b=f[_+D]*5,h=f[((C-1)*m+u)*4+D]+f[((C+1)*m+u)*4+D]+f[(C*m+u-1)*4+D]+f[(C*m+u+1)*4+D],g=b-h;i[_+D]=Math.max(0,Math.min(255,f[_+D]+F*(g-f[_+D])))}}}l.putImageData(p,0,0),e.sourceCanvas=r}};var Se=class{static{P(this,"MorphSmoothStage")}id="morph_smooth";name="\u5F62\u6001\u5B66\u5E73\u6ED1";execute(e){let n=e.config.morphSmoothEnabled??!1,s=e.config.morphSmoothIterations??1;if(!n||!e.grid||e.grid.length===0)return;let{grid:o}=e,c=o.length,a=o[0].length;for(let m=0;m<s;m++){let d=o.map(r=>r.map(l=>({...l})));for(let r=1;r<c-1;r++)for(let l=1;l<a-1;l++){let p=d[r][l];if(!p.color_id)continue;let i=new Map;for(let C=-1;C<=1;C++)for(let u=-1;u<=1;u++){let _=d[r+C][l+u];if(!_.color_id)continue;let D=_.color_id,b=i.get(D);b?b.count++:i.set(D,{count:1,cell:_})}let f=0,F=p;for(let[,C]of i)C.count>f&&(f=C.count,F=C.cell);f>4&&F.color_id!==p.color_id&&(o[r][l]={...F})}}}};var Le=class{static{P(this,"SimilarMergeStage")}id="similar_merge";name="\u76F8\u4F3C\u8272\u5757\u5408\u5E76";execute(e){let n=e.config.similarMergeEnabled??!1,s=e.config.similarMergeDeltaE??5;if(!n||!e.grid||e.grid.length===0)return;let{grid:o,paletteColors:c}=e,a=o.length,m=o[0].length,d=new Map;for(let l of c){let p=parseInt(l.hex_value.slice(1,3),16),i=parseInt(l.hex_value.slice(3,5),16),f=parseInt(l.hex_value.slice(5,7),16);d.set(l.id,V(p,i,f))}let r=new Uint8Array(m*a);for(let l=0;l<a;l++)for(let p=0;p<m;p++){if(r[l*m+p])continue;let i=o[l][p];if(!i.color_id){r[l*m+p]=1;continue}let f=d.get(i.color_id);if(!f){r[l*m+p]=1;continue}let F=[],C=[[p,l]];for(r[l*m+p]=1;C.length>0;){let[u,_]=C.shift();F.push([u,_]);let D=[[0,1],[0,-1],[1,0],[-1,0]];for(let[b,h]of D){let g=u+b,E=_+h;if(g<0||g>=m||E<0||E>=a||r[E*m+g])continue;let A=o[E][g];if(!A.color_id)continue;let x=d.get(A.color_id);if(!x)continue;te(f,x)<=s&&(r[E*m+g]=1,C.push([g,E]))}}if(F.length>1){let u=new Map;for(let[h,g]of F){let E=o[g][h].color_id;u.set(E,(u.get(E)||0)+1)}let _=i.color_id,D=0;for(let[h,g]of u)g>D&&(D=g,_=h);let b=c.find(h=>h.id===_);if(b)for(let[h,g]of F)o[g][h]={color_id:b.id,color_code:b.code,color_hex:b.hex_value}}}}};var $e=class{static{P(this,"HueConsistencyStage")}id="hue_consistency";name="\u8272\u76F8\u4E00\u81F4\u6027";execute(e){let n=e.config.hueConsistencyEnabled??!1,s=e.config.hueConsistencyMaxDiff??30;if(!n||!e.grid||e.grid.length===0)return;let{grid:o,paletteColors:c}=e,a=o.length,m=o[0].length,d=new Map;for(let r of c){let l=parseInt(r.hex_value.slice(1,3),16),p=parseInt(r.hex_value.slice(3,5),16),i=parseInt(r.hex_value.slice(5,7),16);d.set(r.id,this.rgbToHue(l,p,i))}for(let r=0;r<a;r++)for(let l=0;l<m;l++){let p=o[r][l];if(!p.color_id)continue;let i=d.get(p.color_id);if(i===void 0)continue;let f=new Map,F=[[0,1],[0,-1],[1,0],[-1,0]];for(let[u,_]of F){let D=l+u,b=r+_;if(D<0||D>=m||b<0||b>=a)continue;let h=o[b][D];h.color_id&&f.set(h.color_id,(f.get(h.color_id)||0)+1)}if((f.get(p.color_id)||0)===0&&f.size>0){let u="",_=0;for(let[b,h]of f)h>_&&(_=h,u=b);let D=d.get(u);if(D!==void 0){let b=Math.abs(i-D);if(Math.min(b,360-b)<=s){let g=c.find(E=>E.id===u);g&&(o[r][l]={color_id:g.id,color_code:g.code,color_hex:g.hex_value})}}}}}rgbToHue(e,n,s){e/=255,n/=255,s/=255;let o=Math.max(e,n,s),c=Math.min(e,n,s);if(o===c)return 0;let a=o-c,m=0;return o===e?m=((n-s)/a+(n<s?6:0))*60:o===n?m=((s-e)/a+2)*60:m=((e-n)/a+4)*60,m}};var Ie=class{static{P(this,"EdgeSmoothStage")}id="edge_smooth";name="\u8FB9\u7F18\u5E73\u6ED1";execute(e){let n=e.config.edgeSmoothEnabled??!1,s=e.config.edgeSmoothIterations??1,o=e.config.edgeSmoothProtectDark??!0,c=e.config.edgeSmoothDarkThreshold??30;if(!n||!e.grid||e.grid.length===0)return;let{grid:a,paletteColors:m,paletteLab:d}=e,r=a.length,l=a[0].length,p=new Set;if(o&&d)for(let C=0;C<m.length;C++)d[C][0]<c&&p.add(m[C].id);let i=[[-1,-1],[-1,0],[-1,1],[0,-1],[0,1],[1,-1],[1,0],[1,1]],f=[[0,1],[0,-1],[1,0],[-1,0]],F=0;for(let C=0;C<s;C++){let u=a.map(b=>b.map(h=>({...h}))),_=Array.from({length:r},()=>new Array(l).fill(!1));for(let b=0;b<r;b++)for(let h=0;h<l;h++){let g=u[b][h];if(g.color_id)for(let[E,A]of f){let x=b+E,v=h+A;if(x>=0&&x<r&&v>=0&&v<l){let y=u[x][v];if(y.color_id&&y.color_id!==g.color_id){_[b][h]=!0;break}}}}let D=0;for(let b=1;b<r-1;b++)for(let h=1;h<l-1;h++){if(!_[b][h])continue;let g=u[b][h];if(!g.color_id||o&&p.has(g.color_id))continue;let E=new Map;for(let[y,L]of i){let T=b+y,k=h+L,B=u[T]?.[k];if(!B?.color_id||o&&p.has(B.color_id))continue;let M=B.color_id,w=E.get(M);w?w.count++:E.set(M,{count:1,cell:B})}let A=E.get(g.color_id);A?A.count++:E.set(g.color_id,{count:1,cell:g});let x=0,v=g;for(let[,y]of E)y.count>x&&(x=y.count,v=y.cell);x>3&&v.color_id!==g.color_id&&(a[b][h]={...v},D++)}if(F+=D,D===0)break}F>0}};function Ze(t,e){for(let n of t){let s=performance.now();n.execute(e)}}P(Ze,"runPipeline");var qe=null;function pn(){return qe||(qe=[new Ce,new ge,new Ee,new ye,new ve,new Me,new Pe,new we,new Se,new Re,new Ie,new Le,new $e,new Be]),qe}P(pn,"getDefaultStages");var Ye=null;function zn(){return Ye||(Ye=new Map(pn().map(t=>[t.id,t]))),Ye}P(zn,"getStageRegistry");function Cn(t){return!t||t.length===0?pn():t.map(e=>zn().get(e)).filter(e=>e!==void 0)}P(Cn,"getStagesForPipeline");var se=new Map,ce="";function ue(t,e,n,s,o=3,c=600){let a=e%n,m=Math.floor(e/n),d=0,r=0,l=0,p=0,i=0,f=0,F=0;for(let b=-o;b<=o;b++)for(let h=-o;h<=o;h++){let g=a+h,E=m+b;if(g<0||g>=n||E<0||E>=s)continue;F++;let A=(E*n+g)*3,x=t[A],v=t[A+1],y=t[A+2];d+=x,r+=v,l+=y,p+=x*x,i+=v*v,f+=y*y}if(F<5)return!1;let C=p/F-(d/F)**2,u=i/F-(r/F)**2,_=f/F-(l/F)**2;return C+u+_<c}P(ue,"isSolidColorRegion");var On=5e3;function ke(t,e){if(se.size>=On){let n=se.keys().next().value;n!==void 0&&se.delete(n)}se.set(t,e)}P(ke,"globalCacheSet");function Fe(t){return t.map(e=>`${e.id}:${e.hex_value}`).sort().join("|")}P(Fe,"computePaletteFingerprint");function be(t,e,n,s,o,c){let a=s.length,m=c??V(t,e,n),d=Math.min(8,a),r=[];for(let i=0;i<a;i++){let f=o[i],F=m[0]-f[0],C=m[1]-f[1],u=m[2]-f[2],_=F*F+C*C+u*u;r.length<d?(r.push([i,_]),r.length===d&&r.sort((D,b)=>D[1]-b[1])):_<r[d-1][1]&&(r[d-1]=[i,_],r.sort((D,b)=>D[1]-b[1]))}if(d<=1)return r[0][0];let l=1/0,p=r[0][0];for(let i=0;i<r.length;i++){let f=r[i][0],F=te(m,o[f]);F<l&&(l=F,p=f)}return p}P(be,"findNearestFast");function mn(t,e,n,s,o,c,a){let m=s.length;if(c>=m){let i=a??V(t,e,n),f=[];for(let F=0;F<m;F++)f.push([F,te(i,o[F])]);return f.sort((F,C)=>F[1]-C[1]),f.map(F=>F[0])}let d=a??V(t,e,n),r=Math.min(8,m),l=[];for(let i=0;i<m;i++){let f=o[i],F=d[0]-f[0],C=d[1]-f[1],u=d[2]-f[2],_=F*F+C*C+u*u;l.length<r?(l.push([i,_]),l.length===r&&l.sort((D,b)=>D[1]-b[1])):_<l[r-1][1]&&(l[r-1]=[i,_],l.sort((D,b)=>D[1]-b[1]))}let p=[];for(let i=0;i<l.length;i++){let f=l[i][0];p.push([f,te(d,o[f])])}return p.sort((i,f)=>i[1]-f[1]),p.slice(0,c).map(i=>i[0])}P(mn,"findTopKFast");function Fn(t,e,n){return .299*t+.587*e+.114*n}P(Fn,"calcLumaError");function un(t,e,n,s,o,c=.5,a,m=.6,d=.4,r=0,l,p=!0,i=600,f=!0,F,C,u){let _=e*n,D=s.length,b=128,h=new Int32Array(_),g=F??s.map(x=>V(x.rgb[0],x.rgb[1],x.rgb[2])),E=Fe(s);if(E!==ce&&(se=new Map,ce=E),f){let x=u?new Float32Array(u):(()=>{let v=new Float32Array(_*3);for(let y=0;y<_;y++){let L=y*3,T=V(t[L],t[L+1],t[L+2]);v[L]=T[0],v[L+1]=T[1],v[L+2]=T[2]}return v})();if(o)for(let v=0;v<_;v++)o[v]<b&&(h[v]=-1);for(let v=0;v<n;v++){let y=v%2===1,L=y?e-1:0,T=y?-1:e,k=y?-1:1;for(let B=L;B!==T;B+=k){let M=v*e+B,w=M*3;if(h[M]===-1)continue;let S=C?C[M]===1:p&&c!==0&&ue(t,M,e,n,3,i),G,O,K;S?(G=x[w],O=x[w+1],K=x[w+2]):(G=Math.max(0,Math.min(100,x[w])),O=Math.max(-128,Math.min(127,x[w+1])),K=Math.max(-128,Math.min(127,x[w+2])));let U=be(0,0,0,s,g,[G,O,K]);if(h[M]=U,a&&a[M]===1)continue;let I=G-g[U][0],R=O-g[U][1],J=K-g[U][2],ne=c;r>0&&l&&l[M]>0&&(ne*=1-r*l[M]),S&&(ne=0);let j=I*ne,q=R*ne,Y=J*ne,Q=B+k;if(Q>=0&&Q<e){let X=(M+k)*3;(!o||o[M+k]>=b)&&(x[X]+=j*.4375,x[X+1]+=q*.4375,x[X+2]+=Y*.4375)}if(v+1<n){let X=y?1:-1;if(B+X>=0&&B+X<e){let z=(M+e+X)*3;(!o||o[M+e+X]>=b)&&(x[z]+=j*.1875,x[z+1]+=q*.1875,x[z+2]+=Y*.1875)}{let z=(M+e)*3;(!o||o[M+e]>=b)&&(x[z]+=j*.3125,x[z+1]+=q*.3125,x[z+2]+=Y*.3125)}let ee=y?-1:1;if(B+ee>=0&&B+ee<e){let z=(M+e+ee)*3;(!o||o[M+e+ee]>=b)&&(x[z]+=j*.0625,x[z+1]+=q*.0625,x[z+2]+=Y*.0625)}}}}return h}let A=new Float32Array(_*3);for(let x=0;x<_*3;x++)A[x]=t[x];if(o)for(let x=0;x<_;x++)o[x]<b&&(h[x]=-1);for(let x=0;x<n;x++){let v=x%2===1,y=v?e-1:0,L=v?-1:e,T=v?-1:1;for(let k=y;k!==L;k+=T){let B=x*e+k,M=B*3;if(h[B]===-1)continue;let w=C?C[B]===1:p&&c!==0&&ue(t,B,e,n,3,i),S=Math.max(0,Math.min(255,Math.round(w?t[M]:A[M]))),G=Math.max(0,Math.min(255,Math.round(w?t[M+1]:A[M+1]))),O=Math.max(0,Math.min(255,Math.round(w?t[M+2]:A[M+2]))),K=S<<16|G<<8|O,$=se.get(K);if(!($!==void 0&&$>=0&&$<D)){let W=V(S,G,O);$=be(S,G,O,s,g,W),ke(K,$)}if(h[B]=$,a&&a[B]===1)continue;let U=s[$].rgb[0],I=s[$].rgb[1],R=s[$].rgb[2],J=S-U,ne=G-I,j=O-R,q=Fn(J,ne,j),Y=c;r>0&&l&&l[B]>0&&(Y*=1-r*l[B]),w&&(Y=0);let Q=(J*m+q*d)*Y,X=(ne*m+q*d)*Y,ee=(j*m+q*d)*Y,z=k+T;if(z>=0&&z<e){let W=(B+T)*3;(!o||o[B+T]>=b)&&(A[W]+=Q*.4375,A[W+1]+=X*.4375,A[W+2]+=ee*.4375)}if(x+1<n){let W=v?1:-1;if(k+W>=0&&k+W<e){let H=(B+e+W)*3;(!o||o[B+e+W]>=b)&&(A[H]+=Q*.1875,A[H+1]+=X*.1875,A[H+2]+=ee*.1875)}{let H=(B+e)*3;(!o||o[B+e]>=b)&&(A[H]+=Q*.3125,A[H+1]+=X*.3125,A[H+2]+=ee*.3125)}let Z=v?-1:1;if(k+Z>=0&&k+Z<e){let H=(B+e+Z)*3;(!o||o[B+e+Z]>=b)&&(A[H]+=Q*.0625,A[H+1]+=X*.0625,A[H+2]+=ee*.0625)}}}}return h}P(un,"floydSteinbergDitherToPalette");function hn(t,e,n,s,o,c=.5,a,m=.6,d=.4,r=0,l,p=!0,i=600,f=!0,F,C,u){let _=e*n,D=s.length,b=128,h=new Int32Array(_),g=F??s.map(y=>V(y.rgb[0],y.rgb[1],y.rgb[2])),E=Fe(s);E!==ce&&(se=new Map,ce=E);let A=[[1,0],[2,0],[-1,1],[0,1],[1,1],[0,2]],x=[[-1,0],[-2,0],[1,1],[0,1],[-1,1],[0,2]];if(f){let y=u?new Float32Array(u):(()=>{let L=new Float32Array(_*3);for(let T=0;T<_;T++){let k=T*3,B=V(t[k],t[k+1],t[k+2]);L[k]=B[0],L[k+1]=B[1],L[k+2]=B[2]}return L})();if(o)for(let L=0;L<_;L++)o[L]<b&&(h[L]=-1);for(let L=0;L<n;L++){let T=L%2===1,k=T?e-1:0,B=T?-1:e,M=T?-1:1,w=T?x:A;for(let S=k;S!==B;S+=M){let G=L*e+S,O=G*3;if(h[G]===-1)continue;let K=C?C[G]===1:p&&c!==0&&ue(t,G,e,n,3,i),$,U,I;K?($=y[O],U=y[O+1],I=y[O+2]):($=Math.max(0,Math.min(100,y[O])),U=Math.max(-128,Math.min(127,y[O+1])),I=Math.max(-128,Math.min(127,y[O+2])));let J=be(0,0,0,s,g,[$,U,I]);if(h[G]=J,a&&a[G]===1)continue;let ne=$-g[J][0],j=U-g[J][1],q=I-g[J][2],Y=c;r>0&&l&&l[G]>0&&(Y*=1-r*l[G]),K&&(Y=0);let Q=ne*Y/8,X=j*Y/8,ee=q*Y/8;for(let[z,W]of w){let Z=S+z,H=L+W;if(Z>=0&&Z<e&&H<n){let N=(H*e+Z)*3;(!o||o[H*e+Z]>=b)&&(y[N]+=Q,y[N+1]+=X,y[N+2]+=ee)}}}}return h}let v=new Float32Array(_*3);for(let y=0;y<_*3;y++)v[y]=t[y];if(o)for(let y=0;y<_;y++)o[y]<b&&(h[y]=-1);for(let y=0;y<n;y++){let L=y%2===1,T=L?e-1:0,k=L?-1:e,B=L?-1:1,M=L?x:A;for(let w=T;w!==k;w+=B){let S=y*e+w,G=S*3;if(h[S]===-1)continue;let O=C?C[S]===1:p&&c!==0&&ue(t,S,e,n,3,i),K=Math.max(0,Math.min(255,Math.round(O?t[G]:v[G]))),$=Math.max(0,Math.min(255,Math.round(O?t[G+1]:v[G+1]))),U=Math.max(0,Math.min(255,Math.round(O?t[G+2]:v[G+2]))),I=K<<16|$<<8|U,R=se.get(I);if(R===void 0||R<0||R>=D){let H=V(K,$,U);R=be(K,$,U,s,g,H),ke(I,R)}if(h[S]=R,a&&a[S]===1)continue;let J=s[R].rgb[0],ne=s[R].rgb[1],j=s[R].rgb[2],q=K-J,Y=$-ne,Q=U-j,X=Fn(q,Y,Q),ee=c;r>0&&l&&l[S]>0&&(ee*=1-r*l[S]),O&&(ee=0);let z=(q*m+X*d)*ee/8,W=(Y*m+X*d)*ee/8,Z=(Q*m+X*d)*ee/8;for(let[H,N]of M){let oe=w+H,re=y+N;if(oe>=0&&oe<e&&re<n){let ae=(re*e+oe)*3;(!o||o[re*e+oe]>=b)&&(v[ae]+=z,v[ae+1]+=W,v[ae+2]+=Z)}}}}return h}P(hn,"atkinsonDitherToPalette");function Dn(t){if(t===2)return[[0,2],[3,1]];let e=t/2,n=Dn(e),s=Array.from({length:t},()=>new Array(t).fill(0));for(let o=0;o<e;o++)for(let c=0;c<e;c++)s[o][c]=4*n[o][c],s[o][c+e]=4*n[o][c]+2,s[o+e][c]=4*n[o][c]+3,s[o+e][c+e]=4*n[o][c]+1;return s}P(Dn,"generateBayerMatrix");function fn(t,e,n,s,o,c=.5,a=4,m=1,d,r=0,l,p){let i=e*n,f=s.length,F=128,C=new Int32Array(i),u=p??s.map(g=>V(g.rgb[0],g.rgb[1],g.rgb[2])),_=Fe(s);_!==ce&&(se=new Map,ce=_);let D=Dn(a),b=a*a,h=D.map(g=>g.map(E=>E/b));for(let g=0;g<n;g++){let E=g%2===1,A=E?e-1:0,x=E?-1:e,v=E?-1:1;for(let y=A;y!==x;y+=v){let L=g*e+y,T=L*3;if(o&&o[L]<F){C[L]=-1;continue}let k=t[T],B=t[T+1],M=t[T+2];if(!d||d[L]!==1){let G=h[g%a][y%a],O=c;r>0&&l&&l[L]>0&&(O*=1-r*l[L]);let K=(G-.5)*m*255*O;k=Math.max(0,Math.min(255,Math.round(k+K))),B=Math.max(0,Math.min(255,Math.round(B+K))),M=Math.max(0,Math.min(255,Math.round(M+K)))}let w=k<<16|B<<8|M,S=se.get(w);(S===void 0||S<0||S>=f)&&(S=be(k,B,M,s,u),ke(w,S)),C[L]=S}}return C}P(fn,"bayerDitherToPalette");function bn(t,e,n,s,o,c,a=600,m=35,d,r){let i=new Int32Array(t.length);for(let f=0;f<s;f++)for(let F=0;F<n;F++){let C=f*n+F;if(o&&o[C]<128){i[C]=t[C];continue}let u=t[C];if(u<0){i[C]=u;continue}if(d&&d[C]!==1){i[C]=u;continue}let _=new Map,D=0,b=0,h=0,g=0,E=Math.max(0,f-3),A=Math.min(s-1,f+3),x=Math.max(0,F-3),v=Math.min(n-1,F+3);for(let k=E;k<=A;k++)for(let B=x;B<=v;B++){let M=k*n+B;if(o&&o[M]<128)continue;let w=t[M];if(w<0)continue;_.set(w,(_.get(w)||0)+1);let S=M*3;D+=e[S],b+=e[S+1],h+=e[S+2],g++}if(g<5){i[C]=u;continue}let y=!1;if(d)y=d[C]===1;else{let k=D/g,B=b/g,M=h/g,w=0;for(let S=E;S<=A;S++)for(let G=x;G<=v;G++){let O=S*n+G;if(o&&o[O]<128||t[O]<0)continue;let $=O*3,U=e[$]-k,I=e[$+1]-B,R=e[$+2]-M;w+=U*U+I*I+R*R}w/=g,y=w<=a}if(!y){i[C]=u;continue}let L=u,T=_.get(u)||0;for(let[k,B]of _)B>T&&(T=B,L=k);if(L!==u){if(c&&u>=0&&u<c.length&&L>=0&&L<c.length){let k=r?r[u]:V(c[u].rgb[0],c[u].rgb[1],c[u].rgb[2]),B=r?r[L]:V(c[L].rgb[0],c[L].rgb[1],c[L].rgb[2]);if(te(k,B)<m){i[C]=u;continue}}i[C]=L}else i[C]=u}t.set(i)}P(bn,"correctSolidRegionLabels");function _n(t,e,n,s,o,c,a,m=600,d,r){let l=e*n,p=s.length,i=128,f=new Int32Array(l),F=d??s.map(u=>V(u.rgb[0],u.rgb[1],u.rgb[2])),C=Fe(s);if(C!==ce&&(se=new Map,ce=C),o)for(let u=0;u<l;u++)o[u]<i&&(f[u]=-1);for(let u=0;u<l;u++){if(f[u]===-1)continue;let _=u*3,D=t[_],b=t[_+1],h=t[_+2];if(r?r[u]===1:a&&ue(t,u,e,n,3,m)){let x=u%e,v=Math.floor(u/e),y=u*3,L=t[y],T=t[y+1],k=t[y+2],B=!0,M=3,w=[[-1,0],[1,0],[0,-1],[0,1],[-1,-1],[-1,1],[1,-1],[1,1]];for(let[S,G]of w){let O=v+S,K=x+G;if(K<0||K>=e||O<0||O>=n)continue;let $=(O*e+K)*3;if(Math.abs(t[$]-L)>M||Math.abs(t[$+1]-T)>M||Math.abs(t[$+2]-k)>M){B=!1;break}}if(B)D=L,b=T,h=k;else{let S=[],G=[],O=[];for(let K=-2;K<=2;K++)for(let $=-2;$<=2;$++){let U=x+$,I=v+K;if(U<0||U>=e||I<0||I>=n)continue;let R=I*e+U;if(o&&o[R]<i)continue;let J=R*3;S.push(t[J]),G.push(t[J+1]),O.push(t[J+2])}if(S.length>0){S.sort(($,U)=>$-U),G.sort(($,U)=>$-U),O.sort(($,U)=>$-U);let K=Math.floor(S.length/2);D=S[K],b=G[K],h=O[K]}}}let E=D<<16|b<<8|h,A=se.get(E);if(A===void 0||A<0||A>=p){let x=V(D,b,h);A=be(D,b,h,s,F,x),ke(E,A)}f[u]=A}return f}P(_n,"noDitherToPalette");function gn(t,e,n=3,s=30,o=!0){let c=t.length;if(c===0)return;let a=t[0].length;if(a===0)return;let m=new Uint8Array(c*a),d=new Map(e.map(p=>[p.id,p])),r=e.map(p=>V(p.rgb[0],p.rgb[1],p.rgb[2])),l=new Set;for(let p of e)V(p.rgb[0],p.rgb[1],p.rgb[2])[0]<s&&l.add(p.id);for(let p=0;p<c;p++)for(let i=0;i<a;i++){let f=p*a+i;if(m[f])continue;let F=t[p][i];if(!F.color_id)continue;if(o&&l.has(F.color_id)){let D=!1,b=[[0,1],[0,-1],[1,0],[-1,0]];for(let[h,g]of b){let E=i+h,A=p+g;if(E>=0&&E<a&&A>=0&&A<c&&l.has(t[A][E].color_id)){D=!0;break}}if(D){m[f]=1;continue}}let C=[],u=[[i,p]],_=0;for(m[f]=1;_<u.length;){let[D,b]=u[_++];C.push([D,b]);let h=[[0,1],[0,-1],[1,0],[-1,0]];for(let[g,E]of h){let A=D+g,x=b+E;if(A>=0&&A<a&&x>=0&&x<c){let v=x*a+A;!m[v]&&t[x][A].color_id===F.color_id&&(m[v]=1,u.push([A,x]))}}}if(C.length<n){let D=new Map;for(let[E,A]of C){let x=[[0,1],[0,-1],[1,0],[-1,0]];for(let[v,y]of x){let L=E+v,T=A+y;if(L>=0&&L<a&&T>=0&&T<c){let k=t[T][L];k.color_id&&k.color_id!==F.color_id&&D.set(k.color_id,(D.get(k.color_id)||0)+1)}}}let b=F.color_id,h=0;for(let[E,A]of D)l.has(E)||A>h&&(h=A,b=E);if(b===F.color_id){let E=d.get(F.color_id);if(E){let A=V(E.rgb[0],E.rgb[1],E.rgb[2]),x=1/0,v=0;for(let y=0;y<r.length;y++){if(e[y].id===F.color_id||l.has(e[y].id))continue;let L=te(A,r[y]);L<x&&(x=L,v=y)}b=e[v].id}}let g=d.get(b);if(g)for(let[E,A]of C)t[A][E]={color_id:b,color_code:g.code,color_hex:g.hex_value}}}}P(gn,"cleanIsolatedBeads");function pe(t){let e=new Set;for(let n of t)for(let s of n)s.color_id&&e.add(s.color_id);return e.size}P(pe,"countGridColors");function An(t,e,n,s){let o=performance.now();if(!t||t.width===0||t.height===0)throw new Error(`\u65E0\u6548\u7684\u56FE\u7247\u5C3A\u5BF8: ${t?.width}\xD7${t?.height}`);if(e<=0||e>200)throw new Error(`\u65E0\u6548\u7684\u56FE\u7EB8\u5BBD\u5EA6: ${e}\uFF08\u5E94\u5728 1-200 \u4E4B\u95F4\uFF09`);if(n.length===0)throw new Error("\u8272\u677F\u4E0D\u80FD\u4E3A\u7A7A");let c=Fe(n);c!==ce&&(se.clear(),ce=c);let a=n.map(f=>V(parseInt(f.hex_value.slice(1,3),16),parseInt(f.hex_value.slice(3,5),16),parseInt(f.hex_value.slice(5,7),16))),m={sourceCanvas:t,targetWidth:e,width:0,height:0,pixels:new Uint8ClampedArray(0),alpha:new Uint8ClampedArray(0),labels:new Int32Array(0),grid:[],edgeMap:null,paletteColors:n,paletteLab:a,config:s},d=Cn(s.pipeline);Ze(d,m);let{color_stats:r,total_beads:l}=Ne(m.grid,n),p=performance.now()-o,i;return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?i=crypto.randomUUID():i=`${Date.now().toString(16)}-${Math.random().toString(16).slice(2,10)}`,{pattern_id:i,width:m.width,height:m.height,grid:m.grid,color_stats:r,total_beads:l}}P(An,"generatePattern");function Ne(t,e){let n=new Map,s=new Map,o=new Map,c=0;for(let r of t)for(let l of r)l.color_id&&(n.set(l.color_id,(n.get(l.color_id)??0)+1),s.has(l.color_id)||(s.set(l.color_id,l.color_code),l.color_hex&&o.set(l.color_id,l.color_hex)),c++);let a=new Map(e.map(r=>[r.id,r]));return{color_stats:[...n.entries()].sort((r,l)=>l[1]-r[1]).map(([r,l])=>{let p=a.get(r),i=p?void 0:an(r);return{color_id:r,color_code:p?.code??s.get(r)??i?.code??"",color_name:p?.name??i?.name??"",count:l,hex_value:p?.hex_value??o.get(r)??i?.hex_value??"#000000",percentage:c>0?Math.round(l/c*1e4)/100:0}}),total_beads:c}}P(Ne,"buildColorStats");var Kn=50,Zn={1:.6,2:.7,3:.9},En=.72,je=.5,qn=1,Yn=.4,Nn=8;async function St(t){let e=t.width||50;if(e<10||e>150)throw new Error("width must be 10-150");let n=await nn(t.input),s=await on(n,e,t.resizeMode||"smooth"),{rgb:o,alpha:c}=tn(s.pixels,s.width,s.height),a=new me(s.width,s.height,s.pixels),m=t.paletteColors.map(i=>{let f=i.hex_value.replace("#",""),F=parseInt(f.slice(0,2),16),C=parseInt(f.slice(2,4),16),u=parseInt(f.slice(4,6),16);return V(F,C,u)}),d=An(a,e,t.paletteColors,t.config||{}),r=await Xn(d,t.render||{}),l=Ne(d.grid,t.paletteColors),p=(l.color_stats||[]).map(i=>({code:i.color_code||i.code||"",name:i.color_name||"",hex:i.hex_value||"",count:i.count}));return{pattern:d,pngBuffer:r,colorStats:p,totalBeads:l.total_beads||0}}P(St,"generateBeadPattern");function Ve(t,e){let n=0;for(let s of t)/[\u4e00-\u9fff\u3000-\u303f\uff00-\uffef]/.test(s)?n+=e*qn:n+=e*je;return n}P(Ve,"approxTextWidth");function Vn(t){let e=new Map;for(let n of t.grid)for(let s of n){if(!s?.color_code)continue;let o=s.color_code.length,c=e.get(o);(!c||s.color_code.length>c.length)&&e.set(o,s.color_code)}return e.size===0&&e.set(3,"M001"),e}P(Vn,"groupCodesByLength");function jn(t,e,n){let s=new Map;for(let[o,c]of e){let a=n[String(o)]||n[3]||1,m=t*a,d=t*a,r=Math.ceil(d/En),l=Math.max(5,r);for(;l>5&&!(c.length*l*je<=m&&l<=r);)l--;s.set(o,l)}return s}P(jn,"calcFontSizeByLength");function Qn(t,e){let s=e[2]||1.1,o=t*s,c=t*s,a=Math.ceil(c/En),m=Math.max(5,a);for(;m>5&&!(2*m*je<=o&&m<=a);)m--;return m}P(Qn,"calcLabelFontSize");async function Xn(t,e={}){let{cellSize:n=Kn,fillRatioMap:s=Zn,beadShape:o="square",showGrid:c=!0,showColorCodes:a=!0,showRulers:m=!0,showMaterials:d=!0,transparentBg:r=!0,format:l="png"}=e,{grid:p}=t,i=p.length,f=i>0?p[0].length:0;if(i===0||f===0)throw new Error("Empty pattern grid");let F=Vn(t),C=jn(n,F,s),u=Qn(n,s),_=u/3,D=Math.max(Nn,Math.ceil(u+_+2)),b=f*n,h=i*n,g=Math.max(60,Math.floor(b*.04)),E=Math.max(40,Math.floor(g*.6)),A=Math.max(40,Math.floor(g*.6)),x=g,v=g,y=b+x+v,T=340*2+x+v;y<T&&(y=T);let B=y/2100*4,M=Math.max(20,Math.floor(25*B)),w=M+E,S=t.color_stats||[],G="",O=0;if(d&&S.length>0){let Z=y-2*x,H=Math.max(2,Math.floor(3*B)),N=(Z-7*H)/8,oe=Math.max(3,Math.floor(4*B)),re=Math.max(8,Math.floor(Math.min(12*B,N*.22))),ae=re+oe*2,le=Math.max(7,Math.floor(6*B)),ie=Math.max(8,Math.min(le,Math.floor(N*.14))),de=Math.max(4,Math.floor(5*B)),he=Math.max(1,Math.floor(1*B)),De=Math.max(4,Math.floor(5*B)),He=Math.max(8,Math.floor(12*B)),yn=m?w+h+_+u:w+h,Ae=Math.max(w+h+de,yn+de),vn=Math.ceil(S.length/8)*(ae+H)-H;O=Ae-w-h+he+De+vn+He;let Bn=Ae+he+de+De,fe=[];fe.push(`<line x1="${x}" y1="${Ae}" x2="${y-v}" y2="${Ae}" stroke="#E5E7EB" stroke-width="${he}"/>`);for(let _e=0;_e<S.length;_e++){let xe=S[_e],Mn=Math.floor(_e/8),Pn=_e%8,Ge=x+Pn*(N+H),Qe=Bn+Mn*(ae+H);fe.push(`<rect x="${Ge}" y="${Qe}" width="${N}" height="${ae}" fill="none" stroke="#D1D5DB" stroke-width="0.5"/>`);let wn=xe.hex_value||xe.hex||"#000",Te=Qe+ae/2;fe.push(`<rect x="${Ge+oe}" y="${Te-re/2}" width="${re}" height="${re}" fill="${wn}"/>`);let Xe=Ge+oe+re+oe,Je=xe.color_code||xe.code||"";fe.push(`<text x="${Xe}" y="${Te}" font-family="-apple-system,'Segoe UI',sans-serif" font-weight="bold" font-size="${ie}" fill="#1F2937" dominant-baseline="central">${Je}</text>`);let Rn=Ve(Je,ie);fe.push(`<text x="${Xe+Rn+oe}" y="${Te}" font-family="-apple-system,'Segoe UI',sans-serif" font-size="${ie}" fill="#6B7280" dominant-baseline="central">x ${xe.count}</text>`)}G=fe.join(`
2
- `)}let K=M+h+E+A+O,$=[];if($.push(`<svg xmlns="http://www.w3.org/2000/svg" width="${y}" height="${K}">`),a&&n>=10){$.push("<defs>");for(let[W]of F)$.push(`<clipPath id="clip-${W}"><rect width="${n}" height="${n}"/></clipPath>`);$.push("</defs>")}r||$.push(`<rect width="${y}" height="${K}" fill="white"/>`);let U=M/2,I=Math.max(10,Math.floor(9*B));$.push(`<rect x="0" y="0" width="${y}" height="${M}" fill="#F8F9FA"/>`),$.push(`<line x1="0" y1="${M}" x2="${y}" y2="${M}" stroke="#E5E7EB" stroke-width="${Math.max(1,Math.floor(1*B))}"/>`);let R=Math.max(9,Math.floor(I*.75)),J=t.total_beads??f*i,ne=0,j=[{value:`${S.length}\u8272`,label:"\u989C\u8272"},{value:`${J}`,label:"\u62FC\u8C46\u6570\u91CF"},{value:`${f} x ${i}`,label:"\u957F\u5BBD"}],q=Math.floor(R*.25),Y=Math.floor(R*.2);for(let W of j)ne+=Ve(W.value,R)+Y+Ve(W.label,R)+q;ne-=q;let Q=y-v-ne,X=M*.2;$.push(`<g transform="translate(${x}, ${X})"><text y="0" dominant-baseline="hanging" font-family="-apple-system,'Segoe UI',sans-serif"><tspan font-family="'PingFang SC','Microsoft YaHei',sans-serif" font-weight="bold" font-size="${I}" fill="#374151">\u62FC\u8C46</tspan><tspan font-weight="bold" font-size="${I}" fill="#6366F1"> Pic</tspan></text></g>`),$.push(`<g transform="translate(${Q}, ${X})"><text y="0" dominant-baseline="hanging"><tspan font-family="-apple-system,'Segoe UI',sans-serif" font-weight="bold" font-size="${R}" fill="#6366F1">${S.length}\u8272</tspan><tspan font-family="'PingFang SC','Microsoft YaHei',sans-serif" font-size="${R}" fill="#6B7280" dx="${Math.floor(R*.2)}">\u989C\u8272</tspan><tspan font-family="sans-serif" font-size="${R}" fill="#D1D5DB" dx="${q}">\u2502</tspan><tspan font-family="-apple-system,'Segoe UI',sans-serif" font-weight="bold" font-size="${R}" fill="#6366F1" dx="${q}">${J}</tspan><tspan font-family="'PingFang SC','Microsoft YaHei',sans-serif" font-size="${R}" fill="#6B7280" dx="${Math.floor(R*.2)}">\u62FC\u8C46\u6570\u91CF</tspan><tspan font-family="sans-serif" font-size="${R}" fill="#D1D5DB" dx="${q}">\u2502</tspan><tspan font-family="-apple-system,'Segoe UI',sans-serif" font-weight="bold" font-size="${R}" fill="#6366F1" dx="${q}">${f} x ${i}</tspan><tspan font-family="'PingFang SC','Microsoft YaHei',sans-serif" font-size="${R}" fill="#6B7280" dx="${Math.floor(R*.2)}">\u957F\u5BBD</tspan></text></g>`);for(let W=0;W<i;W++)for(let Z=0;Z<f;Z++){let H=p[W]?.[Z];if(!H)continue;let N=H.color_hex||H.hex_value;if(!N||r&&(N==="#ffffff"||N==="#FFFFFF"))continue;let oe=x+Z*n,re=w+W*n;if(o==="circle"&&n>=6){let ae=n*Yn;$.push(`<circle cx="${oe+n/2}" cy="${re+n/2}" r="${ae}" fill="${N}"/>`)}else $.push(`<rect x="${oe}" y="${re}" width="${n}" height="${n}" fill="${N}"/>`)}if(c&&n>=6){for(let W=0;W<=i;W++){if(W%5===0)continue;let Z=w+W*n+.5;$.push(`<line x1="${x}" y1="${Z}" x2="${x+b}" y2="${Z}" stroke="#ddd" stroke-width="0.5"/>`)}for(let W=0;W<=f;W++){if(W%5===0)continue;let Z=x+W*n+.5;$.push(`<line x1="${Z}" y1="${w}" x2="${Z}" y2="${w+h}" stroke="#ddd" stroke-width="0.5"/>`)}for(let W=0;W<=i;W+=5){let Z=w+W*n+.5;$.push(`<line x1="${x}" y1="${Z}" x2="${x+b}" y2="${Z}" stroke="#666" stroke-width="1.5"/>`)}for(let W=0;W<=f;W+=5){let Z=x+W*n+.5;$.push(`<line x1="${Z}" y1="${w}" x2="${Z}" y2="${w+h}" stroke="#666" stroke-width="1.5"/>`)}}if(m&&c&&n>=8){let W=w+h,Z=x+b;for(let H=0;H<f;H++)$.push(`<text x="${x+H*n+n/2}" y="${w-_}" font-family="sans-serif" font-weight="bold" font-size="${u}" fill="#333" text-anchor="middle" dominant-baseline="alphabetic">${H+1}</text>`);for(let H=0;H<f;H++)$.push(`<text x="${x+H*n+n/2}" y="${W+_}" font-family="sans-serif" font-weight="bold" font-size="${u}" fill="#333" text-anchor="middle" dominant-baseline="hanging">${H+1}</text>`);for(let H=0;H<i;H++)$.push(`<text x="${x-_}" y="${w+H*n+n/2}" font-family="sans-serif" font-weight="bold" font-size="${u}" fill="#333" text-anchor="end" dominant-baseline="central">${H+1}</text>`);for(let H=0;H<i;H++)$.push(`<text x="${Z+_}" y="${w+H*n+n/2}" font-family="sans-serif" font-weight="bold" font-size="${u}" fill="#333" text-anchor="start" dominant-baseline="central">${H+1}</text>`)}if(a&&n>=10)for(let W=0;W<i;W++)for(let Z=0;Z<f;Z++){let H=p[W]?.[Z];if(!H?.color_code)continue;let N=H.color_code,oe=(H.color_hex||"").replace("#",""),re=parseInt(oe.slice(0,2),16)||0,ae=parseInt(oe.slice(2,4),16)||0,le=parseInt(oe.slice(4,6),16)||0,de=.299*re+.587*ae+.114*le>128?"#000":"#fff",he=C.get(N.length)??C.get(3)??5,De=x+Z*n,He=w+W*n;$.push(`<g transform="translate(${De}, ${He})"><text x="${n/2}" y="${n/2}" font-family="sans-serif" font-weight="bold" font-size="${he}" fill="${de}" text-anchor="middle" dominant-baseline="central" clip-path="url(#clip-${N.length})">${N}</text></g>`)}G&&$.push(G),$.push("</svg>");let ee=$.join(`
3
- `),z=await Wn(Buffer.from(ee)).png().toBuffer();if(l==="pdf"){let{execSync:W}=await import("node:child_process"),{mkdtempSync:Z,writeFileSync:H,readFileSync:N,rmSync:oe}=await import("node:fs"),{tmpdir:re}=await import("node:os"),{join:ae}=await import("node:path"),le=Z(ae(re(),"pindoupic-pdf-")),ie=ae(le,"temp.png"),de=ae(le,"output.pdf");try{return H(ie,z),W(`sips -s format pdf "${ie}" --out "${de}"`,{timeout:1e4}),N(de)}catch{return z}finally{oe(le,{recursive:!0,force:!0})}}return z}P(Xn,"renderGridToPng");export{Kn as DEFAULT_CELL_SIZE,Zn as DEFAULT_FILL_RATIO,St as generateBeadPattern,Xn as renderGridToPng};