use crate::ac_context::K_NUM_AC_CONTEXTS;
use crate::entropy::PrefixCode;
pub(crate) const K_NUM_DC_CONTEXTS: usize = 45;
pub(crate) const K_NUM_DC_PREFIX_CODES: usize = 8;
#[rustfmt::skip]
pub(crate) const K_DC_CONTEXT_MAP: [u8; K_NUM_DC_CONTEXTS] = [
0, 1, 2, 2, 1, 1, 3, 0, 3, 0, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 6, 7, 6, 7, 6, 6, 5, 5,
];
pub(crate) const K_DC_PREFIX_CODES: [PrefixCode; K_NUM_DC_PREFIX_CODES] = [
PrefixCode {
depths: [
6, 7, 7, 7, 7, 7, 7, 7, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
bits: [
0x0001, 0x0021, 0x0061, 0x0011, 0x0051, 0x0031, 0x0071, 0x0009, 0x0000, 0x0049, 0x0029,
0x0069, 0x0019, 0x0059, 0x0039, 0x0079, 0x0005, 0x0045, 0x0025, 0x0065, 0x0015, 0x0055,
0x0035, 0x0075, 0x000d, 0x004d, 0x002d, 0x006d, 0x001d, 0x005d, 0x003d, 0x007d, 0x0003,
0x0043, 0x0023, 0x0063, 0x0013, 0x0053, 0x0033, 0x0073, 0x000b, 0x004b, 0x002b, 0x006b,
0x001b, 0x005b, 0x003b, 0x007b, 0x0007, 0x0047, 0x0027, 0x0067, 0x0017, 0x0057, 0x0037,
0x0077, 0x000f, 0x004f, 0x002f, 0x006f, 0x001f, 0x005f, 0x003f, 0x007f, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
],
},
PrefixCode {
depths: [
1, 3, 2, 5, 4, 7, 7, 8, 8, 10, 9, 12, 10, 13, 11, 14, 13, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
],
bits: [
0x0000, 0x0003, 0x0001, 0x000f, 0x0007, 0x001f, 0x005f, 0x003f, 0x00bf, 0x017f, 0x007f,
0x04ff, 0x037f, 0x0cff, 0x00ff, 0x02ff, 0x1cff, 0x22ff, 0x12ff, 0x32ff, 0x0aff, 0x2aff,
0x1aff, 0x3aff, 0x06ff, 0x26ff, 0x16ff, 0x36ff, 0x0eff, 0x2eff, 0x1eff, 0x3eff, 0x01ff,
0x21ff, 0x11ff, 0x31ff, 0x09ff, 0x29ff, 0x19ff, 0x39ff, 0x05ff, 0x25ff, 0x15ff, 0x35ff,
0x0dff, 0x2dff, 0x1dff, 0x3dff, 0x03ff, 0x23ff, 0x13ff, 0x33ff, 0x0bff, 0x2bff, 0x1bff,
0x3bff, 0x07ff, 0x27ff, 0x17ff, 0x37ff, 0x0fff, 0x2fff, 0x1fff, 0x3fff, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
],
},
PrefixCode {
depths: [
1, 2, 4, 4, 8, 4, 13, 5, 15, 6, 15, 7, 15, 9, 15, 12, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
],
bits: [
0x0000, 0x0001, 0x0003, 0x000b, 0x007f, 0x0007, 0x09ff, 0x000f, 0x19ff, 0x001f, 0x59ff,
0x003f, 0x39ff, 0x00ff, 0x79ff, 0x01ff, 0x05ff, 0x45ff, 0x25ff, 0x65ff, 0x15ff, 0x55ff,
0x35ff, 0x75ff, 0x0dff, 0x4dff, 0x2dff, 0x6dff, 0x1dff, 0x5dff, 0x3dff, 0x7dff, 0x03ff,
0x43ff, 0x23ff, 0x63ff, 0x13ff, 0x53ff, 0x33ff, 0x73ff, 0x0bff, 0x4bff, 0x2bff, 0x6bff,
0x1bff, 0x5bff, 0x3bff, 0x7bff, 0x07ff, 0x47ff, 0x27ff, 0x67ff, 0x17ff, 0x57ff, 0x37ff,
0x77ff, 0x0fff, 0x4fff, 0x2fff, 0x6fff, 0x1fff, 0x5fff, 0x3fff, 0x7fff, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
],
},
PrefixCode {
depths: [
1, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 3, 9, 2, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
bits: [
0x0000, 0x0007, 0x0087, 0x00c7, 0x01c7, 0x0027, 0x0127, 0x00a7, 0x01a7, 0x0067, 0x0167,
0x00e7, 0x0003, 0x01e7, 0x0001, 0x0017, 0x0047, 0x0117, 0x0097, 0x0197, 0x0057, 0x0157,
0x00d7, 0x01d7, 0x0037, 0x0137, 0x00b7, 0x01b7, 0x0077, 0x0177, 0x00f7, 0x01f7, 0x000f,
0x010f, 0x008f, 0x018f, 0x004f, 0x014f, 0x00cf, 0x01cf, 0x002f, 0x012f, 0x00af, 0x01af,
0x006f, 0x016f, 0x00ef, 0x01ef, 0x001f, 0x011f, 0x009f, 0x019f, 0x005f, 0x015f, 0x00df,
0x01df, 0x003f, 0x013f, 0x00bf, 0x01bf, 0x007f, 0x017f, 0x00ff, 0x01ff, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
],
},
PrefixCode {
depths: [
1, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 3, 9, 2, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
bits: [
0x0000, 0x0007, 0x0087, 0x0047, 0x00c7, 0x01c7, 0x0027, 0x0127, 0x00a7, 0x01a7, 0x0067,
0x0167, 0x0003, 0x00e7, 0x0001, 0x01e7, 0x0017, 0x0117, 0x0097, 0x0197, 0x0057, 0x0157,
0x00d7, 0x01d7, 0x0037, 0x0137, 0x00b7, 0x01b7, 0x0077, 0x0177, 0x00f7, 0x01f7, 0x000f,
0x010f, 0x008f, 0x018f, 0x004f, 0x014f, 0x00cf, 0x01cf, 0x002f, 0x012f, 0x00af, 0x01af,
0x006f, 0x016f, 0x00ef, 0x01ef, 0x001f, 0x011f, 0x009f, 0x019f, 0x005f, 0x015f, 0x00df,
0x01df, 0x003f, 0x013f, 0x00bf, 0x01bf, 0x007f, 0x017f, 0x00ff, 0x01ff, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
],
},
PrefixCode {
depths: [
5, 6, 6, 6, 6, 7, 6, 7, 6, 7, 7, 7, 7, 8, 7, 8, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5,
5, 5, 5, 4, 5, 5, 5, 4, 5, 5, 5, 5, 5, 6, 6, 6, 7, 8, 9, 10, 11, 14, 14, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
bits: [
0x0004, 0x0015, 0x0035, 0x000d, 0x002d, 0x0037, 0x001d, 0x0077, 0x003d, 0x000f, 0x004f,
0x002f, 0x006f, 0x003f, 0x001f, 0x00bf, 0x0003, 0x0023, 0x0013, 0x0033, 0x000b, 0x002b,
0x001b, 0x003b, 0x0014, 0x000c, 0x001c, 0x0002, 0x0012, 0x000a, 0x001a, 0x0006, 0x0000,
0x0016, 0x000e, 0x001e, 0x0008, 0x0001, 0x0011, 0x0009, 0x0019, 0x0005, 0x0007, 0x0027,
0x0017, 0x005f, 0x007f, 0x00ff, 0x01ff, 0x03ff, 0x07ff, 0x27ff, 0x17ff, 0x57ff, 0x37ff,
0x77ff, 0x0fff, 0x4fff, 0x2fff, 0x6fff, 0x1fff, 0x5fff, 0x3fff, 0x7fff, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
],
},
PrefixCode {
depths: [
4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 4, 5, 5, 5, 5, 5, 6, 6, 5, 6, 6, 7, 7,
7, 8, 8, 8, 9, 9, 10, 10, 10, 11, 11, 10, 11, 11, 12, 11, 12, 13, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
bits: [
0x0000, 0x0008, 0x0004, 0x000c, 0x0002, 0x000a, 0x000e, 0x001e, 0x0001, 0x0011, 0x0009,
0x0019, 0x0005, 0x001b, 0x003b, 0x0007, 0x0006, 0x0015, 0x000d, 0x001d, 0x0003, 0x0013,
0x0027, 0x0017, 0x000b, 0x0037, 0x000f, 0x002f, 0x006f, 0x001f, 0x005f, 0x00df, 0x003f,
0x00bf, 0x01bf, 0x007f, 0x027f, 0x017f, 0x00ff, 0x04ff, 0x037f, 0x02ff, 0x06ff, 0x05ff,
0x01ff, 0x0dff, 0x03ff, 0x13ff, 0x33ff, 0x0bff, 0x2bff, 0x1bff, 0x3bff, 0x07ff, 0x27ff,
0x17ff, 0x37ff, 0x0fff, 0x2fff, 0x6fff, 0x1fff, 0x5fff, 0x3fff, 0x7fff, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
],
},
PrefixCode {
depths: [
5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 4, 4, 5, 5, 4, 4, 5, 5, 4, 5, 5, 5, 5,
6, 7, 7, 7, 8, 8, 9, 9, 9, 9, 10, 9, 10, 10, 11, 10, 12, 13, 13, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
bits: [
0x000a, 0x001a, 0x0006, 0x0016, 0x000e, 0x001e, 0x0001, 0x0011, 0x000b, 0x002b, 0x001b,
0x003b, 0x0007, 0x0027, 0x0017, 0x0037, 0x0000, 0x0008, 0x0009, 0x0019, 0x0004, 0x000c,
0x0005, 0x0015, 0x0002, 0x000d, 0x001d, 0x0003, 0x0013, 0x000f, 0x002f, 0x006f, 0x001f,
0x005f, 0x00df, 0x003f, 0x013f, 0x00bf, 0x01bf, 0x017f, 0x007f, 0x037f, 0x00ff, 0x01ff,
0x02ff, 0x05ff, 0x0dff, 0x1dff, 0x03ff, 0x23ff, 0x13ff, 0x33ff, 0x0bff, 0x2bff, 0x1bff,
0x3bff, 0x07ff, 0x27ff, 0x17ff, 0x37ff, 0x0fff, 0x2fff, 0x1fff, 0x3fff, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
],
},
];
pub(crate) const K_NUM_AC_PREFIX_CODES: usize = 8;
#[rustfmt::skip]
pub(crate) const K_AC_CONTEXT_MAP: [u8; K_NUM_AC_CONTEXTS] = [
0, 1, 2, 1, 3, 4, 2, 2, 0, 2, 5, 5, 2, 2, 5, 5, 0, 2, 5, 5, 3, 2, 5, 5, 0, 0, 5, 5, 3, 0, 5, 0, 0, 2, 5, 0, 3, 0, 5, 0, 3, 3, 5, 3, 3, 3, 0, 3, 3, 3, 0, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 3, 6, 3, 6, 6, 6, 3, 6, 6, 7, 3, 6, 3, 7, 3, 6, 3, 7, 3, 6, 3, 7, 3, 6, 3, 7, 3, 6, 6, 7, 3, 7, 6, 7, 3, 7, 6, 7, 3, 6, 6, 7, 3, 7, 6, 7, 0, 0, 6, 7, 0, 0, 6, 7, 0, 0, 6, 7, 0, 0, 6, 7, 0, 0, 6, 7, 0, 0, 6, 7, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1,
4, 1, 4, 1, 1, 1, 4, 1,
4, 4, 1, 4, 1, 4, 1, 4,
1, 4, 4, 4, 1, 4, 1, 4,
4, 1, 1, 4, 1, 4, 1, 1,
1, 4, 1, 1, 1, 2, 1, 4,
1, 2, 1, 4, 1, 4, 1, 1,
1, 1, 4, 4, 4, 4, 2, 2,
0, 4, 4, 4, 1, 4,
4, 1, 4, 4, 1, 4, 4, 4,
4, 1, 1, 1, 1, 4, 4, 4,
4, 4, 4, 4, 4, 4, 1, 2,
4, 4, 1, 4, 1, 2, 1, 4,
1, 1, 4, 2, 1, 2, 1, 4,
1, 4, 1, 4, 4, 4, 4, 4,
1, 4, 4, 4, 4, 4, 2, 2,
0, 4, 4, 2, 1, 4,
4, 4, 4, 4, 1, 2, 4, 4,
4, 4, 4, 4, 1, 2, 4, 4,
4, 4, 4, 4, 2, 4, 1, 2,
1, 4, 4, 4, 4, 2, 1, 4,
4, 4, 4, 4, 1, 2, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 2, 2, 2, 5,
2, 0, 2, 4, 4, 2,
4, 2, 2, 4, 1, 2, 4, 4,
2, 4, 1, 2, 1, 0, 4, 2,
4, 4, 4, 4, 1, 2, 1, 2,
4, 4, 4, 4, 1, 2, 4, 4,
4, 4, 4, 2, 1, 2, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 2, 2, 2, 5, 5,
2, 0, 0, 2, 4, 0,
2, 2, 0, 2, 1, 2, 4, 2,
2, 2, 4, 2, 4, 4, 4, 2,
2, 4, 2, 4, 2, 2, 1, 0,
4, 2, 4, 4, 4, 2, 4, 2,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 2, 2, 2,
2, 5, 5, 5,
2, 0, 2, 0, 2, 2,
2, 2, 2, 2, 4, 2, 2, 2,
2, 2, 4, 2, 4, 2, 4, 2,
2, 2, 2, 2, 4, 2, 4, 4,
4, 2, 2, 2, 4, 4, 4, 2,
2, 2, 4, 4, 4, 4, 2, 2,
2, 2, 2, 2, 2, 5, 5, 5,
5, 5,
5, 0, 2, 5, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2,
2, 5, 2, 0, 2, 5, 5, 0,
5, 0, 5, 0, 0, 0,
7, 0, 0, 7, 0, 7,
0, 7, 7, 7, 0, 7, 7, 7,
0, 7, 0, 7, 0, 3, 0, 7,
3, 7, 3, 7, 0, 3, 0, 3,
3, 3, 0, 3, 0, 0, 0, 3,
3, 3, 0, 0, 0, 0, 0, 3,
4, 4, 1, 1, 4, 4,
1, 1, 1, 1, 4, 4, 1, 1,
1, 1, 1, 1, 4, 4, 1, 4,
1, 1, 1, 1, 1, 1, 4, 1,
1, 1, 1, 1, 4, 4, 1, 1,
1, 1, 1, 4, 4, 4, 1, 1,
1, 4, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 4, 4,
4, 4, 1, 1, 2, 4,
1, 4, 1, 4, 2, 4, 1, 4,
1, 4, 4, 1, 2, 4, 1, 4,
1, 1, 1, 4, 4, 4, 2, 2,
1, 1, 1, 4, 4, 2, 1, 1,
1, 1, 4, 4, 1, 4, 1, 1,
1, 4, 1, 4, 1, 4, 1, 1,
1, 1, 1, 1, 4, 4, 4, 2,
4, 2, 4, 4, 5, 2,
1, 1, 4, 1, 2, 2, 1, 1,
1, 4, 4, 4, 2, 2, 1, 1,
1, 4, 1, 1, 4, 2, 4, 5,
1, 1, 1, 4, 4, 2, 1, 1,
1, 1, 4, 4, 4, 2, 1, 1,
4, 4, 1, 4, 1, 4, 1, 4,
4, 4, 4, 4, 4, 2, 2, 2,
0, 4, 2, 2, 2, 0,
1, 4, 2, 5, 2, 0, 1, 4,
1, 4, 2, 2, 4, 5, 4, 4,
1, 1, 4, 4, 4, 2, 4, 2,
4, 4, 1, 4, 2, 0, 4, 4,
1, 4, 4, 4, 4, 2, 1, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 2, 2, 2,
3, 2, 5, 2, 0, 0,
4, 4, 2, 2, 4, 0, 4, 4,
4, 4, 2, 2, 4, 0, 4, 4,
1, 4, 4, 4, 2, 2, 4, 0,
4, 4, 4, 4, 4, 2, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
2, 2, 5, 5,
7, 2, 0, 5, 5, 0,
4, 2, 2, 2, 4, 2, 4, 4,
4, 4, 2, 2, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 2, 2, 2, 2, 5,
5, 5,
0, 5, 2, 5, 2, 5,
2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 4, 2, 2, 2,
4, 4, 2, 2, 2, 2, 4, 2,
2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 5, 2, 5, 2, 5,
2, 5, 5, 5, 5, 5,
7, 7, 0, 7, 5, 7,
5, 7, 0, 7, 5, 7, 5, 7,
5, 3, 0, 7, 0, 3, 0, 3,
5, 0, 0, 3, 0, 3, 5, 0,
0, 0, 5, 0, 0, 0, 0, 0,
5, 0, 0, 0, 0, 0, 3, 3,
0, 1, 4, 4, 1, 1,
4, 4, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 4, 4, 4, 4,
0, 4, 4, 2, 1, 1,
4, 4, 4, 4, 1, 1, 1, 4,
4, 4, 1, 1, 1, 1, 1, 1,
1, 4, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 4, 4, 4, 4,
0, 2, 2, 2, 4, 4,
4, 4, 4, 4, 1, 1, 4, 4,
4, 4, 1, 4, 1, 1, 1, 4,
4, 4, 1, 4, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
4, 4, 4, 4, 4, 4, 4, 4,
2, 0, 2, 5, 4, 4,
2, 2, 4, 4, 1, 4, 4, 4,
4, 4, 4, 4, 1, 1, 4, 4,
4, 4, 4, 4, 1, 1, 1, 1,
1, 4, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4,
5, 0, 2, 5, 4, 2,
2, 2, 4, 2, 4, 4, 4, 4,
4, 4, 4, 4, 1, 1, 4, 4,
4, 4, 4, 4, 4, 4, 1, 4,
4, 4, 4, 4, 1, 1, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 2, 4,
5, 0, 2, 5, 4, 2,
2, 2, 4, 2, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
2, 2,
5, 0, 2, 5, 2, 2,
2, 2, 2, 2, 4, 2, 2, 2,
2, 2, 4, 2, 4, 4, 4, 2,
4, 2, 4, 2, 4, 2, 4, 4,
4, 2, 4, 2, 4, 4, 4, 4,
4, 2, 4, 2, 4, 4, 4, 2,
2, 2, 2, 5, 0, 0,
0, 0, 2, 0, 2, 5,
2, 5, 2, 5, 2, 2, 2, 5,
2, 5, 2, 5, 2, 2, 2, 5,
2, 5, 2, 5, 2, 5, 2, 2,
2, 2, 2, 2, 5, 2, 2, 0,
0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 4, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 4, 4,
4, 4, 4, 4, 4, 4,
1, 1, 1, 4, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 4, 4, 4, 4,
2, 2, 4, 4, 4, 4,
1, 4, 4, 4, 4, 4, 1, 4,
1, 4, 4, 4, 1, 1, 4, 4,
1, 1, 4, 4, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 4, 4,
4, 4, 4, 4, 4, 4,
2, 2, 4, 2, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 1, 1, 4, 4,
1, 1, 1, 4, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4,
2, 2, 4, 2, 4, 2,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
0, 0,
5, 5, 2, 2, 2, 2,
4, 2, 2, 2, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
2, 2, 0, 0, 0, 0,
0, 5, 2, 5, 2, 5,
2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2,
4, 4, 2, 4, 2, 2, 0, 0,
0, 2, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
];
const _: () = {
assert!(K_AC_CONTEXT_MAP.len() == K_NUM_AC_CONTEXTS);
};
pub(crate) const K_AC_PREFIX_CODES: [PrefixCode; K_NUM_AC_PREFIX_CODES] = [
PrefixCode {
depths: [
4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 5, 5, 4, 5, 6, 6, 6, 7, 9, 9, 9,
11, 12, 13, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
bits: [
0x0000, 0x0008, 0x0004, 0x000c, 0x0002, 0x0001, 0x0011, 0x0009, 0x0019, 0x0005, 0x0015,
0x000d, 0x001d, 0x0003, 0x0013, 0x000b, 0x000a, 0x0006, 0x001b, 0x0007, 0x000e, 0x0017,
0x000f, 0x002f, 0x001f, 0x003f, 0x007f, 0x017f, 0x00ff, 0x01ff, 0x05ff, 0x0dff, 0x1dff,
0x03ff, 0x23ff, 0x63ff, 0x13ff, 0x53ff, 0x33ff, 0x73ff, 0x0bff, 0x4bff, 0x2bff, 0x6bff,
0x1bff, 0x5bff, 0x3bff, 0x7bff, 0x07ff, 0x47ff, 0x27ff, 0x67ff, 0x17ff, 0x57ff, 0x37ff,
0x77ff, 0x0fff, 0x4fff, 0x2fff, 0x6fff, 0x1fff, 0x5fff, 0x3fff, 0x7fff, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
],
},
PrefixCode {
depths: [
1, 2, 3, 5, 4, 6, 7, 9, 9, 11, 11, 12, 12, 12, 13, 13, 12, 12, 14, 15, 14, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
],
bits: [
0x0000, 0x0001, 0x0003, 0x000f, 0x0007, 0x001f, 0x003f, 0x007f, 0x017f, 0x00ff, 0x04ff,
0x02ff, 0x0aff, 0x06ff, 0x09ff, 0x19ff, 0x0eff, 0x01ff, 0x05ff, 0x15ff, 0x25ff, 0x55ff,
0x35ff, 0x75ff, 0x0dff, 0x4dff, 0x2dff, 0x6dff, 0x1dff, 0x5dff, 0x3dff, 0x7dff, 0x03ff,
0x43ff, 0x23ff, 0x63ff, 0x13ff, 0x53ff, 0x33ff, 0x73ff, 0x0bff, 0x4bff, 0x2bff, 0x6bff,
0x1bff, 0x5bff, 0x3bff, 0x7bff, 0x07ff, 0x47ff, 0x27ff, 0x67ff, 0x17ff, 0x57ff, 0x37ff,
0x77ff, 0x0fff, 0x4fff, 0x2fff, 0x6fff, 0x1fff, 0x5fff, 0x3fff, 0x7fff, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
],
},
PrefixCode {
depths: [
2, 3, 3, 4, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 6, 7, 8, 8, 8, 10, 11, 12, 11, 12, 13,
13, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
bits: [
0x0000, 0x0002, 0x0006, 0x0005, 0x0001, 0x000d, 0x0003, 0x000b, 0x001b, 0x0007, 0x0027,
0x0017, 0x0037, 0x002f, 0x006f, 0x001f, 0x000f, 0x005f, 0x003f, 0x00bf, 0x007f, 0x00ff,
0x02ff, 0x01ff, 0x06ff, 0x09ff, 0x05ff, 0x15ff, 0x0dff, 0x1dff, 0x3dff, 0x7dff, 0x03ff,
0x43ff, 0x23ff, 0x63ff, 0x13ff, 0x53ff, 0x33ff, 0x73ff, 0x0bff, 0x4bff, 0x2bff, 0x6bff,
0x1bff, 0x5bff, 0x3bff, 0x7bff, 0x07ff, 0x47ff, 0x27ff, 0x67ff, 0x17ff, 0x57ff, 0x37ff,
0x77ff, 0x0fff, 0x4fff, 0x2fff, 0x6fff, 0x1fff, 0x5fff, 0x3fff, 0x7fff, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
],
},
PrefixCode {
depths: [
5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 5, 6, 6, 6, 6, 6, 4, 4, 4, 4, 4, 4, 5, 5, 4, 5, 6, 6, 6,
7, 8, 10, 10, 11, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
bits: [
0x000e, 0x001e, 0x0001, 0x0011, 0x0009, 0x0019, 0x0005, 0x0015, 0x000d, 0x001b, 0x001d,
0x003b, 0x0007, 0x0027, 0x0017, 0x0037, 0x0000, 0x0008, 0x0004, 0x000c, 0x0002, 0x000a,
0x0003, 0x0013, 0x0006, 0x000b, 0x000f, 0x002f, 0x001f, 0x003f, 0x007f, 0x00ff, 0x02ff,
0x01ff, 0x05ff, 0x15ff, 0x35ff, 0x0dff, 0x2dff, 0x1dff, 0x3dff, 0x03ff, 0x23ff, 0x13ff,
0x33ff, 0x0bff, 0x2bff, 0x1bff, 0x3bff, 0x07ff, 0x27ff, 0x67ff, 0x17ff, 0x57ff, 0x37ff,
0x77ff, 0x0fff, 0x4fff, 0x2fff, 0x6fff, 0x1fff, 0x5fff, 0x3fff, 0x7fff, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
],
},
PrefixCode {
depths: [
1, 3, 2, 5, 4, 7, 7, 8, 8, 9, 9, 11, 11, 12, 12, 12, 11, 12, 14, 15, 14, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
],
bits: [
0x0000, 0x0003, 0x0001, 0x000f, 0x0007, 0x001f, 0x005f, 0x003f, 0x00bf, 0x007f, 0x017f,
0x00ff, 0x04ff, 0x06ff, 0x0eff, 0x01ff, 0x02ff, 0x09ff, 0x05ff, 0x15ff, 0x25ff, 0x55ff,
0x35ff, 0x75ff, 0x0dff, 0x4dff, 0x2dff, 0x6dff, 0x1dff, 0x5dff, 0x3dff, 0x7dff, 0x03ff,
0x43ff, 0x23ff, 0x63ff, 0x13ff, 0x53ff, 0x33ff, 0x73ff, 0x0bff, 0x4bff, 0x2bff, 0x6bff,
0x1bff, 0x5bff, 0x3bff, 0x7bff, 0x07ff, 0x47ff, 0x27ff, 0x67ff, 0x17ff, 0x57ff, 0x37ff,
0x77ff, 0x0fff, 0x4fff, 0x2fff, 0x6fff, 0x1fff, 0x5fff, 0x3fff, 0x7fff, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
],
},
PrefixCode {
depths: [
3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 4, 5, 5, 6, 6, 7, 9, 9, 10, 11, 12, 12,
12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
bits: [
0x0000, 0x0004, 0x000c, 0x0002, 0x000a, 0x0006, 0x000e, 0x0001, 0x0009, 0x000d, 0x001d,
0x0003, 0x0013, 0x000b, 0x001b, 0x000f, 0x0005, 0x0007, 0x0017, 0x002f, 0x001f, 0x003f,
0x007f, 0x017f, 0x00ff, 0x02ff, 0x06ff, 0x0eff, 0x01ff, 0x09ff, 0x29ff, 0x19ff, 0x39ff,
0x05ff, 0x25ff, 0x15ff, 0x35ff, 0x0dff, 0x2dff, 0x1dff, 0x3dff, 0x03ff, 0x23ff, 0x13ff,
0x33ff, 0x0bff, 0x2bff, 0x1bff, 0x3bff, 0x07ff, 0x27ff, 0x67ff, 0x17ff, 0x57ff, 0x37ff,
0x77ff, 0x0fff, 0x4fff, 0x2fff, 0x6fff, 0x1fff, 0x5fff, 0x3fff, 0x7fff, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
],
},
PrefixCode {
depths: [
9, 13, 13, 14, 13, 14, 13, 13, 13, 12, 12, 12, 11, 12, 11, 12, 10, 9, 8, 6, 5, 3, 2, 1,
4, 9, 11, 12, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
],
bits: [
0x00bf, 0x01ff, 0x11ff, 0x0dff, 0x09ff, 0x2dff, 0x19ff, 0x05ff, 0x15ff, 0x04ff, 0x0cff,
0x02ff, 0x037f, 0x0aff, 0x077f, 0x06ff, 0x017f, 0x01bf, 0x003f, 0x001f, 0x000f, 0x0003,
0x0001, 0x0000, 0x0007, 0x007f, 0x00ff, 0x0eff, 0x1dff, 0x5dff, 0x3dff, 0x7dff, 0x03ff,
0x43ff, 0x23ff, 0x63ff, 0x13ff, 0x53ff, 0x33ff, 0x73ff, 0x0bff, 0x4bff, 0x2bff, 0x6bff,
0x1bff, 0x5bff, 0x3bff, 0x7bff, 0x07ff, 0x47ff, 0x27ff, 0x67ff, 0x17ff, 0x57ff, 0x37ff,
0x77ff, 0x0fff, 0x4fff, 0x2fff, 0x6fff, 0x1fff, 0x5fff, 0x3fff, 0x7fff, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
],
},
PrefixCode {
depths: [
5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 5, 5, 5, 5, 4, 5, 5, 5, 4, 4, 4, 5, 4,
5, 5, 6, 5, 6, 7, 8, 8, 8, 10, 10, 11, 12, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
bits: [
0x000a, 0x001a, 0x0006, 0x0003, 0x0023, 0x0013, 0x0033, 0x000b, 0x002b, 0x001b, 0x003b,
0x0007, 0x0027, 0x0017, 0x0037, 0x001f, 0x0016, 0x000e, 0x001e, 0x0001, 0x0000, 0x0011,
0x0009, 0x0019, 0x0008, 0x0004, 0x000c, 0x0005, 0x0002, 0x0015, 0x000d, 0x000f, 0x001d,
0x002f, 0x005f, 0x003f, 0x00bf, 0x007f, 0x00ff, 0x02ff, 0x01ff, 0x05ff, 0x0dff, 0x1dff,
0x3dff, 0x03ff, 0x23ff, 0x13ff, 0x33ff, 0x0bff, 0x2bff, 0x1bff, 0x3bff, 0x07ff, 0x27ff,
0x17ff, 0x37ff, 0x0fff, 0x2fff, 0x6fff, 0x1fff, 0x5fff, 0x3fff, 0x7fff, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
],
},
];
pub(crate) const K_GRADIENT_CONTEXT_LUT: [u8; 1024] = [
44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
43, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 39, 39, 39, 39, 39,
39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
38, 38, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 35, 35, 35, 35, 35, 35,
35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
34, 34, 33, 33, 33, 33, 33, 33, 33, 33, 32, 32, 32, 32, 32, 32, 32, 32, 31, 31, 31, 31, 30, 30,
30, 30, 29, 29, 29, 28, 27, 27, 26, 42, 41, 41, 25, 25, 24, 24, 23, 23, 23, 23, 22, 22, 22, 22,
21, 21, 21, 21, 21, 21, 21, 21, 20, 20, 20, 20, 20, 20, 20, 20, 19, 19, 19, 19, 19, 19, 19, 19,
19, 19, 19, 19, 19, 19, 19, 19, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
17, 17, 17, 17, 17, 17, 17, 17, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
];
pub(crate) const K_CONTEXT_TREE_TOKENS: [(u32, u32); 313] = [
(1, 2),
(0, 4),
(1, 1),
(0, 2),
(1, 10),
(0, 0),
(1, 1),
(0, 4),
(1, 1),
(0, 0),
(1, 10),
(0, 94),
(1, 10),
(0, 61),
(1, 0),
(2, 0),
(3, 0),
(4, 0),
(5, 0),
(1, 3),
(0, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 10),
(0, 382),
(1, 10),
(0, 22),
(1, 10),
(0, 13),
(1, 10),
(0, 253),
(1, 8),
(0, 10),
(1, 8),
(0, 10),
(1, 10),
(0, 784),
(1, 10),
(0, 190),
(1, 10),
(0, 46),
(1, 10),
(0, 10),
(1, 10),
(0, 5),
(1, 10),
(0, 29),
(1, 10),
(0, 125),
(1, 10),
(0, 509),
(1, 8),
(0, 22),
(1, 8),
(0, 6),
(1, 8),
(0, 22),
(1, 8),
(0, 6),
(1, 10),
(0, 1000),
(1, 10),
(0, 510),
(1, 10),
(0, 254),
(1, 10),
(0, 126),
(1, 10),
(0, 62),
(1, 10),
(0, 30),
(1, 10),
(0, 14),
(1, 10),
(0, 6),
(1, 10),
(0, 1),
(1, 10),
(0, 7),
(1, 10),
(0, 21),
(1, 10),
(0, 45),
(1, 10),
(0, 93),
(1, 10),
(0, 189),
(1, 10),
(0, 381),
(1, 10),
(0, 783),
(1, 0),
(2, 1),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 1),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 1),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 1),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 0),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 0),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 0),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 0),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 10),
(0, 2),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 10),
(0, 999),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
(1, 0),
(2, 5),
(3, 0),
(4, 0),
(5, 0),
];