yaft: use neutrino font renderer

This commit is contained in:
Stefan Seyfried
2018-01-27 18:31:53 +01:00
committed by Thilo Graf
parent dbf83a85f2
commit 4ee09e175d
3 changed files with 71 additions and 507 deletions

View File

@@ -1,408 +0,0 @@
struct glyph_t {
uint32_t code;
uint8_t width;
uint32_t bitmap[24];
};
#if 0
enum {
CELL_WIDTH = 12,
CELL_HEIGHT = 24
};
#endif
static const struct glyph_t hd_glyphs[] = {
{12, 24, {0}}, /* entry 0 is width, height, dummy */
{32, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{33, 1, {0x0, 0x0, 0x0, 0x0, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x0, 0x0, 0x600, 0x600, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0}},
{34, 1, {0x0, 0x0, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{35, 1, {0x0, 0x0, 0x0, 0x0, 0x1980, 0x1980, 0x1980, 0x1980, 0x7FE0, 0x1980, 0x1980, 0x1980, 0x1980, 0x1980, 0x7FE0, 0x1980, 0x1980, 0x1980, 0x1980, 0x0, 0x0, 0x0, 0x0, 0x0}},
{36, 1, {0x0, 0x0, 0x0, 0x600, 0x600, 0x1F80, 0x36C0, 0x6660, 0x6600, 0x6600, 0x3600, 0x1F80, 0x6C0, 0x660, 0x660, 0x6660, 0x36C0, 0x1F80, 0x600, 0x600, 0x0, 0x0, 0x0, 0x0}},
{37, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x38C0, 0x6CC0, 0x6D80, 0x3980, 0x300, 0x300, 0x600, 0x600, 0xC00, 0xC00, 0x19C0, 0x1B60, 0x3360, 0x31C0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{38, 1, {0x0, 0x0, 0x0, 0x0, 0xE00, 0x1B00, 0x3180, 0x3180, 0x3180, 0x1B00, 0xE00, 0x1E60, 0x3360, 0x61C0, 0x60C0, 0x60C0, 0x61C0, 0x3360, 0x1E60, 0x0, 0x0, 0x0, 0x0, 0x0}},
{39, 1, {0x0, 0x0, 0x600, 0x600, 0x600, 0x600, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{40, 1, {0x0, 0x0, 0x0, 0x0, 0x300, 0x600, 0xC00, 0xC00, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0xC00, 0xC00, 0x600, 0x300, 0x0, 0x0, 0x0, 0x0, 0x0}},
{41, 1, {0x0, 0x0, 0x0, 0x0, 0x1800, 0xC00, 0x600, 0x600, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, 0x600, 0x600, 0xC00, 0x1800, 0x0, 0x0, 0x0, 0x0, 0x0}},
{42, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60C0, 0x3180, 0x1B00, 0xE00, 0xFFE0, 0xE00, 0x1B00, 0x3180, 0x60C0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{43, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x600, 0x600, 0x600, 0x600, 0x7FE0, 0x600, 0x600, 0x600, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{44, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x600, 0x600, 0x600, 0x600, 0xC00, 0x0, 0x0, 0x0, 0x0}},
{45, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7FE0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{46, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x600, 0x600, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0}},
{47, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0xC0, 0xC0, 0x180, 0x180, 0x300, 0x300, 0x600, 0x600, 0xC00, 0xC00, 0x1800, 0x1800, 0x3000, 0x3000, 0x0, 0x0, 0x0, 0x0, 0x0}},
{48, 1, {0x0, 0x0, 0x0, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x60E0, 0x61E0, 0x6360, 0x6660, 0x6C60, 0x7860, 0x7060, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{49, 1, {0x0, 0x0, 0x0, 0x0, 0x600, 0xE00, 0x1E00, 0x3600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x3FC0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{50, 1, {0x0, 0x0, 0x0, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x60, 0xC0, 0x180, 0x300, 0x600, 0xC00, 0x1800, 0x3000, 0x6000, 0x7FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{51, 1, {0x0, 0x0, 0x0, 0x0, 0x1F80, 0x30C0, 0x6060, 0x60, 0x60, 0x60, 0xC0, 0xF80, 0xC0, 0x60, 0x60, 0x60, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{52, 1, {0x0, 0x0, 0x0, 0x0, 0x60, 0xE0, 0x1E0, 0x360, 0x660, 0xC60, 0x1860, 0x3060, 0x6060, 0x6060, 0x6060, 0x7FE0, 0x60, 0x60, 0x60, 0x0, 0x0, 0x0, 0x0, 0x0}},
{53, 1, {0x0, 0x0, 0x0, 0x0, 0x7FE0, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x7F80, 0xC0, 0x60, 0x60, 0x60, 0x60, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{54, 1, {0x0, 0x0, 0x0, 0x0, 0x1FC0, 0x3000, 0x6000, 0x6000, 0x6000, 0x6000, 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{55, 1, {0x0, 0x0, 0x0, 0x0, 0x7FE0, 0x6060, 0x6060, 0x60, 0xC0, 0xC0, 0x180, 0x180, 0x300, 0x300, 0x600, 0x600, 0x600, 0x600, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0}},
{56, 1, {0x0, 0x0, 0x0, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{57, 1, {0x0, 0x0, 0x0, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x3060, 0x1FE0, 0x60, 0x60, 0x60, 0x60, 0xC0, 0x3F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{58, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x600, 0x600, 0x600, 0x0, 0x0, 0x0, 0x0, 0x600, 0x600, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{59, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x600, 0x600, 0x600, 0x0, 0x0, 0x0, 0x0, 0x600, 0x600, 0x600, 0x600, 0xC00, 0x0, 0x0, 0x0, 0x0}},
{60, 1, {0x0, 0x0, 0x0, 0x0, 0xC0, 0x180, 0x300, 0x600, 0xC00, 0x1800, 0x3000, 0x6000, 0x3000, 0x1800, 0xC00, 0x600, 0x300, 0x180, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{61, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7FE0, 0x0, 0x0, 0x0, 0x0, 0x7FE0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{62, 1, {0x0, 0x0, 0x0, 0x0, 0x6000, 0x3000, 0x1800, 0xC00, 0x600, 0x300, 0x180, 0xC0, 0x180, 0x300, 0x600, 0xC00, 0x1800, 0x3000, 0x6000, 0x0, 0x0, 0x0, 0x0, 0x0}},
{63, 1, {0x0, 0x0, 0x0, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0xC0, 0x180, 0x300, 0x600, 0x600, 0x0, 0x0, 0x600, 0x600, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0}},
{64, 1, {0x0, 0x0, 0x0, 0x0, 0x3F80, 0x60C0, 0xC060, 0xC3E0, 0xC660, 0xCC60, 0xCC60, 0xCC60, 0xCC60, 0xCC60, 0xC660, 0xC3E0, 0xC000, 0x6000, 0x3FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{65, 1, {0x0, 0x0, 0x0, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x0, 0x0, 0x0, 0x0, 0x0}},
{66, 1, {0x0, 0x0, 0x0, 0x0, 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x60C0, 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x60C0, 0x7F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{67, 1, {0x0, 0x0, 0x0, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{68, 1, {0x0, 0x0, 0x0, 0x0, 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x60C0, 0x7F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{69, 1, {0x0, 0x0, 0x0, 0x0, 0x7FE0, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x7FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{70, 1, {0x0, 0x0, 0x0, 0x0, 0x7FE0, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x0, 0x0, 0x0, 0x0, 0x0}},
{71, 1, {0x0, 0x0, 0x0, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6000, 0x6000, 0x6000, 0x63E0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{72, 1, {0x0, 0x0, 0x0, 0x0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x0, 0x0, 0x0, 0x0, 0x0}},
{73, 1, {0x0, 0x0, 0x0, 0x0, 0x1F80, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{74, 1, {0x0, 0x0, 0x0, 0x0, 0x3F0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60C0, 0x60C0, 0x60C0, 0x3180, 0x1F00, 0x0, 0x0, 0x0, 0x0, 0x0}},
{75, 1, {0x0, 0x0, 0x0, 0x0, 0x6060, 0x60C0, 0x6180, 0x6300, 0x6600, 0x6C00, 0x7800, 0x7000, 0x7800, 0x6C00, 0x6600, 0x6300, 0x6180, 0x60C0, 0x6060, 0x0, 0x0, 0x0, 0x0, 0x0}},
{76, 1, {0x0, 0x0, 0x0, 0x0, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x7FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{77, 1, {0x0, 0x0, 0x0, 0x0, 0x8020, 0xC060, 0xE0E0, 0xF1E0, 0xDB60, 0xCE60, 0xC460, 0xC060, 0xC060, 0xC060, 0xC060, 0xC060, 0xC060, 0xC060, 0xC060, 0x0, 0x0, 0x0, 0x0, 0x0}},
{78, 1, {0x0, 0x0, 0x0, 0x0, 0x6060, 0x6060, 0x6060, 0x6060, 0x7060, 0x7860, 0x6C60, 0x6660, 0x6360, 0x61E0, 0x60E0, 0x6060, 0x6060, 0x6060, 0x6060, 0x0, 0x0, 0x0, 0x0, 0x0}},
{79, 1, {0x0, 0x0, 0x0, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{80, 1, {0x0, 0x0, 0x0, 0x0, 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x60C0, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x0, 0x0, 0x0, 0x0, 0x0}},
{81, 1, {0x0, 0x0, 0x0, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6660, 0x33C0, 0x1F80, 0xC0, 0x60, 0x0, 0x0, 0x0}},
{82, 1, {0x0, 0x0, 0x0, 0x0, 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x60C0, 0x7F80, 0x7800, 0x6C00, 0x6600, 0x6300, 0x6180, 0x60C0, 0x6060, 0x0, 0x0, 0x0, 0x0, 0x0}},
{83, 1, {0x0, 0x0, 0x0, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6000, 0x6000, 0x6000, 0x3000, 0x1F80, 0xC0, 0x60, 0x60, 0x60, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{84, 1, {0x0, 0x0, 0x0, 0x0, 0x7FE0, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0}},
{85, 1, {0x0, 0x0, 0x0, 0x0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{86, 1, {0x0, 0x0, 0x0, 0x0, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x30C0, 0x30C0, 0x30C0, 0x1980, 0x1980, 0x1980, 0xF00, 0xF00, 0x600, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0}},
{87, 1, {0x0, 0x0, 0x0, 0x0, 0xC060, 0xC060, 0xC060, 0xC060, 0xC060, 0xC060, 0xC060, 0xC060, 0xC460, 0xCE60, 0xDB60, 0xF1E0, 0xE0E0, 0xC060, 0x8020, 0x0, 0x0, 0x0, 0x0, 0x0}},
{88, 1, {0x0, 0x0, 0x0, 0x0, 0x6060, 0x6060, 0x30C0, 0x30C0, 0x1980, 0x1980, 0xF00, 0x600, 0xF00, 0x1980, 0x1980, 0x30C0, 0x30C0, 0x6060, 0x6060, 0x0, 0x0, 0x0, 0x0, 0x0}},
{89, 1, {0x0, 0x0, 0x0, 0x0, 0x6060, 0x6060, 0x30C0, 0x30C0, 0x1980, 0x1980, 0xF00, 0xF00, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0}},
{90, 1, {0x0, 0x0, 0x0, 0x0, 0x7FE0, 0x60, 0x60, 0x60, 0xC0, 0x180, 0x300, 0x600, 0xC00, 0x1800, 0x3000, 0x6000, 0x6000, 0x6000, 0x7FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{91, 1, {0x0, 0x0, 0x0, 0x0, 0x1F00, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1F00, 0x0, 0x0, 0x0, 0x0, 0x0}},
{92, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x3000, 0x3000, 0x1800, 0x1800, 0xC00, 0xC00, 0x600, 0x600, 0x300, 0x300, 0x180, 0x180, 0xC0, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{93, 1, {0x0, 0x0, 0x0, 0x0, 0x1F00, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, 0x1F00, 0x0, 0x0, 0x0, 0x0, 0x0}},
{94, 1, {0x0, 0x0, 0x600, 0xF00, 0x1980, 0x30C0, 0x6060, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{95, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7FE0, 0x0, 0x0, 0x0}},
{96, 1, {0x1800, 0xC00, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{97, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F80, 0xC0, 0x60, 0x60, 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x3060, 0x1FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{98, 1, {0x0, 0x0, 0x0, 0x0, 0x6000, 0x6000, 0x6000, 0x6000, 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x60C0, 0x7F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{99, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{100, 1, {0x0, 0x0, 0x0, 0x0, 0x60, 0x60, 0x60, 0x60, 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x3060, 0x1FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{101, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6000, 0x6000, 0x6000, 0x3060, 0x1FC0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{102, 1, {0x0, 0x0, 0x0, 0x0, 0x3E0, 0x600, 0x600, 0x600, 0x3FC0, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0}},
{103, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30E0, 0x1FE0, 0x60, 0x60, 0xC0, 0x3F80, 0x0}},
{104, 1, {0x0, 0x0, 0x0, 0x0, 0x6000, 0x6000, 0x6000, 0x6000, 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x0, 0x0, 0x0, 0x0, 0x0}},
{105, 1, {0x0, 0x0, 0x0, 0x0, 0x600, 0x600, 0x600, 0x0, 0x1E00, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{106, 1, {0x0, 0x0, 0x0, 0x0, 0xC0, 0xC0, 0xC0, 0x0, 0x3C0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x30C0, 0x30C0, 0x1980, 0xF00, 0x0}},
{107, 1, {0x0, 0x0, 0x0, 0x0, 0x3000, 0x3000, 0x3000, 0x3000, 0x3060, 0x30C0, 0x3180, 0x3300, 0x3600, 0x3C00, 0x3600, 0x3300, 0x3180, 0x30C0, 0x3060, 0x0, 0x0, 0x0, 0x0, 0x0}},
{108, 1, {0x0, 0x0, 0x0, 0x0, 0x1E00, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{109, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7F80, 0x66C0, 0x6660, 0x6660, 0x6660, 0x6660, 0x6660, 0x6660, 0x6660, 0x6660, 0x6660, 0x0, 0x0, 0x0, 0x0, 0x0}},
{110, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x0, 0x0, 0x0, 0x0, 0x0}},
{111, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{112, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x60C0, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, 0x0}},
{113, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x3060, 0x1FE0, 0x60, 0x60, 0x60, 0x60, 0x0}},
{114, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x67E0, 0x6C00, 0x7800, 0x7000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x0, 0x0, 0x0, 0x0, 0x0}},
{115, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3FC0, 0x6060, 0x6000, 0x6000, 0x6000, 0x3FC0, 0x60, 0x60, 0x60, 0x6060, 0x3FC0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{116, 1, {0x0, 0x0, 0x0, 0x0, 0xC00, 0xC00, 0xC00, 0xC00, 0x7F80, 0xC00, 0xC00, 0xC00, 0xC00, 0xC00, 0xC00, 0xC00, 0xC00, 0xC00, 0x7C0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{117, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x3060, 0x1FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{118, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6060, 0x6060, 0x6060, 0x30C0, 0x30C0, 0x1980, 0x1980, 0xF00, 0xF00, 0x600, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0}},
{119, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6660, 0x6660, 0x6660, 0x6660, 0x6660, 0x6660, 0x3FC0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{120, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6060, 0x6060, 0x30C0, 0x1980, 0xF00, 0x600, 0xF00, 0x1980, 0x30C0, 0x6060, 0x6060, 0x0, 0x0, 0x0, 0x0, 0x0}},
{121, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30E0, 0x1FE0, 0x60, 0x60, 0xC0, 0x3F80, 0x0}},
{122, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7FE0, 0x60, 0xC0, 0x180, 0x300, 0x600, 0xC00, 0x1800, 0x3000, 0x6000, 0x7FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{123, 1, {0x0, 0x0, 0x0, 0x0, 0x380, 0x600, 0xC00, 0xC00, 0xC00, 0xC00, 0xC00, 0x3800, 0xC00, 0xC00, 0xC00, 0xC00, 0xC00, 0x600, 0x380, 0x0, 0x0, 0x0, 0x0, 0x0}},
{124, 1, {0x0, 0x0, 0x0, 0x0, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0}},
{125, 1, {0x0, 0x0, 0x0, 0x0, 0x3800, 0xC00, 0x600, 0x600, 0x600, 0x600, 0x600, 0x380, 0x600, 0x600, 0x600, 0x600, 0x600, 0xC00, 0x3800, 0x0, 0x0, 0x0, 0x0, 0x0}},
{126, 1, {0x0, 0x0, 0x3C60, 0x6660, 0x6660, 0x63C0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{160, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{161, 1, {0x0, 0x0, 0x0, 0x0, 0x600, 0x600, 0x600, 0x0, 0x0, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0}},
{162, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x600, 0x600, 0x1F80, 0x36C0, 0x6660, 0x6600, 0x6600, 0x6600, 0x6600, 0x6600, 0x6660, 0x36C0, 0x1F80, 0x600, 0x600, 0x0, 0x0, 0x0}},
{163, 1, {0x0, 0x0, 0x0, 0x0, 0xF00, 0x1980, 0x30C0, 0x3000, 0x3000, 0x3000, 0x3000, 0x7F00, 0x3000, 0x3000, 0x3000, 0x3000, 0x3060, 0x3060, 0x7FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{164, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC060, 0x60C0, 0x3F80, 0x60C0, 0x60C0, 0x60C0, 0x60C0, 0x60C0, 0x60C0, 0x3F80, 0x60C0, 0xC060, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{165, 1, {0x0, 0x0, 0x0, 0x0, 0x6060, 0x6060, 0x30C0, 0x30C0, 0x1980, 0x1980, 0xF00, 0x600, 0x600, 0x3FC0, 0x600, 0x600, 0x3FC0, 0x600, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0}},
{166, 1, {0x0, 0x0, 0x0, 0x0, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x0, 0x0, 0x0, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0}},
{167, 1, {0x0, 0x0, 0x0, 0x1F00, 0x3180, 0x3000, 0x3000, 0x1E00, 0x3300, 0x3180, 0x3180, 0x3180, 0x3180, 0x1980, 0xF00, 0x180, 0x180, 0x3180, 0x1F00, 0x0, 0x0, 0x0, 0x0, 0x0}},
{168, 1, {0x1980, 0x1980, 0x1980, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{169, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F80, 0x4040, 0x9F20, 0xB1A0, 0xB1A0, 0xB020, 0xB020, 0xB1A0, 0xB1A0, 0x9F20, 0x4040, 0x3F80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{170, 1, {0x0, 0x3F80, 0xC0, 0xC0, 0x3FC0, 0x60C0, 0x60C0, 0x60C0, 0x60C0, 0x3FC0, 0x0, 0x7FC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{171, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x660, 0xCC0, 0x1980, 0x3300, 0x6600, 0xCC00, 0x6600, 0x3300, 0x1980, 0xCC0, 0x660, 0x0, 0x0, 0x0, 0x0, 0x0}},
{172, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7FE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{174, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F80, 0x4040, 0xBF20, 0xB1A0, 0xB1A0, 0xB1A0, 0xBF20, 0xB620, 0xB320, 0xB1A0, 0x4040, 0x3F80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{175, 1, {0x0, 0x3FC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{176, 1, {0x0, 0x0, 0x1F00, 0x3180, 0x3180, 0x3180, 0x3180, 0x1F00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{177, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x600, 0x600, 0x600, 0x600, 0x7FE0, 0x600, 0x600, 0x600, 0x600, 0x0, 0x0, 0x7FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{178, 1, {0x0, 0x0, 0xF00, 0x1980, 0x1980, 0x300, 0x600, 0xC00, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{179, 1, {0x0, 0x0, 0xF00, 0x1980, 0x180, 0x700, 0x180, 0x1980, 0xF00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{180, 1, {0x180, 0x300, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{181, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x60E0, 0x61E0, 0x7F60, 0x6000, 0x6000, 0x6000, 0x6000, 0x0}},
{182, 1, {0x0, 0x0, 0x0, 0x0, 0x3FE0, 0x6660, 0x6660, 0x6660, 0x6660, 0x6660, 0x6660, 0x3E60, 0x660, 0x660, 0x660, 0x660, 0x660, 0x660, 0x660, 0x0, 0x0, 0x0, 0x0, 0x0}},
{183, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x600, 0x600, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{184, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x600, 0x600, 0x600, 0xC00, 0x0}},
{185, 1, {0x0, 0x0, 0x600, 0xE00, 0x1E00, 0x600, 0x600, 0x600, 0xF00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{186, 1, {0x0, 0x1F00, 0x3180, 0x60C0, 0x60C0, 0x60C0, 0x60C0, 0x60C0, 0x3180, 0x1F00, 0x0, 0x7FC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{187, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xCC00, 0x6600, 0x3300, 0x1980, 0xCC0, 0x660, 0xCC0, 0x1980, 0x3300, 0x6600, 0xCC00, 0x0, 0x0, 0x0, 0x0, 0x0}},
{188, 1, {0x0, 0x0, 0x0, 0xC00, 0x1C00, 0x3C00, 0xC00, 0xC20, 0xC60, 0xCC0, 0x180, 0x300, 0x660, 0xCE0, 0x19E0, 0x3360, 0x6660, 0x47E0, 0x60, 0x60, 0x0, 0x0, 0x0, 0x0}},
{189, 1, {0x0, 0x0, 0x0, 0xC00, 0x1C00, 0x3C00, 0xC20, 0xC60, 0xCC0, 0xD80, 0x300, 0x600, 0xC00, 0x1BC0, 0x3660, 0x6660, 0x40C0, 0x180, 0x300, 0x7E0, 0x0, 0x0, 0x0, 0x0}},
{190, 1, {0x0, 0x0, 0x0, 0x3C00, 0x6600, 0x600, 0x1C00, 0x620, 0x6660, 0x3CC0, 0x180, 0x300, 0x660, 0xCE0, 0x19E0, 0x3360, 0x6660, 0x47E0, 0x60, 0x60, 0x0, 0x0, 0x0, 0x0}},
{191, 1, {0x0, 0x0, 0x0, 0x0, 0x600, 0x600, 0x600, 0x0, 0x0, 0x600, 0x600, 0xC00, 0x1800, 0x3000, 0x6060, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{192, 1, {0x1800, 0xC00, 0x600, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x0, 0x0, 0x0, 0x0, 0x0}},
{193, 1, {0x180, 0x300, 0x600, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x0, 0x0, 0x0, 0x0, 0x0}},
{194, 1, {0x600, 0xF00, 0x1980, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x0, 0x0, 0x0, 0x0, 0x0}},
{195, 1, {0x1CC0, 0x36C0, 0x3380, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x0, 0x0, 0x0, 0x0, 0x0}},
{196, 1, {0x1980, 0x1980, 0x1980, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x0, 0x0, 0x0, 0x0, 0x0}},
{197, 1, {0xF00, 0x1980, 0x1980, 0xF00, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x0, 0x0, 0x0, 0x0, 0x0}},
{198, 1, {0x0, 0x0, 0x0, 0x0, 0x3FF0, 0x6300, 0xC300, 0xC300, 0xC300, 0xC300, 0xC300, 0xFFF0, 0xC300, 0xC300, 0xC300, 0xC300, 0xC300, 0xC300, 0xC3F0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{199, 1, {0x0, 0x0, 0x0, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x600, 0x600, 0x600, 0xC00, 0x0}},
{200, 1, {0x1800, 0xC00, 0x600, 0x0, 0x7FE0, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x7FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{201, 1, {0x180, 0x300, 0x600, 0x0, 0x7FE0, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x7FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{202, 1, {0x600, 0xF00, 0x1980, 0x0, 0x7FE0, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x7FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{203, 1, {0x1980, 0x1980, 0x1980, 0x0, 0x7FE0, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x7FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{204, 1, {0x1800, 0xC00, 0x600, 0x0, 0x1F80, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{205, 1, {0x180, 0x300, 0x600, 0x0, 0x1F80, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{206, 1, {0x600, 0xF00, 0x1980, 0x0, 0x1F80, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{207, 1, {0x1980, 0x1980, 0x1980, 0x0, 0x1F80, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{208, 1, {0x0, 0x0, 0x0, 0x0, 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0xFE60, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x60C0, 0x7F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{209, 1, {0x1CC0, 0x36C0, 0x3380, 0x0, 0x6060, 0x6060, 0x6060, 0x6060, 0x7060, 0x7860, 0x6C60, 0x6660, 0x6360, 0x61E0, 0x60E0, 0x6060, 0x6060, 0x6060, 0x6060, 0x0, 0x0, 0x0, 0x0, 0x0}},
{210, 1, {0x1800, 0xC00, 0x600, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{211, 1, {0x180, 0x300, 0x600, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{212, 1, {0x600, 0xF00, 0x1980, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{213, 1, {0x1CC0, 0x36C0, 0x3380, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{214, 1, {0x1980, 0x1980, 0x1980, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{215, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6060, 0x30C0, 0x1980, 0xF00, 0x600, 0xF00, 0x1980, 0x30C0, 0x6060, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{216, 1, {0x0, 0x0, 0x0, 0x0, 0x1F80, 0x30C0, 0x6070, 0x6060, 0x60E0, 0x61E0, 0x6360, 0x6660, 0x6C60, 0x7860, 0x7060, 0x6060, 0xE060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{217, 1, {0x1800, 0xC00, 0x600, 0x0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{218, 1, {0x180, 0x300, 0x600, 0x0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{219, 1, {0x600, 0xF00, 0x1980, 0x0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{220, 1, {0x1980, 0x1980, 0x1980, 0x0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{221, 1, {0x180, 0x300, 0x600, 0x0, 0x6060, 0x6060, 0x30C0, 0x30C0, 0x1980, 0x1980, 0xF00, 0xF00, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0}},
{222, 1, {0x0, 0x0, 0x0, 0x0, 0x6000, 0x6000, 0x6000, 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x60C0, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, 0x0, 0x0, 0x0, 0x0, 0x0}},
{223, 1, {0x0, 0x0, 0x0, 0x0, 0x3F00, 0x6180, 0x60C0, 0x60C0, 0x60C0, 0x6180, 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x7060, 0x68C0, 0x6F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{224, 1, {0x0, 0x0, 0x0, 0x0, 0x1800, 0xC00, 0x600, 0x0, 0x3F80, 0xC0, 0x60, 0x60, 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x3060, 0x1FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{225, 1, {0x0, 0x0, 0x0, 0x0, 0x180, 0x300, 0x600, 0x0, 0x3F80, 0xC0, 0x60, 0x60, 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x3060, 0x1FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{226, 1, {0x0, 0x0, 0x0, 0x0, 0x600, 0xF00, 0x1980, 0x0, 0x3F80, 0xC0, 0x60, 0x60, 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x3060, 0x1FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{227, 1, {0x0, 0x0, 0x0, 0x0, 0x1CC0, 0x36C0, 0x3380, 0x0, 0x3F80, 0xC0, 0x60, 0x60, 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x3060, 0x1FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{228, 1, {0x0, 0x0, 0x0, 0x0, 0x1980, 0x1980, 0x1980, 0x0, 0x3F80, 0xC0, 0x60, 0x60, 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x3060, 0x1FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{229, 1, {0x0, 0x0, 0x0, 0x0, 0xF00, 0x1980, 0x1980, 0xF00, 0x3F80, 0xC0, 0x60, 0x60, 0x1FE0, 0x3060, 0x6060, 0x6060, 0x6060, 0x3060, 0x1FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{230, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7BE0, 0xE30, 0x630, 0x630, 0x7E30, 0xC7F0, 0xC600, 0xC600, 0xC600, 0xC730, 0x7DE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{231, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6060, 0x30C0, 0x1F80, 0x600, 0x600, 0x600, 0xC00, 0x0}},
{232, 1, {0x0, 0x0, 0x0, 0x0, 0x1800, 0xC00, 0x600, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6000, 0x6000, 0x6000, 0x3060, 0x1FC0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{233, 1, {0x0, 0x0, 0x0, 0x0, 0x180, 0x300, 0x600, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6000, 0x6000, 0x6000, 0x3060, 0x1FC0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{234, 1, {0x0, 0x0, 0x0, 0x0, 0x600, 0xF00, 0x1980, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6000, 0x6000, 0x6000, 0x3060, 0x1FC0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{235, 1, {0x0, 0x0, 0x0, 0x0, 0x1980, 0x1980, 0x1980, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x7FE0, 0x6000, 0x6000, 0x6000, 0x3060, 0x1FC0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{236, 1, {0x0, 0x0, 0x0, 0x0, 0x1800, 0xC00, 0x600, 0x0, 0x1E00, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{237, 1, {0x0, 0x0, 0x0, 0x0, 0x180, 0x300, 0x600, 0x0, 0x1E00, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{238, 1, {0x0, 0x0, 0x0, 0x0, 0x600, 0xF00, 0x1980, 0x0, 0x1E00, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{239, 1, {0x0, 0x0, 0x0, 0x0, 0x1980, 0x1980, 0x1980, 0x0, 0x1E00, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x600, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{240, 1, {0x0, 0x0, 0x0, 0x0, 0x3600, 0x1C00, 0x3600, 0x300, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{241, 1, {0x0, 0x0, 0x0, 0x0, 0x1CC0, 0x36C0, 0x3380, 0x0, 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x0, 0x0, 0x0, 0x0, 0x0}},
{242, 1, {0x0, 0x0, 0x0, 0x0, 0x1800, 0xC00, 0x600, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{243, 1, {0x0, 0x0, 0x0, 0x0, 0x180, 0x300, 0x600, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{244, 1, {0x0, 0x0, 0x0, 0x0, 0x600, 0xF00, 0x1980, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{245, 1, {0x0, 0x0, 0x0, 0x0, 0x1CC0, 0x36C0, 0x3380, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{246, 1, {0x0, 0x0, 0x0, 0x0, 0x1980, 0x1980, 0x1980, 0x0, 0x1F80, 0x30C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30C0, 0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{247, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x600, 0x600, 0x600, 0x0, 0x0, 0x7FE0, 0x0, 0x0, 0x600, 0x600, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{248, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1FA0, 0x30C0, 0x60E0, 0x61E0, 0x6360, 0x6660, 0x6C60, 0x7860, 0x7060, 0x30C0, 0x5F80, 0x0, 0x0, 0x0, 0x0, 0x0}},
{249, 1, {0x0, 0x0, 0x0, 0x0, 0x1800, 0xC00, 0x600, 0x0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x3060, 0x1FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{250, 1, {0x0, 0x0, 0x0, 0x0, 0x180, 0x300, 0x600, 0x0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x3060, 0x1FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{251, 1, {0x0, 0x0, 0x0, 0x0, 0x600, 0xF00, 0x1980, 0x0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x3060, 0x1FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{252, 1, {0x0, 0x0, 0x0, 0x0, 0x1980, 0x1980, 0x1980, 0x0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x3060, 0x1FE0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{253, 1, {0x0, 0x0, 0x0, 0x0, 0x180, 0x300, 0x600, 0x0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30E0, 0x1FE0, 0x60, 0x60, 0xC0, 0x3F80, 0x0}},
{254, 1, {0x0, 0x0, 0x0, 0x0, 0x6000, 0x6000, 0x6000, 0x6000, 0x7F80, 0x60C0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x60C0, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, 0x0}},
{255, 1, {0x0, 0x0, 0x0, 0x0, 0x1980, 0x1980, 0x1980, 0x0, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x6060, 0x30E0, 0x1FE0, 0x60, 0x60, 0xC0, 0x3F80, 0x0}},
{12288, 2, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{0, 0, {0}}
};
static const struct glyph_t sd_glyphs[] = {
{8, 16, {0}}, /* entry 0 is width, height, dummy */
{32, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{33, 1, {0x0, 0x0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0, 0x0, 0x10, 0x10, 0x0, 0x0}},
{34, 1, {0x0, 0x0, 0x6C, 0x24, 0x24, 0x48, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{35, 1, {0x0, 0x0, 0x44, 0x44, 0x44, 0xFE, 0x44, 0x44, 0x44, 0x44, 0xFE, 0x44, 0x44, 0x44, 0x0, 0x0}},
{36, 1, {0x0, 0x0, 0x10, 0x10, 0x7C, 0x92, 0x90, 0x7C, 0x12, 0x12, 0x92, 0x7C, 0x10, 0x10, 0x0, 0x0}},
{37, 1, {0x0, 0x0, 0x0, 0x60, 0x90, 0x92, 0x64, 0x8, 0x10, 0x20, 0x4C, 0x92, 0x12, 0xC, 0x0, 0x0}},
{38, 1, {0x0, 0x0, 0x0, 0x70, 0x88, 0x88, 0x88, 0x50, 0x20, 0x50, 0x8A, 0x84, 0x8C, 0x72, 0x0, 0x0}},
{39, 1, {0x0, 0x0, 0x30, 0x10, 0x10, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{40, 1, {0x0, 0x4, 0x8, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x8, 0x4, 0x0}},
{41, 1, {0x0, 0x20, 0x10, 0x8, 0x8, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x8, 0x8, 0x10, 0x20, 0x0}},
{42, 1, {0x0, 0x0, 0x0, 0x0, 0x10, 0x54, 0x38, 0x10, 0x38, 0x54, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0}},
{43, 1, {0x0, 0x0, 0x0, 0x0, 0x10, 0x10, 0x10, 0xFE, 0x10, 0x10, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0}},
{44, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30, 0x10, 0x10, 0x20}},
{45, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{46, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30, 0x30, 0x0, 0x0}},
{47, 1, {0x0, 0x0, 0x2, 0x2, 0x4, 0x4, 0x8, 0x8, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x0, 0x0}},
{48, 1, {0x0, 0x0, 0x3C, 0x42, 0x46, 0x46, 0x4A, 0x4A, 0x52, 0x52, 0x62, 0x62, 0x42, 0x3C, 0x0, 0x0}},
{49, 1, {0x0, 0x0, 0x8, 0x18, 0x28, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x3E, 0x0, 0x0}},
{50, 1, {0x0, 0x0, 0x38, 0x44, 0x82, 0x82, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0xFE, 0x0, 0x0}},
{51, 1, {0x0, 0x0, 0x7C, 0x8, 0x10, 0x20, 0x78, 0x4, 0x2, 0x2, 0x2, 0x82, 0x44, 0x38, 0x0, 0x0}},
{52, 1, {0x0, 0x0, 0x8, 0x18, 0x18, 0x28, 0x28, 0x48, 0x48, 0x88, 0xFE, 0x8, 0x8, 0x8, 0x0, 0x0}},
{53, 1, {0x0, 0x0, 0x7E, 0x40, 0x40, 0x40, 0x78, 0x44, 0x2, 0x2, 0x2, 0x82, 0x44, 0x38, 0x0, 0x0}},
{54, 1, {0x0, 0x0, 0x38, 0x44, 0x82, 0x80, 0xB8, 0xC4, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38, 0x0, 0x0}},
{55, 1, {0x0, 0x0, 0xFE, 0x82, 0x82, 0x2, 0x4, 0x8, 0x8, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0, 0x0}},
{56, 1, {0x0, 0x0, 0x38, 0x44, 0x82, 0x82, 0x44, 0x38, 0x44, 0x82, 0x82, 0x82, 0x44, 0x38, 0x0, 0x0}},
{57, 1, {0x0, 0x0, 0x38, 0x44, 0x82, 0x82, 0x82, 0x46, 0x3A, 0x2, 0x2, 0x82, 0x44, 0x38, 0x0, 0x0}},
{58, 1, {0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0}},
{59, 1, {0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x18, 0x8, 0x8, 0x10, 0x0, 0x0}},
{60, 1, {0x0, 0x0, 0x0, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x20, 0x10, 0x8, 0x4, 0x2, 0x0, 0x0}},
{61, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFE, 0x0, 0x0, 0xFE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{62, 1, {0x0, 0x0, 0x0, 0x40, 0x20, 0x10, 0x8, 0x4, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x0, 0x0}},
{63, 1, {0x0, 0x0, 0x38, 0x44, 0x82, 0x2, 0x4, 0x8, 0x10, 0x10, 0x0, 0x0, 0x10, 0x10, 0x0, 0x0}},
{64, 1, {0x0, 0x0, 0x38, 0x44, 0x92, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAC, 0x90, 0x40, 0x3C, 0x0, 0x0}},
{65, 1, {0x0, 0x0, 0x10, 0x10, 0x28, 0x28, 0x28, 0x44, 0x44, 0x44, 0xFE, 0x82, 0x82, 0x82, 0x0, 0x0}},
{66, 1, {0x0, 0x0, 0xF8, 0x44, 0x42, 0x42, 0x44, 0x78, 0x44, 0x42, 0x42, 0x42, 0x44, 0xF8, 0x0, 0x0}},
{67, 1, {0x0, 0x0, 0x38, 0x44, 0x82, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x82, 0x44, 0x38, 0x0, 0x0}},
{68, 1, {0x0, 0x0, 0xF8, 0x44, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x44, 0xF8, 0x0, 0x0}},
{69, 1, {0x0, 0x0, 0x7E, 0x40, 0x40, 0x40, 0x40, 0x7C, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7E, 0x0, 0x0}},
{70, 1, {0x0, 0x0, 0x7E, 0x40, 0x40, 0x40, 0x40, 0x7C, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0, 0x0}},
{71, 1, {0x0, 0x0, 0x38, 0x44, 0x82, 0x80, 0x80, 0x80, 0x8E, 0x82, 0x82, 0x82, 0x46, 0x38, 0x0, 0x0}},
{72, 1, {0x0, 0x0, 0x42, 0x42, 0x42, 0x42, 0x42, 0x7E, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x0, 0x0}},
{73, 1, {0x0, 0x0, 0x38, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x38, 0x0, 0x0}},
{74, 1, {0x0, 0x0, 0xE, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x44, 0x44, 0x38, 0x0, 0x0}},
{75, 1, {0x0, 0x0, 0x42, 0x42, 0x44, 0x44, 0x48, 0x70, 0x48, 0x48, 0x44, 0x44, 0x42, 0x42, 0x0, 0x0}},
{76, 1, {0x0, 0x0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7E, 0x0, 0x0}},
{77, 1, {0x0, 0x0, 0x82, 0x82, 0xC6, 0xC6, 0xAA, 0xAA, 0x92, 0x92, 0x82, 0x82, 0x82, 0x82, 0x0, 0x0}},
{78, 1, {0x0, 0x0, 0x82, 0xC2, 0xC2, 0xA2, 0xA2, 0x92, 0x92, 0x8A, 0x8A, 0x86, 0x86, 0x82, 0x0, 0x0}},
{79, 1, {0x0, 0x0, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38, 0x0, 0x0}},
{80, 1, {0x0, 0x0, 0x78, 0x44, 0x42, 0x42, 0x44, 0x78, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0, 0x0}},
{81, 1, {0x0, 0x0, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x9A, 0xA6, 0x64, 0x3A, 0x0, 0x0}},
{82, 1, {0x0, 0x0, 0x78, 0x44, 0x42, 0x42, 0x44, 0x78, 0x44, 0x44, 0x42, 0x42, 0x42, 0x42, 0x0, 0x0}},
{83, 1, {0x0, 0x0, 0x38, 0x44, 0x82, 0x80, 0x40, 0x38, 0x4, 0x2, 0x2, 0x82, 0x44, 0x38, 0x0, 0x0}},
{84, 1, {0x0, 0x0, 0xFE, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0, 0x0}},
{85, 1, {0x0, 0x0, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3C, 0x0, 0x0}},
{86, 1, {0x0, 0x0, 0x82, 0x82, 0x82, 0x44, 0x44, 0x44, 0x28, 0x28, 0x28, 0x10, 0x10, 0x10, 0x0, 0x0}},
{87, 1, {0x0, 0x0, 0x82, 0x82, 0x82, 0x92, 0x92, 0x92, 0xAA, 0xAA, 0xAA, 0x44, 0x44, 0x44, 0x0, 0x0}},
{88, 1, {0x0, 0x0, 0x82, 0x82, 0x44, 0x44, 0x28, 0x10, 0x10, 0x28, 0x44, 0x44, 0x82, 0x82, 0x0, 0x0}},
{89, 1, {0x0, 0x0, 0x82, 0x82, 0x44, 0x44, 0x28, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0, 0x0}},
{90, 1, {0x0, 0x0, 0xFE, 0x2, 0x4, 0x4, 0x8, 0x10, 0x10, 0x20, 0x40, 0x40, 0x80, 0xFE, 0x0, 0x0}},
{91, 1, {0x0, 0x3C, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x0}},
{92, 1, {0x0, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x8, 0x8, 0x4, 0x4, 0x2, 0x2, 0x0}},
{93, 1, {0x0, 0x78, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x78, 0x0}},
{94, 1, {0x0, 0x0, 0x10, 0x28, 0x44, 0x82, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{95, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFE, 0x0, 0x0}},
{96, 1, {0x0, 0x0, 0x40, 0x20, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{97, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3C, 0x42, 0x6, 0x3A, 0x42, 0x42, 0x46, 0x3A, 0x0, 0x0}},
{98, 1, {0x0, 0x0, 0x40, 0x40, 0x40, 0x40, 0x58, 0x64, 0x42, 0x42, 0x42, 0x42, 0x64, 0x58, 0x0, 0x0}},
{99, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1C, 0x22, 0x40, 0x40, 0x40, 0x40, 0x22, 0x1C, 0x0, 0x0}},
{100, 1, {0x0, 0x0, 0x2, 0x2, 0x2, 0x2, 0x1A, 0x26, 0x42, 0x42, 0x42, 0x42, 0x26, 0x1A, 0x0, 0x0}},
{101, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0x44, 0x82, 0xFE, 0x80, 0x80, 0x46, 0x3C, 0x0, 0x0}},
{102, 1, {0x0, 0x0, 0xC, 0x12, 0x10, 0x10, 0x7C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0, 0x0}},
{103, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3A, 0x46, 0x82, 0x82, 0x82, 0x46, 0x3A, 0x2, 0xC4, 0x78}},
{104, 1, {0x0, 0x0, 0x40, 0x40, 0x40, 0x40, 0x58, 0x64, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x0, 0x0}},
{105, 1, {0x0, 0x0, 0x10, 0x10, 0x0, 0x0, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x38, 0x0, 0x0}},
{106, 1, {0x0, 0x0, 0x4, 0x4, 0x0, 0x0, 0xC, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x44, 0x44, 0x38}},
{107, 1, {0x0, 0x0, 0x40, 0x40, 0x40, 0x40, 0x42, 0x44, 0x48, 0x50, 0x70, 0x48, 0x44, 0x42, 0x0, 0x0}},
{108, 1, {0x0, 0x0, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0, 0x0}},
{109, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xEC, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x0, 0x0}},
{110, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5C, 0x62, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x0, 0x0}},
{111, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38, 0x0, 0x0}},
{112, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x58, 0x64, 0x42, 0x42, 0x42, 0x64, 0x58, 0x40, 0x40, 0x40}},
{113, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x34, 0x4C, 0x84, 0x84, 0x84, 0x4C, 0x34, 0x4, 0x4, 0x4}},
{114, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2C, 0x32, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0, 0x0}},
{115, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3C, 0x46, 0x40, 0x30, 0xC, 0x2, 0x62, 0x3C, 0x0, 0x0}},
{116, 1, {0x0, 0x0, 0x10, 0x10, 0x10, 0x10, 0x7C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xC, 0x0, 0x0}},
{117, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x46, 0x3A, 0x0, 0x0}},
{118, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x82, 0x82, 0x44, 0x44, 0x28, 0x28, 0x10, 0x10, 0x0, 0x0}},
{119, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x82, 0x82, 0x92, 0x92, 0xAA, 0xAA, 0x44, 0x44, 0x0, 0x0}},
{120, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x82, 0x44, 0x28, 0x10, 0x10, 0x28, 0x44, 0x82, 0x0, 0x0}},
{121, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x82, 0x82, 0x44, 0x44, 0x28, 0x28, 0x10, 0x10, 0x20, 0xC0}},
{122, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7E, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x7E, 0x0, 0x0}},
{123, 1, {0x0, 0x0, 0xC, 0x10, 0x10, 0x10, 0x10, 0x60, 0x10, 0x10, 0x10, 0x10, 0x10, 0xC, 0x0, 0x0}},
{124, 1, {0x0, 0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0, 0x0}},
{125, 1, {0x0, 0x0, 0x30, 0x8, 0x8, 0x8, 0x8, 0x6, 0x8, 0x8, 0x8, 0x8, 0x8, 0x30, 0x0, 0x0}},
{126, 1, {0x0, 0x60, 0x92, 0xC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{161, 1, {0x0, 0x10, 0x10, 0x0, 0x0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x30, 0x30, 0x30}},
{162, 1, {0x0, 0x0, 0x10, 0x3C, 0x52, 0x92, 0x90, 0x90, 0x90, 0x90, 0x90, 0x92, 0x52, 0x3C, 0x10, 0x0}},
{163, 1, {0x0, 0x0, 0x0, 0x0, 0xC, 0x12, 0x10, 0x10, 0x10, 0x7C, 0x10, 0x10, 0x3C, 0x52, 0x20, 0x0}},
{164, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x42, 0x3C, 0x24, 0x24, 0x3C, 0x42, 0x0, 0x0, 0x0, 0x0, 0x0}},
{165, 1, {0x82, 0x82, 0x44, 0x44, 0x44, 0x28, 0x28, 0xFE, 0x10, 0xFE, 0x10, 0x10, 0x10, 0x10, 0x0, 0x0}},
{166, 1, {0x0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0, 0x0, 0x0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0, 0x0}},
{167, 1, {0x0, 0x3C, 0x42, 0x40, 0x20, 0x3C, 0x42, 0x42, 0x42, 0x3C, 0x4, 0x2, 0x42, 0x3C, 0x0, 0x0}},
{168, 1, {0x0, 0x24, 0x24, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{169, 1, {0x0, 0x0, 0x3C, 0x42, 0x99, 0xA5, 0xA1, 0xA1, 0xA1, 0xA5, 0xA5, 0x99, 0x42, 0x3C, 0x0, 0x0}},
{170, 1, {0x0, 0x1C, 0x22, 0x1E, 0x22, 0x26, 0x1A, 0x0, 0x3E, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{171, 1, {0x0, 0x0, 0x0, 0x9, 0x12, 0x24, 0x48, 0x90, 0x90, 0x48, 0x24, 0x12, 0x9, 0x0, 0x0, 0x0}},
{172, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFE, 0xFE, 0x6, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0}},
{174, 1, {0x0, 0x0, 0x3C, 0x42, 0xB9, 0xA5, 0xA5, 0xA5, 0xB9, 0xA9, 0xA5, 0xA5, 0x42, 0x3C, 0x0, 0x0}},
{175, 1, {0x0, 0x0, 0xFE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{176, 1, {0x0, 0x38, 0x44, 0x44, 0x44, 0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{177, 1, {0x0, 0x0, 0x0, 0x0, 0x10, 0x10, 0x10, 0xFE, 0x10, 0x10, 0x10, 0x0, 0xFE, 0x0, 0x0, 0x0}},
{178, 1, {0x0, 0x18, 0x24, 0x4, 0x8, 0x10, 0x20, 0x3C, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{179, 1, {0x0, 0x18, 0x24, 0x4, 0x18, 0x4, 0x24, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{180, 1, {0x0, 0xC, 0x18, 0x30, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{181, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x22, 0x22, 0x44, 0x44, 0x6C, 0x54, 0x82, 0x80}},
{182, 1, {0x0, 0x3C, 0x74, 0x74, 0x74, 0x74, 0x34, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0, 0x0}},
{183, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{184, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC, 0x8, 0x10}},
{185, 1, {0x0, 0x8, 0x18, 0x28, 0x8, 0x8, 0x8, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{186, 1, {0x0, 0x18, 0x24, 0x24, 0x24, 0x24, 0x18, 0x0, 0x3C, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{187, 1, {0x0, 0x0, 0x0, 0x0, 0x90, 0x48, 0x24, 0x12, 0x9, 0x9, 0x12, 0x24, 0x48, 0x90, 0x0, 0x0}},
{188, 1, {0x0, 0x40, 0xC4, 0x44, 0x48, 0x48, 0x50, 0x12, 0x26, 0x2A, 0x4A, 0x5F, 0x82, 0x82, 0x0, 0x0}},
{189, 1, {0x0, 0x40, 0xC4, 0x44, 0x48, 0x48, 0x50, 0x1C, 0x32, 0x22, 0x44, 0x48, 0x88, 0x9E, 0x0, 0x0}},
{190, 1, {0x0, 0x60, 0x92, 0x12, 0x64, 0x14, 0x98, 0x6A, 0x16, 0x16, 0x2A, 0x3F, 0x42, 0x42, 0x0, 0x0}},
{191, 1, {0x8, 0x8, 0x0, 0x0, 0x8, 0x8, 0x8, 0x10, 0x20, 0x20, 0x41, 0x41, 0x41, 0x22, 0x1C, 0x0}},
{192, 1, {0x30, 0x10, 0x8, 0x10, 0x10, 0x28, 0x28, 0x44, 0x44, 0x7C, 0x82, 0x82, 0x82, 0x82, 0x0, 0x0}},
{193, 1, {0x18, 0x10, 0x20, 0x10, 0x10, 0x28, 0x28, 0x44, 0x44, 0x7C, 0x82, 0x82, 0x82, 0x82, 0x0, 0x0}},
{194, 1, {0x10, 0x38, 0x44, 0x10, 0x10, 0x28, 0x28, 0x44, 0x44, 0x7C, 0x82, 0x82, 0x82, 0x82, 0x0, 0x0}},
{195, 1, {0x34, 0x58, 0x0, 0x10, 0x10, 0x28, 0x28, 0x44, 0x44, 0x7C, 0x82, 0x82, 0x82, 0x82, 0x0, 0x0}},
{196, 1, {0x44, 0x44, 0x0, 0x10, 0x10, 0x28, 0x28, 0x44, 0x44, 0x7C, 0x82, 0x82, 0x82, 0x82, 0x0, 0x0}},
{197, 1, {0x10, 0x28, 0x10, 0x10, 0x10, 0x28, 0x28, 0x44, 0x44, 0x7C, 0x82, 0x82, 0x82, 0x82, 0x0, 0x0}},
{198, 1, {0x0, 0x0, 0x1F, 0x28, 0x28, 0x28, 0x2E, 0x48, 0x48, 0x78, 0x88, 0x88, 0x88, 0x8F, 0x0, 0x0}},
{199, 1, {0x0, 0x38, 0x44, 0x42, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x42, 0x44, 0x38, 0x8, 0x8, 0x10}},
{200, 1, {0x30, 0x10, 0x8, 0xFE, 0x80, 0x80, 0x80, 0xFC, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFE, 0x0, 0x0}},
{201, 1, {0x18, 0x10, 0x20, 0xFE, 0x80, 0x80, 0x80, 0xFC, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFE, 0x0, 0x0}},
{202, 1, {0x10, 0x38, 0x44, 0xFE, 0x80, 0x80, 0x80, 0xFC, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFE, 0x0, 0x0}},
{203, 1, {0x44, 0x44, 0x0, 0xFE, 0x80, 0x80, 0x80, 0xFC, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFE, 0x0, 0x0}},
{204, 1, {0x30, 0x10, 0x8, 0x38, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x38, 0x0, 0x0}},
{205, 1, {0x18, 0x10, 0x20, 0x38, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x38, 0x0, 0x0}},
{206, 1, {0x10, 0x38, 0x44, 0x38, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x38, 0x0, 0x0}},
{207, 1, {0x44, 0x44, 0x0, 0x38, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x38, 0x0, 0x0}},
{208, 1, {0x0, 0x70, 0x48, 0x44, 0x44, 0x42, 0x42, 0xF2, 0x42, 0x42, 0x44, 0x44, 0x48, 0x70, 0x0, 0x0}},
{209, 1, {0x34, 0x58, 0x82, 0x82, 0xC2, 0xC2, 0xA2, 0xA2, 0x92, 0x8A, 0x8A, 0x86, 0x86, 0x82, 0x0, 0x0}},
{210, 1, {0x30, 0x10, 0x8, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38, 0x0, 0x0}},
{211, 1, {0x18, 0x10, 0x20, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38, 0x0, 0x0}},
{212, 1, {0x10, 0x38, 0x44, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38, 0x0, 0x0}},
{213, 1, {0x34, 0x58, 0x0, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38, 0x0, 0x0}},
{214, 1, {0x44, 0x44, 0x0, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38, 0x0, 0x0}},
{215, 1, {0x0, 0x0, 0x0, 0x0, 0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81, 0x0, 0x0, 0x0, 0x0}},
{216, 1, {0x2, 0x2, 0x3C, 0x44, 0x86, 0x8A, 0x8A, 0x92, 0x92, 0xA2, 0xA2, 0xC2, 0x44, 0x78, 0x80, 0x80}},
{217, 1, {0x30, 0x10, 0x8, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38, 0x0, 0x0}},
{218, 1, {0x18, 0x10, 0x20, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38, 0x0, 0x0}},
{219, 1, {0x10, 0x38, 0x44, 0x0, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38, 0x0, 0x0}},
{220, 1, {0x44, 0x44, 0x0, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38, 0x0, 0x0}},
{221, 1, {0x18, 0x10, 0xA2, 0x82, 0x44, 0x44, 0x28, 0x28, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0, 0x0}},
{222, 1, {0x80, 0x80, 0xF8, 0x84, 0x82, 0x82, 0x84, 0xF8, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x0, 0x0}},
{223, 1, {0x0, 0x78, 0x84, 0x82, 0x82, 0x84, 0xB8, 0x84, 0x82, 0x82, 0x82, 0x82, 0x84, 0xB8, 0x0, 0x0}},
{224, 1, {0x0, 0x30, 0x10, 0x8, 0x0, 0x3C, 0x42, 0x2, 0x3E, 0x42, 0x82, 0x82, 0x86, 0x7A, 0x0, 0x0}},
{225, 1, {0x0, 0x18, 0x10, 0x20, 0x0, 0x3C, 0x42, 0x2, 0x3E, 0x42, 0x82, 0x82, 0x86, 0x7A, 0x0, 0x0}},
{226, 1, {0x0, 0x10, 0x38, 0x44, 0x0, 0x3C, 0x42, 0x2, 0x3E, 0x42, 0x82, 0x82, 0x86, 0x7A, 0x0, 0x0}},
{227, 1, {0x0, 0x34, 0x58, 0x0, 0x0, 0x3C, 0x42, 0x2, 0x3E, 0x42, 0x82, 0x82, 0x86, 0x7A, 0x0, 0x0}},
{228, 1, {0x0, 0x0, 0x24, 0x24, 0x0, 0x3C, 0x42, 0x2, 0x3E, 0x42, 0x82, 0x82, 0x86, 0x7A, 0x0, 0x0}},
{229, 1, {0x0, 0x10, 0x28, 0x10, 0x0, 0x3C, 0x42, 0x2, 0x3E, 0x42, 0x82, 0x82, 0x86, 0x7A, 0x0, 0x0}},
{230, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x6C, 0x92, 0x12, 0x3E, 0x50, 0x90, 0x92, 0x92, 0x6C, 0x0, 0x0}},
{231, 1, {0x0, 0x0, 0x0, 0x0, 0x38, 0x44, 0x82, 0x80, 0x80, 0x80, 0x82, 0x44, 0x38, 0x10, 0x10, 0x20}},
{232, 1, {0x0, 0x30, 0x10, 0x8, 0x0, 0x38, 0x44, 0x82, 0x82, 0xFE, 0x80, 0x82, 0x44, 0x38, 0x0, 0x0}},
{233, 1, {0x0, 0x18, 0x10, 0x20, 0x0, 0x38, 0x44, 0x82, 0x82, 0xFE, 0x80, 0x82, 0x44, 0x38, 0x0, 0x0}},
{234, 1, {0x0, 0x10, 0x38, 0x44, 0x0, 0x38, 0x44, 0x82, 0x82, 0xFE, 0x80, 0x82, 0x44, 0x38, 0x0, 0x0}},
{235, 1, {0x0, 0x44, 0x44, 0x0, 0x0, 0x38, 0x44, 0x82, 0x82, 0xFE, 0x80, 0x82, 0x44, 0x38, 0x0, 0x0}},
{236, 1, {0x30, 0x10, 0x8, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0, 0x0}},
{237, 1, {0x18, 0x10, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0, 0x0}},
{238, 1, {0x10, 0x38, 0x44, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0, 0x0}},
{239, 1, {0x44, 0x44, 0x0, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0, 0x0}},
{240, 1, {0x0, 0x64, 0x18, 0x30, 0x48, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38, 0x0, 0x0}},
{241, 1, {0x0, 0x34, 0x58, 0x0, 0x0, 0x5C, 0x62, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x0, 0x0}},
{242, 1, {0x0, 0x30, 0x10, 0x8, 0x0, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38, 0x0, 0x0}},
{243, 1, {0x0, 0x18, 0x10, 0x20, 0x0, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38, 0x0, 0x0}},
{244, 1, {0x0, 0x10, 0x38, 0x44, 0x0, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38, 0x0, 0x0}},
{245, 1, {0x0, 0x34, 0x58, 0x0, 0x0, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38, 0x0, 0x0}},
{246, 1, {0x0, 0x44, 0x44, 0x0, 0x0, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38, 0x0, 0x0}},
{247, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x10, 0x0, 0xFE, 0x0, 0x10, 0x10, 0x0, 0x0, 0x0, 0x0}},
{248, 1, {0x0, 0x0, 0x0, 0x0, 0x0, 0x3A, 0x44, 0x8A, 0x8A, 0x92, 0xA2, 0xA2, 0x44, 0xB8, 0x0, 0x0}},
{249, 1, {0x0, 0x30, 0x10, 0x8, 0x0, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x46, 0x3A, 0x0, 0x0}},
{250, 1, {0x0, 0x18, 0x10, 0x20, 0x0, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x46, 0x3A, 0x0, 0x0}},
{251, 1, {0x0, 0x10, 0x38, 0x44, 0x0, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x46, 0x3A, 0x0, 0x0}},
{252, 1, {0x0, 0x24, 0x24, 0x0, 0x0, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x46, 0x3A, 0x0, 0x0}},
{253, 1, {0x0, 0xC, 0x8, 0x10, 0x0, 0x42, 0x42, 0x22, 0x24, 0x14, 0x8, 0x8, 0x10, 0x10, 0x20, 0x40}},
{254, 1, {0x0, 0x0, 0x40, 0x40, 0x40, 0x78, 0x44, 0x42, 0x42, 0x42, 0x44, 0x78, 0x40, 0x40, 0x40, 0x40}},
{255, 1, {0x0, 0x24, 0x24, 0x0, 0x0, 0x42, 0x42, 0x22, 0x24, 0x14, 0x8, 0x8, 0x10, 0x10, 0x20, 0x40}},
{12288, 2, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{0, 0, {0}}
};
/* bigger fonts first, reverse sorted width */
static const struct glyph_t *glyphs[] = {
hd_glyphs,
sd_glyphs,
NULL
};

View File

@@ -25,9 +25,9 @@
*/
#include "yaft_priv.h"
#include "glyph.h"
#include <driver/framebuffer.h>
#include <driver/abstime.h>
#include <xmltree/xmlinterface.h> /* UTF8 conversion */
/* parse_arg functions */
void YaFT_p::reset_parm(parm_t *pt)
@@ -80,6 +80,7 @@ void YaFT_p::parse_arg(std::string &buf, struct parm_t *pt, int delim, int (is_v
logging(DEBUG, "argc:%d\n", pt->argc);
}
extern std::string ttx_font_file;
/* constructor, Paint == false means "quiet mode, just execute
* a command but don't display anything */
YaFT_p::YaFT_p(bool Paint)
@@ -89,6 +90,15 @@ YaFT_p::YaFT_p(bool Paint)
nlseen = false;
paint = Paint;
last_paint = 0;
fr = NULL;
font = NULL;
}
YaFT_p::~YaFT_p()
{
/* delete NULL is fine */
delete font;
delete fr;
}
bool YaFT_p::init()
@@ -113,9 +123,9 @@ void YaFT_p::erase_cell(int y, int x)
struct cell_t *cellp;
cellp = &cells[y][x];
cellp->glyphp = glyph[DEFAULT_CHAR];
cellp->color_pair = color_pair; /* bce */
cellp->attribute = ATTR_RESET;
cellp->utf8_str.clear();
line_dirty[y] = true;
}
@@ -129,12 +139,12 @@ void YaFT_p::copy_cell(int dst_y, int dst_x, int src_y, int src_x)
line_dirty[dst_y] = true;
}
int YaFT_p::set_cell(int y, int x, const struct glyph_t *glyphp)
int YaFT_p::set_cell(int y, int x, std::string &utf8)
{
struct cell_t cell; //, *cellp;
struct cell_t cell;
uint8_t color_tmp;
cell.glyphp = glyphp;
cell.utf8_str = utf8;
cell.color_pair.fg = (attribute & attr_mask[ATTR_BOLD] && color_pair.fg <= 7) ?
color_pair.fg + BRIGHT_INC : color_pair.fg;
@@ -257,36 +267,23 @@ void YaFT_p::set_cursor(int y, int x)
void YaFT_p::addch(uint32_t code)
{
int _width;
const struct glyph_t *glyphp;
logging(DEBUG, "addch: U+%.4X\n", code);
_width = wcwidth(code);
if (code <= 0xff) { /* non-ascii not supported */
char c = (char)code;
txt.back().push_back(c);
}
if (_width <= 0) /* zero width: not support comibining character */
return;
else if (0x100000 <= code && code <= 0x10FFFD) /* unicode private area: plane 16 (DRCSMMv1) */
glyphp = glyph[SUBSTITUTE_HALF];
else if (code >= UCS2_CHARS /* yaft support only UCS2 */
|| glyph[code] == NULL /* missing glyph */
|| glyph[code]->width != _width) /* width unmatch */
glyphp = (_width == 1) ? glyph[SUBSTITUTE_HALF] : glyph[SUBSTITUTE_WIDE];
else
glyphp = glyph[code];
if ((wrap_occured && cursor.x == cols - 1) /* folding */
|| (glyphp->width == WIDE && cursor.x == cols - 1)) {
if (wrap_occured && cursor.x == cols - 1) {
set_cursor(cursor.y, 0);
move_cursor(1, 0);
}
wrap_occured = false;
move_cursor(0, set_cell(cursor.y, cursor.x, glyphp));
std::string str = Unicode_Character_to_UTF8(code);
move_cursor(0, set_cell(cursor.y, cursor.x, str));
txt.back().append(str);
#if 0
printf(stderr, "addch 0x%04x => ", code);
onst char *f = str.c_str();
hile (*f) fprintf(stderr, "0x%02x ", *f++);
fprintf(stderr, "\n");
#endif
}
void YaFT_p::reset_esc(void)
@@ -396,23 +393,33 @@ void YaFT_p::term_die(void)
bool YaFT_p::term_init(int w, int h)
{
const glyph_t *_glyphs;
width = w;
height = h;
int fw, fh;
#define LINES 30
#define COLS 100
int scalex = 64, scaley = 64;
/*
* try to get a font size that fits about LINES x COLS into the terminal.
* NOTE: this is not guaranteed to work! Terminal might be smaller or bigger
*/
for (int i = 0; i < 2; i++) {
delete font;
delete fr;
fr = new FBFontRenderClass(scalex, scaley);
fontstyle = fr->AddFont(ttx_font_file.c_str());
font = fr->getFont(fr->getFamily(ttx_font_file.c_str()).c_str(), fontstyle, height / LINES);
fw = font->getWidth();
fh = font->getHeight();
fprintf(stderr, "FONT[%d]: fw %d fh: %d sx %d sy %d w %d h %d\n", i, fw, fh, scalex, scaley, width, height);
scalex = 64 * width / (fw * COLS) + 1;
scaley = 64 * height / (fh * LINES) + 1;
}
int j = 0;
do {
_glyphs = glyphs[j];
CELL_WIDTH = _glyphs[0].code;
CELL_HEIGHT = _glyphs[0].width;
cols = width / CELL_WIDTH;
if (cols > 79)
break;
j++;
} while (glyphs[j]);
CELL_WIDTH = fw;
CELL_HEIGHT = fh;
lines = height / CELL_HEIGHT;
cols = width / CELL_WIDTH;
logging(NORMAL, "terminal cols:%d lines:%d\n", cols, lines);
@@ -433,24 +440,6 @@ bool YaFT_p::term_init(int w, int h)
virtual_palette[i] = color_list[i];
palette_modified = true; /* first refresh() will initialize real_palette[] */
/* initialize glyph map */
for (uint32_t code = 0; code < UCS2_CHARS; code++)
glyph[code] = NULL;
for (uint32_t gi = 1; _glyphs[gi].code > 0; gi++)
glyph[_glyphs[gi].code] = &_glyphs[gi];
if (!glyph[DEFAULT_CHAR]
|| !glyph[SUBSTITUTE_HALF]
|| !glyph[SUBSTITUTE_WIDE]) {
logging(NORMAL, "couldn't find essential glyph:\
DEFAULT_CHAR(U+%.4X):%p SUBSTITUTE_HALF(U+%.4X):%p SUBSTITUTE_WIDE(U+%.4X):%p\n",
DEFAULT_CHAR, glyph[DEFAULT_CHAR],
SUBSTITUTE_HALF, glyph[SUBSTITUTE_HALF],
SUBSTITUTE_WIDE, glyph[SUBSTITUTE_WIDE]);
return false;
}
/* reset terminal */
reset();
@@ -732,18 +721,10 @@ int YaFT_p::sum(struct parm_t *parm)
return s;
}
static int my_ceil(int val, int div)
{
if (div == 0)
return 0;
else
return (val + div - 1) / div;
}
void YaFT_p::draw_line(int line)
{
int pos, bdf_padding, glyph_w, margin_right;
int col, w, h;
int pos, col, w, h;
Font::fontmodifier mod;
uint32_t pixel;
struct color_pair_t col_pair;
struct cell_t *cellp;
@@ -753,20 +734,15 @@ void YaFT_p::draw_line(int line)
if (fb.dy_max < (line+1) * CELL_HEIGHT - 1)
fb.dy_max = (line+1) * CELL_HEIGHT - 1;
//std::string s = "";
for (col = cols - 1; col >= 0; col--) {
margin_right = (cols - 1 - col) * CELL_WIDTH;
for (col = 0; col < cols; col++) {
/* target cell */
cellp = &cells[line][col];
mod = Font::Regular;
if (cellp->attribute & attr_mask[ATTR_BOLD])
mod = Font::Embolden;
/* copy current color_pair (maybe changed) */
col_pair = cellp->color_pair;
/* check wide character or not */
glyph_w = CELL_WIDTH;
bdf_padding = my_ceil(glyph_w, BITS_PER_BYTE) * BITS_PER_BYTE - glyph_w;
/* check cursor positon */
if ((mode & MODE_CURSOR && line == cursor.y)
&& col == cursor.x) {
@@ -774,31 +750,23 @@ void YaFT_p::draw_line(int line)
col_pair.bg = ACTIVE_CURSOR_COLOR;
}
/* clear background... */
pixel = fb.real_palette[col_pair.bg];
for (h = 0; h < CELL_HEIGHT; h++) {
pos = col * CELL_WIDTH + (line * CELL_HEIGHT + h) * fb.width;
/* if UNDERLINE attribute on, swap bg/fg */
if ((h == (CELL_HEIGHT - 1)) && (cellp->attribute & attr_mask[ATTR_UNDERLINE]))
col_pair.bg = col_pair.fg;
pos = (width - 1 - margin_right/* - w*/)
+ (line * CELL_HEIGHT + h) * fb.width;
pixel = fb.real_palette[col_pair.fg];
for (w = 0; w < CELL_WIDTH; w++) {
/* set color palette */
if (cellp->glyphp->bitmap[h] & (0x01 << (bdf_padding + w)))
pixel = fb.real_palette[col_pair.fg];
else
pixel = fb.real_palette[col_pair.bg];
/* update copy buffer only */
//memcpy(fb.buf + pos, &pixel, fb.info.bytes_per_pixel);
fb.buf[pos] = pixel;
pos--;
pos++;
}
}
//s.insert(s.begin(), cellp->glyphp->code);
if (cellp->utf8_str.empty())
continue;
font->RenderString(col * CELL_WIDTH, (line + 1) * CELL_HEIGHT, CELL_WIDTH, cellp->utf8_str,
fb.real_palette[col_pair.fg], mod, Font::IS_UTF8, fb.buf, fb.width * sizeof(fb_pixel_t));
}
//printf("draw_line: %02d ", line);puts(s.c_str());
line_dirty[line] = ((mode & MODE_CURSOR) && cursor.y == line) ? true: false;
}

View File

@@ -31,11 +31,12 @@
#include <stdlib.h> /* atoi(), strtol() */
#include <unistd.h> /* write() */
#include <stdio.h>
//#include "glyph.h"
#include "color.h"
#include <system/debug.h>
#include <driver/fontrenderer.h>
#define logging(a, message...) dprintf(DEBUG_ ## a, "YaFT: " message)
const uint8_t attr_mask[] = {
@@ -132,9 +133,9 @@ class YaFT_p
};
struct cell_t {
const struct glyph_t *glyphp; /* pointer to glyph */
struct color_pair_t color_pair; /* color (fg, bg) */
int attribute; /* bold, underscore, etc... */
std::string utf8_str;
};
struct framebuffer_t {
@@ -165,12 +166,14 @@ class YaFT_p
struct esc_t esc; /* store escape sequence */
uint32_t virtual_palette[COLORS]; /* virtual color palette: always 32bpp */
bool palette_modified; /* true if palette changed by OSC 4/104 */
const struct glyph_t *glyph[UCS2_CHARS]; /* array of pointer to glyphs[] */
bool nlseen;
int CELL_WIDTH, CELL_HEIGHT;
struct framebuffer_t fb;
struct fb_var_screeninfo *screeninfo;
bool paint;
FBFontRenderClass *fr;
Font *font;
const char *fontstyle;
public:
int fd; /* master of pseudo terminal */
int cols, lines; /* terminal size (cell) */
@@ -179,6 +182,7 @@ class YaFT_p
int lines_available; /* lines available in txt */
YaFT_p(bool paint = true);
~YaFT_p();
bool init();
void parse(uint8_t *buf, int size);
void refresh(void);
@@ -186,7 +190,7 @@ class YaFT_p
void draw_line(int line);
void erase_cell(int y, int x);
void copy_cell(int dst_y, int dst_x, int src_y, int src_x);
int set_cell(int y, int x, const struct glyph_t *glyphp);
int set_cell(int y, int x, std::string &utf);
void swap_lines(int i, int j);
void scroll(int from, int to, int offset);
void move_cursor(int y_offset, int x_offset);