Chris Dick
/
Gameduino_Spinning_DNA_demo
Spinning dna graphics demo for the Gameduino
Revision 0:87bd6fb28ffb, committed 2012-12-21
- Comitter:
- TheChrisyd
- Date:
- Fri Dec 21 14:08:13 2012 +0000
- Commit message:
- Working version - a few glitches on the bottom of the screen
Changed in this revision
diff -r 000000000000 -r 87bd6fb28ffb Gameduino.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Gameduino.lib Fri Dec 21 14:08:13 2012 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/TheChrisyd/code/Gameduino/#84c1ca3e1be0
diff -r 000000000000 -r 87bd6fb28ffb dna.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dna.h Fri Dec 21 14:08:13 2012 +0000 @@ -0,0 +1,1351 @@ +#define SPHERE_FRAMES 64 +static void draw_sphere(int x, int y, byte anim, byte rot, byte jk = 0) { + switch (anim) { + case 0: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 0, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 1: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 0, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 2: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 1, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 3: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 1, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 4: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 2, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 5: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 2, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 6: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 3, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 7: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 3, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 8: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 4, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 9: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 4, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 10: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 5, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 11: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 5, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 12: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 6, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 13: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 6, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 14: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 7, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 15: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 7, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 16: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 8, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 17: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 8, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 18: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 9, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 19: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 9, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 20: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 10, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 21: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 10, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 22: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 11, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 23: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 11, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 24: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 12, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 25: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 12, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 26: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 13, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 27: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 13, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 28: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 14, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 29: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 14, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 30: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 15, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 31: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 15, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 32: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 16, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 33: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 16, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 34: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 17, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 35: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 17, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 36: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 18, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 37: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 18, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 38: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 19, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 39: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 19, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 40: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 20, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 41: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 20, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 42: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 21, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 43: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 21, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 44: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 22, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 45: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 22, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 46: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 23, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 47: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 23, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 48: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 24, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 49: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 24, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 50: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 25, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 51: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 25, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 52: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 26, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 53: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 26, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 54: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 27, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 55: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 27, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 56: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 28, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 57: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 28, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 58: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 29, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 59: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 29, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 60: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 30, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 61: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 30, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 62: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 31, 4}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + case 63: +{ + static PROGMEM sprplot sp[] = {{-8, -8, 31, 6}}; + GD.plots(x, y, sp, 1, rot, jk); +} + break; + } +} + +static PROGMEM prog_uchar sphere_img[] = { + +0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x32, 0x32, 0x33, 0x33, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xf3, 0x22, 0x10, 0x00, 0x00, 0x11, 0x32, 0x44, 0x55, 0xf6, 0xff, 0xff, 0xff, +0xff, 0xff, 0x33, 0x22, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x55, 0x66, 0x77, 0x88, 0xff, 0xff, +0xff, 0xf3, 0x33, 0x22, 0x11, 0x00, 0x11, 0x11, 0x24, 0x56, 0x77, 0x88, 0x89, 0x99, 0xfb, 0xff, +0xff, 0x55, 0x44, 0x44, 0x22, 0x22, 0x44, 0x45, 0x67, 0x88, 0x89, 0x99, 0xaa, 0xbb, 0xdc, 0xff, +0xf6, 0x66, 0x66, 0x66, 0x66, 0x67, 0x77, 0x88, 0x99, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xdd, 0xfd, +0x77, 0x77, 0x88, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, +0x99, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, +0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, +0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, +0xfd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xfd, +0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, +0xff, 0xfd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xfd, 0xff, +0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xff, 0xfd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xfd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xdd, 0xdd, 0xdd, 0xdd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x33, 0x33, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x33, 0x21, 0x10, 0x11, 0x22, 0x33, 0x44, 0x55, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x32, 0x11, 0x00, 0x00, 0x00, 0x11, 0x34, 0x55, 0x66, 0x77, 0xff, 0xff, 0xff, +0xff, 0xff, 0x33, 0x22, 0x11, 0x00, 0x00, 0x11, 0x22, 0x55, 0x77, 0x77, 0x88, 0x99, 0xff, 0xff, +0xff, 0x55, 0x44, 0x34, 0x22, 0x22, 0x22, 0x44, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xdd, 0xff, +0xff, 0x56, 0x66, 0x66, 0x66, 0x66, 0x77, 0x88, 0x99, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xdd, 0xff, +0xf7, 0x77, 0x77, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xfd, +0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xbb, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, +0xcb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, +0xfd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xfd, +0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, +0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, +0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xdd, 0xdd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xf3, 0x22, 0x21, 0x21, 0x22, 0x33, 0x44, 0xf5, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x33, 0x21, 0x00, 0x00, 0x00, 0x11, 0x33, 0x55, 0x66, 0x77, 0xff, 0xff, 0xff, +0xff, 0xff, 0x33, 0x22, 0x11, 0x00, 0x00, 0x11, 0x22, 0x44, 0x66, 0x77, 0x88, 0xaa, 0xff, 0xff, +0xff, 0xf4, 0x44, 0x33, 0x22, 0x12, 0x22, 0x44, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xfd, 0xff, +0xff, 0x55, 0x56, 0x56, 0x56, 0x66, 0x66, 0x78, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xdd, 0xff, +0xff, 0x77, 0x77, 0x88, 0x88, 0x89, 0x99, 0xaa, 0xaa, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, +0xff, 0x99, 0x99, 0x9a, 0xaa, 0xaa, 0xbb, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, +0xff, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, +0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, +0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, +0xff, 0xfd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xfd, 0xff, +0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xfd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xfd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x22, 0x22, 0x32, 0x33, 0x33, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xf3, 0x22, 0x00, 0x00, 0x00, 0x11, 0x33, 0x55, 0x55, 0xf7, 0xff, 0xff, 0xff, +0xff, 0xff, 0xf3, 0x33, 0x11, 0x00, 0x00, 0x01, 0x22, 0x44, 0x66, 0x77, 0x88, 0xfa, 0xff, 0xff, +0xff, 0xff, 0x44, 0x33, 0x22, 0x11, 0x12, 0x22, 0x45, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xff, 0xff, +0xff, 0x55, 0x55, 0x55, 0x45, 0x45, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xdd, 0xff, +0xff, 0x77, 0x77, 0x77, 0x88, 0x88, 0x99, 0x9a, 0xaa, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, +0xff, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, +0xff, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, +0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, +0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, +0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xfd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xfd, 0xff, 0xff, +0xff, 0xff, 0xff, 0xfd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xfd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x32, 0x33, 0x33, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x32, 0x11, 0x00, 0x00, 0x11, 0x33, 0x55, 0x55, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x33, 0x11, 0x00, 0x00, 0x00, 0x22, 0x44, 0x66, 0x77, 0x88, 0xff, 0xff, 0xff, +0xff, 0xff, 0x34, 0x33, 0x22, 0x11, 0x11, 0x22, 0x44, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xff, 0xff, +0xff, 0xff, 0x55, 0x55, 0x44, 0x44, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xff, 0xff, +0xff, 0x77, 0x77, 0x77, 0x78, 0x88, 0x99, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, +0xff, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, +0xff, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, +0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, +0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x33, 0x33, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x33, 0x21, 0x10, 0x10, 0x22, 0x33, 0x55, 0x55, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x33, 0x21, 0x00, 0x00, 0x00, 0x11, 0x44, 0x66, 0x77, 0x88, 0xff, 0xff, 0xff, +0xff, 0xff, 0x33, 0x33, 0x22, 0x11, 0x11, 0x22, 0x44, 0x66, 0x88, 0x99, 0xaa, 0xcc, 0xff, 0xff, +0xff, 0xff, 0x55, 0x55, 0x44, 0x44, 0x45, 0x66, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xff, 0xff, +0xff, 0xf7, 0x77, 0x77, 0x77, 0x88, 0x89, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xfd, 0xff, +0xff, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, +0xff, 0xcc, 0xbb, 0xbb, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, +0xff, 0xfd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xfd, 0xff, +0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xdd, 0xdd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x11, 0x11, 0x22, 0x33, 0x55, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x33, 0x22, 0x00, 0x00, 0x00, 0x11, 0x44, 0x56, 0x77, 0x88, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x33, 0x22, 0x11, 0x11, 0x12, 0x44, 0x66, 0x77, 0x89, 0xaa, 0xff, 0xff, 0xff, +0xff, 0xff, 0x55, 0x55, 0x44, 0x44, 0x44, 0x66, 0x77, 0x99, 0x99, 0xab, 0xcc, 0xdd, 0xff, 0xff, +0xff, 0xff, 0x77, 0x77, 0x77, 0x88, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0x99, 0x99, 0x99, 0xaa, 0xbb, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xbb, 0xbb, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x22, 0x21, 0x22, 0x33, 0x45, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x22, 0x00, 0x00, 0x00, 0x11, 0x44, 0x55, 0x77, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x33, 0x22, 0x01, 0x00, 0x11, 0x44, 0x66, 0x77, 0x88, 0xaa, 0xff, 0xff, 0xff, +0xff, 0xff, 0x55, 0x55, 0x44, 0x44, 0x44, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xcc, 0xdd, 0xff, 0xff, +0xff, 0xff, 0x77, 0x77, 0x77, 0x78, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xbb, 0xbb, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x23, 0x22, 0x22, 0x33, 0x33, 0x44, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x33, 0x11, 0x00, 0x00, 0x11, 0x44, 0x55, 0x77, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x33, 0x22, 0x00, 0x00, 0x11, 0x22, 0x66, 0x77, 0x88, 0xaa, 0xff, 0xff, 0xff, +0xff, 0xff, 0x55, 0x55, 0x44, 0x22, 0x44, 0x56, 0x77, 0x88, 0x99, 0xaa, 0xcc, 0xdd, 0xff, 0xff, +0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0x88, 0x99, 0xaa, 0xaa, 0xcc, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xcb, 0xbb, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x32, 0x33, 0x33, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x33, 0x11, 0x00, 0x00, 0x11, 0x44, 0x55, 0x77, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x33, 0x22, 0x00, 0x00, 0x11, 0x22, 0x56, 0x77, 0x88, 0xaa, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x55, 0x44, 0x22, 0x22, 0x44, 0x77, 0x88, 0x99, 0xaa, 0xcc, 0xff, 0xff, 0xff, +0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0x88, 0x99, 0x9a, 0xaa, 0xbc, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xcc, 0xbb, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x23, 0x33, 0x33, 0x33, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x33, 0x22, 0x00, 0x00, 0x11, 0x44, 0x55, 0x77, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x33, 0x22, 0x00, 0x00, 0x01, 0x22, 0x55, 0x77, 0x88, 0xba, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x55, 0x44, 0x22, 0x22, 0x44, 0x67, 0x88, 0x99, 0xaa, 0xcc, 0xff, 0xff, 0xff, +0xff, 0xff, 0x77, 0x66, 0x77, 0x77, 0x78, 0x89, 0x99, 0xaa, 0xbb, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xcc, 0xcb, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x33, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x00, 0x00, 0x22, 0x44, 0x55, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x33, 0x00, 0x00, 0x00, 0x22, 0x55, 0x77, 0x88, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x55, 0x44, 0x22, 0x22, 0x44, 0x66, 0x88, 0x99, 0xaa, 0xdc, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x66, 0x67, 0x77, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0x99, 0x99, 0x99, 0x9a, 0xaa, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xdc, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x32, 0x11, 0x10, 0x22, 0x44, 0x55, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x33, 0x11, 0x00, 0x00, 0x22, 0x55, 0x77, 0x88, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x45, 0x44, 0x22, 0x22, 0x44, 0x66, 0x88, 0x99, 0xaa, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x66, 0x66, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x99, 0x99, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x21, 0x11, 0x22, 0x33, 0x55, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x33, 0x11, 0x00, 0x00, 0x22, 0x55, 0x77, 0x88, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x44, 0x44, 0x22, 0x11, 0x22, 0x66, 0x78, 0x99, 0xaa, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x66, 0x66, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x99, 0x99, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x22, 0x11, 0x22, 0x33, 0x55, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x33, 0x11, 0x00, 0x00, 0x22, 0x55, 0x67, 0x88, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x44, 0x44, 0x22, 0x11, 0x22, 0x56, 0x77, 0x99, 0xaa, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x66, 0x66, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x99, 0x99, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x33, 0x33, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x33, 0x11, 0x00, 0x00, 0x22, 0x55, 0x66, 0x88, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x34, 0x22, 0x11, 0x22, 0x55, 0x77, 0x99, 0xaa, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x66, 0x66, 0x66, 0x67, 0x88, 0x99, 0xaa, 0xbb, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x99, 0x99, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x33, 0x33, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xf3, 0x22, 0x00, 0x00, 0x22, 0x55, 0x66, 0xf8, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x33, 0x22, 0x11, 0x22, 0x44, 0x77, 0x99, 0xaa, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x66, 0x66, 0x66, 0x66, 0x77, 0x99, 0xaa, 0xbb, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x99, 0x99, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xfd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xfd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x32, 0x33, 0x33, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x00, 0x00, 0x22, 0x55, 0x66, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x33, 0x22, 0x11, 0x11, 0x44, 0x77, 0x89, 0xaa, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x66, 0x56, 0x56, 0x66, 0x77, 0x99, 0xaa, 0xbb, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x99, 0x89, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf2, 0x33, 0x33, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x00, 0x00, 0x22, 0x55, 0x66, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x33, 0x22, 0x01, 0x11, 0x44, 0x77, 0x88, 0xba, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xf6, 0x55, 0x55, 0x66, 0x77, 0x99, 0xaa, 0xbb, 0xdd, 0xfd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xfd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xfd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xdd, 0xdd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x33, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x00, 0x00, 0x22, 0x55, 0x66, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x33, 0x22, 0x00, 0x11, 0x44, 0x77, 0x88, 0xbb, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x66, 0x77, 0x88, 0xaa, 0xbb, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x99, 0x88, 0x99, 0xaa, 0xaa, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x10, 0x00, 0x22, 0x55, 0x66, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x33, 0x22, 0x00, 0x11, 0x44, 0x77, 0x88, 0xbb, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x77, 0x88, 0xaa, 0xbb, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xf9, 0x88, 0x99, 0x99, 0xaa, 0xcc, 0xdd, 0xdd, 0xdd, 0xfd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xfd, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xfd, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x11, 0x00, 0x22, 0x55, 0x66, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x33, 0x22, 0x00, 0x11, 0x44, 0x77, 0x88, 0xbb, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x45, 0x67, 0x88, 0xaa, 0xbb, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x88, 0x99, 0x99, 0xaa, 0xcc, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x11, 0x00, 0x22, 0x55, 0x66, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x33, 0x22, 0x00, 0x01, 0x44, 0x67, 0x88, 0xbb, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x44, 0x66, 0x88, 0xaa, 0xbb, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x88, 0x99, 0x99, 0xaa, 0xcc, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x11, 0x22, 0x45, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x00, 0x00, 0x22, 0x66, 0x88, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x44, 0x66, 0x88, 0x9a, 0xbb, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x88, 0x89, 0x99, 0xaa, 0xcc, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x11, 0x22, 0x44, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x00, 0x00, 0x22, 0x66, 0x88, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x44, 0x66, 0x88, 0x99, 0xbb, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x88, 0x88, 0x99, 0xaa, 0xbc, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xcc, 0xdc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x11, 0x32, 0x44, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x32, 0x00, 0x00, 0x22, 0x66, 0x88, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x44, 0x66, 0x88, 0x99, 0xbb, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x88, 0x88, 0x99, 0xaa, 0xbb, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x33, 0x44, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x00, 0x00, 0x22, 0x66, 0x88, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x55, 0x45, 0x44, 0x56, 0x88, 0x99, 0xbb, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x88, 0x88, 0x99, 0xaa, 0xbb, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x22, 0x33, 0x44, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x00, 0x00, 0x22, 0x66, 0x88, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x55, 0x44, 0x44, 0x45, 0x78, 0x99, 0xbb, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x88, 0x88, 0x99, 0xaa, 0xbb, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x33, 0x44, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x00, 0x00, 0x22, 0x66, 0x88, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x55, 0x44, 0x44, 0x44, 0x77, 0x99, 0xbb, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x88, 0x88, 0x99, 0xaa, 0xbb, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf2, 0x22, 0x33, 0xf4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x00, 0x00, 0x22, 0x66, 0x88, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xf5, 0x44, 0x22, 0x44, 0x77, 0x99, 0xbb, 0xfd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x88, 0x88, 0x99, 0xaa, 0xbb, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xfd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xfd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xdd, 0xdd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x33, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x00, 0x00, 0x22, 0x66, 0x88, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x44, 0x22, 0x44, 0x77, 0x99, 0xbb, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x88, 0x88, 0x99, 0xaa, 0xbb, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x33, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x00, 0x00, 0x22, 0x56, 0x88, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x44, 0x22, 0x44, 0x77, 0x99, 0xbb, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x88, 0x88, 0x99, 0xaa, 0xbb, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +}; +static PROGMEM prog_uchar sphere_pal[] = { + +0x7a, 0x7f, 0xb3, 0x6a, 0xec, 0x59, 0xa8, 0x55, 0x88, 0x49, 0x46, 0x45, 0x46, 0x41, 0x25, 0x3d, +0x05, 0x35, 0xe4, 0x30, 0xc4, 0x2c, 0xa3, 0x24, 0x82, 0x20, 0x62, 0x18, 0x00, 0x00, 0x00, 0x80, +}; +static PROGMEM prog_char cloud[] = { +0,107,-127, +0,-69,-127, +17,75,-124, +8,-102,-124, +-10,88,-122, +-27,-88,-122, +27,101,-120, +0,-74,-120, +17,68,-118, +-18,-106,-118, +9,99,-116, +-35,-72,-116, +45,84,-114, +-7,-85,-114, +16,70,-112, +-44,-96,-112, +35,100,-110, +-33,-62,-110, +51,65,-108, +-26,-94,-108, +23,79,-106, +-61,-76,-106, +61,88,-104, +-32,-63,-104, +48,54,-102, +-51,-92,-102, +41,85,-100, +-66,-56,-100, +76,66,-98, +-38,-69,-98, +46,52,-96, +-75,-76,-96, +65,80,-94, +-62,-42,-94, +79,43,-92, +-55,-73,-92, +50,57,-90, +-88,-52,-90, +87,63,-88, +-57,-39,-88, +72,28,-86, +-77,-66,-86, +65,58,-84, +-88,-28,-84, +98,37,-82, +-60,-42,-82, +66,24,-80, +-96,-47,-80, +85,50,-78, +-80,-12,-78, +95,12,-76, +-73,-42,-76, +67,26,-74, +-104,-20,-74, +102,29,-72, +-71,-7,-72, +84,-4,-70, +-91,-33,-70, +77,25,-68, +-99,5,-68, +107,2,-66, +-70,-9,-66, +73,-9,-64, +-104,-11,-64, +92,15,-61, +-85,22,-61, +98,-23,-59, +-78,-8,-59, +69,-8,-57, +-106,16,-57, +103,-6,-55, +-71,26,-55, +82,-39,-53, +-90,2,-53, +75,-9,-51, +-95,41,-51, +102,-34,-49, +-65,25,-49, +65,-43,-47, +-98,23,-47, +85,-19,-45, +-75,56,-45, +88,-58,-43, +-68,25,-43, +57,-40,-41, +-94,50,-41, +90,-40,-39, +-57,58,-39, +66,-71,-37, +-76,34,-37, +59,-39,-35, +-77,73,-35, +83,-65,-33, +-47,54,-33, +45,-72,-31, +-79,54,-31, +64,-48,-29, +-53,84,-29, +64,-86,-27, +-47,52,-27, +34,-66,-25, +-70,77,-25, +65,-65,-23, +-31,82,-23, +38,-94,-21, +-50,58,-21, +32,-61,-19, +-49,96,-19, +54,-87,-17, +-18,74,-17, +15,-90,-15, +-49,74,-15, +35,-66,-13, +-21,102,-13, +32,-102,-11, +-16,68,-11, +2,-79,-9, +-37,93,-9, +32,-79,-7, +1,95,-7, +4,-105,-5, +-18,70,-5, +0,-71,-3, +-14,106,-3, +19,-96,-1, +15,81,-1, +-19,-96,1, +-15,81,1, +0,-71,3, +14,106,3, +-4,-105,5, +18,70,5, +-32,-79,7, +-1,95,7, +-2,-79,9, +37,93,9, +-32,-102,11, +16,68,11, +-35,-66,13, +21,102,13, +-15,-90,15, +49,74,15, +-54,-87,17, +18,74,17, +-32,-61,19, +49,96,19, +-38,-94,21, +50,58,21, +-65,-65,23, +31,82,23, +-34,-66,25, +70,77,25, +-64,-86,27, +47,52,27, +-64,-48,29, +53,84,29, +-45,-72,31, +79,54,31, +-83,-65,33, +47,54,33, +-59,-39,35, +77,73,35, +-66,-71,37, +76,34,37, +-90,-40,39, +57,58,39, +-57,-40,41, +94,50,41, +-88,-58,43, +68,25,43, +-85,-19,45, +75,56,45, +-65,-43,47, +98,23,47, +-102,-34,49, +65,25,49, +-75,-9,51, +95,41,51, +-82,-39,53, +90,2,53, +-103,-6,55, +71,26,55, +-69,-8,57, +106,16,57, +-98,-23,59, +78,-8,59, +-92,15,61, +85,22,61, +-73,-9,64, +104,-11,64, +-107,2,66, +70,-9,66, +-77,25,68, +99,5,68, +-84,-4,70, +91,-33,70, +-102,29,72, +71,-7,72, +-67,26,74, +104,-20,74, +-95,12,76, +73,-42,76, +-85,50,78, +80,-12,78, +-66,24,80, +96,-47,80, +-98,37,82, +60,-42,82, +-65,58,84, +88,-28,84, +-72,28,86, +77,-66,86, +-87,63,88, +57,-39,88, +-50,57,90, +88,-52,90, +-79,43,92, +55,-73,92, +-65,80,94, +62,-42,94, +-46,52,96, +75,-76,96, +-76,66,98, +38,-69,98, +-41,85,100, +66,-56,100, +-48,54,102, +51,-92,102, +-61,88,104, +32,-63,104, +-23,79,106, +61,-76,106, +-51,65,108, +26,-94,108, +-35,100,110, +33,-62,110, +-16,70,112, +44,-96,112, +-45,84,114, +7,-85,114, +-9,99,116, +35,-72,116, +-17,68,118, +18,-106,118, +-27,101,120, +0,-74,120, +10,88,122, +27,-88,122, +-17,75,124, +-8,-102,124, +}; +static prog_uchar ramp_pic[] = { + +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, +0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, +0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, +0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, +0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, +0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd6, 0xd7, +}; +static PROGMEM prog_uchar ramp_chr[] = { + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x45, 0x54, 0x51, 0x40, 0x05, 0x45, +0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x45, 0x55, 0x01, 0x40, 0x50, 0x00, +0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x51, 0x54, 0x05, 0x50, 0x01, +0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x14, 0x55, 0x55, 0x11, +0xaa, 0x80, 0xaa, 0xaa, 0xaa, 0x9a, 0x9a, 0x56, 0x96, 0x59, 0x65, 0x95, 0x55, 0x66, 0x55, 0x55, +0xaa, 0xaa, 0xa2, 0xaa, 0xaa, 0x9a, 0x6a, 0xa6, 0xa5, 0x69, 0x55, 0x59, 0x65, 0x69, 0x55, 0x55, +0xa8, 0xaa, 0xaa, 0xa8, 0xaa, 0x66, 0xa9, 0xa9, 0x69, 0x99, 0x65, 0x69, 0x55, 0x66, 0x55, 0x55, +0x88, 0xaa, 0xaa, 0xaa, 0xa6, 0x6a, 0xa6, 0x65, 0x99, 0xa6, 0x5a, 0xa6, 0x55, 0x55, 0x55, 0x55, +0xaa, 0xa8, 0x0a, 0x28, 0x8a, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x41, 0x55, 0x04, 0x40, 0x15, +0x80, 0x0a, 0x02, 0x0a, 0xaa, 0xa8, 0x8a, 0xaa, 0xaa, 0xaa, 0x5a, 0xa9, 0x5a, 0x6a, 0x95, 0x96, +0xa2, 0x2a, 0x2a, 0x80, 0x80, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x50, 0x14, 0x00, 0x55, 0x10, +0xa2, 0xaa, 0x8a, 0xa8, 0x22, 0x08, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x40, 0x01, 0x45, 0x54, +0xa5, 0x6a, 0x6a, 0x6a, 0xa8, 0xaa, 0xaa, 0xaa, 0x0a, 0xa2, 0x20, 0x8a, 0x00, 0x20, 0x03, 0x00, +0xaa, 0x9a, 0xaa, 0xaa, 0xaa, 0xaa, 0x2a, 0xa2, 0x80, 0x82, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, +0xa6, 0x95, 0x65, 0x55, 0x15, 0x55, 0x45, 0x51, 0x00, 0x45, 0x14, 0x01, 0x04, 0x00, 0x00, 0x00, + +0x9a, 0x5a, 0x59, 0xa9, 0xa0, 0x0a, 0x82, 0x2a, 0xa0, 0x02, 0x08, 0x08, 0x80, 0x00, 0x00, 0x00, +0x45, 0x41, 0x54, 0x15, 0x00, 0x00, 0x41, 0x04, 0x00, 0x00, 0x00, 0x28, 0x82, 0x02, 0x88, 0x28, +0x40, 0x54, 0x55, 0x50, 0x44, 0x50, 0x40, 0x04, 0x00, 0x00, 0x00, 0x20, 0x88, 0xa2, 0xaa, 0x2a, +0x51, 0x55, 0x55, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x20, 0x02, 0x20, 0x22, 0x28, 0x82, +0x54, 0x51, 0x11, 0x41, 0x04, 0x00, 0x41, 0x04, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x80, 0x02, 0x2a, +0x45, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x08, 0x82, 0xaa, 0xa2, 0xaa, 0xaa, 0xaa, 0xaa, +0x55, 0x11, 0x55, 0x55, 0x55, 0xa5, 0x65, 0x99, 0x5a, 0x6a, 0x96, 0xa6, 0xaa, 0xaa, 0xaa, 0xaa, +0x55, 0x15, 0x55, 0x55, 0x55, 0x55, 0x56, 0x99, 0x56, 0x95, 0xa9, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, +0x50, 0x15, 0x55, 0x55, 0xa5, 0x95, 0x99, 0x66, 0xa9, 0x56, 0xa9, 0xaa, 0xaa, 0x9a, 0xaa, 0xaa, +0x40, 0x00, 0x15, 0x11, 0x54, 0x15, 0x15, 0x55, 0x55, 0x55, 0x95, 0x65, 0x69, 0x55, 0xaa, 0x69, +0x44, 0x10, 0x54, 0x50, 0x10, 0x11, 0x10, 0x01, 0x00, 0x00, 0xa2, 0xa2, 0x02, 0x00, 0x2a, 0x20, +0x50, 0x00, 0x50, 0x00, 0x50, 0x41, 0x55, 0x55, 0x55, 0x55, 0x6a, 0x59, 0xa5, 0xa5, 0x66, 0x9a, +0x55, 0x55, 0x51, 0x14, 0x10, 0x40, 0x41, 0x04, 0x00, 0x00, 0x80, 0x8a, 0x00, 0x20, 0xa8, 0xa8, +0x8a, 0x20, 0xaa, 0xaa, 0xaa, 0xa9, 0x66, 0x99, 0xaa, 0xa6, 0x55, 0x55, 0x59, 0x55, 0x55, 0x55, +0xaa, 0x8a, 0xaa, 0xaa, 0xaa, 0xaa, 0xa6, 0xa9, 0x66, 0x95, 0x56, 0x5a, 0x55, 0x55, 0x5d, 0x5d, +0xa2, 0x8a, 0xaa, 0xaa, 0xa6, 0xa6, 0x66, 0x55, 0x6a, 0xaa, 0x65, 0x95, 0x55, 0x55, 0x55, 0xdd, + +0xaa, 0x28, 0xaa, 0xaa, 0x66, 0xaa, 0xa9, 0x69, 0x95, 0x6a, 0x65, 0x95, 0x55, 0x55, 0x55, 0x57, +0xa0, 0x8a, 0x2a, 0xa0, 0x80, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x11, 0x14, 0x45, 0x15, +0xa8, 0xaa, 0x2a, 0x20, 0x22, 0xa2, 0x20, 0x00, 0x00, 0x00, 0x10, 0x11, 0x40, 0x10, 0x15, 0x55, +0x88, 0x82, 0x88, 0x2a, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x50, 0x51, 0x55, +0x82, 0xaa, 0xa0, 0x88, 0x0a, 0x02, 0x80, 0x02, 0x00, 0x00, 0x10, 0x00, 0x45, 0x05, 0x44, 0x55, +0x8a, 0xa2, 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xab, 0xfb, 0xab, 0xfb, 0xef, 0xff, 0xef, 0xfd, 0xff, +0xa2, 0x88, 0xaa, 0xaa, 0xbe, 0xaa, 0xbf, 0xab, 0xab, 0xee, 0xfb, 0xff, 0xff, 0xff, 0xdf, 0x7f, +0x55, 0x44, 0x55, 0x55, 0x59, 0x56, 0xa5, 0x65, 0x6a, 0x6a, 0xa9, 0xaa, 0x9a, 0xa6, 0xaa, 0xaa, +0x41, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0a, 0x00, 0x80, 0xaa, 0xa0, 0xa0, 0x2a, 0xaa, 0xaa, 0xaa, +0x45, 0x45, 0x44, 0x45, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x22, 0xaa, 0x0a, 0x80, 0xa8, +0x55, 0x55, 0x11, 0x51, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x28, 0x20, 0x28, 0x2a, 0xa2, 0xa0, +0x55, 0x54, 0x44, 0x44, 0x54, 0x40, 0x00, 0x10, 0x20, 0x00, 0x00, 0x08, 0xa2, 0x8a, 0x82, 0x22, +0x55, 0x51, 0x41, 0x54, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x08, 0xa2, 0x00, 0x82, +0xa2, 0xaa, 0xaa, 0xaa, 0xa5, 0x9a, 0xa9, 0xa9, 0x99, 0x5a, 0x56, 0x65, 0x55, 0x55, 0x55, 0x55, +0x88, 0x8a, 0xaa, 0xaa, 0xa6, 0xaa, 0x96, 0x6a, 0x66, 0x66, 0x55, 0x55, 0x95, 0x56, 0x55, 0xd5, +0xa2, 0xaa, 0xaa, 0x9a, 0xaa, 0xa9, 0xaa, 0x6a, 0x95, 0x56, 0x99, 0x55, 0x55, 0x55, 0x75, 0x7d, + +0xa8, 0xaa, 0xaa, 0xaa, 0xaa, 0x69, 0x66, 0xa6, 0xa9, 0x9a, 0x55, 0x65, 0x56, 0x55, 0x55, 0x55, +0xa2, 0x2a, 0x88, 0xa8, 0x08, 0x20, 0x00, 0x00, 0x40, 0x10, 0x54, 0x40, 0x40, 0x01, 0x45, 0x45, +0x80, 0x02, 0x28, 0x00, 0x28, 0x82, 0xaa, 0xa8, 0xaa, 0xa9, 0x6a, 0x5a, 0x56, 0xa9, 0x56, 0x56, +0x80, 0xa0, 0x88, 0x28, 0xa8, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa6, 0xaa, 0x99, 0xa5, 0x55, 0x69, +0x80, 0x80, 0x8a, 0x00, 0x82, 0x8a, 0xaa, 0xa8, 0xaa, 0xaa, 0x5a, 0xaa, 0x55, 0x9a, 0x59, 0xa9, +0x95, 0x55, 0x55, 0x55, 0x55, 0x05, 0x44, 0x11, 0x50, 0x44, 0x40, 0x01, 0x00, 0x00, 0x30, 0x00, +0x9a, 0xaa, 0xa8, 0xaa, 0x0a, 0xaa, 0x0a, 0x28, 0x20, 0x88, 0x00, 0x02, 0x00, 0x00, 0xc0, 0x00, +0xaa, 0xa6, 0xaa, 0xaa, 0x88, 0xa2, 0x00, 0x80, 0x08, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, +0x55, 0x55, 0x55, 0x55, 0x44, 0x50, 0x15, 0x41, 0x41, 0x51, 0x40, 0x54, 0x00, 0x00, 0x00, 0x20, +0x95, 0x56, 0xa6, 0xaa, 0x9a, 0x66, 0xaa, 0xaa, 0xa2, 0xaa, 0xaa, 0xaa, 0x28, 0x82, 0x00, 0x00, +0xa5, 0xaa, 0xa5, 0xaa, 0xaa, 0x96, 0x69, 0xaa, 0xaa, 0xa2, 0xa2, 0x28, 0x00, 0xa8, 0x80, 0xa2, +0xa5, 0x56, 0x56, 0xa9, 0xaa, 0xa5, 0x9a, 0xa9, 0xa8, 0xaa, 0x2a, 0xaa, 0xaa, 0x8a, 0x28, 0x08, +0xaa, 0x6a, 0xa6, 0xa6, 0x95, 0xa5, 0x55, 0x59, 0x55, 0x55, 0x55, 0x45, 0x44, 0x01, 0x40, 0x00, +0x40, 0x00, 0x00, 0x00, 0x20, 0x00, 0xaa, 0xa2, 0xaa, 0x08, 0xa2, 0x28, 0xaa, 0xaa, 0xaa, 0xaa, +0x55, 0x55, 0x55, 0x55, 0x54, 0x45, 0x55, 0x51, 0x40, 0x05, 0x00, 0x40, 0x00, 0x00, 0x02, 0x02, +0x55, 0x11, 0x55, 0x65, 0x59, 0x5a, 0x55, 0x59, 0x9a, 0x56, 0xaa, 0x6a, 0xaa, 0xaa, 0xaa, 0xaa, + +0x55, 0x55, 0x55, 0x55, 0x55, 0x15, 0x15, 0x11, 0x44, 0x00, 0x00, 0x11, 0x00, 0x00, 0x80, 0x00, +0x40, 0x45, 0x10, 0x14, 0x55, 0x15, 0x55, 0x55, 0x65, 0x56, 0x65, 0x55, 0x55, 0xa5, 0x5a, 0x6a, +0x54, 0x15, 0x14, 0x41, 0x04, 0x51, 0x04, 0x00, 0x82, 0x00, 0x00, 0x22, 0x2a, 0x20, 0xaa, 0x0a, +0x40, 0x10, 0x04, 0x11, 0x54, 0x50, 0x04, 0x55, 0x55, 0x65, 0x56, 0x55, 0x6a, 0x99, 0xaa, 0x9a, +0x44, 0x15, 0x05, 0x45, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x55, 0x55, 0x95, 0xa5, 0xaa, 0x96, +0x41, 0x54, 0x55, 0x55, 0x55, 0x75, 0xf5, 0xdd, 0xff, 0x7f, 0x55, 0x57, 0xff, 0xff, 0xfb, 0xff, +0x55, 0x55, 0x55, 0x55, 0x51, 0x05, 0x41, 0x54, 0x04, 0x50, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, +0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x77, 0x5f, 0x5f, 0x7d, 0xff, 0xff, 0xff, 0xff, 0xaf, 0xff, +0x55, 0x45, 0x55, 0x65, 0x69, 0x59, 0xa9, 0x65, 0x9a, 0xaa, 0xaa, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, +0xa2, 0x88, 0x02, 0x28, 0x00, 0x88, 0x00, 0x00, 0x40, 0x00, 0x10, 0x11, 0x55, 0x05, 0x40, 0x55, +0x80, 0x08, 0x02, 0x2a, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x41, 0x15, 0x50, 0x51, 0x51, +0xa2, 0x02, 0x00, 0x08, 0x80, 0x80, 0x00, 0x00, 0x10, 0x00, 0x04, 0x04, 0x01, 0x11, 0x44, 0x55, +0x82, 0xa2, 0x80, 0xa8, 0x00, 0x00, 0x00, 0x20, 0x40, 0x00, 0x01, 0x00, 0x50, 0x01, 0x45, 0x54, +0xaa, 0xaa, 0x2a, 0xaa, 0xaa, 0xaa, 0x22, 0xa2, 0x22, 0x80, 0x20, 0x80, 0x00, 0x00, 0x00, 0x10, +0x51, 0x55, 0x55, 0x55, 0x55, 0x56, 0x95, 0xa6, 0xa9, 0xa5, 0xaa, 0x9a, 0xaa, 0xaa, 0xaa, 0xaa, +0xaa, 0xaa, 0xaa, 0xaa, 0xa8, 0x88, 0x08, 0x2a, 0x88, 0x20, 0x08, 0x02, 0x00, 0x00, 0x01, 0x04, + +0xaa, 0xaa, 0xaa, 0xaa, 0x82, 0xaa, 0x00, 0x0a, 0x02, 0x28, 0x00, 0x80, 0x00, 0x00, 0x04, 0x00, +0x41, 0x55, 0x55, 0x54, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xa2, 0x0a, 0xa0, 0xa8, 0xaa, +0x40, 0x14, 0x51, 0x04, 0x55, 0x54, 0x55, 0x51, 0x55, 0x55, 0x56, 0x69, 0x69, 0x59, 0x6a, 0xaa, +0x55, 0x55, 0x45, 0x05, 0x00, 0x04, 0x00, 0x00, 0xa2, 0x00, 0x80, 0xa2, 0x00, 0x8a, 0xaa, 0xaa, +0x41, 0x14, 0x00, 0x54, 0x14, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x22, 0xa0, 0xa2, 0xaa, +0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x55, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, +}; +static PROGMEM prog_uchar ramp_pal[] = { + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x21, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x21, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x08, 0x21, 0x04, 0x00, 0x00, +0x00, 0x00, 0x42, 0x08, 0x21, 0x04, 0x00, 0x00, 0x00, 0x00, 0x42, 0x08, 0x21, 0x04, 0x00, 0x00, +0x00, 0x00, 0x42, 0x08, 0x21, 0x04, 0x00, 0x00, 0x63, 0x0c, 0x84, 0x10, 0x42, 0x08, 0x00, 0x00, +0x42, 0x08, 0x84, 0x10, 0x63, 0x0c, 0x00, 0x00, 0x63, 0x0c, 0x84, 0x10, 0x42, 0x08, 0x00, 0x00, +0x63, 0x0c, 0x84, 0x10, 0x42, 0x08, 0x00, 0x00, 0xa5, 0x14, 0x63, 0x0c, 0x84, 0x10, 0xc6, 0x18, +0xa5, 0x14, 0x63, 0x0c, 0x84, 0x10, 0x00, 0x00, 0xa5, 0x14, 0x84, 0x10, 0x63, 0x0c, 0x00, 0x00, +0xa5, 0x14, 0x63, 0x0c, 0x84, 0x10, 0x00, 0x00, 0xc6, 0x18, 0xa5, 0x14, 0xe7, 0x1c, 0x00, 0x00, +0xc6, 0x18, 0xa5, 0x14, 0xe7, 0x1c, 0x00, 0x00, 0xc6, 0x18, 0xa5, 0x14, 0xe7, 0x1c, 0x00, 0x00, +0xc6, 0x18, 0xa5, 0x14, 0xe7, 0x1c, 0x00, 0x00, 0xe7, 0x1c, 0xc6, 0x18, 0x08, 0x21, 0x00, 0x00, +0xc6, 0x18, 0xe7, 0x1c, 0x08, 0x21, 0x00, 0x00, 0xc6, 0x18, 0xe7, 0x1c, 0x08, 0x21, 0x00, 0x00, +0xc6, 0x18, 0xe7, 0x1c, 0x08, 0x21, 0x00, 0x00, 0x08, 0x21, 0x29, 0x25, 0x4a, 0x29, 0x00, 0x00, +0x29, 0x25, 0x08, 0x21, 0x4a, 0x29, 0x00, 0x00, 0x08, 0x21, 0x29, 0x25, 0x4a, 0x29, 0x00, 0x00, +0x29, 0x25, 0x08, 0x21, 0x4a, 0x29, 0x00, 0x00, 0x29, 0x25, 0x6b, 0x2d, 0x4a, 0x29, 0x00, 0x00, +0x29, 0x25, 0x6b, 0x2d, 0x4a, 0x29, 0x8c, 0x31, 0x29, 0x25, 0x6b, 0x2d, 0x4a, 0x29, 0x8c, 0x31, + +0x29, 0x25, 0x6b, 0x2d, 0x4a, 0x29, 0x8c, 0x31, 0x8c, 0x31, 0xad, 0x35, 0x6b, 0x2d, 0x00, 0x00, +0x8c, 0x31, 0xad, 0x35, 0x6b, 0x2d, 0x00, 0x00, 0x8c, 0x31, 0xad, 0x35, 0x6b, 0x2d, 0x00, 0x00, +0x8c, 0x31, 0xad, 0x35, 0x6b, 0x2d, 0x00, 0x00, 0x8c, 0x31, 0xef, 0x3d, 0xad, 0x35, 0xce, 0x39, +0x8c, 0x31, 0xef, 0x3d, 0xad, 0x35, 0xce, 0x39, 0x8c, 0x31, 0xad, 0x35, 0xce, 0x39, 0x00, 0x00, +0xad, 0x35, 0x8c, 0x31, 0xce, 0x39, 0x00, 0x00, 0xef, 0x3d, 0xce, 0x39, 0x10, 0x42, 0x00, 0x00, +0xef, 0x3d, 0xce, 0x39, 0x10, 0x42, 0x00, 0x00, 0xef, 0x3d, 0xce, 0x39, 0x10, 0x42, 0x00, 0x00, +0xef, 0x3d, 0xce, 0x39, 0x10, 0x42, 0x00, 0x00, 0xef, 0x3d, 0x31, 0x46, 0x10, 0x42, 0x00, 0x00, +0xef, 0x3d, 0x31, 0x46, 0x10, 0x42, 0x52, 0x4a, 0xef, 0x3d, 0x31, 0x46, 0x10, 0x42, 0x52, 0x4a, +0xef, 0x3d, 0x31, 0x46, 0x10, 0x42, 0x00, 0x00, 0x52, 0x4a, 0x73, 0x4e, 0x31, 0x46, 0x00, 0x00, +0x31, 0x46, 0x73, 0x4e, 0x52, 0x4a, 0x00, 0x00, 0x31, 0x46, 0x73, 0x4e, 0x52, 0x4a, 0x00, 0x00, +0x31, 0x46, 0x73, 0x4e, 0x52, 0x4a, 0x00, 0x00, 0x94, 0x52, 0x73, 0x4e, 0x52, 0x4a, 0xb5, 0x56, +0x94, 0x52, 0x52, 0x4a, 0x73, 0x4e, 0xb5, 0x56, 0x94, 0x52, 0x52, 0x4a, 0x73, 0x4e, 0x00, 0x00, +0x94, 0x52, 0x73, 0x4e, 0xb5, 0x56, 0x00, 0x00, 0xd6, 0x5a, 0x94, 0x52, 0xb5, 0x56, 0x00, 0x00, +0xd6, 0x5a, 0x94, 0x52, 0xb5, 0x56, 0x00, 0x00, 0xd6, 0x5a, 0x94, 0x52, 0xb5, 0x56, 0x00, 0x00, +0xd6, 0x5a, 0xb5, 0x56, 0x94, 0x52, 0x00, 0x00, 0xd6, 0x5a, 0xb5, 0x56, 0xf7, 0x5e, 0x00, 0x00, +0xf7, 0x5e, 0xd6, 0x5a, 0x18, 0x63, 0x00, 0x00, 0xb5, 0x56, 0xd6, 0x5a, 0xf7, 0x5e, 0x00, 0x00, + +0xf7, 0x5e, 0xd6, 0x5a, 0x18, 0x63, 0x00, 0x00, 0xf7, 0x5e, 0x18, 0x63, 0x39, 0x67, 0x00, 0x00, +0x18, 0x63, 0xf7, 0x5e, 0x39, 0x67, 0x00, 0x00, 0xf7, 0x5e, 0x18, 0x63, 0x39, 0x67, 0x00, 0x00, +0xf7, 0x5e, 0x18, 0x63, 0x39, 0x67, 0x00, 0x00, 0x18, 0x63, 0x39, 0x67, 0x7b, 0x6f, 0x5a, 0x6b, +0x5a, 0x6b, 0x39, 0x67, 0x00, 0x00, 0x00, 0x00, 0x18, 0x63, 0x39, 0x67, 0x7b, 0x6f, 0x5a, 0x6b, +0x18, 0x63, 0x39, 0x67, 0x5a, 0x6b, 0x00, 0x00, 0x7b, 0x6f, 0x9c, 0x73, 0x5a, 0x6b, 0x00, 0x00, +0x7b, 0x6f, 0x9c, 0x73, 0x5a, 0x6b, 0x00, 0x00, 0x7b, 0x6f, 0x9c, 0x73, 0x5a, 0x6b, 0x00, 0x00, +0x7b, 0x6f, 0x9c, 0x73, 0x5a, 0x6b, 0x00, 0x00, 0xbd, 0x77, 0xde, 0x7b, 0x9c, 0x73, 0x00, 0x00, +0x7b, 0x6f, 0x9c, 0x73, 0xbd, 0x77, 0x00, 0x00, 0xbd, 0x77, 0xde, 0x7b, 0x9c, 0x73, 0x00, 0x00, +0xbd, 0x77, 0xde, 0x7b, 0x9c, 0x73, 0x00, 0x00, 0xde, 0x7b, 0xbd, 0x77, 0xff, 0x7f, 0x00, 0x00, +0xbd, 0x77, 0xde, 0x7b, 0xff, 0x7f, 0x00, 0x00, 0xde, 0x7b, 0xbd, 0x77, 0xff, 0x7f, 0x00, 0x00, +0xde, 0x7b, 0xbd, 0x77, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0xde, 0x7b, 0x00, 0x00, 0x00, 0x00, +0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0x7b, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, +};
diff -r 000000000000 -r 87bd6fb28ffb main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Dec 21 14:08:13 2012 +0000 @@ -0,0 +1,217 @@ +#include "mbed.h" +#include "GD.h" +#include "shield.h" +#include "arduino.h" + +GDClass GD(ARD_MOSI, ARD_MISO, ARD_SCK, ARD_D9, USBTX, USBRX) ; +SPI spimain(ARD_MOSI, ARD_MISO, ARD_SCK); // mosi, miso, sclk +//#include <stdlib.h> +//#include <spimainmain.h> +//#include <GD.h> +Serial pcmain(USBTX, USBRX); +static uint16_t SWAP_RB(uint16_t color) { // Swap red and blue channel + byte r = (color >> 10) & 31; + byte g = (color >> 5) & 31; + byte b = color & 31; + return (color & 0x8000) | (b << 10) | (g << 5) | (r); +} + +static uint16_t SWAP_RG(uint16_t color) { // Swap red and blue channel + byte r = (color >> 10) & 31; + byte g = (color >> 5) & 31; + byte b = color & 31; + return (color & 0x8000) | (g << 10) | (r << 5) | (b); +} + +#include "dna.h" + +//////////////////////////////////////////////////////////////////////////////// +// 3D Projection +//////////////////////////////////////////////////////////////////////////////// + +static float mats[2][9]; + +static float mat[9]; + +// Taken from glRotate() +static void rotation(float phi) { + float x = 0.57735026918962573; + float y = 0.57735026918962573; + float z = 0.57735026918962573; + + float s = sin(phi); + float c = cos(phi); + + mat[0] = x*x*(1-c)+c; + mat[1] = x*y*(1-c)-z*s; + mat[2] = x*z*(1-c)+y*s; + + mat[3] = y*x*(1-c)+z*s; + mat[4] = y*y*(1-c)+c; + mat[5] = y*z*(1-c)-x*s; + + mat[6] = x*z*(1-c)-y*s; + mat[7] = y*z*(1-c)+x*s; + mat[8] = z*z*(1-c)+c; +} + +#ifdef MAPLE_IDE +#define NVERTICES 250 +#else +#define NVERTICES 220 // Arduino does not have enough RAM for all 250 +#endif + +struct screenpt { + short x, y, z; +}; +static struct screenpt projected[NVERTICES]; + +void project(float distance) { + byte vx; + const prog_char *pm = cloud; + const prog_char *pm_e = cloud + (NVERTICES*3); + struct screenpt *dst = projected; + signed char x, y, z; + + while (pm < pm_e) { + x = pgm_read_byte_near(pm++); + y = pgm_read_byte_near(pm++); + z = pgm_read_byte_near(pm++); + float xx = x * mat[0] + y * mat[3] + z * mat[6]; + float yy = x * mat[1] + y * mat[4] + z * mat[7]; + float zz = x * mat[2] + y * mat[5] + z * mat[8] + distance; + int scale = 200; + float q = scale / (250 + zz); + dst->x = (511 & (int)(200 + xx * q)) | (((x^y^z) & 3) << 14); + dst->y = (int)(150 + yy * q); + dst->z = (int)(zz * 100); + dst++; + } +} + +// point depth comparison, for depth sort +int ptcmp(const void *va, const void *vb) { + struct screenpt *a = (struct screenpt *)va; + struct screenpt *b = (struct screenpt *)vb; + + if (a->z < b->z) + return 1; + else if (a->z > b->z) + return -1; + else + return 0; +} + +// load a sprite at (x,y). z is distance 0-63, color is 0-3 +static void render_sphere(int x, int y, byte z, byte color) { + static byte pals[4][2] = { + { 4,6 }, + { 5,7 }, + { 0,1 }, + { 2,3 } + }; + + int ox = x - 8; + int oy = y - 8; + byte palette = pals[color][z & 1]; + byte image = (z >> 1); + + spimain.write(lowByte(ox)); + spimain.write((palette << 4) | (highByte(ox) & 1)); + spimain.write(lowByte(oy)); + spimain.write((image << 1) | (highByte(oy) & 1)); +} + +void draw(float distance) { + project(distance); + qsort(projected, NVERTICES, sizeof(struct screenpt), ptcmp); + + static byte flip; + GD.__wstartspr(flip ? 256 : 0); + for (int i = 0; i < NVERTICES; i++) { + byte color = (projected[i].x >> 14) & 3; + short x = projected[i].x & 511; + short y = projected[i].y; + int z = max(0, min(63, int(32 + projected[i].z / 500))); + render_sphere(x, y, z, color); + } + GD.__end(); + GD.wr(SPR_PAGE, flip); + flip = !flip; +} + +static float phi; // Current rotation angle + +// Draw one frame of ship +void cycle(float distance) { + rotation(phi); + phi += 0.02; + draw(distance); + + // report frame rate in top-right + static byte every; + if (++every == 4) { + static long tprev; + long t = micros(); + every = 0; + + char msg[30]; + int fps10 = int(4 * 10000000UL / (t - tprev)); + sprintf(msg, "%3d.%d fps ", fps10 / 10, fps10 % 10); + GD.putstr(41, 0, msg); + tprev = t; + } + +} + +// this function has been changed to handle the gameduino being in little endian +static uint16_t rdpal(int i) { + uint16_t swapped = (sphere_pal[(i << 1)+1] << 8) | ((sphere_pal[(i << 1)])); + return swapped; +} + +void setup() { + GD.begin(); + GD.ascii(); + + for (byte y = 0; y < 38; y++) { + prog_uchar *src = ramp_pic + y * 4; + for (byte x = 0; x < 50; x++) + GD.wr(RAM_PIC + y * 64 + x, pgm_read_byte(src + random(4))); + } + GD.copy(RAM_CHR + 128 * 16, ramp_chr, sizeof(ramp_chr)); + GD.copy(RAM_PAL + 128 * 8, ramp_pal, sizeof(ramp_pal)); + + GD.copy(PALETTE16A, sphere_pal, sizeof(sphere_pal)); + for (byte i = 0; i < 16; i++) { + GD.wr16(PALETTE16B + 2 * i, SWAP_RB(rdpal(i))); + } + + for (int i = 0; i < 256; i++) { + // palette 0 decodes low nibble, hence (i & 15) + GD.wr16(RAM_SPRPAL + (i << 1), SWAP_RG(rdpal(i & 15))); + // palette 1 decodes nigh nibble, hence (i >> 4) + GD.wr16(RAM_SPRPAL + 512 + (i << 1), SWAP_RG(rdpal(i >> 4))); + + // palette 0 decodes low nibble, hence (i & 15) + GD.wr16(RAM_SPRPAL + 1024 + (i << 1), SWAP_RB(SWAP_RG(rdpal(i & 15)))); + // palette 1 decodes nigh nibble, hence (i >> 4) + GD.wr16(RAM_SPRPAL + 1024 + 512 + (i << 1), SWAP_RB(SWAP_RG(rdpal(i >> 4)))); + } + + GD.copy(RAM_SPRIMG, sphere_img, sizeof(sphere_img)); + GD.putstr(0, 0, "DNA demo: Gameduino with Mbed"); + +} + +void loop() { + cycle(0.0); +} + +int main() { + timer_start(); + setup(); + while (1) { + loop(); + } +} \ No newline at end of file
diff -r 000000000000 -r 87bd6fb28ffb mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Fri Dec 21 14:08:13 2012 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/078e4b97a13e \ No newline at end of file
diff -r 000000000000 -r 87bd6fb28ffb shield.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/shield.h Fri Dec 21 14:08:13 2012 +0000 @@ -0,0 +1,48 @@ +#define ARD_D0 p27 +#define ARD_D1 p28 +#define ARD_D2 p29 +#define ARD_D3 p21 +#define ARD_D4 p30 +#define ARD_D5 p22 +#define ARD_D6 p23 +#define ARD_D7 p11 +#define ARD_D8 p12 +#define ARD_D9 p24 +#define ARD_D10 p25 +#define ARD_D11 p5 +#define ARD_D12 p6 +#define ARD_D13 p7 + +#define ARD_D14 ARD_A0 +#define ARD_D15 ARD_A1 +#define ARD_D16 ARD_A2 +#define ARD_D17 ARD_A3 +#define ARD_D18 ARD_SDA +#define ARD_D19 ARD_SCL + +#define ARD_A0 p15 +#define ARD_A1 p16 +#define ARD_A2 p17 +#define ARD_A3 p18 +#define ARD_A4 p19 +#define ARD_A5 p20 + +#define ARD_PWM0 ARD_D3 +#define ARD_PWM1 ARD_D5 +#define ARD_PWM2 ARD_D6 +#define ARD_PWM3 ARD_D9 +#define ARD_PWM4 ARD_D10 +#define ARD_PWM5 p26 + +#define ARD_RX ARD_D0 +#define ARD_TX ARD_D1 +#define ARD_SDA p9 +#define ARD_SCL p10 +#define ARD_MOSI p5 +#define ARD_MISO p6 +#define ARD_SCK p7 +/* +DigitalOut shield_d13(ARD_D13); + +AnalogIn shield_a0(ARD_A0); +*/ \ No newline at end of file