pub mod mode {
pub use super::*;
use crate::{BitReader, Bits};
static PREFIX_LUT_0: [Entry<Mode>; 128usize] = [
Entry::Value(Mode::EOF, 12u8),
Entry::Value(Mode::Extension, 7u8),
Entry::Value(Mode::Vertical(-3), 7u8),
Entry::Value(Mode::Vertical(3), 7u8),
Entry::Value(Mode::Vertical(-2), 6u8),
Entry::Value(Mode::Vertical(-2), 6u8),
Entry::Value(Mode::Vertical(2), 6u8),
Entry::Value(Mode::Vertical(2), 6u8),
Entry::Value(Mode::Pass, 4u8),
Entry::Value(Mode::Pass, 4u8),
Entry::Value(Mode::Pass, 4u8),
Entry::Value(Mode::Pass, 4u8),
Entry::Value(Mode::Pass, 4u8),
Entry::Value(Mode::Pass, 4u8),
Entry::Value(Mode::Pass, 4u8),
Entry::Value(Mode::Pass, 4u8),
Entry::Value(Mode::Horizontal, 3u8),
Entry::Value(Mode::Horizontal, 3u8),
Entry::Value(Mode::Horizontal, 3u8),
Entry::Value(Mode::Horizontal, 3u8),
Entry::Value(Mode::Horizontal, 3u8),
Entry::Value(Mode::Horizontal, 3u8),
Entry::Value(Mode::Horizontal, 3u8),
Entry::Value(Mode::Horizontal, 3u8),
Entry::Value(Mode::Horizontal, 3u8),
Entry::Value(Mode::Horizontal, 3u8),
Entry::Value(Mode::Horizontal, 3u8),
Entry::Value(Mode::Horizontal, 3u8),
Entry::Value(Mode::Horizontal, 3u8),
Entry::Value(Mode::Horizontal, 3u8),
Entry::Value(Mode::Horizontal, 3u8),
Entry::Value(Mode::Horizontal, 3u8),
Entry::Value(Mode::Vertical(-1), 3u8),
Entry::Value(Mode::Vertical(-1), 3u8),
Entry::Value(Mode::Vertical(-1), 3u8),
Entry::Value(Mode::Vertical(-1), 3u8),
Entry::Value(Mode::Vertical(-1), 3u8),
Entry::Value(Mode::Vertical(-1), 3u8),
Entry::Value(Mode::Vertical(-1), 3u8),
Entry::Value(Mode::Vertical(-1), 3u8),
Entry::Value(Mode::Vertical(-1), 3u8),
Entry::Value(Mode::Vertical(-1), 3u8),
Entry::Value(Mode::Vertical(-1), 3u8),
Entry::Value(Mode::Vertical(-1), 3u8),
Entry::Value(Mode::Vertical(-1), 3u8),
Entry::Value(Mode::Vertical(-1), 3u8),
Entry::Value(Mode::Vertical(-1), 3u8),
Entry::Value(Mode::Vertical(-1), 3u8),
Entry::Value(Mode::Vertical(1), 3u8),
Entry::Value(Mode::Vertical(1), 3u8),
Entry::Value(Mode::Vertical(1), 3u8),
Entry::Value(Mode::Vertical(1), 3u8),
Entry::Value(Mode::Vertical(1), 3u8),
Entry::Value(Mode::Vertical(1), 3u8),
Entry::Value(Mode::Vertical(1), 3u8),
Entry::Value(Mode::Vertical(1), 3u8),
Entry::Value(Mode::Vertical(1), 3u8),
Entry::Value(Mode::Vertical(1), 3u8),
Entry::Value(Mode::Vertical(1), 3u8),
Entry::Value(Mode::Vertical(1), 3u8),
Entry::Value(Mode::Vertical(1), 3u8),
Entry::Value(Mode::Vertical(1), 3u8),
Entry::Value(Mode::Vertical(1), 3u8),
Entry::Value(Mode::Vertical(1), 3u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
Entry::Value(Mode::Vertical(0), 1u8),
];
pub fn decode(reader: &mut impl BitReader) -> Option<Mode> {
let root = Entry::Prefix(7u8, &PREFIX_LUT_0);
root.find(reader)
}
pub fn encode(val: Mode) -> Option<Bits> {
let bits = match val {
Mode::Pass => Bits { data: 1u16, len: 4u8 },
Mode::Horizontal => Bits { data: 1u16, len: 3u8 },
Mode::Vertical(0) => Bits { data: 1u16, len: 1u8 },
Mode::Vertical(1) => Bits { data: 3u16, len: 3u8 },
Mode::Vertical(2) => Bits { data: 3u16, len: 6u8 },
Mode::Vertical(3) => Bits { data: 3u16, len: 7u8 },
Mode::Vertical(-1) => Bits { data: 2u16, len: 3u8 },
Mode::Vertical(-2) => Bits { data: 2u16, len: 6u8 },
Mode::Vertical(-3) => Bits { data: 2u16, len: 7u8 },
Mode::Extension => Bits { data: 1u16, len: 7u8 },
Mode::EOF => Bits { data: 1u16, len: 12u8 },
_ => return None,
};
Some(bits)
}
pub static ENTRIES: [(Mode, Bits); 11usize] = [
(Mode::Pass, Bits { data: 1u16, len: 4u8 }),
(Mode::Horizontal, Bits { data: 1u16, len: 3u8 }),
(Mode::Vertical(0), Bits { data: 1u16, len: 1u8 }),
(Mode::Vertical(1), Bits { data: 3u16, len: 3u8 }),
(Mode::Vertical(2), Bits { data: 3u16, len: 6u8 }),
(Mode::Vertical(3), Bits { data: 3u16, len: 7u8 }),
(Mode::Vertical(-1), Bits { data: 2u16, len: 3u8 }),
(Mode::Vertical(-2), Bits { data: 2u16, len: 6u8 }),
(Mode::Vertical(-3), Bits { data: 2u16, len: 7u8 }),
(Mode::Extension, Bits { data: 1u16, len: 7u8 }),
(Mode::EOF, Bits { data: 1u16, len: 12u8 }),
];
}
pub mod black {
pub use super::*;
use crate::{BitReader, Bits};
static LEAF_LUT_00000: [Option<(u16, u8)>; 256usize] = [
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
Some((1792, 6u8)),
Some((1792, 6u8)),
Some((1792, 6u8)),
Some((1792, 6u8)),
Some((1984, 7u8)),
Some((1984, 7u8)),
Some((2048, 7u8)),
Some((2048, 7u8)),
Some((2112, 7u8)),
Some((2112, 7u8)),
Some((2176, 7u8)),
Some((2176, 7u8)),
Some((2240, 7u8)),
Some((2240, 7u8)),
Some((2304, 7u8)),
Some((2304, 7u8)),
Some((1856, 6u8)),
Some((1856, 6u8)),
Some((1856, 6u8)),
Some((1856, 6u8)),
Some((1920, 6u8)),
Some((1920, 6u8)),
Some((1920, 6u8)),
Some((1920, 6u8)),
Some((2368, 7u8)),
Some((2368, 7u8)),
Some((2432, 7u8)),
Some((2432, 7u8)),
Some((2496, 7u8)),
Some((2496, 7u8)),
Some((2560, 7u8)),
Some((2560, 7u8)),
Some((18, 5u8)),
Some((18, 5u8)),
Some((18, 5u8)),
Some((18, 5u8)),
Some((18, 5u8)),
Some((18, 5u8)),
Some((18, 5u8)),
Some((18, 5u8)),
Some((52, 7u8)),
Some((52, 7u8)),
Some((640, 8u8)),
Some((704, 8u8)),
Some((768, 8u8)),
Some((832, 8u8)),
Some((55, 7u8)),
Some((55, 7u8)),
Some((56, 7u8)),
Some((56, 7u8)),
Some((1280, 8u8)),
Some((1344, 8u8)),
Some((1408, 8u8)),
Some((1472, 8u8)),
Some((59, 7u8)),
Some((59, 7u8)),
Some((60, 7u8)),
Some((60, 7u8)),
Some((1536, 8u8)),
Some((1600, 8u8)),
Some((24, 6u8)),
Some((24, 6u8)),
Some((24, 6u8)),
Some((24, 6u8)),
Some((25, 6u8)),
Some((25, 6u8)),
Some((25, 6u8)),
Some((25, 6u8)),
Some((1664, 8u8)),
Some((1728, 8u8)),
Some((320, 7u8)),
Some((320, 7u8)),
Some((384, 7u8)),
Some((384, 7u8)),
Some((448, 7u8)),
Some((448, 7u8)),
Some((512, 8u8)),
Some((576, 8u8)),
Some((53, 7u8)),
Some((53, 7u8)),
Some((54, 7u8)),
Some((54, 7u8)),
Some((896, 8u8)),
Some((960, 8u8)),
Some((1024, 8u8)),
Some((1088, 8u8)),
Some((1152, 8u8)),
Some((1216, 8u8)),
Some((64, 5u8)),
Some((64, 5u8)),
Some((64, 5u8)),
Some((64, 5u8)),
Some((64, 5u8)),
Some((64, 5u8)),
Some((64, 5u8)),
Some((64, 5u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((13, 3u8)),
Some((23, 6u8)),
Some((23, 6u8)),
Some((23, 6u8)),
Some((23, 6u8)),
Some((50, 7u8)),
Some((50, 7u8)),
Some((51, 7u8)),
Some((51, 7u8)),
Some((44, 7u8)),
Some((44, 7u8)),
Some((45, 7u8)),
Some((45, 7u8)),
Some((46, 7u8)),
Some((46, 7u8)),
Some((47, 7u8)),
Some((47, 7u8)),
Some((57, 7u8)),
Some((57, 7u8)),
Some((58, 7u8)),
Some((58, 7u8)),
Some((61, 7u8)),
Some((61, 7u8)),
Some((256, 7u8)),
Some((256, 7u8)),
Some((16, 5u8)),
Some((16, 5u8)),
Some((16, 5u8)),
Some((16, 5u8)),
Some((16, 5u8)),
Some((16, 5u8)),
Some((16, 5u8)),
Some((16, 5u8)),
Some((17, 5u8)),
Some((17, 5u8)),
Some((17, 5u8)),
Some((17, 5u8)),
Some((17, 5u8)),
Some((17, 5u8)),
Some((17, 5u8)),
Some((17, 5u8)),
Some((48, 7u8)),
Some((48, 7u8)),
Some((49, 7u8)),
Some((49, 7u8)),
Some((62, 7u8)),
Some((62, 7u8)),
Some((63, 7u8)),
Some((63, 7u8)),
Some((30, 7u8)),
Some((30, 7u8)),
Some((31, 7u8)),
Some((31, 7u8)),
Some((32, 7u8)),
Some((32, 7u8)),
Some((33, 7u8)),
Some((33, 7u8)),
Some((40, 7u8)),
Some((40, 7u8)),
Some((41, 7u8)),
Some((41, 7u8)),
Some((22, 6u8)),
Some((22, 6u8)),
Some((22, 6u8)),
Some((22, 6u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
Some((14, 3u8)),
];
static LEAF_LUT_00001: [Option<(u16, u8)>; 128usize] = [
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((10, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((11, 2u8)),
Some((15, 4u8)),
Some((15, 4u8)),
Some((15, 4u8)),
Some((15, 4u8)),
Some((15, 4u8)),
Some((15, 4u8)),
Some((15, 4u8)),
Some((15, 4u8)),
Some((128, 7u8)),
Some((192, 7u8)),
Some((26, 7u8)),
Some((27, 7u8)),
Some((28, 7u8)),
Some((29, 7u8)),
Some((19, 6u8)),
Some((19, 6u8)),
Some((20, 6u8)),
Some((20, 6u8)),
Some((34, 7u8)),
Some((35, 7u8)),
Some((36, 7u8)),
Some((37, 7u8)),
Some((38, 7u8)),
Some((39, 7u8)),
Some((21, 6u8)),
Some((21, 6u8)),
Some((42, 7u8)),
Some((43, 7u8)),
Some((0, 5u8)),
Some((0, 5u8)),
Some((0, 5u8)),
Some((0, 5u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
];
static LEAF_LUT_00010: [Option<(u16, u8)>; 2usize] = [Some((9, 1u8)), Some((8, 1u8))];
static PREFIX_LUT_0: [Entry<u16>; 32usize] = [
Entry::Leaf(8u8, &LEAF_LUT_00000),
Entry::Leaf(7u8, &LEAF_LUT_00001),
Entry::Leaf(1u8, &LEAF_LUT_00010),
Entry::Value(7, 5u8),
Entry::Value(6, 4u8),
Entry::Value(6, 4u8),
Entry::Value(5, 4u8),
Entry::Value(5, 4u8),
Entry::Value(1, 3u8),
Entry::Value(1, 3u8),
Entry::Value(1, 3u8),
Entry::Value(1, 3u8),
Entry::Value(4, 3u8),
Entry::Value(4, 3u8),
Entry::Value(4, 3u8),
Entry::Value(4, 3u8),
Entry::Value(3, 2u8),
Entry::Value(3, 2u8),
Entry::Value(3, 2u8),
Entry::Value(3, 2u8),
Entry::Value(3, 2u8),
Entry::Value(3, 2u8),
Entry::Value(3, 2u8),
Entry::Value(3, 2u8),
Entry::Value(2, 2u8),
Entry::Value(2, 2u8),
Entry::Value(2, 2u8),
Entry::Value(2, 2u8),
Entry::Value(2, 2u8),
Entry::Value(2, 2u8),
Entry::Value(2, 2u8),
Entry::Value(2, 2u8),
];
pub fn decode(reader: &mut impl BitReader) -> Option<u16> {
let root = Entry::Prefix(5u8, &PREFIX_LUT_0);
root.find(reader)
}
pub fn encode(val: u16) -> Option<Bits> {
let bits = match val {
0 => Bits { data: 55u16, len: 10u8 },
1 => Bits { data: 2u16, len: 3u8 },
2 => Bits { data: 3u16, len: 2u8 },
3 => Bits { data: 2u16, len: 2u8 },
4 => Bits { data: 3u16, len: 3u8 },
5 => Bits { data: 3u16, len: 4u8 },
6 => Bits { data: 2u16, len: 4u8 },
7 => Bits { data: 3u16, len: 5u8 },
8 => Bits { data: 5u16, len: 6u8 },
9 => Bits { data: 4u16, len: 6u8 },
10 => Bits { data: 4u16, len: 7u8 },
11 => Bits { data: 5u16, len: 7u8 },
12 => Bits { data: 7u16, len: 7u8 },
13 => Bits { data: 4u16, len: 8u8 },
14 => Bits { data: 7u16, len: 8u8 },
15 => Bits { data: 24u16, len: 9u8 },
16 => Bits { data: 23u16, len: 10u8 },
17 => Bits { data: 24u16, len: 10u8 },
18 => Bits { data: 8u16, len: 10u8 },
19 => Bits { data: 103u16, len: 11u8 },
20 => Bits { data: 104u16, len: 11u8 },
21 => Bits { data: 108u16, len: 11u8 },
22 => Bits { data: 55u16, len: 11u8 },
23 => Bits { data: 40u16, len: 11u8 },
24 => Bits { data: 23u16, len: 11u8 },
25 => Bits { data: 24u16, len: 11u8 },
26 => Bits { data: 202u16, len: 12u8 },
27 => Bits { data: 203u16, len: 12u8 },
28 => Bits { data: 204u16, len: 12u8 },
29 => Bits { data: 205u16, len: 12u8 },
30 => Bits { data: 104u16, len: 12u8 },
31 => Bits { data: 105u16, len: 12u8 },
32 => Bits { data: 106u16, len: 12u8 },
33 => Bits { data: 107u16, len: 12u8 },
34 => Bits { data: 210u16, len: 12u8 },
35 => Bits { data: 211u16, len: 12u8 },
36 => Bits { data: 212u16, len: 12u8 },
37 => Bits { data: 213u16, len: 12u8 },
38 => Bits { data: 214u16, len: 12u8 },
39 => Bits { data: 215u16, len: 12u8 },
40 => Bits { data: 108u16, len: 12u8 },
41 => Bits { data: 109u16, len: 12u8 },
42 => Bits { data: 218u16, len: 12u8 },
43 => Bits { data: 219u16, len: 12u8 },
44 => Bits { data: 84u16, len: 12u8 },
45 => Bits { data: 85u16, len: 12u8 },
46 => Bits { data: 86u16, len: 12u8 },
47 => Bits { data: 87u16, len: 12u8 },
48 => Bits { data: 100u16, len: 12u8 },
49 => Bits { data: 101u16, len: 12u8 },
50 => Bits { data: 82u16, len: 12u8 },
51 => Bits { data: 83u16, len: 12u8 },
52 => Bits { data: 36u16, len: 12u8 },
53 => Bits { data: 55u16, len: 12u8 },
54 => Bits { data: 56u16, len: 12u8 },
55 => Bits { data: 39u16, len: 12u8 },
56 => Bits { data: 40u16, len: 12u8 },
57 => Bits { data: 88u16, len: 12u8 },
58 => Bits { data: 89u16, len: 12u8 },
59 => Bits { data: 43u16, len: 12u8 },
60 => Bits { data: 44u16, len: 12u8 },
61 => Bits { data: 90u16, len: 12u8 },
62 => Bits { data: 102u16, len: 12u8 },
63 => Bits { data: 103u16, len: 12u8 },
64 => Bits { data: 15u16, len: 10u8 },
128 => Bits { data: 200u16, len: 12u8 },
192 => Bits { data: 201u16, len: 12u8 },
256 => Bits { data: 91u16, len: 12u8 },
320 => Bits { data: 51u16, len: 12u8 },
384 => Bits { data: 52u16, len: 12u8 },
448 => Bits { data: 53u16, len: 12u8 },
512 => Bits { data: 108u16, len: 13u8 },
576 => Bits { data: 109u16, len: 13u8 },
640 => Bits { data: 74u16, len: 13u8 },
704 => Bits { data: 75u16, len: 13u8 },
768 => Bits { data: 76u16, len: 13u8 },
832 => Bits { data: 77u16, len: 13u8 },
896 => Bits { data: 114u16, len: 13u8 },
960 => Bits { data: 115u16, len: 13u8 },
1024 => Bits { data: 116u16, len: 13u8 },
1088 => Bits { data: 117u16, len: 13u8 },
1152 => Bits { data: 118u16, len: 13u8 },
1216 => Bits { data: 119u16, len: 13u8 },
1280 => Bits { data: 82u16, len: 13u8 },
1344 => Bits { data: 83u16, len: 13u8 },
1408 => Bits { data: 84u16, len: 13u8 },
1472 => Bits { data: 85u16, len: 13u8 },
1536 => Bits { data: 90u16, len: 13u8 },
1600 => Bits { data: 91u16, len: 13u8 },
1664 => Bits { data: 100u16, len: 13u8 },
1728 => Bits { data: 101u16, len: 13u8 },
1792 => Bits { data: 8u16, len: 11u8 },
1856 => Bits { data: 12u16, len: 11u8 },
1920 => Bits { data: 13u16, len: 11u8 },
1984 => Bits { data: 18u16, len: 12u8 },
2048 => Bits { data: 19u16, len: 12u8 },
2112 => Bits { data: 20u16, len: 12u8 },
2176 => Bits { data: 21u16, len: 12u8 },
2240 => Bits { data: 22u16, len: 12u8 },
2304 => Bits { data: 23u16, len: 12u8 },
2368 => Bits { data: 28u16, len: 12u8 },
2432 => Bits { data: 29u16, len: 12u8 },
2496 => Bits { data: 30u16, len: 12u8 },
2560 => Bits { data: 31u16, len: 12u8 },
_ => return None,
};
Some(bits)
}
pub static ENTRIES: [(u16, Bits); 104usize] = [
(0, Bits { data: 55u16, len: 10u8 }),
(1, Bits { data: 2u16, len: 3u8 }),
(2, Bits { data: 3u16, len: 2u8 }),
(3, Bits { data: 2u16, len: 2u8 }),
(4, Bits { data: 3u16, len: 3u8 }),
(5, Bits { data: 3u16, len: 4u8 }),
(6, Bits { data: 2u16, len: 4u8 }),
(7, Bits { data: 3u16, len: 5u8 }),
(8, Bits { data: 5u16, len: 6u8 }),
(9, Bits { data: 4u16, len: 6u8 }),
(10, Bits { data: 4u16, len: 7u8 }),
(11, Bits { data: 5u16, len: 7u8 }),
(12, Bits { data: 7u16, len: 7u8 }),
(13, Bits { data: 4u16, len: 8u8 }),
(14, Bits { data: 7u16, len: 8u8 }),
(15, Bits { data: 24u16, len: 9u8 }),
(16, Bits { data: 23u16, len: 10u8 }),
(17, Bits { data: 24u16, len: 10u8 }),
(18, Bits { data: 8u16, len: 10u8 }),
(19, Bits { data: 103u16, len: 11u8 }),
(20, Bits { data: 104u16, len: 11u8 }),
(21, Bits { data: 108u16, len: 11u8 }),
(22, Bits { data: 55u16, len: 11u8 }),
(23, Bits { data: 40u16, len: 11u8 }),
(24, Bits { data: 23u16, len: 11u8 }),
(25, Bits { data: 24u16, len: 11u8 }),
(26, Bits { data: 202u16, len: 12u8 }),
(27, Bits { data: 203u16, len: 12u8 }),
(28, Bits { data: 204u16, len: 12u8 }),
(29, Bits { data: 205u16, len: 12u8 }),
(30, Bits { data: 104u16, len: 12u8 }),
(31, Bits { data: 105u16, len: 12u8 }),
(32, Bits { data: 106u16, len: 12u8 }),
(33, Bits { data: 107u16, len: 12u8 }),
(34, Bits { data: 210u16, len: 12u8 }),
(35, Bits { data: 211u16, len: 12u8 }),
(36, Bits { data: 212u16, len: 12u8 }),
(37, Bits { data: 213u16, len: 12u8 }),
(38, Bits { data: 214u16, len: 12u8 }),
(39, Bits { data: 215u16, len: 12u8 }),
(40, Bits { data: 108u16, len: 12u8 }),
(41, Bits { data: 109u16, len: 12u8 }),
(42, Bits { data: 218u16, len: 12u8 }),
(43, Bits { data: 219u16, len: 12u8 }),
(44, Bits { data: 84u16, len: 12u8 }),
(45, Bits { data: 85u16, len: 12u8 }),
(46, Bits { data: 86u16, len: 12u8 }),
(47, Bits { data: 87u16, len: 12u8 }),
(48, Bits { data: 100u16, len: 12u8 }),
(49, Bits { data: 101u16, len: 12u8 }),
(50, Bits { data: 82u16, len: 12u8 }),
(51, Bits { data: 83u16, len: 12u8 }),
(52, Bits { data: 36u16, len: 12u8 }),
(53, Bits { data: 55u16, len: 12u8 }),
(54, Bits { data: 56u16, len: 12u8 }),
(55, Bits { data: 39u16, len: 12u8 }),
(56, Bits { data: 40u16, len: 12u8 }),
(57, Bits { data: 88u16, len: 12u8 }),
(58, Bits { data: 89u16, len: 12u8 }),
(59, Bits { data: 43u16, len: 12u8 }),
(60, Bits { data: 44u16, len: 12u8 }),
(61, Bits { data: 90u16, len: 12u8 }),
(62, Bits { data: 102u16, len: 12u8 }),
(63, Bits { data: 103u16, len: 12u8 }),
(64, Bits { data: 15u16, len: 10u8 }),
(128, Bits { data: 200u16, len: 12u8 }),
(192, Bits { data: 201u16, len: 12u8 }),
(256, Bits { data: 91u16, len: 12u8 }),
(320, Bits { data: 51u16, len: 12u8 }),
(384, Bits { data: 52u16, len: 12u8 }),
(448, Bits { data: 53u16, len: 12u8 }),
(512, Bits { data: 108u16, len: 13u8 }),
(576, Bits { data: 109u16, len: 13u8 }),
(640, Bits { data: 74u16, len: 13u8 }),
(704, Bits { data: 75u16, len: 13u8 }),
(768, Bits { data: 76u16, len: 13u8 }),
(832, Bits { data: 77u16, len: 13u8 }),
(896, Bits { data: 114u16, len: 13u8 }),
(960, Bits { data: 115u16, len: 13u8 }),
(1024, Bits { data: 116u16, len: 13u8 }),
(1088, Bits { data: 117u16, len: 13u8 }),
(1152, Bits { data: 118u16, len: 13u8 }),
(1216, Bits { data: 119u16, len: 13u8 }),
(1280, Bits { data: 82u16, len: 13u8 }),
(1344, Bits { data: 83u16, len: 13u8 }),
(1408, Bits { data: 84u16, len: 13u8 }),
(1472, Bits { data: 85u16, len: 13u8 }),
(1536, Bits { data: 90u16, len: 13u8 }),
(1600, Bits { data: 91u16, len: 13u8 }),
(1664, Bits { data: 100u16, len: 13u8 }),
(1728, Bits { data: 101u16, len: 13u8 }),
(1792, Bits { data: 8u16, len: 11u8 }),
(1856, Bits { data: 12u16, len: 11u8 }),
(1920, Bits { data: 13u16, len: 11u8 }),
(1984, Bits { data: 18u16, len: 12u8 }),
(2048, Bits { data: 19u16, len: 12u8 }),
(2112, Bits { data: 20u16, len: 12u8 }),
(2176, Bits { data: 21u16, len: 12u8 }),
(2240, Bits { data: 22u16, len: 12u8 }),
(2304, Bits { data: 23u16, len: 12u8 }),
(2368, Bits { data: 28u16, len: 12u8 }),
(2432, Bits { data: 29u16, len: 12u8 }),
(2496, Bits { data: 30u16, len: 12u8 }),
(2560, Bits { data: 31u16, len: 12u8 }),
];
}
pub mod white {
pub use super::*;
use crate::{BitReader, Bits};
static LEAF_LUT_0000: [Option<(u16, u8)>; 256usize] = [
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
Some((1792, 7u8)),
Some((1792, 7u8)),
Some((1984, 8u8)),
Some((2048, 8u8)),
Some((2112, 8u8)),
Some((2176, 8u8)),
Some((2240, 8u8)),
Some((2304, 8u8)),
Some((1856, 7u8)),
Some((1856, 7u8)),
Some((1920, 7u8)),
Some((1920, 7u8)),
Some((2368, 8u8)),
Some((2432, 8u8)),
Some((2496, 8u8)),
Some((2560, 8u8)),
Some((29, 4u8)),
Some((29, 4u8)),
Some((29, 4u8)),
Some((29, 4u8)),
Some((29, 4u8)),
Some((29, 4u8)),
Some((29, 4u8)),
Some((29, 4u8)),
Some((29, 4u8)),
Some((29, 4u8)),
Some((29, 4u8)),
Some((29, 4u8)),
Some((29, 4u8)),
Some((29, 4u8)),
Some((29, 4u8)),
Some((29, 4u8)),
Some((30, 4u8)),
Some((30, 4u8)),
Some((30, 4u8)),
Some((30, 4u8)),
Some((30, 4u8)),
Some((30, 4u8)),
Some((30, 4u8)),
Some((30, 4u8)),
Some((30, 4u8)),
Some((30, 4u8)),
Some((30, 4u8)),
Some((30, 4u8)),
Some((30, 4u8)),
Some((30, 4u8)),
Some((30, 4u8)),
Some((30, 4u8)),
Some((45, 4u8)),
Some((45, 4u8)),
Some((45, 4u8)),
Some((45, 4u8)),
Some((45, 4u8)),
Some((45, 4u8)),
Some((45, 4u8)),
Some((45, 4u8)),
Some((45, 4u8)),
Some((45, 4u8)),
Some((45, 4u8)),
Some((45, 4u8)),
Some((45, 4u8)),
Some((45, 4u8)),
Some((45, 4u8)),
Some((45, 4u8)),
Some((46, 4u8)),
Some((46, 4u8)),
Some((46, 4u8)),
Some((46, 4u8)),
Some((46, 4u8)),
Some((46, 4u8)),
Some((46, 4u8)),
Some((46, 4u8)),
Some((46, 4u8)),
Some((46, 4u8)),
Some((46, 4u8)),
Some((46, 4u8)),
Some((46, 4u8)),
Some((46, 4u8)),
Some((46, 4u8)),
Some((46, 4u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((22, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((23, 3u8)),
Some((47, 4u8)),
Some((47, 4u8)),
Some((47, 4u8)),
Some((47, 4u8)),
Some((47, 4u8)),
Some((47, 4u8)),
Some((47, 4u8)),
Some((47, 4u8)),
Some((47, 4u8)),
Some((47, 4u8)),
Some((47, 4u8)),
Some((47, 4u8)),
Some((47, 4u8)),
Some((47, 4u8)),
Some((47, 4u8)),
Some((47, 4u8)),
Some((48, 4u8)),
Some((48, 4u8)),
Some((48, 4u8)),
Some((48, 4u8)),
Some((48, 4u8)),
Some((48, 4u8)),
Some((48, 4u8)),
Some((48, 4u8)),
Some((48, 4u8)),
Some((48, 4u8)),
Some((48, 4u8)),
Some((48, 4u8)),
Some((48, 4u8)),
Some((48, 4u8)),
Some((48, 4u8)),
Some((48, 4u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
Some((13, 2u8)),
];
static LEAF_LUT_0001: [Option<(u16, u8)>; 16usize] = [
Some((20, 3u8)),
Some((20, 3u8)),
Some((33, 4u8)),
Some((34, 4u8)),
Some((35, 4u8)),
Some((36, 4u8)),
Some((37, 4u8)),
Some((38, 4u8)),
Some((19, 3u8)),
Some((19, 3u8)),
Some((31, 4u8)),
Some((32, 4u8)),
Some((1, 2u8)),
Some((1, 2u8)),
Some((1, 2u8)),
Some((1, 2u8)),
];
static LEAF_LUT_0010: [Option<(u16, u8)>; 16usize] = [
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((12, 2u8)),
Some((53, 4u8)),
Some((54, 4u8)),
Some((26, 3u8)),
Some((26, 3u8)),
Some((39, 4u8)),
Some((40, 4u8)),
Some((41, 4u8)),
Some((42, 4u8)),
Some((43, 4u8)),
Some((44, 4u8)),
Some((21, 3u8)),
Some((21, 3u8)),
];
static LEAF_LUT_0011: [Option<(u16, u8)>; 16usize] = [
Some((28, 3u8)),
Some((28, 3u8)),
Some((61, 4u8)),
Some((62, 4u8)),
Some((63, 4u8)),
Some((0, 4u8)),
Some((320, 4u8)),
Some((384, 4u8)),
Some((10, 1u8)),
Some((10, 1u8)),
Some((10, 1u8)),
Some((10, 1u8)),
Some((10, 1u8)),
Some((10, 1u8)),
Some((10, 1u8)),
Some((10, 1u8)),
];
static LEAF_LUT_0100: [Option<(u16, u8)>; 32usize] = [
Some((11, 1u8)),
Some((11, 1u8)),
Some((11, 1u8)),
Some((11, 1u8)),
Some((11, 1u8)),
Some((11, 1u8)),
Some((11, 1u8)),
Some((11, 1u8)),
Some((11, 1u8)),
Some((11, 1u8)),
Some((11, 1u8)),
Some((11, 1u8)),
Some((11, 1u8)),
Some((11, 1u8)),
Some((11, 1u8)),
Some((11, 1u8)),
Some((27, 3u8)),
Some((27, 3u8)),
Some((27, 3u8)),
Some((27, 3u8)),
Some((59, 4u8)),
Some((59, 4u8)),
Some((60, 4u8)),
Some((60, 4u8)),
Some((1472, 5u8)),
Some((1536, 5u8)),
Some((1600, 5u8)),
Some((1728, 5u8)),
Some((18, 3u8)),
Some((18, 3u8)),
Some((18, 3u8)),
Some((18, 3u8)),
];
static LEAF_LUT_0101: [Option<(u16, u8)>; 16usize] = [
Some((24, 3u8)),
Some((24, 3u8)),
Some((49, 4u8)),
Some((50, 4u8)),
Some((51, 4u8)),
Some((52, 4u8)),
Some((25, 3u8)),
Some((25, 3u8)),
Some((55, 4u8)),
Some((56, 4u8)),
Some((57, 4u8)),
Some((58, 4u8)),
Some((192, 2u8)),
Some((192, 2u8)),
Some((192, 2u8)),
Some((192, 2u8)),
];
static LEAF_LUT_0110: [Option<(u16, u8)>; 32usize] = [
Some((1664, 2u8)),
Some((1664, 2u8)),
Some((1664, 2u8)),
Some((1664, 2u8)),
Some((1664, 2u8)),
Some((1664, 2u8)),
Some((1664, 2u8)),
Some((1664, 2u8)),
Some((448, 4u8)),
Some((448, 4u8)),
Some((512, 4u8)),
Some((512, 4u8)),
Some((704, 5u8)),
Some((768, 5u8)),
Some((640, 4u8)),
Some((640, 4u8)),
Some((576, 4u8)),
Some((576, 4u8)),
Some((832, 5u8)),
Some((896, 5u8)),
Some((960, 5u8)),
Some((1024, 5u8)),
Some((1088, 5u8)),
Some((1152, 5u8)),
Some((1216, 5u8)),
Some((1280, 5u8)),
Some((1344, 5u8)),
Some((1408, 5u8)),
Some((256, 3u8)),
Some((256, 3u8)),
Some((256, 3u8)),
Some((256, 3u8)),
];
static LEAF_LUT_1001: [Option<(u16, u8)>; 2usize] = [Some((128, 1u8)), Some((8, 1u8))];
static LEAF_LUT_1010: [Option<(u16, u8)>; 4usize] = [Some((9, 1u8)), Some((9, 1u8)), Some((16, 2u8)), Some((17, 2u8))];
static LEAF_LUT_1101: [Option<(u16, u8)>; 4usize] = [Some((14, 2u8)), Some((15, 2u8)), Some((64, 1u8)), Some((64, 1u8))];
static PREFIX_LUT_0: [Entry<u16>; 16usize] = [
Entry::Leaf(8u8, &LEAF_LUT_0000),
Entry::Leaf(4u8, &LEAF_LUT_0001),
Entry::Leaf(4u8, &LEAF_LUT_0010),
Entry::Leaf(4u8, &LEAF_LUT_0011),
Entry::Leaf(5u8, &LEAF_LUT_0100),
Entry::Leaf(4u8, &LEAF_LUT_0101),
Entry::Leaf(5u8, &LEAF_LUT_0110),
Entry::Value(2, 4u8),
Entry::Value(3, 4u8),
Entry::Leaf(1u8, &LEAF_LUT_1001),
Entry::Leaf(2u8, &LEAF_LUT_1010),
Entry::Value(4, 4u8),
Entry::Value(5, 4u8),
Entry::Leaf(2u8, &LEAF_LUT_1101),
Entry::Value(6, 4u8),
Entry::Value(7, 4u8),
];
pub fn decode(reader: &mut impl BitReader) -> Option<u16> {
let root = Entry::Prefix(4u8, &PREFIX_LUT_0);
root.find(reader)
}
pub fn encode(val: u16) -> Option<Bits> {
let bits = match val {
0 => Bits { data: 53u16, len: 8u8 },
1 => Bits { data: 7u16, len: 6u8 },
2 => Bits { data: 7u16, len: 4u8 },
3 => Bits { data: 8u16, len: 4u8 },
4 => Bits { data: 11u16, len: 4u8 },
5 => Bits { data: 12u16, len: 4u8 },
6 => Bits { data: 14u16, len: 4u8 },
7 => Bits { data: 15u16, len: 4u8 },
8 => Bits { data: 19u16, len: 5u8 },
9 => Bits { data: 20u16, len: 5u8 },
10 => Bits { data: 7u16, len: 5u8 },
11 => Bits { data: 8u16, len: 5u8 },
12 => Bits { data: 8u16, len: 6u8 },
13 => Bits { data: 3u16, len: 6u8 },
14 => Bits { data: 52u16, len: 6u8 },
15 => Bits { data: 53u16, len: 6u8 },
16 => Bits { data: 42u16, len: 6u8 },
17 => Bits { data: 43u16, len: 6u8 },
18 => Bits { data: 39u16, len: 7u8 },
19 => Bits { data: 12u16, len: 7u8 },
20 => Bits { data: 8u16, len: 7u8 },
21 => Bits { data: 23u16, len: 7u8 },
22 => Bits { data: 3u16, len: 7u8 },
23 => Bits { data: 4u16, len: 7u8 },
24 => Bits { data: 40u16, len: 7u8 },
25 => Bits { data: 43u16, len: 7u8 },
26 => Bits { data: 19u16, len: 7u8 },
27 => Bits { data: 36u16, len: 7u8 },
28 => Bits { data: 24u16, len: 7u8 },
29 => Bits { data: 2u16, len: 8u8 },
30 => Bits { data: 3u16, len: 8u8 },
31 => Bits { data: 26u16, len: 8u8 },
32 => Bits { data: 27u16, len: 8u8 },
33 => Bits { data: 18u16, len: 8u8 },
34 => Bits { data: 19u16, len: 8u8 },
35 => Bits { data: 20u16, len: 8u8 },
36 => Bits { data: 21u16, len: 8u8 },
37 => Bits { data: 22u16, len: 8u8 },
38 => Bits { data: 23u16, len: 8u8 },
39 => Bits { data: 40u16, len: 8u8 },
40 => Bits { data: 41u16, len: 8u8 },
41 => Bits { data: 42u16, len: 8u8 },
42 => Bits { data: 43u16, len: 8u8 },
43 => Bits { data: 44u16, len: 8u8 },
44 => Bits { data: 45u16, len: 8u8 },
45 => Bits { data: 4u16, len: 8u8 },
46 => Bits { data: 5u16, len: 8u8 },
47 => Bits { data: 10u16, len: 8u8 },
48 => Bits { data: 11u16, len: 8u8 },
49 => Bits { data: 82u16, len: 8u8 },
50 => Bits { data: 83u16, len: 8u8 },
51 => Bits { data: 84u16, len: 8u8 },
52 => Bits { data: 85u16, len: 8u8 },
53 => Bits { data: 36u16, len: 8u8 },
54 => Bits { data: 37u16, len: 8u8 },
55 => Bits { data: 88u16, len: 8u8 },
56 => Bits { data: 89u16, len: 8u8 },
57 => Bits { data: 90u16, len: 8u8 },
58 => Bits { data: 91u16, len: 8u8 },
59 => Bits { data: 74u16, len: 8u8 },
60 => Bits { data: 75u16, len: 8u8 },
61 => Bits { data: 50u16, len: 8u8 },
62 => Bits { data: 51u16, len: 8u8 },
63 => Bits { data: 52u16, len: 8u8 },
64 => Bits { data: 27u16, len: 5u8 },
128 => Bits { data: 18u16, len: 5u8 },
192 => Bits { data: 23u16, len: 6u8 },
256 => Bits { data: 55u16, len: 7u8 },
320 => Bits { data: 54u16, len: 8u8 },
384 => Bits { data: 55u16, len: 8u8 },
448 => Bits { data: 100u16, len: 8u8 },
512 => Bits { data: 101u16, len: 8u8 },
576 => Bits { data: 104u16, len: 8u8 },
640 => Bits { data: 103u16, len: 8u8 },
704 => Bits { data: 204u16, len: 9u8 },
768 => Bits { data: 205u16, len: 9u8 },
832 => Bits { data: 210u16, len: 9u8 },
896 => Bits { data: 211u16, len: 9u8 },
960 => Bits { data: 212u16, len: 9u8 },
1024 => Bits { data: 213u16, len: 9u8 },
1088 => Bits { data: 214u16, len: 9u8 },
1152 => Bits { data: 215u16, len: 9u8 },
1216 => Bits { data: 216u16, len: 9u8 },
1280 => Bits { data: 217u16, len: 9u8 },
1344 => Bits { data: 218u16, len: 9u8 },
1408 => Bits { data: 219u16, len: 9u8 },
1472 => Bits { data: 152u16, len: 9u8 },
1536 => Bits { data: 153u16, len: 9u8 },
1600 => Bits { data: 154u16, len: 9u8 },
1664 => Bits { data: 24u16, len: 6u8 },
1728 => Bits { data: 155u16, len: 9u8 },
1792 => Bits { data: 8u16, len: 11u8 },
1856 => Bits { data: 12u16, len: 11u8 },
1920 => Bits { data: 13u16, len: 11u8 },
1984 => Bits { data: 18u16, len: 12u8 },
2048 => Bits { data: 19u16, len: 12u8 },
2112 => Bits { data: 20u16, len: 12u8 },
2176 => Bits { data: 21u16, len: 12u8 },
2240 => Bits { data: 22u16, len: 12u8 },
2304 => Bits { data: 23u16, len: 12u8 },
2368 => Bits { data: 28u16, len: 12u8 },
2432 => Bits { data: 29u16, len: 12u8 },
2496 => Bits { data: 30u16, len: 12u8 },
2560 => Bits { data: 31u16, len: 12u8 },
_ => return None,
};
Some(bits)
}
pub static ENTRIES: [(u16, Bits); 104usize] = [
(0, Bits { data: 53u16, len: 8u8 }),
(1, Bits { data: 7u16, len: 6u8 }),
(2, Bits { data: 7u16, len: 4u8 }),
(3, Bits { data: 8u16, len: 4u8 }),
(4, Bits { data: 11u16, len: 4u8 }),
(5, Bits { data: 12u16, len: 4u8 }),
(6, Bits { data: 14u16, len: 4u8 }),
(7, Bits { data: 15u16, len: 4u8 }),
(8, Bits { data: 19u16, len: 5u8 }),
(9, Bits { data: 20u16, len: 5u8 }),
(10, Bits { data: 7u16, len: 5u8 }),
(11, Bits { data: 8u16, len: 5u8 }),
(12, Bits { data: 8u16, len: 6u8 }),
(13, Bits { data: 3u16, len: 6u8 }),
(14, Bits { data: 52u16, len: 6u8 }),
(15, Bits { data: 53u16, len: 6u8 }),
(16, Bits { data: 42u16, len: 6u8 }),
(17, Bits { data: 43u16, len: 6u8 }),
(18, Bits { data: 39u16, len: 7u8 }),
(19, Bits { data: 12u16, len: 7u8 }),
(20, Bits { data: 8u16, len: 7u8 }),
(21, Bits { data: 23u16, len: 7u8 }),
(22, Bits { data: 3u16, len: 7u8 }),
(23, Bits { data: 4u16, len: 7u8 }),
(24, Bits { data: 40u16, len: 7u8 }),
(25, Bits { data: 43u16, len: 7u8 }),
(26, Bits { data: 19u16, len: 7u8 }),
(27, Bits { data: 36u16, len: 7u8 }),
(28, Bits { data: 24u16, len: 7u8 }),
(29, Bits { data: 2u16, len: 8u8 }),
(30, Bits { data: 3u16, len: 8u8 }),
(31, Bits { data: 26u16, len: 8u8 }),
(32, Bits { data: 27u16, len: 8u8 }),
(33, Bits { data: 18u16, len: 8u8 }),
(34, Bits { data: 19u16, len: 8u8 }),
(35, Bits { data: 20u16, len: 8u8 }),
(36, Bits { data: 21u16, len: 8u8 }),
(37, Bits { data: 22u16, len: 8u8 }),
(38, Bits { data: 23u16, len: 8u8 }),
(39, Bits { data: 40u16, len: 8u8 }),
(40, Bits { data: 41u16, len: 8u8 }),
(41, Bits { data: 42u16, len: 8u8 }),
(42, Bits { data: 43u16, len: 8u8 }),
(43, Bits { data: 44u16, len: 8u8 }),
(44, Bits { data: 45u16, len: 8u8 }),
(45, Bits { data: 4u16, len: 8u8 }),
(46, Bits { data: 5u16, len: 8u8 }),
(47, Bits { data: 10u16, len: 8u8 }),
(48, Bits { data: 11u16, len: 8u8 }),
(49, Bits { data: 82u16, len: 8u8 }),
(50, Bits { data: 83u16, len: 8u8 }),
(51, Bits { data: 84u16, len: 8u8 }),
(52, Bits { data: 85u16, len: 8u8 }),
(53, Bits { data: 36u16, len: 8u8 }),
(54, Bits { data: 37u16, len: 8u8 }),
(55, Bits { data: 88u16, len: 8u8 }),
(56, Bits { data: 89u16, len: 8u8 }),
(57, Bits { data: 90u16, len: 8u8 }),
(58, Bits { data: 91u16, len: 8u8 }),
(59, Bits { data: 74u16, len: 8u8 }),
(60, Bits { data: 75u16, len: 8u8 }),
(61, Bits { data: 50u16, len: 8u8 }),
(62, Bits { data: 51u16, len: 8u8 }),
(63, Bits { data: 52u16, len: 8u8 }),
(64, Bits { data: 27u16, len: 5u8 }),
(128, Bits { data: 18u16, len: 5u8 }),
(192, Bits { data: 23u16, len: 6u8 }),
(256, Bits { data: 55u16, len: 7u8 }),
(320, Bits { data: 54u16, len: 8u8 }),
(384, Bits { data: 55u16, len: 8u8 }),
(448, Bits { data: 100u16, len: 8u8 }),
(512, Bits { data: 101u16, len: 8u8 }),
(576, Bits { data: 104u16, len: 8u8 }),
(640, Bits { data: 103u16, len: 8u8 }),
(704, Bits { data: 204u16, len: 9u8 }),
(768, Bits { data: 205u16, len: 9u8 }),
(832, Bits { data: 210u16, len: 9u8 }),
(896, Bits { data: 211u16, len: 9u8 }),
(960, Bits { data: 212u16, len: 9u8 }),
(1024, Bits { data: 213u16, len: 9u8 }),
(1088, Bits { data: 214u16, len: 9u8 }),
(1152, Bits { data: 215u16, len: 9u8 }),
(1216, Bits { data: 216u16, len: 9u8 }),
(1280, Bits { data: 217u16, len: 9u8 }),
(1344, Bits { data: 218u16, len: 9u8 }),
(1408, Bits { data: 219u16, len: 9u8 }),
(1472, Bits { data: 152u16, len: 9u8 }),
(1536, Bits { data: 153u16, len: 9u8 }),
(1600, Bits { data: 154u16, len: 9u8 }),
(1664, Bits { data: 24u16, len: 6u8 }),
(1728, Bits { data: 155u16, len: 9u8 }),
(1792, Bits { data: 8u16, len: 11u8 }),
(1856, Bits { data: 12u16, len: 11u8 }),
(1920, Bits { data: 13u16, len: 11u8 }),
(1984, Bits { data: 18u16, len: 12u8 }),
(2048, Bits { data: 19u16, len: 12u8 }),
(2112, Bits { data: 20u16, len: 12u8 }),
(2176, Bits { data: 21u16, len: 12u8 }),
(2240, Bits { data: 22u16, len: 12u8 }),
(2304, Bits { data: 23u16, len: 12u8 }),
(2368, Bits { data: 28u16, len: 12u8 }),
(2432, Bits { data: 29u16, len: 12u8 }),
(2496, Bits { data: 30u16, len: 12u8 }),
(2560, Bits { data: 31u16, len: 12u8 }),
];
}