Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

3988 lines
181 KiB

/*++
Copyright (c) 1990-1991 Microsoft Corporation
Module Name:
htpat.c
Abstract:
This module contains all the functions which generate the halftone
patterns (brushs) to be used for later halftone process.
Author:
23-Apr-1992 Thu 20:01:55 updated -by- Daniel Chou (danielc)
changed 'CHAR' type to 'BYTE' type, this will make sure if compiled
under MIPS the default 'unsigned char' will not affect the signed
operation on the single 8 bits
15-Jan-1991 Tue 21:09:33 created -by- Daniel Chou (danielc)
[Environment:]
GDI Device Driver - Halftone.
[Notes:]
Revision History:
Change DrawPatLine() function to DrawCornerLine(), and speed up the
process by only using integer operation for modified DDA.
--*/
#define DBGP_VARNAME dbgpHTPat
#include "htp.h"
#include "htmath.h"
#include "htmapclr.h"
#include "htrender.h"
#include "htpat.h"
#include "stdio.h"
#ifdef UMODE
#include <search.h>
#endif
#define DBGP_DRAWLINE 0x00000001
#define DBGP_SHOW_HTCELL 0x00000002
#define DBGP_CACHE_PAT 0x00000004
#define DBGP_GEN_PAT 0x00000008
DEF_DBGPVAR(BIT_IF(DBGP_DRAWLINE, 0) |
BIT_IF(DBGP_SHOW_HTCELL, 0) |
BIT_IF(DBGP_CACHE_PAT, 0) |
BIT_IF(DBGP_GEN_PAT, 0))
#define HTSC_M_CX 91
#define HTSC_M_CY 91
#define HTSC_M_COUNT (HTSC_M_CX * HTSC_M_CY)
#define HTSC_M_OFFSET_M (HTSC_M_COUNT * 0)
#define HTSC_M_OFFSET_C (HTSC_M_COUNT * 1)
#define HTSC_M_OFFSET_Y (HTSC_M_COUNT * 2)
LPWORD ppwHTPat[HTPAT_SIZE_MAX_INDEX] = {
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
};
extern HTGLOBAL HTGlobal;
CONST BYTE RGB555Pat[CB_RGB555PAT] = {
//
// SuperCell: 65x65x1x0, 35%!, 0.8300, 3.2500, 0%, 05753eba
//
// Pattern Checksum = eaeb3b7e
//
161,216, 20, 87, 38,198, 19,111,208, 67,201, 75, 4,164, 40,240, // 0
12,109,245,159,129, 32,242,100,187, 79,248, 62,177, 78, 24,246,
43,213, 62,254, 34, 72,188,145, 32, 74,200, 52,233, 62,125, 82,
201,117, 68,129, 55,208,107,237,174,207, 76,236, 17,189,224, 8,
78, 0,
118, 69,200,163,235,137, 75,248, 43,151,103,253,123,226,142, 57, // 1
157,210, 87, 6,226, 60,155, 43,125, 25,196,107,236,127,183, 87,
123,161, 11,116,156,227,103, 52,231,159,108,185,144, 14,176,249,
57,232,171, 24,250, 81,140, 59, 11,130, 41,196,135, 93, 54,131,
192, 0,
246, 42,133, 10,109, 51,193,163,121,220, 21,145, 44, 80,113,192, // 2
74,131, 52,199,118,182, 80,223,200,159, 51,150, 2, 60,226, 15,
192, 76,225,182, 81, 44,209,168, 80, 13,245, 34, 72,202,104, 21,
154, 42, 94,194,147, 2,183,216, 95,252,161, 99, 50,247,155,217,
29, 0,
101,158,211, 75,175,223, 31, 92, 11,175, 85,216,173,208, 15,250, // 3
37,224,168, 97, 21,254,139, 9, 71,113,228, 86,211,164,100,143,
243, 41,131, 22,241,144, 2,115,192,137, 95,178,125,239,159, 72,
215,119,224, 35,108,206, 46,121,169, 67, 18,230,185, 12,114, 59,
171, 0,
225, 64, 27,250,120, 68,143,232,114,240, 47,121, 24, 68,159,121, // 4
177,101, 28,208,154, 45,110,177,239, 19,167, 41,128, 29,216, 47,
86,170,211, 61,106,201, 70,251, 56,226, 39,214, 5, 89, 38,194,
141, 7,166, 62,241,138, 71,238, 27,210,118,142, 65,161,207, 88,
5, 0,
128,195,144, 91,190, 5,199, 53,150, 73,202,157,245,109,221, 77, // 5
4,238,137, 61,235, 85,197, 60,122,203, 96,252,175, 92,186,130,
222, 27, 94,147,181, 29,132,164, 16,151,116, 59,170,135,230, 98,
57,252,104,190, 90, 20,181,106,149, 81,182, 29,220, 81,134,240,
181, 0,
82, 17,230, 45,134,239,110,171, 26,185, 1, 88, 41,176, 55,141, // 6
198, 49,188,112, 18,133,223, 24,171, 43,148, 64, 17,231, 58, 7,
162,117,252, 12,218, 85,232,103,202, 84,181,250, 79,186, 17,125,
198, 33,150, 48,212,153,228, 35,214, 13,246,112, 50,195, 24,112,
43, 0,
246,120,180, 78,172, 24, 72,221, 97,255,122,222,116,207, 21,247, // 7
94,158, 73,223,178, 69,151,104,243, 83,220,117,200,140,106,245,
72,200, 52,161,125, 41,174, 27, 65,224, 18,127, 31,222, 70,237,
168, 83,224,126, 9,108, 51, 98,183,119, 54,166,234,147, 75,214,
163, 0,
51,201,102, 36,212,128,184, 37,145, 66,170, 33,150, 79,164,122, // 8
38,233, 11,144, 46,250, 1,188, 37,161, 8,181, 43, 70,209,171,
32,149,100,225, 71,207,109,248,130,163, 55,206,161, 91,148, 51,
108, 14,186, 77,241,196,135,255, 62,146,220, 87, 2,117,183, 17,
135, 0,
89, 4,156,251, 92, 53,241,108,213, 14,206, 62,245, 7,226, 59, // 9
204,132, 90,198,102,127,210, 77,115,233,136, 91,243,156, 12, 86,
126,237, 3,178, 25,149, 49,170, 16, 97,240, 73,114,188, 2,206,
159,244,140, 54,152, 26, 67,164, 8,194, 36,132,203, 49,239, 61,
219, 0,
170,208,123, 23,187,146, 6,171, 82,159,127, 96,183,138,105,173, // 10
19,162, 50,238, 19,172, 60,147,200, 68, 47,211, 24,109,181,229,
43,194, 85,127,239,100,227, 81,216,186,141, 14,202, 68,254,120,
26, 93, 36,230,114,186,219, 99,231,113, 72,237,166, 89,155,128,
105, 0,
35, 83,234, 67,110,204, 71,222, 29,246, 44,221, 27, 68,199, 79, // 11
248,100,179,125, 84,222, 31,245, 11,141,178,103,150,203, 54,139,
104,158, 54,202, 41,157, 8,139, 37, 87, 48,231,122, 36,154, 64,
179,213,127,196, 3, 83, 43,155, 33,143,197, 14,111, 40,206, 10,
244, 0,
132,192, 48,154,229, 19,135,100,144, 70,198,107,168,238, 12,129, // 12
46,195, 4,206, 38,140,182,121, 92,194, 19,255, 34, 75,240, 19,
218, 30,253,105,185, 73,212,173,115,251,151, 94,181,217, 90,231,
43,148, 60, 90,170,250,126,191, 81,247, 52,137,176,253, 75,189,
59, 0,
224, 11,175, 95, 44,169,249, 50,213,180, 3,142, 47, 91,205,157, // 13
222, 66,112,148,252,105, 64,213, 40,230,115, 58,184,143,117,174,
65,182, 82,140, 21,245, 99, 42,191, 17,209, 61, 9,131, 30,195,
117,248, 23,219,141, 28, 91,222, 9,164, 94,219, 61, 18,145, 93,
162, 0,
73,111,254,139,214, 73,116,162, 20,124, 83,243,186,124, 37,100, // 14
18,168,234, 84, 50,197, 8,159,132, 71,148,213, 82,227, 2, 95,
206,135, 12,212,176, 53,132,206, 74,157,101,138,246,174,103,152,
6, 94,172,119, 70,213,164, 58,117,203, 27,118,184,227,108,205,
29, 0,
134,201, 52, 87, 9,199, 35,236, 76,222,160, 26, 70,227,169,254, // 15
136, 74,197, 25,171,122,225, 87,249, 13,179, 30,123, 47,168,249,
37, 77,234,111, 75,154,235, 1,123,232, 25,203, 45, 76,236, 57,
220,192, 44,239, 11,130, 40,243,145, 46,234,151, 78, 36,164, 64,
244, 0,
169, 18,148,236,118,159, 90,130,174, 32,111,194,139, 15, 84, 50, // 16
208, 33,116,142,239, 65, 31,188, 52,204,101,236,158,199, 64,139,
115,194,144, 40,204, 26, 95,172, 51,186, 87,160,116,190, 21,167,
127, 71,155,105,168,199,101,180, 62,193,103, 9,249,121,215, 1,
85, 0,
233, 75,187, 32,210, 45,231, 5,211, 60,251, 41,219,114,190,141, // 17
95,165,229, 9, 96,199,140,108,167, 79,136, 59, 10,106,229, 27,
217, 7, 68,248,165,123,218, 63,253,136, 43,238, 5,142,209,102,
32,233, 21,207, 60, 31,226, 4,137, 79,220,168, 67,153, 91,191,
117, 0,
29,204,101,137, 61,191,120,162, 86,134,178, 79,163, 47,214, 1, // 18
244, 41, 84,207,175, 39,245, 2,226, 47,211,172,245,145, 79,166,
87,153,189,100, 14, 72,189,144, 12,107,193, 68,215, 94, 61,251,
185, 81,137, 92,254,140, 77,166,248, 23,128, 47,192, 18,239, 40,
143, 0,
63,127, 6,242,166, 77, 19,246, 47,202,102, 11,239, 88,128,173, // 19
110,183,143, 50,133, 74,165, 96,131,160, 24,113, 66, 21,212, 51,
237,118, 33,218,136,234, 32, 97,178,223, 28,158,113,181, 29,131,
53,157,201, 13,174,110,215, 56,108,160,212, 96,228,118, 74,167,
212, 0,
248,156,209, 55, 98,225,149,104,168, 28,229,123,154, 22,226, 81, // 20
54,226, 22,251, 94,215, 23,192, 41,254, 83,219,190,156, 99,180,
23,199, 65,169, 51,180,117,242, 39, 76,139,249, 17,207, 83,169,
229, 28,115,232, 66, 39,179, 14,195, 66, 39,176, 28,146,202, 48,
100, 0,
18, 89, 38,190,140, 31,202, 61,221, 84,175, 63,202,113,164, 33, // 21
208,125, 75,152,185, 55,144,231, 76,121,170, 8,128, 37,247,135,
93,148,255,114, 88, 7,203, 55,145,201,102, 48, 78,122,241, 8,
103,209, 73,152,124,241, 97,137,232,113,242,130, 85,255, 10,136,
187, 0,
125,228,171,105,253, 75,128, 15,118,148, 4,254, 42, 78,241,134, // 22
178, 15,195,102, 5,239, 85,126, 12,200, 52,240, 63,196, 72, 1,
228, 58, 15,189,229,157,128, 90,224, 3,169,226,189,156, 50,194,
148, 42,180, 4,193, 26,208, 67, 35,172, 3,199, 55,178,102,234,
66, 0,
176, 28,134, 57, 1,212,165,191,236, 58,194,107,142,183, 8, 64, // 23
97,245, 56,220,120,160, 27,180,216,147,105,162, 98,141,215,162,
117,177, 84,141, 32, 56,247, 21,180,114, 56,131, 13, 88,220,119,
69,252, 89,224,110, 59,147,183,217, 85,153,104,223, 21,157, 52,
208, 0,
109, 75,234,195,156,101, 40, 91, 27,158, 84,217, 24,226,118,204, // 24
155, 37,147, 79,182, 68,225,109, 72, 37,231, 19,221, 39,111, 62,
209, 34,239,112,213,182,101,154, 48,240,195, 96,247,142, 34,181,
20,166,131, 36,162,248,116, 10,126, 49,238, 31,145, 75,196,118,
5, 0,
251,185, 45,115, 62,243,138,219,122,245, 33,169, 59, 91,172, 49, // 25
236,114,213, 22,253, 38,142, 47,241,138, 82,198, 68,169,252, 23,
87,187,148, 17, 77,138, 62,220,121, 77, 18,167, 44,205, 70,237,
109,211, 63,190, 78, 29,198, 74,233,176, 91,185,112,247, 36,218,
155, 0,
89, 18,144,223, 16,182, 69, 9,184, 55,111,208,131,250, 16,137, // 26
74, 9,190,134,102,165,207,116,167, 14,179,107,147, 8,190,135,
232,108, 55,200,251, 36,194, 25,168,211,129,230, 83,124,169, 1,
150, 92, 23,230,139,217,104,157, 19,138, 38,209, 11,173, 97,137,
55, 0,
164,118,200, 92,161,114,207,147, 86,214,161, 19, 78,193,100,223, // 27
197,158, 86, 48,221, 6, 79, 30,212, 66,250, 29,226,124, 91, 42,
165, 5,127,171, 99,155,119,242, 95, 39, 61,153, 14,199, 90,224,
56,244,160,106, 6, 89,186, 59,206,107,244, 77,150, 53,190, 22,
225, 0,
48,244, 68, 40,238, 30, 58,253, 26,128, 50,239,153, 54,176, 28, // 28
119, 42,246,142,193, 98,243,175,129, 93,156, 60,194, 51,242,201,
64,196,235, 77, 14,231, 74, 2,151,190,218,106,250, 46,130, 37,
193,125, 64,179,241, 54,143,255, 34,189, 60,125,219, 85,234,106,
197, 0,
152, 3,193,146,107,189,121,176, 97,225,180,102, 2,229,143, 90, // 29
235,166,106, 22, 67,162,120, 42,230, 1,217,132,102,176, 13,112,
155, 99, 33,148,197, 47,164,206,105, 31, 75,166, 59,151,217,163,
95, 11,219, 36,122,204, 18,125, 96,163, 2,199, 40,154, 9,135,
73, 0,
188,125, 82,227, 14, 69,230, 5,155, 34, 65,134,209, 84, 41,186, // 30
11, 71,211,172,232, 13,200, 83,153,109,181, 20,236, 74,140,221,
23,250,183, 55,106,218,131, 54,255,132,226, 6,210,109, 72, 20,
253,146,186, 99,158, 68,175,218, 65,237,107,142,240,103,173,249,
28, 0,
92,233, 57,174,119,206,141, 85,202,114,248,186, 46,125,253,108, // 31
215,145, 35, 80,116,148, 53,254, 27,203, 51, 88,162, 32,187, 53,
85,134, 71,229,161, 18, 79,175, 22,189, 88,124,186, 34,227,171,
114, 54, 81,238, 9,224,101, 26,154, 51,182, 81, 18,194, 43, 89,
206, 0,
160, 20,192, 44,152, 23, 57,242, 44,163, 19, 88,154,198, 16,161, // 32
49,101,190,249, 48,214,100,168,132, 98,241,134,215, 98,246,111,
202,170, 6,124, 46,246,116,204, 73,150, 36,239, 80,156,127, 51,
191,221, 28,121,170, 57,138,211,117,227, 27,205,130, 76,228,136,
37, 0,
245,140,107,240, 92,222,181,135, 91,217,131,232, 32, 74,218, 66, // 33
240,152, 3,124,163, 16,196, 62,229, 10,159, 73, 16,167, 43,149,
21,235, 94,214,184, 83,159, 8,240,109,210, 59,174, 15,243, 86,
3,104,143,193, 83,251, 42,167, 6, 92,161, 67,252,158, 60,179,
103, 0,
6, 89,204, 25,163, 67,115, 30,187, 9, 67,176,115,165, 93,136, // 34
22,202, 82,215, 67,233,129, 36, 89,199, 58,187,110,202, 79,225,
123, 63,151, 32,138, 56,224,130, 66,169, 13,129,204, 70,111,205,
159,248, 44,219, 16,133,203, 72,241,132,215, 38,112, 22,201, 46,
212, 0,
72,182, 58,138,216, 1,255,154,212,126,247, 39,205, 5,182,231, // 35
112, 48,167,114, 24,151, 95,190,149,117,247, 24,219,137, 3,172,
46,185,254,112,204, 25,104,191, 35,201, 93,252, 33,142,181, 25,
129, 80,180, 70,116,176, 29,109,189, 49, 86,191,139,231, 98,127,
155, 0,
219,133,249, 35,106,184, 97, 39, 70,101,153, 80,134,243, 52, 73, // 36
143,221, 69,242,192, 76,251, 5,218, 31, 84,162, 49, 91,248,107,
211, 88, 9, 65,149,244,175, 78,232,140, 43,166,101,227, 65,237,
53,214, 23,147,243, 58,225,141, 16,164,229, 8, 63,179, 16,247,
35, 0,
113, 11, 94,198,143, 63,211,134,236, 46,189,224, 32,104,151,199, // 37
37,179, 11,138, 38,163, 52,174, 62,124,210,133,228,169, 37,146,
23,157,221,182, 94, 16, 59,157, 1,116,223, 71,189, 7,120,156,
98,168,119,198, 5,105,191, 74,255,118, 90,146,209, 82,157, 61,
170, 0,
57,228,174, 44,237, 13,168, 25,196,123, 8, 69,175,210, 15,100, // 38
255, 80,116,203, 93,227,107,137,234,184, 69, 10,111, 78,197, 57,
230, 95,128, 38,234,141,212,106,240, 53,153, 22,135,203, 47,217,
14,246, 46, 73,216,138, 49,158, 40,194, 24,245, 36,124,233, 95,
208, 0,
185,131, 72,156, 86,117,229, 70, 99,164,251,114,138, 58,233,160, // 39
24,139,224, 56,153, 30,195, 17, 87, 38,156,254,191, 19,238,112,
174, 62,192, 84,172,119, 34,177, 66,184,214,110,248, 72,126,165,
69,132,182,110,160, 31,230,119,214, 67,121,160, 71,195, 4,147,
31, 0,
89, 17,241, 34,203,139, 36,151,220, 31, 82,199, 23,187, 78,119, // 40
191, 63,178, 4,241,130, 82,246,168,217,101, 45,129,176, 68,148,
12,245, 33,210, 7, 68,251, 94,139, 12, 89, 47,151, 25,232, 93,
192, 41,223, 11,250, 77,169, 92, 2,168,222, 94,179, 51,217,109,
254, 0,
152,206,110,175, 58,252, 83,193, 57,135,175, 45,240,148, 6,206, // 41
42,235,104,161, 76,205, 49,141,108, 2,145,197, 59, 99,222, 53,
207, 90,147,110,227,144,191, 26,200,238,124,188,221, 87,171, 3,
243,102,146, 69,133,201, 20,235,191,132, 56, 13,231,140, 79,169,
52, 0,
120, 39,191, 7, 99,165, 16,111,236, 2,205,110, 66,118,223, 88, // 42
152,126, 35,218, 22,114,180, 27,201, 64,227, 21,244,142, 24,166,
121,189, 45,173, 83, 49,112,162, 71, 45,158, 21, 66,135,211, 60,
127, 30,210,184, 36, 83,145, 71, 39,100,242,151,112, 38,201, 13,
219, 0,
56,236, 85,145,206,122,224,179, 89,156, 74,225,171, 52,178, 32, // 43
251, 71,188, 85,138,248, 74,218,155, 93,123,162, 87,188,105,240,
77, 1,253, 61,197,237, 10,223,127,212, 96,254,193, 31,105,152,
222,170, 62, 99,227,171,245,122,216,163, 20,203, 67,249,128, 94,
177, 0,
144,113, 27,231, 44, 78, 34,132, 22,249, 41,129, 26,242,136,106, // 44
183, 20,224,157, 51,169, 7,122, 39,252, 30,215, 55, 10,214, 60,
142,205, 96,152, 30,120,167, 87, 34,182, 4,140, 90,164,244, 40,
90, 10,253,137, 15,104, 57, 8,182, 64,139, 96,180, 22,171, 42,
244, 0,
1,216,176,126,184,246,154,216, 61,188, 90,164,202, 73, 16,208, // 45
53,139,116, 13,234, 96,192,227, 87,188,150,100,198,122,157, 36,
182, 25,126,228, 86,186, 56,250,146,103,226, 54,205, 12, 76,180,
206,113,154, 45,215,160,201,145, 98,254, 33,213, 54,135,207,112,
71, 0,
201, 97, 48, 83, 12,108, 53,102,161,120,224, 9,103,146,229, 80, // 46
170,244, 84,181, 67,125, 33,145, 46,126, 6,240, 64,177, 80,236,
92,217, 50,192, 17,233,135, 13,205, 41,170, 84,130,231,120,142,
22,236, 59,181,120, 77, 29,229, 45,195,115,156,238, 90, 11,231,
166, 0,
35,147,255,134,221,160,211, 4,243, 39, 74,183,254, 49,180,119, // 47
1, 55,198, 34,215,164,249, 69,197,233, 79,143, 35,209, 15,151,
122, 65,166,107,150, 44,105,192, 85,127,246, 18,181, 42, 65,195,
55,172, 88,222, 23,243,107,136, 78,167, 3, 82, 38,194,147, 53,
128, 0,
80,189, 18,197, 63, 33,121,189, 84,200,148, 30,130, 95, 23,207, // 48
153,224, 96,145, 60,103, 19,171,113, 29,172,220, 96,124,254, 58,
188,232, 5,247, 81,218,176, 30,234, 60,155,113,215,149,252,104,
220,119, 1,138,196, 67,177,214, 25,235,128,221,178,116,251, 98,
209, 0,
233,123, 70,110,167,232, 78,149, 25,127,231, 83,215,163,237, 86, // 49
61,124,177, 10,237,153,212, 81,223, 56,125, 20,185, 50,172,110,
29, 88,138, 46,196, 63,137, 98,165, 8,207, 66, 35, 97, 7,173,
30,150,249, 95, 46,153, 10, 85,192,104, 50,145, 18, 78, 41,180,
15, 0,
156, 29,185,242, 7,144, 53,239,173,102, 42,180, 5, 67,121,187, // 50
26,252, 48,201, 82, 42,123, 4,148,183,250, 72,208,132, 7,228,
198,157,212,111,158, 10,252, 55,213,143, 81,174,239,142,196, 61,
88,200, 61,174,220,111,247,149, 45,163,249, 98,214,165,222,141,
63, 0,
96,216,136, 54, 99,204,124, 12,210, 63,247,117,150,209, 33,142, // 51
204,116, 77,159,114,205,169,242, 64,102, 13,149, 92,236, 74,141,
44, 79, 18,230, 93,177,121,184, 31,105,232, 16,118, 50,226,123,
240,111, 34,133, 17,193, 38,121,227, 87, 27,198, 44,120, 7,111,
243, 0,
201, 41, 82,173,221, 32,187, 90,130,162, 16,194, 46,103,242, 91, // 52
7,166,220, 17,246, 27, 95, 44,129,225,187, 44,171, 52,186,101,
177,207,131, 69, 33,236, 45, 86,225,135, 47,150,190, 79, 14,179,
39,158,194,235, 86, 58,100,208, 6,188,150, 80,141,245, 75,187,
26, 0,
165,129,249, 14,118,153, 66,250, 45,205,109, 70,228,174, 65,185, // 53
234, 57,108, 64,123,149,190,216,159, 34, 76,241,122,213, 35,250,
10,106,243,183,144,115,208,157, 4,196, 85,254, 92,209,146, 96,
219, 69, 22,104,156,241,179,146, 65,127,234, 13,186, 60,211,132,
87, 0,
4, 63,196, 91,234, 51,210,110,149, 27,238,154, 26,136, 14,146, // 54
43,126,208,175,232, 51, 84, 20, 98,193,113,157, 2, 77,161,129,
71,158, 54, 23,203, 64, 24,106,236, 54,176, 21,133, 59,245, 28,
152,120,229,175, 3,131, 30, 81,253, 34, 93,209,115, 20,155, 42,
197, 0,
218,171,113, 31,179,128, 2,183, 58,173, 80,115,217, 86,248,105, // 55
219,160, 30, 93, 3,167,222,129,255, 12,214, 52,192,104,222, 28,
197,220, 88,168, 98,229,136,184, 75,149,110,226,193, 2,123,178,
56,198, 81, 50,205, 66,220,184,110,204,144, 53,167,219, 95,255,
107, 0,
139, 48,228,159, 67,204, 89,239,101,210, 11,195, 41,187, 50,199, // 56
19, 68,252,136,203,117, 65,162, 57,178,127, 90,248,133, 66,177,
101, 15,138,235, 7,175, 40,248, 15,203, 30, 69,160, 94,217, 80,
233, 10,148,251,124, 98,152, 15, 59,173, 21,242, 78,137, 32,164,
66, 0,
237, 86, 20,133,252, 49,154, 23,129, 50,255,133,170,103,149, 85, // 57
175,119,188, 73, 39,238, 15,204,109, 40,228, 28,167, 16,233, 45,
152,255, 49,106,205, 76,130, 97,166,120,244,131, 36,197,146, 46,
122,191, 92, 32,178, 55,244,123,223,130, 96,194, 1,232, 62,207,
15, 0,
112,152,203, 97, 10,181,115,221,190,160, 97, 64, 25,240, 9,216, // 58
40,230, 11,146,179,103,150, 80,243,133,173, 64,122,189, 97,200,
120, 78,183,143, 60,152,225, 61,213, 43, 80,174,235, 73, 20,249,
172, 26,228,133,213, 8,195, 69, 25,200, 47,141,109,169, 97,128,
184, 0,
46,223, 62,173,126,230, 65, 37, 88, 5,199,225,124,191, 93,132, // 59
162, 74,111,244, 53,215, 34,178, 60, 5,209, 94,237, 43,146, 4,
229, 37,214, 12,243, 37,185, 3,115,155,216, 9,114,140,203,106,
59,113,161, 40, 81,165,102,143,238, 88,173,250, 38,213, 24,247,
83, 0,
188,131, 25,244, 40, 91,202,158,246,111,144, 39, 82,160, 49,237, // 60
58,210,187, 21,134, 82,196,126,222,153,113, 25,155,210, 89,180,
57,158,126, 88,166,124, 93,253,177, 32,108, 63,227, 56,163, 7,
223,196, 70,238,119,218, 29,183, 48,136, 15, 71,199, 57,134,173,
6, 0,
238, 99,193, 80,140,179, 45,133, 20,208, 65,188,250, 28,197,118, // 61
2,102,147, 69,174,235, 13, 99, 30, 76,241,189, 70,125, 28,235,
108,210, 23,235, 49,215, 29,132, 76,235,196,130,172, 28,241,131,
76,143, 14,173, 56,150, 77,230, 99,195,228,119,152,101,231, 62,
117, 0,
76, 16,154,212, 3,237,103,217, 57,126,165, 13,117,151, 76,218, // 62
166,253, 31,227,115, 54,155,252,193,165, 43,139, 8,253,163, 75,
149, 68,178,107,184, 71,161,211, 12,143, 42, 73,205, 90,115,187,
36,255,122,210, 27,247,125, 4,165, 37, 93,177, 6,185, 26,207,
159, 0,
184,225, 48,118, 63,151, 35,183, 89,242, 95,219, 55,234, 19,137, // 63
48, 86,136,185, 17,202, 70,129, 52,105,217, 95,198,105, 48,206,
9,238, 41,147, 6,233,108, 58,185, 91,170,251, 3,153, 51,230,
99,176, 50, 81,112,190, 69,213,134,247, 56,213, 72,253, 84,139,
33, 0,
53,104,145,255,178, 94,228,140, 8,172, 35,141,195, 92,187,102, // 64
204,177, 39, 73,216,106,177, 4,226,144, 17,159, 38,221,133,170,
97,129,186, 92,200,136, 20,247,120,220, 22,134, 99,212,182, 26,
150, 6,197,233,153, 17,167, 44,100, 22,162,108,146, 47,168,113,
242, 0
};
CONST BYTE HTSC_SUPERCELL_M[] = {
//
// SuperCell: 91x91x3x0, 31%!, 1.4225, 10.0000, 0%, c716938f
//
// Pattern Checksum = 7fb46795
//
//
// Magenta
//
166,206, 43,184,226,118,151, 71,167, 14,239,124,218, 8,228, 59, // 0
28,156,180,255, 89,169,101,230,150, 78,170,126,194,101,141, 28,
131, 57,120,156, 70, 18,188,136, 9,150,181,210, 6,248, 38,132,
102,196,162,234, 17,166,108,218, 54, 19,241,178,222, 34,146,245,
23,219, 47, 71,166,121,217, 19,225,182,125,231,106,132,212, 80,
122, 55,154, 5,239, 92,201, 17,154, 41,254,
51,126,239,101, 58, 36,188,221, 56,185, 39,152, 46, 87,147,186, // 1
238,105, 48, 4,224, 31,127,195, 60, 33,211, 45,239, 37,213,165,
220, 88,235, 42,180,125,244, 39,228, 89,114, 75,143,109,198,222,
66, 35,111,135, 71,243, 41,195,132,169, 89, 66,136,106,183, 72,
125, 98,140,254,194, 52, 93,190,108, 62, 5,163, 40, 60,155, 37,
198,254, 73,171,126, 45,228, 67,109,213, 77,
183, 89, 13,162,134,252, 96, 23,113,137,211, 96,178,206, 39,117, // 2
16,139,200, 84,149, 51,218, 13,172,252,142,106, 72,180, 60, 98,
6,194, 25, 99,223, 81,166, 78, 59,190,219, 26,232, 46,155, 11,
174,252,207, 25,192,149, 11, 77,234,104,205, 23,251, 58,212, 5,
235,187, 18, 87,113, 7,241,149, 26,251,207, 76,193,240, 90,175,
11,140, 99,221, 26,179, 97,142,190, 3,145,
39,221,199, 66,191, 7,171,145,238, 82, 9,252, 62,133,243, 91, // 3
193, 67,232,119,208,175, 75,138,103, 80, 2,200,156, 15,126,249,
143,171,122,203,145, 2,114,209,152, 13,132,169, 64,186, 85,126,
93,139, 79, 51,105,220,125,180, 47, 1,156,118,174, 38,159, 90,
145, 64,215,156,229,177, 70,123,170, 89,142,113, 16,140,215,111,
233, 51,191, 65,147,215, 20,246, 60,118,237,
167,138, 27,122,225, 50, 78,216, 30,191,161,106, 27,171, 1,217, // 4
151, 35,170, 21, 60,106,247, 42,222,184,123,232, 89,220,189, 84,
39, 57,242, 74, 47,238,181, 35,243, 91, 47,255, 98,215, 28,239,
190, 20,167,235,182, 80, 93,255,147,214, 70,235, 87,218,116,202,
28,177, 43, 79, 29,136, 38,214, 44,187, 29,233,172, 45, 73, 24,
165,132, 31,241,112, 53,122,169, 32,201, 95,
10,103,244, 80,151,111,199,122, 69, 49,130,226,189,121, 79, 53, // 5
115,251, 92,145,235, 7,151,199, 19,157, 57, 26,146, 62, 33,166,
225,111,183, 22,161, 96, 58,138,110,198,161,118, 3,133,167, 68,
42,226,122, 5,140, 33,168, 24, 61,107,188, 32,142, 12, 71,248,
131,102,243,119,211,192,101,237, 76,119,218, 58, 99,244,129,196,
62,209,106,172, 14,158,207, 90,227,134, 69,
175,206, 43,184, 33,241, 18,162,249,208, 92, 34, 67,235,155,199, // 6
20,182, 48,200,124,186, 88,119, 70,243,100,186,251,111,202,133,
12,151, 92,200,126,220,191, 15,226, 25, 67,182,228, 59,206,109,
147,204, 71,100,245,189,116,206,135,238, 53,126,228,196,157, 20,
60,198,146, 2,159, 54, 18,144,197, 4,159,131,204, 9,157, 97,
248, 4, 81,219, 77,250, 63, 6,153, 48,248,
87,148,118,222, 93,176, 58, 97,143, 5,181,150,205, 13, 89,241, // 7
139,103,226, 78, 28, 62,216,169, 34,137,213, 44,131, 6, 90,236,
71,214, 54,254, 9, 70,107,160, 84,142,209, 33, 87,149, 17,244,
90, 26,157,212, 64, 40,230, 7, 91,159, 21,177,100, 45, 89,188,
233, 38, 84,219, 69,241,115,170, 63,255, 87, 32,174, 77,223, 35,
149,122,186,139, 42,184,125,197,100,181, 33,
231, 17, 72,161, 2,138,233,195, 45,118,229, 58,107,133,177, 59, // 8
38,166, 9,150,248,132, 43,234, 85,181, 14, 76,169,223,182, 49,
122,165, 32,139,176, 42,239,205, 53,250,103,129,238,195, 47,132,
190, 54,178, 20,144,102,155, 68,183,217, 77,244, 4,210,140,117,
162, 99,174, 23,183,141, 86,225, 43,111,191,229, 52,124,183, 67,
213, 57,232, 18, 96,148, 28,235, 80,215,130,
107,190,250, 52,213,117, 74, 22,214, 81,168, 20,255, 36,215,119, // 9
223, 74,193,106,206, 90,154, 5,202,107,149,240,103, 58,149, 22,
245,189, 82,110,229, 90,148,123, 4,172, 43,161, 9,112,170, 68,
218,111,248,128,221,196, 49,249,114, 38,145,119,165, 63,250, 76,
8,208,124,253,106, 30,205, 12,183,135, 15,147, 98,250, 17, 93,
163, 28,104,167,203,224, 55,113,160, 10, 59,
168, 32,140,104,172, 36,187,145,106,242,136, 76,195,147, 67, 4, // 10
181,133,234, 47, 18,172,240,115, 63,231, 49,196, 26,124,209, 86,
106, 1,222,157, 20,186, 37, 69,195, 97,227, 64,212, 79,252, 37,
160, 2, 89, 38, 75, 10,170,136, 15,199, 54,221, 29,109,179, 33,
227, 55,150, 73, 49,233,122,159, 92,237, 69,212, 35,195,136,236,
119,193,252, 50, 72,121,175, 21,255,138,201,
91, 63,204, 18,226, 85,252, 57,177, 11, 40,225,116, 91,164,246, // 11
96, 24, 63,120,189, 78, 31,140,176, 18,128, 91,173,233, 35,178,
216,147, 74, 50,210,116,247,156,215,133, 19,180,140, 26,192, 95,
130,230,194,152,233,123,211, 86,230,101,156, 80,189,231, 47,156,
97,182, 17,215,164,189, 78, 55,202, 23,172,115,158, 73, 41,174,
12, 82,147,128, 1,242, 92,208, 76, 48,226,
153,121,235, 72,153,124, 7,205, 88,150,190, 62,171, 16,202, 45, // 12
142,206,168,253,134,221, 51,198, 88,219,165,255, 5, 74,152, 61,
131, 42,251,176,133, 62, 11,105, 30, 77,248, 88,120,223,149, 16,
180, 57,117, 45,176, 98, 29, 58,165, 40,253,128, 9, 86,116,205,
137,246, 83,113, 34,138, 5,247,146,103, 50,243, 3,230,107,211,
55,227, 37,216,191,156, 38,133,189,111, 28,
194, 5,182, 44,101,211,162, 43,126,231,102,211, 43,239,126, 70, // 13
232,110, 82, 12, 57,101,154,247, 26,113, 40, 61,135,196, 99,228,
12,193,109, 16, 83,233,191,168,224, 49,156,194, 39, 63,107,241,
78,211, 21,254, 68,141,243,186,120,206, 21,176,216,142,241, 14,
79, 36,131,234,200, 99,214,117, 34,221,190,134, 92,179,142, 84,
154,112,173, 96, 24,110, 69,231, 8,169,246,
55, 85,138,248,171, 27, 81,241,182, 78, 26,131,154, 80,182, 20, // 14
157, 37,191,145,210,177, 1,125, 67,190,155,211,110,237, 22,182,
119, 77,224,165,204,145, 43, 88,135,201,115, 14,237,171,203, 52,
166,109,153,191, 7,219, 89, 13,147, 61, 88,110, 55, 35,160, 64,
197,220,162, 11, 63,158, 51,183, 83,159, 66, 32,207, 58, 20,250,
190, 8,241, 67,166,237,200,148, 59, 89,129,
230,201,110, 21, 68,224,146,111, 13, 52,187,249, 2,108,226, 95, // 15
214, 67,243,113, 45,236, 94,208,146,232, 10, 85,176, 47,161, 55,
243,154, 30, 64,101, 22,121,255, 3, 68,232, 99,145, 85, 5,138,
25,233, 63,130,102,164, 46,195,101,241,212,155,196,229,102,177,
121, 54,103,185, 91,251, 25,224,124, 13,253,113,155,225,122, 36,
77,127, 45,210,138, 56, 15,117,181,219, 19,
158, 35,150,216,179,105, 34,201,165,234,121, 65,169,201, 35,136, // 16
176, 6, 91,165, 19, 71,162, 49, 31, 96,128,247, 24, 76,220,128,
93, 48,210,141,244,183,211, 56,179,151, 29,188, 42,213,114,245,
185, 83, 32,213, 58,203,129,229, 28,172, 45, 1,127, 82, 23,255,
5,154,237, 26,206,115,144, 76,171,209, 88,182, 10, 81,184,149,
221,197,159, 90, 33,188, 96,247, 29,140,100,
72,243, 54, 95, 9,137,254, 58, 90,142, 81,221, 48,146, 74,254, // 17
54,124,202,230,134,193,118,251,176,216, 54,153,200,104,147, 10,
198,163,110, 6, 83, 46,158, 94,116,221, 79,132,251, 65,163, 36,
99,220,173,141,247, 22, 81,156, 66,113,141,237, 66,186,214,135,
74,208, 42,139, 67,169, 1,237, 36, 64,143,233, 47,107,242, 66,
48,101, 16,252,122,222,160, 75,208, 51,188,
2,177,128,198,234, 51,185,116,218, 10,203, 30,118,235, 15,107, // 18
193,154, 47, 27, 82,217, 23, 62,134, 14,194,114, 44,239,183, 82,
253, 27,231,176,216,132, 13,240, 25,191, 50,168, 17,122,199, 59,
155,123, 3, 95, 41,121,184, 8,252,197, 89,176, 30,156,109, 38,
171,115, 88,181,244, 51,212, 96,135,196, 17,120,169,203,136, 2,
174,231,145,177, 60, 5,134, 44,166,112,221,
144,104, 25, 64,159, 85, 19,151, 44,172,107,152,194, 91,174,217, // 19
22, 95,245,175,109,152, 77,229,102,164, 80,229, 7, 65,118, 36,
141, 66,129, 55,105,168, 73,197,142, 87,237,107,209, 86,232, 11,
193, 69,228,196,164,234, 87,212,134, 60, 14,225, 99,246, 63,199,
238, 17,218,124, 23,107,152,186, 48,242, 94,220, 75, 24, 97,216,
84,114, 33, 76,214,108,240,195, 15,254, 84,
214,185,246,142,223,119,203,244, 74,228, 61,251, 7, 50,150,120, // 20
72,206,138, 58,227, 11,177,201, 29,245, 89,143,175,214,159,226,
191, 95,202, 16,248, 34,221,107, 37,175, 6,144, 37,172,140,110,
244, 35,143, 51, 75,137, 32,108, 44,170,205,132, 53,143, 7, 83,
145, 52,158, 71,194,231, 75, 11,112,170, 57,153, 42,251,150,190,
45,137,242,197,126, 25, 91,145, 68,126, 47,
13, 78, 38,100, 7,173, 40, 98,138, 22,180, 97,136,226, 65,247, // 21
37,171, 4, 91,197,125, 44,111,147, 55,186,119, 73, 26,100, 53,
4,167,224,149, 85,182,138, 65,252,121,212, 62,228, 73, 22,178,
87,163,102,254, 12,215,192,151,230, 84,114, 21,212,173,223,123,
184,101,250, 6,166, 37,131,254,199, 25,134,213,185,124, 66, 15,
222,183, 18, 56,150,179,228, 39,218,187,157,
239,130,208,164, 60,214, 77,194,164,118, 40,215, 76,177, 24,186, // 22
134,221,113,238, 51,156,253, 80,221, 2,210, 36,243,198,148,249,
124, 72, 40,108,198, 51, 1,165,199, 51, 92,161,195,127,236, 48,
217, 17,207,122,173, 98, 66, 3,180, 29,242,158, 71, 39, 98, 21,
232, 30,198,136, 92,213, 57,158, 90,224, 82, 12, 98, 31,235,166,
107, 70,159, 96,237, 49, 79,169,107, 34, 94,
54,174, 44,112,250,134, 31,240, 2,224,189,145, 46,117,211,100, // 23
81, 56,162, 32,185,100, 14,188,126,165, 95,138, 56,114, 18, 90,
185,235,136, 21,241,122,230, 81, 22,150,231, 13,105, 59,188, 98,
133, 62,187, 35, 58,225,125,245,105,142, 50,188,126,253,198,155,
69,126, 78, 41,228,115,186, 29,125, 41,180,247,158,205, 79,133,
50,255,117,213, 12,121,207, 3,139,230,196,
148, 90,225, 25,187, 93,157,111, 70, 52,105, 25,248,161, 6,146, // 24
242, 17,206,131, 70,225,139, 39, 62,240, 24,223,185,162,216, 61,
153, 47,209,169, 63,148, 98,207,109,188, 42,136,247, 35,156, 2,
249,147, 82,237,154, 19,164, 53,195, 74,225,102, 8, 79,134, 56,
217,170,238,149,178, 10, 72,205,240,155,109, 58,120, 45,181,225,
11,197, 31,175, 85,189,146,247, 72, 21,115,
251, 13,197,131, 65, 10,221,191,135,236,171,207, 94, 61,230, 51, // 25
192,125, 92,249, 21,167,207, 91,196,113,151, 77, 8, 96, 37,231,
117, 9,103, 84,193, 12,178, 37,244,127, 73,168,206, 81,223,109,
202, 26,174,101,130,197, 89,217, 38,163, 22,209,175,233, 36,187,
2,107, 52, 22, 83,249,138,103, 22, 64,197, 2,222,145, 26,102,
160,128, 79,143,243, 29, 63,101,199,165, 47,
178,123, 81,160,233,177, 45, 84, 18,155, 75, 11,134,197,110,170, // 26
33, 72,180,151, 52, 84,117,245, 27,173, 45,206,254,120,173, 72,
191,248,161,218, 52,255, 78,134, 61, 7,233, 99, 18,120,176, 46,
71,120,231, 6, 68,251, 26,116,139,247, 84,132, 42,112,157, 98,
249,146,211,190,100,162, 44,177,215,142,232, 94,191, 71,246, 81,
213, 55,230, 39,112,168,225, 43,121,221, 86,
215, 59,242, 39, 97,119,142,252,202,117, 43,242,173, 36, 76,137, // 27
213,237, 1,112,229,190, 14,155, 76,231, 98,131, 59,150,209, 29,
138, 57, 27,132,113, 32,210,167,222,154,198, 52,189,146, 28,238,
163,196, 40,213,167, 46,151,188, 14, 97,199, 63,167,220, 17,204,
80, 25, 67,125,221, 61,234, 12, 86,114, 43,168,127, 17,165,117,
186, 4,154,204, 70, 15,132,184, 10,144, 36,
158, 1,140,209, 21,194, 68, 24, 93,182,220, 90,119,205,255, 22, // 28
98,158, 63,208, 33,142, 56,217,125, 4,180, 32,193, 15, 83,238,
102,183, 79,232,187,150,103, 15, 87,112, 32,135,253, 67,212, 88,
138, 61,103,143, 85,223,104,238, 57,218,145, 10,241, 89, 60,133,
181,113,243,169, 6,148,116,201,165,253, 19, 78,239, 50,217, 35,
68,250, 99,128,176,213, 95,253, 76,232,112,
93,191,107,170, 61,239,165,215,149, 52, 15,164, 60, 8,152,185, // 29
50,130,188, 92,127,253, 98,171, 66,202,143,245, 68,226,115,161,
2,214,147, 13, 50, 81,235,193, 52,179,228, 74,107, 14,182,114,
8,248,175, 23,198,130, 39, 79,156,115, 44,192,109,141,214, 41,
234,149, 58, 40, 94,210, 32, 79, 50,134,211,182,141,102,193,151,
124,178, 26, 56,240, 40,149, 54,173, 23,200,
248, 28, 81,225,133, 9,109, 37,127,241,110,212,141,233,104, 70, // 30
240, 13,226, 57,169, 8,198, 26,242, 43,109, 90,170,136, 35,199,
71,120,244, 93,202,162, 26,121,250,147, 3,205,167,229, 60,151,
205, 42,126,232, 76, 17,181,209, 7,173,249, 69,163, 19,177, 75,
8, 96,196,227,178,130,246,156,190, 26,110, 59, 5,229, 61, 13,
233, 86,209,163, 89,120, 5,203,106,136, 46,
77,130,202, 39, 76,154,228, 85,203, 63,175, 81, 40,192, 33,122, // 31
201,167,108, 35,236, 84,149,116, 81,159,210, 11, 49,191, 95,252,
45,176, 30,113,224,134, 66,170, 35, 95,119, 54,140, 96, 34,239,
78,184, 98, 55,157,253,144,118,227, 92, 27,102,205, 59,255,118,
223,165, 26,109, 71, 19, 52,100,228, 72,241,152,204, 82,130,184,
103, 39,139, 14,226,192,160,242, 83,219,161,
7,233,150,110,255,192, 45,179, 5,152, 32,250,131, 78,221,143, // 32
23, 85,149,192,119,212, 39,234,187, 21,129,239,116,220, 22,147,
125,209, 67,168, 47, 5,239,198, 72,220,182,246, 20,200,128,170,
19,141,217, 1,204,100, 49, 73, 37,195,151,225,129, 35, 82,144,
201, 53,134,241,158,189,221,141, 7,128,178, 30,107,169,253, 48,
217,167,243, 74,111, 33, 63,128, 20, 53,183,
197, 56, 30,178, 13, 64,105,133,236, 88,210,104,184, 4,166, 61, // 33
249, 45,223, 10, 64,163, 74,135, 97,226, 55,177, 85,155, 62,188,
81, 9,236,139,190, 84,105,143, 17,152, 80, 40,162, 69,221, 50,
115,250, 67,164,131, 27,194,162,245,126, 53, 5,168,218,189, 98,
31, 78,211, 2, 57,116, 84,175, 46,203, 87, 52,224, 24, 70,153,
21,121, 59,178,134,206,101,189,231,144, 97,
115,157, 90,211,140,219,164, 23,196,120, 16,147, 51,235, 92,203, // 34
115,170, 98,138,251, 27,204, 2,168, 69,149, 31,204, 4,241,108,
227,160, 98, 24,250,127,212, 61,235,108,208,135,236,110, 5,187,
83,196, 32,108,242, 83,219,109, 18,178, 84,242, 70,114, 14,159,
244,176, 94,147,196,253, 17,211,109,153,250,123,195,145,116,209,
88,191, 3,221, 45,246, 10,153, 37, 68,249,
205, 66,243,120, 33, 84,244, 70, 44,172,240, 75,205,129, 35,152, // 35
14,189, 53,207, 81,184,112,245, 45,212,101,251,133, 74,171, 35,
58,128,205, 73, 50,167, 12,185, 36,168, 53, 15, 85,181,148,228,
137, 52,173,211, 16,175, 43,146, 61,229,105,198,138, 47,232, 63,
119, 24,223,122, 46, 74,161, 34,231, 62, 15,166, 81, 11,240, 36,
159,248,104,147, 77,160, 93,216,122,171, 18,
43,179, 9,167, 51,203,112,144,218, 94, 55,163, 19,177,109,242, // 36
74,228, 30,125,160, 56,145, 84,179,120, 22,190, 48,112,211,140,
197, 20,172,218,110,229, 79,136, 94,255,121,194,220, 35, 57, 95,
26,237,100,145, 77,126,238, 93,204,129, 14,157, 25,173,207,141,
196, 55,158, 15,235,180,126, 89,144,102,205, 42,233,104,171, 66,
132, 81,215, 34,200, 22,184, 50, 82,223,133,
234,106,142,220, 97,179, 2,187, 30,135,225,117,253, 80,212, 46, // 37
134,158,102,241, 9,218, 32,227, 12,152,235, 87,145,228, 26, 95,
254, 85, 48,124, 25,152, 40,193,218, 3, 63,138,102,163,250,129,
207,159, 8, 57,218, 36,193, 3,163, 42,217, 78,249,102, 84, 4,
105,249, 86,204,108, 31,226,198, 52,245,177,117,151, 49,193,228,
9,181, 61,128,235,106,135,253, 2,190, 95,
58,208, 30, 74,238,130, 69,251,103,201, 8, 49,144, 27, 99,190, // 38
1,203, 60,177, 88,188,102,128,201, 68, 37,167, 7,184, 62,163,
12,184,144,241,197, 95,246,114, 73,149,175,240, 19, 68,197, 13,
65,116,192,254,165,107,153, 73,250, 98,174, 52,124,193, 54,235,
163, 36,133,174, 59,153, 78, 11,157, 38, 83, 3,212, 79,137, 42,
116,206, 23,168, 86,190, 65,166,110,150, 25,
164,122,187, 48,155, 26,173, 46,156, 74,168, 92,183,223,159,123, // 39
86,226, 24,122,148, 39,234, 58,170, 95,218,123,247,103,135,236,
119,216,100, 1, 58,177, 17,166, 46,209, 29, 90,203,146,111,177,
229, 37, 81,130, 22, 66,232,133, 27,202,140,231, 34,146,216, 26,
123,194, 67,217, 8,250,119,214,105,192,135,237,167, 22,220, 93,
255,156,105,243, 54, 12,228, 42,214, 68,240,
79, 5,254,109,213, 83,233,125,221, 26,206,237,125, 61, 18,247, // 40
48,140,184,255, 64,206,159, 16,251,115, 46,195, 75, 28,200, 43,
75, 34,159, 78,221,140, 66,236,132, 99,234,128, 60,231, 34, 89,
131,203,171, 96,214,185, 11,196,116, 56, 87, 6,186, 72,112,173,
83,228, 28, 97,135,190, 36,167, 62,224, 28, 94, 61,118,180,149,
16, 76, 44,131,217,154, 89,128, 19,196,131,
216,179, 87,139, 16,195,101, 12, 66,136,109, 81, 41,192, 74,206, // 41
166,104, 37, 78, 7,115, 84,133, 39,183,142, 13,157,223, 91,152,
210,175,233,129,188, 30,108,204, 9,186, 40,160, 8,180, 72,163,
249, 2, 55,240, 40,139,104, 50,224,156,214,121,243,159, 15,254,
50,148,117,242,168, 64, 92,238, 16,120,176,145,206,241, 32, 58,
191,223,173,201, 31,116,197,236,175, 99, 36,
63,149, 32,230,174, 41,145,205,164,249,182, 5,163,240,144, 95, // 42
9,197,232,157,220,173,240,203, 70,227, 89,240, 53,121,179, 5,
115, 53, 24,103, 68,253,148, 86,167, 64,220,107,246,133,208, 26,
109, 73,152,116,178, 71,236,171, 93, 16,180, 42, 95, 60,211,104,
187, 5,199, 55, 24,207,126,147,201, 75,245, 52, 7,100,142,232,
91,122, 3, 67, 99,171, 9, 77, 49,154,245,
96,203,123, 56, 75,113,245, 54, 95, 30, 62,218,129, 23,112,226, // 43
58,124, 80,135, 99, 55, 32,150, 2,110,160, 67,206, 31,236, 70,
219,139,244,197, 7,172, 46,229, 31,125, 80,201, 44, 90, 55,222,
142,194,231, 27,211, 16,146, 37,253,135, 76,229,143,192, 40,139,
73,224,160, 84,111,225, 1, 52,164, 31,108,196,168, 80,201,115,
36,161,248,143,228, 41,252,145,111,193, 20,
172, 8,247,156,221,188, 3,171,125,226,153, 87,194, 70,173, 34, // 44
187,249, 25,211, 16,196, 77,121,192,219, 22,124,166,103,144, 22,
188, 87, 60,153,118,216,133, 99,199,249,142, 27,158,189,117,170,
18, 94, 48,167,108, 86,197,113, 62,204, 29,168, 11,122,231,170,
21,126, 37,239,142,172, 78,254, 95,215,144, 38,127,252, 17,179,
60,205, 29, 82,178,133, 62,208, 27,230,132,
221,108, 49, 93, 27,133, 84,235, 21,200, 44,119,254, 48,210,137, // 45
86,158, 48,178,108,228,162,246, 93, 61,184,254, 50,192, 79,247,
112,169, 15,227, 40, 75, 18,181, 54, 12,176,104,217, 4,232, 49,
247,126,217, 74,248,157,226, 3,185,123,218,106,249, 73, 31, 89,
247,183, 97,205, 18, 47,196,134,182, 10,236, 88,208, 57,153, 77,
240,131,103,220, 16,112,185, 91,160, 52, 78,
36,150,190,216,169, 53,197,148, 71,101,181, 17,149,105, 6,234, // 46
116, 64,218,141, 68,131, 53, 12,175, 31,131, 85, 9,224, 36,155,
51,215,125,180, 90,203,243,155,119, 86,231, 56,134, 71,102,148,
79,173, 7,143, 25, 56,130, 77,161, 38, 81,150, 51,202,156,214,
113, 48,157, 66,125,232,105, 27, 69,121, 53,184, 23,105,228,123,
9,190,159, 55,197, 44,225, 1,243,123,180,
240, 65,128, 20,119,230,103, 34,210,136,240, 74,225,183, 79,166, // 47
24,182, 96, 9,253, 34,208,146,105,230,152,205,114,172,129,210,
100, 25, 70,252,142,107, 34, 69,222,185,147, 20,253,165,194, 19,
210, 41,200,114,187,216, 39,245,104,194,237, 7,182, 92,133, 13,
70,201, 9,243,171, 81,155,204,240,171,150,230,132,173, 31,201,
97, 41, 74,244,128,166, 75,143,102,199, 13,
85,203, 41,249, 78, 9,159,244, 63, 6,161, 36,124, 51,217,132, // 48
245, 42,226,150,184,110, 80,238, 38,195, 73, 53,241, 90, 64, 3,
175,230,152, 44, 6,168,191,135, 9, 46, 95,202, 66,121, 38,239,
131,101,235, 60,162, 95,140,200, 18, 55,135,101,222, 33,244,188,
124,226,141,106, 32,220, 7, 57,109, 34, 92, 14, 65,217, 51,166,
237,153,207, 6, 97,232, 24,206, 40, 66,158,
136,106,174,145,208,187, 87,127,176,109,216, 93,202,152, 15, 64, // 49
102,196,125, 75, 22,202,136,180, 91,124, 13,178, 24,151,197,248,
138, 85,198,118,220, 61,238, 99,204,234,125,169, 31,223, 81,176,
53,159, 85, 23,254, 8, 66,166,119,212,179, 24,153,119, 77, 45,
169, 23, 83,196, 55,181, 91,138,218,185,252,118,188, 96,138, 85,
20,128,106,180, 52,152,118,177,255,116,216,
18,238, 29, 71, 45,112, 28,207, 44,238, 56,187, 28,251, 94,206, // 50
158, 1, 58,173,234, 46, 72, 4,158,251,209, 97,219,120, 34, 57,
111, 29, 67,173, 88,128, 25, 52,152, 72, 16,243,101,146,201,109,
1,222,185,137,104,190,221, 37,241, 90, 65,252, 48,175,217,108,
233, 63,163,253,136,110,238,160, 17, 76, 49,148,227, 5,249,195,
66,222, 47,250, 85,211, 46, 92, 10,167, 51,
185, 91,211,130,233,173,254, 74,155, 17,122,146, 72,115,177, 35, // 51
235,139,216, 92,113,154,210,229, 61, 34,140, 45,166, 75,227,186,
164,233,210, 14,247,160,214,174,110,190,141, 51,184, 12, 62,251,
134, 74, 33,230, 46,150,114, 74,146, 7,166,124,193, 69, 1,147,
35,203, 97, 5, 43,213, 24, 60,201,131,178, 24, 78,162,120, 35,
147,183, 14,138,169, 22,237,133,203, 79,227,
149, 59,166, 15, 86,147, 1,130,194, 97,180,217, 5,232,138, 70, // 52
112, 45,187, 21,243, 32,127, 99,194, 87,176,108,246, 17,135, 93,
10,133, 55,146, 39,103, 70, 2,255, 30,226, 89,212,121,163, 40,
172,206,120,164, 89,239, 16,208,181,102,215, 29, 95,209,127,249,
85,155,129,218,173, 84,196,120,245, 90,217,112,196, 41,212,103,
241, 87,118,199, 65,111,190, 59,155, 28,124,
4,251,101,192,219, 53,103,226, 58,235, 69, 41,160, 85,192, 19, // 53
168,249, 76,134,167, 59,182, 15,133,235, 8,195, 65,150,215, 47,
252,101,189, 87,179,222,143,204, 93,131, 58,152, 23,236, 86,218,
99, 21, 54,213, 29,175, 59,133, 32,233, 53,148,238, 21,164, 58,
187, 27,240, 56,113,145, 66,164, 43, 2,154, 59,246,135, 64, 22,
168, 55,219, 30,232,159, 6, 98,213,240,104,
207, 49,138, 34,121,170,209, 39,167, 23,140,246,105,206, 42,228, // 54
88,124, 10,211,101,200, 79,250,160, 57,117,223, 38,105,188, 78,
127,204, 24,235,118, 18, 56,183, 39,168,209,106,176, 46,141, 10,
190,153,248,103,145, 79,192,245, 83,128,198, 70,118,179, 42,104,
217,119, 77, 18,193,248, 11,228,108,189,225, 27, 97,180,235,122,
208, 3,147, 97,127, 43,249,144, 38, 67,181,
86,163,223, 70,245, 17, 73,150,111,199, 84,176, 15,124, 68,142, // 55
185,221, 51,144, 28,231, 42,110, 30,214,142, 84,165,238, 1,168,
30,148, 61,161, 77,246,128,100,237, 78, 7,249, 73,204,113,244,
75,129, 63,198, 20,226,117, 3,168, 42,175, 10,213, 79,244,139,
10,174,209,159, 99, 42,135,178, 57,140, 80,127,165, 8, 76,154,
91,188,254, 69,179,207, 79,186,112,159, 30,
243,112, 10,153,105,201,132,236, 8,224,131, 63,219,154,255, 6, // 56
57, 97,172,247, 83,155,127,173,196, 76, 43,190, 24,125, 62,207,
242, 88,224, 5,186, 48,158,213, 21,145,192,126, 28,157, 59,168,
34,231, 6,165,127, 51,161, 94,219,113,255, 91,156, 29,191, 66,
230, 93, 36,123,225, 73,203, 90, 30,255,205, 50,232,199, 44,226,
58,129, 35,215, 12, 57,134, 19,230,200,132,
62,189,213, 43,181, 89, 33,177, 61, 99, 28,191, 38, 82,193,113, // 57
158,207, 23,115,188, 2,213, 92, 21,227,154,255, 92,220,157,100,
39,124,198,101,135,207, 29, 64,179,107, 44,219, 96,236, 14,209,
103,176, 90,213, 68,251, 37,204, 27, 67,144, 39,234,129,107,166,
50,149,253, 60,168, 21,114,222,159,116, 13,155, 85,114,141,184,
22,169,100,153,115,164,242, 83, 41, 96, 13,
171, 34, 82,128,228, 55,253,107,205,165,247,150,106,233, 51, 32, // 58
239, 73,138, 41,229, 58, 78,247,140,104, 6,114, 47,181, 15,140,
189, 67,156, 34,234, 90,121,251, 88,230,169, 70,140,189,120, 80,
144,222, 38,112,183,145,101,176,134,227,187,100,200, 4,222, 34,
199,117, 6,205,138,244,182, 7, 69,194, 94,184, 32,250, 14, 98,
243,204, 80,239, 45,218,104,176,211,154,234,
137,103,249,155, 15,118,160, 12,139, 41, 75, 4,208,139,171,122, // 59
185, 12,220,168, 99,137,166, 37,186, 55,170,200,136, 65,246, 83,
215, 10,253, 56,165, 16,184,143, 3,130, 31,200, 19, 55,165,254,
44, 72,137,234, 16, 57,236, 10, 85, 52, 17,164, 54, 82,152, 96,
238, 75,171, 99, 27, 77, 44,146,240, 48,216,123, 62,202,161, 65,
123, 50,137, 23,197, 74, 1,139, 53,116, 67,
193, 4,179, 66,218,196, 69,216, 91,236,183,127, 86, 26, 72,222, // 60
96,146, 82, 48,196,239, 15,209,119,231, 71,238, 25,205,120, 32,
172,105,133,201,114, 70,219, 54,202, 62,159,248, 94,227,104, 3,
181,202, 28,159, 94,195,118,210,149,249,116,217,135,246,179, 24,
134,186, 48,237,121,165,200,100,127,161, 26,236,143,105, 37,221,
192, 6,231,180,119,157, 41,189,244, 19,219,
91,229,116, 40,100, 29,127,169, 24,115, 50,218,162,251,187, 18, // 61
54,248,179,120, 29, 70,128, 97, 42,157, 12,101,148, 89,165,229,
49,220, 35, 84,173,245, 34,157,108,236, 83,117,147, 47,207,152,
123, 91,245, 64,220,141, 30, 49,174, 93,191, 69, 20,104, 45,214,
64, 13,208,144, 60,230, 86,221, 14, 70,177, 79, 3,229,175, 83,
147,110,166, 60, 90,251,206,107, 81,168, 45,
157, 25,139,239,151,184,244, 56,227,190,152, 13,105, 41,129,153, // 62
204,111, 8,234,208,156,187,250, 77,213,125,191, 40,242, 4,110,
143, 71,159,209, 9,137, 94,212, 23,179, 39,194, 10,178, 78, 39,
224, 19,173,127, 6,170, 82,227,129, 1, 44,161,234,201,148,111,
251,162, 89, 33,183, 1,137, 42,188,252, 97,200,154, 49,125, 18,
253, 75, 32,210, 13,137, 65, 24,135,199,120,
59,214, 83,199, 50, 75, 2,104,141, 83, 63,239,195, 69,230,100, // 63
33,162, 67,137, 96, 54, 4,142, 25,171, 80,223,160, 76,184, 60,
197,249, 21,111,235, 49,185,125, 76,133,224, 67,214,128,247,113,
187, 62,108,209, 45,253,106,199, 62,239,212,118, 85, 53, 6,191,
81,124,218,108,239, 74,209,162, 57,141,118, 33,245, 90,216,185,
43,203,141,236,113,182,227,160,216, 7,255,
179, 38,170, 11,114,222,163,194, 21,211,113, 44,124,166, 1,209, // 64
86,226,193, 23,170,217,115,202, 62,239,111, 20, 57,129,214, 20,
125, 93,182, 58,152, 79,222, 5,246,171, 20,109,161, 28, 56,146,
32,242,153, 87,186, 67,149, 15,160, 97,141, 24,186,136,232, 68,
174, 18,152, 52,164,128, 26,111,226, 17,216, 66,129,168, 62,113,
155, 98, 51,169, 80, 28, 56,118, 40, 77,104,
228, 92,131,242,156, 81,129,254, 48,171,231,157, 28,246, 77,177, // 65
142, 47,122,254, 75, 38,237, 90,155, 34,205,145,249,172, 91,236,
156, 42,224,121,203, 32,161,103, 43, 63,140,242, 73,222,102,172,
213, 73, 9,234,132, 23,236,122,185, 47,204, 65,243, 96,160, 29,
222, 60,245, 31,193, 95,248, 70,181, 88,157,192, 10,205, 30,225,
15,244,130, 3,191,247, 95,169,240,187,148,
125, 19,198, 60, 23,207, 35, 66, 99,131, 8, 87,200,137, 51,117, // 66
242, 10, 65,184,105,136,173, 11,124,180, 71,101, 7, 47,119, 31,
203, 77,169, 20, 94,252,132,209,178,219, 86,197, 1,132,192, 17,
92,130,199, 41,175, 94,202, 32, 83,250, 8,173,125, 44,198,119,
93,201,130, 80,214, 9,173,136, 38,243,107, 48,237, 96,131,165,
69,180, 88,223,108,146,202, 45,130, 12, 65,
47,248,151,106,233,180,118,160,235,208, 56,183,105,215, 15,191, // 67
80,164,219,144, 14,222, 68,197,252, 53,224,158,197,228,178, 84,
130, 2,241,139,190, 67, 13, 82,122, 21,152,106,180, 42,255, 64,
231,166,106, 61,227,116, 65,163,220,109,152, 88,212, 14, 73,255,
143, 4,182,103,150, 53,222, 60,201, 4,147,183, 72,151, 38,238,
108,211, 29,156, 42, 70, 19,228, 88,195,217,
113,183, 71, 37,137, 89, 6,194, 31, 82,145,250, 38, 66,151,231, // 68
109, 36, 93,196, 59,161, 30, 85,108, 21,129, 40, 78,138, 59,255,
161,212, 65,105, 41,158,224,196, 54,250, 46,232, 71,159,100,147,
40,208, 16,137,158, 4,214, 44,135, 68,192, 32,143,229,180, 53,
170, 76,220, 24,243,121, 94,163,124, 86,226, 28,119,214,177, 57,
7,144, 65,203,234,139,181,106,161, 32,153,
91, 3,225,172,211, 49,246,139,105,174, 20,119,169,224, 94, 23, // 69
179,239,130, 27,248,120,232,141,216,164,190,245,115, 12,200, 23,
108, 46,151,200,236,123, 33,110,167,136,202, 17,127,219, 9,196,
121, 79,240,187, 70,252,127,177, 13,230, 49,246,104, 80,116, 19,
231, 45,126,166, 41,186, 15,251, 43,210,137, 56,250, 12, 81,195,
126,255,174,115, 14, 79,251, 51,215, 72,235,
202,137,100, 28,116,162, 75,215, 55,203,227, 69, 5,130,199, 49, // 70
143, 65,208, 77,178, 94, 43,187, 1, 61, 92, 31,169,223,146, 87,
225,187, 25, 75, 12,178, 88,239, 4, 75, 96,169, 57,186, 84,244,
29,141, 46,102, 29,193, 76,100,201,154,119,174, 3,161,198,134,
88,204, 99,232, 71,208,143, 82,181, 19, 97,186,161,110,143,229,
93, 31, 50, 95,197,126,167, 6,115,141, 22,
170, 45,252,189, 82,229, 17,125, 25,150, 96,181,242, 84,165,111, // 71
215, 3,168,117, 12,205,152, 72,126,233,141,207,100, 63, 35,172,
123, 80,248,130,222, 54,149,191, 61,181,243,117,227, 31,151,108,
177,219,159,206,121,154, 19,234, 62, 24, 91,214, 57,224, 27,243,
165, 33,153, 8,132, 98, 47,233,118,148,239, 71, 37,207, 27, 67,
156,215,191,148,238, 36, 67,208,182,246, 56,
221, 75,156, 11,131, 41,198,174,251, 80,127, 28, 48,210, 59,237, // 72
40, 98,246,148, 63,227, 33,245,105,197, 52, 9,240,130,195,233,
43,153, 91,167,106,207, 39,121,224,144, 20, 41,142, 69,207, 19,
55, 94, 7, 64,245, 40,213,109,140,244,191, 73,143,112, 47,100,
62,186,252, 59,185,225,163, 6, 74,200, 46,218,132, 89,246,172,
16,124, 62, 3, 87,219,144,102, 43, 88,121,
148, 30,114,207,239,150,109, 72, 46,162,232,194,147,121, 14,154, // 73
129,195, 69, 35,189,132, 95,172, 15,156, 79,186,150, 28, 76,111,
16,211,185, 5, 68,135,254, 13,103, 53,217, 86,175,252,116,185,
224,127,233,181, 86,130,164, 54,178, 36,128, 17,252,189,151,209,
131, 16,110,144, 85, 27,108,215,174, 30,104,166, 2,193,114, 42,
223, 99,248,162,119,183, 18,230,174, 11,193,
99,231,175, 51, 68, 89,224, 1,188,114, 12, 62, 90,254,179, 76, // 74
224, 24,174,230,103, 18,202, 68,220, 38,253,116, 91,206,166,251,
61,126, 75,238,201, 29,174, 83,193,158,124,199, 99, 3, 47,140,
83,163, 38,109, 46,203, 2,229, 82,207, 99,170, 41, 87, 9,237,
72,195,224, 36,198,246,151, 54,135,254,125, 56,237,148, 61,185,
140,199, 71, 30,203, 50, 76,129,153,240, 63,
136, 4, 91,195, 18,165,201,127,243, 94,219,170,206, 34,104,204, // 75
58,109,139, 82,157,249, 43,150,127, 92,175, 20,229, 50, 3,137,
179,224, 24,143, 50, 94,151,220, 43,247, 11, 65,230,154,213, 71,
247, 12,210,154,241,174, 96,122, 26,155,238, 65,218,130,177, 56,
164, 96, 49,171,114, 67, 17,191, 84, 11,211,177, 77, 26,230, 92,
8, 50,172,226, 97,149,253, 38, 90, 25,210,
41,243,154,121,254,101, 59, 32,155, 44,139, 26,117, 64,141, 6, // 76
167,248, 17,191, 50,120,180,237, 59,215,133, 56,161,125,216, 98,
33, 88,164,106,181,242,115, 25, 74,111,177,143, 29,114,173, 22,
188,104, 53,134, 19, 72,146,255,187, 48,137, 5,196,108,227, 22,
119,249,148, 2,210,134,236,102,227,158, 40, 98,137,206,113,160,
241,127, 83,135, 9,210,107,188,222,123,176,
193, 76, 46,210, 27,139,227,182, 84,204, 70,246,153,225,188,237, // 77
122, 44,212, 68,220, 4, 91, 37,112, 8,190,241, 88,193, 65,154,
244,192, 57,212, 14, 68,209,138,190,235, 56,208, 77,245, 94, 57,
127,237,176, 93,225, 40,206, 11, 70,114,228, 96,156, 76, 37,143,
211, 80, 59,228, 83, 33,172, 42,123, 65,201,242, 15,182, 38, 59,
211, 20,192,246, 57,174, 65, 12,163, 53,104,
148,224,107,180, 82,170, 15,114,234, 9,176,103, 20, 85, 36, 55, // 78
93,160,132,102,171,128,228,148,207,163, 79, 30,116, 13,230, 41,
114, 7,141,233,123,161, 48, 2,155, 85, 16,162, 37,135,192,216,
158, 34, 71,200,117,178, 89,130,220,167, 21,202, 50,184,243, 94,
170, 16,190,120,182,150, 71,220,181, 19,146, 72,120,223, 88,142,
175, 69,110,158, 29,123,238,141, 83,246, 27,
66, 11,132, 35,238, 52,213, 92,148, 51,131,219,198,162,118,181, // 79
215, 10,202, 36,255, 64,194, 20, 85,232, 46,153,213,143,179, 83,
169,205, 96, 40, 84,200,252,102,226,124,214,105,234, 86, 5, 49,
108,223, 9,144, 48,247,157, 35,194, 93, 67,250,131, 12, 64,200,
41,132,241, 28, 92,252, 7,137, 92,248,105,192, 47,167, 6,253,
117, 43,219, 93,229, 81,198, 31,215,129,202,
174,249,156,204, 97,126,162, 63,194,241, 81, 41, 96, 3,229,140, // 80
80,237, 72,153, 95, 25,162, 57,138,118,182,252, 92, 60, 27,238,
133, 49,248,178, 23,133, 58,180, 74, 27,174, 44,200,153,182,254,
142, 89,169,236, 82, 23,112, 65,235,144, 31,161,110,229,150,117,
225, 99,156, 69,210,111,195, 38,212, 60,164, 25,234,136,102,184,
23,199,134, 1,186,151, 46,110,165, 4, 93,
120, 47, 73, 16,183, 39,250, 4,123, 30,172,144,253,184, 70, 31, // 81
109,170, 21,192,136,221,107,242,202, 31, 69, 3,129,199,112,212,
18, 75,115,143,225,106,164, 37,198,139,247, 68,123, 22,113, 64,
27,204, 40,107,208,163,220,179, 7,116,189,216, 46, 80,178, 20,
57,194, 5,176, 45,146, 77,167,122, 14,204,117, 66,205, 51,227,
74,163,240, 72, 38,117,217, 75,194, 51,225,
21,189,216,116,230,143, 80,188,223,102,207, 23,122, 49,154,242, // 82
195, 53,120,244, 48, 73,179, 11,155,100,210,162,227, 46,152, 90,
164,192,216, 8, 65,202, 14,239,113, 56, 6,148,215, 79,233,158,
219,129,186, 60,136, 14, 52,127, 87,241, 54,100, 2,204, 93,254,
136, 86,237,125,218, 22,239, 48,227,146, 83,239,157, 30, 95,149,
123, 49,104,205,159,243, 25,139,254,104,155,
240,142, 81,163, 50, 20,170, 90, 47,158, 64,229, 87,202,104, 13, // 83
136,217, 87,157, 1,214,130, 51, 78,234,115, 39, 72,180, 11,251,
64, 36, 98,174,236, 81,150, 95,208,172,222, 82,167, 38,194, 16,
101, 73, 1,241,195, 91,253,199,154, 21,131,171,245,115,158, 43,
212,154, 34, 60, 94,183,115,200, 93, 39,186, 3,106,183,248, 10,
212,186, 19,129, 55, 97,183, 64, 16,179, 79,
54,110, 6,246,100,212,118,231,132, 11,186,140, 18,162,223, 78, // 84
44,163, 27,229,111,194, 92,251,173, 28,185,147,242,106,135,201,
119,224,148, 55, 30,127,188, 43, 72,130, 34,100,250,127, 54,140,
245,178,147,113, 35,172,106, 31, 68,223,198, 60,142, 33,189, 68,
10, 99,204,167,250,140, 8, 67,157,255,123, 69,222,132, 63,161,
41, 85,252,172,213, 8,223,161,118,208, 33,
227,171,195, 56,140,186, 60, 28,200,241, 80,110,247, 38,126,192, // 85
252,103,184, 68,142, 39,162, 22,137,219, 63, 8, 88,216, 32, 52,
159, 14,112,248,160,215,105,255, 10,231,159,203, 13,182, 97,204,
66, 29,214, 82,225, 64,137,232,162,110, 83, 25,209, 86,232,123,
242,178,130, 14, 71, 42,222,178,107, 19,209,171, 49, 25,215,110,
234,142,102, 36, 74,144,106, 39,237, 86,149,
95,128, 37,225, 86, 11,255,151, 97, 39,165,207, 58, 91,176, 7, // 86
66,131,207, 16,245, 62,222,114, 80, 98,203,126,191,151, 78,183,
242, 71,187, 87, 1, 69, 35,151,181, 89,117, 60,141, 78,230, 8,
167,132, 50,182,153, 21,188, 55, 4,185,139,230,112,174, 26,151,
82, 49,226,113,206,160,123, 33,235, 52,144, 82,245,153, 86,185,
71, 4,217,157,193,242, 67,189,135, 2,185,
29, 76,209,152,112,169, 69,114,181, 62,128, 4,185,229,114,148, // 87
221, 33, 93,155,106,176, 6,198,237,165, 20,254, 54, 24,234, 95,
129, 30,208,122,170,197,223,112, 54,206, 19,241,193, 46,160,111,
218, 94,250, 10,102,236,121,208, 87,244, 49, 16,148, 54,217, 98,
203, 18, 68,152, 88,244, 76,192,138, 74,198,117, 10,194,123, 22,
164,199, 54,114, 14,126, 23,220, 53,111,248,
157,187, 9, 58,235, 33,219,195, 19,236,214,101,139, 43, 73,199, // 88
47,171,238, 71,218,131, 85,144, 34, 61,139,103,178,120,162, 5,
219,149, 59,233, 47, 91,133, 15,234,146, 83,169, 31,123,244, 73,
33,189, 61,129,201, 74, 42,151,106,164, 73,189,253, 75, 3,184,
137,249,175, 30,189, 53, 1, 96,211, 15,161,227,101, 48,210,239,
40,126,247, 78,222,179, 97,147,174,209, 61,
222, 82,245,129,176, 94,134, 49,144, 87,160, 28,251,164, 20,244, // 89
104,136, 11,192, 26, 47,247,180, 95,188,213, 41,226, 64,201,112,
44,172, 94,138, 27,247,163, 72,177, 45,128,224,102,207, 18,146,
173,116,223,151, 31,175,252, 11,226, 33,213, 98,124,160,231,118,
36, 76,111,232,100,137,236,175,114,247, 37, 66,175,145, 68,103,
149, 87,175, 41,141, 29,250, 44, 86, 13,134,
24,108,150, 21, 73,205, 2,246,108,203, 77, 59,187, 97,129,175, // 90
82,217, 61,115,145,205, 65, 17,120,240, 8, 88,154, 17,244, 77,
188,253, 11,215,195,111, 52,212,101,251, 28, 63,158, 88,183, 59,
238, 3, 87, 53,210, 92,137, 69,184,117,146, 52, 13,199, 90, 56,
168,199,149, 11,210, 36,155, 73, 45,146, 89,200, 25,250, 7,180,
228, 22,213,108,193, 64,163,121,232,184, 98
,
//
// Cyan
//
87,195,141, 6,185,154, 78,141, 94,121,252, 82,161,226,195,100, // 0
255, 12,201,232, 79,126,230, 48, 75,130,102, 34,139, 16,198,152,
11,188, 37,100,199,228, 68,191,252,151, 8,101,245, 19,204, 85,
14, 57,206, 26,103, 45,182, 12,227,153,195,233, 57,147,194, 47,
151,204,111,248, 80, 32, 51,113,181, 17,141, 69, 13,243, 34,145,
237,216, 26,117, 62,161, 42,241,175,119,158,
110, 22,176, 62, 98,209, 30,176,197, 25,207, 8,106,137, 63,128, // 1
166, 83,109,149, 34,189,155, 21,253,209,171, 86,211,174, 78, 48,
212, 80,128,156, 2,138, 44,100, 24, 80,231,139, 42,187, 52,234,
166,123,247, 77,164,208,142, 59,123, 27, 89,127, 32,210, 10,128,
227, 39,168, 17,199,124,237,149, 60,250, 86,188,113,204, 60,177,
19, 56,149,248, 14,191,121, 87, 17, 57,245,
211, 70,224,118,238, 54,127,227, 58,151, 73,173,219, 37,240, 18, // 2
215,191, 23,246, 66,218, 82,114,145, 66, 10,243,109, 40,132,255,
104,170,232, 69,250,114,212,161,220,183, 56,199,116,159, 79,135,
95,191, 6,114,229, 20, 92,191,215, 50,252,182, 74,241, 85,184,
98, 64,219,137, 59,170, 89, 22,207,124,167,223, 42,160, 90,126,
206,104,189, 76,141,235, 32,217,200,146, 33,
127,168, 36,151, 17,195, 90, 2,107,239,125, 47, 93,200,157, 52, // 3
78,124, 49,174,116, 10,177,227, 28,195,120,153, 68,223,183, 24,
144, 53, 17,186, 33,176, 74, 10,109,132, 28, 91,225, 2,253, 24,
208, 38,149,177, 43,133,246, 71,159,104,137, 11,160,112,152, 21,
255,119, 31, 93,242, 2,219,186, 43,101, 5, 76,131,232, 9,255,
71,164, 4,210,100, 54,132,163,107, 73,181,
3, 94,248, 78,178,133,255,165,206, 33,188,234,140, 12,114,182, // 4
232,147,220, 91,205,139, 49, 99,164, 53,232, 38,199, 6,116, 88,
221,193,120, 91,219, 49,149,243, 44,174,248,149, 64,175,102,154,
55,232, 87,214, 64,184,107, 4, 41,228,195, 61,221, 36,197, 70,
136,166,208,183,153,106,130, 70,143,231,198,153, 35,192,109,150,
27,225,129, 43,179,220, 75, 8,254, 41,232,
192,144, 52,204,105, 28, 49, 79,143, 99, 64, 25,180, 80,245, 91, // 5
31, 72, 1,159, 35,238,186, 70,248,135, 89,173,100,145,242,163,
41, 73,246,164,134,105,195, 81,206, 67, 11,109,209, 34,219,120,
180, 71,138,104, 15,220,154,236,174, 81, 26,123,174, 99,238, 47,
213, 9, 78, 56, 28,202, 47,253,175, 32, 64,246,101, 62,216, 43,
180, 97, 63,250,149, 20,169,194, 91,154,109,
70,214,116, 12,231,159,219,187, 12,244,160,118,210, 48,151,125, // 6
208,167,251,123, 62,107, 19,208,112, 4,214, 25,229, 51, 77, 18,
212,137, 5, 66, 30,238, 15,140,114,161,233,187, 48,144, 74, 26,
240, 8,195,251,127, 79, 49,131, 98,205,149,246, 73, 1,142,171,
87,109,246,133,232, 86,164, 10,117, 92,134,180, 25,170,133, 80,
238,143,200, 32,114, 88,238,123, 28,208, 47,
245, 34,152,187, 66, 92,121, 59,133,197, 77,228, 4,170, 66,189, // 7
16, 89, 47,190,223,169,138, 40,157,192, 71,153,123,185,205,125,
176,103,227,187,210, 88,179, 41,218, 22, 74,131, 96,247,199,159,
97,147, 61, 35,157,197, 18,211, 59, 10,109, 41,185,219,118, 23,
227,146,192, 17,102,146,210, 80,187,228, 15,212,117,237, 10,191,
114, 17, 77,174,223, 50,141, 65,228,117,175,
132, 89,235, 40,137,242, 33,212,102, 26, 53,146, 90,254, 33,215, // 8
111,230,146, 96, 11, 74,245, 93,231, 51,108,245, 42, 92, 27,252,
54, 83,146, 45,123,159, 61,235, 96,145,201, 31,172, 7,116, 46,
225,204,122,186, 91,238,107,145,254,178,223,160, 97, 53,201, 65,
179, 74, 44,166,218, 72, 21,243,139, 43,161, 56, 86,156, 70,221,
51,161,243,126, 7,208,186, 16,160, 77, 22,
167, 5,177,107,205, 9,181,144,249,164,207,112,193,130, 80,138, // 9
56,177, 37,209,135,186, 54,205, 17,147,179, 11,216,168,112,152,
10,236,180, 19,100,248, 11,124,188, 50,226, 83,236,140, 67,178,
25, 81, 13,229, 55, 24,170, 69, 30,123, 76, 18,241,145, 32,250,
125, 6,233,113, 50,196, 40,110, 68,199,100,247,188, 41,127,174,
103,207, 39, 98,156, 69,106,251, 44,200,224,
63,123,219, 57, 84,163, 52, 76, 40, 95, 15,238, 48, 18,221,165, // 10
243, 6, 78,249,111, 26,160,104,128, 83,208, 75,140, 58,195, 79,
208,128, 68,204,150, 75,213,161, 69, 4,157,105, 54,194,219, 93,
254,141,175,104,163,127,222,188, 97,151,215, 56,111,189, 81,103,
164,207, 91,142,252,177,130,165,234, 9,147, 31,113,205, 24,253,
1,139, 66,194,234, 35,173,124, 81,139, 98,
248,197, 44,147,253,116,224,191,128,227,171, 70,153,183,107, 29, // 11
90,126,194,156, 63,202,239, 46,193,255, 31,122,241, 23,225, 45,
173, 29,108,225, 47,178, 30,105,202,253,126,188, 16,118, 31,154,
115, 51,216, 37,249, 87, 57, 3,239, 42,196,132,227, 9,153,212,
25, 61,188, 31, 75, 2, 95,208, 55,126,221,176, 76,234,151, 61,
94,229,178, 16,132, 90,216, 3,236,182, 18,
154, 28, 93,172, 18, 39,142,100, 2,198, 32,133, 91,233, 58,206, // 12
147,226, 44,100, 10,131, 86,150, 2,168, 55,156, 94,179,114,143,
95,244,157, 1,136,115,230, 54,138, 88, 45,215,162,243, 61,184,
1,199, 72,133, 12,198,141,211,117,161, 87, 36,167, 68,234, 51,
137,241,157,117,222,155,239, 78, 34,192, 88, 18,139, 45,106,200,
165, 32,117,249, 72,200,144, 56,157, 41,113,
74,186,237,108,194,218, 62,245,157, 57,111,248,200, 5,124,176, // 13
67, 17,166,236,179,210, 34,232,116, 78,227,196, 7, 69,234, 13,
211, 37, 65,183,250, 84,190, 13,166,221, 20, 68, 92,135,204, 80,
236,165,107,224,156, 48,102,170, 74, 24,247,183, 99,128, 22,184,
109, 86, 10,205, 46,128, 21,175,146,103,252, 60,215,187, 13,127,
222, 85,155, 55,169, 19,110,226, 87,201,223,
143,121, 7, 68,131, 89,173, 27, 77,222,177, 49, 81,168, 38,251, // 14
103,215,120, 82, 51,112,163, 60,200,132, 35,102,218,127,157, 62,
177,132,203, 96, 27, 59,149,239, 71,121,185,148,226, 12, 45,103,
134, 21, 44,182, 90,242, 17,226, 52,205,124, 5,224,197, 85,254,
166, 55,230,101,170, 64,202,110,227, 6,168,117,157, 94,246, 68,
38,189, 9,214, 98,240, 41,184,130, 11, 59,
243, 48,199,230,163, 13,213,126,200, 93,135, 26,153,226, 90,137, // 15
53,193, 33,150,253, 19,217,102, 23,248,176,149, 49,186, 26,252,
109, 76,238,122,162,218,105, 36,203, 98,243, 31,109,173,251,158,
211, 69,247,123, 62,191,148,121,180, 92,150, 71, 46,153, 36,134,
17,198,144, 26,192, 92,250, 39, 68,203, 45,234, 21, 56,163,203,
138,236,106,142, 31,192,154, 78,255,105,173,
20, 95,152, 60, 38,243,108, 47,153, 7,231,190,115, 18,204,181, // 16
13,156,228, 66,189,140, 76,183,147, 57, 90, 16,240,111, 83,198,
47,168, 20, 52,188, 8,130,180, 63, 3,168, 76,203, 59,125, 38,
89,177,144, 6,209, 34, 82, 41,253, 16,216,177,244,107,217, 67,
227,116, 74,240,131, 10,159,135,185, 94,148, 75,132,225,107, 4,
82, 45,176, 69,224,125, 57, 18,167, 44,209,
125,181,220,115,140,185, 72,168,254, 61,104, 70,247, 57,121, 74, // 17
244, 85,106, 5,122, 40,225, 10,236,113,212,193,133, 54,223,145,
5,232,137,212, 91,232, 78,254,146,216,123, 44,139,222, 6,194,
229, 27,103,233,153,114,229,163,104,136, 51, 90,129, 13,185,101,
168, 47,180, 36,215, 56,224, 29,114,246, 12,212,190, 47,179,145,
220,120,249, 16,168, 81,209,118,225,140, 67,
239, 35, 85, 3,209, 92, 18,207, 33,140,216,164, 34,150,221,165, // 18
28,132,173,201,236, 88,166,131, 45,170, 34, 68,161, 12,176,119,
93,192, 67,112,154, 30,172, 55,106, 35,190,247, 96,180, 78,108,
147, 62,197, 46, 87,184, 20,206, 60,194,231, 22,164,208, 57,143,
7,249, 88,151,101,123,177, 83,205, 50,171,108, 82, 27,254, 91,
23,183, 59,150, 94,241, 37,185, 91, 7,193,
73,144,171,251, 43,150,236,123, 96,178, 12,126,205,101, 1, 65, // 19
195,219, 69, 31,152, 51,195,105, 73,220,121,254, 99,233, 74,209,
53,158, 24,245, 45,199,128, 11,223,163, 82, 11,156, 29,240,167,
17,255,132,170, 28,245, 67,126, 5,154,100,187, 72, 38,235, 82,
212,128,189, 16,207, 67,245, 2,158,130, 68,237,141,168, 63,206,
158, 39,211,108,196, 2,142, 71,246,164,108,
14,229, 50,131,106,192, 67, 40,199, 75,244, 43, 86,172,236,142, // 20
98, 40,119,244,102,216, 16,249,184, 1,152, 25,186, 43,148, 22,
251,102,205,133, 74,227, 85,189,135, 62,234,113,214, 68,133, 48,
202,114, 73,211,110,138,176,218, 86,239, 33,134,252,123,158,195,
25,106, 45,234,161, 28,145,105,234, 36,214, 19,196,102, 14,131,
110,235, 85,138, 55,222,170, 43,131, 32,211,
178,105,203, 69,226, 10,173,133,223,156, 58,186,222, 21,117, 49, // 21
255,153,179, 20,144, 79,134, 56,144,100,200, 70,125,218,110,179,
130, 40,176, 2,168,117, 27,246, 98, 19,182,137, 39,196,103,224,
82,183, 2, 55,235, 14, 97, 38,143,172, 57,197, 91, 1,101, 51,
140,226, 66,133, 87,187, 57,200, 79,181, 96,123, 43,244,185,221,
68, 10,168,243, 23,118, 85,195,220, 63,124,
82, 39,156, 27,164, 82,249, 31,108, 20,100,124,146, 72,211,184, // 22
77, 7,229, 67,201,173, 34,219, 83,241, 46,230,156, 85, 6,234,
66,219, 86,239, 54,213,155, 51,145,221, 46, 90,252,172, 21,155,
37,140,227,166, 84,156,195,251, 66,108,210, 25,164,220,185,245,
77,175,202, 5,255,114,217, 42,139, 11,157,233, 65,152, 85, 32,
149,198, 47, 74,188,152,254, 13,104,160,243,
194,132,248, 97,214,117,147, 56,178,239,202, 6,250, 40,151, 27, // 23
132,203,103,125, 46,238, 96,180, 14,162,114, 18,181, 39,201, 94,
154, 19,123,148,103, 14,194,113,174, 80,206,152, 4,123, 62,242,
205,102, 47,128,202, 63, 29,117,183, 8,232,121, 69, 41,129, 15,
152, 29,112,156, 71,169, 20,120,243,195, 55,204,136, 3,171,117,
251, 95,133,211,104, 33, 70,135,184, 54, 19,
226, 75, 8,187, 54, 22,198,218, 88,141, 67,169, 87,191,106,235, // 24
85,171, 35,218,159, 4,119,138,209, 77,195,140, 58,242,134,172,
52,209,190, 61,177,250, 71, 37,239, 16,120,192, 71,232,144, 95,
10,176,249, 19,108,237,136,206, 45,156, 77,142,247,177, 84,194,
104,241, 50,225, 36, 98,230,154, 69, 99, 27,113, 80,212,231, 60,
186, 37,226, 5,162,233,200, 45,238, 96,149,
29,177,110,230,137,174, 76, 2,126, 40,232, 31,122,224, 52,160, // 25
12,246, 66,139, 89,205, 62,251, 50, 28,236, 98,207, 78,112, 11,
249,101, 32,232, 21,126, 97,212,129, 63,230, 38,109,175, 27,193,
66,134, 81,212, 54,173, 12, 82,243,103,192, 52, 14,109,228, 47,
216, 67,179,122,208,186, 59, 7,179,220,162,251,187, 42,103, 21,
143, 75,175,121, 55, 91,115,148, 3,210,120,
198, 47,143, 34, 67,246,111,235,167,193, 99,150,180, 20, 74,215, // 26
125, 97,190, 19,242,170, 30,189,111,159,128, 4,166, 30,217,186,
72,149,119, 76,153,221,170, 4,149,182, 93,166,221, 50,213,119,
228,164, 34,187,142, 95,215,164,129, 20,225,168,209,148, 26,160,
128, 7,149, 81, 22,143,110,247,127, 37,140, 14, 65,132,161,199,
238,111, 30,248,195, 16,176,226, 86,173, 60,
95,234,165,208,103, 24,157, 50, 80, 16,213, 58,240,108,144,185, // 27
42,167,228, 50,117, 72,144, 93,214, 64,184, 86,255,140, 56,121,
23,236,169,208, 41, 87, 55,200, 46,251, 29,140, 8,101,153, 56,
14,102,238,120, 17,252, 45, 73,198, 64, 38,118, 93, 60,241, 72,
207, 98,188,251, 56,219, 83,196, 54, 79,200, 93,179,241, 7, 79,
46,211,155, 62,130,219, 77, 42,134, 25,245,
67,125, 5, 82,180,216,132,196,224,113,138, 29, 79,205, 8,253, // 28
82, 24,106,152,196, 16,226,174, 12,239, 36,198, 43,103,232,171,
203, 49, 90, 7,185,144,237,122, 84,113,209, 76,242,191, 80,254,
136,184, 49, 74,200,154,125, 6,237,141,161,255, 3,189,121,176,
19,232, 41,116,163, 15,173, 30,156,237,115,218, 27,107,217,123,
183, 87, 11,180, 93, 26,161,252,203,110,155,
217,193, 54,255,118, 66, 9, 97, 41,161,251,190,128,165, 52,119, // 29
209,138,218, 63,237,124, 82, 43,137, 79,148,118,218,160, 14, 85,
141,108,223,127,253,107, 19,158,223, 11,132,161, 55,121,166, 26,
202, 89,144,219, 28, 87,230,171,111, 90,191, 73,135,224, 35,104,
149, 78,137,217, 91,242,131,206,103, 1,173, 67,155, 51,167, 34,
146,236,114,226,138,197, 53,101, 9,180, 48,
18,100,163,140, 35,228,150,242,181, 70, 4, 92, 43,218, 96,172, // 30
60,182, 10, 94, 35,156,189,252,111,221,177, 8, 93, 65,191, 46,
248, 19,175, 55, 30, 71,197, 42,180, 64,202, 32,233, 14,223, 68,
44,229, 1,162,112,186, 50, 75,213, 19, 51,217, 28,162, 58,250,
182, 30,202, 4, 63,112, 40, 72,229,142, 50,254,133,197, 91,244,
61, 22,200, 44, 74,233,120,154, 72,227,141,
173,230, 24,214, 96,170, 56,126, 26,109,210,158,236, 23,141,240, // 31
39,108,248,168,204,102, 1, 68,165, 23, 61,245,201,145,236,123,
162, 74,209,150,217,132,232, 82,139,247,100,178, 86,148,106,181,
126,170,102,247, 37,139,205, 26,149,240,122,173, 85,111,196, 93,
53,236,109,165,190,146,222,163, 21, 89,202, 16, 76,226, 9,190,
130,173,100,157, 1,175, 24,239,190, 37, 83,
120, 57,130, 72,194, 13,207, 88,192,238,135, 61,111,191, 85, 5, // 32
199,151, 66,130, 49,238,136,216, 45,207,105,134, 30, 55,105, 3,
198, 40,115, 87,182,101, 1,167,108, 18, 49,123,207, 40,216, 81,
240, 21, 72,196, 65,232, 98,130,182, 57,201, 12,245,140,218, 7,
123,152, 84, 44,213, 56, 27,192,116,240,179,127,105, 41,150,110,
72,223, 53,252,115,215, 95, 55,131,106,242,
3,186,245, 39,148,112,251, 46,155, 75, 22,178, 47,152,225,119, // 33
76,229, 15,217, 88, 23,192,116, 90,146,186, 78,166,227,182, 85,
222,134,242, 13, 46,246,191, 68,222,197,165,239, 62,172, 7,140,
55,202,131,155, 10,171, 41,253, 15, 83,103,157, 47, 79, 38,164,
192,220, 21,240,123, 99,248, 82,150, 36, 60,159,219,176,248, 33,
207, 12,146, 79,167, 37,143,178,220, 29,202,
143, 98,159, 80,230, 31,167,132, 11,224,103,204,254, 17, 67,180, // 34
139, 38,191,108,178,144, 73,231, 9,248, 38,214, 11,128, 44,155,
23, 62,173,146, 72,154, 30,129, 45,145, 81, 11,131, 94,252,184,
112, 32,224, 83,113,215, 89,119,210,170,236,128,209,175,233,105,
27, 67,137,173, 14,183,133, 5,221,101,205, 22, 82, 55,131, 93,
182,120,232, 26,209, 64,246, 8, 88,160, 67,
39,197, 16,209,101,188, 67, 96,199,171, 42,136, 80,124,214, 48, // 35
247, 94,158, 60,255, 38,164, 54,124,159, 69,111,240, 95,196,254,
113,191, 93,213,112,225, 92,201,254, 26,115,223,196,158, 25, 79,
217,167, 64,250,185, 21,160, 49,145, 65, 32, 75, 8,116, 64,148,
244, 96,205, 55, 90,212, 63,159, 75,174,124,230,147,195, 5,225,
66, 39,172,104,134,193,112, 49,204,114,253,
90,222,123, 59,137, 4,213,239, 53,115,242, 1,165,196, 30,112, // 36
172, 19,213,122, 5,203,101,182,216, 20,205,178,148, 19, 64,140,
37,230, 16, 52,181, 8,166, 56,103,162,186, 56, 35,110,228, 48,
148, 4,120, 36,142, 60,238,194, 3,226,199,137,251,192, 20,214,
42,165,115,251,148, 32,238,196, 29,253, 14, 94, 38,242,106,163,
135,203, 81,241, 12, 86,162,235,135, 15,169,
50,154, 32,180,235,162,121, 37,150, 75,158, 61,233, 95,144,230, // 37
81,135, 43,230, 86,130,242, 29, 92,135, 47, 87, 39,232,107,215,
84,158,121,250,138, 68,239,127, 16,233, 89,138,244, 73,136,200,
92,241,176,206, 99,219, 77,130, 88,114,163, 92, 39,157, 94,131,
81,199, 2, 48,178,124, 96, 46,107,135, 57,189,127,170, 24, 55,
255, 20,157, 47,180,222, 30, 58,181, 76,232,
190,105,247, 86, 24, 61, 91,184, 22,212,190,110, 27,175, 71, 9, // 38
206,188,103,156,184, 46,152, 66,229,165,251,121,208,154,188, 24,
174, 61,203, 33,100,191, 36,208,146, 65,197, 3,168,208, 15,172,
116, 45, 80,133, 10,155, 43,174,249, 54, 25,183,219, 56,235,182,
33,139,230, 79,220, 14,185,145,219,202,156,236, 63,212, 84,191,
116, 95,217,140, 60,120,152,107,215, 28,124,
6, 63,136,214,116,200,254,138,227, 96, 13,142,218, 45,244,151, // 39
38, 76,248, 13, 71,225, 18,201,113, 12, 58,183, 3, 78, 51,127,
246, 5,145, 86,235,157,115, 84,178, 33,220,123, 46,105, 60,233,
28,193,219, 57,245,188,119, 16,203,135,233, 76,118,146, 13,110,
246, 60,173,101,153, 71,234, 56, 25, 84, 8,101, 40,118,155,224,
36,176, 9, 85,249,188, 3,240, 90,163,206,
233,174, 21,155, 44,168, 17, 77, 48,123,249, 64,198,129, 98,212, // 40
119,166, 49,137,207, 97,127,170, 75,194,146, 93,235,136,226, 90,
194,104,226,171, 17, 53,214, 6,250,102,157, 77,192,248,133, 85,
156,123, 20,168, 85, 34,214, 67, 98,159, 7,198, 32,177, 73,211,
153, 21,123,201, 29,208,113,162,248,126,175,200,146,246, 2, 60,
142,239,122,201, 35,102, 68,197,134, 39, 77,
119, 94,196, 72,234,100,131,178,204,154, 35,167, 88, 5,186, 64, // 41
15,223,193,107,174, 53,253, 42,217, 30,243,115, 36,176, 18,165,
34, 70,126, 62,219,136, 73,163,130, 51,235, 25,148, 10,178,214,
50,255, 97,143,232,109,148,235,189, 46, 88,130,253,101,194, 42,
92,190, 73,255, 51,140, 5, 92,190, 66, 35,219, 23, 71,173,102,
208, 74, 48,167,135,216,172, 22, 58,252,150,
215, 34,249,122, 9,212, 52,244, 3, 70,222,105,237, 53,162,250, // 42
130, 89, 28, 66,232, 1,158,102,135, 83,165, 70,200, 59,217,108,
236,157,199, 39,183, 95,240, 40,186, 87,202,120,218, 53, 75,113,
15,175,203, 62, 2,181, 54, 19,126,242,169,211, 52,156, 4,242,
128,222, 9,149, 89,178,238, 47,138,229,107,134, 87,195,227,133,
29,186,109,229, 12, 80,114,222,165,105, 14,
75,159, 58,182,147, 82,161,116, 92,198,130, 19,194,137,109, 23, // 43
197,151,242,163,126, 91,208, 26,233,190, 7,221,125,154, 84,139,
54, 15,255,112,153, 10,198,117,230, 12,167, 42,104,189,241,163,
131, 78, 30,225,134,210, 96,173, 75, 36,106, 18, 75,230,138, 64,
169, 45,117,186,221, 59,122,213, 22,169, 56,251,162,118, 15, 55,
158,252, 21, 72,155,247, 45,142, 84,202,181,
137,224,107, 26,204, 41,221, 32,236,164, 53,174, 79,215, 44,226, // 44
74, 40,109, 16,201, 58,131,172, 64,112,152, 55, 31,237, 11,210,
189,124, 86, 32,228, 57,142, 33,100,145, 77,253,139, 89, 30, 60,
234,192,153,107, 72, 39,244,141,197,225,149,186,122,202, 28,106,
215, 85,236, 35,108, 15,160, 84,197, 79, 6,185, 36, 65,239,182,
93,123,210,176, 38,124,187, 9,230, 29, 51,
89, 1,168,234, 95,130,189, 68,141, 14,110,254, 36,157, 99,179, // 45
126,168,213, 52,177,225, 19,246, 36,212, 89,254,182, 98,164, 41,
78,161,217,192,100,176,249, 71,219,188, 28,174, 8,222,149,206,
6, 95, 45,249,165,191, 14,113, 65, 7, 85,247, 35, 95,178,149,
14,192,159, 71,136,206,250, 38,117,238,139, 84,202,150,100,214,
18, 60,141, 88,201, 97,236, 74,121,154,242,
127,197, 45,141, 63,243, 8,122,177,217, 61,187,128, 7,238, 58, // 46
13,252, 85,146,115, 77,153, 93,120,165, 15,141,121, 64,227,115,
246, 58, 1,144, 64,122, 20,164,125, 53,210,111, 64,184,119, 81,
173,125,204, 23,121, 93, 57,228,168,214,139, 57,166,219, 48,252,
66,125, 21,244,172, 62, 95,145,180, 29,211,108,231, 10,130, 72,
163,237, 33,227, 2,157, 51,175,216, 62,187,
19,255, 84,214, 20,170,103,227, 84, 30,149, 88,227, 70,201,146, // 47
188,106, 34,219, 11,242, 51,182,220, 71,193, 49,218, 6,195, 29,
138,182, 96,237, 30,189,210, 96, 4,245, 88,152,238, 43, 20,250,
53,223,147, 66,236,202,156, 31,125, 39,108,203, 15,133, 88,196,
110,231,151, 97, 30,195, 1,227, 54, 88,157, 23, 59,169,246, 45,
203, 98,189,118, 70,209,138, 17, 99, 39,107,
164, 52,155,112,192,133, 41, 59,186,246,116,206, 44,172,114, 37, // 48
76,206,159, 63,179,134,206, 4,139, 39,235,101,149, 87,157,100,
211, 45,128,201,159, 79, 39,226,141,169, 37,201,133, 83,203,140,
103, 15, 88,180, 4,136, 75,254,198, 94,237,151, 79,233, 27,143,
4, 57,203, 46,222,129,158,104,203,124,253,189,119, 81,193,110,
14,150, 53,168,239, 28,110,250,198,144,224,
67,121,229, 31, 69,250,204,156,129, 4, 58,159, 16, 96,247,131, // 49
224, 20,124,235, 97, 33,107, 79,249,111,170, 18,200,250, 50,175,
16,242, 72, 13,110,248,129, 58,198,112, 70, 16,102,226,167, 47,
191,154,232,114, 44,221,104, 21,178, 68, 5,175, 43,106,161,226,
179, 86,136,174,109, 68,247, 28,172, 12, 75, 48,226,143, 31,224,
128,255, 26, 83,134,184, 66,161, 80, 25,192,
239, 5,202, 97,163, 9, 91, 35,231,106,193,240,137,210, 72, 2, // 50
150,180, 89, 47,200,172,229,157, 28,187, 57,129, 74, 27,115,230,
84,145,172,223, 36,152,184, 93, 24,230,175,217,156, 64, 1,122,
240, 72, 33,199,159, 59,187,150, 47,141,210,121,247,188, 74, 35,
113,212, 24,242, 11,188, 48, 81,233,136,215,154, 3,186, 58, 91,
175, 70,194,223, 97, 43,211, 6,229,130, 94,
172,141, 47,182,127,214,115,184, 81,166, 77, 23,111, 51,190,234, // 51
104, 65,250,145, 7, 76,128, 53,201, 90,231,161,219,180,138, 58,
204,119, 49, 91,204, 62, 7,240,120, 45, 84,127, 41,252,185, 90,
25,209,134, 92,249,125, 10,231,115,243, 90, 58, 21,134,208, 58,
250,129, 52,160, 87,138,210,155, 99, 40,182,111, 89,243,120,210,
7,147,116, 16,155,245,118,146, 53,184, 35,
109,218, 83,241, 64, 44,234,139, 15,211, 38,226,181,145, 26,160, // 52
42,192, 26,212,117,244, 20,215,138, 12,120, 46, 3, 86,211, 33,
161, 6,251,178,139,107,210,166,141,196,238, 10,200,106,139,223,
162, 50,179, 13, 69,196, 97,205, 70, 25,194,158,222,100, 8,171,
92,191, 76,221,120,238, 16,114,201, 70, 19,232, 49,169, 23,156,
241, 60,204, 53,188, 31, 78,204,103,252, 69,
134, 22,160, 11,148,199, 25, 75,254,113,154, 97, 56,249, 83,112, // 53
219,132, 99,160, 67,169, 96,179, 69,254,184, 98,238,154,107,244,
76,197,110, 20, 74,231, 32, 85, 17, 56,159, 94,149, 58, 21, 75,
119,246,102,206,142, 31,164, 43,145,174,112, 38, 78,184,238,137,
33,147, 5,199, 37, 65,177, 45,251,162,119,207,143, 79,196,103,
36, 91,230,143,106,233,177, 13,161, 24,209,
63,245,102,216,117, 85,176,152, 53,191, 65,206,122, 8,169,201, // 54
63, 11,230, 36,204, 51,236,115, 35,150, 59,136,192, 62, 21,171,
129, 54,148,223, 42,153,116,198,253,107,187, 26,212,242,170,198,
8, 62,155, 39,239,119,226, 86,239, 1,207,253,147, 48,111, 70,
207,233,113,168, 98,148,229, 88,138, 33,187, 95, 11,253, 46,138,
218,127,167, 9, 73,134, 57,221,129, 92,181,
35,189, 52,169, 66,246,124,224, 3,134,233, 21,178,223,135, 32, // 55
243,144,181, 92,125, 22,143, 77,228,199, 15,220, 38,116,205, 83,
234, 26,207, 80,184,243, 50,170, 70,135,229, 77,123, 34, 99,144,
214,129,223, 80,175, 56, 15,183,105,134, 58, 97, 12,220,161, 17,
175, 40, 62,255, 18,207,118, 9,212, 69,237, 57,176,113,204, 68,
185, 25, 81,252,197, 27,170, 83, 44,235,150,
83,222,137, 29,186, 16, 47, 92,185, 81, 42,148, 89, 40, 71,104, // 56
174, 81, 47,253,152,219,183, 4,165, 89,125, 79,176,250,147, 8,
181, 97,164,126, 2, 94,132, 25,221, 5, 48,154,181, 65,230, 45,
87, 36,185, 11, 96,217,141, 68,213, 32,167,188,119,199, 83,247,
125, 94,189,132, 84,165, 59,194,109,158, 22,132,231, 31,160, 6,
241,112,178, 46,153,218,105,248,194, 15,118,
165, 1, 91,237,107,206,162,217,111,243,173,114,252,188,156,234, // 57
15,127,206, 9, 69,101, 59,208,132, 27,235,156, 24, 93, 57,228,
118, 48,254, 60,218,176,207, 86,158,193, 98,249, 19,205,127,174,
255,150,113,243,166,117,195, 25,156,245, 79,228, 64, 29,144, 52,
213,159, 23,224, 50,240,143, 29,245, 87,216, 99,151, 76,224, 95,
144, 38,224, 94,121, 59, 4,131,156, 69,214,
252,128,201,156, 59,134, 78, 33,142, 24, 55,197, 6, 60,120,199, // 58
54,225, 96,164,193,239,119, 42,249,102,195, 66,224,133,203, 37,
143,196, 18,111,142, 30, 58,247,114, 60,215,118, 83,148, 30,109,
2, 63,200, 27, 74, 44,240, 89,114, 43,143, 22,128,175,223,109,
6, 69,200,100,175, 4, 81,180,129, 40,174, 2,193, 52,129,182,
69,205,157, 14,243,143,210, 39, 98,188, 49,
102, 24, 79, 40,222, 8,253,191, 71,164,229, 94,143,213, 22, 91, // 59
146,183, 28,137, 54, 24,172,148, 74,177, 49,118, 1,169,107,177,
71,237, 85,163,231, 99,167, 11,145, 33,167, 11,191,238, 77,218,
180,232, 99,140,224,151, 5,172,222,190,101,204,248, 94, 39,188,
148,245,118, 39,136,198,106,221, 72,205, 62,251,117,211, 38,247,
20,122, 52,190, 69,175, 87,164,233, 18,143,
173,194,242,115,181, 97,152,119,222, 12,129, 66,238,108,168,241, // 60
36, 66,249,114,217, 81,229, 9,205, 30,154,241,207, 80, 28,218,
11,128,183, 36, 65,200,127,224,185, 89,244,136, 44,169, 54,135,
92, 20,164, 54,109,209, 65,130, 52, 17,161, 59, 7,140, 71,237,
85, 32,171,214, 64,234, 50,151, 12,163, 98,139, 25, 89,162,105,
146,236, 88,220,113, 25,238, 61,121,204, 74,
33,130, 64,165, 26,215, 37, 56, 96,180,207, 42,176, 30, 63,124, // 61
203,106,174, 2,155,195,131, 90,113,222,133, 91, 43,149,250, 97,
158, 49,209,119,246, 20, 86, 42, 65,208,111, 68,220,100, 23,205,
153, 48,193,248, 14,184, 98,251,196, 83,236,121,184,217,160, 14,
127,221, 95, 13,161,123, 27,248,111,216, 35,170,191,230, 9,215,
62,178, 3,151, 44,188,137, 9,178, 42,239,
106,220, 5,231,136, 70,198,166,243, 34,112,154, 84,191,223, 9, // 62
162, 83,227, 48,101, 61, 38,255,183, 71, 16,175,196, 65,131,192,
73,231, 95, 4,172,142,194,241,140, 5,177, 34,150,197,119,244,
71,220,125, 83,135, 42,158, 29,106,140,208, 74, 33,100, 56,205,
175, 63,144,253, 72,191, 93,174, 55,131,236, 78, 44,126, 69,186,
39,102,207,125,247, 92,223,108,216, 89,157,
202, 82,151, 51, 98,247,123, 8,140, 88,217, 1,251,133, 99,147, // 63
245, 21,138,206,168,236,148, 14,162, 52,244,105, 29,214, 7,114,
41,167,136, 69,220,102, 31,116,169, 95,231,127,240, 16, 84,172,
10,108, 31,169,202,237, 81,213,173, 3, 49,158,254,135,227, 25,
106, 41,201,108, 44,231,139, 17,198, 87, 7,206,155,239,107,142,
254,160, 32, 59,169, 15, 69,160, 55,132, 19,
47,175,113,205,161, 20,183, 75,234, 53,178,120, 65, 23,214, 44, // 64
72,189, 64,119, 24, 78,210,122, 95,201,129,159,228, 94,172,237,
202, 22,251,187, 40,160, 75,212, 53, 23,195, 81, 55,182,140, 44,
198,147,243, 76, 50,111, 16,134, 68,244,182,109, 20,194, 84,129,
187,240, 1,169,132, 30,211, 75,241,147,178,103, 62, 15,213, 29,
73,119,233, 82,212,143,195, 37,228,180,253,
126, 13,242, 35, 80,217, 49,114,200,155, 27,229,193,162, 89,179, // 65
126,221, 38,249,179,109, 44,186, 34,232, 4, 74, 50,139, 36, 67,
144, 86,108, 55,129,239, 20,179,255,153,119, 29,212, 98,249, 69,
226, 92,189, 4,227,155,192,221, 40,119, 81,210, 65,151, 40,234,
70,148, 89,225, 79,183,111,162, 45,116, 25,252,134,196, 93,163,
222, 14,189,132, 22,102,235,117, 2, 94, 67,
220,188, 58,129,177,100,144,224, 16, 95,131, 77, 36,116,231, 7, // 66
81,159,100,146, 6,231,142,222, 65,152,114,179,199,253,118,191,
13,209,163,222, 9,196, 83,125, 61,102,226,166,131, 2,161,120,
18,136, 56,166, 85,126, 30, 96,159,232,146, 10,241,117,181, 9,
163, 46,118,198, 24,247, 65, 5,224,190, 77,213, 35,173, 50,130,
199, 56, 92,174,250, 48, 78,170,136,199,159,
104, 78,149,227, 3,254, 31,168, 61,187,244,158,206, 57,144,192, // 67
239, 20,216, 75,198, 54, 93, 12,173, 86,242, 43,104, 10,164, 90,
241,122, 29, 79,143,104,218,148, 6,202, 43, 72,236,196, 41,217,
185, 35,239,105,211, 53,252,174, 14, 57,198, 48,171, 86,216,101,
202,249, 17,145, 54,154,125,177, 94,138, 51,154,109, 71,246, 1,
100,154,228, 40,117,149,190, 60,241, 22, 52,
248, 16,209,108, 60,194,125, 87,234,113, 51, 6,107,255, 29, 99, // 68
48,135,176, 36,127,165,251,116,215,136, 19,208,153, 69,215, 42,
147, 64,184,245,169, 59, 35,174,235, 90,183, 22, 88,117, 61,103,
156, 84,196,140, 20,187, 69,129,218, 86,111,137,221, 29, 54,141,
66,128, 91,219,190, 83,204, 37,242, 17,197,231, 23,209,119,179,
237, 34,129, 74,201, 8,220, 30,108,210,144,
124,184, 37,166, 83,152, 46,203, 11,146,218,172, 83,183,129,167, // 69
206, 63,245,103,208, 71, 41,192, 29, 63,184,125, 91,230, 22,197,
105,229, 47,115, 15,193,249,109, 51,121,155,250,136,176,231, 21,
254,127, 70, 46,230,154,109, 33,183,148,250, 23, 96,157,245,190,
39,226,174, 34,112, 10,231, 57,151,105, 80,127,177, 88,152, 27,
67,210,170, 18,238,104,163,129, 80,172, 41,
94, 56,137,245,205, 21,241,108,174, 70, 25,119,210, 60, 13,227, // 70
89,123, 2,155, 28,225,142, 97,163,220, 79,244, 33,178,137, 77,
171, 4,153,203, 90,133, 73, 25,144,220, 11, 66,209, 43,151, 79,
199, 6,217,169, 97, 12,207,238, 76, 2,190, 70,204,121, 17,112,
166, 4, 70,134,254,165,101,129,211,181,248, 64, 13,235, 51,201,
143,112, 91,188,142, 85, 36,255,196, 5,234,
199,228, 76, 7,104,131,161, 53,224, 96,246,150, 38,237, 75,151, // 71
31,185,214, 88,179,118, 13,235, 44,121, 2,166, 57,106,250, 49,
220,131, 70,233, 27,216,157,230,187, 77,198,113, 27, 99,190,114,
60,149, 37,125,246, 72,139, 43,165,122, 50,236,169, 61,228, 79,
208, 98,235,187, 50, 77,195, 29, 73, 3, 48,170,138,189,115, 86,
226, 21,251, 66, 43,224,185, 58,141, 74,155,
18,110,150,188, 45,213, 85, 26,192,137, 59,195, 94,134,190,109, // 72
249, 68,130, 46,247, 67,203,172, 84,151,228, 93,207,127, 13,192,
102, 25,187, 98,169, 59,113, 1, 98, 34,163,233,142,246, 12,215,
171,241, 89,182, 54,200,105,186, 92,225,150,110, 9,143,185, 32,
132,159, 44,104,152, 14,219,139,233,158,122,225, 99, 35,248, 7,
158, 59,135,204,167,125, 26,102,213,118, 47,
166,215, 30,234,171, 62,232,167,117, 3,213, 31,170, 8,216, 43, // 73
169, 15,223,158, 23,145,101, 55,255, 21,183,136, 24,235,162, 84,
154,241, 62,137,244, 38,205,171,253,133, 58, 84,178, 48, 73,131,
50, 23,116,220, 8,160, 34,253, 18,199, 36, 86,202, 49, 99,252,
59,218, 18,203,242,121,176, 38, 93,194, 82, 24,205, 61,168,122,
191,218, 36,103, 6, 78,241,159, 12,245,191,
130, 58, 80, 99,124, 11,144, 90,243, 76,155,110,251, 56,101,147, // 74
80,199,112, 90,187,213, 8,130,197,108, 50, 75,193, 67, 44,214,
124, 37,200, 9,108,152, 71,122, 49,183,224, 7,121,220,151,237,
100,195,155, 78,134,209,115, 60,140, 68,177,247,128,225,172, 11,
190,122, 86,141, 28, 91, 63,239,118, 45,253,179,145, 90,212, 45,
99, 75,152,234,180,207,135, 54,177, 69, 92,
23,253,193,146,240, 77,185, 24,199, 40,223, 82,126,188,235, 24, // 75
226,133, 61,237, 50,120,227,169, 37,146,212,243,103,141,179, 6,
73,222,163, 83,180,216, 20,235, 91, 23,150,100,203, 30, 85,175,
2,225, 58,249, 24, 85,233,167,214,119, 13,154, 71, 24,118,150,
70,228,170, 56,186,215,164, 6,207,141, 76, 8,114,239, 27,142,
243,176, 29,126, 61, 19,110,233, 33,142,226,
157,115, 9, 53,204, 38,225,102,133,170, 60,181, 17,150, 74,114, // 76
175, 5,160, 33,176, 85, 30, 70,237, 87, 7,155, 39,219,116,254,
151,110, 53,248, 33, 95,140,166,194,214, 70,244,165, 63,197,113,
65,137,183, 41,152,187, 45, 4, 95,240, 82,210, 42,217, 90,242,
44,107, 5,250,110, 37,136,101,180, 33,167,231, 59,158, 79,195,
2, 65,220, 95,253,164, 80,190, 99,207, 46,
88,218,181,155, 94,126,160, 49,253, 11, 99,237, 51,199, 32,207, // 77
53,252,104,217,135,247,162,106,202,122,177, 65,190, 19, 87, 50,
187, 27,141,195,121,223, 54, 10,114, 42,127, 34,136, 12,255,145,
211, 28,120, 90,214,107,135,203,158, 28,193,130,104,159,194, 17,
179,142,205, 81,153,228, 77,244, 60,221, 94,122,202, 19,225,106,
132,156,193, 22,139, 51,223,147, 1,122,183,
17, 61,104, 29,247, 4,209, 71,190,120,153,205,136, 90,244,158, // 78
129, 85,182, 18, 68,113, 2,182, 58, 26,250,100,131,237,159,208,
97,237, 73, 3,161, 69,187,250, 82,160,236,189, 86,178,102, 38,
82,241,163,231, 10, 73,250, 54,124, 64,171, 54,254, 28, 80,128,
232, 92, 32,181, 52, 12,192, 25,125,151, 12,185, 49,129,173, 47,
249, 88, 43,112,210,181, 35, 75,248, 66,229,
172,124,231,189, 75,173,106,146, 21,222, 41, 78, 1,174,105, 67, // 79
13,213, 46,152,193,213, 48,233,132,214,151, 15,200, 76, 37,135,
13,171,206,108,240, 34, 98,138,216, 57, 3,105,215, 49,225,165,
200, 14,105, 61,198,161, 26,177,228, 87,212, 8,146,182,223, 55,
158, 63,244,124,213,145,114,171,212, 42,228, 74,247, 93,208, 73,
23,213,168,240, 8, 99,126,200,157, 39,138,
245, 36,149, 52,130,226, 33,241, 93, 59,167,248,124,226, 26,193, // 80
237,137,110,243, 25,130, 84,153, 95, 36, 72,223, 49,115,179,230,
62,122, 42, 82,147,212,171, 17,121,175,203,139, 67,151, 18,118,
54,150,188, 32,142,115,218, 97, 15,154,110,230, 93, 41,118, 1,
201,115, 15,165, 94, 60,255, 87, 64,111,177,142, 32,162, 9,147,
186,121, 55,138, 73,161,235, 16,111,215, 95,
68,196, 91,207, 14,157, 57,185,127,211,104, 28,197, 57,116,146, // 81
40, 72,186, 92, 55,174,254, 12,206,184,106,168,143,240, 18,103,
211,159,234,185, 23,117, 53,234, 72, 26, 81,228, 31,249,182, 92,
233,128,252, 91,208, 69, 44,139,245, 42,198, 58,137,240,166,216,
97,181,220, 48,231, 30,196, 5,159,240, 19, 96,216,113,240, 84,
228, 98, 31,204,184, 27, 62,178, 80,190, 8,
162,116, 22,255,118, 95,217, 78,152, 7,183,142, 86,160,214, 88, // 82
172,209, 4,145,225,117, 68,160, 42,127,246, 7, 87,196, 67,173,
35, 78, 11,132,255, 78,204,140,193,244,114,164, 96,129, 63,203,
3, 73, 41,166, 9,242,171,196, 72,124,168, 22,185, 67, 24, 83,
148, 22, 76,119,147,175,105,140,204, 50,133,182, 55,193, 65,130,
18,165,255, 83,115,211,142,251, 31,137,221,
28,228,180, 78,168,197, 46, 26,251, 82,225, 42,241, 9, 52,253, // 83
20,106,240, 43,194, 22,216,111,233, 63, 32,202,128, 39,141,251,
116,149,221, 89, 43,167, 5, 93, 42,153, 65,188, 8,211, 34,139,
171,213,111,222,134,101, 35,110, 3,221, 83,250,102,206,133,228,
41,245,160,203, 13, 74,235, 38, 95,224, 70,252, 1,140, 39,217,
183, 63,148, 3,228, 46, 90,120,171, 52, 99,
153, 65,138, 43, 2,141,235,101,163,117, 63,133,178,112,194,125, // 84
148, 68,162,126, 87,169, 50, 79,180,141,216, 76,176,230, 96, 2,
199, 51,171,112,211,135,232,183,125, 14,221, 51,240,156,101,231,
80, 28,148, 51,185, 64,229,162,206,143, 41,129, 7,156, 47,105,
191,127, 52, 96,249, 43,199,128,187, 28,119,152, 83,229,161, 80,
111,210, 40,101,158,181, 18,216, 68,193,243,
48,215,103,239,207, 64,115,185, 14,210,190, 24, 92,221, 73, 33, // 85
231,201, 53,220, 11,243,136,201, 3, 97,163,116, 17, 62,209,167,
71,237, 17,194, 66, 21,107, 73,249,171, 94,142,118, 41,181, 58,
122,193,241, 87, 17,203,123, 23, 56, 97,234,179,213, 80,237,169,
73, 26,221,179,139,110,162, 10, 76,164,210, 22,197,116, 32,244,
10,135,172,245,128, 61,239,146,108, 5,126,
176, 13,189, 84,126,171, 31,224, 76,136, 51,234,150, 13,159,187, // 86
96, 23,115,178,100,155, 35,117,251, 59,225, 41,247,150,113, 25,
129, 99,146, 37,247,151,218, 32, 57,208, 25,195, 72,209, 20,244,
162, 14,104,173,234,153, 81,255,182,151, 15, 60,107, 36,198, 10,
147,204, 82, 3, 59,222, 88,206,242,104, 49,235, 98,177, 61,189,
89,225, 52, 78, 13,192, 95, 27,201,229, 81,
246,112,148, 21, 53,249, 89,149, 40,246,100,171, 67,120,247, 59, // 87
135,166,250, 47,208, 68,225, 84,160, 27,181,132, 89,186, 45,243,
181,211, 82,174,118, 87,191,165,136,104,155, 49,254,102,149, 82,
47,201, 66,133, 49,106, 34,132, 76,222,117,164,247,144,124, 62,
252, 97,137,239,169, 31,148, 61, 27,145,184, 65,138, 17,222,145,
118, 22,186,213,112,227,158, 55,169, 40,144,
26, 63,202,229,157,193, 9,213,116,162, 3,213, 34,197, 91, 39, // 88
209, 2, 76,147, 24,122,180, 19,212,122, 73,207, 6,220, 77,144,
52, 7,235, 61,206, 51, 6, 93,238, 15,228,120,163, 4,190,126,
216,145,251, 1,217,167,196,215, 19, 46,189, 81, 24,184, 93,213,
34,167, 48,116,202, 99,254,189,126,232, 5, 92,248,165, 78, 53,
252,161, 99,147, 28,134, 77,253,124, 99,210,
134,170, 96, 32, 73,131,103,173, 62,201, 73,112,238,133,170,230, // 89
110,181,224, 97,194,245, 57,142, 91,241, 46,150,105,166, 29,205,
108,160,124, 21,147,243,131,211, 61,181, 84, 34,215, 60,237, 28,
97, 37,115,188, 86, 22, 61,147,109,242,135,211, 50,229, 17,160,
120,192,229, 23, 63,131, 8, 80, 40,165,115,194, 37,121,215, 3,
197, 37, 66,241, 48,182, 1,203, 31,184, 77,
219, 46,252,120,218, 43,244, 19,229, 38,145,185, 52, 15, 79, 30, // 90
152, 58,129, 41,166, 6,104,203,169, 13,189,228, 62,246,120, 88,
239, 64,222,179, 84, 31,167,110, 38,125,207,171, 77,143,111,158,
227,179, 71,151,231,127,248, 88,175, 65, 3,101,170,117, 82,244,
71, 6, 90,147,180,217,162,227, 97,211, 52,227,153, 87,184,110,
81,128,171,201, 94,223,105,143, 66,229, 9
,
//
// Yellow
//
28, 84,145,176, 68, 21,101,253, 50,178, 35,225, 7,162, 28,195, // 0
152,115, 55, 4,212, 39, 67,148,110,171, 15,235, 84,225, 10,252,
134, 99,170, 69,224, 90,172, 53,141, 76,132, 7, 97,210,116,241,
96,176, 49,108,243,183, 68,253,139,171, 55, 23,106,223, 20, 89,
153, 42,164,121, 98,168,231,111, 22,124, 66,209,107, 41,130,102,
20, 91,145,189,221, 51,240,151, 31,250, 71,
127,239, 12,204,129,227,155, 6,204, 94,149,124,201, 58,142, 73, // 1
15,173,255,104,126,239, 15,197, 87,253, 51,193, 31,165,107,152,
59,222, 31,119,154, 18,244,112,220,194, 62,227,143, 21,165, 35,
147,226, 16,201,133, 47,158, 98, 18,202, 85,248,189, 46,138,232,
65,247, 3,203, 47,139, 11, 63,217,181,248, 30,148,186,252,158,
215,121,243, 34,108,138, 85,211,172,114,182,
50,158,108, 54, 28,192, 78,126,161, 25,245, 44, 83,222,116,238, // 2
208, 39, 89,197,160, 86,138,228, 30,126,156, 79,136, 93,218, 41,
203, 79,147,248, 60,202, 44, 87,156, 38,108,164, 56,246, 87,190,
80, 64,138, 93, 33,215,126,191, 52,235, 69,122,146, 93,183,116,
33,180,142, 84,235,184, 81,199,134, 85, 52,120,230, 10, 85, 59,
180, 4, 69,154,182, 15,194, 70, 7, 95,224,
206, 78,219,167,249,113, 43,231, 64,213,105,190,164, 21, 65,159, // 3
100,134,224, 63, 23,188,105, 55,180,100,218, 2,246,197, 70,172,
6,112,185, 23, 97,167,119,189, 12,254,185, 26,198,110,132,217,
20,255,195,163,240, 81, 24,226,116,156, 6,177, 38,240, 15,215,
78,127,223, 54, 24,120,251, 32,170, 1,157,204, 97, 67,223, 34,
137,203, 97,223, 41,248,127, 46,237,146, 24,
173, 1,134, 91, 61,146,183, 27,173,121, 10, 71,137,249,183, 3, // 4
56,175, 14,147,245, 43,221,155, 12,203, 59,168, 40,123, 20,243,
132,227, 46,209,133,237, 31,218,137, 69,127, 82,220, 5,176, 42,
156,119, 50, 4,112,180, 66,170, 91, 42,196,227, 80,168, 61,153,
199, 12,106,191,163, 71,149, 98,227, 69,242, 43,141,173,198,100,
236, 54,168,129, 63,100,163,213,120,185, 69,
127, 45,240,196, 14,218,100,245, 91,148,237,202, 33, 90,126,206, // 5
243,108,194, 76,119,171, 79,129,248, 74,140,228, 84,186,149, 49,
94,160, 74,173, 15, 62,150, 99, 52,169,237, 48,155,100, 63,238,
96,184, 75,231,149,211, 14,250,142,217, 98,134, 25,117,223,102,
43,250,145, 89,238, 7,218, 40,125,194,110,184, 16,117, 25,157,
122, 29,244, 20,216,192, 74, 26, 84, 35,254,
189, 83,154,109,172, 52,130, 3,192, 39, 62,174,107,213, 47, 77, // 6
148, 42,233, 31,216, 4,204, 37,110,191, 23,119, 54,237,106,212,
192, 12,253,107,221, 82,197,246, 2,195,111, 18,230,191,127,205,
11,142,202, 27, 57, 96,126, 40, 79, 11,162, 52,254,191, 3,136,
176, 75, 25,211, 50,132,174,203, 63,150, 36, 81,207,246, 52,220,
70,185, 90,151,109, 3,149,235,198,157,101,
39,231, 66, 27,234, 81,201,162, 74,212,132, 20,233,138,170, 27, // 7
189, 82,130,161, 98,143, 66,230,167, 48,156,203, 8,171, 66, 23,
127, 60,148, 43,125,177, 26,117,157, 91,214,143, 83, 29,165, 55,
82,248,100,133,173,239,201,154,188,238,119,206, 69,148, 81,235,
59,203,158,115,184, 80, 28,102,245, 12,232,162, 57,146, 92,192,
6,135,210, 43,174,251, 65,128, 11, 59,211,
16,169,117,205,134, 20,241, 45,119,254,102,160, 78, 11,250,118, // 8
224, 7,206, 59,252,182,118, 28, 99,213, 90,255,135, 83,222,151,
240, 89,208,167, 8,237,141, 70,224, 28, 60,176, 51,240,114,219,
33,157, 47,227, 80, 22, 49,104, 65, 32,174, 18,109,179, 39,209,
18,128, 97,228, 16,255,148, 55,122,186, 84,126,219, 11,114,163,
255,105, 57,229,127, 36,104,176,229,110,140,
82,214, 48,157, 57,181,105,149, 16,179, 30,202, 50,180, 95, 55, // 9
152,107,177, 38, 81, 17,200,151,244, 21, 60,111, 38,193, 29,110,
180, 40,104,227, 80, 58,204, 39,169,104,252,118,205, 8,146, 98,
193,118,209, 8,188,130,167,230,208,146, 91,216, 49,242,134, 91,
162,246, 72, 53,167,108,198,223,166, 46,209, 30, 77,176,236, 32,
79,146,196, 22, 75,186,218, 23, 87,163,247,
182,131, 5,252, 93,218, 86,198,230, 55, 92,232,147,215,127,195, // 10
20,241, 91,215,137,231, 48, 71,127,170,190,147,220,162, 63,230,
3,142,191, 26,129,183, 98,244,132,194, 14,150, 93,188, 62,246,
15,168, 71,146,110,253, 73, 1,124, 41,248,116,161, 8,193,118,
33,186, 4,201,134, 44, 24, 78, 3,108,147,251,191, 43,136, 65,
225, 15,169, 99,239,151, 56,141,193, 31, 51,
73,229,103,176, 36,145, 7,128, 80,168,134,112, 1, 81, 37,227, // 11
82,168,124, 10,161,101,176,220, 1,104,229, 13, 50, 99,209,131,
77,251, 87,160,241, 35,156, 6, 78, 45,214, 66,237,128,171, 43,
79,232, 32,219, 55, 25,199,160, 84,183, 60,198, 70,102,221, 56,
231,140,105,221, 92,240,188,124,244,183, 70, 15,115, 95,205,159,
113,209, 45,136,203, 12, 84,245, 99,206,121,
24,147, 60,204,120,233,172, 59,210, 38,241,181, 61,247,171,142, // 12
42, 64,202, 53,242, 23,131, 83,195, 43,136, 75,249,122, 24,175,
47,200, 14,106, 51,201,115,222,180,107,164, 22, 84, 39,222,120,
183,130, 98,158,192, 85,137,233, 29,220, 11,139,240,153, 22,164,
76, 44,178, 25,157, 60,144, 93,158, 52,217,137,167,232, 2, 55,
182, 89,235, 62,117, 42,181,127, 3,153,238,
188,213, 17,161, 78, 27,104,247, 18,156, 72, 23,198,118, 15,106, // 13
182,254,136,104,185, 76,228, 33,159,245, 96,205,182,153, 70,232,
144,114,169,225,135, 88, 24,142, 63,240,123,218,191,156, 2, 90,
215, 48,248, 9,121,241, 39, 62,107,129,174, 84, 34, 63,188,113,
203,253,120, 74,228, 11,211, 33,232, 19, 81,194, 34, 76,132,250,
36,148, 9,171,253,155,214, 67,223, 82, 42,
110, 90,133,248, 47,215,182,135, 92,201,109,224, 89,155,235,206, // 14
26, 94, 38,218,153, 50,144,207,111, 56,147, 30, 60, 5,192, 96,
19,238, 37, 66,207,175,253, 46,202, 13, 78,143, 58,106,255,163,
20,144,197, 67,167, 78,182,211,159,250, 51,195,216,122,232, 89,
7,147, 36,193,130,172,113, 66,186,133,113,247, 57,212,176, 94,
215,125,191,103, 73, 25,109, 46,186,133,170,
8,227, 40,185, 99,151, 9, 62,229,143, 52,169,132, 44, 82, 63, // 15
141,231,168, 4, 90,250, 15, 71,179, 9,225,170,106,240,125,207,
61,179, 93,155, 1,120, 77,161,100,182, 43,232, 32,204,134, 66,
208, 92,112, 37,226, 25,143, 5, 68, 85, 24,111,161, 15,145, 50,
172,216, 63,239, 83, 52,250,147, 98,221,174, 8,104,146, 19,120,
86, 28,229, 41,218,193,145,238, 18, 74,245,
139,164, 74,122,231, 72,203,124, 37,183, 5,248, 30,215,164, 8, // 16
194,115, 69,211,122,191,106,231,126,196, 80,130,210, 86,156, 33,
110,213,133,246, 50,228, 21,217,126,245,153,114,177, 93, 24,174,
43,244,184,134,206,105,234,122,198,222,136,238, 59, 97,249,197,
101, 20,136,106, 2,183, 24,202, 53, 28, 78,156,229,192, 64,238,
197,153, 75,166,133, 8, 91,172,121,202, 55,
216, 28,204, 11,143, 34,161,255, 78,113,203, 93,119,185,102,246, // 17
90,156, 46,175, 30,150, 44,166, 28, 64,254, 18, 42,185, 67,251,
166, 10, 72,183,107,192,138, 41, 67, 5, 90,207, 18,239,111,224,
76,152, 6, 83, 51,157, 90, 44,164, 17,183, 36,209,177, 68, 28,
123,236,178,210,158,232,131, 92,164,245,207, 38, 90,126, 44,165,
102, 4,248,113, 61,243, 48,214, 31,161, 98,
115,182, 93,244, 57,216, 97, 24,175,236, 59,159,229, 17,137, 41, // 18
218, 19,237, 99,219, 66,242, 95,217,158,105,144,229,119, 16,135,
53,230,121, 26, 62,161, 90,201,169,222,130, 50,164, 64,138,195,
34,121,202,171,241, 13,179,254,110, 64, 85,154,120, 3,140,224,
159, 56, 85, 72, 41,111, 63,219, 6,114,137, 67,173,251, 14,209,
134, 55,189, 31,178,203,142,111, 71,254, 42,
234, 55,128,156,181,118,192, 56,149, 12,133, 37, 85, 73,200,168, // 19
120, 74,189,131, 10,142,199, 20,133, 36,191, 56,162, 91,196,221,
102,192,154,240,205, 10,245,116, 77, 34,187,249, 79,214, 4,163,
98,233, 27, 58,141, 79,204, 27,146,192,232, 46,243,100,184, 86,
37,202, 24,252,146,193, 33,149,182, 48,195, 18,218, 98,149, 72,
233, 95,216,131, 72,102, 17,225,148, 1,169,
88, 13,223, 38, 68, 4,230,127,213, 92,224,194,166,252, 26, 60, // 20
210,151, 48,253, 78,181,113, 60,175,244, 79,212, 10,245, 44,151,
23, 81, 36, 99,132, 86,149, 19,232,144,105, 15,150,124, 56,252,
72,135,210,109,218, 36,132, 84,224, 8,131, 74,189, 39,216,117,
243,138,174,121, 12,226, 94,243, 71,105,235,152,117, 53,194, 31,
176, 39,158, 13,235,161, 57,180, 94,199,124,
212,142,195,108,250, 87,159, 21, 68,181,113, 50, 6,144,115,237, // 21
100, 2,173,118, 39,231, 88,207, 7,110, 45,139,103,178, 68,117,
181,212, 58,220,179, 37,208,176, 66,206, 47,180,224,101,194, 36,
176, 10,161, 89,183,246, 61,176, 49, 98,211,165, 16,147, 72,170,
7, 63,101,216, 66,170,132, 18,209,171, 24, 69,204, 1,229,126,
106,254, 86,112,186, 28,249,121, 37,237, 60,
166, 98, 27,175,136,200,100,242, 41,151,236, 72,207, 94,186, 35, // 22
137,229, 69,201,145, 17,165,127,223,152,196,231, 32,125,218, 8,
249,133,167, 5,117,255, 91,110, 25,122,242, 83, 61, 23,154,218,
110,242, 65, 38,122, 1,147,207,124,248, 37,114,202,253, 52,108,
193,224, 22,187, 84, 51,199,114, 44,135, 94,248,138,171, 86,161,
18,192,138,209, 51,148, 86,189, 70,154, 29,
246, 53,225, 77, 14, 47,171,124,207, 79, 14,169,124,228, 51,160, // 23
86,180, 23,104,220, 61,249, 42, 93, 26, 65,167, 90,192,153, 83,
49,107, 75,228, 62,142, 43,234,151,196, 5,136,166,239,130, 78,
52,144,193,230,168, 99,226, 69, 18,170,146, 61, 94,136, 20,235,
149, 91,159,131,236, 8,152,255, 76,220,194, 58, 36,105,242, 62,
218, 45, 73, 3,226,104,205,136, 15,197,118,
5,181,121,156,237,212, 67, 33,179,111,139,247, 30, 67,196, 11, // 24
213,123,247, 49,170,123, 82,159,189,241,126, 1,253, 56, 27,234,
170,201, 28,154,195, 15,165,203, 58, 93,176, 53,203, 94, 11,181,
211, 17, 88,133, 22,190, 44,112,197, 87,236, 4,219,181, 87,127,
31, 54,250, 35,112,209, 95, 37,168, 6,153,119,184,210, 28,133,
103,180,241,159,124, 62, 22,234,109,221, 77,
141,209, 62, 35, 96,118,150,250, 19,221, 42,181, 84,146,111,242, // 25
97, 41,157, 76,196, 4,205, 32,112,145, 76,214,107,141,205,119,
13,140,246,102, 88,239, 71,126, 29,226,114,248, 34,121,229, 43,
152,115,220, 54,248, 79,155,240,139, 32,182,119,154, 38,211,170,
222,117,198, 87,169, 57,184,133,226,108, 50,236, 12, 88,152,195,
10,144, 87, 31,178,246,150, 76,174, 48,163,
33,102,254,190,168, 2,197, 88,142, 58, 99,213, 7,233,164, 53, // 26
141,207, 12,235,106,140,224, 73,233, 16,198,155, 38,181, 62, 91,
224, 68, 43,172,130, 40,215, 99,186,148, 19, 75,156,192, 67, 99,
253, 33,184,104,147, 34,212, 9, 63,227, 93, 49,232, 70,107, 17,
62,181, 1,145,217, 26,234, 66, 21,203, 80,176,128,219, 41,249,
58,228,110,201, 53, 97, 33,209, 10, 85,235,
57,126, 18,138, 70,231, 52,109,234,191,160,131, 64,202, 91, 17, // 27
189, 64,115,173, 33, 89,166, 53,177,102, 44, 70,220, 11,246,135,
186,107,217, 2,230,182,143, 9,244, 49,208,130,222, 2,171,135,
199, 71,161, 5,202,121,179,102,128,161,207,144, 11,191,160,240,
141, 99,228, 55,125, 97,151,114,175,129,244, 27, 63,162,111, 90,
126,173, 23,222,129,193,162,119,250,132,188,
226,160,197, 92,214, 32,132,172, 10, 80, 25,254,108, 35,180,122, // 28
250,154,220, 46,198,254,116, 22,204,125,248,172,128,101,162, 20,
54,148,198,121, 60, 26, 79,170,117, 70,182, 91, 51,105,238, 59,
16,127,240, 91,231, 70, 47,254,194, 16, 57,114,250, 81,130, 39,
201, 68,159, 23,239,186, 10,250, 43, 69,157,105,202,233, 13,188,
215, 51,146, 71, 5,239, 43, 65,179, 26, 79,
6, 67,237, 48,120,184,239, 71,217,121,209, 48,171,140,227, 46, // 29
97, 25, 80,143, 73, 11,153,236, 86,158, 7, 84,234, 49,196, 88,
240, 37, 74,161, 98,251,202, 45,212,142, 13,252,151,205, 26,145,
225, 81, 46,188,137, 17,162, 94, 38, 82,221,180, 30, 52,228, 95,
11,253,107,175, 82, 62,208, 91,190,222, 2,184, 46,133, 72,151,
34, 85,255,182, 83,148,113,226, 96,151,211,
177,103,140, 11,159, 96, 18,153, 39,185,149, 73,236, 4, 71,212, // 30
135,194,238,113,212,181, 59,135, 33,222, 56,187, 21,150,217,114,
173,208, 18,227,187,124,150,102, 28,230,111,172, 34,124,187, 91,
175,211,152, 29,108,220,198,143,230,171,126, 96,146,199,169,119,
184,134, 41,213,141, 29,161,131, 32,112,145, 89,252, 26,195,115,
234,163, 19,109,219, 36,172, 14,200, 41,120,
251, 33,207,182,244, 60,197,112,247, 97, 16,116,199, 98,165, 20, // 31
177, 52, 8,168, 30,106,219, 96,195,107,143,210,117, 75, 32, 58,
132, 93,144, 83, 58, 7, 87,241,175, 74, 48,208, 83, 64,243, 44,
111, 9, 66,250,178, 74, 52,105, 19, 67,246, 11,215, 88, 18, 66,
219, 57,198, 5,246,111,231, 59,170,242, 53,207,152, 98,218, 5,
76,203, 60,131,199, 74,236, 57,137,222, 86,
145,111, 54, 90, 23,135,222, 46,143, 65,225,176, 27,138,249,116, // 32
86,226,125, 65,244, 44,157, 3,174,251, 64, 35,175,247,166,224,
14,254,193, 42,238,179,215, 20,128,200,145, 6,227,136, 15,158,
228,132,171, 91,126, 2,244,129,211,152, 39,187, 54,130,248,147,
26,163, 88,122, 66,172, 97, 8,215, 82, 28,125, 64,176, 48,160,
123, 37,241,177, 9,152,123,194,102,165, 21,
188,230,152,215,114,165, 74,182, 3,200,157, 59,231, 87, 45,208, // 33
158, 99,199,145,184,123,228, 55, 80, 21,130,228, 88, 4,137, 87,
180,108, 27,166,117,139, 54,161, 93, 56,247,116,163,190,100,199,
86, 31,207, 39,223,154,189, 45,178, 89,121,162,229,107,175, 74,
236,101,225,148,191, 42,206,147,118,190,159,238, 10,224,108,237,
193,144,105, 89, 53,250, 29, 81, 1,238, 62,
35, 80, 8,177, 40,251, 31,108,235, 80,121, 34,106,150,186, 26, // 34
68,241, 42, 77, 13, 89,190,133,237,164,103,190,152,106,199, 46,
126,213, 77,226, 93, 30,198,112,228, 32,170, 87, 25, 70,255, 49,
144,238,110,188, 60,102, 30, 77,237, 9,218, 47, 86, 3,205, 44,
124,181, 22, 49,241, 14, 88,255, 50, 19, 76,199, 90,143, 22, 61,
81, 27,225,165,211,111,180,227,133,200,115,
245,135,221, 65,127, 94,203,169,132, 26,253,180,212, 9,243,113, // 35
141, 1,161,205,252,110, 22,208, 97, 39,218, 17, 51,243, 24,233,
157, 7, 50,152,205, 68,251, 4,183,132,213,106,205, 42,113,170,
4, 95,160, 13,146,233,197,160,114,144,100,193,150,240, 98,158,
14,209, 84,168,112,140,196,107,177,228,129, 35,113,184,208,157,
253,178, 57, 19,128, 44, 75,158, 38, 71,153,
175, 41,109,192,236,154, 10, 63,215, 54,151, 89,128, 75,167, 57, // 36
230,185,117, 28,135,176, 47,153, 60,181,137, 75,206,119,177, 70,
101,187,247,114, 15,168,100,149, 48, 82, 20,241,144,180,225,129,
215,195, 54,251, 89,118, 16, 56,203, 24,255, 40,126, 30,185, 58,
246,138, 69,235, 57,220, 77, 24,143, 70,211,172,246, 67, 38,118,
12,134,108,201,152,233, 11,187, 95,214, 15,
206, 83,164, 47, 20, 78,229,148,104,190, 14,201, 45,221, 29,205, // 37
93, 51,223, 85,212, 75,235,119,223, 5,254, 86,161, 61,144, 36,
219, 86,139, 57,229,131,190, 65,232,199,160, 75, 11, 95, 32, 59,
79, 23,134,184, 65,213,137,244, 83,163, 68,177,214, 73,119,219,
104, 30,201,122, 20,178, 40,165,234, 4,103, 51, 14,135,233, 96,
216,192, 88,245, 63, 85,206,138,254,112, 60,
131, 4,246,143,214,184,123, 49,244, 69,115,239,164,105,154,126, // 38
174, 18,150, 64, 35,144, 12,194, 73,109,171, 38,220, 21,235,197,
113,167, 18,199, 83, 31,243, 13, 95,115, 37,188,132,237,158,187,
244,106,222, 30,156, 45,175,105, 35,229,135, 97, 21,237,166, 8,
151,187, 51,156,210, 92,243,113, 50,193,139,161,215, 88,177,148,
76, 34,165, 8,182, 30,120, 56, 19,157,235,
103,178, 67,117, 57, 98, 32,202, 23,172,143, 81, 33,230, 5, 73, // 39
254,105,233,169,191,248,100,165, 27,201,131, 68,185, 99,129, 1,
51,240, 76,160,216, 50,121,164,221,140,252, 56,209, 65,116, 10,
141,174, 87,120,242, 92, 12,217,187, 58, 4,203,149, 51, 92,207,
63, 94,253, 1,110,145, 63,199,130, 89,251, 62,116,194, 56, 2,
248, 61,219,141,105,239,150,226, 78,184, 34,
149,221,199, 37,171,249,132,162, 91,215, 9,189, 60,137,185, 50, // 40
198, 40,131, 7,112, 66, 39,127,242, 49,226, 10,147,249, 78,178,
137,194, 30,130,101,181, 90,205, 44, 81, 1,161,100, 27,203,227,
71, 41,204, 2,179,206,115,150, 79,130,168,247,114,194,140, 34,
230,129,167, 75,228, 28,172, 38,225, 29,168, 17,236, 36,105,204,
156, 97,122, 49,207, 79,176, 43,116,203, 91,
52, 18, 83,139,216, 5, 69,234,112, 55,252,118,214, 96,240,122, // 41
157, 81,212, 93,201,158,218,180, 89,151, 78,191,116, 44,209, 66,
233, 97, 58,255, 5,226,136, 19,152,184,217,125,239,177, 89, 37,
129,253,155, 69,140, 34, 65,249, 25,227, 85, 44, 74, 11,240,178,
115, 22,215, 45,192,122,249, 81,150,109,219, 82,126,173,223,132,
39,183,228, 22,159, 61, 5,211,142, 13,229,
127,252,164, 25,102,186,147, 19,197,141, 39,158, 23,169, 77, 12, // 42
228, 26,172,245, 21,137, 52, 2,114,215, 22,239, 91,174, 24,160,
14,123,166,203,149, 45, 73,214, 61,112, 34, 75, 18,147,119,196,
165, 94, 25,235, 99,226,125,165, 60,198, 17,185,222,132, 98, 46,
67,199,142,101,160, 17, 57,201, 12,179, 52,203,155, 24, 54, 80,
239, 15,147, 88,253,190,133, 90,244, 69,170,
105, 64,209,117,242, 89, 45,224, 81,180,102,206, 66,221, 42,184, // 43
107, 63,136, 40, 75,229, 97,249,189, 41,129,156, 34,223,140,104,
213,183, 35, 69,109,237,167, 85,242,195,158,228,200, 62,244, 5,
54,207,116,185, 53,175, 8,205,104,153,127,100,159, 32,212,169,
246, 89, 9,237, 70,217,138,113,235, 88,140, 4, 71,255,191,116,
165, 69,197,113, 31,103,224, 38,154, 29,194,
1,144, 40,176, 54,203,168,124, 27, 59,239, 2,148,106,131,250, // 44
149,214,189,114,160,183,123, 60,161, 74,210,103,181, 64, 87,245,
49, 81,239,140, 17,189, 34,142, 7, 53, 97,137, 45, 84,170,107,
223, 74,151, 14,213,144, 83, 47,231, 33,217, 55,252, 67,142, 13,
119,154,187,126, 39,178, 90,163, 36,191,244,117,212, 95,143, 9,
203, 45,134,230,161, 55,178,113,200, 93,232,
76,185,225, 80,152, 25, 95,251,156,202,121, 77,186,237, 17, 78, // 45
55, 4, 91,219, 57, 10,207, 32,133,237, 13, 53,252, 6,196,121,
154, 9,196, 84,223,125, 97,217,179,128,253, 11,187,225, 22,142,
176, 42,242,127, 67, 32,252,186,139, 87,179, 3,196,114,187, 78,
223, 34, 63,208,107,243, 5,221, 56,105, 28,167, 43,176, 37,217,
98,247, 79, 3,212, 77, 26,249, 59,124,160,
241, 30,122, 13,238,136,213, 6,110, 37,168,222, 28, 93,140,197, // 46
166,233,125, 24,254, 89,150,222, 83,173,113,203,138,109,171, 27,
229,102,170, 38,159, 54,247, 67, 24,209, 75,168,109,134, 51,251,
96, 19,188,101,223,170,115, 95, 13,243,124, 95,148, 23,234, 47,
171,103,255,165, 21,148, 72,186,129,155,225, 73,133,230, 64,121,
160, 29,183,104,144,193,131,164, 9,216, 43,
108, 86,202,160,103, 41, 67,187, 88,243, 66,136, 49,172,213, 31, // 47
114, 41,204,173,134,190,107, 18, 63,196, 35,159, 68,224, 55,211,
73,129,252, 68,210, 12,173,115,154, 85, 40,229, 27,213, 86,195,
124,217, 77,159, 3, 74,204,152, 66,164, 42,207,240, 62, 85,145,
197, 2,138, 45, 96,200,117, 27,252, 85, 15,200,101, 22,184,239,
73,140,219, 43,240, 16, 96,231, 75,144,197,
172,135,255, 50,192,230,166,131,208,149, 10,198,110,235, 59, 97, // 48
247,148, 71,101, 36, 65,231,160,248,140, 94,237, 19, 85,162,136,
43,204, 19,117,145,101,202, 35,231,195,124, 67,148, 97,158, 29,
67,151, 48,245,129, 43,234, 28,196,223, 78, 20,165,129,210, 29,
122,214, 75,179,238, 54,216,173, 68,208, 50,175,248,152, 94, 36,
201, 13,118,171, 68,123,205, 31,184,100, 22,
224, 68, 5, 94,120, 29, 84, 15, 58,116,231, 79,154, 18,129,191, // 49
9,178, 49,242,161,206, 26,121, 52, 5,216,128,186, 47,246, 2,
183, 86,168,220, 56,241, 72,127, 58, 7,173,247,190, 12,226,177,
238, 10,197,108,211,178, 97,134, 53,111,141,189,104, 46,175,249,
59,101,232, 19,122,156, 36,105, 7,161,139,109, 68, 3,222,114,
164, 61,253, 89,215, 38,156, 55,133,245, 59,
116,190,145,177,214,149,250,175,220, 37,165, 27,253, 71,163,228, // 50
76,133,216,119, 1,136, 91,178,209, 79,175, 61,105,209,122, 96,
230,148,101, 34,188, 4,158,185,244,140, 92, 32, 61,128,105, 43,
137, 90,172, 21, 57,146, 13,241,170, 9,254, 54,231, 6, 89,154,
16,189,141, 51,196, 78,225,127,238, 92,218, 41,198,136,174, 48,
209,101,151, 22,136,185,249,111,212, 12,154,
26, 45,234, 59, 17, 79, 49,128,102,190, 92,214,125,187, 45,109, // 51
24,199, 35, 81,184,225, 40,245,113,153, 34,255, 14,156, 37,201,
58, 17,245,138, 84,232,109, 25, 76,206,110,219,165,237,197, 74,
212,112,250, 83,224, 78,204,116, 69,209, 83,155,120,216,195,106,
229, 73,170,112,251, 10,142,201, 48,178, 19,123,234, 35, 74,243,
131, 7,224,178, 53, 95, 2, 73,170, 94,199,
80,208,102,129,242,180,205, 24,229, 63,146, 44, 99, 9,219,142, // 52
249,102,171,238, 54,109,166, 76, 12,196, 85,139,180,224, 81,144,
178,125,197, 41,177, 62,145,223, 48,163, 12,144, 43, 84, 1,156,
24,147, 33,128,180, 29,161, 39,182,135, 35,187, 27, 72,143, 47,
128, 37,222, 25, 62,182, 95, 29, 73,146,250, 79,157, 99,189, 28,
84,192, 43,113,235,199,125,232, 36,131,240,
139,173, 23,163, 68,108,139, 87,160, 7,241,181,139,200, 86,167, // 53
67, 45,149, 12,138,217, 22,141,231, 49,220, 66,115, 59, 22,249,
101, 49, 75,214,118, 21,203, 95,182,123,255, 79,202,123,179,243,
62,221,167, 68,233,109,213, 99,245, 59,225, 99,240,172, 14,245,
163,201, 91,149,207,115,160,244,189,114, 59,183, 9,211,115,162,
231,141, 76,164, 62, 32,154,194, 65,181, 52,
106,251, 50,223, 2,213, 45,237,105,203,118, 27, 68,245,111, 15, // 54
225,185,116,196, 69, 92,200, 58,180,120,162, 3,238,194,136,207,
8,233,153, 13,248,168,130, 36,236, 22, 58,177, 31,233, 53,115,
193, 98, 48,198, 3,151, 55, 16,157,118, 5,139, 52,124,211, 98,
64, 7,116,234, 72, 16,219, 81, 1,214, 37,226,142, 45,255, 15,
56,211, 21,248,131,219,100, 23,117,226, 6,
152, 72,198,134, 95,150,192, 19,174, 42, 87,224,153, 47,176,132, // 55
38, 76,215, 30,254,170,116,241, 97, 21,204, 88,151, 32,111, 88,
165,128,191,109, 91, 52,222, 71,148, 91,159,224, 93,148, 17, 76,
139, 11,238,135, 93,253,122,221, 76,188,216,166,200, 89, 37,182,
230,141,188, 30,174,140, 44,123,149,168, 96,121, 69,179, 90,151,
79,117,182, 93, 8,175, 86,254,146, 76,213,
192, 19,116,174, 42,247,121, 78,141,254,124,191, 3,216, 92,200, // 56
246,147,100, 60,144, 4, 48,154, 39,136,251,108,177, 51,230,182,
29, 82, 57,227,143,199, 2,117,187,208,114, 6,126,214,175,252,
163,216,116,181, 42,166, 64,194, 31,102, 46, 77, 24,252,144,108,
46, 81,248, 51,104,241,186, 71,233, 27,190,238, 23,218,127,206,
174, 32,229,151,204,114, 44,206, 15,169, 42,
96,238, 54,227, 80, 28,178, 60,200, 15,158, 64,107,137, 29, 59, // 57
112, 7,173,234,121,192,218, 72,228,186, 53, 25,221, 81,146, 63,
201,254, 38,169, 28, 85,164,249, 20, 62,239, 72,198, 47,107, 64,
23, 84, 35, 72,204, 22,229,135,163,247,129,229,113,163, 3,209,
173, 18,159,129,214, 87, 20,208, 51, 84,137, 54,163, 95, 11, 49,
242,140, 55, 77, 39,233,159,130,104,242,125,
61,141,201, 12,153,214,104,227, 47, 94,211, 37,243,168,223,192, // 58
158,225, 45,201, 20, 88,106,172, 11, 77,163,133,201, 17,243,123,
4,155,106,213, 68,234,131, 47, 85,179, 37,144,168, 26,232,124,
210,191,155,246,130,103, 80, 8, 58,184, 13,152, 41,192, 71,127,
226,102,200, 72, 6,165,120,145,175,242, 6,210,110,248,181, 74,
109, 3,213,124,182, 13, 67,191, 75, 31,184,
17,170,111, 92,188,130, 5,146,170,237,110,183, 84, 16,120, 78, // 59
23, 95,134, 69,162,247, 26,129,203,120,238, 60,102,161, 45, 96,
222, 86,194,127, 10,186, 74,220,155,122,211,103,249, 91,184, 55,
139,100, 50, 11,218,176,150,240,117, 93,211, 72,221, 97,241, 49,
24,150, 57,228,185,100,249, 35, 96,116,193, 70,148, 29,134,225,
165,195, 99,251,147,102,239, 46,214,153,227,
73,247, 33,233, 67, 41,251, 74, 38,131, 9,145, 67,230,153, 47, // 60
253,176,214,108, 40,185,148,233, 46, 99,211, 6,188,130,210,176,
143, 32, 56,236,150,111, 21,200, 32,235, 10, 53,135, 14,152,222,
19,239,166,121, 76, 25,211, 38,196,156, 25,132,175, 22,141,184,
87,255,117, 43,134, 27,203, 58,219, 19,157, 41,223, 77,204, 36,
59,143, 75, 24, 53,198,134,167, 2, 92,118,
190, 53,157,120,206,174, 99,187,220, 82,202,250, 40,198, 98,184, // 61
124, 64, 9,142,228, 96, 55, 80,188, 21,154, 82,250, 30, 77, 14,
247,120,171, 94, 40,252,174,137,104, 69,150,196, 73,209,112, 41,
78,200, 62,226,193, 53,109,134, 70,232, 50,251,115, 65,212,108,
162,203, 11,167,238, 70,158, 81,186,125,254, 94,173, 21,103,125,
246, 17,210,176,231, 84, 29,108,250,143,210,
14,138,218, 7, 60,147, 32,125, 20,154, 50,114,172,132, 6,208, // 62
34,161,242,189, 23,126,207, 30,167,240,129, 54,172,118,218, 61,
101,200, 22,217,188, 63, 84, 53,244,187,115,228,169, 49,243,182,
156,118, 5,140, 96,159,255,185, 1,104,167, 87,199, 10,237, 52,
32,132, 83,212, 96,192, 4,234,139, 30, 52,197,132,234,163,188,
90,159,117, 47,155, 63,221,175, 66, 36, 80,
177,103, 87,167,243,112,230,197, 66,236,188, 90, 31,216, 59, 82, // 63
226,111, 92, 48, 72,174,255,141,112, 91,202, 33,230, 95,187,153,
226, 48,147,125, 3,157,228, 13,167, 46, 25, 90, 1,144, 87, 17,
97,250,187, 46,236, 14, 89, 45,221,144,207, 41,138,173, 98,151,
192,234, 61, 23,147,123, 53,107,179, 85,230,109, 2, 80, 58, 12,
223, 39,235, 93, 5,201,121, 19,195,159,234,
117,255, 23,201, 41, 88, 10,157,101,134, 2,227,143,103,239,156, // 64
134, 20,199,148,219,100, 14, 57,220, 4, 66,164,142, 16, 44,124,
10,177, 83,246,109, 87,206,140, 94,218,155,252,123,192,232,131,
205, 27, 68,168,115,213,135,174,117, 64, 18,242,107, 30,206, 86,
2,104,179,243, 68,200,251,155, 16,204, 61,144,179,246,121,200,
139, 67,183,125,253,103,148,242, 97,127, 46,
72,185, 60,144,121,182,210, 54,242, 40,180, 64,165, 18,183, 38, // 65
62,175,231, 1,115,163,196, 82,157,190,244, 99,208, 80,254,196,
74,236, 57,196, 43,177,119, 35,190,128, 63,204,102, 40, 72,174,
43,149,233, 92, 21,188, 73, 27,236,187, 92,158,195, 72,249,121,
221,145, 35,119,161, 14, 42, 94,220, 78,167, 28,207, 40,157, 30,
107,210, 24,162,189, 71, 30, 56,206, 7,222,
33,151,216, 95,229, 28,138,110,168, 80,211,127,247, 75,116,205, // 66
251, 88,125, 54,245, 63, 36,236,116, 45,135, 21,123,172, 60,141,
109,160, 23,129,223, 17,244, 61,234, 7, 84, 26,164,222, 13,109,
216, 76,118,210,142, 44,245,154,101, 47,230,120, 7,145, 38,163,
75,193, 58,210, 90,227,139,181,120, 45,249,124, 96, 66,221, 76,
244,153, 85, 61, 13,220,156,180, 81,139,173,
242,124, 2, 48,159, 75,251, 35,218, 17,111, 56, 34,197,145, 7, // 67
105,154, 31,191,137, 93,213,145, 18,181, 73,230, 47,218, 1,226,
29,208, 98,171, 70,150, 90,166,108,158,226,188, 56,147,125,239,
57,191, 3,178, 65,219,122, 6,180,139, 31,206, 56,227,185, 59,
16,246,134, 20,173,111, 62,239, 23,188,146, 8,236,189,134,175,
6, 48,236,143,198, 92,126,230, 36,215,103,
51,202,101,236,190, 17,173, 84,133,195,158,229,171, 99,222, 49, // 68
178,211, 69,227,169, 16,183,106, 67,252,148,191,108,155, 91,175,
66,135,234, 6,193,110,212, 20,198, 45,134,103,247, 79,203, 40,
163,133,253, 37,109,169, 92,200, 67,214, 79,174, 85,132,106,208,
95,166, 78,232, 49,214, 4,160, 82,228, 69,110,161, 57, 21, 97,
204,122,178,102, 42,242, 20,112, 65,160, 18,
82,170,140, 65,128,104,205, 61,231, 46, 92, 9,128, 26, 66,244, // 69
82,130, 11,108, 44,123,240, 31,208,121, 8, 79, 25,199,124,247,
39,182, 88, 51,247, 31,136, 55,255, 76, 16,171, 49, 8,179,101,
23, 86, 98,151,235, 16, 59,251,126, 19,241,152, 12,254, 30,149,
228,113, 41,188,120,153,101,196,131, 55,170,209, 36,225,120,255,
155, 64, 24,219,132,169, 54,193,250,130,190,
58,248, 12,211, 43,239,149, 4,119,184,149,255,212,180,121,155, // 70
22,218,162,253,199, 78,157, 52,167, 92,225,164,243, 65, 33,152,
78,211,122,167,145, 65,224,170,113,150,229,197,118,216,135,245,
172,220,195, 49,207,130,187, 36, 98,145, 57,111,197, 68,178, 53,
7,194,142, 17,239, 65, 32,252, 40,217, 21, 94,139, 76,180, 43,
83,234,188, 80, 1,207, 87,150, 8, 95,226,
23,111,160, 91,183, 30, 86,169,241, 27, 77, 41,105, 87,206, 42, // 71
192,103, 74, 51,142, 5,226,104,193, 61,138, 44,128,209,113,223,
11,106,238, 18,197,118, 78, 3,190, 92, 26, 67,157, 90, 31, 64,
111, 9,138, 76, 26,100,150,216,168,227,185, 35,221, 97,136,212,
81,248, 68,174, 94,202,166,113, 88,185,119,247,190, 9,147,207,
17,131, 40,152,251,105,125,217, 52,177,122,
220,198, 48,233,146,115,215, 98, 56,210,135,195,163, 15,236, 69, // 72
141,231, 29,186,100,213,131, 28,248, 14,214,181, 80, 6,173, 54,
189,155, 60, 83, 42,211,160,235, 43,215,131,245, 46,224,190,148,
234, 57,184,246,167,231, 12, 77, 49, 2, 82,122,154, 15,240,120,
169, 33,123,224, 50,138, 15,221,143, 8,157, 45, 70,230, 85,114,
226,174,100,195, 71, 34,185, 25,239, 78,155,
70,136, 99, 19, 61,252, 13,197,159,114, 7,234, 58,128,172,112, // 73
3,169,123,241,159, 42, 70,179,149, 94,115, 31,240,149, 87,254,
133, 36,206,173,250, 95, 28,137, 72,175,105,165, 5,128, 96, 18,
201,125, 82, 41,119, 64,189,116,243,133,205,237, 51,188, 66, 26,
99,205,154, 1,110,245, 74,190, 62,239,102,215,127,170, 34,194,
71, 50,239, 15,140,226,162, 67,133,195, 40,
3,187,226,169,125,178, 47,137, 34,247, 95,153, 80,216, 32,249, // 74
90,209, 62, 12, 79,200,238,111, 47,229,166,204, 63,107,200, 28,
99,230, 87,129, 16,146,189,103,248, 13, 61,205, 77,183,249, 52,
165, 35,225,155,206, 33,142,210, 92,173, 64, 20,162, 85,209,147,
232, 41, 82,185,210, 37,175,100, 40,202, 31,178, 13, 63,251,158,
6,150,118,210, 59,114, 93,208, 13,109,254,
162,113, 32, 77,208,103, 79,223, 72,172, 41,223, 18,193, 55,145, // 75
195, 36,150,217,119, 34,142, 17,195, 71, 9,141, 38,224,162,123,
182, 3,164,106,214, 51,228, 58,122,195,143,232, 32,156,116, 87,
217,102,137, 3, 92,254, 72, 21,150, 35,194,110,130,251, 5,106,
177, 60,253,133, 62,152,120,227,161,123, 88,142,235,101,133, 77,
221, 88,171, 34,181,242, 52,148,234,174, 83,
217, 47,245,135, 6,237,151,191, 16,130,186,110,140, 94,175,120, // 76
68,108,244, 88,188,167, 95,226,158, 85,252,117,189, 84, 13, 65,
242, 50,222, 64,186, 80, 6,171,218, 25, 94, 48,103,219, 11,145,
186, 24,242,197,169,113,183,220, 54,247, 97,220,176, 73, 48,194,
128, 19,169,103, 12,240, 30, 69, 5,254,190, 50,200, 38,207, 23,
186,106,249, 73,146, 4,199, 29, 74, 44,142,
68,195,153, 55,186, 65, 33,108,243, 89,209, 51,253, 37,220, 8, // 77
231,167, 25,136, 16,250, 49,126, 58,214, 24,160, 51,236,135,205,
83,144,116, 20,152,235,130,100, 42,150,182,254,132,192, 67,238,
48,129, 65, 84, 48,146, 10,106,166,127, 7, 66, 25,215,155,235,
77,213, 89,223,196, 86,184,216,151,105, 22, 72,157,112,168,232,
58,138, 12,208,123, 96,167,119,221,190, 20,
128,104, 18,222, 94,139,213,174, 47,158, 2, 72,164,200,103,155, // 78
47,197, 63,206,111, 71,210, 7,184,138,109,204, 74,179, 36,165,
19,210,181,247, 40, 90,163,204,240, 86,118, 1,166, 85, 30,171,
98,206,159, 19,233,203, 70,231, 78,205,154,238,135, 90,108, 14,
40,159,119, 27,138,163,104,132, 46,179,208,127,241, 3, 68,126,
33,163,191, 64,232, 39,250, 86,138,100,247,
160,231, 75,166,117,253, 11, 80,128,219,112,232,125, 22, 70,241, // 79
122, 90,143,228, 40,177,147,103,241, 46, 89,245, 1,122, 93,250,
112, 67, 34, 96,125,194, 68, 50, 15,188,214, 58, 77,210,233,137,
6,252,113,178,124, 34,135,186, 25, 45,114,190, 49,174,206,145,
241,184, 49,246, 80, 42,237, 16, 82,244, 53, 97,217, 83,192,246,
99,223, 82, 26,154,184, 60,210, 14,178, 52,
5,183, 42,202, 27, 60,153,198, 36,177, 93,152, 46,188,146, 13, // 80
204, 37,185, 4,125,234, 88,199, 31,153,176, 38,146,225,196, 45,
140,233,169,145,221, 12,245,140,102,156, 31,235,145, 40,119, 71,
190, 83, 45,215, 95,243, 56,157,251, 85,218, 75, 29,249, 57,117,
66, 84,141,193, 4,208, 62,189,140,161, 10,173,135, 35,151, 15,
180, 40,132,200,104, 17,115,156, 45,228, 81,
243,125,100,140,229,180,109,225, 70,248, 21,206, 80,246,108,225, // 81
169,101,255, 79,165, 56, 17,133, 70,226,115,192, 83, 54,157, 16,
187, 88, 4, 64,179, 44,120,172,228, 86,130,107,199,179, 16,164,
227, 29,155, 71, 7,192,106, 17,124,173, 9,164,140,101, 2,193,
217, 16,232, 98,173,130,107,227, 29,115,231, 69,195, 60,215,112,
143, 66,255, 88,217,137,239, 90,204,120,149,
189, 54,210, 11, 74, 39, 91,124, 6,139, 57,171, 28,135, 43, 77, // 82
29,129,158, 46,219,108,243,171,207, 10, 61,238, 25,208,116, 76,
227,128,202,255,110, 88,217, 19, 54,177,247, 10, 55, 93,249, 60,
141,115,204,236,127,166,220, 75,196, 51,232,118,198,227,168,136,
46,163,119, 34, 56,251, 70,166, 51,207, 95, 25,252,102,169, 47,
237,187, 1,166, 38, 56,193, 7,169, 24, 64,
93, 29,167,249,152,200,239,162,189,212,110,237, 85,219,164,191, // 83
215, 68, 11,205,137,187, 41, 89,107,144,168, 97,134,175,248, 57,
172,106, 48, 26,136,199,153, 79,193, 35, 95,162,224,146,112,207,
20, 94,178, 49, 25, 82,142, 35,240,148, 93, 59, 19, 79, 39, 94,
253, 70,213,143,205,153, 24,219, 81,147,186,128,156, 6,230, 88,
29, 95,116,141,232,176, 77,129,252,105,216,
131,235,114, 89,128, 16, 81, 34, 65, 92,155, 10,194, 73, 16, 97, // 84
146,242,178, 84, 25, 73,151,222, 27,253, 44,213, 7, 80, 33,148,
13,216, 81,163,236, 8, 65,245,119,219,139,204, 28, 72,182, 50,
168,244, 65,146,190,255, 59,170,108, 14,212,180,242,131,211,187,
114, 22,177, 76, 12,100,193,116, 2,246, 33, 87,219, 51,118,202,
162,220,194, 69, 27,106,220, 33,150, 52,174,
205, 2, 63,196, 55,173,208,138,252, 23,221,125, 52,143,251,123, // 85
26, 53,114,229,128,249, 2,193,123, 71,179,112,155,234,196, 94,
240,138,191, 58,103,180, 38, 99,160, 3, 83, 47,123,238, 6,220,
89,131, 9,222,101,123, 4,224,189, 46,137,106, 32,157, 62, 9,
155,222, 44,245,123,232, 53,175,135,201, 59,174,106,191,150, 14,
131, 56, 19,247,162,126, 58,191, 83,227, 39,
73,142,164,225, 36,235,109, 50,171,100,187, 37,171,202, 61,218, // 86
174,206, 76,164, 39,173,111, 54,157,209, 21,227, 64, 41,118,179,
48,113, 32,230,130,212,143,224,187, 72,251,195,166, 91,153,119,
35,212,159, 75, 36,202,155, 92,129, 71,250,162, 69,220,104,241,
129, 86,103,149,182, 28, 74,223, 38, 92,126,233, 22, 66,250, 77,
235,107,147, 92,209, 13,243,159, 9,122,162,
111,255, 26,100,137, 75,153, 3,225,127, 73,244,110, 81, 1,107, // 87
47,137, 9,221, 63,199, 87,233, 31, 96,133, 82,185,136,222, 5,
70,213,169, 14, 75, 44, 85, 17,126, 32,144,103, 14,205, 61,253,
186, 55,110,246,178, 65,241, 22,215, 30,201, 89, 15,193, 47,181,
27,169,208, 5, 83,205,152,107,166,241, 13,158,208,137, 33,186,
42,171,225, 48,186, 72,139,102,198,241, 30,
215, 87,183,212, 11,194,243, 83,201, 53,160, 14,207,154,233,188, // 88
159,247, 99,123,152, 21,214,139,181,243,165, 9,249, 28, 98,165,
244,150, 96,201,252,162,193,242, 57,217,183, 53,233,130, 24,101,
164, 21,194,134, 15,104,141, 53,181,146,103,177,234,113,147, 78,
229, 57,115,241, 50,129,255, 9, 64,190,110, 52, 81,172, 96,117,
213, 79, 6,121,155, 39,232, 26, 80, 56,179,
8,136, 56,118,159, 60, 33,117,167, 21,214,138, 65, 43,129, 35, // 89
70, 22,196, 42,243, 95,119, 8, 82, 39,112,204, 55,150,212, 76,
123, 40, 62,141,104, 31, 71,149,105,163, 86,118, 36,177,222,142,
69,236, 82, 58,217,166,225,122, 77,239, 1, 61,131, 37,253, 8,
127,185, 30,143,180, 68, 96,196,136, 37,221,133,244, 3,226,151,
29,132,200,254,101,206,118,183,223,149,103,
167,224, 38,245, 96,216,183,139, 71,236,112, 89,181,251,104,217, // 90
93,228,140,179, 75,162,189,236, 55,213,140, 70,177,120, 50,185,
21,198,236, 1,187,126,212, 9,234, 26,200,248,158, 73, 46,194,
2,125,210,154, 32, 85, 8,197, 38,114,217,156,202, 73,165,199,
101,216, 74,232, 19,211, 40,156,237, 82,165, 20,179, 74,198, 54,
237,176, 61, 22, 77,166, 10, 73,128, 44,205
};
CONST BYTE Cluster2x2[] = { 1, 2 };
CONST BYTE Cluster4x4[] = { 7, 1, 2, 5,
6, 3, 4, 8 };
CONST BYTE Cluster6x6[] = { 12, 9, 6, 7, 10, 14,
17, 5, 1, 2, 15, 18,
11, 8, 3, 4, 13, 16 };
CONST BYTE Cluster8x8[] = { 28, 18, 14, 5, 9, 16, 19, 21,
29, 27, 1, 2, 6, 10, 22, 32,
30, 26, 3, 4, 7, 11, 23, 31,
25, 20, 13, 8, 12, 15, 17, 24 };
CONST BYTE Cluster10x10[] = { 36, 28, 25, 21, 10, 11, 22, 26, 30, 38,
45, 37, 20, 9, 1, 2, 12, 31, 42, 46,
50, 41, 19, 8, 3, 4, 5, 40, 47, 49,
43, 35, 18, 16, 7, 6, 13, 33, 44, 48,
34, 27, 24, 17, 15, 14, 23, 29, 32, 39 };
CONST BYTE Cluster12x12[] = {
50, 48, 39, 36, 32, 24, 13, 25, 33, 37, 41, 49,
67, 59, 47, 31, 23, 12, 5, 14, 26, 42, 57, 61,
70, 68, 53, 22, 11, 1, 2, 6, 15, 56, 62, 69,
71, 64, 54, 21, 10, 3, 4, 7, 16, 55, 65, 72,
63, 58, 44, 30, 20, 9, 8, 17, 27, 45, 60, 66,
52, 43, 40, 35, 29, 19, 18, 28, 34, 38, 46, 51 };
CONST BYTE Cluster14x14[] = {
76, 68, 58, 53, 48, 38, 23, 22, 37, 43, 47, 50, 54, 62,
88, 82, 73, 59, 39, 24, 15, 14, 21, 36, 42, 55, 70, 78,
94, 92, 83, 69, 25, 16, 12, 5, 13, 20, 35, 63, 79, 90,
98, 97, 86, 74, 26, 11, 1, 2, 6, 19, 34, 75, 87, 95,
96, 91, 81, 64, 27, 10, 3, 4, 7, 18, 33, 66, 84, 93,
89, 80, 72, 56, 44, 28, 9, 8, 17, 32, 41, 60, 71, 85,
77, 65, 57, 52, 49, 45, 29, 30, 31, 40, 46, 51, 61, 67 };
CONST BYTE Cluster16x16[] = {
93, 82, 74, 67, 64, 60, 52, 33, 34, 35, 53, 61, 65, 69, 77, 94,
110,102, 87, 73, 59, 51, 32, 24, 13, 25, 36, 54, 70, 85, 97,105,
122,115,101, 81, 50, 31, 23, 12, 5, 14, 26, 37, 78, 98,113,117,
127,121,109, 91, 49, 22, 11, 1, 2, 6, 15, 38, 89,106,118,125,
128,119,107, 92, 48, 21, 10, 3, 4, 7, 16, 39, 90,111,123,126,
120,114, 99, 79, 47, 30, 20, 9, 8, 17, 27, 40, 83,103,116,124,
108,100, 86, 71, 58, 46, 29, 19, 18, 28, 41, 55, 75, 88,104,112,
95, 80, 72, 66, 63, 57, 45, 44, 43, 42, 56, 62, 68, 76, 84, 96 };
#define REAL_PAT_CX(x) ((x) + ((PAT_CX_ADD / (x)) * (x)))
#define FINAL_PAT_CX(x) (REAL_PAT_CX(x) + PAT_CX_ADD)
#define PAT_DATA(x,y,p) (x), (y), sizeof(p), (p)
CONST STDHTPAT DefStdHTPat[HTPAT_SIZE_MAX_INDEX / 2] = {
{ PAT_DATA( 2, 2, Cluster2x2) },
{ PAT_DATA( 4, 4, Cluster4x4) },
{ PAT_DATA( 6, 6, Cluster6x6) },
{ PAT_DATA( 8, 8, Cluster8x8) },
{ PAT_DATA( 10, 10, Cluster10x10) },
{ PAT_DATA( 12, 12, Cluster12x12) },
{ PAT_DATA( 14, 14, Cluster14x14) },
{ PAT_DATA( 16, 16, Cluster16x16) },
{ PAT_DATA(HTSC_M_CX, HTSC_M_CY, HTSC_SUPERCELL_M) }
};
const MONOPATRATIO MonoPatRatio[] = {
{ 2680, 2589 }, // 15 degree
{ 5774, 5000 }, // 30 degree
{ 10000, 7071 }, // 45 degree
{ 17321, 8660 }, // 60 degree
{ 37321, 9659 } // 75 degree
};
#if DBG
VOID
DbgShowThresholds(
LPBYTE pTitle,
LPWORD pwPat,
UINT cx,
UINT cy
)
/*++
Routine Description:
This is a debug functions which show all the HTCELL Infomation
Arguments:
pHTCell - HTCELL to be displayed
Return Value:
VOID
Author:
01-Feb-1995 Wed 14:24:45 created -by- Daniel Chou (danielc)
Revision History:
--*/
{
//
// Output some information
//
DBGP_IF(DBGP_SHOW_HTCELL,
{
LPBYTE pbBuf;
BYTE Buf[1024];
UINT xLoop;
UINT yLoop;
UINT cData;
UINT cRow;
DBGP("\n*** %hs ****\n\n%ldx%ld=%ld\n\n"
ARGPTR(pTitle)
ARGDW(cx) ARGDW(cy)
ARGDW(cx * cy));
yLoop = (UINT)cy;
while (yLoop--) {
xLoop = (UINT)cx;
pbBuf = Buf;
cData = 0;
cRow = 0;
while (xLoop--) {
pbBuf += sprintf(pbBuf, "%04lx:%04lx:%04lx ",
(DWORD)pwPat[0],
(DWORD)pwPat[1],
(DWORD)pwPat[2]);
pwPat += 3;
if ((pbBuf >= &Buf[250]) || (xLoop == 0)) {
DBGP(Buf);
pbBuf = Buf;
cData = 0;
++cRow;
}
}
if (cRow > 1) {
DBGP("");
}
}
}
)
}
#endif
VOID
HTENTRY
RotateHTPatXY(
LPWORD pPatSrc,
LPWORD pPatDst,
UINT cx,
UINT cy,
UINT cyNext,
UINT x,
UINT y
)
/*++
Routine Description:
Arguments:
Return Value:
Author:
19-May-1998 Tue 18:45:03 created -by- Daniel Chou (danielc)
Revision History:
--*/
{
LPWORD pwS;
LPWORD pwD;
UINT cbCX;
UINT cCX;
UINT cCY;
cCY = cy;
(LPBYTE)pPatSrc += ((y * cyNext) + x) * SIZE_PER_PAT;
cyNext *= SIZE_PER_PAT;
cbCX = cx * SIZE_PER_PAT;
DBGP_IF(DBGP_SHOW_HTCELL,
DBGP("RotatePatXY: %p --> %p, %ld x %ld, Offset=(%ld, %ld)"
ARGPTR(pPatSrc) ARGPTR(pPatDst) ARGDW(cx) ARGDW(cy)
ARGDW(x) ARGDW(y)));
while (cCY--) {
pwS = pPatSrc;
(LPBYTE)pPatSrc += cyNext;
pwD = pPatDst;
(LPBYTE)pPatDst += cyNext;
cCX = cx - x;
while (cCX--) {
*pwD = *pwS;
pwS += COUNT_PER_PAT;
pwD += COUNT_PER_PAT;
}
(LPBYTE)pwS -= cbCX;
cCX = x;
while (cCX--) {
*pwD = *pwS;
pwS += COUNT_PER_PAT;
pwD += COUNT_PER_PAT;
}
if (++y == cy) {
y = 0;
(LPBYTE)pPatSrc -= (cy * cyNext);
}
}
}
VOID
HTENTRY
RotateHTPat45(
LPBYTE pPatSrc,
LPWORD pPatDst,
UINT cx,
UINT cy,
UINT cMax,
UINT cyNext,
BOOL SplitThreshold
)
/*++
Routine Description:
This function rotate the pattern 45 degree by copy first top half
and exchange left/right
Arguments:
pHTCell - Pointer to the cell to be rotated
Return Value:
VOID
Author:
07-Mar-1995 Tue 17:45:09 created -by- Daniel Chou (danielc)
Revision History:
--*/
{
LPWORD pPatDst1;
LPWORD pPatDst2;
UINT xLoop;
UINT yLoop;
UINT cxHalf;
UINT cAdd;
UINT PatSrc;
UINT cbCX;
UINT cbDst2Off;
WORD wPat;
ASSERT((cx & 0x01) == 0);
ASSERT((cy & 0x01) == 0);
cAdd = cMax;
cMax <<= 1;
yLoop = (UINT)(cy >> 1);
cxHalf = (UINT)(cx >> 1);
cbDst2Off = (((yLoop * cyNext) + cxHalf) * SIZE_PER_PAT);
cyNext *= SIZE_PER_PAT;
cbCX = cx * SIZE_PER_PAT;
while (yLoop--) {
//
// for each scan line, we need to swap first half of the bytes
// with second half of the bytes, this will make the halftone
// pattern as 45 degree angle.
//
pPatDst1 = pPatDst;
pPatDst2 = (LPWORD)((LPBYTE)pPatDst1 + cbDst2Off);
(LPBYTE)pPatDst += cyNext;
xLoop = cx;
while (xLoop--) {
//
// Make range from 1 to MAX_PAT_IDX
//
PatSrc = (UINT)((((UINT)*pPatSrc++ << 1) * MAX_BGR_IDX) + cAdd);
*pPatDst1 =
wPat = (WORD)(PatSrc / cMax);
*pPatDst2 = (WORD)((SplitThreshold) ?
((PatSrc - MAX_BGR_IDX) / cMax) : wPat);
pPatDst1 += COUNT_PER_PAT;
pPatDst2 += COUNT_PER_PAT;
if (xLoop == cxHalf) {
(LPBYTE)pPatDst2 -= cbCX;
}
}
}
}
VOID
HTENTRY
ExpandHTPatX(
LPWORD pwSrc,
UINT cx,
UINT cy,
UINT cxExp
)
/*++
Routine Description:
Arguments:
Return Value:
Author:
25-Nov-1998 Wed 11:06:43 created -by- Daniel Chou (danielc)
Revision History:
--*/
{
cx *= SIZE_PER_PAT;
cxExp *= SIZE_PER_PAT;
if (cxExp > cx) {
while (cy--) {
LPWORD pwD;
UINT cbCopy;
UINT cbRem;
pwD = (LPWORD)((LPBYTE)pwSrc + cx);
cbRem = cxExp - cx;
cbCopy = 0;
while (cbRem -= cbCopy) {
cbCopy = (cbRem > cx) ? cx : cbRem;
CopyMemory(pwD, pwSrc, cbCopy);
(LPBYTE)pwD += cbCopy;
}
(LPBYTE)pwSrc += cxExp;
}
}
}
INT
__cdecl
SCDataCompare(
const void *pA,
const void *pB
)
{
return((INT)(((PSCDATA)pA)->Value) - (INT)(((PSCDATA)pB)->Value));
}
BOOL
GenerateWORDPat(
LPBYTE pPatR,
LPBYTE pPatG,
LPBYTE pPatB,
LPWORD pwDst,
UINT cxReal,
UINT cx,
UINT cy
)
/*++
Routine Description:
Arguments:
Return Value:
Author:
27-Aug-1998 Thu 17:17:13 created -by- Daniel Chou (danielc)
Revision History:
--*/
{
LPBYTE ppSrc[3];
LPBYTE pbAlloc;
LPWORD pw;
UINT cxAdd;
DWORD Count;
ppSrc[0] = pPatB;
ppSrc[1] = pPatG;
ppSrc[2] = pPatR;
//
// Since the cx is add one to the real cx so sub on now
//
cxAdd = cx - cxReal;
Count = cxReal * cy;
if (pbAlloc = (LPBYTE)HTAllocMem(NULL,
HTMEM_pSCData,
LPTR,
Count * sizeof(SCDATA))) {
PSCDATA pSC;
LPBYTE pb;
UINT iPat;
UINT jPat;
DWORD i;
DWORD j;
UINT x;
UINT y;
WORD Idx;
DWORD MaxV;
DWORD VAdd;
BYTE PreV;
for (iPat = 0; iPat < 3; iPat++) {
pSC = (PSCDATA)pbAlloc;
i = iPat;
pb = ppSrc[iPat];
y = cy;
while (y--) {
x = cxReal;
while (x--) {
(pSC )->Value = *pb++;
(pSC++)->Index = (WORD)i;
i += COUNT_PER_PAT;
}
i += (COUNT_PER_PAT * cxAdd);
}
pSC = (PSCDATA)pbAlloc;
qsort((LPVOID)pSC, Count, sizeof(SCDATA), SCDataCompare);
Idx = 0;
MaxV = (DWORD)pSC[Count - 1].Value;
VAdd = MaxV >> 1;
PreV = 0;
i = Count;
while (i--) {
if (pSC->Value != PreV) {
PreV = pSC->Value;
Idx = (WORD)((((DWORD)PreV * MAX_BGR_IDX) + VAdd) / MaxV);
}
pwDst[(pSC++)->Index] = Idx;
}
ASSERT(Idx == MAX_BGR_IDX);
}
//
// Now copy the last one from the first pixel
//
ExpandHTPatX(pwDst, cxReal, cy, cx);
HTFreeMem(pbAlloc);
return(TRUE);
}
return(FALSE);
}
BOOL
Generate_HTSC_WORD(
PHTCELL pHTCell
)
/*++
Routine Description:
Arguments:
Return Value:
Author:
27-Aug-1998 Thu 17:17:13 created -by- Daniel Chou (danielc)
Revision History:
--*/
{
LPWORD pwPat;
LPBYTE pbC;
LPBYTE pbM;
LPBYTE pbY;
PSTDHTPAT pStdHTPat;
DWORD dw;
HTCELL HTCell;
UINT RotX;
UINT RotY;
if (pHTCell->HTPatIdx >= HTPAT_SIZE_USER) {
ASSERT(pHTCell->HTPatIdx < HTPAT_SIZE_USER);
return(FALSE);
}
ACQUIRE_HTMUTEX(HTGlobal.HTMutexCDCI);
if (!(pHTCell->pThresholds = (LPBYTE)ppwHTPat[pHTCell->HTPatIdx])) {
HTCell = *pHTCell;
if ((dw = (DWORD)HTCell.HTPatIdx) > 9) {
dw += 'A' - '9' - 1;
}
dw = (dw << 24) + HTMEM_pHTPat;
pStdHTPat = (PSTDHTPAT)&DefStdHTPat[HTCell.HTPatIdx >> 1];
pbC = (LPBYTE)pStdHTPat->pbSrcPat;
DBGP_IF(DBGP_GEN_PAT,
DBGP("Allocating %ld bytes for HTPatIdx=%ld, %ldx%ld, cxOrg=%ld, cxReal=%ld"
ARGDW(HTCell.Size)
ARGDW(HTCell.HTPatIdx)
ARGDW(HTCell.Width) ARGDW(HTCell.Height)
ARGDW(HTCell.cxOrg) ARGDW(HTCell.cxReal)));
if (pwPat = (LPWORD)HTAllocMem(NULL, dw, LPTR, HTCell.Size)) {
if (HTCell.HTPatIdx <= HTPAT_SIZE_16x16_M) {
//
// The first pattern to make is M/G, the second C/R and third is Y/B
// and the pattern order in the pattern is BGR or YMC
// so we need to make in offset of 1, 2, 0
//
dw = (DWORD)HTCell.cxOrg;
ASSERT((dw * (HTCell.Height/2)) == (DWORD)pStdHTPat->cbSrcPat);
RotateHTPat45(pbC,
pwPat + 1,
(UINT)dw,
(UINT)HTCell.Height,
(UINT)pStdHTPat->cbSrcPat,
(UINT)HTCell.Width,
TRUE);
#if DBG
DbgShowThresholds("RotateHTPat45",
pwPat,
HTCell.Width,
HTCell.Height);
#endif
RotX = (UINT)((HTCell.HTPatIdx & 0x01) ? (dw >> 1) : 0);
RotY = 0;
RotateHTPatXY((LPWORD)pwPat + 1,
(LPWORD)pwPat + 2,
(UINT)dw,
(UINT)HTCell.Height,
(UINT)HTCell.Width,
RotX,
RotY);
#if DBG
DbgShowThresholds("RotateHTPatXY 1",
pwPat,
HTCell.Width,
HTCell.Height);
#endif
if (HTCell.HTPatIdx & 0x01) {
RotX = (UINT)(dw >> 2);
RotY = (UINT)(HTCell.Height >> 2);
} else {
RotX =
RotY = 0;
}
RotateHTPatXY((LPWORD)pwPat + 1,
(LPWORD)pwPat + 0,
(UINT)dw,
(UINT)HTCell.Height,
(UINT)HTCell.Width,
RotX,
RotY);
#if DBG
DbgShowThresholds("RotateHTPatXY 2",
pwPat,
HTCell.Width,
HTCell.Height);
#endif
ExpandHTPatX(pwPat,
(UINT)dw,
(UINT)HTCell.Height,
(UINT)HTCell.Width);
#if DBG
DbgShowThresholds("ExpandHTPatX",
pwPat,
HTCell.Width,
HTCell.Height);
#endif
} else {
if (HTCell.HTPatIdx == HTPAT_SIZE_SUPERCELL) {
pbC =
pbM =
pbY = (LPBYTE)pbC + HTSC_M_OFFSET_M;
} else {
pbY = (LPBYTE)pbC + HTSC_M_OFFSET_Y;
pbM = (LPBYTE)pbC + HTSC_M_OFFSET_M;
pbC = (LPBYTE)pbC + HTSC_M_OFFSET_C;
}
ASSERT(HTCell.cxReal == HTCell.cxOrg);
if (!(GenerateWORDPat(pbC,
pbM,
pbY,
pwPat,
HTCell.cxOrg,
HTCell.Width,
HTCell.Height))) {
HTFreeMem(pwPat);
pwPat = NULL;
}
}
}
ppwHTPat[HTCell.HTPatIdx] = pwPat;
pHTCell->pThresholds = (LPBYTE)pwPat;
}
RELEASE_HTMUTEX(HTGlobal.HTMutexCDCI);
return((pHTCell->pThresholds) ? TRUE : FALSE);
}
LONG
HTENTRY
ComputeHTCell(
WORD HTPatternIndex,
PHALFTONEPATTERN pHalftonePattern,
PDEVICECOLORINFO pDCI
)
/*++
Routine Description:
This function creates the halftone threshold pattern and places them in
to supplied buffer.
Arguments:
HTPatternIndex - index to the internal halftone pattern, if this
number is not 0xffff.
pHalftonePattern - pointer to user's halftone pattern
pDCI - pointer to the DEVICECOLORINFO data structure. This
structure describes the required halftone pattern.
Return Value:
The return value is the size of the pattern copied or a zero
to indicate failure.
Author:
21-Jan-1991 Mon 12:47:48 created -by- Daniel Chou (danielc)
30-Mar-1995 Thu 13:56:45 updated -by- Daniel Chou (danielc)
Adding new brush regression
22-Oct-1997 Wed 20:01:53 updated -by- Daniel Chou (danielc)
Remove Regression but using computation in the HTMapClr.c
Revision History:
--*/
{
LPBYTE pPatSrc;
LPBYTE pPatABC[3];
PATINFO PatInfo;
DWORD Checksum;
DWORD cbPat;
DWORD dw;
DWORD DCIFlags;
ZeroMemory(&PatInfo, sizeof(PATINFO));
if (HTPatternIndex > HTPAT_SIZE_MAX_INDEX) {
return(HTERR_INVALID_HTPATTERN_INDEX);
}
PatInfo.HTCell.HTPatIdx = (BYTE)HTPatternIndex;
//
// Setup basic PatInfo information
//
if (pDCI) {
DCIFlags = pDCI->Flags & ~(DCIF_CLUSTER_HTCELL |
DCIF_SUPERCELL |
DCIF_SUPERCELL_M);
}
if (HTPatternIndex == HTPAT_SIZE_USER) {
if ((!pHalftonePattern) ||
(pHalftonePattern->cbSize != sizeof(HALFTONEPATTERN))) {
return(HTERR_INVALID_HALFTONE_PATTERN);
}
pPatABC[0] = pHalftonePattern->pHTPatA;
pPatABC[1] = pHalftonePattern->pHTPatB;
pPatABC[2] = pHalftonePattern->pHTPatC;
PatInfo.HTCell.cxOrg = (WORD)pHalftonePattern->Width;
PatInfo.HTCell.Height = (WORD)pHalftonePattern->Height;
cbPat = (DWORD)PatInfo.HTCell.cxOrg *
(DWORD)PatInfo.HTCell.Height;
if (!(pPatSrc = pPatABC[0])) {
if (!(pPatSrc = pPatABC[1])) {
if (!(pPatSrc = pPatABC[2])) {
return(HTERR_INVALID_HALFTONE_PATTERN);
}
}
}
if ((!pPatABC[0]) || (!pPatABC[1]) || (!pPatABC[2])) {
pPatABC[0] =
pPatABC[1] =
pPatABC[2] = pPatSrc;
dw = (DWORD)'Usr1';
} else {
if ((pPatABC[0] == pPatABC[1]) && (pPatABC[0] == pPatABC[2])) {
dw = (DWORD)'Usr2';
} else {
dw = (DWORD)'Usr3';
}
if (!pPatABC[0]) {
pPatABC[0] = pPatSrc;
}
if (!pPatABC[1]) {
pPatABC[1] = pPatSrc;
}
if (!pPatABC[2]) {
pPatABC[2] = pPatSrc;
}
}
Checksum = ComputeChecksum((LPBYTE)&HTPatternIndex,
dw,
sizeof(HTPatternIndex));
Checksum = ComputeChecksum((LPBYTE)pPatSrc, Checksum, cbPat);
if (dw == (DWORD)'Usr3') {
Checksum = ComputeChecksum((LPBYTE)pPatABC[1], Checksum, cbPat);
Checksum = ComputeChecksum((LPBYTE)pPatABC[2], Checksum, cbPat);
}
} else {
Checksum = ComputeChecksum((LPBYTE)&HTPatternIndex,
'HTSC',
sizeof(HTPatternIndex));
if (HTPatternIndex == HTPAT_SIZE_SUPERCELL) {
DCIFlags |= DCIF_SUPERCELL;
} else if (HTPatternIndex == HTPAT_SIZE_SUPERCELL_M) {
DCIFlags |= DCIF_SUPERCELL_M;
}
HTPatternIndex >>= 1;
PatInfo.HTCell.cxOrg = (WORD)DefStdHTPat[HTPatternIndex].cx;
PatInfo.HTCell.Height = (WORD)DefStdHTPat[HTPatternIndex].cy;
PatInfo.HTCell.Flags = HTCF_STATIC_PTHRESHOLDS;
}
PatInfo.HTCell.cxReal = (WORD)REAL_PAT_CX(PatInfo.HTCell.cxOrg);
PatInfo.HTCell.Width = (WORD)FINAL_PAT_CX(PatInfo.HTCell.cxOrg);
PatInfo.HTCell.Size = (DWORD)PatInfo.HTCell.Width *
(DWORD)PatInfo.HTCell.Height * SIZE_PER_PAT;
DBGP_IF((DBGP_CACHE_PAT | DBGP_GEN_PAT),
DBGP("HTCell(%3ldx%3ld): pDCI=%p, Idx=%2ld, cxOrg=%3ld, cxReal=%3ld, Size=%ld"
ARGDW(PatInfo.HTCell.Width) ARGDW(PatInfo.HTCell.Height)
ARGPTR(pDCI) ARGDW(PatInfo.HTCell.HTPatIdx)
ARGDW(PatInfo.HTCell.cxOrg) ARGDW(PatInfo.HTCell.cxReal)
ARGDW(PatInfo.HTCell.Size)));
ASSERT(PatInfo.HTCell.cxReal > PAT_CX_ADD);
//
// Add width by one because we want to be able to do two pixel at end, and
// pattern always in 3 plane mode
//
if (!pDCI) {
//
// Return checksum if pDCI passed is NULL
//
return(ComputeChecksum((LPBYTE)&PatInfo, Checksum, sizeof(PATINFO)));
}
//
// Allocate the memory for the pattern buffer which we will stored the
// final halftone pattern for this device.
//
if (PatInfo.HTCell.Flags & HTCF_STATIC_PTHRESHOLDS) {
PatInfo.HTCell.pThresholds = NULL;
} else {
if (!(PatInfo.HTCell.pThresholds =
(LPBYTE)HTAllocMem(pDCI,
HTMEM_pThresholds,
NONZEROLPTR,
PatInfo.HTCell.Size))) {
return(HTERR_INSUFFICIENT_MEMORY);
}
if (!(GenerateWORDPat(pPatABC[0],
pPatABC[1],
pPatABC[2],
(LPWORD)PatInfo.HTCell.pThresholds,
(UINT)PatInfo.HTCell.cxOrg,
(UINT)PatInfo.HTCell.Width,
(UINT)PatInfo.HTCell.Height))) {
HTFreeMem(PatInfo.HTCell.pThresholds);
return(HTERR_INSUFFICIENT_MEMORY);
}
}
pDCI->Flags = DCIFlags;
pDCI->HTCell = PatInfo.HTCell;
return(PatInfo.HTCell.Size);
}
VOID
HTENTRY
DrawCornerLine(
LPBYTE pPattern,
WORD cxPels,
WORD cyPels,
WORD BytesPerScanLine,
WORD LineWidthPels,
BOOL FlipY
)
/*++
Routine Description:
This function draw a line from lower left corner to the upper right
corner, to draw a line from upper left corner to the lower right corner
just set the FlipY to true.
This is the modified integer DDA algorithm which the line always symmetry,
it make the line look less starsteps, if need to draw line from specified
(x1, y1) to (x2, y2) then this function can be modified whih only changed
to the startingt/end points for calculating the ErrorInc/ErrorDec/Error
and Length parameters.
Origin X, Y - at first pel of last scan line and the X moving to
the right and Y moving to the top.
Color - only black/white where white=0, and black=1
Arguments:
pPattern - The pointer to the buffer, it must already initialize
to all zero and must have the size in bytes of
BytesPerScanLine * cyPels
cxPels - The width in pels of the visible area in the pattern.
cyPels - The height of the pattern buffer in scan line.
BytesPerScanLine - Total bytes of one scan line.
LineWidthPels - The line width in pels which will be draw into the
pattern buffer, (pen width).
FlipY - If true then the final pattern will be up-side-down
Return Value:
No return value
Author:
24-May-1991 Fri 22:30:43 created -by- Daniel Chou (danielc)
Revision History:
20-Sep-1991 Fri 18:14:28 updated -by- Daniel Chou (danielc)
Updated so it only using interger operation only (fast) and plus
modified DDA so it will symmetric for better line constant brightness,
the parameters for this call is reduced by assuming that the line
is always drawing from corner to corner only.
--*/
{
LPBYTE pCurPat;
INT NextScanLine;
INT x;
INT y;
INT xLast;
INT yLast;
INT MinPels;
INT TotalPels;
INT xyInc[2];
INT Error;
INT ErrorInc;
INT ErrorDec;
INT Length;
BYTE DestMask;
BYTE DestByte;
ASSERT((LineWidthPels) && (LineWidthPels <= cxPels));
if (!LineWidthPels) {
return;
}
if ((cxPels == 1) || (cyPels == 1) || (LineWidthPels >= cxPels)) {
FillMemory(pPattern, BytesPerScanLine * cyPels, 0xff);
return;
}
if (FlipY) {
//
// Flip the Y, draw from top/left, it located at first line
//
NextScanLine = (INT)BytesPerScanLine;
} else {
//
// no Y flip so we have to draw from the lower left corner, and its
// buffer location is at last scan line
//
pPattern += ((LONG)BytesPerScanLine * (LONG)(cyPels - 1));
NextScanLine = -(INT)BytesPerScanLine;
}
//
// Calculate the X/Y increment and initial error values, remember we must
// always truncate the XInc/YInc values. how this works is that we keep a
// fixed floating point version of the error terms (15-bit fixed point
// value, one unit of fixed value is 0.000031) and has bit 15 (ie. 0x8000)
// as the overrun indicator, if after the X/Y increment and this bit is
// set then X/Y will need to increment by 1.
//
// At first we initialize the X/Y error terms to the half of the slope
// different, this way the DDA lines will be balanced distributed
// for the pels in the line resulting better constant line brightness and
// less stairsteps than the round up type of error term for reqular DDA.
//
// For drawing from starting points (x1, x2) to (x2, y2) (ie. point at
// (x2, y2) is exclusive) then using following changes
//
// xLast = x = x1;
// yLast = y = y1;
//
// change 'cxPels' to '(x2 - x1)' when calcaulate Inc/Dec/Error terms
// change 'cyPels' to '(y2 - y1)' when calcaulate Inc/Dec/Error terms
//
if (cxPels >= cyPels) {
xyInc[0] = 1;
xyInc[1] = 0;
ErrorDec = (INT)cxPels;
ErrorInc = (INT)cyPels;
} else {
xyInc[0] = 0;
xyInc[1] = 1;
ErrorDec = (INT)cyPels;
ErrorInc = (INT)cxPels;
}
Length = ErrorDec; // DeltaX = total run (larger one)
ErrorDec += ErrorDec; // Delta2X
Error = ErrorInc - ErrorDec; // DeltaY - Delta2X (initlal negative)
ErrorInc += ErrorInc; // Delta2Y
MinPels = (INT)LineWidthPels - 1;
if (cxPels > cyPels) {
if ((MinPels -= (INT)(cxPels / cyPels)) < 0) {
MinPels = 0;
}
}
TotalPels = MinPels;
xLast =
yLast =
x =
y = 0;
DBGP_IF(DBGP_DRAWLINE,
DBGP("[%3u:%3u]: pPat=%p, Err=%d, Inc=%d, Dec=%d, Pels=%d)"
ARGW(cxPels)
ARGW(cyPels)
ARG(pPattern)
ARGS(Error)
ARGS(ErrorInc)
ARGS(ErrorDec)
ARGW(LineWidthPels)));
//
// The single pel version of modified integer DDA for all octants is as
// following:
// ;
// while (Length--) { ; do until all DeltaX finished
// ;
// PlotPoint(x, y); ; Ploting point at (x,y)
// ;
// x += xyInc[0]; ; Increment either x or y by one
// y += xyInc[1]; ; unit depends on which octant.
// ;
// if ((Error += ErrorInc) >= 0) { ; adding error terms for shorter
// ; axis, integer sign operation.
// x += xyInc[1]; ; adding either x or y by one if
// y += xyInc[0]; ; 'pel' is closer to the slop.
// Error -= ErrorDec; ; reset the error term
// } ;
// }
//
while (Length--) { // do all the DeltaX pels
++TotalPels;
x += xyInc[0]; // x=running number 0-up
y += xyInc[1]; // y only need 0/1
if ((Error += ErrorInc) >= 0) {
x += xyInc[1];
y += xyInc[0];
Error -= ErrorDec;
}
if (y != yLast) {
ASSERT(y <= (INT)cyPels);
DestMask = (BYTE)(0x80 >> (xLast & 0x07)); // starting mask
pCurPat = pPattern + (xLast >> 3); // byte start
DestByte = (BYTE)0x00; // start w/0
DBGP_IF(DBGP_DRAWLINE,
DBGP("3u: Plot(%3d, %3d) %3d Pels, Next(x,y)=(%3d,%3d), Error=%d"
ARGS(Length)
ARGS(xLast)
ARGS(yLast)
ARGS(TotalPels)
ARGW(x)
ARGW(y)
ARGS(Error)));
while (TotalPels--) {
DestByte |= DestMask;
if (++xLast >= (INT)cxPels) {
//
// If we wrap around, we have get the old data byte back
// since first byte may already has some on bits.
//
*pCurPat = DestByte;
DestByte = *(pCurPat = pPattern);
DestMask = (BYTE)0x80;
xLast = 0;
} else if (!(DestMask >>= 1)) {
*pCurPat++ = DestByte;
DestMask = 0x80;
DestByte = 0x00;
}
}
//
// Since we using DestByte as temparory data area, we need to make
// sure that last modified data byte is saved back to the buffer,
// to do that we only need to check if Mask=0x80, because if the
// mask is equal to 0x80 then we just saved the byte, otherwise
// we are in middle of the byte processing, we could do this by
// extra checking for (TotalPels == 0) but this should check
// at outside of the (DestMask >>= 1) loop to reduced the overhead.
//
if (DestMask != (BYTE)0x80) {
*pCurPat = DestByte; // last one if any
}
pPattern += NextScanLine; // next scan line start
xLast = x; // remember this one
yLast = y; // reset y
TotalPels = MinPels;
}
}
ASSERT(y == (INT)cyPels);
}
LONG
HTENTRY
CreateStandardMonoPattern(
PDEVICECOLORINFO pDeviceColorInfo,
PSTDMONOPATTERN pStdMonoPat
)
/*++
Routine Description:
This function create standard pre-defined monochrome pattern to a
1 bit per pel bitmap, alignment of each bitmap scan line to the
specified
Arguments:
pDeviceColorInfo - Pointer to the DEVICECOLORINFO data structure, this
is used to get the device resolution information
pStdMonoPat - Pointer to the STDMONOPATTERN data structure.
NOTE: The pStdMonoPat->PatternIndex must be < HT_SMP_0_PERCENT_SCREEN
Return Value:
Retrun value will be the size of the final pattern, it will be <= 0 if an
error occurred and the return value is the halftone error code.
If the pPattern field in the pStdMonoPat data structure then only the
pattern size is returned.
Author:
24-May-1991 Fri 12:39:33 created -by- Daniel Chou (danielc)
Revision History:
18-Sep-1991 Wed 18:49:50 updated -by- Daniel Chou (danielc)
Fixed the bugs for the HORZ_VERT cross lines which has bad LineHeight
and LineWidh variables,
adding 2 decimal points accuracy when calculation the device pels to
prevent run away intermediate result.
--*/
{
LPBYTE pPat;
LPBYTE pTempPat;
STDMONOPATTERN StdMonoPat;
MONOPATRATIO PatRatio;
WORD DeviceResXDPI;
WORD DeviceResYDPI;
WORD DevicePelsDPI;
DWORD DevPelSub;
WORD Index;
WORD Loop;
WORD LineMode;
LONG PatSize;
DWORD YPels2; // retain 2 decimal points
DWORD LineWidth2; // retain 2 decimal points
DWORD LineHeight2; // retain 2 decimal points
DWORD LineSpace2; // retain 2 decimal points
WORD LineWidthPels;
WORD LineHeightPels;
BOOL FlipY;
BYTE Mask;
BYTE TempByte;
StdMonoPat = *pStdMonoPat;
ASSERTMSG("CreateStdMonoPattern: PatIndex >= HT_SMP_PERCENT_SCREEN(0)",
StdMonoPat.PatternIndex < HT_SMP_PERCENT_SCREEN(0));
DeviceResXDPI = pDeviceColorInfo->DeviceResXDPI;
DeviceResYDPI = pDeviceColorInfo->DeviceResYDPI;
// DevicePelsDPI = pDeviceColorInfo->DevicePelsDPI;
DevPelSub = DivFD6(100, pDeviceColorInfo->DevPelRatio) - 100;
FlipY = (BOOL)((StdMonoPat.Flags & SMP_TOPDOWN) ? FALSE : TRUE);
if (!StdMonoPat.LineWidth) {
StdMonoPat.LineWidth = DEFAULT_SMP_LINE_WIDTH;
}
if (!StdMonoPat.LinesPerInch) {
StdMonoPat.LinesPerInch = DEFAULT_SMP_LINES_PER_INCH;
}
LineSpace2 = (DWORD)DIVRUNUP((DWORD)DeviceResXDPI * 100L,
(DWORD)StdMonoPat.LinesPerInch);
LineWidth2 = (DWORD)DIVRUNUP((DWORD)StdMonoPat.LineWidth *
(DWORD)DeviceResXDPI,
10L);
switch (StdMonoPat.PatternIndex) {
case HT_SMP_HORZ_LINE:
case HT_SMP_VERT_LINE:
case HT_SMP_HORZ_VERT_CROSS:
YPels2 = LineSpace2; // default cyPels size
StdMonoPat.cxPels = (WORD)DIVRUNUP(LineSpace2, 100L);
if (StdMonoPat.PatternIndex == HT_SMP_HORZ_LINE) {
// Maximize to the width size of the alignbytes
StdMonoPat.cxPels = (WORD)StdMonoPat.ScanLineAlignBytes << 3;
} else if (StdMonoPat.PatternIndex == HT_SMP_VERT_LINE) {
YPels2 = 800L; // using 8 pels
}
break;
case HT_SMP_DIAG_15_LINE_UP:
case HT_SMP_DIAG_15_LINE_DOWN:
case HT_SMP_DIAG_15_CROSS:
case HT_SMP_DIAG_30_LINE_UP:
case HT_SMP_DIAG_30_LINE_DOWN:
case HT_SMP_DIAG_30_CROSS:
case HT_SMP_DIAG_45_LINE_UP:
case HT_SMP_DIAG_45_LINE_DOWN:
case HT_SMP_DIAG_45_CROSS:
case HT_SMP_DIAG_60_LINE_UP:
case HT_SMP_DIAG_60_LINE_DOWN:
case HT_SMP_DIAG_60_CROSS:
case HT_SMP_DIAG_75_LINE_UP:
case HT_SMP_DIAG_75_LINE_DOWN:
case HT_SMP_DIAG_75_CROSS:
Index = StdMonoPat.PatternIndex - (WORD)HT_SMP_DIAG_15_LINE_UP;
if (LineMode = (WORD)(Index % 3)) {
FlipY = !FlipY; // Down or Cross
}
PatRatio = MonoPatRatio[Index / 3];
StdMonoPat.cxPels = (WORD)DIVRUNUP(LineSpace2 * 100L,
(DWORD)PatRatio.Distance);
YPels2 = (DWORD)DIVRUNUP((DWORD)PatRatio.YSize * LineSpace2,
(DWORD)PatRatio.Distance);
LineWidth2 = (DWORD)DIVRUNUP(LineWidth2 * 10000L,
(DWORD)PatRatio.Distance);
break;
default: // all other percentage density
//
// 04-Aug-2000 Fri 10:31:59 updated -by- Daniel Chou (danielc)
// All other non HT_SMP_xxxx should not be here, we already has
// a ASSERTMSG at begining of this function
//
return(0);
}
//
// Now LineWidth2 = width of the line in pels (2 decimal points) and
// we have to compensate the size of pels which at most time is greater
// than its 'resolution', but since the distance between two device pels
// is assume to be its point 'resolution' so actually we just have to
// compensate the left/right edges of the total line width, the first
// and last pels that is.
//
// ResPels to reduced = (SizePel / SizeResolution)
// = (PelDPI / ResDPI) - 1.0
//
LineWidth2 -= DevPelSub;
#if 0
if (DevicePelsDPI) {
DBGP("<<< XPels=%ld, ResX=%ld, Width=%ld, Ratio=%s, Sub=%ld, New=%ld"
ARGDW(DevicePelsDPI) ARGDW(DeviceResXDPI)
ARGDW(LineWidth2) ARGFD6(pDeviceColorInfo->DevPelRatio, 1, 6)
ARGDW(DevPelSub) ARGDW(LineWidth2 - DevPelSub));
LineWidth2 -= (DWORD)DIVRUNUP((DWORD)DevicePelsDPI * 100L,
(DWORD)DeviceResXDPI) - (DWORD)100;
DBGP(">>> XPels=%ld, ResX=%ld, Width=%ld"
ARGDW(DevicePelsDPI) ARGDW(DeviceResXDPI)
ARGDW(LineWidth2));
}
#endif
//
// Adjust YPels2 for the non-equal X/Y aspect ratio, the ratio is based
// one the XDPI
//
if (DeviceResXDPI != DeviceResYDPI) {
YPels2 = (DWORD)DIVRUNUP(YPels2 * (DWORD)DeviceResYDPI,
(DWORD)DeviceResXDPI);
}
//
// Convert to device pels and check all the zero term, the LineHeightPels
// only check later for the HORZ/VERT/HORZ_VERT_CROSS line types
//
if (!StdMonoPat.cxPels) {
++StdMonoPat.cxPels;
}
if (!(StdMonoPat.cyPels = (WORD)DIVRUNUP(YPels2, 100))) {
++StdMonoPat.cyPels;
}
if ((LineWidthPels = (WORD)DIVRUNUP(LineWidth2, 100)) >
StdMonoPat.cxPels) {
LineWidthPels = (WORD)(StdMonoPat.cxPels - 1);
}
if (!LineWidthPels) {
++LineWidthPels;
}
//
// calculate the buffer size for storing the pattern
//
StdMonoPat.BytesPerScanLine = (WORD)
ComputeBytesPerScanLine((UINT)BMF_1BPP,
(UINT)StdMonoPat.ScanLineAlignBytes,
(DWORD)StdMonoPat.cxPels);
PatSize = (LONG)(StdMonoPat.BytesPerScanLine * StdMonoPat.cyPels);
ASSERTMSG("StdMonoPattern Size Too big", PatSize < 0x10000L);
if (pPat = StdMonoPat.pPattern) {
ZeroMemory(pPat, (WORD)PatSize);
switch (StdMonoPat.PatternIndex) {
case HT_SMP_VERT_LINE:
case HT_SMP_HORZ_VERT_CROSS:
Index = (StdMonoPat.cxPels - (Loop = LineWidthPels)) >> 1;
pTempPat = pPat + (Index >> 3);
Mask = (BYTE)(0x80 >> (Index & 0x07));
TempByte = (BYTE)0;
//
// Do this for the first row then copy the rest
//
while (Loop--) {
TempByte |= Mask;
if ((!(Mask >>= 1)) || (!Loop)) {
*pTempPat++ = TempByte;
TempByte = (BYTE)0;
Mask = (BYTE)0x80;
}
}
for (Index = 0, pTempPat = pPat;
Index < StdMonoPat.cyPels;
Index++) {
CopyMemory(pTempPat, pPat, StdMonoPat.BytesPerScanLine);
pTempPat += StdMonoPat.BytesPerScanLine;
}
//
// Fall through
//
case HT_SMP_HORZ_LINE:
if (StdMonoPat.PatternIndex != HT_SMP_VERT_LINE) {
//
// Set Line Height according to the size of device Y
// resolution and its pel resolution. (see above for
// resolution pels reduction)
//
LineHeight2 = (DWORD)DIVRUNUP((DWORD)StdMonoPat.LineWidth *
(DWORD)DeviceResYDPI,
10L) - DevPelSub;
#if 0
if (DevicePelsDPI) {
LineHeight2 -= (DWORD)DIVRUNUP((DWORD)DevicePelsDPI * 100L,
(DWORD)DeviceResYDPI) -
(DWORD)100;
}
#endif
if ((LineHeightPels = (WORD)DIVRUNUP(LineHeight2, 100)) >=
StdMonoPat.cyPels) {
LineHeightPels = (WORD)(StdMonoPat.cyPels - 1);
}
if (!LineHeightPels) {
++LineHeightPels;
}
FillMemory(pPat + (((StdMonoPat.cyPels -
LineHeightPels) >> 1) *
StdMonoPat.BytesPerScanLine),
LineHeightPels * StdMonoPat.BytesPerScanLine,
0xff);
}
break;
case HT_SMP_DIAG_15_LINE_UP:
case HT_SMP_DIAG_15_LINE_DOWN:
case HT_SMP_DIAG_15_CROSS:
case HT_SMP_DIAG_30_LINE_UP:
case HT_SMP_DIAG_30_LINE_DOWN:
case HT_SMP_DIAG_30_CROSS:
case HT_SMP_DIAG_45_LINE_UP:
case HT_SMP_DIAG_45_LINE_DOWN:
case HT_SMP_DIAG_45_CROSS:
case HT_SMP_DIAG_60_LINE_UP:
case HT_SMP_DIAG_60_LINE_DOWN:
case HT_SMP_DIAG_60_CROSS:
case HT_SMP_DIAG_75_LINE_UP:
case HT_SMP_DIAG_75_LINE_DOWN:
case HT_SMP_DIAG_75_CROSS:
DrawCornerLine(StdMonoPat.pPattern,
StdMonoPat.cxPels,
StdMonoPat.cyPels,
StdMonoPat.BytesPerScanLine,
LineWidthPels,
FlipY);
if (LineMode == 2) { // cross section
pTempPat = pPat + ((StdMonoPat.cyPels - 1) *
StdMonoPat.BytesPerScanLine);
//
// Make the up-side-down mirror which create a cross section
//
Index = StdMonoPat.cyPels >> 1;
while (Index--) {
Loop = StdMonoPat.BytesPerScanLine;
while (Loop--) {
*pPat++ = *pTempPat++ = (*pPat | *pTempPat);
}
pTempPat -= (StdMonoPat.BytesPerScanLine << 1);
}
pPat = StdMonoPat.pPattern; // restore address
}
break;
default: // all other percentage density
break;
}
if (StdMonoPat.Flags & SMP_0_IS_BLACK) {
Index = (WORD)PatSize;
while (Index--) {
*pPat++ ^= 0xff;
}
}
}
*pStdMonoPat = StdMonoPat;
return(PatSize);
}
LONG
HTENTRY
CachedHalftonePattern(
PDEVICECOLORINFO pDCI,
PDEVCLRADJ pDevClrAdj,
PAAPATINFO pAAPI,
LONG PatX,
LONG PatY,
BOOL FlipYPat
)
/*++
Routine Description:
This function create a cached pattern depends on the source color table,
if the source color table only has one entry and we are using the pattern
solid fill then the cached table will be the final color mask bits, else
the color table will be the color threshold values.
Note: the cached pattern will rotate both X, Y direction to aligned with
destination so that first pel/scanline in the cached pattern will
be corresponsed to the first pel in the destination.
Arguments:
pHR - Pointer to the HALFTONERENDER data structure.
Return Value:
The return value will be <= 0 if an error occurred and the return value is
the error code, otherwise the return value is the size of the cached
pattern allocated.
Author:
05-Mar-1991 Tue 11:08:18 created -by- Daniel Chou (danielc)
Revision History:
07-Jun-1991 Fri 17:23:16 updated -by- Daniel Chou (danielc)
Fixed pattern solid fill's pattern alignment problems
--*/
{
HTCELL HTCell;
AAPATINFO AAPI;
LONG cxPat;
LONG cbPat;
LONG x;
LONG y;
//
// If pDCI->HTCell.pThresholds == NULL then we need to make the pattern
// now
//
if (pDCI->HTCell.pThresholds == NULL) {
ASSERT((pDCI->HTCell.Flags & HTCF_STATIC_PTHRESHOLDS) &&
(pDCI->HTCell.HTPatIdx < HTPAT_SIZE_USER));
if (!(Generate_HTSC_WORD(&(pDCI->HTCell)))) {
return(HTERR_INSUFFICIENT_MEMORY);
}
}
HTCell = pDCI->HTCell;
//
// We will always make the pattern width is multiple of 8, this will make
// the output process faster.
//
AAPI.DstOrder = pDevClrAdj->DMI.DstOrder;
//
// Figure out the 555 pattern first
//
MOD_PAT_XY(x, PatX, CX_RGB555PAT);
MOD_PAT_XY(y, PatY, CY_RGB555PAT);
AAPI.pbPat555 = (LPBYTE)RGB555Pat + (CX_SIZE_RGB555PAT * y) + x;
AAPI.cyNext555 = CX_SIZE_RGB555PAT;
AAPI.cbEnd555 = CX_RGB555PAT - x - 1;
if (FlipYPat) {
AAPI.pbWrap555 = (LPBYTE)RGB555Pat - CX_SIZE_RGB555PAT + x;
AAPI.pbBeg555 = AAPI.pbWrap555 + CB_RGB555PAT;
AAPI.cyNext555 = -CX_SIZE_RGB555PAT;
} else {
AAPI.pbWrap555 = (LPBYTE)RGB555Pat + CB_RGB555PAT + x;
AAPI.pbBeg555 = AAPI.pbWrap555 - CB_RGB555PAT;
AAPI.cyNext555 = CX_SIZE_RGB555PAT;
}
DBGP_IF(DBGP_CACHE_PAT,
DBGP("555: Orgin=(%ld, %ld)->(%ld, %ld), pbPat=%p->%p, cyNext=%ld, cbEnd=%ld, "
ARGDW(PatX) ARGDW(PatY) ARGDW(x) ARGDW(y)
ARGPTR(RGB555Pat) ARGPTR(AAPI.pbPat555)
ARGDW(AAPI.cyNext555) ARGDW(AAPI.cbEnd555)));
//
// Figure out the ABC pattern now
//
cxPat = (LONG)HTCell.Width * SIZE_PER_PAT;
cbPat = (LONG)HTCell.Height * cxPat;
MOD_PAT_XY(x, PatX, HTCell.cxReal);
MOD_PAT_XY(y, PatY, HTCell.Height);
x *= SIZE_PER_PAT;
AAPI.pbPatBGR = (LPBYTE)HTCell.pThresholds + (y * cxPat) + x;
AAPI.cbWrapBGR = -(LONG)HTCell.cxReal * SIZE_PER_PAT;
AAPI.cbEndBGR = -AAPI.cbWrapBGR - x;
DBGP_IF(DBGP_CACHE_PAT,
DBGP("HTCell=%ld (%ld) x %ld, cbPat=%ld, pbPat=%p, Flags=%04lx"
ARGDW(HTCell.Width) ARGDW(HTCell.cxReal) ARGDW(HTCell.Height)
ARGDW(HTCell.Size) ARGPTR(HTCell.pThresholds)
ARGDW(HTCell.Flags)));
if (FlipYPat) {
AAPI.pbWrapBGR = (LPBYTE)HTCell.pThresholds - cxPat + x;
AAPI.pbBegBGR = AAPI.pbWrapBGR + cbPat;
AAPI.cyNextBGR = -cxPat;
} else {
AAPI.pbWrapBGR = (LPBYTE)HTCell.pThresholds + cbPat + x;
AAPI.pbBegBGR = AAPI.pbWrapBGR - cbPat;
AAPI.cyNextBGR = cxPat;
}
*pAAPI = AAPI;
DBGP_IF(DBGP_CACHE_PAT,
DBGP("BGR[%ld=%ld:%ld:%ld]: Org=(%ld, %ld)->(%ld, %ld), pbPat=%p->%p"
ARGDW(AAPI.DstOrder.Index) ARGDW(AAPI.DstOrder.Order[0])
ARGDW(AAPI.DstOrder.Order[1]) ARGDW(AAPI.DstOrder.Order[2])
ARGDW(PatX) ARGDW(PatY)
ARGDW(x / SIZE_PER_PAT) ARGDW(y)
ARGPTR(HTCell.pThresholds) ARGPTR(AAPI.pbPatBGR)));
DBGP_IF(DBGP_CACHE_PAT,
DBGP("pbBeg=%p, pbWrap=%p, cyNext=%ld, cbEnd=%ld, cbWrap=%ld"
ARGPTR(AAPI.pbBegBGR) ARGPTR(AAPI.pbWrapBGR)
ARGDW(AAPI.cyNextBGR) ARGDW(AAPI.cbEndBGR)
ARGDW(AAPI.cbWrapBGR)));
return((LONG)cbPat);
}