62 #define HT_SHIFT_SIGMA 0
63 #define HT_SHIFT_SCAN 4
64 #define HT_SHIFT_REF 3
65 #define HT_SHIFT_REF_IND 2
68 const static uint8_t
mel_e[13] = { 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 4, 5 };
95 return n *
c <=
c - 1;
104 return 1 + (0xffffffffffffffffull /
d);
149 uint32_t new_bits = 32;
151 if (
buffer->bits_left >= 32)
163 if ((
tmp & 0x7FFF000000) > 0x7F8F000000) {
167 if ((
tmp & 0x007FFF0000) > 0x007F8F0000) {
168 tmp = (
tmp & 0x007FFFFFFF) + ((
tmp & 0xFF00000000) >> 1);
171 if ((
tmp & 0x00007FFF00) > 0x00007F8F00) {
172 tmp = (
tmp & 0x00007FFFFF) + ((
tmp & 0xFFFF000000) >> 1);
175 if ((
tmp & 0x0000007FFF) > 0x0000007F8F) {
176 tmp = (
tmp & 0x0000007FFF) + ((
tmp & 0xFFFFFF0000) >> 1);
184 buffer->bits_left += new_bits;
196 while (
buffer->bits_left < 32) {
199 if (
buffer->pos <= length) {
231 uint64_t
mask = (1ull << nbits) - 1;
246 uint8_t nbits,
const uint8_t *buf,
250 uint64_t
mask = (1ull << nbits) - 1;
265 uint64_t
mask = (1ull << nbits) - 1;
274 s->pos = Lcup - 2 - Pcup;
275 s->last = Dcup[Lcup - 2];
276 s->tmp = (
s->last) >> 4;
277 s->bits = ((
s->tmp & 7) < 7) ? 4 : 3;
289 const uint8_t *Dcup, uint8_t *sig_pat,
290 uint8_t *res_off, uint8_t *emb_pat_k,
291 uint8_t *emb_pat_1, uint8_t
pos,
292 uint32_t Pcup, uint16_t
context)
301 code_word = vlc_stream->
bit_buf & 0x7f;
310 res_off[
pos] = (uint8_t) (
value & 1);
311 sig_pat[
pos] = (uint8_t) ((
value & 0x00F0) >> 4);
312 emb_pat_k[
pos] = (uint8_t) ((
value & 0x0F00) >> 8);
313 emb_pat_1[
pos] = (uint8_t) ((
value & 0xF000) >> 12);
326 static const uint8_t return_value[8] = { 5, 1, 2, 1, 3, 1, 2, 1 };
327 static const uint8_t drop_bits[8] = { 3, 1, 2, 1, 3, 1, 2, 1 };
337 return return_value[
bits];
346 const uint8_t *refill_array)
348 static const int mask[] = { 1, 31 };
349 static const int drop_bits[] = { 1, 5 };
371 const uint8_t *refill_array)
382 int32_t i_n,
const uint8_t *buf, uint32_t length)
394 int32_t known_1[2],
const uint8_t emb_pat_1[2],
396 uint32_t *mu_n,
const uint8_t *Dcup, uint32_t Pcup,
399 for (
int i = 0;
i < 4;
i++) {
402 known_1[
pos] = (emb_pat_1[
pos] >>
i) & 1;
407 mu_n[n] = (v[
pos][
i] >> 1) + 1;
409 mu_n[n] |= ((uint32_t) (v[
pos][
i] & 1)) << 31;
416 int cond = stream->
pos <= length;
418 if (stream->
bits == 0) {
419 stream->
bits = (stream->
tmp == 0xFF) ? 7 : 8;
424 return (stream->
tmp >> stream->
bits) & 1;
429 if (stream->
bits == 0) {
430 int cond = stream->
pos <= length;
432 stream->
bits = (stream->
tmp == 0xFF) ? 7 : 8;
436 return (stream->
tmp >> stream->
bits) & 1;
445 if (mel_state->
run == 0 && mel_state->
one == 0) {
449 eval =
mel_e[mel_state->
k];
452 mel_state->
run = 1 << eval;
453 mel_state->
k =
FFMIN(12, mel_state->
k + 1);
458 mel_state->
run = (2 * (mel_state->
run)) +
bit;
461 mel_state->
k =
FFMAX(0, mel_state->
k - 1);
465 if (mel_state->
run > 0) {
489 const uint16_t *vlc_table,
const uint8_t *Dcup,
490 uint8_t *sig_pat, uint8_t *res_off, uint8_t *emb_pat_k,
491 uint8_t *emb_pat_1, uint8_t
pos, uint16_t
context,
492 uint32_t Lcup, uint32_t Pcup)
506 res_off, emb_pat_k, emb_pat_1,
pos, Pcup,
512 const uint8_t *block_states)
514 return (block_states[(x1 + 1) * (
width + 2) + (x2 + 1)] >> shift_by) & 1;
519 int value, uint8_t *block_states)
521 block_states[(x1 + 1) * (
width + 2) + (x2 + 1)] |=
value;
529 StateVars *mag_sgn_stream,
const uint8_t *Dcup,
530 uint32_t Lcup, uint32_t Pcup, uint8_t pLSB,
532 uint8_t *block_states)
536 uint16_t context1, context2;
539 uint8_t sig_pat[2] = { 0 };
540 uint8_t res_off[2] = { 0 };
541 uint8_t emb_pat_k[2] = { 0 };
542 uint8_t emb_pat_1[2] = { 0 };
543 uint8_t gamma[2] = { 0 };
545 uint8_t E_n[2] = { 0 };
546 uint8_t E_ne[2] = { 0 };
547 uint8_t E_nw[2] = { 0 };
548 uint8_t E_nf[2] = { 0 };
550 uint8_t max_e[2] = { 0 };
551 uint8_t u_pfx[2] = { 0 };
552 uint8_t u_sfx[2] = { 0 };
553 uint8_t u_ext[2] = { 0 };
563 uint8_t kappa[2] = { 1, 1 };
571 uint8_t *sigma, *sigma_n, *
E;
574 const uint8_t *vlc_buf = Dcup + Pcup;
582 int maxbp = cblk->
zbp + 2;
585 const uint16_t is_border_x =
width % 2;
586 const uint16_t is_border_y =
height % 2;
591 size_t buf_size = 4 * quad_width * quad_height;
597 sigma_n =
av_calloc(buf_size,
sizeof(uint8_t));
599 mu_n =
av_calloc(buf_size,
sizeof(uint32_t));
601 if (!sigma_n || !
E || !mu_n) {
609 while (q < quad_width - 1) {
619 for (
int i = 0;
i < 4;
i++)
620 sigma_n[4 *
q1 +
i] = (sig_pat[
J2K_Q1] >>
i) & 1;
634 for (
int i = 0;
i < 4;
i++)
635 sigma_n[4 * q2 +
i] = (sig_pat[
J2K_Q2] >>
i) & 1;
639 context |= sigma_n[4 * q2 + 1];
640 context += sigma_n[4 * q2 + 2] << 1;
641 context += sigma_n[4 * q2 + 3] << 2;
683 }
else if (res_off[
J2K_Q1] == 1 || res_off[
J2K_Q2] == 1) {
684 uint8_t
pos = res_off[
J2K_Q1] == 1 ? 0 : 1;
697 for (
int i = 0;
i < 4;
i++) {
703 E, mu_n, Dcup, Pcup, pLSB);
706 E, mu_n, Dcup, Pcup, pLSB);
711 if (quad_width % 2 == 1) {
720 for (
int i = 0;
i < 4;
i++)
721 sigma_n[4 *
q1 +
i] = (sig_pat[
J2K_Q1] >>
i) & 1;
725 if (res_off[
J2K_Q1] == 1) {
738 for (
int i = 0;
i < 4;
i++)
742 E, mu_n, Dcup, Pcup, pLSB);
761 for (
int row = 1; row < quad_height; row++) {
762 while ((q - (row * quad_width)) < quad_width - 1 && q < (quad_height * quad_width)) {
765 context1 = sigma_n[4 * (
q1 - quad_width) + 1];
766 context1 += sigma_n[4 * (
q1 - quad_width) + 3] << 2;
769 context1 |= sigma_n[4 * (
q1 - quad_width) - 1];
770 context1 += (sigma_n[4 *
q1 - 1] | sigma_n[4 *
q1 - 2]) << 1;
773 context1 |= sigma_n[4 * (
q1 - quad_width) + 5] << 2;
777 emb_pat_k, emb_pat_1,
J2K_Q1, context1, Lcup,
782 for (
int i = 0;
i < 4;
i++)
783 sigma_n[4 *
q1 +
i] = (sig_pat[
J2K_Q1] >>
i) & 1;
785 context2 = sigma_n[4 * (q2 - quad_width) + 1];
786 context2 += sigma_n[4 * (q2 - quad_width) + 3] << 2;
789 context2 |= sigma_n[4 * (q2 - quad_width) - 1];
790 context2 += (sigma_n[4 * q2 - 1] | sigma_n[4 * q2 - 2]) << 1;
793 context2 |= sigma_n[4 * (q2 - quad_width) + 5] << 2;
797 emb_pat_k, emb_pat_1,
J2K_Q2, context2, Lcup,
802 for (
int i = 0;
i < 4;
i++)
803 sigma_n[4 * q2 +
i] = (sig_pat[
J2K_Q2] >>
i) & 1;
823 }
else if (res_off[
J2K_Q1] == 1 || res_off[
J2K_Q2] == 1) {
824 uint8_t
pos = res_off[
J2K_Q1] == 1 ? 0 : 1;
836 if (
sp == 0 ||
sp == 1 ||
sp == 2 ||
sp == 4 ||
sp == 8)
843 if (
sp == 0 ||
sp == 1 ||
sp == 2 ||
sp == 4 ||
sp == 8)
846 E_n[
J2K_Q1] =
E[4 * (
q1 - quad_width) + 1];
847 E_n[
J2K_Q2] =
E[4 * (q2 - quad_width) + 1];
849 E_ne[
J2K_Q1] =
E[4 * (
q1 - quad_width) + 3];
850 E_ne[
J2K_Q2] =
E[4 * (q2 - quad_width) + 3];
871 for (
int i = 0;
i < 4;
i++) {
876 E, mu_n, Dcup, Pcup, pLSB);
879 E, mu_n, Dcup, Pcup, pLSB);
884 if (quad_width % 2 == 1) {
888 context1 = sigma_n[4 * (
q1 - quad_width) + 1];
889 context1 += (sigma_n[4 * (
q1 - quad_width) + 3] << 2);
892 context1 |= sigma_n[4 * (
q1 - quad_width) - 1];
893 context1 += (sigma_n[4 *
q1 - 1] | sigma_n[4 *
q1 - 2]) << 1;
896 context1 |= sigma_n[4 * (
q1 - quad_width) + 5] << 2;
900 emb_pat_k, emb_pat_1,
J2K_Q1, context1, Lcup,
904 for (
int i = 0;
i < 4;
i++)
905 sigma_n[4 *
q1 +
i] = (sig_pat[
J2K_Q1] >>
i) & 1;
910 if (res_off[
J2K_Q1] == 1) {
922 if (
sp == 0 ||
sp == 1 ||
sp == 2 ||
sp == 4 ||
sp == 8)
925 E_n[
J2K_Q1] =
E[4 * (
q1 - quad_width) + 1];
927 E_ne[
J2K_Q1] =
E[4 * (
q1 - quad_width) + 3];
943 for (
int i = 0;
i < 4;
i++)
947 E, mu_n, Dcup, Pcup, pLSB);
953 for (
int y = 0; y < quad_height; y++) {
954 for (
int x = 0; x < quad_width; x++) {
966 x1 = y != quad_height - 1 || is_border_y == 0;
967 sample_buf[j2 + ((j1 + 1) *
width)] = ((
int32_t)*mu) * x1;
972 x2 = x != quad_width - 1 || is_border_x == 0;
973 sample_buf[(j2 + 1) + (j1 *
width)] = ((
int32_t)*mu) * x2;
979 sample_buf[(j2 + 1) + (j1 + 1) *
width] = ((
int32_t)*mu) * x3;
994 const uint32_t mbr_info, uint8_t causal_cond,
995 uint8_t *block_states,
int width)
1034 int32_t *sample_buf, uint8_t *block_states,
1035 uint8_t *magref_segment, uint32_t magref_length)
1037 for (
int j = j_s; j < j_s +
width; j++) {
1038 uint32_t mbr_info = 0;
1039 for (
int i = i_s;
i < i_s +
height;
i++) {
1040 int modify_state,
cond;
1042 uint8_t causal_cond =
i != (i_s +
height - 1);
1064 uint16_t
height, uint8_t *magref_segment,
1065 uint32_t magref_length, uint8_t pLSB,
1066 int32_t *sample_buf, uint8_t *block_states)
1070 const uint16_t num_v_stripe =
height / 4;
1071 const uint16_t num_h_stripe =
width / 4;
1077 uint16_t
i = 0, j = 0;
1081 for (
int n1 = 0; n1 < num_v_stripe; n1++) {
1083 for (
int n2 = 0; n2 < num_h_stripe; n2++) {
1085 pLSB, sample_buf, block_states, magref_segment,
1089 last_width =
width % 4;
1092 pLSB, sample_buf, block_states, magref_segment,
1100 for (
int n2 = 0; n2 < num_h_stripe; n2++) {
1102 pLSB, sample_buf, block_states, magref_segment,
1106 last_width =
width % 4;
1109 pLSB, sample_buf, block_states, magref_segment,
1118 uint8_t *magref_segment,uint32_t magref_length,
1119 uint8_t pLSB,
int32_t *sample_buf, uint8_t *block_states)
1123 const uint16_t num_v_stripe = block_height / 4;
1125 uint16_t i_start = 0;
1130 for (
int n1 = 0; n1 < num_v_stripe; n1++) {
1131 for (
int j = 0; j <
width; j++) {
1132 for (
int i = i_start;
i < i_start +
height;
i++) {
1146 height = block_height % 4;
1147 for (
int j = 0; j <
width; j++) {
1148 for (
int i = i_start;
i < i_start +
height;
i++) {
1162 int width,
int height,
int magp, uint8_t roi_shift)
1178 uint8_t empty_passes;
1191 uint8_t *block_states =
NULL;
1205 memset(
t1->data, 0,
t1->stride *
height *
sizeof(*
t1->data));
1206 memset(
t1->flags, 0,
t1->stride * (
height + 2) *
sizeof(*
t1->flags));
1213 else if (cblk->
length == 0)
1216 empty_passes = p0 * 3;
1217 z_blk = cblk->
npasses - empty_passes;
1227 "Cleanup pass length must be at least 2 bytes in length\n");
1231 Dref = cblk->
data + Lcup;
1232 S_blk = p0 + cblk->
zbp;
1235 Scup = (Dcup[Lcup - 1] << 4) + (Dcup[Lcup - 2] & 0x0F);
1237 if (Scup < 2 || Scup > Lcup || Scup > 4079) {
1246 Dcup[Lcup - 1] = 0xFF;
1247 Dcup[Lcup - 2] |= 0x0F;
1267 if (!sample_buf || !block_states) {
1272 &mag_sgn, Dcup, Lcup, Pcup, pLSB,
width,
1273 height, sample_buf, block_states)) < 0) {
1280 pLSB - 1, sample_buf, block_states);
1290 pLSB - 1, sample_buf, block_states)) < 0)
1297 for (
int y = 0; y <
height; y++) {
1298 for (
int x = 0; x <
width; x++) {
1299 n = x + (y *
t1->stride);
1318 0x0016, 0x006A, 0x0046, 0x00DD, 0x0086, 0x888B, 0x0026, 0x444D, 0x0016, 0x00AA, 0x0046, 0x88AD, 0x0086,
1319 0x003A, 0x0026, 0x00DE, 0x0016, 0x00CA, 0x0046, 0x009D, 0x0086, 0x005A, 0x0026, 0x222D, 0x0016, 0x009A,
1320 0x0046, 0x007D, 0x0086, 0x01FD, 0x0026, 0x007E, 0x0016, 0x006A, 0x0046, 0x88CD, 0x0086, 0x888B, 0x0026,
1321 0x111D, 0x0016, 0x00AA, 0x0046, 0x005D, 0x0086, 0x003A, 0x0026, 0x00EE, 0x0016, 0x00CA, 0x0046, 0x00BD,
1322 0x0086, 0x005A, 0x0026, 0x11FF, 0x0016, 0x009A, 0x0046, 0x003D, 0x0086, 0x04ED, 0x0026, 0x2AAF, 0x0016,
1323 0x006A, 0x0046, 0x00DD, 0x0086, 0x888B, 0x0026, 0x444D, 0x0016, 0x00AA, 0x0046, 0x88AD, 0x0086, 0x003A,
1324 0x0026, 0x44EF, 0x0016, 0x00CA, 0x0046, 0x009D, 0x0086, 0x005A, 0x0026, 0x222D, 0x0016, 0x009A, 0x0046,
1325 0x007D, 0x0086, 0x01FD, 0x0026, 0x00BE, 0x0016, 0x006A, 0x0046, 0x88CD, 0x0086, 0x888B, 0x0026, 0x111D,
1326 0x0016, 0x00AA, 0x0046, 0x005D, 0x0086, 0x003A, 0x0026, 0x4CCF, 0x0016, 0x00CA, 0x0046, 0x00BD, 0x0086,
1327 0x005A, 0x0026, 0x00FE, 0x0016, 0x009A, 0x0046, 0x003D, 0x0086, 0x04ED, 0x0026, 0x006F, 0x0002, 0x0088,
1328 0x0002, 0x005C, 0x0002, 0x0018, 0x0002, 0x00DE, 0x0002, 0x0028, 0x0002, 0x009C, 0x0002, 0x004A, 0x0002,
1329 0x007E, 0x0002, 0x0088, 0x0002, 0x00CC, 0x0002, 0x0018, 0x0002, 0x888F, 0x0002, 0x0028, 0x0002, 0x00FE,
1330 0x0002, 0x003A, 0x0002, 0x222F, 0x0002, 0x0088, 0x0002, 0x04FD, 0x0002, 0x0018, 0x0002, 0x00BE, 0x0002,
1331 0x0028, 0x0002, 0x00BF, 0x0002, 0x004A, 0x0002, 0x006E, 0x0002, 0x0088, 0x0002, 0x00AC, 0x0002, 0x0018,
1332 0x0002, 0x444F, 0x0002, 0x0028, 0x0002, 0x00EE, 0x0002, 0x003A, 0x0002, 0x113F, 0x0002, 0x0088, 0x0002,
1333 0x005C, 0x0002, 0x0018, 0x0002, 0x00CF, 0x0002, 0x0028, 0x0002, 0x009C, 0x0002, 0x004A, 0x0002, 0x006F,
1334 0x0002, 0x0088, 0x0002, 0x00CC, 0x0002, 0x0018, 0x0002, 0x009F, 0x0002, 0x0028, 0x0002, 0x00EF, 0x0002,
1335 0x003A, 0x0002, 0x233F, 0x0002, 0x0088, 0x0002, 0x04FD, 0x0002, 0x0018, 0x0002, 0x00AF, 0x0002, 0x0028,
1336 0x0002, 0x44FF, 0x0002, 0x004A, 0x0002, 0x005F, 0x0002, 0x0088, 0x0002, 0x00AC, 0x0002, 0x0018, 0x0002,
1337 0x007F, 0x0002, 0x0028, 0x0002, 0x00DF, 0x0002, 0x003A, 0x0002, 0x111F, 0x0002, 0x0028, 0x0002, 0x005C,
1338 0x0002, 0x008A, 0x0002, 0x00BF, 0x0002, 0x0018, 0x0002, 0x00FE, 0x0002, 0x00CC, 0x0002, 0x007E, 0x0002,
1339 0x0028, 0x0002, 0x8FFF, 0x0002, 0x004A, 0x0002, 0x007F, 0x0002, 0x0018, 0x0002, 0x00DF, 0x0002, 0x00AC,
1340 0x0002, 0x133F, 0x0002, 0x0028, 0x0002, 0x222D, 0x0002, 0x008A, 0x0002, 0x00BE, 0x0002, 0x0018, 0x0002,
1341 0x44EF, 0x0002, 0x2AAD, 0x0002, 0x006E, 0x0002, 0x0028, 0x0002, 0x15FF, 0x0002, 0x004A, 0x0002, 0x009E,
1342 0x0002, 0x0018, 0x0002, 0x00CF, 0x0002, 0x003C, 0x0002, 0x223F, 0x0002, 0x0028, 0x0002, 0x005C, 0x0002,
1343 0x008A, 0x0002, 0x2BBF, 0x0002, 0x0018, 0x0002, 0x04EF, 0x0002, 0x00CC, 0x0002, 0x006F, 0x0002, 0x0028,
1344 0x0002, 0x27FF, 0x0002, 0x004A, 0x0002, 0x009F, 0x0002, 0x0018, 0x0002, 0x00DE, 0x0002, 0x00AC, 0x0002,
1345 0x444F, 0x0002, 0x0028, 0x0002, 0x222D, 0x0002, 0x008A, 0x0002, 0x8AAF, 0x0002, 0x0018, 0x0002, 0x00EE,
1346 0x0002, 0x2AAD, 0x0002, 0x005F, 0x0002, 0x0028, 0x0002, 0x44FF, 0x0002, 0x004A, 0x0002, 0x888F, 0x0002,
1347 0x0018, 0x0002, 0xAAAF, 0x0002, 0x003C, 0x0002, 0x111F, 0x0004, 0x8FFD, 0x0028, 0x005C, 0x0004, 0x00BC,
1348 0x008A, 0x66FF, 0x0004, 0x00CD, 0x0018, 0x111D, 0x0004, 0x009C, 0x003A, 0x8AAF, 0x0004, 0x00FC, 0x0028,
1349 0x133D, 0x0004, 0x00AC, 0x004A, 0x3BBF, 0x0004, 0x2BBD, 0x0018, 0x5FFF, 0x0004, 0x006C, 0x157D, 0x455F,
1350 0x0004, 0x2FFD, 0x0028, 0x222D, 0x0004, 0x22AD, 0x008A, 0x44EF, 0x0004, 0x00CC, 0x0018, 0x4FFF, 0x0004,
1351 0x007C, 0x003A, 0x447F, 0x0004, 0x04DD, 0x0028, 0x233D, 0x0004, 0x009D, 0x004A, 0x00DE, 0x0004, 0x88BD,
1352 0x0018, 0xAFFF, 0x0004, 0x115D, 0x1FFD, 0x444F, 0x0004, 0x8FFD, 0x0028, 0x005C, 0x0004, 0x00BC, 0x008A,
1353 0x8CEF, 0x0004, 0x00CD, 0x0018, 0x111D, 0x0004, 0x009C, 0x003A, 0x888F, 0x0004, 0x00FC, 0x0028, 0x133D,
1354 0x0004, 0x00AC, 0x004A, 0x44DF, 0x0004, 0x2BBD, 0x0018, 0x8AFF, 0x0004, 0x006C, 0x157D, 0x006F, 0x0004,
1355 0x2FFD, 0x0028, 0x222D, 0x0004, 0x22AD, 0x008A, 0x00EE, 0x0004, 0x00CC, 0x0018, 0x2EEF, 0x0004, 0x007C,
1356 0x003A, 0x277F, 0x0004, 0x04DD, 0x0028, 0x233D, 0x0004, 0x009D, 0x004A, 0x1BBF, 0x0004, 0x88BD, 0x0018,
1357 0x37FF, 0x0004, 0x115D, 0x1FFD, 0x333F, 0x0002, 0x0088, 0x0002, 0x02ED, 0x0002, 0x00CA, 0x0002, 0x4CCF,
1358 0x0002, 0x0048, 0x0002, 0x23FF, 0x0002, 0x001A, 0x0002, 0x888F, 0x0002, 0x0088, 0x0002, 0x006C, 0x0002,
1359 0x002A, 0x0002, 0x00AF, 0x0002, 0x0048, 0x0002, 0x22EF, 0x0002, 0x00AC, 0x0002, 0x005F, 0x0002, 0x0088,
1360 0x0002, 0x444D, 0x0002, 0x00CA, 0x0002, 0xCCCF, 0x0002, 0x0048, 0x0002, 0x00FE, 0x0002, 0x001A, 0x0002,
1361 0x006F, 0x0002, 0x0088, 0x0002, 0x005C, 0x0002, 0x002A, 0x0002, 0x009F, 0x0002, 0x0048, 0x0002, 0x00DF,
1362 0x0002, 0x03FD, 0x0002, 0x222F, 0x0002, 0x0088, 0x0002, 0x02ED, 0x0002, 0x00CA, 0x0002, 0x8CCF, 0x0002,
1363 0x0048, 0x0002, 0x11FF, 0x0002, 0x001A, 0x0002, 0x007E, 0x0002, 0x0088, 0x0002, 0x006C, 0x0002, 0x002A,
1364 0x0002, 0x007F, 0x0002, 0x0048, 0x0002, 0x00EE, 0x0002, 0x00AC, 0x0002, 0x003E, 0x0002, 0x0088, 0x0002,
1365 0x444D, 0x0002, 0x00CA, 0x0002, 0x00BE, 0x0002, 0x0048, 0x0002, 0x00BF, 0x0002, 0x001A, 0x0002, 0x003F,
1366 0x0002, 0x0088, 0x0002, 0x005C, 0x0002, 0x002A, 0x0002, 0x009E, 0x0002, 0x0048, 0x0002, 0x00DE, 0x0002,
1367 0x03FD, 0x0002, 0x111F, 0x0004, 0x8AED, 0x0048, 0x888D, 0x0004, 0x00DC, 0x00CA, 0x3FFF, 0x0004, 0xCFFD,
1368 0x002A, 0x003D, 0x0004, 0x00BC, 0x005A, 0x8DDF, 0x0004, 0x8FFD, 0x0048, 0x006C, 0x0004, 0x027D, 0x008A,
1369 0x99FF, 0x0004, 0x00EC, 0x00FA, 0x003C, 0x0004, 0x00AC, 0x001A, 0x009F, 0x0004, 0x2FFD, 0x0048, 0x007C,
1370 0x0004, 0x44CD, 0x00CA, 0x67FF, 0x0004, 0x1FFD, 0x002A, 0x444D, 0x0004, 0x00AD, 0x005A, 0x8CCF, 0x0004,
1371 0x4FFD, 0x0048, 0x445D, 0x0004, 0x01BD, 0x008A, 0x4EEF, 0x0004, 0x45DD, 0x00FA, 0x111D, 0x0004, 0x009C,
1372 0x001A, 0x222F, 0x0004, 0x8AED, 0x0048, 0x888D, 0x0004, 0x00DC, 0x00CA, 0xAFFF, 0x0004, 0xCFFD, 0x002A,
1373 0x003D, 0x0004, 0x00BC, 0x005A, 0x11BF, 0x0004, 0x8FFD, 0x0048, 0x006C, 0x0004, 0x027D, 0x008A, 0x22EF,
1374 0x0004, 0x00EC, 0x00FA, 0x003C, 0x0004, 0x00AC, 0x001A, 0x227F, 0x0004, 0x2FFD, 0x0048, 0x007C, 0x0004,
1375 0x44CD, 0x00CA, 0x5DFF, 0x0004, 0x1FFD, 0x002A, 0x444D, 0x0004, 0x00AD, 0x005A, 0x006F, 0x0004, 0x4FFD,
1376 0x0048, 0x445D, 0x0004, 0x01BD, 0x008A, 0x11DF, 0x0004, 0x45DD, 0x00FA, 0x111D, 0x0004, 0x009C, 0x001A,
1377 0x155F, 0x0006, 0x00FC, 0x0018, 0x111D, 0x0048, 0x888D, 0x00AA, 0x4DDF, 0x0006, 0x2AAD, 0x005A, 0x67FF,
1378 0x0028, 0x223D, 0x00BC, 0xAAAF, 0x0006, 0x00EC, 0x0018, 0x5FFF, 0x0048, 0x006C, 0x008A, 0xCCCF, 0x0006,
1379 0x009D, 0x00CA, 0x44EF, 0x0028, 0x003C, 0x8FFD, 0x137F, 0x0006, 0x8EED, 0x0018, 0x1FFF, 0x0048, 0x007C,
1380 0x00AA, 0x4CCF, 0x0006, 0x227D, 0x005A, 0x1DDF, 0x0028, 0x444D, 0x4FFD, 0x155F, 0x0006, 0x00DC, 0x0018,
1381 0x2EEF, 0x0048, 0x445D, 0x008A, 0x22BF, 0x0006, 0x009C, 0x00CA, 0x8CDF, 0x0028, 0x222D, 0x2FFD, 0x226F,
1382 0x0006, 0x00FC, 0x0018, 0x111D, 0x0048, 0x888D, 0x00AA, 0x1BBF, 0x0006, 0x2AAD, 0x005A, 0x33FF, 0x0028,
1383 0x223D, 0x00BC, 0x8AAF, 0x0006, 0x00EC, 0x0018, 0x9BFF, 0x0048, 0x006C, 0x008A, 0x8ABF, 0x0006, 0x009D,
1384 0x00CA, 0x4EEF, 0x0028, 0x003C, 0x8FFD, 0x466F, 0x0006, 0x8EED, 0x0018, 0xCFFF, 0x0048, 0x007C, 0x00AA,
1385 0x8CCF, 0x0006, 0x227D, 0x005A, 0xAEEF, 0x0028, 0x444D, 0x4FFD, 0x477F, 0x0006, 0x00DC, 0x0018, 0xAFFF,
1386 0x0048, 0x445D, 0x008A, 0x2BBF, 0x0006, 0x009C, 0x00CA, 0x44DF, 0x0028, 0x222D, 0x2FFD, 0x133F, 0x00F6,
1387 0xAFFD, 0x1FFB, 0x003C, 0x0008, 0x23BD, 0x007A, 0x11DF, 0x00F6, 0x45DD, 0x2FFB, 0x4EEF, 0x00DA, 0x177D,
1388 0xCFFD, 0x377F, 0x00F6, 0x3FFD, 0x8FFB, 0x111D, 0x0008, 0x009C, 0x005A, 0x1BBF, 0x00F6, 0x00CD, 0x00BA,
1389 0x8DDF, 0x4FFB, 0x006C, 0x9BFD, 0x455F, 0x00F6, 0x67FD, 0x1FFB, 0x002C, 0x0008, 0x00AC, 0x007A, 0x009F,
1390 0x00F6, 0x00AD, 0x2FFB, 0x7FFF, 0x00DA, 0x004C, 0x5FFD, 0x477F, 0x00F6, 0x00EC, 0x8FFB, 0x001C, 0x0008,
1391 0x008C, 0x005A, 0x888F, 0x00F6, 0x00CC, 0x00BA, 0x2EEF, 0x4FFB, 0x115D, 0x8AED, 0x113F, 0x00F6, 0xAFFD,
1392 0x1FFB, 0x003C, 0x0008, 0x23BD, 0x007A, 0x1DDF, 0x00F6, 0x45DD, 0x2FFB, 0xBFFF, 0x00DA, 0x177D, 0xCFFD,
1393 0x447F, 0x00F6, 0x3FFD, 0x8FFB, 0x111D, 0x0008, 0x009C, 0x005A, 0x277F, 0x00F6, 0x00CD, 0x00BA, 0x22EF,
1394 0x4FFB, 0x006C, 0x9BFD, 0x444F, 0x00F6, 0x67FD, 0x1FFB, 0x002C, 0x0008, 0x00AC, 0x007A, 0x11BF, 0x00F6,
1395 0x00AD, 0x2FFB, 0xFFFF, 0x00DA, 0x004C, 0x5FFD, 0x233F, 0x00F6, 0x00EC, 0x8FFB, 0x001C, 0x0008, 0x008C,
1396 0x005A, 0x006F, 0x00F6, 0x00CC, 0x00BA, 0x8BBF, 0x4FFB, 0x115D, 0x8AED, 0x222F};
1399 0x0026, 0x00AA, 0x0046, 0x006C, 0x0086, 0x8AED, 0x0018, 0x8DDF, 0x0026, 0x01BD, 0x0046, 0x5FFF, 0x0086,
1400 0x027D, 0x005A, 0x155F, 0x0026, 0x003A, 0x0046, 0x444D, 0x0086, 0x4CCD, 0x0018, 0xCCCF, 0x0026, 0x2EFD,
1401 0x0046, 0x99FF, 0x0086, 0x009C, 0x00CA, 0x133F, 0x0026, 0x00AA, 0x0046, 0x445D, 0x0086, 0x8CCD, 0x0018,
1402 0x11DF, 0x0026, 0x4FFD, 0x0046, 0xCFFF, 0x0086, 0x009D, 0x005A, 0x007E, 0x0026, 0x003A, 0x0046, 0x1FFF,
1403 0x0086, 0x88AD, 0x0018, 0x00BE, 0x0026, 0x8FFD, 0x0046, 0x4EEF, 0x0086, 0x888D, 0x00CA, 0x111F, 0x0026,
1404 0x00AA, 0x0046, 0x006C, 0x0086, 0x8AED, 0x0018, 0x45DF, 0x0026, 0x01BD, 0x0046, 0x22EF, 0x0086, 0x027D,
1405 0x005A, 0x227F, 0x0026, 0x003A, 0x0046, 0x444D, 0x0086, 0x4CCD, 0x0018, 0x11BF, 0x0026, 0x2EFD, 0x0046,
1406 0x00FE, 0x0086, 0x009C, 0x00CA, 0x223F, 0x0026, 0x00AA, 0x0046, 0x445D, 0x0086, 0x8CCD, 0x0018, 0x00DE,
1407 0x0026, 0x4FFD, 0x0046, 0xABFF, 0x0086, 0x009D, 0x005A, 0x006F, 0x0026, 0x003A, 0x0046, 0x6EFF, 0x0086,
1408 0x88AD, 0x0018, 0x2AAF, 0x0026, 0x8FFD, 0x0046, 0x00EE, 0x0086, 0x888D, 0x00CA, 0x222F, 0x0004, 0x00CA,
1409 0x0088, 0x027D, 0x0004, 0x4CCD, 0x0028, 0x00FE, 0x0004, 0x2AFD, 0x0048, 0x005C, 0x0004, 0x009D, 0x0018,
1410 0x00DE, 0x0004, 0x01BD, 0x0088, 0x006C, 0x0004, 0x88AD, 0x0028, 0x11DF, 0x0004, 0x8AED, 0x0048, 0x003C,
1411 0x0004, 0x888D, 0x0018, 0x111F, 0x0004, 0x00CA, 0x0088, 0x006D, 0x0004, 0x88CD, 0x0028, 0x88FF, 0x0004,
1412 0x8BFD, 0x0048, 0x444D, 0x0004, 0x009C, 0x0018, 0x00BE, 0x0004, 0x4EFD, 0x0088, 0x445D, 0x0004, 0x00AC,
1413 0x0028, 0x00EE, 0x0004, 0x45DD, 0x0048, 0x222D, 0x0004, 0x003D, 0x0018, 0x007E, 0x0004, 0x00CA, 0x0088,
1414 0x027D, 0x0004, 0x4CCD, 0x0028, 0x1FFF, 0x0004, 0x2AFD, 0x0048, 0x005C, 0x0004, 0x009D, 0x0018, 0x11BF,
1415 0x0004, 0x01BD, 0x0088, 0x006C, 0x0004, 0x88AD, 0x0028, 0x22EF, 0x0004, 0x8AED, 0x0048, 0x003C, 0x0004,
1416 0x888D, 0x0018, 0x227F, 0x0004, 0x00CA, 0x0088, 0x006D, 0x0004, 0x88CD, 0x0028, 0x4EEF, 0x0004, 0x8BFD,
1417 0x0048, 0x444D, 0x0004, 0x009C, 0x0018, 0x2AAF, 0x0004, 0x4EFD, 0x0088, 0x445D, 0x0004, 0x00AC, 0x0028,
1418 0x8DDF, 0x0004, 0x45DD, 0x0048, 0x222D, 0x0004, 0x003D, 0x0018, 0x155F, 0x0004, 0x005A, 0x0088, 0x006C,
1419 0x0004, 0x88DD, 0x0028, 0x23FF, 0x0004, 0x11FD, 0x0048, 0x444D, 0x0004, 0x00AD, 0x0018, 0x00BE, 0x0004,
1420 0x137D, 0x0088, 0x155D, 0x0004, 0x00CC, 0x0028, 0x00DE, 0x0004, 0x02ED, 0x0048, 0x111D, 0x0004, 0x009D,
1421 0x0018, 0x007E, 0x0004, 0x005A, 0x0088, 0x455D, 0x0004, 0x44CD, 0x0028, 0x00EE, 0x0004, 0x1FFD, 0x0048,
1422 0x003C, 0x0004, 0x00AC, 0x0018, 0x555F, 0x0004, 0x47FD, 0x0088, 0x113D, 0x0004, 0x02BD, 0x0028, 0x477F,
1423 0x0004, 0x4CDD, 0x0048, 0x8FFF, 0x0004, 0x009C, 0x0018, 0x222F, 0x0004, 0x005A, 0x0088, 0x006C, 0x0004,
1424 0x88DD, 0x0028, 0x00FE, 0x0004, 0x11FD, 0x0048, 0x444D, 0x0004, 0x00AD, 0x0018, 0x888F, 0x0004, 0x137D,
1425 0x0088, 0x155D, 0x0004, 0x00CC, 0x0028, 0x8CCF, 0x0004, 0x02ED, 0x0048, 0x111D, 0x0004, 0x009D, 0x0018,
1426 0x006F, 0x0004, 0x005A, 0x0088, 0x455D, 0x0004, 0x44CD, 0x0028, 0x1DDF, 0x0004, 0x1FFD, 0x0048, 0x003C,
1427 0x0004, 0x00AC, 0x0018, 0x227F, 0x0004, 0x47FD, 0x0088, 0x113D, 0x0004, 0x02BD, 0x0028, 0x22BF, 0x0004,
1428 0x4CDD, 0x0048, 0x22EF, 0x0004, 0x009C, 0x0018, 0x233F, 0x0006, 0x4DDD, 0x4FFB, 0xCFFF, 0x0018, 0x113D,
1429 0x005A, 0x888F, 0x0006, 0x23BD, 0x008A, 0x00EE, 0x002A, 0x155D, 0xAAFD, 0x277F, 0x0006, 0x44CD, 0x8FFB,
1430 0x44EF, 0x0018, 0x467D, 0x004A, 0x2AAF, 0x0006, 0x00AC, 0x555B, 0x99DF, 0x1FFB, 0x003C, 0x5FFD, 0x266F,
1431 0x0006, 0x1DDD, 0x4FFB, 0x6EFF, 0x0018, 0x177D, 0x005A, 0x1BBF, 0x0006, 0x88AD, 0x008A, 0x5DDF, 0x002A,
1432 0x444D, 0x2FFD, 0x667F, 0x0006, 0x00CC, 0x8FFB, 0x2EEF, 0x0018, 0x455D, 0x004A, 0x119F, 0x0006, 0x009C,
1433 0x555B, 0x8CCF, 0x1FFB, 0x111D, 0x8CED, 0x006E, 0x0006, 0x4DDD, 0x4FFB, 0x3FFF, 0x0018, 0x113D, 0x005A,
1434 0x11BF, 0x0006, 0x23BD, 0x008A, 0x8DDF, 0x002A, 0x155D, 0xAAFD, 0x222F, 0x0006, 0x44CD, 0x8FFB, 0x00FE,
1435 0x0018, 0x467D, 0x004A, 0x899F, 0x0006, 0x00AC, 0x555B, 0x00DE, 0x1FFB, 0x003C, 0x5FFD, 0x446F, 0x0006,
1436 0x1DDD, 0x4FFB, 0x9BFF, 0x0018, 0x177D, 0x005A, 0x00BE, 0x0006, 0x88AD, 0x008A, 0xCDDF, 0x002A, 0x444D,
1437 0x2FFD, 0x007E, 0x0006, 0x00CC, 0x8FFB, 0x4EEF, 0x0018, 0x455D, 0x004A, 0x377F, 0x0006, 0x009C, 0x555B,
1438 0x8BBF, 0x1FFB, 0x111D, 0x8CED, 0x233F, 0x0004, 0x00AA, 0x0088, 0x047D, 0x0004, 0x01DD, 0x0028, 0x11DF,
1439 0x0004, 0x27FD, 0x0048, 0x005C, 0x0004, 0x8AAD, 0x0018, 0x2BBF, 0x0004, 0x009C, 0x0088, 0x006C, 0x0004,
1440 0x00CC, 0x0028, 0x00EE, 0x0004, 0x8CED, 0x0048, 0x222D, 0x0004, 0x888D, 0x0018, 0x007E, 0x0004, 0x00AA,
1441 0x0088, 0x006D, 0x0004, 0x88CD, 0x0028, 0x00FE, 0x0004, 0x19FD, 0x0048, 0x003C, 0x0004, 0x2AAD, 0x0018,
1442 0xAAAF, 0x0004, 0x8BFD, 0x0088, 0x005D, 0x0004, 0x00BD, 0x0028, 0x4CCF, 0x0004, 0x44ED, 0x0048, 0x4FFF,
1443 0x0004, 0x223D, 0x0018, 0x111F, 0x0004, 0x00AA, 0x0088, 0x047D, 0x0004, 0x01DD, 0x0028, 0x99FF, 0x0004,
1444 0x27FD, 0x0048, 0x005C, 0x0004, 0x8AAD, 0x0018, 0x00BE, 0x0004, 0x009C, 0x0088, 0x006C, 0x0004, 0x00CC,
1445 0x0028, 0x00DE, 0x0004, 0x8CED, 0x0048, 0x222D, 0x0004, 0x888D, 0x0018, 0x444F, 0x0004, 0x00AA, 0x0088,
1446 0x006D, 0x0004, 0x88CD, 0x0028, 0x2EEF, 0x0004, 0x19FD, 0x0048, 0x003C, 0x0004, 0x2AAD, 0x0018, 0x447F,
1447 0x0004, 0x8BFD, 0x0088, 0x005D, 0x0004, 0x00BD, 0x0028, 0x009F, 0x0004, 0x44ED, 0x0048, 0x67FF, 0x0004,
1448 0x223D, 0x0018, 0x133F, 0x0006, 0x00CC, 0x008A, 0x9DFF, 0x2FFB, 0x467D, 0x1FFD, 0x99BF, 0x0006, 0x2AAD,
1449 0x002A, 0x66EF, 0x4FFB, 0x005C, 0x2EED, 0x377F, 0x0006, 0x89BD, 0x004A, 0x00FE, 0x8FFB, 0x006C, 0x67FD,
1450 0x889F, 0x0006, 0x888D, 0x001A, 0x5DDF, 0x00AA, 0x222D, 0x89DD, 0x444F, 0x0006, 0x2BBD, 0x008A, 0xCFFF,
1451 0x2FFB, 0x226D, 0x009C, 0x00BE, 0x0006, 0xAAAD, 0x002A, 0x1DDF, 0x4FFB, 0x003C, 0x4DDD, 0x466F, 0x0006,
1452 0x8AAD, 0x004A, 0xAEEF, 0x8FFB, 0x445D, 0x8EED, 0x177F, 0x0006, 0x233D, 0x001A, 0x4CCF, 0x00AA, 0xAFFF,
1453 0x88CD, 0x133F, 0x0006, 0x00CC, 0x008A, 0x77FF, 0x2FFB, 0x467D, 0x1FFD, 0x3BBF, 0x0006, 0x2AAD, 0x002A,
1454 0x00EE, 0x4FFB, 0x005C, 0x2EED, 0x007E, 0x0006, 0x89BD, 0x004A, 0x4EEF, 0x8FFB, 0x006C, 0x67FD, 0x667F,
1455 0x0006, 0x888D, 0x001A, 0x00DE, 0x00AA, 0x222D, 0x89DD, 0x333F, 0x0006, 0x2BBD, 0x008A, 0x57FF, 0x2FFB,
1456 0x226D, 0x009C, 0x199F, 0x0006, 0xAAAD, 0x002A, 0x99DF, 0x4FFB, 0x003C, 0x4DDD, 0x155F, 0x0006, 0x8AAD,
1457 0x004A, 0xCEEF, 0x8FFB, 0x445D, 0x8EED, 0x277F, 0x0006, 0x233D, 0x001A, 0x1BBF, 0x00AA, 0x3FFF, 0x88CD,
1458 0x111F, 0x0006, 0x45DD, 0x2FFB, 0x111D, 0x0018, 0x467D, 0x8FFD, 0xCCCF, 0x0006, 0x19BD, 0x004A, 0x22EF,
1459 0x002A, 0x222D, 0x3FFD, 0x888F, 0x0006, 0x00CC, 0x008A, 0x00FE, 0x0018, 0x115D, 0xCFFD, 0x8AAF, 0x0006,
1460 0x00AC, 0x003A, 0x8CDF, 0x1FFB, 0x133D, 0x66FD, 0x466F, 0x0006, 0x8CCD, 0x2FFB, 0x5FFF, 0x0018, 0x006C,
1461 0x4FFD, 0xABBF, 0x0006, 0x22AD, 0x004A, 0x00EE, 0x002A, 0x233D, 0xAEFD, 0x377F, 0x0006, 0x2BBD, 0x008A,
1462 0x55DF, 0x0018, 0x005C, 0x177D, 0x119F, 0x0006, 0x009C, 0x003A, 0x4CCF, 0x1FFB, 0x333D, 0x8EED, 0x444F,
1463 0x0006, 0x45DD, 0x2FFB, 0x111D, 0x0018, 0x467D, 0x8FFD, 0x99BF, 0x0006, 0x19BD, 0x004A, 0x2EEF, 0x002A,
1464 0x222D, 0x3FFD, 0x667F, 0x0006, 0x00CC, 0x008A, 0x4EEF, 0x0018, 0x115D, 0xCFFD, 0x899F, 0x0006, 0x00AC,
1465 0x003A, 0x00DE, 0x1FFB, 0x133D, 0x66FD, 0x226F, 0x0006, 0x8CCD, 0x2FFB, 0x9BFF, 0x0018, 0x006C, 0x4FFD,
1466 0x00BE, 0x0006, 0x22AD, 0x004A, 0x1DDF, 0x002A, 0x233D, 0xAEFD, 0x007E, 0x0006, 0x2BBD, 0x008A, 0xCEEF,
1467 0x0018, 0x005C, 0x177D, 0x277F, 0x0006, 0x009C, 0x003A, 0x8BBF, 0x1FFB, 0x333D, 0x8EED, 0x455F, 0x1FF9,
1468 0x1DDD, 0xAFFB, 0x00DE, 0x8FF9, 0x001C, 0xFFFB, 0x477F, 0x4FF9, 0x177D, 0x3FFB, 0x3BBF, 0x2FF9, 0xAEEF,
1469 0x8EED, 0x444F, 0x1FF9, 0x22AD, 0x000A, 0x8BBF, 0x8FF9, 0x00FE, 0xCFFD, 0x007E, 0x4FF9, 0x115D, 0x5FFB,
1470 0x577F, 0x2FF9, 0x8DDF, 0x2EED, 0x333F, 0x1FF9, 0x2BBD, 0xAFFB, 0x88CF, 0x8FF9, 0xBFFF, 0xFFFB, 0x377F,
1471 0x4FF9, 0x006D, 0x3FFB, 0x00BE, 0x2FF9, 0x66EF, 0x9FFD, 0x133F, 0x1FF9, 0x009D, 0x000A, 0xABBF, 0x8FF9,
1472 0xDFFF, 0x6FFD, 0x006E, 0x4FF9, 0x002C, 0x5FFB, 0x888F, 0x2FF9, 0xCDDF, 0x4DDD, 0x222F, 0x1FF9, 0x1DDD,
1473 0xAFFB, 0x4CCF, 0x8FF9, 0x001C, 0xFFFB, 0x277F, 0x4FF9, 0x177D, 0x3FFB, 0x99BF, 0x2FF9, 0xCEEF, 0x8EED,
1474 0x004E, 0x1FF9, 0x22AD, 0x000A, 0x00AE, 0x8FF9, 0x7FFF, 0xCFFD, 0x005E, 0x4FF9, 0x115D, 0x5FFB, 0x009E,
1475 0x2FF9, 0x5DDF, 0x2EED, 0x003E, 0x1FF9, 0x2BBD, 0xAFFB, 0x00CE, 0x8FF9, 0xEFFF, 0xFFFB, 0x667F, 0x4FF9,
1476 0x006D, 0x3FFB, 0x8AAF, 0x2FF9, 0x00EE, 0x9FFD, 0x233F, 0x1FF9, 0x009D, 0x000A, 0x1BBF, 0x8FF9, 0x4EEF,
1477 0x6FFD, 0x455F, 0x4FF9, 0x002C, 0x5FFB, 0x008E, 0x2FF9, 0x99DF, 0x4DDD, 0x111F};