devdraw: OS X native version
This commit is contained in:
parent
1e77a39450
commit
9142d36228
12 changed files with 2083 additions and 86 deletions
|
|
@ -294,18 +294,11 @@ static
|
||||||
void
|
void
|
||||||
drawflush(void)
|
drawflush(void)
|
||||||
{
|
{
|
||||||
_flushmemscreen(flushrect);
|
if(flushrect.min.x < flushrect.max.x)
|
||||||
|
_flushmemscreen(flushrect);
|
||||||
flushrect = Rect(10000, 10000, -10000, -10000);
|
flushrect = Rect(10000, 10000, -10000, -10000);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
xdrawflush(void)
|
|
||||||
{
|
|
||||||
qlock(&sdraw.lk);
|
|
||||||
drawflush();
|
|
||||||
qunlock(&sdraw.lk);
|
|
||||||
}
|
|
||||||
|
|
||||||
static
|
static
|
||||||
int
|
int
|
||||||
drawcmp(char *a, char *b, int n)
|
drawcmp(char *a, char *b, int n)
|
||||||
|
|
@ -798,7 +791,7 @@ _drawmsgwrite(void *v, int n)
|
||||||
|
|
||||||
while((n-=m) > 0){
|
while((n-=m) > 0){
|
||||||
a += m;
|
a += m;
|
||||||
/* print("msgwrite %d(%c)...", n, *a); */
|
/*fprint(2, "msgwrite %d(%d)...", n, *a); */
|
||||||
switch(*a){
|
switch(*a){
|
||||||
default:
|
default:
|
||||||
/*fprint(2, "bad command %d\n", *a); */
|
/*fprint(2, "bad command %d\n", *a); */
|
||||||
|
|
|
||||||
|
|
@ -2,3 +2,5 @@ int _drawmsgread(void*, int);
|
||||||
int _drawmsgwrite(void*, int);
|
int _drawmsgwrite(void*, int);
|
||||||
void _initdisplaymemimage(Memimage*);
|
void _initdisplaymemimage(Memimage*);
|
||||||
int _latin1(Rune*, int);
|
int _latin1(Rune*, int);
|
||||||
|
int parsewinsize(char*, Rectangle*, int*);
|
||||||
|
|
||||||
|
|
|
||||||
608
src/cmd/devdraw/glendapng.h
Normal file
608
src/cmd/devdraw/glendapng.h
Normal file
|
|
@ -0,0 +1,608 @@
|
||||||
|
uchar glenda_png[] = {
|
||||||
|
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
|
||||||
|
0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x08, 0x06, 0x00, 0x00, 0x00, 0xc3, 0x3e, 0x61,
|
||||||
|
0xcb, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 0x44, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0xfe, 0xeb,
|
||||||
|
0x18, 0xd4, 0x82, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x12, 0x00,
|
||||||
|
0x00, 0x0b, 0x12, 0x01, 0xd2, 0xdd, 0x7e, 0xfc, 0x00, 0x00, 0x00, 0x09, 0x76, 0x70, 0x41, 0x67,
|
||||||
|
0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x30, 0xe1, 0x31, 0x9a, 0x00, 0x00, 0x25,
|
||||||
|
0x43, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0xed, 0x7d, 0x69, 0x70, 0x1c, 0xe7, 0x99, 0xde, 0xd3,
|
||||||
|
0x3d, 0x3d, 0xd3, 0x33, 0x3d, 0xd3, 0x73, 0x5f, 0x18, 0x60, 0x70, 0xdf, 0x24, 0x61, 0x90, 0x94,
|
||||||
|
0x29, 0x89, 0xa4, 0x24, 0x53, 0xd4, 0xb1, 0x16, 0x57, 0xdc, 0xd8, 0x8e, 0xed, 0x28, 0x89, 0x6b,
|
||||||
|
0xed, 0xf2, 0x26, 0xa9, 0x6c, 0x55, 0xf6, 0xcf, 0x3a, 0xa9, 0xdd, 0x3f, 0xf9, 0x91, 0x64, 0x2b,
|
||||||
|
0xa9, 0x4a, 0x9c, 0xaa, 0x78, 0xff, 0x6c, 0xa5, 0x5c, 0xd9, 0x6c, 0x6d, 0x95, 0x9c, 0x72, 0x6d,
|
||||||
|
0xb9, 0xd6, 0x96, 0xb6, 0xbc, 0x5a, 0x4b, 0xb2, 0x2d, 0x59, 0x14, 0x29, 0xf1, 0x90, 0x48, 0x80,
|
||||||
|
0x24, 0x40, 0x10, 0x80, 0x38, 0x18, 0x60, 0x30, 0xf7, 0x74, 0x4f, 0x4f, 0x77, 0x4f, 0x5f, 0xf9,
|
||||||
|
0x01, 0x7e, 0xed, 0xd1, 0x41, 0x8a, 0x22, 0x41, 0x4c, 0x53, 0x8b, 0xa7, 0x0a, 0x45, 0x14, 0x01,
|
||||||
|
0xcc, 0xf4, 0xf4, 0xf7, 0xf4, 0xf7, 0xbd, 0xef, 0xf3, 0x5e, 0xc0, 0x2e, 0x76, 0xb1, 0x8b, 0x5d,
|
||||||
|
0xec, 0xe2, 0x1f, 0x29, 0xa8, 0x6e, 0x5f, 0xc0, 0xa7, 0xc0, 0x03, 0x20, 0x06, 0x80, 0x03, 0x60,
|
||||||
|
0x00, 0x28, 0x02, 0x68, 0x75, 0xfb, 0xa2, 0x3e, 0x4f, 0x70, 0x2a, 0x01, 0x28, 0x00, 0xe9, 0xf1,
|
||||||
|
0xf1, 0xf1, 0xd9, 0x50, 0x28, 0xf4, 0xa4, 0xd7, 0xeb, 0x1d, 0xd4, 0x34, 0x4d, 0x52, 0x55, 0xf5,
|
||||||
|
0xf5, 0x8d, 0x8d, 0x8d, 0x73, 0x85, 0x42, 0x61, 0x05, 0xbb, 0x44, 0xd8, 0x16, 0x38, 0x91, 0x00,
|
||||||
|
0xd4, 0xf0, 0xf0, 0xf0, 0xde, 0x64, 0x32, 0xf9, 0x2f, 0xc7, 0xc6, 0xc6, 0xbe, 0xfd, 0xd8, 0x63,
|
||||||
|
0x8f, 0x25, 0x86, 0x87, 0x87, 0x29, 0x51, 0x14, 0x71, 0xee, 0xdc, 0x39, 0x65, 0x61, 0x61, 0xe1,
|
||||||
|
0xd4, 0xea, 0xea, 0xea, 0xff, 0x7e, 0xf7, 0xdd, 0x77, 0xdf, 0x00, 0x50, 0x00, 0x60, 0x75, 0xfb,
|
||||||
|
0x82, 0x77, 0xb1, 0xbd, 0x18, 0x7d, 0xe6, 0x99, 0x67, 0xfe, 0xe1, 0x07, 0x3f, 0xf8, 0x81, 0x3e,
|
||||||
|
0x37, 0x37, 0x67, 0x49, 0x92, 0x64, 0x19, 0x86, 0x61, 0x59, 0x96, 0x65, 0x89, 0xa2, 0x68, 0x9d,
|
||||||
|
0x3a, 0x75, 0xca, 0xfa, 0xde, 0xf7, 0xbe, 0x57, 0xdd, 0xb7, 0x6f, 0xdf, 0x7f, 0x0d, 0x85, 0x42,
|
||||||
|
0xc3, 0x70, 0x26, 0x89, 0x1f, 0x18, 0xb8, 0xba, 0x7d, 0x01, 0x1f, 0x81, 0x77, 0x70, 0x70, 0xf0,
|
||||||
|
0xbf, 0x7d, 0xed, 0x6b, 0x5f, 0x3b, 0x79, 0xf2, 0xe4, 0x49, 0xa6, 0xaf, 0xaf, 0x0f, 0x7e, 0xbf,
|
||||||
|
0x1f, 0x14, 0x45, 0xc1, 0xb2, 0x2c, 0xb0, 0x2c, 0x8b, 0x6c, 0x36, 0x8b, 0x81, 0x81, 0x01, 0x9f,
|
||||||
|
0x61, 0x18, 0x47, 0x35, 0x4d, 0x63, 0x57, 0x56, 0x56, 0xae, 0x00, 0xa8, 0x77, 0xfb, 0xc2, 0x1f,
|
||||||
|
0x54, 0x38, 0x8d, 0x00, 0xd9, 0xfd, 0xfb, 0xf7, 0xff, 0xf7, 0x63, 0xc7, 0x8e, 0xf1, 0xd9, 0x6c,
|
||||||
|
0x16, 0x91, 0x48, 0x04, 0x0c, 0xc3, 0xc0, 0xb2, 0x2c, 0xa8, 0xaa, 0x0a, 0x4d, 0xd3, 0x40, 0xd3,
|
||||||
|
0x34, 0x82, 0xc1, 0x20, 0x66, 0x66, 0x66, 0x20, 0xcb, 0xf2, 0x43, 0x37, 0x6e, 0xdc, 0x68, 0x95,
|
||||||
|
0xcb, 0xe5, 0xf7, 0xb0, 0x6b, 0x13, 0xdc, 0x15, 0x9c, 0x46, 0x80, 0xb1, 0xd9, 0xd9, 0xd9, 0x3f,
|
||||||
|
0x38, 0x71, 0xe2, 0x84, 0x27, 0x1e, 0x8f, 0xc3, 0xe7, 0xf3, 0x81, 0x61, 0x18, 0x48, 0x92, 0x84,
|
||||||
|
0x7c, 0x3e, 0x8f, 0xa5, 0xa5, 0x25, 0xb4, 0x5a, 0x2d, 0x04, 0x83, 0x41, 0x04, 0x83, 0x41, 0x0c,
|
||||||
|
0x0e, 0x0e, 0x42, 0x51, 0x94, 0xa3, 0xb9, 0x5c, 0xce, 0xac, 0xd5, 0x6a, 0x17, 0x00, 0xc8, 0xdd,
|
||||||
|
0xfe, 0x00, 0x0f, 0x1a, 0x9c, 0x46, 0x80, 0xc8, 0xe8, 0xe8, 0xe8, 0xb7, 0x1f, 0x7d, 0xf4, 0x51,
|
||||||
|
0x6f, 0x20, 0x10, 0x00, 0xcf, 0xf3, 0x60, 0x18, 0x06, 0xe5, 0x72, 0x19, 0x0b, 0x0b, 0x0b, 0x58,
|
||||||
|
0x58, 0x58, 0xc0, 0xe2, 0xe2, 0x22, 0xea, 0xf5, 0x3a, 0x78, 0x9e, 0x47, 0x2a, 0x95, 0x42, 0x32,
|
||||||
|
0x99, 0x44, 0xbd, 0x5e, 0x3f, 0x5a, 0x2a, 0x95, 0x36, 0xeb, 0xf5, 0xfa, 0x1c, 0x80, 0x76, 0xb7,
|
||||||
|
0x3f, 0xc4, 0x83, 0x04, 0xa7, 0x11, 0x40, 0xe7, 0x38, 0xee, 0xf7, 0x0e, 0x1d, 0x3a, 0x94, 0x4c,
|
||||||
|
0xa7, 0xd3, 0x54, 0x20, 0x10, 0x80, 0xdb, 0xed, 0x06, 0x45, 0x51, 0x58, 0x5c, 0x5c, 0xc4, 0x99,
|
||||||
|
0x33, 0x67, 0x50, 0xaf, 0xd7, 0x51, 0x2e, 0x97, 0x51, 0xad, 0x56, 0x11, 0x0e, 0x87, 0x31, 0x34,
|
||||||
|
0x34, 0x84, 0xc1, 0xc1, 0x41, 0xdc, 0xb8, 0x71, 0xe3, 0x91, 0x6a, 0xb5, 0x7a, 0x55, 0x14, 0xc5,
|
||||||
|
0x65, 0x00, 0x7a, 0xb7, 0x3f, 0xc8, 0x83, 0x02, 0xa7, 0x11, 0x40, 0x11, 0x04, 0x61, 0x60, 0xcf,
|
||||||
|
0x9e, 0x3d, 0x0f, 0x67, 0xb3, 0x59, 0x26, 0x1c, 0x0e, 0x83, 0x65, 0x59, 0x50, 0x14, 0x85, 0x7a,
|
||||||
|
0xbd, 0x8e, 0xa5, 0xa5, 0x25, 0xa8, 0xaa, 0x8a, 0x7c, 0x3e, 0x8f, 0x66, 0xb3, 0x09, 0x00, 0x88,
|
||||||
|
0xc5, 0x62, 0x18, 0x19, 0x19, 0x41, 0x6f, 0x6f, 0xaf, 0xb7, 0x54, 0x2a, 0x1d, 0x2f, 0x16, 0x8b,
|
||||||
|
0x73, 0x92, 0x24, 0x7d, 0x80, 0x5d, 0x12, 0xdc, 0x11, 0x9c, 0x46, 0x00, 0x68, 0x9a, 0x96, 0x8b,
|
||||||
|
0x46, 0xa3, 0x5f, 0x9d, 0x9e, 0x9e, 0x0e, 0x26, 0x12, 0x09, 0x8a, 0x61, 0x18, 0x78, 0x3c, 0x1e,
|
||||||
|
0xd0, 0x34, 0x8d, 0x5a, 0xad, 0x86, 0x42, 0xa1, 0x80, 0x56, 0xab, 0x85, 0x6a, 0xb5, 0x0a, 0x9a,
|
||||||
|
0xa6, 0x61, 0x18, 0x06, 0x02, 0x81, 0x00, 0x26, 0x27, 0x27, 0x31, 0x34, 0x34, 0xe4, 0xbb, 0x7a,
|
||||||
|
0xf5, 0xea, 0xd1, 0x42, 0xa1, 0xf0, 0x4e, 0xbb, 0xdd, 0x5e, 0xc3, 0xae, 0x46, 0xf0, 0xa9, 0xb8,
|
||||||
|
0x9f, 0x04, 0xa0, 0x71, 0x77, 0x3e, 0x7a, 0xa5, 0x52, 0xa9, 0x24, 0xd2, 0xe9, 0xf4, 0xa1, 0xd1,
|
||||||
|
0xd1, 0x51, 0xc6, 0xe7, 0xf3, 0x81, 0x65, 0x59, 0xb8, 0xdd, 0x6e, 0x28, 0x8a, 0x82, 0x7a, 0xbd,
|
||||||
|
0x8e, 0x56, 0xab, 0x05, 0x59, 0x96, 0xb1, 0xb8, 0xb8, 0x88, 0x60, 0x30, 0x88, 0x72, 0xb9, 0x0c,
|
||||||
|
0x9f, 0xcf, 0x87, 0x3d, 0x7b, 0xf6, 0x20, 0x1e, 0x8f, 0x07, 0xe7, 0xe6, 0xe6, 0x66, 0x2a, 0x95,
|
||||||
|
0xca, 0x2f, 0x0c, 0xc3, 0xa8, 0x77, 0xe7, 0xb6, 0x3e, 0x38, 0xd8, 0x6e, 0x02, 0xd0, 0x00, 0xb8,
|
||||||
|
0x78, 0x3c, 0x1e, 0xef, 0xe9, 0xe9, 0x19, 0xe0, 0x79, 0x3e, 0xce, 0x30, 0x4c, 0x54, 0x96, 0x65,
|
||||||
|
0x0b, 0x80, 0x89, 0x2d, 0x3d, 0xff, 0x53, 0x21, 0x49, 0xd2, 0x35, 0x8e, 0xe3, 0x9e, 0x1f, 0x1f,
|
||||||
|
0x1f, 0x8f, 0xa5, 0xd3, 0x69, 0x8a, 0x65, 0x59, 0x30, 0x0c, 0x03, 0x97, 0xcb, 0x05, 0x41, 0x10,
|
||||||
|
0x20, 0x49, 0x12, 0x0a, 0x85, 0x02, 0x58, 0x96, 0xc5, 0xc6, 0xc6, 0x06, 0x64, 0x59, 0x46, 0xb3,
|
||||||
|
0xd9, 0x44, 0x3a, 0x9d, 0xc6, 0x81, 0x03, 0x07, 0xc0, 0x30, 0x4c, 0xcf, 0xfc, 0xfc, 0x7c, 0xac,
|
||||||
|
0x52, 0xa9, 0xfc, 0x1a, 0xbb, 0x9e, 0xc1, 0x6d, 0xb1, 0x9d, 0x04, 0xf0, 0x0e, 0x0c, 0x0c, 0xec,
|
||||||
|
0x8b, 0xc5, 0x62, 0xff, 0x74, 0x62, 0x62, 0xe2, 0xbf, 0x8c, 0x8f, 0x8f, 0xff, 0x87, 0x70, 0x38,
|
||||||
|
0xfc, 0x9d, 0x50, 0x28, 0xf4, 0x2f, 0x68, 0x9a, 0x9e, 0x60, 0x59, 0x56, 0xf5, 0xf9, 0x7c, 0x62,
|
||||||
|
0xab, 0xd5, 0x6a, 0xe3, 0xd3, 0x89, 0x20, 0x14, 0x0a, 0x05, 0xb5, 0xdd, 0x6e, 0x3f, 0x31, 0x34,
|
||||||
|
0x34, 0xe4, 0x8d, 0xc7, 0xe3, 0x70, 0xbb, 0xdd, 0x08, 0x87, 0xc3, 0xa8, 0xd7, 0xeb, 0x58, 0x5b,
|
||||||
|
0x5b, 0xc3, 0xc6, 0xc6, 0x06, 0x44, 0x51, 0x44, 0xa3, 0xd1, 0xc0, 0x8d, 0x1b, 0x37, 0xd0, 0xdb,
|
||||||
|
0xdb, 0x8b, 0x50, 0x28, 0x04, 0x9e, 0xe7, 0x31, 0x31, 0x31, 0x81, 0x6a, 0xb5, 0x3a, 0xb3, 0xb2,
|
||||||
|
0xb2, 0x92, 0x17, 0x45, 0xf1, 0x22, 0x76, 0xed, 0x81, 0x5b, 0x62, 0xbb, 0x08, 0xc0, 0xf6, 0xf6,
|
||||||
|
0xf6, 0xfe, 0xde, 0xa3, 0x8f, 0x3e, 0xfa, 0xe2, 0x97, 0xbf, 0xfc, 0xe5, 0xaf, 0x3c, 0xff, 0xfc,
|
||||||
|
0xf3, 0xbd, 0x0f, 0x3f, 0xfc, 0xb0, 0x97, 0xe7, 0x79, 0xdf, 0xa1, 0x43, 0x87, 0xf8, 0xfe, 0xfe,
|
||||||
|
0xfe, 0x19, 0x9f, 0xcf, 0xf7, 0x02, 0xcf, 0xf3, 0x47, 0x5d, 0x2e, 0x57, 0x5d, 0x55, 0xd5, 0xaa,
|
||||||
|
0xa6, 0x69, 0x3a, 0x6e, 0xb3, 0x30, 0xed, 0x76, 0x7b, 0xbe, 0x58, 0x2c, 0x1e, 0x4a, 0xa5, 0x52,
|
||||||
|
0xc3, 0xc9, 0x64, 0xd2, 0x15, 0x8b, 0xc5, 0xec, 0x33, 0xbf, 0xdd, 0x6e, 0x43, 0xd3, 0x34, 0x14,
|
||||||
|
0x8b, 0x45, 0x68, 0x9a, 0x86, 0x78, 0x3c, 0x0e, 0x86, 0x61, 0xa0, 0x28, 0x0a, 0xaa, 0xd5, 0x2a,
|
||||||
|
0x46, 0x47, 0x47, 0x31, 0x33, 0x33, 0x83, 0xeb, 0xd7, 0xaf, 0x7f, 0xb1, 0x52, 0xa9, 0xfc, 0x5a,
|
||||||
|
0x14, 0xc5, 0x3c, 0x76, 0xed, 0x81, 0x4f, 0xc4, 0xb6, 0x10, 0xc0, 0xe3, 0xf1, 0xfc, 0xee, 0x37,
|
||||||
|
0xbe, 0xf1, 0x8d, 0x17, 0xbf, 0xf9, 0xcd, 0x6f, 0x06, 0x67, 0x66, 0x66, 0x30, 0x3e, 0x3e, 0x8e,
|
||||||
|
0x48, 0x24, 0x82, 0xa9, 0xa9, 0x29, 0x0c, 0x0e, 0x0e, 0x62, 0x62, 0x62, 0x02, 0x63, 0x63, 0x63,
|
||||||
|
0x98, 0x9d, 0x9d, 0xed, 0xa3, 0x69, 0xfa, 0xa4, 0x65, 0x59, 0x87, 0x34, 0x4d, 0x93, 0x25, 0x49,
|
||||||
|
0xda, 0xc0, 0xad, 0x15, 0x3c, 0xa3, 0xd9, 0x6c, 0x5e, 0x51, 0x14, 0xe5, 0xd9, 0xe1, 0xe1, 0xe1,
|
||||||
|
0xc8, 0xf0, 0xf0, 0x30, 0xe5, 0xf1, 0x78, 0x10, 0x0a, 0x85, 0xc0, 0xb2, 0x2c, 0x14, 0x45, 0x81,
|
||||||
|
0x24, 0x49, 0x68, 0xb5, 0x5a, 0x68, 0x34, 0x1a, 0x90, 0x24, 0x09, 0xc5, 0x62, 0x11, 0x00, 0xd0,
|
||||||
|
0xdf, 0xdf, 0x8f, 0x54, 0x2a, 0x85, 0xc9, 0xc9, 0x49, 0xee, 0xd2, 0xa5, 0x4b, 0x7b, 0xca, 0xe5,
|
||||||
|
0xf2, 0x6b, 0xaa, 0xaa, 0xd6, 0xbb, 0x7d, 0xb3, 0x9d, 0x88, 0xed, 0x20, 0x40, 0xf4, 0xa1, 0x87,
|
||||||
|
0x1e, 0xfa, 0xd1, 0x1f, 0xfd, 0xd1, 0x1f, 0xa5, 0x33, 0x99, 0x0c, 0xe2, 0xf1, 0x38, 0x52, 0xa9,
|
||||||
|
0x14, 0xc2, 0xe1, 0x30, 0x42, 0xa1, 0x10, 0x82, 0xc1, 0x20, 0xc2, 0xe1, 0x30, 0x06, 0x07, 0x07,
|
||||||
|
0x91, 0x4e, 0xa7, 0xd1, 0xd3, 0xd3, 0xe3, 0xea, 0xed, 0xed, 0x1d, 0x04, 0x70, 0x52, 0x96, 0xe5,
|
||||||
|
0x90, 0x2c, 0xcb, 0x73, 0xba, 0xae, 0x0b, 0xb7, 0x78, 0xed, 0xcd, 0x5c, 0x2e, 0xd7, 0x1c, 0x1d,
|
||||||
|
0x1d, 0x3d, 0x36, 0x30, 0x30, 0xe0, 0x8d, 0x46, 0xa3, 0x70, 0xb9, 0x5c, 0xf0, 0xf9, 0x7c, 0x70,
|
||||||
|
0xb9, 0x5c, 0x68, 0x34, 0x1a, 0x28, 0x16, 0x8b, 0x68, 0xb7, 0xdb, 0xd0, 0x75, 0x1d, 0x82, 0x20,
|
||||||
|
0xa0, 0x5c, 0x2e, 0x43, 0xd3, 0x34, 0x04, 0x83, 0x41, 0x4c, 0x4c, 0x4c, 0xc0, 0xe5, 0x72, 0xf5,
|
||||||
|
0x9d, 0x3d, 0x7b, 0xd6, 0x5f, 0xab, 0xd5, 0xde, 0xc6, 0xae, 0x5c, 0xfc, 0x31, 0x6c, 0x07, 0x01,
|
||||||
|
0xbe, 0xf3, 0xdd, 0xef, 0x7e, 0xf7, 0xf7, 0x9f, 0x78, 0xe2, 0x09, 0xc4, 0x62, 0x31, 0xc4, 0xe3,
|
||||||
|
0x71, 0xdb, 0x6d, 0xa3, 0x28, 0x0a, 0x14, 0x45, 0x81, 0xa6, 0x69, 0xb8, 0xdd, 0x6e, 0xf8, 0xfd,
|
||||||
|
0x7e, 0xa4, 0xd3, 0x69, 0x84, 0xc3, 0x61, 0x8c, 0x8c, 0x8c, 0xb8, 0x4c, 0xd3, 0xfc, 0x62, 0xab,
|
||||||
|
0xd5, 0x9a, 0xa8, 0xd5, 0x6a, 0x67, 0x0d, 0xc3, 0x10, 0xf1, 0xc9, 0xb6, 0xc1, 0xa5, 0x0f, 0x3e,
|
||||||
|
0xf8, 0xe0, 0x8b, 0xc3, 0xc3, 0xc3, 0x63, 0xc3, 0xc3, 0xc3, 0x34, 0xc7, 0x71, 0x70, 0xb9, 0x5c,
|
||||||
|
0x60, 0x18, 0x06, 0xf5, 0x7a, 0x1d, 0x34, 0x4d, 0xe3, 0x83, 0x0f, 0x3e, 0x80, 0x2c, 0xcb, 0x50,
|
||||||
|
0x14, 0x05, 0x8a, 0xa2, 0xa0, 0x54, 0x2a, 0xc1, 0xeb, 0xf5, 0x62, 0x70, 0x70, 0x10, 0x87, 0x0e,
|
||||||
|
0x1d, 0x42, 0xbd, 0x5e, 0x3f, 0xb0, 0xb4, 0xb4, 0xd4, 0x14, 0x45, 0xf1, 0x02, 0x00, 0xb5, 0xdb,
|
||||||
|
0x37, 0xdd, 0x49, 0xb8, 0x57, 0x02, 0xd0, 0x99, 0x4c, 0xe6, 0xcf, 0xbe, 0xf3, 0x9d, 0xef, 0x0c,
|
||||||
|
0x4f, 0x4d, 0x4d, 0x81, 0xe7, 0x79, 0x78, 0x3c, 0x1e, 0xfb, 0x87, 0x9a, 0xa6, 0x41, 0x14, 0x45,
|
||||||
|
0x54, 0xab, 0x55, 0x3b, 0xa8, 0xe3, 0xf1, 0x78, 0x10, 0x8f, 0xc7, 0x91, 0x48, 0x24, 0x90, 0xcd,
|
||||||
|
0x66, 0x61, 0x59, 0xd6, 0x58, 0xbd, 0x5e, 0x3f, 0x4a, 0x51, 0xd4, 0x72, 0xb3, 0xd9, 0xdc, 0xc4,
|
||||||
|
0xc7, 0xa5, 0x5c, 0x4b, 0x10, 0x84, 0x3c, 0xc3, 0x30, 0x27, 0x27, 0x26, 0x26, 0xfc, 0xc9, 0x64,
|
||||||
|
0xd2, 0x3e, 0xef, 0x43, 0xa1, 0x10, 0x0a, 0x85, 0x02, 0x2a, 0x95, 0x0a, 0x2a, 0x95, 0x0a, 0x4c,
|
||||||
|
0xd3, 0x84, 0xdb, 0xed, 0x06, 0xc3, 0x30, 0x68, 0xb7, 0xdb, 0x08, 0x87, 0xc3, 0xc8, 0x66, 0xb3,
|
||||||
|
0x18, 0x1a, 0x1a, 0x42, 0x2e, 0x97, 0x7b, 0xa2, 0x50, 0x28, 0x5c, 0x6c, 0xb5, 0x5a, 0x0b, 0xd8,
|
||||||
|
0xf2, 0x48, 0x76, 0x81, 0x7b, 0x27, 0x40, 0x68, 0x6c, 0x6c, 0xec, 0xcf, 0x4e, 0x9c, 0x38, 0xe1,
|
||||||
|
0x4f, 0x24, 0x12, 0x08, 0x85, 0x42, 0xf6, 0x0f, 0x34, 0x4d, 0xc3, 0x95, 0x2b, 0x57, 0x70, 0xfa,
|
||||||
|
0xf4, 0x69, 0x5b, 0xc3, 0x6f, 0x34, 0x1a, 0xf0, 0xf9, 0x7c, 0xf0, 0x7a, 0xbd, 0xf0, 0xf9, 0x7c,
|
||||||
|
0x48, 0x24, 0x12, 0x08, 0x87, 0xc3, 0xc8, 0x64, 0x32, 0x69, 0x4d, 0xd3, 0x4e, 0x08, 0x82, 0x50,
|
||||||
|
0x12, 0x45, 0xf1, 0x03, 0x7c, 0xdc, 0x75, 0xbb, 0xd1, 0x68, 0x34, 0x7a, 0xc6, 0xc7, 0xc7, 0xf7,
|
||||||
|
0x0f, 0x0c, 0x0c, 0x30, 0x24, 0x46, 0x40, 0x51, 0x14, 0x24, 0x49, 0x82, 0x24, 0x49, 0x30, 0x0c,
|
||||||
|
0x03, 0xb5, 0x5a, 0x0d, 0x00, 0x60, 0x18, 0x06, 0x18, 0x86, 0x01, 0xc3, 0x30, 0x48, 0x26, 0x93,
|
||||||
|
0x18, 0x1e, 0x1e, 0x46, 0x24, 0x12, 0xa1, 0xae, 0x5c, 0xb9, 0x32, 0x59, 0x28, 0x14, 0x5e, 0x31,
|
||||||
|
0x0c, 0xa3, 0xd6, 0xed, 0x1b, 0xef, 0x14, 0xdc, 0x2b, 0x01, 0x34, 0x8e, 0xe3, 0x7e, 0xe7, 0xe9,
|
||||||
|
0xa7, 0x9f, 0x1e, 0x4a, 0x26, 0x93, 0xe0, 0x79, 0x1e, 0x14, 0xb5, 0xa5, 0xfd, 0x14, 0x8b, 0x45,
|
||||||
|
0xfc, 0xe2, 0x17, 0xbf, 0xc0, 0x5b, 0x6f, 0xbd, 0x85, 0xa5, 0xa5, 0x25, 0x2c, 0x2f, 0x2f, 0xa3,
|
||||||
|
0x52, 0xa9, 0x40, 0x10, 0x04, 0xf8, 0xfd, 0x7e, 0xb8, 0xdd, 0x6e, 0xb0, 0x2c, 0x8b, 0x68, 0x34,
|
||||||
|
0x0a, 0x9e, 0xe7, 0xe1, 0xf7, 0xfb, 0x7d, 0x96, 0x65, 0xfd, 0xae, 0x2c, 0xcb, 0x91, 0x6a, 0xb5,
|
||||||
|
0x7a, 0x16, 0x40, 0xb3, 0xf3, 0x8d, 0x9a, 0xcd, 0xe6, 0x7c, 0xa3, 0xd1, 0x78, 0x66, 0x66, 0x66,
|
||||||
|
0x26, 0x19, 0x8f, 0xc7, 0x29, 0x8e, 0xe3, 0x60, 0x59, 0x16, 0x02, 0x81, 0x00, 0x74, 0x5d, 0x47,
|
||||||
|
0xbb, 0xdd, 0x86, 0x2c, 0xcb, 0xb0, 0x2c, 0x0b, 0xed, 0x76, 0x1b, 0xa2, 0x28, 0xa2, 0x56, 0xab,
|
||||||
|
0xc1, 0xef, 0xf7, 0x23, 0x1e, 0x8f, 0x23, 0x99, 0x4c, 0x02, 0x40, 0x72, 0x61, 0x61, 0x21, 0x52,
|
||||||
|
0xad, 0x56, 0xdf, 0x06, 0x20, 0x75, 0xfb, 0xe6, 0x3b, 0x01, 0xf7, 0x4a, 0x00, 0x4b, 0x14, 0xc5,
|
||||||
|
0xbe, 0x63, 0xc7, 0x8e, 0x3d, 0x39, 0x35, 0x35, 0x05, 0x8f, 0xc7, 0x03, 0x97, 0x6b, 0xeb, 0x25,
|
||||||
|
0x0b, 0x85, 0x02, 0x72, 0xb9, 0x1c, 0x2e, 0x5e, 0xbc, 0x88, 0xf5, 0xf5, 0x75, 0x50, 0x14, 0x05,
|
||||||
|
0x86, 0x61, 0x50, 0x2c, 0x16, 0x51, 0x2a, 0x95, 0x60, 0x18, 0x06, 0x78, 0x9e, 0x47, 0x20, 0x10,
|
||||||
|
0x40, 0x3a, 0x9d, 0x46, 0x3c, 0x1e, 0xc7, 0xe8, 0xe8, 0x28, 0x24, 0x49, 0x3a, 0xd0, 0x68, 0x34,
|
||||||
|
0x7a, 0x2d, 0xcb, 0x7a, 0x47, 0x51, 0x94, 0x26, 0x7e, 0xeb, 0xbe, 0x89, 0xb9, 0x5c, 0xae, 0xaa,
|
||||||
|
0x69, 0xda, 0xd3, 0xa3, 0xa3, 0xa3, 0xbe, 0x70, 0x38, 0x6c, 0x13, 0x49, 0xd3, 0x34, 0x94, 0xcb,
|
||||||
|
0x65, 0x28, 0x8a, 0x82, 0x7c, 0x3e, 0x8f, 0x56, 0xab, 0x05, 0xd3, 0x34, 0xd1, 0x6c, 0x36, 0x51,
|
||||||
|
0x2e, 0x97, 0xc1, 0x30, 0x0c, 0x52, 0xa9, 0x14, 0xbc, 0x5e, 0x2f, 0x0a, 0x85, 0xc2, 0x17, 0xd6,
|
||||||
|
0xd7, 0xd7, 0xfd, 0x00, 0x2e, 0xeb, 0xba, 0xce, 0xfa, 0x7c, 0xbe, 0x88, 0xc7, 0xe3, 0x09, 0x64,
|
||||||
|
0xb3, 0xd9, 0x48, 0x38, 0x1c, 0x0e, 0xab, 0xaa, 0x1a, 0xf0, 0xfb, 0xfd, 0x0c, 0xc7, 0x71, 0xac,
|
||||||
|
0xa2, 0x28, 0x1e, 0x7c, 0xce, 0x33, 0x8e, 0xee, 0xd9, 0x08, 0x34, 0x4d, 0xb3, 0xc4, 0xf3, 0xfc,
|
||||||
|
0x0b, 0xfb, 0xf6, 0xed, 0xe3, 0x82, 0xc1, 0x20, 0x58, 0x96, 0x05, 0x00, 0xd0, 0x34, 0x8d, 0x95,
|
||||||
|
0x95, 0x15, 0xdb, 0x4a, 0xdf, 0xdc, 0xdc, 0x44, 0xa9, 0x54, 0xc2, 0xe6, 0xe6, 0x26, 0x2a, 0x95,
|
||||||
|
0x0a, 0xaa, 0xd5, 0x2a, 0x28, 0x8a, 0x02, 0xc7, 0x71, 0xb6, 0x5d, 0x90, 0x4c, 0x26, 0x11, 0x0a,
|
||||||
|
0x85, 0xe0, 0xf1, 0x78, 0xf6, 0xae, 0xad, 0xad, 0x4d, 0x49, 0x92, 0xb4, 0xa0, 0xeb, 0x7a, 0x0d,
|
||||||
|
0x80, 0x76, 0xf3, 0xed, 0xae, 0x94, 0xcb, 0xe5, 0x2f, 0xf8, 0x7c, 0xbe, 0xa9, 0x44, 0x22, 0x41,
|
||||||
|
0xc7, 0xe3, 0x71, 0xb4, 0xdb, 0x6d, 0xac, 0xaf, 0xaf, 0x83, 0x61, 0x18, 0x6c, 0x6e, 0x6e, 0xda,
|
||||||
|
0x72, 0xb1, 0xd7, 0xeb, 0x85, 0xcb, 0xe5, 0x82, 0x28, 0x8a, 0x10, 0x45, 0x11, 0x0c, 0xc3, 0x20,
|
||||||
|
0x97, 0xcb, 0x41, 0x92, 0x24, 0x44, 0xa3, 0xd1, 0x2f, 0x86, 0x42, 0xa1, 0x27, 0xe3, 0xf1, 0xf8,
|
||||||
|
0x57, 0x63, 0xb1, 0xd8, 0xbf, 0x4e, 0xa5, 0x52, 0xff, 0x2c, 0x9d, 0x4e, 0xff, 0xab, 0x9e, 0x9e,
|
||||||
|
0x9e, 0xef, 0x86, 0x42, 0xa1, 0x17, 0x42, 0xa1, 0xd0, 0x9e, 0x68, 0x34, 0xba, 0xdf, 0xe7, 0xf3,
|
||||||
|
0x1d, 0xe2, 0x79, 0x3e, 0x12, 0x08, 0x04, 0x78, 0x00, 0x81, 0x76, 0xbb, 0x4d, 0xc8, 0x68, 0xe2,
|
||||||
|
0x73, 0xa2, 0x2b, 0x6c, 0x87, 0x17, 0x50, 0x6e, 0x34, 0x1a, 0xd1, 0xd9, 0xd9, 0xd9, 0x23, 0xe9,
|
||||||
|
0x74, 0x9a, 0x22, 0xc7, 0x80, 0x61, 0x18, 0x60, 0x59, 0x16, 0x96, 0x65, 0xa1, 0x56, 0xab, 0xa1,
|
||||||
|
0x5e, 0xaf, 0x43, 0x96, 0x65, 0x50, 0x14, 0x05, 0x59, 0x96, 0xed, 0xe3, 0x80, 0x61, 0x18, 0x00,
|
||||||
|
0x80, 0xcf, 0xe7, 0x03, 0xc7, 0x71, 0x18, 0x18, 0x18, 0x40, 0x26, 0x93, 0x81, 0xcb, 0xe5, 0x1a,
|
||||||
|
0x15, 0x04, 0xe1, 0x19, 0x49, 0x92, 0x4a, 0x8a, 0xa2, 0x7c, 0x00, 0x40, 0x01, 0x80, 0x66, 0xb3,
|
||||||
|
0xb9, 0xa8, 0xaa, 0xea, 0xf3, 0x5e, 0xaf, 0x37, 0x18, 0x0a, 0x85, 0x28, 0xc3, 0x30, 0xa0, 0x28,
|
||||||
|
0x0a, 0xdc, 0x6e, 0xb7, 0xfd, 0x1e, 0xc4, 0x10, 0xf5, 0x7a, 0xbd, 0x98, 0x9a, 0x9a, 0x42, 0x30,
|
||||||
|
0x18, 0x44, 0x3a, 0x9d, 0x46, 0x30, 0x18, 0x44, 0x4f, 0x4f, 0x0f, 0x1e, 0x7b, 0xec, 0x31, 0x3c,
|
||||||
|
0xfd, 0xf4, 0xd3, 0xa9, 0xd9, 0xd9, 0xd9, 0xec, 0x97, 0xbf, 0xfc, 0xe5, 0xf8, 0xc9, 0x93, 0x27,
|
||||||
|
0xd3, 0xcf, 0x3e, 0xfb, 0x6c, 0xf4, 0xa9, 0xa7, 0x9e, 0x0a, 0x3f, 0xf9, 0xe4, 0x93, 0x89, 0x7d,
|
||||||
|
0xfb, 0xf6, 0xed, 0x7f, 0xfc, 0xf1, 0xc7, 0x8f, 0x0e, 0x0c, 0x0c, 0x7c, 0x29, 0x95, 0x4a, 0x7d,
|
||||||
|
0x35, 0x1c, 0x0e, 0xff, 0x7e, 0x34, 0x1a, 0xfd, 0x3d, 0x9f, 0xcf, 0x37, 0xc1, 0x71, 0x1c, 0xc7,
|
||||||
|
0xb2, 0xac, 0x25, 0x49, 0x12, 0x21, 0xc1, 0x03, 0xad, 0x32, 0x6e, 0x8b, 0x10, 0xd4, 0x68, 0x34,
|
||||||
|
0xf2, 0x3c, 0xcf, 0x7f, 0x63, 0x7a, 0x7a, 0xda, 0xef, 0xf3, 0xf9, 0x6c, 0x3f, 0x9d, 0xa2, 0x28,
|
||||||
|
0xa8, 0xaa, 0x0a, 0xcb, 0xb2, 0xd0, 0x6a, 0xb5, 0x20, 0x8a, 0xa2, 0x7d, 0x3e, 0x7b, 0xbd, 0x5e,
|
||||||
|
0x3b, 0xb4, 0x5b, 0x28, 0x14, 0xe0, 0xf5, 0x7a, 0xe1, 0xf5, 0x7a, 0xc1, 0x71, 0x1c, 0xd2, 0xe9,
|
||||||
|
0x34, 0xc6, 0xc6, 0xc6, 0xd0, 0xdf, 0xdf, 0x1f, 0xde, 0xd8, 0xd8, 0xf8, 0x27, 0xad, 0x56, 0x4b,
|
||||||
|
0x6e, 0x36, 0x9b, 0x8b, 0xd8, 0xf2, 0xe3, 0x37, 0x69, 0x9a, 0x76, 0x01, 0x38, 0xdc, 0x6e, 0xb7,
|
||||||
|
0x59, 0x8e, 0xe3, 0xd0, 0x6a, 0xb5, 0x50, 0x28, 0x14, 0xc0, 0xf3, 0x3c, 0x62, 0xb1, 0x18, 0x26,
|
||||||
|
0x26, 0x26, 0x70, 0xe0, 0xc0, 0x01, 0x1c, 0x3d, 0x7a, 0x14, 0xc7, 0x8f, 0x1f, 0xc7, 0xe1, 0xc3,
|
||||||
|
0x87, 0x31, 0x3d, 0x3d, 0x8d, 0xa9, 0xa9, 0x29, 0x0c, 0x0f, 0x0f, 0x63, 0x64, 0x64, 0x04, 0x03,
|
||||||
|
0x03, 0x03, 0x18, 0x1b, 0x1b, 0xc3, 0xf0, 0xf0, 0x30, 0xb2, 0xd9, 0x2c, 0x52, 0xa9, 0x94, 0xad,
|
||||||
|
0x5b, 0xa4, 0xd3, 0x69, 0xa4, 0xd3, 0x69, 0xa4, 0x52, 0x29, 0xec, 0xd9, 0xb3, 0x87, 0x7e, 0xf4,
|
||||||
|
0xd1, 0x47, 0x99, 0x47, 0x1e, 0x79, 0x24, 0x3c, 0x3b, 0x3b, 0x3b, 0x9b, 0x48, 0x24, 0xbe, 0xe2,
|
||||||
|
0x76, 0xbb, 0xbf, 0xc2, 0x71, 0xdc, 0xcc, 0xcd, 0x1d, 0xa6, 0x8e, 0xad, 0x1d, 0xea, 0x8e, 0xe2,
|
||||||
|
0x1c, 0x4e, 0xc3, 0x76, 0x49, 0xc1, 0xe5, 0x6b, 0xd7, 0xae, 0x59, 0xe1, 0x70, 0xf8, 0x89, 0xfe,
|
||||||
|
0xfe, 0x7e, 0x26, 0x1c, 0x0e, 0xc3, 0xed, 0x76, 0xc3, 0xe7, 0xf3, 0x6d, 0xbd, 0xc9, 0x4d, 0xf1,
|
||||||
|
0x46, 0x55, 0x55, 0xdb, 0x45, 0x33, 0x0c, 0x03, 0xaa, 0xaa, 0xa2, 0x5e, 0xaf, 0xa3, 0x5e, 0xaf,
|
||||||
|
0x43, 0x51, 0x14, 0x70, 0x1c, 0x87, 0x40, 0x20, 0x00, 0x8f, 0xc7, 0x83, 0x60, 0x30, 0x88, 0x50,
|
||||||
|
0x28, 0x84, 0x54, 0x2a, 0x05, 0x4d, 0xd3, 0xbe, 0x54, 0x2c, 0x16, 0x87, 0x9a, 0xcd, 0xe6, 0x05,
|
||||||
|
0x00, 0x75, 0x41, 0x10, 0xde, 0x17, 0x04, 0xe1, 0xb9, 0x60, 0x30, 0xd8, 0xe3, 0xf1, 0x78, 0x28,
|
||||||
|
0x00, 0xf0, 0xfb, 0xfd, 0x18, 0x18, 0x18, 0xc0, 0xc1, 0x83, 0x07, 0x71, 0xf0, 0xe0, 0x41, 0xec,
|
||||||
|
0xdd, 0xbb, 0x17, 0xb3, 0xb3, 0xb3, 0xe8, 0xeb, 0xeb, 0x03, 0xf1, 0x50, 0x38, 0x8e, 0x03, 0xcf,
|
||||||
|
0xf3, 0xf0, 0x7a, 0xbd, 0x70, 0xbb, 0xdd, 0xf0, 0x7a, 0xbd, 0xf0, 0x78, 0x3c, 0x60, 0x18, 0x06,
|
||||||
|
0x6e, 0xb7, 0x1b, 0x34, 0x4d, 0xdb, 0x44, 0xf4, 0x7a, 0xbd, 0x88, 0xc7, 0xe3, 0x20, 0xb6, 0xc6,
|
||||||
|
0xe0, 0xe0, 0x20, 0x26, 0x27, 0x27, 0x31, 0x3e, 0x3e, 0x8e, 0xd1, 0xd1, 0xd1, 0xc0, 0xc4, 0xc4,
|
||||||
|
0xc4, 0xb4, 0xd7, 0xeb, 0xfd, 0x0a, 0x4d, 0xd3, 0xb3, 0x2e, 0x97, 0x8b, 0x6e, 0xb7, 0xdb, 0x65,
|
||||||
|
0x5d, 0xd7, 0xe5, 0x07, 0x8d, 0x08, 0xdb, 0x16, 0x0c, 0xd2, 0x34, 0xed, 0x9d, 0xf5, 0xf5, 0xf5,
|
||||||
|
0x87, 0xe2, 0xf1, 0xf8, 0x58, 0x22, 0x91, 0xa0, 0x88, 0x6a, 0x17, 0x89, 0x44, 0xe0, 0x76, 0xbb,
|
||||||
|
0x11, 0x0a, 0x85, 0xd0, 0x6a, 0xb5, 0xa0, 0xaa, 0x2a, 0x3c, 0x1e, 0x0f, 0x3c, 0x1e, 0x0f, 0xea,
|
||||||
|
0xf5, 0x3a, 0x38, 0x8e, 0x43, 0xb1, 0x58, 0x84, 0x69, 0x9a, 0x68, 0x34, 0x1a, 0xd0, 0x34, 0x0d,
|
||||||
|
0x8a, 0xa2, 0xc0, 0xb2, 0x2c, 0x7b, 0xf1, 0x34, 0x4d, 0x83, 0xdb, 0xed, 0x9e, 0x6a, 0x36, 0x9b,
|
||||||
|
0xfb, 0x15, 0x45, 0xb9, 0xec, 0x72, 0xb9, 0x46, 0x07, 0x07, 0x07, 0x9f, 0x1f, 0x1f, 0x1f, 0x4f,
|
||||||
|
0x1c, 0x3a, 0x74, 0x88, 0xda, 0xb7, 0x6f, 0x9f, 0x2d, 0x39, 0x47, 0x22, 0x11, 0x70, 0x1c, 0x07,
|
||||||
|
0xaf, 0xd7, 0x0b, 0x9a, 0xa6, 0x6f, 0x79, 0xbd, 0xc4, 0x5b, 0xe9, 0x04, 0xf9, 0x7d, 0x8f, 0xc7,
|
||||||
|
0x03, 0xb7, 0xdb, 0x6d, 0x5f, 0x27, 0x21, 0x04, 0x45, 0x51, 0x60, 0x59, 0x16, 0x81, 0x40, 0x00,
|
||||||
|
0x83, 0x83, 0x83, 0xd8, 0xbb, 0x77, 0x2f, 0x35, 0x38, 0x38, 0x38, 0x14, 0x0c, 0x06, 0x9f, 0x57,
|
||||||
|
0x14, 0xe5, 0x8b, 0x6e, 0xb7, 0xbb, 0x24, 0x08, 0x42, 0x19, 0x0f, 0x50, 0x04, 0x72, 0x3b, 0xa3,
|
||||||
|
0x81, 0x56, 0xad, 0x56, 0x7b, 0x17, 0xc0, 0x89, 0x54, 0x2a, 0x15, 0x8d, 0xc5, 0x62, 0x08, 0x04,
|
||||||
|
0x02, 0xf6, 0x53, 0x45, 0xb6, 0x57, 0x62, 0xf0, 0xb5, 0x5a, 0x2d, 0x68, 0x9a, 0x06, 0x8a, 0xa2,
|
||||||
|
0x60, 0x9a, 0x26, 0x64, 0x59, 0x46, 0x3e, 0x9f, 0x87, 0x69, 0x9a, 0xa8, 0xd7, 0xeb, 0x20, 0x7f,
|
||||||
|
0x1f, 0x89, 0x44, 0xd0, 0xd3, 0xd3, 0x03, 0x9f, 0xcf, 0x07, 0xcb, 0xb2, 0xfa, 0x25, 0x49, 0xfa,
|
||||||
|
0x5a, 0x26, 0x93, 0xf9, 0xd6, 0x0b, 0x2f, 0xbc, 0x90, 0xf9, 0xfa, 0xd7, 0xbf, 0x4e, 0x8d, 0x8f,
|
||||||
|
0x8f, 0xdb, 0xe7, 0xfb, 0xed, 0x16, 0xfc, 0x4e, 0x40, 0x54, 0x4b, 0xf2, 0x2f, 0x4d, 0xd3, 0x70,
|
||||||
|
0xb9, 0x5c, 0xb0, 0xac, 0x2d, 0x7b, 0xaf, 0x33, 0x39, 0x85, 0xa4, 0xab, 0xf5, 0xf4, 0xf4, 0x60,
|
||||||
|
0x68, 0x68, 0x08, 0xe9, 0x74, 0xba, 0x9f, 0xa2, 0xa8, 0xdf, 0x55, 0x14, 0xc5, 0x67, 0x18, 0xc6,
|
||||||
|
0x92, 0xaa, 0xaa, 0x22, 0x1e, 0x00, 0xc1, 0x69, 0xbb, 0xf3, 0x01, 0x6a, 0xd7, 0xaf, 0x5f, 0x2f,
|
||||||
|
0xb1, 0x2c, 0x7b, 0x3c, 0x91, 0x48, 0xf8, 0x22, 0x91, 0x88, 0xbd, 0xcd, 0xfa, 0x7c, 0x3e, 0x44,
|
||||||
|
0x22, 0x11, 0xc4, 0xe3, 0x71, 0x70, 0x1c, 0x87, 0x5a, 0xad, 0x06, 0x96, 0x65, 0x21, 0x08, 0x02,
|
||||||
|
0x34, 0x4d, 0x43, 0xab, 0xd5, 0x42, 0xbd, 0x5e, 0x47, 0xb1, 0x58, 0xb4, 0x8f, 0x0a, 0x51, 0x14,
|
||||||
|
0x11, 0x08, 0x04, 0x90, 0x48, 0x24, 0x10, 0x89, 0x44, 0xa0, 0xeb, 0x3a, 0x02, 0x81, 0x80, 0xf7,
|
||||||
|
0xb9, 0xe7, 0x9e, 0x63, 0x4e, 0x9c, 0x38, 0x81, 0xfe, 0xfe, 0x7e, 0x84, 0x42, 0x21, 0x7b, 0xd1,
|
||||||
|
0xee, 0x07, 0x88, 0xfb, 0xca, 0x30, 0xcc, 0x87, 0x48, 0x41, 0x8e, 0x38, 0x96, 0x65, 0x11, 0x89,
|
||||||
|
0x44, 0x30, 0x34, 0x34, 0x84, 0xd1, 0xd1, 0x51, 0x4f, 0x3c, 0x1e, 0x3f, 0x2c, 0xcb, 0xf2, 0x2c,
|
||||||
|
0xcb, 0xb2, 0xab, 0x95, 0x4a, 0xa5, 0x0a, 0x87, 0x27, 0xa9, 0xde, 0x8f, 0x8c, 0xa0, 0xb9, 0xab,
|
||||||
|
0x57, 0xaf, 0x0a, 0x2c, 0xcb, 0x1e, 0xee, 0xeb, 0xeb, 0xf3, 0x79, 0x3c, 0x1e, 0xf8, 0xfd, 0x7e,
|
||||||
|
0x00, 0x5b, 0x5b, 0x2b, 0xcf, 0xf3, 0x08, 0x85, 0x42, 0x08, 0x87, 0xc3, 0xf0, 0xf9, 0x7c, 0x28,
|
||||||
|
0x16, 0x8b, 0xa0, 0x69, 0x1a, 0x92, 0x24, 0xc1, 0xe5, 0x72, 0xa1, 0xd5, 0x6a, 0x41, 0x92, 0x24,
|
||||||
|
0x54, 0x2a, 0x15, 0x5b, 0xcc, 0x61, 0x18, 0x06, 0x3c, 0xcf, 0xa3, 0xdd, 0x6e, 0x63, 0x7a, 0x7a,
|
||||||
|
0x1a, 0x93, 0x93, 0x93, 0x18, 0x19, 0x19, 0xb1, 0x13, 0x46, 0x77, 0x0a, 0x24, 0xb6, 0x41, 0xbe,
|
||||||
|
0xc8, 0x67, 0xf2, 0x7a, 0xbd, 0xf6, 0x35, 0x0e, 0x0d, 0x0d, 0x61, 0x64, 0x64, 0x64, 0xb0, 0xd9,
|
||||||
|
0x6c, 0x9e, 0x90, 0x24, 0xc9, 0xa8, 0x56, 0xab, 0xab, 0xd8, 0x12, 0xb5, 0x1c, 0xe9, 0x36, 0xde,
|
||||||
|
0x97, 0x94, 0x30, 0xd3, 0x34, 0xcf, 0xce, 0xcd, 0xcd, 0x35, 0x68, 0x9a, 0x3e, 0x1a, 0x8f, 0xc7,
|
||||||
|
0xd9, 0x58, 0x2c, 0x46, 0x91, 0x33, 0xd4, 0xe5, 0x72, 0xd9, 0xe7, 0x28, 0x31, 0xc4, 0x24, 0x49,
|
||||||
|
0x42, 0xa3, 0xd1, 0x00, 0xb0, 0xb5, 0xcd, 0x92, 0x98, 0x3f, 0xc9, 0xfe, 0x6d, 0x34, 0x1a, 0x60,
|
||||||
|
0x59, 0x16, 0x3e, 0x9f, 0x0f, 0x13, 0x13, 0x13, 0x48, 0xa5, 0x52, 0x3b, 0xbe, 0xf8, 0x9d, 0xe8,
|
||||||
|
0xdc, 0x09, 0x00, 0x40, 0xd7, 0x75, 0xbb, 0x72, 0xc9, 0xe3, 0xf1, 0x20, 0x12, 0x89, 0x60, 0x76,
|
||||||
|
0x76, 0x96, 0xb3, 0x2c, 0xeb, 0xb8, 0x61, 0x18, 0x03, 0xba, 0xae, 0xcf, 0x35, 0x9b, 0xcd, 0x2a,
|
||||||
|
0x1c, 0x48, 0x82, 0xfb, 0x96, 0x13, 0x68, 0x9a, 0xe6, 0xd9, 0xa5, 0xa5, 0x25, 0x31, 0x1c, 0x0e,
|
||||||
|
0x1f, 0x4c, 0xa5, 0x52, 0x81, 0x40, 0x20, 0x60, 0x7b, 0x05, 0xe4, 0xe6, 0x79, 0xbd, 0x5e, 0x44,
|
||||||
|
0x22, 0x11, 0x68, 0x9a, 0x66, 0x0b, 0x43, 0x00, 0xec, 0x2a, 0x20, 0xa2, 0x11, 0xc4, 0xe3, 0x71,
|
||||||
|
0x4c, 0x4f, 0x4f, 0x63, 0x68, 0x68, 0x08, 0x89, 0x44, 0x02, 0x6e, 0xb7, 0xbb, 0xdb, 0xf7, 0x0d,
|
||||||
|
0xc0, 0x6f, 0x6d, 0x06, 0xcb, 0xb2, 0x40, 0xd3, 0xb4, 0xed, 0x4d, 0xb4, 0xdb, 0x6d, 0xf8, 0x7c,
|
||||||
|
0x3e, 0x0c, 0x0d, 0x0d, 0x21, 0x12, 0x89, 0x4c, 0x95, 0x4a, 0xa5, 0x3d, 0x34, 0x4d, 0x9f, 0xad,
|
||||||
|
0x6d, 0x05, 0x2b, 0x1c, 0x65, 0x17, 0xdc, 0xd7, 0xac, 0x60, 0x55, 0x55, 0xdf, 0x5d, 0x5e, 0x5e,
|
||||||
|
0x6e, 0x73, 0x1c, 0x77, 0xd0, 0xeb, 0xf5, 0xfa, 0xa3, 0xd1, 0xa8, 0x9d, 0xe6, 0x4d, 0x72, 0xfc,
|
||||||
|
0x48, 0x98, 0x58, 0x10, 0x04, 0x78, 0x3c, 0x1e, 0x18, 0x86, 0x01, 0x59, 0x96, 0xe1, 0x72, 0xb9,
|
||||||
|
0x10, 0x08, 0x04, 0x30, 0x3c, 0x3c, 0x8c, 0xa7, 0x9f, 0x7e, 0x1a, 0x7b, 0xf7, 0xee, 0x05, 0xc9,
|
||||||
|
0x0a, 0x72, 0x1a, 0xc8, 0x35, 0xb5, 0xdb, 0x6d, 0x9b, 0xdc, 0x2e, 0x97, 0x0b, 0xc1, 0x60, 0x10,
|
||||||
|
0x3c, 0xcf, 0x23, 0x12, 0x89, 0x0c, 0x16, 0x0a, 0x85, 0xfd, 0xcd, 0x66, 0x73, 0x5e, 0x92, 0xa4,
|
||||||
|
0x02, 0x1c, 0x44, 0x82, 0xfb, 0x9e, 0x16, 0x2e, 0x49, 0xd2, 0x3b, 0x2b, 0x2b, 0x2b, 0xa6, 0xcb,
|
||||||
|
0xe5, 0x9a, 0x31, 0x0c, 0x83, 0xe3, 0x79, 0x9e, 0x26, 0x21, 0x5b, 0x62, 0x48, 0x85, 0x42, 0x21,
|
||||||
|
0x84, 0x42, 0x21, 0x98, 0xa6, 0x09, 0x45, 0x51, 0xc0, 0xf3, 0x3c, 0x44, 0x51, 0x44, 0x38, 0x1c,
|
||||||
|
0xc6, 0xe1, 0xc3, 0x87, 0x71, 0xf8, 0xf0, 0x61, 0xc4, 0xe3, 0x71, 0x7b, 0xcb, 0x75, 0x1a, 0x88,
|
||||||
|
0x27, 0x43, 0x8c, 0x51, 0xb2, 0xbb, 0x91, 0xa2, 0xd6, 0x54, 0x2a, 0x85, 0x60, 0x30, 0xd8, 0xb7,
|
||||||
|
0xb1, 0xb1, 0xb1, 0xbf, 0xd5, 0x6a, 0xbd, 0xdd, 0x6a, 0xb5, 0x2a, 0x70, 0x08, 0x09, 0x76, 0xe4,
|
||||||
|
0x8e, 0x8a, 0xa2, 0xf8, 0xf6, 0xc5, 0x8b, 0x17, 0xd7, 0x04, 0x41, 0x18, 0xad, 0xd5, 0x6a, 0xbc,
|
||||||
|
0xd7, 0xeb, 0xf5, 0xf8, 0x7c, 0x3e, 0x50, 0x14, 0x65, 0x47, 0x05, 0x03, 0x81, 0x80, 0x9d, 0x33,
|
||||||
|
0xe0, 0xf3, 0xf9, 0xe0, 0xf1, 0x78, 0x30, 0x35, 0x35, 0x85, 0x67, 0x9f, 0x7d, 0x16, 0xa9, 0x54,
|
||||||
|
0xca, 0x8e, 0x31, 0x38, 0x15, 0xc4, 0x5d, 0x24, 0x06, 0xa2, 0x65, 0x59, 0x30, 0x0c, 0x03, 0x2e,
|
||||||
|
0x97, 0x0b, 0x86, 0x61, 0x60, 0x70, 0x70, 0x10, 0xa9, 0x54, 0xaa, 0xe7, 0xc6, 0x8d, 0x1b, 0x7b,
|
||||||
|
0x15, 0x45, 0xb9, 0xec, 0x94, 0x9d, 0x60, 0xc7, 0x1e, 0x29, 0x5d, 0xd7, 0xe7, 0x17, 0x17, 0x17,
|
||||||
|
0xff, 0xe1, 0xfa, 0xf5, 0xeb, 0x9c, 0x24, 0x49, 0x99, 0x76, 0xbb, 0xed, 0x11, 0x45, 0x91, 0x21,
|
||||||
|
0x86, 0x13, 0xc7, 0x71, 0xb6, 0x4e, 0x10, 0x0c, 0x06, 0xd1, 0xd7, 0xd7, 0x87, 0x23, 0x47, 0x8e,
|
||||||
|
0x20, 0x99, 0x4c, 0xc2, 0xef, 0xf7, 0x3b, 0xf6, 0xe9, 0xef, 0x44, 0xa7, 0x86, 0xa0, 0xeb, 0xba,
|
||||||
|
0x1d, 0xa3, 0x30, 0x4d, 0x13, 0x1e, 0x8f, 0x07, 0xe9, 0x74, 0x1a, 0xba, 0xae, 0xf7, 0x97, 0x4a,
|
||||||
|
0xa5, 0x47, 0x04, 0x41, 0x38, 0xa3, 0xaa, 0x6a, 0x11, 0x5d, 0x26, 0xc1, 0x4e, 0xdf, 0xd5, 0x7a,
|
||||||
|
0xa3, 0xd1, 0xf8, 0xf9, 0xb9, 0x73, 0xe7, 0xde, 0xb9, 0x78, 0xf1, 0xa2, 0x77, 0x75, 0x75, 0x35,
|
||||||
|
0x41, 0xd3, 0x34, 0x2b, 0xcb, 0xb2, 0x8b, 0xf4, 0x01, 0x20, 0xf1, 0x80, 0x50, 0x28, 0x84, 0xbe,
|
||||||
|
0xbe, 0x3e, 0x70, 0x1c, 0xf7, 0xb1, 0xa7, 0xdf, 0x34, 0xcd, 0xae, 0x79, 0x00, 0xb7, 0x03, 0x39,
|
||||||
|
0x0a, 0xc8, 0x2e, 0x40, 0x76, 0xb4, 0x60, 0x30, 0x68, 0xdb, 0x3b, 0x83, 0x83, 0x83, 0xf0, 0xfb,
|
||||||
|
0xfd, 0xc9, 0x5c, 0x2e, 0x97, 0xd9, 0xd8, 0xd8, 0x78, 0x13, 0x80, 0x70, 0xcf, 0x6f, 0x7c, 0x0f,
|
||||||
|
0xe8, 0xd6, 0x63, 0x95, 0xab, 0xd5, 0x6a, 0x7f, 0x7b, 0xf5, 0xea, 0xd5, 0x0b, 0x82, 0x20, 0xf4,
|
||||||
|
0x96, 0x4a, 0xa5, 0x84, 0xaa, 0xaa, 0x5e, 0x41, 0x10, 0x50, 0xa9, 0x54, 0x6c, 0xe3, 0xc9, 0xeb,
|
||||||
|
0xf5, 0x22, 0x10, 0x08, 0x7c, 0xe2, 0x62, 0x3b, 0x91, 0x00, 0x00, 0x6c, 0xaf, 0x80, 0x10, 0x81,
|
||||||
|
0x08, 0x48, 0x24, 0x4b, 0x89, 0xa2, 0x28, 0x68, 0x9a, 0x06, 0x4d, 0xd3, 0xc6, 0x05, 0x41, 0xa8,
|
||||||
|
0x97, 0x4a, 0xa5, 0x8b, 0xe8, 0xa2, 0x74, 0xdc, 0xed, 0x7d, 0x75, 0x75, 0x75, 0x75, 0xf5, 0xe5,
|
||||||
|
0xa5, 0xa5, 0x25, 0xb7, 0x20, 0x08, 0x53, 0x1e, 0x8f, 0x87, 0x53, 0x14, 0xc5, 0x2e, 0xfb, 0xe6,
|
||||||
|
0x79, 0xfe, 0x13, 0xb7, 0x7e, 0xa7, 0x2e, 0x7e, 0x27, 0x4c, 0xd3, 0x84, 0xcb, 0xe5, 0x82, 0xc7,
|
||||||
|
0xe3, 0x81, 0xa2, 0x28, 0xb6, 0x3d, 0xa0, 0xeb, 0x3a, 0x5a, 0xad, 0x16, 0x62, 0xb1, 0x18, 0x56,
|
||||||
|
0x57, 0x57, 0x1f, 0x15, 0x04, 0x61, 0x4e, 0x92, 0xa4, 0xeb, 0xe8, 0x52, 0x58, 0xb9, 0xdb, 0x04,
|
||||||
|
0x00, 0x00, 0x45, 0x51, 0x94, 0xd7, 0xd7, 0xd6, 0xd6, 0xc2, 0x9a, 0xa6, 0x1d, 0x9a, 0x9e, 0x9e,
|
||||||
|
0x66, 0x06, 0x06, 0x06, 0xd0, 0xd3, 0xd3, 0xd3, 0x55, 0xb1, 0xe7, 0x76, 0x20, 0xc6, 0xde, 0xed,
|
||||||
|
0x40, 0x72, 0x22, 0x48, 0x22, 0x2c, 0x59, 0x7c, 0x8a, 0xa2, 0xc0, 0xf3, 0x3c, 0x00, 0x40, 0x96,
|
||||||
|
0x65, 0x66, 0x6d, 0x6d, 0x6d, 0x9f, 0x28, 0x8a, 0xbf, 0xd4, 0x34, 0xad, 0x84, 0x2e, 0x08, 0x45,
|
||||||
|
0x8e, 0x71, 0xaa, 0x5b, 0xad, 0xd6, 0x5b, 0x86, 0x61, 0xe8, 0x44, 0x49, 0x23, 0xf9, 0x04, 0x4e,
|
||||||
|
0xc4, 0x47, 0xaf, 0x8b, 0x04, 0x8b, 0x3a, 0x7f, 0x4e, 0x9e, 0x7e, 0x8a, 0xa2, 0xa0, 0xeb, 0x5b,
|
||||||
|
0x0f, 0x37, 0x91, 0x8d, 0x0d, 0xc3, 0x80, 0xdf, 0xef, 0xc7, 0xe4, 0xe4, 0x24, 0x8e, 0x1c, 0x39,
|
||||||
|
0x32, 0x1e, 0x8d, 0x46, 0xff, 0x1d, 0x80, 0x68, 0x37, 0x3e, 0x8b, 0x63, 0x08, 0x00, 0x20, 0x3e,
|
||||||
|
0x3e, 0x3e, 0x4e, 0x0f, 0x0c, 0x0c, 0x80, 0xb8, 0x88, 0x0f, 0x0a, 0x6e, 0x75, 0xad, 0x84, 0x08,
|
||||||
|
0x44, 0x28, 0xd2, 0x34, 0xcd, 0x2e, 0x67, 0x0f, 0x87, 0xc3, 0x48, 0x26, 0x93, 0x18, 0x1f, 0x1f,
|
||||||
|
0x47, 0x5f, 0x5f, 0xdf, 0x3f, 0xe7, 0x38, 0xee, 0x51, 0x6c, 0x35, 0xc6, 0xdc, 0x51, 0x38, 0x85,
|
||||||
|
0x00, 0x74, 0x38, 0x1c, 0x7e, 0xaa, 0xb7, 0xb7, 0x97, 0xc9, 0x66, 0xb3, 0xb6, 0x64, 0xfc, 0x20,
|
||||||
|
0x83, 0x18, 0x82, 0xc0, 0x6f, 0x63, 0x07, 0x0c, 0xc3, 0xd8, 0xc6, 0x21, 0x49, 0x4f, 0xeb, 0xef,
|
||||||
|
0xef, 0xc7, 0xe4, 0xe4, 0xa4, 0xd7, 0xe5, 0x72, 0x7d, 0x1b, 0x40, 0x78, 0xa7, 0xaf, 0xd3, 0x29,
|
||||||
|
0x04, 0x48, 0x25, 0x12, 0x89, 0x47, 0xc6, 0xc7, 0xc7, 0x19, 0x22, 0x08, 0x39, 0x51, 0xf2, 0xfd,
|
||||||
|
0x24, 0x7c, 0x74, 0xfb, 0x27, 0xe8, 0x8c, 0x13, 0x18, 0x86, 0x01, 0x9a, 0xa6, 0xed, 0xec, 0x23,
|
||||||
|
0x97, 0xcb, 0x65, 0x17, 0xae, 0xa4, 0xd3, 0x69, 0x8c, 0x8e, 0x8e, 0x22, 0x1a, 0x8d, 0x3e, 0xe6,
|
||||||
|
0x76, 0xbb, 0x07, 0xb1, 0xc3, 0x76, 0x99, 0x53, 0xee, 0xf2, 0xc8, 0xe8, 0xe8, 0x68, 0x4f, 0x2a,
|
||||||
|
0x95, 0xa2, 0x48, 0xac, 0xe0, 0x41, 0xc1, 0x9d, 0x18, 0x83, 0x96, 0x65, 0xd9, 0x44, 0x20, 0xda,
|
||||||
|
0x00, 0xb1, 0x71, 0x28, 0x8a, 0x42, 0x3c, 0x1e, 0xc7, 0xde, 0xbd, 0x7b, 0xe3, 0xd9, 0x6c, 0xf6,
|
||||||
|
0x49, 0x00, 0x3b, 0xba, 0xfd, 0x39, 0x85, 0x00, 0xb3, 0x3d, 0x3d, 0x3d, 0x0c, 0xc9, 0x28, 0xbe,
|
||||||
|
0xd5, 0x53, 0xf5, 0x20, 0x82, 0xa4, 0x91, 0x75, 0x7e, 0x2e, 0x86, 0x61, 0x3e, 0x54, 0x1d, 0xd5,
|
||||||
|
0xd3, 0xd3, 0x83, 0x54, 0x2a, 0x05, 0x8f, 0xc7, 0x73, 0x14, 0x5b, 0x8d, 0xb1, 0x77, 0x0c, 0x8e,
|
||||||
|
0x20, 0x80, 0xcf, 0xe7, 0x1b, 0x0d, 0x85, 0x42, 0x74, 0x34, 0x1a, 0x45, 0x30, 0x18, 0xb4, 0xc3,
|
||||||
|
0xc0, 0x9f, 0x27, 0x74, 0x1e, 0x69, 0xba, 0xae, 0x43, 0x55, 0x55, 0x98, 0xa6, 0x69, 0x8b, 0x43,
|
||||||
|
0x89, 0x44, 0x02, 0xb1, 0x58, 0x6c, 0x7f, 0x34, 0x1a, 0x8d, 0x63, 0x07, 0xd7, 0xc5, 0x11, 0x04,
|
||||||
|
0x60, 0x59, 0x96, 0x89, 0x44, 0x22, 0x60, 0x59, 0x16, 0x86, 0x61, 0x3c, 0x50, 0x47, 0xc0, 0x9d,
|
||||||
|
0x42, 0xd3, 0xb6, 0x6a, 0x5b, 0x3a, 0x6d, 0x01, 0x9a, 0xa6, 0xc1, 0x71, 0x1c, 0x92, 0xc9, 0x24,
|
||||||
|
0x32, 0x99, 0x0c, 0x58, 0x96, 0x8d, 0x01, 0xc8, 0x62, 0x07, 0xed, 0x00, 0x47, 0x10, 0x80, 0xe3,
|
||||||
|
0x38, 0xa4, 0x52, 0x29, 0xe8, 0xba, 0x0e, 0xc3, 0x78, 0xa0, 0xb2, 0xaa, 0xef, 0x18, 0x24, 0x04,
|
||||||
|
0x4e, 0xbc, 0x00, 0x52, 0x32, 0x6f, 0x9a, 0xa6, 0x5d, 0x14, 0x93, 0x4a, 0xa5, 0x58, 0x9e, 0xe7,
|
||||||
|
0x67, 0x00, 0xec, 0x58, 0xe8, 0xd3, 0x11, 0x04, 0x20, 0x51, 0x34, 0x55, 0x55, 0x3f, 0xb7, 0x04,
|
||||||
|
0x20, 0x9e, 0x80, 0x65, 0x59, 0x50, 0x14, 0x05, 0xa6, 0x69, 0xc2, 0x34, 0x4d, 0x68, 0x9a, 0x86,
|
||||||
|
0x44, 0x22, 0x81, 0x89, 0x89, 0x09, 0x64, 0x32, 0x19, 0x04, 0x83, 0xc1, 0x4c, 0x24, 0x12, 0xf9,
|
||||||
|
0xc7, 0xb5, 0x03, 0x48, 0x92, 0x44, 0xad, 0xaf, 0xaf, 0xdb, 0x65, 0xde, 0x9f, 0x27, 0x23, 0x90,
|
||||||
|
0x80, 0x2c, 0x38, 0xd1, 0x06, 0x64, 0x59, 0x46, 0xbb, 0xdd, 0xb6, 0x83, 0x5d, 0x24, 0x02, 0xca,
|
||||||
|
0x71, 0xdc, 0x61, 0x97, 0xcb, 0xb5, 0x63, 0x86, 0xa0, 0x23, 0x08, 0x40, 0x51, 0x94, 0xbe, 0xbe,
|
||||||
|
0xbe, 0x0e, 0x41, 0x10, 0xec, 0x04, 0xcb, 0x7b, 0x05, 0x71, 0xbd, 0xba, 0x81, 0x4f, 0x7a, 0x5f,
|
||||||
|
0x97, 0xcb, 0xf5, 0xa1, 0x06, 0x16, 0xa6, 0x69, 0xa2, 0xd5, 0x6a, 0x41, 0xd7, 0x75, 0x9b, 0xf8,
|
||||||
|
0x37, 0x05, 0xa3, 0x94, 0x65, 0x59, 0x61, 0xec, 0x50, 0x55, 0xb2, 0x23, 0xcc, 0xed, 0x6a, 0xb5,
|
||||||
|
0x7a, 0xad, 0x54, 0x2a, 0x99, 0x8a, 0xa2, 0xd8, 0xc6, 0xd2, 0x76, 0xe0, 0x4e, 0x82, 0x36, 0xf7,
|
||||||
|
0x03, 0xb7, 0x8a, 0x15, 0x90, 0x23, 0xa0, 0xdd, 0x6e, 0xe3, 0xec, 0xd9, 0xb3, 0xc8, 0xe7, 0xf3,
|
||||||
|
0x98, 0x98, 0x98, 0xc0, 0xc8, 0xc8, 0x88, 0x5d, 0x5f, 0x10, 0x08, 0x04, 0x06, 0x74, 0x5d, 0x9f,
|
||||||
|
0x06, 0xb0, 0x8c, 0x1d, 0x68, 0x67, 0xe3, 0x08, 0x02, 0x00, 0xf8, 0xb5, 0x20, 0x08, 0xed, 0x7a,
|
||||||
|
0xbd, 0xee, 0xed, 0xac, 0xc4, 0xb9, 0x17, 0x74, 0xe6, 0xee, 0x3b, 0x01, 0x24, 0x59, 0xc4, 0xb2,
|
||||||
|
0x2c, 0x9c, 0x3f, 0x7f, 0x1e, 0x7f, 0xf5, 0x57, 0x7f, 0x85, 0x5c, 0x2e, 0x87, 0x81, 0x81, 0x01,
|
||||||
|
0xfc, 0xe1, 0x1f, 0xfe, 0x21, 0x92, 0xc9, 0xa4, 0xdd, 0x5f, 0xc9, 0xe3, 0xf1, 0xec, 0xd8, 0xce,
|
||||||
|
0xec, 0x14, 0x02, 0x7c, 0xb0, 0xba, 0xba, 0x7a, 0x4d, 0xd3, 0xb4, 0xfd, 0xb2, 0x2c, 0xd3, 0x91,
|
||||||
|
0x48, 0xa4, 0xdb, 0xd7, 0xf3, 0x31, 0x10, 0x6d, 0xff, 0x6e, 0xaa, 0x90, 0x3a, 0xc9, 0x68, 0x9a,
|
||||||
|
0x26, 0x2e, 0x5c, 0xb8, 0x80, 0xa5, 0xa5, 0x25, 0xd4, 0x6a, 0x35, 0x3b, 0x41, 0x84, 0x14, 0xac,
|
||||||
|
0xb2, 0x2c, 0xbb, 0xa3, 0xe9, 0x6f, 0x8e, 0xb0, 0x01, 0x00, 0x08, 0xb2, 0x2c, 0x9f, 0x6f, 0xb5,
|
||||||
|
0x5a, 0x46, 0x67, 0x10, 0xc5, 0x29, 0x30, 0x4d, 0x13, 0xab, 0xab, 0xab, 0x38, 0x7d, 0xfa, 0x34,
|
||||||
|
0xae, 0x5f, 0xbf, 0x7e, 0x4f, 0xc7, 0x14, 0xc9, 0x0f, 0x24, 0x25, 0x73, 0xe4, 0x7b, 0x5d, 0xd7,
|
||||||
|
0x6d, 0x81, 0x68, 0x27, 0xe1, 0x14, 0x02, 0xa0, 0x56, 0xab, 0xbd, 0xbe, 0xb9, 0xb9, 0xa9, 0x15,
|
||||||
|
0x0a, 0x05, 0xbb, 0xa7, 0x80, 0x53, 0x90, 0xcf, 0xe7, 0xf1, 0xa3, 0x1f, 0xfd, 0x08, 0xdf, 0xff,
|
||||||
|
0xfe, 0xf7, 0xf1, 0xe7, 0x7f, 0xfe, 0xe7, 0x98, 0x9f, 0x9f, 0xb7, 0x63, 0xfc, 0x9f, 0x05, 0x24,
|
||||||
|
0x0b, 0xfa, 0xd8, 0xb1, 0x63, 0x98, 0x9e, 0x9e, 0xc6, 0xc0, 0xc0, 0x00, 0x8e, 0x1f, 0x3f, 0x8e,
|
||||||
|
0xde, 0xde, 0x5e, 0xd4, 0xeb, 0x75, 0x3b, 0x5c, 0xbc, 0x93, 0xae, 0xb0, 0x53, 0x8e, 0x00, 0xc8,
|
||||||
|
0xb2, 0xfc, 0xfe, 0x6b, 0xaf, 0xbd, 0x26, 0x4e, 0x4c, 0x4c, 0x70, 0x23, 0x23, 0x23, 0x08, 0x04,
|
||||||
|
0x02, 0xdd, 0xbe, 0x24, 0x1b, 0x67, 0xcf, 0x9e, 0xc5, 0x9b, 0x6f, 0xbe, 0x09, 0x45, 0x51, 0xb0,
|
||||||
|
0xb1, 0xb1, 0x81, 0x64, 0x32, 0x89, 0x81, 0x81, 0x01, 0x7c, 0xd6, 0xa3, 0xca, 0xb2, 0x2c, 0xe8,
|
||||||
|
0xba, 0x8e, 0xa9, 0xa9, 0x29, 0xfc, 0xc9, 0x9f, 0xfc, 0x09, 0xea, 0xf5, 0x3a, 0xd2, 0xe9, 0xb4,
|
||||||
|
0x5d, 0x6d, 0xdc, 0x6a, 0xb5, 0xd0, 0x6c, 0x36, 0x77, 0x94, 0x00, 0x8e, 0xd9, 0x01, 0x00, 0xac,
|
||||||
|
0x8a, 0xa2, 0x58, 0x94, 0x24, 0xc9, 0x24, 0x5d, 0xbf, 0x9c, 0x82, 0x4a, 0xa5, 0x82, 0x52, 0xa9,
|
||||||
|
0x64, 0x57, 0x32, 0x0b, 0x82, 0x70, 0x57, 0xc7, 0x14, 0x71, 0x71, 0x75, 0x5d, 0x47, 0x5f, 0x5f,
|
||||||
|
0x1f, 0x66, 0x66, 0x66, 0x10, 0x0a, 0x85, 0x3e, 0x74, 0xe6, 0x0f, 0x0d, 0x0d, 0xed, 0x28, 0xf9,
|
||||||
|
0x9d, 0x44, 0x00, 0x79, 0x75, 0x75, 0xf5, 0xe7, 0xab, 0xab, 0xab, 0xba, 0xae, 0xeb, 0x8e, 0xb2,
|
||||||
|
0x03, 0xc6, 0xc6, 0xc6, 0xec, 0x27, 0x35, 0x12, 0x89, 0x60, 0x66, 0x66, 0x06, 0x1c, 0xf7, 0xd9,
|
||||||
|
0xb5, 0x1a, 0x52, 0x32, 0x46, 0x74, 0x00, 0x12, 0x22, 0x26, 0x5f, 0xa9, 0x54, 0xca, 0x6e, 0xaf,
|
||||||
|
0xb3, 0x53, 0x70, 0x42, 0x52, 0xa8, 0x0d, 0x59, 0x96, 0xf3, 0xd1, 0x68, 0xf4, 0x85, 0x3d, 0x7b,
|
||||||
|
0xf6, 0xf8, 0x49, 0x6f, 0x81, 0xed, 0xc4, 0xdd, 0xea, 0x02, 0x3d, 0x3d, 0x3d, 0x88, 0xc7, 0xe3,
|
||||||
|
0x30, 0x4d, 0x13, 0x8f, 0x3f, 0xfe, 0x38, 0x4e, 0x9c, 0x38, 0x81, 0x50, 0x28, 0xf4, 0x99, 0x5f,
|
||||||
|
0x4b, 0x55, 0x55, 0x7b, 0x17, 0x20, 0xa9, 0x62, 0x64, 0x24, 0x5e, 0xad, 0x56, 0x43, 0xb1, 0x58,
|
||||||
|
0xc4, 0x85, 0x0b, 0x17, 0xcc, 0xa5, 0xa5, 0xa5, 0x17, 0x25, 0x49, 0xba, 0x86, 0x1d, 0x68, 0x37,
|
||||||
|
0xe3, 0x18, 0x1b, 0xe0, 0x26, 0xae, 0x2c, 0x2e, 0x2e, 0xfe, 0xfc, 0xfd, 0xf7, 0xdf, 0x7f, 0x61,
|
||||||
|
0x64, 0x64, 0xc4, 0xbd, 0xdd, 0x42, 0xce, 0xdd, 0xbe, 0x16, 0xcb, 0xb2, 0x78, 0xee, 0xb9, 0xe7,
|
||||||
|
0x70, 0xf4, 0xe8, 0xd1, 0x0f, 0x35, 0xc3, 0xbc, 0x13, 0x90, 0xcf, 0x40, 0x94, 0xc9, 0x4e, 0x77,
|
||||||
|
0x90, 0x14, 0x93, 0xb6, 0xdb, 0x6d, 0xbb, 0x7b, 0x9a, 0x28, 0x8a, 0x79, 0x8a, 0xa2, 0xae, 0x61,
|
||||||
|
0x87, 0xd2, 0xc4, 0x9d, 0x74, 0x04, 0x00, 0x00, 0xe6, 0xe7, 0xe7, 0x5f, 0x5c, 0x59, 0x59, 0x51,
|
||||||
|
0x88, 0x56, 0xee, 0x24, 0x04, 0x83, 0xc1, 0x4f, 0x5d, 0xfc, 0xce, 0xec, 0x1f, 0x49, 0x92, 0xb0,
|
||||||
|
0xb9, 0xb9, 0x89, 0x62, 0xb1, 0x88, 0x66, 0xb3, 0x69, 0x7b, 0x36, 0x9d, 0x9f, 0xcb, 0x34, 0x4d,
|
||||||
|
0xf0, 0x3c, 0x6f, 0x13, 0x42, 0xd3, 0xb4, 0x7a, 0x6f, 0x6f, 0xef, 0x8e, 0x95, 0x91, 0x3b, 0x6d,
|
||||||
|
0x07, 0x00, 0x80, 0x5f, 0x5d, 0xbe, 0x7c, 0xf9, 0xc2, 0xfa, 0xfa, 0xfa, 0x91, 0x74, 0x3a, 0xed,
|
||||||
|
0xa8, 0x23, 0xea, 0x4e, 0x21, 0x49, 0x12, 0x2e, 0x5d, 0xba, 0x84, 0xb7, 0xdf, 0x7e, 0x1b, 0xeb,
|
||||||
|
0xeb, 0xeb, 0xa0, 0x69, 0x1a, 0xb1, 0x58, 0x0c, 0x33, 0x33, 0x33, 0x38, 0x70, 0xe0, 0x00, 0xe9,
|
||||||
|
0x77, 0x64, 0x27, 0x83, 0x50, 0x14, 0x85, 0x46, 0xa3, 0x81, 0x8d, 0x8d, 0x0d, 0x54, 0xab, 0xd5,
|
||||||
|
0xf6, 0xc2, 0xc2, 0xc2, 0x8e, 0xf9, 0xc0, 0x4e, 0x24, 0x80, 0x7a, 0xf1, 0xe2, 0xc5, 0x9f, 0xbd,
|
||||||
|
0xf7, 0xde, 0x7b, 0x87, 0xa6, 0xa7, 0xa7, 0x5d, 0xdb, 0x6d, 0x07, 0xdc, 0xf7, 0x8b, 0x57, 0x55,
|
||||||
|
0xbc, 0xf8, 0xe2, 0x8b, 0x58, 0x59, 0x59, 0xc1, 0xec, 0xec, 0x2c, 0x1e, 0x7e, 0xf8, 0x61, 0x68,
|
||||||
|
0x9a, 0x86, 0x5c, 0x2e, 0x87, 0x53, 0xa7, 0x4e, 0x41, 0x55, 0x55, 0x3c, 0xfe, 0xf8, 0xe3, 0x76,
|
||||||
|
0x35, 0xb1, 0xaa, 0xaa, 0xf6, 0x51, 0xd0, 0x68, 0x34, 0x20, 0xcb, 0xf2, 0x19, 0x49, 0x92, 0x94,
|
||||||
|
0x9d, 0xba, 0x5e, 0x27, 0x12, 0x00, 0xb9, 0x5c, 0xee, 0xa5, 0x33, 0x67, 0xce, 0xfc, 0xe9, 0x73,
|
||||||
|
0xcf, 0x3d, 0xe7, 0xbd, 0x55, 0x79, 0x98, 0xd3, 0x40, 0xb6, 0xfd, 0xf3, 0xe7, 0xcf, 0xe3, 0xcc,
|
||||||
|
0x99, 0x33, 0x78, 0xea, 0xa9, 0xa7, 0xf0, 0xa5, 0x2f, 0x7d, 0x09, 0x91, 0x48, 0x04, 0x86, 0x61,
|
||||||
|
0x60, 0x6c, 0x6c, 0x0c, 0xa1, 0x50, 0x08, 0xaf, 0xbc, 0xf2, 0x0a, 0x4c, 0xd3, 0xc4, 0x23, 0x8f,
|
||||||
|
0x3c, 0x02, 0x8e, 0xe3, 0x20, 0x49, 0x92, 0xfd, 0xb7, 0xa2, 0x28, 0xa2, 0x5c, 0x2e, 0xdf, 0xc0,
|
||||||
|
0x0e, 0x96, 0x89, 0x39, 0x92, 0x00, 0x00, 0x36, 0x9a, 0xcd, 0xe6, 0x4a, 0x2e, 0x97, 0x8b, 0x64,
|
||||||
|
0x32, 0x19, 0xfa, 0x41, 0x20, 0x40, 0xa5, 0x52, 0xc1, 0x3b, 0xef, 0xbc, 0x83, 0x57, 0x5f, 0x7d,
|
||||||
|
0x15, 0x92, 0x24, 0xd9, 0x09, 0x2e, 0xed, 0x76, 0xdb, 0xee, 0x32, 0xa6, 0xaa, 0x2a, 0x72, 0xb9,
|
||||||
|
0x1c, 0x7e, 0xf8, 0xc3, 0x1f, 0xc2, 0xb2, 0x2c, 0x1c, 0x3c, 0x78, 0x10, 0x9a, 0xa6, 0xc1, 0xe3,
|
||||||
|
0xf1, 0xa0, 0xd9, 0x6c, 0x42, 0xd3, 0x34, 0xf8, 0x7c, 0xbe, 0x1d, 0xb5, 0xcb, 0x9c, 0x7a, 0x67,
|
||||||
|
0xdb, 0x1b, 0x1b, 0x1b, 0xe9, 0x6c, 0x36, 0x7b, 0xe4, 0xa1, 0x87, 0x1e, 0x62, 0x3a, 0x87, 0x50,
|
||||||
|
0x38, 0x11, 0x82, 0x20, 0xe0, 0x2f, 0xff, 0xf2, 0x2f, 0xf1, 0xc6, 0x1b, 0x6f, 0x80, 0x61, 0x18,
|
||||||
|
0x94, 0x4a, 0x25, 0x54, 0x2a, 0x15, 0x7b, 0x60, 0x46, 0xad, 0x56, 0xc3, 0xdc, 0xdc, 0x1c, 0x5e,
|
||||||
|
0x79, 0xe5, 0x15, 0xe4, 0xf3, 0x79, 0xd4, 0xeb, 0x75, 0xe4, 0x72, 0x39, 0xf4, 0xf6, 0xf6, 0x62,
|
||||||
|
0x78, 0x78, 0x18, 0x96, 0x65, 0xe1, 0xd2, 0xa5, 0x4b, 0x38, 0x75, 0xea, 0x94, 0xb6, 0xb2, 0xb2,
|
||||||
|
0xf2, 0x17, 0x8a, 0xa2, 0x2c, 0x60, 0x87, 0x3a, 0x8e, 0x3a, 0x75, 0x07, 0x40, 0xbd, 0x5e, 0x7f,
|
||||||
|
0x75, 0x6e, 0x6e, 0xee, 0x7b, 0x95, 0x4a, 0x85, 0x25, 0x6d, 0xd8, 0x9c, 0x8a, 0x77, 0xdf, 0x7d,
|
||||||
|
0x17, 0x0b, 0x0b, 0x0b, 0xe8, 0xed, 0xed, 0xb5, 0x3b, 0x85, 0x91, 0xff, 0x0b, 0x87, 0xc3, 0xa0,
|
||||||
|
0x69, 0x1a, 0xf5, 0x7a, 0x1d, 0x8d, 0x46, 0x03, 0xb1, 0x58, 0x0c, 0x14, 0x45, 0x61, 0x7d, 0x7d,
|
||||||
|
0x1d, 0x6f, 0xbe, 0xf9, 0x26, 0x26, 0x27, 0x27, 0x01, 0x6c, 0xa5, 0x8a, 0x6b, 0x9a, 0xd6, 0xa4,
|
||||||
|
0x69, 0x7a, 0x11, 0x3b, 0xd8, 0x5b, 0xd0, 0xb9, 0x77, 0x15, 0x98, 0xcf, 0xe7, 0xf3, 0x2b, 0x85,
|
||||||
|
0x42, 0x61, 0x5f, 0x3a, 0x9d, 0xa6, 0x9d, 0x4a, 0x00, 0x55, 0x55, 0x71, 0xf9, 0xf2, 0x65, 0xbb,
|
||||||
|
0xb9, 0x25, 0x19, 0x87, 0xe3, 0x76, 0xbb, 0xb1, 0xb6, 0xb6, 0x86, 0x66, 0xb3, 0x89, 0x52, 0xa9,
|
||||||
|
0x04, 0x5d, 0xd7, 0x11, 0x0e, 0x87, 0xed, 0x16, 0xb6, 0xed, 0x76, 0x1b, 0xa1, 0x50, 0xc8, 0xee,
|
||||||
|
0xa6, 0xbe, 0xb8, 0xb8, 0x88, 0x56, 0xab, 0x55, 0xd3, 0xb6, 0x33, 0x23, 0xe6, 0x0e, 0xe0, 0xcc,
|
||||||
|
0xbb, 0xba, 0x05, 0xa1, 0x58, 0x2c, 0x5e, 0x5a, 0x5c, 0x5c, 0x9c, 0x9e, 0x99, 0x99, 0xd9, 0xf6,
|
||||||
|
0x73, 0x71, 0xbb, 0x44, 0x26, 0x92, 0xe8, 0xd1, 0x68, 0x34, 0xe0, 0x72, 0xb9, 0xe0, 0xf7, 0xfb,
|
||||||
|
0x11, 0x8d, 0x6e, 0x15, 0xfa, 0xf2, 0x3c, 0x6f, 0xcf, 0x4b, 0xd2, 0x34, 0x0d, 0xa1, 0x50, 0xc8,
|
||||||
|
0xee, 0x0f, 0x60, 0x59, 0x16, 0xc6, 0xc6, 0xc6, 0x3e, 0x54, 0x05, 0x2d, 0x49, 0xd2, 0x39, 0x51,
|
||||||
|
0x14, 0x2b, 0xd8, 0xc1, 0x32, 0x71, 0xc7, 0x09, 0x41, 0x9d, 0x58, 0x5b, 0x5b, 0x7b, 0x43, 0x92,
|
||||||
|
0x24, 0xbd, 0x33, 0x99, 0x72, 0xbb, 0xb0, 0x1d, 0x8b, 0x4f, 0x6a, 0xff, 0xd3, 0xe9, 0x34, 0x38,
|
||||||
|
0x8e, 0x83, 0xae, 0xeb, 0x64, 0xfc, 0x0d, 0x38, 0x8e, 0x43, 0xb9, 0x5c, 0x86, 0x28, 0x8a, 0x68,
|
||||||
|
0xb5, 0x5a, 0x68, 0xb7, 0xdb, 0x76, 0x4e, 0xa0, 0x61, 0x18, 0xe8, 0xed, 0xed, 0x45, 0x2a, 0x95,
|
||||||
|
0x82, 0x69, 0x9a, 0x76, 0xf4, 0x4f, 0x55, 0xd5, 0x1d, 0xef, 0x23, 0xe8, 0xe4, 0x1d, 0x00, 0xa2,
|
||||||
|
0x28, 0xae, 0x16, 0x0a, 0x05, 0x43, 0x92, 0x24, 0x30, 0x0c, 0xb3, 0x6d, 0x9d, 0xc2, 0xb6, 0xeb,
|
||||||
|
0xe9, 0x27, 0xaa, 0xdf, 0xe1, 0xc3, 0x87, 0x51, 0x28, 0x14, 0x70, 0xf9, 0xf2, 0x65, 0x78, 0xbd,
|
||||||
|
0x5e, 0xb0, 0x2c, 0x6b, 0x4f, 0x3b, 0xdf, 0xdc, 0xdc, 0x84, 0xa6, 0x69, 0x76, 0x8e, 0x03, 0xcf,
|
||||||
|
0xf3, 0xc8, 0x64, 0x32, 0x78, 0xea, 0xa9, 0xa7, 0x30, 0x38, 0x38, 0x08, 0x5d, 0xd7, 0x21, 0xcb,
|
||||||
|
0x32, 0xd6, 0xd7, 0xd7, 0xd1, 0x68, 0x34, 0x76, 0x7c, 0xac, 0x9d, 0xa3, 0x09, 0x00, 0xe0, 0xdd,
|
||||||
|
0xf3, 0xe7, 0xcf, 0x97, 0xf3, 0xf9, 0xbc, 0x3f, 0x1a, 0x8d, 0x6e, 0x5b, 0x50, 0x60, 0xbb, 0xe2,
|
||||||
|
0x0b, 0x34, 0x4d, 0xdb, 0x5b, 0xfb, 0xb1, 0x63, 0xc7, 0x20, 0x08, 0x02, 0x16, 0x16, 0x16, 0x60,
|
||||||
|
0x18, 0x06, 0x04, 0x41, 0x40, 0xbd, 0x5e, 0xc7, 0x53, 0x4f, 0x3d, 0x85, 0x13, 0x27, 0x4e, 0x40,
|
||||||
|
0xd7, 0x75, 0xbc, 0xfe, 0xfa, 0xeb, 0x88, 0x46, 0xa3, 0x18, 0x1a, 0x1a, 0xc2, 0xc4, 0xc4, 0x84,
|
||||||
|
0xfd, 0xe4, 0x93, 0xfe, 0x88, 0x0c, 0xc3, 0xec, 0xa8, 0x06, 0x00, 0x38, 0x9f, 0x00, 0x5a, 0xb1,
|
||||||
|
0x58, 0xac, 0x94, 0xcb, 0xe5, 0x7e, 0xd3, 0x34, 0x9d, 0x93, 0xe1, 0xd9, 0x01, 0xa2, 0xe8, 0xc5,
|
||||||
|
0x62, 0x31, 0x7c, 0xeb, 0x5b, 0xdf, 0xc2, 0xb9, 0x73, 0xe7, 0xf0, 0xea, 0xab, 0xaf, 0x62, 0x79,
|
||||||
|
0x79, 0x19, 0x27, 0x4f, 0x9e, 0xc4, 0x0b, 0x2f, 0xbc, 0x80, 0x4c, 0x26, 0x03, 0x55, 0x55, 0xb1,
|
||||||
|
0xbc, 0xbc, 0x6c, 0x37, 0xc6, 0x24, 0x0d, 0xa4, 0x1a, 0x8d, 0x06, 0x19, 0xa7, 0x67, 0xfa, 0x7c,
|
||||||
|
0x3e, 0x0d, 0x3b, 0xdc, 0x26, 0xc6, 0xd1, 0x36, 0x00, 0x00, 0xc9, 0xe3, 0xf1, 0x5c, 0xe3, 0x38,
|
||||||
|
0xce, 0xdc, 0x61, 0xe3, 0xf8, 0x8e, 0x41, 0xe6, 0x21, 0xc8, 0xb2, 0x0c, 0x41, 0x10, 0x90, 0x4a,
|
||||||
|
0xa5, 0xf0, 0xdc, 0x73, 0xcf, 0xa1, 0xbf, 0xbf, 0x1f, 0x24, 0xb3, 0x89, 0xa2, 0x28, 0x3b, 0xe2,
|
||||||
|
0x47, 0xba, 0xa2, 0x76, 0x76, 0x0f, 0x51, 0x55, 0x15, 0x85, 0x42, 0xa1, 0x29, 0x49, 0x92, 0x84,
|
||||||
|
0x5d, 0x02, 0x7c, 0x18, 0xab, 0xab, 0xab, 0x1b, 0xaa, 0xaa, 0x9a, 0x4e, 0x57, 0x03, 0x39, 0x8e,
|
||||||
|
0xb3, 0x43, 0xba, 0xa6, 0x69, 0xe2, 0x99, 0x67, 0x9e, 0xb1, 0x7b, 0x1d, 0x11, 0xb8, 0xdd, 0x6e,
|
||||||
|
0xbb, 0x67, 0x20, 0xc9, 0x0c, 0x02, 0x00, 0x45, 0x51, 0x50, 0x2e, 0x97, 0xaf, 0x37, 0x9b, 0xcd,
|
||||||
|
0x15, 0xec, 0xf0, 0x11, 0xe0, 0x78, 0x02, 0xa8, 0xaa, 0x6a, 0x91, 0xd1, 0x73, 0x4e, 0x4a, 0x14,
|
||||||
|
0xed, 0x04, 0xcb, 0xb2, 0x20, 0x8d, 0x2e, 0xe3, 0xf1, 0x38, 0x54, 0x55, 0x45, 0xb5, 0x5a, 0x45,
|
||||||
|
0xbb, 0xdd, 0x46, 0xbb, 0xdd, 0x46, 0xa5, 0x52, 0xc1, 0x8d, 0x1b, 0x37, 0xd0, 0x6e, 0xb7, 0x49,
|
||||||
|
0xf1, 0x87, 0x2d, 0x15, 0xeb, 0xba, 0x8e, 0x52, 0xa9, 0x84, 0x6a, 0xb5, 0x2a, 0xb7, 0x5a, 0xad,
|
||||||
|
0x1d, 0x4f, 0x83, 0x72, 0xba, 0x0d, 0x60, 0x57, 0xd1, 0xde, 0xcf, 0xa9, 0x20, 0xf7, 0x0a, 0x62,
|
||||||
|
0xcc, 0xb1, 0x2c, 0x6b, 0xd7, 0x0e, 0x8c, 0x8f, 0x8f, 0x63, 0x7d, 0x7d, 0x1d, 0x3f, 0xfb, 0xd9,
|
||||||
|
0xcf, 0xec, 0x80, 0xcf, 0xec, 0xec, 0xac, 0x4d, 0x14, 0x32, 0x1b, 0x89, 0x1c, 0x1d, 0x96, 0x65,
|
||||||
|
0x75, 0x25, 0x07, 0xce, 0xf1, 0x04, 0xe0, 0x79, 0xde, 0x4d, 0x26, 0x84, 0x3a, 0x19, 0x2e, 0x97,
|
||||||
|
0x0b, 0x89, 0x44, 0x02, 0xf9, 0x7c, 0x1e, 0xfd, 0xfd, 0xfd, 0x70, 0xb9, 0x5c, 0xc8, 0x64, 0x32,
|
||||||
|
0x10, 0x45, 0xd1, 0x4e, 0xfa, 0x48, 0xa5, 0x52, 0x1f, 0x6a, 0x18, 0xe5, 0xf3, 0xf9, 0x20, 0x8a,
|
||||||
|
0x22, 0xe9, 0x13, 0x50, 0x47, 0x17, 0xfa, 0x06, 0x3b, 0x9e, 0x00, 0xd9, 0x6c, 0x36, 0xc5, 0x30,
|
||||||
|
0x0c, 0x2d, 0xcb, 0xf2, 0x5d, 0xe9, 0x00, 0x9d, 0xc7, 0xc6, 0xed, 0x76, 0x90, 0x7b, 0xd1, 0x06,
|
||||||
|
0xc8, 0x58, 0x3c, 0x5d, 0xd7, 0x91, 0xc9, 0x64, 0x60, 0x59, 0x16, 0x9a, 0xcd, 0x26, 0x68, 0x9a,
|
||||||
|
0xb6, 0x63, 0x01, 0xc4, 0xe8, 0x23, 0x83, 0xb2, 0xc8, 0xfb, 0x35, 0x9b, 0x4d, 0x88, 0xa2, 0x08,
|
||||||
|
0x45, 0x51, 0x4e, 0xa1, 0x0b, 0x2d, 0x63, 0x9d, 0x4e, 0x00, 0x37, 0x45, 0x51, 0x49, 0x9a, 0xa6,
|
||||||
|
0xa9, 0xbb, 0x4d, 0x95, 0x26, 0x8b, 0xda, 0x59, 0x2d, 0xdc, 0xb9, 0x00, 0x04, 0xf7, 0x2a, 0x0e,
|
||||||
|
0x75, 0x4e, 0x41, 0x21, 0xe9, 0x5d, 0x44, 0x10, 0xd2, 0x34, 0x0d, 0x2e, 0x97, 0x0b, 0xb2, 0x2c,
|
||||||
|
0xc3, 0xef, 0xf7, 0xdb, 0x3f, 0x27, 0xe5, 0x60, 0x37, 0x23, 0x86, 0x75, 0x74, 0x61, 0x07, 0x70,
|
||||||
|
0xba, 0x11, 0xc8, 0xb5, 0xdb, 0xed, 0x64, 0x20, 0x10, 0xa0, 0x65, 0xf9, 0xd6, 0x0f, 0xc7, 0x9d,
|
||||||
|
0x18, 0x87, 0x9d, 0xf5, 0x79, 0x9f, 0x54, 0x3a, 0xbe, 0x1d, 0x23, 0xe7, 0x3a, 0xbb, 0x84, 0x93,
|
||||||
|
0xd6, 0xf7, 0x34, 0x4d, 0xdb, 0x8d, 0x2f, 0x49, 0x97, 0x50, 0xf2, 0xfd, 0xcd, 0xa6, 0xd1, 0x24,
|
||||||
|
0x5d, 0xbc, 0x2b, 0x06, 0x8e, 0xd3, 0x77, 0x00, 0x9a, 0x65, 0xd9, 0x00, 0x4d, 0xd3, 0xb7, 0xdd,
|
||||||
|
0xfe, 0x3f, 0xcb, 0x93, 0x4b, 0x7e, 0xf7, 0x7e, 0x18, 0x94, 0xc4, 0x60, 0xed, 0x7c, 0x2f, 0x42,
|
||||||
|
0x36, 0x92, 0xf5, 0x43, 0xd2, 0xc0, 0xc8, 0xee, 0x40, 0x76, 0x86, 0x6e, 0x75, 0x46, 0x71, 0x3a,
|
||||||
|
0x01, 0xfa, 0xf6, 0xec, 0xd9, 0xe3, 0xe3, 0x79, 0x9e, 0x22, 0x13, 0x47, 0xef, 0x16, 0x9d, 0x5b,
|
||||||
|
0xfc, 0x9d, 0xda, 0x05, 0x9f, 0x15, 0x9d, 0xd3, 0x42, 0xc8, 0x99, 0x4f, 0x8a, 0x3e, 0x48, 0xd5,
|
||||||
|
0xaf, 0xa6, 0x69, 0xf6, 0x6e, 0x43, 0x8c, 0xc3, 0x78, 0x3c, 0xde, 0x35, 0x23, 0xd7, 0xe9, 0x04,
|
||||||
|
0xf8, 0x02, 0xcf, 0xf3, 0x01, 0xb2, 0x65, 0xde, 0x0b, 0x3a, 0x17, 0xfa, 0x7e, 0xf6, 0x22, 0x24,
|
||||||
|
0x8b, 0x4b, 0xba, 0x83, 0x77, 0x8e, 0x97, 0x23, 0x6a, 0x26, 0xd9, 0x0d, 0x3c, 0x1e, 0x0f, 0x04,
|
||||||
|
0x41, 0x80, 0x20, 0x08, 0x5d, 0xeb, 0x8c, 0xea, 0x68, 0x1b, 0xc0, 0xed, 0x76, 0xbb, 0x43, 0xa1,
|
||||||
|
0x10, 0x0c, 0xc3, 0xb8, 0x2f, 0xa5, 0x62, 0xf7, 0x5b, 0x57, 0xe8, 0x9c, 0x2f, 0x48, 0xfa, 0x02,
|
||||||
|
0x92, 0x63, 0x82, 0x1c, 0x05, 0xcd, 0x66, 0x13, 0x5e, 0xaf, 0x17, 0x7e, 0xbf, 0xdf, 0x85, 0x1d,
|
||||||
|
0x6a, 0x0b, 0xd3, 0x09, 0x47, 0xef, 0x00, 0x7d, 0x7d, 0x7d, 0x81, 0xfe, 0xfe, 0x7e, 0x2a, 0x14,
|
||||||
|
0x0a, 0x6d, 0xfb, 0x16, 0xb9, 0x13, 0xa2, 0x12, 0x29, 0xfd, 0xea, 0xec, 0x16, 0x4a, 0x6a, 0x02,
|
||||||
|
0x09, 0xc8, 0xc4, 0x74, 0x49, 0x92, 0x2c, 0xfc, 0x63, 0x9e, 0x17, 0xf0, 0x49, 0x48, 0xa5, 0x52,
|
||||||
|
0xc7, 0x52, 0xa9, 0x14, 0xe3, 0xf7, 0xfb, 0x1f, 0x98, 0xe6, 0xd1, 0x9f, 0x04, 0x62, 0x0f, 0x00,
|
||||||
|
0xbf, 0x75, 0x17, 0xdd, 0x6e, 0xb7, 0x9d, 0x26, 0x76, 0xb3, 0x81, 0x74, 0x57, 0x94, 0x40, 0x47,
|
||||||
|
0xdf, 0x55, 0x4d, 0xd3, 0x12, 0xed, 0x76, 0x9b, 0x6a, 0x34, 0x1a, 0x8e, 0x8d, 0x03, 0xdc, 0x0e,
|
||||||
|
0x9d, 0xba, 0x03, 0x00, 0xdb, 0x28, 0x24, 0x93, 0xd3, 0x7d, 0x3e, 0x9f, 0x2d, 0x12, 0x75, 0xcb,
|
||||||
|
0x08, 0x74, 0x3a, 0x01, 0xac, 0x56, 0xab, 0xb5, 0xa3, 0x31, 0x80, 0xed, 0x6c, 0x51, 0xf3, 0xd1,
|
||||||
|
0x46, 0x55, 0x84, 0x10, 0x2c, 0xcb, 0x82, 0x61, 0x18, 0x3b, 0x3f, 0xb0, 0x9b, 0xcd, 0x31, 0x1d,
|
||||||
|
0x4d, 0x80, 0xce, 0xda, 0xb9, 0xbb, 0x69, 0xc9, 0x72, 0x37, 0xb8, 0x1f, 0xdd, 0xc5, 0x08, 0xa9,
|
||||||
|
0x88, 0x0b, 0x48, 0x92, 0x44, 0x49, 0xe6, 0x50, 0xad, 0x56, 0xb3, 0x64, 0x59, 0xee, 0x4a, 0xc2,
|
||||||
|
0x83, 0xa3, 0x09, 0x40, 0x51, 0x14, 0x45, 0x12, 0x2e, 0x76, 0x32, 0x1f, 0x60, 0x3b, 0x09, 0x40,
|
||||||
|
0x8c, 0x3e, 0xd2, 0x18, 0x82, 0x90, 0x99, 0x65, 0x59, 0xbb, 0x37, 0xf2, 0xc6, 0xc6, 0x46, 0xdd,
|
||||||
|
0xb2, 0xac, 0xf7, 0xb1, 0xc3, 0xf9, 0x80, 0x80, 0xc3, 0x09, 0x60, 0x59, 0x96, 0x75, 0xb3, 0x66,
|
||||||
|
0xde, 0x51, 0x1d, 0x43, 0xee, 0x16, 0x24, 0x0c, 0x4c, 0x72, 0x05, 0x4a, 0xa5, 0x12, 0xca, 0xe5,
|
||||||
|
0x32, 0x8a, 0xc5, 0x62, 0x45, 0x51, 0x94, 0x4d, 0xec, 0x50, 0x35, 0x50, 0x27, 0x1c, 0x4d, 0x00,
|
||||||
|
0xaf, 0xd7, 0xbb, 0xd4, 0x68, 0x34, 0xcc, 0x3b, 0xf5, 0x00, 0x9c, 0x6c, 0x28, 0x1a, 0x86, 0x01,
|
||||||
|
0x4d, 0xd3, 0x60, 0x9a, 0x26, 0x02, 0x81, 0x80, 0x4d, 0xe8, 0x62, 0xb1, 0x08, 0x51, 0x14, 0xcf,
|
||||||
|
0xd4, 0xeb, 0x75, 0xb1, 0x1b, 0xd7, 0xe5, 0x64, 0x1d, 0x80, 0xbd, 0x72, 0xe5, 0xca, 0x46, 0xb5,
|
||||||
|
0x5a, 0x35, 0x49, 0xee, 0xfc, 0xa7, 0x55, 0x07, 0x39, 0x31, 0x61, 0xa4, 0x33, 0x1e, 0x00, 0x6c,
|
||||||
|
0x91, 0x94, 0xf4, 0x06, 0x26, 0x49, 0xa1, 0x82, 0x20, 0xac, 0xa1, 0x4b, 0x83, 0x23, 0x9d, 0xb6,
|
||||||
|
0x03, 0x50, 0xd8, 0x9a, 0x99, 0x13, 0x1d, 0x18, 0x18, 0xf8, 0xf7, 0x93, 0x93, 0x93, 0x7f, 0x9c,
|
||||||
|
0xcb, 0xe5, 0xd8, 0x6a, 0xb5, 0xba, 0x63, 0x46, 0xe0, 0x76, 0x83, 0x18, 0x80, 0x64, 0x4e, 0xc0,
|
||||||
|
0x4d, 0xd5, 0x0f, 0xb2, 0x2c, 0xa3, 0x52, 0xa9, 0x60, 0x71, 0x71, 0x51, 0xd7, 0x34, 0xed, 0x97,
|
||||||
|
0xe8, 0xd2, 0xf8, 0x58, 0xa7, 0xed, 0x00, 0x63, 0xa9, 0x54, 0xea, 0xdf, 0x66, 0xb3, 0xd9, 0x27,
|
||||||
|
0x0e, 0x1d, 0x3a, 0xf4, 0x85, 0x5c, 0x2e, 0x47, 0x0b, 0x82, 0x60, 0x97, 0x52, 0x75, 0xa2, 0x5b,
|
||||||
|
0x8d, 0xa0, 0xef, 0x04, 0x44, 0xf2, 0xfd, 0xa8, 0x0e, 0x40, 0x62, 0x01, 0x24, 0x04, 0xbc, 0xb0,
|
||||||
|
0xb0, 0x80, 0x6b, 0xd7, 0xae, 0xcd, 0xd7, 0xeb, 0xf5, 0xcb, 0x00, 0xba, 0xe2, 0x05, 0x38, 0x89,
|
||||||
|
0x00, 0xf4, 0xc8, 0xc8, 0xc8, 0x7f, 0x7e, 0xe2, 0x89, 0x27, 0xbe, 0xea, 0x76, 0xbb, 0x19, 0x52,
|
||||||
|
0x68, 0xa9, 0xeb, 0x3a, 0x8a, 0xc5, 0x22, 0x1a, 0x8d, 0x06, 0xfc, 0x7e, 0x3f, 0x00, 0xe7, 0x35,
|
||||||
|
0x82, 0xfe, 0x28, 0x3e, 0x1a, 0x72, 0x26, 0x39, 0x02, 0x84, 0x00, 0xa6, 0x69, 0xa2, 0x58, 0x2c,
|
||||||
|
0x42, 0x10, 0x04, 0xb4, 0xdb, 0xed, 0x5f, 0x7a, 0xbd, 0x5e, 0xe1, 0x76, 0xf9, 0x0e, 0xf7, 0x13,
|
||||||
|
0x4e, 0x22, 0xc0, 0xd8, 0xc1, 0x83, 0x07, 0xbf, 0x14, 0x8d, 0x46, 0x99, 0x70, 0x38, 0x0c, 0xbf,
|
||||||
|
0xdf, 0x0f, 0xcb, 0xb2, 0x70, 0xf9, 0xf2, 0x65, 0x5c, 0xbd, 0x7a, 0x15, 0x93, 0x93, 0x93, 0xe0,
|
||||||
|
0x79, 0x1e, 0xc1, 0x60, 0xb0, 0xdb, 0xd7, 0xf9, 0xa9, 0xe8, 0x24, 0xa7, 0x69, 0x9a, 0xb6, 0xbb,
|
||||||
|
0x47, 0xf2, 0x01, 0x9a, 0xcd, 0x26, 0x96, 0x97, 0x97, 0xf1, 0xd6, 0x5b, 0x6f, 0x09, 0x95, 0x4a,
|
||||||
|
0xe5, 0xc7, 0xb5, 0x5a, 0x4d, 0xea, 0xd6, 0xb5, 0x3a, 0x86, 0x00, 0x89, 0x44, 0xe2, 0xab, 0x81,
|
||||||
|
0x40, 0x20, 0x94, 0xc9, 0x64, 0x30, 0x36, 0x36, 0x86, 0x58, 0x2c, 0x86, 0x7a, 0xbd, 0x6e, 0xb7,
|
||||||
|
0x67, 0xad, 0x54, 0x2a, 0x48, 0xa5, 0x52, 0x8e, 0xdc, 0xfa, 0x6f, 0x77, 0x4d, 0x96, 0x65, 0x75,
|
||||||
|
0x66, 0xfd, 0x40, 0x96, 0x65, 0xa8, 0xaa, 0x0a, 0x41, 0x10, 0x90, 0xcf, 0xe7, 0xcf, 0x17, 0x8b,
|
||||||
|
0xc5, 0xae, 0x4d, 0x0e, 0x07, 0x9c, 0x43, 0x80, 0xd9, 0xe9, 0xe9, 0xe9, 0x3f, 0x1d, 0x1d, 0x1d,
|
||||||
|
0x65, 0x07, 0x06, 0x06, 0xd0, 0xdf, 0xdf, 0x8f, 0x48, 0x24, 0x42, 0x26, 0x69, 0xe1, 0xb5, 0xd7,
|
||||||
|
0x5e, 0x43, 0xa9, 0x54, 0x82, 0xaa, 0xaa, 0x68, 0xb5, 0x5a, 0x76, 0x11, 0xc6, 0x67, 0xc5, 0xfd,
|
||||||
|
0x22, 0xcf, 0xad, 0x5e, 0x93, 0x3c, 0xf1, 0x64, 0x5a, 0x88, 0x2c, 0xcb, 0x28, 0x16, 0x8b, 0xb8,
|
||||||
|
0x76, 0xed, 0x1a, 0xfe, 0xee, 0xef, 0xfe, 0xce, 0xcc, 0xe5, 0x72, 0x7f, 0x01, 0xa0, 0xb1, 0xd3,
|
||||||
|
0x37, 0xbb, 0x13, 0x8e, 0xf0, 0x02, 0xf6, 0xec, 0xd9, 0xf3, 0xc2, 0xbe, 0x7d, 0xfb, 0xd8, 0x54,
|
||||||
|
0x2a, 0x85, 0xd1, 0xd1, 0x51, 0x98, 0xa6, 0x89, 0x5a, 0xad, 0x66, 0x97, 0x5f, 0xc7, 0x62, 0x31,
|
||||||
|
0x9c, 0x3a, 0x75, 0x0a, 0xef, 0xbd, 0xf7, 0x9e, 0x1d, 0x48, 0xb9, 0x1b, 0x7c, 0x74, 0xa1, 0xee,
|
||||||
|
0xa7, 0xb8, 0x44, 0x26, 0x83, 0x68, 0x9a, 0x66, 0x8f, 0x8b, 0x15, 0x04, 0x01, 0x6b, 0x6b, 0x6b,
|
||||||
|
0x38, 0x7d, 0xfa, 0x34, 0xe6, 0xe7, 0xe7, 0x5f, 0x6e, 0x34, 0x1a, 0xaf, 0xa1, 0x0b, 0xea, 0x5f,
|
||||||
|
0x27, 0x1c, 0x41, 0x00, 0x51, 0x14, 0xe7, 0x6a, 0xb5, 0x9a, 0x11, 0x08, 0x04, 0x10, 0x8f, 0xc7,
|
||||||
|
0x11, 0x8b, 0xc5, 0xe0, 0x76, 0xbb, 0xed, 0xca, 0xdb, 0xa9, 0xa9, 0x29, 0x70, 0x1c, 0x87, 0x97,
|
||||||
|
0x5f, 0x7e, 0x19, 0xe7, 0xce, 0x9d, 0x23, 0xc6, 0xd3, 0x3d, 0x0b, 0x3f, 0xf7, 0x2b, 0xc4, 0x4c,
|
||||||
|
0x32, 0x7e, 0xc8, 0x78, 0x38, 0xc3, 0x30, 0x20, 0xcb, 0x32, 0x68, 0x9a, 0x26, 0xed, 0x60, 0x45,
|
||||||
|
0x49, 0x92, 0xfe, 0x17, 0xba, 0xfc, 0xf4, 0x03, 0x0e, 0x21, 0xc0, 0x8d, 0x1b, 0x37, 0x3e, 0xa8,
|
||||||
|
0x54, 0x2a, 0xa6, 0xc7, 0xe3, 0x81, 0x24, 0x49, 0x20, 0x49, 0xa0, 0xe4, 0x26, 0x66, 0xb3, 0x59,
|
||||||
|
0x1c, 0x39, 0x72, 0x04, 0x0c, 0xc3, 0xe0, 0xc7, 0x3f, 0xfe, 0x31, 0x2e, 0x5c, 0xb8, 0x80, 0x9d,
|
||||||
|
0x8e, 0x12, 0xde, 0x29, 0x3a, 0xf3, 0x01, 0x49, 0xa8, 0xb7, 0xd5, 0x6a, 0xa1, 0x56, 0xab, 0xe1,
|
||||||
|
0xfc, 0xf9, 0xf3, 0xf8, 0xfb, 0xbf, 0xff, 0x7b, 0x9c, 0x3e, 0x7d, 0xfa, 0x07, 0x95, 0x4a, 0xe5,
|
||||||
|
0x2c, 0xba, 0xe4, 0xfa, 0x75, 0xc2, 0x11, 0x04, 0x88, 0x44, 0x22, 0x5f, 0x3f, 0x7a, 0xf4, 0xa8,
|
||||||
|
0x7b, 0x72, 0x72, 0xd2, 0x7e, 0xf2, 0x03, 0x81, 0x00, 0x88, 0x37, 0x10, 0x0c, 0x06, 0x11, 0x8f,
|
||||||
|
0xc7, 0x31, 0x36, 0x36, 0x86, 0x7c, 0x3e, 0x8f, 0xb3, 0x67, 0xcf, 0x62, 0x63, 0x63, 0x63, 0xdb,
|
||||||
|
0x06, 0x4c, 0x6d, 0xd7, 0x84, 0x31, 0x22, 0xfa, 0x18, 0x86, 0x61, 0x97, 0x7d, 0x19, 0x86, 0x81,
|
||||||
|
0xc5, 0xc5, 0x45, 0x14, 0x0a, 0x05, 0xbc, 0xfd, 0xf6, 0xdb, 0x38, 0x7d, 0xfa, 0xf4, 0x2f, 0x05,
|
||||||
|
0x41, 0xf8, 0x01, 0x00, 0xa1, 0xcb, 0xb7, 0x1d, 0x80, 0x43, 0x8c, 0x40, 0x8f, 0xc7, 0xe3, 0x35,
|
||||||
|
0x0c, 0x83, 0xa2, 0x28, 0xca, 0xb6, 0xfe, 0xdd, 0x6e, 0x37, 0x28, 0x8a, 0x82, 0xa2, 0x28, 0x90,
|
||||||
|
0x24, 0xc9, 0x16, 0x57, 0xa6, 0xa7, 0xa7, 0x71, 0xe9, 0xd2, 0x25, 0x00, 0xc0, 0x37, 0xbf, 0xf9,
|
||||||
|
0x4d, 0x64, 0x32, 0x19, 0xbb, 0x0f, 0xdf, 0xdd, 0x62, 0xbb, 0x0d, 0x4a, 0x45, 0x51, 0x50, 0xa9,
|
||||||
|
0x54, 0x50, 0x2c, 0x16, 0xe1, 0x72, 0xb9, 0x10, 0x8d, 0x46, 0x21, 0xcb, 0x32, 0x28, 0x8a, 0x42,
|
||||||
|
0xad, 0x56, 0xcb, 0xa1, 0x8b, 0x56, 0xff, 0x47, 0xe1, 0x88, 0x9a, 0xeb, 0x54, 0x2a, 0xb5, 0x27,
|
||||||
|
0x91, 0x48, 0x3c, 0xde, 0x68, 0x34, 0x98, 0x7a, 0xbd, 0x6e, 0x6b, 0xe5, 0xa4, 0x80, 0x92, 0x88,
|
||||||
|
0x26, 0x8d, 0x46, 0x03, 0x91, 0x48, 0x04, 0xb9, 0x5c, 0x0e, 0x97, 0x2f, 0x5f, 0x46, 0xb9, 0x5c,
|
||||||
|
0x46, 0x2c, 0x16, 0xb3, 0x8b, 0x30, 0x76, 0xf2, 0x48, 0xf8, 0xe8, 0x7b, 0x91, 0x19, 0x07, 0xe5,
|
||||||
|
0x72, 0x19, 0x57, 0xae, 0x5c, 0xc1, 0xb9, 0x73, 0xe7, 0xd0, 0x6c, 0x36, 0x41, 0x51, 0x14, 0xa2,
|
||||||
|
0xd1, 0xa8, 0x5d, 0x2c, 0x72, 0xed, 0xda, 0xb5, 0x4c, 0xad, 0x56, 0xfb, 0xb9, 0xaa, 0xaa, 0x9b,
|
||||||
|
0xe8, 0x42, 0x0e, 0xe0, 0x47, 0xe1, 0x08, 0x02, 0xd4, 0x6a, 0xb5, 0xb3, 0xc5, 0x62, 0x31, 0xfe,
|
||||||
|
0xde, 0x7b, 0xef, 0x8d, 0x08, 0x82, 0xc0, 0xe9, 0xba, 0x8e, 0xc5, 0xc5, 0x45, 0xb0, 0x2c, 0x0b,
|
||||||
|
0x49, 0x92, 0x50, 0x2c, 0x16, 0xb1, 0xb1, 0xb1, 0x01, 0x49, 0x92, 0xb0, 0xb1, 0xb1, 0x81, 0x72,
|
||||||
|
0xb9, 0x0c, 0xc3, 0x30, 0xb0, 0xb9, 0xb9, 0x89, 0x42, 0xa1, 0x60, 0x37, 0x65, 0xf2, 0xf9, 0x7c,
|
||||||
|
0x00, 0xee, 0x2d, 0x28, 0xf4, 0x59, 0x5c, 0x45, 0xf2, 0xbb, 0x86, 0x61, 0xa0, 0x5a, 0xad, 0xe2,
|
||||||
|
0xfd, 0xf7, 0xdf, 0xc7, 0xcb, 0x2f, 0xbf, 0x8c, 0x9f, 0xfe, 0xf4, 0xa7, 0x88, 0x46, 0xa3, 0x38,
|
||||||
|
0x72, 0xe4, 0x08, 0x06, 0x07, 0x07, 0xe1, 0xf5, 0x7a, 0xed, 0x18, 0x40, 0xa5, 0x52, 0xf1, 0xcf,
|
||||||
|
0xcf, 0xcf, 0x2f, 0x35, 0x9b, 0xcd, 0xf7, 0xb0, 0x83, 0xfd, 0x00, 0x6f, 0x05, 0x47, 0x10, 0x00,
|
||||||
|
0x80, 0x2e, 0x08, 0xc2, 0xcf, 0x2b, 0x95, 0xca, 0xff, 0x2d, 0x16, 0x8b, 0x4d, 0x59, 0x96, 0x1f,
|
||||||
|
0x2a, 0x97, 0xcb, 0x6c, 0xa1, 0x50, 0xc0, 0xdc, 0xdc, 0x9c, 0xbd, 0xf8, 0xa6, 0x69, 0x62, 0x63,
|
||||||
|
0x63, 0x03, 0x9b, 0x9b, 0x9b, 0x60, 0x18, 0x06, 0x96, 0x65, 0x61, 0x7e, 0x7e, 0x1e, 0xf5, 0x7a,
|
||||||
|
0x1d, 0x5e, 0xaf, 0x17, 0xaa, 0xaa, 0x82, 0xe7, 0xf9, 0x7b, 0x2a, 0x20, 0xf9, 0xa4, 0xc5, 0x27,
|
||||||
|
0x67, 0x3b, 0x91, 0xa0, 0xc9, 0x94, 0x4f, 0x92, 0xe5, 0x9b, 0xcf, 0xe7, 0x91, 0xcf, 0xe7, 0xb1,
|
||||||
|
0xba, 0xba, 0x8a, 0x33, 0x67, 0xce, 0x40, 0xd3, 0x34, 0x1c, 0x3f, 0x7e, 0x1c, 0x63, 0x63, 0x63,
|
||||||
|
0xb6, 0x1d, 0x23, 0xcb, 0x32, 0x14, 0x45, 0x81, 0xae, 0xeb, 0x58, 0x5e, 0x5e, 0xf6, 0xa8, 0xaa,
|
||||||
|
0xfa, 0xb7, 0x37, 0x3b, 0x82, 0x74, 0x15, 0x8e, 0xb0, 0x01, 0x3a, 0x50, 0x2c, 0x14, 0x0a, 0xff,
|
||||||
|
0xa9, 0x50, 0x28, 0xbc, 0xd2, 0xd7, 0xd7, 0xf7, 0x07, 0x0c, 0xc3, 0x04, 0x5b, 0xad, 0xd6, 0x43,
|
||||||
|
0xd9, 0x6c, 0x36, 0xed, 0xf7, 0xfb, 0xa9, 0x72, 0xb9, 0x7c, 0xbd, 0xd5, 0x6a, 0x5d, 0x12, 0x45,
|
||||||
|
0xd1, 0xf4, 0xfb, 0xfd, 0x10, 0x45, 0x11, 0x9a, 0xa6, 0x51, 0x85, 0x42, 0xe1, 0x89, 0xcb, 0x97,
|
||||||
|
0x2f, 0x67, 0x9e, 0x79, 0xe6, 0x19, 0x6a, 0xff, 0xfe, 0xfd, 0x18, 0x1b, 0x1b, 0x43, 0x36, 0x9b,
|
||||||
|
0xbd, 0xab, 0x62, 0x12, 0xf2, 0x54, 0x13, 0xe1, 0xa6, 0x5a, 0xad, 0x42, 0x92, 0x24, 0xe8, 0xba,
|
||||||
|
0x6e, 0xcf, 0xf8, 0x0d, 0x06, 0x83, 0x76, 0x9b, 0x17, 0x49, 0x92, 0xc0, 0x71, 0x1c, 0x32, 0x99,
|
||||||
|
0x0c, 0x38, 0x8e, 0x83, 0xaa, 0xaa, 0x98, 0x9f, 0x9f, 0x87, 0xdf, 0xef, 0x47, 0x20, 0x10, 0xb0,
|
||||||
|
0x6b, 0x00, 0x82, 0xc1, 0x20, 0x68, 0x9a, 0x46, 0x7f, 0x7f, 0x3f, 0x78, 0x9e, 0x4f, 0x53, 0x14,
|
||||||
|
0xb5, 0x63, 0xf3, 0x81, 0x6f, 0x07, 0xa7, 0x11, 0x80, 0xe0, 0xcc, 0xda, 0xda, 0xda, 0x99, 0x9b,
|
||||||
|
0xdf, 0x87, 0x8b, 0xc5, 0xa2, 0xff, 0xe6, 0xf7, 0x75, 0x00, 0x12, 0xb0, 0xd5, 0x9c, 0x99, 0xa0,
|
||||||
|
0xd9, 0x6c, 0xf6, 0x28, 0x8a, 0xf2, 0x3f, 0x8a, 0xc5, 0xe2, 0xd7, 0x37, 0x37, 0x37, 0xdd, 0xeb,
|
||||||
|
0xeb, 0xeb, 0x18, 0x1e, 0x1e, 0xb6, 0x25, 0x65, 0x22, 0xc4, 0xdc, 0x49, 0x5a, 0x99, 0x69, 0x9a,
|
||||||
|
0x68, 0x36, 0x9b, 0x58, 0x5f, 0x5f, 0xc7, 0xb5, 0x6b, 0xd7, 0xb0, 0xb4, 0xb4, 0x84, 0x4a, 0xa5,
|
||||||
|
0x82, 0x4b, 0x97, 0x2e, 0x21, 0x91, 0x48, 0xe0, 0xc0, 0x81, 0x03, 0x38, 0x7e, 0xfc, 0xb8, 0xdd,
|
||||||
|
0xea, 0x25, 0x18, 0x0c, 0xda, 0x9a, 0x04, 0x69, 0x0c, 0x59, 0x28, 0x14, 0xb0, 0xbe, 0xbe, 0x6e,
|
||||||
|
0xd7, 0x00, 0x76, 0xaa, 0x81, 0xa2, 0x28, 0xa2, 0xd1, 0x68, 0xf8, 0x9b, 0xcd, 0xa6, 0x0f, 0x5b,
|
||||||
|
0x5e, 0x58, 0x57, 0x53, 0x9d, 0x9c, 0x72, 0x04, 0xdc, 0x0e, 0x0a, 0x00, 0xf1, 0xe6, 0xd7, 0xad,
|
||||||
|
0xfc, 0xbe, 0xa6, 0x2c, 0xcb, 0x3f, 0x29, 0x97, 0xcb, 0xff, 0xb0, 0xbe, 0xbe, 0x8e, 0xd5, 0xd5,
|
||||||
|
0xd5, 0x7d, 0x6b, 0x6b, 0x6b, 0xae, 0xce, 0x56, 0x2d, 0x44, 0x87, 0x27, 0xde, 0xc5, 0xad, 0xce,
|
||||||
|
0x79, 0x22, 0xde, 0x90, 0xf2, 0xee, 0x9b, 0x0b, 0x06, 0xd3, 0x34, 0x91, 0xcb, 0xe5, 0x20, 0xcb,
|
||||||
|
0x32, 0x1e, 0x7e, 0xf8, 0x61, 0x24, 0x12, 0x89, 0x0f, 0x95, 0x81, 0x91, 0x2c, 0x5f, 0xf2, 0x37,
|
||||||
|
0xb9, 0x5c, 0x0e, 0xa3, 0xa3, 0xa3, 0x08, 0x85, 0x42, 0xf6, 0x2c, 0x80, 0x8b, 0x17, 0x2f, 0xe2,
|
||||||
|
0xf5, 0xd7, 0x5f, 0xc7, 0xdc, 0xdc, 0xdc, 0xaf, 0xd7, 0xd6, 0xd6, 0xfe, 0x1f, 0x6e, 0x92, 0xb9,
|
||||||
|
0x9b, 0x78, 0x10, 0x08, 0xf0, 0x59, 0x90, 0x17, 0x04, 0xe1, 0xa5, 0x5c, 0x2e, 0xf7, 0xd2, 0xda,
|
||||||
|
0xda, 0x1a, 0xbd, 0xb8, 0xb8, 0xd8, 0x5f, 0xab, 0xd5, 0xb8, 0xcd, 0xcd, 0x4d, 0xea, 0xfa, 0xf5,
|
||||||
|
0xeb, 0xa8, 0x56, 0xab, 0x30, 0x0c, 0x03, 0x2b, 0x2b, 0x2b, 0x08, 0x04, 0x02, 0x1f, 0x6a, 0xe9,
|
||||||
|
0x42, 0x40, 0x88, 0x11, 0x0a, 0x85, 0x10, 0x0e, 0x87, 0x91, 0xc9, 0x64, 0x90, 0x4c, 0x26, 0x91,
|
||||||
|
0xc9, 0x64, 0x10, 0x8d, 0x46, 0x11, 0x8b, 0xc5, 0x30, 0x31, 0x31, 0x81, 0x58, 0x2c, 0xf6, 0x31,
|
||||||
|
0x25, 0xd1, 0xed, 0x76, 0xc3, 0xe5, 0x72, 0xa1, 0x5a, 0xad, 0x22, 0x9f, 0xcf, 0xa3, 0xa7, 0xa7,
|
||||||
|
0x07, 0xc9, 0x64, 0x12, 0x8a, 0xa2, 0xa0, 0x5a, 0xad, 0xe2, 0x57, 0xbf, 0xfa, 0x15, 0xfe, 0xfa,
|
||||||
|
0xaf, 0xff, 0xfa, 0x37, 0x57, 0xaf, 0x5e, 0xfd, 0x37, 0x00, 0xd6, 0xbb, 0x7d, 0xb3, 0x80, 0x2e,
|
||||||
|
0xd4, 0xa2, 0xed, 0x30, 0xb2, 0x00, 0x1e, 0xe5, 0x79, 0xfe, 0x50, 0x2a, 0x95, 0x3a, 0x3c, 0x34,
|
||||||
|
0x34, 0xb4, 0x2f, 0x12, 0x89, 0x04, 0xa6, 0xa7, 0xa7, 0xd1, 0xdb, 0xdb, 0x8b, 0xc9, 0xc9, 0x49,
|
||||||
|
0x70, 0x1c, 0x87, 0x68, 0x34, 0x8a, 0x9e, 0x9e, 0x1e, 0x00, 0x5b, 0x36, 0x00, 0x21, 0x06, 0xe9,
|
||||||
|
0xe5, 0x5f, 0xaf, 0xd7, 0x91, 0xcf, 0xe7, 0xb1, 0xb8, 0xb8, 0x88, 0x52, 0xa9, 0x84, 0x23, 0x47,
|
||||||
|
0x8e, 0x60, 0x6a, 0x6a, 0xea, 0x13, 0xb5, 0x07, 0x59, 0x96, 0x91, 0xcf, 0xe7, 0xf1, 0xd2, 0x4b,
|
||||||
|
0x2f, 0xc1, 0xeb, 0xf5, 0x22, 0x14, 0x0a, 0xa1, 0x5a, 0xad, 0xe2, 0x8d, 0x37, 0xde, 0xd0, 0xde,
|
||||||
|
0x7a, 0xeb, 0xad, 0x9f, 0xac, 0xaf, 0xaf, 0xff, 0x31, 0xb6, 0x16, 0xbf, 0xeb, 0x2e, 0x20, 0xe0,
|
||||||
|
0x5c, 0x1b, 0x60, 0xbb, 0x90, 0x03, 0x90, 0x13, 0x45, 0xf1, 0xc7, 0xa2, 0x28, 0x62, 0x69, 0x69,
|
||||||
|
0x69, 0x1c, 0x40, 0x28, 0x9b, 0xcd, 0x3e, 0x61, 0x9a, 0xe6, 0xa1, 0xa1, 0xa1, 0xa1, 0xc7, 0x46,
|
||||||
|
0x46, 0x46, 0x22, 0x63, 0x63, 0x63, 0x2c, 0x31, 0xe2, 0x86, 0x87, 0x87, 0x91, 0x48, 0x24, 0x3e,
|
||||||
|
0x54, 0x93, 0xe0, 0xf3, 0xf9, 0x10, 0x0c, 0x06, 0x11, 0x8d, 0x46, 0x91, 0xcb, 0xe5, 0xec, 0xd1,
|
||||||
|
0x6f, 0x9f, 0x04, 0x97, 0xcb, 0x05, 0x49, 0x92, 0x70, 0xed, 0xda, 0x35, 0xbc, 0xfa, 0xea, 0xab,
|
||||||
|
0xab, 0xa5, 0x52, 0xe9, 0x8d, 0x66, 0xb3, 0xb9, 0xa9, 0xeb, 0xfa, 0x4f, 0x00, 0x9c, 0x83, 0x03,
|
||||||
|
0xe4, 0xdf, 0x4e, 0x7c, 0xde, 0x09, 0xf0, 0x51, 0x2c, 0x02, 0x40, 0x2e, 0x97, 0x7b, 0x17, 0x00,
|
||||||
|
0xf2, 0xf9, 0x7c, 0xf8, 0x37, 0xbf, 0xf9, 0x4d, 0x3f, 0xc7, 0x71, 0x47, 0x7a, 0x7a, 0x7a, 0x02,
|
||||||
|
0x7e, 0xbf, 0xff, 0x77, 0xf6, 0xee, 0xdd, 0xfb, 0x48, 0x28, 0x14, 0xe2, 0x52, 0xa9, 0x14, 0xb2,
|
||||||
|
0xd9, 0x2c, 0x12, 0x89, 0x04, 0x7c, 0x3e, 0x1f, 0x0a, 0x85, 0x02, 0xae, 0x5f, 0xbf, 0x8e, 0xe5,
|
||||||
|
0xe5, 0x65, 0x78, 0xbd, 0x5e, 0x24, 0x93, 0x49, 0xf4, 0xf4, 0xf4, 0x7c, 0xec, 0x18, 0xd0, 0x34,
|
||||||
|
0x0d, 0xcb, 0xcb, 0xcb, 0xd8, 0xdc, 0xdc, 0xc4, 0xe6, 0xe6, 0xe6, 0xf7, 0x05, 0x41, 0xf8, 0x3f,
|
||||||
|
0x00, 0x5a, 0xdd, 0xfe, 0xe0, 0xb7, 0xc2, 0xe7, 0xfd, 0x08, 0xb8, 0x1b, 0xec, 0x01, 0x30, 0xe0,
|
||||||
|
0xf5, 0x7a, 0x4f, 0x06, 0x02, 0x81, 0x9e, 0x70, 0x38, 0x3c, 0xc5, 0xf3, 0x7c, 0xb6, 0x5a, 0xad,
|
||||||
|
0xb6, 0x9b, 0xcd, 0xe6, 0x9c, 0xae, 0xeb, 0xc5, 0x7d, 0xfb, 0xf6, 0x3d, 0xf2, 0xed, 0x6f, 0x7f,
|
||||||
|
0x3b, 0xf5, 0xe4, 0x93, 0x4f, 0x52, 0xa9, 0x54, 0xca, 0xae, 0xeb, 0x5b, 0x5b, 0x5b, 0xc3, 0xd5,
|
||||||
|
0xab, 0x57, 0xf1, 0x37, 0x7f, 0xf3, 0x37, 0x78, 0xe9, 0xa5, 0x97, 0x5e, 0x2a, 0x95, 0x4a, 0xdf,
|
||||||
|
0x05, 0x50, 0xea, 0xf6, 0x07, 0xba, 0x1d, 0x76, 0x09, 0xf0, 0xe9, 0x08, 0x01, 0x08, 0x63, 0x4b,
|
||||||
|
0xbf, 0xdf, 0xbc, 0xf9, 0xef, 0x9e, 0xc1, 0xc1, 0xc1, 0xff, 0x78, 0xf4, 0xe8, 0xd1, 0xe3, 0xc3,
|
||||||
|
0xc3, 0xc3, 0x51, 0xaf, 0xd7, 0x4b, 0xb5, 0xdb, 0x6d, 0x9c, 0x3f, 0x7f, 0xbe, 0x72, 0xfd, 0xfa,
|
||||||
|
0xf5, 0x53, 0x0b, 0x0b, 0x0b, 0xff, 0x53, 0xd7, 0xf5, 0xb7, 0xd1, 0xe5, 0x58, 0xff, 0x9d, 0x60,
|
||||||
|
0x97, 0x00, 0xf7, 0x86, 0x01, 0x00, 0xd3, 0x00, 0x3c, 0xd8, 0x92, 0x75, 0xdf, 0x07, 0x50, 0x40,
|
||||||
|
0x97, 0x7d, 0xfb, 0x5d, 0xec, 0x62, 0x17, 0xbb, 0xd8, 0xc5, 0x2e, 0x76, 0xb1, 0x8b, 0x5d, 0xec,
|
||||||
|
0xe2, 0xb6, 0xf8, 0xff, 0x41, 0xf3, 0x4e, 0xbd, 0x05, 0x07, 0xdc, 0x04, 0x00, 0x00, 0x00, 0x16,
|
||||||
|
0x74, 0x45, 0x58, 0x74, 0x74, 0x69, 0x66, 0x66, 0x3a, 0x72, 0x6f, 0x77, 0x73, 0x2d, 0x70, 0x65,
|
||||||
|
0x72, 0x2d, 0x73, 0x74, 0x72, 0x69, 0x70, 0x00, 0x31, 0x36, 0xa8, 0x15, 0x87, 0xf0, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||||
|
};
|
||||||
|
|
@ -5,6 +5,7 @@ TARG=devdraw
|
||||||
WSYSOFILES=\
|
WSYSOFILES=\
|
||||||
devdraw.$O\
|
devdraw.$O\
|
||||||
latin1.$O\
|
latin1.$O\
|
||||||
|
winsize.$O\
|
||||||
|
|
||||||
<|sh ./mkwsysrules.sh
|
<|sh ./mkwsysrules.sh
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,6 @@ if [ "x$WSYSTYPE" = "xx11" -a "x$X11H" = "x" ]; then
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
echo 'WSYSTYPE='$WSYSTYPE
|
echo 'WSYSTYPE='$WSYSTYPE
|
||||||
echo 'X11='$X11
|
echo 'X11='$X11
|
||||||
|
|
||||||
|
|
@ -45,7 +44,8 @@ if [ $WSYSTYPE = x11 ]; then
|
||||||
echo 'HFILES=$HFILES $XHFILES'
|
echo 'HFILES=$HFILES $XHFILES'
|
||||||
XO=`ls x11-*.c 2>/dev/null | sed 's/\.c$/.o/'`
|
XO=`ls x11-*.c 2>/dev/null | sed 's/\.c$/.o/'`
|
||||||
echo 'WSYSOFILES=$WSYSOFILES '$XO
|
echo 'WSYSOFILES=$WSYSOFILES '$XO
|
||||||
fi
|
elif [ $WSYSTYPE = osx ]; then
|
||||||
if [ $WSYSTYPE = nowsys ]; then
|
echo 'WSYSOFILES=$WSYSOFILES osx-screen.o osx-draw.o osx-srv.o'
|
||||||
|
elif [ $WSYSTYPE = nowsys ]; then
|
||||||
echo 'WSYSOFILES=nowsys.o'
|
echo 'WSYSOFILES=nowsys.o'
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
59
src/cmd/devdraw/osx-draw.c
Normal file
59
src/cmd/devdraw/osx-draw.c
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
#include "u.h"
|
||||||
|
#include "libc.h"
|
||||||
|
#include "draw.h"
|
||||||
|
#include "memdraw.h"
|
||||||
|
|
||||||
|
Memimage*
|
||||||
|
allocmemimage(Rectangle r, u32int chan)
|
||||||
|
{
|
||||||
|
return _allocmemimage(r, chan);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
freememimage(Memimage *i)
|
||||||
|
{
|
||||||
|
_freememimage(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
memfillcolor(Memimage *i, u32int val)
|
||||||
|
{
|
||||||
|
_memfillcolor(i, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
cloadmemimage(Memimage *i, Rectangle r, uchar *data, int ndata)
|
||||||
|
{
|
||||||
|
return _cloadmemimage(i, r, data, ndata);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
memimagedraw(Memimage *dst, Rectangle r, Memimage *src, Point sp, Memimage *mask, Point mp, int op)
|
||||||
|
{
|
||||||
|
Memdrawparam *par;
|
||||||
|
|
||||||
|
par = _memimagedrawsetup(dst, r, src, sp, mask, mp, op);
|
||||||
|
if(par == nil)
|
||||||
|
return;
|
||||||
|
_memimagedraw(par);
|
||||||
|
}
|
||||||
|
|
||||||
|
u32int
|
||||||
|
pixelbits(Memimage *m, Point p)
|
||||||
|
{
|
||||||
|
return _pixelbits(m, p);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
loadmemimage(Memimage *i, Rectangle r, uchar *data, int ndata)
|
||||||
|
{
|
||||||
|
return _loadmemimage(i, r, data, ndata);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
unloadmemimage(Memimage *i, Rectangle r, uchar *data, int ndata)
|
||||||
|
{
|
||||||
|
return _unloadmemimage(i, r, data, ndata);
|
||||||
|
}
|
||||||
|
|
||||||
189
src/cmd/devdraw/osx-keycodes.h
Normal file
189
src/cmd/devdraw/osx-keycodes.h
Normal file
|
|
@ -0,0 +1,189 @@
|
||||||
|
/* These are the Macintosh key scancode constants -- from Inside Macintosh */
|
||||||
|
#define QZ_ESCAPE 0x35
|
||||||
|
#define QZ_F1 0x7A
|
||||||
|
#define QZ_F2 0x78
|
||||||
|
#define QZ_F3 0x63
|
||||||
|
#define QZ_F4 0x76
|
||||||
|
#define QZ_F5 0x60
|
||||||
|
#define QZ_F6 0x61
|
||||||
|
#define QZ_F7 0x62
|
||||||
|
#define QZ_F8 0x64
|
||||||
|
#define QZ_F9 0x65
|
||||||
|
#define QZ_F10 0x6D
|
||||||
|
#define QZ_F11 0x67
|
||||||
|
#define QZ_F12 0x6F
|
||||||
|
#define QZ_PRINT 0x69
|
||||||
|
#define QZ_SCROLLOCK 0x6B
|
||||||
|
#define QZ_PAUSE 0x71
|
||||||
|
#define QZ_POWER 0x7F
|
||||||
|
#define QZ_BACKQUOTE 0x32
|
||||||
|
#define QZ_1 0x12
|
||||||
|
#define QZ_2 0x13
|
||||||
|
#define QZ_3 0x14
|
||||||
|
#define QZ_4 0x15
|
||||||
|
#define QZ_5 0x17
|
||||||
|
#define QZ_6 0x16
|
||||||
|
#define QZ_7 0x1A
|
||||||
|
#define QZ_8 0x1C
|
||||||
|
#define QZ_9 0x19
|
||||||
|
#define QZ_0 0x1D
|
||||||
|
#define QZ_MINUS 0x1B
|
||||||
|
#define QZ_EQUALS 0x18
|
||||||
|
#define QZ_BACKSPACE 0x33
|
||||||
|
#define QZ_INSERT 0x72
|
||||||
|
#define QZ_HOME 0x73
|
||||||
|
#define QZ_PAGEUP 0x74
|
||||||
|
#define QZ_NUMLOCK 0x47
|
||||||
|
#define QZ_KP_EQUALS 0x51
|
||||||
|
#define QZ_KP_DIVIDE 0x4B
|
||||||
|
#define QZ_KP_MULTIPLY 0x43
|
||||||
|
#define QZ_TAB 0x30
|
||||||
|
#define QZ_q 0x0C
|
||||||
|
#define QZ_w 0x0D
|
||||||
|
#define QZ_e 0x0E
|
||||||
|
#define QZ_r 0x0F
|
||||||
|
#define QZ_t 0x11
|
||||||
|
#define QZ_y 0x10
|
||||||
|
#define QZ_u 0x20
|
||||||
|
#define QZ_i 0x22
|
||||||
|
#define QZ_o 0x1F
|
||||||
|
#define QZ_p 0x23
|
||||||
|
#define QZ_LEFTBRACKET 0x21
|
||||||
|
#define QZ_RIGHTBRACKET 0x1E
|
||||||
|
#define QZ_BACKSLASH 0x2A
|
||||||
|
#define QZ_DELETE 0x75
|
||||||
|
#define QZ_END 0x77
|
||||||
|
#define QZ_PAGEDOWN 0x79
|
||||||
|
#define QZ_KP7 0x59
|
||||||
|
#define QZ_KP8 0x5B
|
||||||
|
#define QZ_KP9 0x5C
|
||||||
|
#define QZ_KP_MINUS 0x4E
|
||||||
|
#define QZ_CAPSLOCK 0x39
|
||||||
|
#define QZ_a 0x00
|
||||||
|
#define QZ_s 0x01
|
||||||
|
#define QZ_d 0x02
|
||||||
|
#define QZ_f 0x03
|
||||||
|
#define QZ_g 0x05
|
||||||
|
#define QZ_h 0x04
|
||||||
|
#define QZ_j 0x26
|
||||||
|
#define QZ_k 0x28
|
||||||
|
#define QZ_l 0x25
|
||||||
|
#define QZ_SEMICOLON 0x29
|
||||||
|
#define QZ_QUOTE 0x27
|
||||||
|
#define QZ_RETURN 0x24
|
||||||
|
#define QZ_KP4 0x56
|
||||||
|
#define QZ_KP5 0x57
|
||||||
|
#define QZ_KP6 0x58
|
||||||
|
#define QZ_KP_PLUS 0x45
|
||||||
|
#define QZ_LSHIFT 0x38
|
||||||
|
#define QZ_z 0x06
|
||||||
|
#define QZ_x 0x07
|
||||||
|
#define QZ_c 0x08
|
||||||
|
#define QZ_v 0x09
|
||||||
|
#define QZ_b 0x0B
|
||||||
|
#define QZ_n 0x2D
|
||||||
|
#define QZ_m 0x2E
|
||||||
|
#define QZ_COMMA 0x2B
|
||||||
|
#define QZ_PERIOD 0x2F
|
||||||
|
#define QZ_SLASH 0x2C
|
||||||
|
/* These are the same as the left versions - use left by default */
|
||||||
|
#if 0
|
||||||
|
#define QZ_RSHIFT 0x38
|
||||||
|
#endif
|
||||||
|
#define QZ_UP 0x7E
|
||||||
|
#define QZ_KP1 0x53
|
||||||
|
#define QZ_KP2 0x54
|
||||||
|
#define QZ_KP3 0x55
|
||||||
|
#define QZ_KP_ENTER 0x4C
|
||||||
|
#define QZ_LCTRL 0x3B
|
||||||
|
#define QZ_LALT 0x3A
|
||||||
|
#define QZ_LMETA 0x37
|
||||||
|
#define QZ_SPACE 0x31
|
||||||
|
/* These are the same as the left versions - use left by default */
|
||||||
|
#if 0
|
||||||
|
#define QZ_RMETA 0x37
|
||||||
|
#define QZ_RALT 0x3A
|
||||||
|
#define QZ_RCTRL 0x3B
|
||||||
|
#endif
|
||||||
|
#define QZ_LEFT 0x7B
|
||||||
|
#define QZ_DOWN 0x7D
|
||||||
|
#define QZ_RIGHT 0x7C
|
||||||
|
#define QZ_KP0 0x52
|
||||||
|
#define QZ_KP_PERIOD 0x41
|
||||||
|
|
||||||
|
/* Wierd, these keys are on my iBook under MacOS X */
|
||||||
|
#define QZ_IBOOK_ENTER 0x34
|
||||||
|
#define QZ_IBOOK_LEFT 0x3B
|
||||||
|
#define QZ_IBOOK_RIGHT 0x3C
|
||||||
|
#define QZ_IBOOK_DOWN 0x3D
|
||||||
|
#define QZ_IBOOK_UP 0x3E
|
||||||
|
#define KEY_ENTER 13
|
||||||
|
#define KEY_TAB 9
|
||||||
|
|
||||||
|
#define KEY_BASE 0x100
|
||||||
|
|
||||||
|
/* Function keys */
|
||||||
|
#define KEY_F (KEY_BASE+64)
|
||||||
|
|
||||||
|
/* Control keys */
|
||||||
|
#define KEY_CTRL (KEY_BASE)
|
||||||
|
#define KEY_BACKSPACE (KEY_CTRL+0)
|
||||||
|
#define KEY_DELETE (KEY_CTRL+1)
|
||||||
|
#define KEY_INSERT (KEY_CTRL+2)
|
||||||
|
#define KEY_HOME (KEY_CTRL+3)
|
||||||
|
#define KEY_END (KEY_CTRL+4)
|
||||||
|
#define KEY_PAGE_UP (KEY_CTRL+5)
|
||||||
|
#define KEY_PAGE_DOWN (KEY_CTRL+6)
|
||||||
|
#define KEY_ESC (KEY_CTRL+7)
|
||||||
|
|
||||||
|
/* Control keys short name */
|
||||||
|
#define KEY_BS KEY_BACKSPACE
|
||||||
|
#define KEY_DEL KEY_DELETE
|
||||||
|
#define KEY_INS KEY_INSERT
|
||||||
|
#define KEY_PGUP KEY_PAGE_UP
|
||||||
|
#define KEY_PGDOWN KEY_PAGE_DOWN
|
||||||
|
#define KEY_PGDWN KEY_PAGE_DOWN
|
||||||
|
|
||||||
|
/* Cursor movement */
|
||||||
|
#define KEY_CRSR (KEY_BASE+16)
|
||||||
|
#define KEY_RIGHT (KEY_CRSR+0)
|
||||||
|
#define KEY_LEFT (KEY_CRSR+1)
|
||||||
|
#define KEY_DOWN (KEY_CRSR+2)
|
||||||
|
#define KEY_UP (KEY_CRSR+3)
|
||||||
|
|
||||||
|
/* Multimedia keyboard/remote keys */
|
||||||
|
#define KEY_MM_BASE (0x100+384)
|
||||||
|
#define KEY_POWER (KEY_MM_BASE+0)
|
||||||
|
#define KEY_MENU (KEY_MM_BASE+1)
|
||||||
|
#define KEY_PLAY (KEY_MM_BASE+2)
|
||||||
|
#define KEY_PAUSE (KEY_MM_BASE+3)
|
||||||
|
#define KEY_PLAYPAUSE (KEY_MM_BASE+4)
|
||||||
|
#define KEY_STOP (KEY_MM_BASE+5)
|
||||||
|
#define KEY_FORWARD (KEY_MM_BASE+6)
|
||||||
|
#define KEY_REWIND (KEY_MM_BASE+7)
|
||||||
|
#define KEY_NEXT (KEY_MM_BASE+8)
|
||||||
|
#define KEY_PREV (KEY_MM_BASE+9)
|
||||||
|
#define KEY_VOLUME_UP (KEY_MM_BASE+10)
|
||||||
|
#define KEY_VOLUME_DOWN (KEY_MM_BASE+11)
|
||||||
|
#define KEY_MUTE (KEY_MM_BASE+12)
|
||||||
|
|
||||||
|
/* Keypad keys */
|
||||||
|
#define KEY_KEYPAD (KEY_BASE+32)
|
||||||
|
#define KEY_KP0 (KEY_KEYPAD+0)
|
||||||
|
#define KEY_KP1 (KEY_KEYPAD+1)
|
||||||
|
#define KEY_KP2 (KEY_KEYPAD+2)
|
||||||
|
#define KEY_KP3 (KEY_KEYPAD+3)
|
||||||
|
#define KEY_KP4 (KEY_KEYPAD+4)
|
||||||
|
#define KEY_KP5 (KEY_KEYPAD+5)
|
||||||
|
#define KEY_KP6 (KEY_KEYPAD+6)
|
||||||
|
#define KEY_KP7 (KEY_KEYPAD+7)
|
||||||
|
#define KEY_KP8 (KEY_KEYPAD+8)
|
||||||
|
#define KEY_KP9 (KEY_KEYPAD+9)
|
||||||
|
#define KEY_KPDEC (KEY_KEYPAD+10)
|
||||||
|
#define KEY_KPINS (KEY_KEYPAD+11)
|
||||||
|
#define KEY_KPDEL (KEY_KEYPAD+12)
|
||||||
|
#define KEY_KPENTER (KEY_KEYPAD+13)
|
||||||
|
|
||||||
|
/* Special keys */
|
||||||
|
#define KEY_INTERN (0x1000)
|
||||||
|
#define KEY_CLOSE_WIN (KEY_INTERN+0)
|
||||||
714
src/cmd/devdraw/osx-screen.c
Normal file
714
src/cmd/devdraw/osx-screen.c
Normal file
|
|
@ -0,0 +1,714 @@
|
||||||
|
#define Point OSXPoint
|
||||||
|
#define Rect OSXRect
|
||||||
|
#define Cursor OSXCursor
|
||||||
|
#include <Carbon/Carbon.h>
|
||||||
|
#include <QuickTime/QuickTime.h> // for full screen
|
||||||
|
|
||||||
|
|
||||||
|
#undef Rect
|
||||||
|
#undef Point
|
||||||
|
#undef Cursor
|
||||||
|
#undef offsetof
|
||||||
|
#undef nil
|
||||||
|
|
||||||
|
#include "u.h"
|
||||||
|
#include "libc.h"
|
||||||
|
#include <thread.h>
|
||||||
|
#include <draw.h>
|
||||||
|
#include <memdraw.h>
|
||||||
|
#include <keyboard.h>
|
||||||
|
#include "mouse.h"
|
||||||
|
#include <cursor.h>
|
||||||
|
#include "osx-screen.h"
|
||||||
|
#include "osx-keycodes.h"
|
||||||
|
#include "devdraw.h"
|
||||||
|
#include "glendapng.h"
|
||||||
|
|
||||||
|
#define panic sysfatal
|
||||||
|
|
||||||
|
extern Rectangle mouserect;
|
||||||
|
|
||||||
|
struct {
|
||||||
|
char *label;
|
||||||
|
char *winsize;
|
||||||
|
|
||||||
|
Rectangle fullscreenr;
|
||||||
|
Rectangle screenr;
|
||||||
|
Memimage *screenimage;
|
||||||
|
int isfullscreen;
|
||||||
|
Rectangle nonfullscreenr;
|
||||||
|
|
||||||
|
Point xy;
|
||||||
|
int buttons;
|
||||||
|
int kbuttons;
|
||||||
|
|
||||||
|
CGDataProviderRef provider;
|
||||||
|
MenuRef wmenu;
|
||||||
|
MenuRef vmenu;
|
||||||
|
WindowRef window;
|
||||||
|
CGImageRef image;
|
||||||
|
WindowGroupRef wingroup;
|
||||||
|
PasteboardRef snarf;
|
||||||
|
} osx;
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
WindowAttrs =
|
||||||
|
kWindowCloseBoxAttribute |
|
||||||
|
kWindowCollapseBoxAttribute |
|
||||||
|
kWindowResizableAttribute |
|
||||||
|
kWindowStandardHandlerAttribute |
|
||||||
|
kWindowFullZoomAttribute
|
||||||
|
};
|
||||||
|
|
||||||
|
static void screenproc(void*);
|
||||||
|
static void eresized(int);
|
||||||
|
static void fullscreen(int);
|
||||||
|
static void seticon(void);
|
||||||
|
|
||||||
|
static OSStatus quithandler(EventHandlerCallRef, EventRef, void*);
|
||||||
|
static OSStatus eventhandler(EventHandlerCallRef, EventRef, void*);
|
||||||
|
static OSStatus cmdhandler(EventHandlerCallRef, EventRef, void*);
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
CmdFullScreen = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
void screeninit(void);
|
||||||
|
|
||||||
|
Memimage*
|
||||||
|
attachscreen(char *label, char *winsize)
|
||||||
|
{
|
||||||
|
if(label == nil)
|
||||||
|
label = "gnot a label";
|
||||||
|
osx.label = label;
|
||||||
|
osx.winsize = winsize;
|
||||||
|
if(osx.screenimage == nil){
|
||||||
|
screeninit();
|
||||||
|
if(osx.screenimage == nil)
|
||||||
|
panic("cannot create OS X screen");
|
||||||
|
}
|
||||||
|
return osx.screenimage;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
_screeninit(void)
|
||||||
|
{
|
||||||
|
CGRect cgr;
|
||||||
|
OSXRect or;
|
||||||
|
Rectangle r;
|
||||||
|
int havemin;
|
||||||
|
|
||||||
|
memimageinit();
|
||||||
|
|
||||||
|
ProcessSerialNumber psn = { 0, kCurrentProcess };
|
||||||
|
TransformProcessType(&psn, kProcessTransformToForegroundApplication);
|
||||||
|
SetFrontProcess(&psn);
|
||||||
|
|
||||||
|
cgr = CGDisplayBounds(CGMainDisplayID());
|
||||||
|
osx.fullscreenr = Rect(0, 0, cgr.size.width, cgr.size.height);
|
||||||
|
|
||||||
|
InitCursor();
|
||||||
|
|
||||||
|
// Create minimal menu with full-screen option.
|
||||||
|
ClearMenuBar();
|
||||||
|
CreateStandardWindowMenu(0, &osx.wmenu);
|
||||||
|
InsertMenu(osx.wmenu, 0);
|
||||||
|
MenuItemIndex ix;
|
||||||
|
CreateNewMenu(1004, 0, &osx.vmenu); // XXX 1004?
|
||||||
|
SetMenuTitleWithCFString(osx.vmenu, CFSTR("View"));
|
||||||
|
AppendMenuItemTextWithCFString(osx.vmenu,
|
||||||
|
CFSTR("Full Screen"), 0, CmdFullScreen, &ix);
|
||||||
|
SetMenuItemCommandKey(osx.vmenu, ix, 0, 'F');
|
||||||
|
AppendMenuItemTextWithCFString(osx.vmenu,
|
||||||
|
CFSTR("Ctl-Opt exits full screen"),
|
||||||
|
kMenuItemAttrDisabled, CmdFullScreen, &ix);
|
||||||
|
InsertMenu(osx.vmenu, GetMenuID(osx.wmenu));
|
||||||
|
DrawMenuBar();
|
||||||
|
|
||||||
|
// Create the window.
|
||||||
|
r = Rect(0, 0, Dx(osx.fullscreenr)*2/3, Dy(osx.fullscreenr)*2/3);
|
||||||
|
havemin = 0;
|
||||||
|
if(osx.winsize && osx.winsize[0]){
|
||||||
|
if(parsewinsize(osx.winsize, &r, &havemin) < 0)
|
||||||
|
sysfatal("%r");
|
||||||
|
}
|
||||||
|
if(!havemin)
|
||||||
|
r = rectaddpt(r, Pt((Dx(osx.fullscreenr)-Dx(r))/2, (Dy(osx.fullscreenr)-Dy(r))/2));
|
||||||
|
or.left = r.min.x;
|
||||||
|
or.top = r.min.y;
|
||||||
|
or.right = r.max.x;
|
||||||
|
or.bottom = r.max.y;
|
||||||
|
CreateNewWindow(kDocumentWindowClass, WindowAttrs, &or, &osx.window);
|
||||||
|
CreateWindowGroup(0, &osx.wingroup);
|
||||||
|
SetWindowGroup(osx.window, osx.wingroup);
|
||||||
|
setlabel(osx.label);
|
||||||
|
seticon();
|
||||||
|
|
||||||
|
// Set up the clip board.
|
||||||
|
if(PasteboardCreate(kPasteboardClipboard, &osx.snarf) != noErr)
|
||||||
|
panic("pasteboard create");
|
||||||
|
|
||||||
|
// Explain in great detail which events we want to handle.
|
||||||
|
// Why can't we just have one handler?
|
||||||
|
const EventTypeSpec quits[] = {
|
||||||
|
{ kEventClassApplication, kEventAppQuit }
|
||||||
|
};
|
||||||
|
const EventTypeSpec cmds[] = {
|
||||||
|
{ kEventClassWindow, kEventWindowClosed },
|
||||||
|
{ kEventClassWindow, kEventWindowBoundsChanged },
|
||||||
|
{ kEventClassCommand, kEventCommandProcess }
|
||||||
|
};
|
||||||
|
const EventTypeSpec events[] = {
|
||||||
|
{ kEventClassKeyboard, kEventRawKeyDown },
|
||||||
|
{ kEventClassKeyboard, kEventRawKeyModifiersChanged },
|
||||||
|
{ kEventClassKeyboard, kEventRawKeyRepeat },
|
||||||
|
{ kEventClassMouse, kEventMouseDown },
|
||||||
|
{ kEventClassMouse, kEventMouseUp },
|
||||||
|
{ kEventClassMouse, kEventMouseMoved },
|
||||||
|
{ kEventClassMouse, kEventMouseDragged },
|
||||||
|
{ kEventClassMouse, kEventMouseWheelMoved },
|
||||||
|
};
|
||||||
|
|
||||||
|
InstallApplicationEventHandler(
|
||||||
|
NewEventHandlerUPP(quithandler),
|
||||||
|
nelem(quits), quits, nil, nil);
|
||||||
|
|
||||||
|
InstallApplicationEventHandler(
|
||||||
|
NewEventHandlerUPP(eventhandler),
|
||||||
|
nelem(events), events, nil, nil);
|
||||||
|
|
||||||
|
InstallWindowEventHandler(osx.window,
|
||||||
|
NewEventHandlerUPP(cmdhandler),
|
||||||
|
nelem(cmds), cmds, osx.window, nil);
|
||||||
|
|
||||||
|
// Finally, put the window on the screen.
|
||||||
|
ShowWindow(osx.window);
|
||||||
|
ShowMenuBar();
|
||||||
|
eresized(0);
|
||||||
|
SelectWindow(osx.window);
|
||||||
|
|
||||||
|
InitCursor();
|
||||||
|
}
|
||||||
|
|
||||||
|
static Rendez scr;
|
||||||
|
static QLock slock;
|
||||||
|
|
||||||
|
void
|
||||||
|
screeninit(void)
|
||||||
|
{
|
||||||
|
scr.l = &slock;
|
||||||
|
qlock(scr.l);
|
||||||
|
proccreate(screenproc, nil, 256*1024);
|
||||||
|
while(osx.window == nil)
|
||||||
|
rsleep(&scr);
|
||||||
|
qunlock(scr.l);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
screenproc(void *v)
|
||||||
|
{
|
||||||
|
qlock(scr.l);
|
||||||
|
_screeninit();
|
||||||
|
rwakeup(&scr);
|
||||||
|
qunlock(scr.l);
|
||||||
|
RunApplicationEventLoop();
|
||||||
|
}
|
||||||
|
|
||||||
|
static OSStatus kbdevent(EventRef);
|
||||||
|
static OSStatus mouseevent(EventRef);
|
||||||
|
|
||||||
|
static OSStatus
|
||||||
|
cmdhandler(EventHandlerCallRef next, EventRef event, void *arg)
|
||||||
|
{
|
||||||
|
return eventhandler(next, event, arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
static OSStatus
|
||||||
|
quithandler(EventHandlerCallRef next, EventRef event, void *arg)
|
||||||
|
{
|
||||||
|
exit(0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static OSStatus
|
||||||
|
eventhandler(EventHandlerCallRef next, EventRef event, void *arg)
|
||||||
|
{
|
||||||
|
OSStatus result;
|
||||||
|
|
||||||
|
result = CallNextEventHandler(next, event);
|
||||||
|
|
||||||
|
switch(GetEventClass(event)){
|
||||||
|
case kEventClassKeyboard:
|
||||||
|
return kbdevent(event);
|
||||||
|
|
||||||
|
case kEventClassMouse:
|
||||||
|
return mouseevent(event);
|
||||||
|
|
||||||
|
case kEventClassCommand:;
|
||||||
|
HICommand cmd;
|
||||||
|
GetEventParameter(event, kEventParamDirectObject,
|
||||||
|
typeHICommand, nil, sizeof cmd, nil, &cmd);
|
||||||
|
switch(cmd.commandID){
|
||||||
|
case kHICommandQuit:
|
||||||
|
exit(0);
|
||||||
|
|
||||||
|
case CmdFullScreen:
|
||||||
|
fullscreen(1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return eventNotHandledErr;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case kEventClassWindow:;
|
||||||
|
switch(GetEventKind(event)){
|
||||||
|
case kEventWindowClosed:
|
||||||
|
exit(0);
|
||||||
|
|
||||||
|
case kEventWindowBoundsChanged:
|
||||||
|
eresized(1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return eventNotHandledErr;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static ulong
|
||||||
|
msec(void)
|
||||||
|
{
|
||||||
|
return nsec()/1000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
static OSStatus
|
||||||
|
mouseevent(EventRef event)
|
||||||
|
{
|
||||||
|
int wheel;
|
||||||
|
OSXPoint op;
|
||||||
|
|
||||||
|
GetEventParameter(event, kEventParamMouseLocation,
|
||||||
|
typeQDPoint, 0, sizeof op, 0, &op);
|
||||||
|
|
||||||
|
osx.xy = subpt(Pt(op.h, op.v), osx.screenr.min);
|
||||||
|
wheel = 0;
|
||||||
|
|
||||||
|
switch(GetEventKind(event)){
|
||||||
|
case kEventMouseWheelMoved:;
|
||||||
|
SInt32 delta;
|
||||||
|
GetEventParameter(event, kEventParamMouseWheelDelta,
|
||||||
|
typeSInt32, 0, sizeof delta, 0, &delta);
|
||||||
|
if(delta > 0)
|
||||||
|
wheel = 8;
|
||||||
|
else
|
||||||
|
wheel = 16;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case kEventMouseDown:
|
||||||
|
case kEventMouseUp:;
|
||||||
|
UInt32 but, mod;
|
||||||
|
GetEventParameter(event, kEventParamMouseChord,
|
||||||
|
typeUInt32, 0, sizeof but, 0, &but);
|
||||||
|
GetEventParameter(event, kEventParamKeyModifiers,
|
||||||
|
typeUInt32, 0, sizeof mod, 0, &mod);
|
||||||
|
|
||||||
|
// OS X swaps button 2 and 3
|
||||||
|
but = (but & ~6) | ((but & 4)>>1) | ((but&2)<<1);
|
||||||
|
|
||||||
|
// Apply keyboard modifiers and pretend it was a real mouse button.
|
||||||
|
// (Modifiers typed while holding the button go into kbuttons,
|
||||||
|
// but this one does not.)
|
||||||
|
if(but == 1){
|
||||||
|
if(mod & optionKey)
|
||||||
|
but = 2;
|
||||||
|
else if(mod & cmdKey)
|
||||||
|
but = 4;
|
||||||
|
}
|
||||||
|
osx.buttons = but;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case kEventMouseMoved:
|
||||||
|
case kEventMouseDragged:
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return eventNotHandledErr;
|
||||||
|
}
|
||||||
|
|
||||||
|
mousetrack(osx.xy.x, osx.xy.y, osx.buttons|osx.kbuttons, msec());
|
||||||
|
return noErr;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int keycvt[] =
|
||||||
|
{
|
||||||
|
[QZ_IBOOK_ENTER] '\n',
|
||||||
|
[QZ_RETURN] '\n',
|
||||||
|
[QZ_ESCAPE] 27,
|
||||||
|
[QZ_BACKSPACE] '\b',
|
||||||
|
[QZ_LALT] Kalt,
|
||||||
|
[QZ_LCTRL] Kctl,
|
||||||
|
[QZ_LSHIFT] Kshift,
|
||||||
|
[QZ_F1] KF+1,
|
||||||
|
[QZ_F2] KF+2,
|
||||||
|
[QZ_F3] KF+3,
|
||||||
|
[QZ_F4] KF+4,
|
||||||
|
[QZ_F5] KF+5,
|
||||||
|
[QZ_F6] KF+6,
|
||||||
|
[QZ_F7] KF+7,
|
||||||
|
[QZ_F8] KF+8,
|
||||||
|
[QZ_F9] KF+9,
|
||||||
|
[QZ_F10] KF+10,
|
||||||
|
[QZ_F11] KF+11,
|
||||||
|
[QZ_F12] KF+12,
|
||||||
|
[QZ_INSERT] Kins,
|
||||||
|
[QZ_DELETE] 0x7F,
|
||||||
|
[QZ_HOME] Khome,
|
||||||
|
[QZ_END] Kend,
|
||||||
|
[QZ_KP_PLUS] '+',
|
||||||
|
[QZ_KP_MINUS] '-',
|
||||||
|
[QZ_TAB] '\t',
|
||||||
|
[QZ_PAGEUP] Kpgup,
|
||||||
|
[QZ_PAGEDOWN] Kpgdown,
|
||||||
|
[QZ_UP] Kup,
|
||||||
|
[QZ_DOWN] Kdown,
|
||||||
|
[QZ_LEFT] Kleft,
|
||||||
|
[QZ_RIGHT] Kright,
|
||||||
|
[QZ_KP_MULTIPLY] '*',
|
||||||
|
[QZ_KP_DIVIDE] '/',
|
||||||
|
[QZ_KP_ENTER] '\n',
|
||||||
|
[QZ_KP_PERIOD] '.',
|
||||||
|
[QZ_KP0] '0',
|
||||||
|
[QZ_KP1] '1',
|
||||||
|
[QZ_KP2] '2',
|
||||||
|
[QZ_KP3] '3',
|
||||||
|
[QZ_KP4] '4',
|
||||||
|
[QZ_KP5] '5',
|
||||||
|
[QZ_KP6] '6',
|
||||||
|
[QZ_KP7] '7',
|
||||||
|
[QZ_KP8] '8',
|
||||||
|
[QZ_KP9] '9',
|
||||||
|
};
|
||||||
|
|
||||||
|
static OSStatus
|
||||||
|
kbdevent(EventRef event)
|
||||||
|
{
|
||||||
|
char ch;
|
||||||
|
UInt32 code;
|
||||||
|
UInt32 mod;
|
||||||
|
int k;
|
||||||
|
|
||||||
|
GetEventParameter(event, kEventParamKeyMacCharCodes,
|
||||||
|
typeChar, nil, sizeof ch, nil, &ch);
|
||||||
|
GetEventParameter(event, kEventParamKeyCode,
|
||||||
|
typeUInt32, nil, sizeof code, nil, &code);
|
||||||
|
GetEventParameter(event, kEventParamKeyModifiers,
|
||||||
|
typeUInt32, nil, sizeof mod, nil, &mod);
|
||||||
|
|
||||||
|
switch(GetEventKind(event)){
|
||||||
|
case kEventRawKeyDown:
|
||||||
|
case kEventRawKeyRepeat:
|
||||||
|
if(mod == cmdKey){
|
||||||
|
if(ch == 'F' && osx.isfullscreen){
|
||||||
|
fullscreen(0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return eventNotHandledErr;
|
||||||
|
}
|
||||||
|
k = ch;
|
||||||
|
if(code < nelem(keycvt) && keycvt[code])
|
||||||
|
k = keycvt[code];
|
||||||
|
if(k >= 0)
|
||||||
|
keystroke(k);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case kEventRawKeyModifiersChanged:
|
||||||
|
if(!osx.buttons && !osx.kbuttons){
|
||||||
|
if(mod == optionKey)
|
||||||
|
keystroke(Kalt);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the mouse button is being held down, treat
|
||||||
|
// changes in the keyboard modifiers as changes
|
||||||
|
// in the mouse buttons.
|
||||||
|
osx.kbuttons = 0;
|
||||||
|
if(mod & optionKey)
|
||||||
|
osx.kbuttons |= 2;
|
||||||
|
if(mod & cmdKey)
|
||||||
|
osx.kbuttons |= 4;
|
||||||
|
mousetrack(osx.xy.x, osx.xy.y, osx.buttons|osx.kbuttons, msec());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return noErr;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
eresized(int new)
|
||||||
|
{
|
||||||
|
Memimage *m;
|
||||||
|
OSXRect or;
|
||||||
|
ulong chan;
|
||||||
|
Rectangle r;
|
||||||
|
int bpl;
|
||||||
|
CGDataProviderRef provider;
|
||||||
|
CGImageRef image;
|
||||||
|
|
||||||
|
GetWindowBounds(osx.window, kWindowContentRgn, &or);
|
||||||
|
r = Rect(or.left, or.top, or.right, or.bottom);
|
||||||
|
if(Dx(r) == Dx(osx.screenr) && Dy(r) == Dy(osx.screenr)){
|
||||||
|
// No need to make new image.
|
||||||
|
osx.screenr = r;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
chan = XBGR32;
|
||||||
|
m = allocmemimage(Rect(0, 0, Dx(r), Dy(r)), chan);
|
||||||
|
if(m == nil)
|
||||||
|
panic("allocmemimage: %r");
|
||||||
|
if(m->data == nil)
|
||||||
|
panic("m->data == nil");
|
||||||
|
bpl = bytesperline(r, 32);
|
||||||
|
provider = CGDataProviderCreateWithData(0,
|
||||||
|
m->data->bdata, Dy(r)*bpl, 0);
|
||||||
|
image = CGImageCreate(Dx(r), Dy(r), 8, 32, bpl,
|
||||||
|
CGColorSpaceCreateDeviceRGB(),
|
||||||
|
kCGImageAlphaNoneSkipLast,
|
||||||
|
provider, 0, 0, kCGRenderingIntentDefault);
|
||||||
|
CGDataProviderRelease(provider); // CGImageCreate did incref
|
||||||
|
|
||||||
|
mouserect = m->r;
|
||||||
|
if(new)
|
||||||
|
mouseresized = 1;
|
||||||
|
// termreplacescreenimage(m);
|
||||||
|
_drawreplacescreenimage(m); // frees old osx.screenimage if any
|
||||||
|
if(osx.image)
|
||||||
|
CGImageRelease(osx.image);
|
||||||
|
osx.image = image;
|
||||||
|
osx.screenimage = m;
|
||||||
|
osx.screenr = r;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
_flushmemscreen(Rectangle r)
|
||||||
|
{
|
||||||
|
CGRect cgr;
|
||||||
|
CGContextRef context;
|
||||||
|
CGImageRef subimg;
|
||||||
|
|
||||||
|
QDBeginCGContext(GetWindowPort(osx.window), &context);
|
||||||
|
|
||||||
|
cgr.origin.x = r.min.x;
|
||||||
|
cgr.origin.y = r.min.y;
|
||||||
|
cgr.size.width = Dx(r);
|
||||||
|
cgr.size.height = Dy(r);
|
||||||
|
subimg = CGImageCreateWithImageInRect(osx.image, cgr);
|
||||||
|
cgr.origin.y = Dy(osx.screenr) - r.max.y; // XXX how does this make any sense?
|
||||||
|
CGContextDrawImage(context, cgr, subimg);
|
||||||
|
CGContextFlush(context);
|
||||||
|
CGImageRelease(subimg);
|
||||||
|
|
||||||
|
QDEndCGContext(GetWindowPort(osx.window), &context);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
fullscreen(int x)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
setmouse(Point p)
|
||||||
|
{
|
||||||
|
CGPoint cgp;
|
||||||
|
|
||||||
|
cgp.x = p.x + osx.screenr.min.x;
|
||||||
|
cgp.y = p.y + osx.screenr.min.y;
|
||||||
|
CGWarpMouseCursorPosition(cgp);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
setcursor(Cursor *c)
|
||||||
|
{
|
||||||
|
OSXCursor oc;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if(c == nil){
|
||||||
|
InitCursor();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetCursor is deprecated, but what replaces it?
|
||||||
|
for(i=0; i<16; i++){
|
||||||
|
oc.data[i] = ((ushort*)c->set)[i];
|
||||||
|
oc.mask[i] = oc.data[i] | ((ushort*)c->clr)[i];
|
||||||
|
}
|
||||||
|
oc.hotSpot.h = - c->offset.x;
|
||||||
|
oc.hotSpot.v = - c->offset.y;
|
||||||
|
SetCursor(&oc);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
getcolor(ulong i, ulong *r, ulong *g, ulong *b)
|
||||||
|
{
|
||||||
|
ulong v;
|
||||||
|
|
||||||
|
v = 0;
|
||||||
|
*r = (v>>16)&0xFF;
|
||||||
|
*g = (v>>8)&0xFF;
|
||||||
|
*b = v&0xFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
setcolor(ulong i, ulong r, ulong g, ulong b)
|
||||||
|
{
|
||||||
|
/* no-op */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
hwdraw(Memdrawparam *p)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct {
|
||||||
|
QLock lk;
|
||||||
|
char buf[SnarfSize];
|
||||||
|
Rune rbuf[SnarfSize];
|
||||||
|
PasteboardRef apple;
|
||||||
|
} clip;
|
||||||
|
|
||||||
|
char*
|
||||||
|
getsnarf(void)
|
||||||
|
{
|
||||||
|
char *s, *t;
|
||||||
|
CFArrayRef flavors;
|
||||||
|
CFDataRef data;
|
||||||
|
CFIndex nflavor, ndata, j;
|
||||||
|
CFStringRef type;
|
||||||
|
ItemCount nitem;
|
||||||
|
PasteboardItemID id;
|
||||||
|
PasteboardSyncFlags flags;
|
||||||
|
UInt32 i;
|
||||||
|
|
||||||
|
/* fprint(2, "applegetsnarf\n"); */
|
||||||
|
qlock(&clip.lk);
|
||||||
|
clip.apple = osx.snarf;
|
||||||
|
if(clip.apple == nil){
|
||||||
|
if(PasteboardCreate(kPasteboardClipboard, &clip.apple) != noErr){
|
||||||
|
fprint(2, "apple pasteboard create failed\n");
|
||||||
|
qunlock(&clip.lk);
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
flags = PasteboardSynchronize(clip.apple);
|
||||||
|
if(flags&kPasteboardClientIsOwner){
|
||||||
|
s = strdup(clip.buf);
|
||||||
|
qunlock(&clip.lk);
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
if(PasteboardGetItemCount(clip.apple, &nitem) != noErr){
|
||||||
|
fprint(2, "apple pasteboard get item count failed\n");
|
||||||
|
qunlock(&clip.lk);
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
for(i=1; i<=nitem; i++){
|
||||||
|
if(PasteboardGetItemIdentifier(clip.apple, i, &id) != noErr)
|
||||||
|
continue;
|
||||||
|
if(PasteboardCopyItemFlavors(clip.apple, id, &flavors) != noErr)
|
||||||
|
continue;
|
||||||
|
nflavor = CFArrayGetCount(flavors);
|
||||||
|
for(j=0; j<nflavor; j++){
|
||||||
|
type = (CFStringRef)CFArrayGetValueAtIndex(flavors, j);
|
||||||
|
if(!UTTypeConformsTo(type, CFSTR("public.utf16-plain-text")))
|
||||||
|
continue;
|
||||||
|
if(PasteboardCopyItemFlavorData(clip.apple, id, type, &data) != noErr)
|
||||||
|
continue;
|
||||||
|
ndata = CFDataGetLength(data);
|
||||||
|
qunlock(&clip.lk);
|
||||||
|
s = smprint("%.*S", ndata/2, (Rune*)CFDataGetBytePtr(data));
|
||||||
|
CFRelease(flavors);
|
||||||
|
CFRelease(data);
|
||||||
|
for(t=s; *t; t++)
|
||||||
|
if(*t == '\r')
|
||||||
|
*t = '\n';
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
CFRelease(flavors);
|
||||||
|
}
|
||||||
|
qunlock(&clip.lk);
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
putsnarf(char *s)
|
||||||
|
{
|
||||||
|
CFDataRef cfdata;
|
||||||
|
PasteboardSyncFlags flags;
|
||||||
|
|
||||||
|
/* fprint(2, "appleputsnarf\n"); */
|
||||||
|
|
||||||
|
if(strlen(s) >= SnarfSize)
|
||||||
|
return;
|
||||||
|
qlock(&clip.lk);
|
||||||
|
strcpy(clip.buf, s);
|
||||||
|
runesnprint(clip.rbuf, nelem(clip.rbuf), "%s", s);
|
||||||
|
clip.apple = osx.snarf;
|
||||||
|
if(PasteboardClear(clip.apple) != noErr){
|
||||||
|
fprint(2, "apple pasteboard clear failed\n");
|
||||||
|
qunlock(&clip.lk);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
flags = PasteboardSynchronize(clip.apple);
|
||||||
|
if((flags&kPasteboardModified) || !(flags&kPasteboardClientIsOwner)){
|
||||||
|
fprint(2, "apple pasteboard cannot assert ownership\n");
|
||||||
|
qunlock(&clip.lk);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cfdata = CFDataCreate(kCFAllocatorDefault,
|
||||||
|
(uchar*)clip.rbuf, runestrlen(clip.rbuf)*2);
|
||||||
|
if(cfdata == nil){
|
||||||
|
fprint(2, "apple pasteboard cfdatacreate failed\n");
|
||||||
|
qunlock(&clip.lk);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(PasteboardPutItemFlavor(clip.apple, (PasteboardItemID)1,
|
||||||
|
CFSTR("public.utf16-plain-text"), cfdata, 0) != noErr){
|
||||||
|
fprint(2, "apple pasteboard putitem failed\n");
|
||||||
|
CFRelease(cfdata);
|
||||||
|
qunlock(&clip.lk);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
/* CFRelease(cfdata); ??? */
|
||||||
|
qunlock(&clip.lk);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
setlabel(char *label)
|
||||||
|
{
|
||||||
|
CFStringRef cs;
|
||||||
|
|
||||||
|
cs = CFStringCreateWithBytes(nil, (uchar*)osx.label, strlen(osx.label), kCFStringEncodingUTF8, false);
|
||||||
|
SetWindowTitleWithCFString(osx.window, cs);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
seticon(void)
|
||||||
|
{
|
||||||
|
CGImageRef im;
|
||||||
|
CGDataProviderRef d;
|
||||||
|
|
||||||
|
d = CGDataProviderCreateWithData(nil, glenda_png, sizeof glenda_png, nil);
|
||||||
|
im = CGImageCreateWithPNGDataProvider(d, nil, true, kCGRenderingIntentDefault);
|
||||||
|
if(im)
|
||||||
|
SetApplicationDockTileImage(im);
|
||||||
|
CGImageRelease(im);
|
||||||
|
CGDataProviderRelease(d);
|
||||||
|
}
|
||||||
|
|
||||||
17
src/cmd/devdraw/osx-screen.h
Normal file
17
src/cmd/devdraw/osx-screen.h
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
void zlock(void);
|
||||||
|
void zunlock(void);
|
||||||
|
|
||||||
|
#define setcursor dsetcursor
|
||||||
|
|
||||||
|
Memimage *attachscreen(char*, char*);
|
||||||
|
void setmouse(Point);
|
||||||
|
void setcursor(Cursor*);
|
||||||
|
void setlabel(char*);
|
||||||
|
char* getsnarf(void);
|
||||||
|
void putsnarf(char*);
|
||||||
|
|
||||||
|
void mousetrack(int, int, int, int);
|
||||||
|
void keystroke(int);
|
||||||
|
|
||||||
|
extern Rectangle mouserect;
|
||||||
|
extern int mouseresized;
|
||||||
410
src/cmd/devdraw/osx-srv.c
Normal file
410
src/cmd/devdraw/osx-srv.c
Normal file
|
|
@ -0,0 +1,410 @@
|
||||||
|
/*
|
||||||
|
* Window system protocol server.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <u.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <sys/select.h>
|
||||||
|
#include <libc.h>
|
||||||
|
#include <thread.h>
|
||||||
|
#include <draw.h>
|
||||||
|
#include <memdraw.h>
|
||||||
|
#include <memlayer.h>
|
||||||
|
#include <keyboard.h>
|
||||||
|
#include <mouse.h>
|
||||||
|
#include <cursor.h>
|
||||||
|
#include <drawfcall.h>
|
||||||
|
#include "osx-screen.h"
|
||||||
|
#include "devdraw.h"
|
||||||
|
|
||||||
|
#undef time
|
||||||
|
|
||||||
|
#define MouseMask (\
|
||||||
|
ButtonPressMask|\
|
||||||
|
ButtonReleaseMask|\
|
||||||
|
PointerMotionMask|\
|
||||||
|
Button1MotionMask|\
|
||||||
|
Button2MotionMask|\
|
||||||
|
Button3MotionMask)
|
||||||
|
|
||||||
|
#define Mask MouseMask|ExposureMask|StructureNotifyMask|KeyPressMask|EnterWindowMask|LeaveWindowMask
|
||||||
|
|
||||||
|
typedef struct Kbdbuf Kbdbuf;
|
||||||
|
typedef struct Mousebuf Mousebuf;
|
||||||
|
typedef struct Fdbuf Fdbuf;
|
||||||
|
typedef struct Tagbuf Tagbuf;
|
||||||
|
|
||||||
|
struct Kbdbuf
|
||||||
|
{
|
||||||
|
Rune r[32];
|
||||||
|
int ri;
|
||||||
|
int wi;
|
||||||
|
int stall;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Mousebuf
|
||||||
|
{
|
||||||
|
Mouse m[32];
|
||||||
|
int ri;
|
||||||
|
int wi;
|
||||||
|
int stall;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Tagbuf
|
||||||
|
{
|
||||||
|
int t[32];
|
||||||
|
int ri;
|
||||||
|
int wi;
|
||||||
|
};
|
||||||
|
|
||||||
|
Kbdbuf kbd;
|
||||||
|
Mousebuf mouse;
|
||||||
|
Tagbuf kbdtags;
|
||||||
|
Tagbuf mousetags;
|
||||||
|
|
||||||
|
void fdslide(Fdbuf*);
|
||||||
|
void runmsg(Wsysmsg*);
|
||||||
|
void replymsg(Wsysmsg*);
|
||||||
|
void matchkbd(void);
|
||||||
|
void matchmouse(void);
|
||||||
|
int fdnoblock(int);
|
||||||
|
Rectangle mouserect;
|
||||||
|
int mouseresized;
|
||||||
|
|
||||||
|
|
||||||
|
QLock lk;
|
||||||
|
void
|
||||||
|
zlock(void)
|
||||||
|
{
|
||||||
|
qlock(&lk);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
zunlock(void)
|
||||||
|
{
|
||||||
|
qunlock(&lk);
|
||||||
|
}
|
||||||
|
|
||||||
|
int chatty;
|
||||||
|
int drawsleep;
|
||||||
|
int trace;
|
||||||
|
|
||||||
|
void
|
||||||
|
usage(void)
|
||||||
|
{
|
||||||
|
fprint(2, "usage: devdraw (don't run directly)\n");
|
||||||
|
threadexitsall("usage");
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
bell(void *v, char *msg)
|
||||||
|
{
|
||||||
|
if(strcmp(msg, "alarm") == 0)
|
||||||
|
drawsleep = drawsleep ? 0 : 1000;
|
||||||
|
noted(NCONT);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
threadmain(int argc, char **argv)
|
||||||
|
{
|
||||||
|
uchar buf[4], *mbuf;
|
||||||
|
int nmbuf, n, nn;
|
||||||
|
Wsysmsg m;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Move the protocol off stdin/stdout so that
|
||||||
|
* any inadvertent prints don't screw things up.
|
||||||
|
*/
|
||||||
|
dup(0, 3);
|
||||||
|
dup(1, 4);
|
||||||
|
close(0);
|
||||||
|
close(1);
|
||||||
|
open("/dev/null", OREAD);
|
||||||
|
open("/dev/null", OWRITE);
|
||||||
|
|
||||||
|
//trace = 1;
|
||||||
|
fmtinstall('W', drawfcallfmt);
|
||||||
|
|
||||||
|
ARGBEGIN{
|
||||||
|
case 'D':
|
||||||
|
chatty++;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
usage();
|
||||||
|
}ARGEND
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Ignore arguments. They're only for good ps -a listings.
|
||||||
|
*/
|
||||||
|
|
||||||
|
notify(bell);
|
||||||
|
|
||||||
|
mbuf = nil;
|
||||||
|
nmbuf = 0;
|
||||||
|
while((n = read(3, buf, 4)) == 4){
|
||||||
|
GET(buf, n);
|
||||||
|
if(n > nmbuf){
|
||||||
|
free(mbuf);
|
||||||
|
mbuf = malloc(4+n);
|
||||||
|
if(mbuf == nil)
|
||||||
|
sysfatal("malloc: %r");
|
||||||
|
nmbuf = n;
|
||||||
|
}
|
||||||
|
memmove(mbuf, buf, 4);
|
||||||
|
nn = readn(3, mbuf+4, n-4);
|
||||||
|
if(nn != n-4)
|
||||||
|
sysfatal("eof during message");
|
||||||
|
|
||||||
|
/* pick off messages one by one */
|
||||||
|
if(convM2W(mbuf, nn+4, &m) <= 0)
|
||||||
|
sysfatal("cannot convert message");
|
||||||
|
if(trace) fprint(2, "<- %W\n", &m);
|
||||||
|
runmsg(&m);
|
||||||
|
}
|
||||||
|
threadexitsall(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
replyerror(Wsysmsg *m)
|
||||||
|
{
|
||||||
|
char err[256];
|
||||||
|
|
||||||
|
rerrstr(err, sizeof err);
|
||||||
|
m->type = Rerror;
|
||||||
|
m->error = err;
|
||||||
|
replymsg(m);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Handle a single wsysmsg.
|
||||||
|
* Might queue for later (kbd, mouse read)
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
runmsg(Wsysmsg *m)
|
||||||
|
{
|
||||||
|
static uchar buf[65536];
|
||||||
|
int n;
|
||||||
|
Memimage *i;
|
||||||
|
|
||||||
|
switch(m->type){
|
||||||
|
case Tinit:
|
||||||
|
memimageinit();
|
||||||
|
i = attachscreen(m->label, m->winsize);
|
||||||
|
_initdisplaymemimage(i);
|
||||||
|
replymsg(m);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Trdmouse:
|
||||||
|
zlock();
|
||||||
|
mousetags.t[mousetags.wi++] = m->tag;
|
||||||
|
if(mousetags.wi == nelem(mousetags.t))
|
||||||
|
mousetags.wi = 0;
|
||||||
|
if(mousetags.wi == mousetags.ri)
|
||||||
|
sysfatal("too many queued mouse reads");
|
||||||
|
/* fprint(2, "mouse unstall\n"); */
|
||||||
|
mouse.stall = 0;
|
||||||
|
matchmouse();
|
||||||
|
zunlock();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Trdkbd:
|
||||||
|
zlock();
|
||||||
|
kbdtags.t[kbdtags.wi++] = m->tag;
|
||||||
|
if(kbdtags.wi == nelem(kbdtags.t))
|
||||||
|
kbdtags.wi = 0;
|
||||||
|
if(kbdtags.wi == kbdtags.ri)
|
||||||
|
sysfatal("too many queued keyboard reads");
|
||||||
|
kbd.stall = 0;
|
||||||
|
matchkbd();
|
||||||
|
zunlock();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Tmoveto:
|
||||||
|
setmouse(m->mouse.xy);
|
||||||
|
replymsg(m);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Tcursor:
|
||||||
|
if(m->arrowcursor)
|
||||||
|
setcursor(nil);
|
||||||
|
else
|
||||||
|
setcursor(&m->cursor);
|
||||||
|
replymsg(m);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Tbouncemouse:
|
||||||
|
// _xbouncemouse(&m->mouse);
|
||||||
|
replymsg(m);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Tlabel:
|
||||||
|
setlabel(m->label);
|
||||||
|
replymsg(m);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Trdsnarf:
|
||||||
|
m->snarf = getsnarf();
|
||||||
|
replymsg(m);
|
||||||
|
free(m->snarf);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Twrsnarf:
|
||||||
|
putsnarf(m->snarf);
|
||||||
|
replymsg(m);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Trddraw:
|
||||||
|
n = m->count;
|
||||||
|
if(n > sizeof buf)
|
||||||
|
n = sizeof buf;
|
||||||
|
n = _drawmsgread(buf, n);
|
||||||
|
if(n < 0)
|
||||||
|
replyerror(m);
|
||||||
|
else{
|
||||||
|
m->count = n;
|
||||||
|
m->data = buf;
|
||||||
|
replymsg(m);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Twrdraw:
|
||||||
|
if(_drawmsgwrite(m->data, m->count) < 0)
|
||||||
|
replyerror(m);
|
||||||
|
else
|
||||||
|
replymsg(m);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Ttop:
|
||||||
|
// _xtopwindow();
|
||||||
|
replymsg(m);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Tresize:
|
||||||
|
// _xresizewindow(m->rect);
|
||||||
|
replymsg(m);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Reply to m.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
replymsg(Wsysmsg *m)
|
||||||
|
{
|
||||||
|
int n;
|
||||||
|
static uchar *mbuf;
|
||||||
|
static int nmbuf;
|
||||||
|
|
||||||
|
/* T -> R msg */
|
||||||
|
if(m->type%2 == 0)
|
||||||
|
m->type++;
|
||||||
|
|
||||||
|
if(trace) fprint(2, "-> %W\n", m);
|
||||||
|
/* copy to output buffer */
|
||||||
|
n = sizeW2M(m);
|
||||||
|
if(n > nmbuf){
|
||||||
|
free(mbuf);
|
||||||
|
mbuf = malloc(n);
|
||||||
|
if(mbuf == nil)
|
||||||
|
sysfatal("out of memory");
|
||||||
|
nmbuf = n;
|
||||||
|
}
|
||||||
|
convW2M(m, mbuf, n);
|
||||||
|
write(4, mbuf, n);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Match queued kbd reads with queued kbd characters.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
matchkbd(void)
|
||||||
|
{
|
||||||
|
Wsysmsg m;
|
||||||
|
|
||||||
|
if(kbd.stall)
|
||||||
|
return;
|
||||||
|
while(kbd.ri != kbd.wi && kbdtags.ri != kbdtags.wi){
|
||||||
|
m.type = Rrdkbd;
|
||||||
|
m.tag = kbdtags.t[kbdtags.ri++];
|
||||||
|
if(kbdtags.ri == nelem(kbdtags.t))
|
||||||
|
kbdtags.ri = 0;
|
||||||
|
m.rune = kbd.r[kbd.ri++];
|
||||||
|
if(kbd.ri == nelem(kbd.r))
|
||||||
|
kbd.ri = 0;
|
||||||
|
replymsg(&m);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Match queued mouse reads with queued mouse events.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
matchmouse(void)
|
||||||
|
{
|
||||||
|
Wsysmsg m;
|
||||||
|
|
||||||
|
while(mouse.ri != mouse.wi && mousetags.ri != mousetags.wi){
|
||||||
|
m.type = Rrdmouse;
|
||||||
|
m.tag = mousetags.t[mousetags.ri++];
|
||||||
|
if(mousetags.ri == nelem(mousetags.t))
|
||||||
|
mousetags.ri = 0;
|
||||||
|
m.mouse = mouse.m[mouse.ri];
|
||||||
|
m.resized = mouseresized;
|
||||||
|
/*
|
||||||
|
if(m.resized)
|
||||||
|
fprint(2, "sending resize\n");
|
||||||
|
*/
|
||||||
|
mouseresized = 0;
|
||||||
|
mouse.ri++;
|
||||||
|
if(mouse.ri == nelem(mouse.m))
|
||||||
|
mouse.ri = 0;
|
||||||
|
replymsg(&m);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
mousetrack(int x, int y, int b, int ms)
|
||||||
|
{
|
||||||
|
Mouse *m;
|
||||||
|
|
||||||
|
if(x < mouserect.min.x)
|
||||||
|
x = mouserect.min.x;
|
||||||
|
if(x > mouserect.max.x)
|
||||||
|
x = mouserect.max.x;
|
||||||
|
if(y < mouserect.min.y)
|
||||||
|
y = mouserect.min.y;
|
||||||
|
if(y > mouserect.max.y)
|
||||||
|
y = mouserect.max.y;
|
||||||
|
|
||||||
|
zlock();
|
||||||
|
m = &mouse.m[mouse.wi];
|
||||||
|
m->xy.x = x;
|
||||||
|
m->xy.y = y;
|
||||||
|
m->buttons = b;
|
||||||
|
m->msec = ms;
|
||||||
|
mouse.wi++;
|
||||||
|
if(mouse.wi == nelem(mouse.m))
|
||||||
|
mouse.wi = 0;
|
||||||
|
if(mouse.wi == mouse.ri){
|
||||||
|
mouse.stall = 1;
|
||||||
|
mouse.ri = 0;
|
||||||
|
mouse.wi = 1;
|
||||||
|
mouse.m[0] = *m;
|
||||||
|
}
|
||||||
|
matchmouse();
|
||||||
|
zunlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
keystroke(int c)
|
||||||
|
{
|
||||||
|
zlock();
|
||||||
|
kbd.r[kbd.wi++] = c;
|
||||||
|
if(kbd.wi == nelem(kbd.r))
|
||||||
|
kbd.wi = 0;
|
||||||
|
if(kbd.ri == kbd.wi)
|
||||||
|
kbd.stall = 1;
|
||||||
|
matchkbd();
|
||||||
|
zunlock();
|
||||||
|
}
|
||||||
76
src/cmd/devdraw/winsize.c
Normal file
76
src/cmd/devdraw/winsize.c
Normal file
|
|
@ -0,0 +1,76 @@
|
||||||
|
#include <u.h>
|
||||||
|
#include <libc.h>
|
||||||
|
#include <draw.h>
|
||||||
|
#include <memdraw.h>
|
||||||
|
#include "devdraw.h"
|
||||||
|
|
||||||
|
int
|
||||||
|
parsewinsize(char *s, Rectangle *r, int *havemin)
|
||||||
|
{
|
||||||
|
char c, *os;
|
||||||
|
int i, j, k, l;
|
||||||
|
|
||||||
|
os = s;
|
||||||
|
*havemin = 0;
|
||||||
|
*r = Rect(0,0,0,0);
|
||||||
|
if(!isdigit((uchar)*s))
|
||||||
|
goto oops;
|
||||||
|
i = strtol(s, &s, 0);
|
||||||
|
if(*s == 'x'){
|
||||||
|
s++;
|
||||||
|
if(!isdigit((uchar)*s))
|
||||||
|
goto oops;
|
||||||
|
j = strtol(s, &s, 0);
|
||||||
|
r->max.x = i;
|
||||||
|
r->max.y = j;
|
||||||
|
if(*s == 0)
|
||||||
|
return 0;
|
||||||
|
if(*s != '@')
|
||||||
|
goto oops;
|
||||||
|
|
||||||
|
s++;
|
||||||
|
if(!isdigit((uchar)*s))
|
||||||
|
goto oops;
|
||||||
|
i = strtol(s, &s, 0);
|
||||||
|
if(*s != ',' && *s != ' ')
|
||||||
|
goto oops;
|
||||||
|
s++;
|
||||||
|
if(!isdigit((uchar)*s))
|
||||||
|
goto oops;
|
||||||
|
j = strtol(s, &s, 0);
|
||||||
|
if(*s != 0)
|
||||||
|
goto oops;
|
||||||
|
*r = rectaddpt(*r, Pt(i,j));
|
||||||
|
*havemin = 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
c = *s;
|
||||||
|
if(c != ' ' && c != ',')
|
||||||
|
goto oops;
|
||||||
|
s++;
|
||||||
|
if(!isdigit((uchar)*s))
|
||||||
|
goto oops;
|
||||||
|
j = strtol(s, &s, 0);
|
||||||
|
if(*s != c)
|
||||||
|
goto oops;
|
||||||
|
s++;
|
||||||
|
if(!isdigit((uchar)*s))
|
||||||
|
goto oops;
|
||||||
|
k = strtol(s, &s, 0);
|
||||||
|
if(*s != c)
|
||||||
|
goto oops;
|
||||||
|
s++;
|
||||||
|
if(!isdigit((uchar)*s))
|
||||||
|
goto oops;
|
||||||
|
l = strtol(s, &s, 0);
|
||||||
|
if(*s != 0)
|
||||||
|
goto oops;
|
||||||
|
*r = Rect(i,j,k,l);
|
||||||
|
*havemin = 1;
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
oops:
|
||||||
|
werrstr("bad syntax in window size '%s'", os);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
@ -10,8 +10,7 @@
|
||||||
#include <mouse.h>
|
#include <mouse.h>
|
||||||
#include <cursor.h>
|
#include <cursor.h>
|
||||||
#include "x11-memdraw.h"
|
#include "x11-memdraw.h"
|
||||||
|
#include "devdraw.h"
|
||||||
static int parsewinsize(char*, Rectangle*, int*);
|
|
||||||
|
|
||||||
static void plan9cmap(void);
|
static void plan9cmap(void);
|
||||||
static int setupcmap(XWindow);
|
static int setupcmap(XWindow);
|
||||||
|
|
@ -729,74 +728,3 @@ _xreplacescreenimage(void)
|
||||||
_drawreplacescreenimage(m);
|
_drawreplacescreenimage(m);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
|
||||||
parsewinsize(char *s, Rectangle *r, int *havemin)
|
|
||||||
{
|
|
||||||
char c, *os;
|
|
||||||
int i, j, k, l;
|
|
||||||
|
|
||||||
os = s;
|
|
||||||
*havemin = 0;
|
|
||||||
*r = Rect(0,0,0,0);
|
|
||||||
if(!isdigit((uchar)*s))
|
|
||||||
goto oops;
|
|
||||||
i = strtol(s, &s, 0);
|
|
||||||
if(*s == 'x'){
|
|
||||||
s++;
|
|
||||||
if(!isdigit((uchar)*s))
|
|
||||||
goto oops;
|
|
||||||
j = strtol(s, &s, 0);
|
|
||||||
r->max.x = i;
|
|
||||||
r->max.y = j;
|
|
||||||
if(*s == 0)
|
|
||||||
return 0;
|
|
||||||
if(*s != '@')
|
|
||||||
goto oops;
|
|
||||||
|
|
||||||
s++;
|
|
||||||
if(!isdigit((uchar)*s))
|
|
||||||
goto oops;
|
|
||||||
i = strtol(s, &s, 0);
|
|
||||||
if(*s != ',' && *s != ' ')
|
|
||||||
goto oops;
|
|
||||||
s++;
|
|
||||||
if(!isdigit((uchar)*s))
|
|
||||||
goto oops;
|
|
||||||
j = strtol(s, &s, 0);
|
|
||||||
if(*s != 0)
|
|
||||||
goto oops;
|
|
||||||
*r = rectaddpt(*r, Pt(i,j));
|
|
||||||
*havemin = 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
c = *s;
|
|
||||||
if(c != ' ' && c != ',')
|
|
||||||
goto oops;
|
|
||||||
s++;
|
|
||||||
if(!isdigit((uchar)*s))
|
|
||||||
goto oops;
|
|
||||||
j = strtol(s, &s, 0);
|
|
||||||
if(*s != c)
|
|
||||||
goto oops;
|
|
||||||
s++;
|
|
||||||
if(!isdigit((uchar)*s))
|
|
||||||
goto oops;
|
|
||||||
k = strtol(s, &s, 0);
|
|
||||||
if(*s != c)
|
|
||||||
goto oops;
|
|
||||||
s++;
|
|
||||||
if(!isdigit((uchar)*s))
|
|
||||||
goto oops;
|
|
||||||
l = strtol(s, &s, 0);
|
|
||||||
if(*s != 0)
|
|
||||||
goto oops;
|
|
||||||
*r = Rect(i,j,k,l);
|
|
||||||
*havemin = 1;
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
oops:
|
|
||||||
werrstr("bad syntax in window size '%s'", os);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue