chess2img 0.1.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/ATTRIBUTION.md +19 -0
- package/README.md +209 -0
- package/assets/themes/alpha/bB.svg +20 -0
- package/assets/themes/alpha/bK.svg +21 -0
- package/assets/themes/alpha/bN.svg +19 -0
- package/assets/themes/alpha/bP.svg +19 -0
- package/assets/themes/alpha/bQ.svg +22 -0
- package/assets/themes/alpha/bR.svg +22 -0
- package/assets/themes/alpha/wB.svg +20 -0
- package/assets/themes/alpha/wK.svg +21 -0
- package/assets/themes/alpha/wN.svg +19 -0
- package/assets/themes/alpha/wP.svg +19 -0
- package/assets/themes/alpha/wQ.svg +22 -0
- package/assets/themes/alpha/wR.svg +22 -0
- package/assets/themes/cburnett/bB.svg +20 -0
- package/assets/themes/cburnett/bK.svg +21 -0
- package/assets/themes/cburnett/bN.svg +19 -0
- package/assets/themes/cburnett/bP.svg +19 -0
- package/assets/themes/cburnett/bQ.svg +22 -0
- package/assets/themes/cburnett/bR.svg +22 -0
- package/assets/themes/cburnett/wB.svg +20 -0
- package/assets/themes/cburnett/wK.svg +21 -0
- package/assets/themes/cburnett/wN.svg +19 -0
- package/assets/themes/cburnett/wP.svg +19 -0
- package/assets/themes/cburnett/wQ.svg +22 -0
- package/assets/themes/cburnett/wR.svg +22 -0
- package/assets/themes/cheq/bB.svg +20 -0
- package/assets/themes/cheq/bK.svg +21 -0
- package/assets/themes/cheq/bN.svg +19 -0
- package/assets/themes/cheq/bP.svg +19 -0
- package/assets/themes/cheq/bQ.svg +22 -0
- package/assets/themes/cheq/bR.svg +22 -0
- package/assets/themes/cheq/wB.svg +20 -0
- package/assets/themes/cheq/wK.svg +21 -0
- package/assets/themes/cheq/wN.svg +19 -0
- package/assets/themes/cheq/wP.svg +19 -0
- package/assets/themes/cheq/wQ.svg +22 -0
- package/assets/themes/cheq/wR.svg +22 -0
- package/assets/themes/leipzig/bB.svg +20 -0
- package/assets/themes/leipzig/bK.svg +21 -0
- package/assets/themes/leipzig/bN.svg +19 -0
- package/assets/themes/leipzig/bP.svg +19 -0
- package/assets/themes/leipzig/bQ.svg +22 -0
- package/assets/themes/leipzig/bR.svg +22 -0
- package/assets/themes/leipzig/wB.svg +20 -0
- package/assets/themes/leipzig/wK.svg +21 -0
- package/assets/themes/leipzig/wN.svg +19 -0
- package/assets/themes/leipzig/wP.svg +19 -0
- package/assets/themes/leipzig/wQ.svg +22 -0
- package/assets/themes/leipzig/wR.svg +22 -0
- package/assets/themes/merida/bB.svg +20 -0
- package/assets/themes/merida/bK.svg +21 -0
- package/assets/themes/merida/bN.svg +19 -0
- package/assets/themes/merida/bP.svg +19 -0
- package/assets/themes/merida/bQ.svg +22 -0
- package/assets/themes/merida/bR.svg +22 -0
- package/assets/themes/merida/wB.svg +20 -0
- package/assets/themes/merida/wK.svg +21 -0
- package/assets/themes/merida/wN.svg +19 -0
- package/assets/themes/merida/wP.svg +19 -0
- package/assets/themes/merida/wQ.svg +22 -0
- package/assets/themes/merida/wR.svg +22 -0
- package/dist/index.cjs +653 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +108 -0
- package/dist/index.d.ts +108 -0
- package/dist/index.js +626 -0
- package/dist/index.js.map +1 -0
- package/package.json +52 -0
package/ATTRIBUTION.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Bundled Theme Attribution
|
|
2
|
+
|
|
3
|
+
This package vendors five built-in SVG theme sets under [`assets/themes`](/root/Chess2img/assets/themes):
|
|
4
|
+
|
|
5
|
+
- `merida`
|
|
6
|
+
- `alpha`
|
|
7
|
+
- `cburnett`
|
|
8
|
+
- `cheq`
|
|
9
|
+
- `leipzig`
|
|
10
|
+
|
|
11
|
+
These bundled assets are authored for this rewrite and distributed as part of the package under the repository license.
|
|
12
|
+
|
|
13
|
+
Theme provenance notes:
|
|
14
|
+
|
|
15
|
+
- no runtime or build-time third-party theme package is required to use the bundled themes
|
|
16
|
+
- theme names preserve the familiar public style options from the original library
|
|
17
|
+
- the bundled SVG files in this repository are the canonical source assets for PNG rendering
|
|
18
|
+
|
|
19
|
+
If third-party themes are added later through `registerTheme(theme)`, their licensing and attribution remain the responsibility of the integrating application or package author.
|
package/README.md
ADDED
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
# chess2img
|
|
2
|
+
|
|
3
|
+
Modern chess board image rendering for Node.js.
|
|
4
|
+
|
|
5
|
+
`chess2img` renders PNG chess board images from FEN, PGN, or board-array inputs with a small Promise-based API for both JavaScript and TypeScript users.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install chess2img
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Node And Canvas Requirements
|
|
14
|
+
|
|
15
|
+
- Node.js `18+`
|
|
16
|
+
- native build support for `canvas`
|
|
17
|
+
- common Linux packages usually include Cairo, Pango, libpng, libjpeg, giflib, a C/C++ toolchain, and Python for `node-gyp`
|
|
18
|
+
|
|
19
|
+
If `canvas` fails to install, verify your system packages first. The library ships `canvas` as a direct dependency, but native prerequisites still need to exist on the host.
|
|
20
|
+
|
|
21
|
+
## Quick Start
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
import { renderChess } from "chess2img";
|
|
25
|
+
|
|
26
|
+
const buffer = await renderChess({
|
|
27
|
+
fen: "4k3/8/8/8/8/8/8/4K3 w - - 0 1",
|
|
28
|
+
size: 480,
|
|
29
|
+
style: "merida",
|
|
30
|
+
});
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## JavaScript Usage
|
|
34
|
+
|
|
35
|
+
```js
|
|
36
|
+
const { ChessImageGenerator } = require("chess2img");
|
|
37
|
+
|
|
38
|
+
async function main() {
|
|
39
|
+
const generator = new ChessImageGenerator({
|
|
40
|
+
size: 800,
|
|
41
|
+
style: "alpha",
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
await generator.loadPGN("1. e4 e5 2. Nf3 Nc6 3. Bb5 a6");
|
|
45
|
+
generator.setHighlights(["e4", "e5"]);
|
|
46
|
+
|
|
47
|
+
const buffer = await generator.toBuffer();
|
|
48
|
+
await generator.toFile("board.png");
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
main().catch(console.error);
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## TypeScript Usage
|
|
55
|
+
|
|
56
|
+
```ts
|
|
57
|
+
import { ChessImageGenerator, renderChess } from "chess2img";
|
|
58
|
+
|
|
59
|
+
const buffer = await renderChess({
|
|
60
|
+
board: [
|
|
61
|
+
["r", "n", "b", "q", "k", "b", "n", "r"],
|
|
62
|
+
["p", "p", "p", "p", "p", "p", "p", "p"],
|
|
63
|
+
[null, null, null, null, null, null, null, null],
|
|
64
|
+
[null, null, null, null, null, null, null, null],
|
|
65
|
+
[null, null, null, null, null, null, null, null],
|
|
66
|
+
[null, null, null, null, null, null, null, null],
|
|
67
|
+
["P", "P", "P", "P", "P", "P", "P", "P"],
|
|
68
|
+
["R", "N", "B", "Q", "K", "B", "N", "R"],
|
|
69
|
+
],
|
|
70
|
+
size: 640,
|
|
71
|
+
style: "cburnett",
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
const generator = new ChessImageGenerator({ size: 640, theme: "leipzig" });
|
|
75
|
+
await generator.loadFEN("4k3/8/8/3p4/4P3/8/8/4K3 w - - 0 1");
|
|
76
|
+
await generator.toFile("board.png");
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## API
|
|
80
|
+
|
|
81
|
+
### Class API
|
|
82
|
+
|
|
83
|
+
```ts
|
|
84
|
+
const generator = new ChessImageGenerator({
|
|
85
|
+
size: 800,
|
|
86
|
+
style: "merida",
|
|
87
|
+
flipped: false,
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
await generator.loadFEN(fen);
|
|
91
|
+
generator.setHighlights(["e4", "d5"]);
|
|
92
|
+
|
|
93
|
+
const buffer = await generator.toBuffer();
|
|
94
|
+
await generator.toFile("board.png");
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Methods:
|
|
98
|
+
|
|
99
|
+
- `loadFEN(fen: string): Promise<void>`
|
|
100
|
+
- `loadPGN(pgn: string): Promise<void>`
|
|
101
|
+
- `loadBoard(board: BoardArray): Promise<void>`
|
|
102
|
+
- `setHighlights(squares: Square[]): void`
|
|
103
|
+
- `clearHighlights(): void`
|
|
104
|
+
- `toBuffer(): Promise<Buffer>`
|
|
105
|
+
- `toFile(filePath: string): Promise<void>`
|
|
106
|
+
|
|
107
|
+
Semantics:
|
|
108
|
+
|
|
109
|
+
- `setHighlights` replaces the current highlight set
|
|
110
|
+
- `clearHighlights` removes all highlights
|
|
111
|
+
- loading a new position clears highlights
|
|
112
|
+
- constructor defaults persist across position loads
|
|
113
|
+
|
|
114
|
+
### Functional API
|
|
115
|
+
|
|
116
|
+
```ts
|
|
117
|
+
const buffer = await renderChess({
|
|
118
|
+
fen,
|
|
119
|
+
size: 800,
|
|
120
|
+
style: "merida",
|
|
121
|
+
});
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
`renderChess` accepts exactly one of:
|
|
125
|
+
|
|
126
|
+
- `fen`
|
|
127
|
+
- `pgn`
|
|
128
|
+
- `board`
|
|
129
|
+
|
|
130
|
+
## Options Reference
|
|
131
|
+
|
|
132
|
+
- `size`: board size in pixels
|
|
133
|
+
- `padding`: `[top, right, bottom, left]`
|
|
134
|
+
- `flipped`: render from black's perspective when `true`
|
|
135
|
+
- `style`: built-in theme alias
|
|
136
|
+
- `theme`: built-in theme name, registered custom theme name, or inline `ThemeDefinition`
|
|
137
|
+
- `highlightSquares`: array of algebraic squares such as `["e4", "d5"]`
|
|
138
|
+
- `colors.lightSquare`
|
|
139
|
+
- `colors.darkSquare`
|
|
140
|
+
- `colors.highlight`
|
|
141
|
+
|
|
142
|
+
## Built-In Styles
|
|
143
|
+
|
|
144
|
+
- `merida`
|
|
145
|
+
- `alpha`
|
|
146
|
+
- `cburnett`
|
|
147
|
+
- `cheq`
|
|
148
|
+
- `leipzig`
|
|
149
|
+
|
|
150
|
+
## Custom Themes
|
|
151
|
+
|
|
152
|
+
Register a reusable theme globally:
|
|
153
|
+
|
|
154
|
+
```ts
|
|
155
|
+
import { registerTheme } from "chess2img";
|
|
156
|
+
|
|
157
|
+
registerTheme({
|
|
158
|
+
name: "custom-theme",
|
|
159
|
+
displayName: "Custom Theme",
|
|
160
|
+
license: "MIT",
|
|
161
|
+
attribution: "Project-authored",
|
|
162
|
+
pieces: {
|
|
163
|
+
// 12 canonical pieces required
|
|
164
|
+
},
|
|
165
|
+
});
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Or pass either:
|
|
169
|
+
|
|
170
|
+
- a registered custom theme name through `theme: "custom-theme"`
|
|
171
|
+
- an inline `ThemeDefinition` object through `theme: { ... }`
|
|
172
|
+
|
|
173
|
+
## Error Model
|
|
174
|
+
|
|
175
|
+
The library exports:
|
|
176
|
+
|
|
177
|
+
- `ValidationError`
|
|
178
|
+
- `ParseError`
|
|
179
|
+
- `ThemeError`
|
|
180
|
+
- `RenderError`
|
|
181
|
+
- `IOError`
|
|
182
|
+
|
|
183
|
+
## Architecture Summary
|
|
184
|
+
|
|
185
|
+
- `core` parses and validates chess position input into a canonical board model
|
|
186
|
+
- `themes` validates, registers, and resolves built-in or custom themes
|
|
187
|
+
- `render` rasterizes SVG piece assets and renders PNG output through `canvas`
|
|
188
|
+
- `api` orchestrates parsing, theme resolution, rendering, and file output
|
|
189
|
+
|
|
190
|
+
## Migration From `chess-image-generator`
|
|
191
|
+
|
|
192
|
+
| Old | New | Difference |
|
|
193
|
+
| --- | --- | --- |
|
|
194
|
+
| `loadArray` | `loadBoard` | renamed for clarity |
|
|
195
|
+
| `highlightSquares([...])` | `setHighlights([...])` | replacement semantics are explicit |
|
|
196
|
+
| `generateBuffer()` | `toBuffer()` | same role, new naming |
|
|
197
|
+
| `generatePNG(path)` | `toFile(path)` | IO is explicit in the API name |
|
|
198
|
+
| `style` only | `style` or `theme` | `theme` is the canonical path |
|
|
199
|
+
|
|
200
|
+
## Troubleshooting
|
|
201
|
+
|
|
202
|
+
- `canvas` install failures usually indicate missing native prerequisites on the host
|
|
203
|
+
- `ValidationError` from `renderChess` usually means multiple position inputs were provided or an option shape is invalid
|
|
204
|
+
- `ThemeError` usually indicates an unknown theme name or an incomplete custom theme definition
|
|
205
|
+
- `RenderError` usually indicates asset decoding/rasterization problems
|
|
206
|
+
|
|
207
|
+
## Asset Attribution
|
|
208
|
+
|
|
209
|
+
Bundled theme notes live in [ATTRIBUTION.md](/root/Chess2img/ATTRIBUTION.md).
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
|
|
3
|
+
<defs>
|
|
4
|
+
<filter id="alpha-bB-shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
5
|
+
<feDropShadow dx="0" dy="2" stdDeviation="2" flood-color="#00000033"/>
|
|
6
|
+
</filter>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect x="12" y="12" width="76" height="76" rx="14" fill="#ffffff08"/>
|
|
9
|
+
<g fill="#10243c" stroke="#4f9dff" stroke-width="2.2" filter="url(#alpha-bB-shadow)">
|
|
10
|
+
|
|
11
|
+
<circle cx="50" cy="22" r="6" />
|
|
12
|
+
<path d="M40 27c8 2 16 10 16 21 0 6-2 11-6 16H34l6-10c2-4 3-7 3-12 0-5-2-9-3-15z" />
|
|
13
|
+
<path d="M54 36l8 8" stroke-linecap="round" />
|
|
14
|
+
<path d="M26 69h48l-4 11H30z" />
|
|
15
|
+
|
|
16
|
+
</g>
|
|
17
|
+
<g fill="none" stroke="#f7fbff" stroke-width="2">
|
|
18
|
+
<path d="M30 82h40" stroke-linecap="round" />
|
|
19
|
+
</g>
|
|
20
|
+
</svg>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
|
|
3
|
+
<defs>
|
|
4
|
+
<filter id="alpha-bK-shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
5
|
+
<feDropShadow dx="0" dy="2" stdDeviation="2" flood-color="#00000033"/>
|
|
6
|
+
</filter>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect x="12" y="12" width="76" height="76" rx="14" fill="#ffffff08"/>
|
|
9
|
+
<g fill="#10243c" stroke="#4f9dff" stroke-width="2.2" filter="url(#alpha-bK-shadow)">
|
|
10
|
+
|
|
11
|
+
<rect x="38" y="44" width="24" height="9" rx="3" />
|
|
12
|
+
<rect x="46" y="23" width="8" height="24" rx="2" />
|
|
13
|
+
<rect x="35" y="31" width="30" height="8" rx="2" />
|
|
14
|
+
<path d="M26 69h48l-5 11H31z" />
|
|
15
|
+
<path d="M33 69V56c0-13 9-23 19-23s19 10 19 23v13z" />
|
|
16
|
+
|
|
17
|
+
</g>
|
|
18
|
+
<g fill="none" stroke="#f7fbff" stroke-width="2">
|
|
19
|
+
<path d="M30 82h40" stroke-linecap="round" />
|
|
20
|
+
</g>
|
|
21
|
+
</svg>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
|
|
3
|
+
<defs>
|
|
4
|
+
<filter id="alpha-bN-shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
5
|
+
<feDropShadow dx="0" dy="2" stdDeviation="2" flood-color="#00000033"/>
|
|
6
|
+
</filter>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect x="12" y="12" width="76" height="76" rx="14" fill="#ffffff08"/>
|
|
9
|
+
<g fill="#10243c" stroke="#4f9dff" stroke-width="2.2" filter="url(#alpha-bN-shadow)">
|
|
10
|
+
|
|
11
|
+
<path d="M34 66c0-17 4-31 16-42 5-5 13-8 18-6-2 4-3 8-2 12 4 2 7 6 8 11-5 0-9 1-13 4 4 5 6 12 6 21H34z" />
|
|
12
|
+
<circle cx="61" cy="33" r="2.5" />
|
|
13
|
+
<path d="M26 69h48l-4 11H30z" />
|
|
14
|
+
|
|
15
|
+
</g>
|
|
16
|
+
<g fill="none" stroke="#f7fbff" stroke-width="2">
|
|
17
|
+
<path d="M30 82h40" stroke-linecap="round" />
|
|
18
|
+
</g>
|
|
19
|
+
</svg>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
|
|
3
|
+
<defs>
|
|
4
|
+
<filter id="alpha-bP-shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
5
|
+
<feDropShadow dx="0" dy="2" stdDeviation="2" flood-color="#00000033"/>
|
|
6
|
+
</filter>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect x="12" y="12" width="76" height="76" rx="14" fill="#ffffff08"/>
|
|
9
|
+
<g fill="#10243c" stroke="#4f9dff" stroke-width="2.2" filter="url(#alpha-bP-shadow)">
|
|
10
|
+
|
|
11
|
+
<circle cx="50" cy="26" r="10" />
|
|
12
|
+
<path d="M37 69V58c0-9 6-17 13-17s13 8 13 17v11z" />
|
|
13
|
+
<path d="M26 69h48l-4 11H30z" />
|
|
14
|
+
|
|
15
|
+
</g>
|
|
16
|
+
<g fill="none" stroke="#f7fbff" stroke-width="2">
|
|
17
|
+
<path d="M30 82h40" stroke-linecap="round" />
|
|
18
|
+
</g>
|
|
19
|
+
</svg>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
|
|
3
|
+
<defs>
|
|
4
|
+
<filter id="alpha-bQ-shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
5
|
+
<feDropShadow dx="0" dy="2" stdDeviation="2" flood-color="#00000033"/>
|
|
6
|
+
</filter>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect x="12" y="12" width="76" height="76" rx="14" fill="#ffffff08"/>
|
|
9
|
+
<g fill="#10243c" stroke="#4f9dff" stroke-width="2.2" filter="url(#alpha-bQ-shadow)">
|
|
10
|
+
|
|
11
|
+
<circle cx="28" cy="33" r="5" />
|
|
12
|
+
<circle cx="40" cy="26" r="5" />
|
|
13
|
+
<circle cx="52" cy="24" r="5" />
|
|
14
|
+
<circle cx="64" cy="31" r="5" />
|
|
15
|
+
<path d="M26 69h48l-4 11H30z" />
|
|
16
|
+
<path d="M30 66l6-26 12 12 12-15 4 29z" />
|
|
17
|
+
|
|
18
|
+
</g>
|
|
19
|
+
<g fill="none" stroke="#f7fbff" stroke-width="2">
|
|
20
|
+
<path d="M30 82h40" stroke-linecap="round" />
|
|
21
|
+
</g>
|
|
22
|
+
</svg>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
|
|
3
|
+
<defs>
|
|
4
|
+
<filter id="alpha-bR-shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
5
|
+
<feDropShadow dx="0" dy="2" stdDeviation="2" flood-color="#00000033"/>
|
|
6
|
+
</filter>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect x="12" y="12" width="76" height="76" rx="14" fill="#ffffff08"/>
|
|
9
|
+
<g fill="#10243c" stroke="#4f9dff" stroke-width="2.2" filter="url(#alpha-bR-shadow)">
|
|
10
|
+
|
|
11
|
+
<rect x="29" y="23" width="42" height="11" rx="2" />
|
|
12
|
+
<rect x="33" y="18" width="8" height="10" rx="1" />
|
|
13
|
+
<rect x="46" y="18" width="8" height="10" rx="1" />
|
|
14
|
+
<rect x="59" y="18" width="8" height="10" rx="1" />
|
|
15
|
+
<path d="M32 69h40l-4 11H36z" />
|
|
16
|
+
<rect x="35" y="34" width="30" height="35" rx="4" />
|
|
17
|
+
|
|
18
|
+
</g>
|
|
19
|
+
<g fill="none" stroke="#f7fbff" stroke-width="2">
|
|
20
|
+
<path d="M30 82h40" stroke-linecap="round" />
|
|
21
|
+
</g>
|
|
22
|
+
</svg>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
|
|
3
|
+
<defs>
|
|
4
|
+
<filter id="alpha-wB-shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
5
|
+
<feDropShadow dx="0" dy="2" stdDeviation="2" flood-color="#00000033"/>
|
|
6
|
+
</filter>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect x="12" y="12" width="76" height="76" rx="14" fill="#ffffff00"/>
|
|
9
|
+
<g fill="#f7fbff" stroke="#173a62" stroke-width="2.2" filter="url(#alpha-wB-shadow)">
|
|
10
|
+
|
|
11
|
+
<circle cx="50" cy="22" r="6" />
|
|
12
|
+
<path d="M40 27c8 2 16 10 16 21 0 6-2 11-6 16H34l6-10c2-4 3-7 3-12 0-5-2-9-3-15z" />
|
|
13
|
+
<path d="M54 36l8 8" stroke-linecap="round" />
|
|
14
|
+
<path d="M26 69h48l-4 11H30z" />
|
|
15
|
+
|
|
16
|
+
</g>
|
|
17
|
+
<g fill="none" stroke="#4f9dff" stroke-width="2">
|
|
18
|
+
<path d="M30 82h40" stroke-linecap="round" />
|
|
19
|
+
</g>
|
|
20
|
+
</svg>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
|
|
3
|
+
<defs>
|
|
4
|
+
<filter id="alpha-wK-shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
5
|
+
<feDropShadow dx="0" dy="2" stdDeviation="2" flood-color="#00000033"/>
|
|
6
|
+
</filter>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect x="12" y="12" width="76" height="76" rx="14" fill="#ffffff00"/>
|
|
9
|
+
<g fill="#f7fbff" stroke="#173a62" stroke-width="2.2" filter="url(#alpha-wK-shadow)">
|
|
10
|
+
|
|
11
|
+
<rect x="38" y="44" width="24" height="9" rx="3" />
|
|
12
|
+
<rect x="46" y="23" width="8" height="24" rx="2" />
|
|
13
|
+
<rect x="35" y="31" width="30" height="8" rx="2" />
|
|
14
|
+
<path d="M26 69h48l-5 11H31z" />
|
|
15
|
+
<path d="M33 69V56c0-13 9-23 19-23s19 10 19 23v13z" />
|
|
16
|
+
|
|
17
|
+
</g>
|
|
18
|
+
<g fill="none" stroke="#4f9dff" stroke-width="2">
|
|
19
|
+
<path d="M30 82h40" stroke-linecap="round" />
|
|
20
|
+
</g>
|
|
21
|
+
</svg>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
|
|
3
|
+
<defs>
|
|
4
|
+
<filter id="alpha-wN-shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
5
|
+
<feDropShadow dx="0" dy="2" stdDeviation="2" flood-color="#00000033"/>
|
|
6
|
+
</filter>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect x="12" y="12" width="76" height="76" rx="14" fill="#ffffff00"/>
|
|
9
|
+
<g fill="#f7fbff" stroke="#173a62" stroke-width="2.2" filter="url(#alpha-wN-shadow)">
|
|
10
|
+
|
|
11
|
+
<path d="M34 66c0-17 4-31 16-42 5-5 13-8 18-6-2 4-3 8-2 12 4 2 7 6 8 11-5 0-9 1-13 4 4 5 6 12 6 21H34z" />
|
|
12
|
+
<circle cx="61" cy="33" r="2.5" />
|
|
13
|
+
<path d="M26 69h48l-4 11H30z" />
|
|
14
|
+
|
|
15
|
+
</g>
|
|
16
|
+
<g fill="none" stroke="#4f9dff" stroke-width="2">
|
|
17
|
+
<path d="M30 82h40" stroke-linecap="round" />
|
|
18
|
+
</g>
|
|
19
|
+
</svg>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
|
|
3
|
+
<defs>
|
|
4
|
+
<filter id="alpha-wP-shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
5
|
+
<feDropShadow dx="0" dy="2" stdDeviation="2" flood-color="#00000033"/>
|
|
6
|
+
</filter>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect x="12" y="12" width="76" height="76" rx="14" fill="#ffffff00"/>
|
|
9
|
+
<g fill="#f7fbff" stroke="#173a62" stroke-width="2.2" filter="url(#alpha-wP-shadow)">
|
|
10
|
+
|
|
11
|
+
<circle cx="50" cy="26" r="10" />
|
|
12
|
+
<path d="M37 69V58c0-9 6-17 13-17s13 8 13 17v11z" />
|
|
13
|
+
<path d="M26 69h48l-4 11H30z" />
|
|
14
|
+
|
|
15
|
+
</g>
|
|
16
|
+
<g fill="none" stroke="#4f9dff" stroke-width="2">
|
|
17
|
+
<path d="M30 82h40" stroke-linecap="round" />
|
|
18
|
+
</g>
|
|
19
|
+
</svg>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
|
|
3
|
+
<defs>
|
|
4
|
+
<filter id="alpha-wQ-shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
5
|
+
<feDropShadow dx="0" dy="2" stdDeviation="2" flood-color="#00000033"/>
|
|
6
|
+
</filter>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect x="12" y="12" width="76" height="76" rx="14" fill="#ffffff00"/>
|
|
9
|
+
<g fill="#f7fbff" stroke="#173a62" stroke-width="2.2" filter="url(#alpha-wQ-shadow)">
|
|
10
|
+
|
|
11
|
+
<circle cx="28" cy="33" r="5" />
|
|
12
|
+
<circle cx="40" cy="26" r="5" />
|
|
13
|
+
<circle cx="52" cy="24" r="5" />
|
|
14
|
+
<circle cx="64" cy="31" r="5" />
|
|
15
|
+
<path d="M26 69h48l-4 11H30z" />
|
|
16
|
+
<path d="M30 66l6-26 12 12 12-15 4 29z" />
|
|
17
|
+
|
|
18
|
+
</g>
|
|
19
|
+
<g fill="none" stroke="#4f9dff" stroke-width="2">
|
|
20
|
+
<path d="M30 82h40" stroke-linecap="round" />
|
|
21
|
+
</g>
|
|
22
|
+
</svg>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
|
|
3
|
+
<defs>
|
|
4
|
+
<filter id="alpha-wR-shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
5
|
+
<feDropShadow dx="0" dy="2" stdDeviation="2" flood-color="#00000033"/>
|
|
6
|
+
</filter>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect x="12" y="12" width="76" height="76" rx="14" fill="#ffffff00"/>
|
|
9
|
+
<g fill="#f7fbff" stroke="#173a62" stroke-width="2.2" filter="url(#alpha-wR-shadow)">
|
|
10
|
+
|
|
11
|
+
<rect x="29" y="23" width="42" height="11" rx="2" />
|
|
12
|
+
<rect x="33" y="18" width="8" height="10" rx="1" />
|
|
13
|
+
<rect x="46" y="18" width="8" height="10" rx="1" />
|
|
14
|
+
<rect x="59" y="18" width="8" height="10" rx="1" />
|
|
15
|
+
<path d="M32 69h40l-4 11H36z" />
|
|
16
|
+
<rect x="35" y="34" width="30" height="35" rx="4" />
|
|
17
|
+
|
|
18
|
+
</g>
|
|
19
|
+
<g fill="none" stroke="#4f9dff" stroke-width="2">
|
|
20
|
+
<path d="M30 82h40" stroke-linecap="round" />
|
|
21
|
+
</g>
|
|
22
|
+
</svg>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
|
|
3
|
+
<defs>
|
|
4
|
+
<filter id="cburnett-bB-shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
5
|
+
<feDropShadow dx="0" dy="2" stdDeviation="2" flood-color="#00000033"/>
|
|
6
|
+
</filter>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect x="12" y="12" width="76" height="76" rx="14" fill="#ffffff08"/>
|
|
9
|
+
<g fill="#231f20" stroke="#c23b22" stroke-width="2.8" filter="url(#cburnett-bB-shadow)">
|
|
10
|
+
|
|
11
|
+
<circle cx="50" cy="22" r="6" />
|
|
12
|
+
<path d="M40 27c8 2 16 10 16 21 0 6-2 11-6 16H34l6-10c2-4 3-7 3-12 0-5-2-9-3-15z" />
|
|
13
|
+
<path d="M54 36l8 8" stroke-linecap="round" />
|
|
14
|
+
<path d="M26 69h48l-4 11H30z" />
|
|
15
|
+
|
|
16
|
+
</g>
|
|
17
|
+
<g fill="none" stroke="#fff8f1" stroke-width="2">
|
|
18
|
+
<path d="M30 82h40" stroke-linecap="round" />
|
|
19
|
+
</g>
|
|
20
|
+
</svg>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
|
|
3
|
+
<defs>
|
|
4
|
+
<filter id="cburnett-bK-shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
5
|
+
<feDropShadow dx="0" dy="2" stdDeviation="2" flood-color="#00000033"/>
|
|
6
|
+
</filter>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect x="12" y="12" width="76" height="76" rx="14" fill="#ffffff08"/>
|
|
9
|
+
<g fill="#231f20" stroke="#c23b22" stroke-width="2.8" filter="url(#cburnett-bK-shadow)">
|
|
10
|
+
|
|
11
|
+
<rect x="38" y="44" width="24" height="9" rx="3" />
|
|
12
|
+
<rect x="46" y="23" width="8" height="24" rx="2" />
|
|
13
|
+
<rect x="35" y="31" width="30" height="8" rx="2" />
|
|
14
|
+
<path d="M26 69h48l-5 11H31z" />
|
|
15
|
+
<path d="M33 69V56c0-13 9-23 19-23s19 10 19 23v13z" />
|
|
16
|
+
|
|
17
|
+
</g>
|
|
18
|
+
<g fill="none" stroke="#fff8f1" stroke-width="2">
|
|
19
|
+
<path d="M30 82h40" stroke-linecap="round" />
|
|
20
|
+
</g>
|
|
21
|
+
</svg>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
|
|
3
|
+
<defs>
|
|
4
|
+
<filter id="cburnett-bN-shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
5
|
+
<feDropShadow dx="0" dy="2" stdDeviation="2" flood-color="#00000033"/>
|
|
6
|
+
</filter>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect x="12" y="12" width="76" height="76" rx="14" fill="#ffffff08"/>
|
|
9
|
+
<g fill="#231f20" stroke="#c23b22" stroke-width="2.8" filter="url(#cburnett-bN-shadow)">
|
|
10
|
+
|
|
11
|
+
<path d="M34 66c0-17 4-31 16-42 5-5 13-8 18-6-2 4-3 8-2 12 4 2 7 6 8 11-5 0-9 1-13 4 4 5 6 12 6 21H34z" />
|
|
12
|
+
<circle cx="61" cy="33" r="2.5" />
|
|
13
|
+
<path d="M26 69h48l-4 11H30z" />
|
|
14
|
+
|
|
15
|
+
</g>
|
|
16
|
+
<g fill="none" stroke="#fff8f1" stroke-width="2">
|
|
17
|
+
<path d="M30 82h40" stroke-linecap="round" />
|
|
18
|
+
</g>
|
|
19
|
+
</svg>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
|
|
3
|
+
<defs>
|
|
4
|
+
<filter id="cburnett-bP-shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
5
|
+
<feDropShadow dx="0" dy="2" stdDeviation="2" flood-color="#00000033"/>
|
|
6
|
+
</filter>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect x="12" y="12" width="76" height="76" rx="14" fill="#ffffff08"/>
|
|
9
|
+
<g fill="#231f20" stroke="#c23b22" stroke-width="2.8" filter="url(#cburnett-bP-shadow)">
|
|
10
|
+
|
|
11
|
+
<circle cx="50" cy="26" r="10" />
|
|
12
|
+
<path d="M37 69V58c0-9 6-17 13-17s13 8 13 17v11z" />
|
|
13
|
+
<path d="M26 69h48l-4 11H30z" />
|
|
14
|
+
|
|
15
|
+
</g>
|
|
16
|
+
<g fill="none" stroke="#fff8f1" stroke-width="2">
|
|
17
|
+
<path d="M30 82h40" stroke-linecap="round" />
|
|
18
|
+
</g>
|
|
19
|
+
</svg>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
|
|
3
|
+
<defs>
|
|
4
|
+
<filter id="cburnett-bQ-shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
5
|
+
<feDropShadow dx="0" dy="2" stdDeviation="2" flood-color="#00000033"/>
|
|
6
|
+
</filter>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect x="12" y="12" width="76" height="76" rx="14" fill="#ffffff08"/>
|
|
9
|
+
<g fill="#231f20" stroke="#c23b22" stroke-width="2.8" filter="url(#cburnett-bQ-shadow)">
|
|
10
|
+
|
|
11
|
+
<circle cx="28" cy="33" r="5" />
|
|
12
|
+
<circle cx="40" cy="26" r="5" />
|
|
13
|
+
<circle cx="52" cy="24" r="5" />
|
|
14
|
+
<circle cx="64" cy="31" r="5" />
|
|
15
|
+
<path d="M26 69h48l-4 11H30z" />
|
|
16
|
+
<path d="M30 66l6-26 12 12 12-15 4 29z" />
|
|
17
|
+
|
|
18
|
+
</g>
|
|
19
|
+
<g fill="none" stroke="#fff8f1" stroke-width="2">
|
|
20
|
+
<path d="M30 82h40" stroke-linecap="round" />
|
|
21
|
+
</g>
|
|
22
|
+
</svg>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
|
|
3
|
+
<defs>
|
|
4
|
+
<filter id="cburnett-bR-shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
5
|
+
<feDropShadow dx="0" dy="2" stdDeviation="2" flood-color="#00000033"/>
|
|
6
|
+
</filter>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect x="12" y="12" width="76" height="76" rx="14" fill="#ffffff08"/>
|
|
9
|
+
<g fill="#231f20" stroke="#c23b22" stroke-width="2.8" filter="url(#cburnett-bR-shadow)">
|
|
10
|
+
|
|
11
|
+
<rect x="29" y="23" width="42" height="11" rx="2" />
|
|
12
|
+
<rect x="33" y="18" width="8" height="10" rx="1" />
|
|
13
|
+
<rect x="46" y="18" width="8" height="10" rx="1" />
|
|
14
|
+
<rect x="59" y="18" width="8" height="10" rx="1" />
|
|
15
|
+
<path d="M32 69h40l-4 11H36z" />
|
|
16
|
+
<rect x="35" y="34" width="30" height="35" rx="4" />
|
|
17
|
+
|
|
18
|
+
</g>
|
|
19
|
+
<g fill="none" stroke="#fff8f1" stroke-width="2">
|
|
20
|
+
<path d="M30 82h40" stroke-linecap="round" />
|
|
21
|
+
</g>
|
|
22
|
+
</svg>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
|
|
3
|
+
<defs>
|
|
4
|
+
<filter id="cburnett-wB-shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
5
|
+
<feDropShadow dx="0" dy="2" stdDeviation="2" flood-color="#00000033"/>
|
|
6
|
+
</filter>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect x="12" y="12" width="76" height="76" rx="14" fill="#ffffff00"/>
|
|
9
|
+
<g fill="#fff8f1" stroke="#5e2218" stroke-width="2.8" filter="url(#cburnett-wB-shadow)">
|
|
10
|
+
|
|
11
|
+
<circle cx="50" cy="22" r="6" />
|
|
12
|
+
<path d="M40 27c8 2 16 10 16 21 0 6-2 11-6 16H34l6-10c2-4 3-7 3-12 0-5-2-9-3-15z" />
|
|
13
|
+
<path d="M54 36l8 8" stroke-linecap="round" />
|
|
14
|
+
<path d="M26 69h48l-4 11H30z" />
|
|
15
|
+
|
|
16
|
+
</g>
|
|
17
|
+
<g fill="none" stroke="#c23b22" stroke-width="2">
|
|
18
|
+
<path d="M30 82h40" stroke-linecap="round" />
|
|
19
|
+
</g>
|
|
20
|
+
</svg>
|