xpat2-1.07/ 40755 146 144 0 7201342711 11057 5ustar mbimathoptxpat2-1.07/makecards/ 40755 146 144 0 6710067110 13012 5ustar mbimathoptxpat2-1.07/makecards/French/ 40755 146 144 0 5551552433 14230 5ustar mbimathoptxpat2-1.07/makecards/French/config.h100644 146 144 530 5550631654 15723 0ustar mbimathopt/* configuration for the american cards */ #define NUM_RED_COLORS 8 /* number not counting background */ #define NUM_BLACK_COLORS 8 /* number not counting background */ #define RED_COLOR { 65535L * 4L / 5L, 0L, 0L } /* red is 80% */ #define BLACK_COLOR { 0L, 0L, 0L } #define WHITE_COLOR { 65535L, 65535L, 65535L } /* background is white */ xpat2-1.07/makecards/French/largeclub.bm100644 146 144 13141 5550533533 16624 0ustar mbimathopt#define largeclub_width 82 #define largeclub_height 82 static char largeclub_bits[] = { 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, 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, 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0xe0, 0xff, 0xff, 0x1f, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xc0, 0xff, 0xff, 0x0f, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x81, 0xff, 0xff, 0x07, 0xfe, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x07, 0xff, 0xff, 0x83, 0xff, 0xff, 0x03, 0x00, 0x80, 0xff, 0xff, 0x0f, 0xfe, 0xff, 0xc1, 0xff, 0xff, 0x07, 0x00, 0xc0, 0xff, 0xff, 0x1f, 0xfc, 0xff, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0xf8, 0x7f, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0xf0, 0x3f, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xe0, 0x1f, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xc1, 0x0f, 0xfe, 0xff, 0xff, 0x3f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x83, 0x07, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x87, 0x87, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x8f, 0xc7, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x8f, 0xc7, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x87, 0x87, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x83, 0x07, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x81, 0x07, 0xfe, 0xff, 0xff, 0x3f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x80, 0x07, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x80, 0x07, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x80, 0x07, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0xc0, 0xff, 0xff, 0x1f, 0x80, 0x07, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0x80, 0xff, 0xff, 0x0f, 0x80, 0x07, 0xc0, 0xff, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x07, 0x80, 0x07, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x80, 0x07, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x80, 0x07, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x80, 0x07, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00}; xpat2-1.07/makecards/French/largediamond.bm120777 146 144 0 7201315416 23111 2largediamond.bm.fullustar mbimathoptxpat2-1.07/makecards/French/largeheart.bm100644 146 144 13144 5550533533 17005 0ustar mbimathopt#define largeheart_width 82 #define largeheart_height 82 static char largeheart_bits[] = { 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, 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, 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, 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x03, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x80, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x1f, 0xe0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x3f, 0xf0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}; xpat2-1.07/makecards/French/largerank.bm100644 146 144 60020 5551216363 16630 0ustar mbimathopt#define largerank_width 108 #define largerank_height 280 static char largerank_bits[] = { 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, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1e, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1e, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x80, 0x03, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0xc0, 0x01, 0x7c, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0xc0, 0x01, 0x7c, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0xe0, 0x01, 0x7c, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0xe0, 0x00, 0x38, 0x00, 0xfe, 0xff, 0xff, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x03, 0xfe, 0x01, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x03, 0xf0, 0x03, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x03, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x03, 0xc0, 0x0f, 0x00, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x80, 0x0f, 0x00, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x80, 0x0f, 0x00, 0x00, 0xf0, 0x61, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0xf0, 0x61, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0xf8, 0xe1, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0xf8, 0xe1, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0xf8, 0xc0, 0x00, 0x00, 0x3e, 0xf8, 0x01, 0x00, 0xf0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0xf8, 0xc0, 0x00, 0x00, 0x3e, 0x06, 0x07, 0x00, 0xf0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0xfc, 0xc0, 0x01, 0x00, 0x3e, 0x01, 0x0e, 0x00, 0xf0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0xfc, 0x80, 0x01, 0x00, 0x3e, 0x01, 0x0e, 0x00, 0xf0, 0x03, 0x00, 0x0f, 0x00, 0x00, 0x7c, 0x80, 0x01, 0x00, 0xbe, 0x00, 0x1c, 0x00, 0xf0, 0x03, 0x80, 0x0f, 0x00, 0x00, 0x7c, 0x80, 0x01, 0x00, 0xbe, 0x00, 0x38, 0x00, 0xf0, 0x03, 0x80, 0x07, 0x00, 0x00, 0x3e, 0x80, 0x03, 0x00, 0x7e, 0x00, 0x78, 0x00, 0xf0, 0x03, 0xc0, 0x07, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x7e, 0x00, 0x78, 0x00, 0xf0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x7e, 0x00, 0xf0, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x3f, 0x00, 0x07, 0x00, 0x7e, 0x00, 0xf0, 0x00, 0xf0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x3e, 0x00, 0xf0, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x3e, 0x00, 0xf0, 0x00, 0xf0, 0x03, 0xf8, 0x01, 0x00, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0xe0, 0x03, 0x00, 0x80, 0x1f, 0x00, 0x0e, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0xc0, 0x07, 0x00, 0x80, 0x0f, 0x00, 0x0c, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0x80, 0x0f, 0x00, 0x80, 0xff, 0xff, 0x0f, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0x80, 0x0f, 0x00, 0x80, 0xff, 0xff, 0x0f, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0x00, 0x0f, 0x00, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0x00, 0x1e, 0x00, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0x00, 0x1e, 0x00, 0xc0, 0x07, 0x00, 0x18, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0x00, 0x3e, 0x00, 0xe0, 0x07, 0x00, 0x38, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0x00, 0x3e, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0x00, 0x3e, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xf0, 0x03, 0x00, 0x3e, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xf0, 0x03, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0x00, 0x70, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xf0, 0x03, 0x00, 0x1f, 0x00, 0xf0, 0x01, 0x00, 0x60, 0x00, 0x70, 0x00, 0x78, 0x00, 0xf0, 0x03, 0x00, 0x0f, 0x00, 0xf8, 0x01, 0x00, 0xe0, 0x00, 0xf0, 0x00, 0x78, 0x00, 0xf0, 0x03, 0x80, 0x0f, 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x00, 0xf0, 0x00, 0x78, 0x00, 0xf0, 0x03, 0xc0, 0x07, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x03, 0xe0, 0x00, 0x3c, 0x00, 0xf0, 0x03, 0xf0, 0x03, 0x00, 0xfc, 0x03, 0x00, 0xfc, 0x07, 0xc0, 0x01, 0x1c, 0x00, 0xf0, 0x03, 0xfe, 0x01, 0x00, 0xfe, 0x07, 0x00, 0xfc, 0x07, 0x80, 0x07, 0x0f, 0x00, 0xfe, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x07, 0x00, 0xfc, 0x07, 0x80, 0x07, 0x0f, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x07, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x7e, 0x00, 0x00, 0x70, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x30, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x10, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xf0, 0x01, 0x00, 0x10, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xf0, 0x01, 0x00, 0x10, 0x00, 0xe0, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x40, 0x00, 0xe0, 0x03, 0x00, 0x10, 0x00, 0x70, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x40, 0x00, 0xe0, 0x03, 0x00, 0x08, 0x00, 0x30, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x40, 0x00, 0xe0, 0x03, 0x00, 0x08, 0x00, 0x30, 0x00, 0xfe, 0xff, 0xff, 0x00, 0x00, 0xe0, 0x03, 0xe0, 0x07, 0x00, 0x08, 0x00, 0x38, 0x00, 0xf0, 0x03, 0xfe, 0x01, 0x00, 0xe0, 0x07, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x18, 0x00, 0xf0, 0x03, 0xf0, 0x03, 0x00, 0xe0, 0x07, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x1c, 0x00, 0xf0, 0x03, 0xc0, 0x07, 0x00, 0xe0, 0x07, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xf0, 0x03, 0x80, 0x0f, 0x00, 0xe0, 0x07, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xf0, 0x03, 0x00, 0x0f, 0x00, 0xe0, 0x07, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xf0, 0x03, 0x00, 0x1f, 0x00, 0xe0, 0x07, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf0, 0x03, 0x00, 0x1e, 0x00, 0xc0, 0x03, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0xf0, 0x03, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0xf0, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x80, 0x03, 0x00, 0xf0, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x80, 0x03, 0x00, 0xf0, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x78, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x78, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x78, 0x00, 0x04, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x38, 0x00, 0x04, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x1c, 0x00, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x1e, 0x00, 0x00, 0x0e, 0x00, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x1e, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x0f, 0x00, 0x80, 0x03, 0x00, 0x03, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0x80, 0x0f, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0xc0, 0x07, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0xf0, 0x03, 0x00, 0xc0, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0xfe, 0x01, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x78, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x7c, 0x00, 0x00, 0x00, 0x07, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x80, 0x01, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0xf0, 0x01, 0x00, 0xe0, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0xf0, 0x03, 0x00, 0x60, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0xe0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0xe0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0xe0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0x80, 0x07, 0xe0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0x00, 0x03, 0xf0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0x00, 0x03, 0xf0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xf8, 0x03, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x00, 0xe0, 0x00, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x01, 0x70, 0x00, 0xf0, 0x01, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x03, 0x70, 0x00, 0xf0, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x03, 0x70, 0x00, 0xf0, 0x01, 0x78, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x0f, 0x38, 0x00, 0xf0, 0x01, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0xc0, 0x1f, 0x1c, 0x00, 0xf0, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x80, 0x7f, 0x06, 0x00, 0xf0, 0x01, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x80, 0x7f, 0x06, 0x00, 0xf0, 0x81, 0x07, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0xf0, 0xc1, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x00, 0xf0, 0xe1, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0xf0, 0xf1, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0xf0, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0xf0, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xe3, 0x3f, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x81, 0x7f, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x81, 0x7f, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xe0, 0x00, 0xff, 0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x70, 0x00, 0xfc, 0x01, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x30, 0x00, 0xf8, 0x01, 0xf0, 0xf7, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x30, 0x00, 0xf8, 0x01, 0xf0, 0xe3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x38, 0x00, 0xe0, 0x01, 0xf0, 0xc1, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x18, 0x00, 0xc0, 0x03, 0xf0, 0xc1, 0x03, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0xc0, 0x03, 0xf0, 0x81, 0x07, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0xc0, 0x03, 0xf0, 0x81, 0x07, 0x00, 0x00, 0xe0, 0x01, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0x0f, 0x00, 0x00, 0xf0, 0x03, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0x1f, 0x00, 0x00, 0xf0, 0x03, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0x1e, 0x00, 0x00, 0xf0, 0x03, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0x3c, 0x00, 0x00, 0xf0, 0x03, 0xc0, 0x07, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0x3c, 0x00, 0x00, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0x3c, 0x00, 0x80, 0x01, 0xf0, 0x01, 0x78, 0x00, 0x00, 0x20, 0x00, 0xe0, 0x07, 0x00, 0x38, 0x00, 0xc0, 0x01, 0xf0, 0x01, 0x78, 0x00, 0x00, 0x20, 0x00, 0xe0, 0x07, 0x00, 0x38, 0x00, 0xc0, 0x01, 0xf0, 0x01, 0xf0, 0x00, 0x00, 0x20, 0x00, 0xe0, 0x03, 0x00, 0x78, 0x00, 0xc0, 0x00, 0xf0, 0x01, 0xf0, 0x00, 0x00, 0xc0, 0x00, 0xf0, 0x01, 0x00, 0x70, 0x00, 0x60, 0x00, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0x80, 0x01, 0xf0, 0x00, 0x00, 0xe0, 0x01, 0x30, 0x00, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0x80, 0x01, 0xf0, 0x00, 0x00, 0xe0, 0x01, 0x30, 0x00, 0xf0, 0x01, 0xe0, 0x07, 0x00, 0x00, 0x0f, 0x7c, 0x00, 0x00, 0xc0, 0x07, 0x1e, 0x00, 0xf8, 0x03, 0xf0, 0x07, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0xff, 0x1f, 0xfe, 0x3f, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0xff, 0x1f, 0xfe, 0x3f, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0xff, 0x1f, 0xfe, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0xfe, 0x01, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x7c, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x7c, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x07, 0x0e, 0x00, 0xfc, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x38, 0x00, 0x00, 0xc0, 0x03, 0x1c, 0x00, 0xf8, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0xc0, 0x03, 0x1c, 0x00, 0xf8, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xe0, 0x01, 0x38, 0x00, 0xf0, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xf0, 0x00, 0x70, 0x00, 0xf0, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xf0, 0x00, 0x70, 0x00, 0xf0, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xf0, 0x00, 0x70, 0x00, 0xf0, 0x01, 0x00, 0x70, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xe0, 0x07, 0x00, 0x38, 0x00, 0x00, 0xc0, 0x3d, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xc0, 0x07, 0x00, 0x18, 0x00, 0x00, 0xc0, 0x3d, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xc0, 0x07, 0x00, 0x18, 0x00, 0x00, 0xe0, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xc0, 0x07, 0x00, 0x1c, 0x00, 0x00, 0xe0, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0x80, 0x0f, 0x00, 0x0c, 0x00, 0x00, 0x70, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0x80, 0x0f, 0x00, 0x0c, 0x00, 0x00, 0x70, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0x80, 0x0f, 0x00, 0x0c, 0x00, 0x00, 0x38, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0x80, 0x1f, 0x00, 0x0e, 0x00, 0x00, 0x38, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x00, 0x18, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x00, 0x1c, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xe0, 0x03, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x00, 0x0e, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x03, 0x00, 0x3f, 0x00, 0x07, 0x00, 0x00, 0x0e, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x03, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x00, 0x06, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x03, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x00, 0x07, 0x3c, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0x03, 0x00, 0x3e, 0x80, 0x03, 0x00, 0x80, 0x03, 0x3c, 0x00, 0x00, 0xe0, 0x00, 0xf8, 0x03, 0x00, 0x7c, 0x80, 0x01, 0x00, 0x80, 0x03, 0x3c, 0x00, 0x00, 0xe0, 0x00, 0xe8, 0x03, 0x00, 0x7c, 0x80, 0x01, 0x00, 0x80, 0x01, 0x3c, 0x00, 0x00, 0xc0, 0x01, 0xec, 0x03, 0x00, 0xfc, 0x80, 0x01, 0x00, 0xc0, 0x01, 0x3c, 0x00, 0x00, 0x80, 0x03, 0xe6, 0x03, 0x00, 0xfc, 0xc0, 0x01, 0x00, 0xc0, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x07, 0xe3, 0x03, 0x00, 0xf8, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xff, 0xe3, 0x03, 0x00, 0xf8, 0xc0, 0x00, 0x00, 0x60, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xfc, 0xe0, 0x03, 0x00, 0xf8, 0xe1, 0x00, 0x00, 0x70, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf8, 0xe1, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x61, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x61, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xe0, 0x00, 0x78, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xe0, 0x00, 0x78, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x01, 0x38, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x01, 0x1c, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x00, 0x0e, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x60, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xe0, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x20, 0x00, 0x78, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x30, 0x00, 0x78, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x3e, 0xc0, 0x01, 0x00, 0x38, 0x00, 0xce, 0x01, 0xf8, 0x03, 0xfc, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x3c, 0x80, 0x03, 0x07, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x3f, 0xc0, 0x01, 0x0e, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0x00, 0xfe, 0xff, 0x00, 0xc0, 0x3f, 0xc0, 0x01, 0x0e, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0xf0, 0x3f, 0xe0, 0x01, 0x1e, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x30, 0x3c, 0xe0, 0x00, 0x1c, 0xf0, 0x01, 0x80, 0x1f, 0x00, 0x00, 0xe2, 0x03, 0x00, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0xe2, 0x03, 0x00, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x70, 0x00, 0x38, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0xc2, 0x0f, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0xc2, 0x0f, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x32, 0x30, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x0a, 0xe0, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0x00, 0x06, 0xe0, 0x01, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x7c, 0x00, 0x00, 0x00, 0x06, 0xe0, 0x01, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x02, 0xc0, 0x01, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x78, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0x80, 0x03, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0x80, 0x03, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0xc0, 0x07, 0x80, 0x07, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x40, 0x00, 0x80, 0x07, 0x00, 0x3c, 0xf8, 0x00, 0x7c, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x80, 0x00, 0xc0, 0x07, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x80, 0x00, 0xc0, 0x07, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x80, 0x00, 0xc0, 0x03, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x80, 0x01, 0xc0, 0x03, 0x00, 0x3c, 0xe0, 0x00, 0x1c, 0xf0, 0x01, 0xc0, 0x1f, 0x00, 0x00, 0x03, 0xe0, 0x01, 0x00, 0x3c, 0xe0, 0x01, 0x1e, 0xf0, 0x01, 0x80, 0x1f, 0x00, 0x00, 0x03, 0xe0, 0x01, 0x00, 0x3c, 0xe0, 0x01, 0x1e, 0xf8, 0x03, 0x00, 0x1f, 0x08, 0x00, 0x06, 0xf0, 0x00, 0x00, 0x7e, 0xc0, 0x01, 0x0e, 0xf8, 0x03, 0x00, 0x1f, 0x08, 0x00, 0x1c, 0x7c, 0x00, 0xc0, 0xff, 0x83, 0x03, 0x07, 0xff, 0x3f, 0x00, 0x3e, 0x08, 0x00, 0xf8, 0x1f, 0x00, 0xe0, 0xff, 0x07, 0xce, 0x01, 0xff, 0x3f, 0x00, 0x3c, 0x04, 0x00, 0xf8, 0x1f, 0x00, 0xe0, 0xff, 0x07, 0xce, 0x01, 0xff, 0x3f, 0x00, 0xf0, 0x03, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0xff, 0x3f, 0x00, 0xf0, 0x03}; xpat2-1.07/makecards/French/largespade.bm100644 146 144 13144 5550533533 16776 0ustar mbimathopt#define largespade_width 82 #define largespade_height 82 static char largespade_bits[] = { 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xbf, 0xf7, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x9f, 0xe7, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x8f, 0xc7, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x83, 0x07, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x81, 0x07, 0xfe, 0xff, 0xff, 0x0f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x80, 0x07, 0xfc, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0x80, 0x07, 0xfc, 0xff, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x7f, 0x80, 0x07, 0xf8, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0x3f, 0x80, 0x07, 0xf0, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0xc0, 0x0f, 0xe0, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x0f, 0xc0, 0x0f, 0xc0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x03, 0xc0, 0x0f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x80, 0xff, 0x00, 0xc0, 0x0f, 0x00, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00}; xpat2-1.07/makecards/French/largerank.bm.bold100644 146 144 14110 5550637770 17556 0ustar mbimathopt#define largerank_width 54 #define largerank_height 140 static char largerank_bits[] = { 0xc0, 0x0f, 0xc0, 0xff, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0xe0, 0xff, 0x01, 0x00, 0x00, 0xc0, 0x0f, 0xf0, 0xff, 0x03, 0x00, 0x00, 0xc0, 0x0f, 0xf8, 0xff, 0x07, 0x00, 0x00, 0xe0, 0x1f, 0xfc, 0xc0, 0xcf, 0xff, 0x01, 0xe0, 0x1f, 0x7c, 0x80, 0xcf, 0xff, 0x03, 0xe0, 0x1c, 0x3c, 0x00, 0xc7, 0xff, 0x07, 0xe0, 0x1c, 0x3c, 0x00, 0x02, 0x87, 0x07, 0xf0, 0x3c, 0x3c, 0x00, 0x00, 0x07, 0x0f, 0xf0, 0x3c, 0x3c, 0x00, 0x00, 0x07, 0x0e, 0x70, 0x38, 0x3c, 0xff, 0x00, 0x07, 0x0e, 0x70, 0x38, 0xbc, 0xff, 0x01, 0x07, 0x0e, 0x78, 0x78, 0xfc, 0xff, 0x03, 0x07, 0x07, 0x78, 0x78, 0xfc, 0xff, 0x07, 0x87, 0x07, 0x38, 0x70, 0xfc, 0xc0, 0x0f, 0xff, 0x03, 0x38, 0x70, 0x7c, 0x80, 0x0f, 0xff, 0x03, 0xfc, 0xff, 0x3c, 0x00, 0x0f, 0xff, 0x03, 0xfc, 0xff, 0x3c, 0x00, 0x0f, 0xff, 0x03, 0xfc, 0xff, 0x3c, 0x00, 0x0f, 0x87, 0x07, 0xfc, 0xff, 0x3c, 0x00, 0x0f, 0x07, 0x07, 0x3e, 0xf0, 0x3d, 0x00, 0x0f, 0x07, 0x0e, 0x1e, 0xe0, 0x3d, 0x00, 0x0f, 0x07, 0x0e, 0x1e, 0xe0, 0x7d, 0x80, 0x0f, 0x07, 0x0e, 0x0e, 0xc0, 0xfd, 0xc0, 0x0f, 0x07, 0x0f, 0x0f, 0xc0, 0xfb, 0xff, 0x07, 0x87, 0x07, 0x0f, 0xc0, 0xf3, 0xff, 0xc3, 0xff, 0x07, 0x0f, 0xc0, 0xe3, 0xff, 0xc1, 0xff, 0x03, 0x0f, 0xc0, 0xc3, 0xff, 0xc0, 0xff, 0x01, 0xc0, 0x1f, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0xf0, 0x7f, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0xf8, 0xff, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0xfc, 0xff, 0xfd, 0xff, 0x0f, 0x00, 0x00, 0x3e, 0xf0, 0x3d, 0x00, 0xcf, 0xff, 0x01, 0x1f, 0xe0, 0x3f, 0x00, 0xcf, 0xff, 0x03, 0x0f, 0xc0, 0x03, 0x80, 0xcf, 0xff, 0x07, 0x0f, 0xc0, 0x03, 0xc0, 0x07, 0x87, 0x07, 0x00, 0xc0, 0x03, 0xc0, 0x03, 0x07, 0x0f, 0x00, 0xe0, 0x03, 0xc0, 0x03, 0x07, 0x0e, 0x00, 0xf0, 0x01, 0xe0, 0x01, 0x07, 0x0e, 0x00, 0xf8, 0x01, 0xf0, 0x01, 0x07, 0x0e, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0x07, 0x0e, 0x00, 0x7e, 0x00, 0xf0, 0x00, 0x07, 0x0e, 0x00, 0x3f, 0x00, 0x78, 0x00, 0x07, 0x0e, 0x80, 0x1f, 0x00, 0x78, 0x00, 0x07, 0x0e, 0xc0, 0x0f, 0x00, 0x3c, 0x00, 0x07, 0x0e, 0xe0, 0x07, 0x00, 0x3c, 0x00, 0x07, 0x0e, 0xf0, 0x03, 0x00, 0x3c, 0x00, 0x07, 0x0e, 0xf8, 0x01, 0x00, 0x1e, 0x00, 0x07, 0x0e, 0xfc, 0x00, 0x00, 0x1e, 0x00, 0x07, 0x0e, 0x7e, 0x00, 0x00, 0x1e, 0x00, 0x07, 0x0e, 0x3f, 0xc0, 0x03, 0x0e, 0x00, 0x07, 0x0e, 0x3f, 0xc0, 0x03, 0x0f, 0x00, 0x07, 0x0f, 0xff, 0xff, 0x03, 0x0f, 0x00, 0x87, 0x07, 0xff, 0xff, 0x03, 0x0f, 0xc0, 0xff, 0x07, 0xff, 0xff, 0x03, 0x0f, 0xc0, 0xff, 0x03, 0xff, 0xff, 0x03, 0x0f, 0xc0, 0xff, 0x01, 0xff, 0xff, 0xc3, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe3, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xf3, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xfb, 0xff, 0x07, 0x00, 0x00, 0x0f, 0xf0, 0xff, 0xc0, 0xcf, 0xcf, 0x0f, 0x0f, 0xf8, 0x7d, 0x80, 0xcf, 0xcf, 0x0f, 0x00, 0xfc, 0x3c, 0x00, 0xcf, 0xcf, 0x0f, 0x00, 0x7e, 0x3c, 0x00, 0x0f, 0x87, 0x03, 0x00, 0x3f, 0x7c, 0x80, 0x0f, 0xc7, 0x01, 0x80, 0x3f, 0xfc, 0xc0, 0x0f, 0xe7, 0x00, 0xc0, 0x3f, 0xf8, 0xff, 0x07, 0x77, 0x00, 0xe0, 0x3f, 0xf0, 0xff, 0x03, 0x3f, 0x00, 0xf0, 0xff, 0xc0, 0xff, 0x00, 0x1f, 0x00, 0xf0, 0xff, 0xc0, 0xff, 0x00, 0x0f, 0x00, 0xe0, 0xf0, 0xf3, 0xff, 0x03, 0x1f, 0x00, 0x40, 0xe0, 0xfb, 0xff, 0x07, 0x1f, 0x00, 0x00, 0xc0, 0xff, 0xc0, 0x0f, 0x3f, 0x00, 0x00, 0xc0, 0x7f, 0x80, 0x0f, 0x3f, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x0f, 0x7f, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x0f, 0x77, 0x00, 0x0c, 0xc0, 0x3f, 0x00, 0x0f, 0xe7, 0x00, 0x1e, 0xc0, 0x3f, 0x00, 0x0f, 0xe7, 0x00, 0x3f, 0xe0, 0x7f, 0x80, 0x0f, 0xc7, 0x01, 0x7f, 0xf0, 0xff, 0xc0, 0x0f, 0xc7, 0x01, 0xfe, 0xff, 0xf8, 0xff, 0x07, 0x87, 0x03, 0xfc, 0x7f, 0xf0, 0xff, 0xc3, 0xcf, 0x0f, 0xf8, 0x7f, 0xc0, 0xff, 0xc0, 0xcf, 0x0f, 0xe0, 0x1f, 0xc0, 0xff, 0xc0, 0xcf, 0x0f, 0x00, 0xfc, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0xff, 0xf8, 0xff, 0x07, 0x00, 0x00, 0x80, 0xff, 0xfc, 0xc0, 0x0f, 0x00, 0x00, 0x80, 0xff, 0x7c, 0x80, 0x0f, 0x00, 0x00, 0xc0, 0xf3, 0x3c, 0x00, 0x0f, 0x00, 0x00, 0xc0, 0xf3, 0x3c, 0x00, 0x0f, 0x00, 0x00, 0xe0, 0xf1, 0x3c, 0x00, 0x0f, 0x00, 0x00, 0xe0, 0xf1, 0x3c, 0x00, 0x0f, 0x00, 0x00, 0xf0, 0xf0, 0x3c, 0x00, 0x0f, 0x00, 0x00, 0xf0, 0xf0, 0x3c, 0x00, 0x0f, 0x00, 0x00, 0x78, 0xf0, 0x7c, 0x80, 0x0f, 0x00, 0x00, 0x78, 0xf0, 0xfc, 0xc0, 0x0f, 0x00, 0x00, 0x3c, 0xf0, 0xf8, 0xff, 0x0f, 0x00, 0x00, 0x3c, 0xf0, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x1e, 0xf0, 0xe0, 0x7f, 0x0f, 0x00, 0x00, 0x1e, 0xf0, 0xc0, 0x3f, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x13, 0x00, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x3b, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x7c, 0x80, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xfc, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0xfc, 0xfb, 0xff, 0x07, 0x00, 0x00, 0x00, 0xfc, 0xf3, 0xff, 0x03, 0x00, 0x00, 0x00, 0xfc, 0xe3, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xc3, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3c, 0xf8, 0x01, 0x00, 0x00, 0xff, 0xff, 0x3c, 0xfc, 0x03, 0x00, 0x00, 0xff, 0xff, 0x3c, 0xfe, 0x07, 0x00, 0x00, 0xff, 0xff, 0x3c, 0xff, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x3c, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x3c, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x3c, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x3c, 0x0f, 0x0f, 0x00, 0x00, 0xcf, 0x3f, 0x3c, 0x0f, 0x0f, 0x00, 0x00, 0xef, 0x7f, 0x3c, 0x0f, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x3c, 0x0f, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x3d, 0x0f, 0x0f, 0x00, 0x00, 0x3f, 0xf0, 0x3f, 0x0f, 0x0f, 0x00, 0x00, 0x1f, 0xe0, 0x3f, 0x0f, 0x0f, 0x00, 0x00, 0x0e, 0xc0, 0x3f, 0x0f, 0x0f, 0x00, 0x00, 0x04, 0xc0, 0x3f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x0f, 0x0f, 0x00, 0x00, 0x04, 0xc0, 0x3f, 0x0f, 0x0f, 0x00, 0x00, 0x0e, 0xc0, 0x3f, 0x0f, 0x0f, 0x00, 0x00, 0x1f, 0xe0, 0x3f, 0x0f, 0x0f, 0x00, 0x00, 0x3f, 0xf0, 0x3f, 0x0f, 0x0f, 0x00, 0x00, 0xfe, 0xff, 0x3d, 0xff, 0x0f, 0x00, 0x00, 0xfc, 0xff, 0x3c, 0xfe, 0x07, 0x00, 0x00, 0xf8, 0x7f, 0x3c, 0xfc, 0x03, 0x00, 0x00, 0xf0, 0x3f, 0x3c, 0xf8, 0x01, 0x00, 0x00}; xpat2-1.07/makecards/French/largerank.toobig.bm100644 146 144 60020 5551052242 20104 0ustar mbimathopt#define largerank_width 108 #define largerank_height 280 static char largerank_bits[] = { 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, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1e, 0x30, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1e, 0x30, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x30, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x80, 0x03, 0x78, 0x00, 0xfe, 0xff, 0xff, 0x01, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0xc0, 0x01, 0x7c, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0xc0, 0x01, 0x7c, 0x00, 0xf0, 0x01, 0xe0, 0x07, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0xe0, 0x01, 0x7c, 0x00, 0xf0, 0x01, 0xe0, 0x07, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0xe0, 0x00, 0x38, 0x00, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x80, 0x1f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x80, 0x1f, 0x00, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x80, 0x1f, 0x00, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x80, 0x1f, 0x00, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x80, 0x1f, 0x00, 0x00, 0xf0, 0x61, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x80, 0x1f, 0x00, 0x00, 0xf0, 0x61, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0xf8, 0xe1, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0xf8, 0xe1, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x00, 0xf8, 0xc0, 0x00, 0x00, 0x3e, 0xf8, 0x01, 0x00, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0x00, 0xf8, 0xc0, 0x00, 0x00, 0x3e, 0x06, 0x07, 0x00, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0x00, 0xfc, 0xc0, 0x01, 0x00, 0x3e, 0x01, 0x0e, 0x00, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0x00, 0xfc, 0x80, 0x01, 0x00, 0x3e, 0x01, 0x0e, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0x00, 0x7c, 0x80, 0x01, 0x00, 0xbe, 0x00, 0x1c, 0x00, 0xf0, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x7c, 0x80, 0x01, 0x00, 0xbe, 0x00, 0x38, 0x00, 0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x3e, 0x80, 0x03, 0x00, 0x7e, 0x00, 0x78, 0x00, 0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x7e, 0x00, 0x78, 0x00, 0xf0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x7e, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0x00, 0x00, 0x3f, 0x00, 0x07, 0x00, 0x7e, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0xe0, 0x0f, 0x00, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x3e, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x3e, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0x80, 0x1f, 0x00, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x80, 0x1f, 0x00, 0x0e, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x80, 0x0f, 0x00, 0x0c, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x80, 0xff, 0xff, 0x0f, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0x3e, 0x00, 0x80, 0xff, 0xff, 0x0f, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0x7e, 0x00, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0x7e, 0x00, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0x7e, 0x00, 0xc0, 0x07, 0x00, 0x18, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0x7e, 0x00, 0xe0, 0x07, 0x00, 0x38, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0x7e, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0x7e, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0xf0, 0x01, 0x00, 0x70, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0xf0, 0x01, 0x00, 0x60, 0x00, 0x70, 0x00, 0x78, 0x00, 0xf0, 0x01, 0x80, 0x1f, 0x00, 0xf8, 0x01, 0x00, 0xe0, 0x00, 0xf0, 0x00, 0x78, 0x00, 0xf0, 0x01, 0xc0, 0x1f, 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x00, 0xf0, 0x00, 0x78, 0x00, 0xf0, 0x01, 0xe0, 0x0f, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x03, 0xe0, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0xf0, 0x0f, 0x00, 0xfc, 0x03, 0x00, 0xfc, 0x07, 0xc0, 0x01, 0x1c, 0x00, 0xf0, 0x01, 0xf8, 0x03, 0x00, 0xfe, 0x07, 0x00, 0xfc, 0x07, 0x80, 0x07, 0x0f, 0x00, 0xfe, 0xff, 0xff, 0x01, 0x00, 0xfe, 0x07, 0x00, 0xfc, 0x07, 0x80, 0x07, 0x0f, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x07, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x7e, 0x00, 0x00, 0x70, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x30, 0x00, 0x80, 0x01, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x80, 0x00, 0xf0, 0x01, 0x00, 0x10, 0x00, 0xc0, 0x00, 0xfe, 0xff, 0xff, 0x00, 0x00, 0xc0, 0x00, 0xf0, 0x01, 0x00, 0x10, 0x00, 0xc0, 0x00, 0xf0, 0x01, 0xfc, 0x01, 0x00, 0x40, 0x00, 0xe0, 0x03, 0x00, 0x10, 0x00, 0x60, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0x00, 0x40, 0x00, 0xe0, 0x03, 0x00, 0x08, 0x00, 0x20, 0x00, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0x40, 0x00, 0xe0, 0x03, 0x00, 0x08, 0x00, 0x30, 0x00, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0xe0, 0x03, 0xe0, 0x07, 0x00, 0x08, 0x00, 0x30, 0x00, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0xe0, 0x07, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x18, 0x00, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0xe0, 0x07, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x18, 0x00, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0xe0, 0x07, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xf0, 0x01, 0x00, 0x3e, 0x00, 0xe0, 0x07, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xf0, 0x01, 0x00, 0x3e, 0x00, 0xe0, 0x07, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xf0, 0x01, 0x00, 0x7c, 0x00, 0xe0, 0x07, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf0, 0x01, 0x00, 0x7c, 0x00, 0xc0, 0x03, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf0, 0x01, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0xf0, 0x01, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x80, 0x03, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x01, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x01, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xfc, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xfc, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x7c, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x7c, 0x00, 0x00, 0x78, 0x00, 0x04, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x3e, 0x00, 0x00, 0x38, 0x00, 0x04, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x3e, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x3e, 0x00, 0x00, 0x1c, 0x00, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x0e, 0x00, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x0f, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x0f, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0x80, 0x07, 0x00, 0x80, 0x03, 0x00, 0x03, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0xfc, 0x01, 0x00, 0xc0, 0xff, 0xff, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x70, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x07, 0x00, 0x00, 0xe0, 0xff, 0xff, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x7c, 0x00, 0x00, 0x00, 0x07, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x80, 0x01, 0x3c, 0x00, 0xff, 0x7f, 0xe0, 0xff, 0x01, 0x80, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x00, 0x78, 0x00, 0xff, 0x7f, 0xe0, 0xff, 0x01, 0x80, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x00, 0x78, 0x00, 0xff, 0x3f, 0xe0, 0xff, 0x01, 0x80, 0x03, 0xf0, 0x01, 0x00, 0xe0, 0x00, 0x70, 0x00, 0xf8, 0x03, 0xc0, 0xff, 0x00, 0xc0, 0x07, 0xf0, 0x03, 0x00, 0x60, 0x00, 0xe0, 0x00, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0xc0, 0x07, 0xe0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xf0, 0x01, 0x00, 0x0f, 0x00, 0xc0, 0x07, 0xe0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xf0, 0x01, 0x00, 0x07, 0x00, 0xc0, 0x07, 0xe0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xf0, 0x01, 0x80, 0x03, 0x00, 0x80, 0x07, 0xe0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xf0, 0x01, 0xc0, 0x01, 0x00, 0x00, 0x03, 0xf0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xf0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xf0, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x00, 0xe0, 0x00, 0xf0, 0x01, 0x78, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x01, 0x70, 0x00, 0xf0, 0x01, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x03, 0x70, 0x00, 0xf0, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x03, 0x70, 0x00, 0xf0, 0x01, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x0f, 0x38, 0x00, 0xf0, 0x81, 0x07, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0xc0, 0x1f, 0x1c, 0x00, 0xf0, 0xc1, 0x07, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x80, 0x7f, 0x06, 0x00, 0xf0, 0xe1, 0x03, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x80, 0x7f, 0x06, 0x00, 0xf0, 0xf1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0xf0, 0xf9, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x00, 0xf0, 0xfd, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0xf0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xe3, 0x3f, 0x00, 0xf0, 0xdf, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x81, 0x7f, 0x00, 0xf0, 0xcf, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x81, 0x7f, 0x00, 0xf0, 0x8f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xe0, 0x00, 0xff, 0x00, 0xf0, 0x07, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x70, 0x00, 0xfc, 0x01, 0xf0, 0x03, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x30, 0x00, 0xf8, 0x01, 0xf0, 0x01, 0x3e, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x30, 0x00, 0xf8, 0x01, 0xf0, 0x01, 0x7e, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x38, 0x00, 0xe0, 0x01, 0xf0, 0x01, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x18, 0x00, 0xc0, 0x03, 0xf0, 0x01, 0xfc, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0xc0, 0x03, 0xf0, 0x01, 0xf8, 0x01, 0x00, 0xc0, 0x00, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0xc0, 0x03, 0xf0, 0x01, 0xf8, 0x01, 0x00, 0xe0, 0x01, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0xf0, 0x03, 0x00, 0xf0, 0x03, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0xf0, 0x03, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0xe0, 0x07, 0x00, 0xf0, 0x03, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0xf0, 0x03, 0xc0, 0x07, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0x3c, 0x00, 0x80, 0x01, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x20, 0x00, 0xe0, 0x07, 0x00, 0x38, 0x00, 0xc0, 0x01, 0xf0, 0x01, 0xc0, 0x3f, 0x00, 0x20, 0x00, 0xe0, 0x07, 0x00, 0x38, 0x00, 0xc0, 0x01, 0xf8, 0x03, 0xf8, 0xff, 0x01, 0x20, 0x00, 0xe0, 0x03, 0x00, 0x78, 0x00, 0xc0, 0x00, 0xff, 0x1f, 0xf8, 0xff, 0x01, 0xc0, 0x00, 0xf0, 0x01, 0x00, 0x70, 0x00, 0x60, 0x00, 0xff, 0x1f, 0xf8, 0xff, 0x01, 0x80, 0x01, 0xf0, 0x00, 0x00, 0xe0, 0x01, 0x30, 0x00, 0xff, 0x1f, 0xf8, 0xff, 0x01, 0x80, 0x01, 0xf0, 0x00, 0x00, 0xe0, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x7c, 0x00, 0x00, 0xc0, 0x07, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0xff, 0x03, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0xfe, 0x01, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x7c, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x7c, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x07, 0x0e, 0x00, 0xfc, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x38, 0x00, 0x00, 0xc0, 0x03, 0x1c, 0x00, 0xf8, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0xc0, 0x03, 0x1c, 0x00, 0xf8, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xe0, 0x01, 0x38, 0x00, 0xf0, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xf0, 0x00, 0x70, 0x00, 0xf0, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xf0, 0x00, 0x70, 0x00, 0xf0, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xf0, 0x00, 0x70, 0x00, 0xf0, 0x01, 0x00, 0x70, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xe0, 0x07, 0x00, 0x38, 0x00, 0x00, 0xc0, 0x3d, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xc0, 0x07, 0x00, 0x18, 0x00, 0x00, 0xc0, 0x3d, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xc0, 0x07, 0x00, 0x18, 0x00, 0x00, 0xe0, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xc0, 0x07, 0x00, 0x1c, 0x00, 0x00, 0xe0, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0x80, 0x0f, 0x00, 0x0c, 0x00, 0x00, 0x70, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0x80, 0x0f, 0x00, 0x0c, 0x00, 0x00, 0x70, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0x80, 0x0f, 0x00, 0x0c, 0x00, 0x00, 0x38, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0x80, 0x1f, 0x00, 0x0e, 0x00, 0x00, 0x38, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x00, 0x18, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x00, 0x1c, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xe0, 0x03, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x00, 0x0e, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x03, 0x00, 0x3f, 0x00, 0x07, 0x00, 0x00, 0x0e, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x03, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x00, 0x06, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x03, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x00, 0x07, 0x3c, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0x03, 0x00, 0x3e, 0x80, 0x03, 0x00, 0x80, 0x03, 0x3c, 0x00, 0x00, 0xe0, 0x00, 0xe8, 0x03, 0x00, 0x7c, 0x80, 0x01, 0x00, 0x80, 0x03, 0x3c, 0x00, 0x00, 0xe0, 0x00, 0xe8, 0x03, 0x00, 0x7c, 0x80, 0x01, 0x00, 0x80, 0x01, 0x3c, 0x00, 0x00, 0xc0, 0x01, 0xe8, 0x03, 0x00, 0xfc, 0x80, 0x01, 0x00, 0xc0, 0x01, 0x3c, 0x00, 0x00, 0x80, 0x03, 0xe4, 0x03, 0x00, 0xfc, 0xc0, 0x01, 0x00, 0xc0, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x07, 0xe3, 0x03, 0x00, 0xf8, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x07, 0xe3, 0x03, 0x00, 0xf8, 0xc0, 0x00, 0x00, 0x60, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xfc, 0xe0, 0x03, 0x00, 0xf8, 0xe1, 0x00, 0x00, 0x70, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf8, 0xe1, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x61, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x61, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xe0, 0x00, 0x78, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xe0, 0x00, 0x78, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x01, 0x38, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x01, 0x1c, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x00, 0x0e, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x60, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xe0, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x20, 0x00, 0x78, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x30, 0x00, 0x78, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x3e, 0xc0, 0x01, 0x00, 0x38, 0x00, 0xce, 0x01, 0xf8, 0x03, 0xfc, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x3c, 0x80, 0x03, 0x07, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x3f, 0xc0, 0x01, 0x0e, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0x00, 0xfe, 0xff, 0x00, 0xc0, 0x3f, 0xc0, 0x01, 0x0e, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0xf0, 0x3f, 0xe0, 0x01, 0x1e, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x30, 0x3c, 0xe0, 0x00, 0x1c, 0xf0, 0x01, 0x80, 0x1f, 0x00, 0x00, 0xe2, 0x03, 0x00, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0xe2, 0x03, 0x00, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x70, 0x00, 0x38, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0xc2, 0x0f, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0xc2, 0x0f, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x32, 0x30, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x0a, 0xe0, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0x00, 0x06, 0xe0, 0x01, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x7c, 0x00, 0x00, 0x00, 0x06, 0xe0, 0x01, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x02, 0xc0, 0x01, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x78, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0x80, 0x03, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0x80, 0x03, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0xc0, 0x07, 0x80, 0x07, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x40, 0x00, 0x80, 0x07, 0x00, 0x3c, 0xf8, 0x00, 0x7c, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x80, 0x00, 0xc0, 0x07, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x80, 0x00, 0xc0, 0x07, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x80, 0x00, 0xc0, 0x03, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x80, 0x01, 0xc0, 0x03, 0x00, 0x3c, 0xe0, 0x00, 0x1c, 0xf0, 0x01, 0xc0, 0x1f, 0x00, 0x00, 0x03, 0xe0, 0x01, 0x00, 0x3c, 0xe0, 0x01, 0x1e, 0xf0, 0x01, 0x80, 0x1f, 0x00, 0x00, 0x03, 0xe0, 0x01, 0x00, 0x3c, 0xe0, 0x01, 0x1e, 0xf8, 0x03, 0x00, 0x1f, 0x08, 0x00, 0x06, 0xf0, 0x00, 0x00, 0x7e, 0xc0, 0x01, 0x0e, 0xf8, 0x03, 0x00, 0x1f, 0x08, 0x00, 0x1c, 0x7c, 0x00, 0xc0, 0xff, 0x83, 0x03, 0x07, 0xff, 0x3f, 0x00, 0x3e, 0x08, 0x00, 0xf8, 0x1f, 0x00, 0xe0, 0xff, 0x07, 0xce, 0x01, 0xff, 0x3f, 0x00, 0x3c, 0x04, 0x00, 0xf8, 0x1f, 0x00, 0xe0, 0xff, 0x07, 0xce, 0x01, 0xff, 0x3f, 0x00, 0xf0, 0x03, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0xff, 0x3f, 0x00, 0xf0, 0x03}; xpat2-1.07/makecards/French/largerank.better.bm100644 146 144 60020 5551214261 20107 0ustar mbimathopt#define largerank_width 108 #define largerank_height 280 static char largerank_bits[] = { 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, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1e, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1e, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x80, 0x03, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0xc0, 0x01, 0x7c, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0xc0, 0x01, 0x7c, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0xe0, 0x01, 0x7c, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0xe0, 0x00, 0x38, 0x00, 0xfe, 0xff, 0xff, 0x01, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x01, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x01, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0xf0, 0x61, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0xf0, 0x61, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0xf8, 0xe1, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0xf8, 0xe1, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0xf8, 0xc0, 0x00, 0x00, 0x3e, 0xf8, 0x01, 0x00, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0xf8, 0xc0, 0x00, 0x00, 0x3e, 0x06, 0x07, 0x00, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0xfc, 0xc0, 0x01, 0x00, 0x3e, 0x01, 0x0e, 0x00, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0xfc, 0x80, 0x01, 0x00, 0x3e, 0x01, 0x0e, 0x00, 0xf0, 0x01, 0x00, 0x0f, 0x00, 0x00, 0x7c, 0x80, 0x01, 0x00, 0xbe, 0x00, 0x1c, 0x00, 0xf0, 0x01, 0x80, 0x07, 0x00, 0x00, 0x7c, 0x80, 0x01, 0x00, 0xbe, 0x00, 0x38, 0x00, 0xf0, 0x01, 0x80, 0x07, 0x00, 0x00, 0x3e, 0x80, 0x03, 0x00, 0x7e, 0x00, 0x78, 0x00, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x7e, 0x00, 0x78, 0x00, 0xf0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x7e, 0x00, 0xf0, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x3f, 0x00, 0x07, 0x00, 0x7e, 0x00, 0xf0, 0x00, 0xf0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x3e, 0x00, 0xf0, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x3e, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0x80, 0x1f, 0x00, 0x0e, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0x80, 0x0f, 0x00, 0x0c, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x80, 0xff, 0xff, 0x0f, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x80, 0xff, 0xff, 0x0f, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0x0f, 0x00, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0x1e, 0x00, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0x1e, 0x00, 0xc0, 0x07, 0x00, 0x18, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0x3e, 0x00, 0xe0, 0x07, 0x00, 0x38, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0x3e, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0x3e, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0x00, 0x3e, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0x00, 0x70, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0xf0, 0x01, 0x00, 0x60, 0x00, 0x70, 0x00, 0x78, 0x00, 0xf0, 0x01, 0x80, 0x1f, 0x00, 0xf8, 0x01, 0x00, 0xe0, 0x00, 0xf0, 0x00, 0x78, 0x00, 0xf0, 0x01, 0xc0, 0x1f, 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x00, 0xf0, 0x00, 0x78, 0x00, 0xf0, 0x01, 0xe0, 0x0f, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x03, 0xe0, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0xf0, 0x0f, 0x00, 0xfc, 0x03, 0x00, 0xfc, 0x07, 0xc0, 0x01, 0x1c, 0x00, 0xf0, 0x01, 0xf8, 0x03, 0x00, 0xfe, 0x07, 0x00, 0xfc, 0x07, 0x80, 0x07, 0x0f, 0x00, 0xfe, 0xff, 0xff, 0x01, 0x00, 0xfe, 0x07, 0x00, 0xfc, 0x07, 0x80, 0x07, 0x0f, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x07, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x7e, 0x00, 0x00, 0x70, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x30, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xf0, 0x01, 0x00, 0x10, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xf0, 0x01, 0x00, 0x10, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xe0, 0x03, 0x00, 0x10, 0x00, 0x60, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x40, 0x00, 0xe0, 0x03, 0x00, 0x08, 0x00, 0x20, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x40, 0x00, 0xe0, 0x03, 0x00, 0x08, 0x00, 0x30, 0x00, 0xfe, 0xff, 0xff, 0x00, 0x00, 0xe0, 0x03, 0xe0, 0x07, 0x00, 0x08, 0x00, 0x30, 0x00, 0xf0, 0x01, 0xfc, 0x01, 0x00, 0xe0, 0x07, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x18, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0x00, 0xe0, 0x07, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x18, 0x00, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0xe0, 0x07, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0xe0, 0x07, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0xe0, 0x07, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0xe0, 0x07, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0xc0, 0x03, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf0, 0x01, 0x00, 0x3e, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0xf0, 0x01, 0x00, 0x3e, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0xf0, 0x01, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x80, 0x03, 0x00, 0xf0, 0x01, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0xf0, 0x01, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xf0, 0x01, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x78, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x7c, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x7c, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x7c, 0x00, 0x00, 0x78, 0x00, 0x04, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x7c, 0x00, 0x00, 0x38, 0x00, 0x04, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x3e, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x3e, 0x00, 0x00, 0x1c, 0x00, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x3e, 0x00, 0x00, 0x0e, 0x00, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x0f, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x0f, 0x00, 0x80, 0x03, 0x00, 0x03, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0x80, 0x07, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0xc0, 0xff, 0xff, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0xfc, 0x01, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x70, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x07, 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, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x7c, 0x00, 0x00, 0x00, 0x07, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x80, 0x01, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0xf0, 0x01, 0x00, 0xe0, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0xf0, 0x03, 0x00, 0x60, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0xe0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0xc0, 0x07, 0xe0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0xc0, 0x07, 0xe0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0x80, 0x07, 0xe0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xf8, 0x03, 0xe0, 0x0f, 0x00, 0x00, 0x03, 0xf0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x03, 0xf0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xf0, 0x01, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x00, 0xe0, 0x00, 0xf0, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x01, 0x70, 0x00, 0xf0, 0x01, 0x78, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x03, 0x70, 0x00, 0xf0, 0x01, 0x38, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x03, 0x70, 0x00, 0xf0, 0x01, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x0f, 0x38, 0x00, 0xf0, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0xc0, 0x1f, 0x1c, 0x00, 0xf0, 0x01, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x80, 0x7f, 0x06, 0x00, 0xf0, 0x81, 0x07, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x80, 0x7f, 0x06, 0x00, 0xf0, 0x81, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0xf0, 0xc1, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x00, 0xf0, 0xe1, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0xf0, 0x71, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0xf0, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0xf0, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xe3, 0x3f, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x81, 0x7f, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x81, 0x7f, 0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xe0, 0x00, 0xff, 0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x70, 0x00, 0xfc, 0x01, 0xf0, 0xf7, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x30, 0x00, 0xf8, 0x01, 0xf0, 0xe3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x30, 0x00, 0xf8, 0x01, 0xf0, 0xc1, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x38, 0x00, 0xe0, 0x01, 0xf0, 0xc1, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x18, 0x00, 0xc0, 0x03, 0xf0, 0x81, 0x07, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0xc0, 0x03, 0xf0, 0x81, 0x07, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0xc0, 0x03, 0xf0, 0x01, 0x0f, 0x00, 0x00, 0xe0, 0x01, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0x1f, 0x00, 0x00, 0xf0, 0x03, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0x1e, 0x00, 0x00, 0xf0, 0x03, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0x3c, 0x00, 0x00, 0xf0, 0x03, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0x3c, 0x00, 0x00, 0xf0, 0x03, 0xc0, 0x07, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0x78, 0x00, 0x00, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0x3c, 0x00, 0x80, 0x01, 0xf0, 0x01, 0x78, 0x00, 0x00, 0x20, 0x00, 0xe0, 0x07, 0x00, 0x38, 0x00, 0xc0, 0x01, 0xf0, 0x01, 0xf0, 0x00, 0x00, 0x20, 0x00, 0xe0, 0x07, 0x00, 0x38, 0x00, 0xc0, 0x01, 0xf0, 0x01, 0xf0, 0x00, 0x00, 0x20, 0x00, 0xe0, 0x03, 0x00, 0x78, 0x00, 0xc0, 0x00, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0xc0, 0x00, 0xf0, 0x01, 0x00, 0x70, 0x00, 0x60, 0x00, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0x80, 0x01, 0xf0, 0x00, 0x00, 0xe0, 0x01, 0x30, 0x00, 0xf0, 0x01, 0xe0, 0x07, 0x00, 0x80, 0x01, 0xf0, 0x00, 0x00, 0xe0, 0x01, 0x30, 0x00, 0xf8, 0x03, 0xf0, 0x07, 0x00, 0x00, 0x0f, 0x7c, 0x00, 0x00, 0xc0, 0x07, 0x1e, 0x00, 0xff, 0x1f, 0xfe, 0x3f, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0xff, 0x1f, 0xfe, 0x3f, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0xff, 0x1f, 0xfe, 0x3f, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0xfe, 0x01, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x7c, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x7c, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x07, 0x0e, 0x00, 0xfc, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x38, 0x00, 0x00, 0xc0, 0x03, 0x1c, 0x00, 0xf8, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0xc0, 0x03, 0x1c, 0x00, 0xf8, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xe0, 0x01, 0x38, 0x00, 0xf0, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xf0, 0x00, 0x70, 0x00, 0xf0, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xf0, 0x00, 0x70, 0x00, 0xf0, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xf0, 0x00, 0x70, 0x00, 0xf0, 0x01, 0x00, 0x70, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xe0, 0x07, 0x00, 0x38, 0x00, 0x00, 0xc0, 0x3d, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xc0, 0x07, 0x00, 0x18, 0x00, 0x00, 0xc0, 0x3d, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xc0, 0x07, 0x00, 0x18, 0x00, 0x00, 0xe0, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xc0, 0x07, 0x00, 0x1c, 0x00, 0x00, 0xe0, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0x80, 0x0f, 0x00, 0x0c, 0x00, 0x00, 0x70, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0x80, 0x0f, 0x00, 0x0c, 0x00, 0x00, 0x70, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0x80, 0x0f, 0x00, 0x0c, 0x00, 0x00, 0x38, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0x80, 0x1f, 0x00, 0x0e, 0x00, 0x00, 0x38, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x00, 0x18, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x00, 0x1c, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xe0, 0x03, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x00, 0x0e, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x03, 0x00, 0x3f, 0x00, 0x07, 0x00, 0x00, 0x0e, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x03, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x00, 0x06, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x03, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x00, 0x07, 0x3c, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0x03, 0x00, 0x3e, 0x80, 0x03, 0x00, 0x80, 0x03, 0x3c, 0x00, 0x00, 0xe0, 0x00, 0xe8, 0x03, 0x00, 0x7c, 0x80, 0x01, 0x00, 0x80, 0x03, 0x3c, 0x00, 0x00, 0xe0, 0x00, 0xe8, 0x03, 0x00, 0x7c, 0x80, 0x01, 0x00, 0x80, 0x01, 0x3c, 0x00, 0x00, 0xc0, 0x01, 0xe8, 0x03, 0x00, 0xfc, 0x80, 0x01, 0x00, 0xc0, 0x01, 0x3c, 0x00, 0x00, 0x80, 0x03, 0xe4, 0x03, 0x00, 0xfc, 0xc0, 0x01, 0x00, 0xc0, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x07, 0xe3, 0x03, 0x00, 0xf8, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x07, 0xe3, 0x03, 0x00, 0xf8, 0xc0, 0x00, 0x00, 0x60, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xfc, 0xe0, 0x03, 0x00, 0xf8, 0xe1, 0x00, 0x00, 0x70, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf8, 0xe1, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x61, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x61, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xe0, 0x00, 0x78, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xe0, 0x00, 0x78, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x01, 0x38, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x01, 0x1c, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x00, 0x0e, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x60, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xe0, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x20, 0x00, 0x78, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x30, 0x00, 0x78, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x3e, 0xc0, 0x01, 0x00, 0x38, 0x00, 0xce, 0x01, 0xf8, 0x03, 0xfc, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x3c, 0x80, 0x03, 0x07, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x3f, 0xc0, 0x01, 0x0e, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0x00, 0xfe, 0xff, 0x00, 0xc0, 0x3f, 0xc0, 0x01, 0x0e, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0xf0, 0x3f, 0xe0, 0x01, 0x1e, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x30, 0x3c, 0xe0, 0x00, 0x1c, 0xf0, 0x01, 0x80, 0x1f, 0x00, 0x00, 0xe2, 0x03, 0x00, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0xe2, 0x03, 0x00, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x70, 0x00, 0x38, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0xc2, 0x0f, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0xc2, 0x0f, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x32, 0x30, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x0a, 0xe0, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0x00, 0x06, 0xe0, 0x01, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x7c, 0x00, 0x00, 0x00, 0x06, 0xe0, 0x01, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x02, 0xc0, 0x01, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x78, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0x80, 0x03, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0x80, 0x03, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0xc0, 0x07, 0x80, 0x07, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x40, 0x00, 0x80, 0x07, 0x00, 0x3c, 0xf8, 0x00, 0x7c, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x80, 0x00, 0xc0, 0x07, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x80, 0x00, 0xc0, 0x07, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x80, 0x00, 0xc0, 0x03, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x80, 0x01, 0xc0, 0x03, 0x00, 0x3c, 0xe0, 0x00, 0x1c, 0xf0, 0x01, 0xc0, 0x1f, 0x00, 0x00, 0x03, 0xe0, 0x01, 0x00, 0x3c, 0xe0, 0x01, 0x1e, 0xf0, 0x01, 0x80, 0x1f, 0x00, 0x00, 0x03, 0xe0, 0x01, 0x00, 0x3c, 0xe0, 0x01, 0x1e, 0xf8, 0x03, 0x00, 0x1f, 0x08, 0x00, 0x06, 0xf0, 0x00, 0x00, 0x7e, 0xc0, 0x01, 0x0e, 0xf8, 0x03, 0x00, 0x1f, 0x08, 0x00, 0x1c, 0x7c, 0x00, 0xc0, 0xff, 0x83, 0x03, 0x07, 0xff, 0x3f, 0x00, 0x3e, 0x08, 0x00, 0xf8, 0x1f, 0x00, 0xe0, 0xff, 0x07, 0xce, 0x01, 0xff, 0x3f, 0x00, 0x3c, 0x04, 0x00, 0xf8, 0x1f, 0x00, 0xe0, 0xff, 0x07, 0xce, 0x01, 0xff, 0x3f, 0x00, 0xf0, 0x03, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0xff, 0x3f, 0x00, 0xf0, 0x03}; xpat2-1.07/makecards/French/largediamond.bm.inlet100644 146 144 13152 5550637634 20435 0ustar mbimathopt#define largediamond_width 82 #define largediamond_height 82 static char largediamond_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x83, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x03, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x81, 0x07, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc0, 0x0f, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xe0, 0x1f, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0xf0, 0x3f, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0xf8, 0x7f, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0xfc, 0xff, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0xfc, 0xff, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0xfe, 0xff, 0x81, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0xff, 0xff, 0x03, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0x81, 0xff, 0xff, 0x07, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x80, 0xff, 0xc0, 0xff, 0xff, 0x0f, 0xfc, 0x07, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0xe0, 0xff, 0xff, 0x1f, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0xf0, 0xff, 0xff, 0x3f, 0xe0, 0x3f, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0xf8, 0xff, 0xff, 0x7f, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x81, 0xff, 0x01, 0x00, 0x00, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0x03, 0x00, 0x80, 0xff, 0x81, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0x07, 0x00, 0xe0, 0x7f, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf8, 0x1f, 0x00, 0xf8, 0x3f, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf0, 0x7f, 0x00, 0xfc, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xc0, 0xff, 0x00, 0xff, 0x03, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x03, 0xff, 0x03, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x03, 0xfc, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xc0, 0xff, 0x00, 0xf8, 0x3f, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf0, 0x7f, 0x00, 0xe0, 0x7f, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf8, 0x1f, 0x00, 0x80, 0xff, 0x81, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0x07, 0x00, 0x00, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0x03, 0x00, 0x00, 0xfe, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x81, 0xff, 0x01, 0x00, 0x00, 0xf8, 0x0f, 0xf8, 0xff, 0xff, 0x7f, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0xf0, 0xff, 0xff, 0x3f, 0xe0, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0xe0, 0xff, 0xff, 0x1f, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x80, 0xff, 0xc0, 0xff, 0xff, 0x0f, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00, 0xff, 0x81, 0xff, 0xff, 0x07, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0xff, 0xff, 0x03, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0xfe, 0xff, 0x81, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0xfc, 0xff, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0xfc, 0xff, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0xf8, 0x7f, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0xf0, 0x3f, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xe0, 0x1f, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc0, 0x0f, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x81, 0x07, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x03, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x83, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}; xpat2-1.07/makecards/French/largediamond.bm.full100644 146 144 13152 5461331010 20240 0ustar mbimathopt#define largediamond_width 82 #define largediamond_height 82 static char largediamond_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}; xpat2-1.07/makecards/Louis-XV/ 40755 146 144 0 5551553042 14446 5ustar mbimathoptxpat2-1.07/makecards/Louis-XV/Cards.conf100644 146 144 45 5550610620 16400 0ustar mbimathopt87 119 1 1 13 0 0 17 14 8 11 7 25 2 1xpat2-1.07/makecards/Louis-XV/config.h100644 146 144 532 5550631737 16150 0ustar mbimathopt/* configuration for the american cards */ #define NUM_RED_COLORS 8 /* number not counting background */ #define NUM_BLACK_COLORS 8 /* number not counting background */ #define RED_COLOR { 65535L * 4L / 5L, 0L, 0L } /* red is 80% */ #define BLACK_COLOR { 0L, 0L, 0L } #define WHITE_COLOR { 65535L, 65535L, 0xb400L } /* background is yellow */ xpat2-1.07/makecards/Louis-XV/largeclub.bm100644 146 144 7512 5550561174 17034 0ustar mbimathopt#define largeclub_width 70 #define largeclub_height 68 static char largeclub_bits[] = { 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x1e, 0x00, 0x80, 0xff, 0x00, 0xc0, 0xff, 0x00, 0xc0, 0x7f, 0x00, 0xe0, 0xff, 0x03, 0x80, 0x7f, 0x00, 0xf0, 0xff, 0x01, 0xf0, 0xff, 0x07, 0x00, 0x3f, 0x00, 0xf8, 0xff, 0x03, 0xf8, 0xff, 0x0f, 0x00, 0x1e, 0x00, 0xfc, 0xff, 0x07, 0xfc, 0xff, 0x1f, 0x00, 0x1e, 0x00, 0xfe, 0xff, 0x0f, 0xfe, 0xff, 0x3f, 0x00, 0x1e, 0x00, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0x3f, 0x00, 0x1e, 0x00, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0x00, 0x0c, 0xc0, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0x01, 0x0c, 0xe0, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0x03, 0x0c, 0xf0, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0x3f, 0x0c, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0x3f, 0x0c, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0x03, 0x0c, 0xf0, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0x01, 0x0c, 0xe0, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x00, 0x0c, 0xc0, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0x7f, 0x00, 0x0c, 0x80, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0x3f, 0x00, 0x0c, 0x00, 0xff, 0xff, 0x1f, 0xfc, 0xff, 0x1f, 0x00, 0x0c, 0x00, 0xfe, 0xff, 0x0f, 0xf8, 0xff, 0x0f, 0x00, 0x0c, 0x00, 0xfc, 0xff, 0x07, 0xf0, 0xff, 0x07, 0x00, 0x0c, 0x00, 0xf8, 0xff, 0x03, 0xe0, 0xff, 0x03, 0x00, 0x0c, 0x00, 0xf0, 0xff, 0x01, 0x80, 0xff, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x80, 0x01, 0x00, 0x00, 0x00}; xpat2-1.07/makecards/Louis-XV/largediamond.bm100644 146 144 7344 5550561125 17521 0ustar mbimathopt#define largediamond_width 66 #define largediamond_height 66 static char largediamond_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00}; xpat2-1.07/makecards/Louis-XV/largeheart.bm100644 146 144 5661 5550561155 17214 0ustar mbimathopt#define largeheart_width 62 #define largeheart_height 58 static char largeheart_bits[] = { 0x00, 0xfc, 0x07, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x80, 0xff, 0x7f, 0x00, 0xc0, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, 0x01, 0xe0, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0x03, 0xf8, 0xff, 0xff, 0x07, 0xf8, 0xff, 0xff, 0x07, 0xfc, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0x0f, 0xfe, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00}; xpat2-1.07/makecards/Louis-XV/largerank.bm100644 146 144 60020 5550624407 17052 0ustar mbimathopt#define largerank_width 108 #define largerank_height 280 static char largerank_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0xf8, 0x0f, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0xf8, 0x0f, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0xfe, 0x01, 0x00, 0xf8, 0x0f, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x7c, 0x00, 0x00, 0xe0, 0x07, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x30, 0x00, 0x7c, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x30, 0x00, 0xfc, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0x00, 0xf8, 0x00, 0x00, 0xc0, 0x00, 0xe0, 0xff, 0x00, 0x00, 0x00, 0x80, 0x03, 0x78, 0x00, 0xf8, 0x00, 0x00, 0xc0, 0x00, 0xf0, 0xf3, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x7c, 0x00, 0xf0, 0x01, 0x00, 0x60, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x7c, 0x00, 0xf0, 0x01, 0x00, 0x60, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x7c, 0x00, 0xf0, 0x01, 0x00, 0x60, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x38, 0x00, 0xf0, 0x01, 0x00, 0x70, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x38, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x18, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x18, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x1c, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x0c, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x0c, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x0c, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x3e, 0xf8, 0x01, 0x00, 0x80, 0x1f, 0x00, 0x0e, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x3e, 0x06, 0x07, 0x00, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x3e, 0x01, 0x0e, 0x00, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x3e, 0x01, 0x0e, 0x00, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x1c, 0x00, 0x00, 0x3f, 0x00, 0x07, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x38, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x78, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x78, 0x00, 0x00, 0x3e, 0x80, 0x03, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x7e, 0x00, 0xf0, 0x00, 0x00, 0x7c, 0x80, 0x01, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x7e, 0x00, 0xf0, 0x00, 0x00, 0x7c, 0x80, 0x01, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x80, 0x01, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0xc0, 0x01, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0xc0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0xc0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0xe1, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0xe1, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x61, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x61, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x70, 0x00, 0x78, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x78, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x78, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x3c, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x1c, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xe0, 0xff, 0x7f, 0x00, 0x00, 0x80, 0x07, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xe0, 0xff, 0x7f, 0x00, 0x00, 0x80, 0x07, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xe0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff, 0x07, 0x00, 0x00, 0x06, 0x7e, 0x00, 0x00, 0x70, 0x00, 0xc0, 0x03, 0xf0, 0x01, 0xe0, 0x0f, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x30, 0x00, 0x80, 0x01, 0xf0, 0x01, 0x80, 0x1f, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x80, 0x00, 0xf0, 0x01, 0x00, 0x10, 0x00, 0xc0, 0x00, 0xf0, 0x01, 0x00, 0x3e, 0x00, 0xc0, 0x00, 0xf0, 0x01, 0x00, 0x10, 0x00, 0xc0, 0x00, 0xf0, 0x01, 0x00, 0x7c, 0x00, 0x40, 0x00, 0xe0, 0x03, 0x00, 0x10, 0x00, 0x60, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x00, 0x40, 0x00, 0xe0, 0x03, 0x00, 0x08, 0x00, 0x20, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x00, 0x40, 0x00, 0xe0, 0x03, 0x00, 0x08, 0x00, 0x30, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x01, 0xe0, 0x03, 0xe0, 0x07, 0x00, 0x08, 0x00, 0x30, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x01, 0xe0, 0x07, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x18, 0x00, 0xf0, 0x01, 0x00, 0xe0, 0x03, 0xe0, 0x07, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x18, 0x00, 0xf0, 0x01, 0x00, 0xe0, 0x03, 0xe0, 0x07, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xf0, 0x01, 0x00, 0xe0, 0x03, 0xe0, 0x07, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xf0, 0x01, 0x00, 0xe0, 0x07, 0xe0, 0x07, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x07, 0xe0, 0x07, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x07, 0xc0, 0x03, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x07, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x80, 0x03, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x0f, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x07, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x07, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xe0, 0x07, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xe0, 0x07, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xe0, 0x03, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xe0, 0x03, 0x00, 0x78, 0x00, 0x04, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x01, 0x00, 0x38, 0x00, 0x04, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x01, 0x00, 0x18, 0x00, 0x04, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x01, 0x00, 0x1c, 0x00, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x00, 0x00, 0x0e, 0x00, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x78, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x78, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x3c, 0x00, 0x80, 0x03, 0x00, 0x03, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x01, 0xe0, 0x0f, 0x00, 0xc0, 0xff, 0xff, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x70, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0xf8, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x0e, 0x7c, 0x00, 0x00, 0x00, 0x07, 0x1e, 0x00, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x80, 0x01, 0x3c, 0x00, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0x80, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x00, 0x78, 0x00, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x80, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x00, 0x78, 0x00, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x80, 0x03, 0xf0, 0x01, 0x00, 0xe0, 0x00, 0x70, 0x00, 0xf0, 0x01, 0x80, 0x1f, 0x00, 0xc0, 0x07, 0xf0, 0x03, 0x00, 0x60, 0x00, 0xe0, 0x00, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0xc0, 0x07, 0xe0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0xc0, 0x07, 0xe0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0xc0, 0x07, 0xe0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x80, 0x07, 0xe0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x03, 0xf0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x03, 0xf0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x00, 0xe0, 0x00, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x01, 0x70, 0x00, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x03, 0x70, 0x00, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x03, 0x70, 0x00, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x0f, 0x38, 0x00, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0xc0, 0x1f, 0x1c, 0x00, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x80, 0x7f, 0x06, 0x00, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x80, 0x7f, 0x06, 0x00, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x00, 0xf0, 0x01, 0x7c, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0xf0, 0x01, 0x1c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xe3, 0x3f, 0x00, 0xf0, 0x01, 0x78, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x81, 0x7f, 0x00, 0xf0, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x81, 0x7f, 0x00, 0xf0, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xe0, 0x00, 0xff, 0x00, 0xf0, 0x01, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x70, 0x00, 0xfc, 0x01, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x30, 0x00, 0xf8, 0x01, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x30, 0x00, 0xf8, 0x01, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x38, 0x00, 0xe0, 0x01, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x18, 0x00, 0xc0, 0x03, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0xc0, 0x00, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0xc0, 0x03, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0xc0, 0x00, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0xc0, 0x03, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0xe0, 0x01, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0xf0, 0x03, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0xf0, 0x03, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0xf0, 0x03, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0xf0, 0x03, 0xc0, 0x07, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0x3c, 0x00, 0x80, 0x01, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x20, 0x00, 0xe0, 0x07, 0x00, 0x38, 0x00, 0xc0, 0x01, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x20, 0x00, 0xe0, 0x07, 0x00, 0x38, 0x00, 0xc0, 0x01, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x20, 0x00, 0xe0, 0x03, 0x00, 0x78, 0x00, 0xc0, 0x00, 0xf0, 0x01, 0xc0, 0x1f, 0x00, 0xc0, 0x00, 0xf0, 0x01, 0x00, 0x70, 0x00, 0x60, 0x00, 0xf0, 0x01, 0x80, 0x1f, 0x00, 0x80, 0x01, 0xf0, 0x00, 0x00, 0xe0, 0x01, 0x30, 0x00, 0xf8, 0x03, 0x00, 0x1f, 0x08, 0x80, 0x01, 0xf0, 0x00, 0x00, 0xe0, 0x01, 0x30, 0x00, 0xf8, 0x03, 0x00, 0x1f, 0x08, 0x00, 0x0f, 0x7c, 0x00, 0x00, 0xc0, 0x07, 0x1e, 0x00, 0xff, 0x3f, 0x00, 0x3e, 0x08, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0xff, 0x3f, 0x00, 0x3c, 0x04, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0xff, 0x3f, 0x00, 0xf0, 0x03, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0xff, 0x3f, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0xfe, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x07, 0x0e, 0x00, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0xc0, 0x03, 0x1c, 0x00, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0xc0, 0x03, 0x1c, 0x00, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xe0, 0x01, 0x38, 0x00, 0xf0, 0x01, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xf0, 0x00, 0x70, 0x00, 0xf0, 0x01, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xf0, 0x00, 0x70, 0x00, 0xf0, 0x01, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xf0, 0x00, 0x70, 0x00, 0xf0, 0x01, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0x00, 0xfc, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xf0, 0x01, 0x00, 0xfc, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xf0, 0x01, 0x00, 0xfc, 0x00, 0x00, 0xc0, 0x3d, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xf0, 0x01, 0x00, 0xfc, 0x00, 0x00, 0xc0, 0x3d, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xf0, 0x01, 0x00, 0xfc, 0x00, 0x00, 0xe0, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xf0, 0x01, 0x00, 0x7c, 0x00, 0x00, 0xe0, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xf0, 0x01, 0x00, 0x7c, 0x00, 0x00, 0x70, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0xf0, 0x01, 0x00, 0x7e, 0x00, 0x00, 0x70, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0xf0, 0x01, 0x00, 0x3e, 0x00, 0x00, 0x38, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x38, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x18, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0x1c, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xe0, 0x03, 0xf0, 0x01, 0xe0, 0x07, 0x00, 0x00, 0x0e, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x03, 0xf0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x0e, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x03, 0xf0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x06, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x03, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x07, 0x3c, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0x03, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x80, 0x03, 0x3c, 0x00, 0x00, 0xe0, 0x00, 0xe8, 0x03, 0xf0, 0x01, 0x00, 0x7c, 0x00, 0x80, 0x03, 0x3c, 0x00, 0x00, 0xe0, 0x00, 0xe8, 0x03, 0xf0, 0x01, 0x00, 0x7c, 0x00, 0x80, 0x01, 0x3c, 0x00, 0x00, 0xc0, 0x01, 0xe8, 0x03, 0xf0, 0x01, 0x00, 0xfc, 0x00, 0xc0, 0x01, 0x3c, 0x00, 0x00, 0x80, 0x03, 0xe4, 0x03, 0xf0, 0x01, 0x00, 0xf8, 0x00, 0xc0, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x07, 0xe3, 0x03, 0xf0, 0x01, 0x00, 0xf8, 0x01, 0xc0, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x07, 0xe3, 0x03, 0xf0, 0x01, 0x00, 0xf8, 0x01, 0x60, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xfc, 0xe0, 0x03, 0xf0, 0x01, 0x00, 0xf0, 0x01, 0x70, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0xf0, 0x01, 0x00, 0xf0, 0x03, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0xf0, 0x01, 0x00, 0xf0, 0x03, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0xf0, 0x01, 0x00, 0xf0, 0x03, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0xf0, 0x01, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xe0, 0x00, 0x78, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xe0, 0x00, 0x78, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x01, 0x38, 0x00, 0xf0, 0x01, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x01, 0x1c, 0x00, 0xf0, 0x01, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x00, 0x0e, 0x00, 0xf0, 0x01, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x00, 0x0e, 0x00, 0xf0, 0x01, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x60, 0x00, 0x07, 0x00, 0xf0, 0x01, 0xc0, 0x1f, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xe0, 0xc0, 0x03, 0x00, 0xfe, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xc0, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xc0, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x00, 0xff, 0x0f, 0x00, 0x06, 0x00, 0x02, 0x00, 0x20, 0x00, 0x78, 0x00, 0xff, 0x7f, 0x00, 0xff, 0x0f, 0x00, 0x06, 0x00, 0x02, 0x00, 0x30, 0x00, 0x78, 0x00, 0xff, 0x3f, 0x00, 0xff, 0x0f, 0x00, 0x3e, 0xc0, 0x01, 0x00, 0x38, 0x00, 0xce, 0x01, 0xf8, 0x03, 0x00, 0xfe, 0x07, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x3c, 0x80, 0x03, 0x07, 0xf0, 0x01, 0x00, 0x78, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x3f, 0xc0, 0x01, 0x0e, 0xf0, 0x01, 0x00, 0x38, 0x00, 0x00, 0xfe, 0xff, 0x00, 0xc0, 0x3f, 0xc0, 0x01, 0x0e, 0xf0, 0x01, 0x00, 0x1c, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0xf0, 0x3f, 0xe0, 0x01, 0x1e, 0xf0, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x30, 0x3c, 0xe0, 0x00, 0x1c, 0xf0, 0x01, 0x00, 0x0f, 0x00, 0x00, 0xe2, 0x03, 0x00, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0x80, 0x07, 0x00, 0x00, 0xe2, 0x03, 0x00, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0xc0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x70, 0x00, 0x38, 0xf0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x70, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x78, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x3c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x0f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x81, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0xc1, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0xe1, 0x03, 0x00, 0x00, 0x00, 0xc2, 0x0f, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0xe1, 0x01, 0x00, 0x00, 0x00, 0xc2, 0x0f, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0xf1, 0x01, 0x00, 0x00, 0x00, 0x32, 0x30, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0xf9, 0x03, 0x00, 0x00, 0x00, 0x0a, 0xe0, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0xfd, 0x07, 0x00, 0x00, 0x00, 0x06, 0xe0, 0x01, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x06, 0xe0, 0x01, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x02, 0xc0, 0x01, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x7f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x0f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x0f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x07, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x03, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xf8, 0x01, 0x00, 0x80, 0x03, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0x80, 0x03, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0xe0, 0x07, 0x00, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0xc0, 0x07, 0x80, 0x07, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x40, 0x00, 0x80, 0x07, 0x00, 0x3c, 0xf8, 0x00, 0x7c, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x80, 0x00, 0xc0, 0x07, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x80, 0x00, 0xc0, 0x07, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x80, 0x00, 0xc0, 0x03, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x80, 0x01, 0xc0, 0x03, 0x00, 0x3c, 0xe0, 0x00, 0x1c, 0xf0, 0x01, 0x00, 0x3e, 0x00, 0x00, 0x03, 0xe0, 0x01, 0x00, 0x3c, 0xe0, 0x01, 0x1e, 0xf0, 0x01, 0x00, 0x7e, 0x00, 0x00, 0x03, 0xe0, 0x01, 0x00, 0x3c, 0xe0, 0x01, 0x1e, 0xf0, 0x01, 0x00, 0x7e, 0x00, 0x00, 0x06, 0xf0, 0x00, 0x00, 0x7e, 0xc0, 0x01, 0x0e, 0xf8, 0x03, 0x00, 0xfe, 0x01, 0x00, 0x1c, 0x7c, 0x00, 0xc0, 0xff, 0x83, 0x03, 0x07, 0xff, 0x1f, 0xc0, 0xff, 0x0f, 0x00, 0xf8, 0x1f, 0x00, 0xe0, 0xff, 0x07, 0xce, 0x01, 0xff, 0x1f, 0xc0, 0xff, 0x0f, 0x00, 0xf8, 0x1f, 0x00, 0xe0, 0xff, 0x07, 0xce, 0x01, 0xff, 0x1f, 0xc0, 0xff, 0x0f, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0xff, 0x1f, 0xc0, 0xff, 0x0f}; xpat2-1.07/makecards/Louis-XV/largerank.cmr10.bm100644 146 144 60020 5550623166 17774 0ustar mbimathopt#define largerank_width 108 #define largerank_height 280 static char largerank_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0xfe, 0x01, 0x00, 0xf8, 0x0f, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x7c, 0x00, 0x00, 0xe0, 0x07, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x30, 0x00, 0x7c, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x30, 0x00, 0xfc, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x07, 0x30, 0x00, 0xf8, 0x00, 0x00, 0xc0, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x80, 0x03, 0x78, 0x00, 0xf8, 0x00, 0x00, 0xc0, 0x00, 0xe0, 0xe1, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x7c, 0x00, 0xf0, 0x01, 0x00, 0x60, 0x00, 0xe0, 0xe1, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x7c, 0x00, 0xf0, 0x01, 0x00, 0x60, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x7c, 0x00, 0xf0, 0x01, 0x00, 0x60, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x00, 0x38, 0x00, 0xf0, 0x01, 0x00, 0x70, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x38, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x18, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x18, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x1c, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x0c, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x0c, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x0c, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x3e, 0xf8, 0x01, 0x00, 0x80, 0x1f, 0x00, 0x0e, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x3e, 0x06, 0x07, 0x00, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x3e, 0x01, 0x0e, 0x00, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x3e, 0x01, 0x0e, 0x00, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xbe, 0x00, 0x1c, 0x00, 0x00, 0x3f, 0x00, 0x07, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xbe, 0x00, 0x38, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x7e, 0x00, 0x78, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x7e, 0x00, 0x78, 0x00, 0x00, 0x3e, 0x80, 0x03, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x7e, 0x00, 0xf0, 0x00, 0x00, 0x7c, 0x80, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x7e, 0x00, 0xf0, 0x00, 0x00, 0x7c, 0x80, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x3e, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x80, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x3e, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0xe1, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0x00, 0xf8, 0xe1, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x61, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x61, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x70, 0x00, 0x78, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xf0, 0x00, 0x78, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xf0, 0x00, 0x78, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x00, 0x3c, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0xc0, 0x01, 0x1c, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x80, 0x07, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x80, 0x07, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0xf0, 0x03, 0xf0, 0x07, 0x00, 0x00, 0x06, 0x7e, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0xe0, 0x03, 0x80, 0x0f, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x03, 0xe0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x03, 0xe0, 0x03, 0x00, 0x1f, 0x00, 0x80, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0xff, 0xff, 0x03, 0xe0, 0x03, 0x00, 0x3e, 0x00, 0xc0, 0x00, 0xf0, 0x01, 0x00, 0x30, 0x00, 0x00, 0x01, 0xe0, 0x03, 0x00, 0x7c, 0x00, 0x40, 0x00, 0xe0, 0x03, 0x00, 0x10, 0x00, 0x80, 0x00, 0xe0, 0x03, 0x00, 0xf8, 0x00, 0x40, 0x00, 0xe0, 0x03, 0x00, 0x10, 0x00, 0x80, 0x00, 0xe0, 0x03, 0x00, 0xf8, 0x00, 0x40, 0x00, 0xe0, 0x03, 0x00, 0x10, 0x00, 0x80, 0x00, 0xe0, 0x03, 0x00, 0xf0, 0x01, 0xe0, 0x03, 0xe0, 0x07, 0x00, 0x10, 0x00, 0x40, 0x00, 0xe0, 0x03, 0x00, 0xf0, 0x01, 0xe0, 0x07, 0xe0, 0x07, 0x00, 0x08, 0x00, 0x20, 0x00, 0xe0, 0x03, 0x00, 0xe0, 0x03, 0xe0, 0x07, 0xe0, 0x07, 0x00, 0x08, 0x00, 0x20, 0x00, 0xe0, 0x03, 0x00, 0xe0, 0x03, 0xe0, 0x07, 0xc0, 0x07, 0x00, 0x08, 0x00, 0x20, 0x00, 0xe0, 0x03, 0x00, 0xe0, 0x03, 0xe0, 0x07, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0xe0, 0x03, 0x00, 0xe0, 0x07, 0xe0, 0x07, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x07, 0xe0, 0x07, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x07, 0xc0, 0x03, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x07, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x0f, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x07, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x07, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xe0, 0x07, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xe0, 0x07, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xe0, 0x03, 0x00, 0x18, 0x00, 0x04, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xf0, 0x01, 0x00, 0x18, 0x00, 0x04, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xf0, 0x01, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xf0, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xf8, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x78, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x78, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x3c, 0x00, 0x80, 0x00, 0x00, 0x03, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x03, 0x80, 0x0f, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x03, 0x80, 0x0f, 0x00, 0xc0, 0xff, 0xff, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x03, 0xf0, 0x07, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0xf0, 0x03, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0xf0, 0x03, 0xfc, 0x00, 0x00, 0x00, 0x0e, 0x7c, 0x00, 0x00, 0x00, 0x07, 0x1e, 0x00, 0xe0, 0x03, 0xe0, 0x03, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x80, 0x01, 0x3c, 0x00, 0xe0, 0x03, 0xc0, 0x07, 0x00, 0x80, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x00, 0x78, 0x00, 0xe0, 0x03, 0x80, 0x0f, 0x00, 0x80, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x00, 0x78, 0x00, 0xe0, 0x03, 0x80, 0x0f, 0x00, 0x80, 0x03, 0xf0, 0x01, 0x00, 0xe0, 0x00, 0x70, 0x00, 0xe0, 0x03, 0x80, 0x1f, 0x00, 0xc0, 0x07, 0xf0, 0x03, 0x00, 0x60, 0x00, 0xe0, 0x00, 0xe0, 0x03, 0x00, 0x1f, 0x00, 0xc0, 0x07, 0xe0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xe0, 0x03, 0x00, 0x3f, 0x00, 0xc0, 0x07, 0xe0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xe0, 0x03, 0x00, 0x3f, 0x00, 0xc0, 0x07, 0xe0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xe0, 0x03, 0x00, 0x3f, 0x00, 0x80, 0x07, 0xe0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xe0, 0x03, 0x00, 0x3f, 0x00, 0x00, 0x03, 0xf0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xe0, 0x03, 0x00, 0x3f, 0x00, 0x00, 0x03, 0xf0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xe0, 0x03, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x00, 0xe0, 0x00, 0xe0, 0x03, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x01, 0x70, 0x00, 0xe0, 0x03, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x03, 0x70, 0x00, 0xe0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x03, 0x70, 0x00, 0xe0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x0f, 0x38, 0x00, 0xe0, 0x03, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0xc0, 0x1f, 0x1c, 0x00, 0xe0, 0x03, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x80, 0x7f, 0x06, 0x00, 0xe0, 0x03, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x80, 0x7f, 0x06, 0x00, 0xe0, 0x03, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0xe0, 0x03, 0xf0, 0x01, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x00, 0xe0, 0x03, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0xe0, 0x03, 0x1c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xe3, 0x3f, 0x00, 0xe0, 0x03, 0x78, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x81, 0x7f, 0x00, 0xe0, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x81, 0x7f, 0x00, 0xe0, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xe0, 0x00, 0xff, 0x00, 0xe0, 0x03, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x70, 0x00, 0xfc, 0x01, 0xe0, 0x03, 0xe0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x30, 0x00, 0xf8, 0x01, 0xe0, 0x03, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x30, 0x00, 0xf8, 0x01, 0xe0, 0x03, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x38, 0x00, 0xe0, 0x01, 0xe0, 0x03, 0xc0, 0x07, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x18, 0x00, 0xc0, 0x03, 0xe0, 0x03, 0xc0, 0x07, 0x00, 0xc0, 0x00, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0xc0, 0x03, 0xe0, 0x03, 0xc0, 0x07, 0x00, 0xc0, 0x00, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0xc0, 0x03, 0xe0, 0x03, 0xc0, 0x07, 0x00, 0xe0, 0x01, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xe0, 0x03, 0xc0, 0x07, 0x00, 0xf0, 0x03, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xe0, 0x03, 0xc0, 0x0f, 0x00, 0xf0, 0x03, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xe0, 0x03, 0xc0, 0x0f, 0x00, 0xf0, 0x03, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xe0, 0x03, 0xc0, 0x0f, 0x00, 0xf0, 0x03, 0xc0, 0x07, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xe0, 0x03, 0xc0, 0x0f, 0x00, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0x3c, 0x00, 0x80, 0x01, 0xe0, 0x03, 0xc0, 0x0f, 0x00, 0x20, 0x00, 0xe0, 0x07, 0x00, 0x38, 0x00, 0xc0, 0x01, 0xe0, 0x03, 0xc0, 0x0f, 0x00, 0x20, 0x00, 0xe0, 0x07, 0x00, 0x38, 0x00, 0xc0, 0x01, 0xe0, 0x03, 0xc0, 0x0f, 0x00, 0x20, 0x00, 0xe0, 0x03, 0x00, 0x78, 0x00, 0xc0, 0x00, 0xe0, 0x03, 0xc0, 0x1f, 0x00, 0xc0, 0x00, 0xf0, 0x01, 0x00, 0x70, 0x00, 0x60, 0x00, 0xe0, 0x03, 0x80, 0x1f, 0x00, 0x80, 0x01, 0xf0, 0x00, 0x00, 0xe0, 0x01, 0x30, 0x00, 0xf0, 0x07, 0x00, 0x1f, 0x08, 0x80, 0x01, 0xf0, 0x00, 0x00, 0xe0, 0x01, 0x30, 0x00, 0xf0, 0x07, 0x00, 0x1f, 0x08, 0x00, 0x0f, 0x7c, 0x00, 0x00, 0xc0, 0x07, 0x1e, 0x00, 0xff, 0x7f, 0x00, 0x3e, 0x08, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0xff, 0x7f, 0x00, 0x3c, 0x04, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0xf0, 0x03, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x07, 0x0e, 0x00, 0xe0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0xc0, 0x03, 0x1c, 0x00, 0xe0, 0x03, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0xc0, 0x03, 0x1c, 0x00, 0xe0, 0x03, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xe0, 0x01, 0x38, 0x00, 0xe0, 0x03, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xf0, 0x00, 0x70, 0x00, 0xe0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xf0, 0x00, 0x70, 0x00, 0xe0, 0x03, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xf0, 0x00, 0x70, 0x00, 0xe0, 0x03, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xe0, 0x03, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xe0, 0x03, 0x00, 0xfc, 0x00, 0x00, 0x80, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xe0, 0x03, 0x00, 0xfc, 0x00, 0x00, 0x80, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xe0, 0x03, 0x00, 0xfc, 0x00, 0x00, 0x40, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xe0, 0x03, 0x00, 0xfc, 0x00, 0x00, 0x40, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xe0, 0x03, 0x00, 0xfc, 0x00, 0x00, 0x20, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xe0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x20, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xe0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x30, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0xe0, 0x03, 0x00, 0x7e, 0x00, 0x00, 0x10, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0xe0, 0x03, 0x00, 0x3e, 0x00, 0x00, 0x08, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0xe0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0x08, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0xe0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0x08, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0xe0, 0x03, 0x80, 0x0f, 0x00, 0x00, 0x04, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xe0, 0x03, 0xe0, 0x03, 0xe0, 0x07, 0x00, 0x00, 0x02, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x03, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x02, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x03, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x02, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x03, 0xe0, 0x03, 0x80, 0x0f, 0x00, 0x00, 0x01, 0x3c, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0x03, 0xe0, 0x03, 0x00, 0x1f, 0x00, 0x80, 0x01, 0x3c, 0x00, 0x00, 0xe0, 0x00, 0xe8, 0x03, 0xe0, 0x03, 0x00, 0x7c, 0x00, 0x80, 0x01, 0x3c, 0x00, 0x00, 0xe0, 0x00, 0xe8, 0x03, 0xe0, 0x03, 0x00, 0x7c, 0x00, 0x80, 0x00, 0x3c, 0x00, 0x00, 0xc0, 0x01, 0xe8, 0x03, 0xe0, 0x03, 0x00, 0xfc, 0x00, 0x40, 0x00, 0x3c, 0x00, 0x00, 0x80, 0x03, 0xe4, 0x03, 0xe0, 0x03, 0x00, 0xf8, 0x00, 0x40, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x07, 0xe3, 0x03, 0xe0, 0x03, 0x00, 0xf8, 0x01, 0x40, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x07, 0xe3, 0x03, 0xe0, 0x03, 0x00, 0xf8, 0x01, 0x20, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xfc, 0xe0, 0x03, 0xe0, 0x03, 0x00, 0xf0, 0x01, 0x10, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0xe0, 0x03, 0x00, 0xf0, 0x03, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0xe0, 0x03, 0x00, 0xf0, 0x03, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0xe0, 0x03, 0x00, 0xf0, 0x03, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0xe0, 0x03, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0xe0, 0x03, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0xe0, 0x03, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0xe0, 0x03, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xe0, 0x03, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xe0, 0x00, 0x78, 0x00, 0xe0, 0x03, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xe0, 0x00, 0x78, 0x00, 0xe0, 0x03, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x01, 0x38, 0x00, 0xe0, 0x03, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x01, 0x1c, 0x00, 0xe0, 0x03, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x00, 0x0e, 0x00, 0xe0, 0x03, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x00, 0x0e, 0x00, 0xe0, 0x03, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x60, 0x00, 0x07, 0x00, 0xf0, 0x03, 0x80, 0x1f, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xe0, 0xc0, 0x03, 0x00, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xc0, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xc0, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x00, 0xff, 0x07, 0x00, 0x06, 0x00, 0x02, 0x00, 0x20, 0x00, 0x78, 0x00, 0xff, 0x7f, 0x00, 0xff, 0x07, 0x00, 0x06, 0x00, 0x02, 0x00, 0x30, 0x00, 0x78, 0x00, 0xff, 0x7f, 0x00, 0xff, 0x07, 0x00, 0x3e, 0xc0, 0x01, 0x00, 0x38, 0x00, 0xce, 0x01, 0xf0, 0x07, 0x00, 0xfc, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x3c, 0x80, 0x03, 0x07, 0xe0, 0x03, 0x00, 0x78, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x3f, 0xc0, 0x01, 0x0e, 0xe0, 0x03, 0x00, 0x38, 0x00, 0x00, 0xfe, 0xff, 0x00, 0xc0, 0x3f, 0xc0, 0x01, 0x0e, 0xe0, 0x03, 0x00, 0x1c, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0xf0, 0x3f, 0xe0, 0x01, 0x1e, 0xe0, 0x03, 0x00, 0x0e, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x30, 0x3c, 0xe0, 0x00, 0x1c, 0xe0, 0x03, 0x00, 0x0e, 0x00, 0x00, 0xe2, 0x03, 0x00, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xe0, 0x03, 0x00, 0x07, 0x00, 0x00, 0xe2, 0x03, 0x00, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xe0, 0x03, 0x80, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xe0, 0x03, 0xc0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x70, 0x00, 0x38, 0xe0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xe0, 0x03, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xe0, 0x03, 0x70, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xe0, 0x03, 0x38, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xe0, 0x03, 0x1c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xe0, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xe0, 0x03, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xe0, 0x03, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xe0, 0x83, 0x03, 0x00, 0x00, 0x00, 0xc2, 0x0f, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xe0, 0xc3, 0x01, 0x00, 0x00, 0x00, 0xc2, 0x0f, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xe0, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x32, 0x30, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xe0, 0xe3, 0x03, 0x00, 0x00, 0x00, 0x0a, 0xe0, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xe0, 0xf3, 0x07, 0x00, 0x00, 0x00, 0x06, 0xe0, 0x01, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xe0, 0xfb, 0x07, 0x00, 0x00, 0x00, 0x06, 0xe0, 0x01, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x02, 0xc0, 0x01, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xe0, 0x7f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xe0, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xe0, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xe0, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xe0, 0x0f, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xe0, 0x07, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xe0, 0x03, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xe0, 0x03, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xe0, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xe0, 0x03, 0xf8, 0x01, 0x00, 0x80, 0x03, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xe0, 0x03, 0xf0, 0x01, 0x00, 0x80, 0x03, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xe0, 0x03, 0xf0, 0x01, 0x00, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xe0, 0x03, 0xe0, 0x03, 0x00, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xe0, 0x03, 0xe0, 0x07, 0x00, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xe0, 0x03, 0xc0, 0x07, 0x00, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xe0, 0x03, 0xc0, 0x07, 0x00, 0xc0, 0x07, 0x80, 0x07, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xe0, 0x03, 0x80, 0x0f, 0x00, 0x40, 0x00, 0x80, 0x07, 0x00, 0x3c, 0xf8, 0x00, 0x7c, 0xe0, 0x03, 0x80, 0x0f, 0x00, 0x80, 0x00, 0xc0, 0x07, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xe0, 0x03, 0x00, 0x1f, 0x00, 0x80, 0x00, 0xc0, 0x07, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xe0, 0x03, 0x00, 0x1f, 0x00, 0x80, 0x00, 0xc0, 0x03, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xe0, 0x03, 0x00, 0x3f, 0x00, 0x80, 0x01, 0xc0, 0x03, 0x00, 0x3c, 0xe0, 0x00, 0x1c, 0xe0, 0x03, 0x00, 0x3e, 0x00, 0x00, 0x03, 0xe0, 0x01, 0x00, 0x3c, 0xe0, 0x01, 0x1e, 0xe0, 0x03, 0x00, 0x7e, 0x00, 0x00, 0x03, 0xe0, 0x01, 0x00, 0x3c, 0xe0, 0x01, 0x1e, 0xe0, 0x03, 0x00, 0x7e, 0x00, 0x00, 0x06, 0xf0, 0x00, 0x00, 0x7e, 0xc0, 0x01, 0x0e, 0xf0, 0x07, 0x00, 0xfe, 0x01, 0x00, 0x1c, 0x7c, 0x00, 0xc0, 0xff, 0x83, 0x03, 0x07, 0xff, 0x7f, 0xc0, 0xff, 0x0f, 0x00, 0xf8, 0x1f, 0x00, 0xe0, 0xff, 0x07, 0xce, 0x01, 0xff, 0x7f, 0xc0, 0xff, 0x0f, 0x00, 0xf8, 0x1f, 0x00, 0xe0, 0xff, 0x07, 0xce, 0x01, 0xff, 0x7f, 0xc0, 0xff, 0x0f, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; xpat2-1.07/makecards/Louis-XV/largerank.old.bm100644 146 144 14110 5550613001 17612 0ustar mbimathopt#define largerank_width 54 #define largerank_height 140 static char largerank_bits[] = { 0x00, 0x0c, 0xc0, 0xff, 0xf0, 0x8f, 0x3f, 0x00, 0x0c, 0xe0, 0xff, 0xe1, 0x07, 0x1f, 0x00, 0x0e, 0xf0, 0xff, 0xc3, 0x03, 0x0e, 0x00, 0x0f, 0xf8, 0xff, 0xc7, 0x03, 0x0e, 0x80, 0x0f, 0xfc, 0xc0, 0xcf, 0x03, 0x0e, 0xe0, 0x0f, 0x7c, 0x80, 0xcf, 0x03, 0x07, 0x00, 0x0f, 0x3c, 0x00, 0xc7, 0x03, 0x07, 0x00, 0x0f, 0x3c, 0x00, 0x82, 0x07, 0x07, 0x00, 0x0f, 0x3c, 0x00, 0x80, 0x07, 0x07, 0x00, 0x0f, 0x3c, 0x00, 0x80, 0x87, 0x03, 0x00, 0x0f, 0x3c, 0xff, 0x80, 0x87, 0x03, 0x00, 0x0f, 0xbc, 0xff, 0x01, 0x8f, 0x03, 0x00, 0x0f, 0xfc, 0xff, 0x03, 0x8f, 0x03, 0x00, 0x0f, 0xfc, 0xff, 0x07, 0xcf, 0x01, 0x00, 0x0f, 0xfc, 0xc0, 0x0f, 0xcf, 0x01, 0x00, 0x0f, 0x7c, 0x80, 0x0f, 0xdf, 0x01, 0x00, 0x0f, 0x3c, 0x00, 0x0f, 0xde, 0x01, 0x00, 0x0f, 0x3c, 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x0f, 0x3c, 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x0f, 0x3c, 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x0f, 0x3c, 0x00, 0x0f, 0xfc, 0x00, 0x00, 0x0f, 0x3c, 0x00, 0x0f, 0x7c, 0x00, 0x00, 0x0f, 0x7c, 0x80, 0x0f, 0x7c, 0x00, 0x00, 0x0f, 0xfc, 0xc0, 0x0f, 0x7c, 0x00, 0x00, 0x0f, 0xf8, 0xff, 0x07, 0x78, 0x00, 0x00, 0x0f, 0xf0, 0xff, 0x03, 0x38, 0x00, 0x80, 0x1f, 0xe0, 0xff, 0x01, 0x38, 0x00, 0xc0, 0x3f, 0xc0, 0xff, 0x00, 0x38, 0x00, 0xc0, 0x1f, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0xf0, 0x7f, 0xfc, 0xff, 0xef, 0xff, 0x01, 0xf8, 0xff, 0xfc, 0xff, 0xcf, 0xc3, 0x03, 0xfc, 0xff, 0xfd, 0xff, 0xcf, 0x03, 0x07, 0x3e, 0xf0, 0x3d, 0x00, 0xcf, 0x03, 0x0e, 0x1f, 0xe0, 0x3f, 0x00, 0xcf, 0x03, 0x0e, 0x0f, 0xc0, 0x03, 0x80, 0xcf, 0x03, 0x1c, 0x0f, 0xc0, 0x03, 0xc0, 0xc7, 0x03, 0x1c, 0x00, 0xc0, 0x03, 0xc0, 0xc3, 0x03, 0x3c, 0x00, 0xe0, 0x03, 0xc0, 0xc3, 0x03, 0x3c, 0x00, 0xf0, 0x01, 0xe0, 0xc1, 0x03, 0x3c, 0x00, 0xf8, 0x01, 0xf0, 0xc1, 0x03, 0x3c, 0x00, 0xfc, 0x00, 0xf0, 0xc0, 0x03, 0x3c, 0x00, 0x7e, 0x00, 0xf0, 0xc0, 0x03, 0x3c, 0x00, 0x3f, 0x00, 0x78, 0xc0, 0x03, 0x3c, 0x80, 0x1f, 0x00, 0x78, 0xc0, 0x03, 0x3c, 0xc0, 0x0f, 0x00, 0x3c, 0xc0, 0x03, 0x3c, 0xe0, 0x07, 0x00, 0x3c, 0xc0, 0x03, 0x3c, 0xf0, 0x03, 0x00, 0x3c, 0xc0, 0x03, 0x3c, 0xf8, 0x01, 0x00, 0x1e, 0xc0, 0x03, 0x3c, 0xfc, 0x00, 0x00, 0x1e, 0xc0, 0x03, 0x1c, 0x7e, 0x00, 0x00, 0x1e, 0xc0, 0x03, 0x1c, 0x3f, 0xc0, 0x03, 0x0e, 0xc0, 0x03, 0x0e, 0x3f, 0xc0, 0x03, 0x0f, 0xc0, 0x03, 0x0e, 0xff, 0xff, 0x03, 0x0f, 0xc0, 0x03, 0x07, 0xff, 0xff, 0x03, 0x0f, 0xc0, 0xc3, 0x03, 0xff, 0xff, 0x03, 0x0f, 0xe0, 0xff, 0x01, 0xff, 0xff, 0x03, 0x0f, 0xf0, 0x7f, 0x00, 0xff, 0xff, 0xc3, 0xff, 0xf0, 0xff, 0x01, 0xff, 0xff, 0xe3, 0xff, 0xe1, 0xff, 0x03, 0xff, 0xff, 0xf3, 0xff, 0xc3, 0x03, 0x07, 0xff, 0xff, 0xfb, 0xff, 0xc7, 0x03, 0x0e, 0x0f, 0xf0, 0xff, 0xc0, 0xcf, 0x03, 0x0c, 0x0f, 0xf8, 0x7d, 0x80, 0xcf, 0x03, 0x1c, 0x00, 0xfc, 0x3c, 0x00, 0xcf, 0x03, 0x1c, 0x00, 0x7e, 0x3c, 0x00, 0xcf, 0x03, 0x1c, 0x00, 0x3f, 0x7c, 0x80, 0xcf, 0x03, 0x1c, 0x80, 0x3f, 0xfc, 0xc0, 0xcf, 0x03, 0x0c, 0xc0, 0x3f, 0xf8, 0xff, 0xc7, 0x03, 0x0e, 0xe0, 0x3f, 0xf0, 0xff, 0xc3, 0x03, 0x07, 0xf0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0x03, 0xf0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0x01, 0xe0, 0xf0, 0xf3, 0xff, 0xc3, 0xe3, 0x00, 0x40, 0xe0, 0xfb, 0xff, 0xc7, 0xc3, 0x01, 0x00, 0xc0, 0xff, 0xc0, 0xcf, 0x83, 0x03, 0x00, 0xc0, 0x7f, 0x80, 0xcf, 0x83, 0x03, 0x00, 0xc0, 0x3f, 0x00, 0xcf, 0x03, 0x07, 0x00, 0xc0, 0x3f, 0x00, 0xcf, 0x03, 0x07, 0x0c, 0xc0, 0x3f, 0x00, 0xcf, 0x03, 0x07, 0x1e, 0xc0, 0x3f, 0x00, 0xcf, 0x03, 0x07, 0x3f, 0xe0, 0x7f, 0x80, 0xcf, 0x03, 0x07, 0x7f, 0xf0, 0xff, 0xc0, 0xcf, 0x03, 0x07, 0xfe, 0xff, 0xf8, 0xff, 0xc7, 0x03, 0x27, 0xfc, 0x7f, 0xf0, 0xff, 0xc3, 0x03, 0x36, 0xf8, 0x7f, 0xc0, 0xff, 0xe0, 0x07, 0x3e, 0xe0, 0x1f, 0xc0, 0xff, 0xf0, 0x0f, 0x1c, 0x00, 0xfc, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0xff, 0xf8, 0xff, 0x07, 0x00, 0x00, 0x80, 0xff, 0xfc, 0xc0, 0x0f, 0x00, 0x00, 0x80, 0xff, 0x7c, 0x80, 0x0f, 0x00, 0x00, 0xc0, 0xf3, 0x3c, 0x00, 0x0f, 0x00, 0x00, 0xc0, 0xf3, 0x3c, 0x00, 0x0f, 0x00, 0x00, 0xe0, 0xf1, 0x3c, 0x00, 0x0f, 0x00, 0x00, 0xe0, 0xf1, 0x3c, 0x00, 0x0f, 0x00, 0x00, 0xf0, 0xf0, 0x3c, 0x00, 0x0f, 0x00, 0x00, 0xf0, 0xf0, 0x3c, 0x00, 0x0f, 0x00, 0x00, 0x78, 0xf0, 0x7c, 0x80, 0x0f, 0x00, 0x00, 0x78, 0xf0, 0xfc, 0xc0, 0x0f, 0x00, 0x00, 0x3c, 0xf0, 0xf8, 0xff, 0x0f, 0x00, 0x00, 0x3c, 0xf0, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x1e, 0xf0, 0xe0, 0x7f, 0x0f, 0x00, 0x00, 0x1e, 0xf0, 0xc0, 0x3f, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x13, 0x00, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x3b, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x7c, 0x80, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xfc, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0xfc, 0xfb, 0xff, 0x07, 0x00, 0x00, 0x00, 0xfc, 0xf3, 0xff, 0x03, 0x00, 0x00, 0x00, 0xfc, 0xe3, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xc3, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc0, 0xe0, 0x01, 0x00, 0x00, 0xff, 0xff, 0xc0, 0xf0, 0x03, 0x00, 0x00, 0xff, 0xff, 0xe0, 0x38, 0x07, 0x00, 0x00, 0xff, 0xff, 0xf0, 0x38, 0x07, 0x00, 0x00, 0x0f, 0x00, 0xf8, 0x1c, 0x0e, 0x00, 0x00, 0x0f, 0x00, 0xfc, 0x1c, 0x0e, 0x00, 0x00, 0x0f, 0x00, 0xf0, 0x1c, 0x0e, 0x00, 0x00, 0x0f, 0x00, 0xf0, 0x1c, 0x0e, 0x00, 0x00, 0xcf, 0x3f, 0xf0, 0x1c, 0x0e, 0x00, 0x00, 0xef, 0x7f, 0xf0, 0x1c, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xf0, 0x1c, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xf1, 0x1c, 0x0e, 0x00, 0x00, 0x3f, 0xf0, 0xf3, 0x1c, 0x0e, 0x00, 0x00, 0x1f, 0xe0, 0xf3, 0x1c, 0x0e, 0x00, 0x00, 0x0e, 0xc0, 0xf3, 0x1c, 0x0e, 0x00, 0x00, 0x04, 0xc0, 0xf3, 0x1c, 0x0e, 0x00, 0x00, 0x00, 0xc0, 0xf3, 0x1c, 0x0e, 0x00, 0x00, 0x00, 0xc0, 0xf3, 0x1c, 0x0e, 0x00, 0x00, 0x00, 0xc0, 0xf3, 0x1c, 0x0e, 0x00, 0x00, 0x00, 0xc0, 0xf3, 0x1c, 0x0e, 0x00, 0x00, 0x04, 0xc0, 0xf3, 0x1c, 0x0e, 0x00, 0x00, 0x0e, 0xc0, 0xf3, 0x1c, 0x0e, 0x00, 0x00, 0x1f, 0xe0, 0xf3, 0x1c, 0x0e, 0x00, 0x00, 0x3f, 0xf0, 0xf3, 0x1c, 0x0e, 0x00, 0x00, 0xfe, 0xff, 0xf1, 0x38, 0x07, 0x00, 0x00, 0xfc, 0xff, 0xf0, 0x38, 0x07, 0x00, 0x00, 0xf8, 0x7f, 0xf8, 0xf1, 0x03, 0x00, 0x00, 0xf0, 0x3f, 0xfc, 0xe3, 0x01, 0x00, 0x00}; xpat2-1.07/makecards/Louis-XV/largespade.bm100644 146 144 6726 5550561215 17205 0ustar mbimathopt#define largespade_width 60 #define largespade_height 69 static char largespade_bits[] = { 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0x67, 0xfe, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0xf3, 0xfc, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0xf1, 0xf8, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0x7f, 0xf8, 0xe1, 0xff, 0x7f, 0x00, 0xc0, 0xff, 0x3f, 0xf8, 0xc1, 0xff, 0x3f, 0x00, 0x00, 0xff, 0x0f, 0xfc, 0x03, 0xff, 0x0f, 0x00, 0x00, 0xfc, 0x01, 0xfc, 0x03, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x18, 0x00, 0x00, 0x00}; xpat2-1.07/makecards/American/ 40755 146 144 0 5551025567 14545 5ustar mbimathoptxpat2-1.07/makecards/American/largeclub.bm100644 146 144 13141 5550533533 17136 0ustar mbimathopt#define largeclub_width 82 #define largeclub_height 82 static char largeclub_bits[] = { 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, 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, 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0xe0, 0xff, 0xff, 0x1f, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xc0, 0xff, 0xff, 0x0f, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x81, 0xff, 0xff, 0x07, 0xfe, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x07, 0xff, 0xff, 0x83, 0xff, 0xff, 0x03, 0x00, 0x80, 0xff, 0xff, 0x0f, 0xfe, 0xff, 0xc1, 0xff, 0xff, 0x07, 0x00, 0xc0, 0xff, 0xff, 0x1f, 0xfc, 0xff, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0xf8, 0x7f, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0xf0, 0x3f, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xe0, 0x1f, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xc1, 0x0f, 0xfe, 0xff, 0xff, 0x3f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x83, 0x07, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x87, 0x87, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x8f, 0xc7, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x8f, 0xc7, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x87, 0x87, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x83, 0x07, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x81, 0x07, 0xfe, 0xff, 0xff, 0x3f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x80, 0x07, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x80, 0x07, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x80, 0x07, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0xc0, 0xff, 0xff, 0x1f, 0x80, 0x07, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0x80, 0xff, 0xff, 0x0f, 0x80, 0x07, 0xc0, 0xff, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x07, 0x80, 0x07, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x80, 0x07, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x80, 0x07, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x80, 0x07, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00}; xpat2-1.07/makecards/American/largediamond.bm100644 146 144 13152 5550533533 17626 0ustar mbimathopt#define largediamond_width 82 #define largediamond_height 82 static char largediamond_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}; xpat2-1.07/makecards/American/largeheart.bm100644 146 144 13144 5550533533 17317 0ustar mbimathopt#define largeheart_width 82 #define largeheart_height 82 static char largeheart_bits[] = { 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, 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, 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, 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x03, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x80, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x1f, 0xe0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x3f, 0xf0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}; xpat2-1.07/makecards/American/largerank.bm100644 146 144 14110 5550533533 17141 0ustar mbimathopt#define largerank_width 54 #define largerank_height 140 static char largerank_bits[] = { 0xc0, 0x0f, 0xc0, 0xff, 0x00, 0xc0, 0x3f, 0xc0, 0x0f, 0xe0, 0xff, 0x01, 0xc0, 0x3f, 0xc0, 0x0f, 0xf0, 0xff, 0x03, 0xc0, 0x3f, 0xc0, 0x0f, 0xf8, 0xff, 0x07, 0xc0, 0x3f, 0xe0, 0x1f, 0xfc, 0xc0, 0x0f, 0x00, 0x0f, 0xe0, 0x1f, 0x7c, 0x80, 0x0f, 0x00, 0x0f, 0xe0, 0x1c, 0x3c, 0x00, 0x07, 0x00, 0x0f, 0xe0, 0x1c, 0x3c, 0x00, 0x02, 0x00, 0x0f, 0xf0, 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x0f, 0x70, 0x38, 0x3c, 0xff, 0x00, 0x00, 0x0f, 0x70, 0x38, 0xbc, 0xff, 0x01, 0x00, 0x0f, 0x78, 0x78, 0xfc, 0xff, 0x03, 0x00, 0x0f, 0x78, 0x78, 0xfc, 0xff, 0x07, 0x00, 0x0f, 0x38, 0x70, 0xfc, 0xc0, 0x0f, 0x00, 0x0f, 0x38, 0x70, 0x7c, 0x80, 0x0f, 0x00, 0x0f, 0xfc, 0xff, 0x3c, 0x00, 0x0f, 0x00, 0x0f, 0xfc, 0xff, 0x3c, 0x00, 0x0f, 0x00, 0x0f, 0xfc, 0xff, 0x3c, 0x00, 0xff, 0x00, 0x0f, 0xfc, 0xff, 0x3c, 0x00, 0xff, 0x00, 0x0f, 0x3e, 0xf0, 0x3d, 0x00, 0xff, 0x00, 0x0f, 0x1e, 0xe0, 0x3d, 0x00, 0xff, 0x00, 0x0f, 0x1e, 0xe0, 0x7d, 0x80, 0xff, 0x81, 0x0f, 0x0e, 0xc0, 0xfd, 0xc0, 0xff, 0xc3, 0x0f, 0x0f, 0xc0, 0xfb, 0xff, 0xe7, 0xff, 0x07, 0x0f, 0xc0, 0xf3, 0xff, 0xc3, 0xff, 0x03, 0x0f, 0xc0, 0xe3, 0xff, 0x81, 0xff, 0x01, 0x0f, 0xc0, 0xc3, 0xff, 0x00, 0xff, 0x00, 0xc0, 0x1f, 0xfc, 0xff, 0x0f, 0xfc, 0x00, 0xf0, 0x7f, 0xfc, 0xff, 0x0f, 0xfe, 0x01, 0xf8, 0xff, 0xfc, 0xff, 0x0f, 0xff, 0x03, 0xfc, 0xff, 0xfd, 0xff, 0x8f, 0xff, 0x07, 0x3e, 0xf0, 0x3d, 0x00, 0xcf, 0xcf, 0x0f, 0x1f, 0xe0, 0x3f, 0x00, 0xcf, 0x87, 0x0f, 0x0f, 0xc0, 0x03, 0x80, 0xcf, 0x03, 0x0f, 0x0f, 0xc0, 0x03, 0xc0, 0xc7, 0x03, 0x0f, 0x00, 0xc0, 0x03, 0xc0, 0xc3, 0x03, 0x0f, 0x00, 0xe0, 0x03, 0xc0, 0xc3, 0x03, 0x0f, 0x00, 0xf0, 0x01, 0xe0, 0xc1, 0x03, 0x0f, 0x00, 0xf8, 0x01, 0xf0, 0xc1, 0x03, 0x0f, 0x00, 0xfc, 0x00, 0xf0, 0xc0, 0x03, 0x0f, 0x00, 0x7e, 0x00, 0xf0, 0xc0, 0x03, 0x0f, 0x00, 0x3f, 0x00, 0x78, 0xc0, 0x03, 0x0f, 0x80, 0x1f, 0x00, 0x78, 0xc0, 0x03, 0x0f, 0xc0, 0x0f, 0x00, 0x3c, 0xf0, 0x0f, 0x0f, 0xe0, 0x07, 0x00, 0x3c, 0xf0, 0x3f, 0x0f, 0xf0, 0x03, 0x00, 0x3c, 0xf0, 0xff, 0x0f, 0xf8, 0x01, 0x00, 0x1e, 0xf0, 0xff, 0x0f, 0xfc, 0x00, 0x00, 0x1e, 0xc0, 0xf3, 0x0f, 0x7e, 0x00, 0x00, 0x1e, 0xc0, 0xe3, 0x0f, 0x3f, 0xc0, 0x03, 0x0e, 0xc0, 0xc7, 0x0f, 0x3f, 0xc0, 0x03, 0x0f, 0xc0, 0xcf, 0x0f, 0xff, 0xff, 0x03, 0x0f, 0x80, 0xff, 0x1f, 0xff, 0xff, 0x03, 0x0f, 0x00, 0xff, 0x3f, 0xff, 0xff, 0x03, 0x0f, 0x00, 0xfe, 0x1d, 0xff, 0xff, 0x03, 0x0f, 0x00, 0xfc, 0x08, 0xff, 0xff, 0xc3, 0xff, 0xf0, 0xcf, 0x3f, 0xff, 0xff, 0xe3, 0xff, 0xf1, 0xcf, 0x3f, 0xff, 0xff, 0xf3, 0xff, 0xf3, 0xcf, 0x3f, 0xff, 0xff, 0xfb, 0xff, 0xf7, 0x0f, 0x3f, 0x0f, 0xf0, 0xff, 0xc0, 0xcf, 0x83, 0x0f, 0x0f, 0xf8, 0x7d, 0x80, 0xcf, 0xc3, 0x07, 0x00, 0xfc, 0x3c, 0x00, 0xcf, 0xe3, 0x03, 0x00, 0x7e, 0x3c, 0x00, 0xcf, 0xf3, 0x01, 0x00, 0x3f, 0x7c, 0x80, 0xcf, 0xff, 0x00, 0x80, 0x3f, 0xfc, 0xc0, 0xcf, 0x7f, 0x00, 0xc0, 0x3f, 0xf8, 0xff, 0xc7, 0x3f, 0x00, 0xe0, 0x3f, 0xf0, 0xff, 0xc3, 0x3f, 0x00, 0xf0, 0xff, 0xc0, 0xff, 0xc0, 0x3f, 0x00, 0xf0, 0xff, 0xc0, 0xff, 0xc0, 0x3f, 0x00, 0xe0, 0xf0, 0xf3, 0xff, 0xc3, 0x7f, 0x00, 0x40, 0xe0, 0xfb, 0xff, 0xc7, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xc0, 0xcf, 0xf3, 0x00, 0x00, 0xc0, 0x7f, 0x80, 0xcf, 0xf3, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0xcf, 0xe3, 0x01, 0x00, 0xc0, 0x3f, 0x00, 0xcf, 0xe3, 0x01, 0x0c, 0xc0, 0x3f, 0x00, 0xcf, 0xc3, 0x03, 0x1e, 0xc0, 0x3f, 0x00, 0xcf, 0xc3, 0x03, 0x3f, 0xe0, 0x7f, 0x80, 0xcf, 0x83, 0x07, 0x7f, 0xf0, 0xff, 0xc0, 0xcf, 0x83, 0x07, 0xfe, 0xff, 0xf8, 0xff, 0xf7, 0xcf, 0x3f, 0xfc, 0x7f, 0xf0, 0xff, 0xf3, 0xcf, 0x3f, 0xf8, 0x7f, 0xc0, 0xff, 0xf0, 0xcf, 0x3f, 0xe0, 0x1f, 0xc0, 0xff, 0xf0, 0xcf, 0x3f, 0x00, 0xfc, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0xff, 0xf8, 0xff, 0x07, 0x00, 0x00, 0x80, 0xff, 0xfc, 0xc0, 0x0f, 0x00, 0x00, 0x80, 0xff, 0x7c, 0x80, 0x0f, 0x00, 0x00, 0xc0, 0xf3, 0x3c, 0x00, 0x0f, 0x00, 0x00, 0xc0, 0xf3, 0x3c, 0x00, 0x0f, 0x00, 0x00, 0xe0, 0xf1, 0x3c, 0x00, 0x0f, 0x00, 0x00, 0xe0, 0xf1, 0x3c, 0x00, 0x0f, 0x00, 0x00, 0xf0, 0xf0, 0x3c, 0x00, 0x0f, 0x00, 0x00, 0xf0, 0xf0, 0x3c, 0x00, 0x0f, 0x00, 0x00, 0x78, 0xf0, 0x7c, 0x80, 0x0f, 0x00, 0x00, 0x78, 0xf0, 0xfc, 0xc0, 0x0f, 0x00, 0x00, 0x3c, 0xf0, 0xf8, 0xff, 0x0f, 0x00, 0x00, 0x3c, 0xf0, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x1e, 0xf0, 0xe0, 0x7f, 0x0f, 0x00, 0x00, 0x1e, 0xf0, 0xc0, 0x3f, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x13, 0x00, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x3b, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x7c, 0x80, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xfc, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0xfc, 0xfb, 0xff, 0x07, 0x00, 0x00, 0x00, 0xfc, 0xf3, 0xff, 0x03, 0x00, 0x00, 0x00, 0xfc, 0xe3, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xc3, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3c, 0xfc, 0x03, 0x00, 0x00, 0xff, 0xff, 0x3c, 0xfe, 0x07, 0x00, 0x00, 0xff, 0xff, 0x3c, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x3c, 0xff, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x3c, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x3c, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x3c, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x3c, 0x0f, 0x0f, 0x00, 0x00, 0xcf, 0x3f, 0x3c, 0x0f, 0x0f, 0x00, 0x00, 0xef, 0x7f, 0x3c, 0x0f, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x3c, 0x0f, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x3d, 0x0f, 0x0f, 0x00, 0x00, 0x3f, 0xf0, 0x3f, 0x0f, 0x0f, 0x00, 0x00, 0x1f, 0xe0, 0x3f, 0x0f, 0x0f, 0x00, 0x00, 0x0e, 0xc0, 0x3f, 0x0f, 0x0f, 0x00, 0x00, 0x04, 0xc0, 0x3f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x0f, 0x0f, 0x00, 0x00, 0x04, 0xc0, 0x3f, 0x0f, 0x0f, 0x00, 0x00, 0x0e, 0xc0, 0x3f, 0x0f, 0x0f, 0x00, 0x00, 0x1f, 0xe0, 0x3f, 0x0f, 0x0f, 0x00, 0x00, 0x3f, 0xf0, 0x3f, 0x0f, 0x0f, 0x00, 0x00, 0xfe, 0xff, 0x3d, 0xff, 0x0f, 0x00, 0x00, 0xfc, 0xff, 0x3c, 0xff, 0x0f, 0x00, 0x00, 0xf8, 0x7f, 0x3c, 0xfe, 0x07, 0x00, 0x00, 0xf0, 0x3f, 0x3c, 0xfc, 0x03, 0x00, 0x00}; xpat2-1.07/makecards/American/largespade.bm100644 146 144 13144 5550533533 17310 0ustar mbimathopt#define largespade_width 82 #define largespade_height 82 static char largespade_bits[] = { 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xbf, 0xf7, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x9f, 0xe7, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x8f, 0xc7, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x83, 0x07, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x81, 0x07, 0xfe, 0xff, 0xff, 0x0f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x80, 0x07, 0xfc, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0x80, 0x07, 0xfc, 0xff, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x7f, 0x80, 0x07, 0xf8, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0x3f, 0x80, 0x07, 0xf0, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0xc0, 0x0f, 0xe0, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x0f, 0xc0, 0x0f, 0xc0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x03, 0xc0, 0x0f, 0x00, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x80, 0xff, 0x00, 0xc0, 0x0f, 0x00, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00}; xpat2-1.07/makecards/American/config.h100644 146 144 530 5550631654 16235 0ustar mbimathopt/* configuration for the american cards */ #define NUM_RED_COLORS 8 /* number not counting background */ #define NUM_BLACK_COLORS 8 /* number not counting background */ #define RED_COLOR { 65535L * 4L / 5L, 0L, 0L } /* red is 80% */ #define BLACK_COLOR { 0L, 0L, 0L } #define WHITE_COLOR { 65535L, 65535L, 65535L } /* background is white */ xpat2-1.07/makecards/src/ 40755 146 144 0 6710067134 13607 5ustar mbimathoptxpat2-1.07/makecards/src/combine.c100644 146 144 11015 5546554166 15516 0ustar mbimathopt#include #include #include #include #include #include #ifndef max #define max(a, b) ((a) > (b) ? (a) : (b)) #define min(a, b) ((a) < (b) ? (a) : (b)) #endif #include #include #include #include #include #include #include #include static const char n_ace[] = "Ace", n_deuce[] = "Deuce", n_three[] = "Three", n_four[] = "Four", n_five[] = "Five", n_six[] = "Six", n_seven[] = "Seven", n_eight[] = "Eight", n_nine[] = "Nine", n_ten[] = "Ten", n_jack[] = "Jack", n_queen[] = "Queen", n_king[] = "King", n_diamonds[] = "Diamonds", n_hearts[] = "Hearts", n_spades[] = "Spades", n_clubs[] = "Clubs"; const char *US_rank_name[] = { n_ace, n_deuce, n_three, n_four, n_five, n_six, n_seven, n_eight, n_nine, n_ten, n_jack, n_queen, n_king }; const char *US_suit_name[] = { n_clubs, n_spades, n_hearts, n_diamonds }; Display *dpy; int screen; Window table; static int read_xpmfile(char *name, Pixmap *image, Pixmap *clip, int *w, int *h) { XpmAttributes attribs; attribs.valuemask = 0; if (XpmReadFileToPixmap(dpy, table, name, image, clip, &attribs) != XpmSuccess) return 0; if (w) *w = attribs.width; if (h) *h = attribs.height; return 1; } static GC gc, g1, clipgc; static Pixmap pics[12], clip[12], big, clp; static void make_GCs(void) { XGCValues gcv; long gcflags; gcv.foreground = BlackPixel(dpy, screen); gcv.background = WhitePixel(dpy, screen); gcv.graphics_exposures = False; gcflags = GCForeground | GCBackground | GCGraphicsExposures; gc = XCreateGC(dpy, big, gcflags, &gcv); g1 = XCreateGC(dpy, clp, gcflags, &gcv); gcv.foreground = 1; gcv.background = 0; clipgc = XCreateGC(dpy, clp, gcflags, &gcv); } static void action(Widget unused, XtPointer a, XtPointer b) { int s, r, w, h, i; for (r = 10; r < 13; ++r) for (s = 0; s < 4; ++s) { char name[40]; i = 4 * (r-10) + s; sprintf(name, "%s.%s.pic.xpm", US_rank_name[r], US_suit_name[s]); if (!read_xpmfile(name, pics+i, clip+i, &w, &h)) { fprintf(stderr, "cannot read %s\n", name); exit(1); } } big = XCreatePixmap(dpy, RootWindow(dpy, screen), 4 * w, 3 * h, DefaultDepth(dpy, screen)); clp = XCreatePixmap(dpy, RootWindow(dpy, screen), 4 * w, 3 * h, 1); make_GCs(); XFillRectangle(dpy, clp, clipgc, 0, 0, 4*w, 3*h); for (r = 10; r < 13; ++r) for (s = 0; s < 4; ++s) { i = 4 * (r-10) + s; XCopyArea(dpy, pics[i], big, gc, 0, 0, w, h, s * w, (r-10) * h); if (clip[i]) XCopyArea(dpy, clip[i], clp, g1, 0, 0, w, h, s * w, (r-10) * h); } if (XpmWriteFileFromPixmap(dpy, "Pictures.xpm", big, clp, NULL) != XpmSuccess) { fprintf(stderr, "error writing xpm file Pictures.xpm\n"); exit(1); } exit(0); } static void action2(Widget unused, XtPointer a, XtPointer b) { int s, r, w, h, i; if (!read_xpmfile("Pictures.xpm", &big, &clp, &w, &h)) { fprintf(stderr, "cannot read Pictures.xpm\n"); exit(1); } w /= 4; h /= 3; make_GCs(); for (r = 10; r < 13; ++r) for (s = 0; s < 4; ++s) { char name[40]; i = 4 * (r-10) + s; sprintf(name, "%s.%s.pic.xpm", US_rank_name[r], US_suit_name[s]); pics[i] = XCreatePixmap(dpy, RootWindow(dpy, screen), w, h, DefaultDepth(dpy, screen)); clip[i] = XCreatePixmap(dpy, RootWindow(dpy, screen), w, h, 1); XCopyArea(dpy, big, pics[i], gc, s * w, (r-10) * h, w, h, 0, 0); XCopyArea(dpy, clp, clip[i], g1, s * w, (r-10) * h, w, h, 0, 0); if (XpmWriteFileFromPixmap(dpy, name, pics[i], clip[i], NULL) != XpmSuccess) { fprintf(stderr, "error writing file %s\n", name); exit(1); } } exit(0); } int main(int argc, char *argv[]) { XtAppContext app_con; Widget toplevel, paned, text1, text2; toplevel = XtAppInitialize(&app_con, "Combine", NULL, 0, &argc, argv, NULL, NULL, 0); paned = XtCreateManagedWidget("paned", panedWidgetClass, toplevel, NULL, 0); text1 = XtCreateManagedWidget("Click to combine", commandWidgetClass, paned, NULL, 0); text2 = XtCreateManagedWidget("Click to separate", commandWidgetClass, paned, NULL, 0); XtAddCallback(text1, XtNcallback, action, NULL); XtAddCallback(text2, XtNcallback, action2, NULL); XtRealizeWidget(toplevel); dpy = XtDisplay(toplevel); screen = DefaultScreen(dpy); table = XtWindow(paned); XtAppMainLoop(app_con); /* does not return */ return 0; } xpat2-1.07/makecards/src/rank.c100644 146 144 16724 5550631575 15044 0ustar mbimathopt#include "config.h" /* do not change anything below this, unless you know what you're doing */ #include #include #include #include #include #include #include #include "largeclub.bm" #include "largespade.bm" #include "largeheart.bm" #include "largediamond.bm" #include "largerank.bm" #define RANK_WIDTH 9 #define RANK_HEIGHT 14 static unsigned char grey[90][90]; static int size[] = { 0, 41, 21, 15, 11 }; static void bitmap_to_grey(char *bm, int w, int h, int scale, int scanline) { int i, j; char *b, *bb; unsigned char *g, *gg; int scancol, scancol0; memset(grey, 0, sizeof(grey)); b = bm; if (scanline == -1) { scanline = 0; scancol0 = 0; g = grey[0]; } else { i = (scale * size[scale/2] - w) / 2; scancol0 = i % scale; g = grey[(82-h)/scale] + i / scale; } /* make a picture of bitmap, offsetting it (scanline, scancol0) */ --scanline; for (i = 0; i < h; ++i) { int c; /* start a new scanline */ if (++scanline >= scale) { scanline -= scale; g += 90; } gg = g; /* restart at this line */ bb = b; scancol = scancol0 - 1; /* first, skip xoffset pixel */ for (j = 0; j < w; ++j) { if (++scancol >= scale) { ++gg; scancol -= scale; } if (!(j % 8)) c = *bb++; /* c has bit in pos 0 */ if (c & 1) ++*gg; c >>= 1; } b += (w + 7) >> 3; } } struct longcolor { long red, green, blue; }; static Display *dpy; static unsigned int screen; static Drawable w; static GC gc; static unsigned long black_ramp[NUM_BLACK_COLORS+1], red_ramp[NUM_RED_COLORS+1]; static void make_ramp(int numcolors, unsigned long *xcolors, struct longcolor bg, struct longcolor fg) { XColor color; Colormap cmap; int i; cmap = XDefaultColormap(dpy, screen); color.flags = DoRed|DoGreen|DoBlue; for (i = 0; i <= numcolors; ++i) { color.red = ((numcolors-i) * bg.red + i * fg.red) / numcolors; color.green = ((numcolors-i) * bg.green + i * fg.green) / numcolors; color.blue = ((numcolors-i) * bg.blue + i * fg.blue) / numcolors; /* printf("r/g/b = %04x/%04x/%04x yields ", color.red, color.green, color.blue); */ if (!XAllocColor(dpy, cmap, &color)) { fprintf(stderr, "Error! Cannot allocate color cell!\n"); exit(1); } /* printf("%04x/%04x/%04x\n", color.red, color.green, color.blue); */ xcolors[i] = color.pixel; } } static void connect(int view, int width, int height, char *name) { Window root; Pixmap p; if(!(dpy = XOpenDisplay(NULL))) { fprintf( stderr, "cannot open display\n"); exit(EXIT_FAILURE); } screen = XDefaultScreen(dpy); gc = XDefaultGC(dpy, screen); root = RootWindow(dpy, screen); if (!view) { p = XCreatePixmap(dpy, root, width, height, DefaultDepth(dpy, screen)); w = p; } else { Window win; XGCValues gcv; unsigned long w_mask, gc_mask; XSizeHints xsh; XWMHints xwmh = { (InputHint|StateHint), True, NormalState, 0,0,0,0,0,0 }; w_mask = CWColormap|CWBackPixel; xsh.flags = PPosition | PSize; xsh.width = width; xsh.height = height; xsh.x = 100; xsh.y = 200; win = XCreateSimpleWindow(dpy, root, xsh.x,xsh.y,xsh.width, xsh.height, 0, WhitePixel(dpy, screen), BlackPixel(dpy, screen)); XSetStandardProperties(dpy, win, name, name, None, NULL, 0, &xsh); XSetWMHints(dpy, win, &xwmh); XSelectInput(dpy, win, ExposureMask|ButtonPressMask); XMapRaised(dpy, win); w = win; gcv.function = GXcopy; gcv.plane_mask = AllPlanes; gcv.line_width = 0; gcv.line_style = LineSolid; gcv.join_style = JoinMiter; gcv.fill_style = FillSolid; gc_mask = GCFunction|GCPlaneMask|GCLineWidth|GCLineStyle|GCJoinStyle|GCFillStyle; XChangeGC(dpy, gc, gc_mask, &gcv); } } static void wait_for_event(void) { XEvent event; do { XNextEvent(dpy, &event); if (event.type == ButtonPress) exit(0); } while (event.type != Expose || event.xexpose.count != 0); /* skip coming events */ while(XCheckTypedEvent(dpy, Expose, &event)) ; } static void paintsuit(char *bits, int width, int height, int y, int scale, int suit) { int i, j, this; this = size[scale]; bitmap_to_grey(bits, width, height, 2*scale, scale*this - 41); for (i = 0; i < this; ++i) for (j = 0; j < this; ++j) { if (suit < 2) XSetForeground(dpy, gc, black_ramp[(((int)grey[j][i] * NUM_BLACK_COLORS / scale / scale) + 2) / 4]); else XSetForeground(dpy, gc, red_ramp[(((int)grey[j][i] * NUM_RED_COLORS / scale / scale) + 2) / 4]); /* single pixels: (O'Reilly Xlib PM 3rd ed., p. 738) */ XFillRectangle(dpy, w, gc, suit*this+i, y+j, 1, 1); if (scale > 1) XFillRectangle(dpy, w, gc, (suit+5)*this-i-1, y+this-1-j, 1, 1); } } static void paint(int width, int height) { int scale, y; XSetForeground(dpy, gc, black_ramp[0]); XFillRectangle(dpy, w, gc, 0, 0, width, height); y = 0; for (scale = 1; scale <= 4; ++scale) { paintsuit(largeclub_bits, largeclub_width, largeclub_height, y, scale, 0); paintsuit(largespade_bits, largespade_width, largespade_height, y, scale, 1); paintsuit(largeheart_bits, largeheart_width, largeheart_height, y, scale, 2); paintsuit(largediamond_bits, largediamond_width, largediamond_height, y, scale, 3); y += size[scale]; } } static void paintrank(int width, int height) { int i, j, scale; XSetForeground(dpy, gc, black_ramp[0]); XFillRectangle(dpy, w, gc, 0, 0, width, height); scale = largerank_width / 9 / 3; if ((scale & 1) || scale * 9 * 3 != largerank_width || scale * 14 * 5 != largerank_height) fprintf(stderr, "Please check your scale. I'm getting weird results\n"); scale /= 2; bitmap_to_grey(largerank_bits, largerank_width, largerank_height, 2*scale, -1); for (i = 0; i < 3*RANK_WIDTH; ++i) for (j = 0; j < 5*RANK_HEIGHT; ++j) { XSetForeground(dpy, gc, black_ramp[(((int)grey[j][i] * NUM_BLACK_COLORS / scale / scale) + 2) / 4]); XFillRectangle(dpy, w, gc, i, j, 1, 1); XFillRectangle(dpy, w, gc, 9*RANK_WIDTH-i-1, 5*RANK_HEIGHT-1-j, 1, 1); XSetForeground(dpy, gc, red_ramp[(((int)grey[j][i] * NUM_RED_COLORS / scale / scale) + 2) / 4]); XFillRectangle(dpy, w, gc, 3*RANK_WIDTH+i, j, 1, 1); XFillRectangle(dpy, w, gc,12*RANK_WIDTH-i-1, 5*RANK_HEIGHT-1-j, 1, 1); } } static void writefile(const char *filename) { static int is_written = 0; if (!is_written) { is_written = 1; if (XpmWriteFileFromPixmap(dpy, filename, w, 0, NULL) != XpmSuccess) fprintf(stderr, "error writing xpm file %s\n", filename); } } int main(int argc, char *argv[]) { char *p; static struct longcolor red = RED_COLOR, black = BLACK_COLOR, bg = WHITE_COLOR; int view = 0, do_rank = 0; int width = 168, height = 88; p = strrchr(argv[0], '/'); p = p ? p+1 : argv[0]; if (!strcmp(p, "rank")) { do_rank = 1; width = 12 * RANK_WIDTH; height = 5 * RANK_HEIGHT; } if (argc == 2 && !strcmp(argv[1], "-v")) view = 1; else if (argc != 1) { fprintf(stderr, "usage: %s [-v]\n", p); exit(1); } connect(view, width, height, p); make_ramp(NUM_BLACK_COLORS, black_ramp, bg, black); make_ramp(NUM_RED_COLORS, red_ramp, bg, red); do { if (view) wait_for_event(); if (do_rank) { paintrank(width, height); writefile("Ranks.xpm"); } else { paint(width, height); writefile("Suits.xpm"); } } while (view); return 0; } xpat2-1.07/makecards/src/Makefile100644 146 144 663 5550630544 15333 0ustar mbimathoptCFLAGS = -O2 -Wall LDFLAGS = -s -N all: Suits.xpm Ranks.xpm Suits.xpm: suit ./suit Ranks.xpm: rank ./rank suit: rank cp rank suit rank: rank.c largerank.bm largediamond.bm largespade.bm largeclub.bm largeheart.bm $(CC) -o rank $(CFLAGS) $(LDFLAGS) rank.c -lXpm -lX11 combine: combine.c $(CC) -O2 -c -Wall combine.c $(CC) -s -N -o combine combine.o -lXpm -lXaw -lXmu -lXt -lX11 clean: rm -f suit rank *.o *~ *.xpm.gz *.xpmxpat2-1.07/makecards/src/README100644 146 144 1211 5551551520 14556 0ustar mbimathoptThis is the source for the utilities to generate nice suit symbols. Generate your favourite bitmaps for the rank and suit symbols in some new subdirectory of makecards, copy config.h there (to possibly change the ``white''-colour to grey or anything you like). Then compile rank and run it. rename rank to suit and run it. In Suit.xpm, change the ``white'' colour (#FFFFFFFFFFFF) to ``None''. You may do this for Rank.xpm also. Have fun Michael combine will collect {Jack|Queen|King}.(suit).pic.xpm pictures (WHICH MUST HAVE THE SAME SIZE) and combine them to ``Pictures.xpm'' or the other way round. This saves time during xpat2 startup.xpat2-1.07/makecards/Stein/ 40755 146 144 0 6123622551 14100 5ustar mbimathoptxpat2-1.07/makecards/Stein/largeclub.bm100644 146 144 6332 6123621355 16462 0ustar mbimathopt#define largeclub_width 64 #define largeclub_height 64 static char largeclub_bits[] = { 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0x87, 0xff, 0xff, 0xe1, 0x7f, 0x00, 0x00, 0xff, 0x0f, 0xff, 0xff, 0xf0, 0xff, 0x00, 0xc0, 0xff, 0x1f, 0xfe, 0x7f, 0xf8, 0xff, 0x03, 0xe0, 0xff, 0x7f, 0xf8, 0x1f, 0xfe, 0xff, 0x07, 0xe0, 0xff, 0x7f, 0xf8, 0x1f, 0xfe, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xf0, 0x0f, 0xff, 0xff, 0x0f, 0xf8, 0xff, 0xff, 0xe1, 0x87, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xc7, 0xe3, 0xff, 0xff, 0x1f, 0xfc, 0xff, 0xff, 0xc7, 0xe3, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xcf, 0xf3, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xcf, 0xf3, 0xff, 0xff, 0x3f, 0xf8, 0xff, 0xff, 0xc7, 0xe3, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xc3, 0xc3, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xc1, 0x83, 0xff, 0xff, 0x1f, 0xe0, 0xff, 0x7f, 0xc0, 0x03, 0xfe, 0xff, 0x07, 0xe0, 0xff, 0x7f, 0xc0, 0x03, 0xfe, 0xff, 0x07, 0xe0, 0xff, 0x3f, 0xc0, 0x03, 0xfc, 0xff, 0x07, 0xc0, 0xff, 0x1f, 0xc0, 0x03, 0xf8, 0xff, 0x03, 0x00, 0xfe, 0x07, 0xc0, 0x03, 0xe0, 0x7f, 0x00, 0x00, 0xf8, 0x00, 0xc0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x7c, 0x00, 0x00, 0x00}; xpat2-1.07/makecards/Stein/largediamond.bm100644 146 144 6343 6123621272 17150 0ustar mbimathopt#define largediamond_width 64 #define largediamond_height 64 static char largediamond_bits[] = { 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00}; xpat2-1.07/makecards/Stein/largeheart.bm100644 146 144 6335 6123621322 16635 0ustar mbimathopt#define largeheart_width 64 #define largeheart_height 64 static char largeheart_bits[] = { 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, 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, 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, 0x3f, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, 0xc0, 0xff, 0x0f, 0x00, 0x00, 0xf8, 0xff, 0x07, 0xe0, 0xff, 0x1f, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0xf0, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0xff, 0x1f, 0xf8, 0xff, 0x7f, 0x00, 0x00, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0x00, 0x80, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0x01, 0x80, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0x01, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00}; xpat2-1.07/makecards/Stein/largerank.bm100644 146 144 60020 5551216363 16505 0ustar mbimathopt#define largerank_width 108 #define largerank_height 280 static char largerank_bits[] = { 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, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1e, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1e, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x80, 0x03, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0xc0, 0x01, 0x7c, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0xc0, 0x01, 0x7c, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0xe0, 0x01, 0x7c, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0xe0, 0x00, 0x38, 0x00, 0xfe, 0xff, 0xff, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x03, 0xfe, 0x01, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x03, 0xf0, 0x03, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x03, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x03, 0xc0, 0x0f, 0x00, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x80, 0x0f, 0x00, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x80, 0x0f, 0x00, 0x00, 0xf0, 0x61, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0xf0, 0x61, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0xf8, 0xe1, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0xf8, 0xe1, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0xf8, 0xc0, 0x00, 0x00, 0x3e, 0xf8, 0x01, 0x00, 0xf0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0xf8, 0xc0, 0x00, 0x00, 0x3e, 0x06, 0x07, 0x00, 0xf0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0xfc, 0xc0, 0x01, 0x00, 0x3e, 0x01, 0x0e, 0x00, 0xf0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0xfc, 0x80, 0x01, 0x00, 0x3e, 0x01, 0x0e, 0x00, 0xf0, 0x03, 0x00, 0x0f, 0x00, 0x00, 0x7c, 0x80, 0x01, 0x00, 0xbe, 0x00, 0x1c, 0x00, 0xf0, 0x03, 0x80, 0x0f, 0x00, 0x00, 0x7c, 0x80, 0x01, 0x00, 0xbe, 0x00, 0x38, 0x00, 0xf0, 0x03, 0x80, 0x07, 0x00, 0x00, 0x3e, 0x80, 0x03, 0x00, 0x7e, 0x00, 0x78, 0x00, 0xf0, 0x03, 0xc0, 0x07, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x7e, 0x00, 0x78, 0x00, 0xf0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x7e, 0x00, 0xf0, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x3f, 0x00, 0x07, 0x00, 0x7e, 0x00, 0xf0, 0x00, 0xf0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x3e, 0x00, 0xf0, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x3e, 0x00, 0xf0, 0x00, 0xf0, 0x03, 0xf8, 0x01, 0x00, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0xe0, 0x03, 0x00, 0x80, 0x1f, 0x00, 0x0e, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0xc0, 0x07, 0x00, 0x80, 0x0f, 0x00, 0x0c, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0x80, 0x0f, 0x00, 0x80, 0xff, 0xff, 0x0f, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0x80, 0x0f, 0x00, 0x80, 0xff, 0xff, 0x0f, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0x00, 0x0f, 0x00, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0x00, 0x1e, 0x00, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0x00, 0x1e, 0x00, 0xc0, 0x07, 0x00, 0x18, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0x00, 0x3e, 0x00, 0xe0, 0x07, 0x00, 0x38, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0x00, 0x3e, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x3c, 0x00, 0xf0, 0x01, 0xf0, 0x03, 0x00, 0x3e, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xf0, 0x03, 0x00, 0x3e, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xf0, 0x03, 0x00, 0x3e, 0x00, 0xf0, 0x01, 0x00, 0x70, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xf0, 0x03, 0x00, 0x1f, 0x00, 0xf0, 0x01, 0x00, 0x60, 0x00, 0x70, 0x00, 0x78, 0x00, 0xf0, 0x03, 0x00, 0x0f, 0x00, 0xf8, 0x01, 0x00, 0xe0, 0x00, 0xf0, 0x00, 0x78, 0x00, 0xf0, 0x03, 0x80, 0x0f, 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x00, 0xf0, 0x00, 0x78, 0x00, 0xf0, 0x03, 0xc0, 0x07, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x03, 0xe0, 0x00, 0x3c, 0x00, 0xf0, 0x03, 0xf0, 0x03, 0x00, 0xfc, 0x03, 0x00, 0xfc, 0x07, 0xc0, 0x01, 0x1c, 0x00, 0xf0, 0x03, 0xfe, 0x01, 0x00, 0xfe, 0x07, 0x00, 0xfc, 0x07, 0x80, 0x07, 0x0f, 0x00, 0xfe, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x07, 0x00, 0xfc, 0x07, 0x80, 0x07, 0x0f, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x07, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x7e, 0x00, 0x00, 0x70, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x30, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x10, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xf0, 0x01, 0x00, 0x10, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xf0, 0x01, 0x00, 0x10, 0x00, 0xe0, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x40, 0x00, 0xe0, 0x03, 0x00, 0x10, 0x00, 0x70, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x40, 0x00, 0xe0, 0x03, 0x00, 0x08, 0x00, 0x30, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x40, 0x00, 0xe0, 0x03, 0x00, 0x08, 0x00, 0x30, 0x00, 0xfe, 0xff, 0xff, 0x00, 0x00, 0xe0, 0x03, 0xe0, 0x07, 0x00, 0x08, 0x00, 0x38, 0x00, 0xf0, 0x03, 0xfe, 0x01, 0x00, 0xe0, 0x07, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x18, 0x00, 0xf0, 0x03, 0xf0, 0x03, 0x00, 0xe0, 0x07, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x1c, 0x00, 0xf0, 0x03, 0xc0, 0x07, 0x00, 0xe0, 0x07, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xf0, 0x03, 0x80, 0x0f, 0x00, 0xe0, 0x07, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xf0, 0x03, 0x00, 0x0f, 0x00, 0xe0, 0x07, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xf0, 0x03, 0x00, 0x1f, 0x00, 0xe0, 0x07, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf0, 0x03, 0x00, 0x1e, 0x00, 0xc0, 0x03, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0xf0, 0x03, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0xf0, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x80, 0x03, 0x00, 0xf0, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x80, 0x03, 0x00, 0xf0, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x78, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x78, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x7c, 0x00, 0x00, 0x78, 0x00, 0x04, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x38, 0x00, 0x04, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x1c, 0x00, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x1e, 0x00, 0x00, 0x0e, 0x00, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x1e, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x0f, 0x00, 0x80, 0x03, 0x00, 0x03, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0x80, 0x0f, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0xc0, 0x07, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0xf0, 0x03, 0x00, 0xc0, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x03, 0xfe, 0x01, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x78, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x7c, 0x00, 0x00, 0x00, 0x07, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x80, 0x01, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0xf0, 0x01, 0x00, 0xe0, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0xf0, 0x03, 0x00, 0x60, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0xe0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0xe0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0xe0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0x80, 0x07, 0xe0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0x00, 0x03, 0xf0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xff, 0x1f, 0xfc, 0x7f, 0x00, 0x00, 0x03, 0xf0, 0x03, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xf8, 0x03, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x00, 0xe0, 0x00, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xf0, 0x01, 0x70, 0x00, 0xf0, 0x01, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x03, 0x70, 0x00, 0xf0, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x03, 0x70, 0x00, 0xf0, 0x01, 0x78, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x0f, 0x38, 0x00, 0xf0, 0x01, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0xc0, 0x1f, 0x1c, 0x00, 0xf0, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x80, 0x7f, 0x06, 0x00, 0xf0, 0x01, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x80, 0x7f, 0x06, 0x00, 0xf0, 0x81, 0x07, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0xf0, 0xc1, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x00, 0xf0, 0xe1, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0xf0, 0xf1, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0xf0, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0xf0, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xe3, 0x3f, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x81, 0x7f, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xc0, 0x81, 0x7f, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xe0, 0x00, 0xff, 0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x70, 0x00, 0xfc, 0x01, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x30, 0x00, 0xf8, 0x01, 0xf0, 0xf7, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x30, 0x00, 0xf8, 0x01, 0xf0, 0xe3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x38, 0x00, 0xe0, 0x01, 0xf0, 0xc1, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x18, 0x00, 0xc0, 0x03, 0xf0, 0xc1, 0x03, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0xc0, 0x03, 0xf0, 0x81, 0x07, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0xc0, 0x03, 0xf0, 0x81, 0x07, 0x00, 0x00, 0xe0, 0x01, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0x0f, 0x00, 0x00, 0xf0, 0x03, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0x1f, 0x00, 0x00, 0xf0, 0x03, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0x1e, 0x00, 0x00, 0xf0, 0x03, 0xc0, 0x0f, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0x3c, 0x00, 0x00, 0xf0, 0x03, 0xc0, 0x07, 0x00, 0x1c, 0x00, 0x80, 0x03, 0xf0, 0x01, 0x3c, 0x00, 0x00, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0x3c, 0x00, 0x80, 0x01, 0xf0, 0x01, 0x78, 0x00, 0x00, 0x20, 0x00, 0xe0, 0x07, 0x00, 0x38, 0x00, 0xc0, 0x01, 0xf0, 0x01, 0x78, 0x00, 0x00, 0x20, 0x00, 0xe0, 0x07, 0x00, 0x38, 0x00, 0xc0, 0x01, 0xf0, 0x01, 0xf0, 0x00, 0x00, 0x20, 0x00, 0xe0, 0x03, 0x00, 0x78, 0x00, 0xc0, 0x00, 0xf0, 0x01, 0xf0, 0x00, 0x00, 0xc0, 0x00, 0xf0, 0x01, 0x00, 0x70, 0x00, 0x60, 0x00, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0x80, 0x01, 0xf0, 0x00, 0x00, 0xe0, 0x01, 0x30, 0x00, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0x80, 0x01, 0xf0, 0x00, 0x00, 0xe0, 0x01, 0x30, 0x00, 0xf0, 0x01, 0xe0, 0x07, 0x00, 0x00, 0x0f, 0x7c, 0x00, 0x00, 0xc0, 0x07, 0x1e, 0x00, 0xf8, 0x03, 0xf0, 0x07, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0xff, 0x1f, 0xfe, 0x3f, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0xff, 0x1f, 0xfe, 0x3f, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0xff, 0x1f, 0xfe, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0xfe, 0x01, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x7c, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x7c, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x07, 0x0e, 0x00, 0xfc, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x38, 0x00, 0x00, 0xc0, 0x03, 0x1c, 0x00, 0xf8, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0xc0, 0x03, 0x1c, 0x00, 0xf8, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xe0, 0x01, 0x38, 0x00, 0xf0, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xf0, 0x00, 0x70, 0x00, 0xf0, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xf0, 0x00, 0x70, 0x00, 0xf0, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xf0, 0x00, 0x70, 0x00, 0xf0, 0x01, 0x00, 0x70, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xe0, 0x03, 0x00, 0x30, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xe0, 0x07, 0x00, 0x38, 0x00, 0x00, 0xc0, 0x3d, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xc0, 0x07, 0x00, 0x18, 0x00, 0x00, 0xc0, 0x3d, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xc0, 0x07, 0x00, 0x18, 0x00, 0x00, 0xe0, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0xc0, 0x07, 0x00, 0x1c, 0x00, 0x00, 0xe0, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x01, 0x80, 0x0f, 0x00, 0x0c, 0x00, 0x00, 0x70, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0x80, 0x0f, 0x00, 0x0c, 0x00, 0x00, 0x70, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0x80, 0x0f, 0x00, 0x0c, 0x00, 0x00, 0x38, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0x80, 0x1f, 0x00, 0x0e, 0x00, 0x00, 0x38, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x00, 0x18, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0xe0, 0x03, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x00, 0x1c, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xe0, 0x03, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x00, 0x0e, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x03, 0x00, 0x3f, 0x00, 0x07, 0x00, 0x00, 0x0e, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x03, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x00, 0x06, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x03, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x00, 0x07, 0x3c, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0x03, 0x00, 0x3e, 0x80, 0x03, 0x00, 0x80, 0x03, 0x3c, 0x00, 0x00, 0xe0, 0x00, 0xf8, 0x03, 0x00, 0x7c, 0x80, 0x01, 0x00, 0x80, 0x03, 0x3c, 0x00, 0x00, 0xe0, 0x00, 0xe8, 0x03, 0x00, 0x7c, 0x80, 0x01, 0x00, 0x80, 0x01, 0x3c, 0x00, 0x00, 0xc0, 0x01, 0xec, 0x03, 0x00, 0xfc, 0x80, 0x01, 0x00, 0xc0, 0x01, 0x3c, 0x00, 0x00, 0x80, 0x03, 0xe6, 0x03, 0x00, 0xfc, 0xc0, 0x01, 0x00, 0xc0, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x07, 0xe3, 0x03, 0x00, 0xf8, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xff, 0xe3, 0x03, 0x00, 0xf8, 0xc0, 0x00, 0x00, 0x60, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xfc, 0xe0, 0x03, 0x00, 0xf8, 0xe1, 0x00, 0x00, 0x70, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf8, 0xe1, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x61, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x61, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x33, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xe0, 0x00, 0x78, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xe0, 0x00, 0x78, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x01, 0x38, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x01, 0x1c, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x00, 0x0e, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x60, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xe0, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x20, 0x00, 0x78, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x30, 0x00, 0x78, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x3e, 0xc0, 0x01, 0x00, 0x38, 0x00, 0xce, 0x01, 0xf8, 0x03, 0xfc, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x3c, 0x80, 0x03, 0x07, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x3f, 0xc0, 0x01, 0x0e, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0x00, 0xfe, 0xff, 0x00, 0xc0, 0x3f, 0xc0, 0x01, 0x0e, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0xf0, 0x3f, 0xe0, 0x01, 0x1e, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x30, 0x3c, 0xe0, 0x00, 0x1c, 0xf0, 0x01, 0x80, 0x1f, 0x00, 0x00, 0xe2, 0x03, 0x00, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0xe2, 0x03, 0x00, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x70, 0x00, 0x38, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0xc2, 0x0f, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0xc2, 0x0f, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x32, 0x30, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x0a, 0xe0, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xf0, 0x01, 0x00, 0x00, 0x06, 0xe0, 0x01, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x7c, 0x00, 0x00, 0x00, 0x06, 0xe0, 0x01, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x02, 0xc0, 0x01, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0x78, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0x80, 0x03, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0x80, 0x03, 0x80, 0x0f, 0x00, 0x3c, 0x7c, 0x00, 0xf8, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0xc0, 0x07, 0x00, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0xc0, 0x07, 0x80, 0x07, 0x00, 0x3c, 0x78, 0x00, 0x78, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x40, 0x00, 0x80, 0x07, 0x00, 0x3c, 0xf8, 0x00, 0x7c, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x80, 0x00, 0xc0, 0x07, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x80, 0x00, 0xc0, 0x07, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x80, 0x00, 0xc0, 0x03, 0x00, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x01, 0xc0, 0x0f, 0x00, 0x80, 0x01, 0xc0, 0x03, 0x00, 0x3c, 0xe0, 0x00, 0x1c, 0xf0, 0x01, 0xc0, 0x1f, 0x00, 0x00, 0x03, 0xe0, 0x01, 0x00, 0x3c, 0xe0, 0x01, 0x1e, 0xf0, 0x01, 0x80, 0x1f, 0x00, 0x00, 0x03, 0xe0, 0x01, 0x00, 0x3c, 0xe0, 0x01, 0x1e, 0xf8, 0x03, 0x00, 0x1f, 0x08, 0x00, 0x06, 0xf0, 0x00, 0x00, 0x7e, 0xc0, 0x01, 0x0e, 0xf8, 0x03, 0x00, 0x1f, 0x08, 0x00, 0x1c, 0x7c, 0x00, 0xc0, 0xff, 0x83, 0x03, 0x07, 0xff, 0x3f, 0x00, 0x3e, 0x08, 0x00, 0xf8, 0x1f, 0x00, 0xe0, 0xff, 0x07, 0xce, 0x01, 0xff, 0x3f, 0x00, 0x3c, 0x04, 0x00, 0xf8, 0x1f, 0x00, 0xe0, 0xff, 0x07, 0xce, 0x01, 0xff, 0x3f, 0x00, 0xf0, 0x03, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0xff, 0x3f, 0x00, 0xf0, 0x03}; xpat2-1.07/makecards/Stein/largespade.bm100644 146 144 6335 6123621411 16625 0ustar mbimathopt#define largespade_width 64 #define largespade_height 64 static char largespade_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xcf, 0xf3, 0xff, 0xff, 0x0f, 0xe0, 0xff, 0xff, 0xc7, 0xe3, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0xc3, 0xc3, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0xc1, 0x83, 0xff, 0xff, 0x07, 0xc0, 0xff, 0xff, 0xc0, 0x03, 0xff, 0xff, 0x03, 0x80, 0xff, 0x7f, 0xc0, 0x03, 0xfe, 0xff, 0x01, 0x00, 0xff, 0x7f, 0xc0, 0x03, 0xfe, 0xff, 0x00, 0x00, 0xfc, 0x0f, 0xc0, 0x03, 0xf0, 0x3f, 0x00, 0x00, 0xf0, 0x07, 0xc0, 0x03, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x7c, 0x00, 0x00, 0x00}; xpat2-1.07/makecards/Stein/config.h100644 146 144 530 5550631654 15600 0ustar mbimathopt/* configuration for the american cards */ #define NUM_RED_COLORS 8 /* number not counting background */ #define NUM_BLACK_COLORS 8 /* number not counting background */ #define RED_COLOR { 65535L * 4L / 5L, 0L, 0L } /* red is 80% */ #define BLACK_COLOR { 0L, 0L, 0L } #define WHITE_COLOR { 65535L, 65535L, 65535L } /* background is white */ xpat2-1.07/makecards/Background.xpm100644 146 144 10743 6710067044 15747 0ustar mbimathopt/* XPM */ static char *Background[] = { /* width height num_colors chars_per_pixel */ " 64 64 5 1", /* colors */ ". c #c0c0c0", "# c #cfcfcf", "a c #dfdfdf", "b c #efefef", "c c #ffffff", /* pixels */ "#...............bccccccccccccccccccccccccccccccccccccccccca.....", "c................ccccccccccccccccccccccccccccccccccccccccc.....a", "cc................ccccccccccccccccccccccccccccccccccccccc.....#c", "ccb...............#ccccccccccccccccccccccccccccccccccccc......cc", "ccc#...............bccccccccccccccccccccccccccccccccccc#.....ccc", "cccc................ccccccccccccccccccccccccccccccccccb.....bccc", "ccccc................ccccccccccccccccccccccccccccccccc.....acccc", "cccccb...............#ccccccccccccccccccccccccccccccc.....#ccccc", "cccccc#...............bccccccccccccccccccccccccccccc......cccccc", "ccccccc................cccccccccccccccccccccccccccc#.....ccccccc", "cccccccc................ccccccccccccccccccccccccccb.....bccccccc", "ccccccccb...............#ccccccccccccccccccccccccc.....acccccccc", "ccccccccc#...............bccccccccccccccccccccccc.....#ccccccccc", "cccccccccc................cccccccccccccccccccccc......cccccccccc", "ccccccccccc................cccccccccccccccccccc#.....ccccccccccc", "cccccccccccb...............#ccccccccccccccccccb.....bccccccccccc", "cccccccccccc#...............bccccccccccccccccc.....acccccccccccc", "ccccccccccccc................cccccccccccccccc......ccccccccccccc", "cccccccccccccc................cccccccccccccc......cccccccccccccc", "ccccccccccccccb...............#cccccccccccc#.....ccccccccccccccc", "ccccccccccccccc#...............bccccccccccb.....bccccccccccccccc", "cccccccccccccccc................cccccccccc.....#cccccccccccccccc", "ccccccccccccccccc................cccccccc......ccccccccccccccccc", "cccccccccccccccccb...............#cccccc......cccccccccccccccccc", "cccccccccccccccccc#...............bcccc#.....ccccccccccccccccccc", "ccccccccccccccccccc................cccb.....bccccccccccccccccccc", "cccccccccccccccccccc................cc.....#cccccccccccccccccccc", "ccccccccccccccccccccb..............ac......ccccccccccccccccccccc", "ccccccccccccccccccccc#............#c......cccccccccccccccccccccc", "cccccccccccccccccccccc............c#.....ccccccccccccccccccccccc", "ccccccccccccccccccccccc..........cb.....bccccccccccccccccccccccc", "cccccccccccccccccccccccb........bc......cccccccccccccccccccccccc", "cccccccccccccccccccccccc#......ac.......bccccccccccccccccccccccc", "ccccccccccccccccccccccccc......c.........ccccccccccccccccccccccc", "cccccccccccccccccccccccc......c#..........cccccccccccccccccccccc", "ccccccccccccccccccccccc#.....cb...........#ccccccccccccccccccccc", "ccccccccccccccccccccccb.....bc.............bcccccccccccccccccccc", "cccccccccccccccccccccc.....#c...............cccccccccccccccccccc", "ccccccccccccccccccccc......cc................ccccccccccccccccccc", "cccccccccccccccccccc......cccb...............#cccccccccccccccccc", "ccccccccccccccccccc#.....ccccc#...............bccccccccccccccccc", "ccccccccccccccccccb.....bcccccc................ccccccccccccccccc", "cccccccccccccccccc.....#cccccccc................cccccccccccccccc", "ccccccccccccccccc......cccccccccb...............#ccccccccccccccc", "cccccccccccccccc......ccccccccccc#...............bcccccccccccccc", "ccccccccccccccc#.....ccccccccccccc................cccccccccccccc", "ccccccccccccccb.....bcccccccccccccc................ccccccccccccc", "cccccccccccccc.....#cccccccccccccccb...............#cccccccccccc", "ccccccccccccc......ccccccccccccccccc#...............bccccccccccc", "cccccccccccc......ccccccccccccccccccc................ccccccccccc", "ccccccccccc#.....ccccccccccccccccccccc................cccccccccc", "ccccccccccb.....bcccccccccccccccccccccb...............#ccccccccc", "cccccccccc.....#ccccccccccccccccccccccc#...............bcccccccc", "ccccccccc......ccccccccccccccccccccccccc................cccccccc", "cccccccc......ccccccccccccccccccccccccccc................ccccccc", "ccccccc#.....ccccccccccccccccccccccccccccb...............#cccccc", "ccccccb.....bccccccccccccccccccccccccccccc#...............bccccc", "cccccc.....#ccccccccccccccccccccccccccccccc................ccccc", "ccccc......ccccccccccccccccccccccccccccccccc................cccc", "cccc......ccccccccccccccccccccccccccccccccccb...............#ccc", "ccc#.....cccccccccccccccccccccccccccccccccccc#...............bcc", "ccb.....bccccccccccccccccccccccccccccccccccccc................cc", "cc.....#ccccccccccccccccccccccccccccccccccccccc................c", "c......ccccccccccccccccccccccccccccccccccccccccb...............#" }; xpat2-1.07/etc/ 40755 146 144 0 7201342765 11643 5ustar mbimathoptxpat2-1.07/etc/COPYRIGHT.GNU100644 146 144 35433 5522477775 13731 0ustar mbimathopt GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS xpat2-1.07/etc/COPYRIGHT.Spider100644 146 144 12146 5461331004 14472 0ustar mbimathopt/* * Copyright 1990 Heather Rose and Sun Microsystems, Inc. * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting documentation, and * that the names of Donald Woods and Sun Microsystems not be used in * advertising or publicity pertaining to distribution of the software without * specific, written prior permission. Heather Rose and Sun Microsystems not be used in * advertising or publicity pertaining to distribution of the software without * specific, written prior permission. Heather Rose and Sun Microsystems make * no representations about the suitability of this software for any purpose. * It is provided "as is" without express or implied warranty. * * THE ABOVE-NAMED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT * SHALL HEATHER ROSE OR SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. * * Author: * Heather Rose * hrose@sun.com * * Sun Microsystems, Inc. * 2550 Garcia Avenue * Mountain View, CA 94043 */ /* * Copyright 1990 David Lemke and Network Computing Devices * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of Network Computing Devices not be * used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. Network Computing * Devices makes no representations about the suitability of this software * for any purpose. It is provided "as is" without express or implied * warranty. * * NETWORK COMPUTING DEVICES DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, * IN NO EVENT SHALL NETWORK COMPUTING DEVICES BE LIABLE FOR ANY SPECIAL, * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE * OR PERFORMANCE OF THIS SOFTWARE. * * Author: * Dave Lemke * lemke@ncd.com * * Network Computing Devices, Inc * 350 North Bernardo Ave * Mountain View, CA 94043 * * @(#)copyright.h 2.2 90/04/27 * */ /* % Copyright (c) 1989, Donald R. Woods and Sun Microsystems, Inc. % % Permission to use, copy, modify, distribute, and sell this software and its % documentation for any purpose is hereby granted without fee, provided that % the above copyright notice appear in all copies and that both that copyright % notice and this permission notice appear in supporting documentation, and % that the names of Donald Woods and Sun Microsystems not be used in % advertising or publicity pertaining to distribution of the software without % specific, written prior permission. Donald Woods and Sun Microsystems make % no representations about the suitability of this software for any purpose. % It is provided "as is" without express or implied warranty. % % THE ABOVE-NAMED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, % INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT % SHALL DONALD WOODS OR SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR % CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, % DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER % TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE % OF THIS SOFTWARE. % % History: Spider is a solitaire card game that can be found in various books % of same; the rules are presumed to be in the public domain. The author's % first computer implementation was on the Stanford Artificial Intelligence Lab % system (SAIL). It was later ported to the Xerox Development Environment. % The card images are loosely based on scanned-in images but were largely % redrawn by the author with help from Larry Rosenberg. % % This program is written entirely in NeWS and runs on OPEN WINDOWS 1.0. % It could be made to run much faster if parts of it were written in C, using % NeWS mainly for its display and input capabilities, but that is left as an % exercise for the reader. Spider may also run with little or no modification % on subsequent releases of OPEN WINDOWS, but no guarantee is made on this % point (nor any other; see above!). To run Spider, feed this file to 'psh'. % % Author: Don Woods % woods@sun.com % % Sun Microsystems, Inc. % 2550 Garcia Avenue % Mountain View, CA 94043 */ xpat2-1.07/etc/COPYRIGHT.xpat2100644 146 144 1345 5550060363 14267 0ustar mbimathopt/* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. (The file COPYRIGHT.GNU) You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ xpat2-1.07/etc/MOVES100644 146 144 604 5602337173 12534 0ustar mbimathoptBits 0- 8: srcind 9 bit, 0-511 Bits 9-14: dstpile 6 bit, 0- 63 Bit 15: move turned a card in a slot Bit 16-31: same for inverse move NO_MOVE: 0xffffffffUL new cards: 0xffff8000UL + number of cards (0-63) begin compound: 0xffff9000UL end compound: 0xffff9001UL impossible combinations: Both bit 31 and bit 15 set (=> new cards) srcpile and dstpile have same index => rotate slot xpat2-1.07/etc/PORTING100644 146 144 4102 6717340662 13007 0ustar mbimathoptSince xpat2 1.00, there is a better distinction between the game logic and the graphics interface. This should make porting to other platforms easier. Porting is encouraged by the authors. We would like to incorporate your port into the standard distribution, provided it uses strict ANSI C prototyping. and does not contain machine dependent #ifdef's which can be avoided. All ports must be distributed as freeware, the sources must be made available to everyone. Source files independent of any graphic interface have names that start with lower case letters and do not contain a minus sign in their name. This means, for example, that the files [^X]*.[ch] are completely independent of the choosen interface, but X-*.[ch] may contain dependencies. These files include "xpatgame.h", which includes "xpat.h". A subset of the above are files whose name is starting with "r_". They implement a certain ruleset. All source code of the above modules does require nothing except ANSI-C. POSIX.1 is fine, but not required. Filenames that start with uppercase letters are interface-dependent. The specification of the interface is followed by a minus sign. They include their interface-specific header. For all X11 implementations, this is "X-pat.h", which itself includes "xpat.h". The current filenames follow this naming convention: X-*: common to all X11 interfaces Xlib-*: Xlib interface Xaw-*: Athena Widgets interface Xm-*: Motif interface (anyone to make it work?) Xv-*: Xview interface Xol-*: Open Look interface (Planned. Any volunteers?) XQt*: Qt widgets (C++) (not finished yet, ugly code!) All filenames in the src subdirectory have a maximum length of 14 characters and consist only of the mimimum character set defined by POSIX.1 All files in the lib subdirectory also follow this restriction. (Caused by this, some help files have cryptic names.) Ports to other operating systems should perhaps use the following prefixes: PM-*: OS/2 presentation manager interface NT-*: Windows/NT interface MAC-*: Macintosh interface etc. (Just in case someone wants it. The authors stick to UNIX / X-windows) xpat2-1.07/etc/TODO100644 146 144 1461 5642341211 12422 0ustar mbimathoptTo do / problems / unfinished parts =================================== - MinWindow, PreferredWindow may give correct results after the second time, since the height of the buttonbox may vary. In certain cases (Calculation) the layout can change with the PreferredWindow command. - implement logfile locking (minor priority) - set default help to current rule set - Calculation: always the last cards are used for the start of the stacks - cheat detect for Canfield, Calculation, and Royal Cotillion - nicer and more complete texts for online help. - draw something different for an empty pile - welcome message in Xlib doesn't appear - expose bug: if there is only a small amount of memory for the X-server, some parts of the window may be blank and the user has to hit 'ctrl-L' to get the complete window. xpat2-1.07/etc/CREDITS100644 146 144 3246 7201323456 12761 0ustar mbimathoptWe'd like to have this place to thank all contributors of xpat2: Thanks to: - Maurizio Codogno for the Italian translation, and for the information on the `Canfield' and `Baker's Dozen' rules, and for extensive testing. - Andrej Moshtschensky for the translation of the Russian button labels. - Mitch DSouza for pointing out a bug where X-gfx2 tried to read Cards.conf even if the file didn't exist. - Christoph Ley and Mitch DSouza for identifying a missing NULL in Xaw-main.c. - Brandon S. Allbery for the Xview support. - Mitch DSouza for pointing out a bug in Xlib-main.c (missing loadfilename). - Jeremie for the French translation. - Harry Baecker for reporting, that the random permutation generator is really bad. - Sven Rudolph for improving the Imakefile and for supplying a patch for switching between real and effective user ids. - Thomas Ott for improving loadsave.c - Willem-Jan Monsuwe for the implementation of the rules for Blue Moon and an improvement of the Shuffle routine. - many thanks to SuSE GmbH for donating so many free Linux CDs - Joel Rosdahl for maintaining the program within the Debian distribution - Thomas Betker for German rules - Karsten Jensen for improvements on the motif interface - Christian Anzenberger for a new motif interface and work on Imakefile Hopefully many others will appear here... xpat2-1.07/etc/xpat2.lsm100644 146 144 1144 7201324326 13504 0ustar mbimathoptBegin3 Title: xpat2 - solitaire card games Version: 1.07 Entered-date: 05NOV00 Description: Solitaire card game for X11, implementation of Spider, SeaHaven, FreeCell Keywords: Solitaire, Patience, Spider, Klondike, Canfield, FreeCell, game Author: heiko@colossus.escape.de (Heiko Eissfeldt) Michael.Bischoff@gmx.net (Michael Bischoff) Maintained-by: Michael.Bischoff@gmx.net (Michael Bischoff) Primary-site: sunsite.unc.edu /pub/Linux/games/solitaires 512kB xpat2-1.07.tar.gz Platforms: X11, Athena Widgets, Xpm library, Xlib, Xview, Xm, Qt Copying-policy: GPL End xpat2-1.07/etc/HISTORY100644 146 144 60 6714024331 12752 0ustar mbimathopt(contents has been moved to the file ChangeLog) xpat2-1.07/etc/wavplay.c100644 146 144 14627 5642110375 13616 0ustar mbimathopt/****************************************************************/ /* */ /* wavplay.c */ /* Sample .WAV player for xpat2. */ /* 1994 by M. Bischoff */ /* */ /* To use this with xpat2, do the following: */ /* 1) compile this program with */ /* $ gcc -s -O wavplay.c -o wavplay */ /* 2) Then, make a named pipe /tmp/audio: */ /* $ mknod /tmp/audio p */ /* 3) Compile the module X-sound_SUN.c with the */ /* additional option -DAUDIO_DEVICE=\"/tmp/audio\" */ /* to redirect sound output to the named pipe. */ /* 4) start the WAV-player: */ /* $ wavplay & */ /* 5) substitute all .au files with .wav files, but keep */ /* the original name. */ /* 6) start xpat2: */ /* $ xpat2 */ /* Have fun! (and don't forget to kill wavplay later) */ /* */ /****************************************************************/ #include #include #include #include #include #include #include struct wavfmt { char c_RIFF[4]; long len_file; char c_WAVE[4]; char c_fmt[4]; long len_fmt; /* excluding c_fmt & len_fmt. 16 */ short monostereo; short numchannels; long samplerate; long bytespersecond; short bytespersample; short bitspersample; char c_data[4]; long len_data; } wav_hdr; static void stat8(unsigned char *p, int *_l, int *_u, int n) { int l = 0, u = 0; while (n--) { int c; c = ((int)*p++ - 0x80) << 8; if (c < l) l = c; if (c > u) u = c; } *_u = u; *_l = l; } static void stat16(short *p, int *_l, int *_u, int n) { int l = 0, u = 0; while (n--) { if (*p < l) l = *p; if (*p > u) u = *p; ++p; } *_u = u; *_l = l; } #if 0 static void wav_stat(void *data, const char *filename) { int l, u; printf("%s is %d bit %s at %ld Hz, %ld samples\n", filename, wav_hdr.bitspersample, wav_hdr.monostereo != 1 ? "STEREO" : "MONO", wav_hdr.samplerate, wav_hdr.len_data); if (wav_hdr.monostereo != 1) return; /* cannot handle */ if (wav_hdr.bitspersample == 8) stat8((unsigned char *)data, &l, &u, wav_hdr.len_data); else if (wav_hdr.bitspersample == 16) stat16((short *)data, &l, &u, wav_hdr.len_data / 2); else return; { double f1, f2, factor; f1 = l < 0 ? -32768.0 / l : 65535.0; f2 = u > 0 ? 32767.0 / u : 65535.0; factor = f1 < f2 ? f1 : f2; printf("min is -%04xH, max is %04xH, scale with %f for full amplitude\n", -l, u, factor); } } #endif static double abbreviation = 1.0; /* playing speed factor */ static double volumescale = 1.0; /* volume scaling factor */ static int writefile = 0; static int fd_audio; static void wav_play(unsigned char *data, long len, const char *filename) { long i; const char *fmt; fmt = (wav_hdr.monostereo != 1) ? "STEREO" : "MONO"; if ((fd_audio=open("/dev/dsp", O_WRONLY, 0)) == EOF) { fprintf(stderr, "Cannot open /dev/dsp"); exit(1); } /* speed adjust */ i = wav_hdr.samplerate; wav_hdr.samplerate = (long)((double)wav_hdr.samplerate * abbreviation); if (wav_hdr.samplerate > 22222) { long j; wav_hdr.samplerate /= 2; len /= 2; if (wav_hdr.bitspersample == 8) for (j = 0; j < len; ++j) data[j] = data[2*j]; else for (j = 0; j < len; j += 2) { data[j] = data[2*j]; data[j+1] = data[2*j+1]; } } /* volume scale */ if (wav_hdr.bitspersample == 16) { /* 16 bit => 8 bit & scaling */ long j, clip = 0; double new; unsigned char *wr; short *rd; wr = data; rd = (short *)data; len /= 2; for (j = 0; j < len; ++j) { new = (*rd++ * volumescale) + 32768.0; if (new < 0.0) { new = 0.0; ++clip; } else if (new > 65535.5) { new = 65535.0; ++clip; } *wr++ = (unsigned char)(new / 256.0); if (clip == 1) { printf("warning: clipping at sample %ld\n", j); ++clip; } } if (clip) printf("%ld samples clipped\n", clip-1); wav_hdr.bytespersecond >>= 1; wav_hdr.bytespersample >>= 1; wav_hdr.bitspersample >>= 1; wav_hdr.len_data >>= 1; } else if (volumescale != 1.0) { long j, clip = 0; double new; printf(" *** warning: volume scaling on 8 bit data may reduce quality ***\n"); for (j = 0; j < len; ++j) { new = ((double)data[j] - 128.0) * volumescale + 128.0; if (new < 0.0) { new = 0.0; ++clip; } else if (new >= 255.5) { ++clip; new = 255.0; } data[j] = (unsigned char)new; if (clip == 1) { printf("warning: clipping at sample %ld\n", j); ++clip; } } if (clip) printf("%ld samples clipped\n", clip-1); } ioctl(fd_audio, SNDCTL_DSP_SPEED, &wav_hdr.samplerate); #if 0 printf("%8ld bytes (%s, %2d bits) %ld (%ld) Hz, file \"%s\", %d channels\n", len, fmt, wav_hdr.bitspersample, i, wav_hdr.samplerate, filename, wav_hdr.numchannels); #endif if (wav_hdr.monostereo != 1) return; /* cannot handle */ write(fd_audio, data, len); close(fd_audio); if (writefile) { FILE *fp; fp = fopen("/tmp/audio.wav", "wb"); fwrite(&wav_hdr, 1, sizeof(struct wavfmt), fp); fwrite(data, 1, wav_hdr.len_data, fp); fclose(fp); } } static void *readfile(const char *filename) { int fd; size_t cnt; void *data; if ((fd = open(filename, O_RDONLY)) < 0) { fprintf(stderr, "failed to open %s\n", filename); return NULL; } if ((cnt = read(fd, &wav_hdr, sizeof(wav_hdr))) != sizeof(wav_hdr)) { fprintf(stderr, "failed to read %s: only got %d byte\n", filename, cnt); close(fd); return NULL; } #if 0 fprintf(stderr, "audio data length is %d byte\n", wav_hdr.len_data); fprintf(stderr, "first bytes are %c%c%c%c \n", wav_hdr.c_RIFF[0], wav_hdr.c_RIFF[1], wav_hdr.c_RIFF[2], wav_hdr.c_RIFF[3]); #endif if (!(data = malloc(wav_hdr.len_data))) { fprintf(stderr, "not enough memory to read %s\n", filename); close(fd); return NULL; } /* read the data. This may loop */ { int rest, this; char *ptr; rest = wav_hdr.len_data; ptr = data; while (rest && (this = read(fd, ptr, rest))) { ptr += this; rest -= this; } if (rest) { fprintf(stderr, "cannot read chunk, %s\n", filename); close(fd); free(data); return NULL; } } close(fd); return data; } int main(int argc, char *argv[]) { for (;;) { void *data; if (!(data = readfile("/tmp/audio"))) continue; wav_play(data, wav_hdr.len_data, "/tmp/audio"); free(data); } return 0; } xpat2-1.07/etc/ChangeLog100644 146 144 7163 7201342756 13521 0ustar mbimathoptChanges from xpat2-0.91 to xpat2-0.92 ------------------------------------- - fixed a bug in X-gfx2.c: tried to read Cards.conf if open failed. Thanks to Mitch DSouza for pointing this out. - changed the default behaviour of the Seahaven rules to conform to the "official" Seahaven rules. The relaxed variant of the previous xpat versions may be played by 'xpat2 -rules Seahaven -p0 1' Changes from xpat2-0.92 to xpat2-1.00 ------------------------------------- - changed the version number ;-) added manual Changes from xpat2-1.00 to xpat2-1.03 ------------------------------------- Most of this work was done by others. See CREDITS file for details. - removed the 'cmds' component from the graphic structure and code for the unused 'commands' resource of the Tableau widget - removed #ifdef DEBUGGING's in Xaw-main.c and Xm-main.c - removed sun.c - completed permission setting in Imakefile (install target) - parsing hex definitions of a key was wrong in messages.c - fixed a bug in Xaw-main.c, a variable argument list procedure call lacked a trailing NULL - added Xview support - improved French translation Changes from xpat2-1.03 to xpat2-1.04 ------------------------------------- Most of this work was done by others. See CREDITS file for details. - added a mkdirhier in Imakefile - added cuserid call in loadsave.c - changed the random number distribution - switch real and effective user ids - removed multiple defined global variables (commons) for elf support TODO: - generate solvable starting positions Changes from xpat2-1.04 to xpat2-1.05 (released 4-Apr-1996) ----------------------------------------------------------- - removed a bug in X-gfx2.c which made it impossible to use absolute directories as argument to the -xpmdir option. - new rules: Oonsoo Changes from xpat2-1.05 to xpat2-1.06 ------------------------------------- - The BlueMoon rule set was added by Willem Monsuwe - FreeCell rules are smarter now when moving cards and slots are free - Cardbacks are loaded later, have a fallback Cardback when loading of a one with too much colors fails - new Cardback: Tux, the Linux penguin, antialiased X-logo background - new xpm directory 'fallback', with images using less colours - more code moved from X-*.c into UI-independent files - minor improvements for the Motif/Lesstif UI, renamed useMotif to useXm (libXm.a is the common name of the library for Motif and LessTif) - started work on the Qt widget user interface, will perhaps later support KDE, despite I think it's too much Windooze-like - incorporated the patches from the Debian distribution - added loading of cardsets for monochrome servers from X-gfx1 into X-gfx2 - improved handling of the LANG environment variable (access checking, handling of ISO3166 codes, and possible fallbacks to the English language in case the given LANG value fails) - new sound module X-sound_NAS.c, using the NAS network audio system. (useful when you're on an X-Terminal with no local /dev/audio). Attention: this requires the installation of the (free) NAS server. - script for incorporating cardsets from pysol. pysol can be found at ftp://ftp.metalab.unc.de/pub/Linux/games/solitaire Changes from xpat2-1.06 to xpat2-1.07 ------------------------------------- This is mostly a contrib release. I have added improvements obtained from the net: - German rules by Thomas Betker (thomas.betker@freenet.de) - improvements for the motif interface by Karsten Jensen (karsten.w.jensen@get2net.dk) - a new motif interface and work on Imakefile by Christian Anzenberger (christian.anzenberger@siemens.at) - minor adaptions to make xpat2 work with Qt 2.x xpat2-1.07/etc/xpat2.magic100644 146 144 1057 5662133643 14005 0ustar mbimathopt# /etc/magic values for xpat and xsok as of 13-nov-1994 # 1) for low-endian machines (i386) 0 long 0x19740000 xpat save game file 0 long 0x1a740000 xpat2 save game file 0 long 0x1b740000 xsok save game file 0 long 0x1c740000 xsok simple save game file (autosolver) 0 long 0x1d740000 xsok highscore file # 2) for high-endian machines (SUN, HP-RISC) 0 long 0x00007419 xpat save game file 0 long 0x0000741a xpat2 save game file 0 long 0x0000741b xsok save game file 0 long 0x0000741c xsok simple save game file (autosolver) 0 long 0x0000741d xsok highscore file xpat2-1.07/etc/xpat.log100666 146 144 240530 7201334061 13455 0ustar mbimathoptOn Wed Feb 10 22:26:31 1993 user "mbi" on honeybun finished patience Spider with 12 slots with 2 cards facedown game seed 729378329 with 256 moves in a truly noble manner! On Sat Feb 13 00:43:40 1993 user "mbi" on honeybun finished patience Stairs game seed 729559223 with 205 moves and cheatet! (count = 1) On Sat Feb 20 21:17:22 1993 user "mbi" on honeybun finished patience Spider game seed 730236748 with 338 moves in a truly noble manner! On Sun Feb 21 19:11:16 1993 user "mbi" on honeybun finished patience HM game seed 730316593 with 223 moves in a truly noble manner! On Fri Feb 26 21:41:21 1993 user "mbi" on honeybun finished patience Spider with 12 slots with 2 cards facedown game seed 730757120 with 342 moves in a truly noble manner! On Wed Mar 3 01:47:06 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience Spider game seed 731117274 with 297 moves and cheatet! (count = 3) On Thu Mar 4 17:38:22 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience HM game seed 731261471 with 227 moves in a truly noble manner! On Fri Mar 5 01:47:38 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience Spider game seed 731290941 with 224 moves in a truly noble manner! On Sat Mar 6 21:30:34 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience Spider game seed 731447766 with 232 moves in a truly noble manner! On Sun Mar 7 00:59:10 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience Stairs game seed 731460622 with 253 moves in a truly noble manner! On Sun Mar 7 12:04:53 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience HM game seed 731500649 with 205 moves in a truly noble manner! On Sun Mar 7 21:38:18 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience HM with 6 jokers game seed 731535209 with 253 moves in a truly noble manner! On Sat Mar 13 22:54:12 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience Klondike game seed 732059302 with 126 moves in a truly noble manner! On Sun Mar 14 10:40:19 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience Klondike flipping the deck 1 times game seed 732101679 with 125 moves in a truly noble manner! On Wed Mar 17 20:33:32 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience Gypsy with 4 jokers game seed 732389445 with 287 moves and cheatet! (count = 971) On Thu Mar 18 23:31:51 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience FreeCell game seed 732493764 with 88 moves in a truly noble manner! On Thu Mar 18 23:56:32 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience FreeCell game seed 732494960 with 112 moves in a truly noble manner! On Fri Mar 19 00:21:50 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience FreeCell game seed 732496521 with 97 moves in a truly noble manner! On Fri Mar 19 01:13:35 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience FreeCell game seed 732499768 with 98 moves in a truly noble manner! On Fri Mar 19 19:46:23 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience FreeCell game seed 732566525 with 93 moves in a truly noble manner! On Fri Mar 19 22:16:30 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience Spider game seed 732574016 with 225 moves and cheatet! (count = 2) On Fri Mar 19 22:22:23 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience FreeCell game seed 732575832 with 102 moves in a truly noble manner! On Sat Mar 20 17:18:15 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience FreeCell game seed 732643960 with 104 moves in a truly noble manner! On Mon Mar 22 01:05:04 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience Gypsy game seed 732757960 with 200 moves in a truly noble manner! On Thu Mar 25 18:38:27 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience Gypsy game seed 733079120 with 199 moves and cheatet! (count = 1000) On Fri Mar 26 21:16:46 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience Gypsy game seed 733176150 with 216 moves in a truly noble manner! On Sun Mar 28 20:55:38 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience FreeCell game seed 733344744 with 103 moves in a truly noble manner! On Sun Mar 28 22:32:21 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience FreeCell game seed 733350415 with 99 moves in a truly noble manner! On Sun Mar 28 22:44:06 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience FreeCell game seed 733351256 with 102 moves in a truly noble manner! On Tue Mar 30 22:22:28 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience Klondike flipping the deck 1 times game seed 733522716 with 128 moves in a truly noble manner! On Thu Apr 1 16:11:35 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience Gypsy game seed 733672415 with 196 moves in a truly noble manner! On Fri Apr 2 11:32:39 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience FreeCell game seed 733742863 with 106 moves in a truly noble manner! On Fri Apr 2 17:37:09 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience Gypsy game seed 733764289 with 199 moves in a truly noble manner! On Fri Apr 2 19:23:37 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience FreeCell game seed 733771181 with 95 moves in a truly noble manner! On Fri Apr 2 21:12:45 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience FreeCell game seed 733777750 with 101 moves in a truly noble manner! On Sat Apr 3 17:08:13 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience Spider game seed 733847586 with 298 moves in a truly noble manner! On Sat Apr 3 17:24:24 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience Klondike flipping the deck 2 times game seed 733850234 with 133 moves and cheatet! (count = 1) On Sun Apr 4 14:43:02 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience Gypsy game seed 733926617 with 187 moves in a truly noble manner! On Mon Apr 5 21:49:17 1993 user "mbi"on honeybun running Linux Version 0.99.pl5-54 (02/19/93) finished patience FreeCell game seed 734039069 with 99 moves in a truly noble manner! On Sat Apr 10 11:40:45 1993 user "mbi"on honeybun running Linux Version 0.99.pl7-7 (03/14/93) finished patience FreeCell game seed 734434681 with 108 moves in a truly noble manner! On Sat Apr 10 16:34:34 1993 user "mbi"on honeybun running Linux Version 0.99.pl7-7 (03/14/93) finished patience FreeCell game seed 734452125 with 110 moves in a truly noble manner! On Sat Apr 10 19:14:07 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-1 (04/10/93) finished patience FreeCell game seed 734461879 with 107 moves in a truly noble manner! On Sat Apr 10 19:24:54 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-1 (04/10/93) finished patience Klondike flipping the deck 2 times game seed 734462226 with 129 moves and cheatet! (count = 2) On Thu Apr 15 17:57:54 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-1 (04/10/93) finished patience Gypsy game seed 734888198 with 196 moves in a truly noble manner! On Fri Apr 23 19:25:15 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-1 (04/10/93) finished patience Gypsy game seed 735584646 with 207 moves in a truly noble manner! On Sun Apr 25 11:43:23 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-1 (04/10/93) finished patience Gypsy game seed 735729904 with 191 moves in a truly noble manner! On Tue May 4 23:20:33 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-1 (04/10/93) finished patience Seahaven game seed 736550345 with 86 moves in a truly noble manner! On Tue May 4 23:54:10 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-1 (04/10/93) finished patience Seahaven game seed 736552176 with 93 moves in a truly noble manner! On Sun May 9 12:13:32 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-1 (04/10/93) finished patience Seahaven game seed 736942001 with 96 moves in a truly noble manner! On Sun May 9 14:43:53 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-1 (04/10/93) finished patience Seahaven game seed 736951133 with 95 moves in a truly noble manner! On Sun May 9 14:51:09 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-1 (04/10/93) finished patience Seahaven game seed 736951560 with 92 moves in a truly noble manner! On Sun May 9 15:07:42 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-1 (04/10/93) finished patience Gypsy game seed 736951898 with 204 moves in a truly noble manner! On Sun May 9 15:23:47 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-1 (04/10/93) finished patience Seahaven game seed 736953361 with 96 moves in a truly noble manner! On Sun May 9 15:33:52 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-1 (04/10/93) finished patience Seahaven game seed 736954280 with 89 moves in a truly noble manner! On Sun May 9 16:54:12 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-1 (04/10/93) finished patience Gypsy game seed 736958200 with 210 moves in a truly noble manner! On Thu May 20 16:24:10 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-1 (04/10/93) finished patience Seahaven game seed 737907666 with 83 moves in a truly noble manner! On Thu May 20 16:38:31 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-1 (04/10/93) finished patience Gypsy game seed 737907856 with 194 moves in a truly noble manner! On Thu May 20 16:53:09 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-1 (04/10/93) finished patience Gypsy game seed 737908808 with 187 moves in a truly noble manner! On Tue May 25 18:21:00 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-1 (04/10/93) finished patience Seahaven game seed 738346673 with 71 moves in a truly noble manner! On Tue May 25 23:16:41 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-1 (04/10/93) finished patience Gypsy game seed 738363836 with 224 moves in a truly noble manner! On Wed May 26 16:31:44 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-1 (04/10/93) finished patience Gypsy game seed 738425747 with 219 moves and cheatet! (count = 1) On Wed Jun 2 15:55:47 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-2 (06/01/93) finished patience Gypsy game seed 739028256 with 189 moves in a truly noble manner! On Wed Jun 2 16:00:55 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-2 (06/01/93) finished patience Seahaven game seed 739029369 with 96 moves in a truly noble manner! On Thu Jun 10 16:03:27 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-2 (06/01/93) finished patience Seahaven game seed 739720755 with 80 moves in a truly noble manner! On Thu Jun 10 16:08:23 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-2 (06/01/93) finished patience Seahaven game seed 739721020 with 78 moves in a truly noble manner! On Thu Jun 10 16:19:19 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-2 (06/01/93) finished patience Seahaven game seed 739721669 with 91 moves in a truly noble manner! On Thu Jun 10 16:36:25 1993 user "mbi"on honeybun running Linux Version 0.99.pl8-2 (06/01/93) finished patience Gypsy game seed 739722106 with 187 moves and cheatet! (count = 1) On Wed Jun 16 18:25:20 1993 user "mbi"on honeybun running Linux Version 0.99.10 (#1 Thu Jun 10 21:17:34 MET DST 1993) finished patience Gypsy game seed 740247184 with 201 moves in a truly noble manner! On Thu Jun 24 18:11:18 1993 user "mbi"on honeybun running Linux Version 0.99.10 (#1 Thu Jun 10 21:17:34 MET DST 1993) finished patience Seahaven game seed 740938149 with 99 moves in a truly noble manner! On Sat Jun 26 20:20:12 1993 on honeybun running Linux Version 0.99.10 (#1 Thu Jun 10 21:17:34 MET DST 1993) finished patience Gypsy game seed 741117908 with 203 moves and cheatet! (count = 979) On Sun Jun 27 14:03:02 1993 on honeybun running Linux Version 0.99.10 (#1 Thu Jun 10 21:17:34 MET DST 1993) finished patience Gypsy game seed 741181971 with 191 moves in a truly noble manner! On Sun Jun 27 14:19:40 1993 on honeybun running Linux Version 0.99.10 (#1 Thu Jun 10 21:17:34 MET DST 1993) finished patience Gypsy game seed 741183240 with 186 moves and cheatet! (count = 1) On Sun Jun 27 14:32:04 1993 on honeybun running Linux Version 0.99.10 (#1 Thu Jun 10 21:17:34 MET DST 1993) finished patience Gypsy game seed 741183872 with 211 moves and cheatet! (count = 1) On Sun Jun 27 23:30:44 1993 on honeybun running Linux Version 0.99.10 (#1 Thu Jun 10 21:17:34 MET DST 1993) finished patience Gypsy game seed 741215906 with 219 moves in a truly noble manner! On Wed Jun 30 18:53:18 1993 on honeybun running Linux Version 0.99.10 (#1 Thu Jun 10 21:17:34 MET DST 1993) finished patience FreeCell game seed 741458977 with 99 moves in a truly noble manner! On Wed Jun 30 18:55:22 1993 on honeybun running Linux Version 0.99.10 (#1 Thu Jun 10 21:17:34 MET DST 1993) finished patience Seahaven game seed 741459211 with 78 moves and cheatet! (count = 1000) On Wed Jun 30 19:26:44 1993 on honeybun running Linux Version 0.99.10 (#1 Thu Jun 10 21:17:34 MET DST 1993) finished patience Gypsy game seed 741460525 with 208 moves in a truly noble manner! On Thu Jul 1 17:14:44 1993 on honeybun running Linux Version 0.99.10 (#1 Thu Jun 10 21:17:34 MET DST 1993) finished patience Gypsy game seed 741538769 with 190 moves in a truly noble manner! On Thu Jul 1 17:30:57 1993 on honeybun running Linux Version 0.99.10 (#1 Thu Jun 10 21:17:34 MET DST 1993) finished patience Gypsy game seed 741539700 with 204 moves and cheatet! (count = 1010) On Thu Jul 1 23:55:27 1993 on honeybun running Linux Version 0.99.10 (#1 Thu Jun 10 21:17:34 MET DST 1993) finished patience Gypsy game seed 741562821 with 200 moves in a truly noble manner! On Thu Jul 1 23:57:16 1993 on honeybun running Linux Version 0.99.10 (#1 Thu Jun 10 21:17:34 MET DST 1993) finished patience FreeCell game seed 741563730 with 88 moves in a truly noble manner! On Thu Jul 1 23:59:00 1993 on honeybun running Linux Version 0.99.10 (#1 Thu Jun 10 21:17:34 MET DST 1993) finished patience FreeCell game seed 741563839 with 84 moves in a truly noble manner! On Fri Jul 2 00:00:42 1993 on honeybun running Linux Version 0.99.10 (#1 Thu Jun 10 21:17:34 MET DST 1993) finished patience FreeCell game seed 741563967 with 94 moves in a truly noble manner! On Fri Jul 2 00:10:07 1993 on honeybun running Linux Version 0.99.10 (#1 Thu Jun 10 21:17:34 MET DST 1993) finished patience Klondike flipping the deck 2 times game seed 741564251 with 137 moves in a truly noble manner! On Sun Jul 4 16:47:11 1993 on honeybun running Linux Version 0.99.10 (#1 Thu Jun 10 21:17:34 MET DST 1993) finished patience Seahaven game seed 741797065 with 87 moves in a truly noble manner! On Tue Jul 13 18:34:50 1993 on honeybun running Linux Version 0.99.10 (#1 Thu Jun 10 21:17:34 MET DST 1993) finished patience Seahaven game seed 742581126 with 92 moves in a truly noble manner! On Tue Jul 13 18:42:59 1993 on honeybun running Linux Version 0.99.10 (#1 Thu Jun 10 21:17:34 MET DST 1993) finished patience Seahaven game seed 742581298 with 97 moves in a truly noble manner! On Tue Jul 13 19:01:01 1993 on honeybun running Linux Version 0.99.10 (#1 Thu Jun 10 21:17:34 MET DST 1993) finished patience Gypsy game seed 742582222 with 218 moves and cheatet! (count = 1) On Thu Jul 22 17:48:20 1993 user "mbi"on honeybun running Linux Version 0.99.10 (#1 Thu Jun 10 21:17:34 MET DST 1993) finished patience Gypsy game seed 743355181 with 195 moves and cheatet! (count = 2) On Thu Jul 22 17:51:17 1993 user "mbi"on honeybun running Linux Version 0.99.10 (#1 Thu Jun 10 21:17:34 MET DST 1993) finished patience Seahaven game seed 743356104 with 89 moves in a truly noble manner! On Thu Jul 29 17:11:05 1993 user "mbi"on honeybun running Linux Version 0.99.10 (#2 Tue Jul 27 20:34:02 MET DST 1993) finished patience Gypsy game seed 743957279 with 191 moves and cheatet! (count = 3) On Thu Jul 29 17:17:42 1993 user "mbi"on honeybun running Linux Version 0.99.10 (#2 Tue Jul 27 20:34:02 MET DST 1993) finished patience Seahaven game seed 743958847 with 84 moves in a truly noble manner! On Thu Jul 29 17:28:40 1993 user "mbi"on honeybun running Linux Version 0.99.10 (#2 Tue Jul 27 20:34:02 MET DST 1993) finished patience Gypsy game seed 743959068 with 203 moves and cheatet! (count = 1) On Thu Aug 5 17:02:50 1993 user "mbi"on honeybun running Linux Version 0.99.10 (#2 Tue Jul 27 20:34:02 MET DST 1993) finished patience Gypsy game seed 744562600 with 190 moves and cheatet! (count = 1) On Thu Aug 5 17:06:15 1993 user "mbi"on honeybun running Linux Version 0.99.10 (#2 Tue Jul 27 20:34:02 MET DST 1993) finished patience Seahaven game seed 744563029 with 85 moves in a truly noble manner! On Thu Aug 12 16:52:53 1993 user "mbi"on honeybun running Linux Version 0.99.10 (#2 Tue Jul 27 20:34:02 MET DST 1993) finished patience Seahaven game seed 745166999 with 81 moves in a truly noble manner! On Sun Sep 5 11:54:09 1993 user "mbi"on honeybun running Linux Version 0.99.10 (#2 Tue Jul 27 20:34:02 MET DST 1993) finished patience Seahaven game seed 747222799 with 79 moves in a truly noble manner! On Sun Sep 5 11:56:15 1993 user "mbi"on honeybun running Linux Version 0.99.10 (#2 Tue Jul 27 20:34:02 MET DST 1993) finished patience Seahaven game seed 747222913 with 87 moves in a truly noble manner! On Sun Sep 5 11:58:51 1993 user "mbi"on honeybun running Linux Version 0.99.10 (#2 Tue Jul 27 20:34:02 MET DST 1993) finished patience Seahaven game seed 747223011 with 83 moves in a truly noble manner! On Sun Sep 5 12:00:42 1993 user "mbi"on honeybun running Linux Version 0.99.10 (#2 Tue Jul 27 20:34:02 MET DST 1993) finished patience Seahaven game seed 747223203 with 81 moves in a truly noble manner! On Sun Jan 30 00:46:48 1994 on honeybun running Linux Version 0.99.13 (#8 Sun Dec 12 20:31:16 MET 1993) finished patience Gypsy game seed 759885861 with 207 moves in a truly noble manner! On Sun Jan 30 00:53:54 1994 on honeybun running Linux Version 0.99.13 (#8 Sun Dec 12 20:31:16 MET 1993) finished patience FreeCell game seed 759887361 with 103 moves in a truly noble manner! On Sun Jan 30 01:14:51 1994 on honeybun running Linux Version 0.99.13 (#8 Sun Dec 12 20:31:16 MET 1993) finished patience Klondike flipping the deck 2 times game seed 759888483 with 133 moves in a truly noble manner! On Sun Jan 30 01:24:16 1994 on honeybun running Linux Version 0.99.13 (#8 Sun Dec 12 20:31:16 MET 1993) finished patience Seahaven game seed 759888896 with 90 moves in a truly noble manner! On Sun Jan 30 02:18:54 1994 on honeybun running Linux Version 0.99.13 (#8 Sun Dec 12 20:31:16 MET 1993) finished patience Spider game seed 759890064 with 335 moves in a truly noble manner! On Mon Jan 31 21:44:44 1994 on honeybun running Linux Version 0.99.14x (#1 Mon Jan 31 18:59:12 MET 1994) finished patience Gypsy game seed 760048178 with 207 moves in a truly noble manner! On Wed Feb 9 22:47:47 1994 user "mbi" on moulder running Linux Version 0.99.15 (#6 Sun Feb 6 16:21:18 MET 1994) finished patience FreeCell game seed 760829657 with 100 moves in a truly noble manner! On Sun Feb 27 18:47:22 1994 someone on moulder running Linux Version 0.99.15g (#1 Tue Feb 22 17:01:58 MET 1994) finished patience Gypsy game seed 762370528 with 206 moves in a truly noble manner! On Tue Mar 8 08:13:59 1994 someone on moulder running Linux Version pre-1.0 (#1 Mon Mar 7 17:20:46 MET 1994) finished patience Gypsy game seed 763110069 with 206 moves in a truly noble manner! On Tue Mar 8 15:22:23 1994 someone on moulder running Linux Version pre-1.0 (#1 Mon Mar 7 17:20:46 MET 1994) finished patience Gypsy game seed 763135833 with 201 moves in a truly noble manner! On Tue Mar 8 16:07:49 1994 someone on moulder running Linux Version pre-1.0 (#1 Mon Mar 7 17:20:46 MET 1994) finished patience FreeCell game seed 763137267 with 95 moves in a truly noble manner! Tue Mar 8 20:34:44 1994 someone on moulder running Linux Version pre-1.0 (#1 Mon Mar 7 17:20:46 MET 1994) finished patience Gypsy game seed 763154625 with 216 moves in a truly noble manner! Tue Mar 8 23:19:05 1994 "mbi" on moulder running Linux Version pre-1.0 (#1 Mon Mar 7 17:20:46 MET 1994) finished patience Gypsy game seed 763164466 with 209 moves in a truly noble manner! Thu Mar 10 20:02:32 1994 someone on moulder running Linux Version pre-1.0 (#1 Mon Mar 7 17:20:46 MET 1994) finished patience FreeCell game seed 763325922 with 97 moves in a truly noble manner! Sun Mar 13 10:20:30 1994 "mbi" on moulder running Linux Version pre-1.0 (#1 Mon Mar 7 17:20:46 MET 1994) finished patience Klondike flipping the deck 2 times game seed 763520546 with 130 moves and cheatet! (count = 1) Mon Mar 14 21:18:44 1994 "mbi" on moulder running Linux Version 1.0 (#1 Mon Mar 14 19:45:36 MET 1994) finished patience Klondike flipping the deck 3 times game seed 763675878 with 153 moves in a truly noble manner! Tue Mar 15 22:21:04 1994 "mbi" on moulder running Linux Version 1.0 (#1 Mon Mar 14 19:45:36 MET 1994) finished patience Gypsy game seed 763765747 with 221 moves and cheatet! (count = 3) Tue Mar 15 23:47:32 1994 "mbi" on moulder running Linux Version 1.0 (#1 Mon Mar 14 19:45:36 MET 1994) finished patience Gypsy game seed 763771254 with 190 moves in a truly noble manner! Wed Mar 16 09:07:48 1994 "mbi" on moulder running Linux Version 1.0 (#1 Mon Mar 14 19:45:36 MET 1994) finished patience Gypsy game seed 763804612 with 205 moves in a truly noble manner! Wed Mar 16 17:19:34 1994 "mbi" on moulder running Linux Version 1.0 (#1 Mon Mar 14 19:45:36 MET 1994) finished patience Gypsy game seed 763834048 with 194 moves in a truly noble manner! Mon Mar 21 21:51:16 1994 "mbi" on moulder running Linux Version 1.0.2 (#3 Mon Mar 21 16:25:17 MET 1994) finished patience FreeCell game seed 764282939 with 105 moves in a truly noble manner! Wed Mar 23 16:55:04 1994 "mbi" on moulder running Linux Version 1.0.4 (#4 Tue Mar 22 20:24:55 MET 1994) finished patience Gypsy using xpat version 0.1-Xaw, game seed 764437587 with 192 moves in a truly noble manner! Thu Mar 24 11:14:53 1994 "mbi" on moulder running Linux Version 1.0.4 (#4 Tue Mar 22 20:24:55 MET 1994) finished patience Gypsy using xpat version 0.1-Xaw, game seed 764503230 with 209 moves in a truly noble manner! Thu Mar 24 11:58:56 1994 "mbi" on moulder running Linux Version 1.0.4 (#4 Tue Mar 22 20:24:55 MET 1994) finished patience Gypsy using xpat version 0.1-Xaw, game seed 764506256 with 189 moves in a truly noble manner! Thu Mar 24 12:39:36 1994 "mbi" on moulder running Linux Version 1.0.4 (#4 Tue Mar 22 20:24:55 MET 1994) finished patience Gypsy using xpat version 0.1-Xaw, game seed 764508344 with 224 moves and cheatet! (count = 1) Thu Mar 24 14:35:16 1994 "mbi" on moulder running Linux Version 1.0.4 (#4 Tue Mar 22 20:24:55 MET 1994) finished patience Gypsy with 12 slots using xpat version 0.1-Xaw, game seed 764515650 with 225 moves in a truly noble manner! Thu Mar 24 14:37:18 1994 "mbi" on moulder running Linux Version 1.0.4 (#4 Tue Mar 22 20:24:55 MET 1994) finished patience Gypsy with 12 slots using xpat version 0.1-Xaw, game seed 764516139 with 175 moves in a truly noble manner! Thu Mar 24 15:19:41 1994 "mbi" on moulder running Linux Version 1.0.4 (#4 Tue Mar 22 20:24:55 MET 1994) finished patience Gypsy using xpat version 0.1-Xaw, game seed 764518056 with 228 moves in a truly noble manner! Thu Mar 24 15:37:21 1994 "mbi" on moulder running Linux Version 1.0.4 (#4 Tue Mar 22 20:24:55 MET 1994) finished patience Klondike flipping the deck 2 times using xpat version 0.1-Xaw, game seed 764519248 with 128 moves in a truly noble manner! Thu Mar 24 18:50:03 1994 "mbi" on moulder running Linux Version 1.0.4 (#4 Tue Mar 22 20:24:55 MET 1994) finished patience Gypsy using xpat version 0.1-Xaw, game seed 764530864 with 223 moves in a truly noble manner! Fri Mar 25 11:30:46 1994 "mbi" on moulder running Linux Version 1.0.4 (#4 Tue Mar 22 20:24:55 MET 1994) finished patience FreeCell using xpat version 0.2-Xaw, game seed 764591398 with 91 moves in a truly noble manner! Fri Mar 25 11:35:17 1994 "mbi" on moulder running Linux Version 1.0.4 (#4 Tue Mar 22 20:24:55 MET 1994) finished patience Seahaven using xpat version 0.2-Xaw, game seed 764591564 with 78 moves in a truly noble manner! Fri Mar 25 12:33:06 1994 "mbi" on moulder running Linux Version 1.0.4 (#4 Tue Mar 22 20:24:55 MET 1994) finished patience Gypsy using xpat version 0.2-Xaw, game seed 764594504 with 200 moves in a truly noble manner! Mon Mar 28 21:53:12 1994 "mbi" on moulder running Linux Version 1.0.4 (#4 Tue Mar 22 20:24:55 MET 1994) finished patience FreeCell xpat version 1.2, game seed 764884285 with 96 moves in a truly noble manner! Tue Mar 29 00:21:52 1994 "mbi" on moulder running Linux Version 1.0.4 (#4 Tue Mar 22 20:24:55 MET 1994) finished patience Spider using xpat version 0.3-Xaw, game seed 764890502 with 303 moves and cheatet! (count = 2) Tue Mar 29 00:35:33 1994 "mbi" on moulder running Linux Version 1.0.4 (#4 Tue Mar 22 20:24:55 MET 1994) finished patience FreeCell using xpat version 0.3-Xaw, game seed 764893975 with 75 moves in a truly noble manner! Wed Mar 30 00:58:47 1994 "mbi" on moulder running Linux Version 1.0.4 (#4 Tue Mar 22 20:24:55 MET 1994) finished patience Spider using xpat version 0.3-Xaw, game seed 764978420 with 350 moves in a truly noble manner! Wed Mar 30 21:49:50 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Spider using xpat version 0.4-Xaw, game seed 765054209 with 305 moves in a truly noble manner! Wed Mar 30 22:52:40 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Gypsy using xpat version 0.4-Xaw, game seed 765060088 with 213 moves in a truly noble manner! Thu Mar 31 18:34:41 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience FreeCell using xpat version 0.4-Xaw, game seed 765131556 with 96 moves in a truly noble manner! Thu Mar 31 18:41:27 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Seahaven using xpat version 0.4-Xaw, game seed 765131819 with 102 moves in a truly noble manner! Thu Mar 31 18:46:58 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Seahaven using xpat version 0.4-Xaw, game seed 765132098 with 97 moves in a truly noble manner! Thu Mar 31 18:51:57 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Seahaven using xpat version 0.4-Xaw, game seed 765132434 with 80 moves in a truly noble manner! Thu Mar 31 18:53:12 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Seahaven using xpat version 0.4-Xaw, game seed 765132738 with 84 moves in a truly noble manner! Thu Mar 31 19:03:29 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Klondike flipping the deck 1 times using xpat version 0.4-Xaw, game seed 765133232 with 124 moves in a truly noble manner! Thu Mar 31 19:07:37 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Seahaven using xpat version 0.4-Xaw, game seed 765133463 with 86 moves in a truly noble manner! Fri Apr 1 16:05:45 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Monte Carlo using xpat2 version 0.4-Xaw, game seed 765208629 with 34 moves in a truly noble manner! Sat Apr 2 01:33:41 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Monte Carlo using xpat2 version 0.4-Xaw, game seed 765242782 with 39 moves in a truly noble manner! Sat Apr 2 01:56:40 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Monte Carlo using xpat2 version 0.4-Xaw, game seed 765244325 with 37 moves in a truly noble manner! Sat Apr 2 17:47:33 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Klondike flipping the deck 2 times using xpat2 version 0.4-Xaw, game seed 765301379 with 125 moves in a truly noble manner! Sat Apr 2 21:32:28 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Klondike flipping the deck 0 times using xpat2 version 0.4-Xaw, game seed 765315079 with 104 moves in a truly noble manner! Sat Apr 2 21:37:06 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Klondike flipping the deck 2 times using xpat2 version 0.4-Xaw, game seed 765315378 with 123 moves in a truly noble manner! Sat Apr 2 22:14:44 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Monte Carlo flipping the deck 0 times using xpat2 version 0.4-Xaw, game seed 765317469 with 39 moves in a truly noble manner! Sun Apr 3 21:18:23 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Klondike flipping the deck 3 times using xpat2 version 0.5-Xaw, game seed 765400638 with 127 moves and cheatet! (count = 31) Mon Apr 4 15:44:10 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Monte Carlo using xpat2 version 0.6-Xaw, game seed 765467012 with 37 moves in a truly noble manner! Mon Apr 4 17:54:49 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Monte Carlo using xpat2 version 0.6-Xaw, game seed 765474677 with 40 moves in a truly noble manner! Mon Apr 4 21:53:19 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Seahaven using xpat2 version 0.7-Xaw, game seed 765489128 with 90 moves in a truly noble manner! Tue Apr 5 17:44:35 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Michael's Fantasy using xpat2 version 0.7-Xaw, game seed 765560389 with 97 moves and cheatet! (count = 2) Tue Apr 5 17:54:25 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Monte Carlo using xpat2 version 0.7-Xaw, game seed 765561023 with 41 moves in a truly noble manner! Tue Apr 5 17:58:26 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Monte Carlo using xpat2 version 0.7-Xaw, game seed 765561364 with 37 moves in a truly noble manner! Wed Apr 6 13:38:46 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Free Cell using xpat2 version 0.7-Xaw, game seed 765632276 with 91 moves in a truly noble manner! Thu Apr 7 01:51:05 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Monte Carlo using xpat2 version 0.7-Xaw, game seed 765675878 with 40 moves in a truly noble manner! Thu Apr 7 17:02:47 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Seahaven using xpat2 version 0.7-Xaw, game seed 765730709 with 93 moves in a truly noble manner! Thu Apr 7 23:26:48 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Gypsy using xpat2 version 0.8-Xaw, game seed 765753385 with 205 moves in a truly noble manner! Fri Apr 8 23:45:10 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Canfield using xpat2 version 0.8-Xaw, game seed 765840592 with 112 moves in a truly noble manner! Sat Apr 9 00:06:21 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Canfield using xpat2 version 0.8-Xaw, game seed 765842078 with 142 moves in a truly noble manner! Sat Apr 9 00:40:04 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Canfield using xpat2 version 0.8-Xaw, game seed 765844409 with 116 moves in a truly noble manner! Sat Apr 9 00:51:21 1994 "mbi" on moulder running Linux Version 1.0.5 (#5 Wed Mar 30 14:54:53 MET DST 1994) finished patience Canfield using xpat2 version 0.8-Xaw, game seed 765845234 with 108 moves in a truly noble manner! Sat Apr 16 09:48:09 1994 someone on moulder running Linux Version 1.0.6 (#6 Sat Apr 16 22:45:18 MET DST 1994) finished patience Canfield using xpat2 version 0.8-Xaw, game seed 766481973 with 122 moves and cheatet! (count = 12) Thu Sep 29 09:20:59 1994 "mbi" on flawless running Linux Version 1.1.49 (#2 Tue Sep 6 18:07:38 MET DST 1994) finished patience Klondike counter1 = 1 using xpat2 version 1.00, game seed 780826473 with 127 moves in a truly noble manner! Fri Oct 13 19:22:57 1995 "mbi" on flawless running Linux Version 1.2.13 (#12 Tue Aug 8 09:50:22 MET DST 1995) finished patience Klondike counter1 = 2 using xpat2 version 1.04, game seed 813608254 with 133 moves in a truly noble manner! Fri Oct 13 20:36:52 1995 "mbi" on flawless running Linux Version 1.2.13 (#12 Tue Aug 8 09:50:22 MET DST 1995) finished patience Free Cell using xpat2 version 1.04, game seed 767137497 with 113 moves in a truly noble manner! Fri Oct 13 20:38:03 1995 "mbi" on flawless running Linux Version 1.2.13 (#12 Tue Aug 8 09:50:22 MET DST 1995) finished patience Klondike counter1 = 1 using xpat2 version 1.04, game seed 780826473 with 127 moves in a truly noble manner! Sun Dec 3 19:06:02 1995 "uni" on flawless running Linux Version 1.3.45 (#1 Sun Dec 3 14:38:35 MET 1995) finished patience Gypsy using xpat2 version 1.04, game seed 818013226 with 211 moves in a truly noble manner! Wed Jan 10 21:07:29 1996 "mbi" on flawless running Linux Version 1.3.45 (#1 Sun Dec 3 14:38:35 MET 1995) finished patience Oonsoo using xpat2 version 1.04, game seed 821304424 with 1 moves in a truly noble manner! Wed Jan 10 21:09:46 1996 "mbi" on flawless running Linux Version 1.3.45 (#1 Sun Dec 3 14:38:35 MET 1995) finished patience Oonsoo using xpat2 version 1.04, game seed 821304584 with 1 moves in a truly noble manner! Wed Jan 10 21:19:05 1996 "mbi" on flawless running Linux Version 1.3.45 (#1 Sun Dec 3 14:38:35 MET 1995) finished patience Oonsoo using xpat2 version 1.04, game seed 821305126 with 1 moves in a truly noble manner! Wed Jan 10 21:43:05 1996 "mbi" on flawless running Linux Version 1.3.45 (#1 Sun Dec 3 14:38:35 MET 1995) finished patience Oonsoo using xpat2 version 1.04, game seed 821306577 with 1 moves in a truly noble manner! Tue Mar 12 11:49:30 1996 "mbi" on flawless running Linux Version 1.3.68 (#9 Wed Mar 6 21:45:49 MET 1996) finished patience Gypsy using xpat2 version 1.04, game seed 826626751 with 221 moves in a truly noble manner! Tue Mar 12 19:48:10 1996 "mbi" on flawless running Linux Version 1.3.68 (#9 Wed Mar 6 21:45:49 MET 1996) finished patience Oonsoo using xpat2 version 1.04, game seed 826656449 with 1 moves in a truly noble manner! Tue Mar 12 19:59:06 1996 "mbi" on flawless running Linux Version 1.3.68 (#9 Wed Mar 6 21:45:49 MET 1996) finished patience Oonsoo using xpat2 version 1.04, game seed 826657130 with 1 moves in a truly noble manner! Tue Mar 12 20:00:33 1996 "mbi" on flawless running Linux Version 1.3.68 (#9 Wed Mar 6 21:45:49 MET 1996) finished patience Oonsoo using xpat2 version 1.04, game seed 826657225 with 1 moves in a truly noble manner! Tue Mar 19 10:30:41 1996 "mbi" on flawless running Linux Version 1.3.75 (#3 Sun Mar 17 23:54:09 MET 1996) finished patience Oonsoo using xpat2 version 1.05, game seed 827227537 with 56 moves in a truly noble manner! Sat Apr 11 19:49:14 1998 "adabas" on mbi running Linux Version 2.0.30 (#12 Tue Sep 9 15:54:03 MEST 1997) finished patience Gypsy using xpat2 version 1.05, game seed 892315133 with 240 moves in a truly noble manner! Sun Apr 12 23:34:23 1998 "cobol" on mbi running Linux Version 2.0.30 (#12 Tue Sep 9 15:54:03 MEST 1997) finished patience Gypsy using xpat2 version 1.05, game seed 892415067 with 225 moves and cheatet! (count = 94) Mon Apr 13 00:41:06 1998 "cobol" on mbi running Linux Version 2.0.30 (#12 Tue Sep 9 15:54:03 MEST 1997) finished patience Gypsy using xpat2 version 1.05, game seed 892419821 with 216 moves in a truly noble manner! Fri May 22 22:00:18 1998 "mbi" on mbi running Linux Version 2.0.30 (#12 Tue Sep 9 15:54:03 MEST 1997) finished patience Blue Moon counter1 = 3 using xpat2 version 1.05, game seed 895863899 with 122 moves in a truly noble manner! Sat May 23 00:22:01 1998 "mbi" on mbi running Linux Version 2.0.30 (#12 Tue Sep 9 15:54:03 MEST 1997) finished patience Gypsy using xpat2 version 1.05, game seed 895874248 with 226 moves and cheatet! (count = 180) Thu Apr 15 12:45:00 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Gypsy using xpat2 version 1.05, game seed 924171985 with 201 moves in a truly noble manner! Thu Apr 15 12:52:57 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924173111 with 130 moves in a truly noble manner! Thu Apr 15 13:03:40 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924173598 with 127 moves in a truly noble manner! Thu Apr 15 13:09:45 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924174225 with 102 moves in a truly noble manner! Thu Apr 15 13:20:19 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924174589 with 142 moves in a truly noble manner! Thu Apr 15 13:25:54 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924175222 with 113 moves in a truly noble manner! Thu Apr 15 13:31:43 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924175555 with 120 moves in a truly noble manner! Thu Apr 15 13:36:53 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924175905 with 127 moves in a truly noble manner! Thu Apr 15 13:39:54 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924176215 with 107 moves in a truly noble manner! Thu Apr 15 13:46:31 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924176572 with 109 moves in a truly noble manner! Thu Apr 15 13:52:41 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924176843 with 111 moves in a truly noble manner! Thu Apr 15 13:56:23 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924177163 with 126 moves in a truly noble manner! Thu Apr 15 13:59:06 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924177385 with 120 moves in a truly noble manner! Thu Apr 15 14:08:10 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924178017 with 100 moves in a truly noble manner! Thu Apr 15 14:14:36 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924178092 with 159 moves in a truly noble manner! Thu Apr 15 14:25:22 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924178477 with 121 moves in a truly noble manner! Thu Apr 15 15:16:30 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Gypsy using xpat2 version 1.05, game seed 924181276 with 198 moves in a truly noble manner! Thu Apr 15 15:32:37 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Gypsy using xpat2 version 1.05, game seed 924182652 with 213 moves in a truly noble manner! Thu Apr 15 15:45:21 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924183445 with 107 moves in a truly noble manner! Thu Apr 15 15:49:47 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924183923 with 124 moves in a truly noble manner! Thu Apr 15 15:54:55 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924184188 with 112 moves in a truly noble manner! Thu Apr 15 15:58:23 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924184519 with 100 moves in a truly noble manner! Thu Apr 15 16:09:36 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924185246 with 107 moves in a truly noble manner! Thu Apr 15 16:53:17 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924187745 with 110 moves in a truly noble manner! Thu Apr 15 17:05:39 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924187999 with 132 moves in a truly noble manner! Thu Apr 15 17:08:34 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924188787 with 106 moves in a truly noble manner! Thu Apr 15 17:12:11 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924189031 with 105 moves in a truly noble manner! Thu Apr 15 17:18:23 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924189346 with 97 moves in a truly noble manner! Thu Apr 15 17:24:31 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924189505 with 119 moves in a truly noble manner! Thu Apr 15 17:28:33 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924189876 with 112 moves in a truly noble manner! Thu Apr 15 17:30:37 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924190114 with 106 moves in a truly noble manner! Thu Apr 15 17:55:06 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924190241 with 126 moves in a truly noble manner! Thu Apr 15 18:15:21 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924191713 with 107 moves in a truly noble manner! Thu Apr 15 18:19:20 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924193045 with 96 moves in a truly noble manner! Thu Apr 15 18:23:51 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924193162 with 107 moves in a truly noble manner! Thu Apr 15 18:27:24 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924193440 with 119 moves in a truly noble manner! Thu Apr 15 18:33:45 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924193647 with 125 moves in a truly noble manner! Thu Apr 15 18:38:10 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924194027 with 125 moves in a truly noble manner! Thu Apr 15 21:26:13 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924204095 with 104 moves in a truly noble manner! Thu Apr 15 21:37:47 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924204757 with 120 moves in a truly noble manner! Thu Apr 15 21:42:22 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924205069 with 119 moves in a truly noble manner! Thu Apr 15 21:50:15 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924205344 with 122 moves in a truly noble manner! Thu Apr 15 21:58:27 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924206201 with 98 moves in a truly noble manner! Thu Apr 15 22:01:53 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924206309 with 122 moves in a truly noble manner! Thu Apr 15 22:07:18 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924206515 with 194 moves in a truly noble manner! Thu Apr 15 22:10:45 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924206840 with 129 moves in a truly noble manner! Thu Apr 15 22:22:20 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924207047 with 151 moves in a truly noble manner! Thu Apr 15 22:38:28 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924207742 with 125 moves in a truly noble manner! Thu Apr 15 22:42:35 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924208710 with 144 moves in a truly noble manner! Thu Apr 15 22:44:00 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924208957 with 111 moves in a truly noble manner! Thu Apr 15 22:46:59 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924209043 with 134 moves in a truly noble manner! Thu Apr 15 23:07:18 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924210115 with 132 moves in a truly noble manner! Thu Apr 15 23:11:09 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924210440 with 148 moves in a truly noble manner! Thu Apr 15 23:17:57 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924210973 with 102 moves in a truly noble manner! Thu Apr 15 23:24:34 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924211396 with 134 moves in a truly noble manner! Thu Apr 15 23:29:02 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924211476 with 200 moves in a truly noble manner! Thu Apr 15 23:31:57 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924211770 with 122 moves in a truly noble manner! Thu Apr 15 23:33:56 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924211918 with 128 moves in a truly noble manner! Thu Apr 15 23:37:13 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924212080 with 156 moves in a truly noble manner! Fri Apr 16 12:36:16 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924258802 with 104 moves in a truly noble manner! Fri Apr 16 12:49:24 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924259306 with 125 moves in a truly noble manner! Fri Apr 16 12:53:59 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924259766 with 132 moves in a truly noble manner! Fri Apr 16 12:58:20 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924260041 with 120 moves in a truly noble manner! Fri Apr 16 13:11:53 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924260674 with 109 moves in a truly noble manner! Fri Apr 16 13:14:55 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924261115 with 107 moves in a truly noble manner! Sun Apr 18 18:23:15 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924451996 with 136 moves in a truly noble manner! Sun Apr 18 18:29:52 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924452596 with 110 moves in a truly noble manner! Sun Apr 18 18:35:50 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924452993 with 137 moves in a truly noble manner! Sun Apr 18 18:51:05 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924453859 with 123 moves in a truly noble manner! Sun Apr 18 19:12:27 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924454266 with 136 moves in a truly noble manner! Sun Apr 18 19:17:15 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924455549 with 121 moves in a truly noble manner! Sun Apr 18 19:20:19 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924455837 with 110 moves in a truly noble manner! Sun Apr 18 19:27:14 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924456021 with 116 moves in a truly noble manner! Sun Apr 18 19:31:28 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924456436 with 111 moves in a truly noble manner! Sun Apr 18 19:35:28 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924456690 with 94 moves in a truly noble manner! Sun Apr 18 19:39:41 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924456930 with 95 moves in a truly noble manner! Sun Apr 18 20:02:15 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924457183 with 124 moves in a truly noble manner! Sun Apr 18 20:06:33 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924458536 with 133 moves in a truly noble manner! Sun Apr 18 20:12:04 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924458796 with 111 moves in a truly noble manner! Sun Apr 18 21:50:56 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924459126 with 116 moves in a truly noble manner! Sun Apr 18 22:39:18 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924465058 with 129 moves in a truly noble manner! Sun Apr 18 22:43:09 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924467959 with 98 moves in a truly noble manner! Sun Apr 18 22:45:59 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924468190 with 99 moves in a truly noble manner! Sun Apr 18 22:56:37 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924468361 with 129 moves in a truly noble manner! Sun Apr 18 23:01:18 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924468999 with 93 moves in a truly noble manner! Sun Apr 18 23:09:54 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924469501 with 113 moves in a truly noble manner! Sun Apr 18 23:14:29 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924469796 with 97 moves in a truly noble manner! Mon Apr 19 08:23:49 1999 "" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924502293 with 122 moves in a truly noble manner! Mon Apr 19 08:33:35 1999 "" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924503030 with 109 moves in a truly noble manner! Mon Apr 19 08:39:00 1999 "" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924503627 with 103 moves in a truly noble manner! Tue Apr 20 00:22:51 1999 "" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924560209 with 116 moves in a truly noble manner! Tue Apr 20 00:33:08 1999 "" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924560817 with 130 moves in a truly noble manner! Tue Apr 20 17:25:47 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924621766 with 101 moves in a truly noble manner! Fri Apr 23 13:18:15 1999 "cobol" on mbi2 running Linux Version 2.0.36 (#73 Tue Jan 19 12:21:53 MET 1999) finished patience Free Cell using xpat2 version 1.05, game seed 924863957 with 117 moves in a truly noble manner! Fri Apr 23 13:30:16 1999 "cobol" on mbi2 running Linux Version 2.0.36 (#73 Tue Jan 19 12:21:53 MET 1999) finished patience Free Cell using xpat2 version 1.05, game seed 924866297 with 123 moves in a truly noble manner! Fri Apr 23 13:34:23 1999 "cobol" on mbi2 running Linux Version 2.0.36 (#73 Tue Jan 19 12:21:53 MET 1999) finished patience Free Cell using xpat2 version 1.05, game seed 924867018 with 113 moves in a truly noble manner! Fri Apr 23 13:40:15 1999 "cobol" on mbi2 running Linux Version 2.0.36 (#73 Tue Jan 19 12:21:53 MET 1999) finished patience Free Cell using xpat2 version 1.05, game seed 924867264 with 122 moves in a truly noble manner! Fri Apr 23 13:42:55 1999 "cobol" on mbi2 running Linux Version 2.0.36 (#73 Tue Jan 19 12:21:53 MET 1999) finished patience Free Cell using xpat2 version 1.05, game seed 924867616 with 99 moves in a truly noble manner! Fri Apr 23 13:52:05 1999 "cobol" on mbi2 running Linux Version 2.0.36 (#73 Tue Jan 19 12:21:53 MET 1999) finished patience Free Cell using xpat2 version 1.05, game seed 924867777 with 115 moves in a truly noble manner! Fri Apr 23 13:56:06 1999 "cobol" on mbi2 running Linux Version 2.0.36 (#73 Tue Jan 19 12:21:53 MET 1999) finished patience Free Cell using xpat2 version 1.05, game seed 924868327 with 116 moves in a truly noble manner! Fri Apr 23 13:59:17 1999 "cobol" on mbi2 running Linux Version 2.0.36 (#73 Tue Jan 19 12:21:53 MET 1999) finished patience Free Cell using xpat2 version 1.05, game seed 924868568 with 102 moves in a truly noble manner! Fri Apr 23 14:03:09 1999 "cobol" on mbi2 running Linux Version 2.0.36 (#73 Tue Jan 19 12:21:53 MET 1999) finished patience Free Cell using xpat2 version 1.05, game seed 924868759 with 109 moves in a truly noble manner! Fri Apr 23 14:16:39 1999 "cobol" on mbi2 running Linux Version 2.0.36 (#73 Tue Jan 19 12:21:53 MET 1999) finished patience Free Cell using xpat2 version 1.05, game seed 924868991 with 105 moves in a truly noble manner! Fri Apr 23 15:22:10 1999 "" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Gypsy using xpat2 version 1.05, game seed 924872356 with 229 moves in a truly noble manner! Fri Apr 23 15:35:52 1999 "" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Gypsy using xpat2 version 1.05, game seed 924873733 with 191 moves in a truly noble manner! Fri Apr 23 15:48:42 1999 "" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Gypsy using xpat2 version 1.05, game seed 924874554 with 203 moves in a truly noble manner! Fri Apr 23 16:34:58 1999 "" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Gypsy using xpat2 version 1.05, game seed 924877115 with 209 moves in a truly noble manner! Fri Apr 23 16:40:58 1999 "" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924878102 with 112 moves in a truly noble manner! Fri Apr 23 16:45:58 1999 "" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924878461 with 114 moves in a truly noble manner! Sat Apr 24 20:56:11 1999 "" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Gypsy using xpat2 version 1.05, game seed 924979670 with 217 moves in a truly noble manner! Sat Apr 24 23:43:23 1999 "" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 924990056 with 91 moves in a truly noble manner! Mon Apr 26 21:34:49 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 925155071 with 103 moves in a truly noble manner! Mon Apr 26 21:38:26 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 925155291 with 110 moves in a truly noble manner! Mon Apr 26 21:43:51 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 925155508 with 133 moves in a truly noble manner! Mon Apr 26 22:00:34 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 925155832 with 124 moves in a truly noble manner! Mon Apr 26 22:02:59 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 925156837 with 89 moves in a truly noble manner! Mon Apr 26 22:16:30 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 925156981 with 105 moves in a truly noble manner! Mon Apr 26 22:31:23 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 925157792 with 110 moves in a truly noble manner! Mon Apr 26 22:35:09 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.05, game seed 925158684 with 103 moves in a truly noble manner! Tue Apr 27 04:08:24 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Spider using xpat2 version 1.05, game seed 925177153 with 274 moves and cheatet! (count = 1) Wed Apr 28 21:03:04 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Gypsy using xpat2 version 1.06, game seed 925332687 with 225 moves and cheatet! (count = 58) Wed Apr 28 22:26:37 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.06, game seed 681692777 with 152 moves in a truly noble manner! Wed Apr 28 22:53:50 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.06, game seed 846930886 with 117 moves in a truly noble manner! Wed Apr 28 23:02:30 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.06, game seed 681692777 with 107 moves in a truly noble manner! Thu Apr 29 07:46:01 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.06, game seed 846930886 with 94 moves in a truly noble manner! Fri Apr 30 07:06:26 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Gypsy using xpat2 version 1.06, game seed 925455194 with 238 moves in a truly noble manner! Sat May 1 16:56:29 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.06, game seed 925577619 with 102 moves in a truly noble manner! Sat May 1 20:27:18 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Klondike counter1 = 2 using xpat2 version 1.06, game seed 925590129 with 133 moves in a truly noble manner! Sat May 1 20:32:24 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.06, game seed 925590447 with 104 moves in a truly noble manner! Sun May 2 14:17:10 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.06, game seed 925654356 with 97 moves in a truly noble manner! Sun May 2 14:44:13 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Free Cell using xpat2 version 1.06, game seed 925656010 with 101 moves in a truly noble manner! Sun May 2 15:02:59 1999 "mbi" on mbi running Linux Version 2.1.121 (#6 SMP Sun Dec 13 22:01:17 MET 1998) finished patience Monte Carlo using xpat2 version 1.06, game seed 925656938 with 44 moves in a truly noble manner! Sun May 2 19:02:26 1999 "mbi" on mbi running Linux Version 2.2.6 (#3 Sun May 2 19:31:11 MEST 1999) finished patience Gypsy using xpat2 version 1.06, game seed 925670959 with 201 moves in a truly noble manner! Sun May 2 19:17:22 1999 "mbi" on mbi running Linux Version 2.2.6 (#3 Sun May 2 19:31:11 MEST 1999) finished patience Baker's Dozen using xpat2 version 1.06, game seed 925671993 with 106 moves in a truly noble manner! Mon May 3 07:25:03 1999 "mbi" on mbi running Linux Version 2.2.6 (#3 Sun May 2 19:31:11 MEST 1999) finished patience Michael's Fantasy counter3 = 1 using xpat2 version 1.06, game seed 925715972 with 104 moves in a truly noble manner! Mon May 3 14:37:45 1999 "mbi" on mbi running Linux Version 2.2.6 (#3 Sun May 2 19:31:11 MEST 1999) finished patience Klondike counter1 = 1 using xpat2 version 1.06, game seed 925741906 with 122 moves in a truly noble manner! Mon May 3 15:25:15 1999 "mbi" on mbi running Linux Version 2.2.6 (#3 Sun May 2 19:31:11 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 925744789 with 111 moves in a truly noble manner! Mon May 3 21:55:19 1999 "mbi" on mbi running Linux Version 2.2.6 (#3 Sun May 2 19:31:11 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 925768203 with 128 moves in a truly noble manner! Mon May 3 22:10:01 1999 "mbi" on mbi running Linux Version 2.2.6 (#3 Sun May 2 19:31:11 MEST 1999) finished patience Gypsy using xpat2 version 1.06, game seed 925768525 with 217 moves in a truly noble manner! Tue May 4 05:33:01 1999 "mbi" on mbi running Linux Version 2.2.6 (#3 Sun May 2 19:31:11 MEST 1999) finished patience Klondike counter1 = 2 using xpat2 version 1.06, game seed 925795752 with 132 moves in a truly noble manner! Wed May 5 22:31:40 1999 "mbi" on mbi running Linux Version 2.2.6 (#3 Sun May 2 19:31:11 MEST 1999) finished patience Oonsoo using xpat2 version 1.06, game seed 925943220 with 58 moves in a truly noble manner! Thu May 6 10:33:30 1999 "mbi" on mbi running Linux Version 2.2.6 (#3 Sun May 2 19:31:11 MEST 1999) finished patience Monte Carlo using xpat2 version 1.06, game seed 925986514 with 38 moves in a truly noble manner! Thu May 6 16:23:46 1999 "mbi" on mbi running Linux Version 2.2.6 (#3 Sun May 2 19:31:11 MEST 1999) finished patience Monte Carlo using xpat2 version 1.06, game seed 926007641 with 47 moves in a truly noble manner! Thu May 6 18:16:38 1999 "mbi" on mbi running Linux Version 2.2.6 (#3 Sun May 2 19:31:11 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 926014116 with 110 moves in a truly noble manner! Thu May 6 18:22:09 1999 "mbi" on mbi running Linux Version 2.2.6 (#3 Sun May 2 19:31:11 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 926014619 with 106 moves in a truly noble manner! Thu May 6 18:33:43 1999 "mbi" on mbi running Linux Version 2.2.6 (#3 Sun May 2 19:31:11 MEST 1999) finished patience Monte Carlo using xpat2 version 1.06, game seed 926015195 with 41 moves in a truly noble manner! Thu May 6 22:04:35 1999 "mbi" on mbi running Linux Version 2.2.6 (#3 Sun May 2 19:31:11 MEST 1999) finished patience Gypsy using xpat2 version 1.06, game seed 926027641 with 217 moves in a truly noble manner! Sun Nov 14 13:19:32 1999 "mbi" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Monte Carlo using xpat2 version 1.06, game seed 942585246 with 48 moves in a truly noble manner! Sat Dec 25 12:49:07 1999 "mbi" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 946125790 with 96 moves in a truly noble manner! Fri Jun 2 12:50:31 2000 "mbi" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 959949974 with 95 moves in a truly noble manner! Sat Jun 10 17:37:42 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Gypsy using xpat2 version 1.06, game seed 960652767 with 199 moves in a truly noble manner! Sat Jun 10 17:56:48 2000 "mbi" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Gypsy using xpat2 version 1.06, game seed 960658733 with 224 moves in a truly noble manner! Sun Jun 11 09:45:06 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Gypsy using xpat2 version 1.06, game seed 960716003 with 217 moves in a truly noble manner! Sun Jun 11 12:21:29 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Gypsy using xpat2 version 1.06, game seed 960725006 with 222 moves in a truly noble manner! Sun Jun 11 13:00:35 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Gypsy using xpat2 version 1.06, game seed 960726092 with 206 moves in a truly noble manner! Sun Jun 11 13:15:09 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Gypsy using xpat2 version 1.06, game seed 960728437 with 215 moves in a truly noble manner! Mon Jun 12 11:39:55 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 960809449 with 117 moves in a truly noble manner! Tue Jun 13 21:29:33 2000 "mbi01" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 960926911 with 120 moves in a truly noble manner! Tue Jun 13 22:00:48 2000 "mbi01" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 960931784 with 100 moves in a truly noble manner! Tue Jun 13 22:06:24 2000 "mbi01" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 960933652 with 125 moves in a truly noble manner! Tue Jun 13 22:11:29 2000 "mbi01" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 960933987 with 101 moves in a truly noble manner! Wed Jun 14 19:36:43 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 961011239 with 93 moves in a truly noble manner! Fri Jun 16 20:38:02 2000 "mbi" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Gypsy using xpat2 version 1.06, game seed 961187232 with 204 moves in a truly noble manner! Sat Jun 17 17:50:57 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Gypsy using xpat2 version 1.06, game seed 961260969 with 232 moves in a truly noble manner! Mon Jun 19 20:15:33 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 961442856 with 111 moves in a truly noble manner! Sat Jun 24 20:01:25 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Gypsy using xpat2 version 1.06, game seed 961876372 with 197 moves in a truly noble manner! Sat Jun 24 20:07:29 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Gypsy using xpat2 version 1.06, game seed 961876930 with 191 moves in a truly noble manner! Sat Jun 24 20:22:05 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 961877660 with 111 moves in a truly noble manner! Sun Jul 2 19:59:24 2000 "mbi" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 962567624 with 112 moves in a truly noble manner! Sun Jul 2 20:06:09 2000 "mbi" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 962567974 with 113 moves in a truly noble manner! Sat Jul 8 18:33:35 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Gypsy using xpat2 version 1.06, game seed 963080020 with 204 moves in a truly noble manner! Sat Jul 8 19:14:48 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 963083351 with 106 moves in a truly noble manner! Sat Jul 8 19:18:13 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 963083727 with 103 moves in a truly noble manner! Sat Jul 8 19:24:42 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 963083938 with 100 moves in a truly noble manner! Sat Jul 8 19:31:42 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 963084284 with 103 moves in a truly noble manner! Sun Jul 9 10:42:57 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 963139127 with 99 moves in a truly noble manner! Sun Jul 16 11:24:33 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 963746190 with 117 moves in a truly noble manner! Sun Jul 16 11:27:41 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 963746723 with 93 moves in a truly noble manner! Sun Jul 16 11:46:36 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 963747353 with 94 moves in a truly noble manner! Sun Jul 16 15:25:51 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Gypsy using xpat2 version 1.06, game seed 963760701 with 190 moves in a truly noble manner! Sun Jul 16 15:29:15 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 963761154 with 110 moves in a truly noble manner! Sun Jul 16 15:50:25 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 963762404 with 102 moves in a truly noble manner! Sun Jul 16 15:55:22 2000 "mbi02" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 963762668 with 99 moves in a truly noble manner! Fri Oct 27 09:11:18 2000 "mbi" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 972637624 with 100 moves in a truly noble manner! Fri Oct 27 09:15:32 2000 "mbi" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.06, game seed 972637887 with 101 moves in a truly noble manner! Sun Nov 5 19:42:41 2000 "mbi" on flawless running Linux Version 2.2.9 (#6 Tue Jun 8 15:43:29 MEST 1999) finished patience Free Cell using xpat2 version 1.07, game seed 973452489 with 109 moves in a truly noble manner! xpat2-1.07/lib/ 40755 146 144 0 7201330447 11630 5ustar mbimathoptxpat2-1.07/lib/german/ 40755 146 144 0 7201330407 13075 5ustar mbimathoptxpat2-1.07/lib/german/keys100644 146 144 153 5720430063 14052 0ustar mbimathopt#c This file does contain the german key bindings for xpat version 2.0 #include ../keys y None j Confirm xpat2-1.07/lib/german/messages100644 146 144 5030 7174615266 14744 0ustar mbimathopt# iso8859-1 Das Spiel beenden? Ein neues Spiel? Von vorn beginnen? Kreuz Pik Herz Karo Joker As Zwei Drei Vier Fќnf Sechs Sieben Acht Neun Zehn Bube Dame Kіnig Ablage Stapel den Talon Zwischenspeicher den Ausgabestapel Es ist kein Zugvorschlag angezeigt. Du kannst %P (%S-%R) auf %P schieben. Keine Tips! (einmal rum) Merker gesetzt. Du hast es geschafft! Es ist nicht mіglich, Karten abzulegen. Der Spielstand konnte NICHT gesichert werden. Der Spielstand konnte NICHT geladen werden. Fehler beim жffnen der Datei. Fehler beim жffnen der Datei. Fehler beim Schreiben. Fehler beim Lesen. Fehler beim Speichern der Zugfolge. Fehler beim Lesen der Zugfolge. Der Spielstand wurde gesichert. Der Spielstand wurde geladen. Falsche Dateiversion. Alle Durchgфnge verbraucht. Nфchster Durchgang! Einmal Karten. Keine Karten! Kein Startstapel gewфhlt. Karten auf die Ablage geschoben. Zug ist nicht mіglich. Dies ist die Ausgangsstellung! Zug wurde zurќckgenommen. Zug wurde zurќckgenommen (geschummelt!). Es sind keine weiteren Zќge gespeichert. Zug vorwфrts. Zug vorwфrts (entschummelt). Unzulфssiger Zug! Leerer oder unerlaubter Startstapel. Startstapel wurde ausgewфhlt. So viele Stapel gibt es nicht. Zug abgebrochen. Unbekannter Befehl: Kein Zug mіglich. Xpat2 Version Spiel Nummer %ld, %d Mal geschummelt. %d Punkt(e) von %d. (Keine Punkte fќr diese Variante) %d Karte(n) noch nicht verteilt. Bedienung Hilfe fќr %s-Regeln # sorry, die Hilfe ist noch nicht uebersetzt hilf.bedien hilf.Spider hilf.Gypsy hilf.Klondike hilf.Seahaven hilf.FreeCell hilf.Delight hilf.MonteCarlo hilf.MidnightOil hilf.Calculation hilf.ModCanfield hilf.Michaels hilf.Canfield hilf.Cotillion hilf.BakersDozen hilf.Oonsoo hilf.BlueMoon Augenblick bitte, das Laden der Karten dauert etwas... Viel Spaп beim Spielen mit xpat2 Version %s! Stapel nach oben rotieren: Stapel nach unten rotieren: Die unterste Karte muп bereits aufgedeckt sein! Rotieren geht nur mit einem Slot. In diesen Regel kіnnen die Karten nicht neu gemischt werden. Mischen ist nicht mehr mіglich. Noch einmal mischen. Noch %d Mal mischen. Bei diesen Spielregel ist flippen nicht erlaubt. Flippen ist nicht mehr mіglich. Noch einmal flippen. Noch %d Mal flippen. Rotieren ist bei diesen Regeln nicht vorgesehen. Rotieren ist nicht mehr mіglich. Noch einmal rotieren. Noch %d Mal rotieren. ``Karten geben'' existiert in diesen Regeln nicht. Keine Karten mehr auf dem Stapel. Noch eine einzige Karte auf dem Stapel. Noch %d Karten auf dem Stapel. Anfangsstellung. Ein Zug gemacht. %d Zќge. Noch kein Punkt von Ein Punkt von %d Punkte von xpat2-1.07/lib/german/XPat100644 146 144 1377 5717716562 14025 0ustar mbimathopt#include "../../app-defaults/XPat" XPat*Dialog*Translations: #override \n\ j: Ok()\n\ n: Cancel()\n XPat*Game.label: Spiel XPat*Rules.label: Regeln XPat*Cards.label: Karten XPat*Undo.label: Zurќck XPat*Redo.label: Vorwфrts XPat*Save.label: Sichern XPat*Score.label: Punkte XPat*Hint.label: Tips XPat*Move to Stack.label: Ablegen XPat*Help.label: Hilfe XPat*Sound.label: Lфrm XPat*Drop Bookmark.label: Merker setzen XPat*Goto Bookmark.label: zum Merker XPat*Replay.label: Nachspielen XPat*Restart.label: Nochmal von vorn XPat*New Game.label: Neues Spiel XPat*Quit.label: Ende XPat*ok.label: Ja XPat*cancel.label: Nein XPat.help*string: Bitte ein Gebiet auswфhlen. XPat.help*Topic.label: Gebiet XPat.help*Close Help.label: Hilfefenster schlieпen xpat2-1.07/lib/german/Notes100644 146 144 4157 7174615266 14236 0ustar mbimathoptHier mein Versuch, die Hilfetexte fuer xpat2-1.06 ins Deutsche zu uebersetzen. Ich habe mich so dicht wie moeglich an die englischen Texte gehalten. Manchmal habe ich mir kleinere Umstellungen erlaubt, wenn es dem Verstaendnis dient, oder die Terminologie angepasst (anscheinend kommen die Originaltexte aus verschiedenen Quellen). Groessere Aenderungen habe ich nur an folgenden Stellen vorgenommen: - Spider: Ich habe das Material etwas besser strukturiert (Umstellungen, Zwischenueberschriften). - Canfield: Ich habe die Beschreibung des Anfangs-Tableaus ergaenzt. Ferner benutze ich folgende Terminologie: hand = Talon, talon = Ablagestapel, stock = Zusatzstapel (d.h. mit Talon wird wie sonst auch der verdeckt liegende Stapel mit den restlichen Karten bezeichnet). - Midnight Oil: Ich habe angegeben, wie "draw one submerged card" funktioniert (danach habe ich _sehr_ lange gesucht). - keys: Ich habe in "hilf.bedien" zusaetzlich die Bedienung durch Maus und Menue beschrieben. Diese Teile habe ich aus "xpat2.tex" uebernommen. Dafuer habe bei den einzelnen Spielregeln die Hinweise auf Standardzuege (Karten geben, automatisches Ablegen) weggelassen. Die Manualseite behandelt die Maus nicht, so dass ich mit der Bedienung anfangs etwas Schwierigkeiten hatte. Daher habe ich mich dazu entschlossen, den Hilfetext zu erweitern. Wenn das nicht gewuenscht ist, kann man stattdessen "hilf.tasten" verwenden; man muss dazu nur "messages" anpassen (Bedienung -> Tastatur, hilf.bedien -> hilf.tastatur). Bzgl. der Tastaturbelegung habe ich beschrieben, was tatsaechlich ausgeliefert wird. Die Tasten 'u', 'r', 'l', 'o', 'O', '*' fehlen also, waehrend 'f', 'b' dazugekommen sind. Bei der Rechtschreibung habe ich mich bzgl. ss/sz an die neuen Regeln gehalten und ansonsten meinem Gefuehl vertraut. Die deutschen Umlaute sind die meines 'vi' -- ich hoffe, der Zeichensatz stimmt (ich bin da kein Experte). Die Texte habe ich auf max. 55 Zeichen pro Zeile formatiert; das scheint der Standard zu sein und ist zumindest bei mir gut lesbar, ohne dass etwas abgeschnitten wird. Thomas Betker thomas.betker@freenet.de xpat2-1.07/lib/german/hilf.BakersDozen100644 146 144 1674 7174615266 16277 0ustar mbimathopt Die Regeln fќr Baker's Dozen ============================ Man beginnt mit dreizehn Spalten von je vier Karten, wobei Kіnige stets zuunterst liegen. Das Ziel ist, alle Karten auf die Zielstapel umzuschichten, von As bis Kіnig. Man darf jeweils die oberste Karte einer Spalte (oder eines Zielstapels) auf eine Spalte umlegen, bei der die oberste Karte um eins hіher ist, oder auf den entsprechenden Zielstapel. So passt z.B. eine Herz-Fќnf auf jede Sechs, oder auf die Herz-Vier auf dem Zielstapel. Leere Spalten kіnnen nicht aufgefќllt werden (daher liegen Kіnige unten, denn sie kіnnen nur auf die Zielstapel gespielt werden). Mir gefфllt das Spiel, weil es recht schnell ist, mit annehmbarer Wahrscheinlichkeit aufgeht, aber nicht automatisch ist. Bei Baker's Dozen kann man die Anzahl der Spalten mit der Option -slots vorgeben (2 bis 13). Bei weniger Spalten liegen die niedrigeren Karten schon auf den Zielstapeln, was das Spiel einfacher macht. xpat2-1.07/lib/german/hilf.BlueMoon100644 146 144 2504 7174615266 15601 0ustar mbimathopt Die Regeln fќr Blue Moon ======================== Blue Moon wird mit einem Standardblatt von 52 Karten gespielt (keine Joker). Zu Beginn werden die Karten gemischt und nacheinander in vier Reihen zu 13 Karten offen ausgelegt (womit alle Karten verbraucht sind). Dann werden die Asse herausgenommen und links von den Reihen abgelegt, eins in jeder Zeile; es ergibt sich ein Tableau von 4 x 14 Karten mit vier zufфlligen Leerplфtzen. Ziel des Spieles ist, an die Asse aufsteigende Folgen derselben Farbe anzubauen. Dazu benutzt man die Leerplфtze: Eine Karte darf auf einen leeren Platz verlegt werden, wenn sie dieselbe Farbe hat wie die Karte links davon und den nфchsthіheren Wert. (Das bedeutet, dass rechts von einem Kіnig keine Karten abgelegt werden kіnnen.) Wenn man nicht mehr weiterkommt, werden die Karten, die noch nicht in einer Folge liegen, neu gemischt und im Tableau ausgelegt, wobei jeweils rechts von den bereits aufgebauten Teilfolgen ein Platz leer bleibt; es ergeben sich wieder vier Reihen zu je 14 Plфtzen. Das Spiel ist gewonnen, wenn alle Folgen vollstфndig sind. Die Punktwertung ist einfach: Es gibt zwei Punkte fќr jede Karte, die zu einer Folge gehіrt, und einen weiteren Punkt fќr jede vollstфndige Folge (insgesamt 100 Punkte); fќr jede Runde, in der die Karten neu gegeben werden, werden zehn Punkte abgezogen. xpat2-1.07/lib/german/hilf.Calculation100644 146 144 2625 7174615266 16323 0ustar mbimathopt Die Regeln fќr Calculation =========================== Fќr Calculation wird ein normales Spiel zu 52 Karten benutzt. Zu Beginn werden die Karten gemischt, und es werden ein As, eine Zwei, eine Drei und eine Vier als Grundlagen fќr die Zielstapel herausgenommen. Diese Zielstapel werden wie folgt aufgebaut, wobei die Farben keine Rolle spielen: A,2,3,4,5,6,7,8,9,10,B,D,K 2,4,6,8,10,D,A,3,5,7,9,B,K 3,6,9,D,2,5,8,B,A,4,7,10,K 4,8,D,3,7,B,2,6,10,A,5,9,K Die Karten des Talons werden nacheinander aufgedeckt und kіnnen auf einen der Zielstapel oder einen der vier Hilfsstapel darunter gelegt werden. Die obersten Karten der Hilfsstapel kіnnen jederzeit auf einen der Zielstapel gelegt werden; es ist jedoch nicht mіglich, Karten von einem Hilfsstapel auf einen anderen zu spielen. Das Spiel ist gewonnen, wenn man alle Zielstapel bis zum Kіnig aufgebaut hat. Die Geschicklichkeit bei Calculation (abgesehen davon, sich zu merken, welche Karte als nфchste auf jeden Stapel gehіrt) besteht darin, dass man Karten, die man demnфchst braucht, nicht mit anderen bedeckt, die man eine Weile nicht verwenden kann. Kіnige sind besonders lфstig, da man sie erst spielen kann, wenn ein Zielstapel ganz aufgebaut ist. Die allgemeine Strategie besteht darin, die Hilfsstapel in absteigender Folge aufzubauen, aber die Karten sind selten so freundlich, das in groпem Umfang zu erlauben. xpat2-1.07/lib/german/hilf.Canfield100644 146 144 4455 7174615266 15575 0ustar mbimathopt Die Regeln fќr Canfield ======================= Canfield wird mit einem Standardblatt von 52 Karten gespielt. Es sind vier Zielstapel jeweils einer Farbe aufzubauen, und zwar aufsteigend von einem Basiswert. Mit einer Sieben als Basis wфren die Zielfolgen z.B. 7,8,9,10,B,D,K,A,2,3,4,5,6. Zu Beginn wird eine Karte gezogen, die den Basiswert vorgibt, und auf den Zielstapel ihrer Farbe hochgelegt. Ferner wird je eine Karte in die vier Spalten unterhalb der Zielstapel gegeben, und es wird ein Zusatzstapel von dreizehn Karten aufgelegt. Weitere drei Karten kommen auf den Ablagestapel, der Rest bildet den Talon. Auf den Spalten kann absteigend angelegt werden, wobei Rot und Schwarz abwechseln (es gilt die Reihenfolge, die durch die Basis vorgegeben ist). Gespielt werden kіnnen die obersten Karten der Spalten sowie des Zusatz- und des Ablagestapels. Diese Karten dќrfen auch auf die Zielstapel hochgelegt werden. Eine ganze Spalte kann als Einheit bewegt werden; es ist jedoch nicht mіglich, eine Teilspalte abzutrennen. Auf eine leere Spalte darf nur eine Karte vom Zusatzstapel gelegt werden. Ist dieser erschіpft, so werden leere Spalten aus dem Ablagestapel gefќllt; man darf sie offen lassen, bis man sie benutzen mіchte. Vom Talon werden jeweils drei Karten auf den Ablagestapel gegeben. Ist der Talon durchgespielt, so kann man den Ablagestapel umdrehen und mit diesem neuen Talon weiterspielen. Punktwertung: In der offiziellen Version des Spiels kostet das anfфngliche Tableau $13. Man kann zu diesem Zeitpunkt aufhіren oder das Spiel inspizieren. Die Inspektion kostet weitere $13 und erlaubt es, beliebig viele Zќge zu machen, ohne Karten vom Talon zu geben. (Sind die drei Karten aufgebraucht, die zu Beginn auf dem Ablagestapel liegen, so kіnnen drei weitere genommen werden.) Wenn schlieпlich das Spiel interessant aussieht, bezahlt man die letzte Rate von $26 sowie $5 fќr jede Karte, die bereits auf einem Zielstapel liegt. Im weiteren Verlauf des Spiels erhфlt man dann $5 fќr jede Karte, die auf einen Zielstapel gelegt wird. Jedes Umdrehen des Ablagestapels kostet $5. Bei XPat werden diese Regeln nicht ganz streng eingehalten: Man bezahlt den vollen Betrag von $52 gleich zu Beginn. Das ergibt eine Hіchstwertung von $208, wenn man mit einem Durchgang auskommt (d.h. ohne Umdrehen), was sehr selten sein dќrfte. xpat2-1.07/lib/german/hilf.Cotillion100644 146 144 2636 7174615266 16023 0ustar mbimathopt Die Regeln fќr Royal Cotillion ============================== Royal Cotillion wird mit zweimal 52 Karten gespielt (keine Joker). Zu Beginn werden links drei Stіпe zu je drei Karten aufgelegt. Links oben befinden sich auch der Talon und ein Ablagestapel. Die rechte Seite des Tableaus besteht aus zwіlf einzelnen Karten in drei Spalten zu je vier Karten. In den mittleren beiden Spalten werden die Zielstapel aufgebaut. Fќr jede Farbe gibt es zwei Folgen: A,3,5,7,9,B,K,2,4,6,8,10,D 2,4,6,8,10,D,A,3,5,7,9,B,K Von den drei Stіпen auf der linken Seite darf jeweils nur die oberste Karte genommen werden, und die Stіпe werden nicht wieder aufgefќllt. Auf der rechten Seite kіnnen alle Karten gespielt werden; sie werden aus dem Ablagestapel oder, wenn dieser leer ist, aus dem Talon nachgefќllt. Die Karten des Talon werden nacheinander aufgedeckt und kіnnen entweder auf einen der Zielstapel oder den Ablagestapel gelegt werden. Auch die oberste Karte des Ablagestapels kann stets gespielt werden. Das Spiel ist gewonnen, wenn alle acht Zielstapel vollstфndig sind, und verloren, wenn kein Zug mehr mіglich ist. Falls man die Wahl hat, ist es ratsam, die Karten der linken Seite zuerst zu spielen, um so zusфtzliche Karten freizulegen. Auf der rechten Seite sollte man einen Zug nicht nur deshalb machen, weil er gerade mіglich ist; man wartet besser, bis auf dem Ablagestapel eine Karte auftaucht, die man gerne sichern mіchte. xpat2-1.07/lib/german/hilf.Delight100644 146 144 2027 7174615266 15441 0ustar mbimathopt Die Regeln fќr Idiot's Delight ============================== Idiot's Delight benutzt ein normales Blatt von 52 Karten (keine Joker), wobei Asse am hіchsten zфhlen, also mehr als Kіnige. Zu Beginn werden vier Karten offen in einer Reihe ausgelegt. Man darf jeweils die oberste Karte einer der vier Spalten wegnehmen, wenn sie niedriger ist als eine andere oberste Karte derselben Farbe. Wenn keine Karten mehr entfernt werden kіnnen, gibt man vier weitere Karten auf die Reste der vorhergehenden Runde und entfernt wieder Karten, soweit es mіglich ist. Ist eine Spalte vollstфndig abgebaut, so kann man die oberste Karte einer anderen Spalte auf den leeren Platz legen. Das Spiel ist gewonnen, wenn am Ende nur noch die vier Asse ќbrigbleiben. Man sollte vorsichtig damit sein, welche Karte man auf einen Leerplatz legt. Man neigt dazu, die Asse so bald wie mіglich auf die Leerplфtze zu legen, aber manchmal ist es ratsam, andere Mіglichkeiten zu berќcksichtigen. Das hфngt davon ab, welche Karten man mit dem jeweiligen Zug freilegen kann. xpat2-1.07/lib/german/hilf.FreeCell100644 146 144 1640 7174615266 15542 0ustar mbimathopt Die Regeln fќr Free Cell ======================== Diese Variante wurde dem Spiel unter Microsoft Windows nachempfunden. Das Spiel ist einfach zu verstehen, wenn man Gypsy kennt [siehe dort], denn die Regeln fќr das Anlegen von Karten sind dieselben. Free Cell wird mit einem einzigen Blatt von 52 Karten gespielt. Es gibt acht Spalten, vier sogenannte Register und vier Zielstapel. Register sind ein neuer Typ von Stapel: In einem Register kann jeweils nur eine Karte abgelegt werden, die aber beliebig sein kann. Diese Regel gleicht die Tatsache aus, dass alle Karten bereits zu Beginn gegeben werden, was es schwer macht, eine freie Spalte zu bekommen. Die Karten, die anfangs gegeben werden, bilden oft keine gќltigen Gruppen. Man muss sie umordnen, indem man die Register zu Hilfe nimmt. Um eine freie Spalte zu erhalten, muss man Gruppen von Karten bilden, bei denen Rot und Schwarz abwechselt und die Werte abnehmen. xpat2-1.07/lib/german/hilf.Gypsy100644 146 144 3404 7174615266 15174 0ustar mbimathopt Die Regeln fќr Gypsy ==================== Gypsy wird mit zwei Blatt zu 52 Karten gespielt. Es gibt acht Spalten, in die zu Beginn je drei Karten gegeben werden; zwei Karten liegen verdeckt und die oberste offen. An die oberste Karte einer Spalte darf man eine nфchstniedrigere Karte anlegen, wobei Rot und Schwarz abwechseln mќssen. Zum Beispiel darf man die Kreuz-Vier auf eine Herz-Fќnf oder Karo-Fќnf legen. Dieselbe Regel gilt, wenn man zusammenhфngende Gruppen von Karten bewegt: Eine Kartengruppe kann als Block bewegt werden, wenn die Werte abnehmen und Rot und Schwarz abwechseln. Auf die acht Zielstapel werden die Karten einzeln in aufsteigender Reihenfolge hochgelegt, von As bis Kіnig. Eine Karte kann nur auf einem Zielstapel ihrer eigenen Farbe abgelegt werden. Es ist sinnvoll, alle Asse sofort auf die Zielstapel zu legen. Bei hіheren Karten kann es jedoch klќger sein, sie in den Spalten zu behalten, um andere Karten darauf abzulegen. Es ist erlaubt, Karten von den Zielstapeln auf die Spalten zurќckzulegen, sofern die Regeln fќr das Anlegen eingehalten werden. Das kann nќtzlich sein, wenn man leere Spalten erzeugen will, um Kіnige dort abzulegen. (Auf eine leere Spalte kann man jede Karte legen, aber sie sind die einzigen, auf die man Kіnige legen kann.) Punktwertung: Fќr Gypsy werden Punkte von 0 bis 1000 vergeben. Es gibt zwei Punkte fќr jedes rot-schwarze Kartenpaar in einer Spalte und fќnf Punkte fќr jede Karte auf einem Zielstapel. Fќr jeden vollstфndigen Zielstapel von As bis Kіnig kommen weitere 60 Punkte hinzu. Anmerkung: Die Regeln sind keine Erfindung der Autoren von XPat, aber der Name Gypsy ist es. Wir spielen Gypsy seit Jahren, wissen aber einfach nicht, wie das Spiel ursprќnglich genannt wurde. Wer es weiп, mіge uns bitte Bescheid geben. xpat2-1.07/lib/german/hilf.Klondike100644 146 144 2411 7174615266 15616 0ustar mbimathopt Die Regeln fќr Klondike ======================= Klondike ist eine traditionelle Patience, die mit einem einzigen Blatt von 52 Karten gespielt wird. Es gibt vier Zielstapel und sieben Spalten. Zu Beginn enthфlt die erste Spalte eine Karte, die zweite zwei Karten, und so weiter bis zur siebten Spalte mit sieben Karten. Bei jeder Spalte ist jeweils nur die oberste Karte aufgedeckt. Ferner gibt es neben dem Talon noch einen Ablagestapel mit aufgedeckten Karten. Wenn eine Karte vom Talon abgehoben wird, kommt sie auf den Ablagestapel. Man kann eine Karte vom Ablagestapel auf die Spalten oder die Zielstapel spielen, aber niemals eine Karte auf den Ablagestapel zurќcklegen. Die Regeln, nach denen Karten angelegt werden kіnnen, entsprechen denen von Gypsy [siehe dort]: In den Spalten werden absteigende Folgen von abwechselnd roten und schwarzen Karten aufgebaut, und solche Gruppen kіnnen auch als Block bewegt werden. Der einzige Unterschied zu Gypsy ist, dass man auf eine leere Spalte nur einen Kіnig legen darf. In die Zielstapel kommen Karten einer Farbe in aufsteigender Folge, von As bis Kіnig. Wenn alle Karten vom Talon abgehoben wurden, kann man den Ablagestapel umdrehen und mit diesem neuen Talon weitermachen. Der Ablagestapel kann bis zu drei Mal umgedreht werden. xpat2-1.07/lib/german/hilf.Michaels100644 146 144 1121 7174615266 15600 0ustar mbimathopt Die Regeln fќr Michael's Fantasy ================================ Diese Variante wurde erfunden, um die Spaltenumlauf- Kommandos von XPat zu testen. Michael's Fantasy wird mit einem Blatt von 52 Karten gespielt. Das Spiel фhnelt Free Cell [siehe dort], aber man hat nur sechs Spalten, und drei bis vier Karten werden anfangs verdeckt ausgelegt. Um das auszugleichen, kann man eine Spalte bis zu fќnf Mal umlaufen lassen (nur aufgedeckte Karten). Dazu drќckt man die Taste 'b' oder 'f' (fќr backward = rќckwфrts bzw. forward = vorwфrts) und klickt dann auf die unterste zu bewegende Karte. xpat2-1.07/lib/german/hilf.MidnightOil100644 146 144 3043 7201316343 16250 0ustar mbimathopt Die Regeln fќr Midnight Oil =========================== Midnight Oil wird mit einem Standardblatt von 52 Karten gespielt (keine Joker). Zu Beginn werden die Karten gemischt und dann in siebzehn Spalten zu je drei Karten offen ausgelegt. Die letzte Karte bildet allein die achtzehnte Spalte. Diese Spalten werden auch als Fфcher ("fans") bezeichnet. Ziel des Spiels ist es, alle Karten von den achtzehn Fфchern zu vier neuen Stapeln umzuschichten. Diese Zielstapel bestehen jeweils aus Karten einer Farbe, die aufsteigend von As (niedrig) bis Kіnig (hoch) angeordnet sind; sie werden Fundamente ("foundations") genannt. Es kann jeweils nur die oberste Karte eines Fфchers gespielt werden. Man kann sie entweder auf einem Fundament ablegen, oder auch auf einem anderen Fфcher, und zwar absteigend in derselben Farbe. Auf diese Weise kann man untenliegende Karten freilegen, um sie auf die Fundamente oder andere Fфcher zu spielen. Wenn ein Fфcher abgebaut ist, kіnnen dort keine Karten mehr abgelegt werden. Sind keine weiteren Zќge mіglich -- von Fфcher zu Fundament oder Fфcher zu Fфcher --, so kіnnen die ќbriggebliebenen Fфcherkarten neu gemischt und auf dieselbe Weise wie zu Beginn ausgelegt werden (drei Karten pro Fфcher). Insgesamt kann das Blatt dreimal gemischt werden: einmal zu Beginn und noch zweimal wфhrend des Spiels. Ein einziges Mal darf man eine untenliegende Karte aus einem Fфcher nach oben holen; dazu drќckt man die Taste 'b' und klickt auf die betreffende Karte. Es ist im allgemeinen am besten, diesen Zug so lange wie mіglich aufzusparen. xpat2-1.07/lib/german/hilf.ModCanfield100644 146 144 463 7174615266 16210 0ustar mbimathopt Die Regeln fќr Modified Canfield ================================ Die Regeln sind die von Canfield [siehe dort], mit der Ausnahme, dass Kіnig auf As in den Spalten nicht erlaubt ist und dass Talon und Zusatzstapel identisch sind. Diese Variante ist betrфchtlich einfacher als das ursprќngliche Canfield. xpat2-1.07/lib/german/hilf.MonteCarlo100644 146 144 2102 7174615266 16116 0ustar mbimathopt Die Regeln fќr Monte Carlo ========================== Monte Carlo wird mit einem Standardblatt von 52 Karten gespielt (keine Joker). Zu Beginn wird das Blatt gemischt, dann in fќnf Reihen zu fќnf Karten offen ausgelegt (Tableau); der Rest des Blattes wird als Talon zurќckgehalten. Nun werden alle Paare von Karten entfernt, die denselben Wert haben (z.B. Herz-Drei und Pik-Drei, die Farbe spielt keine Rolle) und benachbart sind -- horizontal, vertikal oder diagonal. Man beachte, dass durch das Entfernen einer Karte z.B. die Karten links und rechts davon nicht sofort Nachbarn werden. Nachdem alle mіglichen Kartenpaare entfernt wurden, wird das Tableau konsolidiert: Die ќbrigen Karten werden "nachgeschoben", um die Lќcken zu fќllen (nach links und nach oben, so dass die Reihenfolge erhalten bleibt), und es werden Karten aus dem Talon ergфnzt. Dieser Ablauf -- das Entfernen von Kartenpaaren mit anschliessender Konsolidierung -- kann beliebig oft wiederholt werden. Das Spiel ist gewonnen, wenn das gesamte Blatt entfernt wurde, oder verloren, wenn kein Zug mehr mіglich ist. xpat2-1.07/lib/german/hilf.Oonsoo100644 146 144 1423 7174615266 15334 0ustar mbimathopt Die Regeln fќr Oonsoo ===================== Obwohl Oonsoo von der Idee her durchaus Spider фhnelt [siehe dort], ist es anfangs etwas verwirrend, da man die Karten nach dem Wert (nicht nach der Farbe) anlegt. Oonsoo wird mit 48 Karten gespielt, so dass zwіlf Zielfolgen mit vier Karten aufzubauen sind. Die absteigenden Folgen sind Kreuz, Pik, Herz, Karo. Man darf nur Karten niedrigerer Farbe auf solche hіherer Farbe und gleichen Wertes legen; so kann man z.B. die Herz-Sechs auf die Kreuz-Sechs oder Pik-Sechs, aber auf keine andere Karte spielen. Auf leeren Plфtzen darf man nur Kreuz-Karten ablegen. Wer sich fќr Oonsoo interessiert, sollte auch die Implementierung von Bradford W. Mott (bwmott@eos.ncsu.edu) ausprobieren, die sich durch besondere Karten-Graphiken auszeichnet. xpat2-1.07/lib/german/hilf.Seahaven100644 146 144 1321 7174615266 15607 0ustar mbimathopt Die Regeln fќr Seahaven Towers ============================== Seahaven Towers фhnelt Free Cell [siehe dort] (oder andersherum -- ich weiп nicht, welches Spiel es zuerst gab). Man hat zehn Spalten und vier Register, aber es ist schwieriger: Man darf nur Karten derselben Farbe aufeinander ablegen, und in einer leeren Spalte nur einen Kіnig. Das ursprќngliche Seahaven Towers hat noch eine weitere Einschrфnkung: Wenn man einen Block von n Karten bewegt, muss man mindestens n-1 freie Register haben (es lassen sich nur einzelne Karten bewegen). Diese Einschrфnkung kann man fallenlassen, indem man XPat mit der Option '-relaxed 1' aufruft, denn sie hat zur Folge, dass man nur Blіcke bis zu fќnf Karten bewegen kann. xpat2-1.07/lib/german/hilf.Spider100644 146 144 15042 7174615266 15330 0ustar mbimathopt Die Regeln fќr Spider ===================== Fќr Spider wird ein Blatt von zweimal 52 Karten verwendet. Ziel des Spiels ist es, Kartenfolgen einer Farbe vom Kіnig zum As aufzubauen, die dann von den Spalten genommen und als Zielstapel hochgelegt werden. Das Spiel ist gewonnen, wenn alle acht Folgen aufgebaut und entfernt wurden. Bei einer schwierigeren Version werden fertige Folgen nicht sofort entfernt, sondern bleiben bis zum Schluss auf dem Tisch. Das Tableau Zu Beginn wird das Blatt gemischt, und es werden zehn Karten verdeckt nebeneinander ausgelegt. Auf jede von diesen zehn Karten gibt man verdeckt drei weitere. Auf vier der Spalten gibt man dann noch eine Karte verdeckt (traditionell die linken vier, aber das spielt keine Rolle -- manche Leute ziehen aus фsthetischen Grќnden die erste, vierte, siebte und zehnte Spalte vor), so dass insgesamt 44 Karten verdeckt liegen. Schlieпlich gibt man auf jede Spalte eine Karte offen. Diese 54 Karten bilden das Ausgangs-Tableau. Die Spielzќge Die Kartenfolgen werden nur in den Spalten aufgebaut, nicht auf den Zielstapeln. Auf die oberste Karte einer Spalte kann man jeweils eine nфchstniedrigere Karte legen, unabhфngig von der Farbe. Die Rangfolge von der hіchsten zur niedrigsten Karte ist Kіnig, Dame, Bube, Zehn, Neun, ..., Drei, Zwei, As. Ein Kіnig darf nur in einer leeren Spalte abgelegt werden (oder auf einem Zielstapel, wenn die Folge Kіnig - As vollstфndig ist), da es keine hіhere Karte als den Kіnig gibt. Gespielt werden kann stets die oberste Karte einer Spalte, oder jede zusammenhфngende, absteigende Folge von Karten einer Farbe, die oben auf einer Spalte liegt. Nehmen wir an, dass die Herz-Sechs, -Fќnf und -Vier oben auf einer Spalte liegen, mit der Vier zuoberst. Dann kann man diese drei Karten als Einheit bewegen, oder die Vier alleine, oder die Fќnf und die Vier zusammen ohne die Sechs. Legt man die Dreiergruppe auf eine Herz-Sieben, so kann man diese vier Karten als Einheit auf irgendeine Acht bewegen. Ist die Sieben jedoch keine Herz-Sieben, so kann man sie nicht mehr spielen, solange die Herz-Karten nicht wegbewegt wurden (auf eine andere Sieben oder auf einen leere Spalte -- siehe unten). Hat man die offenen Karten von einer Spalte abgespielt, so wird die oberste verdeckte Karte umgedreht und kann ebenfalls gespielt werden. Leere Spalten Wenn alle Karten aus einer Spalte abgespielt wurden, erhфlt man einen leere Spalte (ein Loch). In einer leeren Spalte kann jede beliebige Karte abgelegt werden. Ein Kіnig (oder eine Folge vom Kіnig abwфrts) kann nur auf eine leere Spalte verschoben und danach nicht mehr fortbewegt werden (auпer auf eine andere leere Spalte, womit man nichts erreicht), bis er ganz entfernt wird (siehe unten). Der Talon Die 50 Karten, die nicht zu Beginn ausgelegt werden, bilden den Talon. Man kann zu jedem Zeitpunkt (typischerweise, wenn man steckenbleibt) eine neue Runde von zehn Karten geben, die offen auf die Spalten gelegt werden. Das darf man jedoch nicht tun, wenn es leere Spalten gibt; man muss sie zuerst fќllen. Man beachte auch, dass die zusфtzlichen Karten i.a. zu Sprќngen innerhalb der Spalten fќhren, da sie nicht unbedingt auf nфchsthіheren Karten zu liegen kommen. Bleibt man stecken, nachdem die letzte von fќnf zusфtzlichen Runden gegeben wurde, so hat man verloren. Wird XPat mit der Option '-relaxed 1' aufgerufen, so darf man auch dann neue Karten geben, wenn alle nicht-leeren Spalten strikt geordnet sind, also nach Farbe und Wert; mit der Option '-relaxed 2' genќgt es, wenn sie nach dem Wert geordnet sind. Mit dieser Option muss man bestehende Folgen nicht zerstіren, um leere Spalten zu fќllen, bevor man neue Karten bekommt. Die Strategie Als allgemeine Strategie mіchte man eine leere Spalte erzeugen, da dies der einfachste Weg ist, Karten herumzubewegen. (Anm.: Bevor die nфchste Runde gegeben wird, mќssen alle Spalten mindestens eine Karte enthalten -- siehe oben.) Wenn man Karten zwischen den Spalten austauscht, ist es ferner vorteilhaft, die hіchsten Karten zuerst und die niedrigsten Karten zuletzt zu bewegen, nachdem man die offensichtlichen Zќge erledigt hat. Z.B. spielt man eine Pik-Fќnf auf eine Pik-Sechs, dann eine Herz-Dame auf einen Kreuz-Kіnig, bevor man die Kreuz-Sieben auf die Herz-Acht spielt. Dann kann man sich aussuchen, ob man eine Gruppe aus Pik-Fќnf und Pik-Sechs auf eine Kreuz-Sieben verschiebt. Soweit mіglich, sollte man Karten zu Gruppen gleicher Farbe zu kombinieren, die man als Einheit verschieben kann. Wenn die Gruppe aus Pik-Fќnf und Pik-Sechs einmal erzeugt wurde, kann man sie wieder trennen, indem man die untere Karte mit der mittleren Maustaste anklickt. Das Ziel Wenn man eine komplette Folge von dreizehn Karten, vom Kіnig bis zum As, oben auf einer Spalte aufgebaut hat, kann man diese dreizehn Karten aus dem Tableau herausnehmen. Das Spiel ist gewonnen, wenn man es schafft, alle acht Folgen zu entfernen. Herausgenommene Karten kіnnen nicht wieder ins Spiel zurќckgebracht werden. Es ist daher nicht immer wќnschenswert, eine solche Folge zu entfernen (obwohl das gewіhnlich der Fall ist), da man mit ihnen vielleicht die anderen Karten der betreffenden Farbe besser in den Griff bekommt (man beachte, dass es 26 Karten von jeder Farbe gibt). Wenn das Spiel so gut lфuft, dass man sicher ist zu gewinnen, so kann man es interessanter machen, indem man versucht, mіglichst viele komplette Folgen in den Spalten zu behalten. Am schwierigsten ist es, das Spiel mit allen Folgen vom Kіnig bis hinunter zum As in den Spalten zu beenden. Achtung: Wenn man dieses Ziel anstrebt, bringt man vielleicht das Tableau so sehr durcheinander, dass man ќberhaupt nicht mehr gewinnen kann! Die Punktwertung Spider ist schwer zu meistern, und manche Spieler mіchten ihren Fortschritt abschфtzen, indem sie erfolglose Spiele nach Punkten bewerten. Es gibt in der Literatur keine Regeln dafќr, aber XPat benutzt die folgende willkќrliche Bewertung: Fќr jede umgedrehte Karte, die anfangs verdeckt lag, gibt es 10 Punkte, und 15 weitere Punkte fќr jede Spalte, in dem alle Karten umgedreht wurden (selbst wenn man es nicht geschafft hat, eine leere Spalte zu erzeugen). Jede Karte, die auf einer nфchsthіheren Karte liegt, zфhlt 2 Punkte, und eine vollstфndige Folge einer Farbe 50 Punkte (in diesem Fall werden die zwіlf Paare aufeinanderfolgender Karten nicht zusфtzlich gewertet). Das ergibt ein Maximum von 990 Punkten. Gewinnt man das Spiel mit vier oder mehr vollstфndigen Folgen, die sich noch in den Spalten befinden, so kommen 2 Punkte fќr jede Folge nach der dritten dazu. Gewinnt man mit allen acht Folgen in den Spalten, so ergeben sich 1000 Punkte. xpat2-1.07/lib/german/hilf.bedien100644 146 144 21423 7201316377 15320 0ustar mbimathopt XPat - Maus, Menќ, Tastatur =========================== Bevor die Bedienung im einzelnen erlфutert wird, hier ein мberblick ќber die Funktionen, die man am hфufigsten braucht: Mit der linken Maustaste wird ein schneller Zug ausgefќhrt, der Bestimmungsort wird automatisch gewфhlt. Will man den Zug selber vorgeben, so markiert man Anfang und Ende mit der mittleren Maustaste. Die rechte Maustaste kann man benutzen, um sich untenliegende Karten in einer Spalte anzeigen lassen. Will man eine neue Runde Karten geben oder den Ablagestapel umdrehen, so klickt man mit der linken Maustaste auf den Talon (falls vorhanden) oder auf "Karten geben" in der Menќleiste. Die Maus XPat unterstќtzt drei Maustasten. Die Funktion der Tasten hфngt davon ab, wo sich der Mauszeiger befindet. Linke Maustaste: Zeigt die Maus auf eine offene Karte oder eine Spalte, so wird mit der linken Maustaste ein schneller Zug ausgefќhrt (falls mіglich): Eine Karte oder eine Gruppe von Karten wird automatisch gespielt, entweder auf einen Zielstapel oder einen anderen Platz. Zќge auf Zielstapel haben Vorrang vor anderen Zќgen. Lфsst sich die oberste Karte einer Spalte auf einen Zielstapel hochlegen, so wird die vertikale Position der Maus innerhalb der Spalte ignoriert. Werden Karten an eine andere Spalte angelegt, so wird eine mіglichst groпe Anzahl von Karten bewegt, aber begrenzt durch die Position der Maus. Liegen z.B. Zehn, Neun und Acht oben auf einer Spalte und zeigt die Maus auf die Neun, so werden die Acht und evtl. die Neun bewegt (falls die Farben passen), aber nicht die Zehn. Zeigt die Maus auf den Talon, so wird mit der linken Maustaste eine neue Runde Karten gegeben oder -- wenn der Talon leer ist -- der Ablagestapel umgedreht. Mittlere Maustaste: Will man selbst bestimmen, wohin die Karten gespielt werden, so benutzt man die mittlere Maustaste. Mit ihr wфhlt man zunфchst eine Gruppe von Karten aus. Die ausgewфhlten Karten sollten schattiert erscheinen (oder, wenn man will, von gepunkteten oder farbigen Linien umrandet -- siehe die Optionen -markcolor, -markwidth). Nun bewegt man die Maus zum Bestimmungsort und drќckt wieder die mittlere Maustaste, um den Zug auszufќhren (falls zulфssig). Um den Zug abzubrechen, klickt man noch einmal auf die ausgewфhlten Karten. Diese Funktion ist auch nќtzlich, um Gruppen in den Spalten zu sehen. Um die lфngste Gruppe zu markieren, die bewegt werden kann, klickt man mit der mittleren Maustaste auf die unterste offene Karte in der Spalte. (Um die Markierung aufzuheben, klickt man noch einmal.) Rechte Maustaste: Wenn man eine Weile gespielt hat, merkt man, dass die Spalten lфnger werden. Erreichen sie die Unterkante des Fensters, so werden sie dichter zusammengeschoben, damit sie ins Fenster passen. Irgendwann kann man nicht mehr sehen, welche Karten die Spalte enthфlt (abgesehen von der obersten), weil sie zu dicht zusammenliegen. Will man sich eine untenliegende Karte ansehen, so klickt man mit der rechten Maustaste darauf; die Karte wird im Vordergrund angezeigt. Die Karte verschwindet wieder, wenn man die Maustaste loslфsst. Hфlt man die Taste gedrќckt und bewegt die Maus die Spalte entlang, so wird eine Karte nach der anderen angezeigt. Die Menќleiste Die Menќs werden mit der linken Maustaste bedient. "Spiel": Mit "Merker setzen" wird ein Spielstand eingemerkt, zu dem man mit "Zum Merker" zurќckkehren kann. Mit "Nachspielen" wird das Spiel im Zeitraffer nachgespielt (nur zum Spaп). Mit "Nochmal von vorn" beginnt man das Spiel bei demselben Ausgangs-Tableau, mit "Neues Spiel" bei einem anderen. Mit "Ende" beendet man XPat. "Regeln": Man kann sich die gewќnschte Spielvariante aus einer Liste aussuchen; es wird automatisch ein neues Spiel begonnen, "Karten": Es wird eine neue Runde Karten gegeben (aus der Hand oder vom Talon), oder der Ablagestapel wird umgedreht. "Zurќck", "Vorwфrts": XPat zeichnet alle Spielzќge auf, so dass man beliebig viele Zќge zurќcknehmen kann. Die zurќckgenommenen Zќge kann man dann umgekehrt noch einmal ausfќhren. Es ist nicht nett, Karten aufzudecken und wieder zurќckzulegen, wenn sie einem nicht gefallen. Wird daher ein Zug zurќckgenommen, bei dem man etwas neues erfahren hat, so wird dies als Schummelei betrachtet und aufgezeichnet. Ein Spiel noch einmal von vorn zu beginnen wird als groпe Schummelei angesehen, da man nun evtl. die Lage aller Karten kennt. Wer ehrlich spielen will, kann ein versehentliches Zurќcknehmen ungeschehen machen, wobei der Schummel-Zфhler wieder abnimmt. Schummel-Zфhlung ist nicht fќr alle Spielregeln implementiert. Ferner wird es nicht als Schummeln angesehen, XPat mit einem bestimmten Stand des Zufallsgenerators zu starten, da man den Stand vielleicht von einem Freund bekommen hat (versuche einmal diesen ....). "Punkte": Die aktuelle Punktwertung wird angezeigt. "Tips": XPat bietet die Mіglichkeit an, sich einen Zug vorschlagen zu lassen. Die mіglichen Zќge werden gesammelt und nach einem einfachen Algorithmus bewertet. Beim ersten Klick mit der linken Maustaste auf den Button "Tips" wird der beste Zug angezeigt, beim zweiten Mal der zweitbeste usw. Wurden alle Tips angezeigt, so wird die Meldung "(einmal rum)" ausgegeben, und die Folge beginnt wieder von vorn. Will man einen Hinweis noch einmal sehen, so kann man mit der rechten Maustaste auf "Tips" klicken, um die Folge rќckwфrts zu durchlaufen. Will man den Zug ausfќhren, der gerade angezeigt wird, so klickt man einfach mit der mittleren Maustaste auf "Tips". Achtung: Zќge auf leere Slots werden nicht angezeigt, auпer wenn Kіnige die einzigen Karten sind, die dort abgelegt werden kіnnen. Ebenso werden andere Zќge nicht angezeigt, die fќr zu schlecht gehalten werden, z.B. alle Zќge, bei denen Karten von den Zielstapeln heruntergenommen werden. Die Meldung "Keine Tips!" bedeutet also nicht, dass ќberhaupt kein Zug mіglich ist. Das Kommando AllMoves, das an die Taste 'm' gebunden ist, wфhlt wiederholt den besten Zug und fќhrt ihn aus (eine Art Automatik ќber einige Zќge hinweg). Man sollte vorsichtig damit sein, da es das Spiel ruinieren kann. "Ablegen": Die markierte Karte wird auf einem passenden Zielstapel abgelegt. Ist keine Karte markiert, so werden alle in Frage kommenden Karten abgelegt. "Hilfe": Es wird ein Hilfefenster geіffnet. Mit "Gebiet" wфhlt man die anzuzeigende Hilfeseite aus, mit "Hilfefenster schlieпen" beendet man die Hilfe. "Sichern": Der Spielstand wird in einer Datei gesichert. Ruft man spфter XPat mit dem Dateinamen als Parameter auf, so kann man beim gesicherten Stand mit dem Spiel fortfahren. Der Dateiname besteht aus der Spielvariante und dem Anfangswert des Zufallsgenerators (z.B. "Gypsy.947195176"); ist der Dateiname zu lang fќr das Filesystem, so wird die Spielvariante abgekќrzt. Existiert das File bereits, so wird es ќberschrieben. Fehlermeldungen erscheinen auf stderr. "Lфrm": Die Sound-Unterstќtzung wird aus- oder eingeschaltet. Die Tastatur Viele Funktionen von XPat (darunter die in den Menues) lassen sich an Tastaturkќrzel binden. Die Funktion wird ausgefќhrt, wenn sich der Mauszeiger im XPat-Fenster befindet und die entsprechende Taste gedrќckt wird. Im folgenden wird die Tastaturbelegung beschrieben, die standardmфпig mit XPat mitkommt. XPat lфdt diese Belegung aus einer Konfigurationsdatei; die tatsфchlichen Tastenfunktionen kіnnen daher variieren. Einige Tasten sind von XPat vorbelegt (lassen sich jedoch umdefinieren). Dazu gehіren die folgenden Tasten, mit denen man die Spielvariante wechseln kann (in alphabetischer Reihenfolge): B - Baker's Dozen C - Canfield F - Free Cell G - Gypsy H - SeaHaven Towers I - Idiot's Delight K - Klondike M - Monte Carlo O - Midnight Oil R - Royal Cotillion S - Spider Diese Tasten wechseln die Spielvariante (und beginnen ein neues Spiel), ohne dass eine Bestфtigung eingeholt wird; ferner werden die Sound-Prozeduren umgangen. Fќr das neue Spiel gelten die Voreinstellungen, d.h. keine benutzerdefinierten Werte fќr Stapel- und Spaltenzahlen. Die anderen vorbelegten Tasten sind: ^L - Fenster auffrischen ESC - Zug abbrechen Alle anderen Funktionen mќssen hingegen explizit einer Taste zugeordnet werden. Derzeit sind die folgenden Tasten belegt (deutsche Fassung): j - Vorgang bestфtigen (ja) n - Vorgang abbrechen (nein) Q - XPat beenden (mit Bestфtigung) A - Spiel noch einmal beginnen N - neues Spiel starten (gleiche Regeln) + - nфchsten Zugvorschlag zeigen - - vorhergehenden Zugvorschlag zeigen - Zugvorschlag ausfќhren m - Zќge selbsttфtig ausfќhren M - Fenster auf minimale Grіпe anpassen P - Fenster fќr dieses Layout anpassen d - neue Karten geben D - neue Karten geben s - aktuelle Punktwertung ausgeben i - Grіпe des Talons ausgeben v - Version von XPat ausgeben f - Spalte umlaufen lassen (vorwфrts) b - Spalte umlaufen lassen (rќckwфrts) Man beachte, dass damit die Vorbelegung fќr die Taste 'M' ќberschrieben wird. xpat2-1.07/lib/german/hilf.tasten100644 146 144 4026 7174615266 15360 0ustar mbimathopt XPat - Tastaturbelegung ======================= Viele Funktionen von XPat (darunter die in den Menues) lassen sich an Tastaturkќrzel binden. Die Funktion wird ausgefќhrt, wenn sich der Mauszeiger im XPat-Fenster befindet und die entsprechende Taste gedrќckt wird. Im folgenden wird die Tastaturbelegung beschrieben, die standardmфпig mit XPat mitkommt. XPat lфdt diese Belegung aus einer Konfigurationsdatei; die tatsфchlichen Tastenfunktionen kіnnen daher variieren. Einige Tasten sind von XPat vorbelegt (lassen sich jedoch umdefinieren). Dazu gehіren die folgenden Tasten, mit denen man die Spielvariante wechseln kann (in alphabetischer Reihenfolge): B - Baker's Dozen C - Canfield F - Free Cell G - Gypsy H - SeaHaven Towers I - Idiot's Delight K - Klondike M - Monte Carlo O - Midnight Oil R - Royal Cotillion S - Spider Diese Tasten wechseln die Spielvariante (und beginnen ein neues Spiel), ohne dass eine Bestфtigung eingeholt wird; ferner werden die Sound-Prozeduren umgangen. Fќr das neue Spiel gelten die Voreinstellungen, d.h. keine benutzerdefinierten Werte fќr Stapel- und Spaltenzahlen. Die anderen vorbelegten Tasten sind: ^L - Fenster auffrischen ESC - Zug abbrechen Alle anderen Funktionen mќssen hingegen explizit einer Taste zugeordnet werden. Derzeit sind die folgenden Tasten belegt (deutsche Fassung): j - Vorgang bestфtigen (ja) n - Vorgang abbrechen (nein) Q - XPat beenden (mit Bestфtigung) A - Spiel noch einmal beginnen N - neues Spiel starten (gleiche Regeln) + - nфchsten Zugvorschlag zeigen - - vorhergehenden Zugvorschlag zeigen - Zugvorschlag ausfќhren m - Zќge selbsttфtig ausfќhren M - Fenster auf minimale Grіпe anpassen P - Fenster fќr dieses Layout anpassen d - neue Karten geben D - neue Karten geben s - aktuelle Punktwertung ausgeben i - Grіпe des Talons ausgeben v - Version von XPat ausgeben f - Spalte umlaufen lassen (vorwфrts) b - Spalte umlaufen lassen (rќckwфrts) Man beachte, dass damit die Vorbelegung fќr die Taste 'M' ќberschrieben wird. xpat2-1.07/lib/french/ 40755 146 144 0 6714527366 13115 5ustar mbimathoptxpat2-1.07/lib/french/README.french100644 146 144 6020 5720056144 15317 0ustar mbimathopt********************************************************* Xpat2 French Translation, Tuesday Febuary the 13th of 1995 Note about the french translation: ---------------------------------- Up to now, I've translated the messages file, the XPat resource file, the help.something files (which became aide.something), and the help.keys file (which became aide.touches). I've also modified a little the keys file (R islinked to RestartGame instead of A, < is RotateDown and > is RotateUp). Maybe some files will be improved, if there are comments of deceived people... :-( I'll try to translate the other help files as fast as I can, so keep hoping... :-) If someone happens to be better than me at translating card games technical words, I will apreciate his help! You can send me modifications, corrections if you make some so that I can go on maintaining the french translation. I didn't have time enough to put all the accents (in fact, only the ^), I've lost my config file for emacs, but they will be there next time. Sorry. Well, have fun playing with xpat2 which is a fantastic game! Last thing: if you ever want some of your work being translated to french, contact me! Jeremie petit@aurora.unice.fr ****************************************************** Traduction franчaise pour Xpat2, Mardi 13 Fщvrier 1995 Note р propos de la traduction franчaise: ----------------------------------------- Pour l'instant, j'ai traduit le fichier messages, le fichier de ressources XPat, les fichiers d'aide de format help.kekchose (qui sont devenus au passage aide.kekchose), et le fichier help.keys (devenu aide.touches). J'ai aussi р peine modifiщ le fichier keys: j'ai liщ la touche R р la fonction RestartGame au lieu de A, чa ressemble plus р Recommencer comme чa, et les touches '<' et '>' aux rotations arriшre et avant (plutot que 'f' (forward) et 'b' (backward), c'est plus intuitif, multiщdia, virtuel et interactif :-)). J'essaierai de traduire les autres fichiers d'aide aussi vite que possible, gardez l'espoir. Y'a certainement encore pas mal de boulot, des corrections, des accents р mettre... J'y travaille, mais si vous avez des critiques, n'hщsitez pas. Si quelqu'un s'y connait en termes techniques sur les jeux de cartes, j'apprщcie toute aide! Vous pouvez m'envoyer toute modification ou correction si vous en faites, comme чa je pourrai continuer р maintenir l'adaptation franчaise. J'ai pas eu le temps de mettre les accents circonflexes, j'ai paumщ mon fichier de config emacs. Ils seront lр la prochaine fois, promis (enfin, euh... presque...). Eh bien, marrez-vous bien en jouant avec xpat2, c'est vraiment un jeu super cool! Une derniшre chose: si vous avez un programme р traduire en franчais, contactez-moi! Jщrщmie petit@aurora.unice.fr **************************************************** Jщrщmie PETIT petit@aurora.unice.fr Surface Mail: 552 Av de la Libщration 06700 St Laurent du Var **************************************************** xpat2-1.07/lib/french/XPat100644 146 144 1515 5720056144 13776 0ustar mbimathopt#include "../../app-defaults/XPat" XPat*Dialog*Translations: #override \n\ o: Ok()\n\ n: Cancel()\n XPat*helptext*string: Choisissez un sujet. XPat*Topic.label: Sujets XPat*Close Help.label: Quitter l'aide XPat*Game.label: Jeu XPat*Rules.label: Rшgles XPat*Cards.label: Cartes XPat*Undo.label: Annuler XPat*Redo.label: Rщitщrer XPat*Save.label: Sauvegarder XPat*Score.label: Score XPat*Hint.label: Indice XPat*Move to Stack.label: Mettre au dщpєt XPat*Help.label: Aide XPat*Sound.label: Son XPat*Drop Bookmark.label: Poser une marque XPat*Goto Bookmark.label: Revenir la marque XPat*Replay.label: Rejouer la partie XPat*Restart.label: Recommencer la partie XPat*New Game.label: Nouvelle partie XPat*Quit.label: Quitter XPat*ok.label: Confirmer XPat*cancel.label: Annuler xpat2-1.07/lib/french/aidBakersDozen100644 146 144 1537 5720056144 16013 0ustar mbimathopt The Rules of Baker's Dozen ========================== You have 13 piles of 4 cards each, in which kings are if necessary moved to the last position. Your goal is to put all cards on the foundation, in order A-K. you are allowed to move all cards at top of piles (and of top of foundation) on a pile where the last card is one more than the moved one, or to the foundation (so a 5 of hearts could go under any six, or above the 4 of hearts in the foundation). Holes cannot be filled (this is why kings are put on bottom of piles, as they can be moved only on foundations). I like it because it's rather quick, has a decent probability of success and it's not automatic. Baker's Dozen may be customized by changing the number of slots (in the range 2..13). With fewer slots, the cards of lower rank are already moved to the stack, which makes the game easier. xpat2-1.07/lib/french/aidCalculation100644 146 144 2535 5556303703 16044 0ustar mbimathopt The Rules of Calculation ======================== Calculation uses a standard 52-card deck (no jokers). To begin the game the deck is shuffled, then any ace, two, three, and four are pulled from the deck and form the start of four foundations. These foundations are built up according to the following sequence, regardless of suit or color: A,2,3,4,5,6,7,8,9,10,J,Q,K 2,4,6,8,10,Q,A,3,5,7,9,J,K 3,6,9,Q,2,5,8,J,A,4,7,10,K 4,8,Q,3,7,J,2,6,10,A,5,9,K Cards are turned up from the deck one at a time, and can be played on the foundations or on any of four wastepiles located just below the foundations. The top of the wastepiles are always available for play to a foundation, but once a card is played to a wastepile, it cannot be moved again, except to a foundation. The game is won by building all four foundations up to king. The skill involved in playing Calculation, in addition to just keeping track of what card goes next on each foundation, is in avoiding covering up a card you'll need soon with a card that cannot be used for some time, if at all. Kings are especially troublesome, since they cannot be moved until at least one foundation has been fully built up. The general strategy is to build on the wastepiles in descending order, but the cards are seldom so kind as to allow this to any great degree. xpat2-1.07/lib/french/aidMidnightOil100644 146 144 3310 5720427764 16014 0ustar mbimathopt The Rules of Midnight Oil ========================= Midnight Oil uses a standard 52-card deck (no jokers). To begin the game the deck is shuffled, then dealt face-up, one card at a time, into seventeen piles of three cards each. The last card is placed by itself as an eighteenth pile. These piles are also known as "fans". The object of the game is to move all of the cards from the eighteen fans into four new piles, arranged by suit, in order from Ace (low) to King (high). These four destination piles are known as the "foundations". Only the top card of each fan is available for play. In addition to moving cards from fans to foundations, cards can also be moved from one fan to another, building down in suit. In this way, submerged cards can be freed up for play to the foundations or to other fans. Once a fan becomes empty, no moves can be made to that fan. When you have made all the moves you can, from the fans to the foundations and from fan to fan, the remaining cards in all the fans may be reshuffled and re-dealt in the same manner as at the beginning of the game (three cards to a fan). In all, the deck may be shuffled three times (once to begin the game, and twice more during the game). At some point during the game, you may draw one submerged card from a fan and play it on any valid foundation or fan. It is generally better to save this draw for as long as possible. You can point to one of the foundations and click the mouse button to initiate "manual-auto" mode. This function is, as the name inplies, a cross between manual mode and automatic mode. When you click on a foundation, the fans are scanned for possible moves, and any valid moves to that foundation will be made automatically. xpat2-1.07/lib/french/aidMonteCarlo100644 146 144 2237 5720427770 15654 0ustar mbimathopt The Rules of Monte Carlo ======================== Monte Carlo uses a standard 52-card deck (no jokers). To begin the game the deck is shuffled, then dealt face-up, one card at a time, into five rows of five cards each (the tableau), with the remainder of the deck held in reserve for later play. The object of the game is to remove pairs of cards from the tableau. These cards can be any combination of colors, but must be of the same rank (eg: a 3 of hearts and a 3 of spades), and must be located adjacent to each other in a row, column or diagonal. Note that the removal of a card does not make the two cards beside it "adjacent". After removing all possible pairs, the tableau must be consolidated, which means that the remaining cards in the tableau must be "backed up" (moved to the left, then up, keeping the original order) to fill in the blank spaces created by the removed pairs. Cards from the reserve are then dealt into the newly- created spaces and the process of removing pairs begins again. The tableau can be consolidated and re-dealt as many times as necessary. The game is won when the entire deck has been removed, or lost when no more moves can be made. xpat2-1.07/lib/french/aide.Canfield100644 146 144 4261 5720056144 15531 0ustar mbimathopt Les rшgles de Canfield ====================== Dans le jeu Canfield, les cartes des emplacements peuvent etre associщes entre elles dans l'ordre des valeurs dщcroissantes et en alternant leurs couleurs. Seule une pile entiшre peut etre dщplacщe en bloc pendant la construction des suites. Les cartes du dessus des piles sont disponibles et peuvent etre jouщes sur les fondations, mais jamais sur des emplacements vides. Les espaces peuvent etre remplis uniquement р partir de la pioche. La carte du dessus de la pioche peut aussi etre jouщe sur les fondations ou utilisщe pour la construction des suites des piles. Une fois la pioche щpuisщe, les emplacements vides peuvent etre remplis р partie du talon mais le joueur peut les ignorer jusqu'р ce qu'il dщcide de les utiliser. Les cartes sont distribuщes du jeu au talon trois par trois et ainsi de suite jusqu'р ce que la main soit vide ou que le joueur abandonne. Pour que les cartes soient distribuщes de la main au talon, le joueur peut utiliser la touche 'd'. Le jeu place alors automatiquement sur les fondations les cartes qui peuvent l'etre. Les rшgles rщgissant les paris sont plutot moins strictes que celles utilisщes dans la version officielle du jeu. A l'origine, le pari initial est de 13$. Vous pouvez alors abandonner ou examiner le jeu. L'examen coute 13 autres dollars et vous permet de faire autant de dщplacements que vous le dщsirez, sans toutefois bouger de cartes de la main au talon (La donne initiale met 3 cartes dans le talon. Si les trois sont utilisщes, alors trois autres deviennent disponibles). Enfin, si la partie semble intщressante, vous devez payer une somme de 26$ pour la poursuivre. A ce moment lр, chaque carte qui se trouve sur les fondations vous rapporte 5$. Et dшs cet instant, toute carte dщposщe sur les fondations vous rapporte 5$. Le premier parcours de la main est gratuit, mais chaque parcours supplщmentaire vous coutera 5$. Dans le jeu Xpat2, vous payez d'un coup les 52$ initiaux, en dщbut de partie. Ceci fait que le score est de 208$, si vous ne faites qu'un seul parcours de la main (c'est р dire que vous ne retournez pas le talon), ce qui devrait etre assez peu frщquent. xpat2-1.07/lib/french/aide.Cotillion100644 146 144 2637 5720056144 15765 0ustar mbimathopt Les rшgles de Royal Cotillion ============================= Royal Cotillion nщcщssite deux jeux normaux de 52 cartes (sans jokers). On distribue 12 cartes en trois lignes de quatre, formant le tapis gauche. Le tapis droit est formщ de 4 lignes de 4 cartes chacune. Les fondations se composent de deux colonnes entre les deux tapis. Les fondations doivent etre remplies de la faчon suivante, pour chaque suite: As,3,5,7,9,Valet,Roi,2,4,6,8,10,Dame 2,4,6,8,10,Dame,As,3,5,7,9,Valet,Roi Sur le tapis gauche, seule la carte du bas de chaque colonne est disponible, et les espaces ne peuvent jamais etre remplis. Sur le tapis droit, toutes les cartes sont accessibles, et les espaces sont remplis automatiquement р partir du dщpot ou, si celui-ci est vide, directement р partir de la pioche. Les cartes sont retournщes sur la pioche, une р la fois, et peuvent etre jouщes soit sur les fondations soit sur le dщpot. La carte supщrieure du dщpot est toujours disponible. La partie est gagnщe si les huit fondations sont achevщes, et perdue si vous etes bloquщ. Il est recommandщ, si vous avez le choix, de jouer les cartes du tapis gauche en prioritщ, puisque cela libшre de nouvelles cartes. Les cartes du tapis droit ne devraient pas etre dщplacщes uniquement parce qu'elles peuvent l'etre. Il est prщfщrable d'attendre qu'une carte intщressante р mettre de cotщ soit sur le dщpot. xpat2-1.07/lib/french/aide.Delight100644 146 144 2357 5720056144 15410 0ustar mbimathopt Les rшgles de Idiot's Delight ============================= Idiot's Delight nщcessite un jeu de 52 cartes classique (sans jokers), les As ayant la plus grande valeur, au-dessus des Rois. Quatre cartes sont distribuщes en une ligne. Vouz pouvez enlever du jeu toute carte qui est de valeur infщrieure р une carte accessible de meme bois. Lorsqu'il n'est plus possible d'enlever de nouvelles cartes, quatre autres cartes sont distribuщes sur les quatre emplacements, qu'ils soient vides ou non. Vous pouvez alors essayer d'enlever de nouvelles cartes. Lorsqu'un emplacement est vide, vous pouvez y mettre n'importe quelle carte qui se trouve au sommet d'une pile. Le jeu se poursuit de cette faчon, 4 cartes щtant distribuщes р chaque fois, puis un maximum de cartes щtant щliminщes. Vous avez gagnщ s'il ne reste plus que les quatre As р la fin de la partie (toutes les cartes ayant щtщ distribuщes). Soyez trшs prudent sur le choix des cartes que vous voulez mettre dans des espaces. On aurait tendance р vouloir y mettre les As en prioritщ, mais il est parfois prщfщrable de considщrer d'autres options, en fonction des cartes qui peuvent etre щliminщes ou libщrщes en mettant les autres cartes accessibles dans l'espace. xpat2-1.07/lib/french/aide.FreeCell100644 146 144 2001 5720056144 15473 0ustar mbimathopt Les rшgles de Free Cell ======================= Cette variante a щtщ effrontщment empruntщe au paquetage de divertissement de Microsoft Windows. Les rшgles introduisent un nouveau type de pile que nous appellerons registre. Un registre ne peut contenir qu'une carte р la fois, mais n'importe laquelle. Ceci compense le fait que toutes les cartes sont distribuщes au dщbut de la partie, ce qui rend assez difficile la crщation d'un espace libre. Les cartes distribuщes forment rarement des groupes valides. Vous devez les rщarranger, en utilisant щventuellement les registres comme lieu de stockage. Pour obtenir un emplacement libre, vous devez construire des suites de cartes dont les couleurs sont alternщes, et de valeur dщcroissante. Les rшgles sont assez simples р comprendre si vous connaissez dщjр Gypsy, puisque les dщplacements de cartes obщissent aux memes contraintes. Free Cell se joue avec un seul jeu de cartes. Il y a quatre registres, quatre piles, et huit emplacements. xpat2-1.07/lib/french/aide.Gypsy100644 146 144 4025 5720056144 15135 0ustar mbimathopt Les rшgles de Gypsy =================== Remarque: ces rшgles sont dщfinies par leurs diffщrences avec celles de Spider. Gypsy se joue avec deux jeux de 52 cartes. Vous disposez de huit emplacements et au dщbut de la partie, trois cartes sont placщes dans chacun d'entre eux. Deux des cartes sont face cachщe, et celle du dessus est face visible. Vous pouvez dщplacer une carte uniquement sur une carte de couleur diffщrente et de valeur immщdiatement supщrieure. Par exemple, vous ne pouvez placer le 4 de trшfle que sur un 5 de Carreau ou un 5 de Coeur. La meme rшgle est valable pour les groupes de cartes: un groupe de cartes peut etre dщplacщ en bloc si les valeurs des cartes sont dщcroissantes et que leurs couleurs sont alternщes. Les cartes sont mises au dщpot une par une, dans l'ordre des valeurs croissantes, р commencer par l'As. Une carte peut uniquement etre placщe sur un dщpot de son bois. C'est un bon choix que de mettre tous les As au dщpot aussi tot que possible. Il peut etre plus malin, malgrщ tout, de garder les cartes de plus grande valeur sur les emplacements, de faчon р pouvoir mettre d'autres cartes dessus. Les cartes peuvent etre ramenщes des dщpots vers les piles (emprunt) si le dщplacement respecte les rшgles dщfinies prщcщdemment. Ceci peut etre utile si vous voulez crщer des espaces oљ mettre des Rois (vous pouvez mettre n'importe quelle carte sur un espace, mais les espaces sont les seuls endroits oљ l'on peut mettre des Rois). Notation: Les scores р Gypsy vont de 0 р 1000. Chaque paire de cartes qui se suivent et sont de couleur diffщrente rapporte 2 points. Chaque carte au dщpot donne 5 points. Pour chaque dщpot qui contient une suite de l'As au Roi, on obtient 60 points supplщmentaires. Remarque: les rшgles de Gypsy ne sont pas une invention des auteurs de 'xpat', mais le nom 'Gypsy' en est une. Nous jouons р ce jeu depuis des annщes et ne nous souvenons tout simplement plus du nom original des rшgles. Si jamais vous le savez, merci de nous le faire savoir... xpat2-1.07/lib/french/aide.Klondike100644 146 144 2276 5720056144 15570 0ustar mbimathopt Les rшgles de Klondike ====================== Klondike est le jeu de patience traditionnel est se joue avec un seul jeu de cartes. Il se compose de quatre dщpots et sept emplacements. Au dщbut, le premier emplacement contient une carte, le secont deux, jusqu'au septiшme qui contient sept cartes. Sur chaque pile, seule la carte du dessus est visible. Klondike introduit un nouveau type de pile: il y a un second talon qui contient des cartes face visible. A chaque fois que vous demandez une distribution de nouvelles cartes, ces cartes venant du talon sont mises face visible sur le second talon, le talon 'visible'. Vous pouvez en utiliser la carte du dessus, et la mettre sur les emplacements ou aux dщpots, mais vous ne pourrez jamais ramener une carte sur talon ouvert. Les rшgles d'association des cartes sont similaires р celles du jeu Gypsy. La seule diffщrence est que vous ne pouvez pas mettre autre chose qu'un Roi sur un emplacement vide. Une fois toutes les cartes distribuщes, vous pouvez retourner le talon ouvert sur le premier talon (qui est vide) et recommencer р distribuer les cartes. Vous pouvez retourner le talon ouvert jusqu'р un maximum de trois fois. xpat2-1.07/lib/french/aide.Michaels100644 146 144 1265 5720056144 15552 0ustar mbimathopt Les rшgles de Michael's Fantasy =============================== Cette variante a щtщ inventщe pour tester la commande de rotation d'emplacement d'xpat2. Michael's Fantasy se joue avec un jeu de 52 cartes. Le jeu est identique р Free Cell, mais vous disposez de seulement 6 emplacements, et trois р quatre sont distribuщes faces cachщes au dщbut du jeu. Pour compenser cela, vous pouvez faire une rotation des emplacements, cinq fois maximum (seules les cartes faces visibles 'tournent'). Pour faire cela, appuyez sur la touche '<' ou '>' (pour une rotation vers l'arriшre ou vers l'avant) et cliquez ensuite sur la plus basse (la plus 'enfouie') des cartes р dщplacer. xpat2-1.07/lib/french/aide.Seahaven100644 146 144 1606 5720056144 15556 0ustar mbimathopt Les rшgles de Seahaven Towers ============================= Seahaven Towers est identique р Free Cell (d'une certaine faчon, on pourrait dire que je ne sais plus lequel des deux a щtщ inventщ le premier). On dispose de dix emplacements et de quatre registres, mais ce jeu est plus difficile car les cartes ne peuvent etre deplacщes que sur des cartes du meme bois (et toujours de valuer immщdiatement supщrieure), et que vous ne pouvez placer les Rois que sur des emplacements vides. Le jeu Seahaven Towers original impose une restriction supplщmentaire: lorsque vous dщplacez des groupes de n cartes, vous devez disposer d'au moins n-1 registres libres (vous etre supposщ ne dщplacer qu'une carte р la fois). Cette restriction peut etre levщe en utilisant l'option '-relaxed 1' puisqu'elle implique que seuls des blocs de cinq cartes au maximum peuvent etre manipulщs. xpat2-1.07/lib/french/aide.Spider100644 146 144 21417 5720056144 15274 0ustar mbimathopt Les rшgles de Spider ==================== Note: on dщsigne par bois le type d'une carte, soit: coeur, carreau, pique ou trшfle alors que la couleur d'une carte est la couleur effective (rouge ou noir) du symbole. Le but du jeu est de construire des sщquences de cartes du meme bois, du roi р l'as, et de les dщplacer du tapis aux dщpots. Lorsque les huit suites ont щtщ construites et enlevщes, vous avez gagnщ. Une facon plus complexe de jouer consiste р laisser les huit suites en place et р ne les mettre au dщpot qu'une fois qu'elles sont toutes terminщes, au lieu de les enlever au fur et р mesure qu'elles sont achevщes. Il est possible de dщplacer une carte sur une carte du meme bois ou d'un bois diffщrent si cette seconde a une valeur supщrieure d'un point р la premiшre. Toutefois, il n'est possible de dщplacer que des cartes qui se suivent et du meme bois en tant que groupe. Par exemple, il est possible de dщplacer un 5 de pique, soit sur un 6 de pique, soit sur un 6 de coeur. Mettre le 5 de pique sur le 6 de pique est une meilleure action puisque le groupe formщ du 5 et du 6 de pique peut ensuite etre dщplacщ d'un bloc, alors que ce serait impossible avec le 5 de pique et le 6 de coeur. Par contre, dщplacer le 4 de pique sur le 6 de pique n'est pas une action valide. Un roi ne peut etre placщ que sur un emplacement vide (ou au dщpot lorsque la suite roi-as est terminщe) puisqu'il n'y a pas de carte de plus grande valeur qu'un roi. Une stratщgie habituelle consiste р tenter de libщrer un emplacement щtant donnщ que c'est le moyen le plus pratique de dщplacer des cartes. Un espace est un emplacement dont toutes les cartes ont щtщ enlevщes. Remarquez qu'avant toute distribution de cartes, tous les emplacements doivent contenir au moins une carte. De plus, lorsque l'on dщplace les cartes, il est gщnщralement avantageux de jouer en prioritщ celles de plus grande valeur, et celles de plus basse valeur ensuite, aprшs avoir bien entendu jouщ les coups щvidents en premier lieu. Par exemple, dщplacez un 5 de pique sur un 6 de pique, puis une dame de coeur sur un roi de trшfle avant de poser un 7 de trшfle sur un 8 de coeur. Ainsi vous pourrez choisir de dщplacer les 5 et 6 de pique en bloc sur le 7 de trшfle. La stratщgie consiste р combiner les cartes de faчon р former des suites du meme bois qui peuvent alors etre manipulщes en bloc. Une fois que le groupe 5-6 de pique a щtщ crщщ, il peut etre disloquщ en utilisant le bouton du milieu sur la carte la plus basse. La Configuration Initiale: Mщlanger ensemble deux jeux de cartes (104 cartes en tout) et distribuer dix cartes faces cachщes en une ligne. Distribuer trois autres rangщes de cartes faces cachщes sur la premiшre ligne. Ensuite, placer quatre cartes faces cachщes au dessus de quatre des piles (traditionellement, les quatre les plus р gauche, mais cela n'a pas d'importance; pour des raisons esthщtiques, certains prщfшrent les premiшre, quatriшme, septiшme et dixiшme piles). Cela fait un total de 44 cartes faces cachщes. Enfin, distribuer une carte face visible sur chaque pile. Ces 54 cartes constituent le tableau initial. NOTE: dans la description ci-dessous, la carte du bas d'une pile correspond р la derniшre carte distribuщe ou dщplacщe sur cette pile, et non р la carte situщe sous (c'est р dire recouverte par) toutes les autres cartes de la pile. Ainsi, la carte du bas est celle qui est affichщe le plus en bas de l'щcran par le programme Spider. Construction: Toutes les constructions se font sur le tapis, il n'y a pas d'emplacements supplщmentaires. Sur la carte du bas d'une pile on peut placer n'importe quelle carte de valeur immщdiatement infщrieure, quelque soit son bois. Les cartes sont classщes dans l'ordre suivant: roi (la plus grande valeur), dame, valet, 10, 9..., 3, 2, as. Toute carte de bas de pile est accessible, ainsi que toute suite de cartes consщcutives et de meme bois situщe en bas d'une pile (valeur croissante du bas vers le haut). Par exemple, supponsons que le 6, le 5 et le 4 de coeur sont ensemble au bas d'une pile, le 4 щtant placщ tout en bas. Les trois cartes peuvent etre dщplacщes en bloc, mais il reste possible de dщplacer le 4 tout seul ou meme le groupe 4-5 de coeur, sans toucher au 6. Si les trois cartes (6, 5 et 4 de coeur) щtaient placщs sur un 7 de coeur, le nouveau groupe composщ de 4 cartes pourrait etre dщplacщ en bloc sur n'importe quel 8. Toutefois, si le 7 n'avait pas щtщ un coeur, le fait de placer le groupe 6-5-4 dessus en aurait bloquщ l'accшs jusqu'р ce que les coeurs soient enlevщs (et posщs sur un autre 7 ou sur un emplacement vide, voir ci-dessous). Lorsque toutes les cartes visibles ont щtщ enlevщes d'une pile, la carte cachщe la plus basse est retournщe et devient disponible. Espaces: Quand toutes les cartes ont щtщ enlevщes d'une pile, l'emplacement est vide. C'est ce que l'on appelle un espace ou un trou. Il est possible de placer dans un espace toute carte ou suite de cartes qui peut etre dщplacщe. Un roi ou une suite qui commence par un roi ne peuvent etre placщs que sur un espace, et ne peuvent plus en etre enlevщs (sauf pour aller sur un autre espace, ce qui ne sert pas р grand chose), р moins d'enlever une suite complшte commenчant par ce roi, voir ci-dessous. Le talon: Le talon reprщsente les 50 cartes qui ne sont pas distribuщes lors de la mise en place du jeu. Quand vous le voulez (gщnщralement lorsque vous etes coincщ), vous pouvez distribuer une nouvelle sщrie de dix cartes du talon, une carte sur chaque pile et face visible. Remarquez que ceci n'est pas autorisщ s'il y a des espaces. Vous devez d'abord y mettre au moins une carte. Remarquez que ces distributions supplщmentaires crщent des discontinuitщs dans les piles, c'est р dire qu'il arrive que des cartes recouvrent d'autres cartes sans respecter les rшgles qui vous sont imposщes. En effet, la distribution des nouvelles cartes se fait alщatoirement. Par exemple, un dix de trшfle peut venir recouvrir un 4 de coeur et vous enlever la disponibilitщ du 4 jusqu'р ce que vous ayez dщplacщ le 10. Si vous etes coincщ aprшs avoir distribuщ la cinquiшme des sщries de 10 cartes additionnelles, vous avez perdu. But du Jeu: Une fois que vous avez construit une suite complшte de 13 cartes, du roi р l'as, du meme bois et en bas d'une pile, vous pouvez enlever ces 13 cartes du tapis. Les cartes que vous enlevez de cette faчon ne peuvent plus etre rщintroduites dans la partie; il est donc parfois prщfщrable de laisser une suite en place quand c'est possible (c'est souvent le cas), car elle peut etre d'une certaine utilitщ pour manipuler les autres cartes de la meme suite (en effet, il y a 26 cartes de chaque bois). La partie est gagnщe si vous rщussissez р enlever les 8 suites complшtes du tapis. Si vous pensez que la partie se dщroule si bien que vous etes sur de gagner, vous pouvez corser les choses en essayant de terminer la partie avec autant de suites complшtes que possible encore placщes sur le tapis, c'est р dire en enlevant du tapis le moins possible de celles-ci. La faчon de gagner la plus complexe est de finir la partie en ayant sur le tapis les huit suites complшtes, du roi р l'as. Remarquez qu'une fois que vous vous etes fixщ ce genre d'objectif, vous risquez de vous inquiщter tellement des positions que vous ne rщussirez meme plus р terminer la partie! Score: Spider est un jeu difficile р maitriser, et certains joueurs aiment pouvoir щvaluer leurs progrшs en donnant un score meme aux parties non rщussies. On ne trouve aucune rшgle de notation dans la littщrature consacrщe, et le prщsent programme utilise la formule (assez arbitraire) suivante: - 10 points pour toute carte face cachщe qui est retournщe, - 15 points de plus pour toute pile dont toutes les cartes cachщes ont щtщ retournщes (meme si vous n'arrivez pas р crщer d'espace), - 2 points pour toute carte qui se trouve sur la carte de valeur juste supщrieure et de meme bois, - 50 points pour toute suite terminщe (dans ce cas, on ne compte pas en plus les 2 points pour chacune des 12 cartes qui est posщe sur son successeur). Ceci amшne р un maximum de 990 points. Si vous gagnez la partie avec 4 suites complшtes ou plus encore sur le tapis, ajoutez 2 points pour chaque suite en plus des trois premiшres. Ainsi, gagner la partie avec les 8 suites toujours sur le tapis correspond р un score de 1000 points. L'option '-relaxed 1' permet de distribuer de nouvelles cartes si tous les emplacements non vides sont rangщs dans le bon ordre, en considщrant la valeur ET le bois des cartes. L'option '-relaxed 2' permet de distribuer de nouvelles cartes si tous les emplacements non vides sont rangщs de faчon р respecter la valeur des cartes, sans considщration pour leur bois. L'intщret de cette option est de ne pas avoir р dщtruire des suites dщjр construites avant de distribuer de nouvelles cartes. xpat2-1.07/lib/french/aide.touches100644 146 144 3617 5720056144 15502 0ustar mbimathopt XPat - Fonctions des Touches ============================ Les fonctions associщes aux touches sont chargщes р partir d'un fichier de dщfinition. Toutefois, les fonctions effectivement utilisables peuvent etre diffщrentes. En effet, certaines des dщfinitions de touches sont rщsidentes mais peuvent avoir щtщ modifiщes dans le fichier. Par dщfaut, les touches sont dщfinies comme suit (dans l'ordre alphabщtique): F - Le jeu FreeCell G - Le jeu Gypsy H - Le jeu SeaHaven ('S' est utilisщ pour Spider) K - Le jeu Klondike S - Le jeu Spider Ces touches changent les rшgles (et engagent une nouvelle partie) sans confirmation. Elles ne dщclenchent pas non plus les effets sonores. Les nouvelles rшgles sont les rшgles par dщfaut, c'est р dire sans personnalisation du nombre de piles ou d'emplacements. D'autres fonctions associщes par dщfaut aux touches sont: ^L - redessine l'щcran ESC - annule l'action en cours Les touches configurables sont dщfinies par dщfaut comme suit: n - annuler une action qui demande confirmation o - confirmer une action Q - quitter le jeu avec une demande de confirmation N - commencer une nouvelle partie (demande confirmation) R - recommencer la meme partie. - effectuer un mouvement suggщrщ = - effectuer un mouvement suggщrщ ? - suggщrer le prochain mouvement + - suggщrer le prochain mouvement - - voir la suggestion prщcщdente M - redimensionner la fenetre au minimum possible P - redimensionner la fenetre au minimum possible pour la configuration du jeu actuelle u - annuler un mouvement r - rщiterer un mouvement d - distribuer de nouvelles cartes s - voir le score actuel i - informations (cartes restantes dans le talon...) l - layout the table (in french?) v - voir la version d'xpat * - dщplace les cartes sur la pile o - dщplace les cartes sщlectionnщes sur la pile O - dщplace toutes les cartes sur la pile xpat2-1.07/lib/french/aidmodCanfield100644 146 144 457 5720056144 15771 0ustar mbimathopt The Rules of modified Canfield ============================== These are the rules of Canfield, with the exception that card sequences may NOT wrap on the slots (i.e. King upon an Ace), and the hand and the stock are the same pile. This variant is considerably easier than the original Canfield game. xpat2-1.07/lib/french/keys100644 146 144 224 5720056144 14051 0ustar mbimathopt#c This file contains the french key bindings for xpat version 2.0 #include ../keys y None o Confirm A None R RestartGame < RotateDown > RotateUp xpat2-1.07/lib/french/messages100644 146 144 5333 6714321714 14735 0ustar mbimathopt# iso8859-1 Quitter le jeu? Une autre partie? Recommencer la partie? Trшfle Pique Coeur Carreau Joker As Deux Trois Quatre Cinq Six Sept Huit Neuf Dix Valet Dame Roi le dщpєt la pile le talon ouvert le registre le talon fermщ Je n'ai pas de proposition! Vous pouvez mettre %P (%R de %S) sur %P. Pas de proposition! (J'ai fini) J'ai posщ une marque. Vous avez... gagnщ! Je ne peux rien mettre au dщpєt! La sauvegarde a ECHOUE. Le chargement a ECHOUE. Je n'ai pas pu ouvrir le fichier. Je n'ai pas pu ouvrir le fichier. Je n'ai pas pu щcrire l'en-tete. Je n'ai pas pu lire l'en-tete. Je n'ai pas pu щcrire les dщplacements. Je n'ai pas pu lire les dщplacements. Sauvegarde effectuщe. Chargement effectuщ. Erreur dans la version du fichier. Vous ne pouvez plus retourner le talon. Je retourne le talon. Nouvelles cartes. Il n'y a plus de cartes disponibles! Vous n'avez pas selectionnщ de pile de dщpart! Carte(s) mise(s) au dщpєt. Ce dщplacement est impossible. Impossible d'annuler! J'annule le coup. J'annule le coup (tricheur!). Impossible de rejouer. Je rejoue un coup. Je rejoue un coup (et j'annule la tricherie). Ce dщplacement n'est pas valide! La pile de dщpart est vide ou non valide. La pile de dщpart est sщlectionnщe. Il n'y a pas tant d'emplacements. J'abandonne. Cette commande est inconnue: Ce mouvement est impossible. Xpat2 Version Jeu numщro %ld, %d triches. Score: %d points sur %d. (Pas de score pour cette variante) Aide sur les touches Les rшgles de %s aide.touches aide.Spider aide.Gypsy aide.Klondike aide.Seahaven aide.FreeCell aide.Delight aidMonteCarlo aidMidnightOil aidCalculation aidmodCanfield aide.Michaels aide.Canfield aide.Cotillion aidBakersDozen ../help.Oonsoo ../help.BlueMoon Merci de patienter un moment, je charge les cartes... Bienvenue avec xpat2 version %s! Rotation de cartes vers l'avant sщlщctionnщe. Rotation de cartes vers l'arriшre sщlectionnщe. La carte doit etre visible. Pour cette action, un emplacement est nщcessaire. Dans cette variante, les cartes ne peuvent pas etre mщlangщes. Vous ne pouvez plus mщlanger les cartes. Plus qu'un mщlange des cartes disponible. Il vous reste %d mщlanges disponibles. Dans cette variante, le talon ne peut pas etre retournщ. Vous ne pouvez plus retourner le talon. Plus qu'une seule donne du talon disponible. Il vous reste %d donnes du talon possibles. Cette fonction n'est pas disponible dans cette variante. Plus de rotation de pile disponible. Il ne reste qu'une rotation de pile. Il vous reste %d rotations de piles. Pas de ``cartes'' pour cette variante. Plus aucune carte sur le talon. Plus qu'une carte sur le talon. Encore %d cartes sur le talon. Position de dщpart. Un seul mouvement effectuщ. %d mouvements effectuщs. Pas le moindre point sur Un point sur %d points sur xpat2-1.07/lib/hlpMidnightOil100644 146 144 3310 5720427764 14575 0ustar mbimathopt The Rules of Midnight Oil ========================= Midnight Oil uses a standard 52-card deck (no jokers). To begin the game the deck is shuffled, then dealt face-up, one card at a time, into seventeen piles of three cards each. The last card is placed by itself as an eighteenth pile. These piles are also known as "fans". The object of the game is to move all of the cards from the eighteen fans into four new piles, arranged by suit, in order from Ace (low) to King (high). These four destination piles are known as the "foundations". Only the top card of each fan is available for play. In addition to moving cards from fans to foundations, cards can also be moved from one fan to another, building down in suit. In this way, submerged cards can be freed up for play to the foundations or to other fans. Once a fan becomes empty, no moves can be made to that fan. When you have made all the moves you can, from the fans to the foundations and from fan to fan, the remaining cards in all the fans may be reshuffled and re-dealt in the same manner as at the beginning of the game (three cards to a fan). In all, the deck may be shuffled three times (once to begin the game, and twice more during the game). At some point during the game, you may draw one submerged card from a fan and play it on any valid foundation or fan. It is generally better to save this draw for as long as possible. You can point to one of the foundations and click the mouse button to initiate "manual-auto" mode. This function is, as the name inplies, a cross between manual mode and automatic mode. When you click on a foundation, the fans are scanned for possible moves, and any valid moves to that foundation will be made automatically. xpat2-1.07/lib/help.Delight100644 146 144 1625 5717755727 14211 0ustar mbimathopt The Rules of Idiot's Delight ============================ Idiot's Delight uses a standard 52-card deck (no jokers) with aces ranked high, above kings. The game starts by dealing four cards in a row. You may discard any card that is lower than another card of the same suit. When no more cards can be removed, deal four more cards onto the remainder of the previous deal and remove all possible cards. If a pile is completely depleted, you can move a card from the top of another pile into the space. The game continues in this way, dealing four cards at a time, then removing all possible cards. The game is won if only the four aces are left at the end of the game. Be very careful of which card you move into spaces. The natural inclination is to move aces into spaces as soon as possible, but often it is advisable to consider other possibilities, depending on what cards can be freed up with each move. xpat2-1.07/lib/help.Gypsy100644 146 144 3315 5720427756 13732 0ustar mbimathopt The Rules of Gypsy ================== (These rules are described by giving the differences to the 'Spider' rules.) Gypsy is played with two decks of 52 cards. You have eight slots, and at the start of the game, three cards are dealt to each slot. Two cards lie facedown, and the bottom card is faceup. One may move the next lower card onto a card only if their colours differ. For example, one may move the 4 of Clubs onto the 5 of Hearts or the 5 of Diamonds. The same rule applies for moving contiguous groups of cards: a group of cards can be moved as a block if the ranks of the cards are decreasing and their colours alternate. Cards are moved to the stacks one at a time, in increasing rank, starting with the Ace. A card can only be moved to a stack of its suit. It is a good choice to move all Aces to the stacks immediately. It can be wiser, however, to keep cards of higher ranks on the slots, so you can put other cards on top of them. Cards can be moved back from the stacks to the slots (borrowing) if they follow the above rule to append. This can be useful if want to create empty slots in order to move kings to these. (You may move ANY card to an empty slot, but empty slots are the only places where kings may be moved to.) Scoring: Gypsy scores from 0 to 1000. There are two points of score for each alternating card pair on the slots and there are five points for each card on the stacks. Every stack which is filled from Ace to King adds another 60 points to the score. Remark: The rules for Gypsy are no invention from the authors of 'xpat', but the name Gypsy is. We are playing Gypsy for years now and just don't know what the rules were originally called. Should you happen to know, please tell us. xpat2-1.07/lib/hlpBakersDozen100644 146 144 1615 5717762425 14605 0ustar mbimathopt The Rules of Baker's Dozen ========================== You have 13 piles of 4 cards each, in which Kings are, if necessary, moved to the last position. The goal is to put all cards on the foundation, in order Ace to King. You are allowed to move all cards from the top of the piles (and from the top of the foundations) onto a pile where the last card is one more than the moved one, or onto the foundations (so a 5 of hearts could go under any six, or above the 4 of hearts in the foundation). Holes cannot be filled (this is why Kings are put on bottom of the piles, as they can be moved only onto the foundations). I like it, because it's rather quick, has a decent probability of success, and it's not automatic. Baker's Dozen may be customized by changing the number of slots (in the range 2..13). With fewer slots, the cards of lower rank are already moved to the stack, which makes the game easier. xpat2-1.07/lib/help.Canfield100644 146 144 3347 5717761474 14335 0ustar mbimathopt The Rules of Canfield ===================== In Canfield, tableau cards may be built on each other downward in alternate colors. An entire pile must be moved as a unit in building. Top cards of the piles are available to be able to be played on foundations, but never into empty spaces. Spaces must be filled from the stock. The top card of the stock also is available to be played on foundations or built on tableau piles. After the stock is exhausted, tableau spaces may be filled from the talon and the player may keep them open until he wishes to use them. Cards are dealt from the hand to the talon by threes and this repeats until there are no more cards in the hand or the player quits. To have cards dealt onto the talon the player types 'd' for his move. Foundation base cards are also automatically moved to the foundation when they become available. The rules for betting are somewhat less strict than those used in the official version of the game. The initial deal costs $13. You may quit at this point or inspect the game. Inspection costs $13 and allows you to make as many moves as possible without moving any cards from your hand to the talon. (The initial deal places three cards on the talon; if all these cards are used, three more are made available.) Finally, if the game seems interesting, you must pay the final installment of $26. At this point you are credited at the rate of $5 for each card on the foundation; as the game progresses you are credited with $5 for each card that is moved to the foundation. Each run through the hand after the first costs $5. In xpat2, you have to pay the full amount of $52 at the beginning. This makes a maximum score of $208, if you use only one turn (i.e. no flips), which should be quite rare. xpat2-1.07/lib/hlpCalculation100644 146 144 2535 5556303703 14625 0ustar mbimathopt The Rules of Calculation ======================== Calculation uses a standard 52-card deck (no jokers). To begin the game the deck is shuffled, then any ace, two, three, and four are pulled from the deck and form the start of four foundations. These foundations are built up according to the following sequence, regardless of suit or color: A,2,3,4,5,6,7,8,9,10,J,Q,K 2,4,6,8,10,Q,A,3,5,7,9,J,K 3,6,9,Q,2,5,8,J,A,4,7,10,K 4,8,Q,3,7,J,2,6,10,A,5,9,K Cards are turned up from the deck one at a time, and can be played on the foundations or on any of four wastepiles located just below the foundations. The top of the wastepiles are always available for play to a foundation, but once a card is played to a wastepile, it cannot be moved again, except to a foundation. The game is won by building all four foundations up to king. The skill involved in playing Calculation, in addition to just keeping track of what card goes next on each foundation, is in avoiding covering up a card you'll need soon with a card that cannot be used for some time, if at all. Kings are especially troublesome, since they cannot be moved until at least one foundation has been fully built up. The general strategy is to build on the wastepiles in descending order, but the cards are seldom so kind as to allow this to any great degree. xpat2-1.07/lib/help.Spider100644 146 144 15621 5642314263 14057 0ustar mbimathopt The Rules of Spider =================== The object of the game is to build a sequence of cards in the same suit from King to Ace and move it from the slots to the stacks above. When all eight sequences have been built and removed, you have won the game. A more challenging version of this is to leave all eight sequences on the table until done instead of removing those that are complete to the stacks above. One may move the next lower card onto a card of the same or different suit; however, one may only move contiguous cards of the same suit as a group. For example, one may move the 5 of spades into either a 6 of spades or a 6 of hearts. Moving the 5 of spades onto the 6 spades is a better move since now the 5-6 of spades group may be moved as a unit where the 5 of spades, 6 of hearts group may not. Also, moving the 4 of spades onto the 6 of spades is not a legal move. A King may only be moved into an empty slot (or removed to the stacks above when the sequence King-Ace is complete) since there are no higher cards than a King. For general strategy, one wants to try to create a space since this is the most flexible way to move cards around. A space is where all cards in one column of the table have been removed. Note: before dealing the next round, all spaces have to have at least one card in them. Also, when moving the cards, it is generally to your advantage to move the highest cards first and the lowest cards last doing the obvious moves first. For example, move a 5 of spades onto a 6 of spades, then Queen of hearts onto a King clubs before you move the 7 of clubs onto the 8 of hearts. Then you may choose to move 5-6 of spades group onto the 7 of clubs. The strategy is to combine the cards into same suit groups that may be moved as a unit. Once the group 5-6 of spades has been created, it may be broken up by using the middle mouse button on the lower card. The Initial Tableau: Shuffle together two decks of cards (104 cards in all) and deal ten cards face down in a row. Deal three more rows face down on the first. Next deal one card face down on each of four piles (traditionally the leftmost four, but it doesn't matter; for aesthetic reasons some people prefer the first, fourth, seventh, and tenth piles), for a total of 44 face-down cards. Finally, deal one card face up on each pile. These 54 cards constitute the initial tableau. NOTE: In the description below, the card at the bottom of a pile is taken to be the last one dealt or played onto that pile, as opposed to the card that is underneath all the others in the pile. Thus the bottom card is the one displayed bottommost on the screen by the Spider program. Building: All building is done in the tableau, there being no separate foundations. On the bottom card of a pile may be placed any card of next-lower rank, regardless of suit. (Cards rank King (highest), Queen, Jack, 10, 9, \ldots, 3, 2, Ace.) The bottom card of a pile is always available to be moved, as is any sequence of cards at the bottom of a pile that are consecutive and ascending in rank and of the same suit. For example, suppose the 6, 5, and 4 of hearts are together at the bottom of a pile, with the 4 bottommost. They may be moved as a unit, or the 4 can be moved by itself, or the 5 and 4 can be moved without moving the 6. If the 6, 5, and 4 were moved onto a 7 of hearts at the bottom of some other pile, the four cards could then be moved as a unit onto any 8; if the 7 were not a heart, however, then once the hearts were placed upon it it would not be available to be moved until the hearts had been moved from it (to another 7 or into a space; see below). When all face-up cards have been removed from a pile, the bottom face-down card is turned up and becomes available for play. Spaces: When all cards have been moved away from some pile, the resulting empty pile is called a space or hole. Any card or sequence of cards available for moving may be moved into a space. A King, or sequence headed by a King, can be moved only into a space, and once moved there can never be moved out (except into another space, which doesn't accomplish anything) unless it is being removed entirely as described below. The Deck: The 50 cards not dealt initially form the deck. Whenever you wish (typically, whenever you get stuck), you may deal a new row of ten cards from the hand face-up upon the piles. NOTE: You are not allowed to do this if you have any spaces. You must first fill them in. Notice that these additional deals tend to introduce discontinuities in the piles; that is, you can get cards covering others that are not next-higher in rank. If you get stuck after having dealt the last of the five additional deals, you have lost. Object of Play: When you have assembled a complete suit of thirteen cards, in sequence from King down to Ace, at the bottom of a pile, you may remove the thirteen cards from the tableau entirely. Cards so removed are never brought back into play; thus it is not always desirable to remove a suit when you have the opportunity (though it usually is), since it may pay to keep it around to aid in manipulating the other cards of that suit (recall that there are 26 cards in each suit). The game is won if you manage to remove all eight suits. If you find that a game is going so well that you're sure you're going to win, you can spice things up by trying to finish with as many completed suits as possible still in the tableau. Hardest of all is to finish the game with each of the eight suits brought together in sequence from King down to Ace, with all of the cards still in the tableau. Note that, once you start striving toward such a goal, you may make such a mess of the position that you won't be able to win at all! Scoring: Spider is a difficult game to master, and some players like to be able to evaluate their progress by scoring unsuccessful games. No rules for scoring are in the literature, but the program implements the following rather arbitrary formula: 10 points for each initially face down card that gets turned over; 15 additional points for each column where all the face down cards have been turned over (even if you don't manage to get a space); 2 points for each card that is sitting atop the next higher card of the same suit; 50 points for each completed suit (in which case you do not also score for the 12 cards sitting atop next higher cards). This yields a maximum score of 990. If you win the game with 4 or more completed suits still in the tableau, add 2 points for each suit after the first three. Thus winning with all eight suits still in the tableau yields a score of 1000. With the option '-relaxed 1', you may deal new cards if all nonempty slots are in correct order, i.e. with respect to rank AND suit. With the option '-relaxed 2', you may deal new cards if all nonempty slots are in relaxed order, i.e. only with respect to rank. The purpose of this option is, that you need not destroy existing sequences before getting new cards. xpat2-1.07/lib/help.keys100644 146 144 2576 5551644524 13576 0ustar mbimathopt XPat - Current Key bindings =========================== XPat key bindings are loaded from a key definition file. Therefore, actual key bindings may vary. Some key bindings are resident and may be overloaded. Currently, we have (in alphabetical order) the following rule-switching keys: F - FreeCell rules G - Gypsy rules H - SeaHaven rules ('S' is used by Spider) K - Klondike rules S - Spider rules These keys switch the rules (and restart a new game) without confirmation. They also bypass the sound procedure. The new rules are the default rules, i.e. without customised number of stacks or slots. Other fixed key bindings are ^L - redraw screen ESC - abort move The configurable key bindings have the following defaults: n - cancel action which requires confirmation y - confirm action Q - request quit game A - request another game (same rules) B - begin this game again - do a suggested move = - do a suggested move ? - suggest next move + - suggest next move - - show previous suggestion M - resize to minimum possible window P - resize to minimum possible window for this layout u - undo a move r - redo a move d - deal new cards s - show current score i - information (cards left on stock) l - layout the table v - show xpat version * - move cards to stack o - move selected cards to stack O - move all cards to stack xpat2-1.07/lib/keys100644 146 144 706 6713245201 12606 0ustar mbimathopt#c This file does contain the key definitions for xpat version 2.0 y Confirm n Cancel Q rq_LeavePat D DealCards A RestartGame N AnotherGame m AllMoves d DealCards s ShowScore v ShowVersion + NextHint - PreviousHint DoHint i Info M MinWindow P PreferredWindow f RotateUp b RotateDown #rules Klondike K AnotherGame #rules Gypsy G AnotherGame #rules Idiot's Delight I AnotherGame #rules Free Cell F AnotherGame #rules Seahaven Towers H AnotherGame xpat2-1.07/lib/french.cards100644 146 144 121070 5427754534 14270 0ustar mbimathopt9<]`$ќ№<ќ$ќ$ќ$ќќ@ќр8ќPTќјўќPTќ@ќр8ќќќќќќќќќќќќќќќќќќќќќќќpќјќјќјќwќ€Џќ€џќ€Џќ'ќpќјќќќќќќќќќќќќќќќќќќќќќќќќќќр8ќ@ќPTќјўќPTќр8ќ@ќќ$ќ$ќ$ќ№<ќ$ќ``$ќ№<ќ$ќ$ќ$ќќ@ќр8ќ№|ќ№|ќ@ќр8ќќќќќќќќќќќќќќќќќќќќќќќќ ќpќјќўќџќ€џќ€џќ€џќЏќ ќpќјќќќќќќќќќќќќќќќќќќќќќќќќќр8ќ@ќ№|ќ№|ќр8ќ@ќќ$ќ$ќ$ќ№<ќ$ќ``$ќ№<ќ$ќ$ќ$ќќАlќPTќ (ќ@ќќќќќќќќќќќќќќќќќќќќќќќќќќќќќ€Š ќ@Uќ€Њ ќ@Uќ€Њ ќUќЊќTќЈќPќ ќќќќќќќќќќќќќќќќќќќќќќќќќ@ќ (ќPTќАlќќ$ќ$ќ$ќ№<ќ$ќ``$ќ№<ќ$ќ$ќ$ќќ@ќ (ќPTќ (ќ@ќќќќќќќќќќќќќќќќќќќќќќќќ ќPќЈќЈќTќЋќ€T ќ@Ћќ€T ќЋќTќЈќЈќPќ ќќќќќќќќќќќќќќќќќќќќќќќќ@ќ (ќPTќ (ќ@ќќ$ќ$ќ$ќ№<ќ$ќ``$ќ€ ќ`ќќ№<ќќ@pќрј8ќPјTќјјўќPwTќ@€Џќр€џ8ќ€Џќ'ќpќјќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќјќpќ'ќ€Џќ€џќр€Џ8ќ@wќPјTќјјўќPјTќрp8ќ@ќќ№<ќ€ ќ`ќќ$ќ``$ќ€ ќ`ќќ№<ќќ@ ќрp8ќ№ј|ќ№ў|ќ@џќр€џ8ќ€џќ€џќЏќ ќpќјќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќјќpќ ќЏќ€џќ€џќ€џќрџ8ќ@ўќ№ј|ќ№p|ќр 8ќ@ќќ№<ќ€ ќ`ќќ$ќ``$ќ€ ќ`ќќ№<ќќАlќPTќ (ќ@€Š ќ@Uќ€Њ ќ@Uќ€Њ ќUќЊќTќЈќPќ ќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќ ќPќЈќTќЊќUќ€Њ ќ@Uќ€Њ ќ@Uќ€Š ќ@ќ (ќPTќАlќќ№<ќ€ ќ`ќќ$ќ``$ќ€ ќ`ќќ№<ќ ќ@Pќ Ј(ќPЈTќ T(ќ@Ћќ€T ќ@Ћќ€T ќЋќTќЈќЈќPќ ќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќ ќPќЈќЈќTќЋќ€T ќ@Ћќ€T ќЋќ@Tќ Ј(ќPЈTќ P(ќ@ ќќ№<ќ€ ќ`ќќ$ќ`p€ ќ`ќ€ ќ€ ќpќќ@pќрј8ќPјTќјјўќPwTќ@€Џќр€џ8ќ€Џќ'ќpќјќќќќќќќќќќќќќќќќќќќќpќјќјќјќwќ€Џќ€џќ€Џќ'ќpќјќќќќќќќќќќќќќќќќќќќќќќјќpќ'ќ€Џќ€џќр€Џ8ќ@wќPјTќјјўќPјTќрp8ќ@ќќр8ќќќ`ќќр8p€ ќ`ќ€ ќ€ ќpќќ@ ќрp8ќ№ј|ќ№ў|ќ@џќр€џ8ќ€џќ€џќЏќ ќpќјќќќќќќќќќќќќќќќќќќ ќpќјќўќџќ€џќ€џќ€џќЏќ ќpќјќќќќќќќќќќќќќќќќќќјќpќ ќЏќ€џќ€џќ€џќрџ8ќ@ўќ№ј|ќ№p|ќр 8ќ@ќќр8ќќќ`ќќр8p€ ќ`ќ€ ќ€ ќpќќАlќPTќ (ќ@€Š ќ@Uќ€Њ ќ@Uќ€Њ ќUќЊќTќЈќPќ ќќќќќќќќќќќќќќќќќќќ€Š ќ@Uќ€Њ ќ@Uќ€Њ ќUќЊќTќЈќPќ ќќќќќќќќќќќќќќ ќPќЈќTќЊќUќ€Њ ќ@Uќ€Њ ќ@Uќ€Š ќ@ќ (ќPTќАlќќр8ќќќ`ќќр8p€ ќ`ќ€ ќ€ ќpќ ќ@Pќ Ј(ќPЈTќ T(ќ@Ћќ€T ќ@Ћќ€T ќЋќTќЈќЈќPќ ќќќќќќќќќќќќќќќ ќPќЈќЈќTќЋќ€T ќ@Ћќ€T ќЋќTќЈќЈќPќ ќќќќќќќќќќќќќќ ќPќЈќЈќTќЋќ€T ќ@Ћќ€T ќЋќ@Tќ Ј(ќPЈTќ P(ќ@ ќќр8ќќќ`ќќр8$ќ$ќ№<ќ€ ќ€ ќќ@€ќрР€8ќPС€TќјУ€ўќPЙ;pwTќ@|}јњќрќјџ8ќ|}јњќ89prќ€ќР€ќрРќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќрРќР€ќ€ќ89prќ|}јњќќјџќр|}јњ8ќ@И;pwќPС€TќјУ€ўќPС€Tќр€8ќ@ќќќќ№<ќ$ќ$ќ€ $ќ$ќ№<ќ€ ќ€ ќќ@ќр€8ќ№С€|ќ№ёр?|ќ@ј?№ќрќјџ8ќќјџќќјџќx=№zќќ€ќР€ќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќР€ќ€ќќx=№zќќјџќќјџќќјџќрј?№8ќ@№р?ќ№С€|ќ№|ќр8ќ@ќќќќ№<ќ$ќ$ќ€ $ќ$ќ№<ќ€ ќ€ ќќАlќPTќ ((PP(ќ@TTЈЈќЊЊTUќTUЈЊќЊЊTUќTUЈЊќЈ*PUќP *ќ  @ќ@€ ќ€ќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќ€ќ@€ ќ  @ќP *ќЈ*PUќTUЈЊќЊЊTUќTUЈЊќЊЊTUќTTЈЈќ@((PPќ (ќPTќАlќќќќ№<ќ$ќ$ќ€ $ќ$ќ№<ќ€ ќ€ ќќ@€ќ @€ (ќPA€ Tќ   @(ќ@X5АjќЄJH•ќZЕДjќЄJH•ќX5Аjќ  @ќ@€ ќ@€ ќ€ќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќ€ќ@€ ќ@€ ќ  @ќX5АjќЄJH•ќZЕДjќЄJH•ќX5Аjќ@  @ќ @€ (ќPA€ Tќ €(ќ@ќќќќ№<ќ$ќ$ќ€ №<ќpќ€ ќ€ ќpќќ@€ќрР€8ќPС€TќјУ€ўќPЙ;pwTќ@|}јњќрќјџ8ќ|}јњќ89prќ€ќР€ќрРќќќќќќќќќќќќќќќќќќpќјќјќјќwќ€Џќ€џќ€Џќ'ќpќјќќќќќќќќќќќќќќќќќќќќрРќР€ќ€ќ89prќ|}јњќќјџќр|}јњ8ќ@И;pwќPС€TќјУ€ўќPС€Tќр€8ќ@ќќр8ќќќр8ќ€ ќ№<№<ќpќ€ ќ€ ќpќќ@ќр€8ќ№С€|ќ№ёр?|ќ@ј?№ќрќјџ8ќќјџќќјџќx=№zќќ€ќР€ќќќќќќќќќќќќќќќќќќ ќpќјќўќџќ€џќ€џќ€џќЏќ ќpќјќќќќќќќќќќќќќќќќќќР€ќ€ќќx=№zќќјџќќјџќќјџќрј?№8ќ@№р?ќ№С€|ќ№|ќр8ќ@ќќр8ќќќр8ќ€ ќ№<№<ќpќ€ ќ€ ќpќќАlќPTќ ((PP(ќ@TTЈЈќЊЊTUќTUЈЊќЊЊTUќTUЈЊќЈ*PUќP *ќ  @ќ@€ ќ€ќќќќќќќќќќќќќќќќќќќќ€Š ќ@Uќ€Њ ќ@Uќ€Њ ќUќЊќTќЈќPќ ќќќќќќќќќќќќќќќ€ќ@€ ќ  @ќP *ќЈ*PUќTUЈЊќЊЊTUќTUЈЊќЊЊTUќTTЈЈќ@((PPќ (ќPTќАlќќр8ќќќр8ќ€ ќ№<№<ќpќ€ ќ€ ќpќќ@€ќ @€ (ќPA€ Tќ   @(ќ@X5АjќЄJH•ќZЕДjќЄJH•ќX5Аjќ  @ќ@€ ќ@€ ќ€ќќќќќќќќќќќќќќќќ ќPќЈќЈќTќЋќ€T ќ@Ћќ€T ќЋќTќЈќЈќPќ ќќќќќќќќќќќќќќќ€ќ@€ ќ@€ ќ  @ќX5АjќЄJH•ќZЕДjќЄJH•ќX5Аjќ@  @ќ @€ (ќPA€ Tќ €(ќ@ќќр8ќќќр8ќ€ ќ№<р8ќpќ$ќ$ќ`ќќ@€ќрР€8ќPС€TќјУ€ўќPЙ;pwTќ@|}јњќрќјџ8ќ|}јњќ89prќ€ќР€ќрРќќќќќќќќќќќќќќќќќќ€ќР€ќР€ќР€ќИ;pwќ|}јњќќјџќ|}јњќ89prќ€ќР€ќрРќќќќќќќќќќќќќќќќќќрРќР€ќ€ќ89prќ|}јњќќјџќр|}јњ8ќ@И;pwќPС€TќјУ€ўќPС€Tќр€8ќ@ќќ`ќ$ќ$ќр8ќ€ ќpр8ќpќ$ќ$ќ`ќќ@ќр€8ќ№С€|ќ№ёр?|ќ@ј?№ќрќјџ8ќќјџќќјџќx=№zќќ€ќР€ќќќќќќќќќќќќќќќќќќќ€ќР€ќ№р?ќј?№ќќјџќќјџќќјџќx=№zќќ€ќР€ќќќќќќќќќќќќќќќќќќР€ќ€ќќx=№zќќјџќќјџќќјџќрј?№8ќ@№р?ќ№С€|ќ№|ќр8ќ@ќќ`ќ$ќ$ќр8ќ€ ќpр8ќpќ$ќ$ќ`ќќАlќPTќ ((PP(ќ@TTЈЈќЊЊTUќTUЈЊќЊЊTUќTUЈЊќЈ*PUќP *ќ  @ќ@€ ќ€ќќќќќќќќќќќќќќќќќќќ((PPќTTЈЈќЊЊTUќTUЈЊќЊЊTUќTUЈЊќЈ*PUќP *ќ  @ќ@€ ќ€ќќќќќќќќќќќќќќќќ€ќ@€ ќ  @ќP *ќЈ*PUќTUЈЊќЊЊTUќTUЈЊќЊЊTUќTTЈЈќ@((PPќ (ќPTќАlќќ`ќ$ќ$ќр8ќ€ ќpр8ќpќ$ќ$ќ`ќќ@€ќ @€ (ќPA€ Tќ   @(ќ@X5АjќЄJH•ќZЕДjќЄJH•ќX5Аjќ  @ќ@€ ќ@€ ќ€ќќќќќќќќќќќќќќќќќ€ќ@€ ќ@€ ќ  @ќX5АjќЄJH•ќZЕДjќЄJH•ќX5Аjќ  @ќ@€ ќ@€ ќ€ќќќќќќќќќќќќќќќќ€ќ@€ ќ@€ ќ  @ќX5АjќЄJH•ќZЕДjќЄJH•ќX5Аjќ@  @ќ @€ (ќPA€ Tќ €(ќ@ќќ`ќ$ќ$ќр8ќ€ ќp№<€ ќ@ќ ќ ќ ќќ@€ќрР€8ќPС€TќјУ€ўќPЙ;pwTќ@|}јњќрќјџ8ќ|}јњќ89prќ€ќР€ќрРќќќpќјќјќјќwќ€Џќ€џќ€Џќ'ќpќјќќќќќќ€ќР€ќР€ќР€ќИ;pwќ|}јњќќјџќ|}јњќ89prќ€ќР€ќрРќќќќќќќќќќќќќќќќќќрРќР€ќ€ќ89prќ|}јњќќјџќр|}јњ8ќ@И;pwќPС€TќјУ€ўќPС€Tќр€8ќ@ќќ@ќ@ќ@ќ ќќ№<№<€ ќ@ќ ќ ќ ќќ@ќр€8ќ№С€|ќ№ёр?|ќ@ј?№ќрќјџ8ќќјџќќјџќx=№zќќ€ќР€ќќќ ќpќјќўќџќ€џќ€џќ€џќЏќ ќpќјќќќќќ€ќР€ќ№р?ќј?№ќќјџќќјџќќјџќx=№zќќ€ќР€ќќќќќќќќќќќќќќќќќќР€ќ€ќќx=№zќќјџќќјџќќјџќрј?№8ќ@№р?ќ№С€|ќ№|ќр8ќ@ќќ@ќ@ќ@ќ ќќ№<№<€ ќ@ќ ќ ќ ќќАlќPTќ ((PP(ќ@TTЈЈќЊЊTUќTUЈЊќЊЊTUќTUЈЊќЈ*PUќP *ќ  @ќ@€ ќ€ќќќќќ€Š ќ@Uќ€Њ ќ@Uќ€Њ ќUќЊќTќЈќPќ ќќќќ((PPќTTЈЈќЊЊTUќTUЈЊќЊЊTUќTUЈЊќЈ*PUќP *ќ  @ќ@€ ќ€ќќќќќќќќќќќќќќќќ€ќ@€ ќ  @ќP *ќЈ*PUќTUЈЊќЊЊTUќTUЈЊќЊЊTUќTTЈЈќ@((PPќ (ќPTќАlќќ@ќ@ќ@ќ ќќ№<№<€ ќ@ќ ќ ќ ќќ@€ќ @€ (ќPA€ Tќ   @(ќ@X5АjќЄJH•ќZЕДjќЄJH•ќX5Аjќ  @ќ@€ ќ@€ ќ€ќ ќPќЈќЈќTќЋќ€T ќ@Ћќ€T ќЋќTќЈќЈќPќ ќќ€ќ@€ ќ@€ ќ  @ќX5АjќЄJH•ќZЕДjќЄJH•ќX5Аjќ  @ќ@€ ќ@€ ќ€ќќќќќќќќќќќќќќќќ€ќ@€ ќ@€ ќ  @ќX5АjќЄJH•ќZЕДjќЄJH•ќX5Аjќ@  @ќ @€ (ќPA€ Tќ €(ќ@ќќ@ќ@ќ@ќ ќќ№<`$ќ`ќ$ќ$ќ`ќќ@€ќрР€8ќPС€TќјУ€ўќPЙ;pwTќ@|}јњќрќјџ8ќ|}јњќ89prќ€ќР€ќрРќќќpќјќјќјќwќ€Џќ€џќ€Џќ'ќpќјќќќќќќ€ќР€ќР€ќР€ќИ;pwќ|}јњќќјџќ|}јњќ89prќ€ќР€ќрРќќќќќќјќpќ'ќ€Џќ€џќ€ЏќwќјќјќјќpќќќрРќР€ќ€ќ89prќ|}јњќќјџќр|}јњ8ќ@И;pwќPС€TќјУ€ўќPС€Tќр€8ќ@ќќ`ќ$ќ$ќ`ќ$ќ``$ќ`ќ$ќ$ќ`ќќ@ќр€8ќ№С€|ќ№ёр?|ќ@ј?№ќрќјџ8ќќјџќќјџќx=№zќќ€ќР€ќќќ ќpќјќўќџќ€џќ€џќ€џќЏќ ќpќјќќќќќ€ќР€ќ№р?ќј?№ќќјџќќјџќќјџќx=№zќќ€ќР€ќќќќјќpќ ќЏќ€џќ€џќ€џќџќўќјќpќ ќќќР€ќ€ќќx=№zќќјџќќјџќќјџќрј?№8ќ@№р?ќ№С€|ќ№|ќр8ќ@ќќ`ќ$ќ$ќ`ќ$ќ``$ќ`ќ$ќ$ќ`ќќАlќPTќ ((PP(ќ@TTЈЈќЊЊTUќTUЈЊќЊЊTUќTUЈЊќЈ*PUќP *ќ  @ќ@€ ќ€ќќќќќ€Š ќ@Uќ€Њ ќ@Uќ€Њ ќUќЊќTќЈќPќ ќќќќ((PPќTTЈЈќЊЊTUќTUЈЊќЊЊTUќTUЈЊќЈ*PUќP *ќ  @ќ@€ ќ€ќ ќPќЈќTќЊќUќ€Њ ќ@Uќ€Њ ќ@Uќ€Š ќќќќќ€ќ@€ ќ  @ќP *ќЈ*PUќTUЈЊќЊЊTUќTUЈЊќЊЊTUќTTЈЈќ@((PPќ (ќPTќАlќќ`ќ$ќ$ќ`ќ$ќ``$ќ`ќ$ќ$ќ`ќќ@€ќ @€ (ќPA€ Tќ   @(ќ@X5АjќЄJH•ќZЕДjќЄJH•ќX5Аjќ  @ќ@€ ќ@€ ќ€ќ ќPќЈќЈќTќЋќ€T ќ@Ћќ€T ќЋќTќЈќЈќPќ ќќ€ќ@€ ќ@€ ќ  @ќX5АjќЄJH•ќZЕДjќЄJH•ќX5Аjќ  @ќ@€ ќ@€ ќ€ќ ќPќЈќЈќTќЋќ€T ќ@Ћќ€T ќЋќTќЈќЈќPќ ќ€ќ@€ ќ@€ ќ  @ќX5АjќЄJH•ќZЕДjќЄJH•ќX5Аjќ@  @ќ @€ (ќPA€ Tќ €(ќ@ќќ`ќ$ќ$ќ`ќ$ќ``$ќ№<ќ€ ќ€ ќpќќ@€ќрР€8ќPС€TќјУ€ўќPЙ;pwTќ@|}јњќрќјџ8ќ|}јњќ89prќ€ќР€ќрРќќќќќќќќ€ќР€ќР€ќР€ќИ;pwќ|}јњќќјџќ|}јњќ89prќ€ќРp€ќрјРќјќјќwќ€Џќ€џќ€Џќ'ќpќрјРќРќќ€ќ89prќ|}јњќќјџќ|}јњќИ;pwќР€ќР€ќР€ќ€ќќќќќќќќрРќР€ќ€ќ89prќ|}јњќќјџќр|}јњ8ќ@И;pwќPС€TќјУ€ўќPС€Tќр€8ќ@ќќр8ќќќ№<ќ$ќ``$ќ№<ќ€ ќ€ ќpќќ@ќр€8ќ№С€|ќ№ёр?|ќ@ј?№ќрќјџ8ќќјџќќјџќx=№zќќ€ќР€ќќќќќќќќќ€ќР€ќ№р?ќј?№ќќјџќќјџќќјџќx=№zќќ€ ќРp€ќјќўќџќ€џќ€џќ€џќЏќ ќРp€ќ€јќќx=№zќќјџќќјџќќјџќј?№ќ№р?ќР€ќ€ќќќќќќќќќР€ќ€ќќx=№zќќјџќќјџќќјџќрј?№8ќ@№р?ќ№С€|ќ№|ќр8ќ@ќќр8ќќќ№<ќ$ќ``$ќ№<ќ€ ќ€ ќpќќАlќPTќ ((PP(ќ@TTЈЈќЊЊTUќTUЈЊќЊЊTUќTUЈЊќЈ*PUќP *ќ  @ќ@€ ќ€ќќќќќќќќќ((PPќTTЈЈќЊЊTUќTUЈЊќЊЊTUќTUЈЊќЈ*PUќP *ќ  @ќ@€ ќ€ќŠ ќ@Uќ€Њ ќ@Uќ€Њ ќUќ€Њќ@T ќ  Ј@ќPP *ќЈ* PUќTUЈЊќЊЊTUќTUЈЊќЊЊTUќTTЈЈќ((PPќќќќќќќќќ€ќ@€ ќ  @ќP *ќЈ*PUќTUЈЊќЊЊTUќTUЈЊќЊЊTUќTTЈЈќ@((PPќ (ќPTќАlќќр8ќќќ№<ќ$ќ``$ќ№<ќ€ ќ€ ќpќќ@€ќ @€ (ќPA€ Tќ   @(ќ@X5АjќЄJH•ќZЕДjќЄJH•ќX5Аjќ  @ќ@€ ќ@€ ќ€ќќќќќќќ€ќ@€ ќ@€ ќ  @ќX5АjќЄJH•ќZЕДjќЄJH•ќX5Аjќ  @ќ@P€ ќ@Ј€ ќ€ЈќTќЋќ€T ќ@Ћќ€T ќЋќ€Tќ@Ј€ ќ@Ј€ ќ  P@ќX5 АjќЄJH•ќZЕДjќЄJH•ќX5Аjќ  @ќ@€ ќ@€ ќ€ќќќќќќќ€ќ@€ ќ@€ ќ  @ќX5АjќЄJH•ќZЕДjќЄJH•ќX5Аjќ@  @ќ @€ (ќPA€ Tќ €(ќ@ќќр8ќќќ№<ќ$ќ`2XKќPJќPJќPJќ2ќќ@€ќрР€8ќPС€TќјУ€ўќPЙ;pwTќ@|}јњќрќјџ8ќ|}јњќ89prќ€pќРј€ќрјРќјќwќ€Џќ€џќ€Џќ'ќpќ€јќРќќР€ќР€ќИ;pwќ|}јњќќјџќ|}јњќ89prќ€ќР€ќрРќќќќќќќќќрРќР€ќ€ќ89prќ|}јњќќјџќ|}јњќИ;pwќР€ќРќќРј€ќ€pќ'ќ€Џќ€џќ€ЏќwќјќјќрјРќРp€ќ€ќ89prќ|}јњќќјџќр|}јњ8ќ@И;pwќPС€TќјУ€ўќPС€Tќр€8ќ@ќќ0&ќH)ќH)ќH)ќHiќ0&2XKќPJќPJќPJќ2ќќ@ќр€8ќ№С€|ќ№ёр?|ќ@ј?№ќрќјџ8ќќјџќќјџќx=№zќ ќ€pќРј€ќўќџќ€џќ€џќ€џќЏќ ќpќ€јќР€ќ№р?ќј?№ќќјџќќјџќќјџќx=№zќќ€ќР€ќќќќќќќќќР€ќ€ќќx=№zќќјџќќјџќќјџќј?№ќ№р?ќРј€ќ€pќ ќЏќ€џќ€џќ€џќџќўќјќРp€ќ€ ќќx=№zќќјџќќјџќќјџќрј?№8ќ@№р?ќ№С€|ќ№|ќр8ќ@ќќ0&ќH)ќH)ќH)ќHiќ0&2XKќPJќPJќPJќ2ќќАlќPTќ ((PP(ќ@TTЈЈќЊЊTUќTUЈЊќЊЊTUќTUЈЊќЈ*PUќP *ќ  @ќ@… ќ€‚Š ќAUќ€Њ ќ@Uќ€Њ ќUќЊќTќЈќ((PPPќTT ЈЈќЊЊTUќTUЈЊќЊЊTUќTUЈЊќЈ*PUќP *ќ  @ќ@€ ќ€ќќќќќќќ€ќ@€ ќ  @ќP *ќЈ*PUќTUЈЊќЊЊTUќTUЈЊќЊЊ TUќTTPЈЈќ((ЈPPќTќЊќUќ€Њ ќ@Uќ€Њ ќ@UќŠ ќ€ќ@€ ќ  @ќP *ќЈ*PUќTUЈЊќЊЊTUќTUЈЊќЊЊTUќTTЈЈќ@((PPќ (ќPTќАlќќ0&ќH)ќH)ќH)ќHiќ0&2XKќPJќPJќPJќ2ќќ@€ќ @€ (ќPA€ Tќ   @(ќ@X5АjќЄJH•ќZЕДjќЄJH•ќX5 Аjќ  P@ќ@Ј€ ќ@Ј€ ќ€TќЋќ€T ќ@Ћќ€T ќЋќTќ€Јќ@Ј€ ќ@P€ ќ  @ќX5АjќЄJH•ќZЕДjќЄJH•ќX5Аjќ  @ќ@€ ќ@€ ќ€ќќќќќќќ€ќ@€ ќ@€ ќ  @ќX5АjќЄJH•ќZЕДjќЄJH•ќX5 Аjќ  P@ќ@Ј€ ќ@Ј€ ќ€TќЋќ€T ќ@Ћќ€T ќЋќTќ€Јќ@Ј€ ќ@P€ ќ  @ќX5АjќЄJH•ќZЕДjќЄJH•ќX5Аjќ@  @ќ @€ (ќPA€ Tќ €(ќ@ќќ0&ќH)ќH)ќH)ќHiќ0&po€Е@ШŠp NE ј2!$ќp@Љ_"ќ@љj"$ќGЩ_$ќp€п@ќ€/5у ќ@€Ÿ<ч ќрpwDр 8ќPљњD№TќјћџфаўќPљњР=Tќ@prє‚ќрќу8ќ€–рќРf№ ќјќ|ќ€џŸ5ќўјљќ€БqРќрPрќ0Pј ќњ_ќHАтGќH РќDРƒќ„0Œќ 0G ќР 0ќƒ>€ aќЩBЛ@ќ€ШŠв@ќ€D–Dќ€"b ”Dќ€ Ž\Hќ€ bLHќ€$„`Œ@ќ€8„ ы9ќ!„ cTeќ!„ˆCќFG@ќќџџџџџџќˆcРAˆќG„ ‚ќ˜Њ„ќp^#„pќ@Ф„ќHШ!‚ќHш ЦAќˆЄРAќˆЄ!ˆќ,FLќtLќB№ќ0@ќˆ3Р‚ќ ФЦ0„ќ bˆќ " јHќ`"‰5Hќ@ щ%`ќР }р)0ќ€ЁР+ќЃ86ќ~‚ќќАцџќ`њрќ }€ќ@>˜ќРЄСќр€џ€8ќ@€НќPё€prTќјЃ.œјњўќP!?ˆјџTќр@ˆјњ8ќ@@žѓtwќРГвќр €­8ќ щOŠ$ќY} $ќрщW 8ќ2}$ќр ˆЪ8 DMРЗЦи;po€Е@ШŠp NE ј2!$ќp@Љ_"ќ@љj"$ќBЩ_$ќpз@ќ€/5у ќ@рП<ч ќр№Dр 8ќ№љџD№|ќ№љџфа|ќ@јџР=ќр№zє‚8ќќуќ–рќ€f№ ќјќ|ќ€џŸ5ќўјљќ€БqРќрPрќ0Pј ќњ_ќHАтGќH РќDРƒќ„0Œќ 0G ќР 0ќƒ>€ aќЩBЛ@ќ€ШŠв@ќ€D–Dќ€"b ”Dќ€ Ž\Hќ€ bLHќ€$„`Œ@ќ€8„ ы9ќ!„ cTeќ!„ˆCќFG@ќќџџџџџџќˆcРAˆќG„ ‚ќ˜Њ„ќp^#„pќ@Ф„ќHШ!‚ќHш ЦAќˆЄРAќˆЄ!ˆќ,FLќtLќB№ќ0@ќˆ3Р‚ќ ФЦ0„ќ bˆќ " јHќ`"‰5Hќ@ щ%`ќР }р)0ќ€ЁР+ќЃ86ќ~‚ќќАцџќ`њрќ }€ќ@>˜ќРЄќ€џќр€Н8ќ@№€№zќ№Ё.œјџ|ќ№!?ˆјџ|ќр@ˆјџ8ќ@@žѓєќРГђ?ќр €­8ќ щO $ќY} $ќрщW 8ќ2}$ќр ˆЪ8 DMРЗЦи;po€Е@ШŠp NE ј2!$ќp@Љ_"ќ@љj"$ќ@Щ_$ќpа@ќPx5у ќАЉИ<ч lќPUuEр Tќ ЈЊD№(ќ@TUхаќЈЊР=ќPUє‚ќ *ќуќ@–рќ€ f№ ќјќ|ќ€џŸ5ќўјљќ€БqРќрPрќ0Pј ќњ_ќHАтGќH РќDРƒќ„0Œќ 0G ќР 0ќƒ>€ aќЩBЛ@ќ€ШŠв@ќ€D–Dќ€"b ”Dќ€ Ž\Hќ€ bLHќ€$„`Œ@ќ€8„ ы9ќ!„ cTeќ!„ˆCќFG@ќќџџџџџџќˆcРAˆќG„ ‚ќ˜Њ„ќp^#„pќ@Ф„ќHШ!‚ќHш ЦAќˆЄРAќˆЄ!ˆќ,FLќtLќB№ќ0@ќˆ3Р‚ќ ФЦ0„ќ bˆќ " јHќ`"‰5Hќ@ щ%`ќР }р)0ќ€ЁР+ќЃ86ќ~‚ќќАцџќ`њрќ }€ќ@>˜ќРЄ ќ€џ@ќ€Н *ќ№€PUќ@ .œЈЊќ  ?ˆTU)ќPAˆИЊTќАAžѓtUmќРГњЈќр €}P8ќ щO $ќY} $ќрщW 8ќ2}$ќр ˆЪ8 DMРЗЦи;po€Е@ШŠp NE ј2!$ќp@Љ_"ќBљj"$ќEЩ_$ќp€к@ќ€*5у ќ@@<ч ќ АzDр (ќPI•D№Tќ Дjха(ќ@H•Р=ќАjє‚ќ@ќуќ€ –рќ€ f№ ќјќ|ќ€џŸ5ќўјљќ€БqРќрPрќ0Pј ќњ_ќHАтGќH РќDРƒќ„0Œќ 0G ќР 0ќƒ>€ aќЩBЛ@ќ€ШŠв@ќ€D–Dќ€"b ”Dќ€ Ž\Hќ€ bLHќ€$„`Œ@ќ€8„ ы9ќ!„ cTeќ!„ˆCќFG@ќќџџџџџџќˆcРAˆќG„ ‚ќ˜Њ„ќp^#„pќ@Ф„ќHШ!‚ќHш ЦAќˆЄРAќˆЄ!ˆќ,FLќtLќB№ќ0@ќˆ3Р‚ќ ФЦ0„ќ bˆќ " јHќ`"‰5Hќ@ щ%`ќР }р)0ќ€ЁР+ќЃ86ќ~‚ќќАцџќ`њрќ }€ќ@>˜ќРЄ ќ€џ€ ќ€Н@ќ@№€Аjќ  .œH•(ќP!?ˆДjUќ @ˆx•(ќ@@žѓєjќРГRќр €­ 8ќ щOŠ $ќY} $ќрщW 8ќ2}$ќр ˆЪ8 DMРЗЦи;р0pHA$Ž$ќ\P$ќ†P$ќB'$ќp€†8ќ€Ъсќ@€ ќрpw$(8ќPљњ&А,TќјћџdўќPљњ “ZTќ@prьќрнJ8ќР€˜ќ0СŸ4œ’ќhђ“$ќH@ђˆ$ќЫЈdќр ъX$ќ€€ь0Єќ˜8ј@"ќ$]@јРfќF’7й ќКxТ@ќ†<@Œќ€A ќ@A#`|§ „‚ †ќ †‚Xƒќ A‚…ƒ§  ƒƒЁ § #F|С§Р&$Тў`"d ў`$8"< ўР 4р! ќ@y"РѓƒќЮ"ўќЃJ @0ќ€K€@ ќ€€ `§ќџџџџџџќ@ќ H'ќ0РHќ ўЭќ ?y ќРтА@ќAђq ќС˜с` ќ! ‘A ќ"њˆЁќBќЃ„ ќC@h…ќ„%@…ќњр ‚ќ @р‚ќФ№ „ќ !zv§lВ'‹§š |ш’ќ@ |@pdќ”0мќ‘h\ќ˜TL"ќ’D< Jќ$?Yќ$хА2ќ eрР ќрH%ь‚8ќ@` оќPi%CrrTќјC ˜јњўќPб4љџTќр€Pјњ8ќ@ рqwќ€Nќр€q„8ќ‘ $ќ*„$ќ*ш$ќФ‘$ќрJ80$Рр0pHA$Ž$ќ\P$ќ†P$ќB'$ќp†8ќ€Ъсќ@р? ќр№$(8ќ№љџ&А,|ќ№љџd|ќ@јџ “Zќр№zь8ќнJќР˜ќ04œ’ќhђ“$ќH@ђˆ$ќЫЈdќр ъX$ќ€€ь0Єќ˜8ј@"ќ$]@јРfќF’7й ќКxТ@ќ†<@Œќ€A ќ@A#`|§ „‚ †ќ †‚Xƒќ A‚…ƒ§  ƒƒЁ § #F|С§Р&$Тў`"d ў`$8"< ўР 4р! ќ@y"РѓƒќЮ"ўќЃJ @0ќ€K€@ ќ€€ `§ќџџџџџџќ@ќ H'ќ0РHќ ўЭќ ?y ќРтА@ќAђq ќС˜с` ќ! ‘A ќ"њˆЁќBќЃ„ ќC@h…ќ„%@…ќњр ‚ќ @р‚ќФ№ „ќ !zv§lВ'‹§š |ш’ќ@ |@pdќ”0мќ‘h\ќ˜TL"ќ’D< Jќ$?Yќ$хА2ќ eр€ ќH%ьќр` о8ќ@h%Cђzќ№A ˜јџ|ќ№б4љџ|ќр€Pјџ8ќ@ рёќ€Nс?ќр€q„8ќ‘ $ќ*„$ќ*ш$ќФ‘$ќрJ80$Рр0pHA$Ž$ќ\P$ќ†P$ќB'$ќp†8ќPPЪсќАЉЈ lќPUU%(Tќ ЈЊ&А,(ќ@TUeќЈЊ “ZќPUьќ *нJќР@˜ќ0Š4œ’ќhђ“$ќHBђˆ$ќЫЈdќр ъX$ќ€€ь0Єќ˜8ј@"ќ$]@јРfќF’7й ќКxТ@ќ†<@Œќ€A ќ@A#`|§ „‚ †ќ †‚Xƒќ A‚…ƒ§  ƒƒЁ § #F|С§Р&$Тў`"d ў`$8"< ўР 4р! ќ@y"РѓƒќЮ"ўќЃJ @0ќ€K€@ ќ€€ `§ќџџџџџџќ@ќ H'ќ0РHќ ўЭќ ?y ќРтА@ќAђq ќС˜с` ќ! ‘A ќ"њˆЁќBќЃ„ ќC@h…ќ„%@…ќњр ‚ќ @р‚ќФ№ „ќ !zv§lВ'‹§š |ш’ќ@ |@pdќ”0мќ‘h\ќ˜TL"ќ’D< Jќ$?Yќ$хА2ќ eр€ ќH%ьBќ` о *ќh%CRUќ@@ ˜ЈЊќ а4UU)ќPPЈЊTќАЁрUUmќ€NЉЈќр€q„QP8ќ‘ $ќ*„$ќ*ш$ќФ‘$ќрJ80$Рр0pHA$Ž$ќ\P$ќ†P$ќB'$ќp€ †8ќ€ Ъсќ@@ ќ Аj$((ќPI•&А,Tќ Дje(ќ@H• “ZќАjьќ@нJќР€ ˜ќ0Š4œ’ќhђ“$ќHBђˆ$ќЫЈdќр ъX$ќ€€ь0Єќ˜8ј@"ќ$]@јРfќF’7й ќКxТ@ќ†<@Œќ€A ќ@A#`|§ „‚ †ќ †‚Xƒќ A‚…ƒ§  ƒƒЁ § #F|С§Р&$Тў`"d ў`$8"< ўР 4р! ќ@y"РѓƒќЮ"ўќЃJ @0ќ€K€@ ќ€€ `§ќџџџџџџќ@ќ H'ќ0РHќ ўЭќ ?y ќРтА@ќAђq ќС˜с` ќ! ‘A ќ"њˆЁќBќЃ„ ќC@h…ќ„%@…ќњр ‚ќ @р‚ќФ№ „ќ !zv§lВ'‹§š |ш’ќ@ |@pdќ”0мќ‘h\ќ˜TL"ќ’D< Jќ$?Yќ$хА2ќ eр€ ќH%ь‚ ќ` о@ќ@h%CВjќ @ ˜H•(ќPб4ЕjUќ €PH•(ќ@ рБjќ€NAќр€q„ 8ќ‘  $ќ*„$ќ*ш$ќФ‘$ќрJ80$Р888шm/$PXЧ7ќ0АК ќP`зќрж $ќ€Рl$ќ€Рэќ@€`~ќрpw`8ќPљњ`cTќјћџpчўќPљњpTќ@prp ќрp8ќ€pќРј>ќј]ќќќ€џџќрќџќ0™џ?ќXІyќИШСќ&е€ќ€$‰<рќ@ЉTuќ@ђ Д8ќ@ќ#т/ќ@_OТ#€ ќ€W}0@ќ€еu(@ќ€Uѕ$ ќ€Uе"ќ€Wн ќ€UеV ќРеUќР]UќРUUƒќРUWCќрUU#ќ uU;QќАџџчќќџџџџџџќ ` œџџ7ќ (rЋКќр ЋЊќ !  ЋЋќ ЁЋЊќ `Ћъќ "рЋЎќ ЈaЎЊќР юЊќ@Ё­Њќ@НЊќ@PЙЎќ@0ћЊќРЩы ќ€"вџќ€pД< ќИЊ V ќ№D’ќЌт!ќ Nt€Рќx–i`ќ№џg2ќрџџќрџџќРўќРы~ќРѓ}ќ€8Рќр€у8€8ќ@РУ8ќPСA8prTќјУ;јњўќPСјџTќрРјњ8ќ@€љpwќ€п€ќРй €$ќРЌ€$ќ рЏ(ќР`u50ќ Аk(ќал^$ppp 888шm/$PXЧ7ќ0АК ќP`зќрж $ќРl$ќ€Рэќ@р?`~ќр№`8ќ№љџ`c|ќ№љџpч|ќ@јџpќр№zp 8ќpќpќ€ј>ќј]ќќќ€џџќрќџќ0™џ?ќXІyќИШСќ&е€ќ€$‰<рќ@ЉTuќ@ђ Д8ќ@ќ#т/ќ@_OТ#€ ќ€W}0@ќ€еu(@ќ€Uѕ$ ќ€Uе"ќ€Wн ќ€UеV ќРеUќР]UќРUUƒќРUWCќрUU#ќ uU;QќАџџчќќџџџџџџќ ` œџџ7ќ (rЋКќр ЋЊќ !  ЋЋќ ЁЋЊќ `Ћъќ "рЋЎќ ЈaЎЊќР юЊќ@Ё­Њќ@НЊќ@PЙЎќ@0ћЊќРЩы ќ€"вџќ€pД< ќИЊ V ќ№D’ќЌт!ќ Nt€Рќx–i`ќ№џg2ќрџџќрџџќРўќРы~ќРѓ}ќ€8€ќ€у8ќрРУ88ќ@РA8№zќ№С;јџ|ќ№Сјџ|ќрРјџ8ќ@€љ№ќ€пр?ќРй €$ќРЌ$ќ рЏ(ќР`u50ќ Аk(ќал^$ppp 888шm/$PXЧ7ќ0АК ќP`зќрж $ќРl$ќPPРэќАЉЈ`~lќPUUaTќ ЈЊ`c(ќ@TUqчќЈЊpќPUp ќ *pќ@pќ€ ј>ќј]ќќќ€џџќрќџќ0™џ?ќXІyќИШСќ&е€ќ€$‰<рќ@ЉTuќ@ђ Д8ќ@ќ#т/ќ@_OТ#€ ќ€W}0@ќ€еu(@ќ€Uѕ$ ќ€Uе"ќ€Wн ќ€UеV ќРеUќР]UќРUUƒќРUWCќрUU#ќ uU;QќАџџчќќџџџџџџќ ` œџџ7ќ (rЋКќр ЋЊќ !  ЋЋќ ЁЋЊќ `Ћъќ "рЋЎќ ЈaЎЊќР юЊќ@Ё­Њќ@НЊќ@PЙЎќ@0ћЊќРЩы ќ€"вџќ€pД< ќИЊ V ќ№D’ќЌт!ќ Nt€Рќx–i`ќ№џg2ќрџџќрџџќРўќРы~ќРѓ}ќ€8€ ќ€у8@ќРУ8 *ќРA8PUќ@Р;ЈЊќ РTU)ќPСЈЊTќАљTUmќ€пЈЈќРй PP$ќРЌ$ќ рЏ(ќР`u50ќ Аk(ќал^$ppp 888шm/$PXЧ7ќ0АК ќP`зќрж $ќ€ Рl$ќ€ Рэќ@@`~ќ Аj`(ќPI•`cTќ Дjqч(ќ@H•pќАjp ќ@pќ€ pќ€ ј>ќј]ќќќ€џџќрќџќ0™џ?ќXІyќИШСќ&е€ќ€$‰<рќ@ЉTuќ@ђ Д8ќ@ќ#т/ќ@_OТ#€ ќ€W}0@ќ€еu(@ќ€Uѕ$ ќ€Uе"ќ€Wн ќ€UеV ќРеUќР]UќРUUƒќРUWCќрUU#ќ uU;QќАџџчќќџџџџџџќ ` œџџ7ќ (rЋКќр ЋЊќ !  ЋЋќ ЁЋЊќ `Ћъќ "рЋЎќ ЈaЎЊќР юЊќ@Ё­Њќ@НЊќ@PЙЎќ@0ћЊќРЩы ќ€"вџќ€pД< ќИЊ V ќ№D’ќЌт!ќ Nt€Рќx–i`ќ№џg2ќрџџќрџџќРўќРы~ќРѓ}ќ€8€ ќ€у8€ ќРУ8@ќ@РA8Аjќ Р;H•(ќPСДjUќ РH•(ќ@€љАjќ€п@ќРй € $ќРЌ€ $ќ рЏ(ќР`u50ќ Аk(ќал^$ppp ќќќќќќќќќќќќќќќќќќќќќќќќќќ|ќўќџќџќ€џќ€џќџќџќўќ|@ќ|№ќ€?8јќР?8јќР8ќќрџџџќрџџџќрџџџќР8ќќР?8јќ€?8јќ8№ќ8@ќ8ќ|ќ|ќўќџќ€џќРџќРќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќ8ќ|ќўќџќРџќ№џќќџќџџџќРџџџќрџџџќ№џџџќ№џџџќјџџџ?ќјџџџ?ќјџџџ?ќјџџџ?ќјџЛџ?ќ№8ќќР|рќ|ќўќўќџќџќ€џќРџќРќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќ~ќџƒџќ€ЧќРUmUќ`l ќ`U}U ќ08ќpUUUќ0ќpUUUќ0ќ`UUU ќ` ќРUUUќРќ€UUUќ€ќ^UѕќpќpUќрќ€Uќƒќжќlќ|ќ8ќ8ќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќ8ќ8ќ|ќlќжќƒќзќ€ќРUќ` ќpUќ0ќ^UѕќРќРUUUќ№ќxUUU=ќ№ќРUUUќРќ^Uѕќ0ќpUќ` ќРUќ€ќзќƒќжќlќ|ќ8ќ8ќќќќќќќќќќќќќќќќќќќќќќќќќќрџџџџџ ќшџџџџџ_ќ(Pќ(xрСQќ(Бс†6RќЈ@TќЈ €TќЈc„#Tќ( xр@Rќ(€Rќ(BU…Њ Qќ(0€Rќ(I0рIRќЈЁЬBTќЈP)ЯS*TќЈ%’"TќЈP™d*Tќ( B0ARќ(IBHIRќ(„H„€Rќ(B „@ Qќ(Ж!ƒRќ(I„ JRќЈ x TќЈP (TќЈ"!Tќ(K%JSќ() Pќ(J HQќ( ЇC@Rќ(QЉ€)RќЈЉ TќЈPЉ(TќЈ8р TќЈHФITќ( ‡CARќ(E$ў!‰Rќ(yТQќ(E€ˆRќ( @@RќЈPЬœ)TќЈ2&c"TќЈPц Ю(Tќ( @@@Rќ(E€ˆRќ( ybQќ(Eў‘ˆRќ( ‡Ѓ@RќЈHтŽHTќЈp TќЈPW(TќЈT Tќ(QT‚)Rќ( —C@Rќ(J@"HQќ(P"Pќ(K%€“JSќЈ"!TќЈP (TќЈ x Tќ(I„ JRќ(Ж!ƒRќ(B „@ Qќ(„H„€Rќ(IBHIRќ( B0ARќЈP™d*TќЈ%’"TќЈP)ЯS*TќЈЁЬBTќ(I0рIRќ(0€Rќ(BU…Њ Qќ(€Rќ( xр@RќЈc„#TќЈ €TќЈ@Tќ(Бс†6Rќ(xрСQќ(Pќшџџџџџ_ќ ќрџџџџџxpat2-1.07/lib/small.cards100644 146 144 40262 5427754534 14116 0ustar mbimathopt9(<РР РPРˆРˆРˆРјРˆРŒРРР РpРЈРќРЈР РpРРРРРРРРРРnРрџР№џРрџРРnРРРРРРРРС€У@ХрЯ@ХС€УРРС€Т@Ф@Ф@ФРЧ@Ф`ЬРРРР РPРˆРˆРˆРјРˆРŒРРР РpРјРќРќРЈР РРРРРРРР€?РРРрџР№џР№џР№џР№ѕРрфРРРРРРС€УРЧрЯрЯ@ХСРРС€Т@Ф@Ф@ФРЧ@Ф`ЬРРРР РPРˆРˆРˆРјРˆРŒРРРиРќРќРќРјРpР РРРРРрёР№ћРјџРјџРјџРјџР№џРрџРРР€?РРРРРРРРЦрЯрЯрЯРЧ€УСРРС€Т@Ф@Ф@ФРЧ@Ф`ЬРРРР РPРˆРˆРˆРјРˆРŒРРР РpРјРќРјРpР РРРРРРРР€?РРРрџР№џРрџРРР€?РРРРРРРС€УРЧрЯРЧ€УСРРС€Т@Ф@Ф@ФРЧ@Ф`ЬРРРР8РDР@Р РРРР|РРРРРР€?РРРРРРРРРРРРРРРРРРРРРРРРРРР€?РРРРРРЧ€ШШФТшЈЯРРРР8РDР@Р РРРР|РРРРРР€?Р€?РРРРРРРРРРРРРРРРРРРРРРРРРР€?Р€?РРРРРЧ€ШШФТшЈЯРРРР8РDР@Р РРРР|РРРР€?Р€?Р€?РРРРРРРРРРРРРРРРРРРРРРРРР€?Р€?Р€?РРРРРРЧ€ШШФТшЈЯРРРР8РDР@Р РРРР|РРРРРР€?РРРРРРРРРРРРРРРРРРРРРРРРРРР€?РРРРРРЧ€ШШФТшЈЯРРРР8РDР@Р0Р@Р@РDР8РРРРРР€?РРРРРРРРРРРРРР€?РРРРРРРРРРРРРР€?РРРРРЧ€ШШЦШШ€ШЧРРРР8РDР@Р0Р@Р@РDР8РРРРРР€?Р€?РРРРРРРРРРРРР€?Р€?РРРРРРРРРРРРР€?Р€?РРРРЧ€ШШЦШШ€ШЧРРРР8РDР@Р0Р@Р@РDР8РРРР€?Р€?Р€?РРРРРРРРРРРР€?Р€?Р€?РРРРРРРРРРРР€?Р€?Р€?РРРРРЧ€ШШЦШШ€ШЧРРРР8РDР@Р0Р@Р@РDР8РРРРРР€?РРРРРРРРРРРРРР€?РРРРРРРРРРРРРР€?РРРРРЧ€ШШЦШШ€ШЧРРРР0Р(Р(Р$Р$Р|Р Р РРРРРРР8РTРў€?РTРР8РРРРРРРРРРРРРРРР8РTРў€?РTРР8РРРРРРЦХХ€Ф€Ф€ЯФФРРРР0Р(Р(Р$Р$Р|Р Р РРРРРРР8Р|Рў€?Рў€?РTРРРРРРРРРРРРРРРРР8Р|Рў€?Рў€?РTРРРРРРРЦХХ€Ф€Ф€ЯФФРРРР0Р(Р(Р$Р$Р|Р Р РРРРРРlРў€?Рў€?Рў€?Р|Р8РРРРРРРРРРРРРРРРlРў€?Рў€?Рў€?Р|Р8РРРРРРРЦХХ€Ф€Ф€ЯФФРРРР0Р(Р(Р$Р$Р|Р Р РРРРРРР8Р|Рў€?Р|Р8РРРРРРРРРРРРРРРРР8Р|Рў€?Р|Р8РРРРРРРЦХХ€Ф€Ф€ЯФФРРРР|РРР<Р@Р@РDР8РРРРРРР8РTРў€?РTРР8РРРРРРР*РР*РРРРРРР8РTРў€?РTРР8РРРРРЈ߈ЈЈЧШШ€ШЧРРРР|РРР<Р@Р@РDР8РРРРРРР8Р|Рў€?Рў€?РTРРРРРРРР>РРР*РРРРРР8Р|Рў€?Рў€?РTРРРРРРЈ߈ЈЈЧШШ€ШЧРРРР|РРР<Р@Р@РDР8РРРРРРlРў€?Рў€?Рў€?Р|Р8РРРРРР6РРРР>РРРРРРlРў€?Рў€?Рў€?Р|Р8РРРРРРЈ߈ЈЈЧШШ€ШЧРРРР|РРР<Р@Р@РDР8РРРРРРР8Р|Рў€?Р|Р8РРРРРРРР>РР>РРРРРРР8Р|Рў€?Р|Р8РРРРРРЈ߈ЈЈЧШШ€ШЧРРРР8РDРР<РDРDРDР8РРРРР8РTРў€?РTРР8РРРРРРР8РTРў€?РTРР8РРРРРРРР8РTРў€?РTРР8РРРРЧ€Ш€Р€Ч€Ш€Ш€ШЧРРРР8РDРР<РDРDРDР8РРРРР8Р|Рў€?Рў€?РTРРРРРРРР8Р|Рў€?Рў€?РTРРРРРРРРР8Р|Рў€?Рў€?РTРРРРРЧ€Ш€Р€Ч€Ш€Ш€ШЧРРРР8РDРР<РDРDРDР8РРРРlРў€?Рў€?Рў€?Р|Р8РРРРРРРlРў€?Рў€?Рў€?Р|Р8РРРРРРРРlРў€?Рў€?Рў€?Р|Р8РРРРРЧ€Ш€Р€Ч€Ш€Ш€ШЧРРРР8РDРР<РDРDРDР8РРРРР8Р|Рў€?Р|Р8РРРРРРРР8Р|Рў€?Р|Р8РРРРРРРРР8Р|Рў€?Р|Р8РРРРРЧ€Ш€Р€Ч€Ш€Ш€ШЧРРРР|Р@Р Р РРРРРРРРР8РTРў€?РTРР8РР*РР*РРР8РTРў€?РTРР8РРРРРРРР8РTРў€?РTРР8РРРР€ЯШФФТТССРРРР|Р@Р Р РРРРРРРРР8Р|Рў€?Рў€?РTРРР>РРР*РР8Р|Рў€?Рў€?РTРРРРРРРРР8Р|Рў€?Рў€?РTРРРРР€ЯШФФТТССРРРР|Р@Р Р РРРРРРРРlРў€?Рў€?Рў€?Р|Р8Р6РРРР>РРlРў€?Рў€?Рў€?Р|Р8РРРРРРРРlРў€?Рў€?Рў€?Р|Р8РРРРР€ЯШФФТТССРРРР|Р@Р Р РРРРРРРРР8Р|Рў€?Р|Р8РРР>РР>РРР8Р|Рў€?Р|Р8РРРРРРРРР8Р|Рў€?Р|Р8РРРРР€ЯШФФТТССРРРР8РDРDР8РDРDРDР8РРР8РTРў€?РTРР8РРРРР8РTРў€?РTРР8РРРРР8РTРў€?РTРР8РРРРР8РTРў€?РTРР8РЧ€Ш€ШЧ€Ш€Ш€ШЧРРРР8РDРDР8РDРDРDР8РРР8Р|Рў€?Рў€?РTРРРРРР8Р|Рў€?Рў€?РTРРРРРР8Р|Рў€?Рў€?РTРРРРРР8Р|Рў€?Рў€?РTРРЧ€Ш€ШЧ€Ш€Ш€ШЧРРРР8РDРDР8РDРDРDР8РРlРў€?Рў€?Рў€?Р|Р8РРРРРlРў€?Рў€?Рў€?Р|Р8РРРРРlРў€?Рў€?Рў€?Р|Р8РРРРРlРў€?Рў€?Рў€?Р|Р8РРЧ€Ш€ШЧ€Ш€Ш€ШЧРРРР8РDРDР8РDРDРDР8РРР8Р|Рў€?Р|Р8РРРРРР8Р|Рў€?Р|Р8РРРРРР8Р|Рў€?Р|Р8РРРРРР8Р|Рў€?Р|Р8РРЧ€Ш€ШЧ€Ш€Ш€ШЧРРРР8РDРDРDРxР@РDР8РРР8РTРў€?РTРР8РРРРР8РTРў€?РTРР8Р*РР*РР8РTРў€?РTРР8РРРРР8РTРў€?РTРР8РЧ€Ш€Ш€ШЯШ€ШЧРРРР8РDРDРDРxР@РDР8РРР8Р|Рў€?Рў€?РTРРРРРР8Р|Рў€?Рў€?РTРР>РРР*Р8Р|Рў€?Рў€?РTРРРРРР8Р|Рў€?Рў€?РTРРЧ€Ш€Ш€ШЯШ€ШЧРРРР8РDРDРDРxР@РDР8РРlРў€?Рў€?Рў€?Р|Р8РРРРРlРў€?Рў€?Рў€?Р|Р86РРРР>РlРўˆ?Рў€?Рў€?Р|Р8РРРРРlРў€?Рў€?Рў€?Р|Р8РРЧ€Ш€Ш€ШЯШ€ШЧРРРР8РDРDРDРxР@РDР8РРР8Р|Рў€?Р|Р8РРРРРР8Р|Рў€?Р|Р8РР>РР>РР8Р|Рў€?Р|Р8РРРРРР8Р|Рў€?Р|Р8РРЧ€Ш€Ш€ШЯШ€ШЧРРРРdДДДДДДРdРРР8РTРў€?РTРР8Р*РР*РР8РTРў€?РTРР8РРРРР8РTРў€?РTРР8Р*РР*РР8РTРў€?РTРР8Р@Ц@Щ@Щ@Щ@Щ@Щ@Щ@ЦРРРРdДДДДДДРdРРР8Р|Рў€?Рў€?РTРР>РРР*Р8Р|Рў€?Рў€?РTРРРРРР8Р|Рў€?Рў€?РTРР>РРР*Р8Р|Рў€?Рў€?РTРР@Ц@Щ@Щ@Щ@Щ@Щ@Щ@ЦРРРРdДДДДДДРdРРlРў€?Рў€?Рў€?Р|Р86РРРР>РlРўˆ?Рў€?Рў€?Р|Р8РРРРРlРў€?Рў€?Рў€?Р|Р86РРРР>РlРўˆ?Рў€?Рў€?Р|Р8РР@Ц@Щ@Щ@Щ@Щ@Щ@Щ@ЦРРРРdДДДДДДРdРРР8Р|Рў€?Р|Р8РР>РР>РР8Р|Рў€?Р|Р8РРРРРР8Р|Рў€?Р|Р8РР>РР>РР8Р|Рў€?Р|Р8РР@Ц@Щ@Щ@Щ@Щ@Щ@Щ@ЦРРРРрР@Р@Р@Р@РDРDР8РРР РpРЈРќРЈР РpРР0ŠРPQР Р№џРРРаqРРРРРР €Р ŸР@@Р@@Р€ РРРС€У@ХрЯ@ХС€УРРЮФФФФ@Ф@Ф€УРРРРрР@Р@Р@Р@РDРDР8РРР РpРјРќРќРЈР РР0ŠРPQР Р№џРРРаqРРРРРР €Р ŸР@@Р@@Р€ РРРС€УРЧрЯрЯ@ХСРРЮФФФФ@Ф@Ф€УРРРРрР@Р@Р@Р@РDРDР8РРРиРќРќРќРјРpР РР0ŠРPQР Р№џРРРаqРРРРРР €Р ŸР@@Р@@Р€ РРРРЦрЯрЯрЯРЧ€УСРРЮФФФФ@Ф@Ф€УРРРРрР@Р@Р@Р@РDРDР8РРР РpРјРќРјРpР РР0ŠРPQР Р№џРРРаqРРРРРР €Р ŸР@@Р@@Р€ РРРС€УРЧрЯРЧ€УСРРЮФФФФ@Ф@Ф€УРРРРxЄЄЄЄЪРФРxР€РР РpРЈРќРЈР РpРЈЊРЈЊРHDРРјџРРРиqРРРРРР8‘Р8ŸР|РРРРž1РРРС€У@ХрЯ@ХС€УРР€Ч@Ш@Ш@Ш@Ш@Ъ@Ь€ЧШРРРxЄЄЄЄЪРФРxР€РР РpРјРќРќРЈР РЈЊРЈЊРHDРРјџРРРиqРРРРРР8‘Р8ŸР|РРРРž1РРРС€УРЧрЯрЯ@ХСРР€Ч@Ш@Ш@Ш@Ш@Ъ@Ь€ЧШРРРxЄЄЄЄЪРФРxР€РРиРќРќРќРјРpР РЈЊРЈЊРHDРРјџРРРиqРРРРРР8‘Р8ŸР|РРРРž1РРРРЦрЯрЯрЯРЧ€УСРР€Ч@Ш@Ш@Ш@Ш@Ъ@Ь€ЧШРРРxЄЄЄЄЪРФРxР€РР РpРјРќРјРpР РЈЊРЈЊРHDРРјџРРРиqРРРРРР8‘Р8ŸР|РРРРž1РРРС€УРЧрЯРЧ€УСРР€Ч@Ш@Ш@Ш@Ш@Ъ@Ь€ЧШРРРDРDР$РР РР$РDРРР РpРЈРќРЈР РpРЈЊРЈЊРHDРРјџРРРШqРРРРРРРР0€Р`РРрёРРР€?Р€?С€У@ХрЯ@ХС€УРР€Ш€Ш€Ф€Т€С€Т€Ф€ШРРРРDРDР$РР РР$РDРРР РpРјРќРќРЈР РЈЊРЈЊРHDРРјџРРРШqРРРРРРРР0€Р`РРрёРРР€?Р€?С€УРЧрЯрЯ@ХСРР€Ш€Ш€Ф€Т€С€Т€Ф€ШРРРРDРDР$РР РР$РDРРРиРќРќРќРјРpР РЈЊРЈЊРHDРРјџРРРШqРРРРРРРР0€Р`РРрёРРР€?Р€?РЦрЯрЯрЯРЧ€УСРР€Ш€Ш€Ф€Т€С€Т€Ф€ШРРРРDРDР$РР РР$РDРРР РpРјРќРјРpР РЈЊРЈЊРHDРРјџРРРШqРРРРРРРР0€Р`РРрёРРР€?Р€?С€УРЧрЯРЧ€УСРР€Ш€Ш€Ф€Т€С€Т€Ф€ШРРРРРРРРРРРРРРРРРРРРРРРРРРРРРnРрџР№џРрџРРnРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРР€?РРРрџР№џР№џР№џР№ѕРрфРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРрёР№ћРјџРјџРјџРјџР№џРрџРРР€?РРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРР€?РРРрџР№џРрџРРР€?РРРРРРРРРРРРРРРРРРРРРРРРРРќџџџєџџџ  дџџџ T€ TџџП T  T§џЏ TЈ TѕџЋ TЊ TеџЊ TU€Њ TUПЊ TUЁЊ TU­Њ TU­Њ TU­Њ TU­Њ TU­Њ TU­Њ TU­Њ TU­Њ TU­Њ TU­Њ TU­Њ TU­Њ TU­Њ TU­Њ TU­Њ TU­Њ TU­Њ TU­Њ TU­Њ TU­Њ TU­Њ TU­Њ TUЁЊ TUПЊ TU€Њ TеџЊ TЊ TѕџЋ TЈ T§џЏ T  TџџП T€ дџџџ  єџџџ ќџџџxpat2-1.07/lib/audio/ 40755 146 144 0 6714247615 12745 5ustar mbimathoptxpat2-1.07/lib/audio/cannotsave.au100644 146 144 65040 5644001222 15536 0ustar mbimathopt.snd j@sћb_dp^KLOc\K`нзє[кЮиpLЫМНПJ<;NЬЯЛЕЗЛu:/5YЭПФтTIILMgЮРОЦжmNF@BKZ~свЩЭшpфШЬсъЫОХ{XјЯяNOўр^JK\[JDLXYOM[ўqiwхкЮЪвзЫШЪкWђФЗКY:5;<;?]ЬФЯeOR]ZaѕЭРПЦбы\OKMS_uмЬЦЫнюкрla№ййsUUa`VSZgum_^cf_^aoјяюђьцпзбЯбдджйтёgZmпЯлWECO_fgwиЮгїTKIO[mїєэътпомидбдмчue^]^]XSQTZ_mёоздгббгйошю{f_anћјxoruoia]]][ZZ\_j}ьпкйиизизиййо{kэкуbNJN\]VYlуййюc\\amujghms№укаЭЫЬбмхьћk]UMHFGKOYe}сдЭЭЮЯЮЮЯжоцяћu|ќ|ўxjb^ZVUROPPQSW\_k{ьфмевЯЯембЧЧдљ`\ixk~кЯЯзю]QQPPQNKKORWb}ужавекрхэ{e^[SSUYdєпкаЪШЩШШЫЭзяpja\[\YWWSRSRQQSSTVX[fvїшмжЮЫЫЬЫЪЪЯоцзЯд|PJJJKLT{мо~]RONQ[dlnloўцзЮЩФТУЦЫбкхw_QJEDDDEHO\oчкбЫЪЬЭвкпчыщщьђіћxroie]XUSUVW[]`goјщхойзеееитфйлурѕo§eYcpyщфэѕp_XSRRVZXTW]dxьпиежеввекрщw_YY\eqїшнййздеийфћl^YUUUWYZZY]_bjmppnkuўїьчтмйкйеавеЬкaiѓьg\fjphVNS[\[]qљzќѓњчлсчсошpoёщшђўїьіg^gцю`lѓѕюe[њя~iaљэm§n№у{э№сыё{|шrl§pъs§z§н^пqzмZмwtнRєU]cTїeсіzmюьєнњвпрк_жњыуюфќјjyx^}^|ћ^]`[d]Zk`a]ckkіaяzyыvнчнеъещмгтЪлакппсі№ъyяn^\LbSkmS№L_TUePh\lю_|w\пoутьапзикзжгеедыд^рj_ъSyTg\[]KZM[ZUџWъ_съњЯњЬпвгьЦїЮлйЭ{аaе^ѕ]TiKvIaWIfG^NQoNй^шўцифйпгзаиадгимммщэѕъцhk_^ZVSXO\RVOWOfVdџѕпяйхЭмгзЯвгйЯцйѓыш_sNkKbO_[d[_ќ^wxwчпыо{еcлqрмџоxпуeќX}]јslч_х^яZlўeнWнoфн_ЮџбржеќжmlюOѕLёSYdJџHrNџXnmyђэнывнтбнвзузхбєлщышgчTp\crfdjfћ[gUgeZьZшiъyъяћќяіuчіюmыkф§рlм`щagkqщ|оzкфоырцнuчfђs^[h^hcWъiјtkфќkкXзWэўчм]зgлєrрgшvaюbќWпb№yчэџёьяђєэmшok[ѕ{ZхLр]u^\рўлiпожмпнщљкhаkщnпёbїZкVё\\юS^S^_Q_Qlq]т{дісмыйлімякуччуйрњмюyрZюц|і\фomzOVoM`N[ёYкTфіtщZиeг]ъхџмo№йгюсзnгmјјkjaюhлxъвfбiыrgtqVQ^QoN_Uea[]`дhзwѓпе~мохеиљаяЮxекк№ocxmчяVэaqoJfM^ќRmVяu[UвXъjgфу]pэоuтчирЮмбрЯнйдццоlкhјэRјK^PZYITNRўIyaoќhн\н\лжѓозжинпЮЯзгъТьдыялT]i\фJXAQLFTLj\уnяhmыцнъоедамЮЫбЭиткоюпjidY]MNJONIXQYOOZљpуjЯеЪзвЮзЬрваЩйЯлЮгъUviюYKS`pMMI_[POKSWY]X^№ў~§малЮЭЭЩЯЯаЦвЮЩрЬ№pmjsSYJMVNLBLPLTG\^№_oщпдщилжбдЭазаЮЬждіинтыbejњ^XRNXUNJHLR\S]u|zitоиўюдЧЫцєеТЦериЫеheюкцXNX~gSNN^SHJMNW_PZййрx^ћгЪйъеШПЧотбЧЩеэчксhVQW[UJFIHIFDEKSNP^япx_фЫТФЬФМЛНЭрНЙШеэdmH8AbурiORI:303;FOiцЯЧФЧХРПОУТММбLDwЦЪfLxЪбR@LпЮц\X^XIBBFN^]Z^eъцmQUћйЫЯбЪещУОПЛЮL>FeЫМОФЦЮZAoОЛЦЭo?776:KюЧЛИМХЮксоеЯЫЧЦУЯY@9;BLLNdњщшљўьздип{geчзаекпоё_RSmуп_LJQqлб}H=RШЧЧбK>dЫПМОЫсэk_|лЮШХЪвхO=9;AKX_mннтхьннилъэіюѕхидвоџc^]VTYgщнsSLN[§кмя_LuЦХУЭT>9D{ТАГНЪj@789@qЧЛЛРгYOPO`фЯЧЦЫкіJ:8;IYoъьгаизйжгЯар№ut}яхѕ|ja`ZVOOWZ`{ѕn_UQ]чбЮвзgnФПТПфD:=^ЪВЏМЭ_?4479JпХСЩйXKPVkзЫШЦЦЩйVB>CUjlёрилмлзбгиуъu]^`§нмюcYVUPOQS]oя№`]^`шмззздsлРТПЫN;7EьСВЖУсM<58;BnЩНРЪпON\lфжЮЬЪЧгYA=>DQU\ьгЯкийнзлпёшшm~ьртєyce`TOR_qџxlfhkisъохфмjфУТПЭI:8MдПГЙЦнO>56>XЩМЗКСЫrI=:@OѓЫФШдњd[Z]iьпдЯеsIADHNOQgфжзкЯЩЧЩЮесzeao№іxyјr[ONRY`d`_eo}ыфъш{]пЧОО№?I_ќљфзЯгщk^`ќнмщіїgOFGMX_i№мйигЮЫЬЯгкцv_Z\dqђ№џk\\i]MIL\xx^YшЫТЩVBINQTjпгдфіљыхыюшоћRIHJMO\њрйккгЫХЧЭЯЯжяf`hl_[]]YV[\QLR_cWONiвЩЭoKOуЫЬжЭМЖОнQKOMHFLeутњm§сфrkшлљ[Y\TNOYglgmъидеЯЧТХЫдмс№{gguj`nю^KLX\SR\V]ми§QDESuѓїзПКСвgaOHHUцзомЯЭбзаЪЮћcєўL?CQXKBLьмn_лЧЩддЫЩбщѕыэvktыпюh`ce\TXWJ]жх[PRYVTZъЦСЫЫЩвuSPOMQXbyхтоЮЦШзвЦЫіXUWOF?CQSOXќопржгилкмффпчсжЮЮсюкйюnшшTkйcUQMMFAH\pZ[фгёX[uaMOtђqыдЦСХФПНРЩЪвфeNIFCBFJMXlьыјёрмхћїьhќчєffэнцћозwлЬь~ra]OJNgя§ькеэnkd\VV[YYeoхидЮЩХШЪЫагыdXMHCBDKOXiымеЯЭЯверў|d\\UT^nэмђцХЯmънђh[]цмъмЭЭдояzePLLHDFHKWV_яьмгджжвнєl`_]]f{ясйвЬЧФУТФЧЭпыiQPICFHKJIsmO_iZTTVb~яхйбЮаЬЬЬЮЯадшўz_bj`oњђ§pm`cZONMHGGGJOXoтеЫХУРППСФЩбйрlVYVOMXwTY}fUUX]Y^jwћфцючќwьъщысыѕрьясцосфущђjZTNKIHGJLS\lщзаЭЩЪЪЩЪЭЮвйољ}эajдm_нњZc`Y]idowvk_\]YVbd]eteaўslььпосннтпшzlj[YYZ]enюокдЯЯЯЯбзкуы|_[[UTOfљXjрђќтђ№ьі{ђюъљ|іђomve\^d]]mofыцьцлцэыtcf_[]\\`hoѓшнддббЯвкйюpng_[]YR^щjbучїфё§штыснлмфъяљqtkc^_[[\Y_a_emjeimsonla]]Z[_g{юъовЮЬЪЩШЦЪЭЮеръќo]VTSWSRYYVZ]]\]_lywѓшффрппнорсьњ|of^[Y[\^fkkr~јєѕэхсцэє~§іђэчтомнпопуушюѕyssupkhgfcaaa_ccdhkruusroux|іэщхусооптшяєљ§ztmigd`^^^^]]]^`k~яхойеггежилпхыюяёюѓ§}{}xyz}zsuoh^YXXXXXZ^aimoptzwsqnvўіяьщфспмкзеежзйнтыяќ|ў~||umkgc_\ZXVVX[]_ciozєщпйжеегеймпчэїqjd^]\ZXXWWWY[]cnљэшрооммнннопсттцъьяяэ№|rlg`^]\]^_bdhoxљђюшсроммопоптш№ўphc^]\[ZXWY[_el{љяьцффффчшчшчъышъэяїџzxqmkijmoonlklmozіэцспооолййлнрфъђzf^YWUVTRRRSTVWZ_hkxѓырлзваЯЯбгеилпхшьђўuvvunkd^\ZXWWWWY\_bgnўырмиедввгдзлпшю~oe][YXY[]``_^^^]^ahp|њ№шцуомйждгджзйлптю{qie`\YVVUTTUVZ]ajvјщпкзгбвезлпхю_^ЫdDLQгкi`_яыgmfiZфгпhёф|зцыaTSЪПяfH`ш`hѕkѕiоэєTSљejiнљ~dwжќTbъпкшмапjкроnђкбп{ъъ`WSYNNLS]NPY`ngінзпогжзекежммлймзмнхыѕsb]fUUNNMKIKNQU]byффнлеЯЮгвЯЭвежЯйояхшs_fgWQQTQNNSZVV`rpjякеиквЯжнгйыzѕпы_[yюndnяx[Z^\X[\PTh№чэнЪЦЮжаЮзqetbNKORMLY|їюкЮЩЬжигс_SY\WUUJ\Ю_хЧsa`\ыъ]чЧЬихэијNU§iX[якыяиЩЬзвЮйnZPH>879>HELтЯУПОЗГЗНУЦЮhJOSJEIWc]eьнэf^^pM?NNIOOhЩб[ЬДПФЧнжwO\уођмЩЬ`QaTD>ENOITѕнрпЫХЩЭЮвwNGFC<=LfdѓзУЗКПЛЙОЦрYRRRH@M_oj\eооg\fiYJHLe[K]эnr{нЫЦзPуЕФKcЯяN?JвУлтМИйQ^`J?@YшX]ЯЦЮеЯЦШсb_^F<<<<=J\bYеЛТжЦЙЛШскЧбVYжа^[фнnSVrcHIXSHFKSUQSoёY^йелдЪШ~ЮЖР\`УФa?QУЛоkПЙx?ARD67Q§ORйЪнjюго[UqmMFOWTPaвЪхсТНЧЮЪУСакЬћQZq_OJTZKBMZNIM\`UTlэwьЯЯЯЮЭЬЮЭЩЧЯеЯZјФпJUиjD=DывQSЬЦR>APF;?эЯсдПМЧаЪФЮьъдпaT\_OO^fORяйьsщЮе_[эњ\OSgh_hпфщмдохчлуsaюыniљтс{єпћ`{фnZoъo=DРЦD?лЦ`:?бНцtМЕЬTXш^>BнЪksЩУпVjмwNQіћOKU]LFPљjP|ЬЫвЯХОХлкЭж{ksxe_`d_\^[OMTSLMX\\^jіхойждажлеввЫЫаатQЮН§CSкx>6FођGZЧЪOCQjI>Sгм{ЯППаеЧФл~кеdOU[ODLџjHKпжp\шЮЯїѓеа§iскэтзвпuvєePNWZTYgbZ_|јigънѓyѕррф№иЫпіж]ьОЯW_чпU>DєбnљЧЦєPNUK=Bqэ`ѓЯЫж}пЭиwямё\Y^XLNeя[SнЯжеЬХСЫзЮЮ~yяbXjke`WXjWLU^PNRTUQTanpясоздлвЭбввлЯалу\єОбP[яяUBEgфn§Эа~XOJE>E\ceогжмчпкхшмпчхь}|jeѓьэrуедквЬЫбмэѕьhSU_XW[YVVTWUPR]_\_ba§ч~ѕкднтлддмозЭгпзамъe\ЮЪUMpvXIBMќh_тЮм§dYPJENa\pжбггдааиздзпуђhYSRZ\XTkррэужЭЯціохfmf`ѕюmіёc^bZZ\Y_vjZ[_hf]mкжопеЯауоЯвј№ммэnqa`мщVOWі^CAVisђгЪЪз|g[KJ\mjуаЮЮдггдптш§mcXOKKSVSQjфоукебейкдисссїќупмыіђъjVTUTTNMSRNNQSX^uѕ^ўЪб~кЫЬЪаЯУХвзнЭЧуYYnbLCI\njoмлnXNJE?BKTW{мвЯгЭШЩЮвбан§j__c_Z^эрчкаЮЫгнжмukjWQXVQTTTXYV[XSWXZcigјтцлвжеЮЫЬЯвЭжщпхtў№hqnRђЭ[GQ_TNILяэuпЬвхтыo_NPbkc{лжгаЭЮЯЯдфљfWOKJOTOOnоыыгЯлтпрёljegghrxџ}ј№юў|чы~ђщ~m{qўцъn~цућbtё{lgfmdSnцMhУъMaю{њ[OмЧймЦФййуc[OLPXU]xьпппкеихѓu^YOIJOOKWщфожЯЪХЮгШЫлфръ|s_cjbbdYPWVQY[V]e]`wvцфхизрнлъђмзр}щйпMUЫзNMb`hTM{ЮхяЮЦкнлєdZY\eY]ћщ|щонннр№vd[QLIJGGNZ^lлбЯЮЪЦЧЩЪЯггепщр№zѕ§`_bUNNNKIIMOPT\_hьмснждаЮЮбЩЦвлчсШеXXѓ^OMJM[Z\љлююъo`]ZZ]^awёыплйкдбжмпяcVVXNJSwqkкЯЮЫЩЭЬЭкухњfghfga^jb[YYTRSNJLSNO[ddяолмиЬЪЯЭЩШЭЬЫнмфгж§[^hXOLK[d\\wњen_XWXSW\_lѓьчйгЭЬЫЭЮбняqgZQUYYVcђячозжзпыэoii^YX`]]]bnuo|яіqxј{vњэщпоммклжднэлкtkј_NkцYNZZTOMObimчждзжкпь{ёњmmяіxыхърнллс№§mZOJKKNPXuпзеЫХШЫЮЯдксїђqa[`a]]^^ZTQNMLKMQSXiљшмзегЪЩЬЯЪЧЮпєиЦлV`нvOLRa\W_ztdgbYUTUZZ[g§јщрнкаЭЮаЯйшяoZOZXTX_tужкбШЬлмжљ^_[VNPTYZ_њщсчтхэўnpsg`ep{яяі~№цє§ј}oњh\уоdoспџљэоиккЯЮпэюjXQOOPOOZ]`hўщфокжкощљqeYWX[_dwхлеаЬЩЬгжиыog]WVSV\^g{§{єyifg]^b^iяцэуйилддншшчfTkыcSZs\QTiјє~цбдфцлцdbrmdiњьыяуиежежтe^QHEEHIMUkсзЯШХФФЦШЭдмчud^[X\]\[YWXXNLNNJJOUZ^rпгЯЬФСТУЧЧСЩф~мыVMS^\TR_lXMQVNILTVR]ѓнквШТРУФХЫрpfTH@CHIHNlмгЮЩХХЬгзнћga\VRV_eckїшьјvweXTU[XU^~ђяхмеадцйШЯ|dє}[VbшиошгЩзs|юhRPXYPMQ\]\kуйопопњg[TOIGKVgњзЪФПОННОФЫЯлrYPLJFDGJKKOTXXUTX]_\]џомиЮЦТТУУПНТвщфњZMLQZVOPYUMKLNLJJOTX^|лбЭЩЦУФЩЭЮбцi]ZSNLO`{юузЮЮЯаЯгтq^VQMLLPWY^drњ}vkgvѕ|oќулссеЭЭбззЯдфф№h[VTTUQUbjaaijf]W[egelёпиздЭЪЪЬЮагнw^ZVLHIOWVVbъотхлгзцѕщц{`fўѓ|yьпсьєѕp`fh\Z\hq^dяпфђхбЯнёуго]TdљmYWoнфmbїрщti~ъюmh|ьш№њытпцьze_[TOLLPTST^sьхшйЯЮЮЬЩЩЪЭЮЮбксучn[Y[YNMPRNKLMRPP\]cn|ндйгЭЬЬаЯЭаоэойпvhњцzYW_bWMMPTOMR]kyy}ъниижаЮЮвзезкошяіtle]cb^]ZVUSRVYUR[krjoчкжйкбЭЮвбЬЭейлкчnoљoihbWOKKPOKKQ]`[^nэыэокгЯекждддийймцюяьu[\__SLNTSQU[^izюцчпкйощсйкпхщчшуммппмньrpџn[SVYTSV[]^cjtќўѕь№і№эыъёќўщптццпопуэёёыя{nk~љwklnnibfnmd_gjj_Z`b_akѕёічнеЯаааеккофыхрщѕџњ{kb^^ZQONQOMOQW[[c}яшулйижгЮЮдзжвипшьчўf_`da[ZY[]^_bqэяіэсмтыї№ё}ncehm{jhњщч~dkяћg_emppnўѕчллллйжзмъэцъѓqhrqf`_gi]Z\__\X]mxifuяыыыхспйжзксхклщ№љїќj]Z]`a][^imkkj|ї{stёххщыьхцѕяю№ђvv|§јўtwічх№јыуыўorts`Z\^\_jmoo~эссцскйнрсчсонншwgi_WUQPRRRUZ_kюся№олийфщнйпьёючыѓіэцунмцыяытіnbjєgY\[__YVTWYYZ[[dћѕњќюнйжевЮЮЯжнншznnkg^\fjc]`m§wdbrёћ{ќюэѕњјфэџяџј№ыыящюэѕvmihe`ahkme^j~ѕ}|ьппъэтимхопщєvkdb_[YY[ZZWVX_cmјяфзггбЮЪШЪЬЯЭЮильpm^ULHHGGEEIMORXYaќчплкбЬЭЮЭЫЪЭЯимнцјidc`_YTU]]W[^ftjfgg}іvrxыоптпивдкжаглпфчёohb^ZWVSOOTZ[UV]__\V[pяэшужЯЯбдаЯвимнпомоэќџіљf]cpf[YWXXWVX\]_^ai{љzzѓъццчнедезеееджеиохтсњ^Z[UNJFEHJKNNOYfxјьнаЬЫЭЬШХЧЫЭЭЮднщцяg^XYVLHIJKKKNSX[]jwёожбегЮЫЭезбЯвккимт{lx`XZXWQONMLMNRXWZhўњўхмйгедЯбЯбийикллнхцчјєюћwjpna\USTQPQSVWUWZZ\dlpѓяёрждзидЮЭЮгвЯЮгзмьќrjf\TWXYZQT]_c\Zbokl|эфяћwћяѕ}n|эцшђщойлррммпэў|qlhfa\]afeaeuјїљђыљ|}ќєіёъшччтнкоцъъяn^[aa[VQV^_YV]gf__nёщщпйгаааЮЯбавгзкопшuc`hfYPQUVPNOVXUV[anrn~іђю№ѕцноромйзйймптооуыячфѓwljnnb]aeha\_cgecdjvz{yўђэыёєэъяўzљэыэьфотыєыъю№ќќ{tpkc][Z[\_en|ћљњѓыфхчыэъъьэьыыььщэёя№ћwoica_ahjknpyћїњѕэшфхусптыіџyyxtnkliiijjihea__^_dkrќэхпппррптцьѕїљxxzјэъфтоклосьјwl`[YYXWWY\^bcbgq~њёэщцщѓћєяьщшфокййкклмцё|ne\WVXZ[[^gljomo}ј№яьцччщчщыяњy~іђя№ё№эь№іѕѓђ№њwvvr||{uoidcegggghifhkuютнлмопфшяўoige`\[ZZZ\]do|эумжбЮЭЪЩШЪЬЯжйхњi]WQMKJJIGGGHKOSX^hxщойдбЮЭЬЭЭЭЭЮаджимухь№ќoc^ZVVUVXXYYZ\^aelvћћ}vty{{јёђъуррппннпнижлцюѓѓr_XWXXVW]h}іђьцпноптчьіўwprnmmiea^^^_ciqyєъчутпопттцфхщэя№єє§unha_]\\\[\^dm{їєъупптфурпопсрптшьяѕ~xnfb``adhnolmmmjeb^^__]^_behnuђьъфпкзеггаЯЯвдедезмсьњsd[WUQOMLLKLNOTXYZ[^cmќыхпкжевааЯЮЮЮЭЮЯЯагжкуёo`XSQOMMLKKLMOTWZ^gp§юшрмкжжжеддзизззийклнуъѓ§yme]YWSNKJJMOOQTZ\_cj§щмзвЯЮЬЪШШШШЩЪЫЬЮдлшўk_YRMJGEDBBCDEFGJMR\jэкбЬЪШЧЦХХХХХХЦШЪЬЮазощ|_UOKGDBABCCCEHJMQW`tшлдЮЫЩШШЧЧЧШЫЭбинхяўsgb^[\^`a^][ZYYZ[]]\\]]``gmpzѕщуомлкиждгдггжлсыћnb\[ZZ[]_ejlnnnmoqt~ђэшснммпч№|ojda^\[[[[_dhlpuzњєэшццшфтпоолкиззкйкмопхэ§obZSOLKJIJLNQTX]gyэпйдаЮЭЭЬЫЫЭЭЭЯвинъ§od]WPMKKJJJKMNOTY_htќьтлжвЮЬЬЬЫЪЪЪЫЬЭбипђm]VPMLKKLLLMNOT[dpћюшупоолллййжеезйкмоппрчэ}mb\XSPPQRPPSTUVZ^gvђтлжбЯЮЭЭЮЯавгеймтыѕ{ohc^ZWVWVXXXYZZYXWWXY[]_dmўьпкздбаЯЮЯабвдзкмпсфэљymifb^ZVSSRRSVXXWXXY^esѕыуплзгЯЮЭЬЬЮбейпюrd\ZWUSRRSUX[]^_`demўѕѓюъцпнккйззедежилофяxi`\YVRQQRSV[^`hzэунйжежззкнотъјvljff_\YVTTVXXX[]_cmѕшпкздбЯЮЭЭЮЯавейнрчїna[VQONNMMMNORVYcpўєьхпнлйзжежйнуыђўxqnjhhhkns§ђђяыьюяѕћ§~yzќѓющшщюњrifd`_]]\^acfmv§яыщщфпоопннммнтчэќsnif_^^\\[[ZYY[]_dgmzўёщцпмидгвбаЮЯЯавдиотщїpb[TOLLKJIIJLMORUX\hnwіыскзвЯЮЬЪЩЩЪЪЫЬЮбекоцэ|oic[TOMLJJHHHHJKNSY]cl§цнзвЮЫЩЧЦХХЦШЫЮвкпшѕqe\UPNLIHFGIKMPU[bjwјэцпмибЯЮЭЮЮЮЯЯЯагжимфюxh^XQNMKKLLMOOSX\_erћытнкжаЮЭЬЭЮагзмрцъѓsje`]]]\ZZ[[]]]^_^^^__dhnwєътнлкзеддеезйкоухцъяєѓј~{via^[XURQONNMNQW\dsђщуомйзжедежзилнострпртухыэюїrg^ZWUTUWXY\^biot|ћ}wusngiklo{№щфпмйизжжийкоуъђњwojhecbca^]]`cbbfiiklko№ыупонмлйклнхяvmjijkjgc_\[ZXXY\`ivљэшцурпоомлллммкййизимпх№zl_ZXTQPONKLLLNOSW\cmњшойзгаЮЭЭЭЬЫЪЪЩЫЬЮгйпэnaYQMKHGEDDEFGILOT[`kіфйвЬЩЧХФУТТУФЧЫЮжп№n`ZUONLJJJIIJKKLMOQU[`kѕрибЭЫЩШЧЧЩЫЭвипьѓћqkgb]ZWVUSTUVZ]`hmyїъфооосфцфсрптхъэіvnieecdgikliea`_`dfity|}{§єычуолйжееежийморщєўsd][VQONMMNORUZ`jyячтомкйииздгбЯаЯагжкпы~m_ZVOMKJJJLNPU\mічнйззикмрфцэяёњ|sw{њяъфрпоптссфцчъюљzpjhc_]\ZZ[[\\]\\\]`fknsњяыщхуолзедгаЯЯбдинруъюѓwi^WQNLKJJIIKLOT[f}хмжЯЭЫЩЩЩЩЪЬЭЮбелтэxjhc^XTQNMLLKMMMNPSX\boяпйдЯЬЪШШШЩЫЬЯгзмшџi^WOLJHHJKNSZamючсомйийлотусппрушщщьяђќzwtvwqplfb_^[YYZ\\[^_cl{№ычспонлккздггддинуьџog\VQMKKKLNPU]nэозгаЮЭЮЮавеилфёvf^YVTUUUVWY[\]`fm|љяычтсппнккиждгжиклохю|lc]YSONLLKLNRX^hyђшокздвЯЮЮЯабвгггзлф№ra[TPNKIHIIJLNSY_lўьфлебЯЭЭЭЬЭЮЯвзлнпуъэёl`[YTPPPQSSWZ]djs|~}wtpmp{їяшурнлззззйлмоуъё{mf`___acdflm|ѕїљ{ywpqsow~{utxyўѓюьшщщъэюђљ|umjiknuќєыцттьњsja][XXY\_cgmyјырмеЯЮЬЫЫЬЭЯемшўi\UPMLKJKLLLNQY_iyіщтснлкйииждввввгеикнтъіxldb^[[\[[\\^`b_^]]]]^^^`deintxћытнижгЯЮЮЭЭЭЭЮЯдилрьyj`WSOMLJJIJLNPUY]bkw№хрнмлйййиййклммнмлмллммсщёќ~vmha\\ZXUTTTSSUX[_cir~ђьчспонлкииийкмпшэяёѕјљієѕќxnmmjge_``__```aeijhgfhmr}ћєюцойдбЮЯбеимтэћvjeb^[XWVWY[`efims{ўљєьфпнмнооомнноуыўnf^ZVROOOOPPSX^j§ъозбЮЬЪШЧШЩЩЬЮгкфѕn^VOKIHGFFGILPX_jtњьфнкйижедггддгеилннсшюєѕќrj_ZXTSRSSRPQSX[]bmњчмдЯЭЫЩЩЫЬЮвиохњkd^XSQONMLMMNQW\_f{ъсоиегаЮЭЬЭЯзоъћqlke___^_`a`cjllklnnkmot}јёьщшчусчъэяђюъыщюіњytlgb__`bdhnzљяъччъыя}xqomllls}є№я№јўxtuyћѓяяюъчтронмкклрцэ§k`\XURRRRRSUX\aenўяхоммноооороннмлотхщюљzrmnorpolgjilomlnnnuuw}§џљѕћћ}tmhc_acegihimnu§ѕыфпкздббвджймотшєsg^YXVWWY[_dddc`adglprxzџ}|ўјяшурполйкккйлоушыяј}}yqnf_]XVTSTVXY[_bdkzђчпкиийлмопрсфхттстусоноущјre]ZVQONNOPSWZ^beilpwќёьхтпрпмйдбаЯЭЬЬЮаекотхяwh^ZUOMKKJJJKNPSY]afpџєьтнйгЯЭЭЭЬЫЬЭЭЯгзмуїm_XQNLKKKJKKKLNSXaoёуиЯЬШЧЦЦЧШЩЪЫЭЮажошt_WMIECA@@@@ACFJOYgєнгЬШУПОНММНПТЦЪвнъw_WPLHECA@@@ABEGILQZiѓсиаЬЩЧХФУУФФЦЩЭгйпъўmd_[VRPONMNNOQTXZ^dpјьхпоммммннпрфщљrjdca`]\]^^bfkvѓъскжбЯЯЮЮЯЯагйфѓsf\VQOMLLNNPSWXY[]`gnўяфлздввгезжзиииззлмръђљwjc^ZWUSSTUUUXYZ\]afjsўючтомйздгддгдезйоъ§l_YUTUVX\_hnt{њљњіџy{spoolpopyќюыфокийилнорщэђzmliedba`_^\\YWY[_hoћърмооннпуцшъэяєњ}rmhba__bcffhluєшркдвбЯЮЯЯбдзмфяte^XSOMKHGFEFGILNU^m№сжЯЬЩШЧФУУУХЧЫЯеоэxg]WQQONMLLMNOSY`huэцсонллллнпуфшэіvkd_\[]__gox~њёьшхтнлноптщъьєњіііџvokihhe^]^^_bilpy§љ№ѓєюъччщьяєѓяђѓіќџџєюэъъчуфтрптэzjc^[XVTVXZ\]_gjpy}њёьшхтуфттуфутхчъъьюююэюьъчфтртсучъїxokjheb^ZURPOMMMNOQTZ`k§эснивЯЮЮЭЭЭЭЭЭЭЮЮЯексёo_YVRNMLMMMNOQTY_hpuџієэъфнйеваЯЮЯвелпыћ|qhdd_^[XUSQPRSW]dosњячомлкллоучъчщчччфупннорушъэьщьяђџl]XTNKIGFEFHLOW_qчкгЮЬЪЩШЧЦЦШЪЭвимрчюћoe^YWSQOOONNMLMORW\_k|ёумжбЮЬЫЩЩЩЫЭЮбйтюuf]WSOMLLLKLMNNQW]epњяцнигЮЭЬЪЪШШШШЩЫЭбиуўdXPMJHGEEEEFHJKPW^nѕчнзбЮЫЫЪЩЪЫЬЮЯбезлуыљtj_[YXVUTSSSTWY\_dfgilowyјътнлйиздгвввджкмрёvf]XTSRPNNNORUW[^bjkoџящпибЮЫЩЧЧЦХХЦШЪЮзфpZOKGDBBBBAEIIILNPYnпгазнйбЯЮЬШУРТЦЬЮЭЯгйооуњaVNLJHHGGGHHIJMR\jyэокжаЯЮЭЬЫЬЭЮглхщъюўj_^^^[\\c§n\SU\b^SVesюѓu|щзгдлхкбЮЮдикждкуљќъщќ_UOSVOKEBGKHDELVbl§ндбЯЫХРПСЦЧЧШЩЭгаепяo\ROOMMKIJHC?AEHMTeђэулбЯевЪХТУЧЪЬЮиуытииѓYSYYRF?LyWNK=ChвЫWQdЯщnйЬТШкмЮШЮнпдЦЩэXVmvXKGO[YXPNVc|nUKSђуlX[tлвмушкЪФЦЭЯЭЭЯуx~ћjVMM`oWE?MѕлќSTaсгф^Q]пЭЯђ^jмЭЯъ_^}лк|\oйбй{hьзкmWWnин_KJ[їќVNY^efjqяьlшеЯрXяУЙУM?YРЙЩdXћяdI?GReoijWMST[|юйЫХЯv]]юрѕciйвчl_lфпржЬЩмџізЮэZVлбU??ћкH89?Loхшлц[D;8;?H[mрклйкиЯТМОЧЫзЯФЦвј^mшыUFJX^XKEKTVOKO_ъпясЮЪЬжмЮЫдфшЭЫЯо\сcGмЭКЪ1()OКОбкЦСU/+2KЪППРУЯeGJћЩКЙЙКУкRB?HQdљурs^]ZSSuЯШЭљUcњ~WQ^ўтmOLVefa^kјіm\bјпллиЭЪЯнщздпчоЯжзяIsгЪСQ7.:зЧФЭзШаD0.7SвФХЫЮчVINgЪНММТЬшUIEKYvъчххxYR^ькзрхцћ_VZbpљљ{ja^dwїїљѕёёsd`fџшнклиоюўррљj§кnRјоЭЫd?8AbеМНЦЦЮkC;8=YаЧШЯё]ZVUjтдЪШЯяXLFHLOZkызЮЯжйжбаавббдктя|il~xl_VQOOMKKKLNOOQYdўриеаЯаЮЬЭЭЭЮЮЮвфынучщdNNUU]t_T\[S[d[[a[TWXT\|ымдаЮЩЦЧЧЪЯжмюgYQMLJLOU^pюсигдаЯзпцѓzqcYVWVWZ[]ba[[[\^cnzяцолибЮЬЫЩЩЪЫатрйфќnTGINMXt`W^ZP\k^cn[QSON[sїогбЮШЧЧХЧЪЮешm^PLLLMRZbќуивЯЯЯбзпіhZTPOONOSX\_cdgjmop~іъоидгбвгЭШЦЧЩЯкшэъєfUJ@>AEKYYSUWVbюцррїhjoyуебЭЩЧЦХЦШЪЬдр{ZKEA@@ACFNXfћрдЭЫЭЮЯейпчъъђslkoџёяья|rg^YZ\^a``cchxэфннъm{нощхіXT\[vбЯмилѕтгдбвъaYOLQY]krlo|љьшюѕze]ULIJLPZeёиЭЪЧТПНМОСШЯкыk^WNJEA@@ACEEFHILQXhълдЭШУСПНМНПСЪЬШЭсvXD?A?CQRLNJEKW]yфюtlacљтйЯЬЪЩЩЪЫЮЯвлъnUJGFFHJMVeiqзЫЫЬЭЩХЧЯйзжсza[SOPSUTOLJGFEEJU^\]{иЫФСОММНХЭЧСУЩе_HC>?MhќьyRF@==BIShысммйзЯЩФРПТЩдыfXNHFKR^qўѕфнрснммймчэјqmnp|ђьњma[^_\YVUVWYcўхррмкжгвжмэњьcVёлззіLBCEUаРОПЫsOHDIUgцдбзуuegќрдЯефmXNMLGEIVёлжегЭЪЫЬЭгйнфьяўkifekj`[[]abYONPTUV^ovmjyтйвЯаЬЬвсc]иШЦЪмUFBCUЯПНТаeJB>>FSявЮжі\TVbщзббнv[NJLNLQmсгЮЯЭЩЧШШЫЯкпопх{_USWZYSNKMPRQONR[ctштнзебЭЦУХШЭисхrS[одйђQD@?>KюЯЪЭсaPGDIV~кЯЭЭайфыпдЮЭЮйѕ\OLKIINWbwіпжаЮЮЮЯвзкккош{_\]__\XSRQOOQSX[_dekћсклфіфбЫЫбйнонотфвШЩд|RMSVZerlfaXNJFEINVbtњъпкгЮЪЩЩЬЯифz__jjlgcdgl§цнмокйжйтъыьp_\\^ZVUUVUQMNS[gk_]tфккпйЮЭЯЯааЮаезншщфэђњupdbc^ZSPOONNQTTY`a`ch`^nялгевЯЭЭЯЭЬЭЮЯЯбзцwc\^`]WOPW\WQOU`a_oncbfwяэ|oщооклнпцркдзхёїђїukchotѓua[_glm]^xјљogzў|mvыфхэььіёрлнрхойуѓ~|oga_d[[^\WRWX\`[rхьљэжЬЮлйЯЭвлмййуyhhha^^Z]ZUUSX^beaaimomnњсфычрочє§іщнмнккйжкьї~~sfd]XVX\[WUZv}zюшчсмлмммнноь~|}whfefmy|igv|rligehgkyyoo§є|qќчпушомпшшпоохюэ}pj`]XY__ZUV\bipіъъъъшпмккззмнорпщяњ|sg_^_[Y[\adagkomgfx§љљ~эучшщцръѕэцхчьчфопытофшјyuf_[WWXX[ZY\\ail{№тоорфсйньчоикшёulhjmh_[Y^c_ehlљяърппмкзжилусопь|sp}џe]YX\[VQOPPPUYX_n|іфливбааЯЯЯбекмтщёљ{xvfoyli^\[\]`aZ\^i}ќyxјэђyngcejn|z~ъмийкилрчяјѓѕwtkghnod_jrє§jz№яѕќёѕљі§ьщљўёыёяъѓѓяюђnecca^]`i~{lmxяђpjl{і~ёёъсчурцььуущхяєzpslkejoilt~џlccjnl^^jmfdjўќzєшнлкжеЯЮЮЮЯгмфяxq\VXVVQMNRTTSVY\__mnqіъфпмезздибЭзплжзмёlйЭdEGlгщRKOb\LJLNWяймэўпЮЬЯллвжть№хш§yьы_PWћўWPhх`Qfw_QTњйщgхЯеыlшакљњьњ№дйw]V^wяэxa\tяукьk|§tm~k\eceэксeU]уЯгїQQwйхgVLYдЪл^N_ЬФжiaэаЪафk_og][bfOJVёпhNOaужу`YgиЮцхбиe_аЩи{U\пйлђ\PTэЭвuUPiдиeFD]}ahш{U\нЬбњxнмn§ЪЬZJ[ЯЬ_EMpжйvllъжюgѓчя]dйЭеeOvЫвjV^цжоZISi~{cOHOёлfIEoЫдcZцЮЭббЮЬЮебЭЬЯыtќэъrNGHNZOHIJMV_ecp{эвЮншзЮаейейфнжмјgnямп]LNdѓdMEMlYO_ѓтппгалоквбжпєцддф]P^окU@DZё_NVzkLIhбеђъЯЩЯзвалшйан]SdѕmYVaэлх`T_пиlNU|mLBIX\ZuжЮвгЬЦХЩЬЯзокзўOJPQKJQjrNCZШЩZFUјXFUаСТУЛКЩэъцXCEYnZYпоеЩЪйштщWA<<<76FC>=@VкеђцЩРЦЬЩОМФотаЮхlзаф]ZsљZGBHNH@APuќXIhНПWKдЧќADдГДЮЬДЗr<=JPHE[ЯХдщдЫгёkjbdXE=@C??BOыи{ъХОЦЭХННЧгЭЩзmlтнx[^qaOMOND>AGECH[пэIGЧКоSеШд]RйЖДХТБЖчGISMDFpЮе~ывн\RZeUDDMF::@FEKjаШЭЬПМСХНЛПЩЫЩЯџ^~чdRV\OB?HLE>?FJHIWэлзЬнвЗКЬХСЯъ~ѕбПХЭПРpGC@95:ENLSёимылЭЯмцсмrLL\\NSуЬЪвЮТПЪгЭЫжяmcXLKQRMOZ^VLKYcOMZb][sпдЭЫЫЩрЮКЦкЭмeVV\ьзсвЧоLGG>:;GZ]cеЦЧЫШСРЧЭЯкoZOC>ADEJ\пжмгЫЬифооw^h§g_sцппптчьh]qqWU]TVgghћпжзbPФУdтфYQNNfвЯЭОПоniNC@GW_]чЪЮЭЧХФЧЪЭл`LI?66;=?DDKdcjиЯЮШЦЦЦЬйы[GBEDAL^чЮЭШСУШЩЬеп§]SNJJLNWZ^vo]Yd№љhmєцќpъиЬЪлeсЗЭQЦеKPSOZ§щЯХЭлшjNHADJII]єyмЮЫЦФУУЫнnYI>9:=>FVђЭЦУОМНРХЪдщn[YRRY^ewm|ёo^[]_TNNMOOP^ђжфOЬЛыЭХoњу_yжйЮРЦЫЮхk\LGLJFMWVhхлЮЩШХЩдєWKD;69<>EW№ЯЦТОМОСУШЯещ§џe]ky§яьэђmWUYOGFFHFHSfі_{МУкОФсиюmйоџЯХаийшlUJMMDDNQO_ыкЯЭШСЦЮвп\LFB=;=CLRhзЧПООЛЛПЧЭйыdVQLNOPW_glh[[]VTOQQNOR\h~фиЭЩЧЧХФШЬадилухппуѕug^WQPNNNMMNOOOQRUZ^g{ячмжвЯЭЬЬЭЯаенппьєѓєіўtzyuxyokh][YWUVVWYYZ\]\`ho{јэччцрнлзгаЮЭЫЪЬЮгзншi_YVSRPOOQTUUX\[^`bfikuяцойзиййнотыъъюё№яюѕќћљ}xvkiihlihotuxє№їљџћ~rqvsptztqџ§~ј№эээыэєѕџrqos{ўљёьцуоммосты|okd_`OWЧh46>HEIgдгтиШЧгюъъ[HGLQW]fќбЪЫШФФСШйчъo^TY`[STZ_ZS[`daRO\XLOтб№ікаЫвЫЛШ]УКЧЮL:DL@JЪМФЧЭdC:228=PиЪШТХЩЯоокжевбзцўm^RO]pXUэЯЬЭЯгЮнZLPNEBKeёpiцрoVU\c][qмйспвЮЭЫЭЯиеззЭЩяAlОЯOC;35F}ЮПЙИКФоe]_fёмбвр`LC>=?GHJkЯЪЭЭЧУЬzjнисюфЯЩаппы[MNMMVdf_ZUVRLIUчмvrхзЬЬШгUЫЕЙеO>C^OLЦЏЕЩz?5314EиПЛСзwXKGNnЮПНТЫн`LA=BUm^kаФХз§кШвXPѕЬЬљZ}жнdTVgkSLUqьшkW[ZVX]XkЭФЯrйЧТбPAрМЧZBBOuOGЯДИЯ]D>A>>SЮОМТељla[fуЭХЦбћWJB>=DONL`лйуtќаЭѓ[юЯЩЬзнжбзййклтќignxw^UNGELTVZ§ежqNWтбЯъNKЬЛФyHKwй_SЧЕЗЦpIBFADWнЧХвhPMLMThлЭбуy^PIIKMWўмбЫЪЬЫЧЫжкмвЩЩпX`щрoONTWKBFOUPMOTVUU]qшЮФХЯйаЩРТЮжrяОКЯD=Pэm>=оНХW=<@A:=MоЧЧдцтнцэнЭСМПШзяxYGAL_wwfyкнbT_чоveyцъlb|ежfS_яюdYlим_Scюќ][щгы[xЯШЯьkVьФЬ[FTьщTDєЙЛцRѕшP<9MиЯъќлвчQHUѕмлжЯбпt^JCNcl`nмЩШтoтаЮитуждпрпщ~nd`[OKSb[QTanZJKfюnRT№дЮЮШз^ЭКУWKцШаHFУЏН_iЯх@2:]њOOшгћGF\ќ][кЦЫјbчсQ@MяњY]нЦЩщцЦУдхйЭд}xкгюaik^RMOUNLT[YSX_`_jѓ№ячнЭУУгgлОЩXMkлїGFпТаbчаsDLйlVvЮчOњkZўmUёЩќP~ёmuяппапянцzяљююяэ}nj^X\[\bedgnuorѓѓьфщьэышшщљьюэъzњ~ъуьпнтхрэѕщnodZcXX\TZUO[ZY^iљяђънзонммглкгкйкхом№щцqefkb]\]beZS[\W[Yeыцћ§ћfwlwсэуздзфсжеумлссoўџn_V\b[PSXWUOVZYrunщжелнйаекйкйрѓщь~ћшэшыљјopmmecheZSUYUW^dhclѓюѕшиеюmяощooшр№ўяхмѓsьпщxымо№ќяtZ_тзш[YєyUN]№gVbђi[\]rёwdыгшaыЬгjzвЯуыздїlпйяpсбзkYhљYKO`bRMRRMLPX\oog`јйзибЫЩЪЯдбШУгsаОвMLSeн_IVфM:XпI@сЪ`Zяпх[O\хqHSижkєЫЦжэткЮЯлєоЬаoKLtwQI\очxіпьkzќzqщешdnykшдоrhPEOanэOKЩКm9GзюC>шДЖкдДИV8Dђ\B\РОнcъсUERдЭыoпц[KEGMJEKfњv|щдЩЬжиЭЭпыжЭжьлЭиpb№мhMMkмnHKanJEWN}МЧ[NчсH?HйГЕЪШНв<0;IO\оРОЮg\oaWъЪТЦЩЮќPEBHE@Glхq§йЮЬЮеижвгезжиоq]as]PP\PHK[v`MO`k_hXUУЗбMцЦѓBEхВЎЦиНЦA/8JKKlЬЦнQMYZO^ЮСФЫЯвоYBAT~]SmЮЩоZxЪЫm^нЭп_fукjSgyWLQi`MNfсц]Vkp`hыщ[гИНkTмиK=JХЏНьЮТf62BYhєЮРЧuO[m_eлЦСЫлѓdMBCDCOnv\^шкшiuеЫкџнЪЭрюеЭкo`}іaZe{lRP_m`NOd^WрхcЭУм\d^FG^зЖВУЬЧљ;3?WэгЫРТмSKW_dфЮХЪнeOIC??EOuђfhщепpоЫЦбѓмЬЮьuдЭсllяiOO_ђfQV\_]OLWњњiѕЮЮkнХЧкaQQdэхПЕРйїWA9H}Яббвя[KLaтзЯЩЧзeJGLF@LђнpZjлиk[дПУйуЬУЮm}ЭЪьTVёыUITmYJIOOJNZ[OM^зЯњ№нйРНЭblдбсiзЖВУn`ђT=:IчкiWTWMDFTькжабф^OSWRO\пгфirкЯжпзЩЧвцьибнzzтю]SV[XSYnmSMTbh[Wwикl^цЯыоЬЫЯђ[M^uxЯТРШп`I?>CVrмгнљfY_nрЯЦТХЫпbUNNKHNWhaSQ]ћsmѕнвиоигвкмигицццъќg]^feYSRZ\TOOgтјbjёdщЩШЯј_dђ~_гМЙПйfQF?>Ikлзяe_XXT^чЮЩЯжшm]NHHM[ќёhfьоорпдЬЪЬЬЭвкпплсяphh]XPNNMKJLNLHKX]alъйжшrдПЛУкyиЪацеНЗНмTNKB;>MnrPJJMNLUђЯЪЩЬгйщt`TT_ёщїічзйэ|sђь№§щпшяr|№є|vљяњmcdddZU[a^XZg§є{§огдконмзилкчџiehћтмедйшaRMMQ[hjvoe_`elћътуъ}jc\XVVX^gvічоивааЮЬЭЮЯЯдзныљwidc_[WQMKIJJKLMPV\f|щмдаЯЭЬЬЭЬЬЭЮвзншђ§ywrqqh_ZWTRRTWZ^^]]dkknv}yz}ќіэцххцххфупппппоонллмпцшюњuke\ZXVVVWXZZXXWY^hzїфнлйикмкйкмнллоушэяј}uohfhklkmnmhbbggffikkknplifglpzєщъъь№ээышустфффттфупрсуъђ}j`^[YXYY[[ZYZ^bivюцплзеддезмотэѕ~vmfa`achlmlkiihhjmnqusppv|їэщхцчхцъшъъшшэіxjfghjlpsqkfinorќђысппонмпхъыёљyuod^[YXWWXY[]do{іъсокизжзилпцяі~vrpxvtmlkiihikmnmklmo{~§ќјђѕy{xvx}§џќѕяюьюяяё№ћќієюыъъыэьяѓљ§wojf_\\_cchmopsќѓъспонмклнпшѓќsg`^ZXWVXXX[^_djnўѓшнйзедгдзлоптуцчщъюіxld_\[]^^acbdgilspoonmmnopwћ№№№юэьюёёя№ёюъъшчфпронннсхшѓvojd^]]\[ZWXZ[^dnўящччщъэя№ющуртстчюјћќypnmkkkmr|ѓюыюяышшыюњvka^^^^agmwўѕђэщщхчыэььюєіњ§ќzxtnjfccacgnwљяыцсстфцъѓљћ}|usuuxuuz}љяъчцчъья§yojf`^^____`__`ehmyіыцупнллмлкллллотхя~roojf`][[[\][]^^aelvџєьтомннмноппуьј~oiea`__^^`dfinpwїючрнлкиевбгджлс№yj_[URONNOOQTW[^flozѕьцтоомккййклллмопртфчюћyplhd_]\[\\[_cgijrўѕёяьъыюяѕ|qmnlkkqџѕэьщурнкиедейпыrf^YXUUVVVXYYZ\_bfkty№щумкздваЯаббгеимръѕsf`^\]ZWVTRRSSUWXZY[aekwјыурнйиегбЯЯагезкоуэњvha^[VUUVYZ^hnxўіѓѓњ~tmmmmpusvwuqons{ўњєющуспммллкйморспуцшьљўyog_[WTRPNNNNOOPSX^gxэтмжвЯЮЮЬЬЬЭЮаейлпшюя§onieb__\XVSPONOOPRUY^dl|№чпйдбЯЮЮЮЮЮЮЯЯгзкмуьўk]VPMKJJIJJKLNSY_iyьрйдаЭЬЪЪЪЪЫЫЬЮаейнчѓo_YTOLKKJJJJKMOSX^jzђумиегаЮЬЫЪЪЬЭЯбелсюyf[TROLJIIJKNQZeuюфнкижзииыйПuFлтЮЬUщеxјYёеVXрвнFdЧOU>NЫ\я[њЬHTUZљEчкыЮiаЭ~аоЮЬщатамVwdkfOlzнmyмlщ\O`HOMNKOkmть~аЯтяЪЪЬзяЪЩб\щгќiSwйrWWџ\SNJtYGQamOSфтвzfЯЪйVоЪЮиъвХдUhЬђ`S\вwKOкfORWчnO_яјWќй§~gсЯѓUїЪйbmмбч\~ЭаmcлгnNYїtNHUp[JN~чh]ћймыфжбжоеЫЯмкЮгц~џосl[g~]SVTOIFJKFCNbdY]хдкпбЩЧЪЮЪХЪгаЫЭзщхоёc[cbTLPWPJIPVNJP_aXYuя~uцежмзЪХЭиаШШжозвоo_a^QOOOONSZXSTlќmjwэфѓrєпоћpоайѓѕкипяыдЯйьнапgbuoZXYQMLNZ]VZэлюuъзгпpfsfQKMU\buнЭЧФСССПУЩвпьvXJ>?SM@KMIHIJTјidйЧЮткдЯапшндпєэмбЯаЮШХЪдмпpM><>=96:AIJQюЭФТОКЖЗМТХЩдwTTVNH@BHJJKOU\_YTxгдвавЭЧЩЭЦСССТЪиуiVKC?>><<AIR_ілЭХРОНООПФЫанџ[MFEEBCDIKKVcќо№ikцйзлщтвЮжрѕќшт№megntliuылдббЭЩЮйёrvnWJGGKKIJSiцйЯЬЧТТХЩЮйщv_WLD?@BB@AEKO`ћйЯгебЪЦУУЦФСТЧЭзноъlYOJIHFFGKS^hyъсуяlckkbYTU[bhqызЭШХТПППСФЩанћaVLD?=>?@CGJNa№нйъzызвдллгЭЮжтџxўo^YUW\ej~ынгЮЪЧЦЩЬепєhXNHDCBACHO]yреЫЦФУФФЧЬжпьv\MDACFHIKM]щжЭЯмлЮШЩЭедЭЬгъ\SUSMHDDGJKLR`ьдЬЧУТТХЬвирw^PKHHGGLVkълбЪЦТСТХШЭгнћ^OHEFGEEJNOWgхемxjѓомчorхлншqjњьћi\]iooqzђнбЫЧХШЪЮжнѕbTKEB@??@FQcэйЭЦПНННООСЫлэrZI?>?DDDGM]щкжйхющьљ§moьшћl_^msnmiflqroўыйЮЪФРТЧЫЯгкє]OIGD@?CJVf{угЬЧХЧЩЬбнѕaUNKIHIKMQ[tукзеЯЭЭЮвнщ{f]ZWSRPTYXZ\dірфї{ўёіwёиЬЧФУТРРЦЮнќk]OF?=<<=?EN^ыжЭЩЦФТТФШЫЭдйшs_YUOJGEDDDDDEGKSZhяндЯЫЦСППОППРТХШЭихpYNIGECBBEHNQUY_luіысоонидгдгаЯвежкмфёћoe]UQONMLLMNPRW^juџюцпйжжегбввгвЯагезкпъѓћzlf^YTOMKLMOQUZamљъойебЯадежимфъѓ}mea`_][Y[aaaefjkfkov}unxњљ§~њєщфрнмлкллмптфхчьюїўtoommkha]\YYYZ\_^al}іяцоклмммпщшчюѓxmhd_]___cfmr}№ѓѓьщьѕэшцъяяьцчъщчшя§zќ~§thknmmikrx~kdcb_ZY]hmlnыпрупйезймонпьѓѕwmlh`_]^_bd_evыјo{ючэ§§ішмэbmкепяуаЯюURgј`T\яфw^]hyo]WW\]XY_ggafћфлкзбЮЭЯЯЮЯдййкнтфхстцюіѓl]ZZSLKLNLJJKOSTW^q}wјмемхлбдновЬЫЯвабл№ёц№iankabnt`VON]љlVMPgџbZzгЬеьсагѕ`iьрјoыиглфнвбмъїpZIAEIE=>ED?ANpьњякЮаньяxXG?===?GW}пЬПНРТОЙЙПЩСМЧpViцeIGYbJ=>GH?=HXPHOџёbhдРФдиХОЧуоЫЫншннURУЙЫL@юЬO8=ЬЛЬXXйш>02?JD@TЭФЯлЮФТЮзЭХЭъnўђhORoп`ѕгЭЮжЮШЦвѕpeZQOPTRQPOMNNKIGKQOP]ыизсуЭЦШЧХФТСФЮйззЭаэ№}Nkб|H==XљA6FЭХшKLьx=6?[штоЫМЛУЬЬШХЭеЯЩЯцc\SF=KsэhlоЯзљzзХЫлзЭЪеxfкЬс\pсъ\LUыvIE[nTJJeрcNљЫЮпьфпщэйЫЭжевЮйmhжЭу_]fнйdNQMDBHJQcїіiVXrdM^бЦЯюмЦХцbкЧЪнызЩбcaурS>?RэbJUйЯjM]еЫоhьво_fшщј\XkhTS_\T\_ekgmхвЯавеЯЪЪайжгдпblщmRILScfLKPNM^aqqXыТШQC|ЦХс]ЬЛЧQQвЧсOTкзRHYуп]OeьYFQэлшoцбз_NWnэцымЭЬЯкюялйљkўнгzNTiRCBFNQIKkђZV{медвЩУЦЬЯЫФТФЦЫаеюSNXZYRKHI?9ATOUUUіхMIсЯжЬбЮЦЮѓщЫЭдЬЫЮ~OnЯмNK~ЯкI>UйzIJoжкoєвжьпбгqUtвзWJdліJ@PмтKDaгм\VёЭаd]нжt]ъЯаџbрЯлgvЯЧвyяаЯuUўЮд_LQvђTH[нyG?MшуK@_жjGMёлjmЪОШbcФИЦ_ъЛЖЫMJягV>E|яI>DZ^KJ_йоbkзЮжпзЯЮрbjнкыѕў№съ^X_hvёљљc\ызќ[Zdяфj]ќоїrh\fтоr`hщйђW[хдпiZjьwiјпкпрсэўьмтїължкx_ѕф[Oat_iYNNUNPXT[юп{dhјкЯоьиЮЮвпмЬЩеыпкс~lћъtUPRMJIKLJL^яoPUхЬЭомШТЫзЯУПЫтлбкcUUOMLJGDA@EJILdяњіцснвЭЩЧЪЩФУШЭЯЫЩЭпшюbROQQOMIHJJKGELVZUR_ўј}ѕмЫХШЫЪЧХЧЫЪХТШеыihq\OORPMGACJIHMUYXUXc}оЮЩЬвЯЧЧЯиЯЦЦЮчtђчјqўіo_VPPONLOQQQOOX`crьмеддбЫШЩЯлмеврna§им]O[ьїXLTъшZORZ[NJQdjfcj~млиегаЭЭежгезилйинфтэmZWWVPLKKJIMTZSUpжгы§кЪШжцеШЪсyюмэ_\{тє[Uco_YayћbX_яэjfюййшётилшѓьрх§jedfa[XZ]a^Y\itv~ыпмккжейоцьщщяvh_\[[^cghjim|ќўљшонпысижзмйжкх|ung]Y[[ZVSUXYVVWZZ[dvюцсонмноомлллижжежззилмуя{lb[UPNMMMOSVY]aixљэьщхтпкзззззйкмпхюїќ}ojf^YSPORUVYY]hxћ№цолкйзеееждеезймсъёucZTQOOOPRUVV[_fkoњыплждввгджзлпшїukb\ZYYZ\_ejs|ќѕі}yw{џњљїўz|џѕіђюђъхрооосхшшыяќzxql`_```fkmmjgc__^_cfmw§яъчтппонстсуффххчыяёћvmjjgfegghmq{ќїьъщэџqje`eijmnpnluz{џ|ustwњящфппрппооммлкосщэќmklgda_][XUTTRQSSUX[^fuєхмздаЭЭЭЭЬЬЭЮбжлть|keca\Y[[YYWTRSRRPPQPPRSV[duымгЬШХУТТССУХЧЬЯирѕeWNJFDCBCCBBDFIMS]nяожЮЪШЦФУУТУФХШЮвЯлhTNKLLHFHFA?ACIUfіпйигЭЩЦФУХШЬбзлммпыu`XOLKIIKLNPQVZbvылзгаЯЮЬЫЫЬЮдм№la\WTTSRRUW[]`ed`^\^h|ёшнйдбЯЮЯЮЯагиохщэіuf]ZXRNMMNOQSV[_aitљшплжбааЮЬЭЭЮадзклтяvf^WQMKJIHIJJKKNSX_i}щпигЯЬЩЦХФФФФФЦЩЬвйрѕn^WRMJGEDCCB?FJCGENa_rєзЯдаЬЧФУРОМОРХЫалэql`]XTSPNLLLLMLLLLMMOTZ_ckњукдЯЫШХХЦХЦЩЬЮбгзмоцђp_VPLGB@@AABDHJMS[gїрзЯЬШФСРПРСФЦШЪЭЯдлфџbXOJFC??>>>?@AEHNZnуеЭЧУРПООООООРУЧЬехnZOJEB@@??@BCFIKMSZjїузЮЪЧХХФХХФХЧЩЬажнъ{eZSMIFFFGGHJLNORZcsёфйбЯЬЫЪЩЩЪЫЫЬЮгйош§k`ZXTRPNOOOPRVXZ^`fmxіююьцомммлизииклоуъяїџќzvpnlljfgedfijkkjgfffjlxє№эщцсрпрфцяљyrngils}ўїёьщцфууфцьяє§uj`_^[XZVQlZ_dZўѓorясзпъмзйлшслсъщфорѓчфуцќxљ|qjhpob]\\^YUZ]]ZWX]^]^doїэшплклнйгбЯавгжийкмсѕyohb^\[[ZYXXYYYZ[ZYY[^ejy№цнйиеаЯЮЮЮЯвеймујod\UONMLLLNOORW\esљъозбЯЬЪЩЩЩЪЫЭЯдинсюzkc]VOKIGEDDEGIKNS[doѕуиаЬШХТРРРСХШЫЮднщ{cYQLIGECCCCDEHKOV_pюмеЮЫЩЦУТССУФЧЪЮгиуїj\UOKHGFEEEFHIKMPV]fyъоиЯЭЫЩШШШЩЫЭЯвжймуэќoc[UOLKJJJJKMOSY^hўщмеЯЬЩШЦЦХХЧЪЬЯифyf\SOKHFECBBBBDGKR[jяозЮЫЩЦФТУУФЦШЩЪЭазоь}f[WROLKIHGHIKLMOSY]dksїъпнивЯЮЬЪЩЩЩЪЫЭЯгинсщћk]WQNLJGFFGHHJMQXavюркдЯЮЭЬЫЫЩЧШЩЪЬЯдмщq_YTQOOOONMLMMNSY_frєщсннмкизийклнннрчэ№ќ{vtvvѓяэыэюяяяђјymlhb^[XUSTTUUWZZ[[^`iќъсйгЮЫЩЧХХЧЩЬЯзощ|j_[WQNLIHGHJLNSX^gnќърлеЯЭЬЫЬЫЬЭЮбжмрц№|l_YTOONMMLKKKLLNPW]gvяпиЯЫШХФТТУФЦШЫЮднъ§ka^XRNLJHFEEDEFGJMPV_pљфзЯЬЩШЧЧШШШШЩЪЬЮгкт№sf^WOKHFEDEGILRY`nјхлеваЯЮЭЭЭЮбдезйнуьќulg^YUSONMNORVY\`jtїъхпмxpat2-1.07/lib/audio/giveup.au100644 146 144 55307 5400441430 14700 0ustar mbimathopt.snd ZЇ@ыы__пџЯячUыwпяїпgЧяяBпYля]w[уUcYkчгп]U[яеяkййџ_oїЯgгїSkеSckMїйыW_Kыечї]ычйлЩQпйн]NяLkнг]WЪSMџџcняYOcЬлIwЩчkU[яЬыеoпчїыяggзныїIgcн[cYяыgSџLoнч?_лйkзccчЯчџШїk]WуЭwЯc]YнеYLЫ]л[[Mg_ыЩWcOбgляХNпїW[џ_бйLJеыяQунйkуKCСї_ыwЭйKWWЦппNgяЯkwFчгЫKHWыОcччз>яЭязз[пDYYЬЬgkпHWб_яWЩыo__MЮgТч?нїOггS]ЫwяLУSябйMїРЫEkЮЫ[gлЩFUMйыgяFLгп>ЩNЧ>ФQпgлЪUйSчwoйwгwoMыHwQЩgЮЪбLХ]еcL@бпMЮя[QУk?UыМEIчЛ>HнїJУЩчcТгgQQчcлЧO>ЬЯE>oЧoеKяЫО]чыџЮЮуUJHУЫF;ФЗпЪA70ЙТб>wНзk:H;й_W9нЫИЪХЧЬЯЩйOwыЬуч_Q[Yo:ЖQJ.MОПW]cОнИ99Ocп;LwkХЫТCoпИТггнoYуWwїыч[KJckуSQUMџ_]OЫуwONпџчїйяYYУМЫЩЭРЩЭ[пЫяеLYYoSKMMQ@=KNGGS]FwузеЫЫгчеЬПЩЬШзЬЪЯыkлйoSIULS]LIkїWQ[W_ыwwїяпечччнggуwыџoUoяыokппйнwkoеЮйїпнянWYUww]SkcOLQoяkogWkcooыoйзпялнЭwїгзлййыыуны][goыwQ[QїgWQыcHOяняcgcCIKkЭгФЯелїUKџwлЮчЧпгwыoяЮгoїg]w>LС3G_ДЙc587ШMgЭКЌКD/*UООАГ<#UКЅМЫ556=2ПЫЙЅЧЛ2;27:ЧЭЕУЙw6/QЛЎАЗYВК!(@ЋЈХ/'1O7QпК ­Ю-1)пяЎСДC[:нЈЈO Y_ŸЬФ!0+е/ЎJЊ_o::EggGgSДЪЧ37йБГЃЉD#=ЕЌ­M4*>/7ыяЎВбK*5L;>бЋЊЎL/*йЅŸЏ"'OЂЃу-(4kY1ЦEЎA>,:wМ8пOЕен/ЪУ ­ОО,Э;ЃУЉ08'g6wйПБg5+38еСРПЬчGY@ЬМД /9.ГБО-%2[З>йЮЛЯ3.8СДНбEЪлЧ:чџЅОЂM)-џŸNIЫ-Џ%LЭЙ­/=.МUЎ9МBТKТ_ЙУНŸ1%LЛІ=Mo5ВODХ1Џ'I+ПYЊ<Ю2Ю5wЭЉЛŸ*"КГŸ?H5IГcб)Е(З 84ЧгЎBе6Q.FcЌІІ._ŸŸп+Т8Ѕ8Р1 OЗ 1M8МHЩ6g'S5лКЅ?'ыАŸЊ,[ЯчИ)ЕйЁ?ЧM8яїџ:7w*Ы(ЦЈЎoНŸЇя$Н3Ѕ99­ЈЈY6Н=лЯ=9g!C7KЃВDл Ѓ8 Й6ЈFйЌВЙ/НЕkkЫ2Lo6>]YІ9:ЗŸЁ:А-ІMQЈКЎ+Х ­ї?D+kуе,>ЋЌ#Aї  АДAЕГ/ДНЌпџ)+Ќ0й,U.У+;/ІK#LЄЂЈ(&К<ЅЛHЊЙЉ=]'МГг.F)О_.ОБ".бЏЃЋ _I-Є*YЋЖА1B.Ѓwп&Т-Н.AЎЫ!1ЙŸЈџ QПJЈ/ЋДУ;;YMЁЕ.-?6Э1ЩЏ-0ЯЌŸЪ ЗoКЈ'ЖЕ­?9A4ІТ]Kя,o/AЅЋ!=РЃбC!МУWз4нІ91GЎПНU&Ж7KHуŸЏ ПЬЏВ6$ЅяЕе#ЗИы-ЭLSІD;5'(ОЖЊBBЖЁW'ЌЖЕ:(НЕk0oЙЉЉК< U4ЈзОО(,КЁ­g3Њ+Г8Оч6*]ЌОАЦ-':їДЙГ0$;ЦЁЊ*)ЌSГ-Ъ9ГО*ФЗЯЏЕ0,@ДHЫНК-:бЃЄo8ЭЕЩCM.Л.IЌЫ-ЪL[*3чЙнШМ*ПОПЇЉ*AYзїЏ]ЬM8JЬЙЊ­J&).gГМЙ-)МLЎЄ=глGJNЧЧЪП62<ЖЉ­8$*МОГEЙз*=НФŸШ6%џЮ/лЦял1CBКЁн';;gЈM((МЛ;BЩЧOЧ37WСЃЄП=(M7wй­ЗЛ@%_МЕBw%kлМ<8ыЛКSg;яГЊбЊI&UМSЎ?E4ИПЗ; џЪч+6>ЕянЪКРыАБ:Ф8ЪИЩВЬ48DПБ:.%(ОЬыОЯIеWo­Џ-KеЙМЊО>Q[2CЧЛЊЛя&)DЬПУk1/FЖЅУg95џГСЎФЫ;&+ГЄВ<%2>okХЛI4-@ГЈЩг=[Й@­ЛБЏї*GВзЌ-/JJOЋй3c/3Фг8РХCM7:OЗЖЬ/IНКFG_СгG3Џ­ГЧ9/Нї<ЦНЫ34ТЛ8I=cЎО6П4_UQДОJФПoЫ6<ОФЭ>M5YДЧзчH1kЛЙ[B9ОязSЕї7ЛUГ5HKйЭСыJHDoHYМуBЩЖуе,1чОЋЯGПлwЖS+LйРЮТ=л1wыwг>ЭЉ[?5LлЏ9[Жн?г:ЮЎР/3wLКыQ<я3УКыKoUBФВc4ычЏЖйJGЩнН,cМЪч1IызуИ,w$ЕЕС6+КАВ;gGг­?0бШКЎ36уџВП+/АРС7(СCМM.НЗSг:0ФGчЉЪS7?нЏG:>нЇї@4лСЬS6їВКн.-WИЩAKgлПз8OMЯМИ?зчЎ8=уЏяЩL-О7ФЩFчШОїJ?уеЛ7лЦОЬ?г1BзБGФ9[б5_ч?ЖЛAеg_М8;лУЏЭNџуН_BЗгГы@oAУе)ЩkбОU9ХПч+,YЩЉIJ78ВСgМ>_Ћ>Я3пП@уMЭЖOХF:з0ЪДIЏcAЭыЕХ5kwЛР8ыBџo,ЯGDЋJIE;ЭcЭ;KК=Ю8ЙЌFТЫЧЭ<]ШНК.ОМ_М.Eїk­2;]Ъл5]cзА<<нHП_:owУеИLКC8kSТУQ@гЯUMбЙЙ?EчЏБ3W?Џ7:їШ[Ч*ЫЯEС5;ч5ЬKЩЖџЦ6нЮЩЕЗM=.РКЉ[W<]J:7М>ВЛчЗ7-8;бЬчЛЕЭ:;kя­йЛwЧО/ICgЌР?21>л,YыГЏЪ_c.џчUЈOЮ?еН­ИQ+Х@­gD2бFN:UwЏЯGЛ)г:пгЧ3ЛуЛ[,пNУыЅ­+oQчЋOLOHП,YCЭзчЕ:=JлОKЫОгUJ4ЬЧЋМ@,@ЪЈК@*2ЪЯ=@SЖЭLBHDМF7kMРЖHJЪАТЩйчЛџNГКGJы9UџЯЗЩ>Y4>4FЫУЭШkE]BКХСКеЫ-ШМГOCЏЛЪЩ/CFЅ@K4бБo-/Ня­2бOїU6Н8ooКЬOc]kЄу.џ;ЈКЭ2>JбЬ=ОK­7;=E?ТGйCOIQ?НcЌџ+ЕSЊР75L џы(уОw4*=ОЉФJ9б?B4=ККВ50ИЙЏг=Ы<БУТLФБ2Г(Ч!IйыYJIkЛKФЮХ'2ыЏЉЧ5ЪKБEwУЕОg2?;LgKИ1Ю87+ОЏ[ЩМЊЋЗ:ЪcПНяяЙЎgЗ.Y>/йС/>>#>-АД6%+їАИ7ЖбЈИLППІФМ3/Ћ<КB=?Ok?КY+:1ЄІ[8ы9?Х[ЂАн2<ЬУГ;зIУ_Ў+N:ЕЙ[#ЊKЅ;7o?­П9зkВU0)ЮKЏgџAпFO@ОГ,ЪЊWХk%Ј#KМ5ДбП_S_7лW?лКFШHUИU8уЕЋЄ/'Ÿ& .Љ<Ш]18ШЖN"я7їЏ/ЫЛ3*kЎЊЕQЪW(Ђ<ЇЉ#В=6ХKЗ@ЭIОW7 ;4еWОЛ9_ГШŸ1"ЏМЇЛ)&ЇoЭ7gGГЫЗ­+oCДВї$:ЛВc;лŸ'*ЎКЂЫ&) 3AЗ@Ј "#КнВКЯЎяй+<ЄЎ'Ф­.YЎBД<:ŸЙЩ8BЮŸФ*ЏŸC9/?ЅЮ'_ЄПDчŸ'0ЕHЅМ/3Е[АЏО3OШ)ЌМЫ>"KІД9џВ7(KU­Ÿ+2АŸЋ #ЖЉC7kРЖМ&­АБК,/7ЫЬЖNИїЩя:Ы -ЫПŸШ)KЎб2ЗLџг/+ыЊйИUg.зПЙВеGBИЩзКыџЎ7)ЦНЁЈC6:ЩWQБE.7WТЄФнBJ72ЫДОП=*YЖЙАЩ:(_ЬJЖФ1H8бАА?:=ЗС34КЕ­>2>ЧЏШ8I[Mc:oїКЋй-гЧЦЏW&зИСW-%­НТQ@UKФ.ЕОMS59ЮОПЬL6пЎВW=4NчkНТџС*SЌБ>Ш8=БгS9ЦEХk7зМЫОQOЛ).­зЛп3>КoУК!3ЯОПk<1CЬIЙОЦРХWQWИНEуХ6SчХЎЮ,)5JЦЫЌОK>*:СГчSWЭКСн8л[OA_АДМџ-+яЬЮЙН=0-еАБ23gNИлЬОД66/ыЊЏу-=JUEМЙMM;.ЬЏХФб)5яЧЕЕЙCJ5IООw3еcNКЗ?B@1ЦЋйяkH5;NGч­П<=џгП_е9йЪ>ПОлзя<гЛїMТХC2пcKЯN>ИИ7FW_ТЯoQЩ[гGл]wЫNуg_/_зЦРkF7S[УИ:;ЦяOТЩcQ[зЪнKBџппТОcJU5еЯп<ЩЦпСO=ЮбџkЬШХGчЗ>>FwСЕC8Ю?ЫFKSЭМkWk9Я[86ЎSеЯ[=ХУ9DяWуХY3Н9еQШSkчIяПЛQїLDЖзНGkыЫN9НcО6O=їЩЦЛK82џЩkUгябЪ;@IПЫыылЯЏ8=7ШШ­70пЫЩы)џЬпЧ3SДЏ;:ЏЏG3пЩКF=BнЖШу6cc[@DеgИШы?=]КПSяYОЧ-kУуoу2У]Щџ?бїпЬYNпMгЭkуыеНЩD:NДФUS;йя4K@СГЧ=NчџЬ0[ЯШИkџNНLgСТЭС_8лOй.чЧwШBJеТн;:kUНМ8Ю9ШЯгбУблW]яkУBKЩ>ЛOйг_w>>]cМЛDХЬЦй>HчЯПQуя;чQQ_AСЯHЯ>ЮgџW[Ц@ї[]ЦО[ФйwwDязЗIOїwЩo8kлЗз;SwО>Nг=ЗU@_їчЭDKЮDЯчkОы=wлQЦнGпЯЫWЭWХoWoпЛOЮUпN=гQџgABЬ=гЙ9kA_UЫДNгџїЫХчеФDЏМчoAнЧЙЮ>S[уУKLcSQпDлзП?Д1OJkлЦ;EТеЧ<пwлwIЎ8ынgЙПG_gЩ?HEMРoПн?_O_kWИЬуї9ЫЪЮЪуEgџСТџG7няHQcЩМMSLQеKу9_у]Э<џkП=л.ЈKД.LЮЙЌcЬwЧДOЊЭ,ПЯH)уЌЦМCQ*;РDЪЃK[LХ9гЌ=!>ЎЄ_6)4ЊЁ5/ЏЉХ#4НДЫBB-ЕЛы/CЛЯЬ5?КД4#ЯŸЏ;D67ЃМ4QcВ&&ЏЊИЬ1';пЛwТ1AЮШМNчЖ6GАŸ_Q2GЮ5 GГCS1EЌїЬc$ыOЛЃу1ЋЅпВЯ(+ЁЏФ­/]Щ6Ї1D_ЫF#9ГДЊЮ%KлЪВП:cЪЉП24МБИу&>ЊD07ЋБя"9Н8ХПяДc(BgнШЈog3;ЈПЏF:,ХЗпМнBБЪ4$+ЌŸО,.6КF_РЕS>З9/ЋЙЋo.&СИыЮйgДЛ'2РЊЯIB6ПЖ6@ЙК5WВн8o?ЫРнIџЫОНSЮ[g.0ЉТ:E>LЖАUgМY/GХЮТ?+DWЛЗU4EЉY1=ЎЗШ9?OИКИчA8cCgkЧПYеK-ЌЅ0.еЙГ?*>ЕО8ыыыЕМo,GгМSыGFТOКйBGпЖОМE9ЏФ)[йЌЅз-/.ЬОЦТР1*упЕбПР958яКЛЩW16ФОРЯМЯ:Q?ТЕяM8=ЖЊК)SМз94ЦИЕЪ/G]ОгябнLYI?HяЛФР>4ЯчЧЧЬЭYWбЮLХЬBПЮcW[ММ[>6яЮпйwoуQ?YгџQЯМПDЭ>FЛk@QїТШпI9нgoџЛcGШЯМQkSчХГЯ2я@їЗЩгAй>4wgЮЦСU=їQябСK6ХHџКDЩяеїoџ@џЦggYпICЧGгМлHЮNHgбџШUwLUууФSUЯХg;FЭЭgUINoШЯ[QяеI_НЭo>WТпLCMЯйЛgїWМяDk_kBггЦЩAнkяпcЬОkMЫB<пычлUCПQЮG=ЬбЩM]б0YС[7ТЭJе]gХЧJ5џпыЩн]UCBwНВяHFзФыYOзEХйNз[уйџыYkџыQHMЬЫЧ=B>чПС_KЬеШ>=џыЪФAUJСС>?РЛлS@AЫХЧC<ЫG_DСЩНнG=_л_ШЯКSYQcЬgзFЬЙNWcнлOwSFВkUMkoGЫAoLЬЩGпSJРлџDNЮЦ7MМчQС5>ЛЮН8ЯеUЫ[cЧ]уIйпЯяуЫUFSпПеYw?Ь=>ЪйЫыпSYWЮSCcЯО]џIнЪScзЭЦЫ;яуQUMЮJгеS[гMпoc]]Ќ6@kwЯMгЯчяw[ЦCc_]ЛMугЭЫ>ыUSwячџWЮбзoSSнYgЬяgNSoUџLїШг]UKїуLcШgoїJEШМЯяK]їgлнYYkяыЮQQЪгЭQSЯЬWFЯcwпkgџcнуIпEыЫMoТGLcMзШ]gUеAwЯыЮLйу_coеЧN>ФwчgYDзнUСEDJџЯ[Ч]џЫE_ЯЭgЫUEUЦЬЦпCHcЧџoлUїKЯїUF?гЭgNбЮЧJKwYзwЧQлCKяgЫыџяеC_ЭKлkЛYkoSLл[ЯКЮуJялбЧ[MSOЬowU[CЯgџFзлФџDQKуЦQ>ЦcпcwыgЧ_ШчJняЭПWчokO[ХM[WнлI[QQпUйуны@лСзЮн_kчџСеcKчwCIгТХW:чзпы5?_чгзCџыгнйFчwыУМЪCQgџйЯуЩб_=6HMkуwџЭwcџoЧСџыйгGY[зџSCWЭпcб7<бMеыЩФЦџ7BЫoЫww_]ул9gТбпГ=H[@ЯЮйЩYуQELбїџ?НFїFkуЛЗПgЮ_ЫїJ?яЬгYANLеїKoлпнч.6ЇUШЎ%+ЌЏЩ[<Мџ>BMЧДУ[K]РЯSwеШЪ_NLыYQOOыџOїз?WЖ=НE%FŸГ<лW,гЌ<ЧыпЛ[HW6ЧgЗЫc5уMJkгГ[-& ­уџ:9@ЛЋQ=ЎЊC,џгЪЗе/[kлCEoЦH2AАН__?@яйLIКwїнА4#МŸб&gОяLЛїQЪИШ]1ГыN0Іg1A4ФЧпХ04нГW.MЌ['kЉЉ4"BЈЉL/WEgБЪ:QЉЊ+gЋМDO?DEШПЬуЖ_0>ЉЎc<4лMОЏ7н>,9ЏЅА '4ХЭПЇя+уHJзНІя),М?йВKЦNзЦMЬпg3WЙЦуч.АЉ$.ЌРНпN=>gГЏgHЫ:c=BLЌЕџ>';HлЕПНТ.8UЛgеШгу5СМПoн76ЉЬ5ВНзАг*)g­Єл1'ЗЭ?ЩХQ9бШ;[гЗПM@еКАу99AїйОеСы_Q9Ь­я;яSКc53ОЕ?gнSЪїЩлoУПU5[JЮїлШgwHп_oлSчЛAG_йЗЫIYGUЬзcЩы9OwЧЪOнџcDcЫгпуg=]kЬязЬ=WcЬНШGN>cЗД>UШчDBKОНИoBI[ыЯпЧcMcINQызЪпWIOЧWџkїТї[WgOзџWпwяяыIUcoыЫ[kгO?чЛбcMOппїcNчНQ]нПOgLЮыпЬYk_їыOеЫпч?QяNулїЪWEїуQЯя8?гСoKMDSUUЫХЬkїwеOзгcФОг[KбПнC?MЬяџЯ[kckCBнQ]ХРЫIB<ЩЯEяџЫЩo_AнуйенШFу8DЕуEISч[OяНЦ?WMCнНгDїыџUбЛFgчыллЫ]MNWннwыYыAHЩпОуIoїбЦИ?[g?Улїo]я;IнSйЭчHJйџїуYHoеџШлoыYчпocуеWgwуcHЩч[wзMзQkwязун]wџJkЧЩwHЬЪHEџЭ]їUMkwЮЧQFc[чнЯы[ыwбNO_OеХЮЯыялg]>з[пЩWн?_уNзcзЪџg[пяOупФYAйяуУMWOЫYAлMїЫыQ=гo[чHбКYL?чwгЮуwk?ooЫЯWWїЩзяQQ_ЮяOягkSыїkЪYйOkYыбЫcпIJунгMoзџ]FUQgЭMQowОSJSЧЬїKYеЪуїLйїOLннЯгgN_ЪUйяwУWUGейUг]ыу_[ууwowMЯбIе]J_ЮwMџчзMї_WШЬг[WїбkLЫыMзM?ЯoЬSSняеї]ЫулDoлнпWеяI__ЬбHY_йSSЬџokбеoучыQNїЪеoKџШFwызйпыEgNџYїwgпkMwUWй_пQОлCеWен]ЪлябcЭYIчQгыMлkЯUOуM[SчгOгЮче]cwgџзлgwNQыo_[ЭЭOcUkЫwkйkwуџK_НЯчUKп_kзнcSлgџыHпйЮнJkїыSчй]gkggJуЭ[пQOЯYkзSQя_cЬчу]ыgUчыййW_w]kчwгLяwнлU_їЫ[ыыWo]ЫыgяWпNSнбяџы[QзйбйыYcчг_зgkUcЪQ_KoЯџ_ыпЩїI][яычw]WJcуЯныcc[WыNkчЭнNcMwннoгЭлoянчЪуc_яїпcWcQяoOUYЯнеLїLWнkIпыџџgwcляугOoягЭызуgwwЯkkчkїYџcUу__уяяKSпнџwџ_яыгуogwчUQїЮЯбKgуне]EWуплKKпoуб_oSwчХЭз[gY]пџязgSENSkgупняџпkпШпw[ыwWUkуYQSџчнїыHгMїїнеЯЮNFkWoйok]їз]WЯйcЩеLыgзЩLGUQLУейп2OлНКнHWПCD:ОЖЙ=Ww.ЯЭТYШМW3MЖРOууE[SCKНЙСл@OЪWkббQg>?зc>?ЩМеЩC'зŸКHџ$(Д­ФJЪI.чЮяыИUHї]NOЙЧKDРФ,*ЏŸL2U"(ЂЊg>ЛИ.7ЫН@АЇ6,>;[ЅЩ3OЦYлOСwIЮWNQЫЮФуJ&WŸЄH1,*ЦŸБ@ЯЩ4*чШЩЧЉб$0CIК­у==Ц6уГЊС]+)=КІЎU(>UcСЌЕ=>.HЦ­Б­QL1Cп_ТЙйS($пЛЏБO8їп[їЯФїJMWЛбY]ЦПB+ПЋ=EwЮwя>5IЯЭПяннЮФеїпc@ї_oЭлгу[YwOSнKJР[FKFОПХW;DЫПЛcS8HЭЩШkЯLQLcШЭй?QgШн_o]РGHYџЧНяWKOoзгеїлYMJПлџ[S_OчџoгїUwяcяkууЮзUUїЫNеSпяkQJгпUMїыЦнFHIџЭwQUыШбWKзwLуUчЮџwYSЩШнwЯч[oгнUЬпMQcїUнпбзNQgU_ЬччЭc]kOзчWHїЫпJNNIнMуФйУ[]яoннџUбџыc[НЩM=HїпзЮЭпЮуDHwзoџзїMMWKчUSЮгЫнџSQЫгупгkяп:їЮLSNџїOkQллoл_kчcчoУЫЪячыWячгЬнЭwQCппџз]ыFQYkлч?QgяkЭйMYIУб_лчЫ[SoOwззџыYйы_џDgлЭХныNQkйгJыџя]]уccял_]ЭYgQQя_зйл_kџ[ЯуЦїOЯнY>JgЪїUogЯ[ыooЬYWoчЯgMџчїMЯSыgЬлHыыыNMYoїЩЬcїWп]JзOШезяcн]gwйЩDYлЮеJw?бkл]OkЮчQOЯџуй[EТйнKgШыc]Y[BџЮСїK[SџйЬй]џїwGыпїwџгkйе]џпЫMяYЯЭJMйыcбп_ч]YIMgяг[чG[ЩWwШФлKWџЮoзkя_gLзїkЮїoQпялыUбн[MЭчї[w[YJунoн_зc_ЯoЦуSїcб_йcї]їoNлЫc_ЭooзWwcW]п_їoчwOп]гQSЮбяkKЯgkйoЭ]SWgЭgWkїуkый[SйЧїч_ww]cзЮ[YUеwM[ЯwUчNпQ]oYыуїЮOWяLчwїcчЦ][уелнgЯяYчпйoпJkнMџзчkBнMMїїыWwЫыkны_нїkokwcccчgялеcWыыяйыыїgg_N_ЫЬн]YgWo_ЩпgчџNу[зЬчнKgџwcїйU]k_W_gйkйы_їяkл]NїнїлыkџkoLoЯбЮNK]SнйwџkOуwыcgынлџ]wыыгчwлcWW]уплkc[kянзлыџ[gџQwнуу]уwokQееыkныџ]gџooчїk_SgыыйogџїуџS[зыџco]MяйkпЯзчoяяызы_ocYkkчgые][Wыcнcџ_Owџ]cї]яcџoччwЭы_oнгйячуяынgoџWckYџw]ч[пчw_Yяџчн_[Yуcя_яйнїU]пзЧуO_яыџSk[пйkN[cчыџog_cзнбkoo]wяkучkMOW_елwыыџџїйпзуgkџQwџзнcY[[ckпo_YckупoчwWыoSзуыg_џлwїїџыЩ[_[ылokлнЫENNезпJcWуo_їчныwwcглїYcнеп_ggcwgkуыяgCoОUпыBGФныяgнgFMSЮыco]OеЭйWSOХ_йяччяЧ?[oWgЧWнМOIFMКЋF;:JїОЧNйЮуGNчпыSkNgыуQЫенлBEнбЦgJEнk[QkЧге>Я>бЬЭ]уЯcNNЪХяџkKQ_[ЮЮgQџwcЪзUйИ:AуХНыW,7ЭСпРБя5/OРКЏГ/,пХџНАу4OWBуИЦw?]EFoШяЭбgNWIЮЭУШЮг>3HПИгЯ@,.ЮЉІл2"$ТЈЊФЦ;(FЭИЙИЬ26@_ПЏШHIМџ=CЯПЮ88OCФЛ=?KoгWзЊА1CеLгВй,?СЉЙ1.67ОЋКз7,/FЙЏВП?1CgлТЗЪOL]JМЏл06Юя?чЪ]ШJ*/ЎЇУ;.FЬЬЕЩ4<3:ЈŸ.)03_ЌЇЙ?.?;WЗЊМc8&,УЂ­Т7.0П­ПЛOK=@-HЌЋй.=/3ОЉМc;яA:UЙДЏЬ3/,Ы­ВйСB<=>НЩШS@>ШйзФCХgчбЭGле_cлКн@.SЧуы>wЖЯHUWkЯЫФзYUгЫяoE=йЯcYGOwЯЫwM]UФгнSCWЪЦЫйлogYЯбл][[зЮ]O2cOWw_>QяcЭуocчХггеWFпнзбыыkgяыен]џЯяKJcgЮг]oUбgkллпяccзпYNOыууMKCџгзoJMнШеk][N]kwЧуяkoпЯйляйбgїwkчзї]gяNHуЮбй_UoыЯЭSџџgkNSWS]UUе__[]kыgЬпЩы_їw_coїїЯoу]бЭ[MJбgwбїїыяUWoлйчзпQM[Wйы[cY[ыяяcйняџыїлбџOпKIgkч_[M_їуубуwLпcлЮблы_YыwWнннчпUEOчбнпcWHчгбSQџчџwйїoUзяLпябйїkNkнчыяQgыcџп[kллбыUWUcЮяызUw[яуїбыcWwogwgЭokgы]oячзWуg_уычYEwџз[чїн_kй]уk]kзUgWйчп_wccлннO]owїww[wпЭяџ[MчMуџйлйџoї_wwcЬQYппЧ]cK_луїYwїcWчпcЮзџKубяYowнokяуH[]пзяo_SgчбїџwеYgџ[kcwуoыWяїЮUUcуЯя[ычkчбчпY]йIwялнS[Fе]]лен_M[ыkгу_ыYWппQУїUgoузнїызgMяwпoу]kSgыуoзлыgыoуу[wSgыычgoїwk[Эы]ыogяgяїуw_џџYoбo_[ЮпQялw][пяOWгgc]яыгYяїcїяызSYййЫ]лw_]уыЯgџYwџwW[чw_[YпN[_чkkпеo]gяупїcСуYokйыччыkoуяџлgSkYwзїуQїgUуяу_UпoWййQwчлїыwџяџпї_ыуы]g_wчнwї_Uoїwcчлk_coчkџwwыwwпOgЮуggkoc]wбWwяwSїїуoџлу]чwчыW]ыWgїпwcяQ_ййгYSYcU]ыыя_oЭkїїяwїяй]kwЮџ_џе_Y]чпїoуYWwїнџџйYSkе_ычня_ныыOYчнUїяїkSпwY_пйo]gяџcяуkџлчc_че[[ы]M_пяNнЭзныїлыйлџ[[kыыg]чыW[oYgkяo]_їwKwwџcgяcwkЭй]џзгпgйпџoчп]kwow_cуWcwwыыgџkoчзc]џчc[чыwїkыkkчгџwыoы_ow[gџw_Qgoчїwџcgыннџыcoчcgџo_O_kgйзупуупнйзнїџkчџїџcыcUow[cg]OUgw[co]_Yнлgыпуляуеяkыo_чoUџwппwлзб][ыуїїWU[яяkcYџkwwwппџw_ялнwџgџяogыуїџM]Юkkч[NулїџWуїk_wcwячїgoныokoынoнgw]чEcбЬgїOQгзџяgoУнFIYkЬеNYoйk[уowgџc_џџ_oчзелUoџйяNMџгнџOgџнYw_wokыялу]JcуЧнплбй>FЬЦЬЧK5gЩРпЮU2AMСРЫ;8EнуеКЛ]65LТЗЏЬGLUKЭДИYAJLIUgубw;9MЩз_ЯНЫџOIAYЎYAgОУ>.ЭЊП()чЊВLQы=IяДЛуD.QЪЦЧСИI9>џЦКгKIUIMoЧЦW<9YkнЙучбH.3ЦІЏ@YХ<3EЙЛЯOЫЙM2;]ОАу]O8=MУ­Нб@=IkплФнMD>ЪРСї91ЪЧGSИГз7.gБИkoЦ@,6ЕЅС,3UЕ­>0JB<]ЖЏО.8WзЧКНЩч1.<ИЕї:]YQD8ЯЅk34еЎЧ;IыБЊ;#2ОЖяgКп<-LТЈЪ3*JХчDеУџSFЛЛї?пЬЩРчk8gКo7<ОЦw3UЛК>6+CЋŸI!UЇДЙЏЧ53MяМЌЕ4.MйЫЭЬяЩЧY?QMOQйГпD]н?Cgw?NЗЎО=9GWуБЎ3!'МБИЋ9)HHџЌн<3MОНИG:зKAИЗе.)IЅЇб/0нУ47бКYNHoЖo:FуЄЅ74?пО[ЦДo>*=нЖзg=яЦELЪWуoчбЖЙ:?РЕКW;Нз:4>йРk]пнBgЫKуПйW=:LХОНkYcQїЮkHGуМ_IUПКM:WЖЦK>ЮЛя@<ЫЙI;JUkUлКMBUзЬwUЯЪгбз_>їЧя;?уЭп_OлПoFJUЦу?ыХйлOEуРЯMуУСлуSI]зШяуQKUIKWkAYяIC]ЪХуяпЯЮЯwH[лПбїчСЩ[џoїgU@CQлнC@YпЩk==еЩеШЩбSQwгЦлSkлgїзыNї]]пcCUQWТПгYNkoуЪЙыkBBcчџS[oUWJcп[kчШбMJнчЩгEFgлзеШТЯбзїЧзK@L_YыwoSNIџгЯg]їчч]oеЧйынуc_wбЪбoDLW]ї@@_g_NWЭk[лЬебпзЩгеШЪЫпычwџW[яYJGEH?ogNCDїU_wллыїWЯССЪЧИМЮуЬСчcЪЬпJOO?Nk_3Y]I3:IS[HSUWNџйЭУзеыЪОМКЪФКПЬыйлТУ[ScчcI<;NGYNG@I>BKLIWYoQUйуwзФЬЬзОНЯЮЪЭUычгo[ыJQяOc_gџџџяпгЮуй]ууUELW[яHKkнїgkззгыwыџызwgoляO_ыу[чыcQ[лog_гЭoуwџЪзХYбгбпgплUgяMFEHgNANS]YYпп]gупензгычЪгеЯЬЬЬчпЭнwџgQY]їN?WkNWD]SC_]gяяляуЩХяыузЮїяџUgыбџџыынучп]MїccW_c___лйџkowkзейcU_бSQгїл_cнїU]c_k[USQџoџQ_чgїбЭзokпууШЯййпзчїязw_їнуOOYYMMGWYkSogNgogзянчйзТwннуЭнйняwгыяWNQKJYWYJ?Icg[лџcзЪуџяглїчЬгпoячйупяуwязнk[Y]cowUHU_w[UWgMQЯуїg_чџыЬ[oбЩйїыпйcScуя[cYчлы_]]зџcї_Ywwg]_gїwoooйыoйлїwY[нйгФ_џнЧбїkgїQLkKїWMY_Ukџkck[йko]ылбї_ыеЯбcYзеЯнcY_нDYуЧПгIDJ[їяowг]їoуЫЮзчпыWYMKOccQIW_kWяпwнееыOoуззяыы]cяллпokUH[чЩыЭл>gЪФЪЭйBOLечџ_GgЬw_ЪПL@:WзЭуL5;WнФЛИЭQOJџйЩЯkM?_чФПч7YU:JнККЮл;DЗЯЧЩ?F5SПМ[WHџЕџKEwзcЮЬТLEMыгЬчЫг@B>лНлI]WwOIIХЪї@чОнWJIЛЎЎ( ДШ7>ЏА_)/ЛАЖу8еы<=kДпW?нй[?_ШУУЬчСЛСКD7QKянSIФБП'=Єл$.SЄЈ&*>­Н8/ЬЦЖ34гДуQwШВЯMOQЙЎ[KYЬе>kЕТS-OУМџHCcwNOеЯLNQџяЅЦ(ПАД<=ФяG4GгЦТлџOKЦггШФПп]LйШОЯGWџупM:6GРДЭ86Wп]wПНg;wШЖВШ)WОнIзч_QUgеШK2?уТПQ8яЮџHЩМ[CGПХХї_c]BoЙЙB*ыЇЁ?#гБРйя=ЮУЦF/AИЄС"AЏСSK:­Ћ+QїЬАK;cWнїccлЬ[1ЙЏЦ8*UГйЩС/3cДЊЊ-%ыЏЎЏw,"яЂЃ*%MЊГ5>бЊ6(9ЈЄК'FРЏЩы=6D0K­ГМ=**М­Ќ(їАЙПJ2cЌТE=7=їГКЮЏK9HIЋй%-MЫГWAяР8=wŸЁJ5IОч,WЫїЛ:-LЭЫЙР;=@ыїYМЗYkбScЉл!<ЗІЦ<*5ЩяcКgcлOFЦМТпDwн_ScЉЉчЫнUМыDШЬпH*,9LчШUEJ:BОзНуEЩџIЙЬ8ЏЇСг>:чЯРЦI7ЫИФ6/:KгЫO:OЯQSИКы8[ЫЖяKUGчїGcУЭїЬуФЩNнШФпo[йSJwуoїїY[_QGСЫ;3пЭ>@?пеoнЯлпМЦйDнСЫеoKwгkяЯуS?џбџуOLJcYбУLKUФПїwMkчЯСпFKбХпEA[буDF]йcLлЦя[WcWMпY[ЩЪ_oYDгЯџЧФMяыcйнЫШпL_wЬЛгOSN]чUIgU[=9HkїoччуепЬННйLџчнШыcwNKSїkLJwWбЭYKgї_ЮЛЬ]kcйТйеk]їзN]Qwг@:I_чUKJckcYйЦїзпЮлеЯЫoХЫбФнS]cїенUkїYkwWkUFI>I[CFHQу_IWбЮзепнЬКФЭгЫенуяТХcчїнпнуcMQ_GICGQMJNwcUQ_чынїQoЬыЭлпШбйЮчQgйбыcлыLYoч]KOSїн]џџ_нуне_WOcучу_џпб_c_ебЪЩе]kckkUoяCMoc[wЮ_Q]зуkgйбUїw[пooуызззїпяkпуkoIMgSQgYU]oЯЭыулуwwызY[]йЯейЮйчлџблу__gыo]QLяcg[S]Y]OSo[kыwнШеkїЧФg_kcoЯп_SOwнн[[ечџwчяgQgыwлгуwлузїcwџgwџLCcS_gY_oяwлпыуcчузуяw]члkчнwчYLcYуЯч_Y[Y_чЩеџууЩЩпепQgkлчcOSg[_]MOQ_ыуkпчузгЬЪЯйнпїнбу[c[YoY[NQKL__YgUgыowыџзенбШЪЮбегбняыYYчы[SWYgQO_SQWїwWw[џџйлЭїoџїпЯнcпзџWїџяoScџы_їkoџяелwыуллыыйяw_oпџ_[g_wg]џookk_wылЩчgяЮЭлwoйыg_WkcgkџY_ckckWџkSWkџпЭуScеЭЯычйнынowчY[џйЮзї[Y_goїџgow__чнйџячџoџUcїcco[gw[kыїwычлgџїлзяыыwџџыууwwgUUkлпяеQ[уЮблйWW[ыуџї[gнйoяЬчQIQџеыяCFUяпЮХбї[YgџнзїgWH[kбгзезяg[]_чзYS[c[FKеОwFSЯУЯwчџ_џчпйo_[_џgoйуg]їуџS[KUkwлЫџWIN_гЯСгw[UWJ]еОнKNokgгФЩч_їы[QWпййcg_[OwчЯЭџYOYчыџуылWWянЭйKOwJOkЯХЯу]BлЭуЭS[KLлЩџwU_Ъе]QїџїчнЯџQ[oязнwйWONcЭгWgcї]]UяЭыScйг_gIЯУИK/kПUEЬКб?5kНУЬGkнUIUЪгoQ]еwQYуггеуQKеЬлkџo]OSгЫы]MWпЛНF7HLНWSеoен4wЏБS35УОUџзЩу?EчСШMcїЯwgЯЧчoOSWoЯШя[YO[cЩЬc?DgЩеФу?[[gнwSуШО;:ГН?9KМАA3BЮЛcOЬОДg//LЭНОЮL0GРЏO3BПКUE_Ля6=ХБИ:EїОЮнWAMDHнМЭo?5џРЖO/CОХЬуGKРМџJIG_ЪСџНЯBYSХНA7NяЩлNYЪMGUЕЏЮ@MыШGEЯYбc_йWMOgняянпїЮЬлYoйелї]]уџwчпwQcнуџwWYggџбgW]лЮпџw_чяезWUwзл]NYуй]Sgkя[oзнkc_k[џo_угыkwNkзџчЭccяkяынзн]]wчЪбk_c]чo[_ocUIOkџџїїяпычЮЭЯ_kїяйнџogY_џџ]SkkылїUcџџgЯЭwkwяййняkwчkgcgу_HOkџg[Wokogџйчччппчнлџугллл_gokяуgkџkkџkogYYQOk[SUUoџY[язппчянЫЬлчллчыџзЭыџoяяычџY]k[UWS[cU[gwk_cїяяуgkпуянџнзянчgcынчkяуg_oџџY]_џїџџџoїыїуыk_gџџчџwїуokkчнпенkgwoџccя[Y_яgkуяggыыїkїпkџџgїїcуџыупїяыџїыџџ[Wo_g_џ]gwуйчџяуoџџчїcgwпчыпчїыџнчыooџџїї_Yoowo]gocg]kokяїџйлџoлЯуgowcлуoc_kыуџ[ычїџџїwcoїїянчџыыыыџoїwџџ]Wo[gџgowџџяїыяџџячпїяkwуџwыџяw]ggwлуogkckwплїџыпеячуkgџячw_Ykkkџ_W_cwїџїыяынызйпычџыччockckock_]Ygwgџ_gїџwяoянччзейппупыыяo_wяoc[gcg_kg_koџgogwџїынїџwџяууkячї_wwїџocwїoџџkџїыпїwчычяїыяяwwыїogokwwkowџwokwїыннoџчйыяwыяџgџcowoџggokwogџџcggwџйпcgянйуџччїчїџџя_їїппяogcoџџџkџwwkїыуїџїїwяcgџwoogookkџїwџїчїowяуяџїїџџїяыџwџc_kячїчo[wнпууw_koыџїwkџчџwчн_YWџччяWS[џїпгечckgџыуяwgW_kчнупныџogkџпџ_ckoWUwЯЯ]Wыейїџыkoуџуџwgkwџoяпџkwяыc__[koыпуo[Ygынезяcgc[cwбзoWoowыегуgwїoc_їчуwkog]gїуныk__џяoыїыџ]wїннgUoc[gчгзыџY_гяуw_cSїнчwocчгџcwџыџыпыggoџчыїчw]__улogwџok_kпчw]їлooYяйШуGJЪуQџЮЮ[GNЭЯг]]яoW[чеїg_їяg_wуупыoYїлпџwџggYџйуw][џгФяBQUгч[ыяїнJMЬОпL?їЪwgыпе]Ogббw_џпїwїЯпџg]_gїзуgg]kgпеыUN[нннзQ]kkыїgwпЫ_FлТяCQkТы@IoЦлMWчлуQQббїowугџgcџзбcgџуя[чгп[Nkлпџ__wџgkпџgkџkџСN?YгЮйN[лccQїыучяџcџуяїуупїkwяулwcџџїџgWWwнгwUSїїwїйл__џнбЯ_Loлocяџokwџяы]OwџпяgUџыџcйуo_oнчпџџџwcяззOIџОЫ]?KыЯчяggыпыcMџЫУWB]Ыїk[cЬуKkџзЮg]woяџwџыч[]зЮwUIнзязgMWыбФеK?LџЭЭЭџCHџОеHIпЩчO[гЯSGџСТ]JcбгуoSS[OgЬйй[EUйЧлFDеЮйпgQнЪпY[UcчбыеЭS_cяЦяDSgче_]пџU]еОЩSSkбїKччџуNLыїчбwY[gџџwйеcїыcлШO@YЬЦуQHSуkwзgџя_kуннїcїїwgwШбїчoїйcwуїяcFNWgчуoc]Wџнязc_нccЮcUЮЫуыU_їчлуW]чгџSM_gыя]WїїkїбзkWoлйџggoїw_wйџџуїпїkїууїџwїkkїїџџџkwwcwнчNQїџ[]cыяџяыїчйуџ_їнчяwgџїwџчџkcяыџїkggwoуяggџпуџџgїїынockчпw]]џчї]gwяkgячwooџooџoџпчoџo_уїџнїgїџwяячуwgwџчйџkkgџїkcwko[Ykџџџџїыяїпллwkџџыуџwџkgwџocgџwыыggџџwызїwџџяпяяwwџїkwkїы][kwџggkwџooяуџяїыяяыяџнчыпwMыЙgw­&ogwkUc_oїяwыяяпплзнчяoыйпчяччяїџулїџwїїїїџgkwgcc_gocgoџwkoџџїяkwыяїыџыуїыяowїыџwїыokwџџgkkџїџџџwџїџяџwkoџџяwџџыwwwяыыуыwoџwџooџggџїoџяїooїїџwџыwџџoџџoяџїяыџїїџџїџџggwkkkџkoџячяџїяwџџяoooїыяїыяџїџыяїwwџџџџkcwwџwkowookwwџїџїччџwчняowwoчїwokwїыџgїяџџџџџkwџџїыїџїїїїџwџџџџk_wgwџowџџџїџїїџџїяыџїwїяџџїџїџkooџчїwooowџычџџїыуїяїwoџїяwkgwwwџkckoџџџџїїїыяучыїяџїяяoowowwowkggoџoџkoџџџїwяыяыуучыыяыїїџwkїїwkgoookwokwwџoџoџџџїчџџџџїяяwїяџkџџџџwoџџwџџwџџїыџџяяяїџїїџџџїџwowwџwwwџџџџwџџїыыwџячїїџїїwoџwwџwџoowwџџoџџoowџџчыooїычџџяїџяџџџџkџџыыїwoowџџџwџџџwџїяџџџџџїowџџwwoџwwwџџџџџяwwџяяїџџџџџџїїџџwokџїяџяwkџыыяяџkwwїџџowџяџџыыkgcџяџїccgџїыпчяowoџїяїџockџяыяыыїџwowџыџkowwcgџныkcїучџџїwџяџяџџowџџwїыџwџїїookgџwїчяwggoїыууџooogoяпуkcwwџїупяoџџwkkџяяџwwokoџячїwkkџџwїџїџkџџыыocџogџяпыїџ]kпїяџkg_џуяџooячџoџџїџїыїkowџяїџяџkkkячwoџџwwkwчяџoџчwwgїчзяNYйo_џзнgQ]лнпkkїwcoяуџokяїokџяяыїwgџчяџџџoogџчяџkgџпгcQ_gпяkїїџыY[лЭыQNџлџoяыу]]oппџkџыџwџнїџokkoїуяookwwыуwc]wыыуу_kwwїџoџуйkWчб]Q_ыбїOWwеw[cячя]_пыџwџяпџooџнпooџяџgяпыg]wчыџkkџџoџыџowџwџЯ]Ngпнч]џчoo_џџяяїџoџяїџыяыџwџїячџoџџџџoccџупџ]_џџџџччkkџыппk[ячwџїџwwџџїїk_џџчїogџїwoчяwkwыяыwџџooїну]YџЭйkNYуняїooяыїc[џйбcQkйџwgoеяYџџууokџwїџџџїїgkннџYWыуїуo[cїлгуNN[чллпџQWџЭуWWызя]wпнWUџЯбkYoппїw_gg]їлчыgScчечUSупчыc_ыйыggcoяпїуы_kkїе]S_џяуkkыџckуЭз_gwпcYяwџя][їџыпџggoџџџнуoџїoчз]Oїлеw_Woяwяуoџїkwяыыwoџїџoязпџяwџчoџыџї_U]goяїwokcџыїуoџыoџнokнйяїckџячџckчпџ][kwїїkcџџwџпяwcџччwoowџџkџчџїяџыџwїяяџџџџwwџџџџџwџџoџуя]gџџgkoїџџїїџячяџoџыяїџoџџџїяџkoїїџџoooџwяїooџыяџџoџџїыwowяыџkoџяwkoџїwwїяџwwџwwџwџыџwџokяџџыџoџџџїїяяџwџџычџwwoџџwoџwwcgwџџџџџїїџычыџwџџїїџџџwoџџwooџџяїowџџwїуџџџџїыїџџџїџwwwџџkgwџџoowџџwwяяџїџїџїїїџыяяыџwџwџїџwџџџџџџџwokgwokkowџwoџяїїїџїычяїяяџџџїчыџџџџџїџwwwwookowoowџџwwџџџїwwџяџяџџяџїїџwџїїџџїџoџџџwowwџџџџџџџџїџџwwџџџџџџїџџџџїїяяџџџџџwwџџkwџwџџїwwџїџџџїџwџџџџџїџџїїїџџџџџџџwowwwoџwwџџїїџџїџџџџџwwџїїїїїїџџџїїџџџџџџwooџџџwџџwџwwџџџџџїяџџїыыwџџwїїџџwwџїџwџїџџџџџџџџџџїїџџџџїџџџџџџџoowwџџџџџџџџџџџџџїїџџџџїџџџџџџwwџџїїџџџwџџџяџџџџяїџїџwџџїџџoџџwџџowwџџџџџџџїџяяїїџџџџїџwџwwџwwowowџџџwwџџџџџџїїїяяяїїїїїїџџwџџџwowwџwwџwwwџџwџџџџїїїџџџџїїџџџїџџџџџџwџџџџџџџџџїїџїџџџџџїџџџџџџwwџџџџџџџџџџџџџїяџџџїїџџџїџџџwџџџџџwџџџџџџџџwwџџїяџwџїяїџїїџџџџџџwџџїїїџwwџџџџџџџџџџџџџџџџџџџwџџџџџџџџwџџџџџџїwџџїїџџџџџџџџџџџџwџџїџџџowїїїїџwџwџџџџwџїџџїяwwoџџїџwkoџџїяяїџџwџџџџџџwoџџїїїїџџџwџџїїwwџџwowяыџkџїяїџџџџїџїџџwџџџџџїџџџџџџwџoџџџїяџwowџїяыїџџwwoџяыџowџџџяыяџџџџwwџїїџџџџwwџџїїџwwџџџџџџџowџїяџowџowџяяїџokяџџїwwkџїяџџwџыїwwџџџџїїџwwџџїџџџwwoџяџwџџџџwwїїџwџяџџwwїччo]ыїooыуџc_яыыџoџџooџыџџwџїџwwїїїїџwwїїџџџџџowяяџwowїучcgoџыoџїџїw_џлчw]kчїwџїыwkoяыїoџџїџџыїџџwwwџїяџwwwwџяџwgoџяїыwowwџџџwџыїcoпџ_gџчу__oччogїїыkkџыџџџџыџџџџїчџwџїџwџыяџgoїяџwwџџџџџџwџџџwпї]cїыыooїџwowџџїџџџwїџџџїїџџwџїяџwџџџџwwkwїыїokџџџџїяџoџїыыїcџяџwџџџџџџџїwowџїїџowџџwїяџwwџїїїџџџwџяыwcoунї]_oыїџџoџїїwkwяпї]gыїџwoччcџџїыџoџџџџџџџїџkяыїocџыїїїkkџяууg]_џыччїg]oннw_wыыkoџуk_oуня_kїчїџokwkwяыяџccџччw]џчяїwkџчыwoooџяяџчwowwуџcgwџыџwџїooџпнwkwяџgџїwяogwїџяїoowџџџяыџџџџџчџ]cяпїockџџџяџџџџwџяїџwџџџџџыуџџџџїџwџїџwcgowџїџwwowяїяџwїџwяїoџпїїooџџїїwoїяїkgowџїџoџџџџяыџoџїыџwџwџџwwїїџїџїїџџїїџџџџџwџџџџџџџџџwїяokџїoowџџџџџџџяїџwџїїїџwџџџџџџџwџџџџџwwџџџїџwџїїџџџџџџїџwwџїџwwџџџwwџџџwџїџџџџџwџџџїїџџџwџџџїїџџџџџџїїџwџџїяџџџџџџџwџџџoowџџџџџџџџїяяџwџџџїџџџџwџџџwwџџџїџwџџџџяїџџџџїџџџџџџџџџџџџowџџџwwџџџџџїџџџџџџџїџїїїїџџџџџџџџџџџџџџџџwwowџwwwwџџwџџїџџџџїяїїџїџџџџїяџџџџџџџџwџџwwwwwwwwџџџџџџџџџџџїџїџџїџџџџџџџџџџџџwџџџџwџџџџџџџџџџџџџџџџџџџџџџџџџџџџџїџџџџџџџџџwwџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџwwџџџџџџџџџїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџwџџџџџџџџџџџџџџџџїџџџїїџџџџџїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџwџџџџџџџџџџџџџџџџџџџџџџџџџџџџџwџџџїџџџџџџџїџџџџџїџџџџџџџџџџџџџџџwџџџџџџџџџџџџїџџџџџџџџџџџџџџџџџwwџџџџџџџџџџџџџџџїїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџїџџџџїџџџџџџџџџџџџџџџџџџџџџџџџџџџїџџџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџwџџџџџwwџџџџїїџџџџџџџџџџwџџџџџџџџџџџџџџџџџџџwwџяџwџџїџџџџџџџџџџџџџџџџџџџџџџџџџwџџџџїџџwџџџџїїџџџџwџџяџџџџџџџїїџџџџџџџџџџџџџџџџџџїџџџџџџџџџџџџџџџџwwџwwџџїџџџwџїџїџџwwџїџџџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџїџџџџџџџwџїяџkџяџwїяџwkџяїїwџџџwџїџџџџџџџџџџџџџџwџїџџџџџџwџїџџwwџяыwowwяџџџџџџkoчыџkkџяџџџїџwwџїїwџџџџџџїџџџџџџџїџџџџџџїїџwwџїџїџwџџџџџџџїяџoыяwowџыwkwџяџowџїџwџяџџџџїџџџџџїџџџџџџџїїџwwџїџџџџџџџџџџџџџџїяwkџїїџwџџџџwџџїџџџџџџџџџџџџџџџџџџџџџџџџwwџїїџwџџџџџїџwџџїїїooџџџџџџџџџџџџџwџџїџwwџџџџїџџџџїџџџџџџџџїџooїчяokoїїџџwџџџџwwџяяokџїџџwџяwwџџїїwџџџџџџџџџwџїїџowїїџїџoџџяыїkkwїяяїwkoїчїkwџяџwџяџooїыяooџяїџџwwwwџяїџwkwїыїkwїїїџwwїяџwwwџџїџїџwџџїяwoџџїџџџїџwџїчџwwџїwwџџџџwwџџџїџwwџџџџїџџџџџїяkkџяяџooџџџџџџџџџџїџџџџџџџџџыџџџџџџwџџџџwowwџџџџџџwџџџџџџџџџїwџыїџџwџџџїџwџїїџwwџџџџџџџџџџїџwџџїџџџџџџџџџїџџџџџџџџџџџџџџџџџџџџџџџџџџїџowџџwџџџџџџџџџїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџїџџџџџџџџџџџџџџџџџџџџџџџџџџwџџџџџџџџџџџїџџџџџџџџџџџџџџџџџџџџџџџџџџџїџџџџџџџџџџџџџџџџџwџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџїџџџџџџџџїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ[gwпЬxpat2-1.07/lib/audio/goodbye.au100644 146 144 10006 5644001134 15017 0ustar mbimathopt.snd ц@џџџџџџџџџџџџџџџџїїџџџџџџџџџwџџџџwwwooowwooowwwwwooowwџџwwwџїяяџwwџїяїїwwџыыїџџџџїїїwokwџџookkkwџџwwwџџїїџџwwwџџџџwџїїџwoowokkkkokkkџџџkkoыыяџwџџїїїџwџїяїџwwwџїџџїїяяяучыџянйпџџџупїїџџяяџogkkokggc[[_wwgYWgowog_]gыыїcWSџнлw]_яйЬЭуїwџяупџWQWoїџOLOYoяkUSYуееџooйЯЭепџыйЭЮлыwунпчяg_wwokcY]kokcc_kџџwkookowwwkwwџwccwунпыыџџџwwgccџїџgc[kџчыkwџwйеїowїячйыџџowычookkoџo[YWooїяяkSSYWY[]Ywїплнлйггеуџwc]]YSMKQowяkџййнgWYџыoccїїw]oџџgМО[MKJЖЈЎПWGC[ч_78AЖ­ЋБОРНОНТK3-0//,+*.:УМКЗЏЊЋЎЖЛНнO,)()+.9>DFYУМЛЧЭЪОЙЫяNEQЮШРПМЖЌ­МЮнwчпcC303CIDWw8CFUХЖНн;85?GMN]>5<МСЯзуяузQFJLKKїг_[зЯЭЮепчнџgWC>:>??ACcчЯУМВВДНСЧШЭoSNFC>AFHKO_џугнчйбЮзппбЭЬЬЩХФСОПЦЮгееc[]goccg_k[[YNKJJJGHHHGIEEEEDBBDIMY_cылзЮЫФТОНОРПОТУЧбйыow_c[]_Y__WWUYSSSU[[Y__g_gчпнггбЫЪЭЫЮеебйнwїџok]NNNMMKFFA@?BEKNSgwлзгЫЫЫЫЭЯЬЬЪЫЫЬбллпчууучїїowkokkkgokwwwkџїяїїїычџwokgkc[WS]_]c_kяччџwo_cc][UWUWOUUQS]_ooowяыячяїџџџџџџяыыыыooїчынзгзегзеезбЯЯеезлнуупунпллнллпчяwwoc]c[[WSSQOKKJJLOWY][_cgkkяыйууїwgg_[YUQUSQUY[ooяыпннлннлллйзеззеггйзнлуяяычнчџџџgkog_]__[_cg_oow___coџяыїџїgoggggg]ck_]cgkџыїыччйплззгбгезегййзллуыяoooc_c_]]__cccggkokowwїяїяччџїїџwogџook_c][WY[WYWWWYgkkowычїыпллнупнучпучпууячяычыячїяџwwычплычччуяыыыџџџыяџяычыуппуџџoc__[WWWY]YYYY__[[[[WUY[Yc_goџяїџупупллплезнпнейпзлгезлчїїkcc[WWSNNSUQUU[_[kwяяыыыяппчяяуупыїїow][[[__]][[Y_gkїяяулнппплпуупнплулллеггййлнпуччуычуяџogkcc__]]][[]]_]YYY_ggggckgkwokokkc]]coџwяяычупчпупччяoccc]_W[]_cgoowwџяыячупйзйлйчучяяџwkkwџwџџїџџяыуулеелнпнппуыїџo__[]]W[WY]]__ccc_c_[[cggooџїыччууууяџїяџookkoookwgСЭK5НЈчwAOПе=9ЫДЭJ7чЧЫwџ_MUЮї_J[wФФпcOMяПРбk]LOS_UJAGM][WSS_џпЮбччуплзнїыуплгелллегЬЬЯпяїяузуo[яЫФЭџkcџгЭнлcW]k[LMKWk[HCBHJEDKYSIFF]wџwнWпгOC>BЫЈЊБПу?=8>gШЯНЗЕКЙЪпOMB;?448/-/5=ИОКЋЋЌЊБЬзяNяТыяG><Ыуп_MJЭОF@<=8Эе_2;гЏЋБДВД­­БИбYM957IJOD?:@?A=;87=?W]c[H?зЛЖНї7:IЦХВ­]C?;KЊЈЊЋШ5$+(;WБЋЁІЋЛ<+/59IЫыЩеыNH4.2YуАБЎ­ЌВЏЖФбпYEH5448?UK6+*-8==?BWgгЮЫЩoUХЙЛЋЕЛеЫЛЎКЎO:49чІЄАПF.+,):уГЙЇАЪ;8-?EЮлнMпуЬk/(9OЩЛХwИЖБДЖЫЮуGM?:;=ALчO210>[oB=?NџнcLwЭЧйoSгЗБЕзџOЧЗІO[4бЯЅ­ОI_,43?D8ЧЎЌАМ:0.JMяg[ыСЮH3.0UoеUТМЎЎ­ЖДКл[_QSD;=<8;oЦИЛO68бџw2+8ЭЛОB?:УЧеSKJџлебуFJїыoA9=УИТЩзпплеoUDC]ocQIO_лп_OYыОПЬйЯРЩЯзнзСТЪ]cЯММбgJ_ЩџgKСп?16ОГК;.:гз?68ЬЖЗуOAoПзыNї_QKO[O>AN_KA6HШМЭkїЯЦЦзKWkяуwgg_QKWїwcOїЮОФЯWяЩЙПняwЪЭйQUШЩЯc_[їgEDIТбo02ИЌАM/-НЏч>9їИЎнQcЯчяLEJgSG?WK;>wнC*1FЖзC.AЧРJ57ыЕКХoЭЖТеWуТЪЭoџчеWB;gЪЬS<@пЛХkйЧПЩяыЮЭoKSгХлKKЯТc8/FХРп?KеО[CgХЙШcOЧМЮыcеТФODUЮйO?=Iя[JK_I6=LУЦгEIoуgKJIЭЦНгнoллЭу_чЬХШл_cнgKWйНЧуOYСЦуoйЪЦoIYлбJECUџK>>JNNIGkыoYoзШпNkЩОгgбЦНеYcЪЛзW=Gу_G>oп;75йЪЫK=FQџЩНПAGШПбCNџИПяkзМЫгеЧОПФзубЬЩыgDЯЩеwON[гЦлkYYяYKGOWUG=B[?9=NLOSMCHJSЮы]OЯЮkoнВГПгШОНЭcяЫЬџcgwKADUk_KEGQoяй_/5ЕИШ:AOЧб>BеНЫkЧСЯoUЛИОйЬЛТуNcШн[=JггwSEN_џ_S[gџoILQїїg[YуїgOoїwџеы[_їйЧбйЩЧпYYЮЩяg]чџ_OYw_OHQыoULwпcWOwЬуYNчйуч[BYзп[SW_яїLSуЪcїлеепwчЩзQчЪнgWwїыgOџЬн_WWcлуїkлыпїџ[wwџ__wїoџw_ww[[нпwџџйзчяыззяїнеыggc[SUW[c_Y_UOQ[]___їkYoїџgџпйнџcїзлїчыыыпgwчїџууџягчwoуннџwччџk_wџїoїїџkk[ckc_c_k[YSY]k_]wыџogыяяwчпуїунпыячпчяыыыїџџыыїџїяџџwwowїџџяыыїяooыыыїїџџwkgc_wџoggg_oџkcoяџwkogkkocoџяїџkџппc[cпїggoџo_gookkoџџooїџџџчыїџїяїџїчяяыяџїџїџїїяяїяїџџkkџџџwџџџwkowwowџџwwoooooowџwwogooџџяяяїџџџowџїџwwwwwooowowooowwџџџџџwџџџџџџџџџџїїџџїїџџїџџџџџџwwwwwwwwwwwwwwwwwџџwwwџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџxpat2-1.07/lib/audio/success.au100644 146 144 35744 5400441430 15054 0ustar mbimathopt.snd ;Ф@яя.0GUпЛМКГЏАБВЕНРЦcUG??AgягППОУХЮwgA4-))*.05EWїбХПМНЕГЕВИЛСгйуЪФОЗЖЙМФеQ>84./-//45:EOo_гУЛМИДЗЛПТНПЛГЕЕИЛНїYCADEA>,-+()+28>нЦТООСКИЏЈЈЉЏДОџcwoыйcS570028DAGSgNKIUYQЯЫЧбwббНБЋЈЈЊЎАМНШЫЫU<.)#!#&+2AUыйпеФКВЋІЉЎБЙТЭгЬзйk[[_ONB>3/.*,,/4<їgыЩМПЏЌЇЇЎБЭыWI[їунзwgBEC5?H@AICG:?QJЭбОБВГЌЏЏКЩЩMMJDIGFIgчЬЧХФчеM<@<<-*+,.[ЭИЉЅ ЃЃЃЊЌЖПп*$! )0=уЩЧВЋЉЄЅЊНG4$%+>WЪДАЏГБАВБФеH0/(,-/=:AЬЯТЏЕЖQFK9їФЖ­­ВЗЮбЧзНџ5-$&*/ЯОЖДЮеИЛГДНї%""-=gАЋЏЖЗЗГГГМL,'',5_ЧЩХбННЏЎГE.%(-:МБЎГЩНОКЋАКї%"",;ОЎЈЙУйНЖКПй8*)/UйКБЙГВАЋЖУH'%#6IУЕЗcgуВЏВз6% &._МАФенЬЕ­ЏИk'""4GШЊЎТЦЦБЏАЩD.)-<гЕАВАБЎЌЕз=)%(1уУНJG[ЛДЕЧE! 0EеИЫH[ШОЌЎЗ/&%.AЧЏЏЕбЭЙЇЈ­б5)08ФЎ­СЯЬЕЎЌЗN/%(5ЙЏЏk;CИЏЋГу3#)2ПЕРA4лЈЇ­H<9яЧU8-9kНЇЊЖE@LcЮп((/еГЈЎЫC+-FJ?92@бЉІЕыM6/A>85]ЮВŸ ЅПI/8ELOoЮЏЇЄЊАЙ-&)&+GcЪЇЈЊЏТQ0("'->ЕЊЇЌКгу8/%$'JЭЕЁЂЈСg=?4&)/ОЋЂЅЌЙI1=.+*9UЛЄЃІФM42.+*.EАЇЈЎП?,6%()GчАЈЊБLI@5*'.EОЃЂЉЦуыOз0.5ЛЌ ЅЎТS8DB47уЙЎЄЈЏй:*A,(0NеЇЊЏЭ??<4%()ЭДЋЎМї6/Q)-,_РЋІЈЎK:.w/-9еКЅЊГ]-;KG>>EЗЇІЈЕџ11:6AFЙЎЉЏВЗ2F<-,8яГЊ­АЩ,2/-7CwИ­ГД41KEWOE[ЏЕЎ­зяEы/+/зйКЈЇЉН?)(.<_ПwВЎЎНA,#*KгГgКАЕы?&$*=[Л­Њ­Х80',8бВЏІЋЎ@.)./[уЮЇІЇы:*(/NлЏЏІЉЋB-*'/CуЖЋІЈВ7,++8:ЯБІЅЌ8(%<Ьбџ;H­ЉЈM5).YПКДеЇЈЈU3+,<ЩеГЏЈЋХ9*$*=чЖГЊЎК.()+wЖВ­л:0cМШХ+'7лЖАШOJчКРI'&,нИЌ­ЙеOFKN5--:пЊЇЊg:8IWYOACЧПКЧяNoџNE>wМЎ­Ж[,-8уЯпIwРЊЊЏC:4FNF;?лЗЎБОгNLoLLMYoЪЩЮїU_kяQWgЬЙЗПwHMџШЪЮпЯЪЩнL>KчЪЬїYMNg]LcпХЪгw]]џcSQQуФФШB8:џяыляЭРЭџK?HЩглчkШЗВЯU=/>WыйнеНЗОТc758чгнйЭПОНШ3.1_МСНЩSgЪчK=8KЯКЖМ]зЯТбgOUcШОЧЭлЭеуU@<_g[ScЩПНЩ?DLKIHWбОЛПУ>ONMMM]неНЙСйF9/9гНКЪЯчШЫї;73YбЮМУПКЙг5--oФТИЮйАЋВF)&/BЖЎГЖЖЕРQ/(-5ЭЙВУППРй;*.9йМЕМНОЧе:5;UЪРЙПЪЬгЪMA@DcгЯЩйя]Y=>?ыЩСНФйуяC>@QнЪЗРЧJEkKHFEWЮ­БЖ>.4HwчOGнИДА];7=FРПННЬеMC=@DJЦОЙПнc?HGKGKзМЏЏКл27?DD_зЛЎВДNG=MELџїЯККЗOC=MM]улеФЧЬoJCIL]япЩПТI>?[ббїWoбЪСN@BcыЦЫWUUлџoDkkзЙЛЪ<=CYяwH]еКЗЙUQ@FLSoеОЙЙЗkk[=@?EуКННШЮыF209kМЛЬW_чЦw;26џНЕЙнcgпл_AGgНЕЖепбџчg8@JРЙЛЛЯїQ??9CQЯЧЧЦУЪы=7?CЯЬУЦШХПЮ];;?]язПЮЬЭччG97BязЖНзяWkLH;?GПЕВЧ_CDAE[UoФДГЗџ@2:CoбпПККУбO63HgШЧРШЬн_E==SпЧНХбЬЫйgC?OkЯЕКХoчч]Q>BGЦМПбww[N_QcџйУЫgwлЯыQCcЩНФз@KџЩКнџYїчлD56їгСПЫнчoK6//OбЛЛОРМПб8,,[ШККОНЛЛ@4-.=wНЗКЙЙРL708K[ЙЖЛЖЛo6-+>:?SoФХФЯgKcQUгФПВЖКЪN?./>HIїYџчзЫеLCїпФДЙСШббS@;ASW_LDUgнШеgеЦХТЩззбo]DI@DNF?MЫКМРбcgчОЪЩзФЦРЩї:48:AMoЯМИКОлgLSчЫЦзЦЩЮЦN6'*/gЪПЕМИОРнH;MчФИЖЛcSE--+2<ЮЏЏЏОїWQF?JчЧЛИЛ[Y958EABЮОЛСТЫY[ыпынЯзчяcџSB>=9gЮЪЦФЯЫНЫФХ_MOчSпХяЫoD7<=GџчыЩРННЯoSGџзgЧЮoПЮcNJ:FGFKNoггблпчwwчwїпУЛИЩг[=LcoзЧЦМЛчї=;ALoЫФМИХЮg37CB77=kЫЗ­ЊЊЋ­ЦйяkШОУЦгC3.'&(2;F_WQILUбРЗЊЅЄЅЈДНЪлуя]G<81-))+2@wПЕЎЇІІЈЌГМХwяM>4/,)'()0<93.,*-7џОЏЅ ŸЃІЌЗНСУФл[?.(" "'8QТГЏЋЌ­ВМПХНПФwD2# !&-GЮЏЋЉ­ЎГМЛНОНОыE/ %)2еЛЏЇІЈЎЏАЏЌЊЎГN1&!/@ыАЌЌЏГЗДБЌЌЏЖ?-" %6FџЩЩЧЩПБ­ЉЌВЧ-%!(0?ЬСЧUANoЭПНЦ]>@=CЫКЏЈЉЋТЯФНГЎЙТQ**-яМГЉЋБОглы[яD40+,38=QгЙВЏВчK/,3=ОКНнC>GI]їнwDMEUwcпЯЙД­РуU+.4FчелcOЮЬКИЕЖ@KSgФРЯЯЩРХФнџ71SOСЏЛИяUOCcWџ<7ыMТЖcуA[GGUK>8їUЭД]їYWнпеЬo>Y]зЕГССчЯџJL>;gенЌІЌЏДЛЧoN<28()DoУАЕРЗЙЫO?5,->пРЕЖЛЧНй?9+(/8LПА­БИЙЭC5+(;Hл­ЉЌВЗАЦE=+)-OЧЖЌ­ЎВЏД@6*%-JЬКЖИЗЗИЧ.(!$.6ТДАЎЏ­ЋГы,#!.9oЗОКЕЌЎФA#"&AлИБЕАЋЇЉw7'"(3ЫИЙРЗВЋАя)"$;cВИЬЙЎЈЊЕJ# #IЭЖЮWЪЊІЇП;("*>ИБТUТДЊЎ9( $0JЙЫMЬЕЋЊДG%%)wКДлйКЈЈЏ4(#1YУЛеХЎІЇВS)(.ЩЗЖwgНЋЏТ+#!4KзнQkЋЇЋQ4&.KШХЬеВЇБч?#(:їнЮйЖЇЋСH('5Цч[OлЏЌК>'$-СбFLwЈЈА3,)яИК_еЪІЈБ2+(яИЗMЩФЇІЌ7.*OЛЫAYЖЎЊK,&):Яo0CМБЊD-+5gЙР?ШБЏЉL-(,6ЖХK­ВД_.-4JнВйбЎАЏN-'+.IРеНЏДТ('%;WПџОЈЉЋC,(+/AЧЧЖЇЈЌ3,)@Y[ЮЪЋЉЊЙ0(+98чпКЌ­К+$$7>IIЧЋЇЈЛ-*-JQHМЎЅЉДE,+/IYЮЏІЉБп/-58SЪЌЇЈЕg/''35нБЎЏЬ-62_1;ЛЌЈЏл/K>U7KЬЉ­ИW,3D;FзЗЌЋЛ<-:WY>ЭЛЊБРE093N1_ОЌАн0*E=пIТЗЉКй3,g?уcЯКЏФK.*:WkыУЗ­w[S3]IЩ_РУГГF/)0QФУУДЖзY/-@MЙНИГАОH)+2НОДЫЏГн[26MGЕМБСД8++-gЦМЦЮПNc,(1>бИАЎБНD/.0пСБЏЗЖU_72CAВЕЎКДМ1.1UЧТЎМЛу_K-7/яйКГЏД6*+.QПЏЋ­Ж]?+.?IКИ­ЙОUG-/4ЪБЎОлЯMыD/5?АГWHбGQ>->YЎЗОнЛКH0+NКЌЛпыДТM2-3ТНГЖЗЖЕ[++.ЧЙЬЏЎ­]9(24:йТЎЊЏы,'+:SФЊІЈг=5,09еБЇЊП[>o6+0SЕ­ДгыФїF,.7ДЗЙЭПЩл:)/6КМРКЕЕ_U3/7=ЕБ­ЏЖНQ:*33CИБЈЋБЯ=.+/<ОВЋАИС42-4/0wЪЏЏГгY=;*.:лККЋЌ­[<,13AOзЏЊЊЛkG]D<1DwЌЎЙЭЮчCMSSC=UяТязoлеЧЙСK31:MыНББВХЭзЩЬ+()IгЛЎЌЊЙЮD0.19EпЛЗХЫлH8<1WРОРЬcџЬ[@>=LЪХШЮMwkIDMWїпcїлШК]ЯЮСМФЭoџcoOUзуМПб@<<[уoлЦЮУСgЯџE;ALowйСНляDoџDKHыНЙЛwя[ч]]џYглk]бШбяNџчгРЦї_@E]ыЩQ[няYQЮgЩџзуЮc946ЫПТНЬЦkS]SUMEбПОwSI9KK]SХНДЛл:/DбОАБня[яG3џЭКММgЦ[BNKлПЧзШйwSMcууеЯяЩСп?5CЧЛМ]ckяY9:cТОгйлЙЦo<=IИЛЧoчуняCBYуЛЫЬлЫC@:HїШТнї]бТS64JЬМЫg]гггG=Eябуы]џНШџ]QНЪзHJQеРЪџыЫЧыџ6?FwЯЯЦЕГбI8DUoџgЫЛЖwC3>?AгйЫЗКСW>9NЪЖИG8JчйУлуЬЫР>>9їуйбЪПШлOAHQwџїШУШM=ЪЗДМ]SFL=>LУЕЖКяC518;]гЕБГпG?5;?_ЦИЏАЙKA:6=еРИАКЙoM69:DЛЙДЙОЮL;0;>kГЖНcoыQ;9JЩВЛеWлгD>CЩеПSoc]C7GkМЧХЪззL5=_лПОЖЗїM49@HwТЛКЛУG?=>H]ЙЛМТcї=:7K]ЭЗПЪMN;:DOлПВЕРD=D6HKгЖБТW???>@MgЎ­ЏОПЧkJ=>9<>LыПБЖСЩПТЩучнСФйMG>?KKEОПХОЦgSчЪыcoлПРF.-@NYOEџДЖЪ_[oХРЬуйЭїQ<39DHOїеЦТЩЩwныКМчМФуJ?28BBS[ПЩYwЪеОТЭКЏЎлK?IM=44EЗКУG[[СЫяЭСК­Ин40>7-4:gЕЛгcGLчЦТУНВЏИз<379F>F_ынЮЪ[OџШМЗГИЩЫЯS>;BCQkFDH_зџLQУЙВЗзkг]]>8BџнWDMQ[лI?[ЙВДПнџызUDQGЫйc<=:9?QгШНИНМКз]LQчйЭчн]YOA9BESбЬЙИНОЫЫбеkлЫЬЮе_]>YK:KUыЫУПпяYббЯЦйgпЬЯL5/FgЪg=DQй]H[ФММЛШoОпїYYoпяg[g_ccD?їпЯпkcОКМЧcGлФЕбY:UнЭуU=FW>?BOїїNMoНЛЯJNпЙВИЯїWooпїзыkkgYнw_gJ_ЯТйлHYпнїлWoля[Q_wW;86йРОЦзчЩнOOяМЗЙЬТПМЪQ/5DШПХQ_wK@7678AwеЭзя]G>EKMыЮЯЬЬнїwыгпџыЪМГЙЦыуoWUWйРЙЧн_NOGNcлЮЧХбч[GUOWwынЩглџOUчучыcун]M?Y[яQM>Lы[[N[ябoLIыЪФнOWcгЯунЩПСУ]wйлелеЩТТзIDGUMFMkЭЭйJFGOLGLнУСw]cгЭнSSЧОКНШЬеЯйNL]ЮЬЦпoїoQE9AYЯеџ]cлcOIUбЮбџыЯФЮяcнЬХчMGQc]Q>E[]g:8=WнпџнУДЗQ;=ogwSwЭПУяDJуТМОПИДЏГЗНМРяD58AF=9.//11,!%.зИЎСY8:[ОЅЁЂЖџ5*3IЕЌ­П[CLяИНПF/.0>]ФНЩзяUNJMC>>7>EчПЙВБИOA<8[ТМЙYC9@kЮХРШ676IХНЋЋВТS<,3=cЛГЖЙТЮеДЙРOB81;?КЕЛИйуJ4-+23WлїлЬРВЊ­[G2(0]УЏЋЋЋБЏЖHH92<гЬЕЌСЖВ-.1'3gеКЌДДЎ74<,7]ЯНЎЌЎД/+/8]ЏГИЎЕИO/)(-;ИЏЌ­Йл+'(0<_Ж­ІЉДN)'?ЯМЕЎЎ­ЎЙ,('/KЦЌІЅЏй8'(1[Q]ЎЉЉТCFkпЏЎЌГ.*-@QЙлЙЖХL*'*бгЪЏНУРO+01?ЖЏАЉ­е6-*oУЛНЌГИL,(3угББЌЏ;*()8пСПЗЏг[,)/[ШЕЊЏЊЛ;-*6лХЛБЇ­O2,3гЗпЯЧЏАП*'%LТВВЛЛD4+,;Ж­ЊЏЧQcDD.??ЗВВЕПї2.-чcEЯВЎЛO,%-чcЛГЋЏ4,*9џИЛЎЈЎУU),;ЙЏДЮЪ­H1./[ХГИЌКл-'&;QШЎЋ­F,+-<џКЊЈЈКG++9ДЏЖГЏБ=3'-LЖЋ­еџЦH-2,FЭЎ­ЕЛ;.++5гДЋЇЎг*))нРЛЎЉЎЯ8)*1ЖЏЋКРЙ0*(4cКЋ­ЗЪ;(*'7ПДЌЖй1+)1OКЊЇЋЛ>,,,?И­ЉЌЛ>()*wЙЏЈЋЕ1+).JМЈЅБй?*-2ЯЏЊЊГУ,+-4їЛЉЊЌC.)+.9ДЌЇЌФ;()BуПЊЉЉU2*+9o­ЊЈБЦN*)*GНЎЇЎЪ92025k­ЉГw<)'.4QЙЊЈЎD0..5:ГЊІЋОg//4[ЯЙЈЈ­?1)-5kЛЏЋБл/+)589ДЋЇЎЭ>38ЏЋЊы>0A?<0>ЫЌЋЖ>=NU5/:еДЈЎТ[Uн_=.=нЌЊАыKABOB5:OДЎЎoM=BFH[gYџебМОПgOFoЧТХйу]ILIYЭСТЩппчїџ40/LU]УЪОЩе>3/MуеИДЖе_>ACDеЛВЌЏМыF9:MуЫУЭПЧkHH?FJгЧЯЫwKokл]џучї?ЫoЦуЧеЧзQY]пчЬЦЪбYE>_SџKзЛЦлGFOзнггЬы_NLAS[зЮЩеoBU?O[ЦОКЭЯIQFwg]wЯХнYAJ>=cСЙЏбNED5EHЪФМЛИЮW>DяыїЦВПЧD7;KЯKWЪНПУ-?cгЫггЧуЫo@LїяА­пU8wO@ФПУЗ]JY7cЛВОЪйE;.HЮЭпgЗПЬ9=BU>FФЏЏАЮ6/8NСФТЗХ@<6QSWЗЌЕп::?JG[JыБЏЛ?;FыHWПИИcH]A?KcгНЬФoA5>=LЭcПЗЛй57IHcСлМЙЫЫNNUIПИФЫЪ[нAM_cФДКY84?=:ЩЬШОУФoE=1SНй99ЕЎЕеїNWїLгЬckя_[SпМЩЬгїЯуN=:;cгШлЭwЯпQЩХJЫВЗКеAoл]cSПИЫнWAыЮU:OџУЬwYN<ЫЕЕO;AТkKJ>ТТЧЧ[уяЭЩ9GНИМЧ8AgokO=HЯМї?6gРWйMпЕwN?;чРФХЩЩХгko?MнеТЫoчї_ЪеkпwйбS;>A_cуСн]лнняџgHЪЩРМТШРЧУЩDgеcЮSCOKLB8зЬФРЪЮЧЩеD?;=?WgwТКПЦ2HOЯЩЯТДВНйABIcяcEMЦЦыcHпПS./9wПйнЮЗВВIB7YЬW*-;КЌЖИДАЏК444=N@HЭД­ЎФ417LG@=UХГДМЪбнМЗЕЮ?.17КЖй,8?БДџgИЏЎw0>ЬАМ5,6яДЗGLБЏЏ.+зКБ/*(WМА=<ЮВЕo.>СМ=62gЗЌЕШйНИOBJL6:/CНЗЕСMkOеН?)(,<гбШЙЕЛДJФХ+/3EПЖДЋКЎЎЪЧ9'-:]СЬНЋЋЌЗQ%$%?S>ЩИЉЅЈГD+'..=OйІЄЄЋЙN)(+:ASMБЊЈЌЛE*-1I@=ыБЊЈБ4**;BI?HЩЇЅЈ_1-7>L>BkЉЇЅМF0-8BIBFБЋЉБы)),6<:YКЊЅЊИ0/0AHFUЦЉЅІЏ9/1CKUGЪЉЇЇџ4..>?87H­ЋЊы2)/68H<]ЈЅЄЛB33?YMGПЋЉЉКJ-1;II9уГЌЊЕQ++.>>@GМЌЇЌФ.-2OU0/IыW=KОЉІЋ?/.CWI4>ХЋЈЋ9J­ЈІЦ=46[o98>ЏЌЊW1,6cN2/РАЌЕU64BoQ>BЎЉІЖN7;Ak=9J­ЊЇу98:чу57ЛЏЌАk:.<з;68Г­ЈКK97Cл=6>ЏЋЈУ=>9чб87ХЏ­Џg9.=Ш=70НДЏХ:/1NЩ<59ВЏЊг94>]Ы]П@?@UзL58лБЌД880Рй>5cБ­Ў<48wФH;YЛЌЌЕ:WчЯы?LџВЊЊСS@AРQFLЙ­ЋЖ:10Шg=:уДЎАw//6л;7WНАЎН>з[>LЎЊЇг>>AЫУ7JЧ­­Б:36AIF9зНГГТ3I4K;>=kД­­:G5зШF>gЕЌЌО2:;ЩO8чМЏЎКKGDй_5нМА­Ш;:AЩYA:ЗЏЌВY7:>Э:?MЏЌЌU61AIA>уЖЏЏЮ831=O1@лА­И63/бcH8ЯИ­Ж[/DYЬDBЧЕЋАл?_BУH;]ЗААk:9SТ:3AИЎЌc45IЬЬ:JЏ­Ћ_67MяХ9ыЛЎЎЖ8I=зQ>@ЫЖЎЖU73>џ90нЗЏЙN.нКЋЋВYОЌЋЕ048cU2SСА­Иу08?@;UМВЉЋМHG/U189o:8BЕЌ­Т>5:;H5?ТЏ­Еп9?9D98SГЌЊТ=74Fч:EBЏ­ЏЭ7>6Q97@З­ЊНG29>k;G[ЌЋЋз?1?;W6LЦ­ЊЛ@<4GU;KEАЎЋл:>:пY8GЩЌЌЏ8.4Fc;>уГЉ­ы;6G;BSI=НАЋМw:5O?D>MВЎЎП?557g?QнЏЋ­C/->їoCWЪЋЋВF5.Y=LEФЌЋЋ?8J5o_H[o­ЌЏ;0.FSO<бЛЋ­О4+1BN=AСЏЋЏ>5D>уHWNЯЋЊЌD86_зH>зКЋЎЙ/-1JY>QЭЋЌВK8/c:CGЭЕ­ЎВ79??_?[_МЌ­Ж1--UJ:IПЌЊВ8,/@EGKНГЋБП4;BKN?YО­Љ­Щ819oFBбГЋ­К./0LE8йЙ­ЌЙw-9>I>;КЏЊ­ОI@4cEЫїУЏЏВ9/./=M7чИ­­б<,6>K?BеЊЈЉЬY;NS:MIСЌЊЌЩ=9.98G@УГЌЌГФ150FMDТД­­Дз,..GB9ФЕЋЌЛї-1A>]ыД­ЉЋГ896@C9ЪЕЋЋАХ.6AFW:СВЎЋГП/82;>>HХЎЈЋГ20.AN8BїЌЊЋw1/29Q4NРЊЉЎЬD1I4;KзЕЌЌВй.2.M@WїЛЌ­АL7/.1=DџХЊЊЋР?0.4AK_уЌЉЉВw55/U?DяЗЌЌАФ.1/A>;gТЎЌЎВ>4..;>бЧЋЉЊЏ;)(*:BбуЙЉЈЋн8*).B_ЫБЈЈЌЖU)))OLяуИЉЊ­М4))/@NзыЙЌЊЎc.((0UџЭРЌЌЋАб.*,@NWWКЎЉЋБ0**4QMYLзЌЊЋеG+/0FQOзДЌЉЎЕ0,,DLQВЋЉ­КA,).BFQgЙЎЈЌЖI/+/1?:KЭЎЈЊЗB.*0Y]kQЮЕЉЉВk.,28M;C?В­ЉЏч2..DDI>ЩЗІЈБЩD797=>G_ЏЈЈ­б5-.AUkHуПЎЈЎИ@.01<6J?З­ЊЈАg4/2W_]MРКІЊАз@28688==ДЌЊ­Ц/1-FGM>пЩЊЉ­Йл6/.1яПЌЉКЦ]/357;>=ЭЕ­ЈЌW694OуM?MЧЎЉЏВУ698;;4/EЗЌЇЖK<5Cc<32AлАЋЏАгAA/./74[ЕЉЇЌСE51O>:;HgЊЉЊАЬ<0-,444ЧЖЌЅЉЖ<4.kN98EМЊЊЎАМ9=5/579зЗЈІЈЩE=/BA;7>гЏЋЌЎo;6++28;wВЈЄЊЙY0.?DQAWлАЊЊ­[50,/6;7ЩЛЎЈЋЖ70-SEF9FNЎЊЊЎЕo:5/=@>JбОІІЈл>6=Y>;0?йДЉЊЌo;8./42.5ХГЈЉЏг9/8::<8EзЉІЈЌОF936558UЧЇЅЄЏЮK2:751.QТЎЇЇЊн?5+,02/ыНЎЈЈЎE5,/./.6GБЈЅІЌН:/-288>џЛЄЃЇЏЯ7/5370AkКЇІІВч;-*,/.0уКЌЅІЊU:.--0/5еГЇЃЅЈЯ>0)+/6>OЏЇЂЅЉГ9.*-29?YзЌЈЊ­З1*(*.5;EлЎЇІЊГo,)+29>ыХЕЅІЈАл7))6@GыШЕЅЄІЎШ;((+>FGЬРДЉЋ­Э9)&(/U[[еХЋЋЌР?+&*1NUMйЧЖІЈЋШ:,-1>зяяЯНЏЇЉЌN/+.8oUGOяКЉЊЋе6+*-;L?>KЭГЉЊЌI0.-4C@BYйЗЄЄЅГ[4--:YINыХЏІЈЉЮ8.*,7EAIkЧЏЉЋ­K.&',EKSwїТЋЋЌУ<-*-9ыџowoОЉЉЉЧ=/-3Dгы]kџЏЊЋЎТA-,/NYL?FJДЋЊЌИS-,->G>>JYАЉЈЋЗ6/.4?NMSыЖЋЅІЊД7,+1?]їнЮЙЎЉЌЏО.*).=KWWgФЙЏЎАD.)'-:[пџяЦЙЋЊЋg6-+4CнЭЬЭОЌЊЊЗ]2(*0лУМбзнМЕЕНS0*-8ЪРТSD?ЯИЎБР2.0MнЪkJFїТАЈЈЎ@3.>пПпL@kРЏЉЋВ:.+/=ЬЯkIHџДЎЌЛJ1,.;ЮзїA:>РЕЏЏПD,+0лЦнW?_ФГЈЊЏ:.,чЎЈЇЏШE--2JNK46<РАЉЈЎР0,-Coе[EBcХЉІІКM4.8NУЬн;./:cO>,-5ЦБЉЅЋИ8.,:K_F<9YТБЄЄЏЬ=-.8лйї?<>ШЗ­ЉЎЛ5--=WзU?6;QЦЊЇЈЙc213SџџK>>пЛЎЅЅЉг>0/9KепoEHkЖЌЉЌЗg+)-QбЮoH;BwЗАЎМ[6,.9зШг:/.EнКЈЈЎN70:OзчI//7ЦДЊЇЌЕ?56]ЮПY=22?н­ЈІГлA25>ыcG/-BйКІЄЈПS;8:I]D<58GИ­ЇЅЊВG85C[уJ91ТБІІЊзGХГЊЇЊВ:/-5EџowH:FwБЊЇЌЖ8.+4A[g_DBNчЎЉЇЌЛN--2oЮз[?9HлЙЇЄЋЖџ0/3gлџ@88WХДЈЇЋШD/)-7gog:9=уОВЊЌФI2,-6ggY:68ыНЏІІЊЧI4,.8SgяC?FЩЖЋЇЊЪ@/+.9їїыH?AчНБЈЉЏL1+-5MЯФеD?DУГЋІЊЭ?2/7Jегу@:>зКЎЅІЊй=.,3Aнйї:6:йЙЎІЉЎO4)*/KQkMF?gЪЗЈЈЋз<-(,5йЫУџG?LбКЈІЉОO,+,DїпїO<;Oе­ЉЇ­Зo.,,;YgяS@:AџГЊЇЊЎY7.+2<ыЮбUNOХЖЌЇЊЎW7+).<йЮуI-,->]чбчoQgРЗЎЌ­Вw@4..4FM]уogйЩМЋЉЉБПg2-,26C_wU]їНВЌЊЌЏпI2((*;IUчяcчЫРГЏЏБНе6,*-4ScйЯнгУПИЎЎЏПуC*)*3@cШШШплбНЖДЏЏЕї@++,9NYwo[їлПВЎЋЌЎЖN8-*+/@LgгчлФНЖ­ЌЎЕПI7..29Y_їYJNwгОА­­БИЬ;.+(*/AUчгЭЭЧОЕААВКЩD50/28FKHDHQШЛБЊЊЊЕХ]-))-2=kеЫбеФОИЏЏЏЗОе8-**/8SwџызЭЙДАЋЋЌЕТw1,*+-;F]еЯЭЦОЖ­ЋЌВЛб:.*),0H_уелйХКДЋЋЎГС?/)%&*9BYплгРЗВЋЊЋАКЯ8,((*.LgгХЪЫЧПГЏ­ЎБК_>0)+,6?G]oчЬФИАЌЋ­ЎГг[>,+,-5DQcзХОЏЋЋЋЏГЫN<*(*.3;]йгТСОГБЎЋ­ЕПу:/*)(*3;BяШПДВЎЎЎ­ДЛХD9.&((.6@узСЛЙЏЌЌЋЏГЦc?/*'(+.IwЭМЙЗДАЎ­ЌЏМЪW4,%%'-6@чЪЛАЏЌ­Ў­ВЕЛџJ;(%%*-4MoгИВЏЊЋЌЌАМЧw<1+&'*3>[йШЛДВАЏАЎБГЖwE7'%$)+.H[ЩНКГ­ЋЌЎЏКМСcC4'%%*.7cеПБЏ­ЌЎААЖЙХџ<0,'&(+0=їУИЋЊЉЉЋ­ЖОУwL=/+(),,9HUРЗЎЋЊЊЋ­ЛУгH=4,++/39IgзИАЎ­ЎАГЖКЪїS7.)((-28]пЩБЏЌЋ­ЏЗКОЮл_;1,*),8HwЩИГЏ­­ЏЕКЦчogUKC/,+,.2HkйКЕЏЉЈЇЌАЗї[M?>961./09>JеЭЦНМКЗГВИМФoUK?<;2//18@SяХОЙАЏЎ­ЎВРЬяџoU>81,,,/5?нФМИЖГ­ЌЊЏЕЧлgUJ>;61---:H[ХОЛЗГБЏЏЏЕКС[?;55882247JoзОЙЙИДГГДЖПЭйI=977:=6436>їгбОМЛЖДЗЕЕНЩуSCCIHH=989:9=DwЬНЙИЖЦЫСКЖГЙТн]I?DEEQM822@A>DMoлЫСУЬчзЬЛДБЏБРнN:89?@@DA?ELWлбЬыk]еУКЏЎАМЪїDBFFLLEAAGLыбЮЫЬзпчяУОЛДДИЫkJ::;=BG?;9;?cлЮПУШЧЩЪНЙИГЕЙл[L;<=@DGBBDKWoбШЧЦЮџg_]ягЧЦШзяo[]gkk[WSOY_gїуйзЯЬЩЦРООФЮлoc]QUSMNN]_g_MMUYYoяубглїянЭЪЬееїыїYLE==>ELNccUHDHwзЪЦУТМЙЙЛОСеї_GEOW_їплччџg_gыупгЯЮЭЯгняowkoџянйзпc[WY__ko__cowwokkwooџячупчoc[OQU[]ccgџwџc[]oянебЮХТСХЦЧЬЭбггбЬЮе]KCDFJKN]џыгббЯгйуучџkok_[LJHLS[яупзЯЮйя_IGFIL_wїыwcSSYынгЪЦУТУСМОТoQMџйЯепwџџызепыџїчйннляooџяуууппллпяџNIFIMMQWWg]]Y[c_]SMHGKN__ckwяыџgcwчЭЫЫЯбЮЩЬзo]YoубЬЫХСПНПЦЯбйџg_]_g_oїучїoџїџwџkoчччпуыуяoWMIHKN]kocYUNLIJKMW]kлеЯЮЮлыwYUSkg]W[gзЬЦОННОРЧыocџїџkkџуууїoYUUgянплгШФХЫгнogc]UOJNYпгЮглуoo]OHDFGIKKOQW_oџяычгЬЪЧЩЩЫЯзнйгЫЯлупнбЯбггнуя]]]cc_ccgwo_NNNU_wллйзйлџџыззпяoc_]WWSLMNYWQIJMW]gџыпзййныїїыынЯФОНТХЧЪЪЬџg_gыйззлчяoUNNYckccgwяыйгзїkkынлнуяїїџwwkk_SQQ[_kSMKNSOONNMJIKQcoїлеЮХТРПТЧлнлЯЭЭЭЬЭезлыocoїпйлпыїяяkSOJKMSgязЪЩЪЮЯблуwgc_oџыййуg[SIFFIKNNNKJJQWc[USgялЮЬЮгбЬРНМНРХЬЯпg[ONUkчйгЯбнчџg_cgkoчяwg][[_oзЯЮгЭЫЬбчяџїџwg_YWY[WUQLKKOQWkookgkkkwячнгЭЩЦЦЩЫЭгйзезнїчлзлыkggkkoџячcUNLMMQOOScзббзйлxpat2-1.07/lib/audio/cannotsave.wav100555 146 144 11714 6714247615 15747 0ustar mbimathoptRIFFФWAVEfmt ++data €€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ƒ……€€€€€~~}€€€€€€~~~~€€€€€€€€€€€€€€€€€€€€€€€€€‚†ˆˆ…‚€€€€€€€€€€~€€€€~€€€€€€€€€€€€€€€€€€€€€€ƒ……ƒƒ€€€€€€€€€€€€€€€€€€~€€€€€€€€€€€€ƒ…††…ƒƒ‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ƒ…………ƒ‚€€€€€€€€€€€€€€€€€€€€€€€€~€€€€ƒ…‡ˆˆ†…ƒ€€}zz{}~€€€€‚€€€€€€€€€€€€€€‚ƒ…‡ˆ‡†…‚€}{z{{}~€€€‚€€€€€€€€€€……ˆˆŠ‡†ƒ€}zyz{€€€ƒƒ€€{{z}~~€€€€€€‚…†ˆˆ‡†‚€€}{z{}€ƒ…††‚€€~zxyy{~€€€€€€€€€‚ˆˆŠ‹ˆ…€}{}}€……‚€€€}zyxy{~€€€€€‚‚…‹ˆ‹ˆ…ƒ€€~}€~€€…ƒ€€}}~~}~~€€€€}zz€†ˆ‹…€}vz~€‚€€‚€€€~€€}}~{{}{y{€‹‘ˆ€zuz{‚‹Š‡€xqq}ƒ†‡…‚€}zz~€€€zz€†‹Œ…€~}€€‚…€€uu~…‹Š€}z{}€€€~€€€‚†‡…€€€ƒ‚€~~€€€€~}€€€€€€€€€{xu{†Š~z€…†‚€€{}{€…‡€xq}†ˆ€yqqv†”Œ€sy€Š…zu{€€€€€y{ƒ†znqzƒ‚Ї€…‚€‚~}€‚€xu€ƒ…€€~€€€€}~€ƒˆˆ€}}€†‡xv}ƒƒ€{~€€ƒ†…}z}~~x‹’‹€€{€€xp}…ƒ€y{€€……}tqy{…”Œ~z€ƒ’qt€†~lq€…xx€€~xy}€…І{ƒŒˆ€yu€nu……vs~…†€vz€†…}qq€”pyƒŒ’€ip‚…yu€…€y{Š’~ggx‡’‚qx‹’…}uu†”†pk€†kt€‹vp{ŠŠ}t{ƒ‹u€ŠŠ‡xt€’ƒnq†‘€tl€’ˆqk€Œƒqq”zt‹‹‡vq‚‹…vsŠƒvu‚Œ…vu€ˆxq~yqƒŒ‚xn‚†un†up~…Š‚ut€‡€z€ˆxx†…{x€†‡{q{Œun}Šxq€Œ‚}zy€‹zx†ˆ……{t…Œƒqt…І{qu‹”€guЇup†”q€ŒŠ†~qtt€€xv€Šƒz{†‡{q{€€ˆŒuxŠ€€€{ˆ…}u{ˆ‹}qy‚ƒ~€€{}€Œusˆ€{€€€ˆ€tz‚‹€tz‚€€ƒ€{€€}zzˆqvŒ€}{€Š‚uu…‹€uvƒ…}€†}x€{u€”‡k~‹€zxƒns†Œ~v€€€}€…€y{€€xvˆ”{nˆŒ†zxŠ~qyˆ}q{‚{€ˆ€uvƒ‚€n‡€…zŒvu€…€xz€‡€}€€~}}Œ€u€‡~tŒ‚vvˆ€{z€€€…€{€…}~€{zƒ”€k”€{ƒ€€ˆ€t{……yz†…€z€‚†€x}€€x€’‹kz’ˆx~€‡€q}‡€y~€{{ˆ‹{p‡€u…”€j†”€v€‚€‡€vvƒˆ€x€…€x~ˆ…}€€}}€ŒulŒ”xtˆ†}€yy‡€y€€€€ˆ€qzƒ€{‡’xo‹yxˆƒ}€†u€ƒ€€€€€€€‚…z€…€uzˆ”€l€’†x}Š€{†‚ux‚‡€}~€€€€€…€z{zyŠ”€l’t~‹…xy‹ˆpp††vq€Š…{{€}}ƒ‚}{}€}l€”ƒq{‹…z}‹Šqp†€u{……u{‹†uu…zvƒ’ˆszŒ{t€‹€{€…‚€{{€ƒ€~€€€€}€€€€€€€€~€Š‘€p€’q}Šƒ€€€€Š€quЇ€z€€€{…‡{z€€€}~€†…p{ˆu{‹†{z‚†z‡~t€Š…y{……{{‚ƒ~}€…€z~€€{ƒ†pv‹}q€Œ€v€‡€~ƒyx…‹y{‚‚z€‚€{}€€}€€‹}uƒu‹…{}‚…€}‚†~u€…€}€‚€}{€€€€€€€€~}…Šuuˆ€q€Œx†‚y}……xu€Œ€x}†ƒ{~ƒz}€€€}~€ˆ‹x~ˆ‡}y‚†€{€‚€~€†€z~‚…€{€€€€€€€€€€€€€€€€€~€ƒŒƒx~‹ˆ{{ƒ†{€ƒ€~€‚ƒ€{€€‚€€€€€€~€€€ƒ€~€€{€‚‹…x}Œ†y~‡ƒ~€‚€€‚€€€€€€€€€~€€€€~€€€~€€€€€€€€€€€€‹Šxx‹‹zy†ˆ~z€†€{€ƒ€{~~€€€€€€€€€€€€ƒ€€€€€€€€€€€€€€€€ƒ‹x€Œ‚y€‡€}€ƒ€}€€~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚€€€€€€€€€€€€€Šƒv{‹‡vz†…~}€‚€}€‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚€€€€€€€€€€€€€€€€€€€…‚~}ƒ…€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ˆx€Š€{€‚€~€‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ƒƒ…€{}{{{}€…‡……‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€…€€€~€€{{}€ˆˆˆˆƒ€€~~€€€‚€€€~€€€€€€€€€€€€€€€€€ƒ‚€€~}}}€€€~~€ŠŠŠŠ…€€~~€€ƒ‚€€€~~€€€€€€€€~€€€€€€€€€~€}{zz{‡ŒŒ‹†€~}}€…†…€~}~€€‚‚‚€€}zz{€€€€{xuu€Œ€}zy}…ˆ†ƒ{{}€€……ˆ€~x{{€€€€}xuu{Œ’‹‚vuv}…‹Œˆ€{uz~€‚ƒ……‚xx{€‚ƒ€{xyy{~Š”‡xuz€†ˆ‚}v{€€‚€‚‚€xx‚ƒ€}vvy€€€€†€~v{†Œˆ€{x}ƒ€€~}€…†€z{€€€yy{€€}…‘xx€‹‹Š€vv€‹€vx†ŒŠ}qq€ŠŠ€uqu€‚€}€’ƒxy€ˆŒ…zx}…ylq‡”~gj€€lkx…Š€uuˆ”qv€ŠŠzqxƒŠzgk†•”€gg€”’€ggz‹€lqŠ•{kvƒ‘ƒqnŒ’…qgt•ŒpgqŒ•ˆlgq‹”ƒlgy•”xgl‹•zjp…”’€ig€”•†ggz’”€gg€’vgn…””†ig”}kt†”‹€lo~”ˆpg{”€glƒ‡tlx…Š€lx’€sy‚ˆ{}}}€†…uk€‘ug{‹Œ{lt€‡‹’†pq‹”€pu‹zv‚{€…‹€qqˆ€kq†qq€…€€’}l€”ˆxx€†‹€x…€vzˆ‘€plƒ’‚kl†pt‚…}~xq†’ƒyz€ˆˆ{{‹€qz‹”€ip‹”guŒ{l{ˆƒuz”{k€”Šyv€ŠŠ{vІts†”ƒnk†”€gq‹{o~‹‚ux‹”iyzq€‹‹{tƒxk€”Šqg€”ˆkl†‘n{…qqˆ•‹nlŠ•€ly‹€q}ˆll†•klˆ”€ku‹‹zx…€u~Š’Œun†”€n}Š{u€ŒŒqi‚”‡lp‚’€nxˆˆvt€ˆ€q{Š”Œtl‡”€l~ˆyv‚Œ€y~~€ˆ€€ƒy€‚€y}}z€€}ˆ†suŒ’}p…uz…‹}u{‹‡{€‡}t€†€z~€~€€€}…Œvp‡”€q€…y{…ˆ€~x{ˆˆ}ˆ€u}ƒ‚{y€ƒ€}{€€€€Œ{q…”€p€…yz‚‡€€zx€Š€€€{€€€~~€€€€{~€†Šus‹’}qƒ€v€ˆ…{€€{€…€€ƒ€y€€~~€€€~€€}}ˆ”ƒnzuu‹Œ{u‹‚y€{…†…}v€…€yx‚…x€€}€yl†”€o€‚u}‡†{~†}v…‡€€€}z€…}y€‚€{€…~y€ƒŠtq‹”{lƒ‘€t€Šƒ{€‡yv‡†€‚{x€ƒ}}€€~€€€}€€…‡qzusŠŒ{vˆ€z€ˆuxˆ‡€€}{€€€}€€€€€€€€~…‘ˆpuuqŠ{u‚Š€x€‹€p€‹†z€‚€x€‚€}~€}€ƒ€z~€€†€n€’…p}†v{…†z‚ˆzu…†€{…‚yz‚…}}€€€}~ƒ}{€€ˆp”p€uˆ†}z€ˆ€u{‹‡z}Š‚vxƒƒ}}‚~}€}€€€‹{o…”€p€u€Š‚z{ƒ…€{{€Š€z€ˆ{v€‹€y€}~‚€}}€…€{†’€o‚’€q€Œ€z€…€{€ƒƒ€z}‚ˆ~~ƒ‚}z€€€€€€€€€€€€}€‹qq‹yqˆ}v‡€z€…€}€ƒ€z{‹€}€€}‚ƒ€~€{}‚~~€€}~……uz‹Œzu…‹~z‡€{€ƒ€€€€€}ƒ€€‚€x€ˆ€x€ƒ~{€ƒ€{€{‡‘€l”€p€x€ˆƒ{…‚~€€~€€€€€{€ƒ~€†€y}ƒ}€€€€€qqŒut‹‹{yƒˆ€y€…€}€€~€€€€€€€€€~€ˆ€z€ˆ€v~…ƒ}~€‚~z€ŒqqŒut‹‹zyƒˆ€x€…€{€€€€€€€€€€€€€€€‚€€€€€‚ƒ~z€‚€€€€€€€†Š€uƒ€u‚Š€z€…€}~€€€€€€€€€€€€€€€€€€€‚€{~†}€ƒ€€€€~}ƒ‚o}†q~‚v~†…}{‚€~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€}€†€{}ƒ~€€}€‚…†€x€Œ€u€ˆ€z€ƒ€}~€€€€€€€€€€€€€€€€€€€€€€€‚€€€€€€€€€€€€~~…nƒ’€q‚Œ€y€†€{€ƒ€~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€{€ƒ€x€‡€q€‚q€Œx…ƒ}}‚ƒ€~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€xpat2-1.07/lib/audio/giveup.wav100555 146 144 65720 6714247615 15113 0ustar mbimathoptRIFFШkWAVEfmt "V"VdataЄk€€~yyyvspqoottljpttstsqqtvuoou}ytv{{}}}}{~}€€€€€€€€€‚€€€€€€€€€€€€zz}€€€€€€€€€€€€€€€€€€………‡…†ˆ†ˆˆ‡Š‹ˆ…†‡ˆ‡ŠŒŒŠ†††‡ˆ‡……ˆŠ‹Œ‹Š‡ŠŒŠ†ˆŠ†…‡Šˆ†‡Š‹Š‡ˆˆˆ‹‹ˆŠŠ††‡†‡‹Š††‡‡†††………€€€€€}xzzuuusnnopoljlonloj`jkjaa`jjaaaakkaanollla`lljotuxzy{€€€€€€‚ƒ†‡……………†‡†……‡Šˆˆ…‡ˆ……‡‡†‡ˆˆˆŠ‹†…‚ƒ…‚€€€€€€€€€€‚‚…‡‡ŒŠŠ‘Œ‹ŒŠˆˆˆˆ†ƒ‚‚‚€‚€€€€€€€€€€€€€€€€ƒ‚€€€€€€€€€€€€€€€€€€€€€€€~~~}zyxxyuuxxxuvyvyz}~{{}~{z}{yyz~€€~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚€€‚‚€€€€€€€€€ƒ…‚€‚††ƒ…‚€€€€€€€€€€€€€ƒ…†‡††‡‹‹Œ‹‹‹Š†ƒƒ……††ƒ……€‚†…‚‚€€€€€€€~~}~~~~~xu{{xvyy{€€€€€€€€€€€~{yxxxxxuxxvssuvyyz€}yx{~yv{}zxtsstqqtqqsuxvuux{}~zvy}}yvuz€€€€ƒ……Œ‹‹‘’‘ŒŒ‹‡‹ŒŠˆ‹ŒŒŠ‡ŠŒ‹”””–”– –•’”•’‘‘’––•’’•’‘’‘‹‹‹‹‹ˆˆ†…‚€€€€€~}}yxyytqtuqsvtquvutvzyxy~~{}€€€~{}~€€~z}~xv{zvsqqtspopqqpnklopljpqpqstpnoqssuvy{{~~€€€€~€€}{~zutuvtvzz{zy{~~~€€€€€€€€€€€€€€€€€€€€‚‚…†‡ƒƒ……ƒ…†‡ˆ‡…†‹ŒŒŒŒ–Ÿ•• ЁЁЃŸŸ ЁŸ•’’•‘‹ŒŠŠ‡ƒ†‹ˆ‡Š‹ˆˆŠˆ‡†Š‹ˆŠŒ‹‡ŒŒˆ‹‹‡‡ŒŒŠ‡ˆŒˆ……ƒ‚…‡‡‡†…‡ˆ‡†ˆ‹‹ŠˆŒŒ‹ˆˆŠˆŠŠ†…ƒ€‚€€€€€€}yyzvvyunosojklljjoqj`j__][\___a`_]]`__]_``_aa`a`alnoqtstzzvy€€€€€€€€€€€€€€‚‚††‚ƒƒ€€€€€€€€€€€€€€€€€…†………ƒƒƒƒ‚€€€€€€€€€€€€€€€‚…ƒ…‡†…†ˆˆˆŒŒ‡‡‹‹ˆ†‡Š‹‹ˆˆˆŠŠ‡ƒ……†ƒ€‚……‚€……€€€……‚…ˆ†…†‡ˆ‡†‡†……†ƒ‚€€€€€€€€€€~{{{yxutttuuuutvtpquuuxvuy~~zz{{~~€€€€€€€€‚†‡…‚‚‚ƒƒƒ††‚†ˆ‡‡ŠˆˆŠˆ……ƒ††…‡…†…ƒˆŒ‹‹ŒŒŠ…‡Š‡ƒ‚ƒ…†…ƒ‚‚€€€€€€€~~{zyyxxysnnstnjjlnnljajakkkjknopqstty{y{}{{}€€€‚€€‚‚€€ƒ…‚ƒƒ€…‡……ƒƒ…ƒ‚……†…†‡†ƒƒ†ˆŠŠŠˆˆ‡ˆ‡ƒ‚€€€€€€€€}~€€€€€€€~}€}{€€€€~}{z}}yy}~€€€€€ƒƒƒƒ‡†…†‡…‚ƒ…‚€€€‚‚€€€…€ƒ†ƒ€€‚ƒ‚€€ƒ†…‚‚ƒ……ƒ…ƒƒ……†…‚€€……ƒ‚€€€€€€€€€€€€€€€€€‚…†‚‚†…€€€€€€€€€€€‚ƒ…€€€€€€~}}~~{uuuvuxxux{}€~}z}€€zxxyyxspoookjajkkj`akkj_aljjknnknooqtsptzzz{€€€€€€‚‚ƒ‚€‚‡‡…ˆŠŠŒŒŠ…………€€€€€€€€€€€€€ƒ€€€€€€€€ƒ…†ˆ‹Œ‹‘‘‘‘””’•”’”••••”‘’‘ŒˆˆŠ†…€€‚€€€€€€€€€€€…ƒ‚ƒ…‡Š‹ŒŒŒŒˆ†‡‹Š‡ŠŠŠŠ‡†…ƒƒ†‡ƒ€€€}{yxusuxxutvxvspquvspqpsutqtxzxyzz{{}}}€€~~€€€€€€€€‚ƒ†††‡ˆ‹‹Š‹Œ‹ŠŠ‹Š‡†‚€€€€€€~~~{yvuuvxxxyyz{zvvvxxxyxyyxxyyyz{}}~~}}{}}€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ƒ€‚‚‚…ƒƒ…†ˆŒ‹ŒŒ‹Œˆ†…‡Š†‡‹Šˆ‡‡……‡…ƒ†ˆ†‚ƒˆ‡††ƒ…ˆ‹Š‹ŒŠˆˆŠˆƒ‚ƒ‡‡…‚ƒ€€€€ƒ…ƒƒ‡ˆ†‚‚€€~{zvttttpqsqqqkjlknlkoonnnnnpqoponjajknqsqqsvxuxzyz{~€€€€~}{}}}z{~}}{{}€€€‚……ƒ…ˆŠ†ˆŒ‹‹‘’‘‹ŠŒŒŠŠ‹Œ‹‹ŠŠ‡‡ˆŠˆ……ƒ‚‚‚€€ƒ…‡†ˆŠŠ‹‹Šˆ†ƒ……†‡†…ƒ‚‚†ƒ€€€€€€€€€}{~zyzyxyyx{{yyyzz~€€€€€€€ƒƒƒ†‡Š‹‹Š‹Š‡†††ƒ‚‚€€€€€€€€z{~~~zy}}ytuxuvxxuvvuttuvutstvxvvy{}€€~€€€€€€€€€€€€€€€€€€€€€€€}}~}}€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚‚…‡ƒƒ‚€€€‚‚ƒƒ†…ƒ………ƒ‡Šˆ‡††††…‡‹‹ˆˆ‹ŒŒŒŠŠ‹Š††‡‡…‚‚…‡†ƒ‚…††ƒ‚ƒƒ€€€€€€€€€€€€€€€€€€€~}}}€€}}}}€€~€€€€€€€€€€~z{{yy}~}}{zz{zyyxvy{yvx{}{{{{}€€€€€€€€€€‚€‚…‚‚‚‚……‚‚€€€€€€€€€€€{zyvuxzz{}{{{}zuvxvstuqptxyzyy}}{{}}zzz{z~}~}}~€€€€€€€€€€€€€€‚…‡ŠŠ‹‹‹Œ’’‘Œ‹ŒŒŒŠ‡†…ƒ‚€€€€€€€€€€€€€€€€€€€€€€€‚ƒ…†‡ˆˆ‡†ˆˆ††‡ˆˆŠŠŠˆˆ‹Œ‹‡ƒ‚€€€~€€€€€€€€€€€€€€€€€€€€€~{{}zy{}}{}}{z{~~{z}}yyvvyyvuvvvuvxvvxxyzz}~}~~€{~~}{}}{{{~~€€€€€€€€€€€‚…†ƒ‚ƒ……†………ƒƒ‚€€€€€€‚ƒƒ†ˆˆˆ‡†…ƒ‚€€€€€€€€€€€€€€€€€‚€€‚…ƒƒ‚€‚†‡†‡Š‹ˆŠˆ………‚€€€€€€€€~~~{{{yyxxyyxy{}z{}{}}xy}}{}~{{€€}}~€€‚……†‡‡ˆŠ‡‡‡‡‡ŠŒŠƒƒ‡‡‡ƒ‚€€€€€€€€€€€€€€ƒ‡‡†ˆ‡†…†…€ƒƒ‚ƒƒ††‚‚‚€€€€€€€€€€€€€€€€~~~}€}}€€€€€€€€€€€€€‚ƒƒ…†……‡‡†…ƒƒ…‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€}{{{zyyxxyyvvyzyxyxzzxutuvvvxvtuuuuvvxyzz{}~€€€€€€€€€€€€€€€€€‚ƒ†‡ˆˆˆ‡‡‡‡…‚€€€€€€€€€€€€€€€€€€€€€€€€~}}{{}{}~}}~}{}}~€€~€€€€€€€€€€€€€€€€‚‚ƒƒƒ†ˆŠŠ‹ŒŒŒ‹Š‡‡…€€€€€€€€€€€€€€€€€€€€€€‚€€‚€‚…ˆ‹Š‹’’’‘””‘‹†……€€€€€~~€~}~~~~~{{{yxxvvvvyyzzyxy{{{~}zz{}{}~€€€}~~~~~~}€€~€€€€€€€€€€€€€€€€€€€}}{}}~€€€€€€€€€€€€€€€€€~~€}}}}~€€€€€€€€€€€‚ƒ………†…ƒ…††…†‡ˆ‡†Š‹ŠŒ‹†ƒ…€€€€€€€€€€€†ˆ‡†‚€€€~{}{yvvyxy{~~zz{{}}}{zz}~yttvsppppsttuvy~~~€€€€€‚ƒƒ‡‡ˆŠŠŒŒ‘’‘’–•’’‘’‘‘‘‘’’’’’’’’’ŒŠ‡†…‚ƒ…†ˆŠ‹Œ‹Š‡ƒ€€€€€€€€~{zyyvuspnnoppqsspnlkaa```][ZZ[[]]_aklllotvz~€€€€€€~}{yy{€†……†‡‡ˆŠˆ‡‡ˆŠ‹‡‡ˆ‡‡Š‹‹‹Š‡…†‡‡…‚€€€}{yz{}~}{~€€€‚‚€€€€€€€}{zz~€€€††ŠŠˆŠŠŠ‹Š‡‡ˆ‡€€€€}yxuuvxyz}~€€€€€€€€€€ƒƒƒƒ†‡Š‹‘’’’’’”‘ŒŠ‡†ƒ€€€€€}ytqqtqnpty}€€€‚€€€€€~zz{zzvttqquuuvz}}€€€€€€€€€}{{{{~€€€‚ƒ‚€€€€€€€‚ƒ€€€€€€‚ƒ€€zuv€ˆŸІЁŒ€ypa_ZUPQZkx€ŒЄЏИНЕЏ ˆ€voltxvvtx}€€€€{tnknv~€…Œ’•–•’‹…€}uqoou{€‚‡‹…€€€~€€€€€€‚‚‚ƒuo`\_kqy€†ŠŠ†€~ztok`]\`otvz€€€€€€€€€‡ŠŒ‘‘ˆ……†Š” ЅЉЋ­ЎАЏЈ ”‘Š‡…€€‚ƒƒ…ŠŠ‚€€€}~€€€€ˆ’‘‹ˆ…}sy€ˆЅГВ …}okljZRPP[x… ИЭзлмбОЈ€tj]__][VW_pz}ul[VZlx€ƒŠ‘Š‚€v`RH?>>AHSau}€€€€{yxxusuy}~€€€€xn_[]js{€†•ЃЉЊЉІ ’‡€}xz~€€ƒ†‡†ƒ…†Š‘‘‘’””Œˆ€uk`_\Z`qx}€€€ƒŠŠ…€€}xvvsstonnnpqqstvvvv{€€€…†‹Œ‹ˆ€~ok{ИлрЩЊ…q[XUPF?CQp‹ИтџџџџџџхЧЅƒvkjpqnjkt€ˆ”’…{nnv€ŒЁ­ВГВВЏЁŠ€lR=304=HZs€‘ЄЈЄ–Š†…‚ƒ…†††ˆŒ‘Šƒ€vkXQQXkx€‡’ІЏВЏЈ•‡€zn_ZWX]lu}€€€€€€}~€€€€‚†ŠŠ†vpj[SRVX_nz€€ƒ…‚€yunossqsuuxzvtsonlptz€…‹Œ…€{vzypkV?0=]ˆЧъцТ‹_<)$ +_ЬўџџџўтТЁ€`PHMQRPNP]v€€sXFAP`z…”ЅЋЏ­І–Š€sWA0$%+lЅфџњз‘l?)  /lŸзџџџџљмГy]SRUXXUSXju{x`H0!)?]{ˆ ЈЊЉЈŸŒ€vZF3($/AVs€‡‹‹†€€zsnnu€ˆ•ЅЉЋВННА–€kPBCP[nv€‡”ІЎА­ЅŸ‘‹€{y…–Ÿ•Š€{qlakns{€ЅЎВАЋЄƒ}q`XVZ`llpuz~€~ytqpqy€€€voj\SB=0++FPs€…”ЃЊЊА­ЎЄŸŠ€~uaU_ЉтџџяОˆjSHB=+!HxЅтџџџџџљмНЄŠ€zvxtplov~€€vXA-(3H_ŒЄВПФТПИАЃ‹lVPQ[t€‹–ЁЁŸ‘‹…€~{€ ЊАОШзпиЦ­‹zjWSSWWX`s}€€‚€€~{vpjjpx€ƒ‹Œ‹‡€vaSHCBBMU`u€–ЄІЅŸŒ‚€zuonoopopqsuvuqqx~‹’ŸŸ•‘‹‚}o\PB:79HZv€ŸЋАЕАЊЅ–’…€vlP9+9X‚ЕббЏ‚Z<%S…НыџџџџџтСІ”‹†€€~€ˆ” €jN=8>Qjy…ЁВУеммлзЬКЅŠpks}‹Œƒ€uaUMFFP\pz€ЉОЬбЧКІ‚€ytqppsz€†‹Œƒ€}uqqt{€Š•ЉЏГКИГАЊ–ˆ€~vstvxxy{~}zzxsnlnstuy}~}}ysoajnsx{zx€€€{xaRK===BUVnv{€…”ЈЎГЏЅŒ{j]qƒЉаиЭЎ‡yWPF9!%S€Ицџџџџџ№хбШНЏЃ‹‚€† ЅŸ‹€aN3$(=P\s€ˆ АШелеФВЁ…‚……†‹Œˆ…€{p_XN?99>MXq€ˆŸЅЉЋЅ–‡€vpoot{€€yo\QB3!(7HWky€Œ’–•‘‹€{snkj`]ZVURQPNNNPRZnz€…А”–”Œˆ…‚€€€…‹’• Ѓ‘”…‡ƒ…’‡‚‚ˆЄАЧФНЉ‘†€‡”ЕрыћьфЭГІ‹]<Au•ЦчџџџџџџџцаГЃ‚†ЃЊЊЅ€aM8 7Ss€‹” ЃЄІЅЄЃ Ÿ•””‘•Ÿ’Š€€ul_WVVW[]aov€€†Š‹ŒŠˆŒ‘– ЄЄЄЃ”Œˆ€xp`]\\``lopsu}€€ƒ‡ˆ……€€zytn`WSNPPNPPRVX]ansuxxzysslolksjajanqstxy{vv€}€€€€‚ˆŠ‚ƒˆ…ˆˆ”” ’‘‘ŸААВЃ‹€xn`_XUXUVZl€… Ѕ­­ЊЎЎЕНКИЋЃЁЁЃЅЅЄ•’†€€€€~tlajpqty}€€€…ˆŠ‡ƒƒ†‹Šˆ…€~}€€€€€€††ƒ‚€€€€€€€€~€€€€‡‹‹‹Œ‹‹‡…‚‚ƒ…††ƒ€€€€~ytqqqpsttuy{{€€€‚€†‹‡ˆŠŒŠ‡ƒ‘Œˆˆ†€€€€€~€ƒ‡€€€€‡Œˆ…ˆ‹ˆˆˆŒ”‚€zy{yvsqppqnjjkllj__lppy€ˆˆ……АŠ…‚€€~}€€€{{zyuuuuvvqquvxvuuttqnoqstxvvxxvz€€€€€€‚‡‡‡…‚ƒ‚€€€€~€€€€}}€€{€€€~€€€†‡€†‡…€€€y€nkjos{jUnuvpx€~o}…€€…Œ­ŠƒŸ†‹ЏŒ€Š…€€o‚‚ˆ‡{€‹Š€Œ ‘}’Œz€…yŸ‹osˆˆzs…{oŠ~€‡}€{€€…‘Œ€…ЉЅƒ‘•‚€…€†ƒ€…‡Š€~€€‡ƒ€€{€ˆˆ€€†€ƒ}u€€€{~{xz€€}€}x…~€p€Œ€z…†ˆŸ†~І€‹}s€yŠ€Wu‡v€xzt€}]€€o”ƒoŠЉ}Є~ŠŠ•€€ˆ}‘‘Š‹kŠЅ€…€€ƒ€Ё…nˆЁЋ~vˆ‚ z\Œ‚k€‚~pjou€R}{XvXsz[on\U{qƒpPzlzx:‹}K†v\•€[€ƒƒ†RК}Q€Ѕv~†`€Œxn†€jvЊ‚\Ѓz‚Џzv‡ЁЁyt‡‚€p‘~u€‚‹vƒXŠЦ!ŒˆU…€€\‘{tv‘0€ЏS”…N•€‹s’ƒ€‡’…‚zСvo­tУƒZ­Ÿ€Єs•Œ€~Љƒs–€yƒ~{•ˆ€Ѕl–€Ѓs…qЊ}ЁlŠxŠy’’u–‚‹Š‹–ˆ–}’Љ€€‘ƒЊ‡€Ÿ–‚ЉІ‚€‘ОŠ€€Ў…’‡}”ЄŒ[Љˆ€€zŒ€€U†j‡SЄ}y€u€В=ƒ•kz”ƒ]Š‚n€Z–t€Q€­Œ‚A‡R…]SCk…C\]yo9_x=\y!qa:pu7pyAnMƒySq€€aX}ЎB}~jƒ€FxІ:‡pSЃz`n€Š}Nƒ€QŸ[[€…kMЎz\Š}€•sn•€pŸƒtƒЃ€oЃ€†}ŠƒЄp€бsСj€ЄЃpЄ­€Ё…Г•€­В€ŸИ‚•ŒЋЅu ­‘…€ЕІpВ€Ÿ‘‚Џ€Џ’‹ЄЃ ’І€ЧƒˆЋ€Ћˆ€ЄŠŠ€•ty”u{”vx•k}Њk}†Œ€l•€oŒu’€v}Ё‚ŠƒЁs’ ‡yІЁ}ЏІАkА•xЏz‡€}Šv~ВZ…SЎu`‹]{‘P€qa‹Uk€vPR_€kQ~_zj\xlsu[NЄNRˆSS€lpXoqz]oP€kSo\u[nBƒj0z[]\VWs\`M{lQlo~M€CЏZnЁsŒ€ƒ€В€ЊuОo–€†Сj–•‹‚ €–€Ў†]Ч\”‹z€Ёs€tˆŠv‘•€ˆ€А‡q І‹‡€•АŠŠЏ€…Ѕ~†ˆ”€€Ѕ€ˆ‹…–~†Є€€… €ƒ€€Œ‚Ёƒ€­uŒЅqЁ€‡…Œ‹€Ѓ€ŒЈ}ЄŒ‡•€ƒ…}~u‚€~~x€€q~~xv€xl€zz[{[ux}t€€€u€†n~~€Šoƒ€ˆy€€€p€vv€yo€uox{€o{zq€vu€{€{€z€€yƒ}~€~‡}€€€€€zz}†}€…x†€€Šz€†€€€€€€‹u…€‹€‚€•‚€‹€ˆ‹~ІƒŒ€‡‹†Œ†€†‹€‚ƒ€€ˆ€‡€ƒ€€€€€€…y…€€ƒt~€}zpul€kujstR€Vpvkptsnjstlpqxp~s{zy€{{}€}€z€ˆ€~€ƒ€€†€€‚†Š†Š‘ˆ…Ÿ†”‚”…’€‡‡…€ƒ†€†€Š€ƒ€€}{z~€zv€kztzpvyvnzt}yy‚{€€€€€€†€‚€‹…††ˆ†…Š…ƒˆŠ…ˆ‹‘€€Œ‚€…‹‹Š†Š‡ˆŒŠŠ…‚‘ƒˆ‡‡ƒ…€€€€y€z~{z{xvx{zxzx~~~€€}{~€x€}€x€€€€€€€€…€ˆ€€Œ€‚€‡€‚€ˆ{†€€€z‚t€€yt{xzvszpopqoskpqttlv`sja_pajjjsoxs{z€~€‚€€…€€€‡‚ƒƒŠƒƒ€‡……ƒˆ‚Œ‚‘…‹ŒŠ†‡‹……†……€†ƒ‹…†…‚‚†‚‚ƒƒˆŠˆ††‹†‹Š€†‚ƒ€†ƒ‚‚€ƒ€€€€€€€€€€€€€z€~~€€€€‚~€€€€€€€€ƒ‡‡ƒˆ‡‹Š‹Š‡ˆ‹…ƒ‹†Š‡‹Œ‡ˆˆ†‹ˆŠŠˆˆ‡‹ˆ‡Š€€€€€€€€~€~€€{~zxuzuuxspstvxvx}zy{{}zz}x~z~€€€€€€€€€€€€€€…‚‚‡†ƒ‡ƒ…‚ƒ€‚‚‚…‚…†Š………ˆ…€€€€€€€€€~y~xupqnqpnqtqpoqojjaa__`aoljlppoqtppqspqssutvytu{vzy€~€€~€€€‚…‚€…†…ƒˆ‚ƒ‚ƒ€ƒ……ƒˆ‡Š†Š‹ŠŠŒ‹••–Ÿ”’–•‹‹‹‹ˆ‡‡Š‹ŠŒ‹‹Š‹‡‡ˆ†…†ƒ‡…ƒ…ƒƒ‚ƒ…€€€€€€‚€€€€€€€€€~€~€€€€~{~€€€€€€€€€€€€€€€€€€€€€ƒˆˆˆ‹‹‹‹‡ˆŒŠ……†ŠŠ……‡ŒŠ‹‡†ˆŠ†Š‡Š‚…ˆ†……ˆ‡Šˆ…‚‡†Š‚ƒ…ƒ€€€€€€~€€€{}}{yzzvxtsvqkaja]`__a_`jokopqqvyxtyzzzy{zy}{vy}~}€€€€€€€€€€€€€€‚€€€€€€€€‚€€€€€€€€€€€~~~{{€€€€€‚€€‚€‚…†€†ƒ‚†††…€€€€€€~~~€€€‚‚‚€‡………ƒ†††ƒ†…‡ƒ…ƒ‚ˆƒƒ‚ƒƒƒ‚………‚ƒ†…‡…†ˆ‡…‡ŠŠ†‡ˆ‡‡…†‡Š…†‡‡ƒƒƒ‚€€€€€€€€€€~}€€€€€€€€€€€€†‡†…†ˆˆŒ†‡†††‚ƒƒ…††€€€€€€€€€€€€€€€€€{}{~yxvxustsyzyzzy}xzxuvuxyyxvuxxvquuusuxvv}€€€€€ƒƒ‚……Šˆˆˆˆ‹†ˆ†…€€ƒƒ€€€€€€€y~z{{€{€€€€€€€ƒ‡†Š‡ˆƒ‹‡Š……††ˆ‡ˆŠ‹Š‹ˆŠŠ†ƒ‚……ƒ‡…Š‹ŒŠ‡…€‚‚†…‚‚‡‚‡…‡‡‚€€€€€€€~€€€€€€€€~€}{~zytvu{opppqonlljnkja[[\\XVZZ\W]Z]]jnnqpuz}{~}€€~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ƒ‚‚…‡†‡ˆ‘‘””–– ––‘’Š……ŒŠˆŒ††ƒ††‚ƒ€€ƒ€€€€‚€ƒ††‡ˆ‡‡‡ˆ…‡ˆ””–•ŸŸ––”•Ÿ–‘ŠŠ‹ˆ‡ƒ€€€€€€€€€€€€€~~{x}yx{€€€€€€}{}}€€{{zxtqqpnnoooopptvutttpuvtqsxvvy{{z}€€€€€€€€€€€€‚€€€€€€€€€€€€€€€~€€€{{zxxyzuvytspssutyyz}}{{~{{~}{~€€€€€€…ƒƒƒƒ‡‡‡†…†Š‹†ƒ†ˆŠŠˆŠˆˆŠˆŠŠ‹Š‹ŒŒˆ‹Œ‹Š‡ˆŠŠˆ‡Š‹ˆŠ‡‡…†‡‚……€€€€€€€€}z{z{}}}z{z~{{{vtuvuxyxvy~zz}zvtxvstuvuxxxyz{}~~€€€€€€‚€ƒ†ƒƒˆŠˆˆ‡†‡‡ˆ†…†ƒ‚ˆ†ˆŒ‘‘‘’‘‹‡ˆˆ………ƒ‚‚…ƒ€‚‚€€€€€‚‚…ƒ€€€€€€€~€~x{}}}€€€€ukl`k}€€~vsv€‚~slXPPQPV`nty€€€•–Ÿ ’…€†ˆ’””Ѓ­ВАЈ–‹ƒ€€zsjZZ\]`kosqojaklouvxz}€Š”ЅЊІЃЁŸ”•”Œƒ€€€€€€€}xtqqsnkkj_jnpsuvxyy}€€€€€€€‚ƒƒ…ƒ‚€€€€~{utonpnakljltqlkunpvqnlyupz{qy€€€€†…ˆŒ€~xt€‡Œˆˆ…ŒЁ”Œ€uaj_W_px}€ŠЁЏНУСОЕАЉЁ ЅЈЃЁЄЁІАНПГ­ Š€uj[SH??AHPW_kpqqu{~€€‚ƒ‹”ЅАКТШЭабЭУКГЎЈ ˆ‚€€€€€€€€€€€€€}z}~€€…Œ‘‘‘Š…€€€€€€€€€€yusnk\ZWWVUWUSW`[VZ[_]jql_kaou{zvxstx}~yxvoklz€†ƒ€€‚ˆƒ€€xk\WNPRU_q{~€‡ЁЉЋЄ’Š‚‚‚†• Ё–Š€€vn]XPC=84-)+/APV`p{€Œ•”ŒŠŒЁЏГНОПФЭлсрлЭП­•…}oa\WPC==>BHF>779=?CKRZlz€…ŸЉЎААЊЄЁЄЄŸ’ŠŠˆ………‚€‚€€}€€€€€€‚ˆ‹‹Œ‘”ЁЄЉ­ЋЊЏЋЎА­ІЅ–Œ‹ƒ€€€€€zyzvz€€{}{pj`U\s€•”Œ…‚†ƒ€qXA7-%%8P_u€}€ŠŒˆ€yqolqx€…Œ–Ÿ”––‘ˆ€v_UKBFCFQ[jnqssy€ƒƒ€€€€…’ЁЈЏЕТШбзебЬФПГЋ•Š…ƒ‡‹†€€€~~yqj`]WSRQS[p~€ƒˆ”ЁІЅЄ •Œˆ…‚€€€{yvuqnk_[ZX[\ZZ`lppnkoux{{€€ƒˆŒ’‘Ÿ•ЄІЁ••ŒŠ…€€~~}€zzlj\X\]p}€€€€€€…€~volotvqt€ ЄЄ ЃЈЎААІ–’ŒŠ‡Œ’’ˆ…€€€€zqonaaaklouxy~€€€‚†…ƒ†Œ•ЃЉАИЕВАВВАЎЉЁ‘Œ‡€}vqpoook`\[[XUQPPPPSVWX\_jkaknqsvvxxy~{yz{yz}}zzvuvvxvtqpplolkkjjonpqsuvxy{€€€€€‚ƒ…ƒ†Œ‘’’’•””’Š†…€€…Œ”ЁЃ–‡ƒ€€{x{€‡Œ’ ЅЊЎАЎЉЈІЅЄ Ÿ•’–Ё ŸŸŸŸЁ Ÿ–••”’‘‹†…‚‚‚ƒ€€€‚€€€€€{yxuutuvz€€€€€€‚€€€€}z}}}€€€€~{{zvvpka``_jkkaloj`\]\]]Z\]]jkkptvvvustutqonqlntux{{~€€€€€€€€€€€€€‚…†…ˆ‹ŠŠŠŒˆˆŠˆ‡‡ˆŒ‘’‘Œ‹–ЃІЅЃ–‹ˆƒ€€€~€€€€€€‡ŒŒ‹ˆ†…ƒ€€€€€€€€€€€€‚ƒƒ€€€€€€€€}zvtuxyz{{{~~}zuttqonlnqty{}~€€‚‡†…‚ƒ††ŠŠ…€†‡ˆ‡†…†ˆ‹‹‡ƒ€€€€€€~~z{z}{~~€€€€€€€€~~{z{x{~€~€€ƒ†‡‡ˆˆ‹‘‘•ŸЁ•Œ‘”ŒŒˆˆˆ‡‡‡…ƒ†ˆ‡…††‡‡‡‡ˆŠŠ‹‡†ˆ‡ˆˆˆ‡…ƒ‚ˆ‹ŒŠ†‚€€}yslj`akllklknqsusqpnkj`\Z[`lpsstvz€€€€~}{}}yxvyxyxvxxtpnlljjljjjknoqstux{€€€€€€€‚††…‚‚‚‚ƒ‚€€‚…ƒƒ‚‚€€€€€€€€€€€€€€€€€€€}€€‚ƒ‚€ƒˆˆ†‡††‡ƒ‚…‡Š…‚‚‚Šˆ€‚ƒ€†…€‚…€€€€€€€€€€€€€…††‡Š‹Œ‘‘”’’ŸЁЁ ЁЁЃЄЅІІЃЃЅЄŸ”‘Œ‹ŒŠ…‚ƒ€€xppppppnllqx~€€€~{€}xtuxz~€€€€€€€€~}yxvutsooossqqqtuttvxvyz{~€€€€€‚†‡ŠˆˆŠŠ‹‹ŒŒŒŒŒ‹ˆ‹ŒŠ‡ˆˆ…‚€€€€~~}zxusuuvvvyzz{{}€}}{}~yxxtuqssppqtppqxvvyyyvuxxy}}z~€€€€€€€€€€€€ƒ†††‡ŠŠ‹‹ŒŠ‹‹ŒŒŠ‹ˆ‡†ˆ‘‘‘‹‡…€€‚ƒ…ƒ‚………ƒ‚€€€€€}}€€…ˆŠ†…‡‹Œ‹ˆˆˆŠ‡…ƒ…ˆˆ‡‡Šˆ†ƒ€€€€€~~~}~€€€}~€€€~~~~}{{}~zvv{{{yuuqqspnppppsstuuvtuyzxxyvv{~xvtvy~€€€€€€€€€€€€‚ƒ€€€€€€€€€€€€€€€€‚ƒ‚…€€‚‚€€€€€€€€€€€€€€€€€€€€€€€€€€~}z}€€€€€€€€€€€€€€†ŠŠˆ†……ˆ‹Š†‚‚ƒ………†ˆ‹‹Šˆ‹‘”’Šˆ€€€€€€€{z{yxxxyxxz{zvvvvy}€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚€€€€€€€€€…ƒ†…‚ƒ€€€€€€€€€€}€~{yyyyxyvuttuqspsppqttuxtxxyyzz}~~~~€€€€€€€€€€€€€€€€€€€€€€€€€‡‹Š‡‚€€€€€€€€€†‹Œˆ…‚†Š‡‚ƒ‚‚†……‚‚…ŠŠƒ€€…††ˆˆ…ƒ………‚€zxvvtuxxxy}~€€€€€€€€€€€€€€€€€€€‚€€€€€‚€€€€€€€€€€€€€€€€€€€€€€€€€€€}{z}}~}z}€€€€€~~€€€~€€€€€€{z€€€€‚…ŠŒ‹ŠŠŒ‘‹–Ѕ’Ї€‚’ЉЏАЋ€{€~yzz€…‹‹€uXWju€}tu~‚€{spx€€€~}€Š”•”Œ…ƒ…ŠŒŠ†‡ŠŒ”†€€}€€€€€{uolla]Z\__lquvussz€€€€€€ƒ‹‹‡†‹Š€€€€€€{ukoxxvspnlnn`XVX[`kja`jklka``klqstuy€€€€€€€…‹‘‘‘”–•’•ЃЃІЋЊІЉЊАЕПЊŒ‹ƒЎбиЬН’€€…ˆ‡‡‡’ЋЈ‘€aQ`~†’‹€{{€†‡€sns~†‹€€€‡q_\p€ƒ‡€~tpn````ptz~~pWPMPZlvuplkntxusokpz€€ƒ…Šˆ€€€ˆ‘ЃЄŸ‘‡€€€~{€€‚ŠŠ€zqokjnnnqy{yxqljjlpqppuz~~~}yy€€ƒ†Š’Šƒ‹•ЅЅЄІЄЃЁЎА­­АГЁƒ€{€ŸЭхзОƒ]Z]}‹’’‹”ЊЈ‘€]F[€ЄГЏ‘€–Є€{€‘Ѕ­Ў–ˆ†Œ•€zpv€–’ƒykXSV\jajtupj[N>?BP`vxkZW]qvspoo~‡‹Šƒ€‚††Š‚€€Š•ЃЅ–‹€€ƒˆŠ…€‡ŒŠ€}nksy{vqnkk__ZRU\kolj\]lqpoljt{z€€zz~€ƒŠ€€ƒŒ‘‹‚…––ЅЈ€\kWyИмгТƒUCAlƒƒ€s•z_9=qЉЋ€~‡ЁЈ †vy‡ЈУШГЅ–ŸЊЈ”Œ†ŠЄГПНЁ‚~nlu‚ˆ€€€{vtn]XXav€…‚zl`k{‚…€€€‡ І‘†€ЄЋІ•‘ЃЁ ˆ‘ЃЊЄƒ‚‚‚{qot€€€sa[Zaa[XW_pzyp_UW_qyutt{€€€vpsy€ˆŠ‹††…ŠŒŠ‚Œ••Ё’’ЄЋxvv`‡ЧљчЧŒPFW€Ѕ– Š}Ѕ…}a98t‹”‘z`a{€~\KZ~”ЊЈ’€}}€€x{~€Š‚v[NHP]p{€s_WMPQQC?BM]t{uS::?Vpqkpz€‹Ÿ€ou€”ЏУГЅЄЃ–‘ƒ‡Ÿ­СНЅ‡€€‡‡€€€Œ”Š€p\Zaqnoaatvq[NHKZnz}vu{}xtsy€ŸЁ•†‚‹‘•Ÿ”’ЅІ­ЄЃЃŸЄНИ~€€АћџмП{CVo•ТЕНІƒŸЁ€€€k{ЊКОЎ‘€€‡‹Œx€’Љ­Ј’€st€‚Œ•ЄЁ†x]X]q€ŠŠu_\Z`np\Zas€€pPBFSl~}vz~€€p[Zt‚ŒŸЈ”‡†€€†ІВГЋ€€‚†€€†ˆ––‚vk`nuvoqqovqXM>APX]_[SVZXRNPU`z€{}uknott€€‡‡…~…‹‡Š‹ŠВza€pАыШЉƒ7)K{ГГЊ‘\o‚~z~`V•”~ja€”‹z]k€”­Љ‘~€ˆ–ІЊЏЏЊ ˆ€€€‚Ÿ–•€vxpqsvaU[jƒ…€lVWp€ˆŒ‚‚ˆ‹”’‚€€”ЎВЏ­ЄЉЊІ ŒЄИУИ­‘‘’–†€…•ŸŸŠ{vs{€€€z}}€€q_UWnuyypjjqsto_ns~€€}spq{v~uty€€€€~€~}ƒs€t‹ˆ uMS8]ˆрл­–7 9PІ’†qv…€~x_Ms…–‡€x€Š‡uUV{ЎЕЎŠuanx€†‘–ЁЁ’€vqo~ЈІ†}xu{yz`P]s–”€_HAVv€€z€ƒ‡’\k{‚Є­ЊЄŸЉЁ€~€ŸОППА‘”Ÿ”ˆ‡ƒЉЊЄ‡ypsyvp]]px€yWA:FSZ\[]Zjq_XPFW_s}}uy€txqau€ƒ‘†…†‘…ˆЁ”ЅЄ‹•…oqltЋбмЬЅvKCQnƒ––‘‚}oZUUn€‚‹ƒ€‚ƒ}taZk~ƒ’ЃЃ”Œ€~€ЈАВЏЁ‚€€€€ˆ•Š‚…€~zqnpvy€€xpa]ks‚Šˆ€}~€€ƒŠŸ­АЊЃ”•ЄЈЋАВЊ–†€€€€…†‡…€{q`]_asyysoqnkZUWWjposo``a`_aqx~€€}€zvv}€…ŒŠ†–ˆ†ƒ€…ˆˆ…ƒ…‚ƒ‚€~yuu~upxlZjl]kuvz€€}znsolvtt}€~}€€~}{~€€ƒ†‡‡…€€{{€€€€ƒ†ƒ€€€‚Œ‘‹ˆ’–  •ˆˆ†…†ˆ‡…‚€€€zy{xx{{yxxyy{}yy~€€ƒ‡………†Œ‘’ЁЉЈЄЃŸ”ЅЎЉ‹ƒ’ЈА•‡‡”Њ‘€… Ѕ‹€Š”ƒ€€‚‹‘€x€€…Œyk€ktutsy€qnqy€€yjp€tup}€ptqqxtn]\po_Zlvp{jPkuz]Zu€ul\nzupqv€€x€€~{€‡‘‹€€€ƒ‚€{€€ˆŠ€€†”‘ˆ€€Œ”–”‹ˆŠ‹†…ˆˆ…€€‚Œ‚€€€Š~‡{~€€…€z€€~z~€†‡€€€€‡ƒ€€€…Œƒy…”‹€€…€€Š‡‚ƒ†Œ‡ptŒЎŒ~yТq€ГЁa€‘o€Ё€t€]jƒ€v€p]ˆ‚pF`u`ІU$tЉ€Ptqq’’Zk…ˆŒ”€‡†€oНФ9s‘y”ЅlQ†Ў{Xvv‡’XuvŸ€Pl–{_ayŒuBZŠИ€Kaq‹Ўo_€Œ€] ЎXz‚z І`Z€tАs<€”€Zsvˆy}Œ€~€~Š…€€Ѓ€{Œ€}€…‹‹x‹€Ÿ€€ˆ}…†ttІ l~†j€q€Њu`‹’Šy‘~A­Г\t€€Ћ†Qˆ€oЁˆ`jsˆАkk‘zkФŒAq‘Š}k`ЈИ€8УЎ€kvИ p_€г”R€€€ƒkЎp[y†ˆ”{=…Џ]zy\Тz/XЁЩpFS€ОЋWN­ŸQ€[€W€ sŒPŠОBq•>[иЅ[Ѓ‚ŒPXЉ‹kv{{•ƒAj–qzsV€В]Wu€y}‡yx{‹~…€{–КoMАЭ‚B€ЃЈsŸ­”Ÿ}КЅkxЬЅsЅ‹€ЕЅ\ЃИSŒФq€ЉpzТŸZ€‹‹€v‚К€N‡ЕЁ}s`ŠзtBjЬl=y€€Є€>zК‹Nt€ŸЏnAЈС€ZzЧ}p  €lА€€‡€€‡Ÿvy…y–€>€Ф–+>УЕ\`zs†ˆxq~__‹]}{n}ŠЃl0oИ{QzS€Јn8[’lA_…~-aК_P`n€?[ЄЈaV…–\]ƒЊŠ_‚€…{ˆŒS€Аp‡Ёu~Љ‘z‚ †}}‚Ћ†€lŒЁƒ\yСM‹Џ…yˆ{€Ч9”Сs…П€Њ€ЄО~QИЊy‚ЏvRŸЎu€ˆˆZ€–‡zV’Е€$zШ8oŸqЎ€!yЧ‘Xvt‡€oZ€‘~Z€€x‹j>–P_€†ys}o]†•?XŸpu~Q}€}~k€~aŠ€[‘€X•_€Џ_Ѓy€€–€y”КzSИЈW…€ƒ†~€€x ’`Œ€y‚€”€_ŒЎ{ yvŸŒx€Є…nˆ–•€p…’‚€†‹‚€†x]І€x€”j{”­qZ~–Ё€RqА‘uPyУ‘Mƒ…Œ{PЁЉ_?ЄмkC}”†€nlƒ€€t€‡ˆ]tˆ‹tV”‚sk[‹ƒj\X‘_QWЉЄ>SЈƒou€aІM?”ФzFtЕ–=nЃ’‚q{‘Ў€z‡Œ€VЁУxQŒПou‹€Ё’qa…Н€_€Ў€Z†‡†ƒ€‹ˆ•`Š €‡…W–Щ[qˆƒyˆMГy~€‘•‡‹ƒuЕ j…Ѕ‡z†‘xАt†Вˆ‚ЉЉpЅзX†г{ƒЏ€ˆ‡ŠИ\€е€VІ•t‡yƒ~ˆ [zŸ€` yq€_nЈ€H€•ojА‚3€Њ}P€_€joІ`Pz`o€†?V”€]V€ls{z}ˆky•€uyО[€Аs”С€]ЦОx{•гƒyЁ‘А VŸмsuЉ‘ƒ‹†ˆ–”zs‘ЃƒPІ€ˆjzˆ€_xЉaa€‡xp€y†{l€vˆj~uІzatЈŸ[~‘€‡]Њ pz‘”•€xƒН†XЃ”{…jŒЄ`nЄІuu…ŠˆƒnЄƒu’}yВ€€‚}Вu~ІnЃ‹Z–Ÿaƒ€…x†€ЄsГ‚€xГ­ZŒ z–ЃX€ОkxЈo€‹€ˆ€sЉqtЄ_x•PjЄkpj{€Ro…Ak‡NAŠ\Uv=nK€88=KV_knu€…‘Œˆ‚ƒŒ•І­ЏНШаллаЦИАЋЁ‹€€€€yljk]VM<89FPRZlv€†Šˆ‡ˆŠ•”’• ЉАКПНВА­Ѕ ‚€€€zxxssxtsk`\VW[WX\jss€€~€ŠŠ‹ŠŒ€†ˆ•Ј ”…‚€‚ƒ€€ˆ••‚€€{xlRB7=MS\[]s€‡•‘ŒŒ’‘•ІЈААЋЋІЃ”…€u_ZUSPNRV\j_WQRVSQNMR_u€†•ЁЎГА­Ё”‹‘’–ЄЄЃ–‹‚€ypa\WV[jotv}€€€€}zx}€…‹‘ ЉАЕККВЊЃ’Š‚€yxx{}zyxxxtp_XVURSZ`js}€€€€ƒ€€‚€€†ˆ‹‘–Ё”Ѓ ŠŠ†€~}{xs~~su€zxtpj\xˆЉЉІ”€‹‡‚xXHCUlty€ƒ–ЄЅŸ†…€€}z€ЁЋЎЉЁŸ‘Œ…€xn]XRQXjqxyl_]\_\VSQWp€… ЎКФЬФГЉЄЅЉЋЋ –ЃЋКСКЋ•‹‚€€xl][[`ou}€€ƒ€~~€€€€€ˆ’ Ё Ÿ’‹‡ƒ€€~}~€€€€€€€xo_XWXZ\]]`nsxyxssjjjnpopyvz€€€€}~ztonj[\a_nuyz€€€€†€zzsv€…’• ЕЦзмШЊpk\PPB?Nl€ЁЈЅЉЏЏІƒ~y€Œ”ІАОЬзпгО­‘€yl[PHHKPU\ana[QC?=AMS[n€”ВШлстффсбСАІЄ­ВЕАЎ­ЏЏЈ‘x`RFA<8?ABKNPNPUUVUSV[ky€Œ ЊНбтччфмбЩУЕ­Є•‘‘…€zso\QC8++048=CP]pxzz}€†‡…ˆ–ЃЈЈЁŸŸ•†€{qnj]ZSQQVXWVSPPSWXWWX[ovuy~€€€ˆŠˆˆ‹’•‘’–’†Š‡€‚€~{~€€€€‡‚ƒŠ•ŸЊЊЅЃŸ”ЃАЩмпаЧГЎЎЅ‚xoasz}z}€ŒЄАГАЃ•Œ”Š’ ЊЎЊЉЈЋ–‹€oVC:704778=CHPUX\Z\_oy€†‘ІНЭгеЬНА­ЊЄ‘…tpnk`\VPPMA3$ $09=BP[s€ƒƒ‚ˆ•–”ŠŠ–ЅЄŸ‘Œ†€vl__`][WWauxxvuvz€€~~€…‹•ЁŸ–ЁЈЊЉŸˆ…ŠŠ‹‹‡‹ˆ†€€€z~}vt{uz{€‹Œ‹’•––ЅЎЈ•ЃЃЊПЬЩФВІ’…€qWSNS_\llv‹ЅЏВЈŸ’”•ІЃ• ŸЈЕГООВАЊŸ†z\C4%$ %07<<=BFPVju€‡”­СЬееЭЦУПНАЃƒ€€€}zpk_XVRMA=:=BAFQZo€†Š‹•ЁЃ ”‘‘‹Šˆ‹‹~sj[UPCBHPRUUW]jouusopx~€ƒ‡ŠŸЁЁЁŸЁ Ÿ–‘ŒŠ…ƒ‚€€€€€€€€†Š†ˆ–ЁЃІŸЈЈЅАГГИЏІЄ‘‚‹–ЈЅЁŠ{uvslZC::>HNVjv… ЎКЕ­ЏАНЧТЕЕГГСУТУОЕЕЈ€`N?8/% (/:8:ACNV\`lquzzz{~€€€ƒƒ‚€……ƒ€{vtqspsxxvyxxsspspoxtz€€‹’–ЄЈЉ­ЉЅ ’”ЁŸ”ˆ…€€€€€€€taWSPQPHABKUl{ ­НЬЭЩЬЩгиегШСССПСКЏЉ’€v`SMHC?7!(8FRUX_o{‚‹’ЄАФггббзсчтзЧГЊЅ …€ytoa[QHA?ABB?>ANW`ly€… ЄЁЁЅЈЅŸ’ˆ‡ˆƒ€€}vqojXM<7/+)%%+3:CSX_lsy€€€ƒ†ŠŒˆŠŠŠ‡‚€~yxxtsvspvuuvy}€€€€•ЉЈЈГАЏИГ­­ЈЊІЁŸ–‡‡Œ‘†€€~€…•Ѓ•Œ†‚†€{{sosuz€ƒ‹Ѓ­АЕВААЋІЄ•Œ…€€~€€zzyuq`UM>7:930)+09CQW[]`nv€†Š‘ЁЈЋЏЋЉЋЉІІ–ˆ‚‚€}tspsqla[_p{~}uqtx~€€€‚ ЃЃŸŸЁ Ÿ•‡€€}{{tkjkka_[Z_looqvz€†‘’””–ЃЄЃЁŸ–”–ЃŸ’’ˆƒƒ€‚‚€ƒ€€€€‚ˆ‡‡Š‡†ˆ†ƒŒ‡€‹‡ˆ”†‹‹ƒŠ‹…€€}{€~€‚ƒ€z€xqqpltttvss€–†€€€€xpptvyy{€‡–Š€€€€€€€€€€€€‚€}xvsvuttonolosqsqlk_]j`aopppqtssxyx}€€€…‡ŠŠŒ”–ŸŸ–””’’ˆ†‚€€€€~}zuusxzyyvty€€€‚†ƒ‚†ƒƒˆŒ‘‹Šˆƒ€€€€€}yxx{xuqtz~{{x{€€€€€€~€{~€~}~}{~€}}€€€€‚‚€€€ƒ…€†‚ƒ‹…‚‚€€€z{€}~€€€€Œ’‘‹ŒŒŒ†ˆ•ІЎКГ­Ў­ЎАЉ•Œƒ‚ƒ€€€‡ІЊЉЎ­­ВЕЏЊ ’’‘Š†‡‡††€yvusol__[]kptttsv{}{}~€€€€€€€€€€{zvqlja]\XWWWWXWSUWQNNPKFMPPRSRUW[jljaaa``]]akosuuy}}€€{zvvxy}}€€€€€€€€€€‚‚ƒ‡Œ‘’’– ŸŸŸ––Ÿ–ŸЁ Ÿ”’•”’‘”‘’‘”––ЄІЅІЅЄЄ Ÿ•ŒŠˆ…ƒ€€ƒ€€€€€€€€€€€€ƒƒ€‚ƒ…†€ƒƒ……ƒ€€€‡Œ†ŒŒ‡…ƒ‚ƒ€~yutuz{vssty{~€€€‡ŒŒ•–’‹††‡…‚€€€}vplnnk``_\[]``jjjaakllqsvxxxz€€€€€€€€€€€€€ƒƒ€‚ƒŠŠ‡‡…ƒ…‚€€€€€€€}~~€€}yxuvvvxxxuuuvvyyxyxuutppqtuvuxyy}€~}~{{€€€€€ƒ€‚ƒ…†‡ˆ†…††‡ˆˆŠŠ‡ˆ’•–Ё ЁЃЃЃЅЁ  Ÿ–’’’ŒŠˆ†ƒ‚€€‚‚‚€€€€€€~{}€€~}{{€€€€€€€€‚€€€€€€€€€€€€€€€€€~}{}~}}zxz{{yyusvxyvvvxyxxvtuxutxvuv}€€€€€€…‡ˆˆˆ‡†‡‡ˆƒ‚‚‚ƒ‚€€€€€€€€€€€€€€€€€€€€~~~{}€}yxvyyxx{{}~}}}{}}}{}{zxxvyzzyxuttuvvuxyz{{~€€€€€€€€‚…‚€‚ƒ……†††…ƒ…‚€€‚‚€€€€€€€€€€€ƒ‚€€€‚ƒ…ƒƒ……†‡‡ŠŠŠˆˆˆŠˆŠŠŠŒŠ‹Œ‹Š‹ŠˆŠˆˆˆˆˆˆˆˆ‡ƒƒ‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~€€€€€€€€…‡‡††……‚€€€€€€€€€~€€€€€€€€€~}~yuvx{~}~€€€€€€€€€€€€€€€€€€€€€€€€}~}zzzvvutvxxxvy{}z~€€€€€€€€€€~~{vyxussssppnopnllnpoja`jpqonpuxutuxyzz{{~€€€€‚ƒ€€……ƒƒ‡ŠŒ’•– ЄЅЅЅЃŸŸ   –•””••”’‘‘Œ‹ˆ……†…‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚ƒ‚€€€ƒ‚‚ƒ…ƒ‚‚†‡‡‡Šˆ‡‡††……‚‚€€€‚‚€€€€€€€€€~zyz{zz}~}{}}€€€€€€€€€€€€€€€€€€~~€€€€€€~}zz}~€€{z}€€€€~~~~}{}{yyyzyxyxvy}~~~€€€€€€€€€€€~}zyyxxyyxxyzxvuutsponnnolnoooqsssuvxyy}€€ƒ……†ˆ‡‡ŠŒŒ‘’’”••–•Ÿ Ÿ–ŸŸ–– Ÿ–••”’ŒŠ‡†‡…ƒ€€€€€€€€€€€€€‚ƒ‚ƒƒƒ‚ƒ‡Š‹‹Œ‘”••”‘’”’‹‡…‚€€€€€€€€€€€€€€~€€€€€€€€€€€€€€‚ƒ‚‚†‡ƒ€€€€€€€}}}}}yvvuqqqqqqqstsqqppqspooqssuuxzyyyyz{{zyyz}}{{z{{{{yxz{zxvxzzyvuspsuvz}}~€€€€€€€€€€€€€€€‚‚‚‚ƒƒ‚‚ƒƒ€€€€€€€€€€€€€€€€€€€€€€€€€‚…††ˆŠˆŠˆˆŠŒŒŒŒŒŒŒŒ‹‹ˆ‡†…ƒ‚€€€€€€€€€€€€€€€€€~~~}~}{yyyyxvuuxzxux{{}~{zxyxxvvxuuusuyyyzyxy}}z{€€€€€€€€€€€€€€€€‚†…†‡†…†‡†‡ŠŒˆ††ˆŠˆˆˆˆˆ‡‡‡‡‡ˆŠ‹ŒŒ‘‘’’‘‘‘‘‘‹ˆ‡††…†ƒƒ…‚‚‚€€€€€€~}zyyyyxyyzyxtqqpooqqppqsststtsssqqqssqtvxyyyyyyzzxxxyz{zyxxz{z{{~€€€€€‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚…†‡Œ‘‘‘‘‘‘‘Œ‹ŠŠŠˆ‡ƒ€€€€€€‚‚ƒƒƒƒƒƒ‚€€€€€€€€€…ƒ‚……‚ƒ†††ƒƒ‚ƒ††ƒƒ†…‚€ƒ€€€€€€~€€~{~€}{zxutsok`]\]_``lnnklpsssqtxz}}~yuuz~€€‚ƒ†Š‹Šˆ†ƒ‚ƒ‡ˆ‹‹ŠŠ‹‹‹ŠŠ‹‹’‘‹ˆ‡‹Œˆ‡‡…€€€€€~{yz}~€~~~}yx{}~{yxxzzz{~€€€€€€€€€€~}~~~~€€€€€€‚‚€€€€€€€~€€€€€€€€€€€€€‚€€€‚ƒƒ‚…‡‡…‚ƒ€€€€€{z{yttuuvy}zvvvussvxxusttxz~~~}{z{{}}~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚ƒ†ˆ†ŠŒ‹‹ŒŒŒ’”ŒŒŒ‹Œˆ…ƒ‚€€€€~}}}{}}}~}{}€€~~~€€€€€€€€€€€€€€€€}~}{yxxvxxxzzyyz{{~€€€€€‚ƒ†ˆŠ‹’””––••”’’”””””’‘‘‘‹ŠŠ‡†‚€€€€~~{zxuuuuvxxxz{{{}}}~~}}{}~~}}{zzzyxvvvvxvvtsstxyyz}}~~}}~}~}~€€€€‚ƒƒ‚ƒ‡…‚‚‚ƒ‡†ƒƒ……ƒƒ‚‚……†ŠŒ‘’””””–ŸŸŸŸ–”•”ˆ…€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~}zxvvuttuutuuuvxyyzyyxyzzzxxzxxz{}}}}~}{zz{xvvvvvvxvvuuvyzz{~{zz{{yyxxvuuvyzzz}€€€€€€€‚‚†Š‘’‘‘”Ÿ––   ŸЃІІЅЅЅІЄЅЉЈІЈЈЈЈІЅ Ÿ  Ÿ”‘‹Š‹ŠŠ‹Š‡‡‡†ˆ††‚‚ƒ€€€€€€€€€€}yyyzyy{zuuusonnnaaja]]`_]]akajnnqtuutsssqppsvvvvy~~~}}~~~€€€€€€€€€€€€}}€~~€€~{yyyyxxzz}~}~€€€€ƒ†ˆŠ‹Œ‘‘‹ŠŠ‹ŠŒ‘’”’‹‡…‚€€€€€€€€€€€€€€€€€€€€€€€‚ƒ‚ƒ†…ƒ€€€~}{zz{~~~€€€€€€€€ƒƒƒ…†‡††……ƒ…††ƒƒƒƒ€€€€€€€€‚‚€€€€€€€€€€€€€~~€€€€€€€€€€€}~~}~€~~}{~~zy{{zy~~}}}}}zz{zxxxz}zz{}}~~€€~~€€€€€‚‚€ƒˆˆŠŒ’– ЁЃЄЄЄЄЅІЉЉЈЈЈІЄЁŸ””•’Œ‹ˆ†ƒƒ€€€€€€~~{}~}}~~~€{yvsqpopnlj``_]][[ZWWX[[XX[\]\\ZZ___`aloppsuuxz{{~€€€€€€€€‚€ƒ…†††‡‡†‚ƒ…ƒƒ‚€€€‚ƒƒ…‚ƒ†ˆˆ‹‘’‘‘••”•Ÿ ŸŸ–Ÿ•””’Œ‹ŠŠˆ‡……‚‚…‡‡………‚‚‚‚‚…‚€€€‚…†ˆŠŠˆ‹‹ŠŒ‹†‚ƒ‚€€€€€€€~~}{{{}€€€€€€€€~}zyyyzxttuxyvttvvttvz}}{}}}€€€€€~}~}yvuuttvxxxy{}}€€€€ƒ‚‚‚ƒ‡……ƒ‚ƒ€€€€€€€€€€€€€‚€€€€ƒ………‚€€€€€€€€~€€€€€€€€€€€€€€€€~}~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚‚€ƒƒ€€€‚……………‡Šˆƒ‚‚ƒ‚€€€€~~}}{{z}~~}~€€€}}{zzxuttsqsuxyyxy{€€€€€€‚…†‡‡ˆŠŠˆ‹Œ‡†Š‹‹‹‘‘‘‘Œ‹Šˆ†……ƒ‚……††‡ˆŠ‹‹Šˆˆ‹‹ŠŠˆ†……ƒ‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~}}{xvtolbbbknnptustuvsppnlkkllollnnlbaa`_`aaaabnqqqtuttuy{zy{{}{}~~€€€€€ƒ…††‡Š‹ŒŒ‘””’”””’’’›žœœ››››”’”’’››’‘Œˆ‡ˆˆŠˆ‡‡ˆˆ‡‡ˆˆˆˆˆˆˆŠŠˆ‡†‡ˆˆˆˆˆˆ‡†ƒ†‡‡‡‡‡ˆ‡…‚€€€€€€€€€€€~}{{zzzyxxyyyyxxzz{zzz{~~€€€€€€€€€€€€€€€€€~~~€€~~~{{{}~~€€€€€€~~{zyyyyyyyxxvuuvxvvvvvvvxy{}}}~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ƒ‚‚€€€ƒ‡‡††‡‡†††††††…ƒ††…ƒƒ…ƒ‚‚ƒƒ‚€‚‚€€€€€€~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚‚‚‚‚€€€€€€€€€€€€€€€€€€€€€ƒ…ƒƒƒ…††…‚‚‚ƒƒ……‡‡‡‡‡‡†‡ŠŠŠ‹‹Š‹‹ˆŠˆˆˆ‡†††ƒƒƒ†ƒƒ………ƒ‚€€€€€€€}{{zzz{zzxxyyyyxxxxxvuvxxvvuvutsttsnsttuuvxyyvxyy{{}}}}{}~~}}}}}{}}{{yy{{{yyyyvxxxxxxxxxy{{~~~~}}€€€€€€€€‚‚ƒ…††Š‹‹ŠŠ‹‹‹ŠŠŠˆˆŠ‹‹‹‹Šˆ‡ˆˆŠ‹ŠˆˆˆŠˆˆˆˆ‡‡‡‡ˆˆŠˆˆ‡†‡…ƒƒƒ€€€€€€€€€€€€€€€€€‚‚‚‚‚‚‚‚‚ƒ…ƒ‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€~€€€€€€€€€€€€€€€€€€~~~}}~}{zz{{zz{{zyz{zz{~}{}}}}}~€€€€€€€€€€€€€€€€€€€€€‚‚‚‚€€€€€€€€€€€€€€€‚‚‚‚‚‚‚‚‚‚‚€€€€€€€€€€€€€€€€€€€€€€€€€~~}}}~~€€€€€€€€€€€€€€€~~}~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~}~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~€~~~~}}}}}}}}{{{}}}}}}}}€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚‚‚‚‚‚€€€€€€€€€€‚‚‚‚‚‚‚‚‚‚‚‚€€€€€€€€€€€€€€€€€€€€€€~~~~~}}~~~~~€~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€xpat2-1.07/lib/audio/goodbye.wav100555 146 144 57254 6714247615 15247 0ustar mbimathoptRIFFЄ^WAVEfmt "V"Vdata€^€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~|xy‡“™„{z}~{xxz}~{{„‡…€zxz~ƒ„„……†…„~~~}{yxz}€‚‚€~~}~€€‚ƒ„ƒ€~}}~€€€€€€~}}~~~}|}‚‚}}~€}{{€ˆ‘—”‹„€}}~}ytqquz}~~~~~|zwuvx{€…ˆ‹ŒŠ‡„€}|}‚ƒƒƒƒ~{wusstvy|ƒ†ˆ‰‰‡…ƒ€€‚ƒƒƒ‚~||{{zyyyz|~€ƒ„„„„„„„ƒ€€~}|{{||~~~}}}~~~€‚ƒƒ„„†‡†…‚€€~}}~~}|{{|}}||{|~€‚ƒ„„…†…„‚€€€€€~~}||}}~€€€‚~~~€‚ƒƒ€~}}~~„ƒ‚€~}~‚‚~~~~€~||ysqsy‚““Š…‚‚~|{{|~~~€|wusqsx{~‚„„„ƒ€€€€€ƒ……ˆ‹Œ‹‰†„‚~}}}€€~}{{}{yywwz}‚€€€}~€‚ƒ„„ƒƒ‚€€~€€‚€}{{|{{~€€€€€‚‚ƒ‚€€‚…‡‡…‚~}}~~~}{{|{{zzz|}}}||~€‚ƒ„„ƒ‚‚‚‚ƒ„„„…„ƒ„ƒ‚‚}}~}{{yvuvwx|€‚„†…„…„€ƒƒ„„…‡‡„€|{zz{|~~ƒ}}|}|~}{{|}€‚ƒƒ…ƒ}xssz‚‰•”Ž…~{|€}}€€€~{xtpoqru{€‚„„€€„ˆ‰ˆˆˆˆˆˆ†‚€ƒ…„ƒƒƒ~{{||}}{{}}||}|||zyyy{€~‚ƒ„„„„„„„ƒ‚‚ƒ…„‚€}}~}}~}|~~|}}}|}}}~€€‚‚„†…„ƒ‚€€‚€€~€}}€~||}zz}}}€~}€€ƒ‚‚ƒƒ‚‚€€‚€‚‚‚€~{{{|‚€€€~|||{|€‚‚„…„€}}~€‚‚||‚ƒ‚€~}}{{zyy|ˆŽŠ„|z{€„ƒ„„‚‚‚~zxwvwwwz~€|zxx{{|€„„ƒ„……„„„„…‡ˆ‡†ˆ†„……€‚‚ƒ„~~~||~|z||yz|{{}|yxyyy|~}}€‚ƒƒ‚‚„………„‚‚ƒƒƒ„„‚ƒƒ‚‚€€~}}|}}}}}}}||||}}|}}}~~€€€‚ƒƒ‚‚‚‚‚ƒ‚‚‚ƒƒ„ƒ‚‚‚‚€€€€~}|{{{|~~~€~~~~€€€€‚„„ƒ„‚€€€€‚ƒƒ‚€}}}|}}€€}}}}||||}€€‚‚~~€€‚‚ƒ„„„ƒ‚€€~}}~~}||}~~€€~€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~€€€€€€‚‚‚€€€€€~~}}}~~}~~~~€€€€€€€€€€‚‚‚‚€€€~~~~~~~~}}}}~~€€‚€‚‚‚€€€€€€€~~~~~~~€€€€€€€€€€€€€€€~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~€€€€€€€€€€€€‚‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~€€€€€€€€€€€€€€€~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€}z€ˆ†~€…‚}‚€|}}€}|€~ƒƒ€€€~}‚€}~€|€†ƒ}ƒ€|€„€|~‚€€€€€€€€~~€~~€~€~}~€~€~€€€€}~€€~~~€~~€€€€€€€€€€€€€€€~€€€€€~€€€€~€‚~~€~€€€|‚€€€€€€~€„{}ƒƒ}}„ƒz}†ƒz|„…~{‚€€€€~€„z{ƒ„|z„†|y„‡zv„Š}v†z„}||„€|~€~z€‰„ts†s~‰€sy‡‰€yy~†…xz‡ƒz}ƒ€|‚†~yƒ‰zwŠyy‰v‚ˆ|}…|v‚‡y†„yx‚…€‚ƒ{x€…ƒ~z…€y†{|}~|~€€}€ƒ}zƒ~~‚‚|~…‚{~‚~~€{|‚~~|‚}€}}€€}~€€€}‚‚€€‚~‚‚€‚€€‚ƒ‚}}‚‚|€~€~~~}~~~}‚€~{„‚}}|~„‚|~€~ƒ‚{z‚‚€~€}}€‚}zƒ€€}ƒ€{‡…}y~€€{…ƒ{|~€„{‚„|z‚ƒ|}‚‚}~††}„{w†‚zzz‚ˆz~~€ƒ‚||€}|‚‚}€‚~}~}{{†€{~{}‚„ƒ{|ƒ„‚ƒ}y†…}|€ƒ…z}€€ƒ~z|€|{€}€}}|€‚€€€‚€€€‚‚€€‚€ƒ€}€„‚€ƒ€|€„~~~~~€€}}€}~€~|ƒ~|~|‚„|{€€~€ƒ|~€€}~€}}€~€}}ƒ€~‚€z|„…~}„‚|z}ƒ†ƒ€~~~‚ƒ~€…wzˆ‡|{ƒƒz€‰€y~~~†ˆ~wy…‡|{||~‚ƒ~}{z~ƒ‚|z€ƒ€‚}z€‚‚ƒ€}}€ƒ…„~x|„ƒ‚†vx‚…ƒ„xx„‚‚zy~€}y{€€~€}}€~€~}€€€€€€‚‚~€„ƒ‚‚‚€€‚ƒƒ‚€€€‚ƒ‚€€~~€~€}~~|~~|~€€}~€}|~|€}|~€€}}€~~€}~€€€€€€~€€‚‚}}€‚…†€z}…‡ƒ|x~‹‹}y€„‚‚ˆƒxy‚…ƒ€yw}‚‚„ƒ~yxz€‚€€€yx„}xwy~„‡‚{{‚}}~„„„ƒ~{|„‡‡}}~‚…y}„†{xx{‚€~}~|{~}{}€‚}|}~‚‚ƒ„‚‚‚~ƒ†„ƒ……‚ƒ…ƒ‚‚€€}€€‚€}}}{{}€€€}}||{}~€~~||}}~€€}~}|~€€€€€~~€~ƒ„‚~}€‚„ƒ€€€~„†„€‚ƒˆ…~~~ƒ„€~‚…‚zx„„…upz…†ƒ~xsx€}tt{‚ˆŒ†|urt|†Ž‡{vu{„‡„……~}€‚„„}yyˆ‰ˆ‚wuzz|‚‚€‚{vv{€€}|‚€||~…ˆˆ‡„||€‡Š‰ˆ‡ƒ~~€„†…ƒ€‚‚€~|{|~ƒ‚€|xwx|€€~|zzz{||||}€}zww|„„‚|z{~€€‚‚‚€€}~ƒ…†„‚€‚„………„~€ƒ„‚‚……„„‚}}€„„‚}}€}€}||~€{zzy{€€€}}~wrvvsy‚ˆ“ž•hWWn’ВКЂ~aS`~’˜“‚vz‡‹{kbh€•›•†rlquvvrtƒ’–ye[`r‡•˜‚xxy{~€…–𗐅zw|…‘›ž˜…~|}~„‡‹Œ‡~skjnxƒ‡…wokkmoqsz€‚xnfemz„‡„yvvyzzz}ƒˆŠˆƒ}yy}‚ˆˆ‚~‚Š‘•”‡€||‚‰ŒŠ…{z|}€…‡‡‡ƒ{tsux€ˆ‰„~{vrquwy€…ƒ€ypotx~††vk`\kЕЦРžh;.F~ЛмеЌzWMXo‰”—™’z]LNd„Ёr]]l|weY]sŽ™‡qb_iwƒ–Ёž’€qio…ЂИОЕЁ‰xu~Œ›ЅІž”Œ‡†„zxx}…Šˆ€ulfdffdelu{|ufWPS^m|{tlhimpu‡Œ…}z{€ˆŽ‘“•”“’މ‡‡Š•™š—’މ„‚‚ƒˆŒŒŠ‡‚}{{yuvww|~z|}vquslqxwxyutsv}}‚„|z{m]eƒЃФнжЈmB3EwЌЪЮМ„ueTNTf†ЊОЏ…\@8Gdz~sf`dnvthYPS\eo{†’œ ™†n`avšМабСЇ‘…‚‹›ЋИСФРЕЅ•‡†••†|usqkbWNLO[iqofZMC?AHUfu}~tf__cmz„Š“•••˜™š›ŸЃЇЊЊЇ –Œ‡‰Ž–™–‡}vvromllqusnljdbhidfkntz|{yxxxuw‚Œ‹‰Œ‘˜˜•Ž„whjšРщњшК}L=Nl‘ЋВЏЉ›„hN;6Gh‚„qVC>K_kjZC2.7Mi{„ˆˆ‚wkb`i~МЯЯПЉ™• ЎЗЛЛЙЖЖИЛЛКДЎЇ“‡}wy€†‡ƒxfTIEGLQOJFDGPY]YTOLPX_gpxŒ–˜“Š‚ˆ•ЂЋААЌЊЋЋЉІЂœžžœ˜“ŽŒ‹†€ue[\\\\]\]ada^`_YY`cgtzv~‰†‡“„…Œ›Ѓ ŸŸŸžžЂЁ™‘‚oltЄЭйдШЈlhcbhnovxl[QV_^TC.!)>Uiy{rke]XTT]nƒ–ЁЁ›–™ІГМРЙ­Ђ ЃЊЕОТФФТКЏ †„…Š‡vlfb`]WOF=;=BGKOSZ^achihnwz€‡Š—ЂЊАГБ­ЉЇЅЅЄЂЁЃЂŸ›–‹‡†„{rga_]]^^]]]\`ca^\ZWZ_gr{„‰ˆŽ‘›ЁЂІЄžЁЁœœ™ŽˆŠŠ’|mc\f€™ЋЙЕЄ“…xppqrstrokeackv~}q`ODBHS_hllnoqux}……‚~yux„–ЈИРРЛВЉЄЃЃЃЁŸ›™™——šœžŸ”†udVNNRV[\ZXWVVWZ\]]___enu€Ž–™ŸЄЃЂЃ ЁІЅЃЅ ˜˜š™›™†wqpnjhhgghgedbdfhjkjgfehpty}ˆŠ…Œ”Ž›˜‘—–’–“”‘ˆ…ˆ…‚Š‹|rma[fw‰ЃЙНЛЕЂŒˆ€~}tkig`]bit„‰{gTJIMRVXVY_fmu}ƒŠ‘”‘ˆz|†•ЁЊЌЋЉЊ­АДДБЋЄž˜‡‚€€ƒ†‡…uleb`^YRLFDEIOV^fpy|€…††‹“”•ЄЉЏДГЏ­Ѕ—’Œ‡zsomlmmorssrpkhfddefgilnrtvyz€†‡‡‰‡ƒ†Œ‹ˆ‘• ž˜˜~€€trwodcd\^s‡™ЙаЬХСАЂ –„zpbZ[XSXdo|ˆ‡}uj_[\YRNKILWbm{Š”œЁЁœ˜••—œŸŸ›™™ŸЇЌЎ­Љ š”Š‚}xvurnjfccgkkie_ZWWYZ\`dgmtv|‡Œ’žЂЁЄЅЁŸЂ ›™—“‘Œ†ƒ}||{xtpmklooprsw}€‚ƒƒƒyroonpwyuy‚„‡‘–•˜˜’’‘ˆƒuklkcdh^Y`bh}ЂМЧФЦХМЖДЉ˜ˆzk\SMGIR`mvxvspnmmg]UOJJPWaqœЄЈЋЎЏБВАЌЇЂ›–”•—™›œš–“Š„yqkfa]ZYY\^`cfkoqsttrsvwv{€ƒ‹“•–š›ЂЅЃ ž–Žˆxrojghfcdgjotuvz~ƒ‡ˆ††ˆ‡‡‰‡‚‚‚‡„~}y€‡„‡‘‘•”‘Œˆ…skf\PLHAKdz’ЏМНФЪЧЧЧКЅ’~gVI;48ALZhou€‰ŽŽˆ}oaVNKLQXdr€Ÿ­ИСЧШХПДЉœ“‹…‚|||„ŠŽŒ…~ui_WRNMMNQW`lx„Œ”•’“˜“Ž‘ŒŽŒ‘›ŸЁЃŠ‡xtmd^ZTQSV\emrw|€‚‡Š‰ŠŒ‹…‚|xy|~‚„…‡†‡“’˜™”•˜’‡{vvlaa_UQ_mv‘ЎВВММЖЛМЋ—†pZQI<8=AHXdeiqxˆ‹„zrjdeedjs{†“žЇЏЙТХХСКАЉ –މ„{wuwyy{{xtojb\UQONOOPRX`kv}ƒŒ“—ЁЈЄЂЄЂ Ђ ššŸ Ђœ’ŽŒ…}tjeb^[ZYZ`fhlqrtz‚„…‚~|{|{x{€ƒƒ‚Š˜›˜œ›”•™•Œˆ†„zj_[VXhz‚“ЉЌЊВЖБВВЄ~kXMF??DEJV_ciqvvy{tkiffjou{‚Š”ЄЊВКОМКЕ­ЈЅЁœ—’ŽŒŒ‹‰…‚€{tld^YSOMLKLORX_finty‡Š“–•—ššЄЅІЉЈЃŸœ–‘„zuqmmlkmpsuvvvwy|}|zvoiihegoqqz}ˆˆŒ”“”š˜”šš’““†}yohijo|‚‹ŸЌ­ГИАЉЉЂ‘€mZNIFEFIO[gnpqrpnmjb\\]aiouŒ˜ЃЌАБГВЎЋЈЂš˜—”’“”—˜š™–“†ule^YROOQUX[[_djqz|{||}‚†…„‡Ž“™Ÿ žžŸ  —‘Œ†}xrqrrtwwx{}~~}zurnkjjimqqqqqw}}„ŽŒ…‹–“˜˜“–އ~roolv‰–ІЏЋ­ДАЇ ‘}paPJHBFOUZckptz{vqkd`^^bhnu~ˆ“›ЃЊЌЋЋЈЃ˜–””•””—™™›˜“‡zuoihhdcffefeckrnorjgrwvwyx€ŠŒ‘’•Š‰ˆˆ‹‹‹’”‘Œˆ†ƒ~|xrrsqqrontursrpqqprqmr~{y…‹‰˜”‘–•Œ„ywxx‹’—ЄААЎБЉœ™’rcSMOPOUYYakmjjiggfc`_cny‰–ЃЇЇЂ›–”’ŽŽ’˜Ÿžœ–ˆ€yusnlmoquusuz{zzticdfggjoty‰Š‰Œ‰†xwyy|‚„…˜œžЁ š–“Š…yywootssy}ztv}wopqnpqrutt€ˆƒ…‹†‘†‡‡{vyuq•™žЈІЂЌЖЌš„vso^SU[bjic`diljd\XZ`dcen|‰”› ЇІŸ—ŽˆˆŽ‹ˆ‘š˜›Ѓš““†ywtnsysq}ˆ‹…‡„wnf\Y^a]`kt}‡‡€ˆ…}|ynjprt~‰Ž“šœ™› œ—˜’†‚„‚€ƒƒ„ˆ„ƒ‚xztlph]emkmqkdm|„—Ѕ•€wqr{ƒ~rtxxƒ”ЅКК­Ј‹™’|mf[[ilfjomlme\^gicYRXs”ЉЌІ›•—”…vxƒ€ymqЏЛДІ˜’•‘|g]]chfcl…ЁБВЇ˜‘””Œ{i_\`hot|…‹‹„xoqvsi`Z\ix‚ˆ‹Ž”“‹……†ˆˆst€™ž•„ŠŒ„wr~oj}‰†„‡‰tr{€}uedptqu{{€ŠŒŽ‹€wvrs€„~„™ІЏІ—’–’‡{l^_ihbaekw}rqwyzzvty†ŠŽ’”‰…‚~yywppz‚„…ƒ~Œ‘Ё{|‡’Ž…†Ž•š—‹€ƒ’Œyggpwzvoqx|}vmmv}wlgly‡‹…„‰…~|… ˜ik’”‹vz”›‘zl|‹…xs••wbuƒ„‰mPk„„†lTp”„js‹…‡xƒ}wx””zx}{~{rlr…“Š€…ˆˆ—w}€~~vo|‹ˆ€€…”™Œ|uxzwxvmnxzxx{~‚ƒ|qsytrz{uz††~€——Œ€€‰”˜”‹‡šš‹…‹ˆzuzvquts{pf}Šrj|‡~qz„jg’kz†iz …f{‡r|Ћ dj…Œ vS| ‰’nŒ–xruq†tipx†Ž}ƒv“~y‹ukŒŒtv‰‡y~€u”Ѕoc•“sw}tw}€†ƒ{‚†Œ˜gy‘Š~}{}…†…„{z‰Œƒƒƒ{xŠ‰ynzŠ~nz†|~xv{y}tsˆ‚ƒˆˆ‡‚‰~„}|{ˆ{t†Ž†…v…“s‚†vqz€‚‚|y~‹Œvv†wŒ€\x†t€{v‹–€bj‘Є…^fyx™reuw‹ €\r–Žrr|w‰Œ|„{u‹—‚hЇ–pu‹“‚nx€w~‚}Œƒe…Ј{Z{Šysz€yu‹pnupp€–‚kyy~Š„r}‚xŒ•€wƒ‡…‹~lz‹ˆ€x‘{m–w{Žˆ„ƒ|„wvˆ–€lx„’‹e^•‡wvut…”ds‡rw‡‚z†{t‰yq‚Š|w~†…tw‘ƒqŒvŠŒ}މuŠ‹s}}oˆŠl~‰r‹u€ˆq~Œy‡ŠbwЅ†h…v…~w€€‚‡ut„Šƒ|y…ˆ’xYІ}aŒ|x„†oj‰Žpp‚{wˆˆtv‚~Š’uv|€ž„f~ˆ€„cw‰~‹‰n|Œ’tl‚‘xo†Œv~”‚p}‡Œ”|b~•‡wp€Šw„•h^——orxtŒ‘tnvwАscqˆ’|l…|Š‘xi~˜‘y|…€•œusˆ{Ššum€y›nbŽ‘~†k{’‡tou‚Žoyz‡“vh…‰{‰ƒn|…}ˆƒlz‰}Š“ni‘’z~€w{€ˆ†ml‡Œ‚|{„v†•ƒs|ƒ†‡~vw}‰}jwŠtt…ˆ€yy‚…‰}{rЄy`|’–†hm†‡‰~jjˆЇ“d`~ŽgXxЉ˜geryd]†‹‰no‚–xc{–}}{Š’€|‡„“t}~ju—|p‚f{Ž…|ty…zu‡‚zˆ{j—lkއsyˆˆuo„ˆz†’ygƒœ„l‰uv‡€u‚‡vx…ƒ~‚†ˆ†v}ކ~ƒ|uŒ‡st…€{‰hv˜˜yj}‰z‚š~`x„z|€{†—‡jtމ~…€ty’jc‰m„†vƒvmžЁkew|’—oZo›€go}q…{†œ‚_w—“ˆxoˆ”€€…u‘yu“ƒk…Žs}“zh{„…ˆqb‚š†mk}Œ†‚ljžЅidŒq{’‹pnˆ”‰|yx{–ŸpW„Ÿrw†’mrˆŠuw‹zcƒŸ_oŒ’ot…ˆƒ…rr‰˜‡muˆ‚–…iq…––rg‰‡u•”^b–‡|mo˜}syzˆ‰u}‹rk™~hs”{jv‚‰Šsh}Ž~bo™•{vq€Є˜mp†…Š”„kr“‡~mr™˜qpys‡˜z^kŠ–…lg|xrk‚Ї˜ea€’ƒiv‰‡yr‰Šu‰nm“‹n}“Šyr~‘…o|Š}zƒ}†‹kk•aj•Œow†|ƒ…ƒtx”‹pty„—{`‰›vp†‡}y‚ˆ|}‹ynŒ—|o}ŽrwŽyqŒ‚xˆvk…ŒŽ‹ba—–rom{šˆnz{„’vv•{k‹„}—}[„Ѓ‰uv|ˆ‰€~uƒ“s…€jƒšyg€„{…‡zru‹twŠswŸ‚b‹–tz‚zˆo€‡w…‚vކf}“……{fzІ~du“‘zdu–‹|‡t…„Œ‡upƒ“‚pw{…˜„`pŽŒ‡€w{w–Š_v“ƒ„‚qƒˆr†‘pu‡w„•rkŠ…~„syŠy|‹wx…sz{~„~ww„•jƒ”€t‡ˆ€r|‘ˆuzƒ‡~kyšˆl„‰q†“lm…yŽwmŠ‡~y„q–‚mw’yk…u{“ƒu‡ƒu‰‘zls‹•rdŠŽx‡„f{Žpx•{lˆƒp‰‘ruŽ„ŒzsŽ‹{‡€o‚{zz}~‰ˆpn…‘„koˆ‰~z{‚†‰|t‰‡u|ˆ„‚†€uu€„„kr•…vˆ‚‡y‚‹tzށyƒˆ†xy€‡†wv~…Ž€gu’ˆy|qw•‡eu‹ƒxv~ˆ‡}‰ƒr„qpwq”•yi‚Ž‚„ziˆ–uv‚p…tb„ƒƒxwˆs……prz|ŽnhŒ›…x€€|‹‘weyŒ‰„}s|rv‚Аƒop}”ny|ƒ“‚r|vw‹†vqoƒ˜ˆv|‚ƒ|y{ƒ…yu|‚ŒŒwm|ŠŽ…rs‡Ž‹‚ruŠ‹zu‹ƒsw„‚ƒ‡xu‡€t…Ž{t€‚€ˆ„nyŽ}v‡‹oj’Œtˆ‹v‚’„{„€u|˜€`j‹‡utvv—yhz„‡’†^`Š˜€nv…yˆŠ‚r|Ž€yˆw€ˆˆ„|}€~‚ŠŠ}px‡†}xuw}€z{€ƒƒƒ€‚ˆ‹†„ƒ‚}‡{w‰ˆyw{‡vw|xu|yx|‚ƒvq~„{ux€ƒzq}…‚„Œ„z~ˆŒ‰ˆ‘”ŽŒ…ƒ€}xŠƒrotv||rqumo~xny‚~{{}{yy|ˆ‚ovŒ‘ƒ{†”‹yx€ƒ‡‹ƒ}‚…ƒ‰Ž‡|}„ƒ„‰…‚thvqp‡ƒukw‚‰lc^ar€ƒŽЁЄ—˜š›™„pt{t|‰Š…‚uquohigdimv……{~{ptsabvynho…“’”œš“‘‹ŒˆŠ““Œ’  ™œŽ‡‰otyw|{w‚€ov„xqqefphenjivzvurs{}||{|†ˆ’ŠŽ˜—ŒŒ†ŠŽ„€‡…~ƒ‡€yux„‡~vnp€sox€€|xyz~‡|mwˆ„xu{„ˆƒ{l^`hn{ŽžЉЕЖЄ›АКЄŽ„yv{xqu‚‡…‚ypmnl_TUOOek\e}}zokpqpnjmy†Š‘ŸЅЊГВЌЉž—œ™•—‘‘œžœŸЁ”ˆzohe`]]akpotxod]XZ`ahspmt|‚Ї…ˆ†‚„Œ––”–˜›œ—•–”•‘{†‡„ƒ€zwwunkppjiijoqtxwywps{y{ƒˆ‘ˆ‡Ž“•Šƒ€yv{}}wlebo‹ЃБПСЋ˜ЄЌŸ›”vaca\anx|~ngh^U^fYQWY^q~}ƒ‡wu}vr‹‡Š—žЂЎЖЖЕВЉŸ™„ƒˆ‰‹Œ“’‹}xqaXXTRX\^fjfo†~tolg_br…‹Œ‘š›Ё•’†~ˆŠŽš•†€€xpnmmqrtyzy{wqnggqqhhpx„‰‡„…‰‹Œ’–’ސ‘ƒvqmjlonsxvqot†›АНМЏ ’Љ‹†‚€vlqwqoy|n`XPOZ^[bgaahnuƒ€|x~—–œЋА­­ЊЈАДЈž—މ‰‰Œ‹‹Œ‚yxsmlg_[[YY\`fkllnnjlvƒ‡…‚„…ŒšŸž Ёš–—™•ŽŠ†€xzytx}ywuronnmkknprwzyz|z|yssx}„‰“™——˜˜™“‰‡‰…uloppvxu{}toofarˆ˜ЇВЏЈЉЈ ˜ƒ{xqfaeks|}vqndWSUTTX\^ep{…‘‘Š…‰œŸЁЊБЏЎАЌЁš‘‚wssuvx|~|xslgghc]\]cks{ƒ†ŠŠ„€~{y|ƒŽ—˜™žž™šŸЁœ”Œ„|wutrtvwvqjillmmjfefiqwz}€~zz}€ƒ}~…Œ“•’’–™–“”•ˆ†‡ƒysqsxxsrwxwvsmga`l~ŒœЋБВБ­Є˜ŽŠƒzrifknq{€zpg]Z\YY^^`m{„Œ‹‰†€{yuw…‰—ЅЇЃЅІЂ›’‰€vtxz{~„‰‹‹Œ‹zyvojgfimt|‚†‰Š†}ywxy|†Ž“’—™—”Žƒzsrutrtx{||zxy|wolmmllpuvv{}z{|zy{zvvz€„†”•—™™˜–”’Œ„‚ƒ~€€€}|~~{xrmhdfoz„’žœ–ˆ…ytvupry|€…ˆˆ‰†‚€{vspruttx{}}ywvuspomkouy{~„‡ˆ‡……‡ˆ‡‡ˆˆ‰””’”˜™–”“ŒŠ‡„€}|{wuxxurrsttuspptwyzz}~|„……††††‡ˆˆˆ‡‡†„~}{yyyxwwwvuuuwwuw|~}|}„„„……„„‚€€€€€‚ƒƒ‚‚‚€~{z|~‚„ŠŒŒ‹ˆˆ‰ˆ‰‹ŠŠ‰ˆ††‡‡‰‹Œ‹‡„~}|zyzzvsqpomlkjhhhgefghjknrsuz{z}ƒ„…ˆ‹‹‘’”—˜˜›œ››™—–”‘‹Š†ƒ‚~}}{xwvutuvwyyxwutttvxyz||{~„‡‡ƒ€{yz|}||~~~~|zzzzxuvxyyzy{~€€|{}}~}}ƒ€€„…ƒƒƒ€„ˆ‹‘ŽŽŒ‹ŒŽŽ‹‰‡„‚ƒ„„ƒ€}}}zz}|zzxvusppqqrtrpmlkmmmosvwwy|}ƒ……„…†„‚‚„‡‰‹Ž’““‘‘‘Œ‹‰†††…‡‡‡‡…„ƒ€}}{xwwutuwxwwyzzyxxz|||{{{|}}||€€€~}~}|}‚€~~~}~}}}}|~}~}{{~~~{yz|„‰ŒŒ‹‰ˆˆˆ‹ŽŽŒ‹‰„‚„…„…‡†„~}}}|zyzyxtrsrqtvuspooonoruyzz}~|ƒ…‰Œ‰‰‰ˆ‰ŠŒ‹ŒŽŒ‹‹‹ŒŒ‹ˆ†…‚€~~ƒ‚‚€}~}|{{yxwuv{~~}~~€}{||{yz{{{zyxz|zwy|~~~~~ƒ„„‚ƒ‚ƒ„ƒ„……ƒ‚ƒ…„‚}zz}€‚…‹ŽŒ‡…†‡‡Š‹‡‚‚‚~~~†…€}~~|z{zwvvussuvvtqponprsvy|€|}€ƒ…‡‡‡‡‡††ˆ‹ŒŽŽŒŒ‹Š‰‡„ƒƒ€ƒ…„ƒ‚‚€‚€}zxxxy{||||{zz{|z|}}}|zz{{z{yxxxxxxz{{||}|{{}~|~‚ƒƒƒƒƒ„…„ƒ„……††……„‚€|z}‚ˆ”’‡ƒ€‚‡‹Œˆ…‚|wwz{~„ˆ†‚~{xy|~~~}zwtqpoqvyyzxrnortx|€‚€}|{z}ƒ†††…„ƒ€„‰ŒŽŒ‹Š‹Œ‰‡…‚€€‚…ˆˆ‡‡†„‚€}{zyz{xwz~~}{{{zzzz{~~|yxyzyz{{zzywwxz{}}}}~}|}€€€~€ƒƒƒ„ƒƒƒ‚ƒ…„„ƒƒ‚~||}ƒ‰Ž‹…„†‡‹†‚~yw{„††…€{z{{}ƒ~{vqopqrw{xtrqpmnrx~€€|yy{„‡ˆ‡„‚‚‚‚†ŠŽ‹ŠŠŠ‹Œ‹‰ˆ‡ƒ~}€‚ƒ…‡‡…‚}|}€|yxy|}~€€~}|zz}€~}zxyz{|{{||yvvwwy|~~~~}||}~€€€€€‚ƒƒƒ„„„‚‚ƒ‚ƒ„ƒƒ‚€|}€ƒ…‡‹ŒŠˆ†…„„†‡‡†……ƒ€€‚‚ƒ…†„€~{{||||zxwvtsstuvvtuusqquwz~~}|||}‚„„„ƒ‚‚ƒ‡‹ŽŽŒ‹ŠŠŒ‰‡†…ƒ€‚„…‡ˆ…‚€~|}~~}|{{|zy{}€€~}||}~~~~}{zz{|{||zz{zxvwz||}}~|{}€€~~€‚‚ƒ…‡„‚„„ƒ‚ƒƒƒ|{~‚…‹‹ˆ„‚‚…ˆˆ……‡†‚~}~€…ˆ†„ƒzxyzz{~}zxwtqppqsvwuqnnquy|}}|yxzƒ„…‡ˆ††‰ŒŽ’ŽŒŠ‹‹ˆ‡†…††ƒ‚‚ƒƒ„‡…€}}}~}|~}{{{|}}~€~}|{}~}|}}{zyxwxxywxyyxyyxy}~~~€~‚‚ƒ‚…„„…†ƒ€€‚‚~~~€ƒ„…ŠŽ‰…„„…‡‰ˆ†‡†ƒ~}|~ƒ…ƒ‚ƒ~xy{xwyyvttsonqrrtwxvsrssty~€€~{}ƒ…ˆŠ‰ˆˆˆ‰‹ŒŽŒŠˆ‡‡††„ƒƒ‚‚‚„…„‚€~}}}}}~~{z{||}}}|||{z||zy{{zxyzyxz{{zzzywy||}€€~~€‚€‚‚‚ƒ„ƒ‚€‚„„‚ƒ†„€~|}…Š‘•“Œ…‚‚„…ˆ‹†„„|yy|€„‡‡„|xstz}}|zwtqponrwxxwsommquy~}{{|~‚„„†ŠŠˆ††ˆ‹‘‘‹‹ŠŠ‹‹ŒŠ‡…ƒ€€‚ƒ……‚€~|{|}~}{zxvvwz{|~€|}}{{|||{zyyyyyz|}|}}|zyzzz{€}|}~€€}|~€€„„ƒ„„…††††…ƒ‚}„‰ŽŒ‹‹Šˆ†‡‰‡„…‡ƒ~{xz€„„‚‚yx|{wvwwvvwuqopqrtwvsqssqswyz}€€€‚ƒ†ŠŠŠŒŒŒŠ‰‹Œ’‘ŒŒ‹‰‡††…„}}€€‚€~{y{}}|zyxyzzyyy{|~€|zxtu€†…‚~xuuwxwxyut{„††…‚€€~yusuy€…‡†…„‚‚~yurpu}‚„†‰‰‰ŠŒ‡ylhn€šЕШЪЖšƒso|–››–——p`]eq~ƒ|qhekuytgWMNWfuyvtqnmkfejt†—ŸŸ™‹„„ˆ˜›™˜—™šš˜“ŒŠŠŠŒŽŽ‹ˆ†xrooptz|yslfdgmt}„„}xvwx‰ŽŒ†z{ˆŠ‰‡‡†ƒ~~~€ƒ…ƒ~zwuvyxwvutsqrvvtwyy{{{‚†‚‚……„…†‰‹Žˆ…‡„‚ŠŽŠ‹‡…ŠŠˆ„{jW\x–НмвЊxE,DxЉЧХЉ…lhkihebn„‰{g]`imh[QXq “pK49X{‘š˜Ž…‡†€zxƒ™ЌЗЕЇ˜’–“‹‘ЁАВЇ’}njq†‰Š‰…~rdYV[eouwuqmlnjbcn~Ž–“Œxy~…‰†„‰‘•—ƒzvy„ŽŠ…‚ƒ‚zpiksy~ƒ€vmhimnsxy{‚ˆŠƒyvwy„Œ‘‘‡——–‰…ƒ‡…‚p_cv‘ЕаЦi<.QКЬПšuabqxvrjlˆ{hXZcgifbkŠqP:8Nt’˜Œ}njv€‚ƒ…ŒšЉ­Љ –’“–˜˜›ЄЏЗИЌ“|qt†šЃŸ‘„{snjd_`gpwvog^XZ\]`izŠŽ†ufdn}œ—’…}}…’œ™„}zwwx{ƒ…‚zphbbjstsuwutvuqor{ˆŽ‹ˆˆ‚…‰…„Œ‘“›“‹†‚ƒˆ‘šœ”†oZ]v–РлХ“c>:c›ПФЌ…i`j}ƒvibgzˆˆ~l[Y]^_biv…ˆzaF7>Z|‘}j_dv‚ƒ‚ƒ ЋЋЅ›’Ž– ЋЙТРЗЅŽ€‹œЋЌЁ’„zwuqkggmuyuk\QLNU^gkpzvjeaal~˜–‘‡}}€‡“ЂЌЈšz|„ŠŠ‹‘”ƒyoebiqtvz{vpnlg`aq„‰ˆ†{pptyƒˆ€ˆŠ™•Š…‚Š˜ ž“€hc|œРоеЃkFBe™СЬЖŽm`h€Šqa_t‰Š}iUMPZeghq{~s[A5=X|•xaVZm€†‚{|ŠЊЎЅ•‹‰‘ЉГМРНГЅ•ˆ†’ЄДЗЌ˜…zwyysnot{€~oZHAFUfnnpslb^YU\n‘Žˆyvtw‚ŒšЊЊ“†ww…“˜š™‘Œ…yqquz€ƒƒ€wmiihgmtvx€…|pmnruszˆŒ‘‹xouŠ”—žš…kawŸТмиЊqMJlЁЦЭЗ‹hbsŒ™Žye_q–†mXNRanqmjnvt`F57Px–“y]NRh‡~rq€–ЇЊ†vv†žАЕГБЏЊЄ’Œ“ЂГЙГЃ‘‚}‡„}{~„Љ{fTKN]nxwoid\Z\[]gqx{wttrrtvy{‹–—”Œ}v~Š”œžœ”Œ‰ˆ…„‡‰ŠŠ‰‡…xuzyu|‚‚‚|sompz~|zvvzz}slv~€ƒqer–ЖШЦЄqONqЇЭвЗ‹kds “|qq€–š‰p[Vbs€vnostjTABTrŒŽx[KOay†upv‡–œ“ƒvw•Ї­ЉЃ˜–”’•œІБГЉ™Š„†””…‚†‰†{ma^ft€tdafhgikhiqurmgcchpw||zzyvuw|ƒŽ–•Œ……‹ŒˆŠŽŒ‡…€~ˆ‰‡Š†…Ž|zy‡‹‡vjmrx{orvz‚}iWVp˜ЛЭЛˆYDLsЇЧХЉfgx‰†~…•š{lgo}††zy|waJBMh‰˜‰iPGRh{‚€}„ˆ‡vtz‡”œœ˜–•“’•ЂЏД­Œ‰”››•Œ…€{snmq|…ˆqfinlr{ysstohb`cgqxxtqpqrruxz‰Ž‰€}}€†‰‡……†ˆŠ‰…„„„‰‘•”Œ‹‹Œ‰††ˆŒ„vruz†Šzurxyqokeu’ЅАЇ‚]HFb‘ВМЎ‹m^]j{‡’›žž•€k`_m†˜š‘ƒumlmkfadq„‰u^PP`tƒ‰‡}ysmimy‹›ЄЂ“„}~ˆ”žЂЂ š˜“‹„ƒ‰•ž šŽzyy{€ƒ†‰‰„wihpswxqmkihilnrvwwtmjmpt{|{~‚€wpqxŠŒ‰‚{x{„ˆŒŽ‹‡‡ŠŠŠŽŽ“‘Œ‹ˆˆŽŽ†€‚ˆ‘ˆ{tru{zpjhpš™ˆo^Zav“ЄЄ—k`dq™™“ƒpdcmƒšЅŒxhejqx~}~xneacku{}|yvttropu}‰”˜‘‡€|ˆ“™žŸ›–‡‚„‹“›ž›“Šƒ€ƒ…†ˆˆ‡…{wttvxzzxxyvsoignwƒxnhhmu}ƒ†ƒ|tqrtx}|yz}€‚†‹Šˆ‰„……‡‹Œˆƒƒ†ˆ‹‹„ƒ†‚wt€‹‰ysw}}}|ywvvz‹”ulkv…‘™—ƒyqouŠ”›š‘‚shfp„— œykddlw†Š‡tf][cp€‹‹thcfnxˆŒ‰ƒ|ww}…––“Œˆ„ƒ„ˆŽ”˜˜”ƒ|{†ŒŠ…}vstx~‚ƒ‚}xtqqswzyurprw~…Љwnjpzƒ‰‹†~wsqt{ƒŠŠ†ysrx‚‹Œ„zuvy}…ˆŠ‰‡‚|wwzƒŒ‡zy|ƒ…‡‡†‚~~‚…‡‡ƒ|z{~„Ž‰~vtw~ˆŒ‰†€ytsuy€ŠŽŠƒzrllq{„‹‹…{pggkr~ˆŒˆvoknv~…Ž‰ƒ|vsv|„‹‚yuv|„’‘މƒ}~†ŒŽŒˆƒ|{~…‰‰†‚|vux}‚……ƒ‚}yvvvz€…†…‚|vssx€…ˆ†‚}zvuvz†‰‡ytsx}‚„…‚|yyz|‚„†ƒ~{yxzƒ„……ƒ~|||~‚…††‡…€{{ƒ‡‡†ƒ€€€‚…………„‚|}…ŠŒ‰„€{xy|„‰‰„~vqpsy…‰ˆƒ|tpptz†‰ˆ„|tpos{„ŠŒŠƒyrpqw€ˆŒ‹†€yssv{ƒ‹Œˆ€{yz}‚‡‹Š‰…€|zy|‚ˆŒŒˆƒ~{|}€ƒ†ˆ‡„‚{|ƒ…„€}z{|~‚€~|||}}‚|}}}||||}~}|||||~€~€}|}~€}}~€€€€‚„„„ƒ‚€€‚‚„…†„‚€€„„†‡„~~€‚‚‚~}}}€ƒƒ}{yz|„„‚~|zyy}ƒ„ƒ€~{z{|~‚„„ƒ€{wvx{~ƒ‚}yvvw{~€~{yy|€„†††„~€‚ƒ…‡†……„‚‚ƒ…†……„‚‚€‚„ƒƒ‚€}}||~€ƒ~}{yz}}‚‚||zz|~~€€|||}~~~€€~~}||}€‚ƒ‚€}{||}€‚ƒƒ‚€}{~‚„„ƒ€}}€‚…†„ƒ‚‚~€ƒ€‚€~€€‚ƒ€€~€~}}~~~~~~€€~~~}~~}}€€~}||}€~~~~}|}€€~}}}~€€€€€€€€‚ƒƒƒ‚€ƒƒ‚‚‚‚‚ƒ‚‚‚€‚ƒ‚~~}~€€€‚~~}|}€‚€~}}||~‚‚‚€}zy{}}~€‚‚€~|z{~€~~€~€~ƒ‚‚€~€‚€€€„ƒ€~~‚„ƒ€~~€‚„ƒ€~{z|‚ƒ„‚€€~{zz{€†‡…y{}zy{~‚††€|zz{|}~‚…†…€{z{~‚ƒ„„‚€}|~€€€‚ƒ‚€}}~~€€€~}{z|€}|}}~~{z†Šˆƒ}yx{~€„†ˆˆ…‚{z~„‡†„‚€}{|‚‚‚~||~€€€€}||}€~~~}|}€€‚‚}|}ƒƒƒ‚~|}}~‚€€~}~€wr”˜“„zvux{„†„~zspx~}†ˆ…€{z{|€ƒ„Šˆ€xssz‡–ЃЃ“€rhfs…‘›Ё›}nb^du‰šЁ˜†tcVYk{†Œ‰€voieekt}ƒ„€ztsy€……ƒ|~‚‡’’‘Š‡…ƒ†Ž—žš‘‡}x{„Ž–—‘‰‚{tpqv}ƒˆ‡tkhilqtwwussssstqnqx~‚~z{|z|„‹ŽŽ‹„€‚„А’‹†…‡†„…ˆˆ†„€|{}}yx{|{{|{zyxxzyvxywx~€}||{xurmks…›ВТМЄ„gVYqЌПРА›†nYQUhˆЅГЈlODK\mwxrkfdba_ahrvsmhhr„— vw‚‘ Љ­ЏЌІž”– ЊЏЋ “‰‚‚…‡‡ƒ~xqljjknnke^VRTY^fotqj`YX_m}Œ˜›“ˆ~xx‚›ЃЇЅ ™“’–œžš“‰††‰‹‹†vpifiopoppldcffdirsrvxvxz|~€‚„ƒ„ŠŽŽ‹tn{”ДиюцХ›t[Wh‚БЛНГ™xX?7EcŠ€kTCCMVYWQMNPTW\gwˆ“ƒqegz—ВУШУЙЏЇЁžžЂЊЖООЗЊžšš›™ƒujeeinpldYOC:8;DQ_imiaYSVao|†‰ˆ‡‹‘АРХРЗІ“ŠŒ•ЂАЗЗЎžŒ}tnnu{|yti]Z]aehe^VPNS\fr…€zwplt‚‹–ЂЅž™–““–™žž™”ˆ„†ƒ~}ŽЂЋЖМЋ‘‚qa^ejp{ƒ…ƒ}kZQMMW`^\adgpvsnlihjnqvŠ”žЂ œ˜““™ŸЄІЇЇІЈЊЇЁ™‘ˆ„€}ƒ†ˆ…~ti^VSUY_ehhhhhhgggjnt|‚†ŠŽ‘•›žœ–’‹’žЊДЗБЃsllpvxxuqjdaacfhgeccgp{…‹‰‚ysru}Š“˜œŸžš–Š†„…‡…ƒˆŒˆ‡…{rnhdd`ZZ_f|›ЏРЪОЃ‹yicjt~šœ˜’ƒtppllmbVTX_l{‚~vja[WZeuƒ˜—“’”—œЂЃЁž›—–™ЂІЈІž“…woot}„‡…|qhb\YZ^accbacgmu~‚€}yy{€Š“˜›Ÿ ™”‘—žŸ›’‰~ussrpqokgecbekptvtstvzˆŠ‘‘‹ˆ‚~}€Š“–””“‰…Œ‰|~‡~tzykkwyx{xldb\Z`afЁДЪпжИІ–€w|zuy…Ž•Žƒ€ynjcN>>AEM[irwteTH?:@IPZgwˆ—ІВЙММЙВЉ“•žЈЌЌЊІЁ›”Š}n`SJEDIR^kw……‚~zwutrqruz„›ЅЋ­ЋІ’‰€ytrqrtvxz{|~~|xsmiggiox€…‰‹Š‰ˆ†„ƒ~|{}€„‡‹•–”‘‹„ysrrpoty|€ƒ€€|xwtnkkmrxz|‚‰‹ƒ}xsw‡›АХейаЦЛЊšŽ{hXJ>991.1;KZeotpid`]^ba^]`ht†™ЌНЩЮЭЦКЎІ š”ˆ€ƒˆ‹‹ˆvi[PHEFKRZbjtšЁЅЄž—ކ€‚…ŠŽ’–™ Ÿœ•Š~qdXPMPW`hou{ˆŒŒ‹‡zupmot{ƒ‹’•˜™˜˜–ˆ‚{uqooqw‡‡‚ƒ„‚„‚{xwtqrsux|‚€zz~{ytmjp~ŽŸГЦЯЯЬХЖЈž’‚oYE9306COYfqrpnkhjligeceo}‹›ЌЙСЦЧТКД­І ˜Žƒ{wvy}~}yqi`ZURRSTWZalx…“žЃЄЄŸ™•’ŽŒŠˆ‡‰Œ““’Ž…{od\YZ\^`acgqzƒ‰Œ‹ˆ„€|xx|„†‰‘–šš—’‹ƒ{snmptwxy}€‚А‡|wtlhmqruyyz€„ƒ{x~ˆ‘žЎЗЖЙНЕЋІœŠ{o\KB826@JUcikptsrvuqomlpw€‹™ІАЙРТОКЕЎІŸ–‹ƒ|wvvvtsqoljf`]\[[]_bhow€Š’˜œŸ   žš—“Œ‹ˆ…„ƒƒ‚zurponmidabfjmqswzƒ…‡‰ŒŽŽ‹ˆ†‡‹ŽŽŠ…‚€|wvxyyyxwwz††……„‚ƒ„‚}{{{|zwvwuvyxss{‰™ЉЖРРЛЙДЈ”‡xiYKA:8IT`lw‚Œ“•“Žˆ‚ƒ†’˜ЁЉВЛТХХТК­žŽ~qe[TNJIIKQY_gmsvxyyy{~„‡Š–Ѕ­ВДЕГЏЈЁ—‹sjfdb`_^_diiiihhijhhjms|„Š–œЁІЉЇЃž—Ž…}unjijknrw{…‰Š‹Š†€}yspolknpqwƒ‡’Œ‡…‰–œЂЇЊ­ААЌЇž“ˆzhUE910457=DN\ju‡‹Ž’”‘Ž’•”•™ŸІЏЖЗЖЖГ­ЄšŽ€uj^TLFBCGLRZcks{€„‰ŽŽŽ“–šœœž ЂЄІЇЄž•‹‚{rjbZTRRTUW[`goux{‚†Š‹‹‹‘’‘‹‰‡ƒ~}~{{|}~‚}|yy{wpomimsplopoxŠšІЋЄ˜“‘”ЄЖЖЈ”ŽŽŒƒ|ulcUB8:AJTTKIQ`r‚‹’•––—••—›œ˜’ŽŽ”žЇЋЈЄ ›–‘Œ†~si_VNNPSVZ]ahpw‡Ž’’‘‘’”•“’”œЃЇЉІž™˜˜”€od]VPLHFJT]dks‹”›Ÿžš—•’‡€yusqqruy†‹‘‘’“‹†€ytrpmmliimpsz€€…‡‰Œ‰‚zrqv†ŠŒЋНайгШИЄ’jO;+ 8Pg}œЊЗРЦФЙЋ€xqlknpt~ˆ“ЂАЛРПЗЋ‘„vgVD6.+-6CSew‡•ЃБМХЩХКЋ›‚wme_\\`gp|‡‘™œ›—“ˆzrke`_bgov}ƒ‡‹’’‘‹†|wqmnpruxz~ƒ‡‹Œ‹ŠŠˆ„}xvtrrstw|ƒ‰ŒŽ’”Šƒypkkknsx~‰—ЃЏЛПЛКЙВЄ“}eRF:1)"!,;L]mz‹žЌЗНЙВЋЄ›Žthcccejpy†– ЈЎЏЏ­Їœƒvi_VLEDGNZhv…’ЉЕНУУЛ­Ÿ‘ƒvj^UNMOSX`kxƒ•™›˜‘‰€xqlihhjlpv|ƒ‹‘““‹†}ytolklnqtuw{…ˆ‰‰ˆˆˆˆ†„||}}~~~€‚„„„…„„ƒ€€€‚‡Ž“•–•–˜™˜“‹xrj`VPMMOQSW]fr‰”™žЃІЅЂœ”Œ†|wtttstw|‡Œ‘’‘Ž‹†€ztolklnqu{‡‘”—˜—•’‹„€}xtqpppqtw{ƒ†ˆ‰ˆ‡„‚€}zwtqpprvy~‚…ŠŽ‘‘ŽŒˆ‚}xtqmihilptux|„Š‘Š‰‡„~|zxwx{}€‚„‡ŠŒ‹ˆ…„ƒ‚€}xvtrqsy……‡‰ŠŒŽ‘’Œˆƒ~xtqonkfbadipux{ˆ”—™š›™”…~{yxupljknsy~€ƒ…ˆ‹Ž‘‘Ž‹‡ƒ€€}{yz|ƒ„„ƒƒƒƒƒ‚|ywuttuuwz}}ƒ†ˆ‰‰‰ˆ††…ƒ~|zyyxvvutuwxxxyz{|}€€€ƒƒ‚„†‡ˆ‡††‡ˆˆ†„„‚€€~|zxxy||}}~€‚ƒƒ‚€€€€~}||{{z{~‚‚‚ƒ…‡‰‰‹Œ‹‰ˆ…ƒ€~|yvtstvxxyyz{}ƒ‚€~~~€€~}|}~~‚„„ƒ‚‚ƒ…ˆˆ‡…ƒ‚‚‚„„ƒ~}|~€€~}}~€€~~€‚ƒƒ„ƒ‚‚‚}zyyzzzyxxxz|}~€‚„†‡‡†…„ƒ‚‚€~}}|{zyyyyz|}~~}}~€ƒ†‡‡‡‡†……†…ƒ€}{{{zyxz}€‚ƒ„„ƒƒƒƒ‚}|||}|yyxwz~ƒ…‡‰ŠŠ‡ˆ†zqllptusrtvy}€ƒ……„ƒ„„ƒ€~}~~{zyy{}}{{}€„ˆ‹‹‰†……†‰‹‡}zxwvuuwx{}€€€€€}|{}~€ƒ„„„„„…†‡†ƒ€|{{zzzzzz{|}€€€‚ƒ„…„‚€~}|{{||{{{|~€‚€€€€€€}|{{{{yz|~€€€‚ƒ„……ƒ‚€ƒ„ƒƒ‚€€ƒ„‚}|}~}~}|{z{{}€€€~~€€€€‚‚‚ƒ„ƒ€}|{z|~}zy{€€€€‚|z{|}}~€‚€~}€…ˆˆ‡„}|}~|zyzy{~€€€€„†…„„„ƒƒ‚€€€€€€€}{{}€€~~~€~}||}||}}}~€ƒ„ƒ€€€€€~}}~€€€€€€~}|}}|}~~}}~~€ƒ„ƒ„ƒƒ„„ƒ„„ƒ€~|}~~}}}}}~€€€€€~|{|~~~}~}|{{}€‚‚‚ƒ„…„‚€€€€‚‚€~}||}~}||||}|}}~€‚€€‚‚€€€€€~~~}~€€€€€€€€€€€€~||||~~€€€€‚‚€€~}~~~}}~€}||~€€~~~~€€~€ƒ‚€€€€€€€€‚~€€€€~}}~~}~€€€~~€€€€~€‚€€€€€}}~~}}~€~~€€€~~€€€‚‚€€€€€~~~~~€€€€€€€€}}}~€~~€€€€€€€€€€€€€~}~~}}€~€€€€€€€€€€€€€€€€€€€~€~€€€€~}}~~€€€~}}}}}~€€€€€€€€€€€€€€€€€~~~~~~€~€€€€€€€€€€€€€~~~~~~~~€€€€€€€€€~}}}}~~€€€€€€€€~~~~~~~€€~~~€€€€€€€€€€€€€€€€€€€€€~~€~~~~~~€€€~€€€€€€€€€€€€€~~~~~~€€€€€€€€€~~€€€€€~~~~~~}~~€€€~~€€€€€€€€€€€€~~~~~~~~~~~~€€€€€€€€€€€€€€€€~~~~~€€~~~~€€€€€€€€€€€€€€~~~€€~~~~~€€€€~€€€€€€€€€€€€€€€€€€~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€xpat2-1.07/lib/audio/success.wav100555 146 144 46170 6714247615 15262 0ustar mbimathoptRIFFpLWAVEfmt "V"VdataLL€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚‚‚€‚€€€‚‚‚‚‚‚‚‚‚‚‚€€€€€€€€€€€€€€€€€€€€€€€~~~~~~€€€~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚€€€€€€€€€€€€€€€€€€€€€€€€€€€~~€€€~~€€~€€€€€€€~€~~€€€€€€€€~~€€€~€€€€€€€€€€€€€€€€€€€€€€€€~~}~~€€€€€€€€€€€€~€}}~~€€€€€€€€€€€€€€€€€€€‚‚€‚ƒƒ‚‚ƒ„„„ƒƒ‚‚ƒƒƒ‚‚‚ƒƒƒƒƒ„„‚‚ƒƒ„ƒƒ„„„„„„ƒƒ‚‚‚‚‚‚‚‚‚‚‚‚ƒƒ‚‚„…„„„……„„…„„ƒƒ„„„„ƒƒƒ‚ƒ‚‚‚‚‚‚‚‚‚€€€€€€~~€€€€€€€€€€€€‚€€€€€€€€€€€€€€€‚€€€€€€€€€€€€€€€€€€€€€€€€€~~~~€~€€€€€€€€€€€€‚‚‚‚‚‚ƒƒƒƒ‚‚‚‚‚ƒ‚‚‚ƒ„ƒƒƒ‚‚ƒƒ‚‚‚ƒƒƒƒ‚€€‚‚‚‚‚‚‚‚‚‚‚ƒƒ‚‚‚‚€‚‚‚€€‚ƒ‚€€€‚‚€‚€€€€~~€€~~€€€€€€€€‚‚‚€‚ƒ‚€‚€‚‚€€€€€‚€€‚‚‚€‚‚‚€€€€€€€€€€€€€€ƒƒ‚‚‚€€‚ƒ‚ƒ~}€ƒƒ‚‚‚‚ƒƒƒ‚€‚„ƒƒ‚‚‚€€ƒ‚„ƒƒ‚„„„ƒ„„„‚‚‚ƒƒƒ‚‚€€ƒƒ„‚‚ƒ‚ƒ„„ƒ„ƒ‚ƒƒ„ƒ‚ƒ‚‚‚‚€€€€€€€€€ƒ………„„„‚‚‚‚€€~€€€‚‚‚ƒ‚€ƒ‚‚~~~€~~}€€~|}}}}}}~~~€€‚‚ƒƒ‚ƒ‚‚ƒƒ‚€~~~€‚ƒ‚~||~€‚‚ƒ€ƒƒƒ€€€~~€‚‚‚‚€€‚‚ƒ‚ƒƒ„„ƒ„„†ˆ†ˆ†„‚‚‚„…†‰†„ƒ‚€~~€ƒ€‚‚ƒƒ„ˆˆ††„†ƒƒˆƒŠ†„…€€‚‚€ƒ„…ˆ…„‚„€€‚ƒ„„‚€}}~€€€€‚‚~}|||~~|{{z|}~|zxvvvx|~~|xwvvxz}€€|{}€ƒƒƒ‚€€‚ƒ‚‚„ƒƒ€€‚…†‰†…‚€~€‚…€~‚ƒ‚„€‚‚}€z~~€„ƒƒ}ˆ„…€€ˆˆ…‰ˆ€{~{€|{‚}|}|||‚ƒ†„ƒ†„…†ˆ‰††…‚€€€~~{{zxwz|||||xzz{|}€‚ƒ…‰‰‰ŠŠŠŠ‹‹‹Œ‹‰†„„€„„…†††„†ˆ†Š‰‰‰ŠŒ†ˆ†ˆ…„†‚„ƒ‚~‚ƒ€€‚€‚„‚…{uonrt{x~„–ЋЙСЏ•{h]TVUQPXahsurkhlnw„‰’œЅБЙЛГЋ €{{}‚‹Šƒ|rkf`[UTTW`hlkkjgkopsv|‚ŒœЊБДБЊЄŸœ›™™•’˜™˜“‹vprssvtrwŠ“••‘ŒŠŠŽ’’’–œŸ›–ˆ‰ŽŒ…€~xtnosswvponszvwtsvw€€‚~}}~x{xv„tx{stv|prurzw‚{}…|€‚†ˆ€|rt€ƒ‰‘‘†‰ˆ†Ž’Ž‘”‘„…„‚……‰‚†~~‚ƒƒ‚€}|}€}}z{€€‚†ˆ†ŠŠ†„†ˆƒƒ~|}~|‚‚„†‚‚ƒƒ‚ƒ‰‰ŒŽŠŠ‹‹‹Šˆˆˆ„…‚ƒ…ƒ‚€€z}|o}~~€†‚{‚wwr|ˆ•…‰~}ˆƒ›‹ƒxY]h”ИзкЋ}I(&5P^khhgo}‚wup|›ЇŸЁœ ВОФСЏŽsa^r„›Јœu`TPVWYXWY^goold\_kw‚†‰‹’ АПФСБŸ‘‹’›ЈЋЊЂ˜xpkgfhmsz|wupnpsx{|„А“”’’‘ŽŽ”Œ‰}vtnmhhhagjemf]a[`llzxx~t|~|€€…x}ƒz€x}vl†|n{aapp‚ƒwƒwtˆ|€uwhas|“МзжШЂrP?Oe}’’…€ˆ‰†€x‚˜ЄЈЇ ЃБЗОМЏ™…xxŽЅЊЇ†se\^akrmjjfffd`WW`hu|~€ˆ• ЈЉЂ™•ЈБЗЙЗВАЉ›‹z{„ŒŠ…|skgllmnopt{~}xvv{~„€‰‹’”ŽŠ„ƒ€ƒŠ„‰Šƒ€xrkjglrlruhmnmnknn`}~“€~ohzx“…ƒs~{ƒ”Œ“„kY<>eŸхіыЅD F…ЇЃˆpgt…–’ƒ€†ЙЬбТБ­ВСайЮА“saf~ЁЛСЏƒS**In}weQLScnk_X[kŠЅБ­ ˜šЋСЬЬПЏЅЈЕПРКЉ™‹ƒ{slkptwn_SNVapx{}~ƒ‰Š†„ƒ†”ŸЇЉЁ•‹‹ŽŒ}xz‚}mc^^cfkgcehkpolhhnp{|}…„€nrŠxƒ„ƒˆlЇ~VŠLOuoœ“šИw]WE~юіііz €КЪДˆzhf‹€}~‰™ЉЛМЋ˜“šЋОбЯɘ}_XušСдЦЅc(F{‘šaTADPHEELg’›‰vmrˆЂИМЏЂЂЋЙЩЬЦЗААЄ›Š›Ѓ–gPGP\glnlded^UU\cvˆŠƒurŠ’”””‘“šš”‘ˆ„…††‚||smtlllejd`fa`chpmuufhndrƒˆ‘І†ˆ€‚Œ‘šГЌЉ ~up…svmp’Анюв™_'&W€ЁГЈƒ{rmdlrŸКРЧМЈ›‹’ЃДИЊšŒ‚‚’ŸЄ’v`HG\t‚€r_I@DA?<1ŽЯh]ЂSЌ”jc{ЦWIѓ2Yа‘I™ЄTЌ‰asСƒ8д]hЛPЇDtŠЕА \Уъa кпK`vŠЗ€<‚Б†WzšЯ…*ѕT…†lŸ‹gsсPs=ѓШЂ&ЫШae0цЉ*]Šіk іrо“0”ФYWˆ­€:ЕX0іgrPВш ТˆƒА і={ К ъu‰u]лxSdЧv‘_QчД ­xЪu'Љс*)і‰_YЁИB’_•h]сaTИ0і› fіЇ іЙInhі9^‰™УD†kЌ4ГЯ {Т‘s‚TœŠ­А YпœYSВKdйŒ/VвЅuі‚і:afЩз @ж‹ƒ8{ЦK|”v~ЁˆLЕuЌ‚6бЈ,Ј…ЈYUЮnnwzЉc’‚<АЕ7Лj|‘ju ЅFrŸФ:^”}LЂƒlЕg†…„Ќ{_ v‚‚ЁY|Дun}Ђfœ•~T ЁŒ]Ђƒ•sƒ–~`fЅŒ€L`­ЁUhЅre†|…Ђ_ƒ’‹z‚~†‚t‚~Ј“[f…ЏЂQSЇЅzoj‘€e€‰„•S]Е†sooЅˆv\ŒАVˆtІ^“z…pnЇ“GlЋˆmprЌœYSwЏЃ_WƒЉokƒuvm“we“Š€eašЄvoƒH–ЈxY‚”’ƒX…v™U˜wrz‚–zl‚k~x{tŠuz•ƒporšƒnt{’~t~†w€tmk‚–}€|}t„oo„‰wtx€w~Œzm~ˆjt…‘ƒv‹Š‚{Ž„r†‘Š„}‚s„”~vz”z|}s•€‚tŠŠjvoŽ„k~†|ˆf‘‚ƒ…‘‚ˆpŠ›ˆ’‘€Œ‘ˆ‚„ƒˆ†|w„‹uvz’Œcu”†pzt‹}Š‚ŒŽ€}ƒ}™‘‰‰}Š€|‚Œ€‰‚wxŠvxŽ…ˆ{~€t{z{src•€n€ƒ…rˆ†r~Š€ƒ{ˆ™‰v}ŽŠ‰tv™‹r|†ƒozƒ{pwv…ƒvru‚Š‚‚x‹‚v†}€‘…‚ƒ„‹|‹€z€xƒzzw‚‚xxuƒ…v„~u„†}€}€{|t†“s€„Ž‚‚…}ƒ‰€‹Žs|•ˆw|…ˆƒ‚|‹Š{zŒŠ„{u”~„†ˆ€ŠŽ€€‹‹€|ˆ‰ƒz€|‚‰„ƒ†„‚‰wŠ‰„…‹€€‹xƒ”ŽŠ{І{„„‚€‰ƒ}z€‚Œ~wŒ†zv‹v~†„‚{„}††ƒz††~‚ˆ‚|‚…ƒ{ƒ€{„ƒ}ˆ}{…‚{ƒ‚ƒ„v„„}ƒzˆ”€r€Œƒ‹†s„‘„w„Ž…ˆ‚„„“Š}‚І€}„†{€|zrƒŒƒ{w„ƒ„}{Œpv…ˆ~|zІ{€‚–œŽˆ•†r|tjfuwtŒ™ˆ‹–Š‰Ž‚}nfkp{}}ˆ„~‹ˆ|‘ˆ‹Šˆ›”‘ˆznr{}|sr{{}zswvjstphejo}€ztv{st}wtƒ‘‘Š„Œ’”‘Ž”‘€ƒ‘Ž‘‚…”Š…~{stsprzzmkvwohnkdjgah|snv†}~ƒ‚†„}‚‘‘ŠŽ‘™ŽŠ‘ޙނŒƒ„‹‚|ˆ|…pm‚}uƒ‘xr††‰‚mam{Ђ‹„‹™•Œ‰x}’Š€zwkt“ЌГЉ ŒЃЌЂ‘‹–†” ŸЁ•ŽЄЄ –‹}nvpozlz€z{hc\]cVWO@MPY^ehar‚ƒ€…ˆx}•œ•Š›ЋЉААДВЌАЃЇЃŸŽ‚‘ŒƒznspojaXTUNOOHGNNPTX[SQX`e`afljt}ˆ}†ˆ‹‰‘…ˆ“‹Ž‹|ŒŒŠ‚Œ€jz‰ltt}sƒ†…lˆƒ„‰œ…š‹“€Œ“ЊЅЂЁЈ ЁЏЉЃ” Œu„†zu†‘œ›š–˜”ŸЇ™›‹˜–’œЅЏЌЅВЉЂš‘„‰ƒ‚us{tmcg`][NFG@6@EPNP]]jotv†„‘š›ЂЈВИМОГВЗЕЋАЃœ ’Œˆ|ssno`U^SMHIQE>ETSMVU^^`hggpnp}‚‚Œ‚›’‰ˆ~|‹…z~||}zxvpwm|nn~x†‰…}ƒŽ‹…Œ–‰–™“ ЁЄЈЄБ˜˜Є” ЇЌЄЂВЃ›Ќ ›‘‚|wloefx{‹“œЉЉЂЉЉЂЄ›•“‹ˆŒ†‰šЁЂŸЉЈš“†~xrjhg`^he_^`^TEFMBBFIV`hgl|†Š•–˜ŠŽ…‘›–™™Ÿ™˜•‘Žtuofef`a_^^TU\_WT_XW`W]los‚~‰ƒ|‚„ƒ„†ƒƒ‚ˆ‰‹ŽŽŒŠ‹ƒ…Š}…|~{uz}ww‚†‹‚x†…†Š‘‘–ЃŸ–››šЂœ›š‘Ž““–’” œŸ›™”’’“šЁ•‘›˜•› ’‰”Œx{xlgp|woŽŠŒ”›˜›Ѓ’Š”~……ˆ“‘Œ”’ŽŽ“Ё‚seec^\[XXXXUQUOTWVYST\[Ycjpvz}‚„ŠŽ’••‘Œ‘’Œ‘Ž“–‘†…Œ…~~vpmnlchh\ekeehnedvrjoruot{wz{€~…†}Š†„А†ˆŒ‹†Š‘ˆ„ƒ†€{}~€zvzx|ƒ‚ІŽ“ˆ‰ŽŽŒŒ‘’–œœ–›š˜›ŸŸ™›Ž”Ž˜  Ÿ•“•’š –…}upsvpr{vsrw~{…‘ŠŠƒ~zz‚ˆ…~‰€~‹˜”‘ƒzw|vosuodajcW]ff`daYWWQUc`Y[chgkv€ƒŠˆ†‹’މŒ‘‘’šš˜›ЁЃ ššœ˜‹†Œˆ||}z|zvtuztomlohkhfhlonlopntwuv|}x~|ˆ‰Š…ˆ‘’Œ‹“–“‰„„ˆˆ‰ˆ„ƒƒ†„†ˆ…ˆˆ„„…‚ƒ‰„†ŒŒ†‹•‘˜ •˜Ђ˜“š“ŠœЁœš”‹™ЄЇЂ‘‚}‚{„€stxrkz„ˆ…ŠŠ~{{vu|}xux{rsx||…ˆ~znp|€rnm`^cnljpstspmrsnlltprurwu€Š‹ŠŒ”Ž“’“˜–””‰‘•‘“’‘”’Œˆ‹‹†Š„€}ux{tt|znvwswvxrorotoolkvwrs|}w{}€~€€€ƒx~†„‚†„‚|‚†€‚€|zx|}|}€„‰‰ˆ‰Ž‹ŠŽ•’Œ’•ŽŽ“”™›‘”œœ›œŸ“‰Œ˜–”€„ŠŒƒtx{|~tllnhhtzxz}}}‚ŠŒŠ†…€|}}|}ƒ€x|ƒ€xnmhcddg`^\UY`gjhkjoonrsvx{}}}~‹–™˜˜š››ЄЊЅЁŸ›˜™›š’’””Œ€~ztpomplmoottuwsootxxx{ortu|€ƒ€…†……‚†ˆ…„Š‹€‚~}ƒˆ‚~‚~{}}}}}€~~‚†ŠˆŠ‘Š“”–”š™”–––™›™•’”““˜ŽŒŠŒ““І„{Š‹‰„€umv{uu}vjmpko}|}€wv€€‚ˆ†xw‚v~„€{~†wz{wwztomnfchhdfe^dkjeekklppszwtx}ƒ…ŒŽ”™ Ÿ ŸЂЁŸŸ™•–“•˜š˜’‘‘‹ˆˆ„…‚~zuvpowtwvrpmpsnstpppsustxz€…€„„ƒƒ†‹ˆˆ‹„„…†Š„…ŒŠ††}‚‚€€|||€„ƒƒƒƒ„ƒ…†ƒ‰‘‘Œ‘•’›œ–šœ˜•”•˜™˜“”“’‘’Žˆˆ„}†Œ‰ƒzjhz…p`TUan}€te^ezŠ’•†v}„ƒ‰‚~{w}„ƒ„…ƒƒ‚ƒƒ~vofflkmaWVSXX^a^^]]addgjnstx~}€„š›œŸš–›ЁЅЂ  ˜”–š›œ›œ’“‘‹„‚~wvpnmlomglnlnnlrstsmvzuzz}~‚‰Šˆ†‹‹“ŽŽ‰ƒ…†„‚€€||||}|zxws{}}€~€€‚††ˆŽ„†Œ‹‹Ž’••”•ŸŸ Ѓ™Ё”–’‘’’“‰Š••‰ƒ…ƒ}€„€}ƒŠŒ†ƒ€‚}tlgefhggnonx‚†ŒŒˆˆŽ‹…††„‚€„„‰‰†ˆ…|}{plje^Y\\XWW\afjjkorpuww{|€†‰‘™š ЇЌЋЌЏЊЂЂЂŸ–‘ˆ…‰Š‚„„€€||xsnnjeeadekmo}}€„„†Š‰ˆ‹ˆŒ‰Š‹ŽŽŒ‘ކƒ†‚|}~rnoomknrstwzxx{zw}~z}€‚‘Ž’–˜““˜“’“••“˜˜”•––š•‘‘ŠŒŒ‰Š’‹Œ‹‘–‘‹š’…ˆŠŠ‰…‹zƒƒƒ†††Šˆ†‚|upplheea_fopu„‰‘ŒŠ„ˆˆ{|}€}}xtohfeac`^]ajkktuostvtv{w|‚ˆ”›  ЃЄŸš•Œ…„€{~‚‚~„‰Šˆ~}{|~|x}€€„ŒŒŠ‰‹Œ†ƒƒ~xx{zvwvx|{{xvuonoopmpstx}ƒƒ…„„……‚€‚ƒ„††‰‹‹Š‹Š„ƒ†ƒ{{€‚€…†ƒ…ƒ€‚…ŒŒ‘“’‘‘‘”’ސŒ†‚‰ƒ‚Š…~x€‚x{€~w}|z|~}~w{|‚…†ƒ‚}wxx{|vmg`_eovv€}…‰†Ž’‰Šˆƒ‚ƒƒƒ†Š„}€|wwxrnllgadhnotsrruux‚„„‰‹Œ‘˜ЁЃЉЅ™™–‘‹„}|€€|{zvx{ursx|{|}}}„†„„„|‚€€ƒ„‚„ƒ€‚‚~wx{€‚ƒ„ƒ„†‚€€}{}~}}ƒƒ‚€~~|}€€‚†……†Šƒƒ„ƒƒƒ„„…ˆ†…‰‘’‘•“‘Œ…†Š†„€~{ˆ‚„†ƒ‚ƒ„‚‚…ˆ…‰ŒŠ„ˆ„~†Œ‚|{|}~…„„ƒ}xplgeedcedcgnxƒ†ŒŒŽ“”“š–ŽŽ”’Œ†zwurpsssssoklnnmolmpmp{€…‰ŒŽ’”’‘ŽŽŽŒˆ‹‹†„Š‘‰‰†‚ƒ„„„‚€…‹Ž‹‹‹Œ‹‹†‚‚€ƒ„€}ƒ…ƒ‚}~}€€ƒ‰ˆ…††…†‰ˆ„€ˆ……Љ†ˆ‰††…„€€~~{xzww{{tuxvx{x{}|~‚ƒˆ‹ŒŠŽ‘‹’“ŒŽŠŠ†Š‰ŠŠ‚‚}~~|}}ƒ‚}~}~ƒ€~‚€{{xƒ~†€~~|zvx{}~z}€‚ƒ‚€~vpmfcfkkhfggjnrv|~|~‚…‹Ž‘’“Œ‰‰‰…€~|wtuutrsuvwxwutrppsz{x}‚„†Œ‘““‘Œ‹ŒŽ‘‰‰ˆ„ƒ…†„€‚€€‚„„ƒ‚ƒ€€‚€~€‚……ƒ„…ƒ€€‚„„…†‚„†…„†Š…~|~~€‚ƒ„„…ƒ€‚€ƒ‚ƒ†„€‚‚~‚~}€€€ƒ„‚‚ˆˆ†ŠŽŒ‰„…………‚…‚€„Іƒ„„~}~~‚{}€zzƒ{€}€‚ƒ€ˆ…†ˆ‚‚€…|wtowztzvtxpprlprpwtrmfffeghhjfehmrv{„‹‹ŽŒ‹‘Ž‘“’“‘ŒŒŠˆˆ††‚}|x{}|||zxvuvvwzzzxz|~„‰ŒŽŽ‘’““’‘’ŒŽŒŒŒŠ†ƒ„…‰ŠŠ…†ŠŠ‹‰…ƒƒ€€‚€‚„‚}~€‚€€€€‚ƒ‚ƒˆ†„…‰‰†ˆŠŠ‰ˆ‰ˆ„…ˆ…„ƒ‚€ƒ~|z}~|{}}w{}|~€‚€‚„„„ƒ‚†††‰‹‰…‰Œ††‰„ƒƒˆ„‚„„€z~|wzx~ƒ~|‚€‚~~€|w~}}}}„ƒ}€~{€~xw{usvutv||wz{soppmlommswv{€€‚…ˆ‰ˆ…ˆ‹Œ‘““““”Œ‰…‚€~}|}€ƒ‚€€}~|~‚‚…ˆˆŠŠŠ†„†††ˆŒ’’ŽŽŽŽŒŠ‰††‰Š‹‹‰…„ƒ~}||~€‚‚ƒ…„ƒƒ‚€‚‚€ƒƒ‚€€‚‚ƒ‚‚ƒ†ˆ†ˆƒ‚€||}|}||{xz|{xzxwxxxx{|z~€€€‚ƒƒƒ†ˆ‰†ˆ‹‰ŒŒŒŒ‹‰ˆ…ˆˆ……††…†…„‚‚~€~z|z{zx{x|}xz}~~}}€~ƒƒ…„„…ƒ‚ƒ€{v{}~~|vuvtorokosssrtttuspnmomnsuw|„„ƒ„†ƒ‚ƒƒ‚ƒ†ˆŠ‹ŽŒ‰………‚‚„€€€‚ƒ†„~}~~|{}~‚…‰‰‰‹Š‹‹ŠŒŒŽ’•••“ŒŠ‰‹‹ŒŒŠ‰†††††…‚‚€~||~~€~|}~€~}}}ƒƒƒ„„†…„€€€€€€€€}}|{{zz|||}|{xz|z{{xwxxww{|{||{{}~~€€€‚ƒƒ„…††††„„‚‚‚ƒ…„ƒƒ„„„„†…„„€}z|}|||{|{zxz||{xvvw{{}~€~€‚‚ƒƒ~}~~~€~{{zz}}|}}~}z{}~|}€~~ƒ‚‚‚ƒ„††††ˆ‰ˆ†‰‹‰ˆŠ†„„†‰…†‰ˆˆ†ˆ‹Šˆˆ………„ƒƒ„ƒ‚ƒ„ƒƒ…ƒ‚ƒ‚‚‚€€€€‚ƒ„ƒ„…†ˆ‰ˆˆ‰‰‹‰‰‹‹Š‹Œ‹Š‰‰Š‰ˆ……„ƒƒ€€€€~}~}{|~{{}|}~}€‚€‚‚ƒ‚‚ƒ‚‚€~~~|{}}zzxwwx{xxzwwzz{|}}}||}~€„……ˆˆ††‰‰Š‹Šˆ‰‰‰ˆ‰‹ŒŽŒŒ‰ŠŠ‰‰‹‹†…„ƒ„ƒ„ƒ‚}}~~~~}{xz{zz{zzxwwvwzxzzz{|zwwzzzzz|||}}}ƒ‚ƒ†‰ˆ††…ƒ„„……„‚ƒƒƒ…ˆ…„…††…ˆ‰††……†††ˆˆˆ†……†„…ˆ…ƒƒ„ƒ€‚‚~}||~~€‚‚‚‚ƒ……„………†††ŠŠ‰‰ŠŠ‰ˆŠ‰†ˆˆ†††…„……………„„„‚ƒ„ƒ‚‚€€€€}||{|}}||||{|~|{|{zxz{zz}}}}|||}}}}}|{|{||~~}~~}}}€€€ƒƒƒ„„„„„„ƒ‚ƒ„ƒƒ„ƒƒƒƒ„ƒ„„ƒ‚‚‚‚ƒ‚‚~}}}|xwzzxz{||||zz{||}}~~~~‚‚ƒ‚‚‚€€‚‚„„……ˆ‰ˆˆˆ†††„ƒ‚‚ƒ‚‚ƒ„„ƒ€~}~}~€€‚‚€€€€‚ƒƒ„†‰‰ˆ‰‰‰ˆ†……†…„„„„‚‚‚‚€€€}~~}€€€€€€ƒƒƒƒƒ…††„„„„ƒ„„ƒƒƒƒƒƒ„ƒƒƒ„„ƒƒ‚‚€€~~}|z{|{|}}}||||||}||||||~~}~}}}~}|~~}|}~~€‚‚€‚€€~€€~€€‚‚ƒƒƒ…††††††††……†…†…ƒ„„‚ƒƒ‚‚‚‚‚ƒ€€~~~~€~~~€€€€€„……††…††……††„„ƒ„…„„†ˆ†ˆ†ˆˆ……„„„ƒ‚‚‚€ƒ„ƒƒ„ƒƒƒ„……„„„„ƒ‚€€€~€€‚ƒ‚‚ƒƒ‚‚ƒƒ‚‚‚‚€‚ƒƒ„†ˆˆ‰‰‰†…„ƒ„ƒ‚ƒ‚‚ƒƒƒ„„……„ƒ‚~~}}~~}~~~}}}~~~~~~€~€‚‚€€€€€€€€€€€€€€€€€~‚ƒ‚‚ƒ…‚€€‚€€€€€~~~|{|zx{||}||}}~~€€ƒƒ„„…„†ˆ††ˆ‰‰†……ˆ‰‰ˆ†ˆŠ‰†††††……ƒƒ‚€€€€€~€€€~€€€‚€€€€€€~€€‚‚‚ƒƒ„„„„„…††ˆˆˆˆ†ˆˆˆ‰ˆˆˆˆ†„……†…†ˆ†…„………………†„„„ƒƒƒƒ„„„…„„ƒ„„„„ƒƒƒ‚‚‚€€‚‚€€€‚~~~~}}}~}}}}}||{zz|}{z{|{z{|{zz|}|xz~}}}}~€€~~~€~€ƒƒ€~€~|€~€€€~€‚€ƒƒ„„‚‚‚‚ƒ„„ƒ‚ƒ‚‚ƒ„ƒ‚‚‚‚‚‚„„ƒƒƒƒ‚‚‚‚€€€€‚ƒ‚‚ƒ‚‚‚ƒ„„„ƒƒ„„„…†††††„„………††††……††ˆ‰‰ˆ††…„„„„„„„„ƒ„„„††ƒ„†„€‚ƒ‚ƒƒƒ‚‚‚‚‚‚‚‚€€‚‚€ƒƒƒƒƒƒƒƒ‚‚ƒ‚€€€€€€~€€€~~}}~}}|}}{|}}|{{|zzzzzzzzxxzzz{|||}}}}~~€€~~~~€€‚€‚‚‚‚‚ƒƒƒƒ„ƒƒ„„‚‚ƒƒ‚‚‚ƒ„„ƒƒƒƒ‚ƒƒƒ„„ƒ‚ƒƒƒƒƒƒ‚ƒ€€€€€€€€~~€€€€€~€€€‚‚‚‚‚‚ƒƒƒƒƒ„„„ƒƒ„ƒƒƒƒ‚‚‚‚‚‚‚€‚‚‚ƒƒ„„………………„„…„„„„„…„ƒ„„„„ƒ„ƒ‚‚ƒ„…„„„„„„„„ƒƒ‚€€€€€€€€‚‚‚‚€€€€€€€€€€€€€€€‚€€€€€€~~~€~~€€€€‚‚‚‚‚€€€~}}~}}}~}}}}}}}}~~~~}}}}~~~}}}}}}~~}}}}}}}~€€€€€€€€‚„„ƒƒƒƒ‚‚ƒ„„„„„ƒƒƒƒƒ„„‚‚‚ƒ„„ƒƒ‚ƒƒ‚ƒ„……„ƒ„…„…†††……ƒ„„……††††…………†††††„„„„……†††………†††ˆˆ††………†††ˆ‰‰††ˆ†††ˆˆˆ†…„…„ƒƒƒƒ‚€€‚€|z}‚ˆ‹…xux}}vw}ww|„‰‹ˆ€{{€€~xvtsw‚~|„ˆƒ„~~|wvxxx|swz{}}{{}‚ƒ€x}€~z}}~|~†„‚‚‚ƒ‚…ˆƒƒ…ƒ}‚‰…z~ƒŠƒx|‚‰‰ƒƒuv„‹ˆŠŒ……}}‰Š~uhn~Š–…utƒŠ‚ˆ’†€|‚ŒŽ…xr{†€~{{z…„zw}ƒ…€}vv‚Œ‚kn…Ž‹{r|‹“’†}{ˆ‘ˆ}‚‰‰†Ž’ˆ††‚ƒzosˆˆ|v€‚‹Šzx}~‚z|€†ƒw}}Šˆ~‰ŒŠ‹Ž’„†Šˆˆ…ˆ„‚€~‚‚‚zu~„ƒ}{‚„‚ƒ€~z}…‚~ƒ‚‚~~€|z{~†ƒxz|xxus{ur{xrxzvv{~{vtv€ƒƒ€}€€…ƒ€†ˆ‚€‚„†…{€ƒ|„€‚€~~~z~€|x~ƒ‚}~€†‚‚‚…„„ƒ€€‚†‚|€‚€‚€ƒ~‚‚}~€~~|ƒ„€~‚„ŠŒ‚„‹Žˆ‹‹†„„„„„ƒƒ†ƒ}~‚„€‚~|{ƒ„€†‚…„…†ˆ„‚ƒ…ƒ~ˆ†€‚…Šˆ}ƒ‚„€~~€ˆ„}{{}}~~}~€~~€‚€}„ƒ€~x}†‰€{}……„{x{ƒ†{{~„‚~€ƒ…‚‚†…ƒ‚„…‚~ƒƒ„€z}„‹€x}ƒ„}|€‚|€||}}‚‚{{…†ƒ}~‚‚†z~ƒƒ€„ƒ€Šˆƒ‚‚‚ƒƒ~‚ƒ}„‚€€}‚„‰…|ƒ†Šˆ„…†ˆˆ„„ƒ…ˆ†…ƒ……„„†……†ˆˆ„‚‚‰…€€……}|„{x~~~~„‚ƒ‚‚ƒ‚ƒ…„€€€€€~}€€€||~‚€~ƒ~~~€†ƒ}‚„……„„…ƒ‚‚‚€€ƒƒ~~|}‚€|z~~€€€‚€{|‚‚‚ƒ‚ƒ„‚ƒ„††€‚…†ˆ†…ƒƒ‚€€€}~}xwz~~}{}}{||}}}||~~}|}€€||~|}~~‚|z‚ƒ‚~zƒ{}‚~~€€‚‚€‚ƒ‚‚…‹‰}‰Š‚~‚ŠŒ‰…†ˆ‰ŠŠ†‚„ƒ‚„ƒƒ„„€€……‚„ƒ‚‚†‰„‚ƒ‚€}w{~}€€…‚‚ƒ†Œ‰~ƒ‚€ƒ……„„{w{twˆŽŒ…xns~†ŠŒŠ„{v~Œ‘Ž‹…zˆ‰‹„‚ƒ‚€}|~|xx|{vrswvrppsw|xpnpwwvz|{w{{{€}„‚ƒ…ŠŒŽ•“ŒŒŽŒ†‰“ŠŽ†€ƒŠ‹†~€ƒ…„ƒ„{pov|{€ƒ}vtoorpuzvrmkmruz}xvz}{rp{‚}ƒ‚…ŠŠŠ†…Š‹‰Œ”ŒŒŽŒŒ‘•”“Š‰Š‰Š‹“‘ˆˆ†ƒ…„ƒ„†…~{~„‰ƒ}~}{zw|€€}}{x|}zwzxxz‚~{|wvww{ƒ€~{zvvxxz|~}{{z~z{€~€€„……„…ˆ‰Š‰…‰Š…ƒ„ƒƒ†Š†„…„ƒ„…ƒ‚€„ƒ‚ƒ……„ƒ€€ˆ†€€…ˆ……†…ƒ„……ˆ‹‰„„„ƒƒ…‰Šˆ†ƒƒ‚„„ƒ„…€zz~~€}~~{wx{~€~}||~}|~~}~}||~~€ƒ„‚€€‚‚ƒ……„…†………†…ƒƒ„ƒ€|{{}~~~‚€~€ƒƒ€€~~€€€€€~{{|~~}||}~€‚€€‚‚ƒƒ‚‚„„…ƒ‚ƒƒ„ƒ‚ƒ„ƒ„…„ƒƒ„ƒ‚‚‚‚€€€€€€~~‚‚‚‚ƒ„ƒƒƒ‚ƒ‚€€‚€€€€€€€€€ƒƒ€€€€ƒ€‚‚€€ƒ„„ƒƒƒ‚‚‚‚€€‚€€€‚‚€€‚€€‚€~}€}||}~}~~~~~}}~€ƒƒƒƒƒ‚‚‚‚‚ƒƒ€‚‚€€‚€€€€€€€€€‚„ƒ‚‚ƒƒƒƒ‚‚ƒ‚ƒ„‚‚„„‚‚‚„ƒ‚‚ƒƒƒ‚‚ƒ‚‚€‚ƒ„ƒ‚‚ƒ……ƒ‚‚ƒƒ‚‚ƒ‚€€‚ƒ„ƒƒ‚ƒ„…„ƒƒƒƒ„…„ƒ‚‚ƒƒƒƒ………ƒ‚„…………„‚‚ƒ„„ƒƒƒƒ‚‚‚ƒ‚ƒ……„‚€‚‚€‚€€€€‚‚€~}}~€€}|ƒ~|{|€€~}€€~~}}}}}}}}~~~~~~}}~~~~~~~|{|€~€€ƒƒ€€‚ƒ„‚~}„Œˆ€}~}{€€€†…‚‚€€€ƒ„ƒ‚‚‚‚‚‚‚ƒ€‚‚ƒ‚‚ƒ‚‚‚‚ƒƒƒ‚‚‚‚€ƒƒƒ‚‚ƒ‚ƒ„„ƒƒƒƒƒ‚‚ƒ‚‚‚ƒƒƒƒƒƒƒƒ„„…„„„„„„„„……„„„……„„‚ƒƒƒ‚‚€€€~~ƒ‚~}„……ƒ‚ƒ„„‚‚ƒ‚€€‚~€~~}}}}|||{z{||{z{{{||}||}}€€€€€‚€‚€€€€€€€€‚‚ƒƒ‚ƒ„ƒƒ‚‚‚‚‚‚‚ƒƒƒ„„„„……„ƒ„„‚‚‚‚€‚‚‚‚‚€€‚€~~€€€€‚‚€‚‚‚‚€€€€€‚ƒ„…„„„………††ˆ††††……„„ƒƒƒ‚‚‚‚‚‚€ƒ‚‚‚€€€€€€€‚ƒ‚‚‚€€€‚‚ƒ‚‚‚ƒ„„„ƒƒ‚‚‚€‚€€€€€€€‚ƒ„„…„„„ƒƒ‚ƒƒƒ‚‚‚ƒ‚‚‚‚‚‚ƒ‚‚‚‚‚‚ƒ„ƒ‚‚‚‚‚€€€‚ƒƒƒƒƒƒƒƒƒ‚‚‚‚‚‚ƒ‚€}}}}}}~€€€€~}}~~~~~~}}}~~~~~€‚‚‚‚ƒƒƒ‚‚€€€€€‚‚‚€€€‚ƒ„„„„„ƒƒƒƒƒƒ‚‚‚‚‚‚ƒ„ƒƒ‚ƒƒƒƒƒƒ„……„ƒƒƒ„ƒ‚‚€€€€€~€€€€€‚‚€€€€€~~}~~~~~~~€€€~€€€€€€€€€‚„„ƒ‚ƒ„„„„ƒƒƒ‚‚ƒ‚‚‚€‚‚‚‚‚‚‚‚‚‚‚ƒƒƒƒ‚‚ƒƒ‚‚‚‚‚‚‚€‚ƒ‚‚‚€‚€ƒ‚€€€€€€€€€€€€€€€€€€€€€€€€€€€‚‚‚‚€€€€€€‚‚‚‚ƒ…„ƒƒƒƒƒƒƒƒƒƒ‚‚‚‚‚€~€€‚‚€€€€€€€€€€€‚‚‚‚‚€€€€€€€€€€€€€‚ƒ‚€€€€€~~€€~~€€€€€ƒƒƒ‚‚‚‚‚ƒƒƒ‚ƒƒƒ„…„„ƒƒƒƒƒ‚„…†„ƒƒƒ‚‚‚‚‚€€€€€€€€€€€€€€‚‚‚‚‚ƒƒƒ‚ƒƒ„ƒƒƒƒƒ‚‚ƒƒƒƒƒƒ‚€‚„„ƒƒ„„„ƒ„„„„ƒ‚‚‚€~~~~~~}~}~~~~~~~~~~~€€€€~~~~~~~~}}~~~~~~~~~~€€‚‚‚‚‚‚‚ƒƒƒƒƒƒƒƒƒƒƒ„„„ƒƒƒƒƒƒ„„ƒƒ‚ƒƒ„ƒ„………„……„………„„„„„„ƒ„„ƒƒƒƒ„ƒƒ„„………„……„„„„ƒƒƒƒ‚‚‚ƒƒƒ„ƒƒƒƒ‚‚‚‚‚ƒ‚ƒ‚ƒƒ‚‚‚‚‚€€€‚‚ƒ‚‚‚‚‚‚ƒ€€€€€€~~}}~~~~}~€€€~~~€~}}}}~~~~~~€€€€~~~~~~~~~~~}}}}}}}}~~~}~~~~~~~~€~~€€€‚‚€€‚ƒ‚ƒƒ€‚€€€‚€‚‚„‚ƒƒƒƒƒ‚ƒ‚‚ƒƒ„ƒƒ„„„„„„„„„………††……………………„„ƒƒ„„„„„„ƒƒ„„„ƒƒ„„„„„„„„„„ƒƒƒƒƒƒ‚‚‚€‚‚‚€€€€~~~€€€€€€€€€‚€€€€€€€€€~~}}~~~~~}~~~~~~~~}~|||}~~~}}}}~~€€€€€€€€€€€€€‚€€€€‚ƒƒƒƒƒƒƒ„„…„…†…†…„„„„„ƒ„ƒ„ƒƒƒ„„ƒ„„……………………………„„„„„ƒƒƒƒƒƒƒ‚‚‚‚ƒ‚‚‚‚‚‚ƒƒƒƒƒƒƒ‚‚‚‚‚€‚€‚‚‚‚€€€€€€€€€€€€€€~€~}~~~~~~~~~~~~~€€€€€€€‚ƒƒ‚‚‚‚‚ƒƒƒ‚‚ƒƒƒƒƒƒƒ„‚ƒƒƒƒƒƒƒƒ‚‚‚‚‚‚‚€€‚‚€€€€‚‚‚‚‚‚‚‚ƒ‚‚‚‚ƒ‚‚‚ƒ‚‚‚‚‚‚‚‚‚‚€€€€€€€~~~~~~~~~€€€€€€€€€€€€€€€‚‚‚‚‚‚‚‚ƒƒƒ‚‚‚‚‚‚ƒƒ‚‚‚‚‚‚‚€€€€€€€€€€€€€€€€€‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚€€€€€€€€€€~~~~~~~~~~~€€€€‚‚‚‚‚‚‚ƒ‚‚‚‚‚‚‚ƒ„„„„„„ƒƒƒ„„ƒƒƒƒƒƒƒƒƒ„ƒƒ‚ƒ‚‚‚‚‚‚‚‚‚ƒƒƒ‚‚‚‚‚ƒƒƒƒ‚‚‚‚‚‚‚‚‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~}}€€€~}~€€€€€€€€€€€€€€€‚€€‚€€€€€€€€€€‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ƒƒƒ‚‚‚‚‚‚‚‚€€€€€€€€€€€€€€€€€€€€€€€€~€€€€€€‚‚‚‚‚‚€€€€€€€€€€€€€€€€€€€€€~€€€€~~~~~€€€€€€€€€€€€€€‚‚‚€€€‚‚‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚€€‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€xpat2-1.07/lib/hlpMonteCarlo100644 146 144 2237 5720427770 14435 0ustar mbimathopt The Rules of Monte Carlo ======================== Monte Carlo uses a standard 52-card deck (no jokers). To begin the game the deck is shuffled, then dealt face-up, one card at a time, into five rows of five cards each (the tableau), with the remainder of the deck held in reserve for later play. The object of the game is to remove pairs of cards from the tableau. These cards can be any combination of colors, but must be of the same rank (eg: a 3 of hearts and a 3 of spades), and must be located adjacent to each other in a row, column or diagonal. Note that the removal of a card does not make the two cards beside it "adjacent". After removing all possible pairs, the tableau must be consolidated, which means that the remaining cards in the tableau must be "backed up" (moved to the left, then up, keeping the original order) to fill in the blank spaces created by the removed pairs. Cards from the reserve are then dealt into the newly- created spaces and the process of removing pairs begins again. The tableau can be consolidated and re-dealt as many times as necessary. The game is won when the entire deck has been removed, or lost when no more moves can be made. xpat2-1.07/lib/italian/ 40755 146 144 0 7201330416 13245 5ustar mbimathoptxpat2-1.07/lib/italian/XPat100644 146 144 1465 5602335266 14162 0ustar mbimathopt#include "../../app-defaults/XPat" XPat*Dialog*Translations: #override \n\ s: Ok()\n\ n: Cancel()\n XPat*Game.label: Partita XPat*Rules.label: Giochi XPat*Cards.label: Carte XPat*Undo.label: Cancella XPat*Redo.label: Ripeti XPat*Save.label: Salva XPat*Score.label: Punteggio XPat*Hint.label: Suggerisci XPat*Move to Stack.label: Sulla fondazione XPat*Help.label: Informazioni XPat*Sound.label: Suono XPat*Drop Bookmark.label: Segna la posizione XPat*Goto Bookmark.label: Torna al segno XPat*Replay.label: Ripeti tutto XPat*Restart.label: Ricomincia XPat*New Game.label: Nuova partita XPat*Quit.label: Fine XPat*ok.label: Sь XPat*cancel.label: No XPat.help.title: Aiuto su xpat XPat.help*string: Scegli un soggetto XPat.help*Topic.label: Soggetto XPat.help*Close Help.label: Chiudi finestra di aiuto xpat2-1.07/lib/italian/keys100644 146 144 156 5641071534 14233 0ustar mbimathopt#c This file does contain the italian key bindings for xpat2 version 1.00 #include ../keys y None s Confirm xpat2-1.07/lib/italian/messages100644 146 144 4514 6714321677 15121 0ustar mbimathopt# iso8859-1 Fine della partita? Un'altra partita? Ricominciare da capo? fiori picche cuori quadri jolly asso due tre quattro cinque sei sette otto nove dieci fante donna re fondazione pila tallone deposito Non ш stato dato nessun aiuto! Puoi muovere la %P (%R di %S) sulla %P. Nessun suggerimento! (da capo) Segno piazzato. Hai vinto! Non ш possibile muovere sulla fondazione. Salvataggio FALLITO. Caricamento FALLITO. Errore nell'apertura del file. Errore nell'apertura del file. Errore in scrittura. Errore in lettura. Errore nella scrittura delle mosse. Errore nella lettura delle mosse. Salvataggio eseguito. Caricamento eseguito. Errore nella versione dei file. Impossibile girare ancora il pozzo. Ridistribuzione. Nuove carte. Carte terminate! Nessuna pila selezionata. Carte mosse sulla fondazione. Mossa impossibile. Cancellazione impossibile. Cancellato! Cancellato! (baro!) La ripetizione non ш possibile. Ripetuto! Ripetuto (e una barata in meno) Mossa non valida. Pila vuota o non valida. Pila sorgente selezionata. Non ci sono tutti questi spazi. abortito. comando ignoto: Nessuna mossa possibile Versione Xpat2 Seme %ld, numero di barate %d. Punteggio %d su %d. (Nessun punteggio per queste regole) %d carte(a) non ancora distribuite(a). Aiuto sui tasti. Aiuto sulle regole di %s help.keys help.Spider help.Gypsy help.Klondike help.Seahaven help.FreeCell help.Delight hlpMonteCarlo hlpMidnightOil hlpCalculation hlpmodCanfield help.Michaels help.Canfield help.Cotillion hlpBakersDozen ../help.Oonsoo ../help.BlueMoon Un attimo, carico le carte... Buon divertimento con xpat2 versione %s! Selezionata la rotazione in su: Selezionata la rotazione in giљ: La carta deve essere visibile! La rotazione richiede uno spazio libero. Con queste regole le carte non possono venire mischiate. Non ш piљ possibile mischiare le carte. Ancora una mischiata. Ancora %d mischiate. Con queste regole il pozzo non puђ venire girato. Non ш piљ possibile girare il pozzo. Ancora una girata. Ancora %d girate. La rotazione non ш possibile con queste regole. La rotazione non ш piљ possibile. Ancora una rotazione. Ancora %d rotazioni. Non ш possibile dare le carte con queste regole. Nessuna carta rimasta sul tallone. Ancora una carta sul tallone. Ancora %d carte sul tallone. Posizione di partenza. Una mossa fatta. %d mosse. Non un singolo punto su Un punto su %d punti su xpat2-1.07/lib/italian/help.Cotillion100644 146 144 2573 5554343413 16171 0ustar mbimathopt Regole per Royal Cotillion ========================== Royal Cotillion usa due mazzi standard di 52 carte (senza jolly) mischiati insieme. Il gioco comincia distribuendo dodici carte in tre righe di quattro carte ciascuna, per formare lo schieramento di sinistra. L'ala destra dello schieramento comprende quattro righe di quattro carte ciascuna. La fondazione comprende due colonne di quattro pile ciascuna. Queste vengono formate nel seguente modo per ogni seme: A,3,5,7,9,J,K,2,4,6,8,10,Q 2,4,6,8,10,Q,A,3,5,7,9,J,K Nell'ala sinistra dello schieramento, solo le carte in fondo a ogni colonna sono disponibili, e gli spazi non vengono riempiti. Nell'ala destra, tutte le carte sono disponibili, e gli spazi sono immediatamente riempiti utilizzando il pozzo o, se questo ш vuoto, il tallone. Le carte sono scoperte dal tallone una per volta, e possono essere giocate sulla fondazione o messe nel pozzo. La carta in cima al pozzo ш sempre disponibile per essere giocata. Il gioco ш riuscito se tutte e otto le pile sulla fondazione vengono completate. Non riesce se s terminano le carte (non ш possibile girare il pozzo). E' conveniente, se si ha la possibilitр, usare per prime le carte dell'ala sinistra, per liberarne delle altre. Nell'ala destra, invece, conviene a volte aspettare prima di giocare una carta, per conservare lo spazio libero per una carta interessante. xpat2-1.07/lib/italian/hlpMidnightOil100644 146 144 2125 5554337317 16220 0ustar mbimathopt Regole per Midnight Oil ======================= Midnight Oil usa un mazzo standard di 52 carte (senza jolly). Per iniziare il gioco si mischia il mazzo e si distribuiscono a faccia in su, una carta per volta, in 17 pile di tre carte ciascuna. L'ultima carta ш messa in una pila per conto suo. Queste pile sono note anche come "ventagli". Obbiettivo del gioco ш muovere tutte le carte dai 18 ventagli in quattro nuove pile, una per seme, in ordine dall'asso (basso) al re (alto). Queste pile sono la fondazione. Solo la carta superiore di ogni ventaglio ш disponibile per il gioco. Oltre a muovere le carte dai ventagli alla fondazione, si possono anche muovere da un ventaglio all'altro, in ordine inverso di seme. In questo modo, le carte interne possono venire liberate a loro volta. Quando un ventaglio si svuota, non si possono piљ mettere carte su di esso. Una volta fatte tutte le mosse possibile, si possono mischiare tutte le carte nei ventagli e distribuirle come all'inizio (tre carte per ventaglio). In tutto, si puђ mischiare il mazzo tre volte (una all'inizio e due durante la partita). xpat2-1.07/lib/italian/help.Canfield100644 146 144 3034 5554301603 15726 0ustar mbimathopt Regole per Canfield =================== In Canfield, la distribuzione iniziale comprende 13 carte che costituiscono la riserva e di cui ш visibile solo la superiore, quattro carte che iniziano altrettante pile sullo schieramento e una carta che inizia la prima base sulla fondazione. Le pile sullo schieramento vengono costruite in ordine discendente e in colore alternato. L'ordine, come pure sulla fondazione, ш ciclico; l'asso ш immediatamente superiore al re. Si puђ muovere un'intera pila tutta insieme su di un'altra. Le carte in cima alle pile sono disponibili per essere giocate sulla fondazione, ma mai negli spazi vuoti. Gli spazi devono essere riempiti dalla riserva. La carta in cima alla riserva ш anche disponibile per essere giocata sulla fondazione o sulle pile. Dopo che la riserva ш esaurita, gli spazi creatisi nello schieramento possono venire riempiti dal tallone, e il giocatore puђ decidere di lasciarli liberi a piacere. Le carte vengono tirate dal tallone a tre per volta digitando 'd'; quando le carte terminano, si gira il pozzo e si ripete il tutto finchщ non si termina la partita. Le basi della fondazione sono mosse automaticamente sulla fondazione non appena diventano disponibili. Le regole per scommettere sono le seguenti: all'inizio si paga il punteggio totale di $52; si guadagnano $5 per ogni carta sulla fondazione, e ogni volta che si gira il pozzo costa $5. Ciђ significa un totale massimo di $208 nel caso si riesca a terminare la partita in una sola smazzata (cioш senza girare il pozzo), il che ш assai raro. xpat2-1.07/lib/italian/help.Delight100644 146 144 2014 5554314370 15603 0ustar mbimathopt Regole per Idiot's Delight ========================== Idiot's Delight usa un mazzo standard di 52 carte (senza jolly), con gli assi considerati sopra ai re. Il gioco inizia piazzando quattro carte in fila. E' possibile eliminare tutte le carte di valore inferiore a un'altra carta dello stesso seme. Quando non si possono eliminare altre carte, si mettono altre quattro carte dal tallone sopra le pile e si continua allo stesso modo, tenendo conto che le carte utilizzabili (sia per l'eliminazione che per il confronto) sono solamente quelle in cima alle pile. Se una pila rimane completamente vuota, si puђ muovere una carta dalla cima di un'altra pila nello spazio formatosi. Il gioco riesce se alla fine della partita rimangono sulle pile soltanto i quattro assi. Attenzione a quali carte muovere sugli spazi. L'inclinazione naturale ш quella di muovere gli assi negli spazi non appena possibile, ma spesso ш avvisabile considerare altre possibilitр, a seconda di quali carte possono venire liberate con ogni mossa. xpat2-1.07/lib/italian/help.Gypsy100644 146 144 3451 5554325403 15343 0ustar mbimathopt Regole per Gypsy ================ (Queste regole sono descritte indicando le differenze con quelle di Spider). Gypsy si gioca con due mazzi di 52 carte. Si hanno otto colonne, e all'inizio della partita queste contengono tre carte ciascuna, due coperte e quella in cima visibile. Si puђ muovere una carta sopra di un'altra solo se ш quella immediatamente superiore di valore e le due carte sono di diverso colore; ad esempio, il 4 di fiori puђ venire posto sul 5 di quadri o sul 5 di quadri. La stessa regola si applica per muovere gruppi contigui di carte; un gruppo puђ essere mosso in un colpo solo se i valori delle carte componenti sono decrescenti e i loro colori alternati. Le carte sono mosse nella fondazione una per volta, in ordine crescente, a partire dall'asso. Una carta puђ solo venire mossa su una pila del suo seme. E' una buona scelta spostare immediatamente tutti gli assi sulla fondazione. Puђ essere piљ saggio, perђ, lasciare le carte superiori sullo schieramento, in modo da potere mettere delle altre carte su di esse. Le carte possono anche venire mosse dalla fondazione allo schieramento se seguono la regola suindicata. Questo puђ risultare utile nel caso si vogliano creare delle colonne libere su cui mettere i re. (si puђ mettere una carta qualunque su una colonna libera, ma questi sono gli unici posti dove si puђ mettere un re). Punteggio: Il punteggio di Gypsy va da 0 a 1000. Si hanno due punti per ogni coppia di carte alternantesi sulle pile e cinque punti per ogni carta sulla fondazione. Ogni pila completa sulla fondazione dр inoltre un bonus di 60 punti. Nota: le regole per Gypsy non sono state inventate dagli autori di 'xpat', ma il nome sь. Abbiamo giocato a Gypsy per anni, ma non sappiamo assolutamente il nome originale. Se qualcuno lo sapesse, per favore ce lo comunichi. xpat2-1.07/lib/italian/help.Klondike100644 146 144 2344 5554335414 15773 0ustar mbimathopt Regole per Klondike =================== Klondike viene giocato con un mazzo standard di 52 carte. Lo schieramento ш formato in questo modo: si distribuisce una prima fila di sette carte, di cui solo quella a sinistra ш scoperta. Si aggiunge un'altra fila di sei carte, la prima delle quali, scoperta, ш posta sopra la seconda della fila precedente, e le altre come nella fila precendente. Si prosegue in questo modo fino a che sette pile di lungheza crescente sono state create. Scopo del gioco ш riuscire a costruire quattro pile sulla fondazione di carte dello stesso seme in ordine crescente A-K. Si gioca una carta per volta; le carte non immediatamente disponibili finiscono nel pozzo. Sono libere tutte le carte in cima alle pile e quella in cima al pozzo. Queste possono venire giocate sulla fondazione, oppure sulle varie pile, in ordine decrescente a colore alterno (sopra un 6 di cuori si possono mettere il 5 di picche o il 5 di fiori). Inoltre ш possibile spostare da una pila a un altra un gruppo di carte, se l'ultima di esse puђ essere giocata sulla nuova pila. Le pile vuote che si vengono a creare possono venire occupate solamente dai re. Nelle regole base si ha la possibilitр di riutilizzare il pozzo solo tre volte. xpat2-1.07/lib/italian/help.Michaels100644 146 144 100 5554335377 15734 0ustar mbimathopt (prima o poi le regole ci saranno anche per questo solitario!) xpat2-1.07/lib/italian/hlpBakersDozen100644 146 144 1750 5554272072 16217 0ustar mbimathopt Regole per Baker's Dozen ======================== Si inizia con 13 pile di quattro carte ciascuna, in cui i re sono spostati se necessario nelle ultime posizioni. Lo scopo ш di mettere tutte le carte sulla fondazione, nell'ordine A-K. Si possono muovere tutte le carte in cima alle pile (e alla fondazione) su una pila che ha in cima una carta di valore superiore di uno, o sulla fondazione: quindi un 5 di cuori puђ venire posto sotto un qualunque sei, o sul 4 di cuori nella fondazione. Le pile vuote non possono essere riempite (ecco perchщ i re vengono messi in fondo alle pile, dato che possono venire mossi solo sulla fondazione). A me questo gioco piace perchщ ш piuttosto veloce, ha una probabilitр di successo passabile (una volta su 4?) e non puђ essere giocato in maniera automatica. Baker's Dozen puђ essere personalizzato cambiando il numero di pile (variabile da 2 a 13). Con meno pile, le carte di valore inferiore sono giр mosse sulla fondazione, il che facilita un po' il gioco. xpat2-1.07/lib/italian/hlpCalculation100644 146 144 3124 5554273601 16242 0ustar mbimathopt Regole per Calculation ====================== Calculation usa un mazzo standard di 52 carte (senza jolly). Per iniziare il gioco si mischiano le carte e si pongono sulla fondazione un asso, un due, un tre e un quattro come basi. Sopra di queste si costruiscono quattro successioni, senza considerare seme e colore, come indicato sotto: A,2,3,4,5,6,7,8,9,10,J,Q,K 2,4,6,8,10,Q,A,3,5,7,9,J,K 3,6,9,Q,2,5,8,J,A,4,7,10,K 4,8,Q,3,7,J,2,6,10,A,5,9,K Le restanti carte vengono girate una per volta dal tallone, e possono venire giocate sulla fondazione o su una qualunque delle quattro pile di lavoro collocate subito sotto la fondazione. La carta in cima a queste pile ш sempre disponibile per essere spostata sulla fondazione, ma non puђ venire spostata su un'altra pila. Il solitario riesce se si riesce a terminare la costruzione su tutte le basi fino al re. L'abilitр necessaria per giocare a Calculation, oltre naturalmente a ricordarsi di quale carta prosegua ciascuna pila della fondazione, sta nell'evitare di coprire una carta che servirр in breve con una che non potrр essere usata per qualche tempo. I re sono particolarmente scoccianti, visto che non possono essere mossi finchщ almeno una pila della fondazione ш stata completata. La strategia generale ш di piazzare le carte sulle pile di lavoro in ordine discendente, ma le carte sono raramente cosь gentili da permettere di fare questo in maniera passabile. Puђ convenire anche dedicare una pila a contenere i re, o metterli come prima carta delle varie pile se questi escono all'inizio della partita. xpat2-1.07/lib/italian/help.Seahaven100644 146 144 1645 5642222542 15763 0ustar mbimathopt Regole per Seahaven Towers ========================== Seahaven Towers ш simile a Free Cell (o viceversa, non so quale gioco sia stato il primo ad essere inventato). Si hanno dieci pile da cinque carte ciascuna; oltre ad esse, esistono quattro depositi che possono contenere una carta ciascuno, in due dei quali vanno a finire le rimanenti carte del mazzo. La difficoltр ш maggiore, in quanto le carte possono essere mosse solo sopra quelle immediatamente superiori di valore e dello stesso seme, e le eventuali pile lasciate libere possono essere occupate solo da un re. Il gioco originale ha ancora un'altra restrizione; se si muovono blocchi di n carte, occorre avere almeno n-1 registri liberi (si suppone che si possa muovere solo una carta per volta). Questa restrizione, che implica che non si possono muovere blocchi di piљ di cinque carte per volta, puђ essere eliminata lanciando xpat con l'opzione "-relaxed 1". xpat2-1.07/lib/italian/help.Spider100644 146 144 15044 5554344477 15513 0ustar mbimathopt Regole per Spider =================== The object of the game is to build a sequence of cards in the same suit from King to Ace and move it from the slots to the stacks above. When all eight sequences have been built and removed, you have won the game. A more challenging version of this is to leave all eight sequences on the table until done instead of removing those that are complete to the stacks above. One may move the next lower card onto a card of the same or different suit; however, one may only move contiguous cards of the same suit as a group. For example, one may move the 5 of spades into either a 6 of spades or a 6 of hearts. Moving the 5 of spades onto the 6 spades is a better move since now the 5-6 of spades group may be moved as a unit where the 5 of spades, 6 of hearts group may not. Also, moving the 4 of spades onto the 6 of spades is not a legal move. A King may only be moved into an empty slot (or removed to the stacks above when the sequence King-Ace is complete) since there are no higher cards than a King. For general strategy, one wants to try to create a space since this is the most flexible way to move cards around. A space is where all cards in one column of the table have been removed. Note: before dealing the next round, all spaces have to have at least one card in them. Also, when moving the cards, it is generally to your advantage to move the highest cards first and the lowest cards last doing the obvious moves first. For example, move a 5 of spades onto a 6 of spades, then Queen of hearts onto a King clubs before you move the 7 of clubs onto the 8 of hearts. Then you may choose to move 5-6 of spades group onto the 7 of clubs. The strategy is to combine the cards into same suit groups that may be moved as a unit. Once the group 5-6 of spades has been created, it may be broken up by using the middle mouse button on the lower card. The Initial Tableau: Shuffle together two decks of cards (104 cards in all) and deal ten cards face down in a row. Deal three more rows face down on the first. Next deal one card face down on each of four piles (traditionally the leftmost four, but it doesn't matter; for aesthetic reasons some people prefer the first, fourth, seventh, and tenth piles), for a total of 44 face-down cards. Finally, deal one card face up on each pile. These 54 cards constitute the initial tableau. NOTE: In the description below, the card at the bottom of a pile is taken to be the last one dealt or played onto that pile, as opposed to the card that is underneath all the others in the pile. Thus the bottom card is the one displayed bottommost on the screen by the Spider program. Building: All building is done in the tableau, there being no separate foundations. On the bottom card of a pile may be placed any card of next-lower rank, regardless of suit. (Cards rank King (highest), Queen, Jack, 10, 9, \ldots, 3, 2, Ace.) The bottom card of a pile is always available to be moved, as is any sequence of cards at the bottom of a pile that are consecutive and ascending in rank and of the same suit. For example, suppose the 6, 5, and 4 of hearts are together at the bottom of a pile, with the 4 bottommost. They may be moved as a unit, or the 4 can be moved by itself, or the 5 and 4 can be moved without moving the 6. If the 6, 5, and 4 were moved onto a 7 of hearts at the bottom of some other pile, the four cards could then be moved as a unit onto any 8; if the 7 were not a heart, however, then once the hearts were placed upon it it would not be available to be moved until the hearts had been moved from it (to another 7 or into a space; see below). When all face-up cards have been removed from a pile, the bottom face-down card is turned up and becomes available for play. Spaces: When all cards have been moved away from some pile, the resulting empty pile is called a space or hole. Any card or sequence of cards available for moving may be moved into a space. A King, or sequence headed by a King, can be moved only into a space, and once moved there can never be moved out (except into another space, which doesn't accomplish anything) unless it is being removed entirely as described below. The Deck: The 50 cards not dealt initially form the deck. Whenever you wish (typically, whenever you get stuck), you may deal a new row of ten cards from the hand face-up upon the piles. NOTE: You are not allowed to do this if you have any spaces. You must first fill them in. Notice that these additional deals tend to introduce discontinuities in the piles; that is, you can get cards covering others that are not next-higher in rank. If you get stuck after having dealt the last of the five additional deals, you have lost. Object of Play: When you have assembled a complete suit of thirteen cards, in sequence from King down to Ace, at the bottom of a pile, you may remove the thirteen cards from the tableau entirely. Cards so removed are never brought back into play; thus it is not always desirable to remove a suit when you have the opportunity (though it usually is), since it may pay to keep it around to aid in manipulating the other cards of that suit (recall that there are 26 cards in each suit). The game is won if you manage to remove all eight suits. If you find that a game is going so well that you're sure you're going to win, you can spice things up by trying to finish with as many completed suits as possible still in the tableau. Hardest of all is to finish the game with each of the eight suits brought together in sequence from King down to Ace, with all of the cards still in the tableau. Note that, once you start striving toward such a goal, you may make such a mess of the position that you won't be able to win at all! Scoring: Spider is a difficult game to master, and some players like to be able to evaluate their progress by scoring unsuccessful games. No rules for scoring are in the literature, but the program implements the following rather arbitrary formula: 10 points for each initially face down card that gets turned over; 15 additional points for each column where all the face down cards have been turned over (even if you don't manage to get a space); 2 points for each card that is sitting atop the next higher card of the same suit; 50 points for each completed suit (in which case you do not also score for the 12 cards sitting atop next higher cards). This yields a maximum score of 990. If you win the game with 4 or more completed suits still in the tableau, add 2 points for each suit after the first three. Thus winning with all eight suits still in the tableau yields a score of 1000. xpat2-1.07/lib/italian/help.keys100644 146 144 2576 5554034027 15211 0ustar mbimathopt XPat - Current Key bindings =========================== XPat key bindings are loaded from a key definition file. Therefore, actual key bindings may vary. Some key bindings are resident and may be overloaded. Currently, we have (in alphabetical order) the following rule-switching keys: F - FreeCell rules G - Gypsy rules H - SeaHaven rules ('S' is used by Spider) K - Klondike rules S - Spider rules These keys switch the rules (and restart a new game) without confirmation. They also bypass the sound procedure. The new rules are the default rules, i.e. without customised number of stacks or slots. Other fixed key bindings are ^L - redraw screen ESC - abort move The configurable key bindings have the following defaults: n - cancel action which requires confirmation y - confirm action Q - request quit game A - request another game (same rules) B - begin this game again - do a suggested move = - do a suggested move ? - suggest next move + - suggest next move - - show previous suggestion M - resize to minimum possible window P - resize to minimum possible window for this layout u - undo a move r - redo a move d - deal new cards s - show current score i - information (cards left on stock) l - layout the table v - show xpat version * - move cards to stack o - move selected cards to stack O - move all cards to stack xpat2-1.07/lib/italian/hlpMonteCarlo100644 146 144 2244 5554341020 16040 0ustar mbimathopt Regole per Monte Carlo ====================== Monte Carlo usa un mazzo standard di 52 carte (senza jolly). Per iniziare il gioco si mischia il mazzo e si distribuiscono a faccia in su 25 carte in cinque file di cinque carte ciascuna. Le altre carte sono tenute di riserva per il resto del gioco. Scopo del gioco ш eliminare a coppie le carte dallo schieramento. Le carte devono avere lo stesso valore, e devono toccarsi per un lato o per un angolo. Notare che la rimozione di una carta non rende le due carte vicine "adiacenti". Dopo avere tolto tutte le coppie possibili, o comunque tutte quelle che si intende eliminare, lo schieramento deve essere consolidato, il che significa che tutte le carte rimaste vengono "compresse" (mosse a sinistra, poi in alto, in modo da conservare l'ordine iniziale di distribuzione) per riempire gli spazi lasciati vuoti. Si procede quindi a utilizzare il tallone per ricostruire lo schieramento 5*5. A questo punto il processo di eliminazione ricomincia. Questa operazione puђ essere ripetuta a piacere; se non ci sono piљ carte sul tallone, ci si limita a comprimere le carte rimaste. Il gioco riesce se si riesce ad eliminare l'intero mazzo. xpat2-1.07/lib/italian/help.FreeCell100644 146 144 1613 5554315724 15714 0ustar mbimathopt Regole per FreeCell =================== FreeCell inizia disponendo tutte le 52 carte di un mazzo (senza jolly) in otto pile, alternativamente di 6 e 7 carte ciascuna. Scopo del gioco ш quello di costruire sequenze crescenti dello stesso seme dall'asso al re sulla fondazione. Ci sono poi quattro posizioni a sinistra della fondazione che possono essere usate per lasciarvi temporaneamente una carta. Le carte libere sono quelle in cima alle pile nello schieramento e sulla fondazione e le eventuali carte nella zona di parcheggio. Esse possono essere mosse sulla fondazione rispettando l'ordine crescente, sugli eventuali spazi liberi nel deposito, e in sequenze discendenti di colore alternato sulle pile stesse. Nel caso una pila si liberi, questa puђ venire riempita con una colonna di carte da una pila che rispetti l'ordine discendente e a colore alternato, oltre che da una carta libera. xpat2-1.07/lib/help.Michaels100644 146 144 744 5556305020 14311 0ustar mbimathopt The Rules of Michael's Fantasy ============================== This variant was invented to test the slot rotation commands of xpat2. Michael's Fantasy is played with one deck of 52 cards. The game is similar to Free Cell, but you have only 6 slots, and 3-4 cards are initially dealt facedown. To compensate this, you may rotate slots up to five times (visible cards only). To do this, press the 'b' or 'f' (for backward or forward) key and then click on the lowest card to move. xpat2-1.07/lib/russian/ 40755 146 144 0 5642322655 13325 5ustar mbimathoptxpat2-1.07/lib/russian/XPat100644 146 144 1410 5602335403 14204 0ustar mbimathopt#include "../../app-defaults/XPat" XPat*font: sq01 XPat*Dialog*Translations: #override \n\ d: Ok()\n\ n: Cancel()\n XPat*Game.label: щЧвС XPat*Rules.label: №вСзЩЬС XPat*Cards.label: ыСвдй XPat*Undo.label: юСкСФ XPat*Redo.label: їаХвХФ XPat*Save.label: ѓЯШвСЮЩди XPat*Score.label: ђХкеЬидСд XPat*Hint.label: їЯкЭЯжЮйЪ шЯФ XPat*Move to Stack.label: №ХвХЭХгдЩди ї ѓдмЫ XPat*Help.label: №ЯЭЯни XPat*Sound.label: њзеЫ XPat*Drop Bookmark.label: ядЭХдЩди XPat*Goto Bookmark.label: їЯкзвСд Ы ядЭХдЫХ XPat*Replay.label: №вЯгЭЯдв XPat*Restart.label: №ЯздЯв щЧвй XPat*New Game.label: юЯзСб щЧвС XPat*Quit.label: ыЯЮХУ щЧвй XPat*ok.label: фС XPat*cancel.label: юХд XPat.help*string: їйТЩвЩдХ яТЬСгди XPat.help*Topic.label: яТЬСгди XPat.help*Close Help.label: їйШЯФ xpat2-1.07/lib/russian/sq01.bdf100644 146 144 70221 4774140357 14707 0ustar mbimathoptSTARTFONT 2.1 COMMENT This font is build from MS Windows font sq01.fnt by fnt2bdf converter. COMMENT Optimal XxY resolution is 96x96 dpi. FONT sq01 SIZE 12 96 96 FONTBOUNDINGBOX 8 15 0 -3 STARTPROPERTIES 6 DEFAULT_CHAR 32 FONT_ASCENT 12 FONT_DESCENT 3 SPACING "C" COPYRIGHT "Copyright (C) 1990, 1991 EWT Consulting" NOTICE "Public domain font, build by Serge Vakulenko, " ENDPROPERTIES CHARS 224 STARTCHAR space ENCODING 32 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR exclam ENCODING 33 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 18 3c 3c 3c 18 18 00 18 18 00 00 00 ENDCHAR STARTCHAR quotedbl ENCODING 34 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 66 66 66 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR numbersign ENCODING 35 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 36 36 7f 36 36 36 7f 36 36 00 00 00 ENDCHAR STARTCHAR dollar ENCODING 36 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 18 18 3c 66 60 30 18 0c 06 66 3c 18 18 00 ENDCHAR STARTCHAR percent ENCODING 37 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 70 d8 da 76 0c 18 30 6e 5b 1b 0e 00 00 ENDCHAR STARTCHAR ampersand ENCODING 38 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 38 6c 6c 38 60 6f 66 66 3b 00 00 00 ENDCHAR STARTCHAR quoteright ENCODING 39 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 18 18 18 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR parenleft ENCODING 40 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 0c 18 18 30 30 30 30 30 18 18 0c 00 ENDCHAR STARTCHAR parenright ENCODING 41 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 30 18 18 0c 0c 0c 0c 0c 18 18 30 00 ENDCHAR STARTCHAR asterisk ENCODING 42 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 36 1c 7f 1c 36 00 00 00 00 00 ENDCHAR STARTCHAR plus ENCODING 43 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 18 18 7e 18 18 00 00 00 00 00 ENDCHAR STARTCHAR comma ENCODING 44 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 1c 1c 0c 18 00 ENDCHAR STARTCHAR minus ENCODING 45 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 00 00 7e 00 00 00 00 00 00 00 ENDCHAR STARTCHAR period ENCODING 46 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 1c 1c 00 00 00 ENDCHAR STARTCHAR slash ENCODING 47 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 06 06 0c 0c 18 18 30 30 60 60 00 00 ENDCHAR STARTCHAR zero ENCODING 48 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 1e 33 37 37 33 3b 3b 33 1e 00 00 00 ENDCHAR STARTCHAR one ENCODING 49 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 0c 1c 7c 0c 0c 0c 0c 0c 0c 00 00 00 ENDCHAR STARTCHAR two ENCODING 50 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3c 66 66 06 0c 18 30 60 7e 00 00 00 ENDCHAR STARTCHAR three ENCODING 51 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3c 66 66 06 1c 06 66 66 3c 00 00 00 ENDCHAR STARTCHAR four ENCODING 52 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 30 30 36 36 36 66 7f 06 06 00 00 00 ENDCHAR STARTCHAR five ENCODING 53 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 60 60 60 7c 06 06 0c 78 00 00 00 ENDCHAR STARTCHAR six ENCODING 54 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 1c 18 30 7c 66 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR seven ENCODING 55 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 06 0c 0c 18 18 30 30 30 00 00 00 ENDCHAR STARTCHAR eight ENCODING 56 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3c 66 66 76 3c 6e 66 66 3c 00 00 00 ENDCHAR STARTCHAR nine ENCODING 57 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3c 66 66 66 66 3e 0c 18 38 00 00 00 ENDCHAR STARTCHAR colon ENCODING 58 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 1c 1c 00 00 00 1c 1c 00 00 00 ENDCHAR STARTCHAR semicolon ENCODING 59 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 1c 1c 00 00 00 1c 1c 0c 18 00 ENDCHAR STARTCHAR less ENCODING 60 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 06 0c 18 30 60 30 18 0c 06 00 00 00 ENDCHAR STARTCHAR equal ENCODING 61 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 00 7e 00 7e 00 00 00 00 00 00 ENDCHAR STARTCHAR greater ENCODING 62 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 60 30 18 0c 06 0c 18 30 60 00 00 00 ENDCHAR STARTCHAR question ENCODING 63 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3c 66 66 0c 18 18 00 18 18 00 00 00 ENDCHAR STARTCHAR at ENCODING 64 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e c3 c3 cf db db cf c0 7f 00 00 00 ENDCHAR STARTCHAR A ENCODING 65 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 18 3c 66 66 66 7e 66 66 66 00 00 00 ENDCHAR STARTCHAR B ENCODING 66 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7c 66 66 66 7c 66 66 66 7c 00 00 00 ENDCHAR STARTCHAR C ENCODING 67 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3c 66 66 60 60 60 66 66 3c 00 00 00 ENDCHAR STARTCHAR D ENCODING 68 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 78 6c 66 66 66 66 66 6c 78 00 00 00 ENDCHAR STARTCHAR E ENCODING 69 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 60 60 60 7c 60 60 60 7e 00 00 00 ENDCHAR STARTCHAR F ENCODING 70 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 60 60 60 7c 60 60 60 60 00 00 00 ENDCHAR STARTCHAR G ENCODING 71 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3c 66 66 60 60 6e 66 66 3e 00 00 00 ENDCHAR STARTCHAR H ENCODING 72 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 66 66 66 66 7e 66 66 66 66 00 00 00 ENDCHAR STARTCHAR I ENCODING 73 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3c 18 18 18 18 18 18 18 3c 00 00 00 ENDCHAR STARTCHAR J ENCODING 74 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 06 06 06 06 06 06 66 66 3c 00 00 00 ENDCHAR STARTCHAR K ENCODING 75 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 66 66 6c 6c 78 6c 6c 66 66 00 00 00 ENDCHAR STARTCHAR L ENCODING 76 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 60 60 60 60 60 60 60 60 7e 00 00 00 ENDCHAR STARTCHAR M ENCODING 77 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 63 63 77 6b 6b 6b 63 63 63 00 00 00 ENDCHAR STARTCHAR N ENCODING 78 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 63 63 73 7b 6f 67 63 63 63 00 00 00 ENDCHAR STARTCHAR O ENCODING 79 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3c 66 66 66 66 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR P ENCODING 80 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7c 66 66 66 7c 60 60 60 60 00 00 00 ENDCHAR STARTCHAR Q ENCODING 81 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3c 66 66 66 66 66 66 66 3c 0c 06 00 ENDCHAR STARTCHAR R ENCODING 82 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7c 66 66 66 7c 6c 66 66 66 00 00 00 ENDCHAR STARTCHAR S ENCODING 83 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3c 66 60 30 18 0c 06 66 3c 00 00 00 ENDCHAR STARTCHAR T ENCODING 84 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 18 18 18 18 18 18 18 18 00 00 00 ENDCHAR STARTCHAR U ENCODING 85 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 66 66 66 66 66 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR V ENCODING 86 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 66 66 66 66 66 66 66 3c 18 00 00 00 ENDCHAR STARTCHAR W ENCODING 87 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 63 63 63 6b 6b 6b 36 36 36 00 00 00 ENDCHAR STARTCHAR X ENCODING 88 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 66 66 34 18 18 2c 66 66 66 00 00 00 ENDCHAR STARTCHAR Y ENCODING 89 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 66 66 66 66 3c 18 18 18 18 00 00 00 ENDCHAR STARTCHAR Z ENCODING 90 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 06 06 0c 18 30 60 60 7e 00 00 00 ENDCHAR STARTCHAR bracketleft ENCODING 91 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3c 30 30 30 30 30 30 30 30 30 30 3c ENDCHAR STARTCHAR backslash ENCODING 92 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 60 60 30 30 18 18 0c 0c 06 06 00 00 ENDCHAR STARTCHAR bracketright ENCODING 93 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 3c ENDCHAR STARTCHAR asciicircum ENCODING 94 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 18 3c 66 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR underscore ENCODING 95 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ENDCHAR STARTCHAR quoteleft ENCODING 96 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 38 18 0c 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR a ENCODING 97 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 3c 06 06 3e 66 66 3e 00 00 00 ENDCHAR STARTCHAR b ENCODING 98 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 60 60 7c 66 66 66 66 66 7c 00 00 00 ENDCHAR STARTCHAR c ENCODING 99 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 3c 66 60 60 60 66 3c 00 00 00 ENDCHAR STARTCHAR d ENCODING 100 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 06 06 3e 66 66 66 66 66 3e 00 00 00 ENDCHAR STARTCHAR e ENCODING 101 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 3c 66 66 7e 60 60 3c 00 00 00 ENDCHAR STARTCHAR f ENCODING 102 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 1e 30 30 30 7e 30 30 30 30 00 00 00 ENDCHAR STARTCHAR g ENCODING 103 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 3e 66 66 66 66 66 3e 06 06 7c ENDCHAR STARTCHAR h ENCODING 104 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 60 60 7c 66 66 66 66 66 66 00 00 00 ENDCHAR STARTCHAR i ENCODING 105 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 18 18 00 78 18 18 18 18 18 7e 00 00 00 ENDCHAR STARTCHAR j ENCODING 106 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 0c 0c 00 3c 0c 0c 0c 0c 0c 0c 0c 0c 78 ENDCHAR STARTCHAR k ENCODING 107 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 60 60 66 66 6c 78 6c 66 66 00 00 00 ENDCHAR STARTCHAR l ENCODING 108 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 78 18 18 18 18 18 18 18 7e 00 00 00 ENDCHAR STARTCHAR m ENCODING 109 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 7e 6b 6b 6b 6b 6b 63 00 00 00 ENDCHAR STARTCHAR n ENCODING 110 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 7c 66 66 66 66 66 66 00 00 00 ENDCHAR STARTCHAR o ENCODING 111 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 3c 66 66 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR p ENCODING 112 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 7c 66 66 66 66 66 7c 60 60 60 ENDCHAR STARTCHAR q ENCODING 113 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 3e 66 66 66 66 66 3e 06 06 06 ENDCHAR STARTCHAR r ENCODING 114 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 66 6e 70 60 60 60 60 00 00 00 ENDCHAR STARTCHAR s ENCODING 115 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 3e 60 60 3c 06 06 7c 00 00 00 ENDCHAR STARTCHAR t ENCODING 116 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 30 30 7e 30 30 30 30 30 1e 00 00 00 ENDCHAR STARTCHAR u ENCODING 117 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 66 66 66 66 66 66 3e 00 00 00 ENDCHAR STARTCHAR v ENCODING 118 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 66 66 66 66 66 3c 18 00 00 00 ENDCHAR STARTCHAR w ENCODING 119 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 63 6b 6b 6b 6b 36 36 00 00 00 ENDCHAR STARTCHAR x ENCODING 120 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 66 66 3c 18 3c 66 66 00 00 00 ENDCHAR STARTCHAR y ENCODING 121 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 66 66 66 66 66 66 3c 0c 18 f0 ENDCHAR STARTCHAR z ENCODING 122 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 7e 06 0c 18 30 60 7e 00 00 00 ENDCHAR STARTCHAR braceleft ENCODING 123 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 0c 18 18 18 30 60 30 18 18 18 0c 00 ENDCHAR STARTCHAR bar ENCODING 124 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 18 18 18 18 18 18 18 18 18 18 18 18 ENDCHAR STARTCHAR braceright ENCODING 125 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 30 18 18 18 0c 06 0c 18 18 18 30 00 ENDCHAR STARTCHAR asciitilde ENCODING 126 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 71 db 8e 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR C177 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C200 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C201 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C202 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C203 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C204 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C205 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C206 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C207 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C210 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C211 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C212 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C213 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C214 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C215 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C216 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C217 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C220 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 0c 18 1c 1c 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR C221 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 1c 1c 0c 18 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR C222 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C223 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C224 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C225 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C226 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C227 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C230 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C231 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C232 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C233 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C234 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C235 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C236 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C237 ENCODING -1 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 7e 7e 7e 7e 7e 7e 7e 7e 00 00 00 ENDCHAR STARTCHAR C240 ENCODING 160 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR exclamdown ENCODING 161 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 6c 00 7e 60 60 60 7c 60 60 60 7e 00 00 00 ENDCHAR STARTCHAR cent ENCODING 162 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 18 18 3c 66 60 60 66 3c 18 18 00 00 ENDCHAR STARTCHAR sterling ENCODING 163 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3c 66 60 60 fc 60 60 c0 fe 00 00 00 ENDCHAR STARTCHAR currency ENCODING 164 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 66 3c 66 66 3c 66 00 00 00 00 00 ENDCHAR STARTCHAR yen ENCODING 165 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 66 66 66 3c 7e 18 7e 18 18 00 00 00 ENDCHAR STARTCHAR brokenbar ENCODING 166 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 18 18 18 18 18 00 00 18 18 18 18 18 ENDCHAR STARTCHAR section ENCODING 167 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3c 66 60 38 3c 66 66 3c 1c 06 66 3c ENDCHAR STARTCHAR dieresis ENCODING 168 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 66 66 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR copyright ENCODING 169 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e c3 99 a5 a1 a5 99 c3 7e 00 00 00 ENDCHAR STARTCHAR ordfeminine ENCODING 170 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3c 06 3e 66 3e 00 7e 00 00 00 00 00 ENDCHAR STARTCHAR guillemotleft ENCODING 171 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 00 00 33 66 cc 66 33 00 00 00 ENDCHAR STARTCHAR logicalnot ENCODING 172 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 00 00 7e 06 06 00 00 00 00 00 ENDCHAR STARTCHAR hyphen ENCODING 173 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 00 00 7e 00 00 00 00 00 00 00 ENDCHAR STARTCHAR registered ENCODING 174 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e c3 b9 a5 a5 b9 a5 c3 7e 00 00 00 ENDCHAR STARTCHAR macron ENCODING 175 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR degree ENCODING 176 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 3c 66 66 3c 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR plusminus ENCODING 177 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 18 18 7e 18 18 00 7e 00 00 00 ENDCHAR STARTCHAR twosuperior ENCODING 178 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 38 0c 18 30 3c 00 00 00 00 00 00 00 ENDCHAR STARTCHAR threesuperior ENCODING 179 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 38 0c 18 0c 38 00 00 00 00 00 00 00 ENDCHAR STARTCHAR acute ENCODING 180 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 1c 18 30 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR mu ENCODING 181 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 66 66 66 66 66 66 7b 60 60 c0 ENDCHAR STARTCHAR paragraph ENCODING 182 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 1f 3e 7e 7e 7e 3e 1e 06 06 06 06 06 ENDCHAR STARTCHAR periodcentered ENCODING 183 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 00 1c 1c 00 00 00 00 00 00 00 ENDCHAR STARTCHAR cedilla ENCODING 184 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 00 00 00 00 00 00 00 18 0c 38 ENDCHAR STARTCHAR onesuperior ENCODING 185 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 18 38 18 18 18 00 00 00 00 00 00 00 ENDCHAR STARTCHAR ordmasculine ENCODING 186 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3c 66 66 66 3c 00 7e 00 00 00 00 00 ENDCHAR STARTCHAR guillemotright ENCODING 187 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 00 00 cc 66 33 66 cc 00 00 00 ENDCHAR STARTCHAR onequarter ENCODING 188 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 60 e0 63 66 6c 18 37 6f db 1f 03 00 00 ENDCHAR STARTCHAR onehalf ENCODING 189 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 60 e0 63 66 6c 18 3e 63 c6 0c 0f 00 00 ENDCHAR STARTCHAR threequarters ENCODING 190 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 e0 30 63 36 ec 18 37 6f db 1f 03 00 00 ENDCHAR STARTCHAR questiondown ENCODING 191 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 6c 00 3c 66 66 7e 60 60 3c 00 00 00 ENDCHAR STARTCHAR cyr-A ENCODING 225 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3c 66 66 66 66 7e 66 66 66 00 00 00 ENDCHAR STARTCHAR cyr-Be ENCODING 226 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7c 60 60 7c 66 66 66 66 7c 00 00 00 ENDCHAR STARTCHAR cyr-Ve ENCODING 247 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7c 66 66 66 7c 66 66 66 7c 00 00 00 ENDCHAR STARTCHAR cyr-Ghe ENCODING 231 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 60 60 60 60 60 60 60 60 00 00 00 ENDCHAR STARTCHAR cyr-De ENCODING 228 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3e 66 66 66 66 66 66 66 ff c3 00 00 ENDCHAR STARTCHAR cyr-Ie ENCODING 229 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 60 60 60 7c 60 60 60 7e 00 00 00 ENDCHAR STARTCHAR cyr-Zhe ENCODING 246 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 6b 6b 6b 6b 3e 6b 6b 6b 6b 00 00 00 ENDCHAR STARTCHAR cyr-Ze ENCODING 250 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3c 66 06 06 1c 06 06 66 3c 00 00 00 ENDCHAR STARTCHAR cyr-I ENCODING 233 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 63 63 63 63 67 6f 7b 73 63 00 00 00 ENDCHAR STARTCHAR cyr-I-short ENCODING 234 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 1c 00 63 63 63 63 67 6f 7b 73 63 00 00 00 ENDCHAR STARTCHAR cyr-Ka ENCODING 235 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 66 66 6c 6c 78 6c 6c 66 66 00 00 00 ENDCHAR STARTCHAR cyr-El ENCODING 236 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3e 66 66 66 66 66 66 66 c6 00 00 00 ENDCHAR STARTCHAR cyr-Em ENCODING 237 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 63 63 77 6b 6b 6b 63 63 63 00 00 00 ENDCHAR STARTCHAR cyr-En ENCODING 238 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 66 66 66 66 7e 66 66 66 66 00 00 00 ENDCHAR STARTCHAR cyr-O ENCODING 239 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3c 66 66 66 66 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR cyr-Pe ENCODING 240 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 66 66 66 66 66 66 66 66 00 00 00 ENDCHAR STARTCHAR cyr-Er ENCODING 242 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7c 66 66 66 7c 60 60 60 60 00 00 00 ENDCHAR STARTCHAR cyr-Es ENCODING 243 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3c 66 66 60 60 60 66 66 3c 00 00 00 ENDCHAR STARTCHAR cyr-Te ENCODING 244 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7e 18 18 18 18 18 18 18 18 00 00 00 ENDCHAR STARTCHAR cyr-U ENCODING 245 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 66 66 66 66 66 3e 06 06 7c 00 00 00 ENDCHAR STARTCHAR cyr-Ef ENCODING 230 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3e 6b 6b 6b 6b 6b 6b 3e 08 00 00 00 ENDCHAR STARTCHAR cyr-Kha ENCODING 232 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 66 66 34 18 18 2c 66 66 66 00 00 00 ENDCHAR STARTCHAR cyr-Tse ENCODING 227 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 66 66 66 66 66 66 66 66 7f 03 00 00 ENDCHAR STARTCHAR cyr-Che ENCODING 254 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 66 66 66 66 66 3e 06 06 06 00 00 00 ENDCHAR STARTCHAR cyr-Sha ENCODING 251 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 6b 6b 6b 6b 6b 6b 6b 6b 7f 00 00 00 ENDCHAR STARTCHAR cyr-Shcha ENCODING 253 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 6b 6b 6b 6b 6b 6b 6b 6b 7f 03 00 00 ENDCHAR STARTCHAR cyr-Ier ENCODING 255 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 70 30 30 3e 33 33 33 33 3e 00 00 00 ENDCHAR STARTCHAR cyr-Iery ENCODING 249 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 63 63 63 7b 6d 6d 6d 6d 7b 00 00 00 ENDCHAR STARTCHAR cyr-Ierik ENCODING 248 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 60 60 60 7c 66 66 66 66 7c 00 00 00 ENDCHAR STARTCHAR cyr-E-rev ENCODING 252 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 7c 06 06 06 3e 06 06 06 7c 00 00 00 ENDCHAR STARTCHAR cyr-Yu ENCODING 224 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 6e 5b 5b 5b 7b 5b 5b 5b 6e 00 00 00 ENDCHAR STARTCHAR cyr-Ya ENCODING 241 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3e 66 66 66 66 3e 36 66 66 00 00 00 ENDCHAR STARTCHAR cyr-a ENCODING 193 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 3c 06 06 3e 66 66 3e 00 00 00 ENDCHAR STARTCHAR cyr-be ENCODING 194 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 3e 60 7c 66 66 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR cyr-ve ENCODING 215 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 7c 66 66 7c 66 66 7c 00 00 00 ENDCHAR STARTCHAR cyr-ghe ENCODING 199 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 7e 60 60 60 60 60 60 00 00 00 ENDCHAR STARTCHAR cyr-de ENCODING 196 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 3e 66 66 66 66 66 ff c3 00 00 ENDCHAR STARTCHAR cyr-ie ENCODING 197 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 3c 66 66 7e 60 60 3c 00 00 00 ENDCHAR STARTCHAR cyr-zhe ENCODING 214 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 6b 6b 6b 3e 6b 6b 6b 00 00 00 ENDCHAR STARTCHAR cyr-z ENCODING 218 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 3c 66 06 1c 06 66 3c 00 00 00 ENDCHAR STARTCHAR cyr-i ENCODING 201 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 63 63 67 6f 7b 73 63 00 00 00 ENDCHAR STARTCHAR cyr-i-short ENCODING 202 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 1c 00 63 63 67 6f 7b 73 63 00 00 00 ENDCHAR STARTCHAR cyr-ka ENCODING 203 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 66 66 6c 78 6c 66 66 00 00 00 ENDCHAR STARTCHAR cyr-el ENCODING 204 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 1f 33 33 33 33 33 63 00 00 00 ENDCHAR STARTCHAR cyr-em ENCODING 205 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 63 77 7f 6b 6b 63 63 00 00 00 ENDCHAR STARTCHAR cyr-en ENCODING 206 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 66 66 66 7e 66 66 66 00 00 00 ENDCHAR STARTCHAR cyr-o ENCODING 207 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 3c 66 66 66 66 66 3c 00 00 00 ENDCHAR STARTCHAR cyr-pe ENCODING 208 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 7e 66 66 66 66 66 66 00 00 00 ENDCHAR STARTCHAR cyr-er ENCODING 210 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 7c 66 66 66 66 66 7c 60 60 60 ENDCHAR STARTCHAR cyr-es ENCODING 211 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 3c 66 60 60 60 66 3c 00 00 00 ENDCHAR STARTCHAR cyr-te ENCODING 212 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 7e 18 18 18 18 18 18 00 00 00 ENDCHAR STARTCHAR cyr-u ENCODING 213 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 66 66 66 66 66 66 3e 06 0c 78 ENDCHAR STARTCHAR cyr-ef ENCODING 198 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 08 3e 6b 6b 6b 6b 6b 3e 08 08 08 ENDCHAR STARTCHAR cyr-kha ENCODING 200 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 66 66 3c 18 3c 66 66 00 00 00 ENDCHAR STARTCHAR cyr-tse ENCODING 195 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 66 66 66 66 66 66 7f 03 00 00 ENDCHAR STARTCHAR cyr-che ENCODING 222 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 66 66 66 66 3e 06 06 00 00 00 ENDCHAR STARTCHAR cyr-sha ENCODING 219 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 6b 6b 6b 6b 6b 6b 7f 00 00 00 ENDCHAR STARTCHAR cyr-shcha ENCODING 221 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 6b 6b 6b 6b 6b 6b 7f 03 00 00 ENDCHAR STARTCHAR cyr-ier ENCODING 223 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 70 30 3e 33 33 33 3e 00 00 00 ENDCHAR STARTCHAR cyr-iery ENCODING 217 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 63 63 7b 6d 6d 6d 7b 00 00 00 ENDCHAR STARTCHAR cyr-ierik ENCODING 216 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 60 60 7c 66 66 66 7c 00 00 00 ENDCHAR STARTCHAR cyr-e-rev ENCODING 220 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 7c 06 06 3e 06 06 7c 00 00 00 ENDCHAR STARTCHAR cyr-yu ENCODING 192 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 6e 5b 5b 7b 5b 5b 6e 00 00 00 ENDCHAR STARTCHAR cyr-ya ENCODING 209 SWIDTH 533 0 DWIDTH 8 0 BBX 8 15 0 -3 BITMAP 00 00 00 00 00 3e 66 66 66 3e 36 66 00 00 00 ENDCHAR ENDFONT xpat2-1.07/lib/russian/messages100644 146 144 760 5642312746 15137 0ustar mbimathopt# sorry, this is currently NOT iso8859-5, and this is NOT complete №вХЫвСдЩди щЧве? юЯзСб щЧвС? хнХ вСк г юСоСЬС? ыЬСзЩСдевС №вСзЩЬС щЧвй %s # sorry, help isn't translated yet ../help.keys ../help.Spider ../help.Gypsy ../help.Klondike ../help.Seahaven ../help.FreeCell ../help.Delight ../hlpMonteCarlo ../hlpMidnightOil ../hlpCalculation ../hlpmodCanfield ../help.Michaels ../help.Canfield ../help.Cotillion ../hlpBakersDozen xpat2-1.07/lib/russian/keys100644 146 144 153 5720430074 14267 0ustar mbimathopt#c This file does contain the german key bindings for xpat version 2.0 #include ../keys y None d Confirm xpat2-1.07/lib/help.Klondike100644 146 144 1723 5556303463 14353 0ustar mbimathopt The Rules of Klondike ===================== Klondike is the traditional patience game and is played using only one set of cards. We have four stacks and seven slots. Initially, the first slot has one card on it, the second one two, and thus continuing up to the seventh slot, which gets seven cards. Of these cards, only the topmost card is turned face-up. Klondike introduces another type of pile: There is a second deck which holds face-up cards. Every time you request dealing of new cards, these cards are moved onto the open deck pile. You can move cards from this pile to the slots or to the stacks, but you never can move cards back to the open deck. The rules which card may be grouped together are similar to the rules for the Gypsy game. The only difference is that you may only move a king onto an empty slot. Once all cards are dealt, you can flip all the cards of the open deck back onto the other deck and continue. You can flip the deck up to three times. xpat2-1.07/lib/help.FreeCell100644 146 144 1546 5556303457 14302 0ustar mbimathopt The Rules of Free Cell ====================== This variant has been shamelessly borrowed from the Microsoft Windows entertainment package. The rules introduce a new pile type, which we call register or tmp. A register may hold only one card at a time, but this may be an arbitrary one. This is to compensate the fact that all cards are dealt at the start of game, which makes it very difficult to achieve a free slot. The cards dealt initially do not often form valid groups. You have to rearrange them, possibly using the registers as scratch storage. To get a free slot you have to build groups of cards which alternate in colour and have decreasing ranks. The rules are easy to understand if you know Gypsy already since the rules for moving cards are the same. Free Cell is played with one deck of cards. You have four registers, four stacks, and eight slots. xpat2-1.07/lib/help.Seahaven100644 146 144 1242 5642314345 14336 0ustar mbimathopt The Rules of Seahaven Towers ============================ Seahaven Towers is similar to Free Cell (or the other way round, I don't know which game was the first to exist). We have ten slots, and four registers, but it is more difficult since cards may only be moved onto cards of the same suit and you can only move kings to empty slots. The original Seahaven Towers game has yet another restriction: When moving blocks of n cards, you must have at least n-1 registers free (moves are supposed to be single-card moves). This restriction can be dropped be calling xpat2 with the '-relaxed 1' option, since it implies that only blocks of five cards maximum can be moved. xpat2-1.07/lib/help.Cotillion100644 146 144 2444 5717761713 14555 0ustar mbimathopt The Rules of Royal Cotillion ============================ Royal Cotillion uses two standard 52-card decks (no jokers) dealt together. The game begins by dealing twelve cards in three rows of four cards each, forming the left tableau. The right wing of the tableau is formed by dealing four rows of four cards each. The foundations are formed in two columns between the left and right tableau. Foundations are formed in the following sequences for each suit: A,3,5,7,9,J,K,2,4,6,8,10,Q 2,4,6,8,10,Q,A,3,5,7,9,J,K In the left wing of the tableau, only the bottom card of each column is available for play, and spaces are never filled. In the right wing, all cards are available, and spaces are filled immediately from the wastepile, or, if there is none, from the deck. Cards are turned up from the deck one at a time, and may be played either to the foundations or the wastepile. The top card of the wastepile is always available for play. The game is won if all eight foundations are completed, or lost if a block is reached. It is advisable, if you have a choice, to play from the left wing first, thus freeing up additional cards. In the right wing, you should not make a move merely because you can. It is better to wait to make a space until a desirable card to save turns up. xpat2-1.07/lib/default/ 40755 146 144 0 7012640546 13260 5ustar mbimathoptxpat2-1.07/lib/default/Background.xpm100644 146 144 10743 6710067044 16207 0ustar mbimathopt/* XPM */ static char *Background[] = { /* width height num_colors chars_per_pixel */ " 64 64 5 1", /* colors */ ". c #c0c0c0", "# c #cfcfcf", "a c #dfdfdf", "b c #efefef", "c c #ffffff", /* pixels */ "#...............bccccccccccccccccccccccccccccccccccccccccca.....", "c................ccccccccccccccccccccccccccccccccccccccccc.....a", "cc................ccccccccccccccccccccccccccccccccccccccc.....#c", "ccb...............#ccccccccccccccccccccccccccccccccccccc......cc", "ccc#...............bccccccccccccccccccccccccccccccccccc#.....ccc", "cccc................ccccccccccccccccccccccccccccccccccb.....bccc", "ccccc................ccccccccccccccccccccccccccccccccc.....acccc", "cccccb...............#ccccccccccccccccccccccccccccccc.....#ccccc", "cccccc#...............bccccccccccccccccccccccccccccc......cccccc", "ccccccc................cccccccccccccccccccccccccccc#.....ccccccc", "cccccccc................ccccccccccccccccccccccccccb.....bccccccc", "ccccccccb...............#ccccccccccccccccccccccccc.....acccccccc", "ccccccccc#...............bccccccccccccccccccccccc.....#ccccccccc", "cccccccccc................cccccccccccccccccccccc......cccccccccc", "ccccccccccc................cccccccccccccccccccc#.....ccccccccccc", "cccccccccccb...............#ccccccccccccccccccb.....bccccccccccc", "cccccccccccc#...............bccccccccccccccccc.....acccccccccccc", "ccccccccccccc................cccccccccccccccc......ccccccccccccc", "cccccccccccccc................cccccccccccccc......cccccccccccccc", "ccccccccccccccb...............#cccccccccccc#.....ccccccccccccccc", "ccccccccccccccc#...............bccccccccccb.....bccccccccccccccc", "cccccccccccccccc................cccccccccc.....#cccccccccccccccc", "ccccccccccccccccc................cccccccc......ccccccccccccccccc", "cccccccccccccccccb...............#cccccc......cccccccccccccccccc", "cccccccccccccccccc#...............bcccc#.....ccccccccccccccccccc", "ccccccccccccccccccc................cccb.....bccccccccccccccccccc", "cccccccccccccccccccc................cc.....#cccccccccccccccccccc", "ccccccccccccccccccccb..............ac......ccccccccccccccccccccc", "ccccccccccccccccccccc#............#c......cccccccccccccccccccccc", "cccccccccccccccccccccc............c#.....ccccccccccccccccccccccc", "ccccccccccccccccccccccc..........cb.....bccccccccccccccccccccccc", "cccccccccccccccccccccccb........bc......cccccccccccccccccccccccc", "cccccccccccccccccccccccc#......ac.......bccccccccccccccccccccccc", "ccccccccccccccccccccccccc......c.........ccccccccccccccccccccccc", "cccccccccccccccccccccccc......c#..........cccccccccccccccccccccc", "ccccccccccccccccccccccc#.....cb...........#ccccccccccccccccccccc", "ccccccccccccccccccccccb.....bc.............bcccccccccccccccccccc", "cccccccccccccccccccccc.....#c...............cccccccccccccccccccc", "ccccccccccccccccccccc......cc................ccccccccccccccccccc", "cccccccccccccccccccc......cccb...............#cccccccccccccccccc", "ccccccccccccccccccc#.....ccccc#...............bccccccccccccccccc", "ccccccccccccccccccb.....bcccccc................ccccccccccccccccc", "cccccccccccccccccc.....#cccccccc................cccccccccccccccc", "ccccccccccccccccc......cccccccccb...............#ccccccccccccccc", "cccccccccccccccc......ccccccccccc#...............bcccccccccccccc", "ccccccccccccccc#.....ccccccccccccc................cccccccccccccc", "ccccccccccccccb.....bcccccccccccccc................ccccccccccccc", "cccccccccccccc.....#cccccccccccccccb...............#cccccccccccc", "ccccccccccccc......ccccccccccccccccc#...............bccccccccccc", "cccccccccccc......ccccccccccccccccccc................ccccccccccc", "ccccccccccc#.....ccccccccccccccccccccc................cccccccccc", "ccccccccccb.....bcccccccccccccccccccccb...............#ccccccccc", "cccccccccc.....#ccccccccccccccccccccccc#...............bcccccccc", "ccccccccc......ccccccccccccccccccccccccc................cccccccc", "cccccccc......ccccccccccccccccccccccccccc................ccccccc", "ccccccc#.....ccccccccccccccccccccccccccccb...............#cccccc", "ccccccb.....bccccccccccccccccccccccccccccc#...............bccccc", "cccccc.....#ccccccccccccccccccccccccccccccc................ccccc", "ccccc......ccccccccccccccccccccccccccccccccc................cccc", "cccc......ccccccccccccccccccccccccccccccccccb...............#ccc", "ccc#.....cccccccccccccccccccccccccccccccccccc#...............bcc", "ccb.....bccccccccccccccccccccccccccccccccccccc................cc", "cc.....#ccccccccccccccccccccccccccccccccccccccc................c", "c......ccccccccccccccccccccccccccccccccccccccccb...............#" }; xpat2-1.07/lib/default/Cardback1.xpm100644 146 144 24360 6711134643 15704 0ustar mbimathopt/* XPM */ static char *Cardback1[] = { /* width height num_colors chars_per_pixel */ " 79 123 8 1", /* colors */ ". c #3c495d", "# c #6c6f73", "a c #9d9689", "b c #9da4ae", "c c #cebd9f", "d c #ced1d6", "e c #ffe4b5", "f c #ffffff", /* pixels */ "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "fffffffdb.............................................................bdfffffff", "ffffffd.aeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea.dffffff", "fffffd.ceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeec.dfffff", "fffffbae...............................................................eabfffff", "fffff.ee.eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.ee.fffff", "fffff.ee.eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.ee.fffff", "fffff.ee.eeec#..#ceeec#...#ceeec#...#ceeec#...#ceeec#...#ceeec#..#ceee.ee.fffff", "fffff.ee.eec.ceec##e##ceeec##e##ceeec##e##ceeec##e##ceeec##e##ceec.cee.ee.fffff", "fffff.ee.ee#ceeeeee.eeeeeeeee.eeeeeeeee.eeeeeeeee.eeeeeeeee.eeeeeec#ee.ee.fffff", "fffff.ee.ee.eeeec##e.ceeeeec.e.ceeeeec.e.ceeeeec.e.ceeeeec.e##ceeee.ee.ee.fffff", "fffff.ee.ee.eeec.ceec.#cec#.cec.#cec#.cec.#cec#.cec.#cec#.ceec.ceee.ee.ee.fffff", "fffff.ee.ee#cec.ceeeeea#.#aeeeeea#.#aeeeeea#.#aeeeeea#.#aeeeeec.cec#ee.ee.fffff", "fffff.ee.eec#e#ceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeec#e#cee.ee.fffff", "fffff.ee.eee#e#eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee#e#eee.ee.fffff", "fffff.ee.eeee.eeeee.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.eeeee.eeee.ee.fffff", "fffff.ee.eee#e.ceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeec.e#eee.ee.fffff", "fffff.ee.eec#ec.eee.eec....cee#ceeeeeee.eeeeeeec#eec....cee.eee.ce#cee.ee.fffff", "fffff.ee.ee#cee#aeeeec#eeee#cee#ceeeeec.ceeeeec#eec#eeee#ceeeea#eec#ee.ee.fffff", "fffff.ee.ee.eeec#ee.e.ec..ee.eee#aeeec#e#ceeea#eee.ee..ce.e.ee#ceee.ee.ee.fffff", "fffff.ee.ee.eeee.eeee.e.eeee.eeeea....eee....aeeee.eeee.e.eeee.eeee.ee.ee.fffff", "fffff.ee.ee.eeec#ee.e.e.cee#ceec##ceeeeeeeeec##ceec#eec.e.e.ee#ceee.ee.ee.fffff", "fffff.ee.ee#cee#aeeee#cc...ceec#ceeeeeeeeeeeeec#ceec...cc#eeeea#eec#ee.ee.fffff", "fffff.ee.eec#ec.eee.ec#eeeeeee#ceeeeee.e.eeeeeec#eeeeeee#ce.eee.ce#cee.ee.fffff", "fffff.ee.eee#e.ceeeeee#ceeeeee.ee..aeec.ceea..ee.eeeeeec#eeeeeec.e#eee.ee.fffff", "fffff.ee.eeee.eeeee.eee.eeeeee.ee.a.aee.eea.a.ee.eeeeee.eee.eeeee.eeee.ee.fffff", "fffff.ee.eee#e.ceeeeee#a#eeeee.eeeec.ee.ee.ceeee.eeeee#a#eeeeeec.e#eee.ee.fffff", "fffff.ee.eec#ec.eee.ee.e.eeeee.aeeee.ee.ee.eeeea.eeeee.e.ee.eee.ce#cee.ee.fffff", "fffff.ee.ee#cee#aeeeeeee.eeeeec.eeec.ee.ee.ceee.ceeeee.eeeeeeea#eec#ee.ee.fffff", "fffff.ee.ee.eeec#ee.ec.cc#eeeee#.ce#aea.aea#ec.#eeeee#cc.ce.ee#ceee.ee.ee.fffff", "fffff.ee.ee.eeee.eeee.e.e.eeeeeec..aee.a.eea..ceeeeee.e.e.eeee.eeee.ee.ee.fffff", "fffff.ee.ee.eeec#ee.e.e.e.eeeeeeeeeee##e##eeeeeeeeeee.e.e.e.ee#ceee.ee.ee.fffff", "fffff.ee.ee#cee#aeeeec.cc.eee.eeeeee#.cec.#eeeeee.eee.cc.ceeeea#eec#ee.ee.fffff", "fffff.ee.eec#ec.eee.eeee#aeee#.aeec##ceeec##ceea.#eeea#eeee.eee.ce#cee.ee.fffff", "fffff.ee.eee#e.ceeeeeeee.eeeee#...#aeeeeeeea#...#eeeee.eeeeeeeec.e#eee.ee.fffff", "fffff.ee.eeee.eeeee.eeec.eeeeeeeeeeeeeeeeeeeeeeeeeeeee.ceee.eeeee.eeee.ee.fffff", "fffff.ee.eee#e.ceeeeeee.ceeeeeeeeeeeeeeeeeeeeeeeeeeeeec.eeeeeeec.e#eee.ee.fffff", "fffff.ee.eec#ec.eee.e.#eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee#.e.eee.ce#cee.ee.fffff", "fffff.ee.ee#cee#aeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea#eec#ee.ee.fffff", "fffff.ee.ee.eeec#ee.eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.ee#ceee.ee.ee.fffff", "fffff.ee.ee.eeee.eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.eeee.ee.ee.fffff", "fffff.ee.ee.eeec#ee.eeeeeeeeeeeee....ceeeeeeeeeeeeeeeeeeeee.ee#ceee.ee.ee.fffff", "fffff.ee.ee#cee#aeeeeeeeeeeeeeeee.eec.eeeeeeeeeeeeeeeeeeeeeeeea#eec#ee.ee.fffff", "fffff.ee.eec#ec.eee.eeeeeeeeeeeee.eee.e.eeeeeeeeeeeeeeeeeee.eee.ce#cee.ee.fffff", "fffff.ee.eee#e.ceeeeeeeeeeeeeeeee.eec.eeeeeeeeeeeeeeeeeeeeeeeeec.e#eee.ee.fffff", "fffff.ee.eeee.eeeee.eeeeeeeeeeeee....ee.ec...eeeeeeeeeeeeee.eeeee.eeee.ee.fffff", "fffff.ee.eee#e.ceeeeeeeeeeeeeeeee.eec.e.e.ceeeeeeeeeeeeeeeeeeeec.e#eee.ee.fffff", "fffff.ee.eec#ec.eee.eeeeeeeeeeeee.eee.e.e.eeeeeeeeeeeeeeeee.eee.ce#cee.ee.fffff", "fffff.ee.ee#cee#aeeeeeec#...aeeee.eee.e.e.ceeeeeeea...#ceeeeeea#eec#ee.ee.fffff", "fffff.ee.ee.eeec#ee.eec.ceec##eee.eee.e.ec...eeee##ceec.cee.ee#ceee.ee.ee.fffff", "fffff.ee.ee.eeee.eeeee.eeeeee##eeeeeeeeeeeeeeeee##eeeeee.eeeee.eeee.ee.ee.fffff", "fffff.ee.ee.eeec#ee.ee.eee.#ee##eeeeeeeeeeeeeee##ee#.eee.ee.ee#ceee.ee.ee.fffff", "fffff.ee.ee#cee#aeeeeec.aee.eee#.aeeeeeeeeeeea.#eee.eea.ceeeeea#eec#ee.ee.fffff", "fffff.ee.eec#ec.eee.eeec#..#eeeec.............ceeee#..#ceee.eee.ce#cee.ee.fffff", "fffff.ee.eee#e.ceeeeeeeeeeeeeec..ceeeeeeeeeeec..ceeeeeeeeeeeeeec.e#eee.ee.fffff", "fffff.ee.eeee.eeeee.eeeeeeeeec.cc..ceec.ceec..cc.ceeeeeeeee.eeeee.eeee.ee.fffff", "fffff.ee.eee#e#eeeeeeeeeeeec..ceeee..e.e.e..eeeec..ceeeeeeeeeeee#e#eee.ee.fffff", "fffff.ee.eee.e.eeee.e.e.e...ee..e..ee.e.e.ee..e..ee...e.e.e.eeee.e.eee.ee.fffff", "fffff.ee.eee#e#eeeeeeeeeeeec..ceeee..e.e.e..eeeec..ceeeeeeeeeeee#e#eee.ee.fffff", "fffff.ee.eeee.eeeee.eeeeeeeeec.cc..ceec.ceec..cc.ceeeeeeeee.eeeee.eeee.ee.fffff", "fffff.ee.eee#e.ceeeeeeeeeeeeeec..ceeeeeeeeeeec..ceeeeeeeeeeeeeec.e#eee.ee.fffff", "fffff.ee.eec#ec.eee.eeec#..#eeeec.............ceeee#..#ceee.eee.ce#cee.ee.fffff", "fffff.ee.ee#cee#aeeeeec.aee.eee#.aeeeeeeeeeeea.#eee.eea.ceeeeea#eec#ee.ee.fffff", "fffff.ee.ee.eeec#ee.ee.eee.#ee##eeeeeeeeeeeeeee##ee#.eee.ee.ee#ceee.ee.ee.fffff", "fffff.ee.ee.eeee.eeeee.eeeeee##eeeeeeeeeeeeeeeee##eeeeee.eeeee.eeee.ee.ee.fffff", "fffff.ee.ee.eeec#ee.eec.ceec##eeee...ce.e.eee.eee##ceec.cee.ee#ceee.ee.ee.fffff", "fffff.ee.ee#cee#aeeeeeec#...aeeeeeeec.e.e.eee.eeeea...#ceeeeeea#eec#ee.ee.fffff", "fffff.ee.eec#ec.eee.eeeeeeeeeeeeeeeee.e.e.eee.eeeeeeeeeeeee.eee.ce#cee.ee.fffff", "fffff.ee.eee#e.ceeeeeeeeeeeeeeeeeeeec.e.e.cee.eeeeeeeeeeeeeeeeec.e#eee.ee.fffff", "fffff.ee.eeee.eeeee.eeeeeeeeeeeeee...ce.ee....eeeeeeeeeeeee.eeeee.eeee.ee.fffff", "fffff.ee.eee#e.ceeeeeeeeeeeeeeeeeeeeeeeee.cee.eeeeeeeeeeeeeeeeec.e#eee.ee.fffff", "fffff.ee.eec#ec.eee.eeeeeeeeeeeeeeeeeee.e.eee.eeeeeeeeeeeee.eee.ce#cee.ee.fffff", "fffff.ee.ee#cee#aeeeeeeeeeeeeeeeeeeeeeeee.cee.eeeeeeeeeeeeeeeea#eec#ee.ee.fffff", "fffff.ee.ee.eeec#ee.eeeeeeeeeeeeeeeeeeeeec....eeeeeeeeeeeee.ee#ceee.ee.ee.fffff", "fffff.ee.ee.eeee.eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.eeee.ee.ee.fffff", "fffff.ee.ee.eeec#ee.eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.ee#ceee.ee.ee.fffff", "fffff.ee.ee#cee#aeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea#eec#ee.ee.fffff", "fffff.ee.eec#ec.eee.e.#eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee#.e.eee.ce#cee.ee.fffff", "fffff.ee.eee#e.ceeeeeee.ceeeeeeeeeeeeeeeeeeeeeeeeeeeeec.eeeeeeec.e#eee.ee.fffff", "fffff.ee.eeee.eeeee.eeec.eeeeeeeeeeeeeeeeeeeeeeeeeeeee.ceee.eeeee.eeee.ee.fffff", "fffff.ee.eee#e.ceeeeeeee.eeeee#...#aeeeeeeea#...#eeeee.eeeeeeeec.e#eee.ee.fffff", "fffff.ee.eec#ec.eee.eeee#aeee#.aeec##ceeec##ceea.#eeea#eeee.eee.ce#cee.ee.fffff", "fffff.ee.ee#cee#aeeeec.cc.eee.eeeeee#.cec.#eeeeee.eee.cc.ceeeea#eec#ee.ee.fffff", "fffff.ee.ee.eeec#ee.e.e.e.eeeeeeeeeee##e##eeeeeeeeeee.e.e.e.ee#ceee.ee.ee.fffff", "fffff.ee.ee.eeee.eeee.e.e.eeeeeec..aee.a.eea..ceeeeee.e.e.eeee.eeee.ee.ee.fffff", "fffff.ee.ee.eeec#ee.ec.cc#eeeee#.ce#aea.aea#ec.#eeeee#cc.ce.ee#ceee.ee.ee.fffff", "fffff.ee.ee#cee#aeeeeeee.eeeeec.eeec.ee.ee.ceee.ceeeee.eeeeeeea#eec#ee.ee.fffff", "fffff.ee.eec#ec.eee.ee.e.eeeee.aeeee.ee.ee.eeeea.eeeee.e.ee.eee.ce#cee.ee.fffff", "fffff.ee.eee#e.ceeeeee#a#eeeee.eeeec.ee.ee.ceeee.eeeee#a#eeeeeec.e#eee.ee.fffff", "fffff.ee.eeee.eeeee.eee.eeeeee.ee.a.aee.eea.a.ee.eeeeee.eee.eeeee.eeee.ee.fffff", "fffff.ee.eee#e.ceeeeee#ceeeeee.ee..aeec.ceea..ee.eeeeeec#eeeeeec.e#eee.ee.fffff", "fffff.ee.eec#ec.eee.ec#eeeeeee#ceeeeee.e.eeeeeec#eeeeeee#ce.eee.ce#cee.ee.fffff", "fffff.ee.ee#cee#aeeee#cc...ceec#ceeeeeeeeeeeeec#ceec...cc#eeeea#eec#ee.ee.fffff", "fffff.ee.ee.eeec#ee.e.e.cee#ceec##ceeeeeeeeec##ceec#eec.e.e.ee#ceee.ee.ee.fffff", "fffff.ee.ee.eeee.eeee.e.eeee.eeeea....eee....aeeee.eeee.e.eeee.eeee.ee.ee.fffff", "fffff.ee.ee.eeec#ee.e.ec..ee.eee#aeeec#e#ceeea#eee.ee..ce.e.ee#ceee.ee.ee.fffff", "fffff.ee.ee#cee#aeeeec#eeee#cee#ceeeeec.ceeeeec#eec#eeee#ceeeea#eec#ee.ee.fffff", "fffff.ee.eec#ec.eee.eec....cee#ceeeeeee.eeeeeeec#eec....cee.eee.ce#cee.ee.fffff", "fffff.ee.eee#e.ceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeec.e#eee.ee.fffff", "fffff.ee.eeee.eeeee.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.eeeee.eeee.ee.fffff", "fffff.ee.eee#e#eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee#e#eee.ee.fffff", "fffff.ee.eec#e#ceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeec#e#cee.ee.fffff", "fffff.ee.ee#cec.ceeeeea#.#aeeeeea#.#aeeeeea#.#aeeeeea#.#aeeeeec.cec#ee.ee.fffff", "fffff.ee.ee.eeec.ceec.#cec#.cec.#cec#.cec.#cec#.cec.#cec#.ceec.ceee.ee.ee.fffff", "fffff.ee.ee.eeeec##e.ceeeeec.e.ceeeeec.e.ceeeeec.e.ceeeeec.e##ceeee.ee.ee.fffff", "fffff.ee.ee#ceeeeee.eeeeeeeee.eeeeeeeee.eeeeeeeee.eeeeeeeee.eeeeeec#ee.ee.fffff", "fffff.ee.eec.ceec##e##ceeec##e##ceeec##e##ceeec##e##ceeec##e##ceec.cee.ee.fffff", "fffff.ee.eeec#..#ceeec#...#ceeec#...#ceeec#...#ceeec#...#ceeec#..#ceee.ee.fffff", "fffff.ee.eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.ee.fffff", "fffff.ee.eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.ee.fffff", "fffffbae...............................................................eabfffff", "fffffd.ceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeec.dfffff", "ffffffd.aeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea.dffffff", "fffffffdb.............................................................bdfffffff", "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" }; xpat2-1.07/lib/default/Cardback2.xpm100644 146 144 26012 6711313447 15702 0ustar mbimathopt/* XPM */ static char * Cardback2_xpm[] = { /* width height num_colors chars_per_pixel */ "79 123 63 1", /* colors */ " c white", ". c gray30", "X c #04c2c4", "o c #008080", "O c #044a4c", "+ c #040204", "@ c #00373c", "# c #006666", "$ c #009999", "% c #003333", "& c #403333", "* c gray50", "= c #646466", "- c gray42", "; c gray35", ": c gray62", "> c gray59", ", c #a5a5a5", "< c #b4b4b4", "1 c #d2d2d2", "2 c #bcbcbc", "3 c gray68", "4 c #dadada", "5 c gray90", "6 c #c3c3c3", "7 c #808080", "8 c gray94", "9 c #e9e9e9", "0 c #fcfafc", "q c #6f6f6f", "w c #bfcc99", "e c #806600", "r c #806633", "t c gray56", "y c #bf9900", "u c #f4d10c", "i c yellow3", "p c #efe3e3", "a c #ac7206", "s c #ff9900", "d c #ffcc33", "f c #bf9933", "g c #bcb4a8", "h c #403300", "j c #544204", "k c #808000", "l c #bf9966", "z c #cbcbcb", "x c #bf9999", "c c #bfcccc", "v c #409966", "b c #ffcc99", "n c #809933", "m c #40cc99", "M c #409999", "N c #809966", "B c #a4c244", "V c #80cc66", "C c #406633", "Z c #803300", "A c #2f7e88", "S c #396363", "D c #1a5f67", /* pixels */ " ", " ", " ", " ", " ", " ..................................................................... ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXoO+++++@#$XXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXX#+++++++++++%$XXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXX%++++++++++++++#XXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXX%+++++++++++&.&++OXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXX@++++++++++++&*=&++#XXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXX$+++++++++++++&-;&+++XXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXO+++++++++++++&&+++++#XXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXX%+++++++++++++++++++++$XXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++#XXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++%XXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXX+++++%&++++++..+&++++++XXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXX+++*:;+++++&>,<<&++++++XXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXX++=<12;+++&314567++++++$XXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXX++<<>86+++*95*>91&+++++$XXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXX%+2+;*0&++78&+==0*+++++oXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXX%+3+&.0&+&q8+++%83+++++oXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXX%+,+++weeer1++++53+++++oXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXX%+qt+eyuuyyie++707+++++oXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXO++pasuuuudduyfwg++++++#XXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXX#++ayuuuuudduiiufh+++++@XXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXX#+aysuuuuuduuuiyue+++++%XXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXX#+aysuuuuduiuiyyye++++++$XXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXX#+jasuuuuiiiyyysyh++&+++oXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXX#+&eauudiykeyyyyl;++*-&+%XXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXo+>3eeyaayyyyyl66:++.7q++oXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXo+t2:aayyyyafg2146.++;;+++XXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXX++tz6xraeaal2648083+++++++oXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXO++,p622ggg22c580008&++++++%XXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXo%+&989222222198808803+++++++OXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXX$+++<0801622c9800000808&+++++++$XXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXX%++*8000094588800000888t++++++++XXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXo+++988888888000000000005++++++++OXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXX$+++*888880800008888888888&++++++++OXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXX%+++3800000880800000000888>+++++++++oXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXX%+++&,z88008559800089544zz41++++++++++XXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXo++++;,2588888900888884zz2665*+++++++++%XXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXX+++++>z80888888888888 0885z6z9+++&++++++oXXXXXXXXXXX. ", " .XXXXXXXXXXXXXX$++&+&z000000080888888 000085z47+++&+++++%XXXXXXXXXXX. ", " .XXXXXXXXXXXXXXo+%++>8000000000000000 0000009z4++++&+++++oXXXXXXXXXX. ", " .XXXXXXXXXXXXXX%+&+&000000000000000000000000094*+&&++++++#XXXXXXXXXX. ", " .XXXXXXXXXXXXX$++++30000000000000 000000000000z+&&+&+++++XXXXXXXXXX. ", " .XXXXXXXXXXXXXO+&+&8000000008000000 000000000008&+++&+++++oXXXXXXXXX. ", " .XXXXXXXXXXXXX++++:00000000098 888888 888888 880.++++&++++OXXXXXXXXX. ", " .XXXXXXXXXXXX#++++88888 88 988888 8888888 88888*++++&+++++XXXXXXXXX. ", " .XXXXXXXXXXXX%+++;0888 885800000 0 0000000007++++&+++++oXXXXXXXX. ", " .XXXXXXXXXXXo++++>88 88 885888888 88 8888 888 ,++++++++++OXXXXXXXX. ", " .XXXXXXXXXXX%++++1888 8 8 84 88 888 8 88 88 g++++%+++++%XXXXXXXX. ", " .XXXXXXXXXXO+++++4000 00000848 8888888 88888 8882+++++++++++XXXXXXXX. ", " .XXXXXXXXX$+++&&+40000000008500 00000 0 0 0000c+++++++++++XXXXXXXX. ", " .XXXXXXXXXo+++&.&40000000008588 88 888 888 88 888+++&+++++++XXXXXXXX. ", " .XXXXXXXXXo++++&&500000000089888 8 8888888 888 81++++++++++%XXXXXXXX. ", " .XXXXXXXXXo++eh+*900000000085800 0000 00000<+%+++++%++%XXXXXXXX. ", " .XXXXXXXXXXesuuj+1000000000858000 00 000000 0000=%++++++&&+@XXXXXXXX. ", " .XXXXXXXXXvyuuuuj&2000000008588 8 88888 8 88biuy+++++++++h$XXXXXXXX. ", " .XXXXXXXXXfyuuuuuj+>8888888858888 8 88 8888iuiuh+++++++hiiXXXXXXXX. ", " .XXXXXXXXnysuuuuush+q90000088800000 0000 0000yuuy++++++++yuimXXXXXXX. ", " .XXXXXXXnyysuuuuuuy++.5000008888888 888888885fuuyj++++++auuumXXXXXXX. ", " .XXXMvNayyuuuuuuuuue++&5000000000 0000000016fusyaj+++hayuuumXXXXXXX. ", " .XXfssysusuuuuuuuuuy+++%68888888888 8888888ccfusyyaaaaaysuuuBXXXXXXX. ", " .XXyusuuuuuuuuuuuuuue++++t888 888 8888 88z6fssyyyyyyysuuuuuVXXXXXX. ", " .Xnsuuuuuuuuuuuuuuuuuh++++288 8888 88 8888 16aysssyyyysuuuuuuumXXXXX. ", " .XNsuuuuuuuuuuuuuuuuuy++++>8888 88888 8 88 46ayssssssssuuuuuuuuVXXXX. ", " .XNyuuuuuuuuuuuuuuuuuue+++:8888 88888884;ayysuuuuuuuuuuuuuuuBXXX. ", " .XNyuuuuuuuuuuuuuuuuuush.<08888888888888885&+aysuuuuuuuuuuuuuuuuuuXX. ", " .XNyuuuuuuuuuuuuuuuuuuufp880000000 0000004&+haysuuuuuuuuuuuuuuuuuuXX. ", " .XNysuuuuuuuuuuuuuuuuuusf088 88888 88888t+++haysuuuuuuuuuuuuuuuuufXX. ", " .XNyuuuuuuuuuuuuuuuuuuuiax000000 00001&++++haysuuuuuuuuuuuuuuuufXXX. ", " .Xnysuuuuuuuuuuuuuuuuusyyj-50000008z>C++++++jaysuuuuuuuuuuuuusyvXXXX. ", " .Xyyysssuuuuuuuuuuuuuuuyye++&C;;&%++++++++++jyysuuuuuuuuuuusfNXXXXXX. ", " .XXyyyyyysssuuuuuuuuuusyyeh+++++++++++++++++ZaysuuuuuuusssyvXXXXXXXX. ", " .XXnaayyyyyyyyysuuuuuusyaeh+++++++++++++++++jayyssuusssyyr$XXXXXXXXX. ", " .XXX$vvraaaaayyyyssssyyaaZh+++++++++++++++++jaayyyyyyyyaC$XXXXXXXXXX. ", " .XXXXXXX$ACeeaaaayyyyaaaej+O#o$XXXXXXXXXXXooheaayyyyyaeAXXXXXXXXXXXX. ", " .XXXXXXXXXXX$ASjeaaaaaeejS$XXXXXXXXXXXXXXXXX&jeaaaaaaeAXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXACjeeejjSXXXXXXXXXXXXXXXXXXX$hjeeeeejAXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXX$DCCS$XXXXXXXXXXXXXXXXXXXXXXACCCCAXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. ", " ..................................................................... ", " ", " ", " ", " ", " "}; xpat2-1.07/lib/default/Cardback3.xpm100644 146 144 24357 5550065016 15711 0ustar mbimathopt/* XPM */ static char * Cardback1_xpm[] = { /* width height ncolors chars_per_pixel */ "79 123 10 1", /* colors */ " c red", ". c black", "X c #FFAA55", "o c #00AEFF", "O c #AAFF55", "+ c #555500", "@ c blue", "# c #AA55FF", "$ c magenta", "% c #FF5100", /* pixels */ " .XXXX..oooooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@@@@@.#####. ", " .XXX.oooooooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@@@@@@..###. ", "$. ...oooooooooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@@@@@@@@@....%%", "$$..oooooooooooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@@@@@@@@@@..%%%", "$$$$..oooooooooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@@@@@@@@@..%%%%", "$$$$$...oooooooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@@@@@@@..%%%%%%", "$$$$$$$$..oooooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@@@@...%%%%%%%%", "$$$$$$$$$$.ooooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@@@..%%%%%%%%%%", "$$$$$$$$$$$..ooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@...%%%%%%%%%%%", "$$$$$$$$$$$$$..ooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@..%%%%%%%%%%%%%", "$$$$$$$$$$$$$$$..ooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@...%%%%%%%%%%%%%%%", ".$$$$$$$$$$$$$$$$.oooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@...%%%%%%%%%%%%%%%.", "#..$$$$$$$$$$$$$$$..oooooooooo.OOOOOOOO.++++++++.@@@@@@@@@...%%%%%%%%%%%%%%%..X", "##...$$$$$$$$$$$$$$$..oooooooo.OOOOOOOO.++++++++.@@@@@@@@..%%%%%%%%%%%%%%%..XXX", "#####..$$$$$$$$$$$$$$$.ooooooo.OOOOOOOO.++++++++.@@@@@.%..%%%%%%%%%%%%%%..XXXXX", "######...$$$$$$$$$$$$$$..ooooo.OOOOOOOO.++++++++.@@@....%%%%%%%%%%%%%%..XXXXXXX", "########..$$$$$$$$$$$$$$$..ooo.OOOOOOOO.++++++++.@@...%%%%%%%%%%%%%%..XXXXXXXXX", "#########...$$$$$$$$$$$$$$$....OOOOOOOO.++++++++....%%%%%%%%%%%%%%%..XXXXXXXXXX", "############..$$$$$$$$$$$$$$...OOOOOOOO.++++++++...%%%%%%%%%%%%%%..XXXXXXXXXXXX", "##############..$$$$$$$$$$$. .OOOOOOOO.++++++++. .%%%%%%%%%%%..XXXXXXXXXXXXXX", "###############...$$$$$$$.. .OOOOOOOO.++++++++. ..%%%%%%%..XXXXXXXXXXXXXXX.", ".################...$$$$. .OOOOOOOO.++++++++. .%%%%...XXXXXXXXXXXXXX...", "o..#################.. .OOOOOOOO.++++++++. ....XXXXXXXXXXXXXXXX..@@", "ooo..################... .OOOOOOO.+++++++. ...XXXXXXXXXXXXXXX..@@@@", "ooooo..##############. .. ..OOOOO.+++++.. .. .XXXXXXXXXXXXX...@@@@@", "oooooo...############. . ..OOO.+++.. . .XXXXXXXXXXXX..@@@@@@@", "ooooooooo..##########. .. ..O.+.. .. .XXXXXXXXXX..@@@@@@@@@", "oooooooooo..#########. .. ... .. .XXXXXXXXX.@@@@@@@@@@@", "oooooooooooo..#######. . . .. .XXXXXXX..@@@@@@@@@@@@", "ooooooooooooo...#####. .. . .XXXXX..@@@@@@@@@@@@@@", "oooooooooooooooo..###. . . .. . .XXX..@@@@@@@@@@@@@@@@", "oooooooooooooooooo..#. ..%.. .. .. ..$.. .XX..@@@@@@@@@@@@@@@@@", "ooooooooooooooooooo....%%%%%.. .. . ..$$$$.. ...@@@@@@@@@@@@@@@@@@@", "ooooooooooooooooooo...%%%%%%%... . ...$$$$$$$..@@@@@@@@@@@@@@@@@@@@@", "ooooooooooooooooo..%%%%%%%%%%%%%.. . ..$$$$$$$$$$$$...@@@@@@@@@@@@@@@@@@", "oooooooooooooooo..%%%%%%%%%%%%%%%%. . .$$$$$$$$$$$$$$$$..@@@@@@@@@@@@@@@@@", "oooooooooooooo..%%%%%%%%%%%%%%%%... . ...$$$$$$$$$$$$$$$$..@@@@@@@@@@@@@@@", "oooooooooooo..%%%%%%%%%%%%%%%%..XX. . .##..$$$$$$$$$$$$$$$..@@@@@@@@@@@@@@", "oooooooooo..%%%%%%%%%%%%%%%%..XXXX. . .####..$$$$$$$$$$$$$$$...@@@@@@@@@@@", "ooooooooo..%%%%%%%%%%%%%%%%.XXXXXX. . .######..$$$$$$$$$$$$$$$...@@@@@@@@@", "ooooooo..%%%%%%%%%%%%%%%%..XXXXXXX. . .#######..$$$$$$$$$$$$$$$$...@@@@@@@", "oooooo.%%%%%%%%%%%%%%%%..XXXXXXXXX. . .#########..$$$$$$$$$$$$$$$...@@@@@@", "ooo...%%%%%%%%%%%%%%%..XXXXXXXXXXX. . .###########..$$$$$$$$$$$$$$$..$.@@@", "o...%%%%%%%%%%%%%%%..XXXXXXXXXXXXX. . .#############..$$$$$$$$$$$$$$$....@", "..%%%%%%%%%%%%%%%%.XXXXXXXXXXXXXXX. . .##############..$$$$$$$$$$$$$$$$...", "%%%%%%%%%%%%%%%%..XXXXXXXXXXXXXXXX. . .################..$$$$$$$$$$$$$$$$.", "%%%%%%%%%%%%%%..XXXXXXXXXXXXXXX. . ...###############...$$$$$$$$$$$$$$", "%%%%%%%%%%%%..XXXXXXXXXXXXXXXX. . ...##############...$$$$$$$$$$$$$", "%%%%%%%%%%%.XXXXXXXXXXXXXXXX.... . ...###############...$$$$$$$$$$$", "%%%%%%%%%..XXXXXXXXXXXXXXXX..o.O.. . ..+.@..###############..$$$$$$$$$$", "%%%%%%...XXXXXXXXXXXXXXX...ooo.OOO.. . ..+++.@@@..###############.#.$$$$$$$", "..%%%..XXXXXXXXXXXXXXXX..ooooo.OOOOO.. . ..+++++.@@@@@..##############....$$$..", " .%.XXXXXXXXXXXXXXXX..ooooooo.OOOOOOO...+++++++.@@@@@@..###############...$. ", " ..XXXXXXXXXXXXXXX..ooooooooo.OOOOOOOO.++++++++.@@@@@@@@...##############... ", ". .XXXXXXXXXXXXX..ooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@...#############. .", " .XXXXXXXXXXX..ooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@..############. ", " .XXXXXXXXX..ooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@..##########. ", " .XXXXXXX...oooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@...########. ", " .XXXXX..ooooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@@...######. ", " .XXX...oooooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@@@@...####. ", " .X...oooooooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@@@@@@...##. ", ". ..X.ooooooooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@@@@@@@@..#. ..", "$$..oooooooooooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@@@@@@@@@@..%%%", "$$$$..oooooooooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@@@@@@@@@.%%%%%", "$$$$$...oooooooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@@@@@@@..%%%%%%", "$$$$$$$...oooooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@@@@@@.%%%%%%%%", "$$$$$$$$$$.ooooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@@@.%%%%%%%%%%%", "$$$$$$$$$$$..ooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@..%%%%%%%%%%%%", "$$$$$$$$$$$$$..ooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@.%%%%%%%%%%%%%%", "$$$$$$$$$$$$$$..oooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@.%%%%%%%%%%%%%%.", ".$$$$$$$$$$$$$$$...ooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@.%%%%%%%%%%%%%%%...", "#.$$$$$$$$$$$$$$$$...ooooooooo.OOOOOOOO.++++++++.@@@@@@@@@..%%%%%%%%%%%%%%....X", "##..$$$$$$$$$$$$$$$$..oooooooo.OOOOOOOO.++++++++.@@@@@@@@.%%%%%%%%%%%%%%%.%.XXX", "###...$$$$$$$$$$$$$$$$..oooooo.OOOOOOOO.++++++++.@@@@@@..%%%%%%%%%%%%%%....XXXX", "######..$$$$$$$$$$$$$$$....ooo.OOOOOOOO.++++++++.@@@..%%%%%%%%%%%%%%%%..XXXXXXX", "########..$$$$$$$$$$$$$$$...oo.OOOOOOOO.++++++++.@@.%%%%%%%%%%%%%%%%..XXXXXXXXX", "#########...$$$$$$$$$$$$$$$....OOOOOOOO.++++++++...%%%%%%%%%%%%%%%...XXXXXXXXXX", "###########..$$$$$$$$$$$$$$$$..OOOOOOOO.++++++++.%%%%%%%%%%%%%%%%...XXXXXXXXXXX", "#############..$$$$$$$$$$$$.. .OOOOOOOO.++++++++. ..%%%%%%%%%%%..XXXXXXXXXXXXXX", "###############..$$$$$$$$$. .OOOOOOOO.++++++++. .%%%%%%%%%.XXXXXXXXXXXXXXXX", "#################..$$$$$$. .OOOOOOOO.++++++++. .%%%%%%..XXXXXXXXXXXXXXXX.", "..################...$$.. .OOOOOOOO.++++++++. ..%%..XXXXXXXXXXXXXXXX..@", "oo...################.. .OOOOOOOO.++++++++. ..XXXXXXXXXXXXXXXX..@@@", "oooo..###############... ..OOOOOO.++++++.. ...XXXXXXXXXXXXXX..@@@@@", "oooooo..#############. ... .OOOOO.+++++. ... .XXXXXXXXXXXX..@@@@@@@", "oooooooo..###########. .. ..OOO.+++.. .. .XXXXXXXXXXX..@@@@@@@@", "oooooooooo..#########. ... ..... ... .XXXXXXXXX..@@@@@@@@@@", "ooooooooooo..########. .. . ... .XXXXXXX..@@@@@@@@@@@@", "ooooooooooooo..######. .. .. .XXXXX..@@@@@@@@@@@@@@", "ooooooooooooooo..####. .. .. .XXX...@@@@@@@@@@@@@@@", "ooooooooooooooooo..##. ..%.. .. .. ..... .XX.@@@@@@@@@@@@@@@@@@", "ooooooooooooooooooo.....%%%%. .. .. ...$$.. ...@@@@@@@@@@@@@@@@@@@", "ooooooooooooooooooooo..%%%%%%.. . ...$$$$$$..@@@@@@@@@@@@@@@@@@@@@", "ooooooooooooooooooo..%%%%%%%%%%. . ..$$$$$$$$$$..@@@@@@@@@@@@@@@@@@@", "oooooooooooooooo...%%%%%%%%%%%%%%%. . ...$$$$$$$$$$$$$$..@@@@@@@@@@@@@@@@@", "ooooooooooooooo..%%%%%%%%%%%%%%%... . ...$$$$$$$$$$$$$$$$.@@@@@@@@@@@@@@@@", "ooooooooooooo..%%%%%%%%%%%%%%%%..X. . .##.$$$$$$$$$$$$$$$$..@@@@@@@@@@@@@@", "ooooooooooo...%%%%%%%%%%%%%%%..XXX. . .###..$$$$$$$$$$$$$$$$..@@@@@@@@@@@@", "ooooooooo..%%%%%%%%%%%%%%%%..XXXXX. . .######..$$$$$$$$$$$$$$$..@@@@@@@@@@", "ooooooo..%%%%%%%%%%%%%%%%..XXXXXXX. . .########.$$$$$$$$$$$$$$$$..@@@@@@@@", "ooooo...%%%%%%%%%%%%%%%%.XXXXXXXXX. . .#########..$$$$$$$$$$$$$$$..@@@@@@@", "ooo...%%%%%%%%%%%%%%%%..XXXXXXXXXX. . .###########.$$$$$$$$$$$$$$$$..@@@@@", "o...%%%%%%%%%%%%%%%...XXXXXXXXXXXX. . .#############..$$$$$$$$$$$$$$$..@@@", "..%%%%%%%%%%%%%%%%..XXXXXXXXXXXXXX. . .###############.$$$$$$$$$$$$$$$$..@", ".%%%%%%%%%%%%%%%..XXXXXXXXXXXXXXX.. . ..###############..$$$$$$$$$$$$$$$$.", "%%%%%%%%%%%%%%..XXXXXXXXXXXXXXX... . ...###############.$$$$$$$$$$$$$$$$", "%%%%%%%%%%%%..XXXXXXXXXXXXXXX.. . ..################.$$$$$$$$$$$$$", "%%%%%%%%%%%..XXXXXXXXXXXXXXX... . ...###############..$$$$$$$$$$$", "%%%%%%%%%..XXXXXXXXXXXXXXX..oo... . ...@...###############.$$$$$$$$$$", "%%%%%%%..XXXXXXXXXXXXXXXX..ooo.OO. . .++.@@....##############..$$$$$$$$", ".%%%%..XXXXXXXXXXXXXXXX..ooooo.OOOOO. . .+++++.@@@@@..################..$$$$.", " ..%.XXXXXXXXXXXXXXXX..ooooooo.OOOOOO.....++++++.@@@@@@@..################.$.. ", " ..XXXXXXXXXXXXXXXX.ooooooooo.OOOOOOOO.++++++++.@@@@@@@@...###############.. ", " . .XXXXXXXXXXXXXX..oooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@...#############. . ", " .XXXXXXXXXXX...oooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@..###########. ", " .XXXXXXXXXX...ooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@..##########. ", " .XXXXXXXXX..ooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@..########. ", " .XXXXXXX..ooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@@...######. ", " .XXXX....oooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@@@@@..####. ", " .XXX.o.oooooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@@@@@@...##. ", ". .XX...ooooooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@@@@@@@@.... ..", "$. ....ooooooooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@@@@@@@@@....%%", "$$$$.ooooooooooooooooooooooooo.OOOOOOOO.++++++++.@@@@@@@@@@@@@@@@@@@@@@@@..%%%%"}; xpat2-1.07/lib/default/Cardback4.xpm100644 146 144 25415 5547230514 15711 0ustar mbimathopt/* XPM */ static char * hand_xpm[] = { /* width height ncolors chars_per_pixel */ "79 123 46 1", /* colors */ " c white", ". c #D9D9D9", "X c #DDDDDD", "o c #D1D1D1", "O c #D7D7D7", "+ c #CDCDCD", "@ c #C5C5C5", "# c #C9C9C9", "$ c #C1C1C1", "% c #747474", "& c #585858", "* c #828282", "= c #6C6C6C", "- c #686868", "; c #7C7C7C", ": c #A8A8A8", "? c #9C9C9C", "> c #B9B9B9", ", c #BDBDBD", "< c #ACACAC", "1 c #4A4A4A", "2 c #545454", "3 c #525252", "4 c #404040", "5 c #3D3D3D", "6 c #929292", "7 c #B5B5B5", "8 c #A0A0A0", "9 c #787878", "0 c #949494", "q c #707070", "w c #646464", "e c #4C4C4C", "r c #444444", "t c #383838", "y c #A4A4A4", "u c #606060", "i c #B0B0B0", "p c #888888", "a c #8C8C8C", "s c #5C5C5C", "d c #989898", "f c #343434", "g c #848484", "h c #E1E1E1", "j c #E4E4E4", /* pixels */ " ", " ..XX..oXX..o..XX..oXX..XX..oXX..oX....XX..oXX..oXX..o..XX..oXX..o..XX..oXX..o ", " X...o.X.XX..O.O+oo+OOX...oo+OO.ooO.oX...oo+OO.ooOO.ooX...oo+OO.ooX...oo+OO.oo ", " O...o..XX..oXX..o.OO+O...o.OO+ooo+ooO...o.OO+oooO+oooO...o.OO+oooO...o.OO+ooo ", " ++++o.X.XX..OO.oo+@##++++o+@##+@##+@++++o+@##+@###+@#++++o+@##+@#++++o+@##+@# ", " #oO.o..XX..oX+oooo+o+#oO.oo+o+o+#+o+#oO.oo+o+o+#o+o+##oO.oo+o+o+##oO.oo+o+o+# ", " @O+o+X...oo+O#+@#@+oo@O+o+@+oooO#ooO@O+o+@+oooO#oooO#@O+o+@+oooO#@O+o+@+oooO# ", " ##+O#O...o.OO+o+##@o###+O##@o#oo$#oo##+O##@o#oo$o#oo$##+O##@o#oo$##+O#.X.XX.. ", " oo+.#++++o+@#ooO#.Oo+oo+.#.Oo+o.o+o.oo+.#.Oo+o.oo+o.ooo+.#.Oo+o.ooo+.#..XX..o ", " +++o+#oO.oo+o#oo$#+oo+++o+#+oooo+ooo+++o+#+oooo+oooo++++o+#+oooo++++o+X...oo+ ", " oo+.O@O+o+@+o+o.o#oo+oo+.O#oo+#+++#+oo+.O#oo+#++o+#++oo+.O#oo+#++oo+.OO...o.O ", " #+#+###+O##@oooo+Oooo.+oo..O..o%&*=-==;:?>+.O.......o,>,<,#$o....#+#+#++++o+@ ", " o#$o+oo+.#.Oo+#++o#+,@+#o.X..123415133=*67+.o.Oo.O.o>;*890,$#....o#$o+#oO.oo+ ", " @o@@$+++o+#+o..Oo#$$<$:$o..Xq&&wer5tr42q*y@O....oOO$0q%-u9,@+OooO#+.##34&e4r1w=;>oOo*-w22=4t5f51s*7@o+OO2&2145t543&%:@##oO.oooo+.O#o ", " o+$@+@o+oOo#+r33r4t4rr229<++.=sw-%-&tt5rr2a,#+ooOs222t4555r3=i,#@O+o+@+oooO#+ ", " +#,$@#$o@o#$&w&er4ft4r13;d@@o2%y8a%eftf451w:+ooo>s1*s11ttt4ew0$+##+O##@o#oo$$ ", " +,$##>@oo++Ou-u121fft541&6$@+17?:0=e5tftr1=,#oOo9;s%2ue5t54rsd@ooo+.#.Oo+o.oO ", " ,,$7,:$@##@os-&22e1tfttr3q:7@r@:9;w45tf55rw:#+Oo3da;e-24t5t42q>#+++o+#+oooo+, ", " $,,$@>,@#+@$e=2e3rrtfftte-d7,$>i7?<,i<@a=s=w34tfff42g8d$a:-s&r4ffft520+++O4#o#$o++####+>> ", " >i::>:apa8da>2=6gg2effff5rw;?$d,-q1rtfftf54a$+#or9 ", " $7:78%uw-%;9g>*%q=wefff55r&9?<*y71ue5fffftr=,+oo2$d=4rfttt551q>#+@+##@@#,$$8< ", " <@oOs:@a2e55ffft1%>+##@$#,>#7$7:0 ", " <:y892e22&w=9q4p*2r4tfftf412qds+>g33rtfff51wy++#wy$wsettfff4e=>#@o$#@,,#,,>ya ", " >?i>###,,@,>><>4t5f11r3&&s-q%?qw&ttfft5t1-q1+,qw14tffff4&d#o+?#>71&5ffff5rw?7@$,,$,:<0?e4r5fffft20>#+>+0=se5tfft54q:i,,>7$7d?9p09- ", " :&24rrfftt44e2e3ayssreffft54r24o,%554fffff51p,$si:=sr4tffftt3w68,?aa;%9w2 ", " ?&2re14fttft43e3qip=ee5ffff5rr57@-r2sfffff54q074y?=s254tfft5rwayd?6yya%;=sw2e ", " >e34rrrtfttt44re=0?&1erfftt5r4fuiuer2fffff5rq7#3%urer54fftt4e90::8:<0p9*9-qs2 ", " drwr&1rett5ft4111?>9srtfffftt5fw=2rrq4fffff4qd,2w231et5ffft52qy:dyy?:g%;%%u&3 ", " 8:=ree&r4fft411r1p$93r44tfftt559:?=sw1fffftr=7qiyr&q2tftff5429yiy:d?y;*g-sw2& ", " ??1se2w&5f5ft54rru:pu112ftftttt,#p?q21tffff4wy5p0w1w&55ffft4s*yy0dd00q;===213 ", " <:8a-9*25ttft555r3>,=er145ffftt$.>,%924ffft4&:e7?;pg1tfffft4&9?6:d0a0*qq&2211 ", " <8?10=d-t5ftttt44t0pp-e34ttfft5dOO@6w15ffft4spw#aygpq4144ttft545ua-9etwrtfft5y@#,6%e5tfft5206$i:a=5ttfff51up6:00;g;q==&3e11 ", " y:66eqw4&234t5t5t5re@8wwe44fftts@@p:q35tfft4eg>@088y48-s&&15ftf5t5s$,d?,u3tfff5d$$;92ttffft4r$@@aa=e5tff542%0y809a;=se3&r444 ", " yyy:gg-*d3ue45fftt5&>o#$?q3tffffpyyyqe5fffft45o+i%?w44ftf442;dd?d;a=sef55tf5t ", " ::y?dgr=6wu214tftt53%+@>,*95ffffu::yerfffftf5t@>>0?=15ffftrs0yi8ag9wsf4454tft ", " y7:??a*-yd9=345ttf5ta,++@a;1ffffrd<*=effffff5;@>ypy=1tffft4w68::0a9&f51w42tf5 ", " 7>8?0y640i;;1454tttt&0$,,y02tfft1;7w&-ffffff19?d9=ww15fff5rua8y8a*151sq=q1tf5 ", " 7e=qs45ffftq$>+@8e5ftf1q$0w2453239*q99w21e5fttf5rs*08a;5&q9wg@y=55t ", " yi$0454*ps%q214ew-%q=%=9q&2e5tt5t5rwpa865uqgw=*@:wfft ", " y>:dp&55fttqg:8$@g=%a*q2=2e2up*p*y0<7;-s155fft4rs9*842=d;d0?+ytttt ", " ?0ay0qwe213u*p%pa8:d?s2r55ftft5squ=r&p0;><$O9tfft ", " g0p:i88<<<7&@,08y155frs9*ay=-27y**u3-r2&q?0d%$a-*s2rtttfftt4r411s7>6<@#o4tttf ", " 9;9?0a0<7<8ep>#=7%sre@d:w3s=wqi$ia%3&e4-wg0d:?d#@7queu42ddy8?:p8=q&15fttft4&-=-216ya<>74ft5t4 ", " dg09;9a0pdg0uO$+7<7?6d,dy$,ssa>o7>ps=r&qp*6d,y00p2-e55ttf541wwr2s9$,y7%4f5554 ", " 6dp8dda?8dy:%o.+io+$y7y8,#O:u%?#$:a%q33*@?7$$+>pu&3e4tttt453uw=agq:ydq15555r4 ", " pp9dg08:y224t454rr ", " ?0a6dpd::d7aypi..O#>a,+o7@#+:3;g,>a=qgd<>?ypqwwr%s1=2r455t541-#+#Ood;25tt5r41 ", " g0ppp98dy:8p0sO.o><,,@>$>7#$,9esp*22@,?70*%q*;qyggsrt5t4tft4r$o>7o$%wrf5t5411 ", " 9;9a0pdgy::08w..+g$#@#@$1e-126$@**&e288$,$7aq2r5t5tt55=,+o<.?istft555t4 ", " 8dda?8dyd>yd?2oOO:+$.+@,$+$@o$wer2<8,>aq&3d:,%-&rr54tt5:+.o$#,grtt454r13 ", " 6dpd::d7<>:d:?#XX@O.Oo@#++o>;15ttt44ee& ", " g*g00ada0><88g>Xh..$$:##$,$*;2r542w>+.o$p2e5ttt541e& ", " q;;pppp008y0886XX.O,O+$+#,@6=oipa&1;,@i+.#XhX...>$$$:,q141q1qy#O,as5ttttr112u ", " *q**dgpqpy06ad=Xhh..#@@i#@$#w0%3-*,p$$>#O+XXX.XX#,>.$6210%2rs0o>$?155t54r12&- ", " %ga0yad60yy?p8wXhX.o+$o#@O$+$16s9O,d@@,.$OhhO..#,OO+79..+=wuwd:7%w15tt54r32uq ", " ;p*086gap80?*6p.hX+o@@#@o+.o+a&d9$O+X.@+<.hhXoO@.#o@-XhX7$7gs<00w1r4t54rr3uw= ", " *p9%*aa*aa?ada;#XXo+++oO@#,$+:4q=w,i.+>#6hhO>Xo+XO2XX..XOoX#9i$q144tf5441sw== ", " ga;*g9p*98a*0aa#X..#,,o.#oi#y$;r0a,:+.+?qXX.OO+OysXX.OOX..X.#d#w1545t54re&uw= ", " %0*6p**pp?6*?a?,XX..+o@.O,OO,#,dw9i7X..oXX.o.h..XhXXXXX.d2455r1111sww-q= ", " ;pp;a%pggd0pdaa%oXXX.+OX..#.o.7O##$=$O.oXhXOXOXX.XXh.XhXXXX++q315rrrre2uwq=qu ", " q%g=q%p9*90pp;g*OXXh.@o..Oo.$$.O@$@8=@o@Xh.O.OOXXXhhXhXXXX.X+w34t41131euw-w%% ", " q-ww%%==-;9q%9=q#XXXOO.@.oO+o.o.O#o$q:>@+.#....o..XXXX.XXX.O*345t45411e2&u=-& ", " w-=--sw-wq==q;9=aXhX#+OOO.O.,#X.@.$+*77<;O7o#oXX.X.XX.X.O.o>-155t44r4r33&2sus ", " 2-&uww-wq%;9q%=q=.X.oo@O...oooXoOOOo7.@#d.>,+oo.X.X.......+;3555t5444ee2e&u&& ", " w-=s===9-q;;*;q9w#XX.#ohOXXOX..XXhhX.X+.+Xo#@#..o.XXO.#.#.9-e444rr441e2ws-ssu ", " uwusq=w=q9;q*%pqqyXhho#OhhhhO+..Xhh.XX.h.d@@oO+,......XXo+%2r44544r1r1e23ssw& ", " uw-uuu==q;;%;9;=90XhX.O.XhXX.ohhhhhhhhjhXXoO+OO+O..o..XOy8;*9sr11e3111e111ee322s&232 ", " 2&&ss3ssuqq-wq-suse&*7XhhhhXhhhhhXX.X..a9&?:@80=ag=%2w211123rer1r4r142ee2es&3 ", " &&es2s2ssu=u&su&222erd.XXXXh.hXhhhXXXO$6%&3pdq;qs23214e11ee11e111e11ee322&2e2 ", " 32&33e3e&22&&213&see4q#XX.XXXX.hXXX.+7=%u1rwsw22rr4r4411eeee1e1e1r4111112ee12 ", " e333233e&s&ee&&113eer=?+.XXX.Xhhh.X,g0uwer1-2311e44r4rr2e123ee14rrr1re113e332 ", " 31e22e11eseee32e21314wq=<.XXXXhXX7<7q2w;&1r32eer1541r1re1rr1111114141e32213ee ", " e2r2r11rr33e1ere11141=?<9++#OXO>:yqe2es=451ee14rt44144e31r4111e15rre11ee3r3ee ", " e21er3r1ee1ee1e23ee43s9yOio@>g2wwqs22up&1e1124r45t5r41re1r1rrr11414eeer1e2211 ", " e1rr22e11r12442r11re12=9.+i?p-wu2&31w;-u1341rr5445rr5r411114r1r45r11e121e3e22 ", " 114r2e1e33eee23eerr1e3a>y>Op&s22s-2s-w=sr41r11rrt4rr41ee1rr141e3r12444eeeseee ", " 1err1e3r1111231r1eer1eq>.XO$,*%e3e2ew%u33r4r3r1e4tr5rrr1r11rrrr13eeer4ree1e11 ", " 31e2rr13esee31e22e11e31e22e11eseee22e11esee22e1111eseee1r3r1e1e311122e11eseee ", " e2r21e31133eee1rr141e3r1241e3e33e12e1e3e33e2e1e3e3e33e1322e1111esee3e1e3e33e1 ", " e21e11esee1ee114r11rr13eeee23ee1eee2e23ee1e1e3r123ee1eee2e1e3e3ee1rr141e3r124 ", " 1rr1e3e33124e1err3r1e3111241e3r124r1e1rr141rr13e4e3r124e1e3r123e114r11rr13eee ", " 14r123ee1eee1e3r12411esee31rr13eeer1114r11r1e311r141e3r3rr13e11e1err3r1e31112 ", " err311ese1122413eeee3e33e1rr141e3r121err3r111eser11rr13e1e311e3e31e22e11esee3 ", " 1e22e11esee3ee3111223ee1114r11rr13ee31e22e1e3e33r3r1e31e11ese23ee2r2e1e3e33ee ", " 2r2e1e3e33ee12esee311ese1err3r1e3111e2r2e1e23ee122e11esee3e331e3e21e2e23ee1ee ", " 21e2e23ee1eee3e33eee3e3331e22e11ee1rr141e3r11ese2e1e3e3123ee1141e3r12411eseee ", " 1e22e11eseeeee1rr141e3r124r2e1e3e114r11rr13eee21e2e23ee111ese11rr13eeee3e33e1 ", " 2r2e1e3e33ee1114r11rr13eee1e2e23e1err3r1e311121e22e11esee1err3r1ee1rr141e3r12 ", " 21e2e23ee1e111err3r1e31112e22e11e31e22e11esee31rr141e3r12441e3r12414r11rr13ee ", " 1rr141e3r121e31e22e11esee3r2e1e3ee2r2e1e3e33eer1241rr13eee1rr13eeeerr3r1e3111 ", " 14r11rr13ee31e2r2e1e3e33ee141e3r1e21e2e23ee1ee3eeer1e31112r1e311121e22e11esee ", " ee1rr141e3re2e21e2e23ee1ee11rr13e31e22e11eseee1112e11esee3e11esee32r2e1e3e33e ", " 3114r11rr13e231e22e11eseee3r1e311e2r2e1e3e33e1see31e3e33ee1e3e33ee21e2e23ee1e ", " e2r2e1e3e3331e2r2e1e3e33e12e11esee32e11esee33e33eee23ee1eee23ee1ee1e22e11esee ", " e21e2e23ee1e2r2e1e3e33e2r2e1e3e33eee1e3e33ee3ee1eee11eseeee11eseee2r2e1e3e33e ", " e1rr141e3r1e21e2e23ee1e21e2e23ee1ee2e23ee1ee1eseee1e3e33e11e3e33e121e2e23ee1e ", " 114r11rr13ee1rr141e3r131e22e11eseee2e11eseee3e33e1e23ee1eee23ee1ee1rr141e3r12 ", " "}; xpat2-1.07/lib/default/Cardback5.xpm100644 146 144 24360 6711136666 15717 0ustar mbimathopt/* XPM */ static char *Cardback5[] = { /* width height num_colors chars_per_pixel */ " 79 123 8 1", /* colors */ ". c #474747", "# c #6e6e6e", "a c #969696", "b c #a3a3a3", "c c #bebebe", "d c #d0d0d0", "e c #e5e5e5", "f c #ffffff", /* pixels */ "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "fffffffdb.............................................................bdfffffff", "ffffffd.aeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea.dffffff", "fffffd.ceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeec.dfffff", "fffffbae...............................................................eabfffff", "fffff.ee.eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.ee.fffff", "fffff.ee.eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.ee.fffff", "fffff.ee.eeec#..#ceeec#...#ceeec#...#ceeec#...#ceeec#...#ceeec#..#ceee.ee.fffff", "fffff.ee.eec.ceec##e##ceeec##e##ceeec##e##ceeec##e##ceeec##e##ceec.cee.ee.fffff", "fffff.ee.ee#ceeeeee.eeeeeeeee.eeeeeeeee.eeeeeeeee.eeeeeeeee.eeeeeec#ee.ee.fffff", "fffff.ee.ee.eeeec##e.ceeeeec.e.ceeeeec.e.ceeeeec.e.ceeeeec.e##ceeee.ee.ee.fffff", "fffff.ee.ee.eeec.ceec.#cec#.cec.#cec#.cec.#cec#.cec.#cec#.ceec.ceee.ee.ee.fffff", "fffff.ee.ee#cec.ceeeeea#.#aeeeeea#.#aeeeeea#.#aeeeeea#.#aeeeeec.cec#ee.ee.fffff", "fffff.ee.eec#e#ceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeec#e#cee.ee.fffff", "fffff.ee.eee#e#eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee#e#eee.ee.fffff", "fffff.ee.eeee.eeeee.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.eeeee.eeee.ee.fffff", "fffff.ee.eee#e.ceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeec.e#eee.ee.fffff", "fffff.ee.eec#ec.eee.eec....cee#ceeeeeee.eeeeeeec#eec....cee.eee.ce#cee.ee.fffff", "fffff.ee.ee#cee#aeeeec#eeee#cee#ceeeeec.ceeeeec#eec#eeee#ceeeea#eec#ee.ee.fffff", "fffff.ee.ee.eeec#ee.e.ec..ee.eee#aeeec#e#ceeea#eee.ee..ce.e.ee#ceee.ee.ee.fffff", "fffff.ee.ee.eeee.eeee.e.eeee.eeeea....eee....aeeee.eeee.e.eeee.eeee.ee.ee.fffff", "fffff.ee.ee.eeec#ee.e.e.cee#ceec##ceeeeeeeeec##ceec#eec.e.e.ee#ceee.ee.ee.fffff", "fffff.ee.ee#cee#aeeee#cc...ceec#ceeeeeeeeeeeeec#ceec...cc#eeeea#eec#ee.ee.fffff", "fffff.ee.eec#ec.eee.ec#eeeeeee#ceeeeee.e.eeeeeec#eeeeeee#ce.eee.ce#cee.ee.fffff", "fffff.ee.eee#e.ceeeeee#ceeeeee.ee..aeec.ceea..ee.eeeeeec#eeeeeec.e#eee.ee.fffff", "fffff.ee.eeee.eeeee.eee.eeeeee.ee.a.aee.eea.a.ee.eeeeee.eee.eeeee.eeee.ee.fffff", "fffff.ee.eee#e.ceeeeee#a#eeeee.eeeec.ee.ee.ceeee.eeeee#a#eeeeeec.e#eee.ee.fffff", "fffff.ee.eec#ec.eee.ee.e.eeeee.aeeee.ee.ee.eeeea.eeeee.e.ee.eee.ce#cee.ee.fffff", "fffff.ee.ee#cee#aeeeeeee.eeeeec.eeec.ee.ee.ceee.ceeeee.eeeeeeea#eec#ee.ee.fffff", "fffff.ee.ee.eeec#ee.ec.cc#eeeee#.ce#aea.aea#ec.#eeeee#cc.ce.ee#ceee.ee.ee.fffff", "fffff.ee.ee.eeee.eeee.e.e.eeeeeec..aee.a.eea..ceeeeee.e.e.eeee.eeee.ee.ee.fffff", "fffff.ee.ee.eeec#ee.e.e.e.eeeeeeeeeee##e##eeeeeeeeeee.e.e.e.ee#ceee.ee.ee.fffff", "fffff.ee.ee#cee#aeeeec.cc.eee.eeeeee#.cec.#eeeeee.eee.cc.ceeeea#eec#ee.ee.fffff", "fffff.ee.eec#ec.eee.eeee#aeee#.aeec##ceeec##ceea.#eeea#eeee.eee.ce#cee.ee.fffff", "fffff.ee.eee#e.ceeeeeeee.eeeee#...#aeeeeeeea#...#eeeee.eeeeeeeec.e#eee.ee.fffff", "fffff.ee.eeee.eeeee.eeec.eeeeeeeeeeeeeeeeeeeeeeeeeeeee.ceee.eeeee.eeee.ee.fffff", "fffff.ee.eee#e.ceeeeeee.ceeeeeeeeeeeeeeeeeeeeeeeeeeeeec.eeeeeeec.e#eee.ee.fffff", "fffff.ee.eec#ec.eee.e.#eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee#.e.eee.ce#cee.ee.fffff", "fffff.ee.ee#cee#aeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea#eec#ee.ee.fffff", "fffff.ee.ee.eeec#ee.eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.ee#ceee.ee.ee.fffff", "fffff.ee.ee.eeee.eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.eeee.ee.ee.fffff", "fffff.ee.ee.eeec#ee.eeeeeeeeeeeee....ceeeeeeeeeeeeeeeeeeeee.ee#ceee.ee.ee.fffff", "fffff.ee.ee#cee#aeeeeeeeeeeeeeeee.eec.eeeeeeeeeeeeeeeeeeeeeeeea#eec#ee.ee.fffff", "fffff.ee.eec#ec.eee.eeeeeeeeeeeee.eee.e.eeeeeeeeeeeeeeeeeee.eee.ce#cee.ee.fffff", "fffff.ee.eee#e.ceeeeeeeeeeeeeeeee.eec.eeeeeeeeeeeeeeeeeeeeeeeeec.e#eee.ee.fffff", "fffff.ee.eeee.eeeee.eeeeeeeeeeeee....ee.ec...eeeeeeeeeeeeee.eeeee.eeee.ee.fffff", "fffff.ee.eee#e.ceeeeeeeeeeeeeeeee.eec.e.e.ceeeeeeeeeeeeeeeeeeeec.e#eee.ee.fffff", "fffff.ee.eec#ec.eee.eeeeeeeeeeeee.eee.e.e.eeeeeeeeeeeeeeeee.eee.ce#cee.ee.fffff", "fffff.ee.ee#cee#aeeeeeec#...aeeee.eee.e.e.ceeeeeeea...#ceeeeeea#eec#ee.ee.fffff", "fffff.ee.ee.eeec#ee.eec.ceec##eee.eee.e.ec...eeee##ceec.cee.ee#ceee.ee.ee.fffff", "fffff.ee.ee.eeee.eeeee.eeeeee##eeeeeeeeeeeeeeeee##eeeeee.eeeee.eeee.ee.ee.fffff", "fffff.ee.ee.eeec#ee.ee.eee.#ee##eeeeeeeeeeeeeee##ee#.eee.ee.ee#ceee.ee.ee.fffff", "fffff.ee.ee#cee#aeeeeec.aee.eee#.aeeeeeeeeeeea.#eee.eea.ceeeeea#eec#ee.ee.fffff", "fffff.ee.eec#ec.eee.eeec#..#eeeec.............ceeee#..#ceee.eee.ce#cee.ee.fffff", "fffff.ee.eee#e.ceeeeeeeeeeeeeec..ceeeeeeeeeeec..ceeeeeeeeeeeeeec.e#eee.ee.fffff", "fffff.ee.eeee.eeeee.eeeeeeeeec.cc..ceec.ceec..cc.ceeeeeeeee.eeeee.eeee.ee.fffff", "fffff.ee.eee#e#eeeeeeeeeeeec..ceeee..e.e.e..eeeec..ceeeeeeeeeeee#e#eee.ee.fffff", "fffff.ee.eee.e.eeee.e.e.e...ee..e..ee.e.e.ee..e..ee...e.e.e.eeee.e.eee.ee.fffff", "fffff.ee.eee#e#eeeeeeeeeeeec..ceeee..e.e.e..eeeec..ceeeeeeeeeeee#e#eee.ee.fffff", "fffff.ee.eeee.eeeee.eeeeeeeeec.cc..ceec.ceec..cc.ceeeeeeeee.eeeee.eeee.ee.fffff", "fffff.ee.eee#e.ceeeeeeeeeeeeeec..ceeeeeeeeeeec..ceeeeeeeeeeeeeec.e#eee.ee.fffff", "fffff.ee.eec#ec.eee.eeec#..#eeeec.............ceeee#..#ceee.eee.ce#cee.ee.fffff", "fffff.ee.ee#cee#aeeeeec.aee.eee#.aeeeeeeeeeeea.#eee.eea.ceeeeea#eec#ee.ee.fffff", "fffff.ee.ee.eeec#ee.ee.eee.#ee##eeeeeeeeeeeeeee##ee#.eee.ee.ee#ceee.ee.ee.fffff", "fffff.ee.ee.eeee.eeeee.eeeeee##eeeeeeeeeeeeeeeee##eeeeee.eeeee.eeee.ee.ee.fffff", "fffff.ee.ee.eeec#ee.eec.ceec##eeee...ce.e.eee.eee##ceec.cee.ee#ceee.ee.ee.fffff", "fffff.ee.ee#cee#aeeeeeec#...aeeeeeeec.e.e.eee.eeeea...#ceeeeeea#eec#ee.ee.fffff", "fffff.ee.eec#ec.eee.eeeeeeeeeeeeeeeee.e.e.eee.eeeeeeeeeeeee.eee.ce#cee.ee.fffff", "fffff.ee.eee#e.ceeeeeeeeeeeeeeeeeeeec.e.e.cee.eeeeeeeeeeeeeeeeec.e#eee.ee.fffff", "fffff.ee.eeee.eeeee.eeeeeeeeeeeeee...ce.ee....eeeeeeeeeeeee.eeeee.eeee.ee.fffff", "fffff.ee.eee#e.ceeeeeeeeeeeeeeeeeeeeeeeee.cee.eeeeeeeeeeeeeeeeec.e#eee.ee.fffff", "fffff.ee.eec#ec.eee.eeeeeeeeeeeeeeeeeee.e.eee.eeeeeeeeeeeee.eee.ce#cee.ee.fffff", "fffff.ee.ee#cee#aeeeeeeeeeeeeeeeeeeeeeeee.cee.eeeeeeeeeeeeeeeea#eec#ee.ee.fffff", "fffff.ee.ee.eeec#ee.eeeeeeeeeeeeeeeeeeeeec....eeeeeeeeeeeee.ee#ceee.ee.ee.fffff", "fffff.ee.ee.eeee.eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.eeee.ee.ee.fffff", "fffff.ee.ee.eeec#ee.eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.ee#ceee.ee.ee.fffff", "fffff.ee.ee#cee#aeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea#eec#ee.ee.fffff", "fffff.ee.eec#ec.eee.e.#eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee#.e.eee.ce#cee.ee.fffff", "fffff.ee.eee#e.ceeeeeee.ceeeeeeeeeeeeeeeeeeeeeeeeeeeeec.eeeeeeec.e#eee.ee.fffff", "fffff.ee.eeee.eeeee.eeec.eeeeeeeeeeeeeeeeeeeeeeeeeeeee.ceee.eeeee.eeee.ee.fffff", "fffff.ee.eee#e.ceeeeeeee.eeeee#...#aeeeeeeea#...#eeeee.eeeeeeeec.e#eee.ee.fffff", "fffff.ee.eec#ec.eee.eeee#aeee#.aeec##ceeec##ceea.#eeea#eeee.eee.ce#cee.ee.fffff", "fffff.ee.ee#cee#aeeeec.cc.eee.eeeeee#.cec.#eeeeee.eee.cc.ceeeea#eec#ee.ee.fffff", "fffff.ee.ee.eeec#ee.e.e.e.eeeeeeeeeee##e##eeeeeeeeeee.e.e.e.ee#ceee.ee.ee.fffff", "fffff.ee.ee.eeee.eeee.e.e.eeeeeec..aee.a.eea..ceeeeee.e.e.eeee.eeee.ee.ee.fffff", "fffff.ee.ee.eeec#ee.ec.cc#eeeee#.ce#aea.aea#ec.#eeeee#cc.ce.ee#ceee.ee.ee.fffff", "fffff.ee.ee#cee#aeeeeeee.eeeeec.eeec.ee.ee.ceee.ceeeee.eeeeeeea#eec#ee.ee.fffff", "fffff.ee.eec#ec.eee.ee.e.eeeee.aeeee.ee.ee.eeeea.eeeee.e.ee.eee.ce#cee.ee.fffff", "fffff.ee.eee#e.ceeeeee#a#eeeee.eeeec.ee.ee.ceeee.eeeee#a#eeeeeec.e#eee.ee.fffff", "fffff.ee.eeee.eeeee.eee.eeeeee.ee.a.aee.eea.a.ee.eeeeee.eee.eeeee.eeee.ee.fffff", "fffff.ee.eee#e.ceeeeee#ceeeeee.ee..aeec.ceea..ee.eeeeeec#eeeeeec.e#eee.ee.fffff", "fffff.ee.eec#ec.eee.ec#eeeeeee#ceeeeee.e.eeeeeec#eeeeeee#ce.eee.ce#cee.ee.fffff", "fffff.ee.ee#cee#aeeee#cc...ceec#ceeeeeeeeeeeeec#ceec...cc#eeeea#eec#ee.ee.fffff", "fffff.ee.ee.eeec#ee.e.e.cee#ceec##ceeeeeeeeec##ceec#eec.e.e.ee#ceee.ee.ee.fffff", "fffff.ee.ee.eeee.eeee.e.eeee.eeeea....eee....aeeee.eeee.e.eeee.eeee.ee.ee.fffff", "fffff.ee.ee.eeec#ee.e.ec..ee.eee#aeeec#e#ceeea#eee.ee..ce.e.ee#ceee.ee.ee.fffff", "fffff.ee.ee#cee#aeeeec#eeee#cee#ceeeeec.ceeeeec#eec#eeee#ceeeea#eec#ee.ee.fffff", "fffff.ee.eec#ec.eee.eec....cee#ceeeeeee.eeeeeeec#eec....cee.eee.ce#cee.ee.fffff", "fffff.ee.eee#e.ceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeec.e#eee.ee.fffff", "fffff.ee.eeee.eeeee.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.eeeee.eeee.ee.fffff", "fffff.ee.eee#e#eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee#e#eee.ee.fffff", "fffff.ee.eec#e#ceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeec#e#cee.ee.fffff", "fffff.ee.ee#cec.ceeeeea#.#aeeeeea#.#aeeeeea#.#aeeeeea#.#aeeeeec.cec#ee.ee.fffff", "fffff.ee.ee.eeec.ceec.#cec#.cec.#cec#.cec.#cec#.cec.#cec#.ceec.ceee.ee.ee.fffff", "fffff.ee.ee.eeeec##e.ceeeeec.e.ceeeeec.e.ceeeeec.e.ceeeeec.e##ceeee.ee.ee.fffff", "fffff.ee.ee#ceeeeee.eeeeeeeee.eeeeeeeee.eeeeeeeee.eeeeeeeee.eeeeeec#ee.ee.fffff", "fffff.ee.eec.ceec##e##ceeec##e##ceeec##e##ceeec##e##ceeec##e##ceec.cee.ee.fffff", "fffff.ee.eeec#..#ceeec#...#ceeec#...#ceeec#...#ceeec#...#ceeec#..#ceee.ee.fffff", "fffff.ee.eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.ee.fffff", "fffff.ee.eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.ee.fffff", "fffffbae...............................................................eabfffff", "fffffd.ceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeec.dfffff", "ffffffd.aeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea.dffffff", "fffffffdb.............................................................bdfffffff", "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" }; xpat2-1.07/lib/default/Pictures.xpm100644 146 144 66327 5546526011 15737 0ustar mbimathopt/* XPM */ static char * Pictures_xpm[] = { "196 138 11 1", " s None c None", ". c black", "X c #FFFFD75C0000", "o c #F3CEE38DD34C", "O c #2081410330C2", "+ c #BAEABAEABAEA", "@ c white", "# c #30C2A289C30B", "$ c red", "% c #30C2C30BA289", "& c #CF3C00000000", "....................................................................................................................................................................................................", ". ..X..X.X.X.X.X.X..X..X.X..X.. .. ...X.X.X...X.X...X...X.X.X... .. ..XX.X.XX..XX.XX..XX.X.XX.. .. ...XX...X..X...X..X...XX... .", ". ..X..X.X..X..X.X.X.X.X..X.. .. ...X.X.X...X...X.X...X.X... .. ..XX.X.X..X.X.X..X.X.XX.. .. ...XX..X..X...X..X..XX... .", ". ..X..X.X.X.X.X..X..X..X.. .. . ...X.X...X.X...X...X.X... ... ..XX.XX..XX.XX..XX.XX.. .. ...XXXX..XXXXX..XXXX... .", ".. ...X..X..X..X.X.X.X..X.. .. .X. ...X.X...X...X.X...X... .... ..XX.X..X.X.X..X.XX.. ... ..................... .", "... . ..X....X......X...X.. .. ... ..................... ..... . ..XXX..XXXXX..XXX.. .... .................... .", ".X.. . ...XXXXXXXXXXXXXXX.. .. ... .................... ..... .. .................. ..... ..X.X.oooooooooooo.. .", "..X.. . . .................. .. .X. .oooooooooo.X.X.X.X. ..... .X. ................. ..X.. .X.X.X.oooo.ooooooo.. .", "...X.. .. .................. .. .X. .ooo....ooo.X.X.X.X. ..... .XX. .O.O.O.oooooooo. ...X. .X.X.X.....oooo...... .", "....X.. . .ooooooooooo.O.O.. .. ... .oo.oooo..o.X.X.X.X. ..... ..XX. .O.O.O.oo....o. ..X.. .X.X.X.ooooo.o.oooo.. .", ".XXXXX.. .ooooooooooo.O.O.O. .. ... .oo....oooo.X.X.X.X. ........XX. .O.O.O.ooo..oo. ...X. . .X.X.X......oo.o..... .", "......... ...ooo.....o.O.O.O. .. .X. .ooo..o.ooo.X.X.X.X. ..X.X.X..X. .O.O.O.oo.o.oo. ..X.. .. .X.X.X.o...ooo.o...X. .", ".XX. .oo.o.oooooo.O.O.O. .. ... .oo....oooo.X.X.X.X. ..X.X.X.X.. .O.O.O.ooo...oo. ...X. .. .X.X.X.ooo.ooo.ooo.X. .", ".XX. ....ooo....oo.O.O.O. .. .X. .ooooooooooo.X.X.X.X. ..X.X.X..X. .O.O.O.ooooooooo. ..X.. .X. .X.X.X.ooooooo.ooo.X. .", ".XX. ..oo.oo..ooo.O.O.O. ...X.X. ...ooooooooo.X.X.X.X. ........XX. .O.O.O.oo..oooooo. ...X. .X. .X.X.X.oooooooo.oo.X. .", ".XX. ...o.oo...oo.O.O.O. .. .X. .oo..oo.ooo.X.X.X.X. ..... .XX. .O.O.O.oo.ooo..o.. ..X....XX. .X.X.X.oooooo...oo.X. .", ".XX. .oo.oooooooo.O.O.O. .. ... .oooo.oo.oo.X.X.X.X. ..... .X. ..O.O.O.oooo...oo. .....XXX. .X.X.X.ooooooooooo.X. .", ".XX. .oo...oooooo.O.O.O... .. .X. .....o..ooo.X.X.X.X. ..... .. .OO..O.O.ooooooooo. . . ..X.XXX. ...X.X.X.ooo.ooooooo.X. .", ".XX. .ooo.ooooooo.O.O...O. .. ... ...ooooooo.X.X.X.X. ..... . .O..O.O.O.oooooo.... .... ..XXXX. .XX.X.X.X.oooo.....o.X.... ..", ".XX. .oooooo.oooo.O...O.O. .. ... .ooooooooo.X...X... ..... .O.O..O.O...oooooo... . .. ...X.. ....X.X...ooooo..ooo.XX.XX. ...", ".XX. .o....ooooo.O.O.O.O. .. .X. .oooooooo....X...X... ..... ...OO.O.O.O..oooooo. . . .+.. ..... .XXXX..@@..oooooooo.@.XX.X. ....", "..... .oo..ooooo..O.O.O.. .. .X. ..ooooo..X.X...X...X. ..... ..@........@.@...ooo.o. ..+......+. ...X. .@....@@@@@...ooooo.@@@.XXX.. ..X.", ".o.oo. ..ooooooo...OOO..... .. ... ............@...@... ..... .......................... . .+.. ..XX. ..@@.@@..@@@@@.......@@@.....@.. .XX.", "....oo. ...#..oooo...#........... .. .... ...@@@@@@@@@@@@@@@@@...... .............$$$$$$$$$$$$$$$$$$$.. . .. ..X.. .%..@@..@@...@@@@@@@@@...@@..@@.... .X..", ".oo.oo....##.#......######....$..... ...ooo.. ..@..@..@..@..@..@..XXXXX... ..........$...$$$.$$.$$$.$.$$$.$$.. . . ..... ...%...@@..@@@.........@@@..@@........ ....", "....oo...##...@@@.....##....#.$..#.... ..o......@@.@@@@@@@@@@@@@@@@.X...X.##.. ..........$.$..$$$...............$$.. . . ... ..X...$$..%...@@@...@@@@@@@@@...@@@.....%......X..", ".oo.o.....##..@@@@.#......##.$...#.#.... ....oo..$.....................X...X.#..#... .......#..$$$...$$$$$$$$$.$$$$$$$$$$... . .+.. ..XX..$.$..%....@@@@.........@@@@..............XX.", ".....o...##...@..@.###..###.$$$..#.#.#.... ....o...$$..##.@..@...@...@....XX.XX...##..#. ......#.#..$$$...$$..............$$..$...+...+. .....$.$$$..%.......@@@@@@@@@.........%%%%......X.", ".XX.o.#...##..@@@@..######..$.$..#......#... ..X...o.$.$.#.##.....@...@...@..XXXXX..##..##... ....##.#...$$$.$..$$.@@@.@@.@@@.$$..$@....+.+. ..XX.$..$.$..%.%.%................................", ".XX....#.##...@@@@....##...$$$$..#..#....#....XX..o.$$..######..@...@........X...X.##..##..##. ...#..#...$$.$$$...$$.@@@..@@@.$$..$$$.$.#... .....$.$.$$$..%.%.%.$...$....$..$..%%%%%%%%%%...X.", ".XX.....#.#.#.@..@.........$.$...#......#.#.@.XX...$$...###.............#....X...X.#..##..##.... ..#..#....$$$..$$$$.$$.@.@@.@.$$..$$.$$$..#.. ..XX.$..$.$.$..%.%.%.$...$.$..$................XX.", ".XX..#...###..@@@@.#......$$$$$..#.#.#...#.@@.XX...$..##.##..##.#####.#.#.##.XX.XX...##..##..##......#.....$$$$$.$$...$.@@..@@.$...$.$$.$.#..... .....$.$$$.$$.$.%.%.%.$...$.$..$...%%%%%%%%%...X..", ".XX.#.#...#...@@@@.###....$.$.$..#.#.#..##@@..XX..$..##...#.#.##.##.##...##..XXXXX.###..##......#...#......$$$$$$$$$...$.@..@.$...$$$.$.$..#.#......XX.$..$.$.$..$.%.%.%.$...$.$..$..%%%%%%%%%......", ".XX....#.....@@..@..###.$$$$$$$..#........@@@.XX....##..#..###....##..#.#..#.X...X.#...#....$$.##..#.......$$$$$$$$$$..$.@@@@.$...$$$$.$$.#..#.@........$$.$$$..$...%.%.%.$...$.$................X..", ".XX..#..#....@@@@.#...#..$.$.....#..$....@@@@.XX..###..##..###..#..###...###.X...X...#..$.$$..$.#..........$..$.$$.$....$.@@.$...$$$$$$.$..#.#.@....XX..$.$.$.$..$...%.%.%.$..$..$...............XX.", ".XX.#....#.#.@@@@..#...$$$$$$.#..#......@@..@.XX......#...#.##.#....#..#..##.XX.XX.##.$$$..$$$$.#.............$$$$$.$$..$.@@.$...$$$$$....#..#..@....X...$$$.$$.$...$%..%.%.$..$..$..%%%%%%%%%%...X.", ".XX....#..#..@..@.#.#.$.$....##..#.$....@@@@@.XX..#####.#.#..#....##.#######.XXXXX...$$.$$..$$..#...........@.@$$$$.@$...$$$$...@$$$$$..@..####..@......$.$.$.$..$..$$%..%.%.$..$...................", ".XX.#..#....@@@@@..#..$$$$$.#.#..#..$$.@@@@@..XX..##.....##.....$$.##..............$$.$$$..$..$.#..........#.#.$$$$$......$$....$$.$$.$...#..#.@.....X.$.$.$$$..$.....$%.%..%.$..$...%%%%%%%......X.", ".XX....#..#.@@@@..##.$.$...##.#...$$$$.@..@.#.XX..#..##.###...$$.$$.#..@.@.@.@.@..$.$$$.$$.$$$$.#.........#.#.#.$$@.......$$...$$$$$$$$....#.#..@...XX....$.$.$..$....$$%.%.%..$..$..............XX.", ".XX...##..#.@..@.#.#.$$$$.#.##..$$$.$.@@@@@.#.XX..#.##.##...$$.$$.$...@.@.@.@.@...$$$.$$$...$$..#........#.#.#$$$$$$......$$..$$$.$.$$....#...@..@..X..$.$$$.$$.$...$$..$%.%.%..$................X..", ".XX...#..#.@@@@@..#..$...##.#.$$..$$$.@@@@.#..XX....#.##..$$.$$.$...$..@...@...@.$$.$$$.$$.$..$.#.......#.#.#$$$$$$$$.....$$..$$$$$$$$$.#..#...@........$.$.$.$....$...$.$%.%.%......%%%%%%%%%......", ".XX...#..#.@@@@..###.$$.#.##.$$$$$$..@..@@.#..XX.....##..$.$$.$$..$$$.@...@...@.$.$$$..$$..$$$$.#......#.#.$$$$@@$$$......$$..$$$$$$$$$$.#..#...@...X..$...$$$.....$..$.$.$%.%.%...............o.X..", ".XX..##..#.@..@.###....##.#.$..$$..#.@@@@.#...XX..####...$$.$$..$$$.$..@.@.@.@..$$$.$$..$.$.$$.....@..#.#.#$$$.$.$$.$.....$$..$$$$$$.$$$..#..#...@..XX..$.$.$.$..$$..$...$.$%.%.%.....%%%%%%.....XX.", ".XX..#..#.@@@@@.####.##.##.$$$$$.#..@@@@@.#...XX........$.$$..$$$.$$$.@.@.@.@..$$.$$...$$.$$....#...@..#.#.@$@$$$$...$........$$$$.$$$$$$..#..#......X.$..$$.$..$...$.$$$.$.$%.%.%.............o..X.", ".XX..#..#.@@@@..#.###.#...$..$..#.#.@..@.#....XX..###...$$.$.$$.$$$.$.........$.$$$$.$$.$..$$$..#..@.@..#..@$@$$$$$$$.@$.....$$.$$$.$$$$$...#..#.@......$...$...$....$$..$.$.$%.%.%.................", ".XX..#..#.@..@.#.#.#...#.$.$$..#.#..@@@@.#....XX..##..$$.$$.$..$...$$..@@.@@..$$$$...$.$.$$.$...#.$.@..#...$$@.@$$$@$$@$$$....$$$$$$$$$$$$....@.#....X.$..$...$$...$..$..$..$.$%.%.%..............X.", "....................................................................................................................................................................................................", ". .. ..#...#.##.##.#. .. ..@.XX.XX.@..X.XXXX. .. .X.X.X.X.XXXXXXXXXX. .. .@@@@@.@@@.....@@.@@.@. .", ". .......#....##.#.##.. .. ...XX.o.XX..XXXXXX. .. ..X.X.X...XX..XXXXX. .. .@@.....@..@.@@.o.@@.. .", ".. .......#.#.##.###.##. .. ..XX.ooo.XX..X...X. .. ..X.X.X.X..XX...XXX. .. .@@@@.@@....@@.ooo.@@.. .", "... .. ..##.#.#.##.##.#. .. . .X.X.ooooo.X..XX..X. .. ...X.o.X.X..X...XXX. .. .@@@.@@@..@.@.ooooo.@.@. .", ".#. ..#.....##.o.##.. .. . .X..ooooooo...X.X.X. .. ..X.ooo.X.X.XXXXXXX. .. .@.........@.ooooooo..@@. .", ".#.. .. ..#..#.....oo.... .. .X. .X.@...ooo.....XXXX. .. ...ooooo.X...XX..XX. .. .@@@.@@..@......o...@..@. .", ".##. .......#.#..ooooo.ooo. .. .X. .X.@@@.oo.@@@..X.... .. .X.o...oo.....XX...X. .. .@@.@@....o.oooo.ooo....@. .", ".##. .......#.#.o....o..... .. .X. .X.....oo......XX... .. .X.ooo.ooooo...X...XX. .. ........@.oo.....o......@@. .", ".##. .. ..##...oo..oo...o. ...XXX. .X...%.ooo..oo...X.. .. .X.....oo...o..XXXXXX. .. .@@.@....oooo..oo...o....@@. .", ".##. ..#..#.oo...o.o.... .. .X. .X.X....ooo...o..XXXX. .. .X.o...ooo..oo..XX..X. .. .@@.@@..@..ooo...o.o.......@. .", ".##. .. ...#..#.ooooooo.oo.#. .. ... .X.X.oo.oooooooo...... .. .X......oo....oo..X...X. .. .........@.ooooooo.ooo.....@@. .", ".#.........#.##.oooo.o..oo.##. .. . .X.X.ooo..ooooo...X... .. .X..ooo.oooooooo..X...X. .. .@@.@..@...oooooooo.oo......@. .", ".#.#......##....ooooo..oo...##. .. . .X.X.ooo.oooooo....... .. .X..oooo.oooooooo..XXXXX. .. .@@@@.....@.ooooo..o.o..@.....@. .", ".#.##.....#..#.ooooooo.oo....##. .. .. .X.X.ooooooooo.%... .. .X...ooo.o.oooooo...X..XX. ..........@...oooooooo.oo.@.@....@@. .", "..... ...#..#.ooooooo.oo.+...##. .. .. .X.X..oo...ooo..%. .. .X....ooo..oooooo.......... .. ...@@.ooooooooooo..@......@. .", ". .. ..##.##.oooo.ooooo.++...##. .. .. .X.X...oo..ooo.%... .. .X....oooo.oooooo..#.. .. .@..@..ooo.....oo.@.@.....@. .", ". ....#......ooo....o...++...##. .. .. .X.X..%.oooooo..%%.. .. .X....oooooo.ooo........ .. ...@@@...oooo..oo...@.@.....@. .", ". ...#..#....oooo..o....++..##. .. .. .X.X..%.ooooo.%.%.%. .. .X...#.oo...oooo..@.#.... . .. .@.@.@@@..ooooooo..@.@.@....@. . .", ". ...##.##.....ooooo......+...##. .. .. .X.X.%.%.ooo.%%%.%%%. .. .X...##.ooo..ooo........... ..X.. .. ....@@@.@@..ooooo....@.@.....@@. ... .", ". ...#..#..X.X..oooo.XXX...+..##. .. .. .X....%.%...%.%.%.%.%. .. .X...#...oo.oooo..@.@.#...... .X.X. .. .@....@@@.@..oooo.@@..@.@.....@. .@.@. .", ". ...##....XXXX.......X.XXX....##. .. .. .....%%.%%%.%%%.%%%.%%%. .. .X.....@.oooooo................ .X...X... ..........@@.@....@@.@@...@....@. ...@....", ". ...#..XX.X.XXXX.X.X.XXX.XX...##. .. .. .....%.%.%.%.%.%.%.%...@. .. .X....@.@.oooo..@.@.@..##........ .X.X.X.. .@.@.........@.@@@.@...........@@. . .@.@.", ". ...##.XX......XXXXXXXX.X...%..##. . .. .. ..@@..%%%.%%%.%%%.%%..@@. .. .X...#..@.@.....@.@.@...##....... ..X..X.. ...@...@...................@.....@. ..@@.", ". ..##..XX.%%%%....X..X...%%%%.... .$. .. .....@@...%.%.%.%.%.%..@@@@@. .. .X...#...@.@.@.@.@.@..#......... .XX... .@....@.@.@.............@.@.@....@. ..@.@.", ". ...#.......%%%.%%.....%%.%%%..%.. ..$.. .. ..@.@@@@@...%%%.%%%.%%.@@.@.@@. .. .X..#.##....@.@.@....###........ ........ ..........@...@.......@...@......... .@.@.@.", ". ..##.%%%.%..%...%..$..%...%..%%%.. .$$.$$. .. ....@.@@@.%.%.%.%.%..@@@..@@@.. . .. .X.#.###.##.......##..#......#.#.. ...#..#.. .@.@.......@.@.@.@.@.@.@.@.......@... .@.@.@..", "...##..%%..%%...%...$.$...%...%%%.... ..$..X.. .. ..@..@@..@.%%.%%%.%%.@@@.@.@@@.$. ... .. .X.###...###.##.##.###..$..#.####....#####.#.......@.@.........@...@.........@.@......@.@@.@..", "...#...%.......%%%.$.$.$.%%%.......%.. .$.X.X. .. .....@..@@..%.%....@@@@@@@@@@.$. .X.X. .. ..##.##.....###.##....$$$..#.##.#.#....#.#.#...@......@.@.................@.@......%.@..@@@.@.", "..##.%.....%........$.$......%.%..%%%.. .X.XX. .. ..@....@@.@@......@@@.@.@@@@..$... ...X... .. .##.##..$$........$$$$$$...##...##..$$..#..........@...@.@.@...........@.@.@..@...%.%.@....@..", ".##..%..%.%.%.%.%....$...@@.%.....%%......X.X. .. .......@@@@.#.#.@@@@..@@@@..$..... ..$.X.X. .. .##.###.$$$.....$$$$$$$$$..####.%....$$.##.#...@...@@......@.@.@.@.@.@.@.@........%.%%..@.O..@.", ".#..%....%...%....@@...@@@@..%.%..%%..XXXX.X... .. ..$$....@@@.##.##.@..@.@@...$...$.....$$... ... .##.###.$$.......$$%%$%%$..#.#.%...#.$$.#.#.#......@..%%.%%.....@.@.@.............%.%..@.OOO...", ".#....%.%.%.%.%.%.@@@.@@@@@...%...%%......X.XXX... ..$$....@@.##.##.@@@@@@..$....$$...$...$. .$.. .##..##..$$.%......$%%%%%$........##..$$.##.#......@@.%.%.%%...........XX.....%%...%.%.@.O.O.O..", "...%...%...%...%.%.@@@...@@..%.%..%%%......XX..X.. ..@.$$.....###.###.@@@@.$..$..$$..X..$..$$...$...##.#.##.$$$.%.%....$$%%%$..%.%...#...$$$.###.......@..%%%.%%........XX.XX..%%%%%...%..@.OOO.OOO.", "..%.%.%.%.%.%.%.%..@@@...@@@.......%%%..%....XX... ....$$....###.###.@@..$.$$..$$..X.X..$.........#####.##.$$...%%.%...$$%$$..%....#.##.$$..##.......@@........@.%%....XX.XX...%..%%...%..O.O.O.O..", ".%...%...%...%...%.@..@.@..@.%..%...%..%.%...X.X.. ..$$..$$...##...##...$..$....$..X.XXX....%.@.$..##.#.#.#.$$.#...%....$$%$...%%..#.#...$$.##........@..%.@.%%%..%%%%...X..XX..%..%%.....OOO.OOO.O.", "..%.%.%.%.%.%.%.%..@...@...@...%%%....%%%.%%..X... ..$$..$$...........$..$.....$..X.XX.X.%%%%..$..###..#.#.$$..#....%...$$$...%%..#.#.#.$$.#....#...@@.%%.@.%.%.@.%..%..XX.XX..%%%......O.O.O.O.O..", "...%...%...%...%...@..@.@..@.%.%%....%.%....%..X.. ..$$$$..$..##...##.$..$...$$.$..X.X.X.X.%%%..$..#.##.###.$$...#..%%...$$$..%...#.#.#..$$.....#....@...%%..%%%.@.%..%..XX.X.......@.@.O.O.OOO.OOO.", "..%.%.%.%.%.%.%.%..@@@@.@@@@...%%..%..%%%%%%.%.... ...$$$.$..###.###..$$...$$$.$..X.X..%..%..$$...##...##..$$...#...%....$...%%..#.#..#.$$....#.#..@@....%.@...@@.%%%%.......@.@.@.@...OO.O.O.O.O..", ".%...%...%...%...%.@@@...@@@..%%%%%%%..%...%%.%... ..@..$$..$.###.###.$....$$.$.$$..@XX.%%..%%.$$..##.#.##.$$$.#..#...%...$..%.%..#.#.#..$$...#.#...@...@.%%.%%...@.....@.@.@.@......X.@...OO.OOO.O.", "..%.%.......%.%.%.%.@@@@@@@@..%%%%%%%...%%%.%%.... ..$.$$$.$..##.##.$$...$$..$..$$..X.%%%.%.%..$..##.####.$$.....#...%%..$......#.#.#.#.$$..#.#.#..@....@.%.%.%%%..@.@.@.......XXXXXX..OOO..O.O.O..", "......%%%%%%...%....@@@@.@@@..%%%%%%.%....%%.%.%.. ..$$$.$......#.##.$...$$...$$..$$..%%%%%..%.$...#...###.$$.##..#.##........%..#.#..#..$$.#.#.##......@..%.%.%.%.......XXXXXXX....X.X.O.O.OOO.OOO.", "...%%%%%%%%%%%%...%.@@@...@@..%%..%%..%....%.%.... ..$$$...$$$.#.#.....$$$$$$$$$.$$$$..%%...%.$$...#.#.##.$$..#..#...##....%.%..#.#.#.#.$$..#.###.......@.%.%.%%%..XXXXX........XX.X.X.OOO..O.O.O..", "..%%%%%%%..%%%%%%...@@.@.@.@..%%..%%.%.%...%.%.%.. ..$$$$................................%%%%%..$..##.##.#.$$.#...#.#...##..%%..#.#.#....$$.#.##.#......@..%.%%...@.X.....XXXXXXXX.X.XXX...O..OOO.O.", "...%..%%%..%%%%%%.%.@...%...@.%%%%%%%.%.%...%.%... ..$.$..$.$$$.$$$.$$$.$$$.$$$.$$$.$$$$.%%%%.$$..###.###.$$.##.#....#...##....#.#....#.$$..##.##.......@.%.%...@@.X.XXXXX......X.X.X...OO.OO.O.O..", ".%....%%%%%%%..%%%.%.@.%%%.@.@.%%%%%%%...%%..%.%.. ..$$.$.......................................$...##.##..$$....#.##...@...##....#..##..$$.###.##....@.@..%..@@@.@.X.X.....X.X..X.X..XXX.O.O...OO..", "....................................................................................................................................................................................................", ". ..X.XXXXX.XXXXX.XXXXX.XXXXX.X.. .. .X.XXXX.XXXXX.XXXXX.XXXXX.XX. .. .XXXXXXXXXXXXXXXXXXXXXXXXXXX. .. ..X.XXX.XXX.XXX.XXX.XXX.XXX.X.. .", ". ...XXXXX.XXXXX.XXXXX.XXXXX... .. ...XX...XXX...XXX...XXX..X. .. ..X..X..X..X..X..X..X..X... .. ..X.X.X.X.X.X.X.X.X.X.X.X.X.. .", ". ....X..X..X..X..X..X..X.... .. ..X.....X.....X.....X.... .. ..@.X.@&@.X.@&@.X.@&@.X.@. .. ..XXX.XXX.XXX.XXX.XXX.XXX... . .", ". ..XXXX.XXXXX.XXXXX.XXXX.. .. .X.....X.....X.....XX.. .. ..XXX&@&XXX&@&XXX&@&XXX. .. ...XXX.XXX.XXX.XXX.XXX.XX. . .", ". ....................... .. .XX.XXXXX.XXXXX.XXXX. .. .XXXX.XXXXX.XXXXX.XXXX. .. ...X.X.X.X.X.X.X.X.X.X... .. .", ". ..$.$.$.$.$.$.$.$.$.. .. .................... .. &XXX.XXXXX.XXXXX.XXX.. .. ..XX.XXX.XXX.XXX.XXX.X. .X. ..", ". ..$.$.$.$.$.$.$.$.. .. .................... .. .................... .. .............XXXX.XX.. .X. ...", ". .................. .. .O.O.O.oooooooooooo. . .. .@.@.@.@.@.@.@.@.@. .. ................X.X. .XX. .O.", ". .................. .. .O.O.O.oo....oo..... ..... .................. .. .oooooooo........XX. .X.X. ...", ". .oooooooooo.O.O.O. . .. .O.O.O.o.ooooo.oooo. ..X... .oooooooooo.X.X.X. .. .oo....oooo......... .XX..X....", ". ....ooo...o.O.O.O. ... .. .O.O.O.oo...o.....o. ..XXX.. .@XXoooXXXXo.X.X.X. .. .o.oooo.ooo.O....... ...X...XX.", ". .o...oo..oo.O.O.O. ..... .. .O.O.O.o...oo.o..oo. .XXXX.. ..@@.oXooooo.X.X.X.. .. .o....ooooo.O.O..... ...X...XX.", ". .....oo.....O.O.O. .X... .. .O.O.O.oo...o.....o. .XX.X.. .....oo....ooOXOXOX. .. .oo..o.oooo.O.O.O.O. .XX..X....", ". .oo.ooooooo.O.O.O. .X.$. .. .O.O.O.ooooooo.oooo. .XX.X.. .@...oooo..ooOXOXOX. .. .oo....ooooo.O.O.O.O.. .X.X. ...", ". .oo.ooooooo.O.O.O. .X... .. .O.O.O.ooooooo.oooo. .X.XX.. .....ooo...ooOXOXOX.. .. .oooooooooooo.O.O.O.O. .XX. .O.", ". .oo....oooo.O.O.O. .X.X. .. .O.O.O.oooooo..oooo. .X.XX.. .ooo.o.oooooooOX.XOX. .. .o.ooo.ooooooo.O.O.O.O. .X. ...", ". .ooo.oooooo.O.O.O. .X... .. .O.O.O.o.o..o.o..o.. .X.XX.. .ooo..ooooooooOX.XOX. .. ..o..oo.ooooooo.O.O.O.O. .X. ...", ". .o..o..oooo.O.O.O... .X.$. .. .O.O.O.o...ooooo.... .XX.X.. .oooo.ooooooo&@OXOXOX. .. .ooo..oooo...o.O.O.O.O. .. .O.", ". ...ooo.oooooo.O.O...O. .X... .. .O.O.O.oooo..o..ooo. .XX.X.. ..oooooooooooo&@OXOXOX.. .. .ooooooo..##..O.O.O.O. . ...", ". .OO.oo...ooo...O...O.O. .X.X. .. .O.O.O.oooooo.ooooo. .XX.X.. ..@.oo..o..oooo&@@OXOXOX.. .. ...oooo..#..#.O.O.O.O. . ...", ". .O...oooo...OO.O.O.O... .X... .. ..O.O.O.ooooo...oooo... .XX.X.. &@@..oooo.ooooo&@&&XXOXOX. .. .. ..ooooo.#.#.#.O.O.O.O.. .O.", ". ..@OOOO....OO..O.O.O.... .X.$. .. .O.O.O.O..ooooooooooo..O. .X.XX.. .@@.@.oooXXXoooo&@&XX.@.@O .. ..$. .. . .ooooo.o.#.##.#.#.#.#.O. ...", ". ...@..OOO.....OOOO.OOO.@@.. .X... .. .O.O.O.O.O..o.o.o.o..O.O. .X.XX.. ....@@&oooooooo&@.@... . .. .$.$.#. .O.O.o.o.O.O.#.....................", ". ...@@.@.@@..@@...........@.@.. .X.X. .. ...O.O.O...OO.O...O.OO.O. .X.XX.. ..@.@..@&o&o&o&o&@.@..@@. .. ..$.$.#. ...O.O.O.O.O.O......###..###..###.##..", ". .......@@@.@.@.@@@.@@@.@@@.@@@... .X... .. .......................... .X..X.. ..@@@.@.@&@&%&%&@&@...@@.@. .. .$.$..#......O.O.O.O.O.O.#.#..#.#..#.#..#.##...", ". ..........@.@@@..@.@@@.@@@.@@@.......X.$. .. ....$.%%%%%%%%%%%%%%%%%%.$$$... .X..X.. ......@&@@..@&%%%%%&%.@..@...... .. .$.#..#.#....X...........###..###..###..##....", ". ..........%....@.@@.@@.@@@.@@@.....%...X... .. ..$$..$....................$$$.%. .X..X.. ....%%..@.@.@@..%%...%%%.....@..@@. .. ...#.##.X..XXX...............................", ". .............%.%..@.@@.@@@.@@@.....%%....X.X. .. .....$$$$$.@.@.@.@.@.@.@.@....$.%.%..XX.... ...%.%&&%.@....@@....@.....@..@.@.@...... .. ...##..#.XX.XXX....@....$$$$$$$$$$$$$$........", "............%.....%.%..@@..@@@.....%%%..%%.X... .. ...%%...$$..$.................$..$.%.%..XX.....%.%&%%&&%%..@....@@......@@@....@...%%%... .. .##..#..#..XX$XXX..@.@..................#####..", "........%%..%..%%..%.%...@@.......%%%..%%..X.$. .. ..%...%%...$..$.###############.$$$$.%.%..XX....%&%&%%&%%&%..@.@.@..@@@@@@@..@.@.@..%&&%%%... ....##..##....XX$$XX...@...###..###..@@@....#..#..", ".%.....%%%..%..%%%..%....%.....%%%%%....%%.X... ....%%%...%%..$$.$.###XX#####XXX#.$.$$.%.%.%.XXX....%&%%&%&%%&%.....@.@.......@.@.....%%%%&&%%%.....#..##...$$$..X$$$X........#..#.#..@.@......#.#..", ".%.....%....%....%.%.%...%%%%%%%%%%...%%%..X.X.......%%%...%...$$$$.#XXX####X####.$..$.%.%.%.XXX...%&%%&&%&&%%..%.@.@...@.@.@...@.@...%%%&%%&&%%%...#..#..$$$....X$$$X.....#.#..###..@@...@.@...##..", ".%....%....%%%....%.%.%..%%%...%%%...%%....X..........%%%...%%.$..$.##XXXXXXX####.$..$.%.%.%.XXX....%%&%%&%%&%%..%..@.@.@...@.@....%..%%&%&%%%...%..##..$$$....#.XX$$X...##..#.......@.@...@.....#..", ".%.......%%...%%.....%...%%%...%%%....%%...X.$....%%...%%.%.%%.$..$.###XXXXXXX##.$$$$.%.%%.%.XXX......%.%%&&%&%.%&%.....@.@.@.....%.%.%&%%%&%..%%...##.$$....#..#.XX$XX...#.##..@.@.@.@.#.@.@.@.....", ".%......%.......%...%.%..%..%.%..%..%%%....X......%%%....%.%...$$.$.#XX#XXXXXX##.$.$$.%.%.%..XXX...%.%...%%&%&&%&&&%..%.......%..%....%%&%&%%.%%%...#.$$....###.#.XXXXX..@..#..@.@.@..@.##...@......", ".%.....%...%.%...%...%.%.%...%.....%%......X.X.....%%%..%.%.%%%.$$$.####X###X#X#.$..$.%.%.%..XXX...%%&%...%%&%%&&%&%%.%%%%.%%%%..%%.%.%&%&%%..%&%....$$..@.#.#..#.XX.XX..@@...@.@.......##..@.@.@...", ".%....%...%...%...%.%.%..%..%.%....%%%.....X........%%...%...%%.$$$$.##X###X##X#.$..$.%.%.%..XX.....%%.....%%..%&%%.%.%&%&X&%&%.%.%.%..%&%.%.%%&%...$$..@.###...#.XX..X....@.@.@..##...##.#....@....", ".........%.%.%.%...%.%.%.%%%%.%%%...%......X.$.......%.%%.....%.$..$.###########.$$$.%.%%.%..XX....%&%%........%&%....%%&X&X&%%....%..%&%%...%&&%...$..@.#.#.@..#.X.....@.@.@.@.@.##.#.##.##..@.@.@.", "...%....%...%...%...%.%..%%%...%%..%%......X......%.....%.%.....$..$............$.$$.%.%.%...XX....%%&%...%.%%..%&ooo.%%%&X&%%%.%.%...%&%%..%%&&%.....@.###.@....#.X..X..@.@.@.@..####.#...##....@..", "..%.....%%.%.%.%%..%.%......%%%%..%%.......X.X....%%...%.%%%....$$.$............$..$.%.%.%..........%%%..%&%&%...oo....%%%&%%%%.%.%%..%%....%&&&%....@.#.#.@.....#.XX.X.@.@.@.@.@.#.#.#.#.#.#.@.@.@.", ".%%.......%%.%%...%...##.##..%%%..%%.......X......%%.....%%%%....$$$..%.%.%.%.%.$..$.%.%.%.ooo.oo..%%%...%%&%...ooooooo.%&X&%%...%&%..%&%%.%%&%%%...@.###.@@.....#.XXXX..........@..#.#.#.#.##.@....", ".%%%.............%..####.####.%%...%.........ooo.......o.%%%.....$$$$.%.%.%.%.%.$$$....%.%..........%&%..%&%&%..ooo.....%%&%%%..%&&&%.%%%..%&%%......#.#.@....@..#.XX.X.@.@.@.@.......#.##...##.@.@.", ".%%.........%%..%%..#..#.#..#..%..%%.....ooo......ooo.o...%....%.$..$..%.%.%.%.%.$$.%%%..%%.o.ooo..%&%%...%%%...ooooooo.%&%&%%..%%&%.%%%%.%%%....%..###.@....@@..#.X..X..........#..#.#..##.#.##.@..", ".%..........%.%..%.##..###..##.%..%......o...ooo........o.....%%.$..$...%%%..%.%..$.%%%.%.%........%%%...%.%.%..ooo.....%%%%%%.%.%&%.%%%..%....%%%...#.@.@@...@..#......@..@..@@.#.##.#..##.#.##..@.", ".....%%......%%..%.#####.#####.%..%%.....o........ooo.o..o...%%%.$$.$....%...%.%..$....%.%..o.ooo...%.%....%...%.oooooo.%%.%%%....%%.%%......%%%....@.@.@.@@.....#.X..X..@@.@@...###.#....##...##..."}; xpat2-1.07/lib/default/Ranks.xpm100644 146 144 17613 5551073410 15205 0ustar mbimathopt/* XPM */ static char * Ranks_xpm[] = { "108 70 9 1", " c None", ". c #000000000000", "X c #BEFBBEFBBEFB", "o c #CF3C00000000", "O c #F3CEBEFBBEFB", "+ c #7DF77DF77DF7", "@ c #3CF33CF33CF3", "# c #E79D7DF77DF7", "$ c #DB6C3CF33CF3", " ... X.....X .... ooo OoooooO oooo X....X .. X.....X OooooO oo OoooooO ", " ... X.......X .... ooo OoooooooO oooo ...... ..X.......X oooooo ooOoooooooO", " +...+ ..@ @.. .. #ooo# oo$ $oo oo .. .. ....@ @.. oo oo oooo$ $oo", " +. .+ .. @X .. #o o# oo $O oo .. .. .... @X oo oo oooo $O", " .. .. .. .. oo oo oo oo .. .. .... oo oo oooo ", " .+ +. ..X....X .. o# #o ooOooooO oo .. .. .... oo oo oooo ", " +.+ +.+ ........X .. #o# #o# ooooooooO oo .. .. .... @X oo oo oooo $O", " +. .+ ..@ @.. .. #o o# oo$ $oo oo .. .. ....@ @.. oo oo oooo$ $oo", " ....... .. .. .. ooooooo oo oo oo .. .. ..X........ oo oo ooOoooooooo", " ....... .. .... .. ooooooo oo oooo oo .. .. .. X....X.. oo oo oo OooooOoo", "+.@ @.+.. .... .. #o$ $o#oo oooo oo .. .. .. .. oo oo oo oo", "+.X X.+..@ @....@ @.. #oO Oo#oo$ $oooo$ $oo .. .. .. .. oo oo oo oo", ".. ..X.......XX......X oo ooOoooooooOOooooooO ...... .. ........ oooooo oo oooooooo", ".. .. X.....X X....X oo oo OoooooO OooooO X....X .. ........ OooooO oo oooooooo", " +...@X ......... X...X #ooo$O ooooooooo OoooO X.....X .... OoooooO oooo ", " @......X......... X.....X $ooooooOooooooooo OoooooO X.......X.... OoooooooOoooo ", "@.@ @.@.. .. ..@ @.. $o$ $o$oo oo oo$ $oo ..@ @.. .. oo$ $oo oo ", ".. .. @.@ .. .. oo oo $o$ oo oo .. @X......... oo $Oooooooooo", " X.. .. .. .. Ooo oo oo oo .. ......... oo ooooooooo", " X..+ @.+ .. .. Ooo# $o# oo oo ..X....X .. +.+ ooOooooO oo #o#", " X..@ .. .. .. Ooo$ oo oo oo ........X .. .. ooooooooO oo oo ", " X..@ +.+ .. .. Ooo$ #o# oo oo ..@ @.. .. +.+ oo$ $oo oo #o# ", " X..@ .. ....+ .. Ooo$ oo oooo# oo .. .. .. .. oo oo oo oo ", " X..@ X.@ ........ Ooo$ Oo$ oooooooo .. .. .. +.+ oo oo oo #o# ", "X..@ +.+ .. @... Ooo$ #o# oo $ooo .. .. .. .. oo oo oo oo ", "... .. @. ..@ ... ooo oo $o oo$ ooo ..@ @.. ....+ oo$ $oo oooo# ", "......... .. X......@ooooooooo oo Ooooooo$ X.......X .... OoooooooO oooo ", "......... .. X...X@Xooooooooo oo OoooO$O X.....X ...X OoooooO oooO ", "......... X.....X .... ....ooooooooo OoooooO oooo oooo.... .... ..... X@...@X oooo oooo ooooo O$ooo$O ", ".........X.......X.... +...oooooooooOoooooooOoooo #ooo.... ....X.......X @......Xoooo ooooOoooooooO $ooooooO", ".. X..@..@ @.. .. @.@ oo Ooo$oo$ $oo oo $o$ +.+ .. ..@ @....@ X... #o# oo oo$ $oooo$ Oooo", " X..@ .. .. .. @.@ Ooo$ oo oo oo $o$ .. .. .. .... X.X oo oo oo oooo OoO", " X... ..@ @.. ....@ Oooo oo$ $oo oooo$ +.+ .. .. .... #o# oo oo oooo ", " X.... X.......X .... Ooooo OoooooooO oooo .. .. ..@ @.... oo oo oo$ $oooo ", " ...... ..... .... oooooo ooooo oooo +.... X.......X..@ @X #oooo OoooooooOoo$ $O ", " X@ @..X.......X ....+ O$ $ooOoooooooO oooo# .... ..... ...... oooo ooooo oooooo ", " ....@ @.. .. .. oooo$ $oo oo oo .... X.......X ....X oooo OoooooooO ooooO ", " .... .. .. +.+ oooo oo oo #o# @.... ..@ @.. ...X $oooo oo$ $oo oooO ", "X.X .... .. .. .. OoO oooo oo oo oo @.@ .. .. .. @..X $o$ oo oo oo $ooO ", "...X @....@ @.. .. +.+ oooO $oooo$ $oo oo #o# @.@ .. ..@ @..@..X .. $o$ oo oo$ $oo$ooO oo", "X......@ X.......X.... ....Ooooooo$ OoooooooOoooo oooo...+ ....X.......X.........ooo# ooooOoooooooOooooooooo", " X@...@X ..... .... .... O$ooo$O ooooo oooo oooo.... .... X.....X .........oooo oooo OoooooO ooooooooo", " X... X.....X Oooo OoooooO X@X...X .. .........O$OoooO oo ooooooooo", " .... X.......X oooo OoooooooO @......X .. .........$ooooooO oo ooooooooo", " +.... ..@ @.. #oooo oo$ $oo ... @.. .@ .. ... ooo $oo o$ oo ooo", " .. .. .. .. oo oo oo oo ...@ .. +.+ @..X ooo$ oo #o# $ooO", " +.+ .. .. .. #o# oo oo oo ........ @.X @..X oooooooo $oO $ooO ", " .. .. .. .. oo oo oo oo .. +.... .. @..X oo #oooo oo $ooO ", " +.+ .. ..@ @.. #o# oo oo$ $oo .. .. +.+ @..X oo oo #o# $ooO ", " .. .. X........ oo oo Ooooooooo .. .. .. @..X oo oo oo $ooO ", "+.+ .. X....X.. #o# oo OooooOoo .. .. +.@ +..X oo oo #o$ #ooO ", "......... .. ooooooooo oo .. .. .. ..X oo oo oo ooO ", ".........X@ .. oooooooooO$ oo .. .. @.@ .. .. oo oo $o$ oo oo", " .. ..@ @.. oo oo$ $oo ..@ @.. .. ..@.@ @.@ oo$ $oo oo oo$o$ $o$", " ....X.......X ooooOoooooooO X.....X .........X......@ OoooooO oooooooooOoooooo$ ", " .... X.....X oooo OoooooO X...X ......... X@...+ OoooO ooooooooo O$ooo# ", "........ .. X....X oooooooo oo OooooO X....X X.....X .. .. OooooO OoooooO oo oo", "........ .. ...... oooooooo oo oooooo X......XX.......X.. .. OooooooOOoooooooOoo oo", ".. .. .. .. oo oo oo oo ..@ @....@ @..+.X X.+ oo$ $oooo$ $oo#oO Oo#", ".. .. .. .. oo oo oo oo .. .... ..+.@ @.+ oo oooo oo#o$ $o#", "..X....X .. .. .. ooOooooO oo oo oo .. .... .. ....... oo oooo oo ooooooo ", "........X.. .. .. ooooooooOoo oo oo .. .. .. ....... oo oo oo ooooooo ", "..@ @.... .. .. oo$ $oooo oo oo .. ..@ @.. +. .+ oo oo$ $oo #o o# ", "X@ .... .. .. O$ oooo oo oo .. X........ +.+ +.+ oo Ooooooooo #o# #o# ", " .... .. .. oooo oo oo .. X....X.. .+ +. oo OooooOoo o# #o ", " .... .. .. oooo oo oo .. .. .. .. oo oo oo oo ", "X@ .... .. .. O$ oooo oo oo .. X@ .. +. .+ oo O$ oo #o o# ", "..@ @.... .. .. oo$ $oooo oo oo .. ..@ @.. +...+ oo oo$ $oo #ooo# ", "X.......X.. ...... OoooooooOoo oooooo .... X.......X ... oooo OoooooooO ooo ", " X.....X .. X....X OoooooO oo OooooO .... X.....X ... oooo OoooooO ooo "}; xpat2-1.07/lib/default/Suits.xpm100644 146 144 36264 5550515573 15253 0ustar mbimathopt/* XPM */ static char * Suits_xpm[] = { "168 88 17 1", " c None", ". c #CF3C00000000", "X c #7DF77DF77DF7", "o c #DB6C3CF33CF3", "O c #000000000000", "+ c #F3CEBEFBBEFB", "@ c #3CF33CF33CF3", "# c #BEFBBEFBBEFB", "$ c #E79D7DF77DF7", "% c #9E799E799E79", "& c #EFBE9E799E79", "* c #5D755D755D75", "= c #1C711C711C71", "- c #DF7DDF7DDF7D", "; c #FBEEDF7DDF7D", ": c #D34C1C711C71", "> c #DF7D5D755D75", " . ", " X o.o ", " O +...+ ", " XOX o...o ", " @O@ o.....o ", " #XXX# #OOO# +.......+ ", " #OOOOOOO# @OOO@ ......... ", " @OOOOOOOOO@ #OOOOO# $o...$+ +$...o$ o.........o ", " XOOOOOOOOOOOX #OOOOOOO# $........o+ +o........$ o...........o ", " #OOOOOOOOOOOOO# #OOOOOOOOO# o...........+ +...........o o.............o ", " XOOOOOOOOOOOOOX #OOOOOOOOOOO# o.............+ +.............o +...............+ ", " OOOOOOOOOOOOOOO #OOOOOOOOOOOOO# +..............o o..............+ +.................+ ", " OOOOOOOOOOOOOOO #OOOOOOOOOOOOOOO# o...............$...............o +...................+ ", " OOOOOOOOOOOOOOO #OOOOOOOOOOOOOOOOO# ................................. o.....................o ", " @OOOOOOOOOOOOO@ #OOOOOOOOOOOOOOOOOOO# $.................................$ o.......................o ", " XOOOOOOOOOOOOOX #OOOOOOOOOOOOOOOOOOOOO# $.................................$ o.........................o ", " @OOOOOOOOOOO@ @OOOOOOOOOOOOOOOOOOOOOOO@ $.................................$ +.............................+ ", " #XOOO@X #OOOOOOOOOOO# X@OOOX# @OOOOOOOOOOOOOOOOOOOOOOOOO@ +.................................+ o...............................o ", " XOOOOOOO@# #OOOOOOOOO# #@OOOOOOOX #OOOOOOOOOOOOOOOOOOOOOOOOOOOOO# ................................. +o.................................o+ ", " @OOOOOOOOOO# #OOOOOOO# #OOOOOOOOOO@ #OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO# $...............................$ o.....................................o ", " #OOOOOOOOOOOO# #OOOOO# #OOOOOOOOOOOO# #OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO# ............................... ......................................... ", " OOOOOOOOOOOOOO# #OOO# #OOOOOOOOOOOOOO @OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@ +.............................+ o.....................................o ", " #OOOOOOOOOOOOOOO# XOX #OOOOOOOOOOOOOOO# #OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO# +...........................+ +o.................................o+ ", " XOOOOOOOOOOOOOOOOX@O@XOOOOOOOOOOOOOOOOX XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX +.........................+ o...............................o ", " XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX o.......................o +.............................+ ", " XOOOOOOOOOOOOOOOOX@O@XOOOOOOOOOOOOOOOOX XOOOOOOOOOOOOOOOO@O@OOOOOOOOOOOOOOOOX o.....................o o.........................o ", " #OOOOOOOOOOOOOOO# XOX #OOOOOOOOOOOOOOO# XOOOOOOOOOOOOOOO#XOX#OOOOOOOOOOOOOOOX o...................o o.......................o ", " OOOOOOOOOOOOOO# XOX #OOOOOOOOOOOOOO OOOOOOOOOOOOO@ XOX @OOOOOOOOOOOOO o.................o o.....................o ", " #OOOOOOOOOOOO# XOX #OOOOOOOOOOOO# XOOOOOOOOOOOO XOX OOOOOOOOOOOOX ................. +...................+ ", " @OOOOOOOOOO# XOX #OOOOOOOOOO@ @OOOOOOOOOO# XOX #OOOOOOOOOO@ +...............+ +.................+ ", " XOOOOOOO@# XOX #@OOOOOOOX @OOOOOOOO# OOO #OOOOOOOO@ +.............+ +...............+ ", " #XOOO@X XOX X@OOOX# #@OOOOX OOO XOOOO@# o...........o o.............o ", " XOX OOO o.........o o...........o ", " OOO XOOOX +.........+ o.........o ", " OOO XOOOX $.......$ ......... ", " #OOO# OOOOO o.....o +.......+ ", " XOOOX OOOOO +.....+ o.....o ", " OOOOO XOOOOOX +...+ o...o ", " #OOOOO# XOOOOOX o.o +...+ ", " @OOOOO@ OOOOOOO +.+ o.o ", " @OOXXXOO@ @OOXXXOO@ . . ", " $ %@X@% %@X@% & $ ", " * &.& =O= -OOO- ;.; &.& ", " -O- ;...; *O* =O= :.: ;...; ", " X=O=X *O* ;+; ;+; o...o #O# *O* $...$ o...o ", " XOOOOOX %OOO% +o...>; ;>...o+ >.....> -#- -O- -#- ##- %O% -## +.....+ >.....> ", " -OOOOOOO- %OOOOO% ;......: :......; $.......$ XOOO@- O -@OOOX #=OOO% #O# %OOO=# ;:.....:; $.......$ ", " #OOOOOOO# %OOOOOOO% >.......o.......> $.........$ XOOOOO=- O -=OOOOOX -OOOOOO# O #OOOOOO- o.......o $.........$ ", " -OOOOOOO- %OOOOOOOOO% ................. >...........> =OOOOOO=-O-=OOOOOO= XOOOOOOO%O%OOOOOOOX >.........> >...........> ", " -#- @OOOOO@ -#- *OOOOOOOOOOO* ................. ;o.............o; OOOOOOOOOOOOOOOOOOO XOOOOOOOOOOOOOOOOOX >...........> ;o.............o; ", " XOOO@-=OOO=-@OOOX -@OOOOOOOOOOOOO@- o...............o &.................& =OOOOOO=-O-=OOOOOO= %OOOOOOOOOOOOOOOOO% &.............& &.................& ", " XOOOOO=-=O=-=OOOOOX =OOOOOOOOOOOOOOO= +...............+ $...................$ XOOOOO=-=O=-=OOOOOX =OOOOOOOOOOOOOOO= +...............+ $...................$", " =OOOOOO=-O-=OOOOOO= %OOOOOOOOOOOOOOOOO% &.............& &.................& XOOO@-=OOO=-@OOOX -@OOOOOOOOOOOOO@- o...............o &.................& ", " OOOOOOOOOOOOOOOOOOO XOOOOOOOOOOOOOOOOOX >...........> ;o.............o; -#- @OOOOO@ -#- *OOOOOOOOOOO* ................. ;o.............o; ", " =OOOOOO=-O-=OOOOOO= XOOOOOOO%O%OOOOOOOX >.........> >...........> -OOOOOOO- %OOOOOOOOO% ................. >...........> ", " XOOOOO=- O -=OOOOOX -OOOOOO# O #OOOOOO- o.......o $.........$ #OOOOOOO# %OOOOOOO% >.......o.......> $.........$ ", " XOOO@- O -@OOOX #=OOO% #O# %OOO=# ;:.....:; $.......$ -OOOOOOO- %OOOOO% ;......: :......; $.......$ ", " -#- -O- -#- ##- %O% -## +.....+ >.....> XOOOOOX %OOO% +o...>; ;>...o+ >.....> ", " #O# *O* $...$ o...o X=O=X *O* ;+; ;+; o...o ", " *O* =O= :.: ;...; -O- ;...; ", " =O= -OOO- ;.; &.& * &.& ", " %@X@% %@X@% & $ $ ", " ; #-# #-# ; ; ", " % ;.; XOX XOX o ;.; ", " #X# -O- o.o -O- #O# >.> o.o ", " XOOOX @O@ ;>.:& &:.>; >...> -%- @ -%- ## O ## +...+ >...> ", " OOOOO @OOO@ o....$....o &.....& #OOO% * %OOO# =OO@ @ @OO= ;:...:; &.....& ", " =OOO= @OOOOO@ ;...........; >.......> @OOOOX@XOOOO@ XOOOO*@*OOOOX ;:.....:; >.......> ", " %*X%OOO%X*% -=OOOOOOO=- ;...........; ;o.........o; @OOOO@=@OOOO@ XOOOOOOOOOOOX o.......o ;o.........o; ", " XOOO@XOX@OOOX -=OOOOOOOOO=- >.........> ;.............; XOOO@XOX@OOOX -=OOOOOOOOO=- >.........> ;.............; ", " @OOOO@=@OOOO@ XOOOOOOOOOOOX o.......o ;o.........o; %*X%OOO%X*% -=OOOOOOO=- ;...........; ;o.........o; ", " @OOOOX@XOOOO@ XOOOO*@*OOOOX ;:.....:; >.......> =OOO= @OOOOO@ ;...........; >.......> ", " #OOO% * %OOO# =OO@ @ @OO= ;:...:; &.....& OOOOO @OOO@ o....$....o &.....& ", " -%- @ -%- ## O ## +...+ >...> XOOOX @O@ ;>.:& &:.>; >...> ", " -O- #O# >.> o.o #X# -O- o.o ", " XOX XOX o ;.; % ;.; ", " #-# #-# ; ; ; ", " - & #X# #X# + & ", " # * +.+ O -O- +.+ +.+ ", " -=O=- XOX >:$ $:> ;:.:; -%- * -%- %# = #% :.: ;:.:; ", " %OOO% XOOOX $...:...$ ;:...:; =OO#X#OO= @OO%X%OO@ >...> ;:...:; ", " -%#OOO#%- XOOOOOX o.......o +:.....:+ #OOO=@=OOO# OOOO=OOOO $.....$ +:.....:+ ", " =OOX=XOO= *OOOOOOO* &.......& &.........& =OOX=XOO= *OOOOOOO* &.......& &.........& ", "#OOO=@=OOO# OOOO=OOOO $.....$ +:.....:+ -%#OOO#%- XOOOOOX o.......o +:.....:+ ", " =OO#X#OO= @OO%X%OO@ >...> ;:...:; %OOO% XOOOX $...:...$ ;:...:; ", " -%- * -%- %# = #% :.: ;:.:; -=O=- XOX >:$ $:> ;:.:; ", " O -O- +.+ +.+ # * +.+ ", " #X# #X# + & - & "}; xpat2-1.07/lib/default/Cards.conf100644 146 144 26 6711313676 15224 0ustar mbimathopt79 123 6 1 0 15 0 0 0 xpat2-1.07/lib/default/Cardback6.xpm100644 146 144 54556 5345175673 15735 0ustar mbimathopt/* XPM */ static char *amber[] = { /* width height ncolors chars_per_pixel */ "79 123 178 2", /* colors */ "`` c #000000", "`a c #604830", "`b c #A85D38", "`c c #603030", "`d c #B87858", "`e c #701818", "`f c #502620", "`g c #D08780", "`h c #C86040", "`i c #481E18", "`j c #A86848", "`k c #C85040", "`l c #A88780", "`m c #402010", "`n c #581600", "`o c #401010", "`p c #380E08", "`q c #301800", "`r c #A04040", "`s c #801F10", "`t c #885828", "`u c #E08878", "`v c #C09680", "`w c #A84020", "`x c #A86758", "`y c #685030", "`z c #A83020", "a` c #804020", "aa c #684030", "ab c #C88860", "ac c #B08070", "ad c #783818", "ae c #603828", "af c #802820", "ag c #B07070", "ah c #785750", "ai c #583620", "aj c #F0C0A8", "ak c #782018", "al c #503818", "am c #702810", "an c #986E58", "ao c #806868", "ap c #501818", "aq c #985E58", "ar c #E09E98", "as c #886848", "at c #A85040", "au c #C07768", "av c #583730", "aw c #702720", "ax c #201010", "ay c #B83E28", "az c #F8BD98", "b` c #681F18", "ba c #984030", "bb c #784E38", "bc c #180008", "bd c #601F10", "be c #100000", "bf c #884820", "bg c #704630", "bh c #E8AD88", "bi c #684828", "bj c #703630", "bk c #381710", "bl c #F8D0A8", "bm c #B84738", "bn c #682E28", "bo c #984F40", "bp c #D06060", "bq c #A87860", "br c #602620", "bs c #582E18", "bt c #887868", "bu c #581E18", "bv c #701808", "bw c #502610", "bx c #803728", "by c #B84E48", "bz c #481808", "c` c #982D18", "ca c #301818", "cb c #C8A0A0", "cc c #782F20", "cd c #281810", "ce c #401600", "cf c #F09878", "cg c #201808", "ch c #D0A080", "ci c #885040", "cj c #705050", "ck c #200808", "cl c #B89090", "cm c #181000", "cn c #E09868", "co c #B86558", "cp c #804838", "cq c #F8E0C8", "cr c #E08868", "cs c #784030", "ct c #601708", "cu c #C08870", "cv c #C87878", "cw c #F0D0C0", "cx c #F09F88", "cy c #883818", "cz c #885750", "d` c #683820", "da c #985D38", "db c #A07878", "dc c #E8BEB8", "dd c #C87850", "de c #603618", "df c #E09578", "dg c #C86650", "dh c #482828", "di c #906868", "dj c #C85650", "dk c #D09768", "dl c #601818", "dm c #F0AE98", "dn c #402020", "do c #581610", "dp c #D87770", "dq c #F09E98", "dr c #382018", "ds c #986048", "dt c #500E08", "du c #E09E88", "dv c #301010", "dw c #886038", "dx c #A85030", "dy c #706048", "dz c #E08E88", "e` c #904040", "ea c #A890A0", "eb c #A83E30", "ec c #805030", "ed c #685040", "ee c #200000", "ef c #984020", "eg c #F8AD88", "eh c #784828", "ei c #704020", "ej c #D87C58", "ek c #A08870", "el c #E8A778", "em c #901E18", "en c #C06868", "eo c #683018", "ep c #380700", "eq c #987868", "er c #984D30", "es c #603010", "et c #483020", "eu c #A87850", "ev c #403018", "ew c #582008", "ex c #601010", "ey c #902F28", "ez c #A85650", "f` c #401818", "fa c #502000", "fb c #B85838", "fc c #302008", "fd c #D06F60", "fe c #802F18", "ff c #C8A090", "fg c #B0A0A0", "fh c #300808", "fi c #281000", "fj c #784E48", "fk c #781710", "fl c #B86D48", "fm c #884630", "fn c #D08870", "fo c #B85D48", /* pixels */ "dabods`j`jfofofoflflflddflflfldddgddddfdddababejcrcrcrcrcrcncndfdfcxcfcfcfdfdfelcxdfdfdfelcxdfcnelelelbhbhdudfdfdfdfdf`ufncrejco`dfo`bdafmfmehd`eo`f`mbz`p`pee", "dabods`j`jfofofoflflflddflflfldddgddddfdddababejcrcrcrcrcrcncndfdfcxcfcfcfdfdfelcxdfdfdfelcxdfcnelelelbhbhdudfdfdfdfdf`ufncrejco`dfo`bdafmfmehd`eo`f`mbz`p`pee", "dabodaez`j`jcoflflcofldddgfldgdgddddddddddejddabejabcrcrcncncndfdfdfdfdfelelcxeleldfdfelelcxdfdfdfeleleleldfdfcndfdfdf`ufnfnejfl`dcofo`berfmbfd`eobrbwbzce`pfi", "boda`b`b`jfoflflfldgfldddgflddddddddddfdddejcrcrcrcrcrcrcrdfdfdfdfdfdfdfdfcxcxbhelelbhdfelelelelcxeleleleldudfdfdfcneldf`ufnababdddg`j`bdxfmbxa`adesbw`ice`pee", "daat`j`jfofofocofldddgfldgddfldddddgddddejabcrcrcrcrcr`u`ucfcnelcxdfdudfdfbhelelelbhdubhbhcxelducxcxcxcxcxbhcxelbhcfeleldfcnababdddgfo`bboerfma`adde`fbwbzbkfi", "er`b`b`jfofofocoflddfldgfldddgddddddddejejejcrcrcrcrcrcrcrdfcfelelelcxelelelelelcxcxelelelelelcxelelelbhelcxcxcxeleleldfdfcncrfnddddflfbboerbfa`adeobwbwbzbkfi", "er`b`b`bfococofldddgflddddddddddddfdddejddejcrcrcrcrcr`udfdfdfdfdfdubhbhbhelbhelbhbhelelelelbhbhbhbhelbhcxcxelcxbhelcfeldfcrcrcrdddddg`j`berfmbxadadesbrbz`ofi", "er`b`b`j`b`jflflddcoflddcoddddddauddejejejabcrcrcrcrcrcndfdfelelelelcxbhbhdmbhcxcxegcxegbhbhelbhbhbhbhbhbheleleleleleldfdfdfdffnabdddgfofbdaerbfa`awesbubwbzce", "da`b`b`b`j`jflfldgfldd`dddddauddddabejejejabcrejcrdfdfcfdfdfelbhelcxcxcxdmegbhcxegegcxegbhbhbhbhcxegegbhegcxegbhelbhbhelelcncrcrabddddfl`jaterbfa`d`eobwfabz`p", "bods`jfofo`jflfocoddddddddejfdejababcrcrcrcrcrcrcrcncfcxdfelcfelelbhdmegegegegbhdmdmegdmelelbhdmdmegegdmegegegegbhcxcxcxelelcfcncrabdddddd`bdabfbxadeobrbwbz`p", "bobo`j`j`bflflfocoddauddabddejfdejejfncrcrfncncncrdfdfdfelcxelbhbhbhcxbhegbhazegdmbhcxcxcxcxbhdmegbhegegdmegdmdmdmbhbheldfeldf`u`uejababcofoaterfmadeobrbwcece", "dabo`b`j`b`jflfldd`dabddddabddejejejejcrfnfncndfcncndfdudfdfelbhbhcxdmdmegdmdmdmdmbhbhcxcxcxbhbhdmbhbhbhegbhdmdmbhbhelbheldfdfcrcrcrababddflaterbfeiawesbwbzce", "bobo`jfo`j`j`jflddfdcocoddabejfdcrabejfnfnfncrcrcrdfcfelbhcxcxegbhdmcxdmbhegbhbhbhbhcxcxcxcxbhazbhbhdmdmdmegegdmdmbhbhcxelcxdudfdfcncnfnabco`bdaerbxd`brbd`m`p", "erda`b`b`b`jflfofo`jat`j`jfl`dabdkcrfdababejcrcndfdfdfdfelcxdmbhbhdmdmdmdmdmcxdmdmbhelbhbhcxcxdmdmegegegegdmdmdmbhbhbhcxcxcxduelcxdfdfcrejddcofoerbfd`brbd`m`p", "daboerat`j`jfo`bater`batatezfocoddejddfdabcrcrfncncrdfdfdfelbhelbhcxcxegegdmbhbhbhbhbhbhbhcxcxdmazegegegdmbhbhbhcxcxcxcxcxcxcxelcxdudkfnfnabdd`jerbfaddeew`ibk", "dabodsbobafmfmbfbxeibxd`d`bxbxcida`xfo`ddgabdkcrcncndudfdudfduelcxbhbhdmdmdmdmdmcxdmdmbhcxbhdmdmegdmdmazdmegbhdmdmcxegdmbhbhdubhdudfcrfnfnddco`bbofma`adbw`mce", "erdaerbxbxbfbfa`bxeid`eoeobrbwbrd`csfmbo`jcoflabfncrdfdfelelcxbhcxdmcxbhbhbhdmegdmdmcxbhcxcxdmdmdmbhbhdmbhbhdmdmdmdmbhcxelelcxcncndkcnfdau`jdafmfmbabxeobd`mce", "daboehfmehfmfmbfeieha`adeoesbrbrbrdeeobfer`batez`dfnfndfdfduelcxbhcxegbhbhbhbhcxegbhbhbheldmdmdmazazbhbhdmbhbhbhdmbhelduelcxdfdfabdgaudg`jbofmbxa`a`adadbdbwce", "ererfmfmbafmerfmererfmerbfd`eoesbs`ibwbwbweod`ehfmboezabfndfelcxduelcxbhcxcxcxdmdmdmdmdmbhbhbhbhdmazdmcxdmbheldubhdudfdkab`j`jboerfmbxbxbxbxfma`a`eobrewbz`obk", "erciereratat`jat`b`b`bdaboererbfehd`esbwbwbw`faid`bjfmbocoabdzdfelbhbhbhbhcxbhcxdmdmbhbhbhbhdmbhbhdmdmdueldffnabau`d`jboehbiadehehd`eibxfmcierbfeid`bwfabz`oep", "erbobobobo`j`jfo`jfo`jflfo`b`jaterbfeieo`fbwbw`fesd`bjfmbo`d`udfdudfduducxbhcfbhcxcxbhbhbhbhbhdmdmdmbhdudffnauezbocifmbjd`d`d`eiehadfmcpci`t`terbfa`brewbzbkfi", "`jez`j`jfofofo`jfl`jcofl`d`d`dcoco`j`jbobfehd`esbsbsd`d`cpbofndfdzdfdfdfelelcxelcxcxcxdmcxcxcxegdmbhdfab`jerbxehd`brd`bjbja`bfehfmerdacida`j`jdadafmadeobrapce", "`b`j`j`j`jfocococofofoflco`dcococo`dfo`bdsbobofmbxd`d`eheherau`udfdffncrdudfduduelbhbhbhdmbhbhcxcxdffn`jfmbxd`d`d`d`adeh`tda`b`j`d`d`d`dabau`dau`x`beradeobu`m", "`jez`jez`j`jcocofofofocococo`jcococo`jdsdsdadacicifmehehfmda`dfndfcnfndfdfdudfelcxcxbhbhegdubhcxdufn`dbobxeieid`csbffmer`j`j`x`dababddabfnfnauab`j`bfmd`awbubz", "`jez`j`j`jez`j`jatatcifmbxbjbrbubrbrd`d`bjbjcsfmerbobobods`jcoauaufnfnfndfdfdfelbhcxdmdmeleldududffncobofmfmdadsezdada`j`jflauauauabfnabfnfnfnaufl`bera`adeo`f", "dadsdsdsdadaboerbjapbwapap`mbkdvbk`m`mevaibjbjd`brcscidada`j`jco`dabfnfndfdfdzdubhbhegbhbhbhdfdufnfnddfl`j`j`jdsbocifmcscpcpcids`jcoauddaudd`dcocodacicsccd`bu", "ez`b`jatbocicibjapbw`f`i`mdvcgfifififibkbk`fehcpd`buehboez`j`j`jcoaudpfn`gdfdfelbhbhbhbhbheldudfdkfnddddflco`jbobjbrbu`i`fbu`faebjcpcidsez`jfo`xezbofmbxeid`bs", "`j`jatatcifmbj`mbwbuf`bkbkfccmfc`mfcaxevai`mcd`caabxbrfmboez`b`j`jcofdfncrdfelbhdmdmdmdmdmdudf`ufnabau`d`xbobxbdeo`f`mdvdvdvfibkfccg`fbwbwapapbncsfmehehd`esbd", "fo`j`jerercsawbu`mce`m`mbifjcgalbwcacmdraifgdraqbrd`cibxecbobodsez`j`dabfndfdfelbhdmazdmbhbhdfdfabaucofl`jbxccbj`fbwcgce`maxax`ievfiaxbk`ocececefhbud`d`esdebu", "`j`j`jatcibxd`brcebkbk`yciczcdalbsf`axald`eaetaccid`erfmfmerdada`j`jddabfndfdudubhazajazdmbhdfdffnauddflezbfbxadbicibk`m`ibcax`fdydvax`mbkdvfc`p`p`pbrd`eobrbu", "fleu`jboerehd`dn`meseofjeqdiavalbsbtaoaade`fan`vacdwccererdadadsez`jflfdfndfbhdmdmajazazegbhdudfauabdd`jerfmcsdwbqacbwaibs`idh`fcjdrevfjaifififififi`ibddeesbs", "flco`j`jboererbxd`eseocsaqdbandr`fd`bsbwbw`acb`g`xboafakdafo`j`j`j`jflddfncreldmazazblblazbhdudffnabau`jdabxbo`xcu`vasbsaoah`cd``ifccidifjbsfieeeeepepbwbdeses", "flflfl`j`b`bdaa`ehd`buadbxaqeked`m`f`f`i`iekclcuatbaafamfm`j`j`x`jcocoddabcrdubhazblblblajcxbhchfnfnfnddercybadsacffacalbsd`bsd`ev`meqeqfjbrbzficmfi`p`iesd`eo", "dd`d`dcoco`j`j`bfmbxccd`fmbobo`xcieheibfbofoflfofbdxdx`bdxflddco`jcoflfdejcrcxegdmazajajazdmbhdufndfdfflefefefef`bcocuanalev`m`i`fek`laqbjbrbzepcefabwbreoeoeo", "fl`d`d`dcoflcofobobofmfmadfmadfmbxerfodaau`j`d`dfdcodddd`dddcoflcocodgauabcrcxcxdmazblajajdmbhbhdfeldfcrddfofofofo`jfo`j`jatboaqagageze`bjbwbudtbwbreod`d`d`d`", "dddddd`dcoflflcofobocifmbffmbfbfbfboatercocodgdgco`d`d`dauddflflfoddddddcrcncxbhegajcwajdmazdmbheldfcncnabcofofofofofoatatfo`j`j`j`jbofmbrbdbdbubreod`bxadadd`", "flfdddddddauddddflco`jdsdsda`b`jatfocococodgdgdgcoflflcococoflddcoauddabdkdfcxegazazblajazdmdmeldmdudufnddddfofbfoco`j`jfoatbocicibxfmbfadadeibxbxadadadehbxad", "fdddauddauauddddddddfl`j`j`jcococo`ddddddddddgfofofl`ddddd`dcodddpfdejdpcrdfcxcxazblblajazazazdmdmcxbhdfabddco`j`b`b`jfofo`j`jat`bfmaterfmfmfmfmfmfmfmfma`ehad", "ddauauddfdauddddddaudgflcofocofococodddg`dcocofofofddd`d`d`d`dabejabfnabfndfcxdmazblblblazdmegdmdmegcxdffnaudgcocoatatfofofoco`jfobo`bdaciciererfmfmbffmbfbxei", "dgauauauauauabfdababddaudgdgfldg`ddgfldgcocofldddddgaudgauddejfdcrfdcrejfndfcxegazblblajajajegdmdmbhbhdfdffnddaufldgcofofofocoflfl`j`j`j`jez`jboererererefbfbx", "coauddfnababauddfnfnabababababababddddddddddfnddfdauddddddejejdpcrcrdpfncrdfcfbhazazajajazazajazazazazbhel`ufnfdejdpddauababdddd`d`dflcofo`j`b`berererererfmfm", "ddejfdababababfdfdababfdfdfnfnfnfnabfnababababddfdabddejddejabejcrcrcrejfndfbhcxazajazajajazazazazdmdmdmdmdffndpfnfnfnababababejddauddcofofo`b`bdxdaerererbafm", "cofdababababfndpfnabfnabejcrdkfndfdkcrfnfnababfdddabcrejejabfnfnfnfnfnfnab`uducxegazblajajdmdmajajajegajazazdfcrcrcrcrcr`ucrdkdkababfddddddgfofoatataterererfm", "auauaudddpababfnfndkcrcrdfdfdffndfdfcrejfnabejababfncrejcrfncrfncrcrcrabcr`udfelegazajajajazazajajazazajazegbheldfdfdfcrcncncncndkcrejejdd`ddgflflfo`berererfm", "coddfdfdejdpababcrcrcrcndkdffndfdffnfnejfnejfdejabfnabfnfnfndpfncrcrfnabfd`udfelegazajazdmdmdmajblajajajdmegegegcxcfdfcrcncndfdfdkabcrfddddgfodgflfofodxdxerfm", "ddddauaucrdpfnfn`u`u`udfcncndfcncrcrcrabcrcrejcrdfcrcrfnabfnfddpfndffnababfndfcxegazazdmdmdmazazajazdmblazegazazegeldfelcxdfcrcrcrabejejejdgdgfofofofofo`berfm", "`dauddfnfndpcrfnfncrcrdf`ucrcrcrcrcrcrejcrcrcr`u`ucrfndpcrfnfnfnfndffnfndpfndfelbhdmegdmdmdmazazajazazblajazazdmazazbhbhelcndfdfcncncrababejdddgdgflfobyboboer", "ddfdfdejdpdpfncrcrfncrdfdfcndfdfdfcncrcrcrcncrducrcrcrcrdpcrdpcr`u`ucrfnfncrdfdfcxegcxegdmdmdmazajajajajblazazajazajazcxcxcxcf`u`u`ucrdpejfddgdgdgat`batatdxer", "ddfdddejabejfdfncr`u`u`u`u`u`u`u`udfcrcrcrdfdfcrcrcrdpfnfdfncrcrdfdffnfnfnfndfcrducfbhdmegazajazajajazajajazajajblazdqdmcxcxelelcncrejejejejdgdgfofofo`bat`bba", "coenabfdfnababcrdp`udf`ucrej`u`ucfcfdfcncndfcncrcrcrejfncrfnfnfnfnfnfnfnfncrcrcrcfcxegdmdmazazazajajajajajazajblblajdmegegdmdudfcrcr`ucrejejdgdgfofo`batbobobo", "cocoauabauabfdejcrcrcncrcrejcncndfcr`u`u`u`u`ucrcrcrfnejejcr`u`u`ucrfnabfnfnfncrcfcxegdmcxdmazazajazajblajdmazajblazazcxazcxcxcx`u`ucrcrfnfdfdddfofoatatatbobo", "codgauauaudpfdfddpdpcrcrcrdf`u`ucrdfdfdfdfcrcr`u`u`ucrfncrcrcrcrcrfnababfdabcrdfcxbhcxdmegdmajdmazajajajazegazazajazazazazcxdmdfdfdfdpcrfndpejfdfo`batatbobofm", "coauddauaufdejfddpdp`u`u`udfdfdfej`u`u`udfdfcncrdpcrdffnfnfnabcrcrdpababfnfnfncfcxdmdmdmdmdmajdmdmdmegegegcxdmdmdmdmdmdmdmdmdqcxcxcfcrdffnejfddgcofofb`bdxerfm", "coauauaufdaudpdpdpcrdpcrfnfndfcrcrdfdf`u`u`ufncr`ufn`ucrcrfdabfnababauabfndpfncfegdmajdmdmdmdmdmdmdmdmdmdmbhdmdmdmdmdmdmdmdmdmbhcxcfdf`ucrfddddddgfoatatbobobf", "`jcocoenauauaufdejfnfncrcrcr`u`ucrdf`udfdfdfdfdfcrcnfnfnfdfddpdpau`dabababcrdfcxdmajblajazdmdmdmdqdmdmcxcxbhegdmdmcxegdmdmdmegdmcxdudfcrdpfdddfddgfo`b`bererfm", "foco`d`d`dabfdfdababejfn`ucrcncrcrcrdfcrcn`ucncrcnfnfnfnauauaufdfd`d`dabfncrelegazazcwcwajdmdmdmducxdmcxcfcxcxdmdmdmdmdmdmdmdmcxbhbh`u`ufdejfdcoco`j`berererfm", "`j`xcoddcoauabfdababfncrfn`u`ucrcrcrdfcr`ucrcrcrcncrfnfdfdfdejfddgcofdabfncrcxegdmblblcwajdmdmcxcxcxdqdu`ucfcxcxegdmdmdmdmdmdmdmdqcx`u`ufdejejcodgfo`bdxerfmeh", "`jcocoauauaufdaufdfnfnfnfndf`u`u`u`u`udf`udfdfcrcrfnababdgfdfdabdgauauaudpcrcxazajajcqcqdcajdmdmcxcxcxdudfcrcfcxcxegegegdmdmdmdmcxcfcfcrdpfnabfdfofo`jererfmbx", "`j`jcocoddfdcoaufdejdpcr`udfdf`ucrdfdfdfdfdfdfcnfnfnabfdddfdejfdababababfnfncxazazajcqcqcwajdmdmcxdmbhdmdfcrcfcxcxegdmdmdmdmazdmcxcfdfcrcrabejfdfofoatatbafmbx", "dsez`jco`dddddfdabababcrcrfndf`u`u`u`ucrcrcrcrfncrfnauenddfdejdpdpdpfndkfn`ucxdmazblcqcqcwdcdmdmcxcxcxcx`u`ucfcxdqdmdmdmdmdmajdmdm`u`u`ucrejejdgco`j`bererfmbx", "dsezez`jcococofdfdababejfnfncncndfcrdfcrcrfnfnfncrabej`dddfdfncrcrfnfnfnfndfcxazajblcwcqcwajazazcxdqegcxdfcncrcxcxcxegcxdmdmdmcxcxdfdz`u`uejfddgdgfoezdxerfmbx", "dadsez`jcocoddfdfdabababcrcrcrcrcrcrcrcrcrcr`ucrcrfnfdcoaufncrcrcrfnfnfnfn`ubhazajajajcwajajdmajdmdmdmdm`ucrcfcxducxdqcxdmdmbhbhdudfdzcrejfdabcofofoaterfmcsd`", "boez`jezfocoddabddfdfnfndpcrcrcr`ucr`u`ucrfn`ucrcrfnfdcoabfncrcrfndpdpabdp`ududmazajajajajdqcxdmdmdmdmdm`ucfcfcfdfcfcxcxdmdmdmbhdududfcrejfdfddgco`jaterfmbxcc", "boboezezcococodgcofdfdfnfnfnfndp`gfnfncrcrcrcrcrcrfnfdfdddfdejfdcoco`dauaufndfcxdqdmdmajdmbhcxcfcxcxcxcxcfcxelcxdfduducxdmdmbhbhdududzcrcrfdejfdco`jdaerfmbxd`", "bo`bezez`jcocoflfdfdaufnfnejcrcrcrdfdfcncnfnfnfnfnfnfnddcofdddfobfccbjauaufncrdzdzcxcxbhbh`g`r`rfd`udqducxcxdmelcxcxdfcxcxbhelcfcxeldf`ucrfdabcoco`bdaerfmawbr", "atbobo`jfo`xfodg`ddgaudpdpfnfn`u`udf`udfcncncncnfnfnfnfdcoendgfbebefbx`xabfnfn`udzdzdududuatefebfofndzcxcxcxcxcxdfducxbhelcxcxcfcxcxdfcrcrabddcocoezdxerbxd`br", "`bez`b`j`jfococodgddfdabfnfnfndpcrcrcr`u`ufndfdfdkfncrcrdpdgcocofoco`jezcocofddp`gfndfdufnfddgdgdgcrcxbhbhdmdmbhbhducxcfcxcfcxcfcfcfcrfncrabaudgfoatbofmbxbrbw", "atezds`jezezfoco`dauauaufncrcrcrcr`udf`ucr`u`ufnfn`ucrcrfnfnddflezfocoflcoauauaufnfndududucrdpabdfcxdmdmdmegdmdmbhdududuelcfcfcxcf`u`u`ufnfnaudgfoatbofmadd`bd", "at`b`bezezezfocoddddfdababfndpdpfn`ufncr`u`ufn`ucrcrcrcrfnfnfdddddfoflcodd`dauaufndfbhcxdu`udpcrbhdmdmdmazazazazdmduelcxcxcfcxcfdfdffndffnfdddfl`bbocifmccbres", "atat`j`bezezco`jcocofdddfnfnfndpfnfn`u`udfcrcrcrcrfn`ucrfnfnabfnauddendgaufnabab`ubhbhdmbhbhbhbhdmdmbhazazdmdmdmdmcxcxdfdfdfdzdzdfdffnfnfnfddgfo`jboe`bxd`eoeo", "dsdsda`jez`j`jcocodgdgfdauabejdpejfnfndfdfdfcncncncncnfncrcrdpfnababddababdfdudfducxazazajegegdmdmdmazazajdmdmdmdmdmcxdudzdfdfdzdfdf`ucrdpau`d`j`jatfmbxadeod`", "dada`b`jez`jcoco`d`d`d`dddejdpababdkfnfndfdfdfcrcrfnfnfncrcrdpejfdejdpabfndfcxeldudmdmazazdmdmdmdmazazazazajazdmdmdmcxcxdfdfdz`u`ufndkfnabfdfdcoezatfmadd`eod`", "bodsdsfo`jfo`j`jcocoddfdddfdababfnabfnfndffncncncncrcrcrfnfnfnabcrfncrcrdfcxdmelcregazazazdmegdmegazazazajajazdmdmdmegdmeldfdfdfdf`u`ucrfnauau`j`jerfmbxawcccc", "boda`b`jfoezcococoflddddfdabababfnabcrfnfndfcrfncrcrcrfncrabcrfnfnfnfndfcxbhbhbhdfcxegdmdmazazazegegazazazazazazazdmdmbhcxcxdzdfdffndkfnfdabco`j`berfmadawadaw", "boatat`j`jcoco`jco`d`dauauauaufdfnabfncrcrcrcrfnfnfnfnfnfnfncrabcncrfndfbhazegcxdfcfdmdmdmdmazajegazazazazdmazazdmegcxcxcxcxcfcf`u`ufncrdpau`d`xboerbxadeoamd`", "daat`jfofoezfofo`jcoauddaufdfdaufdfndkdkabfnfnfncrfnfnfncrfncrabfncrcrduazazazcxdf`ucxazazazajazajazajajazajajajajdmdmcxcxcxdfdzdfcncncrejfdcofodaerfmadccd`aw", "cida`batfo`jcoflcofl`d`dauabfddgauababfnababcrfnfnabfnabfnfncrfncrcrcrcxazegdmcxcrdfegazazajajajajazajazajajajazazdmdmbheldudzcfdf`udfcnfnaudgfodaerfmadd`d`d`", "fmbobo`jezcoco`jcofl`d`dauauauddfdabababfnfnfnfnfnfnfnfnfnabcrcrcrfdab`udmdmegcxcfcxegazazdmazazazdmblajajajajajajdmegbhdududfdzdf`u`u`ufnab`dezatbobxadeoeid`", "fmbobo`jfo`j`jcoco`dddddddejauddfdejfnababdpejejejabababababfncobyatbydjbpdpducxcfdf`udp`udzdzajajajajazblajazazazdmdmdmcxdfdudfdz`ucr`ufnabcoatatbabxadadadd`", "csbobo`jezfococo`dfl`dfdabddfdabfnababauauddauddauaudpau`x`rbababaeyafbaebbydjfdbpdjdjbybybybycodpardmajajajajdmdmbhegbhbhcxcfdfdzdz`ufnabauco`jatfmbxadadades", "bicidada`j`jcofl`dcocoddauauddaufnababau`d`d`d`dddauauezbaafafafafawafcyey`ratbybyatbmebat`rbababyen`gardmajajbhdudubhbhbhcxdfdfeldfdffncraufl`jbofmbxadd`adbu", "bkfmda`b`b`j`jflcoflcocoddfdfdababababababcofodsboe`bxakamb`b`b``e`eamamafafeyebbabaeyefeyeybxafafeyey`rezencvauaufndudfcxelcxelcxdzcndkfnabco`bbobabxbjd`br`m", "bebberda`jez`jcococofldd`dauddddababababdddg`bbxdldododtdodobddlb`ex`eb`ccafafcyeyeyey`eafafafakamamamakbxafcceyfbejdkcndfelcxbhcx`u`u`uabauco`bdafmbxbxawbree", "bed`cida`b`j`j`j`dcofl`d`dddababababababcofo`bef`edodtdtdtdt`nctexexdtex`eakamafafafdldlafemem`scyafakakawbxefbacofdcrdfdfbhbhcxbhcx`ufnfncofo`bbobfbxbxd`bwbe", "``fcecerat`j`j`j`jfococodg`d`dauabddddauflddflfbef`sb`cccyfecy`s`s`s`s`sfkfkbv`s`semc``zayayayaybmbybmbmfb`kdgejejcrcrcrdudfbhcxcfdfdfcnabco`xatbobfbxbjd`bk``", "``beaeerdaboezcococococoflflflddauau`dflddddflflfbefaffebxafeyefefeb`w`way`z`zayeb`zaybmbm`h`h`hbybybybyfofdcrducr`ucrcrdfdudfdudzdffnfnabfl`jbobofmbxd`bube``", "``be`icibobods`j`j`j`j`jfl`dcocofddd`dflddcodgfldgercycccyafccefeybmbm`kfbebbmbmbmfbfbbmfbdjdgfobyezbyfodgcrcxcfcfdfcr`udfcndfeldfdffnfnabflfoboerfmadad`mbe``", "bebecmeiboboez`j`j`j`j`j`xcoco`d`dcocoflddcodddgdgfldxcybxcycccyey`rebbm`kbmdg`kbmbmbm`kdjdjdjbmatatbybycrcxcxcxelcfcrcrcr`udfdfdf`ufnauaufl`jbofmbxbjbrckbe``", "````bebkcperda`b`j`j`j`x`j`j`jflflflddcoflddddddflddcodxcyafeyafeyefeb`rbmbaatbyatebbmebbmeybmbmbybybyejcxbhegbhelducrcrcrdfdfdfdfdkfndd`d`j`berfmehd`bkck````", "````becmcscibo`j`j`j`j`j`j`j`j`xcococofldddgcoddflddfofbeyafeyafcyc`efebebey`rbaebbaebeb`rebbmatbybm`hdfdmdmcxcxcxcfcncrcrfndfdfdkfnauabdd`j`berfmehbrdveebe``", "bebebebef`cpcibo`j`j`j`j`j`j`j`jcocococofldgfldgflfofl`j`bbabxafcyafcyefefeyefeybababababaebat`rbaddelelcxcxcxcxbhelcrcncnfnfn`ufnfnab`dfl`jatfmbxd``ofiee````", "bebebebebe`fecerdadadada`jez`j`j`jeuflfococococodgflco`j`jfoereyawbxafafafeyafeycyeyeyeyeyeybxerejdfdudfdudfcfeldudfcrdfdf`ufn`u`gab`d`d`x`berbfbjbwdvfieebe``", "``bebebebecgbgcicidadadadsda`j`j`j`jflcoflflflfldgflco`j`b`j`bdxccawafafafafawawawafbxafeyafbfflcrdfdfelelcxelcxelcxdfdfcndkdkdkfnab`dcofobocibxd`f`dvficm````", "````bebebebebkaacicibodsdsdsezezezfoflflflflflflcoflcoflflfofo`j`j`j`b`b`j`b`j`jez`b`b`b`bflfdfnfncrcrdfdfdudfdueldfdfcndfdfcnfnfnau`d`x`jbofmbj`ibkdvfhbe````", "``````bebebeeebwehcicidadadadadsez`j`j`xfocococoflflcofofofocofofocococoflddflcocoflcocodgddababdk`udfelcfcxdfdfdfdf`udfdf`g`gababaueufobociehbu`mcedvfibe````", "``````bebebeeebwd`cpcicidabodsda`j`jfofocoflflflfoflcodgflfldgcoflflflcodgflddfldgfldddd`dddabcrfndfdfdudfdfdudfdfdfdfdfdffn`ufnauddfl`jbofmd`bw`mcedvfhee````", "````bebebebeckbzbwd`ehfmciboda`b`j`j`jcocococoflflflddddcoddcoddddddddddddddfdddddddfdfdejcrcrdfdfdfdfdfeldfcfdfdfdfdzdffndkfnab`dcofobofmbjbrbzcecefheeee````", "be``bebebebeeecebwesd`csehcicibodads`j`j`x`j`jflcococoflddddabejfdejddabcrejdpcrcrejcrcrcrdfdfdfdfdfdudfelelcxdfdfdfdfdfdffnfnau`dcodscibjbubwbwbzbk`qeeee````", "bebebebebebeeebkapesd`eiehecfmerbobo`j`j`j`j`jcocofldddgdgejabcrcrejabcrcrcrcrcr`ucrcfcfelelelelcxeleldfdudfdudfdfdfdfdffnfnab`d`d`jatfmeobubwbw`mcefieebe````", "bebebebebebeee`p`ibweod`bjehfmcicicidsdaez`jfococoflflddddejejcrcrdfcrcrcncndf`ucfcfcxelelelegcxcxcxdmdmcxduelcxdudfdf`ufnfnabco`jbofmd`brbubwapcefcdveeeebe``", "bebebebebebeeeepbzbueoadd`bjcsfmcpfmerboez`b`jcofococodgdddpabcrdfdf`ucrdfdfcfcfcfcfcxegdmegdmegdmegegbhbhbhcxdududfdf`ucuauco`jbocsd`eoeobrbrbzbzfcdvcmbe````", "bebebe````beeeepbzbweoadd`d`bjehfmfmcidadads`jcofococodgaufnfncr`udfcncr`ucxcxcfcfcxcxegdmegegegegegegegdmdmdmbhdudfdfdffnabfldsciehadd`esbrbwfabzfcfibebebe``", "bebebebebebeeeepbzbweseod`adeiadbicsehfmbobo`j`jfococoflfdejdp`udfcfcfcfcfcfcfcfcfegcxegdmdmdmdmdmdmdmdmbhbhbhbhdudfdffnau`xdscieheiadeoeobrbdbw`obkfibe``````", "bebeeebebebeeeepcebdbdeoadd`eid`d`eiehfmcicibo`j`jfocoflddauejcr`ucfcfcfcfcxcxbhcxcxcxegdmdmdmdmdmdmegcxcxegbhardfdffnau`xdscifmbxeid`d`eo`fbwbwcecefibebe````", "bebeeebebebeeeficebweseoadadehd`d`d`eiehcsciboez`j`j`j`j`ddddddp`udfcfcfcfcfcfcxcxcxcxcxdmdmdmdmdmdmegdmdmdmdmdudfdfaucoezcifmbfeheid`d`eobdbdbwbzbkckbebe````", "bebebebebebeeeficebwbreoadadehbxadadadeiehcscpcidadsez`jfoflddejcr`ucfcfcfcfcfcfcfcfcfcxdmegdmdmdmdmdmdmdmbhbhdu`gau`xaqcici`tbfbfeibxadeobrbwapceceee````````", "bebebebebebebefi`obzbweoadd`eheheheheheheiehcscpcibo`jezfococoddejfndfcxcfcx`u`ufnfndfdzcxdmdmdmegdmdmdmbhbhdu`ucu`xdsdacicifmbfbfehadadeobrbwbzce`qbe````````", "beeeeeeebebebefice`mbweoeod`eieieieieiadccadeiehfmboda`b`j`jfofdaucr`u`u`udf`ufnfnfncrdfcxcxcxdmdmdmdmdmarduchfnagdsboerdaererfmbfa`adadeobrbwapcefibebebe````", "bebeeebecmcmeeeefibzbweseoadadadadbxeieieibxd`d`bxfmcierboatfocoddfdcrfnfn`u`ufnauauaufn`udududqdmdmarardz`ucu`xdsboboboerererbfbfehd`d`eo`fbwfacefibebebe````", "bebebebebebecmfiepcebwbdeoadada`a`a`a`a`eieieieieiehcsfmciboat`jco`daufn`u`u`gabaucodgaufn`udududududuchfnau`xdsdsdsdsdaboerfmfmbfeibxadeobrbwbz`peebebe``````", "bebeeebebecmcmfi`pcebwbdeoeoadada`a`a`bxa`eha`bxadadbxehfmerdaezco`daucufnfnfnau`d`d`dddej`ududzdzdzdf`g`gco`j`bdadadaboererfmfmehehadadeobrbdbzbkeebe````````", "eeeebeeebebebeeeep`pbzbdeoeod`a`a`eha`a`ehehehbxbxeiehehehfmfmciboezco`dauabcuco`x`xcocoaufdaufn`g`gau`dfo`j`jez`bdadadaerererfmeheiadadeobrbdbz`pbe``````````", "bebebebebebecmeefificebdeoeoadeibxbfbfcya`a`a`eheheha`bxehehbxfmfmerdaezco`d`xdsbodadsez`xcoauauenbq`x`j`j`j`j`j`j`b`b`bererfmfmeha`adadeobrbd`ofibe``````````", "becmeeeecmeeeeeeeedvcefabreoadeia`bfbfbfbfa`eheheheheha`ehehehfmfmfmerdsez`jdsciciciboezez`x`x`x`d`j`j`j`j`jfl`x`j`j`b`bdafmerbfbxa`bxd`eobrbwcefibe``````````", "eecmeeeeeeeecmeeeefi`pbzbdeoadadadbffmfmfmbffmeheheheha`ehehehehehfmfmbodadadabodadadadsez`j`jcococofofofoflfofo`jfo`jatdaererbfa`eiehadeobrbwcefibe````````be", "bebecmbebebecmeeeefiepbzbueoada`a`bfbfefbfbfbfbfbfbfbfbfbfehehehfmfmfmfmererda`b`b`j`jfofofoflflcoflcocococoflco`x`j`jbodaerfmfmbxa`eid`eobwbwcefibe``````````", "eeeeeebebebebeeeeefifibzapbreoa`bffmfmbfbfbffmfmfmfmfmfmfmbxbxbffmfmfmfmererdadada`b`jfofofl`jflfoflcoflflflflcocofo`bdadaerfmfmbxa`a`adeobwbwepeebe``````````", "bebeeecmcmeeeecmeeeeepcefabweoadbxfmfmfmfmfmfmfmfmfmfmfmfmfmbfbffmfmbffmererdadada`jfofoflflflflflflcoflflflflflfofb`j`jboererfmbxa`adadbrbwbwepeebe````````be", "eecmeeeeeebebeeecmcmfiepbzbwb`d`a`bferereffmfmeffmfmbffmfmfmbxfmfmfmfmfmerdabodsez`j`j`xcoco`dcocococococoflflfl`j`b`batdaerfmfma`ehadadesbwfa`qeebe``bebebebe", "beeeeeeecmcmeeeeeefifiepbzdobreoadbfererfmfmfmbafmerfmfmfmfmbxfmfmerererbodabodsez`jfl`jflfl`dflflflflddcocococofo`bdsboerererfma`a`adeoesbwbzficmbe``````bebe", "bebebebecmbebebefififiepbzbubdeoadbffmererererfmfmererbfbfbfbferererererdadads`j`bfoflco`dflflddflflflflflflfl`j`j`bdadadaererbfa`eiadeoesbwbzfibebebebebe``be" "bebebebecmbebebefififiepbzbubdeoadbffmererererfmfmererbfbfbfbferererererdadads`j`bfoflco`dflflddflflflflflflfl`j`j`bdadadaererbfa`eiadeoesbwbzfibebebebebe``be" "bebebebecmbebebefififiepbzbubdeoadbffmererererfmfmererbfbfbfbferererererdadads`j`bfoflco`dflflddflflflflflflfl`j`j`bdadadaererbfa`eiadeoesbwbzfibebebebebe``be" }; xpat2-1.07/lib/default/Cardback0.xpm100644 146 144 24245 6712243550 15704 0ustar mbimathopt/* XPM */ static char *Cardback0[] = { /* width height num_colors chars_per_pixel */ " 79 123 3 1", /* colors */ ". c #ffffff", "# c #474747", "a c #bebebe", /* pixels */ "...............................................................................", "...............................................................................", "...............................................................................", "...............................................................................", "...............................................................................", "........###############################################################........", ".......#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.......", "......#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#......", ".....#aa###############################################################aa#.....", ".....#aa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aa#.....", ".....#aa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aa#.....", ".....#aa#aaaa####aaaaa#####aaaaa#####aaaaa#####aaaaa#####aaaaa####aaaa#aa#.....", ".....#aa#aaa#aaaa##a##aaaaa##a##aaaaa##a##aaaaa##a##aaaaa##a##aaaa#aaa#aa#.....", ".....#aa#aa#aaaaaaa#aaaaaaaaa#aaaaaaaaa#aaaaaaaaa#aaaaaaaaa#aaaaaaa#aa#aa#.....", ".....#aa#aa#aaaaa##a#aaaaaaa#a#aaaaaaa#a#aaaaaaa#a#aaaaaaa#a#aaaaaa#aa#aa#.....", ".....#aa#aa#aaaa#aaaa##aaa##aaa##aaa##aaa##aaa##aaa##aaa##aaa##aaaa#aa#aa#.....", ".....#aa#aa#aaa#aaaaaaa###aaaaaaa###aaaaaaa###aaaaaaa###aaaaaaa#aaa#aa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaaa#aaaaa#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#aaaaa#aaaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaa#aa#aaa#aaa####aaa#aaaaaaaa#aaaaaaaa#aaa####aaa#aaa#aa#aaa#aa#.....", ".....#aa#aa#aaa#aaaaaa#aaaa#aaa#aaaaaaa#aaaaaaa#aaa#aaaa#aaaaaa#aaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#a#aa##aa#aaa##aaaa#a#aaaa##aaa#aa##aa#a#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aaaa#a#aaaa#aaaaa####aaa####aaaaa#aaaa#a#aaaa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#a#a#aaa#aaaa##aaaaaaaaaaa##aaaa#aaa#a#a#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaa#aaaaa#aa###aaaa#aaaaaaaaaaaaaaa#aaaa###aa#aaaaa#aaa#aa#aa#.....", ".....#aa#aaa#aa#aaa#aa#aaaaaaa#aaaaaaa#a#aaaaaaa#aaaaaaa#aa#aaa#aa#aaa#aa#.....", ".....#aa#aaa#a#aaaaaaa#aaaaaaa#aa##aaaa#aaaa##aa#aaaaaaa#aaaaaaa#a#aaa#aa#.....", ".....#aa#aaaa#aaaaa#aaa#aaaaaa#aa###aaa#aaa###aa#aaaaaa#aaa#aaaaa#aaaa#aa#.....", ".....#aa#aaa#a#aaaaaaa#a#aaaaa#aaaaa#aa#aa#aaaaa#aaaaa#a#aaaaaaa#a#aaa#aa#.....", ".....#aa#aaa#aa#aaa#aa#a#aaaaaa#aaaa#aa#aa#aaaa#aaaaaa#a#aa#aaa#aa#aaa#aa#.....", ".....#aa#aa#aaa#aaaaaaaa#aaaaaa#aaaa#aa#aa#aaaa#aaaaaa#aaaaaaaa#aaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#aa#aa#aaaaaa#aa#aaa#aaa#aa#aaaaaa#aa#aa#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aaaa#a#a#aaaaaaa##aaa#a#aaa##aaaaaaa#a#a#aaaa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#a#a#a#aaaaaaaaaaa##a##aaaaaaaaaaa#a#a#a#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaa#aaaaaa#aa#aaa#aaaaaaa#aaa#aaaaaaa#aaa#aa#aaaaaa#aaa#aa#aa#.....", ".....#aa#aaa#aa#aaa#aaaa#aaaa##aaaa##aaaaa##aaaa##aaaa#aaaa#aaa#aa#aaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaa#aaaaa#####aaaaaaaaa#####aaaaa#aaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaaa#aaaaa#aaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaa#aaaaa#aaaa#aa#.....", ".....#aa#aaa#a#aaaaaaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaaaaa#a#aaa#aa#.....", ".....#aa#aaa#aa#aaa#a##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##a#aaa#aa#aaa#aa#.....", ".....#aa#aa#aaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#aaaaaaaaaaaaa####aaaaaaaaaaaaaaaaaaaaaa#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaa#aaaaaaaaaaaaaaaaa#aaa#aaaaaaaaaaaaaaaaaaaaaaaaa#aaa#aa#aa#.....", ".....#aa#aaa#aa#aaa#aaaaaaaaaaaaa#aaa#a#aaaaaaaaaaaaaaaaaaa#aaa#aa#aaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaaaaaaa#aaa#aaaaaaaaaaaaaaaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaaa#aaaaa#aaaaaaaaaaaaa####aa#aa###aaaaaaaaaaaaaa#aaaaa#aaaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaaaaaaa#aaa#a#a#aaaaaaaaaaaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaa#aa#aaa#aaaaaaaaaaaaa#aaa#a#a#aaaaaaaaaaaaaaaaa#aaa#aa#aaa#aa#.....", ".....#aa#aa#aaa#aaaaaaaa#####aaaa#aaa#a#a#aaaaaaaa#####aaaaaaaa#aaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#aaa#aaaa##aaa#aaa#a#aa###aaaa##aaaa#aaa#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aaaaa#aaaaaa#aaaaaaaaaaaaaaaaaaa#aaaaaa#aaaaa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#aa#aaa##aa#aaaaaaaaaaaaaaaaa#aa##aaa#aa#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaa#aaaaaaa#aaa#aaa##aaaaaaaaaaaaa##aaa#aaa#aaaaaaa#aaa#aa#aa#.....", ".....#aa#aaa#aa#aaa#aaa#####aaaaa#############aaaaa#####aaa#aaa#aa#aaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaaaaa##aaaaaaaaaaaaa##aaaaaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaaa#aaaaa#aaaaaaaaaa#aa##aaaa#aaaa##aa#aaaaaaaaaa#aaaaa#aaaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaa##aaaaa##a#a#a##aaaaa##aaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaa#a#aaaa#a#a#a###aa##a##aa#a#a#aa##a##aa###a#a#a#aaaa#a#aaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaa##aaaaa##a#a#a##aaaaa##aaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaaa#aaaaa#aaaaaaaaaa#aa##aaaa#aaaa##aa#aaaaaaaaaa#aaaaa#aaaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaaaaa##aaaaaaaaaaaaa##aaaaaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaa#aa#aaa#aaa#####aaaaa#############aaaaa#####aaa#aaa#aa#aaa#aa#.....", ".....#aa#aa#aaa#aaaaaaa#aaa#aaa##aaaaaaaaaaaaa##aaa#aaa#aaaaaaa#aaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#aa#aaa##aa#aaaaaaaaaaaaaaaaa#aa##aaa#aa#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aaaaa#aaaaaa#aaaaaaaaaaaaaaaaaaa#aaaaaa#aaaaa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#aaa#aaaa##aaaa###aa#a#aaa#aaa##aaaa#aaa#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaa#aaaaaaaa#####aaaaaaaa#a#a#aaa#aaaa#####aaaaaaaa#aaa#aa#aa#.....", ".....#aa#aaa#aa#aaa#aaaaaaaaaaaaaaaaa#a#a#aaa#aaaaaaaaaaaaa#aaa#aa#aaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaaaaaaaaaaa#a#a#aaa#aaaaaaaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaaa#aaaaa#aaaaaaaaaaaaaa###aa#aa####aaaaaaaaaaaaa#aaaaa#aaaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaaaaaaaaaaaaaaa#aaa#aaaaaaaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaa#aa#aaa#aaaaaaaaaaaaaaaaaaa#a#aaa#aaaaaaaaaaaaa#aaa#aa#aaa#aa#.....", ".....#aa#aa#aaa#aaaaaaaaaaaaaaaaaaaaaaaaa#aaa#aaaaaaaaaaaaaaaaa#aaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#aaaaaaaaaaaaaaaaaaaaaa####aaaaaaaaaaaaa#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaa#aa#aa#.....", ".....#aa#aaa#aa#aaa#a##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##a#aaa#aa#aaa#aa#.....", ".....#aa#aaa#a#aaaaaaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaaaaa#a#aaa#aa#.....", ".....#aa#aaaa#aaaaa#aaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaa#aaaaa#aaaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaa#aaaaa#####aaaaaaaaa#####aaaaa#aaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaa#aa#aaa#aaaa#aaaa##aaaa##aaaaa##aaaa##aaaa#aaaa#aaa#aa#aaa#aa#.....", ".....#aa#aa#aaa#aaaaaa#aa#aaa#aaaaaaa#aaa#aaaaaaa#aaa#aa#aaaaaa#aaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#a#a#a#aaaaaaaaaaa##a##aaaaaaaaaaa#a#a#a#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aaaa#a#a#aaaaaaa##aaa#a#aaa##aaaaaaa#a#a#aaaa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#aa#aa#aaaaaa#aa#aaa#aaa#aa#aaaaaa#aa#aa#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaa#aaaaaaaa#aaaaaa#aaaa#aa#aa#aaaa#aaaaaa#aaaaaaaa#aaa#aa#aa#.....", ".....#aa#aaa#aa#aaa#aa#a#aaaaaa#aaaa#aa#aa#aaaa#aaaaaa#a#aa#aaa#aa#aaa#aa#.....", ".....#aa#aaa#a#aaaaaaa#a#aaaaa#aaaaa#aa#aa#aaaaa#aaaaa#a#aaaaaaa#a#aaa#aa#.....", ".....#aa#aaaa#aaaaa#aaa#aaaaaa#aa###aaa#aaa###aa#aaaaaa#aaa#aaaaa#aaaa#aa#.....", ".....#aa#aaa#a#aaaaaaa#aaaaaaa#aa##aaaa#aaaa##aa#aaaaaaa#aaaaaaa#a#aaa#aa#.....", ".....#aa#aaa#aa#aaa#aa#aaaaaaa#aaaaaaa#a#aaaaaaa#aaaaaaa#aa#aaa#aa#aaa#aa#.....", ".....#aa#aa#aaa#aaaaa#aa###aaaa#aaaaaaaaaaaaaaa#aaaa###aa#aaaaa#aaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#a#a#aaa#aaaa##aaaaaaaaaaa##aaaa#aaa#a#a#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aaaa#a#aaaa#aaaaa####aaa####aaaaa#aaaa#a#aaaa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#a#aa##aa#aaa##aaaa#a#aaaa##aaa#aa##aa#a#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaa#aaaaaa#aaaa#aaa#aaaaaaa#aaaaaaa#aaa#aaaa#aaaaaa#aaa#aa#aa#.....", ".....#aa#aaa#aa#aaa#aaa####aaa#aaaaaaaa#aaaaaaaa#aaa####aaa#aaa#aa#aaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaaa#aaaaa#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#aaaaa#aaaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aa#aaa#aaaaaaa###aaaaaaa###aaaaaaa###aaaaaaa###aaaaaaa#aaa#aa#aa#.....", ".....#aa#aa#aaaa##aaa##aaa##aaa##aaa##aaa##aaa##aaa##aaa##aaaa#aaaa#aa#aa#.....", ".....#aa#aa#aaaaaa#a#aaaaaaa#a#aaaaaaa#a#aaaaaaa#a#aaaaaaa#a##aaaaa#aa#aa#.....", ".....#aa#aa#aaaaaaa#aaaaaaaaa#aaaaaaaaa#aaaaaaaaa#aaaaaaaaa#aaaaaaa#aa#aa#.....", ".....#aa#aaa#aaaa##a##aaaaa##a##aaaaa##a##aaaaa##a##aaaaa##a##aaaa#aaa#aa#.....", ".....#aa#aaaa####aaaaa#####aaaaa#####aaaaa#####aaaaa#####aaaaa####aaaa#aa#.....", ".....#aa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aa#.....", ".....#aa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aa#.....", ".....#aa###############################################################aa#.....", "......#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#......", ".......#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.......", "........###############################################################........", "...............................................................................", "...............................................................................", "...............................................................................", "...............................................................................", "..............................................................................." }; xpat2-1.07/lib/default/Cardback6.lowcol.xpm100644 146 144 25642 7012640546 17212 0ustar mbimathopt/* XPM */ static char *Cardback5[] = { /* width height num_colors chars_per_pixel */ " 79 123 54 1", /* colors */ ". c #402020", "# c #501818", "a c #581818", "b c #601818", "c c #683018", "d c #683820", "e c #684030", "f c #704020", "g c #803828", "h c #903028", "i c #783028", "j c #783818", "k c #784030", "l c #784828", "m c #984030", "n c #785050", "o c #802824", "p c #804020", "q c #884630", "r c #884820", "s c #885040", "t c #985030", "u c #985040", "v c #986037", "w c #986048", "x c #986034", "y c #b88870", "z c #a85030", "A c #a85040", "B c #a86038", "C c #b86047", "D c #b86858", "E c #b87048", "F c #b87858", "G c #c06868", "H c #c07868", "I c #c85040", "J c #c87850", "K c #c88870", "L c #d07060", "M c #d08871", "N c #d87870", "O c #d88058", "P c #e08868", "Q c #e09878", "R c #e0a088", "S c #e8a878", "T c #e8b088", "U c #f0a088", "V c #f0b099", "W c #f0c0a8", "X c #f8b088", "Y c #f8c098", "Z c #f8d0a8", /* pixels */ "vuwBBCCCEEEJEEEJGJJLJKKOPPPPPQQQQUPPPQQSUQQQSUQQSSSTTRQQQQQPMPODFCBvqqldc#.....", "vuwBBCCCEEEJEEEJGJJLJKKOPPPPPQQQQUPPPQQSUQQQSUQQSSSTTRQQQQQPMPODFCBvqqldc#.....", "vuvBBBDEEDEJGEGGJJJJJOJKOKPPQQQQQQQQSSUSSQQSSUQQQSSSSQQQQQQPMMOEFDCBtqrdcb#....", "uvBBBCEEEGEJGEJJJJJLJOPPPPPPPQQQQQQQQUUTSSTQSSSSUSSSSRQQQQSQPMKKJGBBzqgpjb#....", "vABBCCCDEJGEGJEJJGJJOKPPPPPPPPQSUQRQQTSSSTRTTUSRUUUUUTUSTPSSQQKKJGCButqpjb##...", "tBBBCCCDEJEGEJGJJJJOOOPPPPPPPQPSSSUSSSSSUUSSSSSUSSSTSUUUSSSQQQPMJJEGutrpjc##...", "tBBBCDDEJGEJJJJJJLJOJOPPPPPPQQQQQRTTTSTSTTSSSSTTTTSTUUSUTSPSQPPPJJGBBtqgjjbb...", "tBBBBBEEJDEJDJJJHJOOOKPPPPPQQQSSSSUTTVTUUXUXTTSTTTTTTSSSSSSQQQQMKJGCGvtrpfb##..", "vBBBBBEEGEJFJJHJJKOOOKPOPQQPQQSTSUUUVXTUXXUXTTTTUXXTXUXTSTTSSQPPKJJEBAtrpdc##..", "uwBCCBECDJJJJOLOKKPPPPPPPQPUQSPSSTVXXXXTVVXVSSTVVXXVXXXXTUUUSSPQPKJJJBvrgjcb#..", "uuBBBEECDJHJKJOLOOMPPMQQPQQQSUSTTTUTXTYXVTUUUUTVXTXXVXVVVTTSQSQPPOKKDCAtqjcb#..", "vuBBBBEEJFKJJKJOOOOPMMQQQQQRQQSTTUVVXVVVVTTUUUTTVTTTXTVVTTSTSQQPPPKKJEAtrffb#..", "uuBCBBBEJLDDJKOLPKOMMMPPPQPSTUUXTVUVTXTTTTUUUUTYTTVVVXXVVTTUSURQQQQMKDBvtgdbb..", "tvBBBBECCBABBEFKNPLKKOPQQQQQSUVTTVVVVVUVVTSTTUUVVXXXXVVVTTTUUURSUQQPOJDCtrdbb..", "vutABBCBAtBAABCDJOJLKPPMQPQQQSTSTUUXXVTTTTTTTUUVYXXXVTTTUUUUUUUSURNMMKJBtrjba..", "vuwumqqrgfgddggsvBCFGKNPQQRQRQRSUTTVVVVVUVVTUTVVXVVYVXTVVUXVTTRTRQPMMJDBuqpj#..", "tvtggrrpgfdccb#bdkquBDEKMPQQSSUTUVUTTTVXVVUTUUVVVTTVTTVVVVTUSSUQQNQLHBvqqmgcb..", "vulqlqqrflpjcbbbbbcrtBABFMMQQRSUTUXTTTTUXTTTSVVVYYTTVTTTVTSRSUQQKGHGBuqgppjjb#.", "ttqqmqtqttqtrdcba.###cdlquBKMQSURSUTUUUVVVVVTTTTVYVUVTSRTRQNKBButqggggqppcba...", "tsttAABABBBvuttrldb####adfquDKRQSTTTTUTUVVTTTTVTTVVRSQMKHFBulfjlldfgqstrfd##...", "tuuuuBBCBCBECBBAtrfc####bdfquFPQRQRRUTPTUUTTTTTVVVTRQMHBusqfdddfljqpshhtrpba...", "BBBBCCCBEBDEFFFDDBBurldbaaddpuMQRQQQSSUSUUUVUUUXVTQKBtgldbdffprlqtvsvBBvvqjcb#.", "BBBBBCDDDCCEDFDDDFCBwuuqgddlltHPQQMPRQRRSTTTVTTUUQMBqgddddjlhvBBFFFFKHFHBBtjc#.", "BBBBBBDDCCCDDDBDDDBwwvvssqllqvFMQQMQQRQSUUTTXRTURMFugffdkrqtBBBFKKJKMMHKBBqdf#.", "BBBBBBBBAAsqgfb#bbddffkqtuuuwBDHHMMMQQQSTUVVSSRRQMDuqqvwBvvBBEHHHKMKMMMHEBtpjc#", "vwwwvvutf####.......affdbksvvBBDFKMMQQRRTTXTTTQRMMJEBBBwusqkppswBDHJHJFDDvskid#", "BBBAussf###..........#lpd#luBBBBDHNMNQQSTTTTTSRQNMJJEDBufb#.###bfpswBBCBBuqgfda", "BBAAsqf.##..........a..begbquBBBBDLMPQSTVVVVVRQPMKHFBugbc#........#####ckqlldbb", "CBBttkf#....fn.##...aG.xbdsgpuuwBBFKMQQSTVYVTTQQKHDEBgif##...............#ddbb#", "BBBAsgdb...fsh.#a..#dn#ysdtqqtvvBBJKMQRRTYWYVTQQMHJEBrgjfs.....#G.........bdcb#", "EBButld..bcnyGa#aGneb#yyyhittvvwBBELMQTVVWYYXTRQHKJBtqkhBy#aa..#n..na......bbba", "EDBButtgdbckxyy.#da##byyBuohvCBBBBEJMPSVYYZZYTRQMKHBvguByyGaGnbd..syna.....#bbb", "EEEBBBvpld#jgxyG.##..yyyAmofqBBBBDDJKPRTYZZZWUTRMMMJthmwyyy#adad..yynb......bdc", "JFFDDBBBqgidquuyslfruCECGzzBzEJDBDELOPUXVYWWYVTRMQQEhhhhBDCy#...#yyxfb...##bccc", "EFFFDEDCuuqqjqjqgtCvyBFFLDJJFJDEDDGHKPUUVYZWWVTTQSQPJCCCCBCBBAuxGGBhf####bcdddd", "JJJFDEEDCusqrqrrruAtDDGGDFFFHJEECJJJPQUTXWZWVYVTSQQQKDCCCCCAACBBBBuqbbb#bcdgjjd", "ELJJJHJJEDBwwvBBACDDDGGGDEEDDDEJDHJKNQUXYYZWYVVSVRRMJJCGCDBBCAussgqrjjfggjjjlgj", "LJHJHHJJJJEBBBDDDFJJJJGCCEFJJFDJNLONPQUUYZZWYYYVVUTQKJDBBBBCCBBABqAtqqqqqqqqplj", "JHHJLHJJJHGEDCDCDDJGFDDCCLJFFFFKOKMKMQUVYZZZYVXVVXUQMHGDDAACCCDBCuBvssttqqrqrgf", "GHHHHHKLKKJHGGEGFGEGDDEJJGHGHJOLPLPOMQUXYZZWWWXVVTTQQMJHEGDCCCDEEBBBBBButttthrg", "DHJMKKHJMMKKKKKKKJJJJJMJLHJJJOONPPNMPQPTYYWWYYWYYYYTSPMLONJHKKJJFFEDCBBBtttttqq", "JOLKKKKLLKKLLMMMMKMKKKKJLKJOJOKOPPPOMQTUYWYWWYYYYVVVVQMNMMMKKKKOJHJDCCBBzvtttmq", "DLKKKKMNMKMKOPNMQNPMMKKLJKPOOKMMMMMMKPRUXYZWWVVWWWXWYYQPPPPPPPNNKKLJJGCCAAAtttq", "HHHJNKKMMNPPQQQMQQPOMKOKKMPOPMPMPPPKPPQSXYWWWYYWWYYWYXTSQQQPQQQQNPOOJFGEECBtttq", "DJLLONKKPPPQNQMQQMMOMOLOKMKMMMNMPPMKLPQSXYWYVVVWZWWWVXXXUPQPQQQQNKPLJGCGECCzztq", "JJHHPNMMPPPQQQQQPPPKPPOPQPPMKMLNMQMKKMQUXYYVVVYYWYVZYXYYXSQSUQPPPKOOOGGCCCCCBtq", "FHJMMNPMMPPQPPPPPPPOPPPPPPMNPMMMMQMMNMQSTVXVVVYYWYYZWYYVYYTTSQQQQQPKKOJGGECGuut", "JLLONNMPPMPQQQQQQQPPPQPRPPPPNPNPPPPMMPQQUXUXVVVYWWWWZYYWYWYUUUPPPPPNOLGGGABAAzt", "JLJOKOLMPPPPPPPPPQPPPQQPPPNMLMPPQQMMMMQPRPTVXYWYWWYWWYWWZYRVUUSSQPOOOOGGCCCBABm", "DGKLMKKPNPQPPOPPPPQQQQQPPPOMPMMMMMMMMPPPPUXVVYYYWWWWWYWZZWVXXVRQPPPPOOGGCCBAuuu", "DDHKHKLOPPQPPOQQQPPPPPPPPPMOOPPPPPMKMMMPPUXVUVYYWYWZWVYWZYYUYUUUPPPPMLLJCCAAAuu", "DGHHHNLLNNPPPQPPPQQQQPPPPPPMPPPPPMKKLKPQUTUVXVWVYWWWYXYYWYYYYUVQQQNPMNOLCBAAuuq", "DHJHHLOLNNPPPQQQOPPPQQQPNPQMMMKPPNKKMMMPUVVVVVWVVVXXXUVVVVVVVVRUUPPQMOLGDCGBztq", "DHHHLHNNNPNPMMQPPQQPPPMPPMPPPLKMKKHKMNMPXVWVVVVVVVVVVTVVVVVVVVVTUPQPPLJJGCAAuur", "BDDGHHHLOMMPPPPPPQPQQQQQPQMMLLNNHFKKKPQUVWZWYVVVRVVUUTXVVUXVVVXVURQPNLJLGCBBttq", "CDFFFKLLKKOMPPQPPPQPQPQPQMMMHHHLLFFKMPSXYYZZWVVVRUVUPUUVVVVVVVVUTTPPLOLDDBBtttq", "BBDJDHKLKKMPMPPPPPQPPPPPQPMLLLOLGDLKMPUXVZZZWVVUUURRPPUUXVVVVVVVRUPPLOODGCBztql", "BDDHHHLHLMMMMQPPPPPQPQQPPMKKGLLKGHHHNPUYWWZZQWVVUUURQPPUUXXXVVVVUPPPNMKLCCBttqg", "BBDDJLDHLONPPQQPPQQQQQQQMMKLJLOLKKKKMMUYYWZZZWVVUVTVQPPUUXVVVVYVUPQPPKOLCCAAmqg", "wBBDFJJLKKKPPMQPPPPPPPPMPMHGJLONNNMNMPUVYZZZZQVVUUUUPPPURVVVVVWVVPPPPOOGDBBttqg", "wBBBDDDLLKKOMMQQQPQPPMMMPKOFJLMPPMMMMQUYWZZZZWYYURXUQQPUUUXUVVVUUQRPPOLGGCBztqg", "vwBBDDJLLKKKPPPPPPPPPPPPPMLDHMPPPMMMMPTYWWWZWWVWVVVVPPPURURUVVTTRQRPOLKDCCAtqkd", "uBBBCDJKJLMMNPPPPPPPPMPPPMLDKMPPMNNKNPRVYWWWWRUVVVVVPPPPQPUUVVVTRRQPOLLGDBAtqgi", "uuBBDDDGDLLMMMMNNMMPPPPPPMLLJLOLDDFHHMQURVVWVTUPUUUUPUSUQRRUVVTTRRRPPLOLDBvtqgd", "uBBBBDDELLHMMOPPPQQQQMMMMMMJDLJCrifHHMPRRUUTTNhhLPRRUUVSUUQUUTSPUSQPPLKDDBvtqfb", "AuuBCBCGFGHNNMMPPQPQQQQQMMMLDGGGhhgBKMMPRRRRRAhhCMRUUUUUQRUTSUUPUUQPPKJDDBztgdb", "BBBBBCDDGJLKMMMNPPPPPMQQNMPPNGDDCDBBDDLNNMQRMLGGGPUTTVVTTRUPUPUPPPPMPKHGCAuqgb#", "ABwBBBCDFHHHMPPPPPQPPPPMMPPPMMJEBCDEDHHHMMRRRPNKQUVVVXVVTRRRSPPUPPPPMMHGCAuqjdb", "ABBBBBCDJJLKKMNNMPMPPPMPPPPPMMLJJCEDJFHHMQTURPNPTVVVYYYYVRSUUPUPQQMQMLJEBusqibb", "AABBBBDBDDLJMMMNMMPPQPPPPMPPMMKMHJGGHMKKPTTVTTTTVVTYYVVVVUUQQQRRQQMMMLGCBuhgdcc", "wwvBBBBDDGGLHKONOMMQQQQQQQQMPPNMKKJKKQRQRUYYWXXVVVYYWVVVVVURRQQRQQPPNHFBBAqgjcd", "vvBBBBDDFFFFJONKKNMMQQQPPMMMPPNOLONKMQUSRVVYYVVVVYYYYWYVVVUUQQRPPMNMKLLDBAqjdcd", "uwwCBCBBDDJLJLKKMKMMQMQQQPPPMMMKPMPPQUVSPXYYYVXVXYYYWWYVVVXVSQQQQPPPMHHBBtqgfii", "uvBBCBDDDEJJLKKKMKPMMQPMPPPMPKPMMMMQUTTTQUXVVYYYXXYYYYYYYVVTUURQQMNMLKDBBtqjfjf", "uAABBDDBDFFHHHHLMKMPPPPMMMMMMMPKQPMQTYXUQPVVVVYWXYYYYVYYVXUUUUPPPPMPNHFButgjcfd", "vABCCBCCBDHJHLLHLMNNKMMMPMMMPMPKMPPRYYYUQPUYYYWYWYWWYWWWWVVUUUQRQQQPOLDCvtqjidf", "svBACBDEDEFFHKLGHKKMKKPMMKMKMMPMPPPUYXVUPQXYYWWWWYWYWWWYYVVTSRRPQPQQMHGCvtqjddd", "quuBBDDBDEFFHHHJLKKKMMMMMMMMMKPPPLKPVVXUPUXYYVYYYVZWWWWWWVXTRRQRQPPPMKFBAugjcfd", "quuBCBBDDFJJJOHJLOMKKNOOOKKKKKMDGAGIJNRUPQPNPRRWWWWYZWYYYVVVUQRQRPPPMKDAAmgjjjd", "kuuBBCDDFEFLKJLKMKKHHJHJHHNHBhmmmhomhGILJIIGGGGDNRVWWWWVVTXTTUPQRRPMKHDBAqgjjjb", "fsvvBBDEFDDJHHJHMKKHFFFFJHHBmoooofohhhAGGAhhAhmmGGNRVWWTRRTTTUQQSQQMPHEBuqgjdj#", ".qvBBBBEDEDDJLLKKKKKKDCwuhghfbbbffffoohhmmhhhhgoohhhBGJHHMRQUSUSURQNMKDBumgfdb.", ".mtvBBBDDDEJFHJJKKKKJGBgb#####bbbafbioohhhhfooohfffhgoihGONQQSUTUPPPKHDBvqggfb.", ".dsvBBBBFDEFFJKKKKKKDCBhf#######aa#afhfooobbohhhhohhfghmDLPQQTTUTUPMMDCBurggd#.", "..ptABBBBCDDGFFHKJJHEJEGhhbihhhhhhhhhhfhhhhhhhhhhIhhGIGOOPPPRQTUPQQQKDBAurgfd..", "..btvuBDDDDDEEEJHHFEJJEEGhohgohhhhhhhhhhhhhhhIIIGGGGCLPRPPPPQRQRRQMMKEBuuqgd#..", "...suuwBBBBBEFDDLJFEJDGEGthihoihhhhIGhhhhGGhGIGCGBGCGPUPPQPPQQQSQQMMKECutqjj...", "...fuuBBBBBBBDDFFDDEJDJGGEzhghihhhhhIhIIhhhIIIIhAAGGPUUUSPPPPPQQQPMHHEBuqgfb...", "....ptvBBBBBBBBEEEJDEJJJEJDzhohohhhhhmAIAhhhhhhhGGGOUTXTSRPPPQQQQNMJFBBtqld....", "....ksuBBBBBBBBBDDDEJGDJEJCGhohohhhhhhhmhmhhhhhAGhIQVVUUUPQPPMQQNMHKJBBtqlb....", ".....psuBBBBBBBBDDDDEGEGECEBBmgohohhhhhhmmmmmhAhmJSSUUUUTSPQQMMPMMKFEBAqgd.....", ".....#ptvvvvBBBBBBECDDDDGEDBBCthfgooohohhhhhhhgtOQRQRQPSRQPQQPMPNKFFBBtrf#.....", "......gssvvvwvBBBBEDEEEEGEDBBBBzifoooofffogohorEPQQSSUSUSUQQQNNNMKFDCusgd......", ".......essuwwwBBBCEEEEEEDEDEECCBBBBBBBBBBBBBBELMMPPQQRQRSQQQQQQMMHFBBuqf.......", ".......#lssvvvvwBBBBCDDDEEDCCCDCCDDDEJEDDEDDGJKKNPQSPUQQQQPQQNNKKHBCusl#.......", ".......#dpssvuwvBBCCDEEECEDGEEGDEEEDGEJEGEJJFJKPMQQRQQRQQQQQQMPMHJEBuqd#.......", "........#dlqsuvBBBBDDDDEEEJJDJDJJJJJJJLJJJLLOPPQQQQQSQPQQQRQMNMKFDCuqfb........", "........#bdklssuvwBBBBBEDDDEJJKOLOJKPONPPOPPPQQQQQRQSSUQQQQQQMMHFDwsf###.......", "........#bdflpqtuuBBBBBDDEJGGOKPPOKPPPPPPPPPSSSSUSSQRQRQQQQQMMKFFBAqc###.......", ".........#cdflqssswvBBCDDEEJJOOPPQPPQQQPPPUSSSXUUUVVURSURQQPMMKDBuqdb###.......", ".........#cjdfkqpqtuBBBDCDDGJNKPQQPPQQPPPPUXVXVXVXXTTTURRQQPyHDBukdccbb........", ".........#cjddflqqsvvwBDCDDGHMMPPQQPPUUPPUUXVXXXXXXXVVVTRQQQMKEwsljdbb##.......", ".........#bcdjfjfklquuBBCDDELONPQPPPPPPPPXUXVVVVVVVVTTTTRQQMHBwslfjccbb#.......", ".........bbcjdfddflqssuBBCDEJHOPPPPPPUUTUUUXVVVVVVXUUXTRQQMHBwsqgfddc###.......", ".........#bcjjldddflksuBBBBBFJJNPQPPPPPUUUUUVVVVVVXVVVVRQQHDBsqrlfddcbb#.......", ".........#bcjjlgjjjflkpsvwBBCEJOPPPPPPPPPPPUVXVVVVVVVTTRNHBxsshrrfgjcb##.......", "..........#cjdllllllflkpsuBBCDDJOMQUPUPPMMQRUVVVXVVVTTRPyBwvssqrrljjcb#........", "..........#ccdfffffjijflquvBBBCLHPPPPQPMMMPQUUUVVVVVRRRMGwutvttqrpjjcb##.......", "..........#bcjjjjgfffgddgqstuACDJLPMMPPMHHHMPRRRVVRRRPyBwuuutttrrlddc###.......", "..........#bcjjpppppffffflkqsuABDFHMPPNKHDGHMPRRRRRRMHBwwwwvutqqrfgjcb#........", "..........#bccjjpppgplpgjjglqtvBDFHyMMMHFFFJOPRRRRQNNDBBvvvuttqqlljjcbb........", "...........bccdpplpplllggflllqqsuBDFHKyDBBDDHLHMNNHFCBBBBvvvtttqlfjjcbb........", "...........bccjfgrrhppplllpgllgqqtvBDFBwuvwBBDHHGBBBBBBBBBBBttqqlpjjcbb........", "...........#bcjfprrrrplllllplllqqqtwBBwsssuBBBBBFBBBBBEBBBBBvqtrgpgdcb#........", "............bcjjjrqqqrqllllplllllqquvvvuvvvwBBBDDDCCCECCBCBAvttrpfljcb#........", "............#cjpprrhrrrrrrrrrlllqqqqttvBBBBCCCEEDEDDDDEDBBBuvtqqgpfdc##........", "............#bcprqqrrrqqqqqqqggrqqqqttvvvBBCCEBECEDEEEEDDCBvvtqqgppjc##........", "............##cjgqqqqqqqqqqqqqrrqqrqttvvvBCCEEEEEEDEEEEECGBButtqgpjjb##........", ".............#bdprtthqqhqqrqqqgqqqqqtvuwBBBBDDFDDDDDDEEEBBBAvtqqpljjb##........", ".............#bcjrttqqqmqtqqqqgqqtttuvuwBBEBEEFEEEEJDDDDCBwutttqppjcb#.........", ".............#bcjrqttttqqttrrrrtttttvvwBBCEDFEEJEEEEEEEBBBvvvttrpfjcb#.........", ".............#bcjrqttttqqttrrrrtttttvvwBBCEDFEEJEEEEEEEBBBvvvttrpfjcb#.........", ".............#bcjrqttttqqttrrrrtttttvvwBBCEDFEEJEEEEEEEBBBvvvttrpfjcb#........." }; xpat2-1.07/lib/hlpmodCanfield100644 146 144 457 5642312630 14550 0ustar mbimathopt The Rules of modified Canfield ============================== These are the rules of Canfield, with the exception that card sequences may NOT wrap on the slots (i.e. King upon an Ace), and the hand and the stock are the same pile. This variant is considerably easier than the original Canfield game. xpat2-1.07/lib/XPat.ad.Xaw100644 146 144 3141 5717753030 13653 0ustar mbimathopt! sample entries to use argv[0] as -rules argument: spider*rules: Spider gypsy*rules: Gypsy klondike*rules: Klondike seahaven*rules: Seahaven freecell*rules: Free Cell canfield*rules: Canfield XPat*beNiceToColormap: false XPat*shapeStyle: Rectangle XPat*topShadowContrast: 20 XPat*bottomShadowContrast: 40 XPat*Scrollbar*background: Gray70 XPat*Background: grey85 XPat*Foreground: black XPat*resizeToPreferred: True XPat*input: True XPat*showGrip: off XPat*shadowWidth: 2 XPat*messages.justify: Left XPat*upperbox.orientation: XtorientHorizontal XPat*lowerbox.orientation: XtorientHorizontal XPat*Tableau.keyboardFile: keys XPat*Tableau.messageFile: messages XPat*Tableau.background: LightSlateGray XPat*Tableau.arrowColor: Gold XPat*Tableau.markColor: Black XPat*Tableau.rules: Gypsy XPat*Viewport.allowHoriz: True XPat*Viewport.allowVert: True XPat*Viewport.useBottom: True XPat*Viewport.useRight: True XPat*Label.shadowWidth: 0 XPat*Label.BorderWidth: 2 XPat*Dialog*Translations: #override \n\ y: Ok()\n\ n: Cancel()\n XPat*title: XPat XPat.prompt.allowShellResize: True XPat.prompt.saveUnder: True XPat*Dialog*resizable: True XPat*Hint.Translations: #override\n\ :set()\n\ :HintNotify()unset()\n XPat*Sound.state: True XPat.help.width: 403 XPat.help.height: 200 XPat.help.title: XPat Help Window XPat.help.saveUnder: True XPat*Close Help.fromHoriz: Topic XPat*helptext*string: Please choose a topic. XPat*helptext*displayCaret: False XPat*helptext*scrollHorizontal: whenNeeded XPat*helptext*scrollVertical: whenNeeded XPat*helptext*editType: read xpat2-1.07/lib/fallback/ 40755 146 144 0 6713504126 13373 5ustar mbimathoptxpat2-1.07/lib/fallback/Background.xpm100644 146 144 10634 5550526730 16324 0ustar mbimathopt/* XPM */ static char * Background_xpm[] = { /* width height ncolors chars_per_pixel */ "64 64 2 1", /* colors */ " c #D7D7D7", ". c white", /* pixels */ " ........................................... ", ". .......................................... ", ".. ........................................ .", "... ...................................... ..", "... ..................................... ...", ".... ................................... ....", "..... .................................. ....", "...... ................................ .....", "...... ............................... ......", "....... ............................. .......", "........ ........................... ........", "......... .......................... ........", "......... ......................... .........", ".......... ....................... ..........", "........... ..................... ...........", "............ ................... ............", "............ .................. .............", "............. ................. .............", ".............. ............... ..............", "............... ............. ...............", "............... ............ ................", "................ .......... .................", "................. ......... .................", ".................. ....... ..................", ".................. ...... ...................", "................... .... ....................", ".................... .. .....................", "..................... .. .....................", "..................... .. ......................", "...................... .. .......................", "....................... .. ........................", "........................ .. ........................", "........................ .. ........................", "......................... .. .......................", "......................... .. ......................", "........................ .. .....................", "....................... .. .....................", "...................... .. ....................", "...................... .. ...................", "..................... .... ..................", ".................... ..... ..................", "................... ....... .................", ".................. ......... ................", ".................. .......... ...............", "................. ........... ...............", "................ ............. ..............", "............... ............... .............", ".............. ................. ............", "............. .................. ............", "............. ................... ...........", "............ ..................... ..........", "........... ....................... .........", ".......... ........................ .........", "......... .......................... ........", "......... ........................... .......", "........ ............................. ......", "....... .............................. ......", "...... ................................ .....", "..... .................................. ....", "..... ................................... ...", ".... .................................... ...", "... ...................................... ..", ".. ........................................ .", ". .......................................... "}; xpat2-1.07/lib/fallback/Cardback1.xpm100644 146 144 24245 6712243550 16020 0ustar mbimathopt/* XPM */ static char *Cardback0[] = { /* width height num_colors chars_per_pixel */ " 79 123 3 1", /* colors */ ". c #ffffff", "# c #474747", "a c #bebebe", /* pixels */ "...............................................................................", "...............................................................................", "...............................................................................", "...............................................................................", "...............................................................................", "........###############################################################........", ".......#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.......", "......#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#......", ".....#aa###############################################################aa#.....", ".....#aa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aa#.....", ".....#aa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aa#.....", ".....#aa#aaaa####aaaaa#####aaaaa#####aaaaa#####aaaaa#####aaaaa####aaaa#aa#.....", ".....#aa#aaa#aaaa##a##aaaaa##a##aaaaa##a##aaaaa##a##aaaaa##a##aaaa#aaa#aa#.....", ".....#aa#aa#aaaaaaa#aaaaaaaaa#aaaaaaaaa#aaaaaaaaa#aaaaaaaaa#aaaaaaa#aa#aa#.....", ".....#aa#aa#aaaaa##a#aaaaaaa#a#aaaaaaa#a#aaaaaaa#a#aaaaaaa#a#aaaaaa#aa#aa#.....", ".....#aa#aa#aaaa#aaaa##aaa##aaa##aaa##aaa##aaa##aaa##aaa##aaa##aaaa#aa#aa#.....", ".....#aa#aa#aaa#aaaaaaa###aaaaaaa###aaaaaaa###aaaaaaa###aaaaaaa#aaa#aa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaaa#aaaaa#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#aaaaa#aaaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaa#aa#aaa#aaa####aaa#aaaaaaaa#aaaaaaaa#aaa####aaa#aaa#aa#aaa#aa#.....", ".....#aa#aa#aaa#aaaaaa#aaaa#aaa#aaaaaaa#aaaaaaa#aaa#aaaa#aaaaaa#aaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#a#aa##aa#aaa##aaaa#a#aaaa##aaa#aa##aa#a#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aaaa#a#aaaa#aaaaa####aaa####aaaaa#aaaa#a#aaaa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#a#a#aaa#aaaa##aaaaaaaaaaa##aaaa#aaa#a#a#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaa#aaaaa#aa###aaaa#aaaaaaaaaaaaaaa#aaaa###aa#aaaaa#aaa#aa#aa#.....", ".....#aa#aaa#aa#aaa#aa#aaaaaaa#aaaaaaa#a#aaaaaaa#aaaaaaa#aa#aaa#aa#aaa#aa#.....", ".....#aa#aaa#a#aaaaaaa#aaaaaaa#aa##aaaa#aaaa##aa#aaaaaaa#aaaaaaa#a#aaa#aa#.....", ".....#aa#aaaa#aaaaa#aaa#aaaaaa#aa###aaa#aaa###aa#aaaaaa#aaa#aaaaa#aaaa#aa#.....", ".....#aa#aaa#a#aaaaaaa#a#aaaaa#aaaaa#aa#aa#aaaaa#aaaaa#a#aaaaaaa#a#aaa#aa#.....", ".....#aa#aaa#aa#aaa#aa#a#aaaaaa#aaaa#aa#aa#aaaa#aaaaaa#a#aa#aaa#aa#aaa#aa#.....", ".....#aa#aa#aaa#aaaaaaaa#aaaaaa#aaaa#aa#aa#aaaa#aaaaaa#aaaaaaaa#aaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#aa#aa#aaaaaa#aa#aaa#aaa#aa#aaaaaa#aa#aa#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aaaa#a#a#aaaaaaa##aaa#a#aaa##aaaaaaa#a#a#aaaa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#a#a#a#aaaaaaaaaaa##a##aaaaaaaaaaa#a#a#a#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaa#aaaaaa#aa#aaa#aaaaaaa#aaa#aaaaaaa#aaa#aa#aaaaaa#aaa#aa#aa#.....", ".....#aa#aaa#aa#aaa#aaaa#aaaa##aaaa##aaaaa##aaaa##aaaa#aaaa#aaa#aa#aaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaa#aaaaa#####aaaaaaaaa#####aaaaa#aaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaaa#aaaaa#aaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaa#aaaaa#aaaa#aa#.....", ".....#aa#aaa#a#aaaaaaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaaaaa#a#aaa#aa#.....", ".....#aa#aaa#aa#aaa#a##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##a#aaa#aa#aaa#aa#.....", ".....#aa#aa#aaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#aaaaaaaaaaaaa####aaaaaaaaaaaaaaaaaaaaaa#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaa#aaaaaaaaaaaaaaaaa#aaa#aaaaaaaaaaaaaaaaaaaaaaaaa#aaa#aa#aa#.....", ".....#aa#aaa#aa#aaa#aaaaaaaaaaaaa#aaa#a#aaaaaaaaaaaaaaaaaaa#aaa#aa#aaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaaaaaaa#aaa#aaaaaaaaaaaaaaaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaaa#aaaaa#aaaaaaaaaaaaa####aa#aa###aaaaaaaaaaaaaa#aaaaa#aaaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaaaaaaa#aaa#a#a#aaaaaaaaaaaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaa#aa#aaa#aaaaaaaaaaaaa#aaa#a#a#aaaaaaaaaaaaaaaaa#aaa#aa#aaa#aa#.....", ".....#aa#aa#aaa#aaaaaaaa#####aaaa#aaa#a#a#aaaaaaaa#####aaaaaaaa#aaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#aaa#aaaa##aaa#aaa#a#aa###aaaa##aaaa#aaa#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aaaaa#aaaaaa#aaaaaaaaaaaaaaaaaaa#aaaaaa#aaaaa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#aa#aaa##aa#aaaaaaaaaaaaaaaaa#aa##aaa#aa#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaa#aaaaaaa#aaa#aaa##aaaaaaaaaaaaa##aaa#aaa#aaaaaaa#aaa#aa#aa#.....", ".....#aa#aaa#aa#aaa#aaa#####aaaaa#############aaaaa#####aaa#aaa#aa#aaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaaaaa##aaaaaaaaaaaaa##aaaaaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaaa#aaaaa#aaaaaaaaaa#aa##aaaa#aaaa##aa#aaaaaaaaaa#aaaaa#aaaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaa##aaaaa##a#a#a##aaaaa##aaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaa#a#aaaa#a#a#a###aa##a##aa#a#a#aa##a##aa###a#a#a#aaaa#a#aaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaa##aaaaa##a#a#a##aaaaa##aaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaaa#aaaaa#aaaaaaaaaa#aa##aaaa#aaaa##aa#aaaaaaaaaa#aaaaa#aaaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaaaaa##aaaaaaaaaaaaa##aaaaaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaa#aa#aaa#aaa#####aaaaa#############aaaaa#####aaa#aaa#aa#aaa#aa#.....", ".....#aa#aa#aaa#aaaaaaa#aaa#aaa##aaaaaaaaaaaaa##aaa#aaa#aaaaaaa#aaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#aa#aaa##aa#aaaaaaaaaaaaaaaaa#aa##aaa#aa#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aaaaa#aaaaaa#aaaaaaaaaaaaaaaaaaa#aaaaaa#aaaaa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#aaa#aaaa##aaaa###aa#a#aaa#aaa##aaaa#aaa#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaa#aaaaaaaa#####aaaaaaaa#a#a#aaa#aaaa#####aaaaaaaa#aaa#aa#aa#.....", ".....#aa#aaa#aa#aaa#aaaaaaaaaaaaaaaaa#a#a#aaa#aaaaaaaaaaaaa#aaa#aa#aaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaaaaaaaaaaa#a#a#aaa#aaaaaaaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaaa#aaaaa#aaaaaaaaaaaaaa###aa#aa####aaaaaaaaaaaaa#aaaaa#aaaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaaaaaaaaaaaaaaa#aaa#aaaaaaaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaa#aa#aaa#aaaaaaaaaaaaaaaaaaa#a#aaa#aaaaaaaaaaaaa#aaa#aa#aaa#aa#.....", ".....#aa#aa#aaa#aaaaaaaaaaaaaaaaaaaaaaaaa#aaa#aaaaaaaaaaaaaaaaa#aaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#aaaaaaaaaaaaaaaaaaaaaa####aaaaaaaaaaaaa#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaa#aa#aa#.....", ".....#aa#aaa#aa#aaa#a##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##a#aaa#aa#aaa#aa#.....", ".....#aa#aaa#a#aaaaaaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaaaaa#a#aaa#aa#.....", ".....#aa#aaaa#aaaaa#aaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaa#aaaaa#aaaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaa#aaaaa#####aaaaaaaaa#####aaaaa#aaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaa#aa#aaa#aaaa#aaaa##aaaa##aaaaa##aaaa##aaaa#aaaa#aaa#aa#aaa#aa#.....", ".....#aa#aa#aaa#aaaaaa#aa#aaa#aaaaaaa#aaa#aaaaaaa#aaa#aa#aaaaaa#aaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#a#a#a#aaaaaaaaaaa##a##aaaaaaaaaaa#a#a#a#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aaaa#a#a#aaaaaaa##aaa#a#aaa##aaaaaaa#a#a#aaaa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#aa#aa#aaaaaa#aa#aaa#aaa#aa#aaaaaa#aa#aa#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaa#aaaaaaaa#aaaaaa#aaaa#aa#aa#aaaa#aaaaaa#aaaaaaaa#aaa#aa#aa#.....", ".....#aa#aaa#aa#aaa#aa#a#aaaaaa#aaaa#aa#aa#aaaa#aaaaaa#a#aa#aaa#aa#aaa#aa#.....", ".....#aa#aaa#a#aaaaaaa#a#aaaaa#aaaaa#aa#aa#aaaaa#aaaaa#a#aaaaaaa#a#aaa#aa#.....", ".....#aa#aaaa#aaaaa#aaa#aaaaaa#aa###aaa#aaa###aa#aaaaaa#aaa#aaaaa#aaaa#aa#.....", ".....#aa#aaa#a#aaaaaaa#aaaaaaa#aa##aaaa#aaaa##aa#aaaaaaa#aaaaaaa#a#aaa#aa#.....", ".....#aa#aaa#aa#aaa#aa#aaaaaaa#aaaaaaa#a#aaaaaaa#aaaaaaa#aa#aaa#aa#aaa#aa#.....", ".....#aa#aa#aaa#aaaaa#aa###aaaa#aaaaaaaaaaaaaaa#aaaa###aa#aaaaa#aaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#a#a#aaa#aaaa##aaaaaaaaaaa##aaaa#aaa#a#a#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aaaa#a#aaaa#aaaaa####aaa####aaaaa#aaaa#a#aaaa#aaaa#aa#aa#.....", ".....#aa#aa#aaaa#aa#a#aa##aa#aaa##aaaa#a#aaaa##aaa#aa##aa#a#aa#aaaa#aa#aa#.....", ".....#aa#aa#aaa#aaaaaa#aaaa#aaa#aaaaaaa#aaaaaaa#aaa#aaaa#aaaaaa#aaa#aa#aa#.....", ".....#aa#aaa#aa#aaa#aaa####aaa#aaaaaaaa#aaaaaaaa#aaa####aaa#aaa#aa#aaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaaa#aaaaa#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#aaaaa#aaaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aaa#a#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#a#aaa#aa#.....", ".....#aa#aa#aaa#aaaaaaa###aaaaaaa###aaaaaaa###aaaaaaa###aaaaaaa#aaa#aa#aa#.....", ".....#aa#aa#aaaa##aaa##aaa##aaa##aaa##aaa##aaa##aaa##aaa##aaaa#aaaa#aa#aa#.....", ".....#aa#aa#aaaaaa#a#aaaaaaa#a#aaaaaaa#a#aaaaaaa#a#aaaaaaa#a##aaaaa#aa#aa#.....", ".....#aa#aa#aaaaaaa#aaaaaaaaa#aaaaaaaaa#aaaaaaaaa#aaaaaaaaa#aaaaaaa#aa#aa#.....", ".....#aa#aaa#aaaa##a##aaaaa##a##aaaaa##a##aaaaa##a##aaaaa##a##aaaa#aaa#aa#.....", ".....#aa#aaaa####aaaaa#####aaaaa#####aaaaa#####aaaaa#####aaaaa####aaaa#aa#.....", ".....#aa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aa#.....", ".....#aa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aa#.....", ".....#aa###############################################################aa#.....", "......#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#......", ".......#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.......", "........###############################################################........", "...............................................................................", "...............................................................................", "...............................................................................", "...............................................................................", "..............................................................................." }; xpat2-1.07/lib/fallback/Cards.conf100644 146 144 26 6713477654 15350 0ustar mbimathopt79 123 1 1 0 15 0 0 0 xpat2-1.07/lib/fallback/Ranks.xpm100644 146 144 17526 6713501716 15331 0ustar mbimathopt/* XPM */ static char * Ranks_xpm[] = { /* width height num_colors chars_per_pixel */ "108 70 4 1", /* colors */ " c None", ". c black", "X c #c00000", "o c #808080", /* pixels */ " ... ..... .... XXX XXXXX XXXX .... .. ..... XXXX XX XXXXX ", " ... ....... .... XXX XXXXXXX XXXX ...... .. ....... XXXXXX XX XXXXXXX ", " o...o ... ... .. XXXXX XXX XXX XX .. .. ..... ... XX XX XXXXX XXX", " o. .o .. . .. XX XX XX X XX .. .. .... . XX XX XXXX X ", " .. .. .. .. XX XX XX XX .. .. .... XX XX XXXX ", " .o o. .. .... .. XX XX XX XXXX XX .. .. .... XX XX XXXX ", " o.o o.o ........ .. XXX XXX XXXXXXXX XX .. .. .... . XX XX XXXX X ", " o. .o ... ... .. XX XX XXX XXX XX .. .. ..... ... XX XX XXXXX XXX", " ....... .. .. .. XXXXXXX XX XX XX .. .. .. ........ XX XX XX XXXXXXXX", " ....... .. .... .. XXXXXXX XX XXXX XX .. .. .. .... .. XX XX XX XXXX XX", "o.. ..o.. .... .. XXX XXXXX XXXX XX .. .. .. .. XX XX XX XX", "o. .o... ...... ... XX XXXXX XXXXXX XXX .. .. .. .. XX XX XX XX", ".. .. ....... ...... XX XX XXXXXXX XXXXXX ...... .. ........ XXXXXX XX XXXXXXXX", ".. .. ..... .... XX XX XXXXX XXXX .... .. ........ XXXX XX XXXXXXXX", " o.... ......... ... XXXXX XXXXXXXXX XXX ..... .... XXXXX XXXX ", " ....... ......... ..... XXXXXXX XXXXXXXXX XXXXX ....... .... XXXXXXX XXXX ", "... ..... .. ... ... XXX XXXXX XX XXX XXX ... ... .. XXX XXX XX ", ".. .. ... .. .. XX XX XXX XX XX .. . ......... XX X XXXXXXXXX", " .. .. .. .. XX XX XX XX .. ......... XX XXXXXXXXX", " ..o ..o .. .. XXX XXX XX XX .. .... .. o.o XX XXXX XX XXX", " ... .. .. .. XXX XX XX XX ........ .. .. XXXXXXXX XX XX ", " ... o.o .. .. XXX XXX XX XX ... ... .. o.o XXX XXX XX XXX ", " ... .. ....o .. XXX XX XXXXX XX .. .. .. .. XX XX XX XX ", " ... .. ........ XXX XX XXXXXXXX .. .. .. o.o XX XX XX XXX ", " ... o.o .. .... XXX XXX XX XXXX .. .. .. .. XX XX XX XX ", "... .. .. ... ... XXX XX XX XXX XXX ... ... ....o XXX XXX XXXXX ", "......... .. .......XXXXXXXXX XX XXXXXXX ....... .... XXXXXXX XXXX ", "......... .. ... . XXXXXXXXX XX XXX X ..... ... XXXXX XXX ", "......... ..... .... ....XXXXXXXXX XXXXX XXXX XXXX.... .... ..... ..... XXXX XXXX XXXXX XXXXX ", "......... ....... .... o...XXXXXXXXX XXXXXXX XXXX XXXX.... .... ....... ....... XXXX XXXX XXXXXXX XXXXXXX ", ".. ...... ... .. ... XX XXXXXX XXX XX XXX o.o .. ... ...... ... XXX XX XXX XXXXXX XXX", " ... .. .. .. ... XXX XX XX XX XXX .. .. .. .... . XX XX XX XXXX X ", " ... ... ... ..... XXX XXX XXX XXXXX o.o .. .. .... XXX XX XX XXXX ", " .... ....... .... XXXX XXXXXXX XXXX .. .. ... ..... XX XX XXX XXXXX ", " ...... ..... .... XXXXXX XXXXX XXXX o.... ....... ... . XXXXX XXXXXXX XXX X ", " . ... ....... ....o X XXX XXXXXXX XXXXX .... ..... ...... XXXX XXXXX XXXXXX ", " ..... ... .. .. XXXXX XXX XX XX .... ....... .... XXXX XXXXXXX XXXX ", " .... .. .. o.o XXXX XX XX XXX ..... ... ... ... XXXXX XXX XXX XXX ", " . .... .. .. .. X XXXX XX XX XX ... .. .. .. ... XXX XX XX XX XXX ", "... ...... ... .. o.o XXX XXXXXX XXX XX XXX ... .. ... ...... .. XXX XX XXX XXXXXX XX", " ....... ....... .... .... XXXXXXX XXXXXXX XXXX XXXX...o .... ....... .........XXXX XXXX XXXXXXX XXXXXXXXX", " ..... ..... .... .... XXXXX XXXXX XXXX XXXX.... .... ..... .........XXXX XXXX XXXXX XXXXXXXXX", " ... ..... XXX XXXXX . ... .. ......... X XXX XX XXXXXXXXX", " .... ....... XXXX XXXXXXX ....... .. .........XXXXXXX XX XXXXXXXXX", " o.... ... ... XXXXX XXX XXX ... ... .. .. ... XXX XXX XX XX XXX", " .. .. .. .. XX XX XX XX .... .. o.o ... XXXX XX XXX XXX ", " o.o .. .. .. XXX XX XX XX ........ .. ... XXXXXXXX XX XXX ", " .. .. .. .. XX XX XX XX .. o.... .. ... XX XXXXX XX XXX ", " o.o .. ... ... XXX XX XXX XXX .. .. o.o ... XX XX XXX XXX ", " .. .. ........ XX XX XXXXXXXX .. .. .. ... XX XX XX XXX ", "o.o .. .... .. XXX XX XXXX XX .. .. o.. o.. XX XX XXX XXX ", "......... .. XXXXXXXXX XX .. .. .. .. XX XX XX XX ", "......... . .. XXXXXXXXX X XX .. .. ... .. .. XX XX XXX XX XX", " .. ... ... XX XXX XXX ... ... .. ..... ... XXX XXX XX XXXXX XXX", " .... ....... XXXX XXXXXXX ..... ......... ....... XXXXX XXXXXXXXX XXXXXXX ", " .... ..... XXXX XXXXX ... ......... ....o XXX XXXXXXXXX XXXXX ", "........ .. .... XXXXXXXX XX XXXX .... ..... .. .. XXXX XXXXX XX XX", "........ .. ...... XXXXXXXX XX XXXXXX ...... ....... .. .. XXXXXX XXXXXXX XX XX", ".. .. .. .. XX XX XX XX ... ...... ...o. .o XXX XXXXXX XXXXX XX", ".. .. .. .. XX XX XX XX .. .... ..o.. ..o XX XXXX XXXXX XXX", ".. .... .. .. .. XX XXXX XX XX XX .. .... .. ....... XX XXXX XX XXXXXXX ", "........ .. .. .. XXXXXXXX XX XX XX .. .. .. ....... XX XX XX XXXXXXX ", "... ..... .. .. XXX XXXXX XX XX .. ... ... o. .o XX XXX XXX XX XX ", " . .... .. .. X XXXX XX XX .. ........ o.o o.o XX XXXXXXXX XXX XXX ", " .... .. .. XXXX XX XX .. .... .. .o o. XX XXXX XX XX XX ", " .... .. .. XXXX XX XX .. .. .. .. XX XX XX XX ", " . .... .. .. X XXXX XX XX .. . .. o. .o XX X XX XX XX ", "... ..... .. .. XXX XXXXX XX XX .. ... ... o...o XX XXX XXX XXXXX ", " ....... .. ...... XXXXXXX XX XXXXXX .... ....... ... XXXX XXXXXXX XXX ", " ..... .. .... XXXXX XX XXXX .... ..... ... XXXX XXXXX XXX "}; xpat2-1.07/lib/fallback/Pictures.xpm100644 146 144 66327 5546526011 16052 0ustar mbimathopt/* XPM */ static char * Pictures_xpm[] = { "196 138 11 1", " s None c None", ". c black", "X c #FFFFD75C0000", "o c #F3CEE38DD34C", "O c #2081410330C2", "+ c #BAEABAEABAEA", "@ c white", "# c #30C2A289C30B", "$ c red", "% c #30C2C30BA289", "& c #CF3C00000000", "....................................................................................................................................................................................................", ". ..X..X.X.X.X.X.X..X..X.X..X.. .. ...X.X.X...X.X...X...X.X.X... .. ..XX.X.XX..XX.XX..XX.X.XX.. .. ...XX...X..X...X..X...XX... .", ". ..X..X.X..X..X.X.X.X.X..X.. .. ...X.X.X...X...X.X...X.X... .. ..XX.X.X..X.X.X..X.X.XX.. .. ...XX..X..X...X..X..XX... .", ". ..X..X.X.X.X.X..X..X..X.. .. . ...X.X...X.X...X...X.X... ... ..XX.XX..XX.XX..XX.XX.. .. ...XXXX..XXXXX..XXXX... .", ".. ...X..X..X..X.X.X.X..X.. .. .X. ...X.X...X...X.X...X... .... ..XX.X..X.X.X..X.XX.. ... ..................... .", "... . ..X....X......X...X.. .. ... ..................... ..... . ..XXX..XXXXX..XXX.. .... .................... .", ".X.. . ...XXXXXXXXXXXXXXX.. .. ... .................... ..... .. .................. ..... ..X.X.oooooooooooo.. .", "..X.. . . .................. .. .X. .oooooooooo.X.X.X.X. ..... .X. ................. ..X.. .X.X.X.oooo.ooooooo.. .", "...X.. .. .................. .. .X. .ooo....ooo.X.X.X.X. ..... .XX. .O.O.O.oooooooo. ...X. .X.X.X.....oooo...... .", "....X.. . .ooooooooooo.O.O.. .. ... .oo.oooo..o.X.X.X.X. ..... ..XX. .O.O.O.oo....o. ..X.. .X.X.X.ooooo.o.oooo.. .", ".XXXXX.. .ooooooooooo.O.O.O. .. ... .oo....oooo.X.X.X.X. ........XX. .O.O.O.ooo..oo. ...X. . .X.X.X......oo.o..... .", "......... ...ooo.....o.O.O.O. .. .X. .ooo..o.ooo.X.X.X.X. ..X.X.X..X. .O.O.O.oo.o.oo. ..X.. .. .X.X.X.o...ooo.o...X. .", ".XX. .oo.o.oooooo.O.O.O. .. ... .oo....oooo.X.X.X.X. ..X.X.X.X.. .O.O.O.ooo...oo. ...X. .. .X.X.X.ooo.ooo.ooo.X. .", ".XX. ....ooo....oo.O.O.O. .. .X. .ooooooooooo.X.X.X.X. ..X.X.X..X. .O.O.O.ooooooooo. ..X.. .X. .X.X.X.ooooooo.ooo.X. .", ".XX. ..oo.oo..ooo.O.O.O. ...X.X. ...ooooooooo.X.X.X.X. ........XX. .O.O.O.oo..oooooo. ...X. .X. .X.X.X.oooooooo.oo.X. .", ".XX. ...o.oo...oo.O.O.O. .. .X. .oo..oo.ooo.X.X.X.X. ..... .XX. .O.O.O.oo.ooo..o.. ..X....XX. .X.X.X.oooooo...oo.X. .", ".XX. .oo.oooooooo.O.O.O. .. ... .oooo.oo.oo.X.X.X.X. ..... .X. ..O.O.O.oooo...oo. .....XXX. .X.X.X.ooooooooooo.X. .", ".XX. .oo...oooooo.O.O.O... .. .X. .....o..ooo.X.X.X.X. ..... .. .OO..O.O.ooooooooo. . . ..X.XXX. ...X.X.X.ooo.ooooooo.X. .", ".XX. .ooo.ooooooo.O.O...O. .. ... ...ooooooo.X.X.X.X. ..... . .O..O.O.O.oooooo.... .... ..XXXX. .XX.X.X.X.oooo.....o.X.... ..", ".XX. .oooooo.oooo.O...O.O. .. ... .ooooooooo.X...X... ..... .O.O..O.O...oooooo... . .. ...X.. ....X.X...ooooo..ooo.XX.XX. ...", ".XX. .o....ooooo.O.O.O.O. .. .X. .oooooooo....X...X... ..... ...OO.O.O.O..oooooo. . . .+.. ..... .XXXX..@@..oooooooo.@.XX.X. ....", "..... .oo..ooooo..O.O.O.. .. .X. ..ooooo..X.X...X...X. ..... ..@........@.@...ooo.o. ..+......+. ...X. .@....@@@@@...ooooo.@@@.XXX.. ..X.", ".o.oo. ..ooooooo...OOO..... .. ... ............@...@... ..... .......................... . .+.. ..XX. ..@@.@@..@@@@@.......@@@.....@.. .XX.", "....oo. ...#..oooo...#........... .. .... ...@@@@@@@@@@@@@@@@@...... .............$$$$$$$$$$$$$$$$$$$.. . .. ..X.. .%..@@..@@...@@@@@@@@@...@@..@@.... .X..", ".oo.oo....##.#......######....$..... ...ooo.. ..@..@..@..@..@..@..XXXXX... ..........$...$$$.$$.$$$.$.$$$.$$.. . . ..... ...%...@@..@@@.........@@@..@@........ ....", "....oo...##...@@@.....##....#.$..#.... ..o......@@.@@@@@@@@@@@@@@@@.X...X.##.. ..........$.$..$$$...............$$.. . . ... ..X...$$..%...@@@...@@@@@@@@@...@@@.....%......X..", ".oo.o.....##..@@@@.#......##.$...#.#.... ....oo..$.....................X...X.#..#... .......#..$$$...$$$$$$$$$.$$$$$$$$$$... . .+.. ..XX..$.$..%....@@@@.........@@@@..............XX.", ".....o...##...@..@.###..###.$$$..#.#.#.... ....o...$$..##.@..@...@...@....XX.XX...##..#. ......#.#..$$$...$$..............$$..$...+...+. .....$.$$$..%.......@@@@@@@@@.........%%%%......X.", ".XX.o.#...##..@@@@..######..$.$..#......#... ..X...o.$.$.#.##.....@...@...@..XXXXX..##..##... ....##.#...$$$.$..$$.@@@.@@.@@@.$$..$@....+.+. ..XX.$..$.$..%.%.%................................", ".XX....#.##...@@@@....##...$$$$..#..#....#....XX..o.$$..######..@...@........X...X.##..##..##. ...#..#...$$.$$$...$$.@@@..@@@.$$..$$$.$.#... .....$.$.$$$..%.%.%.$...$....$..$..%%%%%%%%%%...X.", ".XX.....#.#.#.@..@.........$.$...#......#.#.@.XX...$$...###.............#....X...X.#..##..##.... ..#..#....$$$..$$$$.$$.@.@@.@.$$..$$.$$$..#.. ..XX.$..$.$.$..%.%.%.$...$.$..$................XX.", ".XX..#...###..@@@@.#......$$$$$..#.#.#...#.@@.XX...$..##.##..##.#####.#.#.##.XX.XX...##..##..##......#.....$$$$$.$$...$.@@..@@.$...$.$$.$.#..... .....$.$$$.$$.$.%.%.%.$...$.$..$...%%%%%%%%%...X..", ".XX.#.#...#...@@@@.###....$.$.$..#.#.#..##@@..XX..$..##...#.#.##.##.##...##..XXXXX.###..##......#...#......$$$$$$$$$...$.@..@.$...$$$.$.$..#.#......XX.$..$.$.$..$.%.%.%.$...$.$..$..%%%%%%%%%......", ".XX....#.....@@..@..###.$$$$$$$..#........@@@.XX....##..#..###....##..#.#..#.X...X.#...#....$$.##..#.......$$$$$$$$$$..$.@@@@.$...$$$$.$$.#..#.@........$$.$$$..$...%.%.%.$...$.$................X..", ".XX..#..#....@@@@.#...#..$.$.....#..$....@@@@.XX..###..##..###..#..###...###.X...X...#..$.$$..$.#..........$..$.$$.$....$.@@.$...$$$$$$.$..#.#.@....XX..$.$.$.$..$...%.%.%.$..$..$...............XX.", ".XX.#....#.#.@@@@..#...$$$$$$.#..#......@@..@.XX......#...#.##.#....#..#..##.XX.XX.##.$$$..$$$$.#.............$$$$$.$$..$.@@.$...$$$$$....#..#..@....X...$$$.$$.$...$%..%.%.$..$..$..%%%%%%%%%%...X.", ".XX....#..#..@..@.#.#.$.$....##..#.$....@@@@@.XX..#####.#.#..#....##.#######.XXXXX...$$.$$..$$..#...........@.@$$$$.@$...$$$$...@$$$$$..@..####..@......$.$.$.$..$..$$%..%.%.$..$...................", ".XX.#..#....@@@@@..#..$$$$$.#.#..#..$$.@@@@@..XX..##.....##.....$$.##..............$$.$$$..$..$.#..........#.#.$$$$$......$$....$$.$$.$...#..#.@.....X.$.$.$$$..$.....$%.%..%.$..$...%%%%%%%......X.", ".XX....#..#.@@@@..##.$.$...##.#...$$$$.@..@.#.XX..#..##.###...$$.$$.#..@.@.@.@.@..$.$$$.$$.$$$$.#.........#.#.#.$$@.......$$...$$$$$$$$....#.#..@...XX....$.$.$..$....$$%.%.%..$..$..............XX.", ".XX...##..#.@..@.#.#.$$$$.#.##..$$$.$.@@@@@.#.XX..#.##.##...$$.$$.$...@.@.@.@.@...$$$.$$$...$$..#........#.#.#$$$$$$......$$..$$$.$.$$....#...@..@..X..$.$$$.$$.$...$$..$%.%.%..$................X..", ".XX...#..#.@@@@@..#..$...##.#.$$..$$$.@@@@.#..XX....#.##..$$.$$.$...$..@...@...@.$$.$$$.$$.$..$.#.......#.#.#$$$$$$$$.....$$..$$$$$$$$$.#..#...@........$.$.$.$....$...$.$%.%.%......%%%%%%%%%......", ".XX...#..#.@@@@..###.$$.#.##.$$$$$$..@..@@.#..XX.....##..$.$$.$$..$$$.@...@...@.$.$$$..$$..$$$$.#......#.#.$$$$@@$$$......$$..$$$$$$$$$$.#..#...@...X..$...$$$.....$..$.$.$%.%.%...............o.X..", ".XX..##..#.@..@.###....##.#.$..$$..#.@@@@.#...XX..####...$$.$$..$$$.$..@.@.@.@..$$$.$$..$.$.$$.....@..#.#.#$$$.$.$$.$.....$$..$$$$$$.$$$..#..#...@..XX..$.$.$.$..$$..$...$.$%.%.%.....%%%%%%.....XX.", ".XX..#..#.@@@@@.####.##.##.$$$$$.#..@@@@@.#...XX........$.$$..$$$.$$$.@.@.@.@..$$.$$...$$.$$....#...@..#.#.@$@$$$$...$........$$$$.$$$$$$..#..#......X.$..$$.$..$...$.$$$.$.$%.%.%.............o..X.", ".XX..#..#.@@@@..#.###.#...$..$..#.#.@..@.#....XX..###...$$.$.$$.$$$.$.........$.$$$$.$$.$..$$$..#..@.@..#..@$@$$$$$$$.@$.....$$.$$$.$$$$$...#..#.@......$...$...$....$$..$.$.$%.%.%.................", ".XX..#..#.@..@.#.#.#...#.$.$$..#.#..@@@@.#....XX..##..$$.$$.$..$...$$..@@.@@..$$$$...$.$.$$.$...#.$.@..#...$$@.@$$$@$$@$$$....$$$$$$$$$$$$....@.#....X.$..$...$$...$..$..$..$.$%.%.%..............X.", "....................................................................................................................................................................................................", ". .. ..#...#.##.##.#. .. ..@.XX.XX.@..X.XXXX. .. .X.X.X.X.XXXXXXXXXX. .. .@@@@@.@@@.....@@.@@.@. .", ". .......#....##.#.##.. .. ...XX.o.XX..XXXXXX. .. ..X.X.X...XX..XXXXX. .. .@@.....@..@.@@.o.@@.. .", ".. .......#.#.##.###.##. .. ..XX.ooo.XX..X...X. .. ..X.X.X.X..XX...XXX. .. .@@@@.@@....@@.ooo.@@.. .", "... .. ..##.#.#.##.##.#. .. . .X.X.ooooo.X..XX..X. .. ...X.o.X.X..X...XXX. .. .@@@.@@@..@.@.ooooo.@.@. .", ".#. ..#.....##.o.##.. .. . .X..ooooooo...X.X.X. .. ..X.ooo.X.X.XXXXXXX. .. .@.........@.ooooooo..@@. .", ".#.. .. ..#..#.....oo.... .. .X. .X.@...ooo.....XXXX. .. ...ooooo.X...XX..XX. .. .@@@.@@..@......o...@..@. .", ".##. .......#.#..ooooo.ooo. .. .X. .X.@@@.oo.@@@..X.... .. .X.o...oo.....XX...X. .. .@@.@@....o.oooo.ooo....@. .", ".##. .......#.#.o....o..... .. .X. .X.....oo......XX... .. .X.ooo.ooooo...X...XX. .. ........@.oo.....o......@@. .", ".##. .. ..##...oo..oo...o. ...XXX. .X...%.ooo..oo...X.. .. .X.....oo...o..XXXXXX. .. .@@.@....oooo..oo...o....@@. .", ".##. ..#..#.oo...o.o.... .. .X. .X.X....ooo...o..XXXX. .. .X.o...ooo..oo..XX..X. .. .@@.@@..@..ooo...o.o.......@. .", ".##. .. ...#..#.ooooooo.oo.#. .. ... .X.X.oo.oooooooo...... .. .X......oo....oo..X...X. .. .........@.ooooooo.ooo.....@@. .", ".#.........#.##.oooo.o..oo.##. .. . .X.X.ooo..ooooo...X... .. .X..ooo.oooooooo..X...X. .. .@@.@..@...oooooooo.oo......@. .", ".#.#......##....ooooo..oo...##. .. . .X.X.ooo.oooooo....... .. .X..oooo.oooooooo..XXXXX. .. .@@@@.....@.ooooo..o.o..@.....@. .", ".#.##.....#..#.ooooooo.oo....##. .. .. .X.X.ooooooooo.%... .. .X...ooo.o.oooooo...X..XX. ..........@...oooooooo.oo.@.@....@@. .", "..... ...#..#.ooooooo.oo.+...##. .. .. .X.X..oo...ooo..%. .. .X....ooo..oooooo.......... .. ...@@.ooooooooooo..@......@. .", ". .. ..##.##.oooo.ooooo.++...##. .. .. .X.X...oo..ooo.%... .. .X....oooo.oooooo..#.. .. .@..@..ooo.....oo.@.@.....@. .", ". ....#......ooo....o...++...##. .. .. .X.X..%.oooooo..%%.. .. .X....oooooo.ooo........ .. ...@@@...oooo..oo...@.@.....@. .", ". ...#..#....oooo..o....++..##. .. .. .X.X..%.ooooo.%.%.%. .. .X...#.oo...oooo..@.#.... . .. .@.@.@@@..ooooooo..@.@.@....@. . .", ". ...##.##.....ooooo......+...##. .. .. .X.X.%.%.ooo.%%%.%%%. .. .X...##.ooo..ooo........... ..X.. .. ....@@@.@@..ooooo....@.@.....@@. ... .", ". ...#..#..X.X..oooo.XXX...+..##. .. .. .X....%.%...%.%.%.%.%. .. .X...#...oo.oooo..@.@.#...... .X.X. .. .@....@@@.@..oooo.@@..@.@.....@. .@.@. .", ". ...##....XXXX.......X.XXX....##. .. .. .....%%.%%%.%%%.%%%.%%%. .. .X.....@.oooooo................ .X...X... ..........@@.@....@@.@@...@....@. ...@....", ". ...#..XX.X.XXXX.X.X.XXX.XX...##. .. .. .....%.%.%.%.%.%.%.%...@. .. .X....@.@.oooo..@.@.@..##........ .X.X.X.. .@.@.........@.@@@.@...........@@. . .@.@.", ". ...##.XX......XXXXXXXX.X...%..##. . .. .. ..@@..%%%.%%%.%%%.%%..@@. .. .X...#..@.@.....@.@.@...##....... ..X..X.. ...@...@...................@.....@. ..@@.", ". ..##..XX.%%%%....X..X...%%%%.... .$. .. .....@@...%.%.%.%.%.%..@@@@@. .. .X...#...@.@.@.@.@.@..#......... .XX... .@....@.@.@.............@.@.@....@. ..@.@.", ". ...#.......%%%.%%.....%%.%%%..%.. ..$.. .. ..@.@@@@@...%%%.%%%.%%.@@.@.@@. .. .X..#.##....@.@.@....###........ ........ ..........@...@.......@...@......... .@.@.@.", ". ..##.%%%.%..%...%..$..%...%..%%%.. .$$.$$. .. ....@.@@@.%.%.%.%.%..@@@..@@@.. . .. .X.#.###.##.......##..#......#.#.. ...#..#.. .@.@.......@.@.@.@.@.@.@.@.......@... .@.@.@..", "...##..%%..%%...%...$.$...%...%%%.... ..$..X.. .. ..@..@@..@.%%.%%%.%%.@@@.@.@@@.$. ... .. .X.###...###.##.##.###..$..#.####....#####.#.......@.@.........@...@.........@.@......@.@@.@..", "...#...%.......%%%.$.$.$.%%%.......%.. .$.X.X. .. .....@..@@..%.%....@@@@@@@@@@.$. .X.X. .. ..##.##.....###.##....$$$..#.##.#.#....#.#.#...@......@.@.................@.@......%.@..@@@.@.", "..##.%.....%........$.$......%.%..%%%.. .X.XX. .. ..@....@@.@@......@@@.@.@@@@..$... ...X... .. .##.##..$$........$$$$$$...##...##..$$..#..........@...@.@.@...........@.@.@..@...%.%.@....@..", ".##..%..%.%.%.%.%....$...@@.%.....%%......X.X. .. .......@@@@.#.#.@@@@..@@@@..$..... ..$.X.X. .. .##.###.$$$.....$$$$$$$$$..####.%....$$.##.#...@...@@......@.@.@.@.@.@.@.@........%.%%..@.O..@.", ".#..%....%...%....@@...@@@@..%.%..%%..XXXX.X... .. ..$$....@@@.##.##.@..@.@@...$...$.....$$... ... .##.###.$$.......$$%%$%%$..#.#.%...#.$$.#.#.#......@..%%.%%.....@.@.@.............%.%..@.OOO...", ".#....%.%.%.%.%.%.@@@.@@@@@...%...%%......X.XXX... ..$$....@@.##.##.@@@@@@..$....$$...$...$. .$.. .##..##..$$.%......$%%%%%$........##..$$.##.#......@@.%.%.%%...........XX.....%%...%.%.@.O.O.O..", "...%...%...%...%.%.@@@...@@..%.%..%%%......XX..X.. ..@.$$.....###.###.@@@@.$..$..$$..X..$..$$...$...##.#.##.$$$.%.%....$$%%%$..%.%...#...$$$.###.......@..%%%.%%........XX.XX..%%%%%...%..@.OOO.OOO.", "..%.%.%.%.%.%.%.%..@@@...@@@.......%%%..%....XX... ....$$....###.###.@@..$.$$..$$..X.X..$.........#####.##.$$...%%.%...$$%$$..%....#.##.$$..##.......@@........@.%%....XX.XX...%..%%...%..O.O.O.O..", ".%...%...%...%...%.@..@.@..@.%..%...%..%.%...X.X.. ..$$..$$...##...##...$..$....$..X.XXX....%.@.$..##.#.#.#.$$.#...%....$$%$...%%..#.#...$$.##........@..%.@.%%%..%%%%...X..XX..%..%%.....OOO.OOO.O.", "..%.%.%.%.%.%.%.%..@...@...@...%%%....%%%.%%..X... ..$$..$$...........$..$.....$..X.XX.X.%%%%..$..###..#.#.$$..#....%...$$$...%%..#.#.#.$$.#....#...@@.%%.@.%.%.@.%..%..XX.XX..%%%......O.O.O.O.O..", "...%...%...%...%...@..@.@..@.%.%%....%.%....%..X.. ..$$$$..$..##...##.$..$...$$.$..X.X.X.X.%%%..$..#.##.###.$$...#..%%...$$$..%...#.#.#..$$.....#....@...%%..%%%.@.%..%..XX.X.......@.@.O.O.OOO.OOO.", "..%.%.%.%.%.%.%.%..@@@@.@@@@...%%..%..%%%%%%.%.... ...$$$.$..###.###..$$...$$$.$..X.X..%..%..$$...##...##..$$...#...%....$...%%..#.#..#.$$....#.#..@@....%.@...@@.%%%%.......@.@.@.@...OO.O.O.O.O..", ".%...%...%...%...%.@@@...@@@..%%%%%%%..%...%%.%... ..@..$$..$.###.###.$....$$.$.$$..@XX.%%..%%.$$..##.#.##.$$$.#..#...%...$..%.%..#.#.#..$$...#.#...@...@.%%.%%...@.....@.@.@.@......X.@...OO.OOO.O.", "..%.%.......%.%.%.%.@@@@@@@@..%%%%%%%...%%%.%%.... ..$.$$$.$..##.##.$$...$$..$..$$..X.%%%.%.%..$..##.####.$$.....#...%%..$......#.#.#.#.$$..#.#.#..@....@.%.%.%%%..@.@.@.......XXXXXX..OOO..O.O.O..", "......%%%%%%...%....@@@@.@@@..%%%%%%.%....%%.%.%.. ..$$$.$......#.##.$...$$...$$..$$..%%%%%..%.$...#...###.$$.##..#.##........%..#.#..#..$$.#.#.##......@..%.%.%.%.......XXXXXXX....X.X.O.O.OOO.OOO.", "...%%%%%%%%%%%%...%.@@@...@@..%%..%%..%....%.%.... ..$$$...$$$.#.#.....$$$$$$$$$.$$$$..%%...%.$$...#.#.##.$$..#..#...##....%.%..#.#.#.#.$$..#.###.......@.%.%.%%%..XXXXX........XX.X.X.OOO..O.O.O..", "..%%%%%%%..%%%%%%...@@.@.@.@..%%..%%.%.%...%.%.%.. ..$$$$................................%%%%%..$..##.##.#.$$.#...#.#...##..%%..#.#.#....$$.#.##.#......@..%.%%...@.X.....XXXXXXXX.X.XXX...O..OOO.O.", "...%..%%%..%%%%%%.%.@...%...@.%%%%%%%.%.%...%.%... ..$.$..$.$$$.$$$.$$$.$$$.$$$.$$$.$$$$.%%%%.$$..###.###.$$.##.#....#...##....#.#....#.$$..##.##.......@.%.%...@@.X.XXXXX......X.X.X...OO.OO.O.O..", ".%....%%%%%%%..%%%.%.@.%%%.@.@.%%%%%%%...%%..%.%.. ..$$.$.......................................$...##.##..$$....#.##...@...##....#..##..$$.###.##....@.@..%..@@@.@.X.X.....X.X..X.X..XXX.O.O...OO..", "....................................................................................................................................................................................................", ". ..X.XXXXX.XXXXX.XXXXX.XXXXX.X.. .. .X.XXXX.XXXXX.XXXXX.XXXXX.XX. .. .XXXXXXXXXXXXXXXXXXXXXXXXXXX. .. ..X.XXX.XXX.XXX.XXX.XXX.XXX.X.. .", ". ...XXXXX.XXXXX.XXXXX.XXXXX... .. ...XX...XXX...XXX...XXX..X. .. ..X..X..X..X..X..X..X..X... .. ..X.X.X.X.X.X.X.X.X.X.X.X.X.. .", ". ....X..X..X..X..X..X..X.... .. ..X.....X.....X.....X.... .. ..@.X.@&@.X.@&@.X.@&@.X.@. .. ..XXX.XXX.XXX.XXX.XXX.XXX... . .", ". ..XXXX.XXXXX.XXXXX.XXXX.. .. .X.....X.....X.....XX.. .. ..XXX&@&XXX&@&XXX&@&XXX. .. ...XXX.XXX.XXX.XXX.XXX.XX. . .", ". ....................... .. .XX.XXXXX.XXXXX.XXXX. .. .XXXX.XXXXX.XXXXX.XXXX. .. ...X.X.X.X.X.X.X.X.X.X... .. .", ". ..$.$.$.$.$.$.$.$.$.. .. .................... .. &XXX.XXXXX.XXXXX.XXX.. .. ..XX.XXX.XXX.XXX.XXX.X. .X. ..", ". ..$.$.$.$.$.$.$.$.. .. .................... .. .................... .. .............XXXX.XX.. .X. ...", ". .................. .. .O.O.O.oooooooooooo. . .. .@.@.@.@.@.@.@.@.@. .. ................X.X. .XX. .O.", ". .................. .. .O.O.O.oo....oo..... ..... .................. .. .oooooooo........XX. .X.X. ...", ". .oooooooooo.O.O.O. . .. .O.O.O.o.ooooo.oooo. ..X... .oooooooooo.X.X.X. .. .oo....oooo......... .XX..X....", ". ....ooo...o.O.O.O. ... .. .O.O.O.oo...o.....o. ..XXX.. .@XXoooXXXXo.X.X.X. .. .o.oooo.ooo.O....... ...X...XX.", ". .o...oo..oo.O.O.O. ..... .. .O.O.O.o...oo.o..oo. .XXXX.. ..@@.oXooooo.X.X.X.. .. .o....ooooo.O.O..... ...X...XX.", ". .....oo.....O.O.O. .X... .. .O.O.O.oo...o.....o. .XX.X.. .....oo....ooOXOXOX. .. .oo..o.oooo.O.O.O.O. .XX..X....", ". .oo.ooooooo.O.O.O. .X.$. .. .O.O.O.ooooooo.oooo. .XX.X.. .@...oooo..ooOXOXOX. .. .oo....ooooo.O.O.O.O.. .X.X. ...", ". .oo.ooooooo.O.O.O. .X... .. .O.O.O.ooooooo.oooo. .X.XX.. .....ooo...ooOXOXOX.. .. .oooooooooooo.O.O.O.O. .XX. .O.", ". .oo....oooo.O.O.O. .X.X. .. .O.O.O.oooooo..oooo. .X.XX.. .ooo.o.oooooooOX.XOX. .. .o.ooo.ooooooo.O.O.O.O. .X. ...", ". .ooo.oooooo.O.O.O. .X... .. .O.O.O.o.o..o.o..o.. .X.XX.. .ooo..ooooooooOX.XOX. .. ..o..oo.ooooooo.O.O.O.O. .X. ...", ". .o..o..oooo.O.O.O... .X.$. .. .O.O.O.o...ooooo.... .XX.X.. .oooo.ooooooo&@OXOXOX. .. .ooo..oooo...o.O.O.O.O. .. .O.", ". ...ooo.oooooo.O.O...O. .X... .. .O.O.O.oooo..o..ooo. .XX.X.. ..oooooooooooo&@OXOXOX.. .. .ooooooo..##..O.O.O.O. . ...", ". .OO.oo...ooo...O...O.O. .X.X. .. .O.O.O.oooooo.ooooo. .XX.X.. ..@.oo..o..oooo&@@OXOXOX.. .. ...oooo..#..#.O.O.O.O. . ...", ". .O...oooo...OO.O.O.O... .X... .. ..O.O.O.ooooo...oooo... .XX.X.. &@@..oooo.ooooo&@&&XXOXOX. .. .. ..ooooo.#.#.#.O.O.O.O.. .O.", ". ..@OOOO....OO..O.O.O.... .X.$. .. .O.O.O.O..ooooooooooo..O. .X.XX.. .@@.@.oooXXXoooo&@&XX.@.@O .. ..$. .. . .ooooo.o.#.##.#.#.#.#.O. ...", ". ...@..OOO.....OOOO.OOO.@@.. .X... .. .O.O.O.O.O..o.o.o.o..O.O. .X.XX.. ....@@&oooooooo&@.@... . .. .$.$.#. .O.O.o.o.O.O.#.....................", ". ...@@.@.@@..@@...........@.@.. .X.X. .. ...O.O.O...OO.O...O.OO.O. .X.XX.. ..@.@..@&o&o&o&o&@.@..@@. .. ..$.$.#. ...O.O.O.O.O.O......###..###..###.##..", ". .......@@@.@.@.@@@.@@@.@@@.@@@... .X... .. .......................... .X..X.. ..@@@.@.@&@&%&%&@&@...@@.@. .. .$.$..#......O.O.O.O.O.O.#.#..#.#..#.#..#.##...", ". ..........@.@@@..@.@@@.@@@.@@@.......X.$. .. ....$.%%%%%%%%%%%%%%%%%%.$$$... .X..X.. ......@&@@..@&%%%%%&%.@..@...... .. .$.#..#.#....X...........###..###..###..##....", ". ..........%....@.@@.@@.@@@.@@@.....%...X... .. ..$$..$....................$$$.%. .X..X.. ....%%..@.@.@@..%%...%%%.....@..@@. .. ...#.##.X..XXX...............................", ". .............%.%..@.@@.@@@.@@@.....%%....X.X. .. .....$$$$$.@.@.@.@.@.@.@.@....$.%.%..XX.... ...%.%&&%.@....@@....@.....@..@.@.@...... .. ...##..#.XX.XXX....@....$$$$$$$$$$$$$$........", "............%.....%.%..@@..@@@.....%%%..%%.X... .. ...%%...$$..$.................$..$.%.%..XX.....%.%&%%&&%%..@....@@......@@@....@...%%%... .. .##..#..#..XX$XXX..@.@..................#####..", "........%%..%..%%..%.%...@@.......%%%..%%..X.$. .. ..%...%%...$..$.###############.$$$$.%.%..XX....%&%&%%&%%&%..@.@.@..@@@@@@@..@.@.@..%&&%%%... ....##..##....XX$$XX...@...###..###..@@@....#..#..", ".%.....%%%..%..%%%..%....%.....%%%%%....%%.X... ....%%%...%%..$$.$.###XX#####XXX#.$.$$.%.%.%.XXX....%&%%&%&%%&%.....@.@.......@.@.....%%%%&&%%%.....#..##...$$$..X$$$X........#..#.#..@.@......#.#..", ".%.....%....%....%.%.%...%%%%%%%%%%...%%%..X.X.......%%%...%...$$$$.#XXX####X####.$..$.%.%.%.XXX...%&%%&&%&&%%..%.@.@...@.@.@...@.@...%%%&%%&&%%%...#..#..$$$....X$$$X.....#.#..###..@@...@.@...##..", ".%....%....%%%....%.%.%..%%%...%%%...%%....X..........%%%...%%.$..$.##XXXXXXX####.$..$.%.%.%.XXX....%%&%%&%%&%%..%..@.@.@...@.@....%..%%&%&%%%...%..##..$$$....#.XX$$X...##..#.......@.@...@.....#..", ".%.......%%...%%.....%...%%%...%%%....%%...X.$....%%...%%.%.%%.$..$.###XXXXXXX##.$$$$.%.%%.%.XXX......%.%%&&%&%.%&%.....@.@.@.....%.%.%&%%%&%..%%...##.$$....#..#.XX$XX...#.##..@.@.@.@.#.@.@.@.....", ".%......%.......%...%.%..%..%.%..%..%%%....X......%%%....%.%...$$.$.#XX#XXXXXX##.$.$$.%.%.%..XXX...%.%...%%&%&&%&&&%..%.......%..%....%%&%&%%.%%%...#.$$....###.#.XXXXX..@..#..@.@.@..@.##...@......", ".%.....%...%.%...%...%.%.%...%.....%%......X.X.....%%%..%.%.%%%.$$$.####X###X#X#.$..$.%.%.%..XXX...%%&%...%%&%%&&%&%%.%%%%.%%%%..%%.%.%&%&%%..%&%....$$..@.#.#..#.XX.XX..@@...@.@.......##..@.@.@...", ".%....%...%...%...%.%.%..%..%.%....%%%.....X........%%...%...%%.$$$$.##X###X##X#.$..$.%.%.%..XX.....%%.....%%..%&%%.%.%&%&X&%&%.%.%.%..%&%.%.%%&%...$$..@.###...#.XX..X....@.@.@..##...##.#....@....", ".........%.%.%.%...%.%.%.%%%%.%%%...%......X.$.......%.%%.....%.$..$.###########.$$$.%.%%.%..XX....%&%%........%&%....%%&X&X&%%....%..%&%%...%&&%...$..@.#.#.@..#.X.....@.@.@.@.@.##.#.##.##..@.@.@.", "...%....%...%...%...%.%..%%%...%%..%%......X......%.....%.%.....$..$............$.$$.%.%.%...XX....%%&%...%.%%..%&ooo.%%%&X&%%%.%.%...%&%%..%%&&%.....@.###.@....#.X..X..@.@.@.@..####.#...##....@..", "..%.....%%.%.%.%%..%.%......%%%%..%%.......X.X....%%...%.%%%....$$.$............$..$.%.%.%..........%%%..%&%&%...oo....%%%&%%%%.%.%%..%%....%&&&%....@.#.#.@.....#.XX.X.@.@.@.@.@.#.#.#.#.#.#.@.@.@.", ".%%.......%%.%%...%...##.##..%%%..%%.......X......%%.....%%%%....$$$..%.%.%.%.%.$..$.%.%.%.ooo.oo..%%%...%%&%...ooooooo.%&X&%%...%&%..%&%%.%%&%%%...@.###.@@.....#.XXXX..........@..#.#.#.#.##.@....", ".%%%.............%..####.####.%%...%.........ooo.......o.%%%.....$$$$.%.%.%.%.%.$$$....%.%..........%&%..%&%&%..ooo.....%%&%%%..%&&&%.%%%..%&%%......#.#.@....@..#.XX.X.@.@.@.@.......#.##...##.@.@.", ".%%.........%%..%%..#..#.#..#..%..%%.....ooo......ooo.o...%....%.$..$..%.%.%.%.%.$$.%%%..%%.o.ooo..%&%%...%%%...ooooooo.%&%&%%..%%&%.%%%%.%%%....%..###.@....@@..#.X..X..........#..#.#..##.#.##.@..", ".%..........%.%..%.##..###..##.%..%......o...ooo........o.....%%.$..$...%%%..%.%..$.%%%.%.%........%%%...%.%.%..ooo.....%%%%%%.%.%&%.%%%..%....%%%...#.@.@@...@..#......@..@..@@.#.##.#..##.#.##..@.", ".....%%......%%..%.#####.#####.%..%%.....o........ooo.o..o...%%%.$$.$....%...%.%..$....%.%..o.ooo...%.%....%...%.oooooo.%%.%%%....%%.%%......%%%....@.@.@.@@.....#.X..X..@@.@@...###.#....##...##..."}; xpat2-1.07/lib/fallback/Suits.xpm100644 146 144 35707 6713501306 15356 0ustar mbimathopt/* XPM */ static char * Suits_xpm[] = { /* width height num_colors chars_per_pixel */ "168 88 3 1", /* colors */ " c None", ". c #c00000", "X c black", /* pixels */ " . ", " ... ", " X ... ", " X ..... ", " XXX ....... ", " XXX ....... ", " XXXXXXX XXXXX ......... ", " XXXXXXXXXXX XXXXX ...... ...... ........... ", " XXXXXXXXXXX XXXXXXX .......... .......... ............. ", " XXXXXXXXXXXXX XXXXXXXXX ............ ............ ............... ", " XXXXXXXXXXXXX XXXXXXXXXXX .............. .............. ............... ", " XXXXXXXXXXXXXXX XXXXXXXXXXXXX ............... ............... ................. ", " XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX ................................. ................... ", " XXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX ................................. ....................... ", " XXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX ................................... ......................... ", " XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX ................................... ........................... ", " XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXX ................................... ............................. ", " XXXX XXXXXXXXXXX XXXX XXXXXXXXXXXXXXXXXXXXXXXXXXX ................................. ................................. ", " XXXXXXXX XXXXXXXXX XXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX ................................. ................................... ", " XXXXXXXXXXX XXXXXXX XXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ................................. ....................................... ", " XXXXXXXXXXXX XXXXX XXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ............................... ......................................... ", " XXXXXXXXXXXXXX XXX XXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ............................. ....................................... ", " XXXXXXXXXXXXXXX X XXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ........................... ................................... ", " XXXXXXXXXXXXXXXX XXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ......................... ................................. ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ......................... ............................. ", " XXXXXXXXXXXXXXXX XXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ....................... ........................... ", " XXXXXXXXXXXXXXX X XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX X XXXXXXXXXXXXXXX ..................... ......................... ", " XXXXXXXXXXXXXX X XXXXXXXXXXXXXX XXXXXXXXXXXXXX X XXXXXXXXXXXXXX ................... ....................... ", " XXXXXXXXXXXX X XXXXXXXXXXXX XXXXXXXXXXXX X XXXXXXXXXXXX ................. ................... ", " XXXXXXXXXXX X XXXXXXXXXXX XXXXXXXXXXX X XXXXXXXXXXX ............... ................. ", " XXXXXXXX X XXXXXXXX XXXXXXXXX XXX XXXXXXXXX ............. ............... ", " XXXX X XXXX XXXXX XXX XXXXX ............. ............... ", " X XXX ........... ............. ", " XXX XXX ......... ........... ", " XXX XXX ......... ......... ", " XXX XXXXX ....... ....... ", " XXX XXXXX ..... ....... ", " XXXXX XXXXX ... ..... ", " XXXXX XXXXX ... ... ", " XXXXXXX XXXXXXX . ... ", " XXX XXX XXX XXX . . ", " . X X X X . . ", " X ... XXX XXX . ... ", " X ... XXX XXX ... ... ", " XXX XXX ..... X XXX ..... ..... ", " XXXXX XXX ..... ..... ....... X X ..... ....... ", " XXXXXXX XXXXX ....... ....... ......... XXXX X XXXX XXXX X XXXX ....... ......... ", " XXXXXXX XXXXXXX ................. ........... XXXXXX X XXXXXX XXXXXX X XXXXXX ......... ........... ", " XXXXXXX XXXXXXXXX ................. ............. XXXXXXXX X XXXXXXXX XXXXXXX X XXXXXXX ........... ............. ", " XXXXXXX XXXXXXXXXXXXX ................. ............... XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX ............. ............... ", " XXXX XXXXX XXXX XXXXXXXXXXXXXXX ................. ................... XXXXXXXX X XXXXXXXX XXXXXXXXXXXXXXXXX ............... ................... ", " XXXXXX XXX XXXXXX XXXXXXXXXXXXXXXXX ............... ..................... XXXXXX XXX XXXXXX XXXXXXXXXXXXXXXXX ............... .....................", " XXXXXXXX X XXXXXXXX XXXXXXXXXXXXXXXXX ............... ................... XXXX XXXXX XXXX XXXXXXXXXXXXXXX ................. ................... ", " XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX ............. ............... XXXXXXX XXXXXXXXXXXXX ................. ............... ", " XXXXXXXX X XXXXXXXX XXXXXXX X XXXXXXX ........... ............. XXXXXXX XXXXXXXXX ................. ............. ", " XXXXXX X XXXXXX XXXXXX X XXXXXX ......... ........... XXXXXXX XXXXXXX ................. ........... ", " XXXX X XXXX XXXX X XXXX ....... ......... XXXXXXX XXXXX ....... ....... ......... ", " X X ..... ....... XXXXX XXX ..... ..... ....... ", " X XXX ..... ..... XXX XXX ..... ", " XXX XXX ... ... X ... ", " XXX XXX . ... X ... ", " X X X X . . . ", " ", " . XXX XXX . . ", " X ... X X ... ... ", " XXX XXX .... .... ..... X X ... ..... ", " XXXXX XXXXX ........... ....... XXX X XXX XXX X XXX ..... ....... ", " XXXXX XXXXXXX ........... ......... XXXXX X XXXXX XXXXXXXXXXX ....... ......... ", " X XXX X XXXXXXXXX ........... ........... XXXXXXXXXXXXX XXXXXXXXXXX ......... ........... ", " XXXX X XXXX XXXXXXXXXXX ........... ............. XXXX X XXXX XXXXXXXXXXX ........... ............. ", " XXXXXXXXXXXXX XXXXXXXXXXX ......... ........... X XXX X XXXXXXXXX ........... ........... ", " XXXXX X XXXXX XXXXXXXXXXX ....... ......... XXXXX XXXXXXX ........... ......... ", " XXX X XXX XXX X XXX ..... ....... XXXXX XXXXX ........... ....... ", " X X ... ..... XXX XXX .... .... ..... ", " X X ... ... X ... ", " XXX XXX . . . ", " ", " . . ", " X . X X . . ", " XXX X ... ... ... X X ... ... ", " XXX XXX ......... ..... XXX X XXX XXX X XXX ..... ..... ", " XXX XXXXX ......... ....... XXXXXXXXX XXXXXXXXX ....... ....... ", " XXX X XXX XXXXXXXXX ......... ........... XXX X XXX XXXXXXXXX ......... ........... ", " XXXXXXXXX XXXXXXXXX ....... ....... XXX XXXXX ......... ....... ", " XXX X XXX XXX X XXX ..... ..... XXX XXX ......... ..... ", " X X ... ... XXX X ... ... ... ", " X X . . X . ", " . . "}; xpat2-1.07/lib/XPat.ad.Xview100644 146 144 3141 5717753030 14216 0ustar mbimathopt! sample entries to use argv[0] as -rules argument: spider*rules: Spider gypsy*rules: Gypsy klondike*rules: Klondike seahaven*rules: Seahaven freecell*rules: Free Cell canfield*rules: Canfield XPat*beNiceToColormap: false XPat*shapeStyle: Rectangle XPat*topShadowContrast: 20 XPat*bottomShadowContrast: 40 XPat*Scrollbar*background: Gray70 XPat*Background: grey85 XPat*Foreground: black XPat*resizeToPreferred: True XPat*input: True XPat*showGrip: off XPat*shadowWidth: 2 XPat*messages.justify: Left XPat*upperbox.orientation: XtorientHorizontal XPat*lowerbox.orientation: XtorientHorizontal XPat*Tableau.keyboardFile: keys XPat*Tableau.messageFile: messages XPat*Tableau.background: LightSlateGray XPat*Tableau.arrowColor: Gold XPat*Tableau.markColor: Black XPat*Tableau.rules: Gypsy XPat*Viewport.allowHoriz: True XPat*Viewport.allowVert: True XPat*Viewport.useBottom: True XPat*Viewport.useRight: True XPat*Label.shadowWidth: 0 XPat*Label.BorderWidth: 2 XPat*Dialog*Translations: #override \n\ y: Ok()\n\ n: Cancel()\n XPat*title: XPat XPat.prompt.allowShellResize: True XPat.prompt.saveUnder: True XPat*Dialog*resizable: True XPat*Hint.Translations: #override\n\ :set()\n\ :HintNotify()unset()\n XPat*Sound.state: True XPat.help.width: 403 XPat.help.height: 200 XPat.help.title: XPat Help Window XPat.help.saveUnder: True XPat*Close Help.fromHoriz: Topic XPat*helptext*string: Please choose a topic. XPat*helptext*displayCaret: False XPat*helptext*scrollHorizontal: whenNeeded XPat*helptext*scrollVertical: whenNeeded XPat*helptext*editType: read xpat2-1.07/lib/XPat.ad.Xlib100644 146 144 3141 5717753030 14012 0ustar mbimathopt! sample entries to use argv[0] as -rules argument: spider*rules: Spider gypsy*rules: Gypsy klondike*rules: Klondike seahaven*rules: Seahaven freecell*rules: Free Cell canfield*rules: Canfield XPat*beNiceToColormap: false XPat*shapeStyle: Rectangle XPat*topShadowContrast: 20 XPat*bottomShadowContrast: 40 XPat*Scrollbar*background: Gray70 XPat*Background: grey85 XPat*Foreground: black XPat*resizeToPreferred: True XPat*input: True XPat*showGrip: off XPat*shadowWidth: 2 XPat*messages.justify: Left XPat*upperbox.orientation: XtorientHorizontal XPat*lowerbox.orientation: XtorientHorizontal XPat*Tableau.keyboardFile: keys XPat*Tableau.messageFile: messages XPat*Tableau.background: LightSlateGray XPat*Tableau.arrowColor: Gold XPat*Tableau.markColor: Black XPat*Tableau.rules: Gypsy XPat*Viewport.allowHoriz: True XPat*Viewport.allowVert: True XPat*Viewport.useBottom: True XPat*Viewport.useRight: True XPat*Label.shadowWidth: 0 XPat*Label.BorderWidth: 2 XPat*Dialog*Translations: #override \n\ y: Ok()\n\ n: Cancel()\n XPat*title: XPat XPat.prompt.allowShellResize: True XPat.prompt.saveUnder: True XPat*Dialog*resizable: True XPat*Hint.Translations: #override\n\ :set()\n\ :HintNotify()unset()\n XPat*Sound.state: True XPat.help.width: 403 XPat.help.height: 200 XPat.help.title: XPat Help Window XPat.help.saveUnder: True XPat*Close Help.fromHoriz: Topic XPat*helptext*string: Please choose a topic. XPat*helptext*displayCaret: False XPat*helptext*scrollHorizontal: whenNeeded XPat*helptext*scrollVertical: whenNeeded XPat*helptext*editType: read xpat2-1.07/lib/help.Oonsoo100644 146 144 1333 6123004562 14051 0ustar mbimathopt The Rules of Oonsoo =================== Although the idea of Oonsoo is quite similar to the idea of Spider, it may be a bit confusing in the beginning, since in Oonsoo, you have to stack cards of the same rank. Oonsoo is played with 48 cards, giving 12 piles of 4 cards each to build. You may only move cards of suit club to empty spaces. The suits in descending order are Clubs, Spades, Hearts, Diamonds. You may only move cards of lower suit onto higher ones, thus the six of hearts may be placed upon the six of clubs and on the six of spades, but on no other card. If you are interested in Oonsoo, please try also the Oonsoo implementation of Bradford W. Mott (bwmott@eos.ncsu.edu), which features special card graphics. xpat2-1.07/lib/help.BlueMoon100644 146 144 2332 6531346104 14321 0ustar mbimathopt The Rules Of Blue Moon ====================== Blue Moon uses a standard 52-card deck (no jokers). To begin the game the deck is shuffled, then dealt face-up, one card at a time, into four rows of thirteen cards each (using all the cards). Then, the aces are moved to the left of the rows, one on every row, creating a tableau of fourteen by four cards with four randomly placed empty spaces. The object of the game is to build a sequence of cards on the aces, in ascending order. This is done by moving cards to empty slots. A card may only be moved into an empty space if it's the same suit as, and the next in rank of the card immediately left of the space. (This means no cards may be placed to the right of a king.) When the game is stuck, the cards that aren't in a sequence built from an ace can be removed, reshuffled and then played onto the tableau again, leaving an empty space to the right of each existing sequence, making fourteen spaces on each row again. The game is won if all four sequences are completed. The scoring is simple: two points for each card that is connected to a sequence, and an extra point for each complete sequence, making a total of a hundred points, and a deduction of ten points for every deal. xpat2-1.07/lib/de_DE120777 146 144 0 7201330414 13774 2german/ustar mbimathoptxpat2-1.07/lib/XPat.ad.XQt100644 146 144 0 6712671576 13551 0ustar mbimathoptxpat2-1.07/lib/PySol-large/ 40755 146 144 0 6717363436 14005 5ustar mbimathoptxpat2-1.07/lib/PySol-large/COPYRIGHT100644 146 144 713 6651441001 15334 0ustar mbimathoptThis PySol cardset was adapted from images contributed by Fabio Bozzetto. Copyright (C) 1998 Fabio Bozzetto Copyright (C) 1998 Markus F.X.J. Oberhumer This cardset is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. xpat2-1.07/lib/PySol-large/Makefile100644 146 144 1643 6717363170 15541 0ustar mbimathopt# Time-stamp: <15 May 99 23:26:16 Michael Bischoff> # Makefile to convert nice card sets from pysol-2.0.2 for xpat # requires gnu make, the pnm-tools, and (of course) the great cards from pysol, # found at ftp://ftp.metalab.unc.de/pub/Linux/games/solitaire PYSOLCARDDIR = /usr/games/lib/pysol-cardsets-2.02/data/cardset-pysol-large CARDBACK = back11 all: cp -p ../dummy.xpm Ranks.xpm cp -p ../dummy.xpm Suits.xpm giftopnm $(PYSOLCARDDIR)/$(CARDBACK).gif | ppmtoxpm > Cardback1.xpm ../docvt $(PYSOLCARDDIR) 01 Ace ../docvt $(PYSOLCARDDIR) 02 Deuce ../docvt $(PYSOLCARDDIR) 03 Three ../docvt $(PYSOLCARDDIR) 04 Four ../docvt $(PYSOLCARDDIR) 05 Five ../docvt $(PYSOLCARDDIR) 06 Six ../docvt $(PYSOLCARDDIR) 07 Seven ../docvt $(PYSOLCARDDIR) 08 Eight ../docvt $(PYSOLCARDDIR) 09 Nine ../docvt $(PYSOLCARDDIR) 10 Ten ../docvt $(PYSOLCARDDIR) 11 Jack ../docvt $(PYSOLCARDDIR) 12 Queen ../docvt $(PYSOLCARDDIR) 13 King xpat2-1.07/lib/PySol-large/README100644 146 144 157 6717363436 14745 0ustar mbimathoptWith the supplied Makefile, you can populate this directory with the nice cards from the pysol solitaire game. xpat2-1.07/lib/PySol-large/Cards.conf100644 146 144 26 6717354764 15747 0ustar mbimathopt71 107 1 1 0 15 0 0 0 xpat2-1.07/lib/PySol-large/Empty.Clubs.xpm100644 146 144 17755 6717360246 17030 0ustar mbimathopt/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "71 107 2 1", /* colors */ " c #000000", ". c None", /* pixels */ "..... .....", "... ............................................................. ...", ".. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..", ". ................................................................... .", ". ... ....... ....... ....... ....... ....... ....... ....... ....... .", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " ....... ....... ....... ....... ....... ....... ....... ....... .... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " .... ....... ....... ....... ....... ....... ....... ....... ....... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " ....... ....... ....... ....... ....... ....... ....... ....... .... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " .... ....... ....... ....... ....... ....... ....... ....... ....... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " ....... ....... ....... ....... ....... ....... ....... ....... .... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " .... ....... ....... ....... ....... ....... ....... ....... ....... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " ....... ....... ....... ....... ....... ....... ....... ....... .... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ................................ ................................ ", " .... ....... ....... ....... . ..... ....... ....... ....... ", " ............................. ............................. ", " .. ... ... ... ... ... ... . . ... ... ... ... ... ... .. ", " ........................... ........................... ", " ....... ....... ....... .. ...... ....... ....... .... ", " .......................... .......................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... .. ", " .......................... .......................... ", " .... ....... ....... ..... . ....... ....... ....... ", " .......................... .......................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ........................... ........................... ", " ....... ....... ....... ... ....... ....... ....... .... ", " ...................... .. .. ...................... ", " .. ... ... ... ... . . . . ... ... ... ... .. ", " ................... .. .. ................... ", " .... ....... ..... .. . . ....... ....... ", " ................. . . ................. ", " .. ... ... ... .. . . .. ... ... ... .. ", " ................ ................ ", " ....... ....... ... ....... .... ", " ................ ................ ", " .. ... ... ... . . ... ... ... .. ", " ................ ................ ", " .... ....... .... . ....... ....... ", " ................. . . ................. ", " .. ... ... ... ... .. .. ... ... ... ... .. ", " ................... .. ... ................... ", " ....... ....... ... ... .... ....... ....... .... ", " ...................... ..... ..... ...................... ", " .. ... ... ... ... ... ... ... . . ... ... ... ... ... ... ... .. ", " ............................... ............................... ", " .... ....... ....... ....... .. ...... ....... ....... ....... ", " .............................. .............................. ", " .. ... ... ... ... ... ... .. .. ... ... ... ... ... ... .. ", " ..................................................................... ", " ....... ....... ....... ....... ....... ....... ....... ....... .... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " .... ....... ....... ....... ....... ....... ....... ....... ....... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " ....... ....... ....... ....... ....... ....... ....... ....... .... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " .... ....... ....... ....... ....... ....... ....... ....... ....... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " ....... ....... ....... ....... ....... ....... ....... ....... .... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " .... ....... ....... ....... ....... ....... ....... ....... ....... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " ....... ....... ....... ....... ....... ....... ....... ....... .... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " .... ....... ....... ....... ....... ....... ....... ....... ....... ", " ..................................................................... ", ". . ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . .", ". ................................................................... .", ".. ...... ....... ....... ....... ....... ....... ....... ....... .. ..", "... ............................................................. ...", "..... ....." }; xpat2-1.07/lib/PySol-large/Empty.Diamonds.xpm100644 146 144 20022 6717362157 17476 0ustar mbimathopt/* XPM */ static char *Empty[] = { /* width height num_colors chars_per_pixel */ " 71 107 3 1", /* colors */ ". c #000000", "# c red", "a c None", /* pixels */ "aaaaa.............................................................aaaaa", "aaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aaa", "aa..aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa..aa", "a.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.a", "a.aaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.a", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", "..aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa..", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", "..aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa..", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", "..aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa..", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", "..aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaa#a.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa..", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.a#####a.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", "..aaaaaaa.aaaaaaa.aaaaaaa.aaaaaa#######aa.aaaaaaa.aaaaaaa.aaaaaaa.aaaa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa#########aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaa###########aaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aaaa.aaaaaaa.aaaaaaa.aaaaaaa#############aaa.aaaaaaa.aaaaaaa.aaaaaaa..", ".aaaaaaaaaaaaaaaaaaaaaaaaaaa###############aaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa#################aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaa###################aaaaaaaaaaaaaaaaaaaaaaaaa.", "..aaaaaaa.aaaaaaa.aaaaaaa#####################aaa.aaaaaaa.aaaaaaa.aaaa.", ".aaaaaaaaaaaaaaaaaaaaaaa#######################aaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa#########################aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaa###########################aaaaaaaaaaaaaaaaaaaaa.", ".aaaa.aaaaaaa.aaaaaaa#############################aaa.aaaaaaa.aaaaaaa..", ".aaaaaaaaaaaaaaaaaaa###############################aaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.a#############################a.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaa###########################aaaaaaaaaaaaaaaaaaaaa.", "..aaaaaaa.aaaaaaa.aaaaa#########################a.aaaaaaa.aaaaaaa.aaaa.", ".aaaaaaaaaaaaaaaaaaaaaaa#######################aaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.a#####################a.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaa###################aaaaaaaaaaaaaaaaaaaaaaaaa.", ".aaaa.aaaaaaa.aaaaaaa.aaaaa#################a.aaaaaaa.aaaaaaa.aaaaaaa..", ".aaaaaaaaaaaaaaaaaaaaaaaaaaa###############aaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.a#############a.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaa###########aaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", "..aaaaaaa.aaaaaaa.aaaaaaa.aaaaa#########a.aaaaaaa.aaaaaaa.aaaaaaa.aaaa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.#######.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaa#####aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa..", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa#aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", "..aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa..", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", "..aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa..", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", "..aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa..", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", "..aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa..", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", "a.a.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.a.a", "a.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.a", "aa.aaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aa.aa", "aaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aaa", "aaaaa.............................................................aaaaa" }; xpat2-1.07/lib/PySol-large/Empty.Hearts.xpm100644 146 144 20022 6717362136 17163 0ustar mbimathopt/* XPM */ static char *Empty[] = { /* width height num_colors chars_per_pixel */ " 71 107 3 1", /* colors */ ". c #000000", "# c red", "a c None", /* pixels */ "aaaaa.............................................................aaaaa", "aaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aaa", "aa..aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa..aa", "a.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.a", "a.aaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.a", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", "..aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa..", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", "..aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa..", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", "..aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa..", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", "..aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aaaa.aaaaaaa.aaaaaaa.aa######aaaaaaa.aaa######aaaaaa.aaaaaaa.aaaaaaa..", ".aaaaaaaaaaaaaaaaaaaaa##########aaaaaaa##########aaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.a############aa.aa############a.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaa##############aaa##############aaaaaaaaaaaaaaaaaaa.", "..aaaaaaa.aaaaaaa.a###############aaa###############aaaaa.aaaaaaa.aaaa.", ".aaaaaaaaaaaaaaaaaa################a################aaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aa#################.#################aa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaa###################################aaaaaaaaaaaaaaaaa.", ".aaaa.aaaaaaa.aaaa###################################.aaaaaaa.aaaaaaa..", ".aaaaaaaaaaaaaaaaa###################################aaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aa###################################aa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaa###################################aaaaaaaaaaaaaaaaa.", "..aaaaaaa.aaaaaaa.###################################aaaa.aaaaaaa.aaaa.", ".aaaaaaaaaaaaaaaaa###################################aaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa#################################aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaa#################################aaaaaaaaaaaaaaaaaa.", ".aaaa.aaaaaaa.aaaaaa###############################aa.aaaaaaa.aaaaaaa..", ".aaaaaaaaaaaaaaaaaaaa#############################aaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aa###########################aa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaa#########################aaaaaaaaaaaaaaaaaaaaaa.", "..aaaaaaa.aaaaaaa.aaaaaa#######################aa.aaaaaaa.aaaaaaa.aaaa.", ".aaaaaaaaaaaaaaaaaaaaaaaa#####################aaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aa###################aa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaa#################aaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aaaa.aaaaaaa.aaaaaaa.aaaaaa###############aa.aaaaaaa.aaaaaaa.aaaaaaa..", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaa#############aaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aa###########aa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", "..aaaaaaa.aaaaaaa.aaaaaaa.aaaaaa#######aa.aaaaaaa.aaaaaaa.aaaaaaa.aaaa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa###aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaa#a.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa..", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", "..aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa..", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", "..aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa..", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", "..aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa..", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", "..aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aa.", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", ".aaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa..", ".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.", "a.a.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.aaa.a.a", "a.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.a", "aa.aaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aaaaaaa.aa.aa", "aaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aaa", "aaaaa.............................................................aaaaa" }; xpat2-1.07/lib/PySol-large/Empty.Spades.xpm100644 146 144 17755 6717360220 17167 0ustar mbimathopt/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "71 107 2 1", /* colors */ " c #000000", ". c None", /* pixels */ "..... .....", "... ............................................................. ...", ".. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..", ". ................................................................... .", ". ... ....... ....... ....... ....... ....... ....... ....... ....... .", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " ....... ....... ....... ....... ....... ....... ....... ....... .... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " .... ....... ....... ....... ....... ....... ....... ....... ....... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " ....... ....... ....... ....... ....... ....... ....... ....... .... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " .... ....... ....... ....... ....... ....... ....... ....... ....... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " ....... ....... ....... ....... ....... ....... ....... ....... .... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " .... ....... ....... ....... ....... ....... ....... ....... ....... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " ....... ....... ....... ....... ....... ....... ....... ....... .... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " .................................. .................................. ", " .... ....... ....... ....... .... ....... ....... ....... ....... ", " ................................. ................................. ", " .. ... ... ... ... ... ... ... . . ... ... ... ... ... ... ... .. ", " ............................... ............................... ", " ....... ....... ....... ..... . ....... ....... ....... .... ", " ............................. ............................. ", " .. ... ... ... ... ... ... . . ... ... ... ... ... ... .. ", " ........................... ........................... ", " .... ....... ....... ..... . ....... ....... ....... ", " ......................... ......................... ", " .. ... ... ... ... ... . . ... ... ... ... ... .. ", " ....................... ....................... ", " ....... ....... ..... . ....... ....... .... ", " ..................... ..................... ", " .. ... ... ... ... .. .. ... ... ... ... .. ", " .................... .................... ", " .... ....... ....... ... ....... ....... ", " ................... ................... ", " .. ... ... ... ... ... ... ... ... .. ", " .................. .................. ", " ....... ....... . ..... ....... .... ", " .................. .................. ", " .. ... ... ... ... ... ... ... ... .. ", " .................. .................. ", " .... ....... ..... . ....... ....... ", " ................... . . ................... ", " .. ... ... ... ... .. .. ... ... ... ... .. ", " .................... .. .. .................... ", " ....... ....... .... .. ... ....... ....... .... ", " ...................... ..... ..... ...................... ", " .. ... ... ... ... ... ... ... . . ... ... ... ... ... ... ... .. ", " ................................ ................................ ", " .... ....... ....... ....... .. ...... ....... ....... ....... ", " ............................... ............................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ............................. ............................. ", " ....... ....... ....... ....... ....... ....... ....... ....... .... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " .... ....... ....... ....... ....... ....... ....... ....... ....... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " ....... ....... ....... ....... ....... ....... ....... ....... .... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " .... ....... ....... ....... ....... ....... ....... ....... ....... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " ....... ....... ....... ....... ....... ....... ....... ....... .... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " .... ....... ....... ....... ....... ....... ....... ....... ....... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " ....... ....... ....... ....... ....... ....... ....... ....... .... ", " ..................................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ..................................................................... ", " .... ....... ....... ....... ....... ....... ....... ....... ....... ", " ..................................................................... ", ". . ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . .", ". ................................................................... .", ".. ...... ....... ....... ....... ....... ....... ....... ....... .. ..", "... ............................................................. ...", "..... ....." }; xpat2-1.07/lib/PySol-small/ 40755 146 144 0 6717365711 14021 5ustar mbimathoptxpat2-1.07/lib/PySol-small/COPYRIGHT100644 146 144 713 6651441001 15352 0ustar mbimathoptThis PySol cardset was adapted from images contributed by Fabio Bozzetto. Copyright (C) 1998 Fabio Bozzetto Copyright (C) 1998 Markus F.X.J. Oberhumer This cardset is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. xpat2-1.07/lib/PySol-small/Cards.conf100644 146 144 25 6717365514 15757 0ustar mbimathopt57 85 1 1 0 15 0 0 0 xpat2-1.07/lib/PySol-small/Empty.Clubs.xpm100644 146 144 12324 6717365603 17033 0ustar mbimathopt/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "57 85 2 1", /* colors */ " c #000000", ". c None", /* pixels */ ".... ....", ".. ................................................. ..", ". . ... ... ... ... ... ... ... ... ... ... ... ... ... .", ". ..................................................... .", " .... ....... ....... ....... ....... ....... ....... .. ", " ....................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ", " ....................................................... ", " ....... ....... ....... ....... ....... ....... ...... ", " ....................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ", " ....................................................... ", " .... ....... ....... ....... ....... ....... ....... .. ", " ....................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ", " ....................................................... ", " ....... ....... ....... ....... ....... ....... ...... ", " ....................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ", " ....................................................... ", " .... ....... ....... ....... ....... ....... ....... .. ", " ....................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ", " ....................................................... ", " ....... ....... ....... .. ....... ....... ...... ", " ....................... ....................... ", " .. ... ... ... ... ... . ... ... ... ... ... ", " ..................... ..................... ", " .... ....... ....... . ....... ....... .. ", " .................... .................... ", " .. ... ... ... ... .. ... ... ... ... ", " ................... ................... ", " ....... ....... .. .... ....... ...... ", " ................... ................... ", " .. ... ... ... ... .. ... ... ... ... ", " .................... .................... ", " .... ....... ....... . ....... ....... .. ", " ..................... ..................... ", " .. ... ... ... .. . .. ... ... ... ", " ............. . . ............. ", " ....... ... . .. ..... ...... ", " ........... .. .. ........... ", " .. ... ... . . . ... ... ", " .......... . . .......... ", " .... .... ...... .. ", " ......... ......... ", " .. ... .. ... ... ", " ......... ......... ", " ....... .. ...... ", " .......... . . .......... ", " .. ... ... . . . ... ... ", " ........... .. .. ........... ", " .... ....... .. ... . ....... .. ", " ............. .... .... ............. ", " .. ... ... ... .. .. ... .. ... ... ... ", " ......................... ......................... ", " ....... ....... ....... . ....... ....... ...... ", " ........................ ........................ ", " .. ... ... ... ... ... .. ... ... ... ... ... ", " ...................... ...................... ", " .... ....... ....... ....... ....... ....... ....... .. ", " ....................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ", " ....................................................... ", " ....... ....... ....... ....... ....... ....... ...... ", " ....................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ", " ....................................................... ", " .... ....... ....... ....... ....... ....... ....... .. ", " ....................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ", " ....................................................... ", " ....... ....... ....... ....... ....... ....... ...... ", " ....................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ", " ....................................................... ", " .... ....... ....... ....... ....... ....... ....... .. ", " ....................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ", " ....................................................... ", " ....... ....... ....... ....... ....... ....... ...... ", ". ..................................................... .", ". . ... ... ... ... ... ... ... ... ... ... ... ... ... .", ".. ................................................. ..", ".... ...." }; xpat2-1.07/lib/PySol-small/Empty.Diamonds.xpm100644 146 144 12337 6717365461 17527 0ustar mbimathopt/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "57 85 3 1", /* colors */ " c #000000", ". c red", "X c None", /* pixels */ "XXXX XXXX", "XX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX", "X X XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX X", "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X", " XXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XX.XXXX XXXXXXX XXXXXXX XXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX...X XXX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXXX.....XXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXXX.....XXXXXX XXXXXXX XXXXXXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXX.......XXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX .........XX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXX...........XXXXXXX XXXXXXX XXXXXX ", " XXXXXXXXXXXXXXXXXXXXX.............XXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX X...............XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXX.................XXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXX...................XXXXXXX XXXXXXX XX ", " XXXXXXXXXXXXXXXXX.....................XXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX X.......................XXX XXX XXX XXX ", " XXXXXXXXXXXXXXX.........................XXXXXXXXXXXXXXX ", " XXXXXXX XXXXX...........................XXXXXXX XXXXXX ", " XXXXXXXXXXXXX.............................XXXXXXXXXXXXX ", " XX XXX XXX X...............................XXX XXX XXX ", " XXXXXXXXXXXXX.............................XXXXXXXXXXXXX ", " XXXX XXXXXXX X...........................XXX XXXXXXX XX ", " XXXXXXXXXXXXXXX.........................XXXXXXXXXXXXXXX ", " XX XXX XXX XXX X.......................XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXX.....................XXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX X...................XXX XXXXXXX XXXXXX ", " XXXXXXXXXXXXXXXXXXX.................XXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX X...............XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXX.............XXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX X...........XXX XXXXXXX XXXXXXX XX ", " XXXXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX .........XX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXX.......XXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX .....XX XXXXXXX XXXXXXX XXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXX.....XXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX...X XXX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXXXXX. XXXXXXX XXXXXXX XXXXXXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXX ", "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X", "X X XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX X", "XX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX", "XXXX XXXX" }; xpat2-1.07/lib/PySol-small/Empty.Hearts.xpm100644 146 144 12337 6717365447 17223 0ustar mbimathopt/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "57 85 3 1", /* colors */ " c #000000", ". c red", "X c None", /* pixels */ "XXXX XXXX", "XX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX", "X X XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX X", "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X", " XXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXX ", " XXXXXXXXXXXXXXXX......XXXXXXXXXXX......XXXXXXXXXXXXXXXX ", " XX XXX XXX XXX..........XX XXX ..........X XXX XXX XXX ", " XXXXXXXXXXXXX............XXXXX............XXXXXXXXXXXXX ", " XXXX XXXXXXX..............XX ..............X XXXXXXX XX ", " XXXXXXXXXXX...............XXX...............XXXXXXXXXXX ", " XX XXX XXX ................X................XX XXX XXX ", " XXXXXXXXXX.................X.................XXXXXXXXXX ", " XXXXXXX X...................................XXX XXXXXX ", " XXXXXXXXXX...................................XXXXXXXXXX ", " XX XXX XXX...................................X XXX XXX ", " XXXXXXXXXX...................................XXXXXXXXXX ", " XXXX XXXXX...................................XXXXXXX XX ", " XXXXXXXXXX...................................XXXXXXXXXX ", " XX XXX XXX...................................X XXX XXX ", " XXXXXXXXXXX.................................XXXXXXXXXXX ", " XXXXXXX XX.................................XXXX XXXXXX ", " XXXXXXXXXXXX...............................XXXXXXXXXXXX ", " XX XXX XXX XX............................. XXX XXX XXX ", " XXXXXXXXXXXXXX...........................XXXXXXXXXXXXXX ", " XXXX XXXXXXX XX.........................XXXX XXXXXXX XX ", " XXXXXXXXXXXXXXXX.......................XXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XX..................... XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXX...................XXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XX.................XXXX XXXXXXX XXXXXX ", " XXXXXXXXXXXXXXXXXXXX...............XXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XX............. XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXX...........XXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XX.........XXXX XXXXXXX XXXXXXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXX.......XXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XX..... XXX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXX...XXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX X...XXX XXXXXXX XXXXXXX XXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX .XX XXX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXX ", "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X", "X X XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX X", "XX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX", "XXXX XXXX" }; xpat2-1.07/lib/PySol-small/Empty.Spades.xpm100644 146 144 12324 6717365436 17206 0ustar mbimathopt/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "57 85 2 1", /* colors */ " c #000000", ". c None", /* pixels */ ".... ....", ".. ................................................. ..", ". . ... ... ... ... ... ... ... ... ... ... ... ... ... .", ". ..................................................... .", " .... ....... ....... ....... ....... ....... ....... .. ", " ....................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ", " ....................................................... ", " ....... ....... ....... ....... ....... ....... ...... ", " ....................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ", " ....................................................... ", " .... ....... ....... ....... ....... ....... ....... .. ", " ....................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ", " ....................................................... ", " ....... ....... ....... ....... ....... ....... ...... ", " ....................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ", " ....................................................... ", " .... ....... ....... ....... ....... ....... ....... .. ", " ....................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ", " ........................... ........................... ", " ....... ....... ....... .. .... ....... ....... ...... ", " .......................... .......................... ", " .. ... ... ... ... ... ... . ... ... ... ... ... ... ", " ......................... ......................... ", " .... ....... ....... ... ..... ....... ....... .. ", " ....................... ....................... ", " .. ... ... ... ... ... . ... ... ... ... ... ", " ..................... ..................... ", " ....... ....... ... ..... ....... ...... ", " ................... ................... ", " .. ... ... ... ... . ... ... ... ... ", " ................. ................. ", " .... ....... ... ..... ....... .. ", " ............... ............... ", " .. ... ... ... . ... ... ... ", " .............. .............. ", " ....... .... ...... ...... ", " ............. ............. ", " .. ... ... . ... ... ... ", " ............ ............ ", " .... ...... ....... .. ", " ........... ........... ", " .. ... ... .. ... ... ", " ........... ........... ", " ....... .. .... ...... ", " ........... ........... ", " .. ... ... . . . ... ... ... ", " ............ .. .. ............ ", " .... ....... .. .. .. ....... .. ", " .............. ... ... .............. ", " .. ... ... ... . ... . ... .. ... ... ... ", " ......................... ......................... ", " ....... ....... ....... .. ....... ....... ...... ", " ........................ ........................ ", " .. ... ... ... ... ... . ... ... ... ... ... ... ", " ....................... ....................... ", " .... ....... ....... . ... ....... ....... .. ", " ....................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ", " ....................................................... ", " ....... ....... ....... ....... ....... ....... ...... ", " ....................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ", " ....................................................... ", " .... ....... ....... ....... ....... ....... ....... .. ", " ....................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ", " ....................................................... ", " ....... ....... ....... ....... ....... ....... ...... ", " ....................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ", " ....................................................... ", " .... ....... ....... ....... ....... ....... ....... .. ", " ....................................................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ", " ....................................................... ", " ....... ....... ....... ....... ....... ....... ...... ", ". ..................................................... .", ". . ... ... ... ... ... ... ... ... ... ... ... ... ... .", ".. ................................................. ..", ".... ...." }; xpat2-1.07/lib/PySol-small/Makefile100644 146 144 1643 6717364166 15565 0ustar mbimathopt# Time-stamp: <15 May 99 23:34:46 Michael Bischoff> # Makefile to convert nice card sets from pysol-2.0.2 for xpat # requires gnu make, the pnm-tools, and (of course) the great cards from pysol, # found at ftp://ftp.metalab.unc.de/pub/Linux/games/solitaire PYSOLCARDDIR = /usr/games/lib/pysol-cardsets-2.02/data/cardset-pysol-small CARDBACK = back11 all: cp -p ../dummy.xpm Ranks.xpm cp -p ../dummy.xpm Suits.xpm giftopnm $(PYSOLCARDDIR)/$(CARDBACK).gif | ppmtoxpm > Cardback1.xpm ../docvt $(PYSOLCARDDIR) 01 Ace ../docvt $(PYSOLCARDDIR) 02 Deuce ../docvt $(PYSOLCARDDIR) 03 Three ../docvt $(PYSOLCARDDIR) 04 Four ../docvt $(PYSOLCARDDIR) 05 Five ../docvt $(PYSOLCARDDIR) 06 Six ../docvt $(PYSOLCARDDIR) 07 Seven ../docvt $(PYSOLCARDDIR) 08 Eight ../docvt $(PYSOLCARDDIR) 09 Nine ../docvt $(PYSOLCARDDIR) 10 Ten ../docvt $(PYSOLCARDDIR) 11 Jack ../docvt $(PYSOLCARDDIR) 12 Queen ../docvt $(PYSOLCARDDIR) 13 King xpat2-1.07/lib/PySol-small/README100644 146 144 157 6717363436 14763 0ustar mbimathoptWith the supplied Makefile, you can populate this directory with the nice cards from the pysol solitaire game. xpat2-1.07/lib/PySol-medium/ 40755 146 144 0 6717364171 14170 5ustar mbimathoptxpat2-1.07/lib/PySol-medium/COPYRIGHT100644 146 144 713 6651441001 15522 0ustar mbimathoptThis PySol cardset was adapted from images contributed by Fabio Bozzetto. Copyright (C) 1998 Fabio Bozzetto Copyright (C) 1998 Markus F.X.J. Oberhumer This cardset is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. xpat2-1.07/lib/PySol-medium/Cards.conf100644 146 144 25 6717364416 16127 0ustar mbimathopt67 91 1 1 0 10 0 0 0 xpat2-1.07/lib/PySol-medium/Empty.Clubs.xpm100644 146 144 14720 6717364030 17176 0ustar mbimathopt/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "67 91 2 1", /* colors */ " c #000000", ". c None", /* pixels */ "....... .......", ".... ..................................................... ....", "... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...", ".. ............................................................. ..", ". ... ....... ....... ....... ....... ....... ....... ....... ... .", ". ............................................................... .", ". . ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . .", " ................................................................. ", " ....... ....... ....... ....... ....... ....... ....... ....... ", " ................................................................. ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ................................................................. ", " .... ....... ....... ....... ....... ....... ....... ....... .... ", " ................................................................. ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ................................................................. ", " ....... ....... ....... ....... ....... ....... ....... ....... ", " ................................................................. ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ................................................................. ", " .... ....... ....... ....... ....... ....... ....... ....... .... ", " ................................................................. ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ................................................................. ", " ....... ....... ....... ....... ....... ....... ....... ....... ", " ................................................................. ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " .............................. .............................. ", " .... ....... ....... ....... ....... ....... ....... .... ", " ........................... ........................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ......................... ......................... ", " ....... ....... ....... ....... ....... ....... ", " ........................ ........................ ", " .. ... ... ... ... ... . . ... ... ... ... ... .. ", " ........................ ........................ ", " .... ....... ....... ... ... ....... ....... .... ", " ........................ ........................ ", " .. ... ... ... ... ... .. .. ... ... ... ... ... .. ", " ......................... ......................... ", " ....... ....... ....... . . ....... ....... ....... ", " .................... .. .. .................... ", " .. ... ... ... ... . . ... ... ... ... .. ", " ................. .. .. ................. ", " .... ....... ... .. .. ... ....... .... ", " ............... . . ............... ", " .. ... ... ... ... ... ... .. ", " .............. .............. ", " ....... ..... ..... ....... ", " .............. .............. ", " .. ... ... ... ... ... ... .. ", " .............. .............. ", " .... ....... .. . . .. ....... .... ", " ............... . . ............... ", " .. ... ... ... . . . . ... ... ... .. ", " ................. .. ... ................. ", " ....... ....... . .... .... . ....... ....... ", " .................... ..... ..... .................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ............................. ............................. ", " .... ....... ....... ....... ....... ....... ....... .... ", " ............................ ............................ ", " .. ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ................................................................. ", " ....... ....... ....... ....... ....... ....... ....... ....... ", " ................................................................. ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ................................................................. ", " .... ....... ....... ....... ....... ....... ....... ....... .... ", " ................................................................. ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ................................................................. ", " ....... ....... ....... ....... ....... ....... ....... ....... ", " ................................................................. ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ................................................................. ", " .... ....... ....... ....... ....... ....... ....... ....... .... ", " ................................................................. ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ................................................................. ", " ....... ....... ....... ....... ....... ....... ....... ....... ", " ................................................................. ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ................................................................. ", ". ... ....... ....... ....... ....... ....... ....... ....... ... .", ". ............................................................... .", ". . ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . .", ".. ............................................................. ..", "... ..... ....... ....... ....... ....... ....... ....... ..... ...", ".... ..................................................... ....", "....... ......." }; xpat2-1.07/lib/PySol-medium/Empty.Diamonds.xpm100644 146 144 14733 6717363770 17702 0ustar mbimathopt/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "67 91 3 1", /* colors */ " c #000000", ". c red", "X c None", /* pixels */ "XXXXXXX XXXXXXX", "XXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX", "XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX", "XX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX", "X XXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXX X", "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X", "X X XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX X X", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXXXXXX XXX.XXX XXXXXXX XXXXXXX XXXXXXX XXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX.....XXX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXX.......XXXX XXXXXXX XXXXXXX XXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX X.........X XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXX...........XXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXXXX.............XXXXX XXXXXXX XXXXXXX XXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXX...............XXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX X.................X XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXX...................XXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXX.....................XXXXX XXXXXXX XXXXXXX ", " XXXXXXXXXXXXXXXXXXXXX.......................XXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX X.........................X XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXX...........................XXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXX.............................XXXXX XXXXXXX XXXX ", " XXXXXXXXXXXXXXXXX...............................XXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX.............................XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXX...........................XXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXX.........................XXX XXXXXXX XXXXXXX ", " XXXXXXXXXXXXXXXXXXXXX.......................XXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX.....................XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXX...................XXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXX.................XXX XXXXXXX XXXXXXX XXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXX...............XXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX.............XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXX...........XXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXX.........XXX XXXXXXX XXXXXXX XXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XX.......XX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXXXXXX X.....X XXXXXXX XXXXXXX XXXXXXX XXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX X.X XXX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", "X XXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXX X", "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X", "X X XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX X X", "XX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX", "XXX XXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXX XXX", "XXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX", "XXXXXXX XXXXXXX" }; xpat2-1.07/lib/PySol-medium/Empty.Hearts.xpm100644 146 144 14733 6717364007 17364 0ustar mbimathopt/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "67 91 3 1", /* colors */ " c #000000", ". c red", "X c None", /* pixels */ "XXXXXXX XXXXXXX", "XXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX", "XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX", "XX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX", "X XXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXX X", "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X", "X X XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX X X", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX ......X XXXXXXX X...... XXXXXXX XXXXXXX XXXX ", " XXXXXXXXXXXXXXXXXXX..........XXXXXXX..........XXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX............ XXX ............XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXX..............XXX..............XXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX...............X X...............XXXXXXX XXXXXXX ", " XXXXXXXXXXXXXXXX................X................XXXXXXXXXXXXXXXX ", " XX XXX XXX XXX .................X................. XXX XXX XXX XX ", " XXXXXXXXXXXXXXX...................................XXXXXXXXXXXXXXX ", " XXXX XXXXXXX XX...................................XX XXXXXXX XXXX ", " XXXXXXXXXXXXXXX...................................XXXXXXXXXXXXXXX ", " XX XXX XXX XXX ................................... XXX XXX XXX XX ", " XXXXXXXXXXXXXXX...................................XXXXXXXXXXXXXXX ", " XXXXXXX XXXXXX...................................XXXXXX XXXXXXX ", " XXXXXXXXXXXXXXX...................................XXXXXXXXXXXXXXX ", " XX XXX XXX XXX X.................................X XXX XXX XXX XX ", " XXXXXXXXXXXXXXXX.................................XXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXX...............................XXXX XXXXXXX XXXX ", " XXXXXXXXXXXXXXXXXX.............................XXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX ........................... XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXX.........................XXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXX.......................XXXX XXXXXXX XXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXX.....................XXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX ................... XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXX.................XXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXXX...............XXXX XXXXXXX XXXXXXX XXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXX.............XXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX ........... XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXX.......XXXX XXXXXXX XXXXXXX XXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX ... XXX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXXXXXX XXX.XXX XXXXXXX XXXXXXX XXXXXXX XXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", "X XXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXX X", "X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X", "X X XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX X X", "XX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX", "XXX XXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXX XXX", "XXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX", "XXXXXXX XXXXXXX" }; xpat2-1.07/lib/PySol-medium/Empty.Spades.xpm100644 146 144 14720 6717364017 17352 0ustar mbimathopt/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "67 91 2 1", /* colors */ " c #000000", ". c None", /* pixels */ "....... .......", ".... ..................................................... ....", "... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...", ".. ............................................................. ..", ". ... ....... ....... ....... ....... ....... ....... ....... ... .", ". ............................................................... .", ". . ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . .", " ................................................................. ", " ....... ....... ....... ....... ....... ....... ....... ....... ", " ................................................................. ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ................................................................. ", " .... ....... ....... ....... ....... ....... ....... ....... .... ", " ................................................................. ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ................................................................. ", " ....... ....... ....... ....... ....... ....... ....... ....... ", " ................................................................. ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ................................................................. ", " .... ....... ....... ....... ....... ....... ....... ....... .... ", " ................................................................. ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ................................................................. ", " ....... ....... ....... ....... ....... ....... ....... ....... ", " ................................................................. ", " .. ... ... ... ... ... ... ... . . ... ... ... ... ... ... ... .. ", " ................................ ................................ ", " .... ....... ....... ....... .. .. ....... ....... ....... .... ", " ............................... ............................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ............................. ............................. ", " ....... ....... ....... ... ... ....... ....... ....... ", " ........................... ........................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ......................... ......................... ", " .... ....... ....... ... ... ....... ....... .... ", " ....................... ....................... ", " .. ... ... ... ... ... ... ... ... ... ... .. ", " ..................... ..................... ", " ....... ....... ... ... ....... ....... ", " ................... ................... ", " .. ... ... ... ... ... ... ... ... .. ", " .................. .................. ", " .... ....... ..... ..... ....... .... ", " ................. ................. ", " .. ... ... ... .. .. ... ... ... .. ", " ................ ................ ", " ....... ....... ....... ....... ", " ................ ................ ", " .. ... ... ... . . ... ... ... .. ", " ................ ................ ", " .... ....... ... ... ....... .... ", " ................. . . ................. ", " .. ... ... ... .. . . .. ... ... ... .. ", " .................. .. .. .................. ", " ....... ....... .. ... ... .. ....... ....... ", " .................... ..... ..... .................... ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " .............................. .............................. ", " .... ....... ....... ....... ....... ....... ....... .... ", " ............................. ............................. ", " .. ... ... ... ... ... ... . . ... ... ... ... ... ... .. ", " ........................... ........................... ", " ....... ....... ....... ....... ....... ....... ....... ....... ", " ................................................................. ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ................................................................. ", " .... ....... ....... ....... ....... ....... ....... ....... .... ", " ................................................................. ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ................................................................. ", " ....... ....... ....... ....... ....... ....... ....... ....... ", " ................................................................. ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ................................................................. ", " .... ....... ....... ....... ....... ....... ....... ....... .... ", " ................................................................. ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ................................................................. ", " ....... ....... ....... ....... ....... ....... ....... ....... ", " ................................................................. ", " .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ", " ................................................................. ", ". ... ....... ....... ....... ....... ....... ....... ....... ... .", ". ............................................................... .", ". . ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . .", ".. ............................................................. ..", "... ..... ....... ....... ....... ....... ....... ....... ..... ...", ".... ..................................................... ....", "....... ......." }; xpat2-1.07/lib/PySol-medium/Makefile100644 146 144 1644 6717364152 15731 0ustar mbimathopt# Time-stamp: <15 May 99 23:34:34 Michael Bischoff> # Makefile to convert nice card sets from pysol-2.0.2 for xpat # requires gnu make, the pnm-tools, and (of course) the great cards from pysol, # found at ftp://ftp.metalab.unc.de/pub/Linux/games/solitaire PYSOLCARDDIR = /usr/games/lib/pysol-cardsets-2.02/data/cardset-pysol-medium CARDBACK = back11 all: cp -p ../dummy.xpm Ranks.xpm cp -p ../dummy.xpm Suits.xpm giftopnm $(PYSOLCARDDIR)/$(CARDBACK).gif | ppmtoxpm > Cardback1.xpm ../docvt $(PYSOLCARDDIR) 01 Ace ../docvt $(PYSOLCARDDIR) 02 Deuce ../docvt $(PYSOLCARDDIR) 03 Three ../docvt $(PYSOLCARDDIR) 04 Four ../docvt $(PYSOLCARDDIR) 05 Five ../docvt $(PYSOLCARDDIR) 06 Six ../docvt $(PYSOLCARDDIR) 07 Seven ../docvt $(PYSOLCARDDIR) 08 Eight ../docvt $(PYSOLCARDDIR) 09 Nine ../docvt $(PYSOLCARDDIR) 10 Ten ../docvt $(PYSOLCARDDIR) 11 Jack ../docvt $(PYSOLCARDDIR) 12 Queen ../docvt $(PYSOLCARDDIR) 13 King xpat2-1.07/lib/PySol-medium/README100644 146 144 157 6717363436 15133 0ustar mbimathoptWith the supplied Makefile, you can populate this directory with the nice cards from the pysol solitaire game. xpat2-1.07/lib/docvt100755 146 144 555 6717355450 12773 0ustar mbimathopt#!/bin/sh # convert pysol cardimage into xpat2 xpm file # argument 1 = directory of source file # argument 2 = card rank # argument 3 = corresponding xpat name giftopnm $1/$2c.gif | ppmtoxpm > $3.Clubs.pic.xpm giftopnm $1/$2s.gif | ppmtoxpm > $3.Spades.pic.xpm giftopnm $1/$2h.gif | ppmtoxpm > $3.Hearts.pic.xpm giftopnm $1/$2d.gif | ppmtoxpm > $3.Diamonds.pic.xpm xpat2-1.07/lib/dummy.xpm100644 146 144 351 6717363121 13573 0ustar mbimathopt/* empty XPM */ static char *dummy[] = { /* width height num_colors chars_per_pixel */ " 9 5 1 1", /* colors */ ". c #d9d9d9", /* pixels */ ".........", ".........", ".........", ".........", "........." }; xpat2-1.07/lib/XPat.ad.Xm2100644 146 144 12133 7012632524 13575 0ustar mbimathopt! Application Defaults for XPat2 (english) ! Christian Anzenberger 1999 03 21 XPat.AboutText: \ -*-lucida sans-medium-r-normal-sans-14-*-*-*-*-*-*-*=Regular,\ -*-new century schoolbook-bold-i-normal--18-*-*-*-*-*-*-*=BoldItalic ! shellMain XPat.title: X-Patience XPat.baseWidth: 640 XPat.baseHeight: 480 XPat.minWidth: 320 XPat.minHeight: 240 XPat.iconPixmap: xpat2.icon.pm XPat*background: grey XPat*fontList: -adobe-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* ! cascadeGame XPat*cascadeGame.labelString: Game ! butGameNew XPat*butGameNew.labelString: New Game ! butGameLoad XPat*butGameLoad.labelString: Load Game ... ! butGameSave XPat*butGameSave.labelString: Save Game ... ! butGameExit XPat*butGameExit.labelString: Exit ! cascadeRules XPat*cascadeRules.labelString: Rules ! cascadeActions XPat*cascadeActions.labelString: Actions ! butActionsUndo XPat*butActionsUndo.labelString: Undo ! butActionsRedo XPat*butActionsRedo.labelString: Redo ! butActionsReplay XPat*butActionsReplay.labelString: Replay ! butActionsRestart XPat*butActionsRestart.labelString: Restart ! butActionsCards XPat*butActionsCards.labelString: Cards ! butActionsMovetostack XPat*butActionsMovetostack.labelString: Move to Stack ! cascadeOptions XPat*cascadeOptions.labelString: Options ! toggleOptionsSound XPat*toggleOptionsSound.labelString: Sound On ! toggleOptionsToolbar XPat*toggleOptionsToolbar.labelString: Show Toolbar ! butOptionsDropbookmark XPat*butOptionsDropbookmark.labelString: Drop Bookmark ! butOptionsGotobookmark XPat*butOptionsGotobookmark.labelString: Go to Bookmark ! cascadeHelp XPat*cascadeHelp.labelString: Help ! cascadeHelpRules XPat*cascadeHelpRules.labelString: Help on Rules ! butHelpKeys XPat*butHelpKeys.labelString: Help on Keys ... ! butHelpHint XPat*butHelpHint.labelString: Hint ! butHelpScore XPat*butHelpScore.labelString: Score ... ! butHelpLicense XPat*butHelpLicense.labelString: License ... ! butHelpAbout XPat*butHelpAbout.labelString: About ... ! butTbCards XPat*butTbCards.labelType: PIXMAP XPat*butTbCards.labelPixmap: DealCard.m.pm ! butTbUndo XPat*butTbUndo.labelType: PIXMAP XPat*butTbUndo.labelPixmap: Undo.m.pm XPat*butTbUndo.labelInsensitivePixmap: UndoU.m.pm ! butTbRedo XPat*butTbRedo.labelType: PIXMAP XPat*butTbRedo.labelPixmap: Redo.m.pm XPat*butTbRedo.labelInsensitivePixmap: RedoU.m.pm ! butTbReplay XPat*butTbReplay.labelType: PIXMAP XPat*butTbReplay.labelPixmap: Replay.m.pm XPat*butTbReplay.labelInsensitivePixmap: ReplayU.m.pm ! butTbRestart XPat*butTbRestart.labelType: PIXMAP XPat*butTbRestart.labelPixmap: Restart.m.pm XPat*butTbRestart.labelInsensitivePixmap: RestartU.m.pm ! butTbMovetostack XPat*butTbMovetostack.labelType: PIXMAP XPat*butTbMovetostack.labelPixmap: ToStack.m.pm ! butTbHint XPat*butTbHint.labelType: PIXMAP XPat*butTbHint.labelPixmap: Hint.m.pm ! drawpane XPat*drawpane.background: DarkOliveGreen4 XPat*drawpane.marginWidth: 320 XPat*drawpane.marginHeight: 200 ! shellDialogFile XPat*shellDialogFile.title: Load Game ! fileselDialogFile XPat*fileselDialogFile.noMatchString: No saved games. ! labelFileFiles XPat*fileselDialogFile.Items.labelString: Files ! labelFileFilter XPat*fileselDialogFile.FilterLabel.labelString: Filter ! labelFileDirs XPat*fileselDialogFile.Dir.labelString: Directories ! optmenuFileSetfilter XPat*optmenuFileSetfilter.labelString: Show Saved Games: ! butFileSetfilterAll XPat*butFileSetfilterAll.labelString: All Games ! shellDialogHelp XPat*shellDialogHelp.baseWidth: 440 XPat*shellDialogHelp.baseHeight: 440 XPat*shellDialogHelp.minWidth: 200 XPat*shellDialogHelp.minHeight: 200 ! msgboxHelp XPat*shellDialogHelpText.title: Help ! butHelpClose XPat*butHelpTextClose.labelString: Close ! shellDialogHelpAbout XPat*shellDialogHelpAbout.title: About X-Patience ! labelHelpAboutSymbol XPat*labelHelpAboutSymbol.labelType: PIXMAP XPat*labelHelpAboutSymbol.labelPixmap: Xpat2.l.pm ! labelHelpAboutSymbolB XPat*labelHelpAboutSymbolB.labelType: PIXMAP XPat*labelHelpAboutSymbolB.labelPixmap: Xpat2B.l.pm ! labelHelpAboutText ! labelHelpAboutVersion XPat*labelHelpAboutVersion.mappedWhenManaged: false XPat*labelHelpAboutVersion.labelString: X-Patience 2\nVersion 1.04.M\n(Alpha Motif GUI)\nfor Solaris 2.x ! labelHelpAboutAuthors XPat*labelHelpAboutAuthors.mappedWhenManaged: false XPat*labelHelpAboutAuthors.labelString: Game written by Heiko Eissfeldt and\nMichael Bischoff (c) 1993, 1994.\nMotif GUI designed and created by\nChristian Anzenberger (c) 1999.\nSee COPYRIGHT files for details. ! butHelpAboutVersion XPat*butHelpAboutVersion.labelString: Version ! butHelpAboutAuthors XPat*butHelpAboutAuthors.labelString: Authors ! butHelpAboutClose XPat*butHelpAboutClose.labelString: Close ! shellDialogConfirm XPat*shellDialogConfirm.title: ! labelConfirmText XPat*msgboxConfirm.MessageLabel.labelString: Exit X-Patience? ! shellDialogError XPat*shellDialogError.title: ! butErrorCancel XPat*msgboxError.Cancel.labelString: Dismiss ! labelErrorText XPat*msgboxError.MessageLabel.labelString: Please select a saved game xpat2-1.07/lib/XPat.ad.Xm1100644 146 144 632 7201315454 13535 0ustar mbimathopt! sample entries to use argv[0] as -rules argument: spider*rules: Spider gypsy*rules: Gypsy *Tableau.borderWidth: 0 *Tableau.backingStore: WhenMapped *Tableau.keyboardFile: keys *Tableau.messageFile: messages *Tableau.background: LightSlateGray *Tableau.arrowColor: Gold *Tableau.markColor: Black *Tableau.rules: Gypsy *Tableau.rng: 1 *helptext.rows: 25 *helptext.columns: 60 xpat2-1.07/lib/it_IT120777 146 144 0 7201330423 14214 2italian/ustar mbimathoptxpat2-1.07/lib/fr_FR120777 146 144 0 7201330447 13755 2frenchustar mbimathoptxpat2-1.07/src/ 40755 146 144 0 7201342765 11657 5ustar mbimathoptxpat2-1.07/src/X-gfx2.c100644 146 144 74715 6717365313 13236 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module X-gfx2.c */ /* */ /* Alternate graphics interface for colour servers */ /* Requires the xpm library. */ /* written by Michael Bischoff (mbi@mo.math.nat.tu-bs.de) */ /* March-1994 */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ /* #define SAVE_IMAGES */ #define ALLATONCE /* #define MIRRORING */ #include "X-pat.h" #include /* #include */ /* It seems that xpm.h is in the X11 subdirectory for most systems */ #include #ifndef NO_ROUND_CARDS #include static Pixmap cardclipmap; #endif #ifdef LOADCARDS #include "gray1.bm" static GC redgc; static GC backgc; static GC cardgc; /* gc in use when drawing cards */ #include "X-loadcards.c" #endif /* with this module, cards are built the following way: 1) If a complete card image does exist (filename: "(rank).(suit).xpm"), this image is read and used as the card pixmap. A rounded rectangle is drawn as a border. If the image does not exist, the card is constructed as follows. 2) a white pixmap of full cardsize is created. The width and height are taken from the Cards.conf file (1st line) and default to 79x123. 3) The default card background, taken from Background.xpm, is centered in the pixmap. 4) Rank and small suit symbols are drawn into the pixmap. 5) If a center picture does exist (filename "(rank).(suit).pic.xpm"), it is centered in the card. Otherwise, the card is filled with suit symbols. 6) A rounded rectangle is drawn as card border. For pictures (Jack to King), the procedure in 5) is slightly different, as the center pictures have to be mirrored and drawn twice. The cards may be configured by the Cards.conf file. This file is optional and may end after any line. The values not read from the file take their default values then. line | entries | comment, [default] -----+---------+-------------------------------------------------------- 1 | 2 | width, height of the cards [79x123] 2 | 2 | number of cardbacks, jokers [1, 1] 3 | 1 | flags, bits are ored together, see below [0] 4 | 2 | x, y distance of the border lines for pictures [6, 7] 5 | 2 | Position of the medium-sized suit symbols for pictures | | (0 = omit them) [11, computed] 6 | 2 | x, y coordinate of the rank symbols [4,6] 7 | 2 | x, y coordinate of the small suit symbol below the rank | | symbol [3, computed] 8 | 2 | xdelta, ydelta amount in pixels to shift large symbols | | closer together [0,0] 9 | 3 | x0,x1,x2 the three possible x-coordinates of the large | | suit symbols [computed] 10 | 9 | y0..y8 the nine possible y-coordinates of the large | | suit symbols [computed] -----+---------+--------------------------------------------------------- Use of the lines 9 and 10 is intended for emergency cases only, as line 8 should allow all configurations with equidistant suit symbols. */ /* for flags: */ #define TWORANKS 1 /* display two rank symbols? */ #define PRINT 2 /* print x(i), y(i) (Debugging) */ #define PIC_BG 4 /* use same background for pictures? */ #define NOCENTERLINE 8 /* place picture one lower and don't draw black center line */ #define RANKWIDTH 9 #define RANKHEIGHT 14 #define SUITSIZE0 41 #define SUITSIZE1 21 #define SUITSIZE2 15 #define SUITSIZE3 11 #define SUITOFF0 (0) #define SUITOFF1 (SUITSIZE0) #define SUITOFF2 (SUITSIZE0+SUITSIZE1) #define SUITOFF3 (SUITSIZE0+SUITSIZE1+SUITSIZE2) struct cardconfig { int width, height; int flags; int ydelta; /* odd integer! */ int Ox, Oy; /* distance of the border for pictures */ int Rx, Ry; /* position of the rank symbol */ int Sx, Sy; /* position of the small suit symbol */ int Mx, My; /* position of the medium suit symbol */ int x0, x1, x2; /* x-positions of the large suit symbols */ int y0, y1, y2, y3, y4, y5, y6, y7, y8; /* y-positions */ int numbacks, numjokers; } cc; static void read_cardconfig(const char *filename) { FILE *fp; int tmp[9]; if (!(fp = fopen(filename, "r"))) { fprintf(stderr, "xpat2: WARNING, cannot load configuration file %s\n", filename); goto stdconfig; } if (fscanf(fp, "%d %d", &CARD_WIDTH, &CARD_HEIGHT) != 2 || CARD_WIDTH < 48 || CARD_WIDTH > 123 || CARD_HEIGHT < 64 || CARD_HEIGHT > 200) { fclose(fp); fp = NULL; goto stdconfig; } else goto havesize; stdconfig: CARD_WIDTH = 79; CARD_HEIGHT = 123; havesize: cc.numbacks = cc.numjokers = 1; cc.ydelta = (((CARD_HEIGHT - 2 - 4 * SUITSIZE1) / 7) | 1); cc.x0 = (CARD_WIDTH - 1 * SUITSIZE1) / 2 - 2 * CARD_WIDTH / 9 + 1; cc.x1 = (CARD_WIDTH - 1 * SUITSIZE1) / 2; cc.x2 = (CARD_WIDTH - 1 * SUITSIZE1) / 2 + 2 * CARD_WIDTH / 9 - 1; cc.y0 = (CARD_HEIGHT - 3 * cc.ydelta - 4 * SUITSIZE1) / 2; cc.y1 = (CARD_HEIGHT - 2 * cc.ydelta - 3 * SUITSIZE1) / 2; cc.y2 = (CARD_HEIGHT - 1 * cc.ydelta - 2 * SUITSIZE1) / 2; cc.y3 = (CARD_HEIGHT - 0 * cc.ydelta - 1 * SUITSIZE1) / 2; cc.y4 = (CARD_HEIGHT + 1 * cc.ydelta - 0 * SUITSIZE1) / 2; cc.y5 = (CARD_HEIGHT + 2 * cc.ydelta + 1 * SUITSIZE1) / 2; cc.y6 = (CARD_HEIGHT + 3 * cc.ydelta + 2 * SUITSIZE1) / 2; cc.y7 = (cc.y0 + cc.y3) / 2; cc.y8 = (cc.y6 + cc.y3) / 2; cc.flags = 0; cc.Mx = 11; cc.My = cc.y0 + 3; cc.Ox = 6; cc.Oy = 7; cc.Rx = 4; cc.Ry = 6; cc.Sx = 3; cc.Sy = cc.y0 + SUITSIZE1 - SUITSIZE3; if (fp) { /* Cards.Conf does exist */ /* possibility to override the defaults */ if (fscanf(fp, "%d %d", tmp, tmp+1) == 2) cc.numbacks = tmp[0], cc.numjokers = tmp[1]; if (fscanf(fp, "%d", tmp) == 1) cc.flags = tmp[0]; if (fscanf(fp, "%d %d", tmp, tmp+1) == 2) cc.Ox = tmp[0], cc.Oy = tmp[1]; if (fscanf(fp, "%d %d", tmp, tmp+1) == 2) cc.Mx = tmp[0], cc.My = tmp[1]; if (fscanf(fp, "%d %d", tmp, tmp+1) == 2) cc.Rx = tmp[0], cc.Ry = tmp[1]; if (fscanf(fp, "%d %d", tmp, tmp+1) == 2) cc.Sx = tmp[0], cc.Sy = tmp[1]; if (fscanf(fp, "%d %d", tmp, tmp+1) == 2) { /* xdelta and ydelta */ cc.x0 += tmp[0], cc.x2 -= tmp[0], cc.y0 += 3 * tmp[1]; cc.y1 += 2 * tmp[1]; cc.y2 += 1 * tmp[1]; cc.y4 -= 1 * tmp[1]; cc.y5 -= 2 * tmp[1]; cc.y6 -= 3 * tmp[1]; tmp[1] = tmp[1] * 3 / 2; cc.y7 += tmp[1]; cc.y8 -= tmp[1]; } if (fscanf(fp, "%d %d %d", tmp, tmp+1, tmp+2) == 3) cc.x0 = tmp[0], cc.x1 = tmp[1], cc.x2 = tmp[2]; if (fscanf(fp, "%d %d %d %d %d %d %d %d %d", tmp, tmp+1, tmp+2, tmp+3, tmp+4, tmp+5, tmp+6, tmp+7, tmp+8) == 9) cc.y0 = tmp[0], cc.y1 = tmp[1], cc.y2 = tmp[2], cc.y3 = tmp[3], cc.y4 = tmp[4], cc.y5 = tmp[5], cc.y6 = tmp[6], cc.y7 = tmp[7], cc.y8 = tmp[8]; fclose(fp); } if (cc.flags & PRINT) printf("y = %d %d %d %d %d %d %d %d %d, x = %d %d %d\n", cc.y0, cc.y1, cc.y2, cc.y3, cc.y4, cc.y5, cc.y6, cc.y7, cc.y8, cc.x0, cc.x1, cc.x2); return; } #define MAXJOKERS 4 static Pixmap card_map[60+MAXJOKERS], card_clip; static int use_closeness = 0; /* we use a 2-phase algorithm, a combination of two mirrors */ /* the amount of data copied is greater, but there are far less calls to XCopyArea */ static void MirrorCard(Drawable p, int w, int h) { int x, y, H; H = h/2; /* first, build a left-right mirror */ for (x = 0; x < w; ++x) XCopyArea(dpy, p, p, whitegc, x, 1, 1, H-1, w-1-x, H+2); /* now mirror the lower half of the card upside-down */ for (y = 0; y < H/2; ++y) { XCopyArea(dpy, p, p, whitegc, 0, h-1-y, w, 1, 0, H+1+y); XCopyArea(dpy, p, p, whitegc, 0, H+2+y, w, 1, 0, h-1-y); } /* shift one scan line */ XCopyArea(dpy, p, p, whitegc, 0, H+2+H/2, w, H/2, 0, H+1+H/2); /* restore the bottom line which was overwritten */ XCopyArea(dpy, p, p, whitegc, 0, 0, w, 1, 0, h-1); } static const char *xpmdir; static int mem_option; static GC cardbackgc; /* gc in use when drawing cardbacks */ static GC suitgc, rankgc; /* gc in use when drawing suit and rank symbols */ /* these have fixed clipmasks */ #include "logo.bm" static void make_GCs(unsigned long red, unsigned long cbcolor) { XGCValues gcv; long gcflags; Pixmap tmpmap; Pixmap logomap; GC logogc; /* make GC for cardbacks */ tmpmap = XCreateBitmapFromData(dpy, RootWindow(dpy, screen), logo_bits, logo_width, logo_height); logomap = XCreatePixmap(dpy, RootWindow(dpy, screen), logo_width, logo_height, DefaultDepth(dpy, screen)); gcv.foreground = BlackPixel(dpy, screen); gcv.background = WhitePixel(dpy, screen); gcv.graphics_exposures = True; gcflags = GCForeground | GCBackground | GCGraphicsExposures; cardbackgc = XCreateGC(dpy, RootWindow(dpy, screen), gcflags, &gcv); suitgc = XCreateGC(dpy, RootWindow(dpy, screen), gcflags, &gcv); rankgc = XCreateGC(dpy, RootWindow(dpy, screen), gcflags, &gcv); #ifdef LOADCARDS gcv.graphics_exposures = False; /* make GC for RED */ if (graphic.is_color) { gcv.foreground = red; gcv.background = WhitePixel(dpy, screen); gcflags = GCForeground | GCBackground | GCGraphicsExposures; redgc = XCreateGC(dpy, RootWindow(dpy, screen), gcflags, &gcv); } else { gcv.tile = XCreateBitmapFromData(dpy, RootWindow(dpy, screen), gray1_bits, gray1_width, gray1_height); gcv.fill_style = FillTiled; gcv.foreground = BlackPixel(dpy, screen); gcv.background = WhitePixel(dpy, screen); gcflags = GCTile | GCForeground | GCBackground | GCFillStyle | GCGraphicsExposures; redgc = XCreateGC(dpy, RootWindow(dpy, screen), gcflags, &gcv); } /* make GC for cardbacks */ tmpmap = XCreateBitmapFromData(dpy, RootWindow(dpy, screen), logo_bits, logo_width, logo_height); logomap = XCreatePixmap(dpy, RootWindow(dpy, screen), logo_width, logo_height, DefaultDepth(dpy, screen)); gcv.foreground = BlackPixel(dpy, screen); gcv.background = WhitePixel(dpy, screen); gcv.graphics_exposures = True; gcflags = GCForeground | GCBackground | GCGraphicsExposures; /* cardbackgc = XCreateGC(dpy, RootWindow(dpy, screen), gcflags, &gcv); */ if (graphic.is_color) { gcv.foreground = cbcolor; gcv.background = WhitePixel(dpy, screen); gcflags = GCForeground | GCBackground; logogc = XCreateGC(dpy, RootWindow(dpy, screen), gcflags, &gcv); XCopyPlane(dpy, tmpmap, logomap, logogc, 0, 0, logo_width, logo_height, 0, 0, 1); XFreeGC(dpy, logogc); } else { XCopyPlane(dpy, tmpmap, logomap, whitegc, 0, 0, logo_width, logo_height, 0, 0, 1); } XFreePixmap(dpy, tmpmap); gcv.tile = logomap; gcv.fill_style = FillTiled; gcflags |= GCTile | GCFillStyle | GCGraphicsExposures; backgc = XCreateGC(dpy, RootWindow(dpy, screen), gcflags, &gcv); #endif } static char *xpmname(const char *s, const char *ext) { static char buff[200]; sprintf(buff, "%s/%s.%s", xpmdir, s, ext); return buff; } #ifdef LOADCARDS #define INSETa 1 #define INSETb 1 static void paint_cardback(int x, int y, int w, int h, Drawable d) { /* change the origin so cards will have the same back anywhere * on the table */ /* * there should be a tile centered in the card, with the * surrounding tiles being partial */ XSetClipMask(dpy, backgc, None); XSetClipMask(dpy, blackgc, None); #ifndef NO_ROUND_CARDS if (ROUND_W) { XmuFillRoundedRectangle(dpy, d, blackgc, x, y, (w == CARD_WIDTH) ? w-1 : w + ROUND_W * 2, (h == CARD_HEIGHT) ? h-1 : h + ROUND_H * 2, ROUND_W, ROUND_H); } else #endif XFillRectangle(dpy, d, blackgc, x, y, w, h); XSetTSOrigin(dpy, backgc, x + card.back_delta_x, y + card.back_delta_y); #ifndef NO_ROUND_CARDS if (ROUND_W) XmuFillRoundedRectangle(dpy, d, backgc, x + INSETa, y + INSETa, (w == CARD_WIDTH ? CARD_WIDTH - INSETa - INSETb - 1 : w + ROUND_W * 2), (h == CARD_HEIGHT ? CARD_HEIGHT - INSETa - INSETb - 1 : h + ROUND_H * 2), ROUND_W, ROUND_H); else #endif XFillRectangle(dpy, d, backgc, x + INSETa, y + INSETa, (w == CARD_WIDTH ? CARD_WIDTH - INSETa - INSETb - 1 : w - 1), (h == CARD_HEIGHT ? CARD_HEIGHT - INSETa - INSETb - 1 : h - 1)); /* correction */ #ifndef NO_ROUND_CARDS if (ROUND_W) { XmuDrawRoundedRectangle(dpy, d, blackgc, x, y, (w == CARD_WIDTH ? w-1 : w + ROUND_W * 2), (h == CARD_HEIGHT ? h-1 : h + ROUND_H * 2), ROUND_W, ROUND_H); XmuDrawRoundedRectangle(dpy, d, blackgc, x+1, y+1, (w == CARD_WIDTH ? w-3 : w + ROUND_W * 2), (h == CARD_HEIGHT ? h-3 : h + ROUND_H * 2), ROUND_W-1, ROUND_H-1); } else #endif XDrawRectangle(dpy, d, blackgc, x+1, y+1, (w == CARD_WIDTH ? w-2 : w), (h == CARD_HEIGHT ? h-2 : h)); } #endif void init_cards(const char *cardset, int rx, int ry, unsigned long red, unsigned long cbcolor, int mem, const char *xpm, int closeness) { int i; use_closeness = closeness; for (i = 0; i < 58; ++i) card_map[i] = 0; mem_option = mem; card.cardset = cardset; make_GCs(red, cbcolor); #ifdef LOADCARDS if (cardset) { /* read external cardset */ read_bitmap(cardset); return; } #endif #ifdef NO_ROUND_CARDS rx = ry = 0; #endif if (!xpm) { /* we definitely need an xpmdir for this module */ char *s; s = malloc(strlen(LIBDIR) + 10); sprintf(s, "%s/default", LIBDIR); xpmdir = s; } else if (*xpm == '~' && xpm[1] == '/') { /* relative to HOME */ char *s; const char *s2; s2 = getenv("HOME"); if (!s2) s2 = ""; /* use path relative to root dir */ s = malloc(strlen(s2) + strlen(xpm) + 1); sprintf(s, "%s%s", s2, xpm); xpmdir = s; } else if (*xpm != '.' && *xpm != '/') { /* supply path */ char *s; s = malloc(strlen(LIBDIR) + strlen(xpm) + 2); sprintf(s, "%s/%s", LIBDIR, xpm); xpmdir = s; } else { /* has full or relative path */ char *s; s = malloc(strlen(xpm) + 1); strcpy(s, xpm); xpmdir = s; } /* build internal cardset */ read_cardconfig(xpmname("Cards", "conf")); /* sanity checks: */ if (2 * rx >= (int)CARD_WIDTH) rx = CARD_WIDTH / 2; if (2 * ry >= (int)CARD_HEIGHT) ry = CARD_HEIGHT / 2; /* assign values */ if (rx >= 0) card.rx = rx; if (ry >= 0) card.ry = ry; ROUND_W = ROUND_H = 9; STD_DELTA = cc.ydelta + SUITSIZE1; /* finally, compute a clipping mask for the cards */ /* apply this clip mask to cardbackgc */ #ifndef NO_ROUND_CARDS #ifndef STATIC_CLIPMAPS if (ROUND_W) { card_clip = XCreatePixmap(dpy, RootWindow(dpy, screen), CARD_WIDTH+1, CARD_HEIGHT+1, 1); { XGCValues gcv; long gcflags, f, b; GC clipgc; b = 0; f = 1; /* first, clear the clipmap */ /* (is it possible to do it easier?) */ gcv.foreground = b; gcv.background = f; gcv.graphics_exposures = False; gcflags = GCForeground | GCBackground | GCGraphicsExposures; clipgc = XCreateGC(dpy, card_clip, gcflags, &gcv); XFillRectangle(dpy, card_clip, clipgc, 0, 0, CARD_WIDTH, CARD_HEIGHT); XFreeGC(dpy, clipgc); /* make gc for clipgc */ gcv.foreground = f; gcv.background = b; gcv.graphics_exposures = False; gcflags = GCForeground | GCBackground | GCGraphicsExposures; clipgc = XCreateGC(dpy, card_clip, gcflags, &gcv); XmuFillRoundedRectangle(dpy, card_clip, clipgc, 0, 0, CARD_WIDTH-1, CARD_HEIGHT-1, ROUND_W, ROUND_H); XmuDrawRoundedRectangle(dpy, card_clip, clipgc, 0, 0, CARD_WIDTH-1, CARD_HEIGHT-1, ROUND_W, ROUND_H); XFreeGC(dpy, clipgc); } #ifdef DEBUG XWriteBitmapFile(dpy, "clip.mask.bm", card_clip, CARD_WIDTH, CARD_HEIGHT, -1, -1); #endif /* fill the background */ XSetClipMask(dpy, cardbackgc, card_clip); } #else switch (ROUND_H) { case 3: case 4: case 5: card_clip = XCreateBitmapFromData(dpy, RootWindow(dpy, screen), clip4_bits, clip4_width, clip4_height); XSetClipMask(dpy, cardbackgc, card_clip); break; case 6: case 7: case 8: case 9: card_clip = XCreateBitmapFromData(dpy, RootWindow(dpy, screen), clip7_bits, clip7_width, clip7_height); XSetClipMask(dpy, cardbackgc, card_clip); break; } #endif #endif } #ifdef SAVE_IMAGES static void write_xpmfile(char *filename, Pixmap pict, Pixmap clip) { if (XpmWriteFileFromPixmap(dpy, filename, pict, clip, NULL) != XpmSuccess) fprintf(stderr, "xpat2: error writing xpm file %s\n", filename); } #endif static struct picture { int flag; int w, h; Pixmap map; Pixmap clip; } big = { 0 }, bg = { 0 }, p_rank = { 0 }, p_suit = { 0 }; static int read_xpmfile(const char *name, struct picture *p) { XpmAttributes attribs; attribs.valuemask = 0; if (use_closeness) { /* allow allocation of 'near' colours */ attribs.valuemask |= XpmCloseness; attribs.closeness = use_closeness; } switch (XpmReadFileToPixmap(dpy, table, xpmname(name, "xpm"), &p->map, &p->clip, &attribs)) { case XpmSuccess: break; /* yeah! */ case XpmColorError: case XpmColorFailed: fprintf(stderr, "xpat2: xpm: Not enough colours. Try allowing near colours (option -xpmcls).\n"); return p->flag = 0; case XpmFileInvalid: fprintf(stderr, "xpat2: xpm: Invalid file.\n"); return p->flag = 0; case XpmNoMemory: fprintf(stderr, "xpat2: xpm: Out of memory.\n"); return p->flag = 0; case XpmOpenFailed: default: /* maybe not serious */ return p->flag = 0; } p->w = attribs.width; p->h = attribs.height; return p->flag = 1; } static void free_picture(struct picture *p) { XFreePixmap(dpy, p->map); if (p->clip) XFreePixmap(dpy, p->clip); p->flag = 0; } static int overlap_picture(const char *name, int two, Pixmap d) { struct picture p; int x, y; if (!read_xpmfile(name, &p)) return 0; if (two == 2 && 2 * p.h > CARD_HEIGHT) { two = 0; /* just a single picture */ MirrorCard(d, CARD_WIDTH, CARD_HEIGHT); } if (two) { x = (CARD_WIDTH-p.w) / 2; y = CARD_HEIGHT/2 - p.h; if (cc.flags & NOCENTERLINE) ++y; } else { x = (CARD_WIDTH-p.w) / 2; y = (CARD_HEIGHT-p.h) / 2; } if (p.clip) { XSetClipMask(dpy, whitegc, p.clip); XSetClipOrigin(dpy, whitegc, x, y); XCopyArea(dpy, p.map, d, whitegc, 0, 0, p.w, p.h, x, y); XSetClipMask(dpy, whitegc, None); } else XCopyArea(dpy, p.map, d, whitegc, 0, 0, p.w, p.h, x, y); free_picture(&p); if (two == 2) MirrorCard(d, CARD_WIDTH, CARD_HEIGHT); return 1; } /* suitflags: */ /* 0 3 0 4 1 5 1 5 also 6 for asymmetric card (7) -- 2 7 2 -- */ /* rank symbols: american: J, Q, K german: B, D, K french: V, D, R old german: O, U, K */ #define PAINT_AT(xx, yy) { \ XSetClipOrigin(dpy, suitgc, (xx)-x, (yy)-SUITSIZE0); \ XCopyArea(dpy, p_suit.map, d, suitgc, x, \ SUITSIZE0, SUITSIZE1, SUITSIZE1, xx, yy); \ } #define PAINT_RV(xx, yy) { \ XSetClipOrigin(dpy, suitgc, (xx)-x, (yy)-SUITSIZE0); \ XCopyArea(dpy, p_suit.map, d, suitgc, x, \ SUITSIZE0, SUITSIZE1, SUITSIZE1, xx, yy); \ } /* paint a (nearly) symmetric card */ static void paint_large_1(Rank rank, Suit suit, Drawable d) { static const unsigned char suitflags[] = { /* 25 => 03 for different 8 */ 0x80, 0x08, 0x88, 0x01, 0x81, 0x05, 0x45, 0x25, 0x83, 0x13, 0, 0, 0, 0 }; int x, y, cx, cy, dl; char name[32]; #ifndef MIRRORING if (cc.Rx) { /* Draw the lower rank symbol(s). */ x = (8 + 3 * (suit/2) - (rank / 5)) * RANKWIDTH; y = (4 - rank % 5) * RANKHEIGHT; dl = CARD_WIDTH-RANKWIDTH; cx = dl-cc.Rx; cy = CARD_HEIGHT-cc.Ry-RANKHEIGHT; if (p_rank.clip) XSetClipOrigin(dpy, rankgc, cx-x, cy-y); XCopyArea(dpy, p_rank.map, d, rankgc, x, y, RANKWIDTH, RANKHEIGHT, cx, cy); if (cc.flags & TWORANKS) { cx = dl - cx; if (p_rank.clip) XSetClipOrigin(dpy, rankgc, cx-x, cy-y); XCopyArea(dpy, p_rank.map, d, rankgc, x, y, RANKWIDTH, RANKHEIGHT, cx, cy); } } if (cc.Sx) { /* Draw the lower small suit symbol(s). */ x = (suit+4) * SUITSIZE3; y = SUITOFF3; dl = CARD_WIDTH-SUITSIZE3; cx = dl-cc.Sx; cy = CARD_HEIGHT-cc.Sy-SUITSIZE3; XSetClipOrigin(dpy, suitgc, cx-x, cy-y); XCopyArea(dpy, p_suit.map, d, suitgc, x, y, SUITSIZE3, SUITSIZE3, cx, cy); if (cc.flags & TWORANKS) { cx = dl - cx; XSetClipOrigin(dpy, suitgc, cx-x, cy-y); XCopyArea(dpy, p_suit.map, d, suitgc, x, y, SUITSIZE3, SUITSIZE3, cx, cy); } } #endif /* load picture instead of standard symbols? */ sprintf(name, "%s.%s.pic", US_rank_name[rank], US_suit_name[suit]); if (overlap_picture(name, 0, d)) return; /* OK, draw the suit symbols */ /* first, all symbols which are not mirrored */ x = SUITSIZE1 * suit; if (suitflags[rank] & 0x01) { PAINT_AT(cc.x0, cc.y0); PAINT_AT(cc.x2, cc.y0); } if (suitflags[rank] & 0x02) { PAINT_AT(cc.x0, cc.y2); PAINT_AT(cc.x2, cc.y2); } if (suitflags[rank] & 0x08) { PAINT_AT(cc.x1, cc.y0); } if (suitflags[rank] & 0x10) { PAINT_AT(cc.x1, cc.y1); } if (suitflags[rank] & 0x20) { PAINT_AT(cc.x1, cc.y7); } #ifdef MIRRORING MirrorCard(d, CARD_WIDTH, CARD_HEIGHT); #endif if (suitflags[rank] & 0x04) { PAINT_AT(cc.x0, cc.y3); PAINT_AT(cc.x2, cc.y3); } if (suitflags[rank] & 0x40) { PAINT_AT(cc.x1, cc.y7); } if (suitflags[rank] & 0x80) { PAINT_AT(cc.x1, cc.y3); } #ifdef MIRRORING return; #endif /* draw all symbols which are upside-down */ x = SUITSIZE1 * (suit+4); if (suitflags[rank] & 0x01) { PAINT_RV(cc.x0, cc.y6); PAINT_RV(cc.x2, cc.y6); } if (suitflags[rank] & 0x02) { PAINT_RV(cc.x0, cc.y4); PAINT_RV(cc.x2, cc.y4); } if (suitflags[rank] & 0x08) { PAINT_RV(cc.x1, cc.y6); } if (suitflags[rank] & 0x10) { PAINT_RV(cc.x1, cc.y5); } if (suitflags[rank] & 0x20) { PAINT_RV(cc.x1, cc.y8); } } /* paint a half card and mirror it */ static void paint_large_2(Rank rank, Suit suit, Drawable d) { int x, y; if (cc.Mx > 0) { x = cc.Mx; y = cc.My; /* if (suit != 2) --y; */ XSetClipOrigin(dpy, suitgc, x-suit*SUITSIZE2, y-SUITOFF2); XCopyArea(dpy, p_suit.map, d, suitgc, SUITSIZE2 * suit, SUITOFF2, SUITSIZE2, SUITSIZE2, x, y); } /* horizontal line in the midst of the card: */ if (!(cc.flags & NOCENTERLINE)) XDrawLine(dpy, d, blackgc, cc.Ox, CARD_HEIGHT/2, CARD_WIDTH-1-cc.Ox, CARD_HEIGHT/2); if (cc.Oy) XDrawLine(dpy, d, blackgc, 4 + RANKWIDTH + 1, cc.Oy, CARD_WIDTH - 1 - 4 - RANKWIDTH - 1, cc.Oy); if (cc.Ox) { XDrawLine(dpy, d, blackgc, cc.Ox, cc.y7+1, cc.Ox, CARD_HEIGHT/2); XDrawLine(dpy, d, blackgc, CARD_WIDTH-1-cc.Ox, cc.y7+1, CARD_WIDTH-1-cc.Ox, CARD_HEIGHT/2); } { /* load a card image */ if (big.flag == 1) { /* have it! */ x = (CARD_WIDTH-big.w) / 2; y = CARD_HEIGHT/2 - big.h; if (cc.flags & NOCENTERLINE) ++y; XSetClipMask(dpy, whitegc, big.clip); XSetClipOrigin(dpy, whitegc, x-big.w*suit, y-big.h*(rank-Jack)); XCopyArea(dpy, big.map, d, whitegc, big.w*suit, big.h*(rank-Jack), big.w, big.h, x, y); XSetClipMask(dpy, whitegc, None); } else { char name[32]; sprintf(name, "%s.%s.pic", US_rank_name[rank], US_suit_name[suit]); if (overlap_picture(name, 2, d)) return; /* has done the mirroring */ } } MirrorCard(d, CARD_WIDTH, CARD_HEIGHT); } static void read_images(void) { static int done = 0; if (done) return; done = 1; if (read_xpmfile("Pictures", &big)) { big.w /= 4; big.h /= 3; } read_xpmfile("Background", &bg); if (!read_xpmfile("Suits", &p_suit)) { fprintf(stderr, "xpat2: cannot read suits\n"); exit(1); } if (!read_xpmfile("Ranks", &p_rank)) { fprintf(stderr, "xpat2: cannot read ranks\n"); exit(1); } XSetClipMask(dpy, suitgc, p_suit.clip); if (p_rank.clip) XSetClipMask(dpy, rankgc, p_rank.clip); } static void paint_large_card(Rank rank, Suit suit, Drawable d) { int x, y; /* make sure we have all pixmaps */ if (rank > King) { /* is a suit symbol for empty stack */ x = (CARD_WIDTH-SUITSIZE0)/2; y = (CARD_HEIGHT-SUITSIZE0)/2; XSetClipOrigin(dpy, suitgc, x-suit*SUITSIZE0, y); XCopyArea(dpy, p_suit.map, d, suitgc, SUITSIZE0 * suit, 0, SUITSIZE0, SUITSIZE0, x, y); return; } if (cc.Rx) { /* Draw the upper rank symbol(s). */ x = 3 * (suit/2) * RANKWIDTH + (rank / 5) * RANKWIDTH; y = (rank % 5) * RANKHEIGHT; if (p_rank.clip) XSetClipOrigin(dpy, rankgc, cc.Rx-x, cc.Ry-y); XCopyArea(dpy, p_rank.map, d, rankgc, x, y, RANKWIDTH, RANKHEIGHT, cc.Rx, cc.Ry); if (cc.flags & TWORANKS) { if (p_rank.clip) XSetClipOrigin(dpy, rankgc, CARD_WIDTH-RANKWIDTH-cc.Rx-x, cc.Ry-y); XCopyArea(dpy, p_rank.map, d, rankgc, x, y, RANKWIDTH, RANKHEIGHT, CARD_WIDTH-RANKWIDTH-cc.Rx, cc.Ry); } } if (cc.Sx) { /* Draw the upper small suit symbol(s). */ x = cc.Sx; y = cc.Sy; XSetClipOrigin(dpy, suitgc, x-suit*SUITSIZE3, y-SUITOFF3); XCopyArea(dpy, p_suit.map, d, suitgc, suit * SUITSIZE3, SUITOFF3, SUITSIZE3, SUITSIZE3, x, y); if (cc.flags & TWORANKS) { x = CARD_WIDTH-SUITSIZE3 - cc.Sx; XSetClipOrigin(dpy, suitgc, x-suit*SUITSIZE3, y-SUITOFF3); XCopyArea(dpy, p_suit.map, d, suitgc, suit * SUITSIZE3, SUITOFF3, SUITSIZE3, SUITSIZE3, x, y); } } if (rank >= Jack) paint_large_2(rank, suit, d); else paint_large_1(rank, suit, d); } static Pixmap start_card(int c) { Pixmap d; d = XCreatePixmap(dpy, table, CARD_WIDTH, CARD_HEIGHT, DefaultDepth(dpy, screen)); XFillRectangle(dpy, d, whitegc, 0, 0, CARD_WIDTH-1, CARD_HEIGHT-1); /* draw the background, if non-picture */ if (bg.flag == 1 && ((cc.flags & PIC_BG) || !(RANK(c) >= Jack && RANK(c) <= King))) { int x, y; x = (CARD_WIDTH-bg.w)/2; y = (CARD_HEIGHT-bg.h)/2; if (bg.clip) { XSetClipMask(dpy, whitegc, bg.clip); XSetClipOrigin(dpy, whitegc, x, y); XCopyArea(dpy, bg.map, d, whitegc, 0, 0, bg.w, bg.h, x, y); XSetClipMask(dpy, whitegc, None); } else XCopyArea(dpy, bg.map, d, whitegc, 0, 0, bg.w, bg.h, x, y); } return d; } static void finish_card(int c, Pixmap d) { /* 6) A rounded rectangle is drawn as card border. */ #ifndef NO_ROUND_CARDS if (ROUND_W) XmuDrawRoundedRectangle(dpy, d, blackgc, 0, 0, CARD_WIDTH-1, CARD_HEIGHT-1, ROUND_W, ROUND_H); else #endif XDrawRectangle(dpy, d, blackgc, 0, 0, CARD_WIDTH-1, CARD_HEIGHT-1); } static void get_card(int c) { /* try to load card image from xpm file */ char name[200]; read_images(); if (c >= 52) { if (c == CARDBACK) { sprintf(name, "Cardback%d", 1 + (int)(game.seed & 0xfff) % cc.numbacks); } else if (c >= JOKER) { sprintf(name, "Joker%d", 1 + ((c - JOKER) + (int)((game.seed / cc.numbacks) & 0xfff)) % cc.numjokers); /* use all different jokers, starting at rnd position */ } else if (c < 56) { sprintf(name, "Empty.%s", US_suit_name[SUIT(c)]); } else *name = '\0'; } else sprintf(name, "%s.%s.pic", US_rank_name[RANK(c)], US_suit_name[SUIT(c)]); card_map[c] = start_card(c); if (*name && overlap_picture(name, 0, card_map[c])) { /* has map, just draw a rounded rectangle as border around it */ finish_card(c, card_map[c]); return; } if (c == CARDBACK) { /* second try with fallback cardback */ fprintf(stderr, "xpat2: cannot read %s, trying fallback cardback\n", name); if (!overlap_picture("Cardback0", 0, card_map[c])) { /* if nothing works, try a very rudimetary one! (white area) */ /* XClearArea(dpy, card_map[c], 0, 0, CARD_WIDTH, CARD_HEIGHT, False); */ int i; XFillRectangle(dpy, card_map[c], whitegc, 0, 0, CARD_WIDTH, CARD_HEIGHT); for (i = 5; i < CARD_WIDTH/2-2; i+=4) XDrawRectangle(dpy, card_map[c], blackgc, i, i, CARD_WIDTH-2*i-1, CARD_HEIGHT-2*i-1); } finish_card(c, card_map[c]); return; } if (c >= 56) { fprintf(stderr, "xpat2: cannot read %s\n", name); exit(1); } /* OK, we have to create it ourselves. */ /* 2) a white pixmap of full cardsize is created. The width and height are taken from the Cards.conf file (1st line) and default to 79x123. */ /* basic initialisation */ paint_large_card(RANK(c), SUIT(c), card_map[c]); finish_card(c, card_map[c]); #ifdef SAVE_IMAGES if (*name) write_xpmfile(name, card_map[c], 0); #endif } void PaintCard(int x, int y, int c, int w, int h) { #ifdef ALLATONCE static int loaded = 0; if (!loaded && !card.cardset) { int i; loaded = 1; /* show_message(TXT_LOADING); XSync(dpy, 0); */ /* read all the cards we need in any case. Do not read */ /* Cardbacks or Jokers, they are possibly not needed */ /* printf("before read_images: %ld\n", time(NULL)); */ read_images(); for (i = 0; i < 56; ++i) { /* if (!(i&3)) printf("before card %d: %ld\n", i, time(NULL)); */ get_card(i); } /* printf("after cards are contructed: %ld\n", time(NULL)); */ /* show_message(TXT_WELCOME, VERSION); */ if (big.map) free_picture(&big); free_picture(&p_rank); free_picture(&p_suit); } #endif if (c == NOTHING) /* return; */ goto outline; /* this is better */ #ifdef LOADCARDS if (card.cardset) { /* externally loaded cards from bit images */ if (IS_JOKER(c)) c = SUIT(c) + SUITSYMBOL; /* do this instead */ if (c < numcards) { paint_external_card(x, y, c); return; } else if (c == CARDBACK) { if (!w) w = CARD_WIDTH; if (!h) h = CARD_HEIGHT; paint_cardback(x, y, w, h, table); return; } else { /* must be suit symbol */ c = OUTLINE; /* do outline as replacement */ /* and fall thru */ } } #endif /* JOKERs not yet fully implemented */ if (IS_JOKER(c)) c = JOKER + (c-JOKER) % MAXJOKERS; if (c != OUTLINE) { if (!card_map[c]) /* must make cardmap */ get_card(c); w += ROUND_W; h += ROUND_H; if (w == ROUND_W || w > CARD_WIDTH) w = CARD_WIDTH; if (h == ROUND_H || h > CARD_HEIGHT) h = CARD_HEIGHT; XSetClipOrigin(dpy, cardbackgc, x, y); XCopyArea(dpy, card_map[c], table, cardbackgc, 0, 0, w, h, x, y); return; } outline: /* if (c == OUTLINE) */ /* to be sure the place is clear: */ XClearArea(dpy, table, x, y, CARD_WIDTH, CARD_HEIGHT, False); #ifndef NO_ROUND_CARDS if (ROUND_W) XmuDrawRoundedRectangle(dpy, table, blackgc, x, y, CARD_WIDTH-1, CARD_HEIGHT-1, ROUND_W, ROUND_H); else #endif XDrawRectangle(dpy, table, blackgc, x, y, CARD_WIDTH-1, CARD_HEIGHT-1); } xpat2-1.07/src/xpat.h100644 146 144 50264 6714330462 13127 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module xpat.h */ /* */ /* Copyright (C) 1993, 1994 by Heiko Eissfeldt and Michael Bischoff */ /* */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. (The file COPYRIGHT.GNU) You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* */ /* */ /* This file is included by all source files of xpat. */ /* 24-Feb-1993: First release (0.1) */ /* 04-May-1993: starting to work on 0.7 */ /* file renamed to xpat.h from gpat.h */ /* 29-Jan-1994: Release 1.0 */ /* */ /* 02-Apr-1994: Reworked and commented this file, with xpat version 2 */ /* in mind. */ /* *-Apr-1999: extended for Qt widget set (implies C++ components) */ /* */ /* Structure of the sources: */ /* - [a-z]*.c are pure ANSI-C / Posix.1 files; they contain as much */ /* of the logic as possible. */ /* Among these, r_*.c contain code specfic to certain rule sets */ /* Files which include xpatgeo.h cope with the layout on a */ /* windowing system, but are not specific to one of them. */ /* - [A-Z]*.c are interface-specific. */ /* */ /*****************************************************************************/ #include #include #include #include #include #include #ifndef EXIT_FAILURE /* poor old SUN's */ #define EXIT_FAILURE (-1) #endif #ifndef max #define max(a, b) ((a) > (b) ? (a) : (b)) #define min(a, b) ((a) < (b) ? (a) : (b)) #endif typedef int boolean; /* just one bit of information */ typedef int Cardindex; /* range from 0 to MAXCARDS-1 */ typedef int Pileindex; /* range from 0 to MAXPILES */ typedef int Card; /* range from 0 to 51, plus CARDBACK... */ typedef unsigned long Move; typedef enum { Stack, Slot, FaceupDeck, FacedownDeck, Tmp } Pile; typedef enum { Club, Spade, Heart, Diamond } Suit; typedef enum { Ace, Deuce, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King } Rank; struct key_action { char *string; void (*action)(void); struct key_action *next; }; FILE *lang_fopen(const char *filename); #define True 1 #define False 0 #define MAXCARDS (Cardindex)504 #define MAXPILES (Pileindex)63 /* The rules structure describes the current set of rules. The game.in this structure is not modified during a game, not even when selecting 'new game'. The game.is copied into the structure by the loadgame() and new_rules() functions. The major part is just a copy of the standard description of the rule set with the given name. Some entries are customised then. (For example, the number of slots.) Pointer entries marked as optional can be omitted (i.e. set to NULL) without making the game crash. */ extern struct rules { const char *shortname; /* Identifier to select a rule set. It appears in the menus and is used for the icon name. */ const char *longname; /* Optional. This can be a longer description, which is used for the window title in the Xlib version. */ const char *abbrev; /* Optional. Abbreviation for `shortname', for rule sets with spaces or very long names. */ int layout_hints; /* This is a classification of the games, which is mainly used by the layout function to find a nice setting. The current values are 0: Gypsy, Spider, Klondike 1: FreeCell, SeaHaven (no Deck, Tmp instead) 2: Idiot's Delight (Just one stack) 3: Monte Carlo (layout must be fixed!) 4: Midnight Oil 5: Michael's Fantasy 6: Royal Cotillion 7: Baker's Dozen */ int variant; /* storage for some game parameters which don't fit anywhere else. */ #define DECK_SOURCE 0x0001 /* has visible deck from which single cards can be moved (Klondike) */ #define HINTS_LESSER 0x0002 /* only display hints, if their dst pile has a lesser index than the srcpile (MonteCarlo) */ #define STACKS_MULTI 0x0004 /* show hints for multiple move to stack */ #define NODEAL 0x0008 /* this type of game has no 'deal cards' or equivalent */ #define DECK_VISIBLE 0x0010 /* topmost card of the deck is visible */ #define AUTOFILL_TMPS 0x0020 /* tmp spaces are filled from vdeck or ideck */ #define KLONDIKE_DEAL 0x0040 /* Klondike-type of dealing cards */ int customizable; /* These bits specify, which game parameters may be customized. */ int customized; /* These bits specify, which game parameters actually are customized. */ #define CUSTOM_DECKS 0x001 #define CUSTOM_SLOTS 0x002 #define CUSTOM_FACEUP 0x004 #define CUSTOM_FACEDOWN 0x008 #define CUSTOM_JOKERS 0x010 #define CUSTOM_TMPS 0x020 #define CUSTOM_STD 0x03f /* everything above ORed together */ #define CUSTOM_PARAM0 0x040 #define CUSTOM_PARAM1 0x080 #define CUSTOM_PARAM2 0x100 #define CUSTOM_PARAM3 0x200 /* Now comes a block with the game parameters */ Cardindex numcards; /* usually 52 or 104 (may be more, if jokers are used) */ Pileindex numstacks; /* number of stacks, usually twice the number of decks */ Pileindex numslots; /* number of slots */ Pileindex numtmps; /* number of temporary storages */ int numdecks; /* number of decks */ int cards_per_color; /* usually 13. This entry is not supported yet. It will be used to support decks ranking 7,8,9,10,jack,queen,king,ace */ int numjokers; /* number of jokers. generally 0 */ /* The following parameters may serve different purposes in different rule sets, so their name doesn't give too much info. With every parameter, there may be assigned a corresponding counter, in which case the parameter is used to initialise the counter. This feature can be used for special actions which are allowed only a limited number of times per game. Examples are flipping the deck in the Klondike game or shuffling the slots in Midnight Oil */ int param[4]; int facedown; /* number of cards facedown in each slot at */ /* beginning of game (rounded down) */ int faceup; /* number of cards faceup */ int newgame_bits; /* Directions to the generic newgame function, in case you don't have your own function. */ #define SEQUENTIAL 0x0200 /* Fill slots from beginning to end */ #define SLOTS_SAME 0x0400 /* All slots same number of cards */ #define FORCE_SLOTS 0x0800 /* Extra cards on slots (FreeCell) */ void (*new_game)(void); /* Optional: Initialize a new game. In case you supply your own function, you may redefine the meaning of the newgame_bits entry for your own. */ int (*game_won)(void); /* Optional: If the winning condition is different from: `all non-jokers on the stacks' */ int (*new_cards)(void); /* Optional: check if it is possible to deal new cards or perform a similar action (shuffle, Midnight Oil). The default behaviour is to allow dealing cards, if there are any left. */ int move_bits; /* hints about the validity of moves */ #define ES_MASK 0x0003 /* moves to empty slots */ #define ES_NONE 0x0000 /* no move to empty slots allowed. (Midnight Oil) */ #define ES_KINGS 0x0001 /* only kings may go there (Klondike) */ #define ES_ALL 0x0002 /* all cards are allowed (Gypsy, Spider) */ #define ES_CLUBS 0x0003 /* only clubs suit is allowed (Oonsoo) */ #define US_MASK 0x000c /* moves to used slots */ #define US_NONE 0x0000 /* no move to used slots allowed */ #define US_RS 0x0004 /* rank and suit must match (Midnight Oil, Seahaven) */ #define US_RA 0x0008 /* rank and alternate colour (Gypsy, FreeCell, Klondike) */ #define US_R 0x000c /* rank and any suit (Spider) */ #define MG_MASK 0x0030 /* move groups */ #define MG_NONE 0x0000 /* only single cards may be moved */ #define MG_RS 0x0010 /* rank and suit (Spider) */ #define MG_RA 0x0020 /* rank and alternate colour (Gypsy, Klondike) */ #define MG_R 0x0030 /* rank and any suit (currently not needed) */ #define DC_MASK 0x00c0 /* deal cards valid? */ #define DC_ALWAYS 0x0000 /* always deal cards possible, if cards are are there */ #define DC_NOEMPTY 0x0040 /* only deal cards, if no empty slots (Spider) */ #define DC_STRONGOK 0x0080 /* only deal, if all slots are very fine */ #define DC_RELAXEDOK 0x00c0 /* only deal, if all slots are nearly fine */ #define ST_MASK 0x0300 #define ST_NONE 0x0000 /* no cards explicitly movable to stack */ #define ST_ONE 0x0100 /* move single cards to stacks if matches */ #define ST_13 0x0200 /* only full sequence is stackable */ #define STACK_SOURCE 0x4000 /* stack can be source of move */ Move (*deal_cards)(void); /* Optional: custom card dealing function */ void (*undeal_cards)(int); /* Optional: custom card undealing function */ Cardindex (*stackable)(Pileindex); /* Optional: custom function to select a group of cards which may be movable to a stack. The function should return the index of the first card to be moved, or -1, if no cards are stackable. */ int (*movevalid)(Cardindex, Pileindex); /* Optional: In case the above bits are not sufficient to decide about a move, you can define your own function. (Idiot's Delight, Monte Carlo) */ int (*valid)(Card, Card); /* Optional: A function to decide if a group of cards may be moved in one turn */ int (*relaxed_valid)(Card, Card); /* Optional: A function to decide if a group of cards is in sequence in the relaxed sense */ int (*good_hint)(Cardindex, Pileindex); /* Optional. May return a value of the specified move. Hints are sorted in descending order of their estimated value. If this function is not supplied, all hints are considered to be of equal value. The auto-play function stops, if a move's value does not reach a given bound. */ int (*automove)(Cardindex); /* Optional: a function to select a destination pile for the given sequence of cards. should return 0, if the specified card(s) cannot be moved anywhere. The default function should do in most cases */ int (*score)(void); /* Optional: a score routine */ int maxscore; /* Optional: maximum score reachable */ int paramstring[4]; /* Optional: used to print out counter[1..3] */ int inited; /* set to nz when rules are used */ void (*initfunc)(void); /* function to be called if rules are inited */ struct key_action *local_bindings; /* calculate minimum window size: */ void (*special_minwindow)(int, int, int, int, int *, int *); /* define layout for given window size (with knowledge of geo): */ int (*special_layout)(void); } rules; /* only parts of this structure are saved: */ extern struct game { long seed; /* seed of this game */ boolean finished; /* was this game once finished? */ boolean randomgame; /* was the seed explicitly given */ Card cards[MAXCARDS]; /* array of the cards (0..51, 60..62?) */ Pile piletype[MAXPILES]; /* what sort of pile this is */ Cardindex ind[MAXPILES+1]; /* stacks + slots + deck + terminator */ boolean visible[MAXCARDS]; /* True, if a card is face-up */ int n_moves; /* currently used moves */ int stored_moves; /* ptr, for redo and store_move */ int move_ptr; /* ptr, points to current_move */ int cheat_count; /* number of undos which turned back cards */ int savecount; /* How often was this game saved? */ int counter[4]; /* */ /* here begins the old data structure */ int numpiles; /* number of piles in this game */ int bookmark; /* move number of bookmark */ Cardindex srcind; #define UNSELECTED (-1) #define ROTATE_UP_SEL (-2) #define ROTATE_DOWN_SEL (-3) Cardindex arrow_srcind; Pileindex arrow_dstpile; boolean graphic; int pile_changed[MAXPILES]; int numalloc; /* space allocated for stored moves */ Move *move; /* pointer to moves */ int disable[MAXPILES]; /* disable bits */ } game; #define PILE_UNCHANGED 0x7fff #define SUIT(i) ((i) & 3) #define RANK(i) ((i) >> 2) #define JOKER 60 #define IS_JOKER(i) ((i) >= JOKER) #define INDEX_OF_LAST_CARD(i) (game.ind[(i)+1]-1) #define INDEX_OF_FIRST_CARD(i) game.ind[i] #define STACK(i) (i) #define XPATSLOT(i) ((i) + rules.numstacks) #define IDECK (game.numpiles-1) #define VDECK (game.numpiles-2) #define IS_STACK(i) ((i) < rules.numstacks) #define IS_SLOT(i) (game.piletype[i] == Slot) #define CARDS_ON_PILE(i) (game.ind[(i)+1] - game.ind[(i)]) #define EMPTY(i) (!CARDS_ON_PILE(i)) #define FIRST_SLOT (rules.numstacks) #define LAST_SLOT (rules.numstacks+rules.numslots-1) #define FIRST_STACK 0 #define LAST_STACK (rules.numstacks-1) #define CARDS_ON_DECK (rules.numcards - game.ind[IDECK]) /* Prototypes: */ /* Prototypes of the Xlib interface / widget that are known to the game: */ /* (these should go into a different .h file) */ #ifdef SOUND int checksound(void); void play_sound(const char *); #else #define play_sound(x) #endif void flush_display(void); void move_card_data(Cardindex dst, Cardindex src); /* cards.c */ void draw_pileupdate(Pileindex pile, int delta); boolean pile_resize(Pileindex); void new_rules_notify(void); void new_rules_coming(void); void win_game(void); /* ? */ void refresh_screen(void); /* request complete redraw */ /* ? */ void show_arrow(int); /* hide/show/redisplay the hint arrow */ void show_mark(boolean); /* markcard.c */ void show_message(const char *, ...); void request_confirm(void (*dofunc)(void), const char *prompt); /* layout.c */ void indep_generic_minwindow(int *, int *, int *, int *); int generate_layout(void); Cardindex FindCardOfMousePos(Pileindex pileno, int mx, int my); void generic_minwindow(void); void obtain_current_geometry(void); /* U */ /* Prototypes of the game that are known to the Xlib interface / widget: */ typedef enum { Disable, Enable, EnableAndRedraw } GraphicsControl; void graphics_control(GraphicsControl cmd); void graphics_pile_control(GraphicsControl cmd, Pileindex pile); Pileindex getpile(Cardindex); void key_pressed(char *str); void button_pressed(Pileindex pile, Cardindex card, int button); void switch_uid(int); void save_game(const char *); void load_game(const char *); void new_rules(const char *, int, Pileindex, int, int, int, int, int, int, int, int); void newgame(long); void change_rules(const char *new_rules_name); void *malloc_(size_t); char *strsav(const char *); /* commands (which can be assigned to buttons */ void rq_LeavePat(void); void rq_RestartGame(void); void rq_AnotherGame(void); void cmd_ResetHints(void); void cmd_DoHint(void); void cmd_NextHint(void); void cmd_PreviousHint(void); void cmd_CancelSelection(void); void cmd_AllMoves(void); void cmd_UndoMove(void); void cmd_RedoMove(void); void cmd_DealCards(void); void cmd_LeavePat(void); void cmd_ShowScore(void); void cmd_AnotherGame(void); void cmd_RestartGame(void); void cmd_ReplayGame(void); void cmd_Layout(void); void cmd_SaveGame(void); void cmd_ShowVersion(void); void cmd_ToStack(void); void cmd_OneToStack(void); /* selected card(s) */ void cmd_AllToStack(void); /* all possible */ void cmd_DropBookmark(void); void cmd_GotoBookmark(void); void cmd_Cancel(void); void cmd_Confirm(void); void cmd_Info(void); void cmd_MinWindow(void); void cmd_PreferredWindow(void); void cmd_RotateUp(void); void cmd_RotateDown(void); /* Messages -- internationalisation */ const char *get_lang(void); void read_message_file(const char *filename); void read_keyboard_file(const char *filename); void add_keybinding(struct key_action **cp, const char *cmd, const char *function); struct rules *getrules(const char *ruleset); extern const char *US_rank_name[], *US_suit_name[]; extern const char *xpat_messages[]; #define TXT_QUIT_CONFIRM (xpat_messages[0]) #define TXT_NEW_CONFIRM (xpat_messages[1]) #define TXT_RESTART_CONFIRM (xpat_messages[2]) #define TXT_SUIT (xpat_messages+3) #define TXT_SUIT0 (xpat_messages[3]) #define TXT_SUIT1 (xpat_messages[4]) #define TXT_SUIT2 (xpat_messages[5]) #define TXT_SUIT3 (xpat_messages[6]) #define TXT_JOKER (xpat_messages[7]) #define TXT_RANK (xpat_messages+8) #define TXT_ACE (xpat_messages[8]) #define TXT_DEUCE (xpat_messages[9]) #define TXT_THREE (xpat_messages[10]) #define TXT_FOUR (xpat_messages[11]) #define TXT_FIVE (xpat_messages[12]) #define TXT_SIX (xpat_messages[13]) #define TXT_SEVEN (xpat_messages[14]) #define TXT_EIGHT (xpat_messages[15]) #define TXT_NINE (xpat_messages[16]) #define TXT_TEN (xpat_messages[17]) #define TXT_JACK (xpat_messages[18]) #define TXT_QUEEN (xpat_messages[19]) #define TXT_KING (xpat_messages[20]) #define TXT_STACK (xpat_messages[21]) #define TXT_SLOT (xpat_messages[22]) #define TXT_DECK (xpat_messages[23]) #define TXT_TMP (xpat_messages[24]) #define TXT_IDECK (xpat_messages[25]) #define TXT_NOHINTGIVEN (xpat_messages[26]) #define TXT_CANMOVE (xpat_messages[27]) #define TXT_NOHINTS (xpat_messages[28]) #define TXT_WRAPPING (xpat_messages[29]) #define TXT_BOOKMARK_SET (xpat_messages[30]) #define TXT_YOU_WIN (xpat_messages[31]) #define TXT_NONE_TO_STACK (xpat_messages[32]) #define TXT_SAVE_ERR_BASIC (xpat_messages[33]) #define TXT_LOAD_ERR_BASIC (xpat_messages[34]) #define TXT_SAVE_ERR_OPEN (xpat_messages[35]) #define TXT_LOAD_ERR_OPEN (xpat_messages[36]) #define TXT_SAVE_ERR_HEADER (xpat_messages[37]) #define TXT_LOAD_ERR_HEADER (xpat_messages[38]) #define TXT_SAVE_ERR_MOVES (xpat_messages[39]) #define TXT_LOAD_ERR_MOVES (xpat_messages[40]) #define TXT_SAVE_OK (xpat_messages[41]) #define TXT_LOAD_OK (xpat_messages[42]) #define TXT_LOAD_ERR_BADMAGIC (xpat_messages[43]) #define TXT_FLIPPING (xpat_messages[45]) #define TXT_NEWCARDS (xpat_messages[46]) #define TXT_NONEWCARDS (xpat_messages[47]) #define TXT_NOSOURCEPILE (xpat_messages[48]) #define TXT_MOVED_TO_STACK (xpat_messages[49]) #define TXT_MOVENOTPOSSIBLE (xpat_messages[50]) #define TXT_NOUNDO (xpat_messages[51]) #define TXT_UNDO (xpat_messages[52]) #define TXT_UNDOCHEAT (xpat_messages[53]) #define TXT_NOREDO (xpat_messages[54]) #define TXT_REDO (xpat_messages[55]) #define TXT_REDOUNCHEAT (xpat_messages[56]) #define TXT_INVALIDMOVE (xpat_messages[57]) #define TXT_BADSRC (xpat_messages[58]) #define TXT_SRCSELECTED (xpat_messages[59]) #define TXT_BADSLOT (xpat_messages[60]) #define TXT_ABORTED (xpat_messages[61]) #define TXT_BADCMD (xpat_messages[62]) #define TXT_NOMOVE (xpat_messages[63]) #define TXT_VERSION (xpat_messages[64]) #define TXT_INFO1 (xpat_messages[65]) #define TXT_SCORE (xpat_messages[66]) #define TXT_NOSCORE (xpat_messages[67]) #define TXT_CARDSLEFT (xpat_messages[68]) #define TXT_HELP_KEYS (xpat_messages[69]) #define TXT_HELP_RULES (xpat_messages[70]) #define TXT_LOADING (xpat_messages[92]) #define TXT_WELCOME (xpat_messages[93]) #define TXT_ROTUP (xpat_messages[95]) #define TXT_ROTDN (xpat_messages[96]) #define TXT_SLOTREQUIRED (xpat_messages[97]) #define TXT_CARDNOTVISIBLE (xpat_messages[98]) #define TXTI_SHUFFLE 100 /* block of 4 messages */ #define TXTI_FLIP 104 /* " */ #define TXTI_ROTATE 108 /* " */ #define TXTI_CARDS 112 /* " */ #define TXT_NOFLIPLEFT (xpat_messages[105]) #define TXT_NODEAL (xpat_messages[112]) #define TXT_NOCARDSLEFT (xpat_messages[113]) #define TXT_MOVEBLOCK 116 #define TXT_SCOREBLOCK 120 extern int rng; #define SLOTFACTOR 3 /* minimum std height of a slot, measured in units (CARD_HEIGHT+graphic.ygap) */ xpat2-1.07/src/version.h100644 146 144 30 7201330675 13540 0ustar mbimathopt#define VERSION "1.07" xpat2-1.07/src/Joker.bm100644 146 144 17127 5461331005 13365 0ustar mbimathopt#define Joker_width 79 #define Joker_height 123 static char Joker_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x80, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x24, 0x81, 0x00, 0x02, 0x00, 0x00, 0x00, 0xdc, 0x0f, 0x00, 0x26, 0x83, 0x00, 0x02, 0x00, 0x00, 0x80, 0xa5, 0x06, 0x00, 0xfa, 0x82, 0x40, 0x02, 0x00, 0x80, 0xdf, 0x1f, 0x08, 0x00, 0xfa, 0x82, 0x80, 0x01, 0x00, 0x40, 0x74, 0x08, 0x08, 0x00, 0x72, 0x82, 0x00, 0x00, 0x00, 0x30, 0xb1, 0x2a, 0x08, 0x00, 0x52, 0x82, 0x80, 0x01, 0x00, 0x38, 0xf8, 0x55, 0xf8, 0x01, 0x8c, 0x81, 0x40, 0x02, 0x00, 0x24, 0xfc, 0xef, 0x88, 0x06, 0xf8, 0x80, 0x40, 0x02, 0x80, 0x23, 0x74, 0x5f, 0xbd, 0x0a, 0x00, 0x80, 0x40, 0x02, 0x00, 0x61, 0x05, 0xbd, 0xd6, 0x1a, 0x00, 0x80, 0x80, 0x01, 0x80, 0x51, 0x06, 0xf0, 0x6d, 0x35, 0x00, 0x80, 0x00, 0x00, 0x40, 0x90, 0x3d, 0xaf, 0xb6, 0x2d, 0x00, 0x80, 0x40, 0x02, 0x20, 0x08, 0x18, 0xd4, 0xdd, 0x2b, 0x00, 0x80, 0x40, 0x01, 0x20, 0x0c, 0x12, 0xd7, 0xff, 0x35, 0x00, 0x80, 0xc0, 0xe0, 0x0b, 0x03, 0x08, 0xc6, 0xf7, 0x3e, 0x00, 0x80, 0x40, 0xa1, 0xf8, 0x80, 0x04, 0xc1, 0xc2, 0x35, 0x00, 0x80, 0x40, 0xe2, 0x07, 0xe0, 0x39, 0xc0, 0xc3, 0x35, 0x00, 0x80, 0x00, 0x80, 0x01, 0x08, 0x42, 0x40, 0x43, 0x35, 0x00, 0x80, 0xc0, 0x03, 0x00, 0x04, 0x19, 0xca, 0x81, 0x1d, 0x00, 0x80, 0x40, 0x00, 0x00, 0x24, 0x32, 0xf8, 0x81, 0x9e, 0x3f, 0x80, 0xc0, 0x00, 0x00, 0x82, 0x10, 0x6e, 0x90, 0xcd, 0xff, 0x80, 0x40, 0x00, 0x00, 0x01, 0x01, 0x12, 0xa0, 0x6e, 0x74, 0x80, 0xc0, 0x03, 0x80, 0x84, 0x0b, 0x51, 0x8a, 0x27, 0x61, 0x83, 0x00, 0x00, 0x00, 0x01, 0x58, 0x12, 0xa0, 0xa2, 0xc0, 0x83, 0xc0, 0x01, 0x00, 0x44, 0x89, 0x04, 0x80, 0xa3, 0xc0, 0x81, 0x40, 0x02, 0xc0, 0x01, 0x80, 0x00, 0xa0, 0x30, 0xc8, 0x8f, 0xc0, 0x01, 0x70, 0x08, 0x0a, 0x00, 0x80, 0x7a, 0xd0, 0x8f, 0x40, 0x01, 0x6c, 0x11, 0x41, 0x20, 0x58, 0xfc, 0x94, 0x8f, 0x40, 0x02, 0xda, 0x4a, 0x00, 0x40, 0x94, 0x6e, 0xc0, 0x80, 0x00, 0x00, 0x7b, 0x01, 0x00, 0x0a, 0x1d, 0x3f, 0x60, 0x80, 0x00, 0x00, 0xd5, 0x01, 0x08, 0x01, 0xfb, 0x1f, 0x61, 0x80, 0x00, 0x80, 0x7c, 0x4f, 0x00, 0xa0, 0xee, 0x0f, 0x52, 0x80, 0x00, 0x40, 0xab, 0x35, 0x04, 0xa0, 0xfb, 0x07, 0x75, 0x80, 0x00, 0x20, 0xdd, 0x3f, 0xf3, 0xbe, 0xff, 0x03, 0x61, 0x80, 0x00, 0x50, 0x77, 0xfd, 0x79, 0xf7, 0xf7, 0x01, 0x63, 0x80, 0x00, 0xd4, 0xbd, 0x77, 0xff, 0xff, 0xfe, 0xbf, 0x61, 0x80, 0xc0, 0xef, 0xdf, 0xdf, 0x7f, 0xdf, 0x7f, 0x43, 0xe2, 0x80, 0xe0, 0x7a, 0xf7, 0xf6, 0xfe, 0x5b, 0xff, 0x27, 0xc2, 0x80, 0x60, 0xde, 0xaf, 0xb4, 0xdd, 0xe9, 0xff, 0x1b, 0xc0, 0x80, 0x40, 0x5a, 0x7b, 0xc4, 0x7f, 0xe2, 0xff, 0x27, 0x60, 0x80, 0xc0, 0xb5, 0xaf, 0x22, 0x9b, 0xfa, 0xb9, 0x02, 0x60, 0x80, 0xa0, 0xc7, 0x3d, 0x06, 0xac, 0xfa, 0xff, 0xd3, 0xc1, 0x80, 0x00, 0xaa, 0x3b, 0x02, 0x20, 0x5a, 0xbc, 0xc6, 0xf3, 0x80, 0x00, 0x93, 0x3e, 0x49, 0xc0, 0x72, 0xfd, 0x57, 0xdf, 0x81, 0x00, 0x93, 0x37, 0x14, 0x90, 0xc4, 0xbe, 0xf5, 0x6d, 0x80, 0x40, 0xe3, 0x9b, 0x08, 0x45, 0x99, 0xee, 0xe7, 0xdb, 0x80, 0xa0, 0xc5, 0x18, 0x36, 0xa9, 0x2a, 0x3d, 0xff, 0xf5, 0x80, 0xf0, 0x6d, 0x1c, 0x39, 0x83, 0xa5, 0x7e, 0xd7, 0xdb, 0x80, 0xe0, 0x4c, 0x3c, 0x5e, 0xc6, 0x55, 0x5f, 0xfb, 0xd7, 0x80, 0x38, 0x15, 0xfe, 0x75, 0xcf, 0x4b, 0x7f, 0xe1, 0xed, 0x81, 0x98, 0x50, 0xfd, 0x5d, 0xee, 0xab, 0x9f, 0x51, 0xf5, 0x83, 0x38, 0x2b, 0x57, 0xc4, 0xff, 0xa5, 0x37, 0xe6, 0x5b, 0x83, 0x90, 0x00, 0x7d, 0x75, 0xef, 0xca, 0x8f, 0xb3, 0xb6, 0x86, 0x98, 0x82, 0x56, 0xd4, 0x3a, 0x69, 0x97, 0x7a, 0x6d, 0x86, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xbf, 0xbe, 0x87, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xf0, 0xbe, 0xfe, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0x30, 0x5b, 0xaf, 0x74, 0x4b, 0xae, 0x15, 0xb5, 0xa0, 0x8c, 0xb0, 0xb6, 0xe6, 0xf8, 0xa9, 0x7b, 0x57, 0x5f, 0x80, 0x84, 0x60, 0xed, 0x33, 0xf6, 0xd2, 0xff, 0x11, 0x75, 0x6a, 0x8e, 0xe0, 0x57, 0xc5, 0xfc, 0xea, 0x3b, 0xdd, 0x5f, 0x85, 0x8c, 0xc0, 0xdb, 0x43, 0x7f, 0xe9, 0x79, 0xd7, 0x3f, 0x54, 0x8e, 0x80, 0xf5, 0x6f, 0x7d, 0xd5, 0x31, 0x3d, 0x1e, 0x99, 0x83, 0x80, 0xed, 0x75, 0xbf, 0xd2, 0x60, 0x4e, 0x1c, 0xdb, 0x87, 0x80, 0xd7, 0x7f, 0x5e, 0xaa, 0x4a, 0x36, 0x8c, 0xd1, 0x82, 0x80, 0xed, 0xf3, 0xbb, 0x4c, 0x51, 0x88, 0xec, 0x63, 0x81, 0x00, 0xdb, 0xd7, 0xbe, 0x91, 0x04, 0x14, 0xf6, 0x64, 0x80, 0xc0, 0x7d, 0xf5, 0x5f, 0xa7, 0x01, 0x49, 0xbe, 0x64, 0x80, 0x80, 0xe7, 0xb1, 0x1e, 0x2d, 0x02, 0x20, 0xee, 0x2a, 0x80, 0x80, 0xc1, 0xe5, 0xff, 0xaf, 0x1a, 0x30, 0xde, 0xf1, 0x82, 0x00, 0x03, 0xa0, 0xce, 0xaf, 0x6c, 0xa2, 0xfa, 0xd6, 0x81, 0x00, 0x03, 0xf2, 0xff, 0x23, 0xff, 0x11, 0x6f, 0x2d, 0x81, 0x80, 0x01, 0xec, 0xff, 0xcb, 0xdd, 0x96, 0xfa, 0x3d, 0x83, 0x80, 0x21, 0xf2, 0x7f, 0xed, 0xbf, 0xb7, 0x77, 0xaf, 0x83, 0x80, 0x23, 0x61, 0xff, 0x7d, 0xff, 0xfd, 0xfd, 0xfb, 0x81, 0x00, 0xc3, 0xfe, 0xbf, 0xff, 0x7f, 0xf7, 0xde, 0x15, 0x80, 0x00, 0x63, 0xc0, 0xf7, 0x77, 0xcf, 0x5f, 0x77, 0x05, 0x80, 0x00, 0x43, 0xe0, 0xff, 0xbe, 0x67, 0xfe, 0x5d, 0x02, 0x80, 0x00, 0x57, 0xf0, 0xef, 0x02, 0x10, 0xd6, 0x6a, 0x01, 0x80, 0x00, 0x25, 0xf8, 0xbb, 0x02, 0x00, 0x79, 0x9f, 0x00, 0x80, 0x00, 0x43, 0xfc, 0x6f, 0x40, 0x08, 0xc0, 0x55, 0x00, 0x80, 0x00, 0x03, 0x7e, 0x5c, 0x28, 0x00, 0x40, 0x6f, 0x00, 0x80, 0x80, 0x01, 0xbb, 0x14, 0x01, 0x00, 0xa9, 0x2d, 0x20, 0x81, 0xf8, 0x94, 0x1f, 0x0d, 0x02, 0x41, 0x44, 0x1b, 0x40, 0x81, 0xf8, 0x05, 0xaf, 0x00, 0x00, 0x28, 0x08, 0x07, 0xc0, 0x81, 0xf8, 0x09, 0x86, 0x02, 0x80, 0x00, 0xc0, 0x01, 0x20, 0x81, 0xc0, 0x81, 0xe2, 0x00, 0x90, 0x48, 0x11, 0x00, 0xc0, 0x81, 0xe0, 0x81, 0xa2, 0x02, 0x24, 0x0d, 0x40, 0x00, 0x00, 0x80, 0x60, 0x43, 0xf2, 0x28, 0x45, 0xe8, 0x90, 0x00, 0xe0, 0x81, 0x00, 0x17, 0xbb, 0x02, 0x24, 0x40, 0x40, 0x00, 0x00, 0x81, 0x80, 0xff, 0xd9, 0x04, 0x3b, 0x84, 0x20, 0x00, 0x80, 0x81, 0x00, 0xfe, 0xbc, 0xc0, 0x0f, 0x26, 0x12, 0x00, 0x00, 0x81, 0x00, 0x00, 0xdc, 0xc0, 0x29, 0x4c, 0x10, 0x00, 0xe0, 0x81, 0x00, 0x00, 0x56, 0x61, 0x01, 0x21, 0x08, 0xc0, 0x00, 0x80, 0x00, 0x00, 0xd6, 0xe1, 0x01, 0xce, 0x03, 0xf0, 0x23, 0x81, 0x00, 0x00, 0xd6, 0xa1, 0x41, 0x90, 0x80, 0x8f, 0x42, 0x81, 0x00, 0x00, 0xbe, 0xf7, 0x31, 0x08, 0x60, 0xe8, 0x83, 0x81, 0x00, 0x00, 0xd6, 0xff, 0x75, 0x24, 0x18, 0x02, 0x40, 0x81, 0x00, 0x00, 0xea, 0xdd, 0x15, 0x0c, 0x08, 0x02, 0x20, 0x81, 0x00, 0x00, 0xda, 0xb6, 0x7a, 0xde, 0x04, 0x01, 0x00, 0x80, 0x00, 0x00, 0x56, 0xdb, 0x07, 0x30, 0xc5, 0x00, 0xc0, 0x80, 0x00, 0x00, 0xac, 0xb5, 0x5e, 0x50, 0x43, 0x00, 0x20, 0x81, 0x00, 0x00, 0xa8, 0x5e, 0x7d, 0x17, 0xe2, 0x00, 0x20, 0x81, 0x80, 0x0f, 0xb0, 0x88, 0xfb, 0x1f, 0x12, 0x00, 0x20, 0x81, 0xc0, 0x18, 0xc0, 0x0f, 0xd5, 0x0f, 0x0e, 0x00, 0xc0, 0x80, 0x20, 0x25, 0x00, 0x08, 0xaa, 0x46, 0x06, 0x00, 0x00, 0x80, 0x20, 0x27, 0x00, 0x08, 0x08, 0x17, 0x01, 0x00, 0xc0, 0x80, 0xa0, 0x2f, 0x00, 0x08, 0xfc, 0xfd, 0x00, 0x00, 0x20, 0x81, 0xa0, 0x2f, 0x00, 0xb0, 0xd2, 0x00, 0x00, 0x00, 0x20, 0x80, 0x60, 0x32, 0x00, 0xf8, 0x1d, 0x00, 0x00, 0x00, 0x20, 0x80, 0x40, 0x12, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xe0, 0x81, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80}; xpat2-1.07/src/moves.c100644 146 144 53336 6531345242 13301 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module moves.c */ /* */ /* General utility functions for all rule sets */ /* written by Heiko Eissfeldt and Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "xpatgame.h" #include #include /* for INT_MAX */ #include /* RNG patch: */ int rng = 1; static int myrand(int limit) { /* select one of the RNGs. */ return rng ? (int)(((double)(prand()) / (double)PRANDMAX) * (double)limit) : prand() % limit; } static Move Klondike_deal_cards(void) { int rem = CARDS_ON_PILE(IDECK); if (rem > rules.param[2]) rem = rules.param[2]; graphics_pile_control(Disable, IDECK); graphics_pile_control(Disable, VDECK); if (rem) { int i; /* without graphics: */ for (i = 0; i < rem; ++i) do_move(INDEX_OF_LAST_CARD(IDECK), VDECK); } else { while (!EMPTY(VDECK)) do_move(INDEX_OF_LAST_CARD(VDECK), IDECK); ++game.counter[1]; } graphics_pile_control(EnableAndRedraw, IDECK); graphics_pile_control(EnableAndRedraw, VDECK); return NEW_CARDS_MOVE | MOVE(0, rem); } static void Klondike_undeal_cards(int num) { graphics_pile_control(Disable, IDECK); graphics_pile_control(Disable, VDECK); if (!num) { /* undo flip */ while (!EMPTY(IDECK)) do_move(INDEX_OF_LAST_CARD(IDECK), VDECK); --game.counter[1]; } else { int i; for (i = 0; i < num; ++i) do_move(INDEX_OF_LAST_CARD(VDECK), IDECK); } graphics_pile_control(EnableAndRedraw, IDECK); graphics_pile_control(EnableAndRedraw, VDECK); } Move SlotShuffle(int fwd) { int i, tab[MAXCARDS]; int num = INDEX_OF_FIRST_CARD(LAST_SLOT+1) - INDEX_OF_FIRST_CARD(FIRST_SLOT); Cardindex start = INDEX_OF_FIRST_CARD(FIRST_SLOT); sprand(game.seed); for (i = 0; i < num; ++i) tab[i] = myrand(num - i) + i; if (fwd) { for (i = 0; i < num; ++i) if (tab[i] != i) { /* swap card */ Card c; c = game.cards[start+i]; game.cards[start+i] = game.cards[start+tab[i]]; game.cards[start+tab[i]] = c; } } else { for (i = num-1; i >= 0; --i) if (tab[i] != i) { /* swap card */ Card c; c = game.cards[start+i]; game.cards[start+i] = game.cards[start+tab[i]]; game.cards[start+tab[i]] = c; } } for (i = FIRST_SLOT; i <= LAST_SLOT; ++i) draw_pileupdate(i, 0); return SHUFFLING; } #ifdef DEBUG static int type[200]; static void count(void) { int i; memset(type, 0, sizeof(type)); for (i = 0; i < rules.numcards; ++i) ++type[game.cards[i]]; for (i = 0; i < 52; ++i) if (type[i] != rules.numdecks) fprintf(stderr, "Card %d: Number = %d\n", i, type[i]); } #endif void memo_alloc(int num) { game.numalloc = ((num - 1) | 0xf) + 1; /* multiple of 16 */ if (!(game.move = malloc(game.numalloc * sizeof(Move)))) { fprintf(stderr, "out of memory\n"); exit(EXIT_FAILURE); } } static void makespace(int n) { if (game.move_ptr + n > game.numalloc) { Move *tmpnew; if (!(tmpnew = realloc(game.move, (game.numalloc+256) * sizeof(Move)))) { fprintf(stderr, "out of memory. saving game in xpat.tmp\n"); save_game("xpat.tmp"); exit(EXIT_FAILURE); } game.numalloc += 256; game.move = tmpnew; } } /* A new move is done. This resets the limit of redo to the current point. */ /* Also, the Bookmark is possibly taken back */ /* if the AUTOFILL_TMPS feature is set, empty tmps are filled from the deck */ void store_move(Move m) { makespace(1); if (game.bookmark > game.move_ptr) /* reset Bookmark position */ game.bookmark = game.move_ptr; if ((rules.variant & AUTOFILL_TMPS) && (m & SPECIAL_MOVE) != SPECIAL_MOVE) { Pileindex srcpile = DSTPILE(m >> 16); if (game.piletype[srcpile] == Tmp && (!EMPTY(IDECK) || !EMPTY(VDECK))) { /* this is the case we have to deal with */ makespace(3); game.move[game.move_ptr++] = COMPOUND_BEGIN; game.move[game.move_ptr++] = m; game.move[game.move_ptr++] = !EMPTY(VDECK) ? do_move(INDEX_OF_LAST_CARD(VDECK), srcpile) : do_move(INDEX_OF_LAST_CARD(IDECK), srcpile); m = COMPOUND_END; } } game.move[game.move_ptr] = m; game.stored_moves = ++game.move_ptr; ++game.n_moves; /* now that the work is done, check for finished game */ check_win_game(); } static void undo_give_cards(int num) { /* num = number of cards */ /* printf("undo give %d cards\n", num); */ if (rules.undeal_cards) (*rules.undeal_cards)(num); else if (rules.variant & KLONDIKE_DEAL) Klondike_undeal_cards(num); else { int i; graphics_pile_control(Disable, IDECK); for (i = FIRST_SLOT + num; i != FIRST_SLOT; --i) /* slot i-1 back to deck */ do_move(game.ind[i]-1, IDECK); graphics_pile_control(EnableAndRedraw, IDECK); } } int undo_move(void) { Move m; int retval = 1; /* no cheat */ if (!game.move_ptr) { /* possibly undo restart game? */ if (game.stored_moves) { jumpto_movenr(game.stored_moves); /* must replay the game */ return 1; } return 0; } m = game.move[--game.move_ptr]; --game.n_moves; if ((m & SPECIAL_MOVE) == SPECIAL_MOVE) { switch (m & SPECIAL_MASK) { case COMPOUND_END: { int remember_count, remgraphic; if ((remgraphic = game.graphic)) graphics_control(Disable); /* undo multiple moves */ remember_count = game.n_moves; while (game.move[game.move_ptr-1] != COMPOUND_BEGIN) { if (undo_move() == 2) retval = 2; } --game.move_ptr; game.n_moves = remember_count; if (remgraphic) graphics_control(EnableAndRedraw); } return retval; case ADD_CHEAT: game.cheat_count += (int)(m & SPECIAL_ARGS); return 2; case NEW_CARDS_MOVE: undo_give_cards(DSTPILE(m)); if (DSTPILE(m)) { game.cheat_count += DSTPILE(m); return 2; } return 1; case ROTATE_UP: /* change counter */ { int c; for (c = 0; c < 4; ++c) if (rules.paramstring[c] == TXTI_ROTATE) game.counter[c] -= 2; } RotateDown(SRCIND(m)); return 1; case ROTATE_DOWN: /* change counter */ { int c; for (c = 0; c < 4; ++c) if (rules.paramstring[c] == TXTI_ROTATE) game.counter[c] -= 2; } RotateUp(SRCIND(m)); return 1; case SHUFFLING: SlotShuffle(0); return 1; default: /* printf("Move in error is %08lx\n", m); */ assert(0); } return 0; } /* standard move follows */ if (m & MOVE_TURNED) { m >>= 16; /* upper part = undo information */ ++game.cheat_count; game.visible[game.ind[DSTPILE(m)+1]-1] = 0; /* invisible again! */ retval = 2; } else m >>= 16; /* upper part = undo information */ (void)do_move(SRCIND(m), DSTPILE(m)); if (retval == 2) draw_pileupdate(DSTPILE(m), 0); /* hide card again! */ return retval; } int redo_move(void) { Move m; int retval = 1; if (game.move_ptr == game.stored_moves) return 0; /* no redo possible */ m = game.move[game.move_ptr++]; ++game.n_moves; if ((m & SPECIAL_MOVE) == SPECIAL_MOVE) { switch (m & SPECIAL_MASK) { case COMPOUND_BEGIN: { int remember_count, remgraphic; if ((remgraphic = game.graphic)) graphics_control(Disable); /* redo multiple moves */ remember_count = game.n_moves; while (game.move[game.move_ptr] != COMPOUND_END) { if (redo_move() == 2) retval = 2; } ++game.move_ptr; game.n_moves = remember_count; if (remgraphic) graphics_control(EnableAndRedraw); } return retval; case ADD_CHEAT: game.cheat_count -= (int)(m & SPECIAL_ARGS); return 2; case ROTATE_UP: RotateUp(SRCIND(m)); return 1; case ROTATE_DOWN: RotateDown(SRCIND(m)); return 1; case NEW_CARDS_MOVE: retval = DSTPILE(give_new_cards()); if (retval) { game.cheat_count -= retval; return 2; } return 1; case SHUFFLING: SlotShuffle(1); return 1; default: assert(0); } } if (m & MOVE_TURNED) { --game.cheat_count; retval = 2; } (void)do_move(SRCIND(m), DSTPILE(m)); return retval; } static void shuffle(void) { int i, d, v, c; int tmp[MAXCARDS]; if (game.graphic) show_message(" "); i = 0; for (d = 0; d < rules.numdecks; ++d) for (v = 0; v < rules.cards_per_color; ++v) for (c = 0; c < 4; ++c) tmp[i++] = c + (v << 2); assert(i <= rules.numcards); c = 0; while (i < rules.numcards) tmp[i++] = JOKER + c++; while (c < rules.numjokers) tmp[myrand(rules.numcards)] = JOKER + c++; /* subst old cards */ for (i = rules.numcards; i; --i) { v = myrand(i); /* printf("rand() = %d\n", v); */ /* look for the vth non-empty card in tmp */ c = -1; do { while (tmp[++c] == -1) ; /* skip card */ } while (v--); game.cards[i-1] = tmp[c]; /* printf("c = %d, card = %d\n", c, game.cards[i-1]); */ tmp[c] = -1; } } Pileindex getpile(Cardindex ind) { int i; assert(ind < rules.numcards); i = 0; while (ind >= game.ind[i+1]) ++i; return i; } /* These are the central card moving routines, i.e. the only functions which */ /* change the contents of the game.cards array within a game. */ /* Every time anything is changed, one of these functions is called. */ /* We can reset hint tables at this point. */ Move RotateUp(Cardindex src) { Pileindex p = getpile(src); int c; Cardindex i; cmd_CancelSelection(); i = INDEX_OF_LAST_CARD(p); c = game.cards[i]; while (--i >= src) game.cards[i+1] = game.cards[i]; game.cards[i+1] = c; draw_pileupdate(p, 0); /* change counter */ for (c = 0; c < 4; ++c) if (rules.paramstring[c] == TXTI_ROTATE) ++game.counter[c]; return ROTATE_UP | MOVE(src, 0); } Move RotateDown(Cardindex src) { Pileindex p = getpile(src); int c; Cardindex i; cmd_CancelSelection(); c = game.cards[src]; for (i = src; i < INDEX_OF_LAST_CARD(p); ++i) game.cards[i] = game.cards[i+1]; game.cards[i] = c; draw_pileupdate(p, 0); /* change counter */ for (c = 0; c < 4; ++c) if (rules.paramstring[c] == TXTI_ROTATE) ++game.counter[c]; return ROTATE_DOWN | MOVE(src, 0); } Move do_move(Cardindex srcindex, Pileindex dstpile) { int srcpile, numcards; int tmp[MAXCARDS]; int vis; Move m; cmd_CancelSelection(); /* calls cmd_ResetHints() */ if (srcindex == -1) return NO_MOVE; srcpile = getpile(srcindex); numcards = game.ind[srcpile+1] - srcindex; m = MOVE(srcindex, dstpile); if (srcindex > game.ind[srcpile] && !game.visible[srcindex-1] && (srcpile != IDECK || rules.variant & DECK_VISIBLE)) { game.visible[srcindex-1] = 1; m |= MOVE_TURNED; } memcpy(tmp, game.cards+srcindex, numcards * sizeof(int)); /* moved cards are normally visible */ vis = dstpile != IDECK || rules.variant & DECK_VISIBLE; /* printf("move %d to %d, %d cards\n", srcindex, dstpile, numcards); */ assert(srcpile != dstpile); if (srcpile < dstpile) { /* ldir */ int i; m |= MOVE(game.ind[dstpile+1]-numcards, srcpile) << 16; for (i = srcindex; i < game.ind[dstpile+1]-numcards; ++i) move_card_data(i, i+numcards); memcpy(game.cards+i, tmp, numcards * sizeof(int)); for (; i < game.ind[dstpile+1]; ++i) game.visible[i] = vis; for (i = srcpile + 1; i <= dstpile; ++i) game.ind[i] -= numcards; } else { /* lddr ; shift a block backwards; begin at the tail */ int i; m |= MOVE(game.ind[dstpile+1], srcpile) << 16; for (i = srcindex - 1; i >= game.ind[dstpile+1]; --i) move_card_data(i+numcards, i); memcpy(game.cards + game.ind[dstpile+1], tmp, numcards * sizeof(int)); for (i = 0; i < numcards; ++i) game.visible[game.ind[dstpile+1] + i] = vis; for (i = dstpile+1; i <= srcpile; ++i) game.ind[i] += numcards; } #ifdef DEBUG count(); #endif /* inform graphics interface of change */ draw_pileupdate(srcpile, -numcards); draw_pileupdate(dstpile, numcards); /* printf("Move done is %08lx\n", m); */ return m; } int all_to_stack(void) { int i, flag, anymove; anymove = 0; do { flag = 0; for (i = 0; i < game.numpiles; ++i) { switch (game.piletype[i]) { case Slot: case Tmp: case FaceupDeck: if (move_to_stack(i)) { flag = 1; anymove = 1; } break; default: ; } } } while (flag); return anymove; } static void init_seed(long seed) { if (seed < 0) { game.seed = -1L; /* to guarantee a mismatch later */ seed = (long)time(NULL); } seed %= PRANDMAX; if (seed < 0L) seed += PRANDMAX; /* I think this shouldn't happen */ if (seed == game.seed) { /* restart game */ /* stored_moves stays valid */ game.cheat_count += 1000; } else { game.seed = seed; game.cheat_count = game.stored_moves = 0; game.finished = False; /* this is really a new game */ } game.n_moves = 0; game.move_ptr = 0; game.counter[0] = 0; game.counter[1] = 0; game.counter[2] = 0; game.counter[3] = 0; sprand(seed); } static void distribute(char *xx, int rest, int piles) { int i, k, invert = 0; if (!piles) return; if (2 * rest > piles+1) { rest = piles - rest; invert = 1; } memset(xx, invert, piles); if (rest) { k = (piles-1) / rest + 1; /* ceil(slots/rest) */ for (i = 0; i < piles; i += k) { xx[i] = 1-invert; if (!--rest) break; } /* the rest is distributed quite ugly */ for (i = 0; rest; ++i) if (xx[i] == invert) { xx[i] = 1-invert; --rest; } } } static void gen_newgame(void) { int i, rest; char xx[MAXPILES]; memset(xx, 0, MAXPILES); if (rules.facedown && !rules.faceup) { fprintf(stderr, "newgame(): topmost card must be face-up, correcting it\n"); --rules.facedown; ++rules.faceup; } if (rules.newgame_bits & SLOTS_SAME) rest = 0; else rest = rules.numcards % rules.numslots; /* cards that are too much */ if (rules.numcards < rest + rules.numslots * (rules.faceup + rules.facedown)) { fprintf(stderr, "newgame(): too many cards specified, resetting to min values\n"); rules.faceup = 1; rules.facedown = 0; } /* generate nice distribution of rest cards */ if (rest > rules.numtmps || (rules.newgame_bits & FORCE_SLOTS)) /* distribute on slots */ distribute(xx+FIRST_SLOT, rest, rules.numslots); else /* distribute on tmps */ distribute(xx+LAST_SLOT+1, rest, rules.numtmps); for (i = 0; i <= FIRST_SLOT; ++i) game.ind[i] = 0; for (i = FIRST_SLOT; i <= LAST_SLOT; ++i) { int j; game.ind[i+1] = game.ind[i] + rules.facedown + rules.faceup + xx[i]; for (j = game.ind[i+1] - rules.faceup; j < game.ind[i+1]; ++j) game.visible[j] = 1; /* card is turned */ } while (++i < game.numpiles) game.ind[i] = game.ind[i-1] + xx[i-1]; /* all cards on the tmps are faceup */ for (i = game.ind[LAST_SLOT+1]; i < game.ind[IDECK]; ++i) game.visible[i] = 1; if (rules.variant & DECK_VISIBLE) game.visible[rules.numcards-1] = 1; /* topmost card on deck */ if (!rules.facedown) for (i = game.ind[FIRST_SLOT]; i < game.ind[LAST_SLOT+1]; ++i) game.visible[i] = 1; /* all cards on the slots visible */ } static void MO_newgame(void) { int i, remcards = rules.numcards; /* specific part: */ for (i = 0; i < rules.numslots; ++i) { int here; here = min(remcards, rules.faceup + rules.facedown); remcards -= here; game.ind[rules.numstacks+i+1] = game.ind[rules.numstacks+i] + here; if (here) { Cardindex j; j = game.ind[rules.numstacks+i+1] - 1; do game.visible[j--] = 1; while (j >= game.ind[rules.numstacks+i] + rules.facedown); } } } void newgame(long seed) { int i; game.randomgame = (seed == -1L); game.savecount = 0; game.bookmark = 0; init_seed(seed); shuffle(); /* initialize game.cards */ for (i = 0; i < rules.numcards; ++i) game.visible[i] = 0; for (i = 0; i < game.numpiles; ++i) game.ind[i] = 0; /* no cards on the piles */ game.ind[i] = rules.numcards; /* rest on the deck */ if (rules.new_game) (*rules.new_game)(); else if (rules.newgame_bits & SEQUENTIAL) MO_newgame(); else gen_newgame(); if (game.graphic) for (i = 0; i < game.numpiles; ++i) pile_resize(i); /* (void)do_move(-1, -1); */ /* reset game.*/ cmd_ResetHints(); game.srcind = UNSELECTED; } /* generic give-cards routine */ Move give_new_cards(void) { if (rules.deal_cards) return (*rules.deal_cards)(); else if (rules.variant & KLONDIKE_DEAL) return Klondike_deal_cards(); else { int i, rem; graphics_pile_control(Disable, IDECK); rem = CARDS_ON_PILE(IDECK); if (rem > rules.numslots) rem = rules.numslots; for (i = 0; i < rem; ++i) do_move(INDEX_OF_LAST_CARD(IDECK), rules.numstacks + i); graphics_pile_control(EnableAndRedraw, IDECK); return NEW_CARDS_MOVE | MOVE(0, rem); } } extern struct rules Spider_rules, Gypsy_rules, Klondike_rules, modSpider_rules; extern struct rules Seahaven_rules, FreeCell_rules, IdiotsDelight_rules, MonteCarlo_rules, MidnightOil_rules, Calculation_rules, Michaels_rules, Canfield_rules, modCanfield_rules, Royal_rules, Bakers_rules, Oonsoo_rules, BlueMoon_rules; struct game game; struct rules rules; struct rules *rulepool[] = { &Spider_rules, &Gypsy_rules, &Klondike_rules, &Seahaven_rules, &FreeCell_rules, &IdiotsDelight_rules, &MonteCarlo_rules, &MidnightOil_rules, &Calculation_rules, &modCanfield_rules, &Michaels_rules, &Canfield_rules, &Royal_rules, &Bakers_rules, &Oonsoo_rules, &BlueMoon_rules, NULL }; struct rules *getrules(const char *ruleset) { int i; for (i = 0; rulepool[i]; ++i) if (!strcmp(ruleset, rulepool[i]->shortname) || (rulepool[i]->abbrev && !strcmp(ruleset, rulepool[i]->abbrev))) { return rulepool[i]; } return NULL; } void new_rules(const char *ruleset, int decks, int slots, int faceup, int facedown, int jokers, int tmps, int param0, int param1, int param2, int param3) { int i; struct rules *rp; if (!game.numalloc) memo_alloc(512); game.seed = -1L; /* no replay is valid */ /* that will set finished to False */ if (!(rp = getrules(ruleset))) { fprintf(stderr, "Unknown rule set. Known rules are:\n"); for (i = 0; rulepool[i]; ++i) { char buff[20]; if (rulepool[i]->abbrev) sprintf(buff, "(Abbrev %-2s)", rulepool[i]->abbrev); else strcpy(buff, " "); fprintf(stderr, "%-15s %s -- %s\n", rulepool[i]->shortname, buff, rulepool[i]->longname ? rulepool[i]->longname : ""); } exit(EXIT_FAILURE); } rules = *rp; /* copy std game.*/ /* rule customization: */ if (!(rules.customizable & CUSTOM_DECKS )) decks = -1; if (!(rules.customizable & CUSTOM_SLOTS )) slots = -1; if (!(rules.customizable & CUSTOM_JOKERS)) jokers = -1; if (!(rules.customizable & CUSTOM_TMPS )) tmps = -1; if (!(rules.customizable & CUSTOM_FACEUP)) faceup = -1; if (!(rules.customizable & CUSTOM_FACEDOWN)) facedown = -1; if (!(rules.customizable & CUSTOM_PARAM0)) param0 = -1; if (!(rules.customizable & CUSTOM_PARAM1)) param1 = -1; if (!(rules.customizable & CUSTOM_PARAM2)) param2 = -1; if (!(rules.customizable & CUSTOM_PARAM3)) param3 = -1; if (jokers >= 0 && jokers != rules.numjokers) { rules.numjokers = jokers; rules.customized |= CUSTOM_JOKERS; rules.maxscore = 0; /* custom: maxscore unknown */ } if (param0 >= 0 && param0 != rules.param[0]) { rules.param[0] = param0; rules.customized |= CUSTOM_PARAM0; rules.maxscore = 0; /* custom: maxscore unknown */ } if (param1 >= 0 && param1 != rules.param[1]) { rules.param[1] = param1; rules.customized |= CUSTOM_PARAM1; rules.maxscore = 0; /* custom: maxscore unknown */ } if (param2 > 0 && param2 != rules.param[2]) { rules.param[2] = param2; rules.customized |= CUSTOM_PARAM2; rules.maxscore = 0; /* custom: maxscore unknown */ } if (param3 >= 0 && param3 != rules.param[3]) { rules.param[3] = param3; rules.customized |= CUSTOM_PARAM3; } if (faceup >= 0 && faceup != rules.faceup) { rules.faceup = faceup; rules.customized |= CUSTOM_FACEUP; rules.maxscore = 0; /* custom: maxscore unknown */ } if (facedown >= 0 && facedown != rules.facedown) { rules.facedown = facedown; rules.customized |= CUSTOM_FACEDOWN; rules.maxscore = 0; /* custom: maxscore unknown */ } if (slots > 0 && slots != rules.numslots) { rules.numslots = slots; rules.customized |= CUSTOM_SLOTS; rules.maxscore = 0; /* custom: maxscore unknown */ } if (decks > 0 && decks != rules.numdecks) { rules.numdecks = decks; rules.customized |= CUSTOM_DECKS; rules.maxscore = 0; /* custom: maxscore unknown */ } if (tmps >= 0 && tmps != rules.numtmps) { rules.numtmps = tmps; rules.customized |= CUSTOM_TMPS; } if (rules.numstacks >= 4) rules.numstacks = rules.numdecks * 4; rules.numcards = rules.cards_per_color * 4 * rules.numdecks + rules.numjokers; if (rules.numcards > MAXCARDS) { fprintf(stderr, "new_rules(): parameters give too many cards\n"); exit(EXIT_FAILURE); } if (rules.numslots + rules.numstacks + 1 > MAXPILES) { fprintf(stderr, "new_rules(): parameters give too many slots\n"); exit(EXIT_FAILURE); } for (i = 0; i < rules.numstacks; ++i) game.piletype[i] = Stack; for (; i < rules.numstacks + rules.numslots; ++i) game.piletype[i] = Slot; for (; i < rules.numstacks + rules.numslots + rules.numtmps; ++i) game.piletype[i] = Tmp; if (rules.variant & DECK_SOURCE) game.piletype[i++] = FaceupDeck; game.piletype[i++] = FacedownDeck; game.numpiles = i; for (i = 0; i <= game.numpiles; ++i)/* this fixes coredump-bug */ game.ind[i] = 0; /* no card currently there */ if (rules.initfunc) /* initrules-hook */ (*rules.initfunc)(); rp->inited = 1; } xpat2-1.07/src/X-widget.c100644 146 144 26656 7201315454 13642 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module Xaw-widget.c */ /* */ /* A pseudo-widget for the Athena Widget interface */ /* written by Michael Bischoff (mbi@mo.math.nat.tu-bs.de) */ /* March-1994 */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #if defined(useXaw) || defined(useXm) #include "X-pat.h" #include #include #include "TableauP.h" static XtResource resources[] = { #define offset(field) XtOffsetOf(TableauRec, tableau.field) /* {name, class, type, size, offset, default_type, default_addr}, */ {XtNmessageFile,XtCMessageFile,XtRString,sizeof(String), offset(messagefile), XtRString, NULL}, {XtNkeyboardFile,XtCKeyboardFile,XtRString,sizeof(String),offset(keyboardfile),XtRString, NULL}, {XtNxpmdir, XtCXpmdir, XtRString, sizeof(String), offset(xpmdir), XtRString, NULL}, {XtNxpmcls, XtCXpmcls, XtRInt, sizeof(int), offset(xpmcls), XtRImmediate, (XtPointer)DEFAULT_CLOSENESS}, #ifdef LOADCARDS {XtNcardset, XtCCardset, XtRString, sizeof(String), offset(cardset), XtRString, NULL}, #endif {XtNruleset, XtCRuleset, XtRString, sizeof(String), offset(rules), XtRString, NULL}, {XtNfaceup, XtCFaceup, XtRInt, sizeof(int), offset(faceup), XtRImmediate, (XtPointer)-1}, {XtNfacedown,XtCFacedown,XtRInt, sizeof(int), offset(facedown), XtRImmediate, (XtPointer)-1}, {XtNdecks, XtCDecks, XtRInt, sizeof(int), offset(decks), XtRImmediate, (XtPointer)-1}, {XtNslots, XtCSlots, XtRInt, sizeof(int), offset(slots), XtRImmediate, (XtPointer)-1}, {XtNjokers, XtCJokers, XtRInt, sizeof(int), offset(jokers), XtRImmediate, (XtPointer)-1}, {XtNtmps, XtCTmps, XtRInt, sizeof(int), offset(tmps), XtRImmediate, (XtPointer)-1}, {XtNparam0, XtCParam, XtRInt, sizeof(int), offset(param0), XtRImmediate, (XtPointer)-1}, {XtNparam1, XtCParam, XtRInt, sizeof(int), offset(param1), XtRImmediate, (XtPointer)-1}, {XtNparam2, XtCParam, XtRInt, sizeof(int), offset(param2), XtRImmediate, (XtPointer)-1}, {XtNparam3, XtCParam, XtRInt, sizeof(int), offset(param3), XtRImmediate, (XtPointer)-1}, {XtNgapx, XtCGap, XtRDimension, sizeof(Dimension), offset(xgap), XtRImmediate, (XtPointer)4}, {XtNgapy, XtCGap, XtRDimension, sizeof(Dimension), offset(ygap), XtRImmediate, (XtPointer)4}, {XtNarrw, XtCArr, XtRDimension, sizeof(Dimension), offset(arrowwidth),XtRImmediate, (XtPointer)255}, {XtNarrh, XtCArr, XtRDimension, sizeof(Dimension), offset(arrowheight),XtRImmediate, (XtPointer)255}, {XtNmaWidth, XtCMaWidth, XtRDimension, sizeof(Dimension), offset(markwidth), XtRImmediate, (XtPointer)999}, {XtNcbColor, XtCCbColor, XtRPixel, sizeof(Pixel), offset(cbcolor), XtRString, "DarkGreen"}, {XtNmaColor, XtCMaColor, XtRPixel, sizeof(Pixel), offset(markcolor), XtRString, XtDefaultBackground}, {XtNarColor, XtCArColor, XtRPixel, sizeof(Pixel), offset(arrowcolor), XtRString, "White"}, {XtNredColor,XtCRedColor,XtRPixel, sizeof(Pixel), offset(redcolor), XtRString, "Red3"}, {XtNrng, XtCRng, XtRInt, sizeof(int), offset(rng), XtRImmediate, (XtPointer)1}, #ifdef useXm { XmNnavigationType, XmCNavigationType, XmRNavigationType, sizeof (unsigned char), XtOffsetOf(XmPrimitiveRec, primitive.navigation_type), XmRImmediate, (XtPointer) XmTAB_GROUP }, #endif #undef offset }; /* actions on the desktop area */ /*ARGSUSED*/ static void TableauKey(Widget w, XEvent *xev, String *s, Cardinal *num) { key_press((XKeyPressedEvent *)xev); } /*ARGSUSED*/ static void TableauBtn_up(Widget w, XEvent *xev, String *s, Cardinal *num) { button_release((XButtonPressedEvent *)xev); } /*ARGSUSED*/ static void TableauBtn_down(Widget w, XEvent *xev, String *s, Cardinal *num) { button_press((XButtonPressedEvent *)xev); } /*ARGSUSED*/ static void TableauMove(Widget w, XEvent *xev, String *s, Cardinal *num) { mouse_motion((XPointerMovedEvent *)xev); } /*ARGSUSED*/ static void Redisplay(Widget w, XEvent *xev, Region region) { redraw_table((XExposeEvent *)xev); } static XtActionsRec actions[] = { /* {name, procedure}, */ { "tableau_k", TableauKey }, { "tableau_d", TableauBtn_down }, { "tableau_u", TableauBtn_up }, { "tableau_m", TableauMove }, }; static char translations[] = "\ : tableau_k() \n\ : tableau_d() \n\ : tableau_u() \n\ : tableau_m() \n\ "; static Boolean SetValues(Widget current, Widget request, Widget desired, ArgList args, Cardinal *num_args) { return FALSE; } static void Initialize(Widget request, Widget xnew, ArgList args, Cardinal *n); static void Resize(Widget gw); static void Realize(Widget w, XtValueMask *valuemask, XSetWindowAttributes *winattr) { *valuemask |= CWBorderPixel | CWEventMask | CWBackingStore | CWBitGravity; winattr->backing_store = WhenMapped; winattr->border_pixel = blackpixel; winattr->bit_gravity = NorthWestGravity; winattr->event_mask = KeyPressMask | ExposureMask | ButtonPressMask | ButtonReleaseMask | StructureNotifyMask | Button3MotionMask; (*(tableauClassRec.core_class.superclass)->core_class.realize)(w, valuemask, winattr); } TableauClassRec tableauClassRec = { { /* core fields */ #ifdef useXm /* superclass */ (WidgetClass) &xmPrimitiveClassRec, #else /* superclass */ (WidgetClass) &widgetClassRec, #endif /* class_name */ "Tableau", /* widget_size */ sizeof(TableauRec), /* class_initialize */ NULL, /* class_part_initialize */ NULL, /* class_inited */ FALSE, /* initialize */ Initialize, /* initialize_hook */ NULL, /* realize */ Realize, /* actions */ actions, /* num_actions */ XtNumber(actions), /* resources */ resources, /* num_resources */ XtNumber(resources), /* xrm_class */ NULLQUARK, /* compress_motion */ TRUE, /* compress_exposure */ TRUE, /* compress_enterleave */ TRUE, /* visible_interest */ FALSE, /* destroy */ NULL, /* resize */ Resize, /* expose */ Redisplay, /* set_values */ SetValues, /* set_values_hook */ NULL, /* set_values_almost */ XtInheritSetValuesAlmost, /* get_values_hook */ NULL, /* accept_focus */ NULL, /* version */ XtVersion, /* callback_private */ NULL, /* tm_table */ translations, /* query_geometry */ XtInheritQueryGeometry, /* display_accelerator */ XtInheritDisplayAccelerator, /* extension */ NULL }, #ifdef useXm /* Primitive Class part */ { /* border_highlight */ XmInheritBorderHighlight, /* border_unhighlight */ XmInheritBorderUnhighlight, /* translations */ NULL, /* arm_and_activate_proc */ NULL, /* Synthetic Resources */ NULL, /* num syn res */ 0, /* extension */ NULL }, #endif { /* tableau fields */ /* empty */ 0 } }; WidgetClass tableauWidgetClass = (WidgetClass)&tableauClassRec; static Widget toplev = NULL; static void Resize(Widget gw) { TableauWidget w = (TableauWidget) gw; #ifdef LABER printf("Resize(): Parent wants me to have size %d,%d\n", w->core.width, w->core.height); #endif resize_event(w->core.width, w->core.height); /* (*pileWidgetClass->core_class.superclass->core_class.resize)(gw); */ } void AskWidgetForResize(XSize_t x, XSize_t y) { #ifdef useXm Arg Args[2]; XtSetArg(Args[0], XtNwidth, x); XtSetArg(Args[1], XtNheight, y); if (toplev) XtSetValues(toplev, Args, 2); #else XtWidgetGeometry Geo; XtGeometryResult r; Geo.width = x; Geo.height = y; do { Geo.request_mode = CWWidth | CWHeight; #ifdef LABER printf("resize to %d %d yielded ", Geo.width, Geo.height); #endif r = XtMakeGeometryRequest(toplev, &Geo, &Geo); #ifdef LABER switch (r) { case XtGeometryYes: printf("YES!\n");break; case XtGeometryNo: printf("NO!\n"); break; case XtGeometryAlmost:printf("Almost!\n"); break; case XtGeometryDone: printf("Done!\n"); break; } #endif } while (r == XtGeometryAlmost); #endif } static GC simpleGC(Pixel bg, Pixel fg) { XGCValues gcv; long gcflags; gcv.background = bg; gcv.foreground = fg; gcv.graphics_exposures = True; gcflags = GCForeground | GCBackground | GCGraphicsExposures; return XCreateGC(dpy, RootWindow(dpy, screen), gcflags, &gcv); } #define CHECK(x, mi, ma) { if ((x) < mi || (x) > ma) (x) = (mi); } extern char *loadfilename; extern GC hintgc; static void Initialize(Widget request, Widget xnew, ArgList args, Cardinal *n) { static int is_inited = 0; TableauWidget new = (TableauWidget)xnew; TableauPart *p = &new->tableau; toplev = xnew; if (is_inited) { fprintf(stderr, "Sorry, currently only one instance of Tableau is allowed\n"); exit(EXIT_FAILURE); } read_message_file(p->messagefile ? p->messagefile : "messages"); read_keyboard_file(p->keyboardfile ? p->keyboardfile : "keys"); /* assign global data for old Xlib program */ dpy = XtDisplay(new); screen = DefaultScreen(dpy); graphic.is_color = (DisplayCells(dpy, screen) > 2); #if defined(GFX2) && defined(LOADCARDS) if (!graphic.is_color && !p->cardset) p->cardset = "french"; /* use B&W cardset, xpm requires too much colours */ #endif /* validity checks */ CHECK(p->decks, -1, 9); CHECK(p->slots, -1, 32); CHECK(p->faceup, -1, 30); CHECK(p->facedown, -1, 30); CHECK(p->jokers, -1, 16); CHECK(p->tmps, -1, 16); CHECK(p->param0, -1, 99); CHECK(p->param1, -1, 99); CHECK(p->param2, -1, 99); CHECK(p->param3, -1, 99); rng = p->rng; if (loadfilename) load_game(loadfilename); else { long orgseed; orgseed = game.seed; /* this is destroyed by new_rules */ if (!p->rules) p->rules = "Gypsy"; new_rules(p->rules, p->decks, p->slots, p->faceup, p->facedown, p->jokers, p->tmps, p->param0, p->param1, p->param2, p->param3); newgame(orgseed); } init_gfx(); /* make GCs */ init_cards( #ifdef LOADCARDS p->cardset, #else NULL, #endif -1, -1, p->redcolor, p->cbcolor, 1, p->xpmdir, p->xpmcls); geo.aw = geo.ah = CARD_WIDTH / 16; if (p->arrowwidth <= 30 && p->arrowheight <= 30) { geo.aw = p->arrowwidth; geo.ah = p->arrowheight; } if (geo.aw > 0 && geo.ah > 0) hintgc = simpleGC(BlackPixel(dpy, screen), p->arrowcolor); graphic.xgap = p->xgap; graphic.ygap = p->ygap; graphic.autolayout = 1; #ifdef LABER printf("size = (%d,%d) and (%d,%d) in Initialize(), computing minwindow:\n", graphic.width, graphic.height, new->core.width, new->core.height); #endif generic_minwindow(); graphic.width = geo.min_width; graphic.height = geo.min_height; #ifdef LABER printf("result is (%d,%d)\n", graphic.width, graphic.height); #endif init_mark(p->markcolor, p->markwidth); /* initialize card marks */ /* make icon here */ /* now the size is known */ #ifdef LABER printf("Init widget: res %d grap %d\n", new->core.width, graphic.width); #endif if (new->core.width < graphic.width) new->core.width = graphic.width; if (new->core.height < graphic.height) new->core.height = graphic.height; } #endif xpat2-1.07/src/Xaw-main.c100644 146 144 36740 6714043611 13627 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module Xaw-main.c */ /* */ /* main function for the Athena Widget interface */ /* written by Michael Bischoff (mbi@mo.math.nat.tu-bs.de) */ /* March-1994 */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #ifdef useXaw #include "X-pat.h" #include "Tableau.h" #include "version.h" Window table, mainwindow; Widget toplevel; static void perform_command(Widget widget, XtPointer client_data, XtPointer call_data) { (*(void (*)(void))client_data)(); /* any questions? */ } void create_help(void); void popup_help(void); void popdown_help(Widget, XtPointer, XtPointer); static Widget messagebox, container, desktop; void show_message(const char *str, ...) { static char last_message[256]; Arg Args; va_list args; va_start(args, str); if (!str) { memset(last_message, ' ', sizeof(last_message)-1); last_message[sizeof(last_message)-1] = '\0'; } else vsprintf(last_message, str, args); XtSetArg(Args, XtNlabel, last_message); XtSetValues(messagebox, &Args, 1); } static XtAppContext app_con; static void (*execfunc)(void) = NULL; static Widget dialog, popup; void cmd_LeavePat(void) { play_sound("goodbye"); XtDestroyApplicationContext(app_con); exit(0); } static void popup_confirm(const char *prompt) { Arg args[2]; Position x, y; Dimension xx, yy; XtSetArg(args[0], XtNlabel, prompt); XtSetValues(dialog, args, 1); XtVaGetValues(dialog, XtNwidth, &xx, XtNheight, &yy, NULL); x = (geo.w_width/2) - xx/2; y = (geo.w_height/3) - yy/2; XtTranslateCoords(toplevel, x, y, &x, &y); XtSetArg(args[0], XtNx, x); XtSetArg(args[1], XtNy, y); XtSetValues(popup, args, 2); XtPopup(popup, XtGrabNone); } void cmd_Confirm(void) { if (execfunc) { void (*execfunc2)(void) = execfunc; /* erase it first! */ execfunc = NULL; XtPopdown(popup); (*execfunc2)(); /* finally execute the desired function */ } } void cmd_Cancel(void) { if (execfunc) { execfunc = NULL; XtPopdown(popup); } } /* type converter functions: */ static void mXtAP_Cancel (Widget w, XEvent *xev, String *params, Cardinal *num) { cmd_Cancel(); } static void mXtAP_Confirm(Widget w, XEvent *xev, String *params, Cardinal *num) { cmd_Confirm(); } static void Cancel(Widget widget, XtPointer client_data, XtPointer call_data) { cmd_Cancel(); } static void Ok(Widget widget, XtPointer client_data, XtPointer call_data) { cmd_Confirm(); } void request_confirm(void (*dofunc)(void), const char *prompt) { if (execfunc) return; /* request pending => deny another one */ execfunc = dofunc; popup_confirm(prompt); } static String fallback_resources[] = { "*beNiceToColormap: false", "*shapeStyle: Rectangle", "*topShadowContrast: 20", "*bottomShadowContrast: 40", "*Scrollbar*background: Grey70", "*Background: grey85", "*Foreground: black", "*resizeToPreferred: True", "*input: True", "*showGrip: off", "*shadowWidth: 2", "*messages.justify: Left", "*upperbox.orientation: XtorientHorizontal", "*lowerbox.orientation: XtorientHorizontal", "*Tableau.backingStore: WhenMapped", "*Tableau.keyboardFile: keys", "*Tableau.messageFile: messages", "*Tableau.background: LightSlateGray", "*Tableau.arrowColor: Gold", "*Tableau.markColor: Black", "*Tableau.rules: Gypsy", "*Tableau.rng: 1", "*Tableau.xpmcls: " XDEFAULT_CLOSENESS, "*Viewport.allowHoriz: True", "*Viewport.allowVert: True", "*Viewport.useBottom: True", "*Viewport.useRight: True", "*Label.shadowWidth: 0", "*Label.BorderWidth: 2", "*Dialog*Translations: #override \ny: Ok()\nn: Cancel()\n", "XPat*title: XPat", "XPat.prompt.allowShellResize: True", "XPat.prompt.saveUnder: True", "*Dialog*resizable: True", "*Hint.Translations: #override\n:set()\n:HintNotify()unset()\n", "*Sound.state: True", "XPat.help.width: 403", "XPat.help.height: 200", "XPat.help.title: XPat Help Window", "XPat.help.saveUnder: True", "XPat*Close Help.fromHoriz: Topic", "*helptext*string: Please choose a topic.", "*helptext*displayCaret: False", "*helptext*scrollHorizontal: whenNeeded", "*helptext*scrollVertical: whenNeeded", "*helptext*editType: read", NULL, }; static XrmOptionDescRec options[] = { /* tableau resources */ { "-xpmdir", "*Tableau.xpmdir", XrmoptionSepArg, NULL }, { "-xpmcls", "*Tableau.xpmcls", XrmoptionSepArg, NULL }, { "-rules", "*Tableau.rules", XrmoptionSepArg, NULL }, { "-faceup", "*Tableau.faceup", XrmoptionSepArg, NULL }, { "-facedown", "*Tableau.facedown", XrmoptionSepArg, NULL }, { "-decks", "*Tableau.decks", XrmoptionSepArg, NULL }, { "-slots", "*Tableau.slots", XrmoptionSepArg, NULL }, { "-jokers", "*Tableau.jokers", XrmoptionSepArg, NULL }, { "-tmps", "*Tableau.tmps", XrmoptionSepArg, NULL }, { "-relaxed", "*Tableau.relaxed", XrmoptionSepArg, NULL }, { "-flips", "*Tableau.flips", XrmoptionSepArg, NULL }, { "-turn", "*Tableau.turn", XrmoptionSepArg, NULL }, { "-rotations", "*Tableau.rotations", XrmoptionSepArg, NULL }, { "-rng", "*Tableau.rng", XrmoptionSepArg, NULL }, #ifdef LOADCARDS { "-cards", "*Tableau.cards", XrmoptionSepArg, NULL }, #endif #if defined(GFX1) || defined(LOADCARDS) { "-cb", "*Tableau.cardbackColor",XrmoptionSepArg,NULL }, { "-red", "*Tableau.RedColor", XrmoptionSepArg, NULL }, #endif { "-tb", "*Tableau.background", XrmoptionSepArg,NULL }, { "-arrowcolor", "*Tableau.arrowColor", XrmoptionSepArg, NULL }, { "-markcolor", "*Tableau.markColor", XrmoptionSepArg, NULL }, { "-markwidth", "*Tableau.markWidth", XrmoptionSepArg, NULL }, /* non-tableau resources */ #ifdef SOUND { "-sound", "*Sound.state", XrmoptionNoArg, (XtPointer)"True" }, { "-nosound", "*Sound.state", XrmoptionNoArg, (XtPointer)"False" }, #endif }; static void HintNotify(Widget w, XEvent *xev, String *params, Cardinal *num) { /* check to be sure state is still Set so that user can cancel the action (e.g. by moving outside the window, in the default bindings. */ /* Nope, we cannot do this, the 'set' state is private data */ /* CommandWidget cbw = (CommandWidget)w; if (cbw->command.set) XtCallCallbackList(w, cbw->command.callbacks, (XtPointer) NULL); */ switch (((XButtonPressedEvent *)xev)->button) { case Button1: cmd_NextHint(); break; case Button2: cmd_DoHint(); break; case Button3: cmd_PreviousHint(); } } static XtActionsRec moreActions[] = { { "HintNotify", HintNotify }, { "Cancel", mXtAP_Cancel }, { "Ok", mXtAP_Confirm } }; static void reportfunc(Widget wid, XtPointer client_data, XtPointer call_data) { XawPannerReport *rep; if (game.graphic) cmd_ResetHints(); rep = (XawPannerReport *)call_data; if (geo.w_width != rep->slider_width || geo.w_height != rep->slider_height) { static int busy = 0; /* hope this fixes cycling */ /* size was changed */ if (busy) ;/*printf("doing nothing, I\'m busy!\n"); */ else { geo.w_width = rep->slider_width; geo.w_height = rep->slider_height; if (game.graphic) { int w, h; busy = 1; #ifdef LABER printf("w/h = %d,%d, prf=%d,%d, w_w/h=%d,%d\n", geo.w, geo.h, geo.preferred_width, geo.preferred_height, geo.w_width, geo.w_height); #endif init_layout(); w = max(geo.preferred_width, geo.w_width); h = max(geo.preferred_height, geo.w_height); AskWidgetForResize(w, h); busy = 0; } } } } char *loadfilename; static void process_extra_args(int argc, char *argv[]) { /* check extra args */ game.seed = -1L; loadfilename = NULL; if (argc > 2) { usage: fprintf(stderr, "xpat: invalid argument: %s\n", argv[1]); fprintf(stderr, "usage: xpat2 [options] [seed|loadfilename]\n" "options are all standard X11 toolkit options and\n" "-xpmdir (dir) to set directory for xpm files\n" "-xpmcls (val) to set allowed closeness for colour allocation\n" "-rules (ruleset) to initially use specified rules\n" "-faceup|facedown|decks|slots|jokers|tmps (num) customize parameters\n" "-relaxed|flips|turn|rotations (num) customize parameters\n" "-tb (color) set background color of tableau\n" "-arrowcolor (color) set color of hint arrow\n" "-markcolor (color) set color of frame to mark cards\n" "-markwidth (wdth) set width of frame to mark cards\n" #ifdef SOUND "-sound sound toggle on\n" "-nosound sound toggle off\n" #endif #ifdef LOADCARDS "-cards (filename) to load external bitmap cardset\n" #endif #if defined(GFX1) || defined(LOADCARDS) "-cb (color) set cardback color\n" "-red (color) use a different 'red' for static grey screens\n" #endif ); exit(EXIT_FAILURE); } else if (argc == 2) { /* seed or load file */ if (*argv[1] == '-') goto usage; else if (isdigit(*argv[1])) { game.seed = atol(argv[1]); if (game.seed < 0L || game.seed >= 1000000000L) goto usage; } else { loadfilename = argv[1]; /* printf("loadfile is %s\n", loadfilename); */ } } /* printf("in process_args: seed is %ld\n", game.seed); */ } /*extern void cmd_DebugOut(void); */ extern struct rules *rulepool[]; static void selectrules(Widget w, XtPointer number, XtPointer garbage) { const char *s = XtName(w); /* printf("widget %s has been selected\n", s); */ change_rules(s); } #ifdef SOUND static Widget sound; int checksound(void) { Boolean retval; Arg args[1]; XtSetArg(args[0], XtNstate, &retval); XtGetValues(sound, args, 1); return retval & 0xff; } #endif static Widget paned; int main(int argc, char *argv[]) { Widget buttonpanel; Widget gamebutton, gamemenu, rulesbutton, rulesmenu; int i; struct button { const char *name; void (*func)(void); } *bp; static struct button buttons[] = { { "Cards", cmd_DealCards }, { "Undo", cmd_UndoMove }, { "Redo", cmd_RedoMove }, { "Score", cmd_ShowScore }, { "Hint", cmd_NextHint }, { "Move to Stack", cmd_ToStack }, /* { "Debug", cmd_DebugOut }, */ #ifdef ONLINE_HELP { "Help", popup_help }, #endif { "Save", cmd_SaveGame } }, mbuttons[] = { { "Drop Bookmark", cmd_DropBookmark }, { "Goto Bookmark", cmd_GotoBookmark }, { "Replay", cmd_ReplayGame }, { "Restart", cmd_RestartGame }, { "New Game", rq_AnotherGame }, { "Quit", rq_LeavePat } }; /* use the command line arguments concerning the widgets */ switch_uid(1); /* switch to real uid for reading .Xauthority */ toplevel = XtAppInitialize(&app_con, "XPat", options, XtNumber(options), &argc, argv, fallback_resources, NULL, 0); switch_uid(0); /* back to effective uid */ process_extra_args(argc, argv); XtAppAddActions(app_con, moreActions, XtNumber(moreActions)); graphics_control(Disable); /* basic elements */ paned = XtCreateManagedWidget("paned", panedWidgetClass, toplevel, NULL, 0); buttonpanel = XtCreateManagedWidget("buttonpanel", boxWidgetClass, paned, NULL, 0); messagebox = XtCreateManagedWidget("messages", labelWidgetClass, paned, NULL, 0); show_message(" "); container = XtCreateManagedWidget("container", viewportWidgetClass, paned, NULL, 0); desktop = XtCreateManagedWidget("desktop", tableauWidgetClass, container, NULL, 0); XtAddCallback(container, XtNreportCallback, reportfunc, NULL); /* create the button panel and its menus */ gamebutton = XtCreateManagedWidget("Game", menuButtonWidgetClass, buttonpanel, NULL, 0); gamemenu = XtCreatePopupShell("gamemenu", simpleMenuWidgetClass, gamebutton, NULL, 0); for (bp = mbuttons, i = 0; i < XtNumber(mbuttons); ++i) { Widget w; w = XtCreateManagedWidget(bp->name, smeBSBObjectClass, gamemenu, NULL, 0); if (bp->func) XtAddCallback(w, XtNcallback, perform_command, bp->func); ++bp; } XtVaSetValues(gamebutton, XtNmenuName, "gamemenu", NULL); /* create Rules button just right of the Game button */ rulesbutton = XtCreateManagedWidget("Rules", menuButtonWidgetClass, buttonpanel, NULL, 0); rulesmenu = XtCreatePopupShell("rulesmenu", simpleMenuWidgetClass, rulesbutton, NULL, 0); { struct rules **rp; for (rp = rulepool; *rp; ++rp) { Widget w; w = XtCreateManagedWidget((*rp)->shortname, smeBSBObjectClass, rulesmenu, NULL, 0); XtAddCallback(w, XtNcallback, selectrules, NULL); } } XtVaSetValues(rulesbutton, XtNmenuName, "rulesmenu", NULL); /* rest of the buttons */ for (bp = buttons, i = 0; i < XtNumber(buttons); ++i) { Widget w; w = XtCreateManagedWidget(bp->name, commandWidgetClass, buttonpanel, NULL, 0); if (bp->func) XtAddCallback(w, XtNcallback, perform_command, bp->func); ++bp; } #ifdef SOUND sound = XtCreateManagedWidget("Sound", toggleWidgetClass, buttonpanel, NULL, 0); #endif /* OK. Now do the pop-up shells */ popup = XtCreatePopupShell("prompt", transientShellWidgetClass, toplevel, NULL, 0); dialog = XtCreateManagedWidget("dialog", dialogWidgetClass, popup, NULL, 0); XawDialogAddButton(dialog, "ok", Ok, (XtPointer)dialog); XawDialogAddButton(dialog, "cancel", Cancel, (XtPointer)dialog); #ifdef ONLINE_HELP create_help(); #endif geo.w_width = geo.w_height = 0; XtRealizeWidget(toplevel); mainwindow = XtWindow(toplevel); table = XtWindow(desktop); XtRealizeWidget(popup); graphics_control(Enable); init_layout(); /* position the piles in a nice way */ for (i = 0; i < game.numpiles; ++i) pile_resize(i); show_message(TXT_WELCOME, VERSION); XStoreName(dpy, mainwindow, rules.longname ? rules.longname : rules.shortname); if (!geo.w_width) { geo.w_width = graphic.width; geo.w_height = graphic.height; } /* printf("before mainloop: seed is %ld\n", game.seed); */ XtAppMainLoop(app_con); /* does not return */ return 0; /* keep compiler happy */ } void Force_Resize(XSize_t w, XSize_t h) { #ifdef LABER printf("Force_Resize(%d,%d) called. w/h = %d,%d, w_w/h = %d,%d\n", w, h, graphic.width, graphic.height, geo.w_width, geo.w_height); #endif /* for Xlib, we can use this size. It does include space for buttons and messagebox */ #ifdef useXaw /* for Xaw, we have to add the size of the buttonbox and the message window */ /* note that the result may have a wrong height, due to recalculation of the box widget. A second call to this function will always give the correct result. */ /* The overall size can be computed by adding the difference between the current size of the mainwindow - current size of viewport window */ { Arg args[1]; int hh; Dimension hhh = 0; XtSetArg(args[0], XtNheight, &hhh); XtGetValues(paned, args, 1); hh = hhh; /* unsigned short => int */ h += hh - geo.w_height; /* difference between overall size and Viewport size */ /* sanity check! */ } #endif /* printf("called XResize Window %d,%d\n", w, h); */ XResizeWindow(dpy, mainwindow, w, h); /* or should XSetWMSizeHints() be used? */ } #endif xpat2-1.07/src/commands.c100644 146 144 22035 6711605456 13747 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module commands.c */ /* */ /* Most of the entries for commands assignable to keys */ /* written by Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "xpatgame.h" #include "version.h" void change_rules(const char *new_rules_name) { cmd_CancelSelection(); new_rules_coming(); new_rules(new_rules_name, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1); /* std rules */ new_rules_notify(); newgame(-1L); /* new game with random seed */ } void rq_LeavePat(void) { if (game.finished || !game.n_moves) cmd_LeavePat(); else request_confirm(cmd_LeavePat, TXT_QUIT_CONFIRM); } void rq_AnotherGame(void) { if (game.finished || !game.n_moves) cmd_AnotherGame(); else request_confirm(cmd_AnotherGame, TXT_NEW_CONFIRM); } /* unused, since this can be undone */ void rq_RestartGame(void) { request_confirm(cmd_RestartGame, TXT_RESTART_CONFIRM); } void cmd_AnotherGame(void) { if (!game.finished) { play_sound("giveup"); } newgame(-1L); refresh_screen(); } void graphics_control(GraphicsControl cmd) { Pileindex i; switch (cmd) { case Disable: game.graphic = False; for (i = 0; i < game.numpiles; ++i) game.pile_changed[i] = PILE_UNCHANGED; break; case Enable: game.graphic = True; break; case EnableAndRedraw: game.graphic = True; for (i = 0; i < game.numpiles; ++i) if (game.pile_changed[i] != PILE_UNCHANGED) { /* printf("pile_changed(%d) = %d\n", i, game.pile_changed[i]); */ draw_pileupdate(i, game.pile_changed[i]); } break; } } void graphics_pile_control(GraphicsControl cmd, Pileindex pile) { switch (cmd) { case Disable: game.disable[pile] = True; break; case Enable: game.disable[pile] = False; break; case EnableAndRedraw: game.disable[pile] = False; draw_pileupdate(pile, 0); break; } } void cmd_ReplayGame(void) { int i, oldcheatcount = game.cheat_count; int movenum = game.n_moves; cmd_RestartGame(); /* with graphics! */ /* explicitly paint all the piles! */ for (i = 0; i < game.numpiles; ++i) draw_pileupdate(i, 0); while (game.n_moves < movenum) { /* XSync(dpy, 0); */ redo_move(); } game.cheat_count = oldcheatcount; /* problem: we should ignore the following expose events! */ } void cmd_DropBookmark(void) { game.bookmark = game.move_ptr; /* easy, isn't it? */ show_message(TXT_BOOKMARK_SET); } void jumpto_movenr(int move_ptr) { int remgraphic = game.graphic; if (move_ptr == game.move_ptr) return; assert(move_ptr <= game.stored_moves); if (remgraphic) /* graphic was on */ graphics_control(Disable); if (move_ptr > game.move_ptr) /* move forward */ while (move_ptr > game.move_ptr) redo_move(); else while (game.move_ptr > move_ptr) undo_move(); if (remgraphic) graphics_control(EnableAndRedraw); } void cmd_RestartGame(void) { jumpto_movenr(0); } void cmd_GotoBookmark(void) { jumpto_movenr(game.bookmark); } void cmd_SaveGame(void) { save_game(NULL); } void cmd_ShowVersion(void) { show_message("%s %s", TXT_VERSION, VERSION); } static void infosub(char *buff, int n, int txtindex) { switch (n) { case 0: strcpy(buff, xpat_messages[txtindex+0]); break; case 1: strcpy(buff, xpat_messages[txtindex+1]); break; default: sprintf(buff, xpat_messages[txtindex+2], n); break; } } void cmd_ShowScore(void) { char buf[256]; sprintf(buf, TXT_INFO1, game.seed, game.cheat_count); strcat(buf, " "); infosub(buf+strlen(buf), game.n_moves, TXT_MOVEBLOCK); strcat(buf, " "); if (rules.score) { infosub(buf+strlen(buf), (*rules.score)(), TXT_SCOREBLOCK); sprintf(buf+strlen(buf), " %d.", rules.maxscore); } else sprintf(buf+strlen(buf), TXT_NOSCORE); show_message(buf); } void cmd_Info(void) { char buf[256]; int i; buf[0] = '\0'; for (i = 0; i < 4; ++i) { if (rules.paramstring[i]) { infosub(buf+strlen(buf), rules.param[i]-game.counter[i], rules.paramstring[i]+1); strcat(buf, " "); } } if (!(rules.variant & NODEAL) && CARDS_ON_DECK) infosub(buf+strlen(buf), CARDS_ON_DECK, TXTI_CARDS+1); show_message(buf); } void cmd_DealCards(void) { cmd_CancelSelection(); if (rules.variant & NODEAL) { show_message(TXT_NODEAL); return; } if (EMPTY(IDECK) && (rules.variant & DECK_SOURCE)) { int i; for (i = 0; i < 4; ++i) if (rules.paramstring[i] == TXTI_FLIP) { /* try a flip */ if (game.counter[i] == rules.param[i]) show_message(TXT_NOFLIPLEFT); else { store_move(give_new_cards()); show_message(TXT_FLIPPING); } return; } } if (check_new_cards()) { show_message(TXT_NEWCARDS); store_move(give_new_cards()); } else show_message(TXT_NONEWCARDS); } void cmd_AllToStack(void) { cmd_CancelSelection(); cmd_ToStack(); } void cmd_OneToStack(void) { if (game.srcind < 0) { game.srcind = UNSELECTED; show_message(TXT_NOSOURCEPILE); } else cmd_ToStack(); } void cmd_ToStack(void) { if (game.srcind < 0) { /* all to stack */ game.srcind = UNSELECTED; if (!all_to_stack()) show_message(TXT_NONE_TO_STACK); else show_message(TXT_MOVED_TO_STACK); } else { show_mark(False); if (!move_to_stack(getpile(game.srcind))) show_message(TXT_MOVENOTPOSSIBLE); game.srcind = UNSELECTED; } } void cmd_UndoMove(void) { cmd_CancelSelection(); switch (undo_move()) { case 0: show_message(TXT_NOUNDO); break; case 1: show_message(TXT_UNDO); break; case 2: show_message(TXT_UNDOCHEAT); break; } } void cmd_RedoMove(void) { cmd_CancelSelection(); switch (redo_move()) { case 0: show_message(TXT_NOREDO); break; case 1: show_message(TXT_REDO); break; case 2: show_message(TXT_REDOUNCHEAT); break; } } static void hit_card(Pileindex pile, Cardindex card) { static int srcpile; /* temp. variable to hold getpile(srcind) */ /* printf("hit_card(%d,%d) called\n", pile, card); */ cmd_ResetHints(); if (game.srcind >= 0) { Cardindex h; h = game.srcind; game.srcind = -1; /* do move */ show_mark(False); if (pile < 0) { show_message(""); return; } if (pile != srcpile) { /* else just unselect slot */ if (game.piletype[pile] == FacedownDeck && !(rules.variant & DECK_VISIBLE)) cmd_DealCards(); else { if (move_valid(h, pile)) { store_move(do_move(h, pile)); show_message(""); } else show_message(TXT_INVALIDMOVE); } } } else { /* no mark to clear, set srcpile and game.srcind */ if (pile < 0) { show_message(""); game.srcind = UNSELECTED; return; } if (game.piletype[pile] == FacedownDeck && !(rules.variant & DECK_VISIBLE)) cmd_DealCards(); else { game.srcind = card; srcpile = pile; if (card == -1) show_message(TXT_BADSRC); else { show_message(TXT_SRCSELECTED); show_mark(True); } } } } void cmd_CancelSelection(void) { hit_card(-1, -1); } void cmd_RotateUp(void) { int i; hit_card(-1, -1); for (i = 0; i < 4; ++i) if (rules.paramstring[i] == TXTI_ROTATE) { if (rules.param[i] > game.counter[i]) { game.srcind = ROTATE_UP_SEL; show_message(TXT_ROTUP); return; } else { show_message(xpat_messages[TXTI_ROTATE+1]); return; } } show_message(xpat_messages[TXTI_ROTATE]); } void cmd_RotateDown(void) { int i; hit_card(-1, -1); for (i = 0; i < 4; ++i) if (rules.paramstring[i] == TXTI_ROTATE) { if (rules.param[i] > game.counter[i]) { game.srcind = ROTATE_DOWN_SEL; show_message(TXT_ROTDN); return; } else { show_message(xpat_messages[TXTI_ROTATE+1]); return; } } show_message(xpat_messages[TXTI_ROTATE]); } void button_pressed(Pileindex i, Cardindex card, int button) { /*printf("press %d %d %d called\n", i, card, button); */ if (i == -1) { /* no pile hit => cancel */ cmd_CancelSelection(); return; } if (game.srcind == ROTATE_UP_SEL || game.srcind == ROTATE_DOWN_SEL) { if (game.piletype[i] != Slot) show_message(TXT_SLOTREQUIRED); else if (!game.visible[card]) show_message(TXT_CARDNOTVISIBLE); else store_move(game.srcind == ROTATE_UP_SEL ? RotateUp(card) : RotateDown(card)); game.srcind = UNSELECTED; return; } switch (button) { case 1: cmd_CancelSelection(); /* calls cmd_ResetHints(); */ switch (game.piletype[i]) { case FacedownDeck: if (!(rules.variant & DECK_VISIBLE)) { hit_card(i, 0); return; } /* else fall through */ case FaceupDeck: case Slot: case Stack: case Tmp: { Cardindex ind; if ((ind = maxsequence(i, card)) < 0) show_message(TXT_BADSRC); else if (rules.automove ? !(*rules.automove)(ind) : !generic_automove(ind)) show_message(TXT_NOMOVE); } break; /* no action */ } break; case 2: hit_card(i, maxsequence(i, card)); break; } } xpat2-1.07/src/Tableau.h100644 146 144 7474 6714037631 13517 0ustar mbimathopt/* $XConsortium: Tableau.h,v 1.5 90/12/19 18:46:00 converse Exp $ */ /* Copyright Massachusetts Institute of Technology 1987, 1988 * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * */ #ifndef _Tableau_h #define _Tableau_h /**************************************************************** * * Tableau widget * ****************************************************************/ /* Resources: Name Class RepType Default Value ---- ----- ------- ------------- background Background Pixel XtDefaultBackground border BorderColor Pixel XtDefaultForeground borderWidth BorderWidth Dimension 1 destroyCallback Callback Pointer NULL height Height Dimension 0 mappedWhenManaged MappedWhenManaged Boolean True sensitive Sensitive Boolean True width Width Dimension 0 x Position Position 0 y Position Position 0 Name Class RepType Default Value ---- ----- ------- ------------- cbcolor Background Pixel XtDefaultBackground */ /* define any special resource names here that are not in */ #define XtNruleset "rules" #define XtCRuleset "Rules" #define XtNxpmdir "xpmdir" #define XtCXpmdir "Xpmdir" #define XtNxpmcls "xpmcls" #define XtCXpmcls "Xpmcls" #define XtNcardset "cards" #define XtCCardset "Cards" #define XtNfaceup "faceup" #define XtCFaceup "Faceup" #define XtNfacedown "facedown" #define XtCFacedown "Facedown" #define XtNdecks "decks" #define XtCDecks "Decks" #define XtNslots "slots" #define XtCSlots "Slots" #define XtNjokers "jokers" #define XtCJokers "Jokers" #define XtNtmps "tmps" #define XtCTmps "Tmps" #define XtNparam0 "relaxed" #define XtNparam1 "flips" #define XtNparam2 "turn" #define XtNparam3 "rotations" #define XtCParam "Param" #define XtNfaceup "faceup" #define XtCFaceup "Faceup" #define XtNmessageFile "messageFile" #define XtCMessageFile "MessageFile" #define XtNkeyboardFile "keyboardFile" #define XtCKeyboardFile "KeyboardFile" #define XtNgapx "gapx" #define XtNgapy "gapy" #define XtCGap "Gap" #define XtNarrw "arrowWidth" #define XtNarrh "arrowHeight" #define XtCArr "Arrowsize" #define XtNcbColor "cardbackColor" #define XtCCbColor "CardbackColor" #define XtNcbPixmap "cardbackPixmap" #define XtCCbPixmap "CardbackPixmap" #define XtNarColor "arrowColor" #define XtCArColor "ArrowColor" #define XtNmaColor "markColor" #define XtCMaColor "MarkColor" #define XtNmaWidth "markWidth" #define XtCMaWidth "MarkWidth" #define XtNredColor "redColor" #define XtCRedColor "RedColor" #define XtNrng "rng" #define XtCRng "Rng" /* declare specific TableauWidget class and instance datatypes */ typedef struct _TableauClassRec* TableauWidgetClass; typedef struct _TableauRec* TableauWidget; /* declare the class constant */ extern WidgetClass tableauWidgetClass; #endif /* _Tableau_h */ xpat2-1.07/src/TableauP.h100644 146 144 5151 7201315454 13617 0ustar mbimathopt/* $XConsortium: TableauP.h,v 1.6 91/03/13 20:12:07 rws Exp $ */ /* Copyright Massachusetts Institute of Technology 1987, 1988 * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * */ #ifndef _TableauP_h #define _TableauP_h #include "Tableau.h" #ifdef useXm /* include superclass private header file */ #include #include #else /* include superclass private header file */ #include #endif /* define unique representation types not found in */ #define XtRTableauResource "TableauResource" typedef struct { int empty; } TableauClassPart; typedef struct _TableauClassRec { CoreClassPart core_class; #ifdef useXm XmPrimitiveClassPart primitive_class; #endif TableauClassPart tableau_class; } TableauClassRec; extern TableauClassRec tableauClassRec; typedef struct { /* resources */ String messagefile; String keyboardfile; String xpmdir; int xpmcls; /* allow 'close' colours of this closeness */ String cardset; String rules; int faceup; int facedown; int decks; int slots; int jokers; int tmps; int param0, param1, param2, param3; Pixel cbcolor; Pixmap cbpixmap; /* still unused */ Pixel markcolor; Pixel arrowcolor; Pixel redcolor; Dimension xgap; Dimension ygap; Dimension linewidth; Dimension arrowwidth; Dimension arrowheight; Dimension markwidth; int rng; } TableauPart; typedef struct _TableauRec { CorePart core; #ifdef useXm XmPrimitivePart primitive; #endif TableauPart tableau; } TableauRec; #endif /* _TableauP_h */ xpat2-1.07/src/X-arrows.c100644 146 144 7154 6712670500 13646 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module X-arrows.c */ /* */ /* Displays hint arrows for the X interface */ /* written by Heiko Eissfeldt and Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "X-pat.h" GC hintgc; static struct arrow_storage { int w, h; Pixmap arrow_storage; } as[4] = { { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 } }; #ifdef useXlib void init_arrow(const char *arrowcolor, int arrwidth, int arrheight) { /* make GCs for dashed lines or colored lines (to mark cards) */ XGCValues gcv; long gcflags; XColor color; Colormap cmap; geo.aw = geo.ah = CARD_WIDTH / 16; /* defaults */ if (arrwidth >= 0 && arrwidth <= 30) geo.aw = arrwidth; if (arrheight >= 0 && arrheight <= 30) geo.ah = arrheight; if (geo.aw <= 0 || geo.ah <= 0) { geo.aw = geo.ah = -1; return; /* no arrows wanted */ } /* make own gcs for dashed lines */ gcv.background = BlackPixel(dpy, screen); gcv.graphics_exposures = True; gcflags = GCForeground | GCBackground | GCGraphicsExposures; if (graphic.is_color && arrowcolor) { cmap = DefaultColormap(dpy, screen); color.flags = DoRed | DoGreen | DoBlue; XAllocNamedColor(dpy, cmap, arrowcolor, &color, &color); gcv.foreground = color.pixel; hintgc = XCreateGC(dpy, RootWindow(dpy, screen), gcflags, &gcv); } else { gcv.foreground = WhitePixel(dpy, screen); hintgc = XCreateGC(dpy, RootWindow(dpy, screen), gcflags, &gcv); } } #endif #ifdef useXview void init_arrow(unsigned long arrowcolor, int arrwidth, int arrheight) { XGCValues gcv; long gcflags; if (arrwidth >= 0 && arrwidth <= 30) geo.aw = arrwidth; if (arrheight >= 0 && arrheight <= 30) geo.ah = arrheight; if (geo.aw <= 0 || geo.ah <= 0) { geo.aw = geo.ah = -1; return; /* no arrows wanted */ } gcv.background = BlackPixel(dpy, screen); gcv.graphics_exposures = True; gcflags = GCForeground | GCBackground | GCGraphicsExposures; gcv.foreground = arrowcolor; hintgc = XCreateGC(dpy, RootWindow(dpy, screen), gcflags, &gcv); } #endif void bitblt_arrow(int type, int save, int x, int y, int w, int h) { struct arrow_storage *ap = as+type; /* printf("bitblt %d,%d, %d,%d, %d,%d called\n", type, save, x, y, w, h); */ if (save) { /* for for minimum size */ if (!ap->arrow_storage || ap->w < w || ap->h < h) { /* not allocated or insufficient size */ if (ap->arrow_storage) XFreePixmap(dpy, ap->arrow_storage); if (ap->w < w) ap->w = w; if (ap->h < h) ap->h = h; ap->arrow_storage = XCreatePixmap(dpy, table, ap->w, ap->h, DefaultDepth(dpy, screen)); } XCopyArea(dpy, table, ap->arrow_storage, whitegc, x, y, w, h, 0, 0); } else { if (ap->arrow_storage) { XCopyArea(dpy, ap->arrow_storage, table, whitegc, 0, 0, w, h, x, y); } } } void draw_arrow_polygon(int npoints, const struct Coord *poly) { int i; XPoint Poly[ARROW_MAX_COORDINATES]; /* printf("Poly(%d) called\n", npoints); */ for (i = 0; i < npoints; ++i) { Poly[i].x = poly[i].x; Poly[i].y = poly[i].y; } XFillPolygon(dpy, table, hintgc, Poly, npoints, Complex, CoordModeOrigin); Poly[npoints] = Poly[0]; XDrawLines(dpy, table, blackgc, Poly, npoints+1, CoordModeOrigin); #ifdef useXview xv_set(xv_default_server, SERVER_SYNC, FALSE, 0); #else XFlush(dpy); #endif } xpat2-1.07/src/X-cards.c100644 146 144 13041 6712253275 13443 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module X-cards.c */ /* */ /* Card drawing interface for X11 */ /* written by Heiko Eissfeldt and Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "X-pat.h" struct graphic graphic; struct card card; int table_clear = 1; void win_game(void) { #if 0 #ifdef useXlib XMoveWindow(dpy, finished_win, (graphic.width - FINISHED_W) / 2, (graphic.height - FINISHED_H) / 2); XMapWindow(dpy, finished_win); redraw_finwin((XExposeEvent *)0); /* must unmap it later! */ #endif #endif #ifdef useXview xv_set(xv_default_server, SERVER_SYNC, FALSE, 0); #else XSync(dpy, 0); /* show all requests and let it be for now */ #endif } void init_gfx(void) { XGCValues gcv; long gcflags; blackpixel = BlackPixel(dpy, screen); whitepixel = WhitePixel(dpy, screen); /* make gc for white */ gcv.foreground = WhitePixel(dpy, screen); gcv.background = BlackPixel(dpy, screen); gcv.graphics_exposures = False; gcflags = GCForeground | GCBackground | GCGraphicsExposures; whitegc = XCreateGC(dpy, RootWindow(dpy, screen), gcflags, &gcv); /* make gc for black */ gcv.foreground = BlackPixel(dpy, screen); gcv.background = WhitePixel(dpy, screen); gcflags = GCForeground | GCBackground | GCGraphicsExposures; blackgc = XCreateGC(dpy, RootWindow(dpy, screen), gcflags, &gcv); } /* this is a helper routine only called by do_move(): */ /* it transfers card game.which is unknown to the generic part */ /* these transfers do not necessarily affect the appearance on the screen, */ /* they are needed due to the design of the game.structures as arrays */ /* instead of linked lists */ void move_card_data(Cardindex dst, Cardindex src) { game.cards[dst] = game.cards[src]; game.visible[dst] = game.visible[src]; /* graphic.cardy[dst] = graphic.cardy[src]; */ } void refresh_screen(void) { #ifdef LABER printf("refresh_screen called\n"); #endif if (table_clear) { #ifdef LABER printf("(ignored)\n"); #endif return; } table_clear = 1; XClearArea(dpy, table, 0, 0, 0, 0, True); /* force redraw */ } /* all card drawings go through this routine: */ /* inform the graphics interface that cards are added (delta > 0) */ /* or removed (delta < 0) from the specified pile. if delta = 0, */ /* then redrawing of the complete pile is necessary (possibly caused */ /* by "new game" commands) */ /* if cards on the pile are marked (selected), the mark is refreshed */ void draw_pileupdate(int pile, int delta) { struct pilegeometry *p = geo.pg + pile; int cx, cy; if (!game.graphic) { /* this is off when replaying saved games */ /* only log changes */ if (game.pile_changed[pile] == PILE_UNCHANGED) game.pile_changed[pile] = delta; else if ((delta > 0 && game.pile_changed[pile] > 0) || (delta < 0 && game.pile_changed[pile] < 0)) game.pile_changed[pile] += delta; else game.pile_changed[pile] = 0; return; } if (game.disable[pile]) /* don't draw THIS pile */ return; if (NOT_DISPLAYED(geo.pg+pile)) return; /* draw nothing */ cx = p->x + p->ox; /* card position of lowest card */ cy = p->y + p->oy; if (EMPTY(pile)) { /* draw empty pile */ int c; XClearArea(dpy, table, p->x, p->y, p->w, p->h, False); switch (game.piletype[pile]) { case Stack: c = SUITSYMBOL + SUIT(pile); break; default: c = OUTLINE; break; } PaintCard(cx, cy, c, 0, 0); return; } if (!p->cdx && !p->cdy) { /* only topmost card is visible */ Cardindex c; c = INDEX_OF_LAST_CARD(pile); PaintCard(cx, cy, game.visible[c] ? game.cards[c] : CARDBACK, 0, 0); } else { if (pile_resize(pile)) /* delta changed => complete redraw */ delta = 0; if ((p->cdx < 0 || p->cdy < 0) && delta < 0) /* this does not work correctly yet. simply avoid the case */ delta = 0; if (delta < 0) { /* cards were removed. Clear area and redraw top */ int x, y; if (p->cdx) { x = (CARDS_ON_PILE(pile)-1) * p->cdx + geo.cw - geo.rx; y = (CARDS_ON_PILE(pile)-1) * p->cdy; XClearArea(dpy, table, p->x+x, p->y+y, p->w-x, p->h-y, False); } if (p->cdy) { x = (CARDS_ON_PILE(pile)-1) * p->cdx; y = (CARDS_ON_PILE(pile)-1) * p->cdy + geo.cw - geo.rx; XClearArea(dpy, table, p->x+x, p->y+y, p->w-x, p->h-y, False); } delta = 1; /* only last card is to be drawn new */ } else if (!delta) { /* draw complete pile */ XClearArea(dpy, table, p->x, p->y, p->w, p->h, False); delta = CARDS_ON_PILE(pile); } /* (delta > 0) */ /* draw last cards */ { Cardindex c = INDEX_OF_LAST_CARD(pile) + 1 - delta; int i = c - INDEX_OF_FIRST_CARD(pile); /* printf("Drawing %d cards on slot %d: d=%d,%d\n", delta, pile, p->cdx, p->cdy); */ while (--delta >= 0) { int pw, ph; /* paint-width and height */ pw = geo.cw; ph = geo.ch; if (delta) { /* Not the last card. May use card clipping optimisation */ if (p->cdx == 0 && p->cdy > 0) ph = p->cdy + geo.ry; if (p->cdy == 0 && p->cdx > 0) pw = p->cdx + geo.rx; } PaintCard(cx + p->cdx*i, cy + p->cdy*i, (game.visible[c] ? game.cards[c] : CARDBACK), pw, ph); ++c; ++i; } } } if (game.srcind >= 0 && getpile(game.srcind) == pile) show_mark(True); } xpat2-1.07/src/X-events.c100644 146 144 21642 6713412615 13655 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module X-events.c */ /* */ /* Event handlers for the X interface */ /* written by Heiko Eissfeldt and Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "X-pat.h" /* #define LABER */ Display *dpy; int screen; unsigned long blackpixel; unsigned long whitepixel; GC blackgc; GC whitegc; /* flush event queue */ void flush_display(void) { XSync(dpy, 0); /* text first! */ } #ifdef useXlib static int intersect(int x1, int w1, int x2, int w2) { if (x1 < x2) return x1+w1 > x2; else return x2+w2 > x1; } #endif /* events for Xlib AND Xaw interface */ /* event entry points are: key_press, button_press, button_release, mouse_motion (only called with button 3 pressed) redraw_table */ void key_press(XKeyPressedEvent *xev) { char str[32]; int num; #define get_name_field() get_selection() num = XLookupString(xev, str, 31, NULL, NULL); if (num == 0) return; str[num] = '\0'; /* NULL to terminate it */ show_exposed_card(False); key_pressed(str); } /* SPEEDUP does not work yet */ #ifdef SPEEDUP static int pile_is_drawn[MAXPILES] = { 0, 0 }; static int buttons_are_drawn = 0; #endif extern int table_clear; void redraw_table(XExposeEvent *xev) { int i; table_clear = 0; #ifdef useXlib if (intersect(0, graphic.buttons_height, xev->y, xev->height)) #ifdef SPEEDUP if (!buttons_are_drawn++) #endif redraw_buttons(xev->x, xev->y, xev->width, xev->height, table, button.num, button.b); if (intersect(graphic.buttons_height, graphic.message_height, xev->y, xev->height)) show_message(NULL); if (xev->count && xev->y + xev->height < graphic.yoff) /* else may miss the last event */ return; #endif #ifdef LABER printf("request for expose %d,%d of size %d,%d, cnt %d\n", xev->x, xev->y, xev->width, xev->height, xev->count); /* printf("height of 0=%d, 8=%d\n", p.geo[0], p.geo[8].h); */ #endif for (i = 0; i < game.numpiles; ++i) { struct pilegeometry *p; #ifdef SPEEDUP if (pile_is_drawn[i]++) continue; #endif p = geo.pg + i; if (NOT_DISPLAYED(p) || xev->x >= p->x + p->w || xev->x + xev->width <= p->x || xev->y >= p->y + p->h || xev->y + xev->height <= p->y) continue; /* this pile is not affected */ #ifdef LABER printf("request for update pile %d of pos %d,%d, size %d,%d\n", i, p->x, p->y, p->w, p->h); #endif draw_pileupdate(i, 0); } if (!xev->count) { show_arrow(2); /* Update hint arrow */ } #ifdef LABER if (!xev->count) printf(" => last expose-table call\n"); #endif #ifdef SPEEDUP if (xev->count) return; /* was last event, unmark piles */ for (i = 0; i < MAXPILES; ++i) pile_is_drawn[i] = 0; buttons_are_drawn = 0; #endif } /* the pointer is somewhere in the area of pile i */ /* check, if a card has to be exposed */ static void expose_card(Pileindex i, int x, int y) { struct pilegeometry *p; Cardindex ind; if (EMPTY(i)) return; p = geo.pg + i; #if 0 ind = game.ind[i]; while (ind != INDEX_OF_LAST_CARD(i) && y >= p->y + graphic.cardy[ind+1]) ++ind; #else ind = FindCardOfMousePos(i, x, y); #endif if (ind == INDEX_OF_LAST_CARD(i)) /* the most bottom card don't has to */ ind = -1; /* be put on foreground */ if (graphic.zoomed_card != ind) { /* change of state */ show_exposed_card(False); /* hide it */ /* graphic.zoomed_card is now -1 */ if (ind >= 0) { graphic.zoomed_card = ind; show_exposed_card(True); } } } void mouse_motion(XPointerMovedEvent *xev) { Pileindex i; /* find new pile */ for (i = FIRST_SLOT; i <= LAST_SLOT; ++i) { struct pilegeometry *p; p = geo.pg + i; if (xev->x >= p->x && xev->x < p->x + p->w && xev->y >= p->y && xev->y < p->y + p->h) { /* yeah, a slot is hit */ /* find out which card is the target */ expose_card(i, xev->x - p->x, xev->y - p->y); return; } } /* pointer moved out of scope: */ show_exposed_card(False); } void button_release(XButtonPressedEvent *xev) { show_exposed_card(False); } void button_press(XButtonPressedEvent *xev) { Pileindex i; show_exposed_card(False); #ifdef useXlib { void (*func)(void); func = check_button_list(button.b, button.num, xev); /* check for hit button */ if (func) { (*func)(); return; } } #endif for (i = 0; i < game.numpiles; ++i) { struct pilegeometry *p; p = geo.pg + i; if (NOT_DISPLAYED(p)) continue; if (xev->x >= p->x && xev->x < p->x + p->w && xev->y >= p->y && xev->y < p->y + p->h) { Cardindex cardi; #if 0 if EMPTY(i) cardi = -1; else { cardi = INDEX_OF_LAST_CARD(i); if (game.piletype[i] == Slot) /* possibly a different card */ while (cardi != INDEX_OF_FIRST_CARD(i) && graphic.cardy[cardi] > xev->y - graphic.pile[i].y) --cardi; } #else cardi = FindCardOfMousePos(i, xev->x - p->x, xev->y - p->y); if (cardi == -2) /* below := lowest */ cardi = INDEX_OF_LAST_CARD(i); #endif switch (xev->button) { case Button1: /* quick move */ button_pressed(i, cardi, 1); break; case Button2: /* select / deselect */ button_pressed(i, cardi, 2); break; case Button3: #ifdef BUTTON_3_DRAGS_CARD button_pressed(i, cardi, 3); #else #ifndef useXview if (game.piletype[i] == Slot) expose_card(i, xev->x - p->x, xev->y - p->y); #else if (game.piletype[i] == Slot && cardi >= 0) { expose_card(i, xev->x - p->x, xev->y - p->y); } else { menu_show(cmenu, canvas, bp_event, 0); return; } #endif break; #endif } return; } } #ifdef useXview if (xev->button == Button3) { menu_show(cmenu, canvas, bp_event, 0); return; } #endif button_pressed(-1, -1, -1); /* cancel action */ } /*****************************************************************************/ /* */ /* Functions for resize events and resize requests */ /* */ /*****************************************************************************/ /* 1) hard resizes (i.e. forcing the outer window to change size) */ /* I think these are not liked in the Xaw community */ void cmd_MinWindow(void) { XSize_t w, h; w = geo.min_width; h = geo.min_height; /* printf("Force resize to min (%d,%d)\n", w, h); */ Force_Resize(w, h); } void cmd_PreferredWindow(void) { XSize_t w, h; w = geo.preferred_width; h = geo.preferred_height; /* printf("Force resize to prf (%d,%d)\n", w, h); */ Force_Resize(w, h); } /* event handler function. This function is called by the Widget in response to a request from us. In Xaw, this is a resize of the logical area, i.e. of the virtual size of the tableau. */ void resize_event(XSize_t w, XSize_t h) { #ifdef LABER printf("resize event to (%d,%d) called\n", w, h); #endif if (game.graphic) cmd_ResetHints(); if (graphic.height == h && graphic.width == w) return; /* no change of size */ /* in xlib, we must clear the new area by hand; there may be illegal data left in the server. This applies to Xaw as well */ { XExposeEvent xev; xev.count = -1; if (game.graphic) { if (graphic.height < h) { /* window is greater now */ XClearArea(dpy, table, 0, graphic.height, graphic.width, h - graphic.height, True); ++xev.count; } if (graphic.width < w) { /* window is greater now */ XClearArea(dpy, table, graphic.width, 0, w - graphic.width, h, True); ++xev.count; } if (xev.count >= 0) { /* generate synthetic expose events for the new area */ /* this must be done before we possibly change the layout */ if (graphic.height < h) { /* window is greater now */ xev.x = 0; xev.y = graphic.height; xev.width = graphic.width; xev.height = h - graphic.height; redraw_table(&xev); --xev.count; } if (graphic.width < w) { /* window is greater now */ xev.x = graphic.width; xev.y = 0; xev.width = w - graphic.width; xev.height = h; redraw_table(&xev); } } } } graphic.height = h; graphic.width = w; if (!game.graphic) return; #ifdef useXlib confirm.x = (graphic.width - confirm.w) / 2; confirm.y = (graphic.height - confirm.h) / 2; XMoveWindow(dpy, confirm.win, confirm.x, confirm.y); #endif if (graphic.autolayout) { cmd_Layout(); /* change everything */ } else { Pileindex i; /* fix piles THIS IS WRONG FOR 2-ROW LAYOUTS!!!! FIX THIS! */ for (i = 0; i < rules.numslots; ++i) geo.pg[XPATSLOT(i)].h = geo.h - geo.pg[XPATSLOT(i)].y; for (i = FIRST_SLOT; i <= LAST_SLOT; ++i) if (pile_resize(i)) draw_pileupdate(i, 0); } } xpat2-1.07/src/X-expose.c100644 146 144 2733 6711667173 13645 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module X-expose.c */ /* */ /* Routines for marking exposed cards */ /* written by Heiko Eissfeldt and Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "X-pat.h" static int rem_x = -1, rem_y = -1; static Pixmap exp_bkp = 0; static void hide_exposed_card(void) { if (rem_x < 0 || rem_y < 0) return; XCopyArea(dpy, exp_bkp, table, whitegc, 0, 0, CARD_WIDTH, CARD_HEIGHT, rem_x, rem_y); rem_x = rem_y = -1; graphic.zoomed_card = -1; } void show_exposed_card(boolean on) { if (graphic.zoomed_card < 0) return; if (!exp_bkp) exp_bkp = XCreatePixmap(dpy, table, CARD_WIDTH, CARD_HEIGHT, DefaultDepth(dpy, screen)); if (on) { struct pilegeometry *p; Cardindex ind; int num; ind = graphic.zoomed_card; p = geo.pg + getpile(ind); num = ind - INDEX_OF_FIRST_CARD(getpile(ind)); rem_x = p->x + p->ox + p->cdx * num; rem_y = p->y + p->oy + p->cdy * num; /* save bk */ XCopyArea(dpy, table, exp_bkp, whitegc, rem_x, rem_y, CARD_WIDTH, CARD_HEIGHT, 0, 0); /* expose card */ PaintCard(rem_x, rem_y, (game.visible[ind] ? game.cards[ind] : CARDBACK), 0, 0); } else { hide_exposed_card(); } } xpat2-1.07/src/X-gfx1.c100644 146 144 72361 6714041146 13220 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module X-gfx1.c */ /* */ /* card graphics for the X interface */ /* written by Heiko Eissfeldt and Michael Bischoff */ /* based on the gfx.c module from Spider by Dave Lemke */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "X-pat.h" #ifndef NO_XPM #include #endif #ifndef NO_ROUND_CARDS #include #endif #ifdef SAVE_IMAGES #ifdef NO_XPM #error "Cannot define SAVE_IMAGES with NO_XPM" #endif static void write_pixmap(const char *filename, Pixmap pict, Pixmap clip) { if (XpmWriteFileFromPixmap(dpy, filename, pict, clip, NULL) != XpmSuccess) fprintf(stderr, "error writing xpm file %s\n", filename); } #endif static int read_pixmap(const char *filename, Pixmap *pict) { #ifndef NO_XPM if (XpmReadFileToPixmap(dpy, table, filename, pict, NULL, NULL) == XpmSuccess) { /* add nice outline which may vary (-cround option) */ #ifndef NO_ROUND_CARDS if (ROUND_W) XmuDrawRoundedRectangle(dpy, *pict, blackgc, 0, 0, CARD_WIDTH-1, CARD_HEIGHT-1, ROUND_W, ROUND_H); else #endif XDrawRectangle(dpy, *pict, blackgc, 0, 0, CARD_WIDTH-1, CARD_HEIGHT-1); return 1; } #endif *pict = 0; return 0; } /* card INFO: taken from spider */ /* these are for the large cards */ /* all small card info is variable */ #define FCARD_WIDTH 79 #define FCARD_HEIGHT 123 /* this is the size of the bounding rectangle of the pictures for internal cards */ #define FACECARD_WIDTH 48 #define FACECARD_HEIGHT 92 #define RANK_WIDTH 9 #define RANK_HEIGHT 14 #define RANK_LOC_X 4 #define RANK_LOC_Y 7 #define SMALL_LOC_X 4 #define SMALL_LOC_Y (RANK_HEIGHT + RANK_LOC_Y + 3) #define MID_CARD_X (CARD_WIDTH/2) #define MID_CARD_Y (CARD_HEIGHT/2) #define CARD_COL1_X (3 * CARD_WIDTH/10) #define CARD_COL2_X (CARD_WIDTH/2) #define CARD_COL3_X (7 * CARD_WIDTH/10) /* 5 diff rows for the two main columns */ /* 1 and 5 are top and bottom, 3 is the middle */ /* 2 & 4 are for the 10 & 9 */ #define CARD_ROW1_Y (CARD_HEIGHT/5) #define CARD_ROW2_Y (2 * CARD_HEIGHT/5) #define CARD_ROW3_Y (CARD_HEIGHT/2) #define CARD_ROW4_Y (CARD_HEIGHT - 2 * CARD_HEIGHT/5) #define CARD_ROW5_Y (CARD_HEIGHT - CARD_HEIGHT/5) /* between 1 & 3, 3 & 5 */ #define CARD_SEVEN_Y (7 * CARD_HEIGHT/20) #define CARD_EIGHT_Y (CARD_HEIGHT - 7 * CARD_HEIGHT/20) /* between rows 1 & 2, 4 & 5 */ #define CARD_TEN_Y1 (3 * CARD_HEIGHT/10) #define CARD_TEN_Y2 (CARD_HEIGHT - 3 * CARD_HEIGHT/10) /* pip info */ #define PIP_WIDTH 10 #define PIP_HEIGHT 10 #define NUM_RANKS 13 #define NUM_SUITS 4 #define CARDS_PER_DECK (NUM_RANKS * NUM_SUITS) static GC cardgc; /* gc in use when drawing cards */ static GC backgc; /* gc in use when drawing cardbacks */ static GC redgc; /* gc for red parts of the cards */ /* default cards: */ #include "rank.bm" /* rank symbol bitmaps */ #include "face.bm" /* bitmaps for jack, queen and king */ #include "suit.bm" /* suit bitmaps */ #include "logo.bm" /* bitmap used for cardbacks */ static struct suit_tab { char *bits; int w; int h; } suit_tab[] = { { club_bits, club_width, club_height }, { spade_bits, spade_width, spade_height }, { heart_bits, heart_width, heart_height }, { diamond_bits, diamond_width, diamond_height } }, suit_sm_tab[] = { { club_sm_bits, club_sm_width, club_sm_height }, { spade_sm_bits, spade_sm_width, spade_sm_height }, { heart_sm_bits, heart_sm_width, heart_sm_height }, { diamond_sm_bits, diamond_sm_width, diamond_sm_height } }, suit_lg_tab[] = { { NULL, club_width, club_height }, { spade_lg_bits, spade_lg_width, spade_lg_height }, { NULL, heart_width, heart_height }, { NULL, diamond_width, diamond_height } }; static Pixmap rank_map[NUM_RANKS], rank_r_map[NUM_RANKS]; static Pixmap rank_map_red[NUM_RANKS], rank_r_map_red[NUM_RANKS]; static Pixmap suit_map[NUM_SUITS], suit_r_map[NUM_SUITS]; static Pixmap suit_sm_map[NUM_SUITS], suit_sm_r_map[NUM_SUITS]; static Pixmap suit_lg_map[NUM_SUITS]; static Pixmap jack_map[NUM_SUITS], queen_map[NUM_SUITS], king_map[NUM_SUITS]; static Pixmap joker_map; #include "Joker.bm" #ifdef STATIC_CLIPMAPS #include "clip7.bm" #include "clip4.bm" #endif static GC cardbackgc; #ifndef NO_ROUND_CARDS static Pixmap cardclipmap; #endif static int mem_option; static const char *xpmdir; static Pixmap cardpicts[58]; /* clipping rectangles */ static XRectangle cliprects[1] = {{ 0, 0, 0, 0 }}; static int card_is_clipped; /* optimizer for card drawing */ #include "gray1.bm" static void make_GCs(unsigned long red, unsigned long cbcolor) { XGCValues gcv; long gcflags; Pixmap tmpmap; GC logogc; Pixmap logomap; gcv.graphics_exposures = False; /* make GC for RED */ if (graphic.is_color) { gcv.foreground = red; gcv.background = WhitePixel(dpy, screen); gcflags = GCForeground | GCBackground | GCGraphicsExposures; redgc = XCreateGC(dpy, RootWindow(dpy, screen), gcflags, &gcv); } else { gcv.tile = XCreateBitmapFromData(dpy, RootWindow(dpy, screen), gray1_bits, gray1_width, gray1_height); gcv.fill_style = FillTiled; gcv.foreground = BlackPixel(dpy, screen); gcv.background = WhitePixel(dpy, screen); gcflags = GCTile | GCForeground | GCBackground | GCFillStyle | GCGraphicsExposures; redgc = XCreateGC(dpy, RootWindow(dpy, screen), gcflags, &gcv); } /* make GC for cardbacks */ tmpmap = XCreateBitmapFromData(dpy, RootWindow(dpy, screen), logo_bits, logo_width, logo_height); logomap = XCreatePixmap(dpy, RootWindow(dpy, screen), logo_width, logo_height, DefaultDepth(dpy, screen)); gcv.foreground = BlackPixel(dpy, screen); gcv.background = WhitePixel(dpy, screen); gcv.graphics_exposures = True; gcflags = GCForeground | GCBackground | GCGraphicsExposures; cardbackgc = XCreateGC(dpy, RootWindow(dpy, screen), gcflags, &gcv); if (graphic.is_color) { gcv.foreground = cbcolor; gcv.background = WhitePixel(dpy, screen); gcflags = GCForeground | GCBackground; logogc = XCreateGC(dpy, RootWindow(dpy, screen), gcflags, &gcv); XCopyPlane(dpy, tmpmap, logomap, logogc, 0, 0, logo_width, logo_height, 0, 0, 1); XFreeGC(dpy, logogc); } else { XCopyPlane(dpy, tmpmap, logomap, whitegc, 0, 0, logo_width, logo_height, 0, 0, 1); } XFreePixmap(dpy, tmpmap); gcv.tile = logomap; gcv.fill_style = FillTiled; gcflags |= GCTile | GCFillStyle | GCGraphicsExposures; backgc = XCreateGC(dpy, RootWindow(dpy, screen), gcflags, &gcv); } #define S(x,y) src[(H-1-(y))*W+(x)] #define D(x,y) dst[(H-1-(y))*W+(x)] /* table for left-right mirroring of bitmaps */ static char _reverse_byte[0x100] = { 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff }; static void copy_upside_down(char *src, char *dst, int W, int H) { int x, y; W = (W + 7)/8; /* round up to bytes */ for (y = 0; y < H; y++) { for (x = 0; x < W; x++) { D (x, y) = S (x, H - 1 - y); } } } /* copy a bitmap rotated from source to dest */ static void rot_180(char *src, char *dst, int W, int H) { int x, y; int width = W; char *new; int bit; W = (W + 7)/8; /* round up to bytes */ for (y = 0; y < H; y++) { for (x = 0; x < W; x++) { D (x, y) = _reverse_byte[(unsigned char)(S (W - 1 - x, H - 1 - y))]; } } /* shift it over (bit correction) */ new = calloc((size_t)W*H, 1); for (y = 0; y < H; y++) { for (x = 0; x < W*8; x++) { bit = (*(dst + (x + (W*8 - width))/8 + y * W) & (1 << ((x + (W*8 - width)) % 8))) ? 1 : 0; *(new + x/8 + y*W) = (bit << (x%8)) | (*(new + x/8 + y*W) & ~(1 << (x%8))); } } memcpy(dst, new, W*H); free(new); } /* large cards: */ /* * make a 'red' pixmap by setting the clipmask to the desired shape and * pushing 'red' through it */ static Pixmap make_color_map(char *bits, int width, int height, Suit suit) { Pixmap tmpmap, newmap; static GC cleargc = (GC) 0; XGCValues xgcv; if (suit == Spade || suit == Club || graphic.is_color) return XCreateBitmapFromData(dpy, RootWindow(dpy, screen), bits, width, height); /* get a graphic context, if not yet gotten */ if (cleargc == (GC) 0) { xgcv.function = GXclear; cleargc = XCreateGC(dpy, RootWindow(dpy, screen), GCFunction, &xgcv); } tmpmap = XCreateBitmapFromData(dpy, RootWindow(dpy, screen), bits, width, height); /* turn data into bitmap */ /* allocate a pixmap */ newmap = XCreatePixmap(dpy, RootWindow(dpy, screen), width, height, 1); /* clear red_map to white */ XFillRectangle(dpy, newmap, cleargc, 0, 0, width, height); /* use bitmap tmpmap as clipmap for red GC */ XSetClipMask(dpy, redgc, tmpmap); /* color red_map to red using the mask */ XFillRectangle(dpy, newmap, redgc, 0, 0, width, height); XSetClipMask(dpy, redgc, None); /* clear clipping mask in the red GC */ XFreePixmap(dpy, tmpmap); /* release bitmap */ return (newmap); } #ifdef LOADCARDS #include "X-loadcards.c" #endif /* build jack to king bitmaps of the internal cardset by mirroring the first half */ static char *compose_picture(char *tmp, const char *orgbits) { int cardsize = 6 * 45; /* omit one scanline */ memcpy(tmp, orgbits, cardsize); rot_180(tmp, tmp+cardsize+6, 47, 45); memset(tmp + cardsize, 0xff, 6); /* add a horizontal line in the middle */ return tmp; } static void build_internal_cardset(void) { char new_bits[120/8 * 200]; /* sufficient for the largest bitmap here */ Rank r; int i; ROUND_W = ROUND_H = 9; STD_DELTA = 25; /* create bitmaps for rank symbols normal and rotated */ for (r = Ace; r <= King; r++) { rank_map[(int)r] = XCreateBitmapFromData(dpy, RootWindow(dpy, screen), rank_bits[(int)r], rank_width, rank_height); rot_180(rank_bits[(int)r], new_bits, rank_width, rank_height); rank_r_map[(int)r] = XCreateBitmapFromData(dpy, RootWindow(dpy, screen), new_bits, rank_width, rank_height); if (graphic.is_color) { rank_map_red[(int)r] = rank_map[(int)r]; rank_r_map_red[(int)r] = rank_r_map[(int)r]; } else { rank_map_red[(int)r] = make_color_map( rank_bits[(int)r], rank_width, rank_height, Heart); rank_r_map_red[(int)r] = make_color_map( new_bits, rank_width, rank_height, Heart); } } for (i = 0; i < 4; ++i) { struct suit_tab *bp; char *king_bits[] = { king_c_bits, king_s_bits, king_h_bits, king_d_bits }; char *queen_bits[] = { queen_c_bits, queen_s_bits, queen_h_bits, queen_d_bits }; char *jack_bits[] = { jack_c_bits, jack_s_bits, jack_h_bits, jack_d_bits }; bp = suit_tab + i; copy_upside_down(bp->bits, new_bits, bp->w, bp->h); suit_map[i] = make_color_map(bp->bits, bp->w, bp->h, (Suit)i); suit_r_map[i] = make_color_map(new_bits, bp->w, bp->h, (Suit)i); bp = suit_sm_tab + i; copy_upside_down(bp->bits, new_bits, bp->w, bp->h); suit_sm_map[i] = make_color_map(bp->bits, bp->w, bp->h, (Suit)i); suit_sm_r_map[i] = make_color_map(new_bits, bp->w, bp->h, (Suit)i); bp = suit_lg_tab + i; suit_lg_map[i] = bp->bits ? make_color_map(bp->bits, bp->w, bp->h, (Suit)i) : suit_map[i]; jack_map[i] = make_color_map(compose_picture(new_bits, jack_bits[i]), 47, 91, (Suit)i); queen_map[i] = make_color_map(compose_picture(new_bits, queen_bits[i]), 47, 91, (Suit)i); king_map[i] = make_color_map(compose_picture(new_bits, king_bits[i]), 47, 91, (Suit)i); } joker_map = XCreateBitmapFromData(dpy, RootWindow(dpy, screen), Joker_bits, Joker_width, Joker_height); /* turn data into bitmap */ } void init_cards(const char *cardset, int rx, int ry, unsigned long red, unsigned long cbcolor, int mem, const char *xpm, int closeness) { #ifdef NO_ROUND_CARDS rx = ry = 0; #endif mem_option = mem; if (xpm && *xpm != '.' && *xpm != '/') { char *s; s = malloc(strlen(LIBDIR) + strlen(xpm) + 2); sprintf(s, "%s/%s", LIBDIR, xpm); xpmdir = s; } else xpmdir = xpm; /* directory where to load from the Xpm-files */ card.cardset = cardset; make_GCs(red, cbcolor); if (cardset) { /* read external cardset */ #ifdef LOADCARDS read_bitmap(cardset) #endif ; } else { /* build internal cardset */ CARD_WIDTH = -1; if (xpm) { char s[200]; FILE *fp; sprintf(s, "%s/Cards.conf", xpmdir); if ((fp = fopen(s, "r"))) { if (fscanf(fp, "%d %d", &CARD_WIDTH, &CARD_HEIGHT) != 2) CARD_WIDTH = -1; fclose(fp); } } if (CARD_WIDTH < 49 || CARD_WIDTH > 120 || CARD_HEIGHT < 95 || CARD_HEIGHT > 200) { CARD_WIDTH = FCARD_WIDTH; CARD_HEIGHT = FCARD_HEIGHT; } build_internal_cardset(); } cliprects[0].width = CARD_WIDTH + 1; /* sanity checks: */ if (2 * rx >= (int)CARD_WIDTH) rx = CARD_WIDTH / 2; if (2 * ry >= (int)CARD_HEIGHT) ry = CARD_HEIGHT / 2; /* assign values */ if (rx >= 0) card.rx = rx; if (ry >= 0) card.ry = ry; card.back_delta_x = (CARD_WIDTH - logo_width)/2; card.back_delta_y = (CARD_HEIGHT - logo_height)/2; /* finally, compute a clipping mask for the cards */ /* apply this clip mask to cardbackgc */ #ifndef NO_ROUND_CARDS #ifndef STATIC_CLIPMAPS if (ROUND_W) { cardclipmap = XCreatePixmap(dpy, RootWindow(dpy, screen), CARD_WIDTH+1, CARD_HEIGHT+1, 1); { XGCValues gcv; long gcflags, f, b; GC clipgc; b = 0; f = 1; /* first, clear the clipmap */ /* (is it possible to do it easier?) */ gcv.foreground = b; gcv.background = f; gcv.graphics_exposures = False; gcflags = GCForeground | GCBackground | GCGraphicsExposures; clipgc = XCreateGC(dpy, cardclipmap, gcflags, &gcv); XFillRectangle(dpy, cardclipmap, clipgc, 0, 0, CARD_WIDTH, CARD_HEIGHT); XFreeGC(dpy, clipgc); /* make gc for clipgc */ gcv.foreground = f; gcv.background = b; gcv.graphics_exposures = False; gcflags = GCForeground | GCBackground | GCGraphicsExposures; clipgc = XCreateGC(dpy, cardclipmap, gcflags, &gcv); XmuFillRoundedRectangle(dpy, cardclipmap, clipgc, 0, 0, CARD_WIDTH-1, CARD_HEIGHT-1, ROUND_W, ROUND_H); XmuDrawRoundedRectangle(dpy, cardclipmap, clipgc, 0, 0, CARD_WIDTH-1, CARD_HEIGHT-1, ROUND_W, ROUND_H); XFreeGC(dpy, clipgc); } #ifdef DEBUG XWriteBitmapFile(dpy, "clip.mask.bm", cardclipmap, CARD_WIDTH, CARD_HEIGHT, -1, -1); #endif /* fill the background */ XSetClipMask(dpy, cardbackgc, cardclipmap); } #else switch (ROUND_H) { case 3: case 4: case 5: cardclipmap = XCreateBitmapFromData(dpy, RootWindow(dpy, screen), clip4_bits, clip4_width, clip4_height); XSetClipMask(dpy, cardbackgc, cardclipmap); break; case 6: case 7: case 8: case 9: cardclipmap = XCreateBitmapFromData(dpy, RootWindow(dpy, screen), clip7_bits, clip7_width, clip7_height); XSetClipMask(dpy, cardbackgc, cardclipmap); break; } #endif #endif } static void paint_cardback(int x, int y, int w, int h, Drawable d) { #define INSETa 1 #define INSETb 1 /* change the origin so cards will have the same back anywhere * on the table */ /* * there should be a tile centered in the card, with the * surrounding tiles being partial */ XSetClipMask(dpy, backgc, None); XSetClipMask(dpy, blackgc, None); #ifndef NO_ROUND_CARDS if (ROUND_W) { XmuFillRoundedRectangle(dpy, d, blackgc, x, y, (w == CARD_WIDTH) ? w-1 : w + ROUND_W * 2, (h == CARD_HEIGHT) ? h-1 : h + ROUND_H * 2, ROUND_W, ROUND_H); } else #endif XFillRectangle(dpy, d, blackgc, x, y, w, h); XSetTSOrigin(dpy, backgc, x + card.back_delta_x, y + card.back_delta_y); #ifndef NO_ROUND_CARDS if (ROUND_W) XmuFillRoundedRectangle(dpy, d, backgc, x + INSETa, y + INSETa, (w == CARD_WIDTH ? CARD_WIDTH - INSETa - INSETb - 1 : w + ROUND_W * 2), (h == CARD_HEIGHT ? CARD_HEIGHT - INSETa - INSETb - 1 : h + ROUND_H * 2), ROUND_W, ROUND_H); else #endif XFillRectangle(dpy, d, backgc, x + INSETa, y + INSETa, (w == CARD_WIDTH ? CARD_WIDTH - INSETa - INSETb - 1 : w - 1), (h == CARD_HEIGHT ? CARD_HEIGHT - INSETa - INSETb - 1 : h - 1)); /* correction */ #ifndef NO_ROUND_CARDS if (ROUND_W) { XmuDrawRoundedRectangle(dpy, d, blackgc, x, y, (w == CARD_WIDTH ? w-1 : w + ROUND_W * 2), (h == CARD_HEIGHT ? h-1 : h + ROUND_H * 2), ROUND_W, ROUND_H); XmuDrawRoundedRectangle(dpy, d, blackgc, x+1, y+1, (w == CARD_WIDTH ? w-3 : w + ROUND_W * 2), (h == CARD_HEIGHT ? h-3 : h + ROUND_H * 2), ROUND_W-1, ROUND_H-1); } else #endif XDrawRectangle(dpy, d, blackgc, x+1, y+1, (w == CARD_WIDTH ? w-2 : w), (h == CARD_HEIGHT ? h-2 : h)); } /* * NOTE -- for all the pip drawers except the one that actually plots the * bits, the location is the card's location. the drawer's take the * pip's center as location. */ /* * draws right-side-up pip * * location is for center of pip */ static void draw_pip(Suit suit, int x, int y, Drawable d) { XCopyPlane(dpy, suit_map[suit], d, cardgc, 0, 0, suit_tab[suit].w, suit_tab[suit].h, x - 15/2, y - 19/2, 1); } /* * draws upside-down pip * * location is for center of pip */ static void draw_did(Suit suit, int x, int y, Drawable d) { if (card_is_clipped) /* a clipped card never shows any did's */ return; XCopyPlane(dpy, suit_map[suit], d, cardgc, 0, 0, suit_tab[suit].w, suit_tab[suit].h, x - 15/2, y - 19/2, 1); } /* * draws big center pip */ static void draw_center_pip(Suit suit, int x, int y, Drawable d) { int w, h; if (card_is_clipped) /* a clipped card never shows any big's */ return; w = suit_lg_tab[suit].w; h = suit_lg_tab[suit].h; XCopyPlane(dpy, suit_lg_map[suit], d, cardgc, 0, 0, w, h, x - w/2, y - h/2, 1); } /* * draw_two_pips */ static void draw_two_pips(Suit suit, int x, int y, Drawable d) { draw_pip(suit, x + MID_CARD_X, y + CARD_ROW1_Y, d); draw_did(suit, x + MID_CARD_X, y + CARD_ROW5_Y, d); } /* * draw_four_pips */ static void draw_four_pips(Suit suit, int x, int y, Drawable d) { draw_pip(suit, x + CARD_COL1_X, y + CARD_ROW1_Y, d); draw_did(suit, x + CARD_COL1_X, y + CARD_ROW5_Y, d); draw_pip(suit, x + CARD_COL3_X, y + CARD_ROW1_Y, d); draw_did(suit, x + CARD_COL3_X, y + CARD_ROW5_Y, d); } static void draw_six_pips(Suit suit, int x, int y, Drawable d) { draw_pip(suit, x + CARD_COL1_X, y + CARD_ROW1_Y, d); draw_pip(suit, x + CARD_COL3_X, y + CARD_ROW1_Y, d); if (card_is_clipped) return; /* these are only visible when its not clipped */ draw_pip(suit, x + CARD_COL1_X, y + CARD_ROW3_Y, d); draw_did(suit, x + CARD_COL1_X, y + CARD_ROW5_Y, d); draw_pip(suit, x + CARD_COL3_X, y + CARD_ROW3_Y, d); draw_did(suit, x + CARD_COL3_X, y + CARD_ROW5_Y, d); } static void draw_eight_pips(Suit suit, int x, int y, Drawable d) { draw_pip(suit, x + CARD_COL1_X, y + CARD_ROW1_Y, d); draw_pip(suit, x + CARD_COL3_X, y + CARD_ROW1_Y, d); if (card_is_clipped) return; /* these are only visible when its not clipped */ draw_pip(suit, x + CARD_COL1_X, y + CARD_ROW2_Y, d); draw_did(suit, x + CARD_COL1_X, y + CARD_ROW4_Y, d); draw_did(suit, x + CARD_COL1_X, y + CARD_ROW5_Y, d); draw_pip(suit, x + CARD_COL3_X, y + CARD_ROW2_Y, d); draw_did(suit, x + CARD_COL3_X, y + CARD_ROW4_Y, d); draw_did(suit, x + CARD_COL3_X, y + CARD_ROW5_Y, d); } static void draw_jack(Suit suit, int x, int y, Drawable d) { XCopyPlane(dpy, jack_map[suit], d, cardgc, 0, 0, FACECARD_WIDTH-1, FACECARD_HEIGHT-1, x + 1 + (CARD_WIDTH - FACECARD_WIDTH)/2, y + 1 + (CARD_HEIGHT - FACECARD_HEIGHT)/2, 1); XDrawRectangle(dpy, d, cardgc, x + (CARD_WIDTH - FACECARD_WIDTH)/2, y + (CARD_HEIGHT - FACECARD_HEIGHT)/2, FACECARD_WIDTH, FACECARD_HEIGHT); } static void draw_queen(Suit suit, int x, int y, Drawable d) { XCopyPlane(dpy, queen_map[suit], d, cardgc, 0, 0, FACECARD_WIDTH-1, FACECARD_HEIGHT-1, x + 1+(CARD_WIDTH - FACECARD_WIDTH)/2, y + 1+(CARD_HEIGHT - FACECARD_HEIGHT)/2, 1); XDrawRectangle(dpy, d, cardgc, x + (CARD_WIDTH - FACECARD_WIDTH)/2, y + (CARD_HEIGHT - FACECARD_HEIGHT)/2, FACECARD_WIDTH, FACECARD_HEIGHT); } static void draw_king(Suit suit, int x, int y, Drawable d) { XCopyPlane(dpy, king_map[suit], d, cardgc, 0, 0, FACECARD_WIDTH-1, FACECARD_HEIGHT-1, x + 1+(CARD_WIDTH - FACECARD_WIDTH)/2, y + 1+(CARD_HEIGHT - FACECARD_HEIGHT)/2, 1); XDrawRectangle(dpy, d, cardgc, x + (CARD_WIDTH - FACECARD_WIDTH)/2, y + (CARD_HEIGHT - FACECARD_HEIGHT)/2, FACECARD_WIDTH, FACECARD_HEIGHT); } static void draw_rank(int x, int y, Rank rank, Suit suit, Drawable d) { if (suit == Heart || suit == Diamond) { XCopyPlane(dpy, rank_map_red[rank], d, cardgc, 0, 0, RANK_WIDTH, RANK_HEIGHT, x + RANK_LOC_X, y + RANK_LOC_Y, 1); if (!card_is_clipped) XCopyPlane(dpy, rank_r_map_red[rank], d, cardgc, 0, 0, RANK_WIDTH, RANK_HEIGHT, x + (CARD_WIDTH - RANK_WIDTH - RANK_LOC_X), y + (CARD_HEIGHT - RANK_HEIGHT - RANK_LOC_Y), 1); } else { XCopyPlane(dpy, rank_map[rank], d, cardgc, 0, 0, RANK_WIDTH, RANK_HEIGHT, x + RANK_LOC_X, y + RANK_LOC_Y, 1); if (!card_is_clipped) XCopyPlane(dpy, rank_r_map[rank], d, cardgc, 0, 0, RANK_WIDTH, RANK_HEIGHT, x + (CARD_WIDTH - RANK_WIDTH - RANK_LOC_X), y + (CARD_HEIGHT - RANK_HEIGHT - RANK_LOC_Y), 1); } { int w, h, o; w = suit_sm_tab[suit].w; h = suit_sm_tab[suit].h; o = (suit == Diamond); XCopyPlane(dpy, suit_sm_map[suit], d, cardgc, 0, 0, w, h, x + o + SMALL_LOC_X, y + SMALL_LOC_Y, 1); if (!card_is_clipped) XCopyPlane(dpy, suit_sm_r_map[suit], d, cardgc, 0, 0, w, h, x - o + (CARD_WIDTH - w - SMALL_LOC_X), y + (CARD_HEIGHT - h - SMALL_LOC_Y), 1); } } static void paint_joker(int x, int y, Drawable d) { #ifndef NO_ROUND_CARDS if (ROUND_W) { XSetClipMask(dpy, blackgc, cardclipmap); XSetClipOrigin(dpy, blackgc, x, y); } #endif XCopyPlane(dpy, joker_map, d, blackgc, 0, 0, CARD_WIDTH, CARD_HEIGHT, x, y, 1); #ifndef NO_ROUND_CARDS if (ROUND_W) XSetClipMask(dpy, blackgc, None); if (ROUND_W) XmuDrawRoundedRectangle(dpy, d, blackgc, x, y, CARD_WIDTH-1, CARD_HEIGHT-1, ROUND_W, ROUND_H); else #endif /* draw border on card */ XDrawRectangle(dpy, d, blackgc, x, y, CARD_WIDTH-1, CARD_HEIGHT-1); } static void paint_large_card(int x, int y, int rank, Suit suit, Drawable d) { if (suit == Spade || suit == Club) { cardgc = blackgc; } else { cardgc = redgc; } #ifndef NO_ROUND_CARDS if (ROUND_W) { /* fill the background */ XmuFillRoundedRectangle(dpy, d, whitegc, x, y, CARD_WIDTH-1, CARD_HEIGHT-1, ROUND_W, ROUND_H); /* draw border on card */ XmuDrawRoundedRectangle(dpy, d, blackgc, x, y, CARD_WIDTH-1, CARD_HEIGHT-1, ROUND_W, ROUND_H); } else #endif { /* fill the background */ XFillRectangle(dpy, d, whitegc, x, y, CARD_WIDTH-1, CARD_HEIGHT-1); /* draw border on card */ XDrawRectangle(dpy, d, blackgc, x, y, CARD_WIDTH-1, CARD_HEIGHT-1); } card_is_clipped = False; switch (rank) { case King: draw_king(suit, x, y, d); break; case Queen: draw_queen(suit, x, y, d); break; case Jack: draw_jack(suit, x, y, d); break; case Ten: draw_pip(suit, MID_CARD_X + x, CARD_TEN_Y1 + y, d); draw_did(suit, MID_CARD_X + x, CARD_TEN_Y2 + y, d); draw_eight_pips(suit, x, y, d); break; case Nine: draw_pip(suit, x + MID_CARD_X, y + MID_CARD_Y, d); draw_eight_pips(suit, x, y, d); break; case Eight: draw_did(suit, x + MID_CARD_X, y + CARD_EIGHT_Y, d); /* fall thru */ case Seven: draw_pip(suit, MID_CARD_X + x, CARD_SEVEN_Y + y, d); /* fall thru */ case Six: draw_six_pips(suit, x, y, d); break; case Five: draw_pip(suit, x + MID_CARD_X, y + MID_CARD_Y, d); /* fall thru */ case Four: draw_four_pips(suit, x, y, d); break; case Three: draw_pip(suit, x + MID_CARD_X, y + MID_CARD_Y, d); /* fall thru */ case Deuce: draw_two_pips(suit, x, y, d); break; case 13: case Ace: draw_center_pip(suit, x + MID_CARD_X, y + MID_CARD_Y, d); break; default: assert(0); } if (rank != 13) draw_rank(x, y, rank, suit, d); /* clear the clip mask */ XSetClipMask(dpy, cardgc, None); #ifndef NO_ROUND_CARDS if (ROUND_W) { if (!x &&!y) { /* special: if round card and initial call, repaint rounding */ /* this is for extremely rounded card which get over-painted */ XmuDrawRoundedRectangle(dpy, d, blackgc, x, y, CARD_WIDTH-1, CARD_HEIGHT-1, ROUND_W, ROUND_H); } XSetClipMask(dpy, whitegc, None); if (cardgc != blackgc) XSetClipMask(dpy, blackgc, None); } #endif } void PaintCard(int x, int y, int c, int w, int h) { static Suit Suittab[4] = { Club, Spade, Heart, Diamond }; static int initial_call = 1; /* initial-call-flag */ /* JOKERs not yet fully implemented */ if (c == NOTHING) return; if (c != OUTLINE) { #ifdef LOADCARDS if (card.cardset) { /* externally loaded cards: */ if (IS_JOKER(c)) c = SUIT(c) + SUITSYMBOL; /* do this instead */ if (c < numcards) { paint_external_card(x, y, c); return; } else if (c == CARDBACK) { if (!w) w = CARD_WIDTH; if (!h) h = CARD_HEIGHT; paint_cardback(x, y, w, h, table); return; } else { /* must be suit symbol */ c = OUTLINE; /* do outline as replacement */ /* and fall thru */ } } else #endif { /* do default cards */ if (!mem_option) { if (IS_JOKER(c)) paint_joker(x, y, table); /* do this instead */ else if (c != CARDBACK) paint_large_card(x, y, RANK(c), Suittab[SUIT(c)], table); else { if (!w) w = CARD_WIDTH; if (!h) h = CARD_HEIGHT; paint_cardback(x, y, w, h, table); } return; } else { if (initial_call) { int i; initial_call = 0; cardpicts[57] = 0; /* Joker is loaded on request */ for (i = 0; i <= 56; ++i) { if (xpmdir && (i < 52 || i >= 56)) { char s[200]; if (i == CARDBACK) { strcpy(s, xpmdir); strcat(s, "/Cardback.xpm"); } else sprintf(s, "%s/%s.%s.xpm", xpmdir, US_rank_name[RANK(i)], US_suit_name[SUIT(i)]); if (read_pixmap(s, &cardpicts[i])) continue; /* load succeeded */ } /* no file found, must create internal card */ cardpicts[i] = XCreatePixmap(dpy, table, CARD_WIDTH, CARD_HEIGHT, DefaultDepth(dpy, screen)); if (i == CARDBACK) paint_cardback(0, 0, CARD_WIDTH, CARD_HEIGHT, cardpicts[i]); else paint_large_card(0, 0, RANK(i), Suittab[SUIT(i)], cardpicts[i]); } #ifdef SAVE_IMAGES for (i = 0; i < 52; ++i) { char s[20]; sprintf(s, "%s.%s.xpm", US_rank_name[RANK(i)], US_suit_name[SUIT(i)]); write_pixmap(s, cardpicts[i], cardclipmap); } #endif } if (IS_JOKER(c)) { c = 57; if (!cardpicts[c]) { /* must load or draw joker */ if (xpmdir) { char s[200]; sprintf(s, "%s/Joker.xpm", xpmdir); (void)read_pixmap(s, &cardpicts[c]); } if (!cardpicts[c]) { cardpicts[c] = XCreatePixmap(dpy, table, CARD_WIDTH, CARD_HEIGHT, DefaultDepth(dpy, screen)); paint_joker(0, 0, cardpicts[c]); } } } w += ROUND_W; h += ROUND_H; if (w == ROUND_W || w > CARD_WIDTH) w = CARD_WIDTH; if (h == ROUND_H || h > CARD_HEIGHT) h = CARD_HEIGHT; XSetClipOrigin(dpy, cardbackgc, x, y); XCopyArea(dpy, cardpicts[c], table, cardbackgc, 0, 0, w, h, x, y); return; } } } /* if (c == OUTLINE) */ /* to be sure the place is clear: */ XClearArea(dpy, table, x, y, CARD_WIDTH, CARD_HEIGHT, False); #ifndef NO_ROUND_CARDS if (ROUND_W) XmuDrawRoundedRectangle(dpy, table, blackgc, x, y, CARD_WIDTH-1, CARD_HEIGHT-1, ROUND_W, ROUND_H); else #endif XDrawRectangle(dpy, table, blackgc, x, y, CARD_WIDTH-1, CARD_HEIGHT-1); } xpat2-1.07/src/X-layout.c100644 146 144 13122 6713612276 13665 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module X-layout.c */ /* */ /* Layout function for the X interface */ /* written by Heiko Eissfeldt and Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "X-pat.h" #ifdef useXlib int calc_yoff(int); int arrange_buttons(struct singlebutton *b, int *startx, int *starty, XSize_t maxx, long *magic) { int x, y, num; long mask; /* printf("arrange width %d\n", maxx); */ x = *startx; y = *starty; num = 0; *magic = 0; mask = 1L; while (b->text) { /* weiterer button vorhanden */ ++num; b->x = x; b->y = y; b->w = 2 * button.bx + XTextWidth(button.font, b->text, strlen(b->text)); b->h = 2 * button.by + button.fontheight; while (x > graphic.xgap && x + b->w + graphic.xgap >= maxx) { /* line is full, next line */ *magic |= mask; x = *startx; y += 2 * button.by + button.fontheight + graphic.ygap; b->x = x; b->y = y; } mask <<= 1; x += b->w + graphic.xgap; ++b; } *startx = x; *starty = y + 2 * button.by + button.fontheight + graphic.ygap; return num; } int calc_yoff(int w) { long dummy; int x, y; x = graphic.xgap; y = graphic.ygap; button.num = arrange_buttons(button.b, &x, &y, w, &dummy); graphic.buttons_height = y; graphic.message_x = 10; graphic.message_y = y + TABLE_BW + graphic.message_font->ascent; graphic.message_height = 2 * TABLE_BW + graphic.message_font->ascent + graphic.message_font->descent; return graphic.buttons_height + graphic.message_height; } #endif void new_rules_coming(void) { /* no cleanup action necessary */ } void new_rules_notify(void) { XSize_t w, h; #ifdef useXview xv_set(mainwindow, FRAME_LABEL, (rules.longname? rules.longname: rules.shortname), 0); #else XStoreName(dpy, mainwindow, rules.longname ? rules.longname : rules.shortname); #endif refresh_screen(); /* sometimes needed (at least if area is smaller) */ /* compute minimum size */ generic_minwindow(); #ifdef useXlib geo.min_height += calc_yoff(geo.min_width); #endif w = geo.min_width; h = geo.min_height; #ifdef LABER printf("min size set to %d, %d\n", w, h); #endif #ifdef useXlib { XSizeHints xsh; xsh.flags = PMinSize; xsh.min_width = w; xsh.min_height = h; XSetWMNormalHints(dpy, table, &xsh); } w = max(graphic.width, w); h = max(graphic.height, h); #else w = max(w, geo.w_width); h = max(h, geo.w_height); #endif /* w and h are the maximum of the current visible size and the minimum size */ if (w != graphic.width || h != graphic.height) soft_Resize(w, h); /* request a resize if greater */ init_layout(); /* new setup */ } void cmd_Layout(void) { int i; init_layout(); for (i = FIRST_SLOT; i <= LAST_SLOT; ++i) if (pile_resize(i)) draw_pileupdate(i, 0); } void obtain_current_geometry(void) { #ifdef useXaw geo.w = geo.w_width; geo.h = geo.w_height; #else geo.w = graphic.width; geo.h = graphic.height; #endif geo.dx = graphic.xgap; geo.dy = graphic.ygap; geo.cw = CARD_WIDTH; geo.ch = CARD_HEIGHT; geo.rx = card.rx; geo.ry = card.ry; } /* there are 4 types of piles: VDECK, tmps, slots, stacks */ /* the IDECK is of no interest for this function */ /* find a layout for geo.w/geo.h, which is at least geo.min_width, geo.min_height and store the minimal size of this layout type in geo_preferred_width, geo.preferred_height */ void init_layout(void) { static int layout_type = -1, yoff = -1; static long magic = -1; /* only for Xlib */ long new_magic = 0; int w, h, new_layout_type; int xnum, ynum; /* number of cards in either direction */ /* get the size of the actual window */ #ifdef useXaw w = geo.w_width; h = geo.w_height; #else w = graphic.width; h = graphic.height; #endif #ifdef LABER printf("init_layout requested for size (%d,%d)\n", w, h); #endif #ifdef useXlib { int x, y; x = geo.dx; y = geo.dy; /* y is used space in vertical direction */ /* get new_magic! */ button.num = arrange_buttons(button.b, &x, &y, w, &new_magic); /* sorry, work is done twice */ graphic.yoff = calc_yoff(w); geo.h -= graphic.yoff; /* assume smaller height */ } obtain_current_geometry(); new_layout_type = generate_layout(); { int i; for (i = 0; i < game.numpiles; ++i) if (!NOT_DISPLAYED(geo.pg+i)) geo.pg[i].y += graphic.yoff; geo.h += graphic.yoff; geo.preferred_height += graphic.yoff; } #else obtain_current_geometry(); new_layout_type = generate_layout(); #endif xnum = (geo.w - geo.dx) / (geo.cw+geo.dx); ynum = (geo.h - geo.dy) / (geo.ch+geo.dy); #if 0 /* debug */ printf("deck %d position: (%d,%d), first slot at (%d,%d)\n", p - geo.pg, p->x, p->y, geo.pg[rules.numstacks].x, geo.pg[rules.numstacks].y); printf("cols = %d, off = %d\n", cols, off); printf("xxdeck at pos %d,%d\n", geo.pg[DECK].x, geo.pg[DECK].y); #endif if (new_layout_type != layout_type || geo.dy != yoff) { /* new_layout_type < 10) { everything changed (or may be resized) */ layout_type = new_layout_type; yoff = geo.dy; magic = new_magic; refresh_screen(); } else if (magic != new_magic) { /* at least one button did move */ magic = new_magic; XClearArea(dpy, table, 0, 0, 0, geo.dy-2, True); /* just redraw the buttons */ } } xpat2-1.07/src/X-markcard.c100644 146 144 6741 6711677164 14132 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module X-markcard.c */ /* */ /* Routines for marking selected cards */ /* written by Heiko Eissfeldt and Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "X-pat.h" #ifndef NO_ROUND_CARDS #include #endif #include "stipple.bm" /* game.for set-mark / clear-mark */ static GC stipplegc; static Pixmap mark_storage = 0; static int mark_height = 0, mark_width = 0; static int rem_x, rem_y; static XSize_t rem_w, rem_h; /* h = 0: only horizontal bars saved */ void init_mark(unsigned long pixel, int markwidth) { /* make GCs for dashed lines or colored lines (to mark cards) */ XGCValues gcv; long gcflags; Pixmap stipplemap; stipplemap = XCreateBitmapFromData(dpy, RootWindow(dpy, screen), stipple_bits, stipple_width, stipple_height); gcflags = GCForeground | /* GCBackground | */ GCGraphicsExposures | GCFillStyle | GCStipple; gcv.graphics_exposures = True; gcv.foreground = BlackPixel(dpy, screen); gcv.background = WhitePixel(dpy, screen); gcv.stipple = stipplemap; gcv.fill_style = FillStippled; stipplegc = XCreateGC(dpy, RootWindow(dpy, screen), gcflags, &gcv); } static void create_mark_storage(void) { mark_storage = XCreatePixmap(dpy, table, mark_width, mark_height, /* geo.lsw, geo.lsh, */ DefaultDepth(dpy, screen)); } static void free_mark(void) { if (mark_storage) XFreePixmap(dpy, mark_storage); mark_storage = 0; } static void set_mark(int x, int y, XSize_t W, XSize_t h) { if (h > mark_height) { /* make sure there's enough space */ free_mark(); mark_height = h; } if (W > mark_width) { free_mark(); mark_width = W; } if (!mark_storage) create_mark_storage(); rem_h = h; rem_w = W; rem_x = x; rem_y = y; XCopyArea(dpy, table, mark_storage, whitegc, x, y, rem_w, rem_h, 0, 0); #ifndef NO_ROUND_CARDS if (ROUND_W) XmuFillRoundedRectangle(dpy, table, stipplegc, x, y, rem_w, rem_h, ROUND_W, ROUND_H); else #endif XFillRectangle(dpy, table, stipplegc, x, y, rem_w, rem_h); XFlush(dpy); } static void clear_mark(void) { XCopyArea(dpy, mark_storage, table, whitegc, 0, 0, rem_w, rem_h, rem_x, rem_y); XFlush(dpy); } /* pile is completely drawn and unmarked. */ /* check, if pile has to be marked. */ /* if so, do it */ void show_mark(boolean on) { if (!game.graphic) return; if (on) { struct pilegeometry *p; int f, l; int pile, m_x, m_y, m_w, m_h; if (game.srcind < 0) return; if (!mark_storage) { mark_height = geo.lsh; mark_width = geo.lsw; create_mark_storage(); } p = geo.pg + (pile = getpile(game.srcind)); f = game.srcind - INDEX_OF_FIRST_CARD(pile); l = CARDS_ON_PILE(pile)-1; if (p->cdx >= 0) { m_x = p->x + p->ox + f * p->cdx; m_w = (l-f)*p->cdx + geo.cw; } else { m_x = p->x + p->ox + l * p->cdx; m_w = (f-l)*p->cdx + geo.cw; } if (p->cdy >= 0) { m_y = p->y + p->oy + f * p->cdy; m_h = (l-f)*p->cdy + geo.ch; } else { m_y = p->y + p->oy + l * p->cdy; m_h = (f-l)*p->cdy + geo.ch; } set_mark(m_x, m_y, m_w, m_h); } else { clear_mark(); } } xpat2-1.07/src/X-pat.h100644 146 144 15513 6714043443 13142 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module X-pat.h */ /* */ /* Copyright (C) 1993, 1994 by Heiko Eissfeldt and Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* This file is included by all sources for the X interface */ /* */ /* */ /*****************************************************************************/ #if !defined(useXlib) && !defined(useXaw) && !defined(useXm) && !defined(useXview) #error "You must define one of useXlib, useXaw, useXm, useXview" #endif #include "xpat.h" #include "xpatgeo.h" #include #include #include #ifndef useXview #include #endif #ifdef useXaw #include #include #include #include #include #include #include #include #include #include #include #include #include #include #endif #ifdef useXm #include #include #include #include #include #include #include #include #include #include #endif #ifdef useXview #include #include #include #include #include #include #include #include #include #include #endif typedef unsigned int XSize_t; /* type used by X for width and height */ /* this is not consistent used by X11R5 */ /* in X11R3, XSize_t was int, since R4 we seem to have a mixture of int */ /* and unsigned int! (complain!) */ void resize_event(XSize_t w, XSize_t h); #ifdef useXview #define soft_Resize Force_Resize #else #ifdef useXlib #define soft_Resize Force_Resize #else /* Xaw and Xm */ extern Widget toplevel; void AskWidgetForResize(XSize_t x, XSize_t y); #define soft_Resize AskWidgetForResize #endif #endif void init_gfx(void); void init_fonts(const char *, const char *); void init_windows(int, char **, const char *, int, int, int, int, int, int, int, const char *); void init_layout(void); void init_cards(const char *, int, int, unsigned long, unsigned long, int, const char *, int); void PaintCard(int, int, int, int, int); void do_show_rules(void); void init_exposed_card(void); void show_exposed_card(boolean); #ifdef useXview void init_arrow(unsigned long, int, int); #else void init_arrow(const char *, int, int); void handle_expose_event(XExposeEvent *); #endif void init_mark(unsigned long pixel, int markwidth); void Force_Resize(XSize_t, XSize_t); #ifdef useXview void table_events(Xv_Window, Event *); void table_resize(Canvas, int, int); void table_repaint(Canvas, Xv_Window, Rectlist *); void frame_resize(Xv_Window, Event *); void frame_pack_all(Frame); #endif /* events called from Tableau widget or from Xlib */ void key_press(XKeyPressedEvent *xev); void redraw_table(XExposeEvent *xev); void button_press(XButtonPressedEvent *xev); void button_release(XButtonPressedEvent *xev); void mouse_motion(XPointerMovedEvent *xev); int main(int, char **); /* more abbrevs */ #define DEFAULT_CLOSENESS 20000 /* default closeness for Xpm reads */ #define XDEFAULT_CLOSENESS "20000" /* default closeness for Xpm reads */ /* definition of a card: */ /* bits 0 and 1 give the color: 0 = diamond, 1 = heart, 2 = spades, 3 = club */ #define SUITSYMBOL 52 /* for empty stacks */ #define CARDBACK 56 #define OUTLINE 58 #define NOTHING 59 #define ROUND_W (card.rx) #define ROUND_H (card.ry) #define CARD_WIDTH (card.w) #define CARD_HEIGHT (card.h) #define STD_DELTA (card.stddelta) extern struct graphic { boolean is_color; /* True, if more than one bit per pixel */ boolean autolayout; /* automatic new layout at resize events */ XSize_t width; /* the width of the table window */ XSize_t height; /* the height of the table window */ XSize_t xgap; /* room between two cards horizontally */ XSize_t ygap; /* room between two cards vertically */ Cardindex zoomed_card; /* -1 or the index of an exposed card */ #if 0 int ya_w, ya_h, xa_w, xa_h; /* arrow head dimension, set by init */ int aw, ah; /* width and height of an arrow */ #endif #ifdef useXlib int message_x; /* start of text */ int message_y; XSize_t buttons_height; /* the height of the buttons (non-Xaw) */ XSize_t message_height; /* the height of the message window (non-Xaw) */ int yoff; /* where the actual table starts */ XFontStruct *message_font; GC textgc; #endif } graphic; extern struct card { const char *cardset; /* name of file for cards, or NULL for internals */ int rx; /* round edge, x */ int ry; /* round edge, y */ XSize_t w; /* width of a card */ XSize_t h; /* height of a card */ int stddelta; /* standard delta */ int back_delta_x; /* from spider */ int back_delta_y; /* (how much to modify the TS origin by) */ } card; #ifdef useXview extern Window table; extern Frame mainwindow; extern Panel buttonbox; extern Canvas canvas; extern Menu cmenu; extern Event *bp_event; #else extern Window table, mainwindow; #endif extern Display *dpy; extern int screen; extern unsigned long blackpixel; extern unsigned long whitepixel; extern GC blackgc; extern GC whitegc; #ifdef useXlib #define TABLE_BW 2 #define MAXBUTTONS 32 extern struct buttons { int num; int rx; /* radius of round corner, x */ int ry; /* radius of round corner, y */ XSize_t bx; /* border size, x */ XSize_t by; /* border size, y */ XFontStruct *font; int fontheight; /* ascend + descend */ GC gc; struct singlebutton { int x; int y; XSize_t w; XSize_t h; const char *text; void (*left)(void); void (*middle)(void); void (*right)(void); } b[MAXBUTTONS]; } button; extern struct singlebutton confirmbuttons[3]; void (*check_button_list(struct singlebutton *p, int num, XButtonPressedEvent *xev))(void); void event_loop(void); #define B_ROUND_W (button.rx) #define B_ROUND_H (button.ry) int arrange_buttons(struct singlebutton *, int *, int *, XSize_t, long *); void redraw_buttons(int, int, int, int, Window, int, struct singlebutton *); extern struct confirm { const char *text; int x, y; XSize_t w, h; Window win; } confirm; extern Window finished_win; #define FINISHED_W 100 #define FINISHED_H 50 /* endif */ #endif xpat2-1.07/src/rules.c100644 146 144 23304 6713372434 13277 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module rules.c */ /* */ /* General utility functions for all rule sets */ /* written by Heiko Eissfeldt and Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "xpatgame.h" #include /* return Cardindex if complete sequence available, -1 if not */ Cardindex complete_suit(Pileindex pile, Cardindex i) { Rank r; Suit s; int c; if (IS_JOKER(game.cards[i])) return -1; r = RANK(game.cards[i]); s = SUIT(game.cards[i]); if (r != Ace) return -1; for (c = rules.cards_per_color-1; c > 0; --c) { if (--i < game.ind[pile] || !game.visible[i]) return -1; if (RANK(game.cards[i]) != ++r || SUIT(game.cards[i]) != s) return -1; } return i; } /* Move cards to stack. */ int stackable(Pileindex pile) { if (rules.stackable) { return (*rules.stackable)(pile); } else { Cardindex srcindex; srcindex = INDEX_OF_LAST_CARD(pile); switch (rules.move_bits & ST_MASK) { case ST_NONE: return -1; /* user may not may cards to stack */ case ST_ONE: if (IS_JOKER(game.cards[srcindex])) /* jokers not movable to stack */ return -1; break; case ST_13: if ((srcindex = complete_suit(pile, srcindex)) == -1) return -1; break; } return srcindex; } } int move_to_stack(Pileindex pile) { /* pile is slot or tmp */ Cardindex srcindex; Pileindex i; if (EMPTY(pile)) return 0; if ((srcindex = stackable(pile)) == -1) return 0; for (i = 0; i < rules.numstacks; ++i) { if (SUIT(i) != SUIT(game.cards[srcindex])) continue; if (move_valid(srcindex, i)) { store_move(do_move(srcindex, i)); return 1; } } return 0; } void check_win_game(void) { if (game.finished) return; /* don't win twice */ if (rules.game_won) { if (!(*rules.game_won)()) return; } else { if (game.ind[FIRST_SLOT] != rules.cards_per_color * rules.numstacks) return; } /* actually, win the game! */ /* all cards on the stacks and not yet notified */ game.finished = True; write_log_file(); show_message(TXT_YOU_WIN); /* overwrites OK */ win_game(); /* hook for additional doodads */ play_sound("success"); } int in_relaxed_sequence(int srccard, int dstcard) { if (rules.relaxed_valid) return (*rules.relaxed_valid)(srccard, dstcard); switch (rules.move_bits & US_MASK) { case US_RS: if (IS_JOKER(dstcard) || IS_JOKER(srccard)) return 1; return RANK(dstcard) == 1 + RANK(srccard) && SUIT(dstcard) == SUIT(srccard); case US_R: if (IS_JOKER(dstcard) || IS_JOKER(srccard)) return 1; return RANK(dstcard) == 1 + RANK(srccard); case US_RA: if (IS_JOKER(dstcard) || IS_JOKER(srccard)) return 1; return RANK(dstcard) == 1 + RANK(srccard) && DIFFERENT_COLOR(dstcard, srccard); } return 0; } int in_strong_sequence(int srccard, int dstcard) { if (rules.valid) return (*rules.valid)(srccard, dstcard); switch (rules.move_bits & MG_MASK) { case MG_RS: if (IS_JOKER(dstcard) || IS_JOKER(srccard)) return 1; return RANK(dstcard) == 1 + RANK(srccard) && SUIT(dstcard) == SUIT(srccard); case MG_R: if (IS_JOKER(dstcard) || IS_JOKER(srccard)) return 1; return RANK(dstcard) == 1 + RANK(srccard); case MG_RA: if (IS_JOKER(dstcard) || IS_JOKER(srccard)) return 1; return RANK(dstcard) == 1 + RANK(srccard) && DIFFERENT_COLOR(dstcard, srccard); } return 0; } /* find maximum sequence in a nonempty slot for moving */ Cardindex slotsequence(Pileindex ind, Cardindex start, Cardindex stop) { while (start > game.ind[ind] && game.visible[start-1] && start != stop && in_strong_sequence(game.cards[start], game.cards[start-1])) --start; return start; } /* find maximum sequence in a nonempty slot for moving */ Cardindex relaxedslotsequence(Pileindex ind, Cardindex start, Cardindex stop) { while (start > game.ind[ind] && game.visible[start-1] && start != stop && in_relaxed_sequence(game.cards[start], game.cards[start-1])) --start; return start; } int default_movevalid(Cardindex src, Pileindex dstpile) { int srcpile, dstcard, srccard; srcpile = getpile(src); if (srcpile == dstpile) return 0; switch (game.piletype[srcpile]) { /* filter out some invalid sources */ case FacedownDeck: return 0; case Stack: if (!(rules.move_bits & STACK_SOURCE)) return 0; break; case FaceupDeck: /* always valid sources */ case Tmp: case Slot: break; } dstcard = EMPTY(dstpile) ? -1 : game.cards[game.ind[dstpile+1]-1]; srccard = game.cards[src]; switch (game.piletype[dstpile]) { case Stack: if (SUIT(dstpile) != SUIT(game.cards[src])) return 0; if (rules.stackable) { if (src != (*rules.stackable)(srcpile)) return 0; /* not possible to move to stack */ } else { switch (rules.move_bits & ST_MASK) { case ST_NONE: return 0; /* user may not move cards to stack */ case ST_ONE: if (src != INDEX_OF_LAST_CARD(srcpile) || IS_JOKER(game.cards[src])) return 0; break; case ST_13: if (src != complete_suit(srcpile, INDEX_OF_LAST_CARD(srcpile))) return 0; break; } } /* src is a block of cards without jokers */ if (RANK(game.cards[INDEX_OF_LAST_CARD(srcpile)]) != ( dstcard == -1 ? Ace : (1 + RANK(dstcard)) )) return 0; /* top cards match */ return 1; case Slot: if (dstcard == -1) { switch (rules.move_bits & ES_MASK) { case ES_KINGS: /* Klondike: only Kings are allowed */ if (IS_JOKER(game.cards[src]) || RANK(game.cards[src]) == King) return 1; break; case ES_CLUBS: /* Oonsoo: only clubs are allowed */ if (IS_JOKER(game.cards[src]) || !SUIT(game.cards[src])) return 1; break; case ES_ALL: return 1; /* ES_NONE: falls through, not allowed */ } } else { /* move to non-empty slot */ return in_relaxed_sequence(srccard, dstcard); } return 0; /* fall through: move not allowed */ case Tmp: if (game.ind[srcpile+1] - src != 1) return 0; /* only one card can be moved */ return dstcard == -1; default: return 0; } } int debugging = 0; int move_valid(Cardindex src, Pileindex dstpile) { if (debugging) return 1; if (rules.movevalid) return (*rules.movevalid)(src, dstpile); else return default_movevalid(src, dstpile); } Cardindex maxsequence(Pileindex ind, Cardindex cardi) { if (!EMPTY(ind)) { /* the pile may not be empty for this operation */ switch (game.piletype[ind]) { case Stack: if (!(rules.move_bits & STACK_SOURCE)) break; /* not allowed => break */ /* fall through: */ case Tmp: return INDEX_OF_LAST_CARD(ind); case Slot: return slotsequence(ind, INDEX_OF_LAST_CARD(ind), cardi); case FaceupDeck: if (rules.variant & DECK_SOURCE) return INDEX_OF_LAST_CARD(ind); break; /* not allowed => fall through */ case FacedownDeck: if ((rules.variant & DECK_VISIBLE) && !EMPTY(ind)) return INDEX_OF_LAST_CARD(ind); break; } } return -1; /* this indicates that selection is not possible */ } /* check, if new cards may be dealt */ int check_new_cards(void) { Pileindex i; Cardindex (*testfunc)(Pileindex, Cardindex, Cardindex) = NULL; if (rules.variant&NODEAL) return 0; if (rules.new_cards) return (*rules.new_cards)(); /* custom function */ if (!CARDS_ON_PILE(IDECK)) return 0; /* no more cards */ switch (rules.move_bits & DC_MASK) { case DC_ALWAYS: return 1; /* case DC_NOEMPTY: falls thru */ case DC_STRONGOK: testfunc = slotsequence; break; case DC_RELAXEDOK: testfunc = relaxedslotsequence; break; } for (i = FIRST_SLOT; i <= LAST_SLOT; ++i) if (EMPTY(i)) goto require_check; return 1; /* no empty slot */ require_check: if (!testfunc) return 0; /* may give cards if all nonempty slots are in some sequence */ for (i = FIRST_SLOT; i <= LAST_SLOT; ++i) if (!EMPTY(i)) if ((*testfunc)(i, INDEX_OF_LAST_CARD(i), INDEX_OF_FIRST_CARD(i)) != INDEX_OF_FIRST_CARD(i)) return 0; /* test failed, pile unsorted */ return 1; /* OK, all nonempty pile are in order */ } int std_good_hint(Cardindex srcindex, Pileindex dstpile) { Pileindex srcpile = getpile(srcindex); int value = 0; if (IS_STACK(srcpile)) /* don't move from stack if not explicitly requested */ value = 1; else if (IS_STACK(dstpile)) { /* likes to move cards to stack */ value = (rules.variant & ST_MASK) == ST_13 ? 10000 : 30; } else value = 15; /* value of standard move */ /* modifications */ if (IS_SLOT(dstpile)) { switch (rules.move_bits & MG_MASK) { case MG_RS: if (SUIT(game.cards[srcindex]) == SUIT(game.cards[INDEX_OF_LAST_CARD(dstpile)])) value += 15; else if (RANK(game.cards[srcindex]) == RANK(game.cards[srcindex-1]) - 1) value -= 15; else value += RANK(game.cards[srcindex]); /* higher ones first */ break; case MG_NONE: if (RANK(game.cards[srcindex]) == RANK(game.cards[srcindex-1]) - 1) value -= 15; /* doesn't make anything better */ else value -= 10; break; } } if (IS_SLOT(srcpile)) { if (game.ind[srcpile] == srcindex) { /* bonus for creating empty space */ switch (rules.move_bits & ES_MASK) { case ES_NONE: value -= 10; /* no bonus */ break; case ES_CLUBS: case ES_KINGS: value += 10; break; case ES_ALL: value += 100; break; } } else if (!game.visible[srcindex-1]) { /* turn a card */ value += 10; } } if (value < 1) value = 1; return value; } xpat2-1.07/src/Xaw-help.c100644 146 144 6757 6714330507 13623 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module Xaw-help.c */ /* */ /* Online help systems for the Athena Widget interface */ /* written by Michael Bischoff (mbi@mo.math.nat.tu-bs.de) */ /* March-1994 */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #ifdef ONLINE_HELP #ifdef useXaw #include "X-pat.h" #include "Tableau.h" #include #include #include #include #include #include #include #include #include void create_help(void); void popup_help(void); void popdown_help(Widget, XtPointer, XtPointer); static int help_active = 0; static Widget help, helppaned, helppanel, helptext, helpclose; #define TXT_HELPFILES (xpat_messages+71) extern struct rules *rulepool[]; static void selecttopic(Widget w, XtPointer number, XtPointer garbage) { char filename[256]; const char *langdir = get_lang(); const char *s = XtName(w); Arg Args[2]; int i = atoi(s+4); if (TXT_HELPFILES[i][0] != '/') { if (*langdir) { sprintf(filename, "%s/%s/%s", LIBDIR, langdir, TXT_HELPFILES[i]); if (access(filename, R_OK)) langdir = ""; } if (!*langdir) sprintf(filename, "%s/%s", LIBDIR, TXT_HELPFILES[i]); } else { strcpy(filename, TXT_HELPFILES[i]); } XtSetArg(Args[0], XtNstring, filename); XtSetArg(Args[1], XtNtype, XawAsciiFile); XtSetValues(helptext, Args, 2); } void create_help(void) { Widget topicsmenu, topicsbutton, w; Arg Args[1]; help = XtCreatePopupShell("help", transientShellWidgetClass, toplevel, NULL, 0); helppaned = XtCreateManagedWidget("helppaned", panedWidgetClass, help, NULL, ZERO); helppanel = XtCreateManagedWidget("helppanel", boxWidgetClass, helppaned, NULL, ZERO); helptext = XtCreateManagedWidget("helptext", asciiTextWidgetClass, helppaned, NULL, ZERO); XtSetArg(Args[0], XtNmenuName, "topicsmenu"); topicsbutton = XtCreateManagedWidget("Topic", menuButtonWidgetClass, helppanel, Args, 1); topicsmenu = XtCreatePopupShell("topicsmenu", simpleMenuWidgetClass, topicsbutton, NULL, ZERO); helpclose = XtCreateManagedWidget("Close Help", commandWidgetClass, helppanel, NULL, ZERO); XtAddCallback(helpclose, XtNcallback, popdown_help, NULL); XtSetArg(Args[0], XtNlabel, TXT_HELP_KEYS); w = XtCreateManagedWidget("Help0", smeBSBObjectClass, topicsmenu, Args, 1); XtAddCallback(w, XtNcallback, selecttopic, NULL); { struct rules **rp; for (rp = rulepool; *rp; ++rp) { char n[8], s[40]; sprintf(n, "Help%d", rp-rulepool+5); XtSetArg(Args[0], XtNlabel, s); sprintf(s, TXT_HELP_RULES, (*rp)->shortname); w = XtCreateManagedWidget(n, smeBSBObjectClass, topicsmenu, Args, 1); XtAddCallback(w, XtNcallback, selecttopic, NULL); } } } void popup_help(void) { if (help_active) return; /* request pending => deny another one */ help_active = 1; XtPopup(help, XtGrabNone); } void popdown_help(Widget w, XtPointer a, XtPointer b) { if (!help_active) return; /* request pending => deny another one */ help_active = 0; XtPopdown(help); } #endif #endif xpat2-1.07/src/Xlib-buttons.c100644 146 144 11256 6055651334 14540 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module Xlib-buttons.c */ /* */ /* Management of the button area for the Xlib interface */ /* written by Heiko Eissfeldt and Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #ifdef useXlib #include "X-pat.h" #ifndef NO_ROUND_CARDS #include #endif struct confirm confirm = { 0 }; Window finished_win; void show_message(const char *str, ...) { static char last_message[512] = " "; if (str) { va_list args; va_start(args, str); vsprintf(last_message, str, args); } XFillRectangle(dpy, table, whitegc, 0, graphic.buttons_height, graphic.width, graphic.message_height); XDrawRectangle(dpy, table, blackgc, 0, graphic.buttons_height, graphic.width-1, graphic.message_height-1); XDrawImageString(dpy, table, graphic.textgc, graphic.message_x, graphic.message_y, last_message, strlen(last_message)); } static void (*execfunc)(void) = NULL; void request_confirm(void (*dofunc)(void), const char *prompt) { if (execfunc) return; /* request pending => deny another one */ execfunc = dofunc; confirm.text = prompt; XMapWindow(dpy, confirm.win); } void cmd_Cancel(void) { if (execfunc) { execfunc = NULL; XUnmapWindow(dpy, confirm.win); } } void cmd_Confirm(void) { if (execfunc) { (*execfunc)(); cmd_Cancel(); } } void redraw_buttons(int x, int y, int w, int h, Window win, int num, struct singlebutton *p) { while (num--) { if (x >= p->x + p->w || x + w < p->x || y >= p->y + p->h || y + h < p->y) { /* does not intersect */ ++p; continue; } #ifndef NO_ROUND_CARDS if (B_ROUND_W) { /* fill the background */ XmuFillRoundedRectangle(dpy, win, whitegc, p->x, p->y, p->w-1, p->h-1, B_ROUND_W, B_ROUND_H); /* draw the text */ XDrawImageString(dpy, win, button.gc, p->x + button.bx, p->y + button.by + button.font->ascent, p->text, strlen(p->text)); /* draw border on button */ XmuDrawRoundedRectangle(dpy, win, blackgc, p->x, p->y, p->w-1, p->h-1, B_ROUND_W, B_ROUND_H); } else #endif { /* fill the background */ XFillRectangle(dpy, win, whitegc, p->x, p->y, p->w-1, p->h-1); /* draw the text */ XDrawImageString(dpy, win, button.gc, p->x + button.bx, p->y + button.by + button.font->ascent, p->text, strlen(p->text)); /* draw border on button */ XDrawRectangle(dpy, win, blackgc, p->x, p->y, p->w-1, p->h-1); } ++p; } } #ifdef DEBUG void cmd_DebugOut(void); void cmd_DebugOut(void) { int i, j; static const char *vis[2] = { "hidden ", "" }; printf("Debugging output:\ngame.ind[] = \n{"); for (i = 0; i <= game.numpiles; ++i) printf(" %d", game.ind[i]); printf(" }\n"); for (i = 0; i < rules.numstacks+rules.numslots/*game.numpiles*/; ++i) { struct pile *p; p = &graphic.pile[i]; printf((i < rules.numstacks ? "Stack %d: " : "Slot %d: "), (i < rules.numstacks ? i : i - rules.numstacks)); printf("pos (%d,%d) c=%d, max=%d\n ", p->x, p->y, p->xtotal, p->xmaxheight); for (j = game.ind[i]; j < game.ind[i+1]; ++j) if (IS_JOKER(game.cards[j])) printf("Joker!"); else printf("%s%s %s ", vis[game.visible[j]], US_rank_name[RANK(game.cards[j])], US_suit_name[SUIT(game.cards[j])]); printf("\n"); } } #endif struct buttons button = { 0, 4, 4, 3, 3, 0, 0, 0, { { 0, 0, 0, 0, "quit", rq_LeavePat, rq_LeavePat, rq_LeavePat }, { 0, 0, 0, 0, "cards", cmd_DealCards, cmd_DealCards, cmd_DealCards }, { 0, 0, 0, 0, "undo", cmd_UndoMove, cmd_UndoMove, cmd_UndoMove }, { 0, 0, 0, 0, "redo", cmd_RedoMove, cmd_RedoMove, cmd_RedoMove }, { 0, 0, 0, 0, "restart", cmd_RestartGame, NULL, NULL }, { 0, 0, 0, 0, "new game", rq_AnotherGame, NULL, NULL }, { 0, 0, 0, 0, "score", cmd_ShowScore, cmd_ShowScore, cmd_ShowScore }, { 0, 0, 0, 0, "hint", cmd_NextHint, cmd_DoHint, cmd_PreviousHint }, { 0, 0, 0, 0, "move to stack", cmd_ToStack, cmd_ToStack, cmd_ToStack }, { 0, 0, 0, 0, "replay", cmd_ReplayGame, NULL, NULL }, { 0, 0, 0, 0, "save", cmd_SaveGame, NULL, NULL }, #ifdef DEBUG { 0, 0, 0, 0, "debug", cmd_DebugOut, NULL, NULL }, #endif { 0, 0, 0, 0, NULL, NULL, NULL, NULL } } }; struct singlebutton confirmbuttons[3] = { { 0, 0, 0, 0, "confirm", cmd_Confirm, NULL, NULL }, { 0, 0, 0, 0, "cancel", cmd_Cancel, NULL, NULL }, { 0, 0, 0, 0, NULL, NULL, NULL, NULL } }; #endif xpat2-1.07/src/Xlib-events.c100644 146 144 7511 5556023566 14332 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module Xlib-events.c */ /* */ /* Additional event handlers for the Xlib interface. */ /* written by Heiko Eissfeldt and Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #ifdef useXlib #include "X-pat.h" /* helper functions for Xlib interface */ /* dispatcher for event on table */ static void handle_table_event(XEvent *xev) { switch(xev->xany.type) { case ButtonPress: button_press(&xev->xbutton); break; case ButtonRelease:button_release(&xev->xbutton); break; case MotionNotify: mouse_motion(&xev->xmotion); break; case KeyPress: key_press(&xev->xkey); break; case Expose: redraw_table(&xev->xexpose); break; case ConfigureNotify:resize_event( xev->xconfigure.width, xev->xconfigure.height); break; } } void (*check_button_list(struct singlebutton *p, int num, XButtonPressedEvent *xev))(void) { while (num--) { if (xev->x >= p->x && xev->x < p->x + p->w && xev->y >= p->y && xev->y < p->y + p->h) { switch (xev->button) { case Button1: return p->left; case Button2: return p->middle; case Button3: return p->right; } } ++p; } return NULL; } /* events in confirm window */ static void conf_button_press(XButtonPressedEvent *xev) { void (*func)(void); func = check_button_list(confirmbuttons, 2, xev); if (func) (*func)(); } static void redraw_confirm(XExposeEvent *xev) { XFillRectangle(dpy, confirm.win, whitegc, 0, 0, confirm.w-1, confirm.h-1); /* draw the text */ XDrawImageString(dpy, confirm.win, button.gc, graphic.xgap, button.by+button.font->ascent, "Please confirm", 14); XDrawImageString(dpy, confirm.win, button.gc, graphic.xgap, 2 * button.by+button.font->ascent + button.fontheight, confirm.text, strlen(confirm.text)); redraw_buttons(0, 0, confirm.w, confirm.h, confirm.win, 2, confirmbuttons); } static void handle_confirm_event(XEvent *xev) { switch(xev->xany.type) { case ButtonPress: conf_button_press(&xev->xbutton); break; case KeyPress: key_press(&xev->xkey); /* go same window */ break; } } static void redraw_finwin(XExposeEvent *xev) { XFillRectangle(dpy, finished_win, whitegc, 0, 0, FINISHED_W-1, FINISHED_H-1); /* draw the text */ XDrawImageString(dpy, finished_win, button.gc, (FINISHED_W - XTextWidth(button.font, "GONZO!", 6))/2, FINISHED_H * 2 / 3, "GONZO!", 6); XFlush(dpy); } void handle_expose_event(XExposeEvent *xev) { if (xev->window == confirm.win) redraw_confirm(xev); else if (xev->window == finished_win) redraw_finwin(xev); } void event_loop(void) { XEvent xev; cmd_CancelSelection(); while (1) { #if 0 if (game.ind[FIRST_SLOT] == rules.cards_per_color * rules.numstacks && !game.finished) { /* all cards on the stacks and not yet notified */ game.finished = True; XMoveWindow(dpy, finished_win, (graphic.width - FINISHED_W) / 2, (graphic.height - FINISHED_H) / 2); XMapWindow(dpy, finished_win); redraw_finwin((XExposeEvent *)0); show_message("You did it!"); write_log_file(); do_music(&xev); /* play until next event */ XUnmapWindow(dpy, finished_win); } else #endif XNextEvent(dpy, &xev); if (xev.xany.window == table) handle_table_event(&xev); else if (xev.xany.type == Expose) /* expose events are treated separately */ handle_expose_event(&xev.xexpose); else if (xev.xany.window == confirm.win) handle_confirm_event(&xev); } } #endif xpat2-1.07/src/Xlib-main.c100644 146 144 10005 6714227276 13763 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module Xlib-main.c */ /* */ /* main function for the Xlib interface */ /* written by Heiko Eissfeldt and Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #ifdef useXlib #include "X-pat.h" #include "version.h" Window table, mainwindow; char *loadfilename = NULL; static int audio = 1; int checksound(void) { return audio; } void cmd_LeavePat(void) { play_sound("goodbye"); exit(0); } static unsigned long color_to_pixel(const char *colorname) { if (colorname) { XColor color; Colormap cmap; cmap = DefaultColormap(dpy, screen); color.flags = DoRed | DoGreen | DoBlue; XAllocNamedColor(dpy, cmap, colorname, &color, &color); return color.pixel; } else return BlackPixel(dpy, screen); } #include "usage.c" static void init_display(const char *display) { if ((dpy = XOpenDisplay(display)) == NULL) { fprintf(stderr,"Can't open display %s\n", (display ? display : getenv("DISPLAY"))); exit(EXIT_FAILURE); } screen = DefaultScreen(dpy); graphic.is_color = (DisplayCells(dpy, screen) > 2); #ifdef DEBUG XSynchronize(dpy, True); #endif } int main(int argc, char *argv[]) { #include "options.c" init_display(display); /* connect to X-server */ for (i = 0; i < NUMOPTIONS; ++i) { /* get resources from server */ char *s; if (options[i].cmdarg) options[i].value = options[i].cmdarg; else if ((s = XGetDefault(dpy, "XPat", options[i].resource))) options[i].value = s; } for (i = 0; i < NUMOPTIONS; ++i) { /* value-check Numbers */ int n; struct option *o; o = options + i; if (o->type == Number) { n = o->value ? atoi(o->value) : -1; if (n < o->minval || n > o->maxval) { char s[100]; sprintf(s, "argument to option \"%s\" / resource \"%s\"", o->option, o->resource); usage(s); } *(int *)(o->where) = n; } else if (o->type == Self) { *(int *)(o->where) = 1; } else /* type == String */ *(const char **)(o->where) = o->value; } if (!sound) audio = 0; if (restoregame && (decks != -1 || Xslots != -1 || faceup != -1 || facedown != -1)) fprintf(stderr, "warning: customization parameters are ignored\n"); read_message_file("messages"); read_keyboard_file("keys"); graphics_control(Disable); if (restoregame) load_game(restoregame); else { new_rules(ruleset, decks, Xslots, faceup, facedown, jokers, tmps, p0, p1, p2, p3); newgame(seed); } #if defined(GFX2) && defined(LOADCARDS) if (!graphic.is_color && !cardset) cardset = "french"; /* use B&W cardset, xpm requires too much colours */ #endif init_gfx(); init_fonts(statusfont, buttonfont); /* make GCs */ init_cards(cardset, cround, cround, color_to_pixel("Red3"), color_to_pixel(cbcolor), mem, xpmdir, xpmcls); /* set size of cards, make pixmaps */ init_windows(argc, argv, geometry, gapx, gapy, bround, bround, bx, by, autolayout, bkcolor); /* size window */ init_mark(color_to_pixel(markcolor), linewidth); /* initialize card marks */ init_arrow(arrowcolor, arrw, arrh); graphics_control(Enable); init_layout(); /* position the piles in a nice way */ for (i = 0; i < game.numpiles; ++i) pile_resize(i); /* refresh_screen(); */ show_message(TXT_WELCOME, VERSION); mainwindow = table; event_loop(); /* does not return */ return 0; /* keep compiler happy */ } void Force_Resize(XSize_t w, XSize_t h) { /* for Xlib, we can use this size. It does include space for buttons and messagebox */ #if 0 h += calc_yoff(w); /* w, h are tableau size */ #endif XResizeWindow(dpy, mainwindow, w, h); /* or should XSetWMSizeHints() be used? */ } #endif xpat2-1.07/src/r_Michaels.c100644 146 144 5177 6711644212 14175 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module r_Michaels.c */ /* */ /* Characteristics of the ``Michael's Fantasy'' rules */ /* written by Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "xpatgame.h" #include "xpatgeo.h" static int Michaels_Layout(void) { int i, j, y, x = geo.dx; struct pilegeometry *p = geo.pg; for (i = 0; i < game.numpiles; ++i) { p = geo.pg+i; p->x = -1; p->y = -1; } y = geo.dy; /* first the slots */ for (i = FIRST_SLOT; i <= LAST_SLOT; ++i) { if (i == FIRST_SLOT+rules.numslots/2) x += 5 * geo.dx + 3 * geo.cw; p = geo.pg+i; p->x = x; p->y = y; x += geo.dx + geo.cw; p->h = geo.h - geo.dy + BOTTOM_INC; } /* now the tmps */ x = 2 * geo.dx + rules.numslots/2 * (geo.cw + geo.dx); for (j = 0; j < rules.numtmps; ++j) { p = geo.pg+i+j; p->x = x + ((j & 2) ? 2 * (geo.dx + geo.cw) : 0); p->y = y + ((j & 1) ? 2 * (geo.dy + geo.ch) : 0); } /* at last the stacks */ for (i = FIRST_STACK; i <= LAST_STACK; ++i) { static int xoff[] = { 0, 1, 1, 2 }; static int yoff[] = { 2, 1, 3, 2 }; p = geo.pg+i; p->x = x + xoff[i] * (geo.cw + geo.dx); p->y = y + (yoff[i] * (geo.ch + geo.dy)) / 2; } return MICHAELS_MAGIC; } struct rules Michaels_rules = { "Michael's Fantasy",/* shortname */ NULL, /* longname */ "mf", /* abbrev */ 5, /* layout_hints */ NODEAL, /* variant */ CUSTOM_PARAM3|CUSTOM_FACEUP|CUSTOM_FACEDOWN|CUSTOM_SLOTS,/* customizable */ 0, /* customized */ 52, /* numcards */ 4, /* numstacks */ 6, /* numslots */ 4, /* numtmps */ 1, /* numdecks */ 13, /* cards_per_color */ 0, /* numjokers */ {0, 0, 0, 5},/* param[0], param[1], param[2], param[3] */ 3, /* facedown */ 5, /* faceup */ FORCE_SLOTS,/* newgame_bits */ NULL, /* new_game */ NULL, /* game_won */ NULL, /* new_cards */ ES_ALL|US_RA|MG_RA|DC_ALWAYS|ST_ONE|STACK_SOURCE, /* move_bits */ NULL, /* deal_cards */ NULL, /* undeal_cards */ NULL, /* stackable */ NULL, /* movevalid */ NULL, /* valid */ NULL, /* relaxed_valid */ std_good_hint,/* good_hint */ NULL, /* automove */ NULL, /* score */ 0, /* maxscore */ {0, 0, 0, TXTI_ROTATE}, /* paramstring blocks */ 0, /* used */ NULL, /* initfunc */ NULL, /* local keyboard bindings */ NULL, Michaels_Layout }; xpat2-1.07/src/Xlib-windows.c100644 146 144 15213 6712361214 14524 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module Xlib-windows.c */ /* */ /* windows creation for the Xlib interface */ /* written by Heiko Eissfeldt and Michael Bischoff */ /* based on the windows.c module from Spider by David Lemke */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #ifdef useXlib #include "X-pat.h" #include "pat.bm" #include "gray1.bm" extern int calc_yoff(int); void init_fonts(const char *statusfont, const char *buttonfont) { static const char *buttonfonttable[] = { NULL, "-misc-fixed-bold-r-normal--13-120-75-75-c-70-iso8859-1", "-misc-fixed-bold-r-normal--15-140-75-75-c-90-iso8859-1", "-misc-fixed-medium-r-normal--20-200-75-75-c-100-iso8859-1", "-misc-fixed-bold*", "fixed" }; int i; XGCValues gcv; long gcflags; gcv.foreground = BlackPixel(dpy, screen); gcv.background = WhitePixel(dpy, screen); gcv.graphics_exposures = False; gcflags = GCForeground | GCBackground | GCGraphicsExposures; buttonfonttable[0] = buttonfont; /* add on to blackgc */ if ((graphic.message_font = XLoadQueryFont(dpy, statusfont)) == NULL) { (void) fprintf(stderr,"can't get font %s\n", statusfont); exit(0); } graphic.message_height = graphic.message_font->ascent + graphic.message_font->descent + 2 * TABLE_BW; gcv.font = graphic.message_font->fid; gcflags |= GCFont; graphic.textgc = XCreateGC(dpy, RootWindow(dpy, screen), gcflags, &gcv); for (i = 0; i < sizeof(buttonfonttable) / sizeof(buttonfonttable[0]); ++i) { if (!buttonfonttable[i]) continue; /* no user font */ if ((button.font = XLoadQueryFont(dpy, buttonfonttable[i]))) break; fprintf(stderr,"warning: can't get font %s\n", buttonfonttable[i]); } if (!button.font) { fprintf(stderr, "unable to get button font. terminating\n"); exit(EXIT_FAILURE); } button.fontheight = button.font->ascent + button.font->descent; gcv.font = button.font->fid; gcflags |= GCFont; button.gc = XCreateGC(dpy, RootWindow(dpy, screen), gcflags, &gcv); } void init_windows(int ac, char **av, const char *geom, int xgap, int ygap, int bradx, int brady, int bx, int by, int autolayout, const char *bkcolor) { unsigned long borderpixel = blackpixel; XSetWindowAttributes winattr; long winmask; XSizeHints xsh; int x, y; Pixmap icon_map; graphic.xgap = (XSize_t)xgap; graphic.ygap = (XSize_t)ygap; graphic.autolayout = autolayout; button.bx = (XSize_t)bx; button.by = (XSize_t)by; if (button.fontheight + 2 * button.by < 2 * brady) brady = button.fontheight/2 + button.by; B_ROUND_W = bradx; B_ROUND_H = brady; /* compute minimum size needed */ generic_minwindow(); geo.min_height += calc_yoff(geo.min_width); xsh.min_width = graphic.width = geo.min_width; xsh.min_height = graphic.height = geo.min_height; xsh.flags = PPosition | PSize | PMinSize; x = y = 0; if (geom) { int flags = XParseGeometry(geom, &x, &y, &graphic.width, &graphic.height); /* don't let it start too short */ if (flags & HeightValue && graphic.height < xsh.min_height) graphic.height = xsh.min_height; /* don't let it start too narrow */ if (flags & WidthValue && graphic.width < xsh.min_width) graphic.width = xsh.min_width; if (flags & (WidthValue | HeightValue)) xsh.flags |= USSize; if (flags & (XValue | YValue)) xsh.flags |= USPosition; if (flags & XValue && flags & XNegative) x = DisplayWidth(dpy, screen) - (graphic.width + x); if (flags & YValue && flags & YNegative) y = DisplayHeight(dpy, screen) - (graphic.height + y); } /* with internal cards, we're fast enough to forget the backing store */ /* (we already use a lot of memory to store the cards) */ /* in the case NO_MEM, we don't have the images ready, but using */ /* the backing store in this case would be a contradiction */ { winattr.backing_store = card.cardset ? WhenMapped : NotUseful; winattr.border_pixel = blackpixel; winattr.bit_gravity = NorthWestGravity; winattr.event_mask = KeyPressMask | ExposureMask | ButtonPressMask | ButtonReleaseMask | StructureNotifyMask | Button3MotionMask; winmask = CWBorderPixel | CWEventMask | CWBackingStore | CWBitGravity; if (graphic.is_color) { XColor color; Colormap cmap; cmap = DefaultColormap(dpy, screen); color.flags = DoRed | DoGreen | DoBlue; XAllocNamedColor(dpy, cmap, bkcolor, &color, &color); winattr.background_pixel = color.pixel; winmask |= CWBackPixel; } else { winattr.background_pixmap = XCreateBitmapFromData(dpy, RootWindow(dpy, screen), gray1_bits, gray1_width, gray1_height); winmask |= CWBackPixmap; } table = XCreateWindow(dpy, RootWindow(dpy, screen), x, y, graphic.width, graphic.height, TABLE_BW, CopyFromParent, CopyFromParent, CopyFromParent, winmask, &winattr); } xsh.x = x; xsh.y = y; xsh.width = graphic.width; xsh.height = graphic.height; icon_map = XCreateBitmapFromData(dpy, RootWindow(dpy, screen), pat_bits, pat_width, pat_height); XSetStandardProperties(dpy, table, "Patience", "Patience", icon_map, av, ac, &xsh); { XWMHints xwmh; xwmh.flags = InputHint | IconPixmapHint; xwmh.input = True; xwmh.icon_pixmap = icon_map; XSetWMHints(dpy, table, &xwmh); } XStoreName(dpy, table, rules.longname ? rules.longname : rules.shortname); XSetIconName(dpy, table, rules.shortname); /* calculate size and position of confirm window */ { int w; long dummy; x = graphic.xgap; y = graphic.ygap + 3 * button.by + 2 * button.fontheight; (void)arrange_buttons(confirmbuttons, &x, &y, 32767, &dummy); w = XTextWidth(button.font, "Please confirm", 21); if (x < w) x = w; confirm.w = x; confirm.h = y; confirm.x = (graphic.width - x) / 2; confirm.y = (graphic.height - y) / 2; } { confirm.win = XCreateSimpleWindow(dpy, table, confirm.x, confirm.y, confirm.w, confirm.h, TABLE_BW, borderpixel, whitepixel); winattr.event_mask = ExposureMask | ButtonPressMask; winmask = CWEventMask; XChangeWindowAttributes(dpy, confirm.win, winmask, &winattr); finished_win = XCreateSimpleWindow(dpy, table, 0, 0, FINISHED_W, FINISHED_H, TABLE_BW, borderpixel, whitepixel); winattr.event_mask = ExposureMask; /* shall receive exposure event */ winmask = CWEventMask; XChangeWindowAttributes(dpy, finished_win, winmask, &winattr); } XMapWindow(dpy, table); } #endif xpat2-1.07/src/clip.mask.bm100644 146 144 17154 5461331010 14170 0ustar mbimathopt#define clip.mask.bm_width 79 #define clip.mask.bm_height 123 static char clip.mask.bm_bits[] = { 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00}; xpat2-1.07/src/clip4.bm100644 146 144 17127 5461331007 13330 0ustar mbimathopt#define clip4_width 79 #define clip4_height 123 static char clip4_bits[] = { 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f}; xpat2-1.07/src/clip7.bm100644 146 144 17127 5461331007 13333 0ustar mbimathopt#define clip7_width 79 #define clip7_height 123 static char clip7_bits[] = { 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x83, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x83}; xpat2-1.07/src/hints.c100644 146 144 17524 6712004327 13271 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module hints.c */ /* */ /* Functions for the ``display hint'' part */ /* written by Heiko Eissfeldt and Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "xpatgame.h" #define RESET_HINTS (-2) #define ALL_HINTS (-1) static Move lasthint; void cmd_DoHint(void) { if (lasthint == NO_MOVE) { show_message(TXT_NOHINTGIVEN); } else { store_move(do_move(SRCIND(lasthint), DSTPILE(lasthint))); } } #define MAXHINTS 256 static struct hintstruct { int srcind, dstpile; int value; } hinttab[MAXHINTS]; static int hints, showhint; /* hints is number of hints in table (-1: unknown), showhint is index */ static int hintcmp(const void *a, const void *b) { return ((const struct hintstruct *)b)->value - ((const struct hintstruct *)a)->value; } /* ind == -1 => no marked cards, show all possible moves otherwise show move for block ind */ static void collect_hints(Cardindex ind) { int begsrcpile, endsrcpile; int pile; if (ind != ALL_HINTS) { begsrcpile = endsrcpile = getpile(ind); } else { begsrcpile = 0; endsrcpile = game.numpiles-1; } /* gather all possibilities, if necessary */ hints = 0; for (pile = begsrcpile; pile <= endsrcpile; pile++) { int dstpile, uppercard, stacksrc, havestack; /* check all moves which go from this pile */ /* if pile is empty, no moves are possible */ if (EMPTY(pile)) continue; if (pile == IDECK && !(rules.variant & DECK_VISIBLE)) continue; /* if there is a block selected already, use it */ /* otherwise, take the maximum number of movable cards */ uppercard = (ind == ALL_HINTS) ? maxsequence(pile, INDEX_OF_FIRST_CARD(pile)) : ind; if (game.piletype[pile] == Stack) stacksrc = -1; /* avoid stack to stack moves */ else { stacksrc = stackable(pile); if (ind != ALL_HINTS && stacksrc != uppercard) stacksrc = -1; /* block differs => no moves to stack */ } havestack = 0; for (dstpile = 0; dstpile < game.numpiles; ++dstpile) { /* in a first step, reject some moves */ int srcindex; if (rules.variant & HINTS_LESSER) if (pile <= dstpile) break; if (pile == dstpile) continue; switch (game.piletype[dstpile]) { case Slot: if (EMPTY(dstpile)) { /* Hints for Blue Moon */ if ((rules.move_bits & ES_MASK) == ES_NONE) { srcindex = uppercard; break; } if ((rules.move_bits & ES_MASK) != ES_KINGS && (rules.move_bits & ES_MASK) != ES_CLUBS) continue; /* don't fill empty slots, if allowed for all */ /* now: ugly code! */ /* kings may be moved, if they don't come from a stack */ /* and they don't leave an empty slot */ if (game.piletype[pile] == Stack && ind == ALL_HINTS) continue; if (game.piletype[pile] == Slot && game.ind[pile] == uppercard) continue; /* king's move allowed! */ } if (IS_JOKER(game.cards[INDEX_OF_LAST_CARD(dstpile)])) continue; /* don't move to jokers */ /* fall through */ srcindex = uppercard; break; case Tmp: case FaceupDeck: case FacedownDeck: continue; case Stack: /* for stacks, choose another srcindex */ if (stacksrc == -1 || havestack) continue; srcindex = stacksrc; break; default: srcindex = 0; /* to keep compiler happy */ exit(EXIT_FAILURE); /* cannot happen! */ } if (move_valid(srcindex, dstpile)) { /* hint found. store source and destination, if acceptable */ hinttab[hints].value = rules.good_hint ? (*rules.good_hint)(srcindex, dstpile) : 100; /* 100 is default value */ if (hinttab[hints].value) { if (hinttab[hints].value < 2 && ind == ALL_HINTS) { /* don't suggest bad moves */ continue; } /* accept the hint */ if (game.piletype[dstpile] == Stack && !(rules.variant & STACKS_MULTI)) havestack = 1; hinttab[hints].srcind = srcindex; hinttab[hints].dstpile = dstpile; if (++hints == MAXHINTS) break; } } } } /* sort hints by relevance */ qsort(hinttab, (size_t)hints, sizeof(hinttab[0]), hintcmp); showhint = hints; /* will show either first or last hint */ } /* this function returns a value (the higher the better) of the move done (or 0, if no move) */ int generic_automove(Cardindex srcindex) /* pile is "movable" */ { Pileindex i, srcpile; cmd_ResetHints(); collect_hints(srcindex); if (hints) { store_move(do_move(hinttab[0].srcind, hinttab[0].dstpile)); return hinttab[0].value; } /* no move to non-empty piles possible, try to move to empty slot */ srcpile = getpile(srcindex); for (i = game.numpiles - 1; i >= 0; --i) { if (i == srcpile) continue; if (game.piletype[i] == Tmp && game.piletype[srcpile] == Tmp) continue; if (move_valid(srcindex, i)) { store_move(do_move(srcindex, i)); return 1; } } cmd_ResetHints(); /* MUST reset the hints! */ return 0; /* no move => extremely ugly */ } static void mysprintf(char *p, const char *fmt, ...) { va_list args; va_start(args, fmt); while (*fmt) { if (*fmt != '%') *p++ = *fmt++; else { int arg; arg = va_arg(args, int); switch (*++fmt) { case 'R': strcpy(p, TXT_RANK[RANK(arg)]); p += strlen(p); break; case 'S': strcpy(p, TXT_SUIT[SUIT(arg)]); p += strlen(p); break; case 'P': switch(game.piletype[arg]) { case FaceupDeck: strcpy(p, TXT_DECK); break; case FacedownDeck: strcpy(p, TXT_IDECK); break; case Slot: strcpy(p, TXT_SLOT); p += strlen(p); sprintf(p, " %d", arg - rules.numstacks + 1); break; case Stack: strcpy(p, TXT_STACK); p += strlen(p); sprintf(p, " %d", arg + 1); break; case Tmp: strcpy(p, TXT_TMP); p += strlen(p); sprintf(p, " %d", arg-rules.numstacks-rules.numslots + 1); break; } p += strlen(p); break; default: *p++ = *fmt; } ++fmt; } } va_end(args); *p = '\0'; } static void display_hint(struct hintstruct *p) { int dstpile, srcpile, srcval; char buf[180]; dstpile = p->dstpile; srcpile = getpile(p->srcind); srcval = game.cards[p->srcind]; mysprintf(buf, TXT_CANMOVE, srcpile, srcval, srcval, dstpile); show_message(buf); show_arrow(1); } static int forward = 1; static int hint(Cardindex ind, boolean dodisplay) { show_arrow(0); /* if any arrow visible, clear it */ if (ind == RESET_HINTS) { hints = showhint = -1; game.arrow_srcind = -1; game.arrow_dstpile = -1; lasthint = NO_MOVE; return 0; } /* printf("hints = %d\n", hints); */ if (hints < 0) collect_hints(ind); if (!hints) { if (dodisplay) show_message(TXT_NOHINTS); return 0; } else { showhint = (forward ? (showhint + 1) : (showhint + hints)) % (hints+1); if (showhint == hints) show_message(TXT_WRAPPING); else { struct hintstruct *p; p = hinttab + showhint; game.arrow_srcind = p->srcind; game.arrow_dstpile = p->dstpile; lasthint = MOVE(p->srcind, p->dstpile); if (dodisplay) display_hint(p); } return 1; } } void cmd_ResetHints(void) { hint(RESET_HINTS, 0); } void cmd_AllMoves(void) { forward = 1; hint(RESET_HINTS, 0); while (hint(ALL_HINTS, 0)) { /* XFlush(dpy); */ cmd_DoHint(); /* XFlush(dpy); */ } } void cmd_NextHint(void) { /* show next hint in queue */ forward = 1; if (game.srcind < 0) hint(ALL_HINTS, 1); else hint(game.srcind, 1); } void cmd_PreviousHint(void) { /* show previous hint */ forward = 0; if (game.srcind < 0) hint(ALL_HINTS, 1); else hint(game.srcind, 1); } xpat2-1.07/src/face.bm100644 146 144 53747 5461331007 13223 0ustar mbimathopt/* * Spider * * (c) Copyright 1989, Donald R. Woods and Sun Microsystems, Inc. * (c) Copyright 1990, David Lemke and Network Computing Devices Inc. * * See copyright.h for the terms of the copyright. * * @(#)face.bm 1/2 13-Feb 1993 * */ #define king_c_width 47 #define king_c_height 46 #define king_c_x_hot -1 #define king_c_y_hot -1 static char king_c_bits[] = { 0x00, 0xb0, 0x20, 0x08, 0x82, 0x06, 0x80, 0xe3, 0x20, 0x08, 0x82, 0x03, 0xc0, 0xc7, 0xdb, 0xb6, 0xed, 0x01, 0xe0, 0x8f, 0x21, 0x08, 0xc2, 0x00, 0xe0, 0x0f, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0x0f, 0x56, 0x55, 0x35, 0x00, 0xc0, 0x07, 0xac, 0xaa, 0x1a, 0x00, 0xb8, 0x3b, 0xfc, 0xff, 0x0f, 0x00, 0xfc, 0x7f, 0xfc, 0xff, 0x0f, 0x00, 0xfe, 0xff, 0x04, 0xa0, 0x0a, 0x08, 0xfe, 0xff, 0x3c, 0xae, 0x0a, 0x1c, 0xfe, 0xff, 0x74, 0xa6, 0x0a, 0x3e, 0xfc, 0x7f, 0x7c, 0xbe, 0x0a, 0x3a, 0x38, 0x39, 0x24, 0xa0, 0x0a, 0x2a, 0x00, 0x01, 0x24, 0xa0, 0x0a, 0x3a, 0x80, 0x03, 0xe4, 0xa1, 0x0a, 0x2a, 0x80, 0x03, 0x44, 0xa0, 0x0a, 0x3a, 0xc0, 0x07, 0xb4, 0xa1, 0x3a, 0x2a, 0x00, 0x00, 0x47, 0xa0, 0x2e, 0x3a, 0x00, 0x80, 0xe4, 0xb8, 0x2b, 0x2a, 0x00, 0x80, 0x06, 0xa7, 0x3a, 0x3a, 0x00, 0xe0, 0xe0, 0xac, 0x1e, 0x2a, 0x00, 0xf8, 0xf1, 0x21, 0x32, 0x3a, 0x00, 0xfe, 0x9f, 0xff, 0x6b, 0x2a, 0x80, 0xff, 0x3f, 0x22, 0xe2, 0x3a, 0xe0, 0xff, 0xbf, 0x88, 0xf8, 0x2b, 0xf8, 0xdf, 0x7f, 0x22, 0xbe, 0x3b, 0xfe, 0xbf, 0xfe, 0x88, 0xcf, 0x2b, 0xff, 0xf7, 0xf5, 0xe3, 0x63, 0x3a, 0x7f, 0x36, 0xeb, 0xff, 0x31, 0x2b, 0x3e, 0x36, 0xf6, 0x3e, 0x78, 0x3a, 0xbe, 0xf7, 0xea, 0x00, 0x1c, 0x6b, 0xde, 0xe3, 0xd5, 0x38, 0xce, 0x7b, 0xfe, 0x9c, 0xef, 0x38, 0x9e, 0x6b, 0x7e, 0x7f, 0xd7, 0xd6, 0xc6, 0x7b, 0xbe, 0xeb, 0xae, 0xee, 0xf3, 0x6b, 0xde, 0xdd, 0xd5, 0xd6, 0xe3, 0x7b, 0xff, 0xaa, 0xab, 0x10, 0xf7, 0x6b, 0x7b, 0x77, 0xd7, 0x38, 0xf3, 0x7b, 0x7d, 0x2a, 0xeb, 0x87, 0xf9, 0x6b, 0xfc, 0xc9, 0x9d, 0x8c, 0xf9, 0x7b, 0xf8, 0xff, 0x86, 0x90, 0xfb, 0x0f, 0xfc, 0x67, 0xb6, 0xb6, 0xf9, 0x78, 0xfe, 0xd7, 0x32, 0xa6, 0xfd, 0x0e, 0xcf, 0xcf, 0x82, 0xa0, 0xf9, 0x7e, 0xd8, 0xef, 0xde, 0xbd, 0xfb, 0x0d}; #define king_d_width 47 #define king_d_height 46 #define king_d_x_hot -1 #define king_d_y_hot -1 static char king_d_bits[] = { 0x00, 0x2c, 0x22, 0x22, 0xa2, 0x01, 0x80, 0x58, 0x55, 0x55, 0xd5, 0x00, 0x80, 0x30, 0x22, 0x22, 0xe2, 0x08, 0xc0, 0xe1, 0x88, 0x88, 0x48, 0x04, 0xc0, 0xc1, 0x55, 0x55, 0x75, 0x06, 0xe0, 0x83, 0x89, 0x88, 0x28, 0x45, 0xf0, 0x07, 0xff, 0x1f, 0x32, 0x65, 0xf0, 0x07, 0xfe, 0xff, 0x95, 0x24, 0xf8, 0x0f, 0x02, 0xfc, 0x93, 0x6a, 0xfc, 0x1f, 0xf2, 0xf0, 0x5f, 0x76, 0xfe, 0x3f, 0x0a, 0xd1, 0xdf, 0x1d, 0xfc, 0x1f, 0x7a, 0x50, 0xdf, 0x1d, 0xf8, 0x0f, 0xb2, 0x50, 0x55, 0x76, 0xf0, 0x07, 0x79, 0x50, 0xb5, 0x6a, 0xf0, 0x07, 0x01, 0xa0, 0xaa, 0x24, 0xe0, 0x83, 0x22, 0xa0, 0x2a, 0x65, 0xc0, 0x81, 0x4d, 0x40, 0x55, 0x65, 0xc0, 0x01, 0x31, 0x5c, 0x55, 0x26, 0x80, 0x00, 0x02, 0x66, 0x55, 0x64, 0x80, 0x00, 0x0e, 0x5b, 0x55, 0x68, 0x0c, 0x00, 0x06, 0x55, 0xd5, 0x20, 0xd6, 0x40, 0x41, 0xa5, 0xaa, 0x60, 0xaa, 0xa0, 0xaa, 0xfa, 0xff, 0x7f, 0x56, 0x5d, 0x55, 0x3f, 0xc6, 0x48, 0x6a, 0xbf, 0xaa, 0x6a, 0xad, 0x65, 0xd4, 0x7a, 0xff, 0xc7, 0x18, 0x73, 0xb8, 0x34, 0xfe, 0xff, 0xff, 0x7f, 0x9c, 0x25, 0xde, 0x03, 0x00, 0x7f, 0xb2, 0x4d, 0xac, 0xff, 0xff, 0x41, 0x33, 0xcf, 0xdc, 0x31, 0xc6, 0x5b, 0xe6, 0xd8, 0xfd, 0x5b, 0xeb, 0x57, 0x36, 0xde, 0x7d, 0x8d, 0xb9, 0x4e, 0x8c, 0x97, 0x9d, 0xfd, 0x75, 0x5f, 0xe4, 0x2d, 0xb9, 0xac, 0xaa, 0x7a, 0xf2, 0x28, 0xd8, 0x56, 0xcb, 0x7d, 0x59, 0x2d, 0x99, 0xeb, 0xcf, 0x6a, 0x2c, 0x2e, 0x7b, 0x35, 0xa7, 0x77, 0x56, 0xad, 0xaf, 0x2a, 0x25, 0x2b, 0x8b, 0x5e, 0x5b, 0x35, 0x74, 0x5e, 0x55, 0x5f, 0xaa, 0xaa, 0xaa, 0x2a, 0x22, 0x5f, 0xf8, 0xdf, 0xaa, 0x74, 0xd5, 0x5b, 0xaa, 0xfa, 0xcb, 0x29, 0xe8, 0x59, 0xfb, 0xdf, 0x9a, 0x52, 0x95, 0xdb, 0x6f, 0x53, 0x9a, 0x32, 0x2a, 0x5f, 0x9b, 0x1c, 0x3d, 0x67, 0x27, 0x5e, 0xfd, 0x5f, 0x3d, 0x72}; #define king_h_width 47 #define king_h_height 46 #define king_h_x_hot -1 #define king_h_y_hot -1 static char king_h_bits[] = { 0x00, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0xb0, 0x6d, 0xdb, 0x76, 0x00, 0x00, 0x60, 0x55, 0x55, 0x55, 0x00, 0x00, 0xc0, 0x28, 0x8a, 0x22, 0x03, 0x00, 0x80, 0x10, 0x04, 0xa1, 0x04, 0x38, 0x38, 0x11, 0x04, 0xf1, 0x02, 0x7c, 0x7c, 0xfe, 0xff, 0x9f, 0x3e, 0xfe, 0xfe, 0xaa, 0xaa, 0xca, 0x6a, 0xfe, 0xfe, 0xfc, 0xff, 0x2f, 0x2a, 0xfe, 0xff, 0x04, 0xa0, 0xca, 0x2a, 0xfe, 0xff, 0x1a, 0xaf, 0x8a, 0x2a, 0xfc, 0x7f, 0xa6, 0xa0, 0xfa, 0x56, 0xfc, 0x7f, 0x3e, 0x4f, 0x55, 0x02, 0xf8, 0x3f, 0x3a, 0x4c, 0x95, 0x45, 0xf0, 0x1f, 0x3e, 0x4e, 0x35, 0x7e, 0xe0, 0x0f, 0xa2, 0x80, 0x2a, 0x02, 0xe0, 0x0f, 0x62, 0x80, 0x2a, 0x7f, 0xc0, 0x07, 0x42, 0x40, 0x55, 0x01, 0x80, 0x03, 0x03, 0x40, 0xd5, 0x7f, 0x80, 0xc3, 0xb2, 0x21, 0xd5, 0x3c, 0x00, 0x21, 0x43, 0xd0, 0x54, 0x1e, 0x00, 0x91, 0xe2, 0x50, 0x2a, 0x4f, 0x00, 0xf0, 0x04, 0xa8, 0x9f, 0x27, 0x00, 0x58, 0xab, 0xaa, 0xc9, 0x33, 0x00, 0x46, 0x55, 0x75, 0xea, 0x69, 0xc0, 0x2f, 0x0b, 0x6a, 0xff, 0x2c, 0x78, 0x56, 0xe6, 0xf8, 0x66, 0x1a, 0xae, 0xf5, 0xbc, 0x6f, 0xf5, 0x4b, 0x95, 0xd9, 0xf3, 0xe3, 0x1d, 0x67, 0x4a, 0x5a, 0x0d, 0x58, 0x6d, 0x7c, 0xa5, 0xf4, 0xf5, 0xd7, 0x87, 0x71, 0xb2, 0x59, 0x5d, 0x5d, 0x47, 0x46, 0x49, 0xb2, 0xd5, 0xf5, 0xa6, 0x38, 0x97, 0x55, 0x5f, 0x7d, 0x15, 0x4d, 0x3a, 0xed, 0xf6, 0xb7, 0xa7, 0x44, 0x74, 0xb2, 0x84, 0x30, 0x55, 0x56, 0xf9, 0x2c, 0x55, 0x55, 0xad, 0x52, 0xf2, 0xaf, 0xa7, 0xf2, 0x96, 0x5b, 0x74, 0x59, 0x44, 0x51, 0x97, 0x59, 0xb1, 0x3a, 0x8f, 0x50, 0xe6, 0x5d, 0x38, 0x1d, 0x50, 0xb9, 0x96, 0x44, 0xb5, 0x1a, 0x9f, 0xd8, 0xc5, 0x72, 0x72, 0x1c, 0x50, 0x99, 0x42, 0x3c, 0xb8, 0x1a, 0x1f, 0xa8, 0x62, 0x0f, 0xf5, 0x2e, 0x90, 0x78, 0xf2, 0x63, 0x8e, 0xe7, 0xcf, 0xf9, 0xf3, 0x38}; #define king_s_width 47 #define king_s_height 46 #define king_s_x_hot -1 #define king_s_y_hot -1 static char king_s_bits[] = { 0x00, 0xa0, 0x10, 0x04, 0x41, 0x02, 0x00, 0xc2, 0x39, 0x8e, 0x63, 0x01, 0x00, 0x82, 0x7d, 0xdf, 0xf7, 0x00, 0x00, 0x07, 0x7d, 0xdf, 0x67, 0x00, 0x00, 0x07, 0x12, 0x04, 0x21, 0x00, 0x80, 0x0f, 0xfc, 0xff, 0x3f, 0x00, 0x80, 0x0f, 0xfc, 0xff, 0x3f, 0x00, 0xc0, 0x1f, 0x54, 0x01, 0x20, 0x20, 0xe0, 0x3f, 0x54, 0x79, 0x3e, 0x70, 0xf0, 0x7f, 0x54, 0x05, 0x21, 0x58, 0xf8, 0xff, 0x54, 0xb9, 0x2f, 0x0c, 0xf8, 0xff, 0x54, 0x9d, 0x26, 0x04, 0xfc, 0xff, 0x55, 0xb9, 0x2f, 0x24, 0xfc, 0xff, 0x55, 0x01, 0x21, 0x24, 0xfc, 0xff, 0x55, 0x01, 0x21, 0x14, 0xfc, 0xff, 0x55, 0x81, 0x21, 0x14, 0xf8, 0xfa, 0x54, 0xb5, 0x36, 0x14, 0x70, 0x72, 0x54, 0x1d, 0x3c, 0x24, 0x00, 0x07, 0x54, 0x61, 0x23, 0x24, 0x80, 0x0f, 0x54, 0x81, 0x20, 0x24, 0x00, 0x00, 0x56, 0xc1, 0xe1, 0x24, 0x00, 0x00, 0x55, 0x03, 0x60, 0x15, 0x00, 0x00, 0x55, 0xad, 0x5a, 0x15, 0x00, 0x80, 0xab, 0xd3, 0xa5, 0x14, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x34, 0x00, 0xbc, 0x00, 0x00, 0xc4, 0x35, 0x00, 0xb3, 0xff, 0xff, 0x47, 0x35, 0xc0, 0x07, 0x55, 0x55, 0xaf, 0x66, 0x38, 0x67, 0xff, 0xff, 0xad, 0x66, 0x76, 0x6e, 0x01, 0x00, 0xa1, 0x66, 0xe3, 0x4c, 0x31, 0xb8, 0x52, 0x45, 0xc7, 0x1d, 0x3a, 0x84, 0x56, 0x45, 0x8f, 0xd3, 0xf2, 0x87, 0x56, 0x45, 0x9c, 0xd2, 0xe2, 0x4f, 0x28, 0x45, 0x78, 0x9d, 0xda, 0x4f, 0xa9, 0x46, 0xb1, 0x22, 0x42, 0x54, 0xab, 0x46, 0x73, 0x27, 0x24, 0x52, 0xab, 0x66, 0x97, 0xaf, 0x05, 0x40, 0x94, 0x66, 0xbe, 0xbe, 0xfd, 0xbf, 0x54, 0x67, 0x5c, 0x3c, 0xfd, 0xbf, 0x55, 0x7f, 0x7c, 0x78, 0xac, 0xaa, 0x55, 0x11, 0x5f, 0x7c, 0xa8, 0x2a, 0x5e, 0x7f, 0xe8, 0x5e, 0x5b, 0x55, 0x62, 0x0a, 0xbf, 0x4f, 0x3b, 0xd6, 0xa2, 0x7e, 0x68, 0x47, 0x7a, 0xd7, 0x5e, 0x0b, 0xbf, 0x42, 0xc8, 0x09, 0xa1, 0x7e}; #define queen_c_width 47 #define queen_c_height 46 #define queen_c_x_hot -1 #define queen_c_y_hot -1 static char queen_c_bits[] = { 0xc0, 0xec, 0x92, 0x02, 0x00, 0x00, 0xe0, 0xef, 0x29, 0x03, 0xe0, 0x00, 0xe1, 0xaf, 0x44, 0x02, 0xf0, 0x01, 0xc3, 0xa6, 0x92, 0x02, 0xf8, 0x03, 0x02, 0xf6, 0x29, 0x03, 0xf8, 0x03, 0x66, 0xb6, 0xcf, 0x03, 0xf8, 0x03, 0xf4, 0xd7, 0x20, 0x02, 0xf0, 0x01, 0xf4, 0x57, 0xef, 0x03, 0xee, 0x0e, 0x64, 0x73, 0xe6, 0x02, 0xff, 0x1f, 0x04, 0x5b, 0xae, 0x87, 0xff, 0x3f, 0xb4, 0x5b, 0x40, 0x8a, 0xff, 0x3f, 0xfe, 0x4b, 0x68, 0x92, 0xff, 0x3f, 0xfa, 0x79, 0x30, 0x27, 0xff, 0x1f, 0xf2, 0x2d, 0x20, 0x4f, 0x4e, 0x0e, 0xcf, 0x2d, 0x20, 0x9d, 0x40, 0x00, 0xd8, 0x24, 0x04, 0x39, 0xe1, 0x00, 0xf0, 0x7e, 0xbc, 0x73, 0xe2, 0x00, 0xe0, 0xf6, 0xb0, 0x67, 0xf2, 0x01, 0x70, 0xf2, 0xc1, 0xef, 0x04, 0x00, 0x70, 0x5b, 0x43, 0xdc, 0x04, 0x00, 0x38, 0x0f, 0x7f, 0xf1, 0x04, 0x00, 0xb8, 0x29, 0x54, 0xe4, 0x04, 0x00, 0x9c, 0xfc, 0x00, 0xdd, 0x04, 0x01, 0xcc, 0x84, 0xb7, 0xc3, 0x83, 0x02, 0xee, 0x8f, 0x7c, 0x62, 0xc3, 0x06, 0x26, 0xda, 0x6d, 0x37, 0x26, 0x09, 0x33, 0x73, 0xd7, 0x1d, 0xcf, 0x36, 0xbb, 0x3f, 0xba, 0xf8, 0x9b, 0x2a, 0xe9, 0xfb, 0xd7, 0xaf, 0x31, 0x25, 0x6c, 0x55, 0xef, 0xf4, 0xf9, 0x15, 0xf6, 0xee, 0x39, 0xac, 0x19, 0x3a, 0x5e, 0x55, 0x11, 0xdc, 0xf9, 0x45, 0xbb, 0xbb, 0xe2, 0xac, 0xf1, 0x33, 0x55, 0x55, 0xe3, 0xf8, 0x63, 0x4f, 0xee, 0xee, 0x5a, 0x6b, 0xb7, 0x2e, 0x55, 0x55, 0xbb, 0x3b, 0x5e, 0x59, 0xbb, 0xbb, 0x5b, 0x2b, 0xaf, 0x37, 0x55, 0x55, 0x43, 0x38, 0x5b, 0x68, 0xee, 0xee, 0xe2, 0x18, 0xb0, 0x53, 0xf5, 0x57, 0x05, 0x18, 0x70, 0x64, 0x1f, 0xb8, 0x87, 0x18, 0xe8, 0x29, 0x03, 0xc0, 0xc5, 0x99, 0xd9, 0x6b, 0x01, 0x03, 0xa7, 0x9a, 0xa9, 0x2b, 0x1b, 0x03, 0x75, 0x17, 0x50, 0x57, 0x1e, 0x30, 0x2a, 0x2a, 0xe0, 0x2c, 0x0d, 0x30, 0x9e, 0x3c, 0x06, 0x58}; #define queen_d_width 47 #define queen_d_height 46 #define queen_d_x_hot -1 #define queen_d_y_hot -1 static char queen_d_bits[] = { 0x04, 0xf1, 0x49, 0x01, 0x00, 0x00, 0xc8, 0xb7, 0x94, 0x01, 0x80, 0x00, 0x08, 0x79, 0x22, 0x03, 0x80, 0x00, 0x88, 0x58, 0x41, 0x05, 0xc0, 0x01, 0xe8, 0xbf, 0x80, 0x09, 0xc0, 0x01, 0x88, 0xec, 0x77, 0x0b, 0xe0, 0x03, 0x48, 0x5e, 0x88, 0x17, 0xf0, 0x07, 0xf8, 0x97, 0xef, 0x27, 0xf0, 0x07, 0x48, 0x0f, 0x73, 0x4f, 0xf8, 0x0f, 0x24, 0x1b, 0xd7, 0x5f, 0xfc, 0x1f, 0xfc, 0x17, 0x10, 0x9f, 0xfe, 0x3f, 0xa4, 0x1d, 0x20, 0xbf, 0xfc, 0x1f, 0xc2, 0x17, 0xac, 0x7d, 0xf9, 0x0f, 0xff, 0x0e, 0x90, 0x7a, 0xf2, 0x07, 0xc0, 0x09, 0x80, 0xfd, 0xf2, 0x07, 0x40, 0x1b, 0x9f, 0xfa, 0xe2, 0x03, 0xe0, 0x38, 0xcc, 0xf5, 0xc5, 0x01, 0xa0, 0x62, 0xc0, 0xea, 0xc5, 0x09, 0xf0, 0xc8, 0xe0, 0xf5, 0x89, 0x1c, 0xd0, 0xa3, 0x21, 0xeb, 0x8b, 0x2a, 0xf8, 0x9f, 0x9e, 0xdc, 0x0b, 0x77, 0xa8, 0xff, 0xa2, 0xff, 0x13, 0x2a, 0xdc, 0xfd, 0xff, 0xdf, 0x17, 0x18, 0xf4, 0xea, 0xff, 0xab, 0x17, 0x2c, 0xfe, 0x77, 0x7f, 0xf7, 0x1f, 0x2a, 0xea, 0xaf, 0xaa, 0xfa, 0x3b, 0x55, 0x5f, 0xff, 0xdd, 0x7f, 0xfd, 0x52, 0xfd, 0xfa, 0xff, 0xaf, 0x5f, 0x23, 0xdf, 0xd5, 0xff, 0xd5, 0xae, 0x5e, 0xce, 0xaf, 0xaa, 0xfa, 0x97, 0x35, 0x6f, 0xf2, 0xd5, 0xff, 0xd7, 0x62, 0xa7, 0xf2, 0x7f, 0x3e, 0x57, 0x55, 0x37, 0xf2, 0x4f, 0x06, 0xb7, 0x08, 0xf3, 0x2f, 0x4f, 0x6e, 0x6e, 0x55, 0x5b, 0x31, 0xdc, 0x6c, 0x3e, 0x22, 0x49, 0x55, 0x9b, 0x8c, 0x5f, 0x55, 0x9d, 0x51, 0x9b, 0xfe, 0xaa, 0x08, 0xbc, 0x4e, 0xf8, 0xab, 0x4e, 0x55, 0x2e, 0xb9, 0xaf, 0xfa, 0x75, 0x22, 0x5e, 0xc5, 0xea, 0x0f, 0x8c, 0x55, 0x6f, 0xd5, 0x1f, 0xf0, 0xaa, 0x08, 0x5f, 0xc5, 0xe0, 0x9f, 0x8a, 0x55, 0x6f, 0xb9, 0x3e, 0x40, 0x71, 0x23, 0x5f, 0x9d, 0x82, 0x5f, 0x9d, 0x54, 0x6b, 0xa3, 0xfa, 0x5a, 0xa3, 0x4e, 0x35, 0xab, 0xda, 0xad, 0x6a, 0x56}; #define queen_h_width 47 #define queen_h_height 46 #define queen_h_x_hot -1 #define queen_h_y_hot -1 static char queen_h_bits[] = { 0x00, 0x54, 0x05, 0x20, 0x00, 0x00, 0x00, 0xac, 0xce, 0x20, 0x0e, 0x0e, 0x00, 0x56, 0xcd, 0x11, 0x1f, 0x1f, 0x00, 0xae, 0xda, 0x91, 0xbf, 0x3f, 0x00, 0x16, 0x15, 0x90, 0xbf, 0x3f, 0x00, 0x0e, 0x3a, 0x93, 0xff, 0x3f, 0x00, 0x75, 0x3e, 0x97, 0xff, 0x3f, 0x00, 0x45, 0x70, 0x27, 0xff, 0x1f, 0x00, 0x7d, 0x6e, 0x20, 0xff, 0x1f, 0x00, 0x75, 0xcc, 0x2c, 0xfe, 0x0f, 0x80, 0x7e, 0x9e, 0x5d, 0xfc, 0x07, 0x80, 0x46, 0x80, 0x5d, 0xf8, 0x03, 0x80, 0x86, 0x00, 0x83, 0xf8, 0x03, 0x80, 0x8e, 0x02, 0x37, 0xf1, 0x01, 0x40, 0x8f, 0x81, 0xff, 0xe1, 0x00, 0x40, 0x0f, 0x81, 0x0d, 0xe0, 0x00, 0x40, 0x0f, 0xc4, 0x3f, 0x40, 0x00, 0x40, 0x97, 0xc3, 0x7a, 0x40, 0x08, 0xa0, 0x13, 0xe3, 0xff, 0x00, 0x36, 0xa0, 0x3b, 0x61, 0xf5, 0x03, 0x2a, 0xa0, 0x2f, 0xf0, 0xff, 0x0f, 0x5d, 0xa0, 0x57, 0x58, 0xcd, 0x3f, 0x2a, 0xd0, 0xad, 0xaf, 0xce, 0x1f, 0x36, 0xd0, 0x5d, 0x55, 0xfb, 0x0f, 0x48, 0xd0, 0xf2, 0xea, 0xf1, 0x0f, 0x7e, 0x50, 0x91, 0x3f, 0xfb, 0x35, 0x37, 0x28, 0x8e, 0x24, 0xb6, 0xf0, 0x20, 0x98, 0x7c, 0xe4, 0xb1, 0xd4, 0x2b, 0x48, 0xe6, 0x1f, 0x38, 0x67, 0x76, 0x24, 0xe2, 0x03, 0x18, 0x7a, 0x52, 0x24, 0xf2, 0x67, 0x5b, 0x5d, 0x2a, 0x32, 0xd3, 0xaf, 0xfe, 0x67, 0x52, 0x29, 0x51, 0x4f, 0xad, 0x3b, 0x62, 0x20, 0x39, 0x9d, 0xec, 0x25, 0x73, 0x54, 0xe9, 0x9e, 0xce, 0x3a, 0x79, 0x58, 0xd9, 0x3b, 0xce, 0x2a, 0x3d, 0x12, 0xb9, 0x39, 0x76, 0x35, 0x5f, 0x9c, 0xb9, 0x7b, 0x67, 0x2d, 0x2f, 0x94, 0x68, 0x77, 0x6b, 0x35, 0x57, 0x84, 0x7c, 0x67, 0xbf, 0x2a, 0x2b, 0x8e, 0x64, 0xf9, 0xb7, 0x36, 0x15, 0x95, 0x6c, 0xe7, 0xb5, 0x2a, 0x0b, 0xa4, 0x74, 0x9d, 0x59, 0x3d, 0x25, 0x88, 0xa4, 0x77, 0x5e, 0x2f, 0x13, 0xc9, 0xbc, 0xdc, 0x79, 0x33, 0x11, 0x5e, 0xdc, 0x73, 0xe7, 0x1d, 0x3d}; #define queen_s_width 47 #define queen_s_height 46 #define queen_s_x_hot -1 #define queen_s_y_hot -1 static char queen_s_bits[] = { 0x00, 0x96, 0xb4, 0x10, 0x00, 0x00, 0x00, 0x4e, 0x19, 0x08, 0x00, 0x00, 0x00, 0x26, 0xb2, 0x0b, 0x00, 0x00, 0x04, 0x15, 0x34, 0x0b, 0x20, 0x00, 0x04, 0x0d, 0xb8, 0x0a, 0x20, 0x00, 0x0a, 0x75, 0x7c, 0x08, 0x70, 0x00, 0x0a, 0x45, 0x62, 0x0f, 0x70, 0x00, 0x0a, 0x7d, 0x7e, 0x0e, 0xf8, 0x00, 0x11, 0x5d, 0xcc, 0x0d, 0xf8, 0x00, 0x8a, 0x7a, 0xdc, 0x10, 0xfc, 0x01, 0x8e, 0x4a, 0x80, 0x1f, 0xfe, 0x03, 0x84, 0x8a, 0xc1, 0x1d, 0xff, 0x07, 0x84, 0x8a, 0xc0, 0x9f, 0xff, 0x0f, 0x8c, 0x0a, 0xa0, 0xc3, 0xff, 0x1f, 0x86, 0x9a, 0x63, 0xc1, 0xff, 0x1f, 0x4c, 0x9d, 0xd1, 0xc1, 0xff, 0x1f, 0x46, 0x2d, 0x30, 0xc3, 0xff, 0x1f, 0x4c, 0x2d, 0xa8, 0xc2, 0xff, 0x1f, 0x46, 0x55, 0x44, 0x84, 0xaf, 0x0f, 0x4c, 0xaf, 0xab, 0x0a, 0x27, 0x07, 0xe6, 0x13, 0x11, 0x11, 0x70, 0x00, 0xec, 0xab, 0xaa, 0x2e, 0xf8, 0x00, 0x66, 0x46, 0x44, 0x26, 0x00, 0x00, 0x7c, 0xae, 0xaa, 0x41, 0x00, 0x00, 0x16, 0x1c, 0x91, 0x94, 0x00, 0x00, 0xbc, 0xa8, 0x6a, 0x8c, 0x01, 0x04, 0x36, 0x4b, 0x24, 0x8a, 0x02, 0x0e, 0x7c, 0xb3, 0x1e, 0x80, 0x02, 0x15, 0xf6, 0xe4, 0x47, 0x61, 0x87, 0x3b, 0xfc, 0xa1, 0xc2, 0xb0, 0x6f, 0x15, 0xe6, 0x91, 0xb4, 0xdc, 0x7d, 0x4e, 0xcc, 0x93, 0x04, 0xf6, 0xdc, 0x25, 0x96, 0x8f, 0x08, 0x6d, 0xb6, 0x39, 0x3c, 0x8f, 0xc8, 0x32, 0x6b, 0x7f, 0x66, 0xce, 0xb9, 0xbd, 0xc5, 0x2b, 0xcc, 0xfc, 0xdf, 0xbe, 0xa5, 0x30, 0x86, 0xcd, 0x69, 0xa7, 0x55, 0x31, 0x1c, 0x8d, 0x98, 0xa3, 0xb5, 0x4d, 0x36, 0x8b, 0xe8, 0x29, 0x2b, 0x13, 0x2c, 0x9a, 0xe4, 0x6c, 0x16, 0x35, 0x46, 0xbf, 0x74, 0xce, 0x0c, 0x56, 0x8c, 0xa3, 0x3e, 0x80, 0x30, 0x17, 0x86, 0xff, 0xff, 0xff, 0x7f, 0x30, 0xac, 0x45, 0x44, 0x44, 0x84, 0x10, 0xa6, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x8c, 0xab, 0xaa, 0xaa, 0xea, 0x18}; #define jack_c_width 47 #define jack_c_height 46 #define jack_c_x_hot -1 #define jack_c_y_hot -1 static char jack_c_bits[] = { 0x60, 0xab, 0x6a, 0x6b, 0x03, 0x00, 0xc0, 0xd6, 0x56, 0xb5, 0xe1, 0x00, 0x80, 0xad, 0x6a, 0xdb, 0xf0, 0x01, 0x81, 0xdb, 0x56, 0x6d, 0xf8, 0x03, 0x83, 0xf6, 0x7e, 0x37, 0xf8, 0x03, 0x46, 0x0e, 0x00, 0x18, 0xf8, 0x03, 0x4d, 0xfd, 0xff, 0x0f, 0xf0, 0x01, 0x9b, 0xfd, 0xff, 0x0f, 0xee, 0x0e, 0xb7, 0x04, 0x40, 0x0d, 0xff, 0x1f, 0x60, 0x04, 0x40, 0x95, 0xff, 0x3f, 0xff, 0x1c, 0x5f, 0x95, 0xff, 0x3f, 0x04, 0xa4, 0x40, 0x95, 0xff, 0x3f, 0x04, 0x1e, 0x4f, 0x15, 0xff, 0x1f, 0x04, 0x4c, 0x46, 0x15, 0x4e, 0x0e, 0x04, 0x5c, 0x4e, 0x15, 0x40, 0x00, 0x04, 0x24, 0x40, 0x15, 0xe0, 0x00, 0x04, 0xe4, 0x40, 0x75, 0xe0, 0x00, 0x04, 0x44, 0x40, 0x5d, 0xf0, 0x01, 0x04, 0x04, 0x42, 0x57, 0x00, 0x00, 0x04, 0xe8, 0x41, 0x55, 0x00, 0x00, 0x0f, 0xc8, 0x60, 0x35, 0x00, 0x00, 0x12, 0x18, 0x70, 0x7c, 0x00, 0x00, 0x27, 0x37, 0xdc, 0xff, 0x01, 0x00, 0xe4, 0xe9, 0x07, 0xde, 0x07, 0x00, 0xe7, 0x1c, 0x9f, 0xd7, 0x1e, 0x00, 0xf4, 0x19, 0xfa, 0xe9, 0x7a, 0x40, 0xef, 0xdc, 0x62, 0xc4, 0xea, 0x61, 0xd4, 0x19, 0x06, 0xd6, 0x7e, 0x37, 0xbc, 0x1c, 0x9e, 0xc3, 0xf6, 0x1e, 0x7c, 0xd5, 0xfe, 0xeb, 0x7e, 0x15, 0xec, 0x1a, 0xfa, 0xc1, 0xea, 0x12, 0xd4, 0x1d, 0xe2, 0xd5, 0x6a, 0x19, 0xbc, 0xcf, 0x46, 0xc0, 0xfe, 0x11, 0x6c, 0x0f, 0xdd, 0xfa, 0xf6, 0x10, 0xf4, 0x0a, 0x3b, 0xd0, 0x7e, 0x16, 0xbc, 0x6d, 0x55, 0xcf, 0x7a, 0x10, 0xb4, 0x07, 0x1b, 0xd4, 0x26, 0x18, 0xbc, 0x85, 0xad, 0xd3, 0xa1, 0x15, 0x9c, 0xb5, 0x0a, 0x65, 0x14, 0x14, 0xdc, 0x82, 0xed, 0x94, 0x11, 0x1a, 0xdc, 0xc2, 0x4a, 0x09, 0x6c, 0x1a, 0xcc, 0x5a, 0x3d, 0x35, 0x0b, 0x1d, 0x6c, 0xc1, 0x4a, 0x82, 0x06, 0x1d, 0x6c, 0x61, 0xd5, 0x6d, 0xb5, 0x1e, 0x6c, 0xad, 0xba, 0xb2, 0x86, 0x1e, 0xbc, 0x60, 0x6d, 0x5b, 0x83, 0x1e}; #define jack_d_width 47 #define jack_d_height 46 #define jack_d_x_hot -1 #define jack_d_y_hot -1 static char jack_d_bits[] = { 0x00, 0xce, 0xed, 0x76, 0x0e, 0x00, 0x00, 0x9c, 0xed, 0x36, 0x87, 0x00, 0x00, 0x38, 0x0c, 0x86, 0x83, 0x00, 0x01, 0xf0, 0xff, 0xff, 0xc1, 0x01, 0x03, 0xf0, 0xff, 0xff, 0xc0, 0x01, 0x07, 0xb0, 0x02, 0xc0, 0xe0, 0x03, 0x06, 0xa8, 0x42, 0xc0, 0xf0, 0x07, 0x05, 0xa8, 0x3e, 0xfc, 0xf0, 0x07, 0x06, 0xa8, 0x82, 0xc2, 0xf8, 0x0f, 0x05, 0xaa, 0x7e, 0xfa, 0xfc, 0x1f, 0x06, 0xab, 0x3a, 0xba, 0xfe, 0x3f, 0x85, 0xa9, 0x22, 0xa2, 0xfc, 0x1f, 0x46, 0xa9, 0x02, 0xa2, 0xf8, 0x0f, 0xa5, 0xa8, 0x02, 0xa4, 0xf0, 0x07, 0x9e, 0xa8, 0x02, 0xa7, 0xf0, 0x07, 0x47, 0xa8, 0x02, 0xa0, 0xe0, 0x03, 0x22, 0xae, 0x22, 0xa0, 0xc0, 0x01, 0x10, 0xa9, 0xc2, 0xd7, 0xc3, 0x41, 0x0d, 0xaf, 0x83, 0x91, 0x84, 0x60, 0x07, 0x61, 0x06, 0x28, 0x85, 0x70, 0x85, 0x1e, 0x1c, 0x44, 0x0c, 0x30, 0xc4, 0x64, 0xf0, 0xc7, 0x37, 0x10, 0x66, 0x99, 0x03, 0x38, 0xd3, 0x50, 0xf7, 0x66, 0xfc, 0xc7, 0xdc, 0x73, 0xce, 0x8d, 0x03, 0x38, 0xde, 0x5d, 0xac, 0x3b, 0xfc, 0x87, 0xbf, 0x1d, 0x17, 0xd7, 0x03, 0xf8, 0xbe, 0x3b, 0xb4, 0xee, 0xfe, 0xef, 0x76, 0x77, 0x57, 0xdc, 0xbb, 0xbb, 0x76, 0x3e, 0xb4, 0xba, 0xee, 0xee, 0xf6, 0x1c, 0x17, 0x69, 0xbb, 0xbb, 0xf6, 0x59, 0xb4, 0xda, 0xee, 0xee, 0xd6, 0x73, 0x4f, 0xec, 0xbd, 0xbb, 0xf6, 0x57, 0xac, 0xda, 0xeb, 0xee, 0x16, 0x1f, 0x1d, 0xe9, 0xb6, 0xbb, 0xf6, 0x3f, 0xaf, 0xda, 0xee, 0xee, 0x16, 0x78, 0x55, 0xec, 0xdb, 0xbb, 0xf6, 0x3f, 0xbc, 0xda, 0xbb, 0xee, 0x16, 0x10, 0x16, 0xe9, 0x6c, 0xbb, 0xf6, 0x5f, 0xaf, 0x7a, 0xd7, 0xee, 0x16, 0x78, 0x76, 0x7c, 0xab, 0xbd, 0xf6, 0x57, 0xac, 0x9a, 0x5d, 0xeb, 0x56, 0x1c, 0x35, 0xed, 0xa2, 0xb6, 0xf6, 0x37, 0xef, 0xee, 0x59, 0xed, 0xb6, 0x7b, 0xb5, 0x73, 0xdb, 0xda, 0x5e, 0x37, 0x2c, 0xbd, 0x46, 0xb1, 0x5e, 0x1a}; #define jack_h_width 47 #define jack_h_height 46 #define jack_h_x_hot -1 #define jack_h_y_hot -1 static char jack_h_bits[] = { 0x60, 0xca, 0x64, 0xca, 0x00, 0x00, 0xc0, 0xd4, 0x6a, 0x65, 0x00, 0x00, 0x81, 0xc9, 0x64, 0x32, 0x07, 0x07, 0x03, 0xd3, 0x6a, 0x99, 0x8f, 0x0f, 0x17, 0xc6, 0x60, 0xcc, 0xdf, 0x1f, 0x37, 0xfc, 0xff, 0xcf, 0xdf, 0x1f, 0x57, 0xf8, 0xff, 0xcf, 0xff, 0x1f, 0x97, 0x50, 0x05, 0xc8, 0xff, 0x1f, 0x37, 0x51, 0xe5, 0x85, 0xff, 0x0f, 0x3f, 0x51, 0xc5, 0x84, 0xff, 0x0f, 0x6a, 0x51, 0xa5, 0x04, 0xff, 0x07, 0xaa, 0x51, 0xc5, 0x09, 0xfe, 0x03, 0x6a, 0xa9, 0x02, 0x08, 0xfc, 0x01, 0x3f, 0xa9, 0x32, 0x10, 0xfc, 0x01, 0x97, 0xa8, 0x12, 0x1b, 0xf8, 0x00, 0x57, 0x56, 0xe1, 0x04, 0x70, 0x00, 0x37, 0x59, 0x01, 0x04, 0x70, 0x09, 0x97, 0x56, 0x81, 0x07, 0x20, 0x0f, 0x87, 0x5a, 0x07, 0x0e, 0x24, 0x06, 0x07, 0xa7, 0x1a, 0x08, 0x09, 0x0d, 0xc7, 0xfe, 0x75, 0x14, 0xf6, 0x0b, 0xf7, 0xff, 0xff, 0x3f, 0x88, 0x06, 0x3f, 0x07, 0x00, 0xc0, 0x84, 0x01, 0x38, 0x8f, 0x44, 0x91, 0x41, 0x02, 0xe7, 0x1e, 0xff, 0x7f, 0xa6, 0x0e, 0xde, 0x3f, 0x80, 0x00, 0x9c, 0x1a, 0xb6, 0x73, 0xfe, 0x7f, 0x7e, 0x17, 0xd9, 0xf3, 0x44, 0x22, 0xf3, 0x0a, 0xed, 0xee, 0x89, 0x91, 0x73, 0x07, 0x76, 0xfc, 0x53, 0xca, 0xdd, 0x06, 0x3b, 0x39, 0x97, 0xe9, 0x7f, 0x1f, 0x9d, 0x3c, 0xaf, 0x75, 0xd6, 0x7a, 0x4e, 0xee, 0x2e, 0x74, 0x6e, 0x6b, 0x27, 0xf7, 0x5f, 0xba, 0xd7, 0x6a, 0x93, 0xaf, 0x59, 0xfa, 0x7b, 0x5b, 0xc9, 0xd5, 0xb9, 0x9d, 0xdd, 0x32, 0xe4, 0xfa, 0xb7, 0x9d, 0x6b, 0x6b, 0x72, 0x1f, 0x7f, 0xee, 0xd7, 0x5a, 0xf9, 0x26, 0x66, 0xfe, 0x7f, 0x37, 0x5c, 0xf3, 0x67, 0x66, 0xdc, 0x6e, 0xaf, 0x09, 0x6e, 0x66, 0xb2, 0x5d, 0xf6, 0xfd, 0x7f, 0xf6, 0x67, 0x3b, 0xed, 0xfa, 0x7f, 0xff, 0xcf, 0x76, 0xda, 0x4a, 0x24, 0x12, 0xd9, 0x2d, 0xed, 0x8a, 0x94, 0x94, 0xa8, 0x57, 0xda, 0x6a, 0x4f, 0x79, 0xab, 0x2d}; #define jack_s_width 47 #define jack_s_height 46 #define jack_s_x_hot -1 #define jack_s_y_hot -1 static char jack_s_bits[] = { 0xb8, 0xba, 0xee, 0xea, 0x40, 0x00, 0x70, 0x75, 0xd7, 0x75, 0xe0, 0x00, 0xe4, 0xba, 0xee, 0x3a, 0xe0, 0x00, 0xca, 0x75, 0xd7, 0x1d, 0xf0, 0x01, 0x8e, 0xff, 0xff, 0x0f, 0xf0, 0x01, 0x0e, 0xff, 0xff, 0x0f, 0xf8, 0x03, 0x0a, 0x01, 0xa8, 0x0a, 0xfc, 0x07, 0x0a, 0xf1, 0xa8, 0x0a, 0xfe, 0x0f, 0x0e, 0x09, 0xab, 0x0a, 0xff, 0x1f, 0x0e, 0x79, 0xa8, 0x0a, 0xff, 0x1f, 0x0a, 0xb1, 0xa8, 0x8a, 0xff, 0x3f, 0x0e, 0x79, 0xa8, 0x8a, 0xff, 0x3f, 0x8a, 0x00, 0xa8, 0x8a, 0xff, 0x3f, 0x95, 0x03, 0xa8, 0x8a, 0xff, 0x3f, 0x0a, 0x99, 0xa8, 0x0a, 0x5f, 0x1f, 0x0e, 0x21, 0xa9, 0x0a, 0x4e, 0x0e, 0x0a, 0xdf, 0xa8, 0x0a, 0xe0, 0x00, 0x0e, 0x0e, 0xa8, 0x0a, 0xf0, 0x01, 0x0e, 0x02, 0xe8, 0x0e, 0x00, 0x00, 0x0a, 0x02, 0xbc, 0x3b, 0x00, 0x00, 0x0a, 0x06, 0xeb, 0x2e, 0x00, 0x00, 0x0e, 0xfc, 0xbf, 0x3b, 0x00, 0x00, 0x9e, 0x03, 0x00, 0xf8, 0x01, 0x00, 0xb1, 0x6d, 0xdb, 0x06, 0x07, 0x00, 0x7e, 0x02, 0x00, 0x74, 0x19, 0x00, 0xd9, 0xff, 0xff, 0x77, 0xed, 0x00, 0xce, 0xb4, 0xbb, 0x27, 0x67, 0x01, 0x55, 0xf9, 0xee, 0x06, 0x33, 0x07, 0x32, 0xb0, 0xfb, 0x77, 0x99, 0x09, 0x39, 0xfe, 0xbf, 0x77, 0xcd, 0x3c, 0x4d, 0x26, 0xa8, 0x24, 0x67, 0x66, 0xe6, 0x4a, 0x72, 0x06, 0x31, 0x3f, 0xb3, 0xf1, 0xac, 0x75, 0xdd, 0x13, 0x98, 0xb1, 0x71, 0x74, 0xb7, 0x2c, 0xef, 0xd2, 0xdb, 0x24, 0x89, 0x21, 0xa0, 0xf6, 0x04, 0x04, 0x27, 0x33, 0x7c, 0x3e, 0xf9, 0xff, 0x89, 0x2d, 0x26, 0x4e, 0x5a, 0xd5, 0x22, 0x21, 0x92, 0x93, 0xae, 0xea, 0x88, 0x33, 0xcb, 0xa4, 0xdb, 0x5d, 0x22, 0x2d, 0x67, 0xc9, 0xe8, 0xae, 0x98, 0x21, 0x70, 0x32, 0x5a, 0x35, 0xb2, 0x72, 0xbf, 0x8c, 0xa8, 0x9a, 0x9c, 0x3c, 0x38, 0x25, 0xfa, 0x2f, 0xa4, 0x31, 0x4c, 0xda, 0x99, 0x0c, 0x57, 0x3a, 0x9c, 0x4f, 0x69, 0x4b, 0xf9, 0x1c}; xpat2-1.07/src/gray1.bm100644 146 144 476 5461331007 13277 0ustar mbimathopt/* substitue gray1 for Green on mono */ #define gray1_width 16 #define gray1_height 16 static char gray1_bits[] = { 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa}; xpat2-1.07/src/messages.c100644 146 144 30076 6714122140 13744 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module messages.c */ /* */ /* Internationalisation and keyboard translation/customisation */ /* written by Michael Bischoff (mbi@mo.math.nat.tu-bs.de) */ /* 04-Apr-1994 */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "xpatgame.h" #include #ifndef _POSIX_NAME_MAX # undef _POSIX_SOURCE /* seems that we have no POSIX system! */ #else # include "unistd.h" /* for access() */ #endif static const char n_ace[] = "Ace", n_deuce[] = "Deuce", n_three[] = "Three", n_four[] = "Four", n_five[] = "Five", n_six[] = "Six", n_seven[] = "Seven", n_eight[] = "Eight", n_nine[] = "Nine", n_ten[] = "Ten", n_jack[] = "Jack", n_queen[] = "Queen", n_king[] = "King", n_joker[] = "Joker", n_diamonds[] = "Diamonds", n_hearts[] = "Hearts", n_spades[] = "Spades", n_clubs[] = "Clubs"; const char *US_rank_name[] = { n_ace, n_deuce, n_three, n_four, n_five, n_six, n_seven, n_eight, n_nine, n_ten, n_jack, n_queen, n_king }; const char *US_suit_name[] = { n_clubs, n_spades, n_hearts, n_diamonds }; const char *xpat_messages[] = { "Quit game?", "Another game?", "Restart game?", n_clubs, n_spades, n_hearts, n_diamonds, n_joker, n_ace, n_deuce, n_three, n_four, n_five, n_six, n_seven, n_eight, n_nine, n_ten, n_jack, n_queen, n_king, "stack", "slot", "the talon", "tmp", "the stock", "No hint was given!", "You can move %P (%R of %S) to %P.", "No hints!", "(wrapping)", "Bookmark set.", "You won!", "No moves to stack possible.", "Saving of game FAILED.", "Loading the game FAILED.", "Could not open file.", "Could not open file.", "Could not write header.", "Could not read header.", "Could not write moves.", "Could not read moves.", "Saving the game succeeded.", "Loading the game succeeded.", "Magic match failed.", "No flip left.", "flipping", "new cards", "No new cards!", "No source pile selected.", "Cards moved to stack.", "Move not possible.", "Undo not possible.", "Undo!", "Undo (cheat!)", "Redo not possible.", "Redo!", "Redo (& uncheat)", "Invalid move", "Empty or invalid source pile", "source pile selected", "not so many slots", "aborted", "Unknown command:", "no move possible", "Xpat2 version", "Seed is %ld, cheat count %d. ", "Score %d of %d.", "(No score for these rules)", "", "Help on keys", "Help on %s rules", "help.keys", "", "", "", "", "help.Spider", /* we limit the filenames to 14 characters. */ "help.Gypsy", /* Not nice, but POSIX conforming */ "help.Klondike", "help.Seahaven", "help.FreeCell", /* 80 */ "help.Delight", "hlpMonteCarlo", "hlpMidnightOil", "hlpCalculation", "hlpmodCanfield", "help.Michaels", "help.Canfield", "help.Cotillion", "hlpBakersDozen", "help.Oonsoo", "help.BlueMoon", "Please wait, loading cards...", "Welcome to XPat2 version %s!", "", "Rotate up selected.", "Rotate down selected.", "", "Card must be visible.", "For this action, a slot is required.", "In these rules, the cards cannot be shuffled.", /* 100 */ "No shuffles left.", "One shuffle left.", "%d shuffles left.", "In these rules, the deck cannot be flipped.", "No flip left.", "One flip left.", "%d flips left.", "This function is not available in these rules.", "No slot rotations left.", "One slot rotation left.", "%d slot rotations left.", "No ``deal cards'' in these rules.", "No more cards on the deck.", "One last card on the deck.", "%d cards left on deck.", "Starting position.", "One move done.", "%d moves done.", "", "Not a single point of", "One point of", "Score: %d points of", }; void *malloc_(size_t n) { void *p; if (!(p = malloc(n))) { fprintf(stderr, "out of memory\n"); exit(EXIT_FAILURE); } return p; } char *strsav(const char *txt) { char *p = malloc_(1 + strlen(txt)); strcpy(p, txt); return p; } /* map standard language settings to historic xpat ones... */ const char *get_lang(void) { static char iso_code[3] = { 0 }; static char *langdir = NULL; char buff[256]; if (langdir) return langdir; /* directory was checked before */ /* first call, read environment */ langdir = getenv("LANG"); if (!langdir) langdir = ""; /* set to empty */ if (!*langdir) return langdir; /* nothing to check */ /* there is something set. Check values as defined */ if (strlen(langdir) + strlen(LIBDIR) + 2 > sizeof(buff)) { fprintf(stderr, "xpat2: path too long for LIBDIR + LANG\n(LIBDIR = %s, LANG = %s)\n", LIBDIR, langdir); exit(EXIT_FAILURE); } /* buff has sufficient size */ sprintf(buff, "%s/%s", LIBDIR, langdir); if (strlen(langdir) < 2) return langdir; /* no idea how to change, keep it! */ #ifdef _POSIX_SOURCE /* on posix-systems, we can check if the directory is accessible */ if (!access(buff, R_OK)) /* check access to directory */ return langdir; /* directory(?) seems to be readable, keep it */ #endif /* access denied or some other error. Try to map iso-codes to xpat names */ iso_code[0] = toupper(langdir[0]); iso_code[1] = toupper(langdir[1]); iso_code[2] = '\0'; /* map the existing translations (iso3166) to well-known pathnames */ if (!strcmp(iso_code, "DE")) return langdir = "german"; if (!strcmp(iso_code, "IT")) return langdir = "italian"; if (!strcmp(iso_code, "FR")) return langdir = "french"; if (!strcmp(iso_code, "")) return langdir = "german"; if (!strcmp(iso_code, "RU") || !strcmp(iso_code, "BY")) return langdir = "russian"; #ifdef _POSIX_SOURCE /* directory wasn't readable, reset it */ return langdir = ""; #else /* access has not been checked, keep directory */ return langdir; #endif } FILE *lang_fopen(const char *filename) { char pathname[256]; const char *langdir = get_lang(); FILE *fp; if (strlen(filename) + strlen(langdir) + strlen(LIBDIR) + 3 <= sizeof(pathname)) { /* buffer has sufficient size */ if (*langdir) { sprintf(pathname, "%s/%s/%s", LIBDIR, langdir, filename); if ((fp = fopen(pathname, "r"))) return fp; } } if (strlen(filename) + strlen(LIBDIR) + 2 <= sizeof(pathname)) { sprintf(pathname, "%s/%s", LIBDIR, filename); if ((fp = fopen(pathname, "r"))) return fp; } return NULL; } void read_message_file(const char *filename) { FILE *fp; int i; char line[256]; if (!(fp = lang_fopen(filename))) return; /* Xt philosophy: ignore error */ for (i = 0; i < sizeof(xpat_messages) / sizeof(const char *); ++i) { char *p; again: if (!fgets(line, sizeof(line), fp)) break; /* EOF */ if (*line == '#') goto again; if ((p = strrchr(line, '\n'))) *p = '\0'; if (*line) /* empty lines => keep old text */ xpat_messages[i] = strsav(line); } fclose(fp); } static void cmd_None(void) {} static void replace_binding(struct key_action *p, const char *name) { int i; static struct translator { const char *name; void (*func)(void); } translator[] = { { "None", cmd_None }, { "rq_LeavePat", rq_LeavePat }, { "rq_RestartGame", rq_RestartGame }, { "rq_AnotherGame", rq_AnotherGame }, { "ResetHints", cmd_ResetHints }, { "DoHint", cmd_DoHint }, { "NextHint", cmd_NextHint }, { "PreviousHint", cmd_PreviousHint }, { "CancelSelection", cmd_CancelSelection }, { "AllMoves", cmd_AllMoves }, { "UndoMove", cmd_UndoMove }, { "RedoMove", cmd_RedoMove }, { "DealCards", cmd_DealCards }, { "LeavePat", cmd_LeavePat }, { "ShowScore", cmd_ShowScore }, { "AnotherGame", cmd_AnotherGame }, { "RestartGame", cmd_RestartGame }, { "ReplayGame", cmd_ReplayGame }, { "Layout", cmd_Layout }, { "SaveGame", cmd_SaveGame }, { "ShowVersion", cmd_ShowVersion }, { "MinWindow", cmd_MinWindow }, { "PreferredWindow", cmd_PreferredWindow }, { "Info", cmd_Info }, { "ToStack", cmd_ToStack }, { "OneToStack", cmd_OneToStack }, /* selected card(s) */ { "AllToStack", cmd_AllToStack }, /* all possible */ { "DropBookmark", cmd_DropBookmark }, { "GotoBookmark", cmd_GotoBookmark }, { "RotateUp", cmd_RotateUp }, { "RotateDown", cmd_RotateDown }, { "Cancel", cmd_Cancel }, { "Confirm", cmd_Confirm } }; for (i = 0; i < sizeof(translator) / sizeof(translator[0]); ++i) if (!strcmp(name, translator[i].name)) { p->action = translator[i].func; return; } fprintf(stderr, "WARNING: no function corresponds to \"%s\"\n", name); p->action = cmd_None; } static struct key_action *global_bindings = NULL; void add_keybinding(struct key_action **cp, const char *cmd, const char *function) { /* a NULL pointer for cmd is a wildcard */ int done = 0; struct key_action *p; if (!cp) return; /* bindings for unimplemented rulesets */ while (*cp) { p = *cp; if (!cmd || !strcmp(p->string, cmd)) { /* replace this! */ replace_binding(p, function); done = 1; } cp = &(p->next); } if (!done && cmd) { /* didn't find previous command */ /* add a new entry */ p = *cp = malloc_(sizeof(struct key_action)); p->next = NULL; p->string = strsav(cmd); replace_binding(p, function); } } void read_keyboard_file(const char *filename) { FILE *fp; char line[256]; char buff[32], cmd[2]; struct key_action **cp = &global_bindings; cmd[1] = '\0'; /* 1-char commands currently */ if (!(fp = lang_fopen(filename))) { fprintf(stderr, "FAILED to open keyboard file \"%s\"\n", filename); return; /* Xt philosophy: ignore error */ } while (fgets(line, sizeof(line), fp)) { char *p; if ((p = strrchr(line, '\n'))) *p = '\0'; if (!*line) continue; if (!strncmp(line, "#c", 2)) /* comment */ continue; if (!strncmp(line, "#rules ", 7)) { /* switch to other rules */ struct rules *rp; p = line+7; if (!(rp = getrules(p))) cp = NULL; else cp = &(rp->local_bindings); continue; } if (!strncmp(line, "#include ", 9)) { /* include */ read_keyboard_file(line+9); continue; } if (!strncmp(line, "#x", 2) && strlen(line) < 32) { /* hex number */ int c; sscanf(line+2, "%x %s", &c, buff); cmd[0] = c; add_keybinding(cp, cmd, buff); continue; } /* else assume stringcommandname */ if (strlen(line) < 32 && (p = strchr(line+1, ' '))) { *p = '\0'; add_keybinding(cp, line, p+1); continue; } fprintf(stderr, "Warning: cannot parse line in keys file:%s\n", line); } fclose(fp); } void key_pressed(char *str) { struct key_action *p; /* search for local binding */ for (p = rules.local_bindings; p; p = p->next) if (!strcmp(p->string, str)) { (*p->action)(); return; } /* search for global binding */ for (p = global_bindings; p; p = p->next) if (!strcmp(p->string, str)) { (*p->action)(); return; } /* not found. break up the string to smaller pieces */ if (strlen(str) > 1) { char s[2]; while (*str) { s[0] = *str++; s[1] = '\0'; key_pressed(s); } } else /* last resort: */ /* use hardcoded entries. Note: These can be overridden by assigning them "None" before. */ switch (str[0]) { case '\014': cmd_ResetHints(); /* complicated to save */ refresh_screen(); break; case 27: /* abort cmd */ cmd_CancelSelection(); show_message(TXT_ABORTED); return; } if (str[0]) { const char *rulechange = "FGHKSIMOBCR"; const char *rulename[] = { "Free Cell", "Gypsy", "Seahaven", "Klondike", "Spider", "id", "mc", "mo", "bd", "Canfield", "rc" }; const char *s; if ((s = strchr(rulechange, str[0]))) { change_rules(rulename[s-rulechange]); return; } } } xpat2-1.07/src/loadsave.c100644 146 144 23070 6714121455 13737 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module loadsave.c */ /* */ /* Functions for game logging and loading/saving games. */ /* written by Heiko Eissfeldt and Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* 24-Feb-1993: First release (0.1) */ /* 19-Mar-1993: POSIX.1 now optional */ /* 24-Mar-1993: changed filename "log" to "xpat.log" */ /* */ /* */ /*****************************************************************************/ #include "xpatgame.h" #define NARGS 32 /* twice the size of xpat 1 */ #define BUFSIZE 32 /* at least length of longest shortname + 1 */ #define MAGIC1 0x7419 /* magic of xpat version 1 */ #define MAGIC2 0x741a /* magic of xpat version 2 */ #include #include "version.h" #include #ifndef _POSIX_NAME_MAX # undef _POSIX_SOURCE /* seems that we have no POSIX system! */ # define NAME_MAX 14 /* every UNIX should have at least this */ #else # include /* for pathconf() */ # include /* for uname() */ #endif /* code to switch between real and effective user id */ /* we must use the real user id when saving files */ void switch_uid(int to_real) { #ifdef _POSIX_SAVED_IDS static int uid_state = -1; /* -1 = unknown, 1 = real, 0 = effective */ static uid_t real_uid, effective_uid; if (uid_state < 0) { real_uid = getuid(); effective_uid = geteuid(); uid_state = 0; } if (to_real != uid_state && real_uid != effective_uid) { setuid(to_real ? real_uid : effective_uid); uid_state = to_real; } #endif } static void read_err(const char *msg) { if (game.graphic) { show_message("%s %s", TXT_LOAD_ERR_BASIC, msg); cmd_LeavePat(); /* make it better! */ } fprintf(stderr, "%s %s\n", TXT_LOAD_ERR_BASIC, msg); exit(EXIT_FAILURE); } static void portable_to_internal(long *args, unsigned char *p, int num) { do { int j; *args = 0; for (j = 0; j < 4; ++j) *args += (long)p[3-j] << (j << 3); ++args; p += 4; } while (--num); } static void internal_to_portable(unsigned char *p, long *args, int num) { do { int j; memset(p, (*args < 0 ? -1 : 0), 4); for (j = 0; j < 4; ++j) p[3-j] = (unsigned char)(*args >> (j << 3)); ++args; p += 4; } while (--num); } void load_game(const char *file) { FILE *fp; char buffer[BUFSIZE]; long args[NARGS]; int i; unsigned char p[NARGS * 4]; if (!(fp = fopen(file, "rb"))) read_err(TXT_LOAD_ERR_OPEN); if (fread(buffer, 1, BUFSIZE, fp) != BUFSIZE || fread(p, 4, 16, fp) != 16) read_err(TXT_LOAD_ERR_HEADER); portable_to_internal(args, p, 16); switch ((int)args[15]) { case MAGIC1: /* read xpat version 1 game.file */ for (i = 16; i < NARGS; ++i) /* no further game.*/ args[i] = -1; break; case MAGIC2: /* must read extended header */ if (fread(p, 4, NARGS-16, fp) != NARGS-16) read_err(TXT_LOAD_ERR_HEADER); portable_to_internal(args+16, p, NARGS-16); break; default: read_err(TXT_LOAD_ERR_BADMAGIC); } new_rules(buffer, args[0], args[1], args[2], args[3], args[4], args[18], args[19], args[5], args[6], args[7]); if (game.numalloc < args[9]) { if (game.numalloc) free(game.move); memo_alloc((args[9]|15)+1); } newgame(args[8]); game.stored_moves = args[9]; game.finished = args[12]; for (i = 0; i < game.stored_moves; i += 16) { if (fread(p, 4, 16, fp) != 16) { read_err(TXT_LOAD_ERR_MOVES); break; } portable_to_internal((long *)(game.move+i), p, 16); } fclose(fp); if (args[15] == MAGIC1) /* convert moves to version 2 */ for (i = 0; i < game.stored_moves; ++i) if ((game.move[i] & SPECIAL_MASK) != NEW_CARDS_MOVE) /* reset MOVE_TURNED flag in the upper part */ game.move[i] &= 0x7fffffffUL; ++game.savecount; game.bookmark = args[10]; /* preset bookmark to load point */ if (game.graphic) { graphics_control(Disable); cmd_GotoBookmark(); graphics_control(Enable); refresh_screen(); /* draw complete screen */ } else cmd_GotoBookmark(); /* graphics disabled anyway */ assert(game.move_ptr == args[10]); assert(game.counter[1] == args[13]); /* same for 2..4 */ game.cheat_count = args[11]; } void save_game(const char *file) { FILE *fp; char buffer[32]; char filename[64]; /* must be 15 at least */ long args[24]; int i; unsigned char p[4 * 24]; if (!file) { /* compute the filename to use */ long name_max; #ifdef NAME_MAX name_max = NAME_MAX; #else if ((name_max = pathconf(".", _PC_NAME_MAX)) == -1L) name_max = _POSIX_NAME_MAX; /* error => use 14 chars */ #endif if (name_max >= sizeof(filename)) name_max = sizeof(filename) - 1; /* copy characters to the filename string */ /* POSIX allows digits, letters, '.', '-', '_' */ { char *wr; const char *rd; rd = rules.shortname; for (wr = filename; *rd && wr - filename <= name_max - 10; ++rd) if (isalnum(0xff & *rd) || *rd == '-') *wr++ = *rd; sprintf(wr, ".%09ld", game.seed); } file = filename; } switch_uid(1); /* saves in users home directory */ if (!(fp = fopen(file, "wb"))) { show_message("%s %s", TXT_SAVE_ERR_BASIC, TXT_SAVE_ERR_OPEN); goto werr2; } strcpy(buffer, rules.shortname); for (i = 0; i < NARGS; ++i) args[i] = -1; if (rules.customized & CUSTOM_DECKS) args[0] = rules.numdecks; if (rules.customized & CUSTOM_SLOTS) args[1] = rules.numslots; if (rules.customized & CUSTOM_FACEUP) args[2] = rules.faceup; if (rules.customized & CUSTOM_FACEDOWN) args[3] = rules.facedown; if (rules.customized & CUSTOM_JOKERS) args[4] = rules.numjokers; if (rules.customized & CUSTOM_TMPS) args[18] = rules.numtmps; if (rules.customized & CUSTOM_PARAM0) args[19] = rules.param[0]; if (rules.customized & CUSTOM_PARAM1) args[5] = rules.param[1]; if (rules.customized & CUSTOM_PARAM2) args[6] = rules.param[2]; if (rules.customized & CUSTOM_PARAM3) args[7] = rules.param[3]; args[ 8] = game.seed; args[ 9] = game.stored_moves; args[10] = game.move_ptr; args[11] = game.cheat_count; args[12] = game.finished; args[13] = game.counter[1]; args[14] = game.counter[2]; args[15] = MAGIC2; args[16] = game.counter[3]; args[17] = game.counter[0]; internal_to_portable(p, args, NARGS); if (fwrite(buffer, 1, BUFSIZE, fp) != BUFSIZE || fwrite(p, 4, NARGS, fp) != NARGS) { show_message("%s %s", TXT_SAVE_ERR_BASIC, TXT_SAVE_ERR_HEADER); goto werr; } for (i = 0; i < game.stored_moves; i += 16) { internal_to_portable(p, (long *)(game.move+i), 16); if (fwrite(p, 4, 16, fp) != 16) { show_message("%s %s", TXT_SAVE_ERR_BASIC, TXT_SAVE_ERR_MOVES); goto werr; } } fclose(fp); switch_uid(0); show_message(TXT_SAVE_OK); play_sound("ok"); /* found no sound file for this. maybe later */ return; werr: fclose(fp); werr2: switch_uid(0); play_sound("cannotsave"); } void write_log_file(void) { time_t t; FILE *fp; #ifdef _POSIX_SOURCE struct utsname utsname; const char *username; #endif t = time((time_t *)0); if (!(fp = fopen(SCOREFILE, "a"))) { fprintf(stderr, "xpat: warning: cannot write to log file " SCOREFILE "\n"); return; /* cannot write to file */ } fprintf(fp, "\n%s", ctime(&t)); #ifdef _POSIX_SOURCE if ((username = getlogin()) != NULL /* cuserid has been removed in the 1990 POSIX revision. */ /* Thus we make the following code optional (default: use it) */ #ifndef NO_CUSERID /* if started directly under a window-manager menu, getlogin() returns NULL, so get username with cuserid() (ThMO) */ || (username = cuserid(NULL)) != NULL #endif ) fprintf(fp, " \"%s\"", username); else #endif fprintf(fp, " someone"); #ifdef _POSIX_SOURCE if (uname(&utsname) >= 0) fprintf(fp, " on %s\n running %s Version %s (%s)\n ", utsname.nodename, utsname.sysname, utsname.release, utsname.version); #endif fprintf(fp, " finished patience %s\n", rules.shortname); if (rules.customized & CUSTOM_DECKS) fprintf(fp, " with %d decks\n", rules.numdecks); if (rules.customized & CUSTOM_SLOTS) fprintf(fp, " with %d slots\n", rules.numslots); if (rules.customized & CUSTOM_TMPS) fprintf(fp, " with %d tmps\n", rules.numtmps); if (rules.customized & CUSTOM_FACEUP) fprintf(fp, " with %d cards faceup\n", rules.faceup); if (rules.customized & CUSTOM_FACEDOWN) fprintf(fp, " with %d cards facedown\n", rules.facedown); if (rules.customized & CUSTOM_JOKERS) fprintf(fp, " with %d jokers\n", rules.numjokers); if (rules.customized & CUSTOM_PARAM0) fprintf(fp, " param0 = %d\n", rules.param[0]); if (rules.customized & CUSTOM_PARAM1) fprintf(fp, " param1 = %d\n", rules.param[1]); if (rules.customized & CUSTOM_PARAM2) fprintf(fp, " param2 = %d\n", rules.param[2]); if (rules.customized & CUSTOM_PARAM3) fprintf(fp, " param3 = %d\n", rules.param[3]); if (game.counter[0]) fprintf(fp, " counter0 = %d\n", game.counter[0]); if (game.counter[1]) fprintf(fp, " counter1 = %d\n", game.counter[1]); if (game.counter[2]) fprintf(fp, " counter2 = %d\n", game.counter[2]); if (game.counter[3]) fprintf(fp, " counter3 = %d\n", game.counter[3]); fprintf(fp, " using xpat2 version %s, game seed %9ld with %d moves\n", VERSION, game.seed, game.n_moves); if (game.cheat_count) fprintf(fp, " and cheatet! (count = %d)\n", game.cheat_count); else fprintf(fp, " in a truly noble manner!\n"); fclose(fp); } xpat2-1.07/src/logo.bm100644 146 144 5320 5461331007 13225 0ustar mbimathopt/* logo for card backs */ /* any size logo can be handled. */ #define logo_width 64 #define logo_height 64 static char logo_bits[] = { 0x77,0xd5,0xd7,0xdd,0x77,0xd5,0xd7,0xdd,0xbb,0xea,0xae,0xbb,0xbb,0xea,0xae, 0xbb,0x5d,0x75,0x5d,0x77,0x5d,0x75,0x5d,0x77,0xee,0xba,0xba,0xee,0xae,0xba, 0xba,0xee,0x77,0x5d,0x75,0xdd,0x77,0x5d,0x75,0xdd,0xbb,0xae,0xea,0xba,0xbb, 0xae,0xea,0xba,0x5d,0x57,0xd5,0x75,0x5d,0x57,0xd5,0x75,0xae,0xab,0xaa,0xeb, 0xae,0xab,0xaa,0xeb,0xd7,0x55,0x55,0xd7,0xd7,0x51,0x55,0xd7,0xeb,0xae,0xaa, 0xae,0xeb,0xa2,0xaa,0xae,0x75,0x5d,0x55,0x5d,0x75,0x44,0x15,0x5d,0xba,0xbb, 0xea,0xba,0xba,0x88,0x8a,0xba,0x5d,0x77,0x75,0x75,0x1d,0x11,0x45,0x75,0xee, 0xee,0xba,0xea,0x2e,0x22,0xa2,0xea,0xd7,0xdd,0x5d,0xd5,0x57,0x44,0x10,0xd5, 0xab,0xbb,0xef,0xaa,0xab,0x88,0x88,0xaa,0x57,0x77,0x77,0xd5,0x57,0x11,0x45, 0xd5,0xae,0xee,0xba,0xea,0xae,0x22,0xa2,0xea,0x5d,0xdd,0x5d,0x75,0x5d,0x45, 0x10,0x75,0xba,0xba,0xef,0xba,0xba,0x8a,0x88,0xba,0x75,0x75,0x77,0x5d,0x75, 0x15,0x45,0x5d,0xea,0xea,0xba,0xae,0xea,0x2a,0xa2,0xae,0xdd,0xd5,0x5d,0x77, 0xdd,0x55,0x50,0x77,0xae,0xab,0xaf,0xeb,0xae,0xab,0xa8,0xeb,0xd7,0x55,0x57, 0xd7,0xd7,0x55,0x55,0xd7,0xeb,0xaa,0xaa,0xae,0xeb,0xaa,0xaa,0xae,0x75,0x57, 0x55,0x5d,0x75,0x57,0x55,0x5d,0xba,0xae,0xea,0xba,0xba,0xae,0xaa,0xba,0xdd, 0x5d,0x75,0x75,0xdd,0x5d,0x75,0x75,0xae,0xbb,0xba,0xea,0xae,0xbb,0xba,0xea, 0x77,0x77,0x5d,0xd5,0x77,0x77,0x5d,0xd5,0xeb,0xee,0xee,0xaa,0xeb,0xee,0xae, 0xaa,0xd7,0xdd,0x77,0xd5,0xd7,0xdd,0x77,0xd5,0xae,0xbb,0xbb,0xea,0xae,0xbb, 0xbb,0xea,0x5d,0x77,0x5d,0x75,0x5d,0x77,0x5d,0x75,0xba,0xee,0xee,0xba,0xba, 0xee,0xae,0xba,0x75,0xdd,0x77,0x5d,0x75,0xdd,0x77,0x5d,0xea,0xba,0xbb,0xae, 0xea,0xba,0xbb,0xae,0xd5,0x75,0x5d,0x57,0xd5,0x75,0x5d,0x57,0xaa,0xeb,0xae, 0xab,0xaa,0xeb,0xae,0xab,0x55,0xd7,0xd7,0x55,0x55,0xd7,0xd7,0x55,0xaa,0xae, 0xeb,0xae,0xaa,0xae,0xeb,0xae,0x55,0x5d,0x75,0x5d,0x55,0x5d,0x75,0x5d,0xea, 0xba,0xba,0xbb,0xea,0xba,0xba,0xbb,0x75,0x75,0x5d,0x77,0x75,0x75,0x5d,0x77, 0xba,0xea,0xee,0xee,0xba,0xea,0xee,0xee,0x5d,0xd5,0xd7,0xdd,0x5d,0xd5,0xd7, 0xdd,0xef,0xaa,0xab,0xbb,0xef,0xaa,0xab,0xbb,0x77,0xd5,0x57,0x77,0x77,0xd5, 0x57,0x77,0xba,0xea,0xae,0xee,0xba,0xea,0xae,0xee,0x5d,0x75,0x5d,0xdd,0x5d, 0x75,0x5d,0xdd,0xef,0xba,0xba,0xba,0xef,0xba,0xba,0xba,0x77,0x5d,0x75,0x75, 0x77,0x5d,0x75,0x75,0xba,0xae,0xea,0xea,0xba,0xae,0xea,0xea,0x5d,0x77,0xdd, 0xd5,0x5d,0x77,0xdd,0xd5,0xaf,0xeb,0xae,0xab,0xaf,0xeb,0xae,0xab,0x57,0xd7, 0xd7,0x55,0x57,0xd7,0xd7,0x55,0xaa,0xae,0xeb,0xaa,0xaa,0xae,0xeb,0xaa,0x55, 0x5d,0x75,0x57,0x55,0x5d,0x75,0x57,0xaa,0xba,0xba,0xae,0xaa,0xba,0xba,0xae, 0x75,0x75,0xdd,0x5d,0x55,0x75,0xdd,0x5d,0xba,0xea,0xae,0xbb,0xba,0xea,0xae, 0xbb,0x5d,0xd5,0x77,0x77,0x5d,0xd5,0x77,0x77,0xae,0xaa,0xeb,0xee,0xae,0xaa, 0xeb,0xee}; xpat2-1.07/src/pat.bm100644 146 144 6310 5461331010 13043 0ustar mbimathopt#define pat_width 64 #define pat_height 64 static char pat_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xe3, 0xff, 0xc7, 0xff, 0x07, 0x00, 0x58, 0x7a, 0x55, 0x92, 0x28, 0x00, 0x08, 0x00, 0xe8, 0xaf, 0xd5, 0xbc, 0xab, 0x00, 0x0a, 0x00, 0xb8, 0xe5, 0xb7, 0xbe, 0xae, 0x00, 0x0a, 0x00, 0x28, 0x0d, 0x94, 0x13, 0x29, 0x00, 0x08, 0x00, 0xf8, 0xff, 0xf7, 0xff, 0x2f, 0x00, 0x08, 0x00, 0x08, 0x00, 0xd4, 0x84, 0xa8, 0x01, 0x0b, 0x00, 0x28, 0x00, 0xd5, 0xe2, 0xad, 0x00, 0x0b, 0x00, 0x68, 0x40, 0x15, 0x75, 0xaa, 0x01, 0x0a, 0x00, 0x28, 0x00, 0x54, 0x08, 0x2a, 0x00, 0x08, 0x00, 0xf8, 0xff, 0xf7, 0xff, 0x2f, 0x10, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x28, 0x38, 0x08, 0x00, 0xa8, 0x80, 0x54, 0x00, 0x2a, 0x10, 0x08, 0x00, 0xa8, 0x80, 0xd4, 0x00, 0x29, 0x38, 0x08, 0x00, 0x28, 0x00, 0x14, 0x00, 0x28, 0x54, 0x08, 0x00, 0xf8, 0xff, 0xf7, 0xff, 0x2f, 0x30, 0x08, 0x00, 0x08, 0x00, 0x54, 0x00, 0x28, 0x20, 0x08, 0x00, 0x48, 0x00, 0x15, 0x00, 0x29, 0x00, 0x08, 0x00, 0x28, 0x00, 0x95, 0x00, 0xab, 0x01, 0x0a, 0x00, 0x08, 0x00, 0xd4, 0x00, 0xa8, 0x01, 0x0b, 0x00, 0xf8, 0xff, 0xf7, 0xff, 0xaf, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x14, 0x00, 0x28, 0x00, 0x08, 0x00, 0xc8, 0xfb, 0x54, 0x00, 0x2a, 0x00, 0x08, 0x00, 0xa8, 0xf6, 0x94, 0x00, 0xab, 0x00, 0x0a, 0x00, 0xa8, 0x8d, 0x14, 0x00, 0xa9, 0x00, 0x0a, 0x00, 0xf8, 0xff, 0xf7, 0xff, 0x2f, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0xc8, 0xff, 0x07, 0x00, 0x48, 0x80, 0xd5, 0xff, 0x09, 0x00, 0x00, 0x00, 0x28, 0x00, 0xd4, 0x00, 0x09, 0x00, 0x00, 0x00, 0x08, 0x80, 0x95, 0x18, 0x09, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x97, 0x2c, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x94, 0x3a, 0x09, 0x00, 0x00, 0x00, 0x28, 0x00, 0x94, 0x2c, 0x09, 0x00, 0x00, 0x00, 0x68, 0x00, 0x94, 0x10, 0x09, 0x00, 0x00, 0x00, 0x68, 0x00, 0x94, 0x3c, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x94, 0x38, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x94, 0x7e, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0xf4, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x08, 0x00, 0x94, 0x7e, 0x09, 0x00, 0x00, 0x00, 0x08, 0x04, 0x94, 0x1c, 0x09, 0x00, 0x00, 0x00, 0x08, 0x04, 0x94, 0x3c, 0x09, 0x00, 0x00, 0x00, 0x08, 0x0e, 0x94, 0x08, 0x09, 0x00, 0x00, 0x00, 0x08, 0x0e, 0x94, 0x34, 0x09, 0x00, 0x00, 0x00, 0x08, 0x1f, 0x94, 0x5c, 0x09, 0x00, 0x00, 0x00, 0x08, 0x1f, 0x94, 0x34, 0x09, 0x00, 0x00, 0x00, 0x08, 0x15, 0x94, 0x18, 0x09, 0x00, 0x00, 0x00, 0x08, 0x0e, 0x94, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x08, 0x00, 0x94, 0xff, 0x0b, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe4, 0xff, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; xpat2-1.07/src/r.bm100644 146 144 14060 5546012055 12552 0ustar mbimathopt#define r_width 54 #define r_height 140 static char r_bits[] = { 0xc0, 0x0f, 0xc0, 0xff, 0xf0, 0xf0, 0x0f, 0xc0, 0x0f, 0xc0, 0xff, 0xf0, 0xf0, 0x0f, 0xc0, 0x0f, 0xf0, 0xff, 0xf3, 0xfc, 0x3f, 0xc0, 0x0f, 0xf0, 0xff, 0xf3, 0xfc, 0x3f, 0xc0, 0x0f, 0xfc, 0xc0, 0xff, 0x3c, 0x3c, 0xc0, 0x0f, 0xfc, 0xc0, 0xff, 0x3c, 0x3c, 0xf0, 0x3c, 0x3c, 0x00, 0xf3, 0x3c, 0x3c, 0xf0, 0x3c, 0x3c, 0x00, 0xf3, 0x3c, 0x3c, 0xf0, 0x3c, 0x3c, 0x00, 0xf0, 0x3c, 0x3c, 0xf0, 0x3c, 0x3c, 0x00, 0xf0, 0x3c, 0x3c, 0xf0, 0x3c, 0x3c, 0xff, 0xf0, 0x3c, 0x3c, 0xf0, 0x3c, 0x3c, 0xff, 0xf0, 0x3c, 0x3c, 0xf0, 0x3c, 0xfc, 0xff, 0xf3, 0x3c, 0x3c, 0xf0, 0x3c, 0xfc, 0xff, 0xf3, 0x3c, 0x3c, 0x3c, 0xf0, 0xfc, 0xc0, 0xff, 0x3c, 0x3c, 0x3c, 0xf0, 0xfc, 0xc0, 0xff, 0x3c, 0x3c, 0xfc, 0xff, 0x3c, 0x00, 0xff, 0x3c, 0x3c, 0xfc, 0xff, 0x3c, 0x00, 0xff, 0x3c, 0x3c, 0xfc, 0xff, 0x3c, 0x00, 0xff, 0x3c, 0x3c, 0xfc, 0xff, 0x3c, 0x00, 0xff, 0x3c, 0x3c, 0x3c, 0xf0, 0x3c, 0x00, 0xff, 0x3c, 0x3c, 0x3c, 0xf0, 0x3c, 0x00, 0xff, 0x3c, 0x3c, 0x0f, 0xc0, 0xff, 0xc0, 0xff, 0x3c, 0x3c, 0x0f, 0xc0, 0xff, 0xc0, 0xff, 0x3c, 0x3c, 0x0f, 0xc0, 0xf3, 0xff, 0xf3, 0xfc, 0x3f, 0x0f, 0xc0, 0xf3, 0xff, 0xf3, 0xfc, 0x3f, 0x0f, 0xc0, 0xc3, 0xff, 0xf0, 0xf0, 0x0f, 0x0f, 0xc0, 0xc3, 0xff, 0xf0, 0xf0, 0x0f, 0xf0, 0x3f, 0xfc, 0xff, 0x0f, 0xc0, 0x3f, 0xf0, 0x3f, 0xfc, 0xff, 0x0f, 0xc0, 0x3f, 0xfc, 0xff, 0xfc, 0xff, 0x0f, 0xc0, 0x3f, 0xfc, 0xff, 0xfc, 0xff, 0x0f, 0xc0, 0x3f, 0x3f, 0xf0, 0x3f, 0x00, 0x0f, 0x00, 0x0f, 0x3f, 0xf0, 0x3f, 0x00, 0x0f, 0x00, 0x0f, 0x0f, 0xc0, 0x03, 0xc0, 0x03, 0x00, 0x0f, 0x0f, 0xc0, 0x03, 0xc0, 0x03, 0x00, 0x0f, 0x00, 0xc0, 0x03, 0xc0, 0x03, 0x00, 0x0f, 0x00, 0xc0, 0x03, 0xc0, 0x03, 0x00, 0x0f, 0x00, 0xf0, 0x03, 0xf0, 0x00, 0x00, 0x0f, 0x00, 0xf0, 0x03, 0xf0, 0x00, 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0x00, 0x0f, 0x00, 0x3f, 0x00, 0x3c, 0x00, 0x00, 0x0f, 0x00, 0x3f, 0x00, 0x3c, 0x00, 0x00, 0x0f, 0xc0, 0x0f, 0x00, 0x3c, 0x00, 0x00, 0x0f, 0xc0, 0x0f, 0x00, 0x3c, 0x00, 0x00, 0x0f, 0xf0, 0x03, 0x00, 0x3c, 0xf0, 0x00, 0x0f, 0xf0, 0x03, 0x00, 0x3c, 0xf0, 0x00, 0x0f, 0xfc, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x0f, 0xfc, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x0f, 0x3f, 0xc0, 0x03, 0x0f, 0xf0, 0xc3, 0x0f, 0x3f, 0xc0, 0x03, 0x0f, 0xf0, 0xc3, 0x0f, 0xff, 0xff, 0x03, 0x0f, 0xc0, 0xff, 0x03, 0xff, 0xff, 0x03, 0x0f, 0xc0, 0xff, 0x03, 0xff, 0xff, 0x03, 0x0f, 0x00, 0xff, 0x00, 0xff, 0xff, 0x03, 0x0f, 0x00, 0xff, 0x00, 0xff, 0xff, 0xc3, 0xff, 0x00, 0xfc, 0x00, 0xff, 0xff, 0xc3, 0xff, 0x00, 0xfc, 0x00, 0xff, 0xff, 0xf3, 0xff, 0x03, 0xff, 0x03, 0xff, 0xff, 0xf3, 0xff, 0x03, 0xff, 0x03, 0x0f, 0xf0, 0xff, 0xc0, 0xcf, 0xcf, 0x0f, 0x0f, 0xf0, 0xff, 0xc0, 0xcf, 0xcf, 0x0f, 0x00, 0xfc, 0x3c, 0x00, 0xcf, 0x03, 0x0f, 0x00, 0xfc, 0x3c, 0x00, 0xcf, 0x03, 0x0f, 0x00, 0x3f, 0xfc, 0xc0, 0xcf, 0x03, 0x0f, 0x00, 0x3f, 0xfc, 0xc0, 0xcf, 0x03, 0x0f, 0xc0, 0x3f, 0xf0, 0xff, 0xc3, 0x03, 0x0f, 0xc0, 0x3f, 0xf0, 0xff, 0xc3, 0x03, 0x0f, 0xf0, 0xff, 0xc0, 0xff, 0xc0, 0x03, 0x0f, 0xf0, 0xff, 0xc0, 0xff, 0xc0, 0x03, 0x0f, 0xc0, 0xf0, 0xf3, 0xff, 0xc3, 0x03, 0x0f, 0xc0, 0xf0, 0xf3, 0xff, 0xc3, 0x03, 0x0f, 0x00, 0xc0, 0xff, 0xc0, 0xff, 0x3f, 0x0f, 0x00, 0xc0, 0xff, 0xc0, 0xff, 0x3f, 0x0f, 0x00, 0xc0, 0x3f, 0x00, 0xff, 0xff, 0x0f, 0x00, 0xc0, 0x3f, 0x00, 0xff, 0xff, 0x0f, 0x0c, 0xc0, 0x3f, 0x00, 0xcf, 0xf3, 0x0f, 0x0c, 0xc0, 0x3f, 0x00, 0xcf, 0xf3, 0x0f, 0x3f, 0xf0, 0xff, 0xc0, 0xcf, 0xcf, 0x0f, 0x3f, 0xf0, 0xff, 0xc0, 0xcf, 0xcf, 0x0f, 0xfc, 0xff, 0xf0, 0xff, 0x03, 0xff, 0x3f, 0xfc, 0xff, 0xf0, 0xff, 0x03, 0xff, 0x3f, 0xf0, 0x3f, 0xc0, 0xff, 0x00, 0xfc, 0x0c, 0xf0, 0x3f, 0xc0, 0xff, 0x00, 0xfc, 0x0c, 0x00, 0xfc, 0xc0, 0xff, 0xf0, 0xcf, 0x3f, 0x00, 0xfc, 0xc0, 0xff, 0xf0, 0xcf, 0x3f, 0x00, 0xff, 0xf0, 0xff, 0xf3, 0xcf, 0x3f, 0x00, 0xff, 0xf0, 0xff, 0xf3, 0xcf, 0x3f, 0x00, 0xff, 0xfc, 0xc0, 0xcf, 0xc3, 0x0f, 0x00, 0xff, 0xfc, 0xc0, 0xcf, 0xc3, 0x0f, 0xc0, 0xf3, 0x3c, 0x00, 0xcf, 0xf3, 0x03, 0xc0, 0xf3, 0x3c, 0x00, 0xcf, 0xf3, 0x03, 0xc0, 0xf3, 0x3c, 0x00, 0xcf, 0xff, 0x00, 0xc0, 0xf3, 0x3c, 0x00, 0xcf, 0xff, 0x00, 0xf0, 0xf0, 0x3c, 0x00, 0xcf, 0x3f, 0x00, 0xf0, 0xf0, 0x3c, 0x00, 0xcf, 0x3f, 0x00, 0xf0, 0xf0, 0xfc, 0xc0, 0xcf, 0x3f, 0x00, 0xf0, 0xf0, 0xfc, 0xc0, 0xcf, 0x3f, 0x00, 0x3c, 0xf0, 0xf0, 0xff, 0xcf, 0xff, 0x00, 0x3c, 0xf0, 0xf0, 0xff, 0xcf, 0xff, 0x00, 0x3c, 0xf0, 0xc0, 0x3f, 0xcf, 0xf3, 0x00, 0x3c, 0xf0, 0xc0, 0x3f, 0xcf, 0xf3, 0x00, 0xff, 0xff, 0x03, 0x00, 0xcf, 0xf3, 0x03, 0xff, 0xff, 0x03, 0x00, 0xcf, 0xf3, 0x03, 0xff, 0xff, 0x33, 0x00, 0xcf, 0xc3, 0x03, 0xff, 0xff, 0x33, 0x00, 0xcf, 0xc3, 0x03, 0x00, 0xf0, 0xfc, 0xc0, 0xcf, 0xc3, 0x0f, 0x00, 0xf0, 0xfc, 0xc0, 0xcf, 0xc3, 0x0f, 0x00, 0xfc, 0xf3, 0xff, 0xf3, 0xcf, 0x3f, 0x00, 0xfc, 0xf3, 0xff, 0xf3, 0xcf, 0x3f, 0x00, 0xfc, 0xc3, 0xff, 0xf0, 0xcf, 0x3f, 0x00, 0xfc, 0xc3, 0xff, 0xf0, 0xcf, 0x3f, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00}; xpat2-1.07/src/r_Delight.c100644 146 144 6113 6711644167 14030 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module r_Delight.c */ /* */ /* Characteristics of the ``Idiot's Delight'' rules */ /* written by Michael Bischoff (mbi@mo.math.nat.tu-bs.de) */ /* 31-Mar-1994 */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "xpatgame.h" #define ACE_HIGHEST static int ID_won(void) { if (!EMPTY(IDECK)) return 0; /* winning condition: */ /* there must be exactly 4 cards left on the slots! */ if (INDEX_OF_LAST_CARD(LAST_SLOT) - INDEX_OF_FIRST_CARD(FIRST_SLOT) != 3) return 0; return 1; } static int ID_move_valid(Cardindex src, Pileindex dstpile) { int i, thiscard; Pileindex srcpile; srcpile = getpile(src); if (game.piletype[srcpile] != Slot) return 0; if (game.piletype[dstpile] == Slot) return EMPTY(dstpile); if (game.piletype[dstpile] != Stack) return 0; /* slot to stack: must exist card of greater rank */ thiscard = game.cards[src]; for (i = FIRST_SLOT; i <= LAST_SLOT; ++i) { int thatcard; thatcard = game.cards[INDEX_OF_LAST_CARD(i)]; if (SUIT(thatcard) == SUIT(thiscard) && #ifndef ACE_HIGHEST RANK(thatcard) > RANK(thiscard) #else /* wrap order */ (12+RANK(thatcard))%13 > (12+RANK(thiscard))%13 #endif ) return 1; } return 0; } #include "xpatgeo.h" static int ID_Layout(void) { int i, x = 0; struct pilegeometry *p = geo.pg; p = geo.pg + IDECK; p->x = (x += geo.dx); p->y = geo.dy; /* want dest. for hint arrows */ p = geo.pg+FIRST_STACK; p->x = x; p->y = geo.dy + geo.ch + geo.dy; p = geo.pg+FIRST_SLOT; for (i = 0; i < rules.numslots; ++i) { x += geo.cw + geo.dx; p->x = x; p->y = geo.dy; p->h = geo.h - geo.dy + BOTTOM_INC; ++p; } return DELIGHT_MAGIC; } struct rules IdiotsDelight_rules = { "Idiot's Delight", /* shortname */ NULL, /* longname */ "id", /* abbrev */ 2, /* layout_hints */ 0, /* variant (DECK_SOURCE) */ 0, /* customizable */ 0, /* customized */ 52, /* numcards */ 1, /* numstacks */ 4, /* numslots */ 0, /* numtmps */ 1, /* numdecks */ 13, /* cards_per_color */ 0, /* numjokers */ {0, 0, 0, 0},/* param[0], param[1], param[2], param[3] */ 0, /* facedown */ 1, /* faceup */ 0, /* newgame_bits */ NULL, /* new_game */ ID_won, /* game_won */ NULL, /* new_cards */ ES_ALL|US_NONE|MG_NONE|DC_ALWAYS|ST_ONE, /* move_bits */ NULL, /* deal_cards */ NULL, /* undeal_cards */ NULL, /* stackable */ ID_move_valid,/* movevalid */ NULL, /* valid */ NULL, /* relaxed_valid */ NULL, /* good_hint */ NULL, /* automove */ NULL, /* score */ 0, /* maxscore */ {0, 0, 0, 0}, /* paramstring blocks */ 0, /* used */ NULL, /* initfunc */ NULL, /* local keyboard bindings */ NULL, ID_Layout }; xpat2-1.07/src/r_FreeCell.c100644 146 144 1026 5642360326 14121 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module r_FreeCell.c */ /* */ /* Characteristics of the ``FreeCell'' rules */ /* written by Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "xpatgame.h" /* this one has been moved to r_Seahaven.c */ xpat2-1.07/src/r_Gypsy.c100644 146 144 4201 6713363266 13557 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module r_Gypsy.c */ /* */ /* Characteristics of the ``Gypsy'' rules */ /* written by Heiko Eissfeldt and Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "xpatgame.h" static int Gypsy_score(void) { Pileindex i; Cardindex j; int score; score = 5 * game.ind[rules.numstacks]; /* 2 points for each card on stack */ /* offset -4 to have 100 points total */ for (i = 0; i < rules.numstacks; ++i) if (CARDS_ON_PILE(i) == 13) score += 60; for (i = 0; i < rules.numslots; ++i) for (j = game.ind[XPATSLOT(i)]; j < INDEX_OF_LAST_CARD(XPATSLOT(i)); ++j) if (game.visible[j] && in_strong_sequence(game.cards[j+1], game.cards[j])) score += 2; return score >= 0 ? score : 0; } struct rules Gypsy_rules = { /* Heiko's & Michael's rules */ "Gypsy", /* shortname */ "Gypsy - Heiko's and Michael's patience",/* longname */ NULL, /* abbrev */ 0, /* layout_hints */ 0, /* variant */ CUSTOM_STD, /* customizable */ 0, /* customized */ 104, /* numcards */ 8, /* numstacks */ 8, /* numslots */ 0, /* numtmps */ 2, /* numdecks */ 13, /* cards_per_color */ 0, /* numjokers */ {0, 0, 0, 0},/* param[1], param[2], param[3] */ 2, /* facedown */ 1, /* faceup */ 0, /* newgame_bits */ NULL, /* new_game */ NULL, /* game_won */ NULL, /* new_cards */ ES_ALL|US_RA|MG_RA|DC_ALWAYS|ST_ONE|STACK_SOURCE, /* move_bits */ NULL, /* deal_cards */ NULL, /* undeal_cards */ NULL, /* stackable */ NULL, /* movevalid */ NULL, /* valid */ NULL, /* relaxed_valid */ std_good_hint,/* good_hint */ NULL, /* automove */ Gypsy_score,/* score */ 1000, /* maxscore */ {0, 0, 0, 0}, /* paramstring blocks */ 0, /* used */ NULL, /* initfunc */ NULL, /* local keyboard bindings */ }; xpat2-1.07/src/r_Klondike.c100644 146 144 4006 5642342642 14202 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module r_Klondike.c */ /* */ /* Characteristics of the ``Klondike'' rules */ /* written by Michael Bischoff (mbi@mo.math.nat.tu-bs.de) */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "xpatgame.h" static void Klondike_newgame(void) { int i; /* specific part: */ for (i = 0; i < rules.numslots; ++i) { game.ind[rules.numstacks+i+1] = game.ind[rules.numstacks+i] + i + 1; game.visible[game.ind[rules.numstacks+i+1]-1] = 1; /* card is turned */ } game.ind[IDECK] = game.ind[VDECK]; } static void Klondike_init(void) { if (rules.param[0]) rules.move_bits |= STACK_SOURCE; } struct rules Klondike_rules = { "Klondike", /* shortname */ NULL, /* longname */ NULL, /* abbrev */ 0, /* layout_hints */ DECK_SOURCE|KLONDIKE_DEAL,/* variant */ CUSTOM_PARAM0|CUSTOM_PARAM1|CUSTOM_PARAM2,/* customizable */ 0, /* customized */ 52, /* numcards */ 4, /* numstacks */ 7, /* numslots */ 0, /* numtmps */ 1, /* numdecks */ 13, /* cards_per_color */ 0, /* numjokers */ {0, 3, 1, 0},/* param[0], param[1], param[2], param[3] */ 0, /* facedown */ 1, /* faceup */ 0, /* newgame_bits */ Klondike_newgame,/* new_game */ NULL, /* game_won */ NULL, /* new_cards */ ES_KINGS|US_RA|MG_RA|ST_ONE|DC_ALWAYS, /* move_bits */ NULL, /* deal_cards */ NULL, /* undeal_cards */ NULL, /* stackable */ NULL, /* movevalid */ NULL, /* valid */ NULL, /* relaxed_valid */ std_good_hint,/* good_hint */ NULL, /* automove */ NULL, /* score */ 0, /* maxscore */ {0, TXTI_FLIP, 0, 0}, /* paramstring blocks */ 0, /* used */ Klondike_init,/* initfunc */ NULL, /* local keyboard bindings */ }; xpat2-1.07/src/r_Royal.c100644 146 144 10433 6711644233 13550 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module r_Royal.c */ /* */ /* Characteristics of the ``Royal Cotillion'' rules */ /* written by Michael Bischoff (mbi@mo.math.nat.tu-bs.de) */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "xpatgame.h" static int Royal_valid(Cardindex srcind, Pileindex dstpile) { int srcpile, dstcard, srccard; srcpile = getpile(srcind); if (srcpile == dstpile) return 0; if (game.piletype[srcpile] == Stack) return 0; dstcard = EMPTY(dstpile) ? -1 : game.cards[game.ind[dstpile+1]-1]; srccard = game.cards[srcind]; switch (game.piletype[dstpile]) { case Slot: /* moves to Slot not allowed */ case Tmp: case FacedownDeck: return 0; case FaceupDeck: return game.piletype[srcpile] == FacedownDeck; case Stack: if (srcind != INDEX_OF_LAST_CARD(srcpile) || CARDS_ON_PILE(dstpile) == 13) return 0; /* only one card at a time, no overfull stacks */ if (SUIT(srccard) != SUIT(dstpile)) return 0; if (EMPTY(dstpile)) return RANK(srccard) == dstpile/4; return RANK(srccard) == (2 + RANK( game.cards[INDEX_OF_LAST_CARD(dstpile)])) % 13; } return 0; } static void Royal_newgame(void) { int i; /* specific part: one card on a stack, 3 on the talon (VDECK) */ for (i = 0; i < rules.numcards; ++i) game.visible[i] = 1; /* TODO */ for (i = 0; i <= rules.numstacks; ++i) game.ind[i] = 0; for (i = 0; i < rules.numslots; ++i) game.ind[FIRST_SLOT+i+1] = (i+1) * (rules.faceup+rules.facedown); for (i = LAST_SLOT+1; i < IDECK; ++i) game.ind[i+1] = game.ind[i] + 1; /* one card each tmp */ game.ind[IDECK+1] = rules.numcards; } static void Royal_minwindow(int w, int h, int dx, int dy, int *x, int *y) { /* No deck, 4 stacks, 4 Tmps, the slots */ int min1 = max(2, rules.numslots) + rules.numdecks + (rules.numtmps+3)/4; *x = 3 * dx + min1 * (w + dx); *y = 4 * h + 5 * dy; } #include "xpatgeo.h" static int Royal_Layout(void) { int i, x = geo.dx; struct pilegeometry *p = geo.pg; if (rules.numslots > 2) x += (rules.numslots - 2) * (geo.cw+geo.dx) / 2; p = geo.pg + IDECK; p->x = x; p->y = geo.dy; --p; /* VDECK */ p->x = x + geo.dx + geo.cw; p->y = geo.dy; x = geo.dx; for (i = FIRST_SLOT; i <= LAST_SLOT; ++i) { p = geo.pg+i; p->x = x; p->y = geo.dy + geo.ch + geo.dy; x += geo.dx + geo.cw; p->h = 3 * geo.ch + 2 * geo.dy; } x = 2 * geo.dx + max(rules.numslots, 2) * (geo.cw + geo.dx); for (i = FIRST_STACK; i <= LAST_STACK; ++i) { p = geo.pg+i; p->x = x + (i / 4) * (geo.cw + geo.dx); p->y = geo.dy + (i & 3) * (geo.ch + geo.dy); } x += rules.numdecks * (geo.dx + geo.cw) + geo.dx; for (i = 0; i < rules.numtmps; ++i) { p = geo.pg+LAST_SLOT+1+i; p->x = x + (i / 4) * (geo.cw + geo.dx); p->y = geo.dy + (i & 3) * (geo.ch + geo.dy); } return ROYAL_MAGIC; } struct rules Royal_rules = { "Royal Cotillion", /* shortname */ NULL, /* longname */ "rc", /* abbrev */ 6, /* layout_hints */ DECK_SOURCE|DECK_VISIBLE|STACKS_MULTI|AUTOFILL_TMPS|KLONDIKE_DEAL,/* variant */ CUSTOM_SLOTS|CUSTOM_TMPS|CUSTOM_FACEUP|CUSTOM_FACEDOWN, /* customizable */ 0, /* customized */ 104, /* numcards */ 8, /* numstacks */ 3, /* numslots */ 12, /* numtmps */ 2, /* numdecks */ 13, /* cards_per_color */ 0, /* numjokers */ {0, 0, 1, 0},/* param[0], param[1], param[2], param[3] */ 0, /* facedown */ 3, /* faceup */ 0, /* newgame_bits */ Royal_newgame,/* new_game */ NULL, /* game_won */ NULL, /* new_cards */ ES_NONE|US_NONE|MG_NONE|ST_ONE|DC_ALWAYS, /* move_bits */ NULL, /* deal_cards */ NULL, /* undeal_cards */ NULL, /* stackable */ Royal_valid,/* movevalid */ NULL, /* valid */ NULL, /* relaxed_valid */ NULL, /* good_hint */ NULL, /* automove */ NULL, /* score */ 0, /* maxscore */ {0, 0, 0, 0}, /* paramstring blocks */ 0, /* used */ NULL, /* initfunc */ NULL, /* local keyboard bindings */ Royal_minwindow, Royal_Layout }; xpat2-1.07/src/r_Midnight.c100644 146 144 6741 6711642660 14216 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module r_Midnight.c */ /* */ /* Characteristics of the ``Midnight Oil'' rules */ /* written by Michael Bischoff (mbi@mo.math.nat.tu-bs.de) */ /* 04-Apr-1994 */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "xpatgame.h" /* won't work with facedown > 0 */ static int MO_new_cards(void) { return rules.param[1] > game.counter[1]; } /* shuffle the cards */ static Move MO_DealCards(void) { int remgraphic; int cardsperpile = rules.faceup + rules.facedown; Pileindex i; int remember_count = game.n_moves; assert(rules.param[1] > game.counter[1]); ++game.counter[1]; /* we are moving a lot, so keep the graphics for later */ if ((remgraphic = game.graphic)) graphics_control(Disable); store_move(COMPOUND_BEGIN); /* first, we put all cards on the first slot */ /* this won't move any game.*/ for (i = FIRST_SLOT+1; i <= LAST_SLOT; ++i) if (!EMPTY(i)) store_move(do_move(INDEX_OF_FIRST_CARD(i), FIRST_SLOT)); /* now, we redistribute the cards on the slots */ /* again, this won't move any game.*/ for (i = FIRST_SLOT; i <= LAST_SLOT; ++i) if (CARDS_ON_PILE(i) > cardsperpile) store_move(do_move(INDEX_OF_FIRST_CARD(i)+cardsperpile, i+1)); else break; /* now, shuffle the cards */ store_move(SlotShuffle(1)); if (remgraphic) graphics_control(EnableAndRedraw); game.n_moves = remember_count; return COMPOUND_END; } #include "xpatgeo.h" static int MO_Layout(void) { int i, y, x; struct pilegeometry *p = geo.pg; y = geo.dy; x = geo.dx; p = geo.pg+FIRST_SLOT; for (i = 0; i < rules.numslots; ++i) { p->x = x; p->y = y; p->h = 2 * geo.ch + geo.dy; if (i & 1) { p->y += p->h + geo.dy; x += geo.cw + geo.dx; } ++p; } if (rules.numslots & 1) /* correctly advance x position */ x += geo.dx + geo.cw; p = geo.pg+FIRST_STACK; for (i = 0; i < rules.numstacks; ++i) { p->x = x; p->y = y + (i & 3) * (geo.dy + geo.ch); if ((i&3) == 3) x += geo.cw + geo.dx; ++p; } return MIDNIGHTOIL_MAGIC; } struct rules MidnightOil_rules = { "Midnight Oil",/* shortname */ NULL, /* longname */ "mo", /* abbrev */ 4, /* layout_hints */ 0, /* variant (DECK_SOURCE) */ CUSTOM_PARAM1|CUSTOM_PARAM3,/* customizable */ 0, /* customized */ 52, /* numcards */ 4, /* numstacks */ 18, /* numslots */ 0, /* numtmps */ 1, /* numdecks */ 13, /* cards_per_color */ 0, /* numjokers */ {0, 2, 0, 1},/* param[1], param[2], param[3] */ 0, /* facedown */ 3, /* faceup */ SEQUENTIAL, /* newgame_bits */ NULL, /* new_game */ NULL, /* game_won */ MO_new_cards,/* new_cards */ ES_NONE|US_RS|MG_NONE|DC_ALWAYS|ST_ONE, /* move_bits */ MO_DealCards,/* deal_cards */ NULL, /* undeal_cards */ NULL, /* stackable */ NULL, /* movevalid */ NULL, /* valid */ NULL, /* relaxed_valid */ NULL, /* good_hint */ NULL, /* automove */ NULL, /* score */ 0, /* maxscore */ {0, TXTI_SHUFFLE,/* paramstring 0, 1 */ 0, TXTI_ROTATE},/* paramstring 2,3 */ 0, /* used */ NULL, /* initfunc */ NULL, /* local keyboard bindings */ NULL, MO_Layout }; xpat2-1.07/src/r_MonteCarlo.c100644 146 144 10477 6711642364 14540 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module r_MonteCarlo.c */ /* */ /* Characteristics of the ``Monte Carlo'' rules */ /* written by Michael Bischoff (mbi@mo.math.nat.tu-bs.de) */ /* 04-Apr-1994 */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "xpatgame.h" #define COLUMNS (rules.param[1]) #define MCDX 14 #define MCDY 4 static int MC_new_cards(void) { int i, hashole = 0; for (i = FIRST_SLOT; i <= LAST_SLOT; ++i) { switch (CARDS_ON_PILE(i)) { case 0: hashole = 1; break; case 1: if (hashole) /* 0 => 1 transition */ return 1; break; default: return 1; } } return 0; } static Move MC_deal_cards(void) { Pileindex rd, wr; int emptybefore, turned; int remember_count = game.n_moves; store_move(COMPOUND_BEGIN); for (wr = rd = FIRST_SLOT; rd <= LAST_SLOT; ++rd) { switch (CARDS_ON_PILE(rd)) { case 1: if (rd != wr) { /* shift cards to wr pile */ store_move(do_move(INDEX_OF_FIRST_CARD(rd), wr++)); } else ++wr; case 0: break; /* no action */ default: store_move(do_move(INDEX_OF_FIRST_CARD(rd), FIRST_STACK)); } } /* now fill with remaining cards */ emptybefore = EMPTY(IDECK); turned = 0; while (wr <= LAST_SLOT && !EMPTY(IDECK)) { store_move(do_move(INDEX_OF_LAST_CARD(IDECK), wr++)); ++turned; } if (turned) store_move(ADD_CHEAT | (Move)turned); if (EMPTY(IDECK) && !emptybefore) /* there are no more cards now */ draw_pileupdate(IDECK, 0); /* force deck to be redrawn */ game.n_moves = remember_count; return COMPOUND_END; /* this will do the increment */ } static int MC_move_valid(Cardindex src, Pileindex dstpile) { int i, thiscard, thatcard; Pileindex srcpile = getpile(src); if (CARDS_ON_PILE(srcpile) != 1 || CARDS_ON_PILE(dstpile) != 1) return 0; if (game.piletype[srcpile] != Slot || game.piletype[dstpile] != Slot) return 0; thiscard = game.cards[src]; thatcard = game.cards[INDEX_OF_LAST_CARD(dstpile)]; if (RANK(thiscard) != RANK(thatcard)) return 0; i = (srcpile-FIRST_SLOT) % COLUMNS - (dstpile-FIRST_SLOT) % COLUMNS; if (i < -1 || i > 1) return 0; i = (srcpile-FIRST_SLOT) / COLUMNS - (dstpile-FIRST_SLOT) / COLUMNS; if (i < -1 || i > 1) return 0; return 1; } static void MC_minwindow(int w, int h, int dx, int dy, int *x, int *y) { /* The deck, no stack, the slots */ *x = (w + dx + MCDX) * COLUMNS + 2 * dx + w; *y = (h + dy + MCDY) * ((rules.numslots+COLUMNS-1)/COLUMNS); } #include "xpatgeo.h" static int MC_Layout(void) { int i, y, x; struct pilegeometry *p = geo.pg; y = geo.dy; p = geo.pg+IDECK; p->x = geo.dx; p->y = y; p = geo.pg+FIRST_SLOT; x = geo.cw + 2 * geo.dx; for (i = 0; i < rules.numslots; ++i) { p->x = x + (i%5) * (geo.cw + geo.dx + MCDX); p->y = y + (i/5) * (geo.ch + geo.dy + MCDY); p->dx = MCDX; p->dy = MCDY; p->w = geo.cw + MCDX; p->h = geo.ch + MCDY; ++p; } return MONTECARLO_MAGIC; } struct rules MonteCarlo_rules = { "Monte Carlo",/* shortname */ NULL, /* longname */ "mc", /* abbrev */ 3, /* layout_hints */ HINTS_LESSER,/* variant */ 0, /* customizable */ 0, /* customized */ 52, /* numcards */ 4, /* numstacks */ 25, /* numslots */ 0, /* numtmps */ 1, /* numdecks */ 13, /* cards_per_color */ 0, /* numjokers */ {0, 5, 0, 0},/* param[0], param[1], param[2], param[3] */ 0, /* facedown */ 1, /* faceup */ SLOTS_SAME, /* newgame_bits */ NULL, /* new_game */ NULL, /* game_won */ MC_new_cards,/* new_cards */ ST_NONE|MG_NONE, /* move_bits */ MC_deal_cards, /* deal_cards */ NULL, /* undeal_cards */ NULL, /* stackable */ MC_move_valid, /* movevalid */ NULL, /* valid */ NULL, /* relaxed_valid */ NULL, /* good_hint */ NULL, /* automove */ NULL, /* score */ 0, /* maxscore */ {0, 0, 0, 0}, /* paramstring blocks */ 0, /* used */ NULL, /* initfunc */ NULL, /* local keyboard bindings */ MC_minwindow, MC_Layout /* minwindow routine */ }; xpat2-1.07/src/r_Seahaven.c100644 146 144 7604 6711710675 14206 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module r_Seahaven.c */ /* */ /* Characteristics of the ``Seahaven Towers'' rules */ /* written by Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "xpatgame.h" static int count_free_slots(Pileindex avoid) { Pileindex i; int empty_slots = 0; for (i = FIRST_SLOT; i <= LAST_SLOT; ++i) if (i != avoid && EMPTY(i)) ++empty_slots; return empty_slots; } static int Seahaven_valid(Cardindex src, Pileindex dstpile) { Pileindex srcpile; if (!default_movevalid(src, dstpile)) return 0; /* move is not valid */ /* if we use relaxed rules, the move is valid */ if (rules.param[0]) return 1; /* relaxed rules */ /* strict rules: for slot to slot moves, there must be a sufficient number of tmps free */ srcpile = getpile(src); if (game.piletype[srcpile] == Slot && game.piletype[dstpile] == Slot) { int freetmps, freeslots = 0, cardsmoved; if ((rules.move_bits & ES_MASK) == ES_ALL) { /* may use empty slots also */ /* this doubles the number of movable cards with every free slot => power of two */ freeslots = count_free_slots(dstpile); } cardsmoved = INDEX_OF_LAST_CARD(srcpile) + 1 - src; freetmps = rules.numtmps - (INDEX_OF_FIRST_CARD( LAST_SLOT+1+rules.numtmps) - INDEX_OF_FIRST_CARD(LAST_SLOT+1)); if (cardsmoved > (freetmps + 1) * (1 << freeslots)) return 0; } return 1; } struct rules Seahaven_rules = { /* Seahaven */ "Seahaven", /* shortname */ "Seahaven Towers", /* longname */ "st", /* abbrev */ 1, /* layout_hints */ NODEAL, /* variant */ CUSTOM_STD|CUSTOM_PARAM0, /* customizable */ 0, /* customized */ 52, /* numcards */ 4, /* numstacks */ 10, /* numslots */ 4, /* numtmps */ 1, /* numdecks */ 13, /* cards_per_color */ 0, /* numjokers */ {0, 0, 0, 0},/* param[0], param[1], param[2], param[3] */ 0, /* facedown */ 5, /* faceup */ 0, /* newgame_bits */ NULL, /* new_game */ NULL, /* game_won */ NULL, /* new_cards */ ES_KINGS|US_RS|MG_RS|DC_ALWAYS|ST_ONE|STACK_SOURCE, /* move_bits */ NULL, /* deal_cards */ NULL, /* undeal_cards */ NULL, /* stackable */ Seahaven_valid, /* movevalid */ NULL, /* valid */ NULL, /* relaxed_valid */ std_good_hint,/* good_hint */ NULL, /* automove */ NULL, /* score */ 0, /* maxscore */ {0, 0, 0, 0}, /* paramstring blocks */ 0, /* used */ NULL, /* initfunc */ NULL, /* local keyboard bindings */ }; struct rules FreeCell_rules = { /* FreeCell */ "Free Cell",/* shortname */ NULL, /* longname */ "fc", /* abbrev */ 1, /* layout_hints */ NODEAL, /* variant */ CUSTOM_STD|CUSTOM_PARAM0, /* customizable */ 0, /* customized */ 52, /* numcards */ 4, /* numstacks */ 8, /* numslots */ 4, /* numtmps */ 1, /* numdecks */ 13, /* cards_per_color */ 0, /* numjokers */ {0, 0, 0, 0},/* param[0], param[1], param[2], param[3] */ 0, /* facedown */ 6, /* faceup */ FORCE_SLOTS,/* newgame_bits */ NULL, /* new_game */ NULL, /* game_won */ NULL, /* new_cards */ ES_ALL|US_RA|MG_RA|DC_ALWAYS|ST_ONE|STACK_SOURCE, /* move_bits */ NULL, /* deal_cards */ NULL, /* undeal_cards */ NULL, /* stackable */ Seahaven_valid, /* movevalid */ NULL, /* valid */ NULL, /* relaxed_valid */ std_good_hint,/* good_hint */ NULL, /* automove */ NULL, /* score */ 0, /* maxscore */ {0, 0, 0, 0}, /* paramstring blocks */ 0, /* used */ NULL, /* initfunc */ NULL, /* local keyboard bindings */ }; xpat2-1.07/src/r_Spider.c100644 146 144 10411 6713370325 13704 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module r_Spider.c */ /* */ /* Characteristics of the ``Spider'' rules */ /* written by Heiko Eissfeldt and Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "xpatgame.h" /* you win by completing all suits, either on the stacks */ /* or (for more points, see Spider_score) in the slots */ static int Spider_won(void) { Pileindex i; Cardindex k; /* all slots must be empty or contain complete suits */ for (i = FIRST_SLOT; i <= LAST_SLOT; i++) { if (!EMPTY(i)) { if (CARDS_ON_PILE(i) != 13) return 0; k = INDEX_OF_LAST_CARD(i); if (!game.visible[k-12]) return 0; if (complete_suit(i, k) == -1) return 0; } } return 1; } /* calculate score according to Spider documentation */ static int Spider_score(void) { Pileindex i; Cardindex j; int score; int total_visible; int resolved_suits_in_slots=0; int resolved_suits_in_stacks=0; /* set score to the maximum of facedown cards turned */ score = ((rules.numcards % rules.numslots) + rules.numslots * rules.facedown) * 10; for (i = FIRST_SLOT; i <= LAST_SLOT; i++) { total_visible = 1; for (j = game.ind[i]; j < INDEX_OF_LAST_CARD(i); j++) { if (game.visible[j] && in_strong_sequence(game.cards[j+1], game.cards[j])) { /* visible combined cards give 2 Points */ score += 2; } if (!game.visible[j]) { /* each of the unvisible cards at start got 10 Points at first. Now clear the points for each yet invisible card. */ score -= 10; total_visible = 0; /* something is hidden in this slot */ } } /* 15 points for each fully visible slot */ score += total_visible * 15; /* check for completed suits (even if stacked on each other) */ if (!EMPTY(i)) { /* each full sequence gets 50 points total (12 * 2 points are already there) so add 26 points. */ Cardindex k; for (k = INDEX_OF_LAST_CARD(i); k >= game.ind[i] + 12; --k) { if (game.visible[k-12] && complete_suit(i, k) != -1) { score += 26; ++resolved_suits_in_slots; } } } } /* check the stacks for complete sequences */ for (i = 0; i < rules.numstacks; ++i) if (!EMPTY(STACK(i))) { score += 50; /* each completed sequence got 50 points */ resolved_suits_in_stacks ++; } if ((resolved_suits_in_slots + resolved_suits_in_stacks) / 4 /*suits*/ == rules.numdecks) { resolved_suits_in_slots -= 3; if (resolved_suits_in_slots > 0) score += resolved_suits_in_slots * 2; } return score; } static void Spider_init(void) { switch (rules.param[0]) { case 0: rules.move_bits |= DC_NOEMPTY; /* std. Spider rules */ break; case 1: rules.move_bits |= DC_STRONGOK; /* Heiko's variant */ break; case 2: rules.move_bits |= DC_RELAXEDOK; /* Heiko's variant */ break; default: fprintf(stderr, "Spider: option to -relaxed may be 0, 1, or 2. Found %d\n", rules.param[0]); exit(1); } } struct rules Spider_rules = { "Spider", /* shortname */ NULL, /* longname */ NULL, /* abbrev */ 0, /* layout_hints */ 0, /* variant */ CUSTOM_STD|CUSTOM_PARAM0, /* customizable */ 0, /* customized */ 104, /* numcards */ 8, /* numstacks */ 10, /* numslots */ 0, /* numtmps */ 2, /* numdecks */ 13, /* cards_per_color */ 0, /* numjokers */ {0, 0, 0, 0},/* param[0], param[1], param[2], param[3] */ 4, /* facedown */ 1, /* faceup */ 0, /* newgame_bits */ NULL, /* new_game */ Spider_won, /* game_won */ NULL, /* new_cards */ ES_ALL|US_R|MG_RS|ST_13, /* move_bits */ NULL, /* deal_cards */ NULL, /* undeal_cards */ NULL, /* stackable */ NULL, /* movevalid */ NULL, /* valid */ NULL, /* relaxed_valid */ std_good_hint, /* good_hint */ NULL, /* automove */ Spider_score,/* score */ 1000, /* maxscore */ {0, 0, 0, 0}, /* paramstring blocks */ 0, /* used */ Spider_init, /* initfunc */ NULL, /* local keyboard bindings */ }; xpat2-1.07/src/rank.bm100644 146 144 5116 5461331010 13215 0ustar mbimathopt/* * Spider * * (c) Copyright 1989, Donald R. Woods and Sun Microsystems, Inc. * (c) Copyright 1990, David Lemke and Network Computing Devices Inc. * * See copyright.h for the terms of the copyright. * * @(#)rank.bm 2.1 90/04/25 * */ #define rank_width 9 #define rank_height 14 static char rank_bits[13][28] = { { 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0xc6, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0xc6, 0x00, 0x83, 0x01, 0x83, 0x01, 0x83, 0x01}, { 0x7c, 0x00, 0xfe, 0x00, 0xc7, 0x01, 0x83, 0x01, 0x80, 0x01, 0xc0, 0x01, 0xe0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x87, 0x01, 0xff, 0x01, 0xff, 0x01}, { 0xff, 0x01, 0xff, 0x01, 0xc3, 0x01, 0xe0, 0x00, 0x70, 0x00, 0x78, 0x00, 0xfc, 0x00, 0xc8, 0x01, 0x80, 0x01, 0x80, 0x01, 0x82, 0x01, 0xc7, 0x01, 0xfe, 0x00, 0x7c, 0x00}, { 0xe0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xd8, 0x00, 0xd8, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0xff, 0x01, 0xff, 0x01, 0xc0, 0x00, 0xe0, 0x01, 0xe0, 0x01}, { 0xff, 0x00, 0xff, 0x00, 0x03, 0x00, 0x03, 0x00, 0x7b, 0x00, 0xff, 0x00, 0xc7, 0x01, 0x82, 0x01, 0x80, 0x01, 0x80, 0x01, 0x82, 0x01, 0xc7, 0x01, 0xfe, 0x00, 0x7c, 0x00}, { 0x7c, 0x00, 0xfe, 0x00, 0xc7, 0x01, 0x83, 0x00, 0x03, 0x00, 0x7b, 0x00, 0xff, 0x00, 0xc7, 0x01, 0x83, 0x01, 0x83, 0x01, 0x83, 0x01, 0xc7, 0x01, 0xfe, 0x00, 0x7c, 0x00}, { 0xff, 0x01, 0xff, 0x01, 0x83, 0x01, 0xc0, 0x00, 0xc0, 0x00, 0x60, 0x00, 0x60, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00}, { 0x7c, 0x00, 0xfe, 0x00, 0xc7, 0x01, 0x83, 0x01, 0xc7, 0x01, 0xfe, 0x00, 0x7c, 0x00, 0xfe, 0x00, 0xc7, 0x01, 0x83, 0x01, 0x83, 0x01, 0xc7, 0x01, 0xfe, 0x00, 0x7c, 0x00}, { 0x7c, 0x00, 0xfe, 0x00, 0xc7, 0x01, 0x83, 0x01, 0x83, 0x01, 0x83, 0x01, 0xc7, 0x01, 0xfe, 0x01, 0xbc, 0x01, 0x80, 0x01, 0x82, 0x01, 0xc7, 0x01, 0xfe, 0x00, 0x7c, 0x00}, { 0xf3, 0x00, 0xfb, 0x01, 0x9b, 0x01, 0x9b, 0x01, 0x9b, 0x01, 0x9b, 0x01, 0x9b, 0x01, 0x9b, 0x01, 0x9b, 0x01, 0x9b, 0x01, 0x9b, 0x01, 0x9b, 0x01, 0xfb, 0x01, 0xf3, 0x00}, { 0xe0, 0x01, 0xe0, 0x01, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc3, 0x00, 0xc3, 0x00, 0xe7, 0x00, 0x7e, 0x00, 0x3c, 0x00}, { 0x38, 0x00, 0x7c, 0x00, 0xee, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0xdf, 0x00, 0xff, 0x00, 0xf6, 0x00, 0xee, 0x00, 0xfc, 0x01, 0xb8, 0x00}, { 0xef, 0x01, 0xef, 0x01, 0xe6, 0x00, 0x76, 0x00, 0x3e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x3e, 0x00, 0x36, 0x00, 0x76, 0x00, 0x66, 0x00, 0xe6, 0x00, 0xef, 0x01, 0xef, 0x01} }; xpat2-1.07/src/rule.bm100644 146 144 37104 5546003040 13256 0ustar mbimathopt#define rule_width 141 #define rule_height 141 static char rule_bits[] = { 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, 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, 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, 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, 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, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x84, 0x10, 0x42, 0x08, 0x21, 0x84, 0x10, 0x42, 0x08, 0x21, 0x84, 0x10, 0x42, 0x08, 0x21, 0x84, 0x10, 0x00, 0x84, 0x10, 0x42, 0x08, 0x21, 0x84, 0x10, 0x42, 0x08, 0x21, 0x84, 0x10, 0x42, 0x08, 0x21, 0x84, 0x10, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x84, 0x10, 0x42, 0x08, 0x21, 0x84, 0x10, 0x42, 0x08, 0x21, 0x84, 0x10, 0x42, 0x08, 0x21, 0x84, 0x10, 0x00, 0x84, 0x10, 0x42, 0x08, 0x21, 0x84, 0x10, 0x42, 0x08, 0x21, 0x84, 0x10, 0x42, 0x08, 0x21, 0x84, 0x10, 0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; xpat2-1.07/src/suit.bm100644 146 144 10401 5461331010 13257 0ustar mbimathopt/* * Spider * * (c) Copyright 1989, Donald R. Woods and Sun Microsystems, Inc. * (c) Copyright 1990, David Lemke and Network Computing Devices Inc. * * See copyright.h for the terms of the copyright. * * @(#)suit.bm 2.1 90/04/25 * */ #define spade_width 15 #define spade_height 19 #define spade_x_hot -1 #define spade_y_hot -1 static char spade_bits[] = { 0x80, 0x00, 0x80, 0x00, 0xc0, 0x01, 0xc0, 0x01, 0xe0, 0x03, 0xf0, 0x07, 0xf0, 0x07, 0xf8, 0x0f, 0xfc, 0x1f, 0xfe, 0x3f, 0xfe, 0x3f, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x7f, 0xbe, 0x3e, 0x9c, 0x1c, 0xc0, 0x01, 0xe0, 0x03}; #define spade_lg_width 39 #define spade_lg_height 52 #define spade_lg_x_hot -1 #define spade_lg_y_hot -1 static char spade_lg_bits[] = { 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x00, 0xe0, 0xff, 0x03, 0x00, 0x00, 0xf0, 0xff, 0x07, 0x00, 0x00, 0xf0, 0xff, 0x07, 0x00, 0x00, 0xf8, 0xff, 0x0f, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0x00, 0x00, 0xfe, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x01, 0xe0, 0xff, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0xff, 0x07, 0xf8, 0xff, 0xff, 0xff, 0x0f, 0xf8, 0xff, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0xff, 0xff, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xbe, 0xff, 0x1f, 0xfc, 0x7f, 0x1c, 0xff, 0x1f, 0xf8, 0x3f, 0x1c, 0xfe, 0x0f, 0xf0, 0x1f, 0x1c, 0xfc, 0x07, 0xc0, 0x07, 0x1c, 0xf0, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x00, 0xe0, 0xff, 0x03, 0x00, 0x00, 0xf0, 0xff, 0x07, 0x00}; #define spade_sm_width 9 #define spade_sm_height 12 #define spade_sm_x_hot -1 #define spade_sm_y_hot -1 static char spade_sm_bits[] = { 0x10, 0x00, 0x10, 0x00, 0x38, 0x00, 0x38, 0x00, 0x7c, 0x00, 0xfe, 0x00, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xd6, 0x00, 0x10, 0x00, 0x38, 0x00}; #define heart_width 15 #define heart_height 17 #define heart_x_hot -1 #define heart_y_hot -1 static char heart_bits[] = { 0x1c, 0x1c, 0x3e, 0x3e, 0x7f, 0x7f, 0x7f, 0x7f, 0xff, 0x7f, 0xff, 0x7f, 0xfe, 0x3f, 0xfe, 0x3f, 0xfc, 0x1f, 0xf8, 0x0f, 0xf0, 0x07, 0xf0, 0x07, 0xe0, 0x03, 0xc0, 0x01, 0xc0, 0x01, 0x80, 0x00, 0x80, 0x00}; #define heart_sm_width 9 #define heart_sm_height 11 #define heart_sm_x_hot -1 #define heart_sm_y_hot -1 static char heart_sm_bits[] = { 0xc6, 0x00, 0xef, 0x01, 0xff, 0x01, 0xff, 0x01, 0xfe, 0x00, 0xfe, 0x00, 0x7c, 0x00, 0x38, 0x00, 0x38, 0x00, 0x10, 0x00, 0x10, 0x00}; #define club_width 15 #define club_height 16 #define club_x_hot -1 #define club_y_hot -1 static char club_bits[] = { 0xc0, 0x81, 0xe0, 0x83, 0xf0, 0x87, 0xf0, 0x87, 0xf0, 0x87, 0xe0, 0x83, 0xdc, 0x9d, 0xfe, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbe, 0x3e, 0x9c, 0x1c, 0xc0, 0x81, 0xc0, 0x81, 0xe0, 0x83}; #define club_sm_width 9 #define club_sm_height 11 static char club_sm_bits[] = { 0x38, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x38, 0x00, 0xd6, 0x00, 0xff, 0x81, 0xff, 0x81, 0xff, 0x81, 0xd6, 0x00, 0x10, 0x00, 0x38, 0x00}; #define diamond_sm_width 7 #define diamond_sm_height 12 #define diamond_sm_x_hot -1 #define diamond_sm_y_hot -1 static char diamond_sm_bits[] = { 0x08, 0x08, 0x1c, 0x1c, 0x3e, 0x7f, 0x3e, 0x1c, 0x1c, 0x08, 0x08, 0x00}; #define diamond_width 15 #define diamond_height 19 static char diamond_bits[] = { 0x80, 0x00, 0x80, 0x00, 0xc0, 0x01, 0xc0, 0x01, 0xe0, 0x03, 0xf0, 0x07, 0xf0, 0x07, 0xf8, 0x0f, 0xfc, 0x1f, 0xfe, 0x3f, 0xfc, 0x1f, 0xf8, 0x0f, 0xf0, 0x07, 0xf0, 0x07, 0xe0, 0x03, 0xc0, 0x01, 0xc0, 0x01, 0x80, 0x00, 0x80, 0x00}; xpat2-1.07/src/rules.template100644 146 144 3306 5720430021 14630 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- template file for a new rule set */ /* */ /* written by Michael Bischoff (mbi@mo.math.nat.tu-bs.de) */ /* 04-Apr-1994 */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* Please fill in appropriate data. */ /* Entries preset with NULL are optional. */ /* */ /* */ /*****************************************************************************/ #include "xpat.h" #include "xpatgame.h" struct rules BLABLA_rules { "", /* shortname */ NULL, /* longname */ NULL, /* abbrev */ 0, /* layout_hints */ DECK_SOURCE|HINTS_LESSER|STACKS_MULTI|NODEAL,/* variant */ 0, /* customizable */ 0, /* customized */ 52, /* numcards */ 4, /* numstacks */ 8, /* numslots */ 0, /* numtmps */ 1, /* numdecks */ 13, /* cards_per_color */ 0, /* numjokers */ {0, 0, 0, 0},/* param[0], param[1], param[2], param[3] */ 0, /* facedown */ 1, /* faceup */ SEQUENTIAL|SLOTS_SAME|FORCE_SLOTS, /* newgame_bits */ NULL, /* new_game */ NULL, /* game_won */ NULL, /* new_cards */ ES_|US_|MG_|DC_|ST_|STACK_SOURCE, /* move_bits */ NULL, /* deal_cards */ NULL, /* undeal_cards */ NULL, /* stackable */ NULL, /* movevalid */ NULL, /* valid */ NULL, /* relaxed_valid */ NULL, /* good_hint */ NULL, /* automove */ NULL, /* score */ 0, /* maxscore */ {0, 0, 0, 0}, /* paramstring blocks */ 0, /* used */ NULL, /* initfunc */ NULL, /* local keyboard bindings */ }; xpat2-1.07/src/smallrank.bm100644 146 144 4347 5546234241 14267 0ustar mbimathopt#define smallrank_width 36 #define smallrank_height 70 static char smallrank_bits[] = { 0x38, 0xf8, 0x80, 0x07, 0x00, 0x38, 0xfc, 0x81, 0x07, 0x00, 0x78, 0x8e, 0x03, 0x73, 0x07, 0x68, 0x06, 0x03, 0x73, 0x07, 0x6c, 0x06, 0x00, 0x63, 0x03, 0x6c, 0xf6, 0x00, 0xe3, 0x01, 0xec, 0xfe, 0x01, 0xe3, 0x00, 0xc4, 0x8e, 0x03, 0xe3, 0x00, 0xfe, 0x06, 0x03, 0xe3, 0x01, 0xfe, 0x06, 0x0f, 0xe3, 0x01, 0xc7, 0x07, 0x0f, 0x63, 0x03, 0xc7, 0x8f, 0x1f, 0x63, 0x03, 0x83, 0xfd, 0xfb, 0x63, 0x06, 0x83, 0xf9, 0xf1, 0x71, 0x07, 0x78, 0xfe, 0xe3, 0x30, 0x0c, 0xfc, 0xfe, 0xf3, 0x31, 0x0c, 0xc6, 0x07, 0xbb, 0x33, 0x0c, 0x83, 0x01, 0x1b, 0x33, 0x0c, 0x80, 0x81, 0x19, 0x33, 0x0c, 0xc0, 0x81, 0x19, 0x33, 0x0c, 0xe0, 0xc0, 0x18, 0x33, 0x0c, 0x70, 0xc0, 0x18, 0x33, 0x0c, 0x38, 0x60, 0x3c, 0x33, 0x0c, 0x1c, 0x60, 0xfc, 0x33, 0x0c, 0x0e, 0x60, 0xd8, 0x33, 0x0c, 0x87, 0x21, 0xb8, 0x73, 0x0e, 0xff, 0x31, 0xf0, 0xf7, 0x07, 0xff, 0x31, 0xe0, 0xe7, 0x03, 0xff, 0xf9, 0xbc, 0xc7, 0x03, 0xff, 0xfd, 0xbd, 0xe7, 0x07, 0xc3, 0x8f, 0x1b, 0x73, 0x0e, 0xe0, 0x06, 0x9b, 0x31, 0x0c, 0x70, 0x8e, 0xfb, 0x30, 0x0c, 0x78, 0xfc, 0x7b, 0x30, 0x0c, 0xfc, 0xf8, 0x78, 0x30, 0x0c, 0xc8, 0xfd, 0xf9, 0x30, 0x0c, 0x80, 0x8f, 0xdb, 0x30, 0x0c, 0x80, 0x07, 0x9b, 0x31, 0x0c, 0x82, 0x07, 0x9b, 0x31, 0x0c, 0x87, 0x8f, 0x1b, 0x73, 0x0e, 0xfe, 0xfc, 0xbd, 0xe7, 0x07, 0xfc, 0xf8, 0xbc, 0xc7, 0x03, 0xe0, 0xf8, 0x00, 0x78, 0x0f, 0xf0, 0xfc, 0x01, 0x78, 0x0f, 0xf0, 0x8e, 0xfb, 0x31, 0x06, 0xd8, 0x06, 0xfb, 0x33, 0x06, 0xd8, 0x06, 0x33, 0x33, 0x06, 0xcc, 0x06, 0x33, 0x72, 0x07, 0xcc, 0x0e, 0x33, 0x63, 0x03, 0xc6, 0xfc, 0xf3, 0x61, 0x03, 0xc6, 0xf8, 0xf3, 0xe1, 0x03, 0xff, 0x01, 0x33, 0xc3, 0x01, 0xff, 0x05, 0x33, 0xc2, 0x01, 0xc0, 0x0e, 0x33, 0xc3, 0x01, 0xe0, 0xfd, 0xf3, 0x83, 0x00, 0xe0, 0xf9, 0xf9, 0x81, 0x00, 0xff, 0xe6, 0x01, 0xf8, 0x03, 0xff, 0xf6, 0x03, 0xf8, 0x07, 0x03, 0x36, 0xfb, 0x31, 0x0e, 0x03, 0x36, 0xfb, 0x33, 0x0c, 0x7b, 0x36, 0x33, 0x33, 0x0c, 0xff, 0x36, 0x33, 0x32, 0x0c, 0xc7, 0x37, 0x33, 0xf2, 0x0f, 0x82, 0x37, 0x33, 0xf2, 0x07, 0x80, 0x37, 0x33, 0xf2, 0x01, 0x80, 0x37, 0x33, 0xb2, 0x03, 0x82, 0x37, 0x33, 0x32, 0x07, 0x87, 0x37, 0x33, 0x33, 0x06, 0xfe, 0xf7, 0xf3, 0x7b, 0x0f, 0xfc, 0xe6, 0xf9, 0x79, 0x0f}; xpat2-1.07/src/stipple.bm100644 146 144 204 5461331010 13713 0ustar mbimathopt#define stipple_width 8 #define stipple_height 8 static char stipple_bits[] = { 0x11, 0x0a, 0x04, 0x0a, 0x11, 0xa0, 0x40, 0xa0}; xpat2-1.07/src/util.c100644 146 144 4547 5556023267 13113 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module util.c */ /* */ /* actually, this file contains a portable random-number-generator */ /* written by Heiko Eissfeldt and Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* \begin{cite} */ /* This following lines contain a set of c-language functions for */ /* generating uniform integers. This is a COMPLETELY PORTABLE */ /* generator. */ /* It will give IDENTICAL sequences of random numbers for any */ /* architecture with at least 30-bit integers, regardless of the */ /* integer representation, MAXINT value, or roundoff/truncation */ /* method, etc. */ /* */ /* This Truly Remarkable RNG is described more fully in */ /* J. Bentley's column, ``The Software Exploratorium '' */ /* to appear in Unix Review in 1991. */ /* It is based on one in Knuth, Vol 2, Section 3.2.2 (Algorithm A) */ /* \end{cite} */ /* */ /* I got it from the DIMACS (netflow) archive at Rutgers University */ /* and modified it a bit to make it work for 16-bit ints, but 32-bit */ /* longs also. */ /* Michael */ /* */ /*****************************************************************************/ #include "xpatgame.h" /*----RNG Global Variables-------*/ static int rand_a = 24; static int rand_b = 0; static long arr[55]; /*----RNG Initializer------------*/ /* Call once before using lprand */ void sprand(long seed) { int i, ii; long last, next; arr[0] = last = seed; next = 1; for (i=1; i < 55; i++) { ii = ( 21 * i ) % 55; arr[ii] = next; next = last - next; if (next < 0) next += PRANDMAX; last = arr[ii]; } rand_a = 0; rand_b = 24; for (i = 0; i < 165; i++) (void)prand(); } /*---------RNG---------------------*/ /* Returns long integers from the */ /* range 0...PRANDMAX-1 */ long prand(void) { long t; if (rand_a-- == 0) rand_a = 54; if (rand_b-- == 0) rand_b = 54; t = arr[rand_a] - arr[rand_b]; t %= PRANDMAX; if (t < 0) t += PRANDMAX; arr[rand_a] = t; return t; } xpat2-1.07/src/r_Canfield.c100644 146 144 11201 6711644254 14164 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module r_Canfield.c */ /* */ /* Characteristics of the ``Canfield'' rules */ /* written by Michael Bischoff (mbi@mo.math.nat.tu-bs.de) */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "xpatgame.h" static int baserank; static int Canfield_valid(Cardindex srcind, Pileindex dstpile) { int srcpile, dstcard, srccard; if (dstpile == VDECK-1) return 0; /* no move to the tmp */ srcpile = getpile(srcind); if (srcpile == dstpile) return 0; if (game.piletype[srcpile] == Stack) return 0; dstcard = EMPTY(dstpile) ? -1 : game.cards[INDEX_OF_LAST_CARD(dstpile)]; srccard = game.cards[srcind]; switch (game.piletype[dstpile]) { case Slot: /* moves to Slot: depends on if slot is empty */ if (EMPTY(dstpile)) return srcpile == (VDECK-1) || (EMPTY(VDECK-1) && srcpile == VDECK); /* dstpile not empty: rank and alternate colour! */ if (IS_JOKER(dstcard) || IS_JOKER(srccard)) ; else { if (RANK(srccard) != (12 + RANK(dstcard)) % 13) return 0; if (!DIFFERENT_COLOR(dstcard, srccard)) return 0; } if (game.piletype[srcpile] == Slot && srcind != INDEX_OF_FIRST_CARD(srcpile)) return 0; return 1; case Tmp: case FaceupDeck: case FacedownDeck: return 0; /* only implicit moves allowable */ case Stack: if (srcind != INDEX_OF_LAST_CARD(srcpile)) return 0; /* only one card at a time */ if (SUIT(srccard) != SUIT(dstpile)) return 0; if (EMPTY(dstpile)) return RANK(srccard) == baserank; return RANK(srccard) == (1 + RANK(dstcard)) % 13; } return 0; } static void Canfield_newgame(void) { int i; int firstsuit; /* specific part: one card on a stack, 3 on the talon (VDECK) */ firstsuit = SUIT(game.cards[0]); baserank = RANK(game.cards[0]); for (i = 0; i <= firstsuit; ++i) game.ind[i] = 0; for (; i <= rules.numstacks; ++i) game.ind[i] = 1; for (; i <= rules.numstacks + rules.numslots; ++i) game.ind[i] = 1 + i - rules.numstacks; game.ind[LAST_SLOT+1] = 1 + rules.numslots; game.ind[VDECK] = 14 + rules.numslots; /* => 13 on the stock */ game.ind[IDECK] = 17 + rules.numslots; /* => 3 on the talon */ game.ind[IDECK+1] = rules.numcards; for (i = 0; i <= INDEX_OF_LAST_CARD(LAST_SLOT); ++i) game.visible[i] = 1; /* last card on stock and three cards on the talon */ for (i = game.ind[VDECK]-1; i < game.ind[VDECK]+3; ++i) game.visible[i] = 1; } static int Canfield_score(void) { return -52 + 5 * (game.ind[rules.numstacks] - game.counter[1]); } #include "xpatgeo.h" static int Canfield_Layout(void) { int i; struct pilegeometry *p; for (i = FIRST_SLOT; i <= LAST_SLOT; ++i) { p = geo.pg+i; p->x = geo.dx + (i - FIRST_SLOT+1) * (geo.cw + geo.dx); p->y = geo.dy + (geo.ch + geo.dy); p->h = 3 * geo.ch + geo.dy; } for (i = FIRST_STACK; i <= LAST_STACK; ++i) { p = geo.pg+i; p->x = geo.dx + (i+1) * (geo.cw + geo.dx); p->y = geo.dy; } p = geo.pg + LAST_SLOT + 1; /* the stock */ p->x = geo.dx; p->y = geo.dy + (geo.ch + geo.dy)/2; ++p; /* the talon */ p->x = geo.dx; p->y = p[-1].y + (geo.ch + geo.dy); ++p; /* the hand */ p->x = geo.dx; p->y = p[-1].y + (geo.ch + geo.dy); return CANFIELD_MAGIC; } struct rules Canfield_rules = { "Canfield", /* shortname */ NULL, /* longname */ NULL, /* abbrev */ 8, /* layout_hints */ DECK_SOURCE|KLONDIKE_DEAL,/* variant */ 0, /* customizable */ 0, /* customized */ 52, /* numcards */ 4, /* numstacks */ 4, /* numslots */ 1, /* numtmps */ 1, /* numdecks */ 13, /* cards_per_color */ 0, /* numjokers */ {0, 999, 3, 0},/* param[0], param[1], param[2], param[3] */ 0, /* facedown */ 1, /* faceup */ 0, /* newgame_bits */ Canfield_newgame,/* new_game */ NULL, /* game_won */ NULL, /* new_cards */ ES_ALL|US_RA|MG_RA|ST_ONE|DC_ALWAYS, /* move_bits */ NULL, /* deal_cards */ NULL, /* undeal_cards */ NULL, /* stackable */ Canfield_valid, /* movevalid */ NULL, /* valid */ NULL, /* relaxed_valid */ NULL, /* good_hint */ NULL, /* automove */ Canfield_score,/* score */ 208, /* maxscore */ {0, TXTI_FLIP, 0, 0}, /* paramstring blocks */ 0, /* used */ NULL, /* initfunc */ NULL, /* local keyboard bindings */ NULL, Canfield_Layout }; xpat2-1.07/src/xpatgame.h100644 146 144 5442 6711627543 13745 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module xpatgame.h */ /* */ /* Copyright (C) 1993, 1994 by Heiko Eissfeldt and Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* This file is included by all interface-independent sources */ /* */ /* */ /*****************************************************************************/ #ifndef _POSIX_SOURCE #define _POSIX_SOURCE #endif #include "xpat.h" /* special values & defs for the "Move" type */ #define MOVE(srcind, dstpile) ((Move)(srcind) | (Move)((dstpile) << 9)) #define MOVE_TURNED (Move)0x8000 #define DSTPILE(m) (int)((m >> 9) & 63) #define SRCIND(m) (int)(m & 511) /* special moves have bit 15 set and bit 31 also */ #define SPECIAL_MOVE 0x80008000UL #define SPECIAL_MASK 0xffff8000UL #define SPECIAL_ARGS 0x00007fffUL #define COMPOUND_BEGIN 0xfff08000UL #define COMPOUND_END 0xfff18000UL #define ADD_CHEAT 0xfff28000UL /* | value */ #define ROTATE_UP 0xfff38000UL /* | srcind */ #define ROTATE_DOWN 0xfff48000UL /* | srcind */ #define SHUFFLING 0xfff58000UL /* */ /* add others here */ #define NEW_CARDS_MOVE 0xffff8000UL #define NO_MOVE 0xffffffffUL #define DIFFERENT_COLOR(i, j) (((i) ^ (j)) & 2) Move RotateUp(Cardindex); Move RotateDown(Cardindex); Move SlotShuffle(int fwd); void check_win_game(void); void write_log_file(void); Cardindex maxsequence(Pileindex ind, Cardindex cardind); int std_good_hint(int srcindex, int dstpile); void jumpto_movenr(int movenr); /* without graphics! */ Cardindex complete_suit(Pileindex pile, Cardindex i); void check_win_game(void); int in_relaxed_sequence(int srccard, int dstcard); int in_strong_sequence(int srccard, int dstcard); Cardindex slotsequence(Pileindex ind, Cardindex start, Cardindex stop); Cardindex relaxedslotsequence(Pileindex ind, Cardindex start, Cardindex stop); int move_valid(int, int ); int default_movevalid(int, int ); int move_to_stack(Pileindex); int check_new_cards(void); Cardindex stackable(Pileindex); /* rules.c */ void memo_alloc(int); void store_move(Move); int undo_move(void); /* returns 1, if undo possible */ int redo_move(void); /* returns 1, is redo possible */ Move do_move(Cardindex, Pileindex); int all_to_stack(void); Move give_new_cards(void); /* hints.c */ void do_last_hint(void); int generic_automove(Cardindex); /* events.c */ void event_loop(void); void resize_desktop(int w, int h, int request); /* cards.c */ /* void redraw_buttons(int, int, int, int, Window, int, struct singlebutton *); */ void redraw_one_pile(int, int, int, int, int); /* buttons.c */ /* commands.c */ /* loadsave.c */ /* tools.c */ #define PRANDMAX 1000000000L void sprand(long); long prand(void); xpat2-1.07/src/r_Bakers.c100644 146 144 7013 6711644273 13655 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module r_Bakers.c */ /* */ /* Characteristics of the ``Baker's Dozen'' rules */ /* written by Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "xpatgame.h" static void Bakers_new_game(void) { int i, flag, onstack; /* all cards visible */ for (i = 0; i < rules.numcards; ++i) game.visible[i] = 1; onstack = 13 - rules.numslots; /* perhaps cards on the stacks */ for (i = 0; i <= FIRST_SLOT; ++i) game.ind[i] = i * onstack; /* cards on the slots */ for (i = FIRST_SLOT; i <= LAST_SLOT; ++i) game.ind[i+1] = game.ind[i] + rules.facedown + rules.faceup; game.ind[IDECK+1] = rules.numcards; /* sort: 1) cards to the stacks */ for (i = 0; i < rules.numcards; ++i) while (RANK(game.cards[i]) < onstack) { /* card starts on its correct place */ Cardindex j; Card c; c = game.cards[i]; j = onstack * SUIT(c) + RANK(c); if (j == i) /* the correct place */ break; game.cards[i] = game.cards[j]; game.cards[j] = c; } /* sort: 2) kings to the bottom of the piles */ for (i = FIRST_SLOT; i <= LAST_SLOT; ++i) { Cardindex j; do { /* ugly bubble-sort */ flag = 0; for (j = game.ind[i]; j < INDEX_OF_LAST_CARD(i); ++j) if (RANK(game.cards[j]) != King && RANK(game.cards[j+1]) == King) { Card c; flag = 1; c = game.cards[j]; game.cards[j] = game.cards[j+1]; game.cards[j+1] = c; } } while (flag); } } static void Bakers_init(void) { if (rules.numslots < 2) rules.numslots = 2; else if (rules.numslots > 13) rules.numslots = 13; } #include "xpatgeo.h" static int Bakers_Layout(void) { int i, x; struct pilegeometry *p; for (i = FIRST_SLOT; i <= LAST_SLOT; ++i) { p = geo.pg+i; p->x = geo.dx + (i - FIRST_SLOT) / 2 * (geo.cw + geo.dx); p->y = geo.dy + ((i - FIRST_SLOT) % 2) * 2 * (geo.ch + geo.dy); p->h = 2 * geo.ch + geo.dy; } x = geo.dx + (rules.numslots+1)/2 * (geo.cw + geo.dx); for (i = FIRST_STACK; i <= LAST_STACK; ++i) { p = geo.pg+i; p->x = x + (i / 4) * (geo.cw + geo.dx); p->y = geo.dy + (i & 3) * (geo.ch + geo.dy); } return BAKERS_MAGIC; } struct rules Bakers_rules = { "Baker's Dozen",/* shortname */ NULL, /* longname */ "bd", /* abbrev */ 7, /* layout_hints */ NODEAL, /* variant */ CUSTOM_SLOTS,/* customizable */ 0, /* customized */ 52, /* numcards */ 4, /* numstacks */ 13, /* numslots */ 0, /* numtmps */ 1, /* numdecks */ 13, /* cards_per_color */ 0, /* numjokers */ {0, 0, 0, 0},/* param[0], param[1], param[2], param[3] */ 0, /* facedown */ 4, /* faceup */ 0, /* newgame_bits */ Bakers_new_game,/* new_game */ NULL, /* game_won */ NULL, /* new_cards */ ES_NONE|US_R|MG_NONE|DC_ALWAYS|ST_ONE|STACK_SOURCE, /* move_bits */ NULL, /* deal_cards */ NULL, /* undeal_cards */ NULL, /* stackable */ NULL, /* movevalid */ NULL, /* valid */ NULL, /* relaxed_valid */ std_good_hint,/* good_hint */ NULL, /* automove */ NULL, /* score */ 0, /* maxscore */ {0, 0, 0, 0}, /* paramstring blocks */ 0, /* used */ Bakers_init,/* initfunc */ NULL, /* local keyboard bindings */ NULL, Bakers_Layout }; xpat2-1.07/src/Imakefile100644 146 144 17137 7201327546 13616 0ustar mbimathoptXCOMM ######################################################################### XCOMM ## ### XCOMM ## MODULE : Imakefile ### XCOMM ## LONGNAME : X-Patience / Imakefile ### XCOMM ## AUTHOR : Christian Anzenberger ### XCOMM ## E-MAIL : christian.anzenberger@siemens.at ### XCOMM ## CREATION : 1999-01-26 ### XCOMM ## NOTES : Multiplatform Version, see table below ### XCOMM ## ### XCOMM ######################################################################### XCOMM ## HISTORY OF CHANGE: ### XCOMM ##-------+--------+--------------------------------------------+------### XCOMM ## VERS. | DATE | CHANGES |AUTHOR### XCOMM ##-------+--------+--------------------------------------------+------### XCOMM ## 1.00 |19990126| derived from original xpat2-1.04 Imakefile | ac ### XCOMM ## |19991106| adapted to xpat2-1.06 | ac ### XCOMM ## |19991108| machine dep. settings moved to Xpat.tmpl | ac ### XCOMM ######################################################################### XCOMM ######################################################################### XCOMM ## Check the settings in this file before running imake ### XCOMM ######################################################################### #include "Xpat.tmpl" XCOMM ######################################################################### XCOMM ## You shouldn't need to change anything below this point ### XCOMM ######################################################################### #ifdef useXlib KIT_OPTION = -DuseXlib #ifdef USE_ROUND_CARDS KIT_LIBS = $(XMULIB) $(XLIB) #else KIT_LIBS = $(XLIB) #endif KIT_OBJS = Xlib-buttons.o Xlib-main.o Xlib-windows.o Xlib-events.o DEPLIBS = $(DEPXLIB) #endif #ifdef useXaw KIT_OPTION = -DuseXaw KIT_LIBS = XawClientLibs # $(XMULIB) $(XTOOLLIB) #ifdef USE_ONLINEHELP HELPOBJ = Xaw-help.o #else HELPOBJ = #endif KIT_OBJS = Xaw-main.o $(HELPOBJ) DEPLIBS = XawClientDepLibs #endif #ifdef useXm1 #define useXm KIT_OPTION = -DuseXm1 -DuseXm KIT_LIBS = $(XMLIB) $(XMULIB) $(XTOOLLIB) $(XLIB) #define USE_XPM #ifdef USE_ONLINEHELP HELPOBJ = Xm1-help.o #else HELPOBJ = #endif KIT_OBJS = Xm1-main.o $(HELPOBJ) DEPLIBS = $(DEPXLIB) #endif #ifdef useXm2 #define useXm KIT_OPTION = -DuseXm2 -DuseXm KIT_LIBS = $(XMLIB) $(XMULIB) $(XTOOLLIB) $(XLIB) #define USE_XPM #ifdef USE_ONLINEHELP HELPOBJ = Xm-help.o #else HELPOBJ = #endif #ifdef GNOMESTYLE #define FLAT_BUTTONS #endif #ifdef KDESTYLE #define FLAT_BUTTONS #undef GNOMESTYLE #endif #ifdef FLAT_BUTTONS FLATBOBJ = Xm-tbflatb.o #else FLATBOBJ = #endif KIT_OBJS = Xm-main.o Xm-appwin.o Xm-appif.o Xm-file.o $(HELPOBJ) \ Xm-about.o Xm-dialog.o Xm-cbstd.o Xm-cbapp.o $(FLATBOBJ) \ Xm-pixmap.o Xm-args.o Xm-fbres.o Xm-platform.o DEPLIBS = $(DEPXLIB) #endif #ifdef useXview KIT_OPTION = -DuseXview -I$(OWINCDIR) KIT_LIBS = -L$(OWLIBDIR) -lxview $(XMULIB) $(XLIB) KIT_OBJS = Xv-main.o Xv-events.o #endif #ifdef useXQt KIT_OPTION = -DuseXQt -I$(QTINCDIR) KIT_LIBS = -L$(QTLIBDIR) -lqt KIT_OBJS = XQtCards.o XQtCrdPile.o moc_XQtCP.o XQt-main.o \ XQtTableau.o XQtWindow.o moc_XQtT.o moc_XQtW.o \ XQtCrdsDlg.o moc_XQtC.o XQtMarkCrd.o XQtArrows.o \ mqmaskedit.o qmaskedit.o qhelpwin.o mqhelpwin.o DEPLIBS = $(DEPXLIB) #endif #ifdef USE_ONLINEHELP HELP_OPTION = -DONLINE_HELP #else HELP_OPTION = #endif #ifdef FLAT_BUTTONS FLATB_OPTION = -DFLAT_BUTTONS #ifdef GNOMESTYLE FLATB_OPTION = -DFLAT_BUTTONS -DGNOMESTYLE #endif #ifdef KDESTYLE FLATB_OPTION = -DFLAT_BUTTONS -DKDESTYLE #endif #else FLATB_OPTION = #endif #ifdef USE_ROUND_CARDS ROUND_OPTION = #else ROUND_OPTION = -DNO_ROUND_CARDS #endif #ifdef USE_SOUND SOUND_OPTION = -DSOUND #ifndef SOUNDOBJ SOUNDOBJ = X-sound_SUN.o #endif #else SOUND_OPTION = SOUNDOBJ = #endif #ifdef USE_CARD_CONSTRUCTION GFXOBJ = X-gfx2.o GFX_OPTION = -DGFX2 #define USE_XPM #else GFXOBJ = X-gfx1.o GFX_OPTION = -DGFX1 #endif #ifdef USE_LOADCARDS LOAD_OPTION = -DLOADCARDS #else LOAD_OPTION = #endif #ifdef USE_XPM XPM_OPTION = $(XPMINCLUDE) #else XPM_OPTION = -DNO_XPM XPM_LIB = #endif LOCAL_LIBRARIES = $(XPMLIB) $(KIT_LIBS) $(SOUNDLIB) VER=1.06 XCOMM ######################################################################### XCOMM ## Rules ### XCOMM ######################################################################### #ifdef useXQt XOBJS = #else XOBJS = X-events.o X-layout.o X-expose.o X-cards.o \ X-markcard.o X-arrows.o X-widget.o $(GFXOBJ) #endif STDOBJS = rules.o commands.o messages.o hints.o layout.o \ arrows.o loadsave.o util.o moves.o $(SOUNDOBJ) \ r_Klondike.o r_Spider.o r_Delight.o r_MonteCarlo.o \ r_Midnight.o r_Gypsy.o r_Seahaven.o r_FreeCell.o \ r_Calculatio.o r_Michaels.o r_Royal.o r_Canfield.o \ r_mdCanfield.o r_Bakers.o r_Oonsoo.o r_BlueMoon.o OBJS = $(STDOBJS) $(XOBJS) $(KIT_OBJS) MYPROG = xpat2 LANGUAGES = italian german russian french de_DE fr_FR it_IT DEFINES = $(LOAD_OPTION) $(HELP_OPTION) $(KIT_OPTION) $(ROUND_OPTION) \ $(SOUND_OPTION) $(XPM_OPTION) $(GFX_OPTION) \ -DSCOREFILE=\"$(SCOREFILE)\" -DLIBDIR=\"$(XPATLIBDIR)\" XCOMM Dependencies: XCOMM *.c require version.h xpat.h xpatgame.h XCOMM X*.c additionally require X-pat.h and Tableau.h XCOMM X-widget.c additionally requires TableauP.h all:: $(MYPROG) install:: $(MYPROGS) mkdirhier $(XPATLIBDIR) chmod 755 $(XPATLIBDIR) for f in $(LANGUAGES); do \ mkdirhier $(APPDEFSDIR)/$$f/app-defaults; \ cp ../lib/$$f/XPat $(APPDEFSDIR)/$$f/app-defaults; \ chmod 755 $(APPDEFSDIR)/$$f/app-defaults; \ chmod 644 $(APPDEFSDIR)/$$f/app-defaults/XPat; \ done (cd ../lib; tar cf - * | (cd $(XPATLIBDIR); tar xf -)) chown -R root $(XPATLIBDIR) chmod -R a+r $(XPATLIBDIR) for f in $(LANGUAGES); do \ chmod 755 $(XPATLIBDIR)/$$f; \ done mkdirhier $(XPATMANDIR) cp xpat2.man $(XPATMANDIR)/xpat2.6x chmod 644 $(XPATMANDIR)/xpat2.6x ComplexProgramTarget($(MYPROG)) InstallAppDefaults(XPat) install.fsstnd: $(MAKE) install mkdirhier /usr/games/bin chmod 755 /usr/games/bin mv $(BINDIR)/xpat2 /usr/games/bin install.local: $(MYPROGS) mkdirhier $(LXPATBINDIR) $(LXPATMANDIR) $(XPATLIBDIR) \ $(LAPPDEFSDIR)/app-defaults chmod 755 $(XPATLIBDIR) $(LXPATMANDIR) $(LAPPDEFSDIR)/app-defaults for f in $(LANGUAGES); do \ mkdirhier $(LAPPDEFSDIR)/$$f/app-defaults; \ cp ../lib/$$f/XPat $(LAPPDEFSDIR)/$$f/app-defaults; \ chmod 755 $(LAPPDEFSDIR)/$$f/app-defaults; \ chmod 644 $(LAPPDEFSDIR)/$$f/app-defaults/XPat; \ done cp XPat.ad $(LAPPDEFSDIR)/app-defaults/XPat chmod 755 $(LAPPDEFSDIR)/app-defaults/XPat (cd ../lib; tar cf - * | (cd $(XPATLIBDIR); tar xf -)) chmod -R a+r $(XPATLIBDIR) for f in $(LANGUAGES); do \ chmod 755 $(XPATLIBDIR)/$$f; \ done cp xpat2 $(LXPATBINDIR) chmod 755 $(LXPATBINDIR)/xpat2 cp xpat2.man $(LXPATMANDIR)/xpat2.6x chmod 644 $(LXPATMANDIR)/xpat2.6x XCOMM Dependecies for the Qt interface: moc_XQtCP.cpp: XQtCardPile.h $(MOC) -o moc_XQtCP.cpp XQtCardPile.h moc_XQtT.cpp: XQtTableau.h $(MOC) -o moc_XQtT.cpp XQtTableau.h moc_XQtW.cpp: XQtWindow.h $(MOC) -o moc_XQtW.cpp XQtWindow.h mqmaskedit.cpp: qmaskedit.h $(MOC) -o mqmaskedit.cpp qmaskedit.h mqhelpwin.cpp: qhelpwin.h $(MOC) -o mqhelpwin.cpp qhelpwin.h moc_XQtC.cpp: XQtCards.h $(MOC) -o moc_XQtC.cpp XQtCards.h xpat2-1.07/src/X-sound_SUN.c100644 146 144 1752 6712345234 14207 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module sound-SUN.c */ /* */ /* written by Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "xpat.h" #ifndef AUDIO_DEVICE #define AUDIO_DEVICE "/dev/audio" #endif void play_sound(const char *filename) { static int audio = 1; if (audio && checksound()) { char fullname[200]; FILE *fp, *fsnd; int c; if (!(fsnd = fopen(AUDIO_DEVICE, "wb"))) { audio = 0; return; /* cannot open /dev/audio */ } flush_display(); sprintf(fullname, "%s/audio/%s.au", LIBDIR, filename); if (!(fp = fopen(fullname, "rb"))) { fclose(fsnd); return; } /* yeah, copy data */ while ((c = getc(fp)) != EOF) fputc(c, fsnd); fclose(fsnd); fclose(fp); } } xpat2-1.07/src/XPat.ad100644 146 144 12133 7201334432 13146 0ustar mbimathopt! Application Defaults for XPat2 (english) ! Christian Anzenberger 1999 03 21 XPat.AboutText: \ -*-lucida sans-medium-r-normal-sans-14-*-*-*-*-*-*-*=Regular,\ -*-new century schoolbook-bold-i-normal--18-*-*-*-*-*-*-*=BoldItalic ! shellMain XPat.title: X-Patience XPat.baseWidth: 640 XPat.baseHeight: 480 XPat.minWidth: 320 XPat.minHeight: 240 XPat.iconPixmap: xpat2.icon.pm XPat*background: grey XPat*fontList: -adobe-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-* ! cascadeGame XPat*cascadeGame.labelString: Game ! butGameNew XPat*butGameNew.labelString: New Game ! butGameLoad XPat*butGameLoad.labelString: Load Game ... ! butGameSave XPat*butGameSave.labelString: Save Game ... ! butGameExit XPat*butGameExit.labelString: Exit ! cascadeRules XPat*cascadeRules.labelString: Rules ! cascadeActions XPat*cascadeActions.labelString: Actions ! butActionsUndo XPat*butActionsUndo.labelString: Undo ! butActionsRedo XPat*butActionsRedo.labelString: Redo ! butActionsReplay XPat*butActionsReplay.labelString: Replay ! butActionsRestart XPat*butActionsRestart.labelString: Restart ! butActionsCards XPat*butActionsCards.labelString: Cards ! butActionsMovetostack XPat*butActionsMovetostack.labelString: Move to Stack ! cascadeOptions XPat*cascadeOptions.labelString: Options ! toggleOptionsSound XPat*toggleOptionsSound.labelString: Sound On ! toggleOptionsToolbar XPat*toggleOptionsToolbar.labelString: Show Toolbar ! butOptionsDropbookmark XPat*butOptionsDropbookmark.labelString: Drop Bookmark ! butOptionsGotobookmark XPat*butOptionsGotobookmark.labelString: Go to Bookmark ! cascadeHelp XPat*cascadeHelp.labelString: Help ! cascadeHelpRules XPat*cascadeHelpRules.labelString: Help on Rules ! butHelpKeys XPat*butHelpKeys.labelString: Help on Keys ... ! butHelpHint XPat*butHelpHint.labelString: Hint ! butHelpScore XPat*butHelpScore.labelString: Score ... ! butHelpLicense XPat*butHelpLicense.labelString: License ... ! butHelpAbout XPat*butHelpAbout.labelString: About ... ! butTbCards XPat*butTbCards.labelType: PIXMAP XPat*butTbCards.labelPixmap: DealCard.m.pm ! butTbUndo XPat*butTbUndo.labelType: PIXMAP XPat*butTbUndo.labelPixmap: Undo.m.pm XPat*butTbUndo.labelInsensitivePixmap: UndoU.m.pm ! butTbRedo XPat*butTbRedo.labelType: PIXMAP XPat*butTbRedo.labelPixmap: Redo.m.pm XPat*butTbRedo.labelInsensitivePixmap: RedoU.m.pm ! butTbReplay XPat*butTbReplay.labelType: PIXMAP XPat*butTbReplay.labelPixmap: Replay.m.pm XPat*butTbReplay.labelInsensitivePixmap: ReplayU.m.pm ! butTbRestart XPat*butTbRestart.labelType: PIXMAP XPat*butTbRestart.labelPixmap: Restart.m.pm XPat*butTbRestart.labelInsensitivePixmap: RestartU.m.pm ! butTbMovetostack XPat*butTbMovetostack.labelType: PIXMAP XPat*butTbMovetostack.labelPixmap: ToStack.m.pm ! butTbHint XPat*butTbHint.labelType: PIXMAP XPat*butTbHint.labelPixmap: Hint.m.pm ! drawpane XPat*drawpane.background: DarkOliveGreen4 XPat*drawpane.marginWidth: 320 XPat*drawpane.marginHeight: 200 ! shellDialogFile XPat*shellDialogFile.title: Load Game ! fileselDialogFile XPat*fileselDialogFile.noMatchString: No saved games. ! labelFileFiles XPat*fileselDialogFile.Items.labelString: Files ! labelFileFilter XPat*fileselDialogFile.FilterLabel.labelString: Filter ! labelFileDirs XPat*fileselDialogFile.Dir.labelString: Directories ! optmenuFileSetfilter XPat*optmenuFileSetfilter.labelString: Show Saved Games: ! butFileSetfilterAll XPat*butFileSetfilterAll.labelString: All Games ! shellDialogHelp XPat*shellDialogHelp.baseWidth: 440 XPat*shellDialogHelp.baseHeight: 440 XPat*shellDialogHelp.minWidth: 200 XPat*shellDialogHelp.minHeight: 200 ! msgboxHelp XPat*shellDialogHelpText.title: Help ! butHelpClose XPat*butHelpTextClose.labelString: Close ! shellDialogHelpAbout XPat*shellDialogHelpAbout.title: About X-Patience ! labelHelpAboutSymbol XPat*labelHelpAboutSymbol.labelType: PIXMAP XPat*labelHelpAboutSymbol.labelPixmap: Xpat2.l.pm ! labelHelpAboutSymbolB XPat*labelHelpAboutSymbolB.labelType: PIXMAP XPat*labelHelpAboutSymbolB.labelPixmap: Xpat2B.l.pm ! labelHelpAboutText ! labelHelpAboutVersion XPat*labelHelpAboutVersion.mappedWhenManaged: false XPat*labelHelpAboutVersion.labelString: X-Patience 2\nVersion 1.04.M\n(Alpha Motif GUI)\nfor Solaris 2.x ! labelHelpAboutAuthors XPat*labelHelpAboutAuthors.mappedWhenManaged: false XPat*labelHelpAboutAuthors.labelString: Game written by Heiko Eissfeldt and\nMichael Bischoff (c) 1993, 1994.\nMotif GUI designed and created by\nChristian Anzenberger (c) 1999.\nSee COPYRIGHT files for details. ! butHelpAboutVersion XPat*butHelpAboutVersion.labelString: Version ! butHelpAboutAuthors XPat*butHelpAboutAuthors.labelString: Authors ! butHelpAboutClose XPat*butHelpAboutClose.labelString: Close ! shellDialogConfirm XPat*shellDialogConfirm.title: ! labelConfirmText XPat*msgboxConfirm.MessageLabel.labelString: Exit X-Patience? ! shellDialogError XPat*shellDialogError.title: ! butErrorCancel XPat*msgboxError.Cancel.labelString: Dismiss ! labelErrorText XPat*msgboxError.MessageLabel.labelString: Please select a saved game xpat2-1.07/src/X-sound_FM.c100644 146 144 10147 6714243756 14072 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module X-sound-FM.c */ /* */ /* simple ding-di-dong using an Adlib card (no digitized samples) */ /* written by Michael Bischoff */ /* based on fmtest.c by Rob Hooft */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "X-pat.h" /* FMTEST by Rob Hooft (hooft@chem.ruu.nl) */ /* modified by M. Bischoff */ #include #include #include #include #include #include #include static int sb; static char sbbuf[404]; static int sbptr = 0; static void sbflush(void) { if (!sbptr) return; if (write(sb, sbbuf, sbptr) == -1) { perror("write sb"); exit(EXIT_FAILURE); } sbptr=0; } static void sbwrite(char *msg) { if (sbptr>400) sbflush(); memcpy(&sbbuf[sbptr], msg, 4); sbptr +=4; } static void midich(char c) { char buf[4]; buf[0] = 5; buf[1] = c; sbwrite(buf); } static void noteon(int chan,int pitch,int vol) { char buf[4]; #ifdef DEBUG printf("Note on, chan=%d pitch=%d vol=%d\n",chan+1,pitch,vol); #endif if (chan >= 0) { buf[0] = SEQ_FMNOTEON; buf[1] = chan; buf[2] = pitch; buf[3] = vol; sbwrite(buf); } else { midich(0x90+chan); midich(pitch); midich(vol); } } static void noteoff(int chan,int pitch,int vol) { char buf[4]; #ifdef DEBUG printf("Note off, chan=%d pitch=%d vol=%d\n",chan+1,pitch,vol); #endif if (chan >= 0) { buf[0] = SEQ_FMNOTEOFF; buf[1] = chan; buf[2] = pitch; buf[3] = vol; sbwrite(buf); } else { midich(0x80+chan); midich(pitch); midich(vol); } } static void wait(int delay) { int jiffies; jiffies = (delay << 8) | SEQ_WAIT; sbwrite((char*)&jiffies); } #define CHANNELS 4 static void do_music(XEvent *xev) { static long mask = KeyPressMask | ButtonPressMask | ExposureMask; /* | StructureNotifyMask */ char buf[100]; int channel; struct dong { int off; int volume; int note; } dong[CHANNELS]; fprintf(stderr, "do_music called, audio = %d\n", audio); XSync(dpy, 0); /* wait for graphic to be finished */ if (!audio) { wait_event(xev); return; } start: while (XCheckWindowEvent(dpy, table, mask, xev)) { /* printf("xev->type is %d\n", xev->type); */ if (xev->xany.type == Expose) redraw_table((XExposeEvent *)xev); else if (xev->xany.type != NoExpose) return; } if ((sb=open("/dev/sequencer", O_WRONLY, 0))==-1) { sleep(1); goto start; /* retry the open */ } for (channel = 0; channel < CHANNELS; ++channel) { buf[0] = SEQ_FMPGMCHANGE; buf[1] = channel; buf[2] = 9; /* nr_instr; */ sbwrite(buf); dong[channel].off = 0; } channel = 0; { int tm, tt; struct dong *ch; tt = tm = 3; for (;;) { int delay; /* select next channel */ channel = (channel + 1) % CHANNELS; ch = dong + channel; wait(tm); if (dong[channel].off) { noteoff(channel, ch->note, ch->volume); tt += 3; wait (tm+=3); } ch->off = 1; ch->note = 5 + rand() % 30; ch->volume = 32 + rand() % 32; noteon(channel, ch->note, ch->volume); delay = 5 + rand() % 40; tt += delay; tm += delay; while (tt > 200) { sbflush(); while (XCheckWindowEvent(dpy, table, mask, xev)) { /* printf("xev->type is %d\n", xev->type); */ if (xev->xany.type == Expose) redraw_table((XExposeEvent *)xev); else if (xev->type != NoExpose) { /* abort */ for (channel = 0; channel < CHANNELS; ++channel) if (dong[channel].off) noteoff(channel, dong[channel].note, dong[channel].volume); sbflush(); close(sb); return; } } tt -= 100; /* 100 jiffies = 1 second */ sleep(1); } } } } void play_sound(const char *filename) { if (!strcmp(filename, "success") && checksound()) { XEvent xev; do_music(&xev); } } xpat2-1.07/src/xpat2.man100644 146 144 22346 6717341474 13545 0ustar mbimathopt.TH XPAT2 6 "June 1994" "Handmade" .SH NAME xpat2 \- generic patience game for X11 .SH SYNOPSIS .B xpat2 [ .I options ] [ .I seed ] [ .I saved game ] .SH DESCRIPTION .I xpat2 is the successor of \fBxpat\fP, a generic patience game which can be used with different rule sets. It does understand the rules of the well-known .I Spider game, as well as .I Klondike and others. It features a flexible layout which responds to window resize commands and possibilities to customize the existing rules. .I xpat2 has either a bitmap-based card drawing routine or a pixmap based routine (selectable at compile time). With the pixmap based drawing routine, antialiased colour images of the rank and suit symbols are supplied. The bitmap card images are black and red by default, but users can supply images of complete colour cards in XPM format. .I xpat2 may be compiled with the Athena widget set (or its nicer replacement, the Xaw3d widget set), or with a standard Xlib interface. The command line parameters and X resource names of these versions differ. This manual page describes only the Athena widget version, for the Xlib options please refer to the .I xpat manual page. .SH RULE CUSTOMIZATION OPTIONS .TP 4 .B \-rules \fIrule name\fP (Resource: \fBTableau.rules\fP) This option specifies the initial rule set for \fIxpat\fP. Valid rule names are \fBGypsy\fP, \fBSpider\fP, \fBFreeCell\fP, \fBKlondike\fP, and \fBSeahaven\fP, \fBMonte Carlo\fP, \fBCalculation\fP, \fBCanfield\fP, \fBBaker's Dozen\fP, and others. Supply an invalid rule name to see a complete listing. The initial rule set may also be given by the name of the executable (capitalisation is important). A predefined rule set may be customized by the following options, but not all options apply to every rule set. .TP 4 .B \-slots \fIslots\fP (Resource: \fBTableau.slots\fP) Use a different number of slots. .TP 4 .B \-tmps \fItmps\fP (Resource: \fBTableau.tmps\fP) Use a different number of temporary storage places. .TP 4 .B \-decks \fIdecks\fP (Resource: \fBTableau.decks\fP) Use a different number of decks. Every deck has a full set of 52 cards. This option does also set the number of stacks. (To 4 times the number of decks, naturally.) .TP 4 .B \-facedown \fInumber\fP (Resource: \fBTableau.facedown\fP) Specifies the number of cards per slot which are initially dealt face-down (i.e. invisible). .TP 4 .B \-faceup \fInumber\fP (Resource: \fBTableau.faceup\fP) Specifies the number of cards per slot which are initially dealt face-up. .TP 4 .B \-jokers \fInumber\fP (Resource: \fBTableau.jokers\fP) Specifies the number of jokers in the game (increasing the number of cards). With jokers, you have to put all ordinary cards onto the stacks and keep the jokers on the slots. .TP 4 .B \-relaxed \fInumber\fP .B \-flips \fInumber\fP .B \-turn \fInumber\fP .B \-rotations \fInumber\fP (Resource: \fBTableau.relaxed\fP to \fBTableau.rotations\fP) Defines game specific customisation parameters. .TP 4 .B \-rng \fInumber\fP (Resource: \fBTableau.rng\fP) This option affects the random number generator. rng 0 (used up to version 1.03 of xpat2) has been found to generate not uniformly distributed permutations. You may activate it to be able to replay old saved games. The default is rng 1. .SH GRAPHIC OPTIONS All standard X toolkit parameters may be given, such as .TP 4 .B \-display \fIdisplay\fP Specifies on which display to run. .TP 4 .B \-geometry \fIgeometry\fP (Resource: \fBgeometry\fP) Specifies the initial geometry. Other options are: .TP 4 .B \-cards \fIcardset\fP (Resource: \fBTableau.cards\fP) \fIcardset\fP is the filename of an external bitmap card set which will be used instead of the built-in cardset. There are two card sets, namely \fB small\fP and \fB french\fP. You can also give the full pathname of a cardset here. .TP 4 .B \-xpmdir \fIxpmdir\fP (Resource: \fBTableau.xpmdir\fP) Tells \fIxpat2\fP to search \fIxpmdir\fP for colour replacements of the card images. The filenames searched for are \fBJoker.xpm\fP and \fIRank.Suit\fP\fB.xpm\fP, where \fIRank\fP is one of \fBTwo\fP to \fBTen\fP, or one of \fBJack, Queen, King, Ace\fP. The display must be capable of displaying all images at the same time. For a 256-colour display, no more than 128 colours should be used for all card images together. An additional file, \fBCardback.xpm\fP, may give you nice cardbacks. If the directory name \fIxpmdir\fP does not start with a dot or a slash, it is interpreted as a subdirectory of \fB/usr/games/lib/xpat\fP. .TP 4 .B \-xpmcls \fIxpmcls\fP (Resource: \fBTableau.xpmcls\fP) Tells \fIxpat2\fP to allow using colours of the given closeness when allocation of the real colour fails during the reading of an xpm file. This option is useful on 8-bit X-servers when many colours are already allocated by other applications (typically when using a KDE desktop). .TP 4 .B \-tb \fIcolor\fP (Resource: \fBTableau.background\fP) Sets the background color to \fIcolor\fP. The default is \fBLightSlateGrey\fP. .TP 4 .B \-cb \fIcolor\fP (Resource: \fBTableau.cardbackColor\fP) Sets the background color of the cards to \fIcolor\fP. The default is \fBSlateGrey\fP. This option is not in effect when an XPM replacement for the cardback is used. .TP 4 .B \-markwidth \fIwidth\fP (Resource: \fBTableau.markWidth\fP) Sets the width of the dashed frame which marks selected cards. If this width is at least half of the card width, marked cards will be shaded. The default is to shade the cards. .TP 4 .B \-markcolor \fIcolor\fP (Resource: \fBmarkColor\fP) Sets the color of the marking frame. .TP 4 .B \-sound, \-nosound (Resource: \fBSound.state\fP) Enables or Disables sound. .SH NATIVE LANGUAGE SUPPORT \fBxpat2\fP has simple support for different languages. All messages which appear in the X11 window may be overloaded by files, as well as the key bindings. The typical support consists of an application-defaults file, a message file, and a keyboard file. Possibly translated online-help files are also there. To select a different language, call \fBxpat2\fP after setting the environment variable \fBLANG\fP to the desired value. Some ISO3166 language codes will be mapped to their correspondig xpat2 directory names. Currently, italian and german versions are available, and fragments of a french and russian version. The russian version requires a special cyrillic font, \fBsq01\fP. The bdf-file is distributed with \fBxpat2\fP, you have to convert it into a format supported by your X-server (pcf, snf, ...) .SH FILES (Directories may differ on your system, especially the library subdirectory may be \fB/usr/games/lib/xpat\fP instead of \fB/usr/lib/games/xpat\fP.) \fB/usr/games/xpat2\fP \fB/var/lib/games/xpat2/xpat.log\fP \fB/usr/doc/copyright/xpat2\fP \fB/usr/lib/games/xpat/small.cards\fP \fB/usr/lib/games/xpat/french.cards\fP \fB/usr/lib/games/xpat/audio/success.au\fP \fB/usr/lib/games/xpat/audio/giveup.au\fP \fB/usr/lib/games/xpat/audio/goodbye.au\fP \fB/usr/lib/games/xpat/audio/cannotsave.au\fP \fB/usr/lib/games/xpat/help.*\fP \fB/usr/lib/games/xpat/hlp*\fP and a number of subdirs of \fB/usr/lib/games/xpat\fP, containing sets of colour cards. .SH DIAGNOSTICS Almost none. (Type '\fBv\fP' to see the version number. This is the man-page of xpat2 version 1.06, using Athena Widgets. The game may behave somewhat different when used with another widget set.) .SH BUGS Correct cheat counting is not implemented in all rules. Only a few rule customisations are checked and meaningful. The Motif/Lesstif and Xview interfaces doesn't work reliable. Any volunteers? \fBxpat2\fP uses a lot of colours when compiled with the module \fBX-gfx2\fP and may therefore fail to start if you have an 8-bit or monochrome display. In this case, compile the game using the graphics loader \fBX-gfx1\fP, which uses the original card images from \fBspider\fP or start the game using the option \fB-cards french\fP, which uses monochrome card graphics from the file \fBfrench.cards\fP. On 8-bit displays you can also experiment with the \fB-xpmcls\fP option. There is a problem with X-servers which are short on memory. In this case, some parts of the xpat2 window may be left blank after a resize event. You have to hit to get the window redrawn correctly. Please mail bug reports to \fBMichael.Bischoff@gmx.net\fP. Fixes are especially welcome. .SH SEE ALSO \fBxpat(6x)\fP, \fBspider(1)\fP, \fBxsol(1)\fP .SH AUTHORS Heiko Eissfeldt and Michael Bischoff .SH COPYRIGHT Copyright (c) 1994 by Heiko Eissfeldt and Michael Bischoff .br (\fBheiko@colossus.escape.de\fP and \fBmbi@mo.math.nat.tu-bs.de\fP) .sp 1 Copyright (c) 1990 by David Lemke & Network Computing Devices, Inc. .br (\fBlemke@ncd.com\fP) .sp 1 Copyright 1990 Heather Rose and Sun Microsystems, Inc. .sp 1 Copyright (c) 1989, Donald R. Woods and Sun Microsystems, Inc. Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. \fBxpat\fP and \fBxpat2\fP were developed under Linux, the free UNIX for the IBM-PC and compatibles. \fBxpat\fP is based on the game \fBspider\fP. All new code which is not covered by \fBspider\fP copyrights is distributed by terms of the GNU General public license (GNU Copyleft). xpat2-1.07/src/r_Calculatio.c100644 146 144 6333 5556023412 14522 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module r_Calculation.c */ /* */ /* Characteristics of the ``Calculation'' rules */ /* written by Michael Bischoff (mbi@mo.math.nat.tu-bs.de) */ /* 04-Apr-1994 */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "xpatgame.h" #define A 1 #define J 11 #define Q 12 #define K 13 static int order[4][13] = { { A,2,3,4,5,6,7,8,9,10,J,Q,K }, { 2,4,6,8,10,Q,A,3,5,7,9,J,K }, { 3,6,9,Q,2,5,8,J,A,4,7,10,K }, { 4,8,Q,3,7,J,2,6,10,A,5,9,K } }; static void Calc_newgame(void) { int i; /* specific part: all cards on the vdeck, except 4 starting cards */ for (i = 0; i <= VDECK; ++i) game.ind[i] = rules.numstacks * rules.faceup; game.ind[IDECK] = rules.numcards; for (i = 0; i < rules.numstacks; ++i) game.ind[i] = i * rules.faceup; for (i = 0; i < rules.numstacks; ++i) { /* swap cards such that first cards are OK */ int j, rem; for (j = 0; j < rules.faceup; ++j) { int h; rem = rules.numcards; do --rem; while (RANK(game.cards[rem]) != order[i&3][j] - 1); h = game.cards[i*rules.faceup+j]; game.cards[i*rules.faceup+j] = game.cards[rem]; game.cards[rem] = h; } } for (i = 0; i < rules.numcards; ++i) game.visible[i] = 1; } static int Calc_movevalid(Cardindex src, Pileindex dst) { switch (game.piletype[dst]) { case Stack: return RANK(game.cards[src]) + 1 == order[dst&3][CARDS_ON_PILE(dst)]; case Slot: return game.piletype[getpile(src)] == FaceupDeck; default: return 0; } } static int Calc_good_hint(Cardindex src, Pileindex dst) { switch (game.piletype[dst]) { case Stack: return 100; case Slot: return 1; /* do not display */ default: return 0; } } static void Calc_check(void) { if (rules.faceup >= 13) { fprintf(stderr, "Calculation cannot be played with more than 12 faceup cards!\n"); exit(EXIT_FAILURE); } } struct rules Calculation_rules = { "Calculation",/* shortname */ NULL, /* longname */ "calc", /* abbrev */ 0, /* layout_hints */ DECK_SOURCE|STACKS_MULTI|NODEAL,/* variant */ CUSTOM_FACEUP,/* customizable */ 0, /* customized */ 52, /* numcards */ 4, /* numstacks */ 4, /* numslots */ 0, /* numtmps */ 1, /* numdecks */ 13, /* cards_per_color */ 0, /* numjokers */ {0, 0, 0, 0},/* param[0], param[1], param[2], param[3] */ 0, /* facedown */ 1, /* faceup */ 0, /* newgame_bits */ Calc_newgame,/* new_game */ NULL, /* game_won */ NULL, /* new_cards */ MG_NONE|ST_ONE|DC_ALWAYS, /* move_bits */ NULL, /* deal_cards */ NULL, /* undeal_cards */ NULL, /* stackable */ Calc_movevalid,/* movevalid */ NULL, /* valid */ NULL, /* relaxed_valid */ Calc_good_hint,/* good_hint */ NULL, /* automove */ NULL, /* score */ 0, /* maxscore */ {0, 0, 0, 0}, /* paramstring blocks */ 0, /* used */ Calc_check, /* initfunc */ NULL, /* local keyboard bindings */ }; xpat2-1.07/src/r_mdCanfield.c100644 146 144 6776 5642311473 14506 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module r_Canfield.c */ /* */ /* Characteristics of the ``Canfield'' rules */ /* written by Michael Bischoff (mbi@mo.math.nat.tu-bs.de) */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "xpatgame.h" static int baserank; static int Canfield_valid(Cardindex srcind, Pileindex dstpile) { int srcpile, dstcard, srccard; srcpile = getpile(srcind); if (srcpile == dstpile) return 0; if (game.piletype[srcpile] == Stack) return 0; dstcard = EMPTY(dstpile) ? -1 : game.cards[game.ind[dstpile+1]-1]; srccard = game.cards[srcind]; switch (game.piletype[dstpile]) { case Slot: /* moves to Slot: depends on if slot is empty */ if (EMPTY(dstpile)) return srcpile == IDECK || (EMPTY(IDECK) && srcpile == VDECK); /* dstpile not empty: rank and alternate colour! */ if (!in_relaxed_sequence(srccard, dstcard)) return 0; if (game.piletype[srcpile] == Slot && srcind != INDEX_OF_FIRST_CARD(srcpile)) return 0; return 1; case Tmp: case FaceupDeck: case FacedownDeck: return 0; /* only implicit moves allowable */ case Stack: if (srcind != INDEX_OF_LAST_CARD(srcpile)) return 0; /* only one card at a time */ if (SUIT(srccard) != SUIT(dstpile)) return 0; if (EMPTY(dstpile)) return RANK(srccard) == baserank; return RANK(srccard) == (1 + RANK( game.cards[INDEX_OF_LAST_CARD(dstpile)])) % 13; } return 0; } static void Canfield_newgame(void) { int i; int firstsuit; /* specific part: one card on a stack, 3 on the talon (VDECK) */ for (i = 0; i < rules.numcards; ++i) game.visible[i] = 1; firstsuit = SUIT(game.cards[0]); baserank = RANK(game.cards[0]); for (i = 0; i <= firstsuit; ++i) game.ind[i] = 0; for (; i <= rules.numstacks; ++i) game.ind[i] = 1; for (; i <= rules.numstacks + rules.numslots; ++i) game.ind[i] = 1 + i - rules.numstacks; game.ind[VDECK] = 1 + rules.numslots; game.ind[IDECK] = 4 + rules.numslots; /* => 3 on the talon */ game.ind[IDECK+1] = rules.numcards; } static int Canfield_score(void) { return -52 + 5 * (game.ind[rules.numstacks] - game.counter[1]); } struct rules modCanfield_rules = { "modCanfield", /* shortname */ "modified Canfield",/* longname */ "modcan", /* abbrev */ 0, /* layout_hints */ DECK_SOURCE|DECK_VISIBLE|KLONDIKE_DEAL,/* variant */ 0, /* customizable */ 0, /* customized */ 52, /* numcards */ 4, /* numstacks */ 4, /* numslots */ 0, /* numtmps */ 1, /* numdecks */ 13, /* cards_per_color */ 0, /* numjokers */ {0, 999, 3, 0},/* param[0], param[1], param[2], param[3] */ 0, /* facedown */ 1, /* faceup */ 0, /* newgame_bits */ Canfield_newgame,/* new_game */ NULL, /* game_won */ NULL, /* new_cards */ ES_ALL|US_RA|MG_RA|ST_ONE|DC_ALWAYS, /* move_bits */ NULL, /* deal_cards */ NULL, /* undeal_cards */ NULL, /* stackable */ Canfield_valid, /* movevalid */ NULL, /* valid */ NULL, /* relaxed_valid */ NULL, /* good_hint */ NULL, /* automove */ Canfield_score,/* score */ 208, /* maxscore */ {0, TXTI_FLIP, 0, 0}, /* paramstring blocks */ 0, /* used */ NULL, /* initfunc */ NULL, /* local keyboard bindings */ }; xpat2-1.07/src/Xpat.tmpl100644 146 144 17636 7201336376 13624 0ustar mbimathoptXCOMM ######################################################################### XCOMM ## ### XCOMM ## MODULE : Xpat.tmpl ### XCOMM ## LONGNAME : X-Patience / machine dependant settings ### XCOMM ## AUTHOR : Christian Anzenberger ### XCOMM ## E-MAIL : christian.anzenberger@siemens.at ### XCOMM ## CREATION : 1999-11-08 ### XCOMM ## NOTES : Multiplatform Version, see table below ### XCOMM ## ### XCOMM ######################################################################### XCOMM ## HISTORY OF CHANGE: ### XCOMM ##-------+--------+--------------------------------------------+------### XCOMM ## VERS. | DATE | CHANGES |AUTHOR### XCOMM ##-------+--------+--------------------------------------------+------### XCOMM ## 1.00 |19991108| relocated from Imakefile | ac ### XCOMM ######################################################################### XCOMM ######################################################################### XCOMM ## Tested Environments: ### XCOMM ######################################################################### XCOMM ## Vendor Operating System Motif Compiler ### XCOMM ## ### XCOMM ## Sun Solaris 2.5.1 CDE 1.0.2 Sun WorkShop C 4.2 ### XCOMM ## Sun Solaris 2.5.1 CDE 1.0.2 GNU C 2.7.2 ### XCOMM ## ### XCOMM ## PC Solaris 2.6 CDE 1.2 Sun WorkShop C 4.2 ### XCOMM ## PC Solaris 2.6 CDE 1.2 GNU C 2.8.1 ### XCOMM ## PC Linux SuSE 5.2 CDE 1.0.10 GNU C 2.7.2.1 ### XCOMM ## PC Linux SuSE 6.1 LessTif 0.88 egcs ### XCOMM ## PC Linux RedHat 5.1 LessTif 0.86 GNU C 2.7.2.3 ### XCOMM ## PC Linux RedHat 5.2 RH Motif 2.1 egcs ### XCOMM ## PC Linux debian 2.1 LessTif 0.89 egcs ### XCOMM ## ### XCOMM ######################################################################### XCOMM ######################################################################### XCOMM ## Customize Grapical User Interface ### XCOMM ######################################################################### XCOMM 1. Specify User Interface (_exactly_ one of the interfaces below) #undef useXlib /* similar to xpat version 1.x, not all features */ #undef useXaw /* the classic Athena based interface for xpat2 */ #undef useXview /* Xview / OpenLook interface */ #define useXQt /* Qt widgets, playable, but NOT YET FINISHED */ /* advice on Qt improvements from experienced programmers welcome at Michael.Bischoff@gmx.net */ #undef useXm1 /* Motif based interface (first variant) */ #undef useXm2 /* Motif based CDE/KDE-style/Gnome-style interface */ XCOMM 2. Specify, if you want online help (Motif and Athena GUI only) XCOMM (Why should somebody _NOT_ want help for free?) #define USE_ONLINEHELP XCOMM 3. Specify, if you want round cards (requires Xmu) #define USE_ROUND_CARDS XCOMM 4. Specify, if you want sound (must copy the appropriate sound module). XCOMM Doesn't harm if you don't have a sound card. #define USE_SOUND XCOMM SOUNDOBJ must be one module of X-sound_*.o. XCOMM Ignored if USE_SOUND is OFF. XCOMM Note: The default is to copy an .au-file to /dev/audio, XCOMM so /dev/audio must have 666 permissions */ SOUNDOBJ = X-sound_SUN.o SOUNDLIB = XCOMM Uncomment this if you're using the NAS audio system: XCOMM SOUNDOBJ = X-sound_NAS.o XCOMM SOUNDLIB = -laudio XCOMM Uncomment this if you have an old Adlib card: XCOMM SOUNDOBJ = X-sound_FM.o XCOMM SOUNDLIB = XCOMM 4.) Specify, if you want sound (must copy the appropriate sound module) XCOMM SOUNDOBJ should be one module of X-sound_*.o if USE_SOUND is on, else empty XCOMM Note: for X-sound_SUN.o, /dev/audio must have 666 permissions */ #define USE_SOUND /* doesn't harm if you don't have a sound card */ XCOMM the default is to copy an .au-file to /dev/audio SOUNDOBJ = X-sound_SUN.o XCOMM 5.) Specify, if you want the antialiased card construction set (slower) XCOMM (includes USE_XPM) #define USE_CARD_CONSTRUCTION XCOMM 6.) If you answered NO to 5.): Do you want support for full xpm cards? XCOMM Note: The Motif GUI currently enables xpm support. #define USE_XPM XCOMM 7.) If you answered NO to 5.): Do you want to load external bitmap cards? #define USE_LOADCARDS XCOMM 8.) For Motif GUI only: Do you want flat toolbar buttons (KDE/Gnome-Style)? #define FLAT_BUTTONS XCOMM 9.) For Motif GUI only: Do you want a KDE-like toolbar? XCOMM (includes FLAT_BUTTONS) #define KDESTYLE XCOMM 10.) For Motif GUI only: Do you want a GNOME-like toolbar? XCOMM (includes FLAT_BUTTONS) XCOMM #define GNOMESTYLE XCOMM ######################################################################### XCOMM ## On some platforms imake doesn't define all variables ### XCOMM ######################################################################### XCOMM Keep in mind, that on some operating systems libraries like XCOMM Motif, Qt and / or Xpm are not in the base distribution. XCOMM Dynamically linked binaries may fail to run on other machines. XCOMM Although static linking may bloat your binaryДs size. #ifndef XPMINCLUDE XCOMM Default for most platforms XPMINCLUDE = -I$(INCROOT)/X11 XCOMM Default for Solaris Visual Workshop XCOMM XPMINCLUDE = /opt/SUNWspro/WS4.0/contrib/xpm/lib #endif #ifndef XPMLIB XCOMM Default for most platforms, statically linked XCOMM XPMLIB = -$(USRLIBDIR)/libXpm.a XCOMM Default for most platforms, dynamically linked XPMLIB = -L$(USRLIBDIR) -lXpm XCOMM Default for Solaris Visual Workshop, statically linked XCOMM XPMLIB = /opt/SUNWspro/WS4.0/contrib/xpm/lib/libXpm.a #endif #ifndef XMINCLUDE XCOMM Default for most platforms XMINCLUDE = -I$(INCROOT) XCOMM Default path for Common Desktop Environment XCOMM XMINCLUDE = -I/usr/dt/include #endif #ifndef XMLIB XCOMM Default for most platforms, statically linked XCOMM XMLIB = -$(USRLIBDIR)/libXm.a XCOMM Default for most platforms, dynamically linked XMLIB = -L$(USRLIBDIR) -lXm XCOMM Default path for Common Desktop Environment XCOMM XMLIB = -L/usr/dt/lib -lXm #endif XCOMM Red Hat Motif 2.1 needs to link the Xp lib with the Motif lib XCOMM XMLIB = $(XMLIB) -lXp #ifndef OPENWINHOME XCOMM Default for most platforms OPENWINHOME = /usr/openwin XCOMM Default for some Linux distributions XCOMM OPENWINHOME = /usr/X11R6 #endif OWINCDIR = $(OPENWINHOME)/include OWLIBDIR = $(OPENWINHOME)/lib XCOMM ######################################################################### XCOMM ## Installation Directories ### XCOMM ######################################################################### XCOMM Root directory of xpat2 installation XPATROOT = /usr/games/lib/xpat XCOMM XPATROOT = /usr/local/lib/xpat XCOMM XPATROOT = /opt/XPat2 XPATLIBDIR = $(XPATROOT) APPDEFSDIR = $(LIBDIR) XPATMANDIR = $(XPATROOT)/man/man6 XCOMM This is the name of the log-file, where solved games are stored: SCOREFILE = /var/games/xpat.log XCOMM SCOREFILE = $(XPATLIBDIR)/xpat.log XCOMM paths for installation in user's home-directory. LXPATBINDIR = $(HOME)/bin LXPATMANDIR = $(HOME)/xpat LAPPDEFSDIR = $(HOME) XCOMM Paths for the Qt interface XCOMM QTDIR = /usr/lib/qt1 QTDIR = /usr/local/qt QTINCDIR = $(QTDIR)/include QTLIBDIR = $(QTDIR)/lib MOC = $(QTDIR)/bin/moc xpat2-1.07/src/Xv-main.c100644 146 144 43775 6714227447 13506 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module Xv-main.c */ /* */ /* main function for the Xview interface */ /* written by Brandon S. Allbery */ /* based on code by Heiko Eissfeldt and Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #ifdef useXview #undef ONLINE_HELP /* not supported yet */ #include "X-pat.h" #include "version.h" #include "pat.bm" Window table; Frame mainwindow; Panel buttonbox; Canvas canvas; Menu cmenu; Event *bp_event; static int audio = 1; static Xv_Notice confirm_dialog; static Panel_item sound_button; static void (*execfunc)(void); #define C_TABLE CMS_CONTROL_COLORS + 0 #define C_WHITE CMS_CONTROL_COLORS + 1 #define C_RED CMS_CONTROL_COLORS + 2 #define C_BACK CMS_CONTROL_COLORS + 3 #define C_ARROW CMS_CONTROL_COLORS + 4 #define C_MARK CMS_CONTROL_COLORS + 5 #define C_BLACK CMS_CONTROL_COLORS + 6 int checksound(void) { return audio; } void cmd_LeavePat(void) { play_sound("goodbye"); xv_destroy_safe(mainwindow); } void cmd_Confirm(void) { if (execfunc) { void (*execfunc2)(void) = execfunc; /* erase it first! */ execfunc = NULL; /* XtPopdown(popup); */ (*execfunc2)(); /* finally execute the desired function */ } } void cmd_Cancel(void) { if (execfunc) { execfunc = NULL; /* XtPopdown(popup); */ } } static void confirm_action(Xv_Notice notice, int value, Event ev) { if (value == NOTICE_YES) (*execfunc)(); execfunc = 0; } void request_confirm(void (*dofunc)(void), const char *prompt) { if (execfunc) return; execfunc = dofunc; xv_set(confirm_dialog, NOTICE_MESSAGE_STRING, prompt, XV_SHOW, TRUE, 0); } static void set_sound(Xv_Notice notice, Event ev) { audio = !audio; xv_set(sound_button, PANEL_LABEL_STRING, (audio? "Quiet": "Sound"), 0); } static void selectrules(Menu mnu, Menu_item mi) { change_rules((char *) xv_get(mi, MENU_STRING)); } static const char * d_mk_name(const char *owner, const char *name) { static char buf[128]; strcpy(buf, owner); strcat(buf, "."); strcat(buf, name); return buf; } static const char * d_get_string(const char *cmd, const char *res, const char *dft) { char cbuf[128], Cbuf[128]; strcpy(cbuf, d_mk_name(cmd, res)); strcpy(Cbuf, d_mk_name("XPat", res)); return defaults_get_string(cbuf, Cbuf, (char *) dft); } static int d_get_number(const char *cmd, const char *res, const char *dftv, int minv, int maxv) { char cbuf[128], Cbuf[128]; int dft; if (dftv && *dftv) dft = atoi(dftv); else dft = -1; strcpy(cbuf, d_mk_name(cmd, res)); strcpy(Cbuf, d_mk_name("XPat", res)); return defaults_get_integer_check(cbuf, Cbuf, dft, minv, maxv); } static void usage(const char *arg) { fprintf(stderr, "usage: pat [options] [ or ]\n"); fprintf(stderr, "valid options are XView options ans:\n"); #ifdef LOADCARDS fprintf(stderr, "-cards set cardset to external file\n"); #endif fprintf(stderr, "-xpmdir for internal cardset: load xpm files\n"); fprintf(stderr, "-xpmcls set allowed closeness for colour allocation (0 to 65535)\n"); fprintf(stderr, "-sound <0/1> enables/disables sound\n"); fprintf(stderr, "-tb set background color of tableau\n"); fprintf(stderr, "-cb set cardback color\n"); fprintf(stderr, "-markcolor set color of card marks\n"); fprintf(stderr, "-markwidth set width of card marks\n"); fprintf(stderr, "-gapx, -gapy set space between cards (0 to 20)\n"); fprintf(stderr, "\ngame customization:\n"); fprintf(stderr, "-rules set rules to HM or Spider or Stairs\n"); fprintf(stderr, "-slots set number of slots (2 to 60)\n"); fprintf(stderr, "-decks set number of decks (1 to 9)\n"); fprintf(stderr, "-tmps set number of tmps (1 to 9)\n"); fprintf(stderr, "-faceup set initial deal parameter (0 to 20)\n"); fprintf(stderr, "-facedown set initial deal parameter (0 to 20)\n"); fprintf(stderr, "-jokers set number of jokers (do not use, it's too easy)\n"); fprintf(stderr, "-flips limit number of flips (0 to 99)\n"); fprintf(stderr, "-relaxed 0|1 choose easy or hard variant\n"); fprintf(stderr, "-turn set number of cards to turn (1 to 9)\n"); fprintf(stderr, "-rotations set maximum number of slot rotations (0 to 9)\n"); fprintf(stderr, "-p{0,1,2,3} set various rule parameters\n"); #if 0 /* for insiders only */ fprintf(stderr, "-autolayout <0/1> 0: to avoid automatic re-layout at resize time\n"); fprintf(stderr, "-mem <0/1> 0: do not store card images at full depth internally\n"); fprintf(stderr, "-cround set size of round card corners (0 to 20)\n"); #endif if (arg) fprintf(stderr,"argument \"%s\" caused this message\n", arg); exit(EXIT_FAILURE); } /* enum { String, Number, Bool } argtype; */ #define String 0 #define Number 1 int main(int argc, char **argv) { int i; long seed = -1L; const char *restoregame = NULL; XColor pixels[CMS_CONTROL_COLORS + 7]; Cms cms; Server_image icon_map; Icon pat_icon; Menu mnu; static const char *cmdname; /* these must be static, since their address is taken */ static int slots, faceup, facedown, decks, p0, p1, p2, p3; /* rules customization */ static int linewidth, cround, gapx, gapy, autolayout, mem; static int tmps, arrw, arrh, jokers, bx, by, sound = 1, xpmcls = DEFAULT_CLOSENESS; static const char *ruleset, *cbcolor, *bkcolor = "DarkKhaki"; static const char *cardset = NULL, *markcolor, *xpmdir; static const char *arrowcolor; static struct option { const char *option; const char *resource; const char *value; void *where; int type; int minval; /* only for Number */ int maxval; /* only for Number */ const char *cmdarg; } options[] = { /* first option must be -rules */ { "-rules", "Rules", "Gypsy", &ruleset, String }, { "-autolayout","AutoLayout", "1", &autolayout,Number, 0, 1 }, { "-mem", "Mem", "1", &mem, Number, 0, 1 }, { "-xpmdir", "Xpmdir", NULL, &xpmdir, String }, { "-xpmcls", "Xpmcls", XDEFAULT_CLOSENESS, &xpmcls, Number, 0, 65535 }, #ifdef LOADCARDS { "-cards", "Cards", NULL, &cardset, String }, #endif { "-slots", "Slots", NULL, &slots, Number, -1, MAXPILES }, { "-relaxed", "relaxed", NULL, &p0, Number, -1, 9 }, { "-flips", "flips", NULL, &p1, Number, -1, 99 }, { "-turn", "turn", NULL, &p2, Number, -1, 9 }, { "-rotations", "rotations", NULL, &p3, Number, -1, 9 }, { "-decks", "Decks", NULL, &decks, Number, -1, 9 }, { "-tmps", "Tmps", NULL, &tmps, Number, -1, 16 }, { "-faceup", "Faceup", NULL, &faceup, Number, -1, 16 }, { "-facedown", "Facedown", NULL, &facedown, Number, -1, 16 }, { "-jokers", "Jokers", NULL, &jokers, Number, -1, 16 }, { "-cround", "CardRound", NULL, &cround, Number, -1, 99 }, { "-sound", "Sound", "1", &sound, Number, 0, 1 }, { "-bx", "ButtonGapX", "4", &bx, Number, 0, 99 }, { "-by", "ButtonGapY", "4", &by, Number, 0, 99 }, { "-aw", "ArrowWidth", "4", &arrw, Number, -1, 30 }, { "-ah", "ArrowHeight", "4", &arrh, Number, -1, 30 }, { "-gapx", "GapX", "4", &gapx, Number, 0, 99 }, { "-gapy", "GapY", "4", &gapy, Number, 0, 99 }, { "-cb", "CardbackColor", "SlateGrey", &cbcolor, String }, { "-tb", "TableColor", "LightSlateGrey", &bkcolor, String }, { "-markcolor", "MarkColor", "black", &markcolor, String }, { "-markwidth", "MarkWidth", "999", &linewidth, Number, 1,999 }, { "-arrowcolor","ArrowColor", "Gold", &arrowcolor,String }, }; #define NUMOPTIONS (sizeof(options) / sizeof(options[0]) - 1) xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, 0); for (i = 0; i <= NUMOPTIONS; i++) options[i].cmdarg = NULL; if ((cmdname = strrchr(argv[0], '/'))) ++cmdname; else cmdname = argv[0]; if (strncmp(cmdname, "xpat", 4)) options[0].cmdarg = cmdname; for (i = 1; i < argc - 1; i++) /* merge command line options */ { int j; if (*argv[i] != '-') break; for (j = 0; j <= NUMOPTIONS; j++) { if (strcmp(argv[i], options[j].option) == 0) { /* should range-check it */ options[j].cmdarg = argv[++i]; break; } } if (j > NUMOPTIONS) usage(argv[i]); } if (i < argc) /* seed or savegame left */ { if (i != argc - 1) usage(argv[i]); if (isdigit(*argv[i])) { seed = atol(argv[i]); if (seed < 0L || seed >= 1000000000L) usage(argv[i]); } else if (*argv[i] != '-') restoregame = argv[i]; else usage(argv[i]); } /* * XView doesn't automatically use the resource database. The next * step after getting this working is to add XV_INSTANCE_NAME and * XV_USE_DB entries such that resources are automatically used. * * One problem here is that I don't think I can get away with just * passing a background color a' la Xlib/Xt. :-( */ for (i = 0; i <= NUMOPTIONS; i++) /* get resources from server */ { switch (options[i].type) { case String: *((const char **) options[i].where) = (options[i].cmdarg? options[i].cmdarg: d_get_string(cmdname, options[i].resource, options[i].value)); break; case Number: *((int *) options[i].where) = (options[i].cmdarg? atoi(options[i].cmdarg): d_get_number(cmdname, options[i].resource, options[i].value, options[i].minval, options[i].maxval)); break; } } if (!sound) audio = 0; if (restoregame && (decks != -1 || slots != -1 || faceup != -1 || facedown != -1)) fprintf(stderr, "warning: customization parameters are ignored\n"); read_message_file("messages"); read_keyboard_file("keys"); graphics_control(Disable); if (restoregame) load_game(restoregame); else { new_rules(ruleset, decks, slots, faceup, facedown, jokers, tmps, p0, p1, p2, p3); newgame(seed); } dpy = (Display *) xv_get(xv_default_server, XV_DISPLAY); screen = DefaultScreen(dpy); graphic.is_color = (DisplayCells(dpy, screen) > 2); init_gfx(); if (!graphic.is_color) { cms = 0; pixels[C_ARROW].pixel = whitepixel; pixels[C_WHITE].pixel = whitepixel; pixels[C_RED].pixel = blackpixel; pixels[C_BACK].pixel = blackpixel; pixels[C_TABLE].pixel = blackpixel; pixels[C_MARK].pixel = blackpixel; pixels[C_BLACK].pixel = blackpixel; } else { cms = (Cms) xv_create(0, CMS, CMS_SIZE, CMS_CONTROL_COLORS + 7, CMS_CONTROL_CMS, TRUE, CMS_NAMED_COLORS, bkcolor, "white", "Red3", cbcolor, arrowcolor, markcolor, "black", 0, 0); xv_get(cms, CMS_X_COLORS, pixels); } #if defined(GFX2) && defined(LOADCARDS) if (!graphic.is_color && !cardset) cardset = "french"; /* use B&W cardset, xpm requires too much colours */ #endif init_cards(cardset, cround, cround, pixels[C_RED].pixel, pixels[C_BACK].pixel, mem, xpmdir, xpmcls); graphic.xgap = (XSize_t) gapx; graphic.ygap = (XSize_t) gapy; graphic.autolayout = autolayout; /* compute minimum size needed */ generic_minwindow(); graphic.width = geo.min_width; graphic.height = geo.min_height; mainwindow = (Frame) xv_create(0, FRAME, XV_INSTANCE_NAME, "xpat", #if 0 FRAME_LABEL, cmdname, #endif FRAME_LABEL, (rules.longname? rules.longname: rules.shortname), FRAME_SHOW_HEADER, TRUE, FRAME_SHOW_FOOTER, TRUE, FRAME_LEFT_FOOTER, "", FRAME_RIGHT_FOOTER, "", FRAME_WM_COMMAND_ARGC_ARGV, argc, argv, 0); icon_map = (Server_image) xv_create(0, SERVER_IMAGE, XV_WIDTH, pat_width, XV_HEIGHT, pat_height, SERVER_IMAGE_X_BITS, pat_bits, 0); pat_icon = (Icon) xv_create(mainwindow, ICON, ICON_IMAGE, icon_map, 0); xv_set(mainwindow, FRAME_ICON, pat_icon, 0); init_mark(pixels[C_MARK].pixel, linewidth); init_arrow(pixels[C_ARROW].pixel, arrw, arrh); buttonbox = (Panel) xv_create(mainwindow, PANEL, XV_INSTANCE_NAME, "buttonpanel", PANEL_ITEM_X_GAP, bx, PANEL_ITEM_Y_GAP, by, 0); mnu = (Menu) xv_create(0, MENU, MENU_GEN_PIN_WINDOW, mainwindow, "Game", MENU_ACTION_ITEM, "Drop Bookmark", cmd_DropBookmark, MENU_ACTION_ITEM, "Goto Bookmark", cmd_GotoBookmark, MENU_ACTION_ITEM, "Replay", cmd_ReplayGame, MENU_ACTION_ITEM, "Restart", cmd_RestartGame, MENU_ACTION_ITEM, "New Game", rq_AnotherGame, MENU_ACTION_ITEM, "Quit", rq_LeavePat, 0); xv_create(buttonbox, PANEL_BUTTON, XV_INSTANCE_NAME, "game", PANEL_LABEL_STRING, "Game", PANEL_ITEM_MENU, mnu, 0); /* the context menu is activated with the right mouse button */ cmenu = (Menu) xv_create(0, MENU, MENU_GEN_PIN_WINDOW, mainwindow, "XPat", MENU_TITLE_ITEM, "XPat", MENU_ACTION_ITEM, "New Game", rq_AnotherGame, MENU_ACTION_ITEM, "Bookmark", cmd_DropBookmark, MENU_ACTION_ITEM, "Deal", cmd_DealCards, MENU_ACTION_ITEM, "Stack", cmd_ToStack, 0); mnu = (Menu) xv_create(0, MENU, MENU_GEN_PIN_WINDOW, mainwindow, "Rules", 0); { extern struct rules *rulepool[]; struct rules **rp; Menu_item mi; for (rp = rulepool; *rp; rp++) { mi = (Menu_item) xv_create(0, MENUITEM, MENU_STRING, (*rp)->shortname, MENU_NOTIFY_PROC, selectrules, MENU_RELEASE, 0); xv_set(mnu, MENU_APPEND_ITEM, mi, 0); } } xv_create(buttonbox, PANEL_BUTTON, XV_INSTANCE_NAME, "rules", PANEL_LABEL_STRING, "Rules", PANEL_ITEM_MENU, mnu, 0); xv_create(buttonbox, PANEL_BUTTON, XV_INSTANCE_NAME, "cards", PANEL_LABEL_STRING, "Cards", PANEL_NOTIFY_PROC, cmd_DealCards, 0); xv_create(buttonbox, PANEL_BUTTON, XV_INSTANCE_NAME, "undo", PANEL_LABEL_STRING, "Undo", PANEL_NOTIFY_PROC, cmd_UndoMove, 0); xv_create(buttonbox, PANEL_BUTTON, XV_INSTANCE_NAME, "redo", PANEL_LABEL_STRING, "Redo", PANEL_NOTIFY_PROC, cmd_RedoMove, 0); xv_create(buttonbox, PANEL_BUTTON, XV_INSTANCE_NAME, "score", PANEL_LABEL_STRING, "Score", PANEL_NOTIFY_PROC, cmd_ShowScore, 0); xv_create(buttonbox, PANEL_BUTTON, XV_INSTANCE_NAME, "hint", PANEL_LABEL_STRING, "Hint", PANEL_NOTIFY_PROC, cmd_NextHint, 0); xv_create(buttonbox, PANEL_BUTTON, XV_INSTANCE_NAME, "stack", PANEL_LABEL_STRING, "Move to Stack", PANEL_NOTIFY_PROC, cmd_ToStack, 0); #ifdef ONLINE_HELP /* should be a window button... */ /* The Help window contains a Textsw and a "Topics" menubutton. */ xv_create(buttonbox, PANEL_BUTTON, XV_INSTANCE_NAME, "help", PANEL_LABEL_STRING, "Help...", PANEL_NOTIFY_PROC, popup_help, 0); #endif xv_create(buttonbox, PANEL_BUTTON, XV_INSTANCE_NAME, "save", PANEL_LABEL_STRING, "Save", PANEL_NOTIFY_PROC, cmd_SaveGame, 0); #ifdef SOUND #if 0 /* this is ugly. UGLY! */ xv_create(buttonbox, PANEL_TOGGLE, XV_INSTANCE_NAME, "sound", PANEL_LABEL_STRING, "", PANEL_CHOOSE_ONE, FALSE, PANEL_CHOICE_STRINGS, "Sound", 0, PANEL_VALUE, sound, PANEL_NOTIFY_PROC, set_sound, 0); #endif sound_button = xv_create(buttonbox, PANEL_BUTTON, XV_INSTANCE_NAME, "sound", PANEL_LABEL_STRING, (audio? "Quiet": "Sound"), PANEL_NOTIFY_PROC, set_sound, 0); #endif window_fit(buttonbox); confirm_dialog = (Xv_Notice) xv_create(mainwindow, NOTICE, XV_INSTANCE_NAME, "prompt", NOTICE_NO_BEEPING, TRUE, NOTICE_BUTTON_YES, "Yes", NOTICE_BUTTON_NO, "No", NOTICE_EVENT_PROC, confirm_action, 0); /* frame size forwarding fails when borders are on */ canvas = (Canvas) xv_create(mainwindow, CANVAS, XV_INSTANCE_NAME, "desktop", CANVAS_MIN_PAINT_WIDTH, geo.min_width, CANVAS_MIN_PAINT_HEIGHT, geo.min_height, CANVAS_WIDTH, geo.min_width, CANVAS_HEIGHT, geo.min_height, CANVAS_RESIZE_PROC, table_resize, CANVAS_REPAINT_PROC, table_repaint, WIN_BELOW, buttonbox, XV_X, 0, 0); xv_set(canvas_paint_window(canvas), WIN_EVENT_PROC, table_events, WIN_CONSUME_EVENTS, WIN_ASCII_EVENTS, WIN_MOUSE_BUTTONS, 0, WIN_CONSUME_X_EVENT_MASK, Button3MotionMask, (cms? WIN_CMS: 0), cms, WIN_BACKGROUND_COLOR, C_TABLE, 0); table = (Window) xv_get(canvas_paint_window(canvas), XV_XID); frame_pack_all(mainwindow); graphics_control(Enable); init_layout(); /* position the piles in a nice way */ for (i = 0; i < game.numpiles; ++i) pile_resize(i); show_message(TXT_WELCOME, VERSION); xv_main_loop(mainwindow); return 0; } void show_message(const char *fmt, ...) { static char msg[512]; va_list args; if (!fmt) return; va_start(args, fmt); vsprintf(msg, fmt, args); va_end(args); xv_set(mainwindow, FRAME_LEFT_FOOTER, msg, 0); } #endif xpat2-1.07/src/Xv-events.c100644 146 144 4737 5711006511 14020 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module Xv-events.c */ /* */ /* event handlers for the Xview interface */ /* written by Brandon S. Allbery */ /* based on code by Heiko Eissfeldt and Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #ifdef useXview #include "X-pat.h" void Force_Resize(XSize_t w, XSize_t h) { xv_set(canvas, XV_HEIGHT, h + 2, XV_WIDTH, w + 2, 0); frame_pack_all(mainwindow); } void table_events(Xv_Window w, Event *ev) { switch (event_xevent_type(ev)) { case KeyPress: key_press(&event_xevent(ev)->xkey); break; case MotionNotify: mouse_motion(&event_xevent(ev)->xmotion); break; case ButtonRelease: button_release(&event_xevent(ev)->xbutton); break; case ButtonPress: bp_event = ev; /* forwarded to X-events:menu_show() */ button_press(&event_xevent(ev)->xbutton); break; } } void table_resize(Canvas c, int w, int h) { resize_event(w, h); } void table_repaint(Canvas c, Xv_Window w, Rectlist *rl) { XExposeEvent ev; /* forged from whole cloth... */ struct rectnode *r; for (r = rl->rl_head; r; r = (r == rl->rl_tail? 0: r->rn_next)) { ev.y = rl->rl_y + r->rn_rect.r_top; ev.x = rl->rl_x + r->rn_rect.r_left; ev.height = r->rn_rect.r_height; ev.width = r->rn_rect.r_width; ev.count = (r != rl->rl_tail); redraw_table(&ev); } } /* * XView lacks a function to match the sizes of components of a frame, so we * fake it. * * NB: this doesn't work, because WIN_FIT_WIDTH changes XV_WIDTH permanently. * (In effect, it becomes a hidden extension to the window it affects, and * subsequent calls appear to be additive.) */ void frame_pack_all(Frame frame) { Xv_Window win; int n, w, maxw; maxw = 0; /* I think 1 is the footer. */ for (n = 2; (win = (Xv_Window) xv_get(frame, FRAME_NTH_SUBWINDOW, n)); n++) { window_fit(win); if ((w = xv_get(win, XV_WIDTH)) > maxw) maxw = w; } #if 0 for (n = 2; (win = (Xv_Window) xv_get(frame, FRAME_NTH_SUBWINDOW, n)); n++) xv_set(win, WIN_FIT_WIDTH, maxw - xv_get(win, XV_WIDTH), 0); #endif for (n = 2; (win = (Xv_Window) xv_get(frame, FRAME_NTH_SUBWINDOW, n)); n++) xv_set(win, XV_WIDTH, maxw, 0); window_fit(frame); } #endif xpat2-1.07/src/testit2.c100644 146 144 2546 6037525663 13533 0ustar mbimathopt/* a small utility to test the random sequences. needs util.c */ #include #include #include #define PRANDMAX 1000000000L #if 1 int rng(int limit) { double z; z = ((double)(prand()) / (double)PRANDMAX) * (double)limit; return (int)z; } #endif #if 0 int rng(int limit) { double z; z = ((double)(rand() & 32767) / 32768.0) * (double)limit; return (int)z; } #endif #if 0 int rng(int limit) { return rand() % limit; } #endif #if 0 int rng(int limit) { return prand() % limit; } #endif #define MAXCARDS 52 int cards[MAXCARDS]; static void shuffle(void) { int i, d, v, c; int tmp[MAXCARDS]; for (i = 0; i < 52; ++i) tmp[i] = i; for (i = 52; i; --i) { v = rng(i); c = -1; do { while (tmp[++c] == -1) ; /* skip card */ } while (v--); cards[i-1] = tmp[c]; /* printf("c = %d, card = %d\n", c, game.cards[i-1]); */ tmp[c] = -1; } } int cnt[52][10]; int main(int c, char *v[]) { int i, n = atoi(v[1]); memset(cnt, 0, sizeof(cnt)); while (n--) { sprand(n+1234567L); srand(n+1234567L); shuffle(); for (i = 0; i < 10; ++i) ++cnt[cards[i]][i]; } for (i = 0; i < 52; ++i) printf("%2d: %6d %6d %6d %6d %6d %6d %6d %6d %6d %6d\n", i, cnt[i][0], cnt[i][1], cnt[i][2], cnt[i][3], cnt[i][4], cnt[i][5], cnt[i][6], cnt[i][7], cnt[i][8], cnt[i][9]); } xpat2-1.07/src/r_Oonsoo.c100644 146 144 5042 6711643357 13724 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module r_Oonsoo.c */ /* */ /* Characteristics of the ``Oonsoo'' rules */ /* by Bradford W. Mott (bwmott@eos.ncsu.edu) */ /* written by Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "xpatgame.h" static int Oonsoo_valid(int srccard, int dstcard) { if (RANK(srccard) != RANK(dstcard)) return 0; return SUIT(srccard) > SUIT(dstcard); } static int Oonsoo_won(void) { Pileindex i; for (i = FIRST_SLOT; i <= LAST_SLOT; ++i) if (CARDS_ON_PILE(i) != 4 || slotsequence(i, INDEX_OF_LAST_CARD(i), 0) != INDEX_OF_FIRST_CARD(i)) return 0; return 1; } #include "xpatgeo.h" static int Oonsoo_Layout(void) { int i, y, x; struct pilegeometry *p = geo.pg; for (i = 0; i < game.numpiles; ++i) { p = geo.pg+i; p->x = -1; p->y = -1; } y = geo.dy; x = 2 * geo.dx + geo.cw; p = geo.pg+FIRST_SLOT; for (i = 0; i < rules.numslots; ++i) { p->x = x; p->y = y; p->h = 2 * geo.ch + geo.dy; if (i & 1) { p->y += p->h + geo.dy; x += geo.cw + geo.dx; } ++p; } p = geo.pg+IDECK; p->x = geo.dx; p->y = geo.dy + geo.ch + geo.dy; return OONSOO_MAGIC; } struct rules Oonsoo_rules = { "Oonsoo", /* shortname */ NULL, /* longname */ "oonsoo", /* abbrev */ 9, /* layout_hints */ 0, /* variant */ 0, /* customizable */ 0, /* customized */ 48, /* numcards */ 0, /* numstacks */ 12, /* numslots */ 0, /* numtmps */ 1, /* numdecks */ 12, /* cards_per_color */ 0, /* numjokers */ {0, 0, 0, 0},/* param[0], param[1], param[2], param[3] */ 1, /* facedown */ 1, /* faceup */ 0, /* newgame_bits */ NULL, /* new_game */ Oonsoo_won, /* game_won */ NULL, /* new_cards */ ES_CLUBS | ST_NONE | DC_ALWAYS,/* every card to empty stack, no card to stack */ NULL, /* deal_cards */ NULL, /* undeal_cards */ NULL, /* stackable */ NULL, /* movevalid */ Oonsoo_valid,/* valid */ Oonsoo_valid,/* relaxed_valid */ NULL, /* good_hint */ NULL, /* automove */ NULL, /* score */ 0, /* maxscore */ {0, 0, 0, 0}, /* paramstring blocks */ 0, /* used */ NULL, /* initfunc */ NULL, /* local keyboard bindings */ NULL, Oonsoo_Layout }; xpat2-1.07/src/r_BlueMoon.c100644 146 144 15104 6711642510 14176 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module r_BlueMoon.c */ /* */ /* Characteristics of the ``Blue Moon'' rules */ /* attempted to be written by Willem Monsuwe */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "xpatgame.h" #define ROWS (rules.numstacks) #define COLUMNS (rules.cards_per_color + 1) #define ROW(r) (FIRST_SLOT + ((r) * COLUMNS)) #define CARD(s) (game.cards[game.ind[(s)]]) /* No limit */ static int BM_new_cards(void) { return 1; } static void BM_new_game(void) { Pileindex s; int r; /* all cards visible */ for (r = 0; r < rules.numcards; r++) game.visible[r] = 1; /* one card on every slot, except the first slot of every column */ for (r = 0; r < ROWS; r++) { s = ROW(r); game.ind[s+1] = game.ind[s]; while (++s < ROW(r + 1)) { game.ind[s+1] = game.ind[s] + 1; } } game.ind[IDECK+1] = rules.numcards; /* Move aces to the first slots */ for (r = 0; r < ROWS; r++) { /* Look for the next ace */ for (s = FIRST_SLOT;; s++) { assert(s <= LAST_SLOT); if (EMPTY(s)) continue; if ((RANK(CARD(s)) == Ace) && ((s - FIRST_SLOT) % COLUMNS)) break; } /* Move it to the empty slot */ do_move(game.ind[s], ROW(r)); } } static Move BM_deal_cards(void) { Pileindex s = 0; /* keep compiler happy */ int i, r, remgraphic; int remember_count = game.n_moves; /* we are moving a lot, so keep the graphics for later */ if ((remgraphic = game.graphic)) graphics_control(Disable); store_move(COMPOUND_BEGIN); /* Remove cards that are 'in sequence' to the stack */ for (r = 0; r < ROWS; r++) { for (s = ROW(r);;) { assert(s < ROW(r + 1)); store_move(do_move(game.ind[s], STACK(r))); s++; if (EMPTY(s)) break; if (SUIT(game.cards[INDEX_OF_LAST_CARD(STACK(r))]) != SUIT(CARD(s))) break; if (RANK(game.cards[INDEX_OF_LAST_CARD(STACK(r))]) != (RANK(CARD(s)) - 1)) break; } } /* redistribute the empty spaces to the beginning of each row */ for (r = 0; r < ROWS; r++) { if (EMPTY(ROW(r) + CARDS_ON_PILE(STACK(r)))) continue; /* Find an empty space */ for (i = 0; i < ROWS; i++) { for (s = ROW(i) + CARDS_ON_PILE(STACK(i)) + 1; s < ROW(i + 1); s++) { if (EMPTY(s)) { i = ROWS; break; } } } assert(EMPTY(s)); store_move(do_move(game.ind[ROW(r) + CARDS_ON_PILE(STACK(r))], s)); } store_move(SlotShuffle(1)); store_move(ADD_CHEAT | 1); /* Restore the cards from the stacks to the slots */ for (r = 0; r < ROWS; r++) for (s = ROW(r) + CARDS_ON_PILE(STACK(r)); --s >= ROW(r); ) store_move(do_move(INDEX_OF_LAST_CARD(STACK(r)), s)); if (remgraphic) graphics_control(EnableAndRedraw); game.counter[1]++; game.n_moves = remember_count; return COMPOUND_END; } static int BM_move_valid(Cardindex src, Pileindex dstpile) { Pileindex srcpile = getpile(src); /* Only move a card to an empty slot whose left * neighbour is of the same sout and the next lower in rank */ if (EMPTY(srcpile) || !EMPTY(dstpile) || EMPTY(dstpile - 1)) return 0; if (game.piletype[srcpile] != Slot || game.piletype[dstpile] != Slot) return 0; if (SUIT(CARD(dstpile - 1)) != SUIT(CARD(srcpile))) return 0; return ((RANK(CARD(dstpile - 1)) + 1) == RANK(CARD(srcpile))); } static int BM_good_hint(Cardindex src, Pileindex dstpile) { int r, v = 100; Pileindex s; r = ((dstpile - FIRST_SLOT) / COLUMNS); /* Sequencing after an ace is very good */ for (s = ROW(r); ++s; ) { assert(s < ROW(r + 1)); if (s == dstpile) v += 50; if (EMPTY(s)) break; if (SUIT(CARD(s)) != SUIT(CARD(s - 1))) break; if ((RANK(CARD(s)) - 1) != RANK(CARD(s - 1))) break; } /* An empty space to the right of a king is useless */ if (RANK(CARD(dstpile - 1)) == King) v -= 20; if (((RANK(game.cards[src])) == King) && (((dstpile + 1) - FIRST_SLOT) % COLUMNS) && EMPTY(dstpile + 1)) v -= 20; return v; } static int BM_game_won(void) { int r; Pileindex s; for (r = 0; r < ROWS; r++) { for (s = ROW(r); s++; ) { assert(s < ROW(r + 1)); if (EMPTY(s)) break; if (SUIT(CARD(s)) != SUIT(CARD(s - 1))) break; if ((RANK(CARD(s)) - 1) != RANK(CARD(s - 1))) break; } if ((s + 1) != ROW(r + 1)) return 0; } return 1; } /* Scoring for Blue Moon, just guessed something.. */ static int BM_score(void) { int r, v; Pileindex s; /* Ten points penalty for every deal */ v = -10 * game.counter[1]; for (r = 0; r < ROWS; r++) { /* Two points for every card sequenced after an ace */ for (s = ROW(r); s++; v += 2) { assert(s < ROW(r + 1)); if (EMPTY(s)) break; if (SUIT(CARD(s)) != SUIT(CARD(s - 1))) break; if ((RANK(CARD(s)) - 1) != RANK(CARD(s - 1))) break; } /* Plus 1 makes it 25 for a complete row. */ if ((s + 1) == ROW(r + 1)) v++; } return v; } #include "xpatgeo.h" static int BM_Layout(void) { int i, y, x; struct pilegeometry *p = geo.pg; y = geo.dy; p = geo.pg+FIRST_SLOT; x = geo.dx; for (i = 0; i < rules.numslots; ++i) { p->x = x + (i%14) * (geo.cw + geo.dx); p->y = y + (i/14) * (geo.ch + geo.dy); p->dx = 0; p->dy = 0; ++p; } return BLUEMOON_MAGIC; } struct rules BlueMoon_rules = { "Blue Moon", /* shortname */ NULL, /* longname */ "bm", /* abbrev */ 10, /* layout_hints */ 0, /* variant */ 0, /* customizable */ 0, /* customized */ 52, /* numcards */ 4, /* numstacks */ 56, /* numslots */ 0, /* numtmps */ 1, /* numdecks */ 13, /* cards_per_color */ 0, /* numjokers */ {0, 0, 0, 0},/* param[0], param[1], param[2], param[3] */ 0, /* facedown */ 1, /* faceup */ 0, /* newgame_bits */ BM_new_game, /* new_game */ BM_game_won, /* game_won */ BM_new_cards, /* new_cards */ ES_NONE, /* move_bits */ BM_deal_cards, /* deal_cards */ NULL, /* undeal_cards */ NULL, /* stackable */ BM_move_valid, /* movevalid */ NULL, /* valid */ NULL, /* relaxed_valid */ BM_good_hint, /* good_hint */ NULL, /* automove */ BM_score, /* score */ 100, /* maxscore */ {0, 0, 0, 0}, /* paramstring blocks */ 0, /* used */ NULL, /* initfunc */ NULL, /* local keyboard bindings */ NULL, BM_Layout }; xpat2-1.07/src/X-loadcards.c100644 146 144 7176 6714016173 14273 0ustar mbimathoptstatic Pixmap card_bitmaps[68]; /* these hold pixmaps of full depth */ /* we have room for 8 jokers */ static int numcards; /* when reading external cardsets */ static int inset; /* read a complete set of card bitmaps from a file */ static void read_bitmap(const char *file) { FILE *fp; int i, w, h, bpl, cardsize; char *card_bits; char fullname[200]; struct { /* Note: all hi...-fields are currently 0 */ char type; /* 0 for cards without and 1 for cards with an frame */ char hitype; char num; /* # of cards (without jokers) in file */ char hinum; char x; /* width of one card */ char hix; char y; /* height of one card on screen (size in file can differ) */ char hiy; char rx; /* horizontal half axe of rounded corner */ char hirx; char ry; /* vertical half axe of rounded corner */ char hiry; char stddelta; /* fraction of height for displaying */ char histddelta; char numjokers; /* # of different joker cards */ char hinumjokers; char numcardbacks; /* # of different cardbacks */ char hinumcardbacks; char fill[14]; /* reserved for future requirements */ } hdr; if (!strchr(file, '/') && strlen(file) + strlen(LIBDIR) + 8 <= sizeof(fullname)) { sprintf(fullname, "%s/%s.cards", LIBDIR, file); file = fullname; } fp = fopen(file, "r"); if (!fp || fread(&hdr, sizeof(hdr), 1, fp) != 1) { fprintf(stderr, "xpat2: Cannot read file %s\n", file); exit(EXIT_FAILURE); } /* check the number of cards in the header */ if (hdr.num < 52 || hdr.num > 57) { fprintf(stderr, "xpat2: Bad value of numcards in file %s\n", file); exit(EXIT_FAILURE); } w = hdr.x; h = hdr.y; numcards = hdr.num; CARD_WIDTH = w; CARD_HEIGHT = h; ROUND_W = hdr.rx; /* default radii of rounded corners */ ROUND_H = hdr.ry; STD_DELTA = hdr.stddelta; bpl = (w + 7) >> 3; /* bytes per line */ if (!(card_bits = malloc(bpl * h * numcards))) { fprintf(stderr, "xpat2: Not enough memory for external cardset (file %s)\n", file); exit(EXIT_FAILURE); } /* read the card bitmaps */ fread(card_bits, bpl * h * numcards, 1, fp); fclose(fp); /* hdr.type & 1 is the number of pixels omitted in the bitmap */ cardsize = (h - 2 * (inset = (hdr.type & 1))) * bpl; /* turn data into bitmaps */ for (i = 0; i < numcards; i++) { card_bitmaps[i] = XCreateBitmapFromData(dpy, RootWindow(dpy, screen), card_bits+i*cardsize, w-2*inset, h-2*inset); } } static void paint_external_card(int x, int y, int cardnumber) { if (cardnumber == CARDBACK) cardgc = backgc; else if (SUIT(cardnumber) == Spade || SUIT(cardnumber) == Club) { cardgc = graphic.is_color ? blackgc: whitegc; } else { cardgc = redgc; } #ifndef NO_ROUND_CARDS if (ROUND_W) { XSetClipMask(dpy, cardgc, cardclipmap); XSetClipOrigin(dpy, cardgc, x, y); if (inset) { XSetClipMask(dpy, blackgc, cardclipmap); XSetClipOrigin(dpy, blackgc, x, y); } } #endif XCopyPlane(dpy, card_bitmaps[cardnumber], table, cardgc, 0, 0, CARD_WIDTH-2*inset, CARD_HEIGHT-2*inset, x+inset, y+inset, 1); if (inset) { /* must draw border */ #ifndef NO_ROUND_CARDS if (ROUND_W) XmuDrawRoundedRectangle(dpy, table, blackgc, x, y, CARD_WIDTH-1, CARD_HEIGHT-1, ROUND_W, ROUND_H); else #endif XDrawRectangle(dpy, table, blackgc, x, y, CARD_WIDTH-1, CARD_HEIGHT-1); } if (ROUND_W) { XSetClipMask(dpy, cardgc, None); if (inset) XSetClipMask(dpy, blackgc, None); } } xpat2-1.07/src/xpat2.man2100644 146 144 1066 6714033566 13600 0ustar mbimathopt.SH FILES (Directories may differ on your system.) \fB/usr/games/bin/xpat2\fP \fB/var/games/xpat.log\fP \fB/usr/doc/xpat/COPYRIGHT.{GNU,spider,xpm}\fP \fB/usr/games/lib/xpat/small.cards\fP \fB/usr/games/lib/xpat/french.cards\fP \fB/usr/games/lib/xpat/audio/success.au\fP \fB/usr/games/lib/xpat/audio/giveup.au\fP \fB/usr/games/lib/xpat/audio/goodbye.au\fP \fB/usr/games/lib/xpat/audio/cannotsave.au\fP \fB/usr/games/lib/xpat/help.*\fP \fB/usr/games/lib/xpat/hlp*\fP and a number of subdirs of \fB/usr/games/lib/xpat\fP, containing sets of colour cards. xpat2-1.07/src/layout.c100644 146 144 32216 6713412311 13451 0ustar mbimathopt#include "xpatgame.h" #include "xpatgeo.h" struct geometry geo = { 0 }; /* return the cardindex of the card displayed at the mouse position. return -1 if the pile in empty return -2 if the pile is not empty, but the user missed any card on entry, (mx, my) are the mouse coordinates relative to the pile */ Cardindex FindCardOfMousePos(Pileindex pileno, int mx, int my) { Cardindex c; int cx, cy; if (!EMPTY(pileno)) { /* find topmost card on which we clicked */ int i; struct pilegeometry *p = geo.pg + pileno; c = INDEX_OF_LAST_CARD(pileno); i = CARDS_ON_PILE(pileno); while (i-- > 0) { cx = p->ox + p->cdx * i; cy = p->oy + p->cdy * i; if (mx >= cx && mx < cx + geo.cw && my >= cy && my < cy + geo.ch) { /* found card on which we clicked */ break; } --c; } if (i < 0) c = -2; /* error */ } else { c = -1; /* empty */ } return c; } int pile_resize(Pileindex pileno) { int new_dx = 32767, new_dy = 32767; int cards_on_pile = CARDS_ON_PILE(pileno); struct pilegeometry *p = geo.pg + pileno; if (game.piletype[pileno] != Slot) { p->cdx = 0; p->cdy = 0; return 0; } if (cards_on_pile) { new_dx = (p->w - geo.cw) / cards_on_pile; new_dy = (p->h - geo.ch) / cards_on_pile; } if (!new_dx) new_dx = 1; /* at least one pixel ? */ if (!new_dy) new_dy = 1; if (p->dx >= 0) { if (new_dx > p->dx) /* maximum distance */ new_dx = p->dx; } else { if (new_dx > -p->dx) /* maximum distance */ new_dx = -p->dx; new_dx = -new_dx; } if (p->dy >= 0) { if (new_dy > p->dy) /* maximum distance */ new_dy = p->dy; } else { if (new_dy > -p->dy) /* maximum distance */ new_dy = -p->dy; new_dy = -new_dy; } if (new_dx != p->cdx || new_dy != p->cdy) { /* a change has occured */ p->cdx = new_dx; p->cdy = new_dy; return 1; /* indicate change */ } return 0; /* nothing is different */ } /* list of directions for the star layout (counting clockwise) */ static int dxtab[8] = { 1, 1, 1, 0, -1, -1, -1, 0 }; static int dytab[8] = { -1, 0, 1, 1, 1, 0, -1, -1 }; void indep_generic_minwindow(int *xcards, int *xgaps, int *ycards, int *ygaps) { int min1; switch (rules.layout_hints) { case 0: if (!rules.numtmps) { int area1, area2; if (rules.numstacks > rules.numslots) min1 = rules.numstacks; else if (rules.numstacks == rules.numslots) min1 = rules.numstacks + (rules.variant & DECK_SOURCE ? 1 : 0); else /* stacks < slots */ if (rules.variant & DECK_SOURCE) min1 = max(rules.numstacks+2, rules.numslots); else min1 = rules.numslots; /* stacks on the top */ *xcards = min1; *ycards = SLOTFACTOR + 1; area1 = min1 * (SLOTFACTOR + 1); /* second variant is with stacks on the right side */ min1 = rules.numslots + rules.numdecks; if (rules.variant & DECK_SOURCE) ++min1; area2 = min1 * 4; /* as a selection rule, minimize the size of the window needed */ if (area2 < area1) { /* stacks on the right side */ *xcards = min1; *ycards = 4; } break; } /* else fall thru to SeaHaven type */ case 1: *xcards = max(rules.numslots, rules.numstacks + rules.numtmps); *ycards = SLOTFACTOR+1; break; case 2: /* The deck, the stack, the slots */ *xcards = rules.numslots + 1; *ycards = SLOTFACTOR+1; break; /* case 3: Monte Carlo is EXTERNAL */ case 9: /* Oonsoo: a deck and twelve slots */ case 4: /* Midnight Oil: 18 Slots */ *xcards = rules.numslots/2 + rules.numdecks; *ycards = 4; break; case 5: /* Michael's Fantasy */ /* No deck, 4 stacks, 4 Tmps, the slots */ *xcards = 3 + rules.numslots; *ycards = max(3, SLOTFACTOR); *xgaps = *xcards + 3; /* 2 extra gaps */ *ygaps = *ycards + 1; return; /* case 6: Royal Cotillion is EXTERNAL */ case 7: /* Baker's Dozen */ /* No deck, 4 stacks, a dozen slots */ min1 = rules.numdecks + (rules.numslots+1)/2; *xcards = min1; *ycards = 4; break; case 8: /* Canfield */ /* No deck, 4 stacks, a dozen slots */ *xcards = 5; *ycards = 4; break; case 10: /* Blue Moon */ *xcards = 14; *ycards = 4; break; } /* default gap count: */ *xgaps = *xcards + 1; *ygaps = *ycards + 1; } static int gen_low_layout(void) { struct pilegeometry *p = geo.pg; int i, off; int new_layout_type = -1; int cols, rows = 1 + SLOTFACTOR; int xnum = (geo.w - geo.dx) / (geo.cw + geo.dx); /* printf("generating low layout for %d,%d\n", geo.w, geo.h); */ if (rules.numstacks > rules.numslots) { new_layout_type = 2; cols = rules.numstacks; } else if (rules.numstacks == rules.numslots) { if (rules.variant & DECK_SOURCE) { new_layout_type = 5; cols = rules.numstacks + 1; } else { new_layout_type = 4; /* only case without a deck */ cols = rules.numstacks; /* printf("xnum = %d, cols = %d\n", xnum, cols); */ if (xnum >= cols + 1) { /* have a deck anyway */ ++cols; ++new_layout_type; } } } else { new_layout_type = 6; if (rules.variant & DECK_SOURCE) cols = max(rules.numstacks + 2, rules.numslots); else cols = rules.numslots; } off = cols - rules.numstacks; for (i = 0; i < rules.numstacks; ++i) { p->x = geo.dx + (geo.dx + geo.cw) * (i+off); p->y = geo.dy; ++p; } off = cols - rules.numslots; for (i = 0; i < rules.numslots; ++i) { p->x = geo.dx + (geo.dx + geo.cw) * (i+off); p->y = geo.dy + geo.dy + geo.ch; p->h = geo.h - 3 * geo.dy - geo.ch + BOTTOM_INC; ++p; } /* printf(" did low layout with %5d cols\n", cols); */ geo.preferred_width = cols * (geo.dx + geo.cw) + geo.dx; geo.preferred_height = rows * (geo.dy + geo.ch) + geo.dy; if (!(rules.variant & NODEAL)) { switch (new_layout_type) { case 2: /* case 3: */ p->x = geo.dx; p->y = geo.dy + geo.dy + geo.ch; break; case 0: case 4: /* p->x = p->y = -1; */ /* no deck */ break; case 1: case 5: p->x = geo.dx; p->y = geo.dy + (geo.dy + geo.ch) / 2; break; case 6: /* case 7: */ p->x = geo.dx; p->y = geo.dy; break; default: fprintf(stderr, "xpat2: don't know where to place deck for layout type %d\n", new_layout_type); abort(); /* some new layout? */ } } /* do a second deck? */ if (rules.variant & DECK_SOURCE) { p[1] = p[0]; /* IDECK is one more back */ if (new_layout_type == 6) { p->y = geo.dy; p->x = 2 * geo.dx + geo.cw; } else { p->x = geo.dx; p->y = geo.dy + ((rules.variant & NODEAL) ? 1 : 3) * (geo.dy + geo.ch) / 2; } } return new_layout_type; } /* layout for standard game without Tmp piles */ /* this variant places the stacks of one deck in vertical direction */ static int gen_high_layout(void) { Pileindex i; struct pilegeometry *p = geo.pg; int rem_x, required; int cdx = geo.cw / 5, cdy = geo.ch / 5; int new_layout_type = GEN_BIG_LAYOUT_NO_DECK; /* int xnum = (geo.w - geo.dx) / (geo.cw + geo.dx); */ rem_x = geo.w - geo.dx - rules.numdecks * (geo.cw + geo.dx); /* for all variants here, the stacks are at the same position */ for (i = 0; i < rules.numstacks; ++i) { p->x = geo.dx + rem_x + (i / 4) * (geo.cw + geo.dx); p->y = geo.dy + (i & 3) * (geo.ch + geo.dy); ++p; } geo.preferred_width = (rules.numslots + rules.numdecks) * (geo.dx + geo.cw) + geo.dx; /* may be increased if deck visible */ geo.preferred_height = 4 * (geo.dy + geo.ch) + geo.dy; required = rules.numslots + ((rules.variant & DECK_SOURCE) ? 1 : 0); /* printf("space for %d piles (%d needed)\n", rem_x / (geo.cw + geo.dx), required); */ if (rem_x < required * (geo.cw + geo.dx)) { if (0 && rules.numslots == 8) { /* disable star layout! */ /* generate a star layout */ int slw, slh, deckx, decky; int num; slw = (rem_x - geo.cw - 3 * geo.dx) / 2; slh = (geo.h - geo.ch - 3 * geo.dy) / 2; deckx = 2 * geo.dx + slw; decky = 2 * geo.dy + slh; num = (slh - geo.ch) / cdy; /* number of cards to display before resize */ cdx = (slw - geo.cw) / num; /* should be the same for x direction */ /* printf("generating star layout for %d,%d; deck at %d,%d, sls=%d,%d\n", geo.w, geo.h, deckx, decky, slw, slh); */ for (i = 0; i < rules.numslots; ++i) { p->w = slw; p->h = slh; p->x = deckx; p->y = decky; p->dx = dxtab[i] * cdx; p->dy = dytab[i] * cdy; /* Korrekturen */ switch (dxtab[i]) { case 0: p->w = geo.cw; break; case 1: p->x += geo.cw + geo.dx; break; case -1: p->x -= slw + geo.dx; p->ox = slw - geo.cw; break; } switch (dytab[i]) { case 0: p->h = geo.ch; break; case 1: p->y += geo.ch + geo.dy; break; case -1: p->y -= slh + geo.dy; p->oy = slh - geo.ch; break; } /* printf("Slot %d at %3d,%3d o=%3d,%3d, d=%3d,%3d\n", i, p->x, p->y, p->ox, p->oy, p->dx, p->dy); */ ++p; } p->x = deckx; p->y = decky; return GEN_BIG_STAR_LAYOUT; } else { /* not enough, fall back to low res layout */ return gen_low_layout(); } } else { /* enough space for the slots! */ int currentx = geo.dx; /* printf("generating high layout for %d,%d\n", geo.w, geo.h); */ if (rem_x >= (rules.numslots + 1) * (geo.cw + geo.dx) && !(rules.variant & NODEAL)) { /* there is space for the deck, and we can use one! */ geo.pg[game.numpiles-1].x = geo.dx; geo.pg[game.numpiles-1].y = geo.dy + geo.ch + geo.dy; currentx += geo.cw + geo.dx; new_layout_type = GEN_BIG_LAYOUT_WITH_DECK; geo.preferred_width += geo.dx + geo.cw; } for (i = 0; i < rules.numslots; ++i) { /* create slot of full window height */ p->x = currentx; p->y = geo.dy; p->h = geo.w - 2 * geo.dy + BOTTOM_INC; currentx += geo.cw + geo.dx; ++p; } /* redo pos. of stacks */ p = geo.pg; for (i = 0; i < rules.numstacks; ++i) { p->x = currentx + (i / 4) * (geo.cw + geo.dx); p->y = geo.dy + (i & 3) * (geo.ch + geo.dy); ++p; } } return new_layout_type; } static int FreeCell_layout(void) { int i, cols, off; struct pilegeometry *p = geo.pg; /* printf("generating FreeCell layout for %d,%d\n", geo.w, geo.h); */ cols = max(rules.numslots, rules.numstacks + rules.numtmps); off = cols - rules.numstacks; for (i = 0; i < rules.numstacks; ++i) { p->x = geo.dx + (geo.dx + geo.cw) * (i+off); p->y = geo.dy; ++p; } off = cols - rules.numslots; for (i = 0; i < rules.numslots; ++i) { p->x = geo.dx + (geo.dx + geo.cw) * (i+off); p->y = 2 * geo.dy + geo.ch; p->h = geo.h - p->y - geo.dy + BOTTOM_INC; ++p; } off = 0; for (i = 0; i < rules.numtmps; ++i) { p->x = geo.dx + (geo.dx + geo.cw) * (i+off); p->y = geo.dy; ++p; } p->x = p->y = -1; /* deck is invisible */ geo.preferred_width = (cols+1) * geo.dx + cols * geo.cw; geo.preferred_height = (1 + SLOTFACTOR) * (geo.dy + geo.ch) + geo.dy; return FREECELL_MAGIC; } /* set slot positions and sizes for a given Tableau size and card sizes */ /* geo.w and geo.h are guaranteed to be at least the minimum sizes */ int generate_layout(void) { /* assign defaults */ Pileindex i; struct pilegeometry *p; int xnum, ynum, new_layout_type; for (i = 0; i < game.numpiles; ++i) { p = geo.pg+i; p->x = -1; p->y = -1; p->w = geo.cw; p->h = geo.ch; p->ox = 0; p->oy = 0; p->dx = 0; p->dy = game.piletype[i] == Slot ? geo.ch / 5 : 0; p->cdx = p->dx; p->cdy = p->dy; } /* the default is that there is only one layout per rule set, which is minsize and preferred size at the same time. So we set it here. It can be overridden by the special layout functions */ geo.preferred_width = geo.min_width; geo.preferred_height = geo.min_height; xnum = (geo.w - geo.dx) / (geo.cw + geo.dx); ynum = (geo.h - geo.dy) / (geo.ch + geo.dy); if (rules.special_layout) { new_layout_type = (*rules.special_layout)(); } else { /* compute number of cards in either direction with standard layout */ switch (rules.layout_hints) { case 0: case 1: new_layout_type = rules.numtmps ? FreeCell_layout() : ynum >= 4 ? gen_high_layout() : gen_low_layout(); break; default: new_layout_type = -1; } } /* provide size of largest slot */ geo.lsw = geo.cw; geo.lsh = geo.ch; for (i = 0; i < game.numpiles; ++i) { p = geo.pg+i; if (!NOT_DISPLAYED(p)) { if (p->w > geo.lsw) geo.lsw = p->w; if (p->h > geo.lsh) geo.lsh = p->h; } } /* printf("layout done (type 0x%x), min=%d,%d, pref=%d,%d\n", new_layout_type, geo.min_width, geo.min_height, geo.preferred_width, geo.preferred_height); */ return new_layout_type; } void generic_minwindow(void) { int xcards, xgaps, ycards, ygaps; obtain_current_geometry(); /* update geo structure */ if (rules.special_minwindow) { (*rules.special_minwindow)(geo.cw, geo.ch, geo.dx, geo.dy, &geo.min_width, &geo.min_height); } else { indep_generic_minwindow(&xcards, &xgaps, &ycards, &ygaps); geo.min_width = geo.dx * xgaps + geo.cw * xcards; geo.min_height = geo.dy * ygaps + geo.ch * ycards; } /* printf("==> generic minwindow = %d,%d\n", geo.min_width, geo.min_height); */ } xpat2-1.07/src/xpatgeo.h100644 146 144 4624 6713612055 13601 0ustar mbimathopt/* The static data describing the geometry of the Tableau and the cards */ struct pilegeometry { int x, y; /* position on the Tableau widget */ int w, h; /* size of the pile, at least card size */ int ox, oy; /* offset of lowest card in this pile */ int dx, dy; /* for slots: std. replacement */ int cdx, cdy; /* for slots: current replacement (may be smaller due to many cards) */ }; struct Coord { /* for storing arrow coordinates */ int x; int y; }; #define ARROW_MAX_COORDINATES 10 /* max number of coords for arrow */ #define UPDOWN_MINDIST (geo.ya_h + geo.ah + 1) struct geometry { int w, h; /* width and height of the tableau */ int dx, dy; /* gaps between the cards */ int cw, ch; /* width and height of a card */ int rx, ry; /* size of card roundness */ int ya_w, ya_h, xa_w, xa_h; /* arrow head dimension, set by init */ int aw, ah; /* width and height of an arrow */ struct pilegeometry pg[MAXPILES]; /* where the piles are and how large */ int lsw, lsh; /* largest slot width, height */ int preferred_width, preferred_height; /* w, h for this layout type */ int min_width, min_height; /* minimal w, h for these rules */ int w_width, w_height; /* if using ScrollView: size of pane */ }; extern struct geometry geo; #define NOT_DISPLAYED(p) ((p)->x == -1 && (p)->y == -1) /* BOTTOM_INC is the amout a slot is extended below the end of the tableau */ /* define BOTTOM_INC = 0 if you do not want this */ #define RIGHT_INC (geo.dx + geo.cw * 2 / 3) #define BOTTOM_INC (geo.dy + geo.ch * 2 / 3) /* layout types for Spider, Gypsy are 0..7 */ /* for new rules, just add any value */ #define GEN_BIG_LAYOUT_NO_DECK 0 #define GEN_BIG_LAYOUT_WITH_DECK 1 #define GEN_BIG_LAYOUT_WITH_DECK 1 #define GEN_BIG_STAR_LAYOUT 3 #define FREECELL_MAGIC 0x220 #define DELIGHT_MAGIC 0x260 #define MONTECARLO_MAGIC 0x320 #define MIDNIGHTOIL_MAGIC 0x370 #define MICHAELS_MAGIC 0x3c0 #define ROYAL_MAGIC 0x3e0 #define BAKERS_MAGIC 0x400 #define CANFIELD_MAGIC 0x420 #define OONSOO_MAGIC 0x440 #define BLUEMOON_MAGIC 0x460 /* typedef enum { arrow_x, arrow_y, arrow_z, mark_s } BitBlt_type; */ #define BITBLT_ARROW_X 0 #define BITBLT_ARROW_Y 1 #define BITBLT_ARROW_Z 2 #define BITBLT_MARK 3 void bitblt_arrow(int type, int save, int x, int y, int w, int h); void draw_arrow_polygon(int npoints, const struct Coord *poly); xpat2-1.07/src/usage.c100644 146 144 5560 6714043356 13234 0ustar mbimathopt static void usage(const char *arg) { fprintf(stderr, "usage: xpat2 [options] [ or ]\n"); fprintf(stderr, "valid options are:\n"); #ifdef useXlib fprintf(stderr, "-display set display\n"); fprintf(stderr, "-geometry set initial geometry\n"); #ifdef LOADCARDS fprintf(stderr, "-cards set cardset to external file\n"); #endif #endif fprintf(stderr, "-xpmdir directory to load xpm files from\n"); fprintf(stderr, "-xpmcls allow colours of this closeness (0 to 65535)\n"); fprintf(stderr, "-sound <0/1> enables/disables sound\n"); fprintf(stderr, "-tb set background color of tableau\n"); fprintf(stderr, "-cb set cardback color\n"); fprintf(stderr, "-markcolor set color of card marks\n"); fprintf(stderr, "-markwidth set width of card marks\n"); fprintf(stderr, "-bfont set font for buttons\n"); fprintf(stderr, "-sfont set font for status line\n"); fprintf(stderr, "-gapx, -gapy set space between cards (0 to 20)\n"); fprintf(stderr, "\ngame customization:\n"); fprintf(stderr, "-rules set rules to HM or Spider or Stairs\n"); fprintf(stderr, "-slots set number of slots (2 to 60)\n"); fprintf(stderr, "-decks set number of decks (1 to 9)\n"); fprintf(stderr, "-tmps set number of tmps (1 to 9)\n"); fprintf(stderr, "-faceup set initial deal parameter (0 to 20)\n"); fprintf(stderr, "-facedown set initial deal parameter (0 to 20)\n"); fprintf(stderr, "-jokers set number of jokers (do not use, it's too easy)\n"); fprintf(stderr, "-flips limit number of flips (0 to 99)\n"); fprintf(stderr, "-relaxed 0|1 choose easy or hard variant\n"); fprintf(stderr, "-turn set number of cards to turn (1 to 9)\n"); fprintf(stderr, "-rotations set maximum number of slot rotations (0 to 9)\n"); fprintf(stderr, "-p{0,1,2,3} set various rule parameters\n"); #if 0 /* for insiders only */ fprintf(stderr, "-autolayout <0/1> 0: to avoid automatic re-layout at resize time\n"); fprintf(stderr, "-mem <0/1> 0: do not store card images at full depth internally\n"); fprintf(stderr, "-by set button gap y size\n"); fprintf(stderr, "-bx set button gap x size\n"); fprintf(stderr, "-cround set size of round card corners (0 to 20)\n"); fprintf(stderr, "-bround set size of round button corners (0 to 20)\n"); #endif if (arg) fprintf(stderr,"argument \"%s\" caused this message\n", arg); exit(EXIT_FAILURE); } xpat2-1.07/src/arrows.c100644 146 144 15463 6713052102 13454 0ustar mbimathopt#include "xpatgame.h" #include "xpatgeo.h" static int rem_sx = -1, rem_sy, rem_dx, rem_dy; static void compute_rem(void) { Pileindex srcpile; struct pilegeometry *p; srcpile = getpile(game.arrow_srcind); p = geo.pg + srcpile; rem_sx = p->x + p->ox + geo.cw / 2; rem_sy = p->y + p->oy + geo.ch / 2; if (game.piletype[srcpile] == Slot && CARDS_ON_PILE(srcpile) > 1) { /* first, compute position in the middle of topmost card */ rem_sx += p->cdx * (game.arrow_srcind - INDEX_OF_FIRST_CARD(srcpile)); rem_sy += p->cdy * (game.arrow_srcind - INDEX_OF_FIRST_CARD(srcpile)); if (game.arrow_srcind != INDEX_OF_LAST_CARD(srcpile)) { /* place arrow within visible part of card */ if (p->cdx) { /* horizontal displacement */ if (p->cdx > 0) rem_sx -= (geo.cw - p->cdx) / 2; else rem_sx += (geo.cw + p->cdx) / 2; } if (p->cdy) { if (p->cdy > 0) rem_sy -= (geo.ch - p->cdy) / 2; else rem_sy += (geo.ch + p->cdy) / 2; } } } p = geo.pg + game.arrow_dstpile; rem_dx = p->x + p->ox + geo.cw / 2; rem_dy = p->y + p->oy + geo.ch / 2; if (game.piletype[game.arrow_dstpile] == Slot && !EMPTY(game.arrow_dstpile)) { rem_dx += p->cdx * (CARDS_ON_PILE(game.arrow_dstpile) - 1); rem_dy += p->cdy * (CARDS_ON_PILE(game.arrow_dstpile) - 1); } /* check that coordinates are within tableau */ #define CHECK(rem_sy, h) \ if (rem_sy < 1) \ rem_sy = 1; \ if (rem_sy > geo.h - 2) \ rem_sy = geo.h - 2; CHECK(rem_sx, w); CHECK(rem_sy, h); CHECK(rem_dx, w); CHECK(rem_dy, h); } /* draw an arrow with y-part */ static int polygon_y(struct Coord *Poly, int deltax, int deltay, int adx, int ady) { Poly[0].x = rem_dx-deltax; Poly[0].y = rem_dy-ady/2; Poly[1].x = rem_dx-adx; Poly[1].y = rem_dy-ady; Poly[2].x = rem_dx; Poly[2].y = rem_dy+ady; Poly[3].x = rem_dx+adx; Poly[3].y = rem_dy-ady; Poly[4].x = rem_dx+deltax; Poly[4].y = rem_dy-ady/2; if (rem_dx-rem_sx > 0) { /* this is uncritical, since difference is */ Poly[5].x = rem_dx+deltax; /* either 0 or at least CARD_WIDTH */ Poly[5].y = rem_sy+deltay; Poly[6].x = rem_sx-deltax; Poly[6].y = rem_sy+deltay; Poly[7].x = rem_sx-deltax; Poly[7].y = rem_sy-deltay; Poly[8].x = rem_dx-deltax; Poly[8].y = rem_sy-deltay; return 9; } else if (rem_dx < rem_sx) { Poly[5].x = rem_dx+deltax; Poly[5].y = rem_sy-deltay; Poly[6].x = rem_sx+deltax; Poly[6].y = rem_sy-deltay; Poly[7].x = rem_sx+deltax; Poly[7].y = rem_sy+deltay; Poly[8].x = rem_dx-deltax; Poly[8].y = rem_sy+deltay; return 9; } else { Poly[5].x = rem_sx+deltax; Poly[5].y = rem_sy+deltay; Poly[6].x = rem_sx-deltax; Poly[6].y = rem_sy+deltay; return 7; } } /* draw an x-only arrow */ static int polygon_x(struct Coord *Poly, int deltax, int deltay, int adx, int ady) { /* arrow: 1 */ /* 0 */ /* 2 */ /* 4 */ /* 3 */ Poly[0].x = rem_dx-adx/2; Poly[0].y = rem_sy-deltay; Poly[1].x = rem_dx-adx; Poly[1].y = rem_sy-ady; Poly[2].x = rem_dx+adx; Poly[2].y = rem_sy; Poly[3].x = rem_dx-adx; Poly[3].y = rem_sy+ady; Poly[4].x = rem_dx-adx/2; Poly[4].y = rem_sy+deltay; Poly[5].x = rem_sx-deltax; Poly[5].y = rem_sy+deltay; Poly[6].x = rem_sx-deltax; Poly[6].y = rem_sy-deltay; return 7; } static int compute_arrow(struct Coord *Poly) { /* build a polygon i.e. a arrow pointing from source to destination */ if (rem_dy >= rem_sy + UPDOWN_MINDIST) /* arrow up */ return polygon_y(Poly, geo.aw,-geo.ah,geo.ya_w, geo.ya_h); else if (rem_dy <= rem_sy - UPDOWN_MINDIST) /* arrow down */ return polygon_y(Poly, geo.aw,geo.ah,geo.ya_w,-geo.ya_h); else if (rem_dx >= rem_sx) /* arrow to the right */ return polygon_x(Poly, geo.aw,geo.ah,geo.xa_w,geo.xa_h); else /* arrow to the left */ return polygon_x(Poly, -geo.aw,geo.ah,-geo.xa_w,geo.xa_h); } static void clear_arrow(void) { int a, d; a = -1; if (rem_sx < rem_dx) { a = rem_sx; d = rem_dx - rem_sx; } else if (rem_sx > rem_dx) { a = rem_dx; d = rem_sx - rem_dx; } else d = a = -1; if (a >= 0) { bitblt_arrow(0, 0, a - geo.aw, rem_sy - geo.ah, d + 2 * geo.aw + 1, 2 * geo.ah + 1); } if (rem_sy <= rem_dy - UPDOWN_MINDIST) { a = rem_sy; d = rem_dy - rem_sy; } else if (rem_sy >= rem_dy + UPDOWN_MINDIST) { a = rem_dy; d = rem_sy - rem_dy; } else { d = a = -1; /* only horizontal part of arrow => y arrow */ bitblt_arrow(2, 0, rem_dx - geo.xa_w, rem_sy - geo.xa_h, 2 * geo.xa_w + 1, 2 * geo.xa_h + 1); } if (a >= 0) { bitblt_arrow(1, 0, rem_dx - geo.aw, a - geo.ah, 2 * geo.aw + 1, d + 2 * geo.ah + 1); bitblt_arrow(2, 0, rem_dx-geo.ya_w, rem_dy-geo.ya_h, 2 * geo.ya_w + 1, 2 * geo.ya_h + 1); } rem_sx = -1; } static void save_background(void) { /* save the background */ int a, d; a = -1; if (rem_sx < rem_dx) { a = rem_sx; d = rem_dx - rem_sx; } else if (rem_sx > rem_dx) { a = rem_dx; d = rem_sx - rem_dx; } else d = a = -1; if (a >= 0) { int len; len = d + 2 * geo.aw + 1; bitblt_arrow(0, 1, a - geo.aw, rem_sy - geo.ah, len, 2 * geo.ah + 1); } if (rem_sy <= rem_dy - UPDOWN_MINDIST) { a = rem_sy; d = rem_dy - rem_sy; } else if (rem_sy >= rem_dy + UPDOWN_MINDIST) { a = rem_dy; d = rem_sy - rem_dy; } else { d = a = -1; /* only horizontal part of arrow */ bitblt_arrow(2, 1, rem_dx-geo.xa_w, rem_sy-geo.xa_h, 2 * geo.xa_w + 1, 2 * geo.xa_h + 1); } if (a >= 0) { int height; height = d + 2 * geo.ah + 1; bitblt_arrow(1, 1, rem_dx - geo.aw, a - geo.ah, 2 * geo.aw + 1, height); bitblt_arrow(2, 1, rem_dx-geo.ya_w, rem_dy-geo.ya_h, 2 * geo.ya_w + 1, 2 * geo.ya_h + 1); } } void show_arrow(int on) { /* printf("show_arrow(%d): aw = %d\n", on, geo.aw); */ if (geo.aw <= 0) /* no arrows active */ return; if (on) { /* calculate new arrow position */ #ifdef DEBUG if (on == 2) fprintf(stderr, "arrow(2): srcind = %d\n", game.arrow_srcind); #endif if (game.arrow_srcind < 0) return; /* adapt arrows to match cardset sizes */ geo.ya_h = geo.xa_w = geo.aw * 2; geo.xa_h = geo.ya_w = geo.aw * 4; if (on == 1) { /* 1 = recompute, 2 = redisplay last */ compute_rem(); save_background(); } { struct Coord poly[ARROW_MAX_COORDINATES]; int npoints; npoints = compute_arrow(poly); draw_arrow_polygon(npoints, poly); } } else { game.arrow_srcind = -1; /* no valid arrow now */ if (rem_sx < 0) return; /* no arrow was visible */ clear_arrow(); } } xpat2-1.07/src/b.xpm100644 146 144 404 6712536561 12706 0ustar mbimathopt/* XPM */ static const char *b[] = { /* width height num_colors chars_per_pixel */ " 5 9 2 1", /* colors */ ". c #c0c0c0", "# c #000000", /* pixels */ "....#", "...##", "..###", ".####", "#####", ".####", "..###", "...##", "....#" }; xpat2-1.07/src/XQtCrdsDlg.cpp100644 146 144 11651 6711441253 14460 0ustar mbimathopt/* -*- C++ -*- Time-stamp: <28 Apr 99 01:05:15 Michael Bischoff> */ /* implementation of the customize / change graphics dialog */ #include "XQtCards.h" #include #include #include #include "qmaskedit.h" #include #include #include #include #define X_SCALE 9 #define Y_SCALE 27 void XQtCards::CustomizeDialog(bool modal) { if (customize_dlg) { // customize_dlg->setFocus(); customize_dlg->setActiveWindow(); return; } QFont labelfont("helvetica", 14); QFont pushbfont("helvetica", 14); // , QFont::Bold); QFont effont("fixed", 12); customize_dlg = new QDialog(0, "XQtCards customizer", modal); customize_dlg->setFixedSize(67 * X_SCALE, 7 * Y_SCALE); customize_dlg->setCaption("XPat2: Change / Customize Graphics"); #if 0 for (int i = 0; i < 7; ++i) { QLabel *tmp = new QLabel("I", customize_dlg); tmp->move(0, i * Y_SCALE); tmp->resize(8, 23); tmp->setFont(labelfont); } #endif QLabel *text1 = new QLabel ("Card graphics directory:", customize_dlg); text1->move(X_SCALE, 0); text1->resize(X_SCALE * 64, 23); text1->setFont(labelfont); QLineEdit *edit1 = new QLineEdit(customize_dlg); edit1->setText(this->directory); edit1->move(X_SCALE, Y_SCALE); edit1->resize(X_SCALE * 64 + 8, 24); edit1->setFont(effont); customize_dlg_dir = edit1; QLabel *text2 = new QLabel ("Cardback number:", customize_dlg); text2->move(X_SCALE, 2 * Y_SCALE); text2->resize(X_SCALE * 32, 23); text2->setFont(labelfont); QMaskEdit *edit2 = new QMaskEdit(get_numcardbacks(), 0, customize_dlg); edit2->setText("0"); edit2->move((65 - edit2->getFieldSize()) * X_SCALE, 2 * Y_SCALE); edit2->resize(X_SCALE * edit2->getFieldSize() + 8, 24); edit2->setFont(effont); edit2->setValue(currentcardback); customize_dlg_cbn = edit2; QPushButton *pb_apply = new QPushButton("&Apply", customize_dlg); QPushButton *pb_ok = new QPushButton("&Ok", customize_dlg); QPushButton *pb_cancel = new QPushButton("&Cancel", customize_dlg); QPushButton *pb_reset = new QPushButton("&Reset", customize_dlg); QPushButton *pb_browse = new QPushButton("&Browse", customize_dlg); pb_reset->move ( 9, 5 * Y_SCALE); pb_ok->move (305, 5 * Y_SCALE); pb_apply->move (404, 5 * Y_SCALE); pb_cancel->move(503, 5 * Y_SCALE); pb_browse->move(503, 0 * Y_SCALE); pb_ok ->resize(10 * X_SCALE, 27); pb_cancel->resize(10 * X_SCALE, 27); pb_apply ->resize(10 * X_SCALE, 27); pb_reset ->resize(10 * X_SCALE, 27); pb_browse->resize(10 * X_SCALE, 27); pb_ok ->setFont(pushbfont); pb_cancel->setFont(pushbfont); pb_apply ->setFont(pushbfont); pb_reset ->setFont(pushbfont); pb_browse->setFont(pushbfont); QToolTip::add(pb_ok, "Apply any changes and close this window"); QToolTip::add(pb_reset, "Restore currently active values"); QToolTip::add(pb_cancel, "Ignore any changes made and close this window"); QToolTip::add(pb_apply, "Apply any Changes and continue customizing"); QToolTip::add(pb_browse, "Open directory selection dialog"); connect(pb_ok, SIGNAL(clicked()), this, SLOT(cards_ok())); connect(pb_apply, SIGNAL(clicked()), this, SLOT(cards_apply())); connect(pb_cancel, SIGNAL(clicked()), this, SLOT(cards_cancel())); connect(pb_reset, SIGNAL(clicked()), this, SLOT(cards_reset())); connect(pb_browse, SIGNAL(clicked()), this, SLOT(cards_browse())); customize_dlg->show(); if (modal) { customize_dlg->exec(); delete customize_dlg; customize_dlg = 0; } } void XQtCards::cards_reset() { customize_dlg_dir->setText(directory); customize_dlg_cbn->setValue(currentcardback); } void XQtCards::check_for_changes_and_apply() { bool changed = 0; if (strcmp(customize_dlg_dir->text(), directory)) { reloadGraphics(customize_dlg_dir->text()); changed = TRUE; } int cardbackno = customize_dlg_cbn->value(); if (cardbackno != 0 && cardbackno != currentcardback) { set_cardback(cardbackno); changed = TRUE; } if (changed) emit cards_changed(); } void XQtCards::cards_apply() { check_for_changes_and_apply(); } void XQtCards::cards_ok() { check_for_changes_and_apply(); delete customize_dlg; //->accept(); customize_dlg = 0; } void XQtCards::cards_cancel() { delete customize_dlg; // ->reject(); customize_dlg = 0; } void XQtCards::cards_browse() { QFileDialog *fd = new QFileDialog(customize_dlg_dir->text(), 0, customize_dlg, "xpm dir selection", TRUE); #if 0 /* does the same */ fd->setCaption("Select XPM directory"); fd->setMode(QFileDialog::Directory); fd->exec(); customize_dlg_dir->setText(fd->selectedFile()); delete fd; #else customize_dlg_dir->setText(QFileDialog::getExistingDirectory( customize_dlg_dir->text(), customize_dlg, "xpm dir selection")); #endif } xpat2-1.07/src/XQtTableau.h100644 146 144 4237 6715033041 14136 0ustar mbimathopt#ifndef XQTTABLEAU_H #define XQTTABLEAU_H #include /* The Tableau constructor loads the card graphics (class XQtCards) and requests the layout from the game. With the size of a single card and the layout and the parameters (x distance, y distance, Std-delta-y) the size of the widget is then determined */ // class XPat2CommonRules; class XQtCardPile; class XQtCards; class QMouseEvent; class QTimer; class XQtTableau : public QWidget { Q_OBJECT private: XQtCards *cards; // this points to an allocated object. XQtCardPile *dragpile; // currently dragging this pile bool dragtype; // TRUE = drag it, FALSE = do only expose it int hs_x, hs_y; // hotspot within dragged cards QTimer *timer; // for animated play int dp_sx, dp_tx, dp_sy, dp_ty, dp_tpile, dp_r2, dp_done; int frames_per_second; // 1..99 (default: 20) int pixels_per_second; // 1..50 int src_x, src_y, src_pile; void create_all_piles(); void delete_all_piles(); public: void enter_rules(); void leave_rules(); bool dragndrop_on; bool animation_on; bool sound_on; void obtain_geometry(); QSize sizeHint() const; private slots: void move_dragpile(); public slots: void startDrag(XQtCardPile *, int, int, bool, int, int, int); void stopDrag(); void Drag(int, int); void startAnimate(int, int); // mouse was released at argument pos. void CustomizeModal(); void CustomizeModeless(); void repaintAll(); // repaint all piles public: XQtTableau(const char *rules = "Gypsy", long seed = -1L, QWidget *parent = 0, const char *name = 0, const char *xpmdir = 0); ~XQtTableau(); XQtCardPile **piles; void init_layout(); // QSize sizeHint() const; // int *cardy; XQtCards *getCards() const { return cards; } private: // void changeRules(XPat2CommonRules *rules); void mouseReleaseEvent(QMouseEvent*); private: // int distx; // distance between cards - horizontally // int disty; // distance between cards - vertically // XPat2CommonRules *rules; // the number of piles is obtained from the rules class protected: void paintEvent(QPaintEvent *); }; #endif xpat2-1.07/src/XQtWindow.h100644 146 144 5020 6714337362 14033 0ustar mbimathopt/**************************************************************************** ** $Id: application.h,v 1.5 1998/06/23 09:47:41 warwick Exp $ ** ** Copyright (C) 1992-1998 Troll Tech AS. All rights reserved. ** ** This file is part of an example program for Qt. This example ** program may be used, distributed and modified without limitation. ** *****************************************************************************/ #ifndef XQTWINDOW_H #define XQTWINDOW_H #include class QScrollView; class QToolBar; class QPopupMenu; class QToolButton; class XQtTableau; class XQtXPat2Window: public QMainWindow { Q_OBJECT public: XQtXPat2Window(const char *rules = 0, long seed = -1L); ~XQtXPat2Window(); bool getSound() const { return sound_on; } void enter_rules(); QScrollView *scrollView; private slots: void QtCmd_NewGame(); void QtCmd_SaveGame(); void QtCmd_LoadGame(); void QtCmd_UndoMove(); void QtCmd_RedoMove(); void QtCmd_RestartGame(); void QtCmd_DropBM(); void QtCmd_GotoBM(); void QtCmd_DealCards(); void QtCmd_ReplayGame(); void QtCmd_ShowScore(); void QtCmd_Info(); void QtCmd_ShowVersion(); void QtCmd_AllToStack(); void QtCmd_AllMoves(); void QtCmd_NextHint(); void QtCmd_PrevHint(); void QtCmd_DoHint(); void QtCmd_MinWindow(); void QtCmd_PrefWindow(); void QtCmd_AdaptWindow(); void QtCmd_RotateUp(); void QtCmd_RotateDown(); void QtCmd_rSpider(); void QtCmd_rGypsy(); void QtCmd_rKlondike(); void QtCmd_rSHT(); void QtCmd_rFreeCell(); void QtCmd_rIdiots(); void QtCmd_rMC(); void QtCmd_rMO(); void QtCmd_rCalc(); void QtCmd_rmodCan(); void QtCmd_rMichaels(); void QtCmd_rCanfield(); void QtCmd_rRC(); void QtCmd_rBakers(); void QtCmd_rOonsoo(); void QtCmd_rBluemoon(); void about(); void toggleMenuBar(); void toggleStatusBar(); void toggleToolBar(); void toggleSound(); void toggleDragNDrop(); void toggleAnimation(); void QtCmd_hlpKeys(); void QtCmd_hlpRules(); private: QToolBar *fileTools; QPopupMenu *m_file; QPopupMenu *m_moves; QPopupMenu *m_rules; QPopupMenu *m_controls; QPopupMenu *m_misc; QPopupMenu *m_windows; QPopupMenu *m_help; XQtTableau *tableau; /* menu item identifiers: */ int i_mb, i_tb, i_sb, i_udo, i_rdo; int i_snd, i_dnd, i_ani; int icmd_ru, icmd_rd, icmd_dc; bool sound_on, dragNdrop_on, animation_on; QToolButton *tb_dc; }; #endif xpat2-1.07/src/XQtCards.cpp100644 146 144 44134 7201337316 14173 0ustar mbimathopt/* -*- C++ -*- Time-stamp: <05 Nov 00 21:10:54 Michael Bischoff> */ /* Changes: changed CopyROP to Qt::CopyROP for Qt 2.x */ #include "XQtCards.h" #include #include #include #include #include #include #include "time.h" #ifndef LIBDIR #define LIBDIR "/usr/games/lib/xpat" #endif static const char *xpmfilename(const char *xpmdir, const char *file, const char *ext = 0) { static char buff[256]; if (strlen(xpmdir) + strlen(file) + (ext ? strlen(ext) : 3) + 3 > sizeof(buff)) exit(101); /* avoid buffer overflow with unpredictable results */ sprintf(buff, "%s/%s.%s", xpmdir, file, ext ? ext : "xpm"); return buff; } /* with this module, cards are built the following way: 1) If a complete card image does exist (filename: "(rank).(suit).xpm"), this image is read and used as the card pixmap. A rounded rectangle is drawn as a border. If the image does not exist, the card is constructed as follows. 2) a white pixmap of full cardsize is created. The width and height are taken from the Cards.conf file (1st line) and default to 79x123. 3) The default card background, taken from Background.xpm, is centered in the pixmap. 4) Rank and small suit symbols are drawn into the pixmap. 5) If a center picture does exist (filename "(rank).(suit).pic.xpm"), it is centered in the card. Otherwise, the card is filled with suit symbols. 6) A rounded rectangle is drawn as card border. For pictures (Jack to King), the procedure in 5) is slightly different, as the center pictures have to be mirrored and drawn twice. The cards may be configured by the Cards.conf file. This file is optional and may end after any line. The values not read from the file take their default values then. line | entries | comment, [default] -----+---------+-------------------------------------------------------- 1 | 2 | width, height of the cards [79x123] 2 | 2 | number of cardbacks, jokers [1, 1] 3 | 1 | flags, bits are ored together, see below [0] 4 | 2 | x, y distance of the border lines for pictures [6, 7] 5 | 2 | Position of the medium-sized suit symbols for pictures | | (0 = omit them) [11, computed] 6 | 2 | x, y coordinate of the rank symbols [4,6] 7 | 2 | x, y coordinate of the small suit symbol below the rank | | symbol [3, computed] 8 | 2 | xdelta, ydelta amount in pixels to shift large symbols | | closer together [0,0] 9 | 3 | x0,x1,x2 the three possible x-coordinates of the large | | suit symbols [computed] 10 | 9 | y0..y8 the nine possible y-coordinates of the large | | suit symbols [computed] -----+---------+--------------------------------------------------------- Use of the lines 9 and 10 is intended for emergency cases only, as line 8 should allow all configurations with equidistant suit symbols. */ /* for flags: */ #define TWORANKS 1 /* display two rank symbols? */ #define PRINT 2 /* print x(i), y(i) (Debugging) */ #define PIC_BG 4 /* use same background for pictures? */ #define NOCENTERLINE 8 /* place picture one lower and don't draw black center line */ #define RANKWIDTH 9 #define RANKHEIGHT 14 #define SUITSIZE0 41 #define SUITSIZE1 21 #define SUITSIZE2 15 #define SUITSIZE3 11 #define SUITOFF0 (0) #define SUITOFF1 (SUITSIZE0) #define SUITOFF2 (SUITSIZE0+SUITSIZE1) #define SUITOFF3 (SUITSIZE0+SUITSIZE1+SUITSIZE2) static struct cardconfig { int w, h, rx, ry; int flags; int ydelta; /* odd integer! */ int Ox, Oy; /* distance of the border for pictures */ int Rx, Ry; /* position of the rank symbol */ int Sx, Sy; /* position of the small suit symbol */ int Mx, My; /* position of the medium suit symbol */ int x0, x1, x2; /* x-positions of the large suit symbols */ int y0, y1, y2, y3, y4, y5, y6, y7, y8; /* y-positions */ int numbacks, numjokers; int pile_dx, pile_dy, slot_dx, slot_dy; } cc; #define CARD_WIDTH (cc.w) #define CARD_HEIGHT (cc.h) static void read_cardconfig(const char *filename) { FILE *fp; int tmp[9]; cc.pile_dx = 4; /* to be added to Cards.conf later... */ cc.pile_dy = 4; cc.slot_dx = 0; cc.slot_dy = 28; if (!(fp = fopen(filename, "r"))) { fprintf(stderr, "xpat2: WARNING, cannot load configuration file %s\n", filename); goto stdconfig; } if (fscanf(fp, "%d %d", &CARD_WIDTH, &CARD_HEIGHT) != 2 || CARD_WIDTH < 48 || CARD_WIDTH > 123 || CARD_HEIGHT < 64 || CARD_HEIGHT > 200) { fclose(fp); fp = NULL; goto stdconfig; } else goto havesize; stdconfig: CARD_WIDTH = 79; CARD_HEIGHT = 123; havesize: cc.rx = cc.ry = CARD_WIDTH / 8; /* to be added to Cards.conf later... */ cc.numbacks = cc.numjokers = 1; cc.ydelta = (((CARD_HEIGHT - 2 - 4 * SUITSIZE1) / 7) | 1); cc.x0 = (CARD_WIDTH - 1 * SUITSIZE1) / 2 - 2 * CARD_WIDTH / 9 + 1; cc.x1 = (CARD_WIDTH - 1 * SUITSIZE1) / 2; cc.x2 = (CARD_WIDTH - 1 * SUITSIZE1) / 2 + 2 * CARD_WIDTH / 9 - 1; cc.y0 = (CARD_HEIGHT - 3 * cc.ydelta - 4 * SUITSIZE1) / 2; cc.y1 = (CARD_HEIGHT - 2 * cc.ydelta - 3 * SUITSIZE1) / 2; cc.y2 = (CARD_HEIGHT - 1 * cc.ydelta - 2 * SUITSIZE1) / 2; cc.y3 = (CARD_HEIGHT - 0 * cc.ydelta - 1 * SUITSIZE1) / 2; cc.y4 = (CARD_HEIGHT + 1 * cc.ydelta - 0 * SUITSIZE1) / 2; cc.y5 = (CARD_HEIGHT + 2 * cc.ydelta + 1 * SUITSIZE1) / 2; cc.y6 = (CARD_HEIGHT + 3 * cc.ydelta + 2 * SUITSIZE1) / 2; cc.y7 = (cc.y0 + cc.y3) / 2; cc.y8 = (cc.y6 + cc.y3) / 2; cc.flags = 0; cc.Mx = 11; cc.My = cc.y0 + 3; cc.Ox = 6; cc.Oy = 7; cc.Rx = 4; cc.Ry = 6; cc.Sx = 3; cc.Sy = cc.y0 + SUITSIZE1 - SUITSIZE3; if (fp) { /* Cards.Conf does exist */ /* possibility to override the defaults */ if (fscanf(fp, "%d %d", tmp, tmp+1) == 2) cc.numbacks = tmp[0], cc.numjokers = tmp[1]; if (cc.numbacks <= 0 || cc.numbacks > 99) cc.numbacks = 1; if (fscanf(fp, "%d", tmp) == 1) cc.flags = tmp[0]; if (fscanf(fp, "%d %d", tmp, tmp+1) == 2) cc.Ox = tmp[0], cc.Oy = tmp[1]; if (fscanf(fp, "%d %d", tmp, tmp+1) == 2) cc.Mx = tmp[0], cc.My = tmp[1]; if (fscanf(fp, "%d %d", tmp, tmp+1) == 2) cc.Rx = tmp[0], cc.Ry = tmp[1]; if (fscanf(fp, "%d %d", tmp, tmp+1) == 2) cc.Sx = tmp[0], cc.Sy = tmp[1]; if (fscanf(fp, "%d %d", tmp, tmp+1) == 2) { /* xdelta and ydelta */ cc.x0 += tmp[0], cc.x2 -= tmp[0], cc.y0 += 3 * tmp[1]; cc.y1 += 2 * tmp[1]; cc.y2 += 1 * tmp[1]; cc.y4 -= 1 * tmp[1]; cc.y5 -= 2 * tmp[1]; cc.y6 -= 3 * tmp[1]; tmp[1] = tmp[1] * 3 / 2; cc.y7 += tmp[1]; cc.y8 -= tmp[1]; } if (fscanf(fp, "%d %d %d", tmp, tmp+1, tmp+2) == 3) cc.x0 = tmp[0], cc.x1 = tmp[1], cc.x2 = tmp[2]; if (fscanf(fp, "%d %d %d %d %d %d %d %d %d", tmp, tmp+1, tmp+2, tmp+3, tmp+4, tmp+5, tmp+6, tmp+7, tmp+8) == 9) cc.y0 = tmp[0], cc.y1 = tmp[1], cc.y2 = tmp[2], cc.y3 = tmp[3], cc.y4 = tmp[4], cc.y5 = tmp[5], cc.y6 = tmp[6], cc.y7 = tmp[7], cc.y8 = tmp[8]; fclose(fp); } if (cc.flags & PRINT) printf("y = %d %d %d %d %d %d %d %d %d, x = %d %d %d\n", cc.y0, cc.y1, cc.y2, cc.y3, cc.y4, cc.y5, cc.y6, cc.y7, cc.y8, cc.x0, cc.x1, cc.x2); return; } static const unsigned char suitflags[] = { /* 25 => 03 for different 8 */ 0x80, 0x08, 0x88, 0x01, 0x81, 0x05, 0x45, 0x25, 0x83, 0x13, 0, 0, 0, 0 }; static const char n_ace[] = "Ace", n_deuce[] = "Deuce", n_three[] = "Three", n_four[] = "Four", n_five[] = "Five", n_six[] = "Six", n_seven[] = "Seven", n_eight[] = "Eight", n_nine[] = "Nine", n_ten[] = "Ten", n_jack[] = "Jack", n_queen[] = "Queen", n_king[] = "King", n_joker[] = "Joker", n_diamonds[] = "Diamonds", n_hearts[] = "Hearts", n_spades[] = "Spades", n_clubs[] = "Clubs"; static const char *US_rank_name[] = { n_ace, n_deuce, n_three, n_four, n_five, n_six, n_seven, n_eight, n_nine, n_ten, n_jack, n_queen, n_king }; static const char *US_suit_name[] = { n_clubs, n_spades, n_hearts, n_diamonds }; static void MirrorCard(QPixmap *d, QPainter *p) { p->rotate(180.0); p->drawPixmap(1-CARD_WIDTH, 1-CARD_HEIGHT, *d, 0, 0, CARD_WIDTH, CARD_HEIGHT/2); p->rotate(0.0); } /* load a cardback. 0 = fallback cardback with few colors, -1 = random one */ QPixmap *XQtCards::load_cardback(int num) { QPixmap *cb; int rxp = 0, ryp = 0; if (rx && ry) { rxp = 198 * rx / w; ryp = 198 * ry / h; } char filename[12]; if (num > numcardbacks) /* this can happen when switching images during the game */ num = -1; /* select a new one */ if (num < 0) num = 1 + (int)((time(0) & 0x7fff) % numcardbacks); sprintf(filename, "Cardback%d", num); cb = new QPixmap(xpmfilename(directory, filename)); if (!cb) { fprintf(stderr, "loading the cardback pixmap %s FAILED!\n", filename); // fallback to empty pixmap cb = new QPixmap(w, h); } currentcardback = num; QPainter paint; paint.begin(cb); paint.drawRoundRect(0, 0, w, h, rxp, ryp); paint.end(); cb->setMask(*clipmap); return cb; } void XQtCards::set_cardback(int num = 0) { delete pm_cardback; if (num > numcardbacks || num < 1) num = -1; pm_cardback = load_cardback(num); } /* overlay an xpm file onto the current pixmap */ /* if two is set, the image is just half a card */ static int overlap_picture(const char *name, int two, QPixmap *d, QPainter *paint) { QPixmap *p; int x, y, w, h; p = new QPixmap(name); if (!p) /* file does not exist or cannot be loaded */ return 0; w = p->width(); h = p->height(); if (!w || !h) { delete p; return 0; } if (two == 2 && 2 * h > CARD_HEIGHT) { two = 0; /* just a single picture */ MirrorCard(d, paint); } if (two) { x = (CARD_WIDTH-w) / 2; y = CARD_HEIGHT/2 - h; if (cc.flags & NOCENTERLINE) ++y; } else { x = (CARD_WIDTH-w) / 2; y = (CARD_HEIGHT-h) / 2; } bitBlt(d, x, y, p, 0, 0, w, h, Qt::CopyROP, FALSE); delete p; if (two == 2) MirrorCard(d, paint); return 1; } XQtCards::XQtCards(const char *xpmdir) { if (!xpmdir) xpmdir = LIBDIR "/default"; // default xpm directory local_constructor(xpmdir); } void XQtCards::local_constructor(const char *xpmdir) { int rxp = 0, ryp = 0; int bxo = 0, byo = 0, bw = 0, bh = 0; // background offsets and sizes int bigw = 0, bigh = 0; char name[32]; directory = new char [strlen(xpmdir) + 1]; strcpy(directory, xpmdir); read_cardconfig(xpmfilename(directory, "Cards", "conf")); w = cc.w; h = cc.h; rx = cc.rx; ry = cc.ry; pile_dx = cc.pile_dx; pile_dy = cc.pile_dy; slot_dx = cc.slot_dx; slot_dy = cc.slot_dy; numcardbacks = cc.numbacks; // sanity checks: if (rx > w/2) rx = w/2; if (ry > h/2) ry = h/2; if (rx && ry) { rxp = 198 * rx / w; ryp = 198 * ry / h; clipmap = new QBitmap(w, h, TRUE); QPainter clippaint(clipmap); clippaint.setPen(color1); clippaint.setBrush(color1); clippaint.drawRoundRect(0, 0, w, h, rxp, ryp); clipempty = new QBitmap(w, h, TRUE); QPainter clippaintempty(clipempty); clippaintempty.setPen(color1); clippaintempty.drawRoundRect(0, 0, w, h, rxp, ryp); } QPixmap Ranks (xpmfilename(directory, "Ranks")); QPixmap Suits (xpmfilename(directory, "Suits")); QPixmap Pictures (xpmfilename(directory, "Pictures")); QPixmap Background(xpmfilename(directory, "Background")); QPainter paint; pm_empty = new QPixmap(w, h); paint.begin(pm_empty); paint.setBrush(black); paint.fillRect(0, 0, w, h, black); paint.end(); pm_empty->setMask(*clipempty); bigw = Pictures.width() / 4; bigh = Pictures.height() / 3; bw = Background.width(); bh = Background.height(); if (bw <= w) bxo = (w - bw) / 2; else bw = w; if (bh <= h) byo = (h - bh) / 2; else bh = h; // printf("bw = %d, bh = %d\n", bw, bh); for (int i = 0; i < 59; ++i) { int x, y, suit, rank; suit = i & 3; rank = i >> 2; pm_cards[i] = new QPixmap(w, h); // fprintf(stderr, "Begin (%d, %p) ", i, pm_cards[i]); paint.begin(pm_cards[i]); paint.fillRect(0, 0, w, h, white); if (bw && bh && (((cc.flags & PIC_BG) || !(rank >= 10 && rank <= 12)))) { /* move background */ bitBlt(pm_cards[i], bxo, byo, &Background, 0, 0, bw, bh, Qt::CopyROP, FALSE); } paint.drawRoundRect(0, 0, w, h, rxp, ryp); if (i < 52) { if (cc.Rx) { x = 3 * (suit/2) * RANKWIDTH + (rank / 5) * RANKWIDTH; y = (rank % 5) * RANKHEIGHT; // if (p_rank.clip) XSetClipOrigin(dpy, rankgc, cc.Rx-x, cc.Ry-y); bitBlt(pm_cards[i], cc.Rx, cc.Ry, &Ranks, x, y, RANKWIDTH, RANKHEIGHT, Qt::CopyROP, FALSE); if (cc.flags & TWORANKS) bitBlt(pm_cards[i], CARD_WIDTH-RANKWIDTH-cc.Rx, cc.Ry, &Ranks, x, y, RANKWIDTH, RANKHEIGHT, Qt::CopyROP, FALSE); } if (cc.Sx) { /* Draw the upper small suit symbol(s). */ x = cc.Sx; y = cc.Sy; bitBlt(pm_cards[i], x, y, &Suits, suit * SUITSIZE3, SUITOFF3, SUITSIZE3, SUITSIZE3, Qt::CopyROP, FALSE); if (cc.flags & TWORANKS) bitBlt(pm_cards[i], CARD_WIDTH-SUITSIZE3 - x, y, &Suits, suit * SUITSIZE3, SUITOFF3, SUITSIZE3, SUITSIZE3, Qt::CopyROP, FALSE); } if (rank >= 10) { /* picture */ if (cc.Mx > 0) { bitBlt(pm_cards[i], SUITSIZE2 * suit, SUITOFF2, &Suits, SUITSIZE2, SUITSIZE2, cc.Mx, cc.My, Qt::CopyROP, FALSE); } /* horizontal line in the midst of the card: */ if (!(cc.flags & NOCENTERLINE)) paint.drawLine(cc.Ox, CARD_HEIGHT/2, CARD_WIDTH-1-cc.Ox, CARD_HEIGHT/2); if (cc.Oy) paint.drawLine(4 + RANKWIDTH + 1, cc.Oy, CARD_WIDTH - 1 - 4 - RANKWIDTH - 1, cc.Oy); if (cc.Ox) { paint.drawLine(cc.Ox, cc.y7+1, cc.Ox, CARD_HEIGHT/2); paint.drawLine(CARD_WIDTH-1-cc.Ox, cc.y7+1, CARD_WIDTH-1-cc.Ox, CARD_HEIGHT/2); } { /* load a card image */ if (bigw && bigh) { /* have it! */ x = (CARD_WIDTH-bigw) / 2; y = CARD_HEIGHT/2 - bigh; if (cc.flags & NOCENTERLINE) ++y; bitBlt(pm_cards[i], x, y, &Pictures, bigw*suit, bigh*(rank-10), bigw, bigh, Qt::CopyROP, FALSE); } else { sprintf(name, "%s.%s.pic", US_rank_name[rank], US_suit_name[suit]); if (overlap_picture(xpmfilename(directory, name), 2, pm_cards[i], &paint)) goto picture_done; /* has done the mirroring */ } } #if 1 MirrorCard(pm_cards[i], &paint); #else paint.rotate(180.0); paint.drawPixmap(1-CARD_WIDTH, 1-CARD_HEIGHT, *(pm_cards[i]), 0, 0, CARD_WIDTH, CARD_HEIGHT/2); paint.rotate(0.0); #endif } /* rank >= 10 */ else { /* ace to ten */ int cx, cy, dl; #if 0 // not required, mirroring if (cc.Rx) { /* Draw the lower rank symbol(s). */ x = (8 + 3 * (suit/2) - (rank / 5)) * RANKWIDTH; y = (4 - rank % 5) * RANKHEIGHT; dl = CARD_WIDTH-RANKWIDTH; cx = dl-cc.Rx; cy = CARD_HEIGHT-cc.Ry-RANKHEIGHT; bitBlt(pm_cards[i], cx, cy, &Ranks, x, y, RANKWIDTH, RANKHEIGHT, Qt::CopyROP, FALSE); if (cc.flags & TWORANKS) { cx = dl - cx; bitBlt(pm_cards[i], cx, cy, &Ranks, x, y, RANKWIDTH, RANKHEIGHT, Qt::CopyROP, FALSE); } } if (cc.Sx) { /* Draw the lower small suit symbol(s). */ x = (suit+4) * SUITSIZE3; y = SUITOFF3; dl = CARD_WIDTH-SUITSIZE3; cx = dl-cc.Sx; cy = CARD_HEIGHT-cc.Sy-SUITSIZE3; bitBlt(pm_cards[i], cx, cy, &Suits, x, y, SUITSIZE3, SUITSIZE3, Qt::CopyROP, FALSE); if (cc.flags & TWORANKS) { cx = dl - cx; bitBlt(pm_cards[i], cx, cy, &Suits, x, y, SUITSIZE3, SUITSIZE3, Qt::CopyROP, FALSE); } } #endif /* load picture instead of standard symbols? */ sprintf(name, "%s.%s.pic", US_rank_name[rank], US_suit_name[suit]); if (overlap_picture(xpmfilename(directory, name), 0, pm_cards[i], &paint)) goto picture_done; /* OK, draw the suit symbols */ /* first, all symbols which are not mirrored */ #define PAINT_AT(xx, yy) { \ bitBlt(pm_cards[i], xx, yy, &Suits, x, SUITSIZE0, SUITSIZE1, SUITSIZE1, Qt::CopyROP, FALSE); \ } x = SUITSIZE1 * suit; if (suitflags[rank] & 0x01) { PAINT_AT(cc.x0, cc.y0); PAINT_AT(cc.x2, cc.y0); } if (suitflags[rank] & 0x02) { PAINT_AT(cc.x0, cc.y2); PAINT_AT(cc.x2, cc.y2); } if (suitflags[rank] & 0x08) { PAINT_AT(cc.x1, cc.y0); } if (suitflags[rank] & 0x10) { PAINT_AT(cc.x1, cc.y1); } if (suitflags[rank] & 0x20) { PAINT_AT(cc.x1, cc.y7); } #if 1 MirrorCard(pm_cards[i], &paint); #else paint.rotate(180.0); paint.drawPixmap(1-CARD_WIDTH, 1-CARD_HEIGHT, *(pm_cards[i]), 0, 0, CARD_WIDTH, CARD_HEIGHT/2); #endif if (suitflags[rank] & 0x04) { PAINT_AT(cc.x0, cc.y3); PAINT_AT(cc.x2, cc.y3); } if (suitflags[rank] & 0x40) { PAINT_AT(cc.x1, cc.y7); } if (suitflags[rank] & 0x80) { PAINT_AT(cc.x1, cc.y3); } } /* ace to ten */ } else { if (i < 56) { // is a suit symbol /* load picture instead of standard symbols? */ sprintf(name, "Empty.%s", US_suit_name[suit]); if (overlap_picture(xpmfilename(directory, name), 0, pm_cards[i], &paint)) goto picture_done; x = (CARD_WIDTH-SUITSIZE0)/2; y = (CARD_HEIGHT-SUITSIZE0)/2; bitBlt(pm_cards[i], x, y, &Suits, SUITSIZE0 * suit, 0, SUITSIZE0, SUITSIZE0, Qt::CopyROP, FALSE); } } picture_done: paint.end(); // fprintf(stderr, "endd(%p)\n", pm_cards[i]); pm_cards[i]->setMask(*clipmap); } pm_cardback = load_cardback(-1); /* load a random cardback */ if (!pm_cardback) pm_cardback = load_cardback(0); /* load the fallback cardback */ } void XQtCards::local_destructor() { for (int i = 0; i < 59; ++i) { delete pm_cards[i]; } delete pm_cardback; delete pm_empty; delete clipmap; delete clipempty; delete [] directory; } XQtCards::~XQtCards() { local_destructor(); delete directory; } void XQtCards::reloadGraphics(const char *xpmdir) { local_destructor(); local_constructor(xpmdir); emit cards_changed(); } xpat2-1.07/src/XQtWindow.cpp100644 146 144 47675 7201340140 14410 0ustar mbimathopt/* -*- C++ -*- Time-stamp: <05 Nov 00 21:17:36 Michael Bischoff> */ /**************************************************************************** ** ** application widget for XPat2 *****************************************************************************/ #include "XQtWindow.h" #include "XQtTableau.h" #include #include #include #include #include #include #include // #include #include #include #include #include #include #include #include #include // #include #include #include "qhelpwin.h" #include "version.h" #include #include extern "C" { #include "xpatgame.h" } #include "filesave.xpm" #include "fileopen.xpm" // #include "undomove.xpm" // #include "redomove.xpm" #include "bbb.xpm" #include "b.xpm" #include "f.xpm" #include "fff.xpm" #include "dealcards.xpm" #include "gethint.xpm" #include "dohint.xpm" #include "xpatgeo.h" const char * fileSaveText = "Click this button to save the game you are " "playing. The file name will be generated automatically.\n\n" "You can also select the Save command from the File menu.\n\n"; const char * fileOpenText = "Click this button to load a previously " "saved game. You will be prompted for a file name.\n\n" "You can also select the Open command from the File menu.\n\n"; const char * undoMoveText = "Click this button to undo your previous " "move. Moves are kept from the beginning of the game.\n\n" "Please note that this may increase your cheat count.\n\n"; const char * redoMoveText = "Click this button to undo your previous " "undo.\n\n"; const char * restartGameText = "Click this button to restart the same game from the beginning.\n\n" "In most cases, this is considered as cheating, since you now " "know which cards will be dealt where and when.\n"; const char * replayGameText = "Click this button to replay the game until the end.\n\n" "This is considered as a gimmick."; static XQtXPat2Window *mainwin = 0; static XQtTableau *tabl2 = 0; extern "C" void Force_Resize(int w, int h) { int dw, dh; dw = mainwin->width() - mainwin->scrollView->width(); dh = mainwin->height() - mainwin->scrollView->height(); tabl2->resize(w, h); mainwin->resize(w + dw, h + dh); } int checksound(void) { return mainwin->getSound(); } extern "C" void new_rules_coming(void) { tabl2->leave_rules(); } extern "C" void new_rules_notify(void) { tabl2->enter_rules(); mainwin->enter_rules(); Force_Resize(geo.preferred_width, geo.preferred_height); } void XQtXPat2Window::enter_rules() { setCaption(rules.longname ? rules.longname: rules.shortname); // set buttons or menu items to enabled or disabled state tb_dc->setEnabled(rules.variant & NODEAL ? FALSE : TRUE); m_moves->setItemEnabled(icmd_dc, rules.variant & NODEAL ? FALSE : TRUE); m_moves->setItemEnabled(icmd_ru, FALSE); m_moves->setItemEnabled(icmd_rd, FALSE); int i; for (i = 0; i < 4; ++i) if (rules.paramstring[i] == TXTI_ROTATE) { m_moves->setItemEnabled(icmd_ru, TRUE); m_moves->setItemEnabled(icmd_rd, TRUE); } } XQtXPat2Window::XQtXPat2Window(const char *ruleset, long seed) : QMainWindow( 0, "XPat2 Qt version" ) { QPixmap saveIcon, openIcon, undoIcon, redoIcon, restartIcon, replayIcon; QPixmap dealcardsIcon, nexthintIcon, dohintIcon; mainwin = this; scrollView = new QScrollView(this, "scrollview"); setCentralWidget( scrollView ); tableau = new XQtTableau(ruleset, seed, scrollView, "tableau"); scrollView->addChild(tableau); tabl2 = tableau; sound_on = TRUE; dragNdrop_on = FALSE; animation_on = TRUE; fileTools = new QToolBar( this, "file operations" ); saveIcon = QPixmap( filesave ); openIcon = QPixmap( fileopen ); restartIcon = QPixmap( bbb ); undoIcon = QPixmap( b ); redoIcon = QPixmap( f ); replayIcon = QPixmap( fff ); dealcardsIcon = QPixmap( pic_dealcards ); nexthintIcon = QPixmap( pic_gethint ); dohintIcon = QPixmap( pic_dohint ); // undoIcon = QPixmap( undomove ); // redoIcon = QPixmap( redomove ); QToolButton * fileSave = new QToolButton( saveIcon, "Save File", 0, this, SLOT(QtCmd_SaveGame()), fileTools, "save file" ); QToolButton * fileOpen = new QToolButton( openIcon, "Open File", 0, this, SLOT(QtCmd_LoadGame()), fileTools, "open file" ); fileTools->addSeparator(); QToolButton * restartGame = new QToolButton( restartIcon, "Restart Game", 0, this, SLOT(QtCmd_RestartGame()), fileTools, "restart game" ); QToolButton * undoMove = new QToolButton( undoIcon, "Undo Move", 0, this, SLOT(QtCmd_UndoMove()), fileTools, "undo move" ); QToolButton * redoMove = new QToolButton( redoIcon, "Redo Move", 0, this, SLOT(QtCmd_RedoMove()), fileTools, "redo move" ); QToolButton * replayGame = new QToolButton( replayIcon, "Replay Game", 0, this, SLOT(QtCmd_ReplayGame()), fileTools, "replay game" ); fileTools->addSeparator(); QToolButton * dealcards = new QToolButton( dealcardsIcon, "Deal Cards", 0, this, SLOT(QtCmd_DealCards()), fileTools, "deal cards" ); tb_dc = dealcards; QToolButton * nexthint = new QToolButton( nexthintIcon, "Suggest move", 0, this, SLOT(QtCmd_NextHint()), fileTools, "Next Hint" ); QToolButton * dohint = new QToolButton( dohintIcon, "Perform suggested move", 0, this, SLOT(QtCmd_DoHint()), fileTools, "Do Hint" ); fileTools->addSeparator(); (void)QWhatsThis::whatsThisButton( fileTools ); #if 0 QWhatsThis::add( fileSave, fileSaveText, FALSE ); QWhatsThis::add( fileOpen, fileOpenText, FALSE ); QWhatsThis::add( undoMove, undoMoveText, FALSE ); QWhatsThis::add( restartGame, restartGameText, FALSE ); QWhatsThis::add( redoMove, redoMoveText, FALSE ); QWhatsThis::add( undoMove, undoMoveText, FALSE ); QWhatsThis::add( replayGame, replayGameText, FALSE ); #else QWhatsThis::add( fileSave, fileSaveText); QWhatsThis::add( fileOpen, fileOpenText); QWhatsThis::add( undoMove, undoMoveText); QWhatsThis::add( restartGame, restartGameText); QWhatsThis::add( redoMove, redoMoveText); QWhatsThis::add( undoMove, undoMoveText); QWhatsThis::add( replayGame, replayGameText); #endif m_file = new QPopupMenu(); menuBar()->insertItem( "&File", m_file ); m_file->insertItem( saveIcon, "Save Game", this, SLOT(QtCmd_SaveGame()), CTRL+Key_S); m_file->insertItem( openIcon, "Load Game", this, SLOT(QtCmd_LoadGame())); m_file->insertItem( "Replay Game", this, SLOT(QtCmd_ReplayGame())); m_file->insertItem( "Restart Game", this, SLOT(QtCmd_RestartGame()), CTRL+Key_A); m_file->insertSeparator(); m_file->insertItem( "New Game", this, SLOT(QtCmd_NewGame()), SHIFT+Key_N ); m_file->insertItem( "Quit", qApp, SLOT(quit()), SHIFT+Key_Q ); m_moves = new QPopupMenu(); menuBar()->insertItem( "&Moves", m_moves ); i_udo = m_moves->insertItem( "&Undo", this, SLOT(QtCmd_UndoMove()), CTRL+Key_U ); i_rdo = m_moves->insertItem( "&Redo", this, SLOT(QtCmd_RedoMove()), CTRL+Key_R ); m_moves->insertItem( "&Goto Bookmark", this, SLOT(QtCmd_GotoBM()), CTRL+Key_G ); m_moves->insertItem( "&Drop Bookmark", this, SLOT(QtCmd_DropBM()), CTRL+Key_D ); m_moves->insertItem( "Restart", this, SLOT(QtCmd_RestartGame()), CTRL+Key_A); m_moves->insertSeparator(); icmd_dc = m_moves->insertItem( "Deal Cards", this, SLOT(QtCmd_DealCards()), Key_D); icmd_ru = m_moves->insertItem( "Rotate Up", this, SLOT(QtCmd_RotateUp())); icmd_rd = m_moves->insertItem( "Rotate Down", this, SLOT(QtCmd_RotateDown())); m_moves->insertItem( "All Moves", this, SLOT(QtCmd_AllMoves()), Key_M); m_moves->insertItem( "Moves to Stacks", this, SLOT(QtCmd_AllToStack()), Key_S); m_rules = new QPopupMenu(); menuBar()->insertItem( "&Rules", m_rules ); m_rules->insertItem( "Spider", this, SLOT(QtCmd_rSpider()), ALT+Key_S); m_rules->insertItem( "Gypsy", this, SLOT(QtCmd_rGypsy()), ALT+Key_G); m_rules->insertItem( "Klondike", this, SLOT(QtCmd_rKlondike()), ALT+Key_K); m_rules->insertItem( "Seahaven Towers", this, SLOT(QtCmd_rSHT()), ALT+Key_H); m_rules->insertItem( "Free Cell", this, SLOT(QtCmd_rFreeCell()), ALT+Key_F); m_rules->insertItem( "Idiot's Delight", this, SLOT(QtCmd_rIdiots()), ALT+Key_I); m_rules->insertItem( "Monte Carlo", this, SLOT(QtCmd_rMC()), ALT+Key_M); m_rules->insertItem( "Midnight Oil", this, SLOT(QtCmd_rMO()), ALT+Key_O); m_rules->insertItem( "Calculation", this, SLOT(QtCmd_rCalc()), ALT+Key_Z); m_rules->insertItem( "mod. Canfield", this, SLOT(QtCmd_rmodCan()), ALT+Key_X); m_rules->insertItem( "Michael's Fantasy",this,SLOT(QtCmd_rMichaels()), ALT+Key_Y); m_rules->insertItem( "Canfield", this, SLOT(QtCmd_rCanfield()), ALT+Key_T); m_rules->insertItem( "Royal Cotillion", this, SLOT(QtCmd_rRC()), ALT+Key_R); m_rules->insertItem( "Baker's Dozen", this, SLOT(QtCmd_rBakers()), ALT+Key_B); m_rules->insertItem( "Oonsoo", this, SLOT(QtCmd_rOonsoo()), ALT+Key_O); m_rules->insertItem( "Blue Moon", this, SLOT(QtCmd_rBluemoon()), ALT+Key_M); // m_rules->setCheckable( TRUE ); m_controls = new QPopupMenu(); i_mb = m_controls->insertItem( "Menu bar", this, SLOT(toggleMenuBar()), CTRL+Key_M); // Now an accelerator for when the menubar is invisible! QAccel* a = new QAccel(this); a->connectItem( a->insertItem( CTRL+Key_M ), this, SLOT(toggleMenuBar()) ); i_tb = m_controls->insertItem( "Tool bar", this, SLOT(toggleToolBar()), CTRL+Key_T); i_sb = m_controls->insertItem( "Status bar", this, SLOT(toggleStatusBar()), CTRL+Key_B); m_misc = new QPopupMenu(); menuBar()->insertItem( "&Options", m_misc ); m_misc->insertItem( "&Controls", m_controls); i_snd = m_misc->insertItem( "&Sound", this, SLOT(toggleSound())); m_misc->setCheckable( TRUE ); m_misc->setItemChecked(i_snd, sound_on); i_dnd = m_misc->insertItem( "Drag'n drop", this, SLOT(toggleDragNDrop())); m_misc->setCheckable( TRUE ); m_misc->setItemChecked(i_dnd, dragNdrop_on); i_ani = m_misc->insertItem( "Animation", this, SLOT(toggleAnimation())); m_misc->setCheckable( TRUE ); m_misc->setItemChecked(i_ani, animation_on); m_misc->insertItem( "Customize Rules..."); // m_misc->insertItem( "Change Graphics (modal)...", tableau, SLOT(CustomizeModal())); m_misc->insertItem( "Change Graphics (modeless)...", tableau, SLOT(CustomizeModeless())); m_controls->setCheckable( TRUE ); m_controls->setItemChecked( i_mb, TRUE ); m_controls->setItemChecked( i_tb, TRUE ); m_controls->setItemChecked( i_sb, TRUE ); m_windows = new QPopupMenu(); menuBar()->insertItem( "&Window", m_windows ); m_windows->insertItem( "Minimal Size", this, SLOT(QtCmd_MinWindow()), SHIFT+Key_M); m_windows->insertItem( "Preferred Size", this, SLOT(QtCmd_PrefWindow()), SHIFT+Key_P); m_windows->insertItem( "Adapt to outer Size", this, SLOT(QtCmd_AdaptWindow()), SHIFT+Key_A); m_windows->insertItem( "Redraw", tableau, SLOT(repaintAll()), CTRL+Key_L); menuBar()->insertSeparator(); m_help = new QPopupMenu(); menuBar()->insertItem( "&Help", m_help ); m_help->insertItem( "About", this, SLOT(about())); m_help->insertItem( "Help on Keys...", this, SLOT(QtCmd_hlpKeys())); m_help->insertItem( "Help on Rules...", this, SLOT(QtCmd_hlpRules())); m_help->insertSeparator(); m_help->insertItem( "Info", this, SLOT(QtCmd_Info()), Key_I); m_help->insertItem( "Show Score", this, SLOT(QtCmd_ShowScore()), Key_S); m_help->insertItem( "Show Version", this, SLOT(QtCmd_ShowVersion()), Key_V); m_help->insertItem( "Suggest Move", this, SLOT(QtCmd_NextHint()), Key_Plus); m_help->insertItem( "Previous suggestion", this, SLOT(QtCmd_PrevHint()), Key_Minus); m_help->insertItem( "Do suggested Move", this, SLOT(QtCmd_DoHint()), Key_Space); statusBar()->message( "Welcome to XPat2!", 2000 ); tableau->dragndrop_on = dragNdrop_on; tableau->sound_on = sound_on; tableau->animation_on = animation_on; enter_rules(); // set enable/disable menu items and caption resize(800,600); scrollView->resizeContents(800,600); } extern "C" void show_message(const char *str, ...) { static char last_message[256]; va_list args; va_start(args, str); if (!str) { memset(last_message, ' ', sizeof(last_message)-1); last_message[sizeof(last_message)-1] = '\0'; } else vsprintf(last_message, str, args); mainwin->statusBar()->message(last_message); } XQtXPat2Window::~XQtXPat2Window() { delete tableau; // others to do } void XQtXPat2Window::QtCmd_NewGame() { newgame(-1L); tableau->repaint(); } void XQtXPat2Window::QtCmd_LoadGame() { QString fn = QFileDialog::getOpenFileName(0,0,this); if ( !fn.isEmpty() ) load_game(fn); else statusBar()->message( "Loading aborted", 2000 ); } void XQtXPat2Window::QtCmd_SaveGame() { cmd_SaveGame(); } void XQtXPat2Window::toggleMenuBar() { if ( menuBar()->isVisible() ) { menuBar()->hide(); m_controls->setItemChecked( i_mb, FALSE ); } else { menuBar()->show(); m_controls->setItemChecked( i_mb, TRUE ); } } void XQtXPat2Window::toggleToolBar() { if ( fileTools->isVisible() ) { fileTools->hide(); m_controls->setItemChecked( i_tb, FALSE ); } else { fileTools->show(); m_controls->setItemChecked( i_tb, TRUE ); } } void XQtXPat2Window::toggleSound() { if ( sound_on ) { sound_on = FALSE; } else { sound_on = TRUE; } m_misc->setItemChecked( i_snd, sound_on); tableau->sound_on = sound_on; } void XQtXPat2Window::toggleDragNDrop() { if ( dragNdrop_on ) { dragNdrop_on = FALSE; } else { dragNdrop_on = TRUE; } m_misc->setItemChecked( i_dnd, dragNdrop_on); tableau->dragndrop_on = dragNdrop_on; } void XQtXPat2Window::toggleAnimation() { if ( animation_on ) { animation_on = FALSE; } else { animation_on = TRUE; } m_misc->setItemChecked( i_ani, animation_on); tableau->animation_on = animation_on; } void XQtXPat2Window::toggleStatusBar() { if ( statusBar()->isVisible() ) { statusBar()->hide(); m_controls->setItemChecked( i_sb, FALSE ); } else { statusBar()->show(); m_controls->setItemChecked( i_sb, TRUE ); } } void XQtXPat2Window::QtCmd_UndoMove() { cmd_UndoMove(); } void XQtXPat2Window::QtCmd_RedoMove() { cmd_RedoMove(); } void XQtXPat2Window::QtCmd_RestartGame() { cmd_RestartGame(); tableau->repaint(); } void XQtXPat2Window::QtCmd_ReplayGame() { cmd_ReplayGame(); tableau->repaint(); } void XQtXPat2Window::QtCmd_DropBM() { cmd_DropBookmark(); } void XQtXPat2Window::QtCmd_GotoBM() { cmd_GotoBookmark(); } void XQtXPat2Window::QtCmd_DealCards() { cmd_DealCards(); tableau->repaint(); } void XQtXPat2Window::QtCmd_ShowScore() { cmd_ShowScore(); } void XQtXPat2Window::QtCmd_ShowVersion() { cmd_ShowVersion(); } void XQtXPat2Window::QtCmd_Info() { cmd_Info(); } void XQtXPat2Window::QtCmd_AllToStack() { cmd_AllToStack(); } void XQtXPat2Window::QtCmd_AllMoves() { cmd_AllMoves(); } void XQtXPat2Window::QtCmd_NextHint() { cmd_NextHint(); } void XQtXPat2Window::QtCmd_PrevHint() { cmd_PreviousHint(); } void XQtXPat2Window::QtCmd_DoHint() { cmd_DoHint(); } void XQtXPat2Window::QtCmd_RotateUp() { cmd_RotateUp(); } void XQtXPat2Window::QtCmd_RotateDown() { cmd_RotateDown(); } void XQtXPat2Window::QtCmd_MinWindow() { cmd_MinWindow(); } void XQtXPat2Window::QtCmd_PrefWindow() { cmd_PreferredWindow(); } void XQtXPat2Window::QtCmd_AdaptWindow() { int w, h; w = scrollView->width(); h = scrollView->height(); if (w < geo.min_width) w = geo.min_width; if (h < geo.min_height) h = geo.min_height; // #ifdef useScrollView scrollView->resizeContents(w, h); // #endif geo.w = w; geo.h = h; // init_layout(); tableau->resize(w, h); cmd_Layout(); tableau->repaint(); } void XQtXPat2Window::QtCmd_rSpider() { change_rules("Spider"); newgame(-1L); tableau->repaint(); } void XQtXPat2Window::QtCmd_rGypsy() { change_rules("Gypsy"); newgame(-1L); tableau->repaint(); } void XQtXPat2Window::QtCmd_rKlondike() { change_rules("Klondike"); newgame(-1L); tableau->repaint(); } void XQtXPat2Window::QtCmd_rSHT() { change_rules("Seahaven"); newgame(-1L); tableau->repaint(); } void XQtXPat2Window::QtCmd_rFreeCell() { change_rules("Free Cell"); newgame(-1L); tableau->repaint(); } void XQtXPat2Window::QtCmd_rIdiots() { change_rules("Idiot's Delight"); newgame(-1L); tableau->repaint(); } void XQtXPat2Window::QtCmd_rMC() { change_rules("Monte Carlo"); newgame(-1L); tableau->repaint(); } void XQtXPat2Window::QtCmd_rMO() { change_rules("Midnight Oil"); newgame(-1L); tableau->repaint(); } void XQtXPat2Window::QtCmd_rCalc() { change_rules("Calculation"); newgame(-1L); tableau->repaint(); } void XQtXPat2Window::QtCmd_rmodCan() { change_rules("modCanfield"); newgame(-1L); tableau->repaint(); } void XQtXPat2Window::QtCmd_rMichaels() { change_rules("Michael's Fantasy"); newgame(-1L); tableau->repaint(); } void XQtXPat2Window::QtCmd_rCanfield() { change_rules("Canfield"); newgame(-1L); tableau->repaint(); } void XQtXPat2Window::QtCmd_rRC() { change_rules("Royal Cotillion"); newgame(-1L); tableau->repaint(); } void XQtXPat2Window::QtCmd_rBakers() { change_rules("Baker's Dozen"); newgame(-1L); tableau->repaint(); } void XQtXPat2Window::QtCmd_rOonsoo() { change_rules("Oonsoo"); newgame(-1L); tableau->repaint(); } void XQtXPat2Window::QtCmd_rBluemoon() { change_rules("Blue Moon"); newgame(-1L); tableau->repaint(); } void XQtXPat2Window::about() { QMessageBox::about( this, "XPat2 - Qt version", "This is version " VERSION " of XPat2.\n" "Qt user interface 1999 by M. Bischoff\n\n" "Have fun!" ); } extern "C" struct rules *rulepool[]; void XQtXPat2Window::QtCmd_hlpRules() { QHelpWindow *hw; char pathname[256]; char caption[128]; const char *langdir = get_lang(); const char *helpfilename; int i = 0; /* find current rules */ while (rulepool[i]) { if (!strcmp(rules.shortname, rulepool[i]->shortname)) break; ++i; } if (!rulepool[i]) return; /* rules not found !? */ // printf("selected rules %s, %s\n", rulepool[i]->shortname, xpat_messages[76+i]); #if 0 printf("[0] = %s\n", xpat_messages[0]); printf("[1] = %s\n", xpat_messages[1]); printf("[72] = %s, i = %d\n", xpat_messages[72], i); #endif helpfilename = xpat_messages[76+i]; if (strlen(langdir) + strlen(LIBDIR) + 3 + strlen(helpfilename) <= sizeof(pathname) && *langdir) { /* langdir is set and buffer has sufficient size */ sprintf(pathname, "%s/%s/%s", LIBDIR, langdir, helpfilename); } else { sprintf(pathname, "%s/%s", LIBDIR, helpfilename); } sprintf(caption, "XPat2: Help on the rules of %s", rulepool[i]->shortname); hw = new QHelpWindow(pathname, caption); } void XQtXPat2Window::QtCmd_hlpKeys() { QHelpWindow *hw; char pathname[256]; const char *langdir = get_lang(); if (strlen(langdir) + strlen(LIBDIR) + 12 <= sizeof(pathname) && *langdir) { /* langdir is set and buffer has sufficient size */ sprintf(pathname, "%s/%s/%s", LIBDIR, langdir, "help.keys"); } else { sprintf(pathname, "%s/%s", LIBDIR, "help.keys"); } hw = new QHelpWindow(pathname, "XPat2: Key bindings"); } xpat2-1.07/src/XQt-main.cpp100644 146 144 4075 7201337463 14123 0ustar mbimathopt/**************************************************************************** ** $Id: main.cpp,v 1.6 1998/06/16 11:39:32 warwick Exp $ ** ** Copyright (C) 1992-1998 Troll Tech AS. All rights reserved. ** ** This file is part of an example program for Qt. This example ** program may be used, distributed and modified without limitation. ** *****************************************************************************/ #include #include "XQtWindow.h" /* flush event queue */ extern "C" void flush_display(void) { QApplication::syncX(); QApplication::flushX(); } extern "C" { #include #include #include "usage.c" #include "xpatgame.h" } const char *loadfilename = NULL; int main(int argc, char *argv[]) { QApplication a( argc, argv ); #include "options.c" for (i = 0; i < NUMOPTIONS; ++i) { /* get resources from server */ char *s; if (options[i].cmdarg) options[i].value = options[i].cmdarg; #if 0 else if ((s = XGetDefault(dpy, "XPat", options[i].resource))) options[i].value = s; #endif } for (i = 0; i < NUMOPTIONS; ++i) { /* value-check Numbers */ int n; struct option_struct *o; o = options + i; if (o->type == Number) { n = o->value ? atoi(o->value) : -1; if (n < o->minval || n > o->maxval) { char s[100]; sprintf(s, "argument to option \"%s\" / resource \"%s\"", o->option, o->resource); usage(s); } *(int *)(o->where) = n; } else if (o->type == Self) { *(int *)(o->where) = 1; } else /* type == String */ *(const char **)(o->where) = o->value; } if (restoregame && (decks != -1 || Xslots != -1 || faceup != -1 || facedown != -1)) fprintf(stderr, "warning: customization parameters are ignored\n"); XQtXPat2Window * mw = new XQtXPat2Window(ruleset, seed); mw->resize(800,600); a.setMainWidget(mw); mw->setCaption( "XPat2 - Qt version" ); mw->show(); a.connect( &a, SIGNAL(lastWindowClosed()), &a, SLOT(quit()) ); return a.exec(); } xpat2-1.07/src/options.c100644 146 144 11606 7201337377 13642 0ustar mbimathopt/* Time-stamp: <05 Nov 00 21:11:43 Michael Bischoff> */ /* arrays for commandline option handling for Qt and Xlib */ /* enum { String, Number, Bool } argtype; */ #define String 0 #define Number 1 #define Self 2 int i; long seed = -1L; const char *restoregame = NULL; static const char *display = NULL, *cmdname; /* these must be static, since their address is taken */ static int Xslots, faceup, facedown, decks, p0, p1, p2, p3; /* rules customization */ static int linewidth, cround, bround, gapx, gapy, bx, by, autolayout, mem; static int tmps, arrw, arrh, jokers, sound = 1, xpmcls = 0; static const char *geometry, *ruleset, *cbcolor, *bkcolor = "DarkKhaki"; static const char *buttonfont, *statusfont, *cardset = NULL, *markcolor, *xpmdir; static const char *arrowcolor; static struct option_struct { const char *option; const char *resource; const char *value; void *where; int type; int minval; /* only for Number */ int maxval; /* only for Number */ const char *cmdarg; } options[] = { /* first option must be -rules */ { "-rules", "Rules", "Gypsy", &ruleset, String }, #ifdef LOADCARDS { "-cards", "Cards", NULL, &cardset, String }, #endif { "-xpmdir", "Xpmdir", NULL, &xpmdir, String }, { "-xpmcls", "Xpmcls", "0", &xpmcls, Number, 0, 65535 }, { "-autolayout","AutoLayout", "1", &autolayout,Number, 0, 1 }, { "-mem", "Mem", "1", &mem, Number, 0, 1 }, { "-slots", "Slots", NULL, &Xslots, Number, -1, MAXPILES }, { "-flips", "Flips", NULL, &p1, Number, -1,999 }, { "-turn", "Turn", NULL, &p2, Number, -1, 9 }, { "-relaxed", "relaxed", NULL, &p0, Number, -1, 9 }, { "-flips", "flips", NULL, &p1, Number, -1, 99 }, { "-turn", "turn", NULL, &p2, Number, -1, 9 }, { "-rotations", "rotations", NULL, &p3, Number, -1, 9 }, { "-decks", "Decks", NULL, &decks, Number, -1, 9 }, { "-tmps", "Tmps", NULL, &tmps, Number, -1, 16 }, { "-faceup", "Faceup", NULL, &faceup, Number, -1, 16 }, { "-facedown", "Facedown", NULL, &facedown, Number, -1, 16 }, { "-jokers", "Jokers", NULL, &jokers, Number, -1, 16 }, { "-cround", "CardRound", NULL, &cround, Number, -1, 99 }, { "-bround", "ButtonRound", "4", &bround, Number, 0, 20 }, { "-sound", "Sound", "1", &sound, Number, 0, 1 }, { "-bx", "ButtonGapX", "4", &bx, Number, 0, 99 }, { "-by", "ButtonGapY", "4", &by, Number, 0, 99 }, { "-aw", "ArrowWidth", NULL, &arrw, Number, -1, 30 }, { "-ah", "ArrowHeight", NULL, &arrh, Number, -1, 30 }, { "-gapx", "GapX", "4", &gapx, Number, 0, 99 }, { "-gapy", "GapY", "4", &gapy, Number, 0, 99 }, { "-rng", "Rng", "1", &rng, Number, 0, 1 }, { "-cb", "CardbackColor", "SlateGrey", &cbcolor, String }, { "-tb", "TableColor", "DarkKhaki", &bkcolor, String }, { "-markcolor", "MarkColor", NULL, &markcolor, String }, { "-markwidth", "MarkWidth", "999", &linewidth, Number, 1,999 }, { "-arrowcolor","ArrowColor", "Gold", &arrowcolor,String }, { "-bfont", "ButtonFont", NULL, &buttonfont,String }, { "-sfont", "StatusFont", "fixed", &statusfont,String } #ifdef useXlib , { "-geometry", "Geometry", NULL, &geometry, String }, { "-display", NULL, NULL, &display, String } #endif }; #define NUMOPTIONS (sizeof(options) / sizeof(options[0]) - 1) for (i = 0; i <= NUMOPTIONS; ++i) options[i].cmdarg = NULL; if (!(cmdname = strrchr(argv[0], '/'))) cmdname = argv[0]; else ++cmdname; if (strncmp(cmdname, "xpat2", 5)) options[0].cmdarg = cmdname; for (i = 1; i < argc - 1; ++i) { /* merge command line options */ int j; if (*argv[i] != '-') break; for (j = 0; j <= NUMOPTIONS; ++j) { if (!strcmp(argv[i], options[j].option)) { options[j].cmdarg = options[j].type == Self ? "1" : argv[++i]; break; } } if (j > NUMOPTIONS) usage(argv[i]); } if (i < argc) { /* seed or savegame left */ if (i != argc - 1) usage(argv[i]); if (isdigit(*argv[i])) { seed = atol(argv[i]); if (seed < 0L || seed >= 1000000000L) usage(argv[i]); } else if (*argv[i] != '-') restoregame = loadfilename = argv[i]; else usage(argv[i]); } display = options[NUMOPTIONS].cmdarg; xpat2-1.07/src/XQtCrdPile.cpp100644 146 144 15021 6715033242 14452 0ustar mbimathopt/* -*- C++ -*- Time-stamp: <08 May 99 15:05:38 Michael Bischoff> XQtCardPile.cpp This widget displays a pile of cards (slot, stack, etc...) on the tableau widget */ #include "XQtCardPile.h" #include "XQtCards.h" #include "XQtTableau.h" #include #include #include #include #include "xpatgeo.h" QSize XQtCardPile::sizeHint() const { if (special_image != -1 && pileno >= 0 && pileno < game.numpiles) { struct pilegeometry *p = geo.pg + pileno; return QSize(p->w, p->h); } else { if (geo.cw > 0 && geo.ch > 0) return QSize(geo.cw, geo.ch); else return QSize(); } } void XQtCardPile::mousePressEvent(QMouseEvent* e) { Cardindex c; int mx = e->x(), my = e->y(); int cw = graphics->cardwidth(), ch = graphics->cardheight(); int button = 0; // printf("mouse is pressed in CardPile %d at %d,%d\n", pileno, mx, my); c = FindCardOfMousePos(pileno, mx, my); switch (e->button()) { case LeftButton: if (c < 0) return; button = 1; button_pressed(pileno, c, 1); // quick move return; case MidButton: button = 2; if (c == -2) return; button_pressed(pileno, c, 2); // select / deselect if (!tabl->dragndrop_on) { return; // done } c = game.srcind; // reached card according to rules break; case RightButton: if (c < 0) return; button = 3; break; default: return; } if (c < 0) return; // printf(" pressed on card with value %d\n", game.cards[c]); XQtCardPile *floating = new XQtCardPile(0, tabl); int i, cx, cy, top; struct pilegeometry *p = geo.pg + pileno; i = c - INDEX_OF_FIRST_CARD(pileno); if (e->button() == MidButton) // visible card = topmost card top = INDEX_OF_LAST_CARD(pileno); else top = c; cx = p->ox + i * p->cdx; cy = p->oy + i * p->cdy; floating->move(x() + cx, y() + cy); floating->setMask(*(graphics->get_clipmap())); if (game.visible[top]) floating->special_image = game.cards[top]; else floating->special_image = 99; num_to_paint = -1; if (e->button() == MidButton) { /* drag it */ num_to_paint = c - INDEX_OF_FIRST_CARD(pileno); // cards remaining to paint show_mark(0); repaint(); tabl->startDrag(floating, mx - cx, my - cy, TRUE, cx + x(), cy + y(), pileno); } else { /* only expose it */ tabl->startDrag(floating, mx - cx, my - cy, FALSE, 0, 0, -1); } } /* the release event is sent to the widget which got the pressed event, not to the widget where the mouse currently is over! */ void XQtCardPile::mouseReleaseEvent(QMouseEvent* e) { // printf("Calling startAnimate(%d,%d)\n", special_image, pileno); // if (special_image >= 0) { // this is the dragged card // start movement with mouse coordinates tabl->startAnimate(x() + e->x(), y() + e->y()); // } } void XQtCardPile::mouseMoveEvent(QMouseEvent* e) { tabl->Drag(x() + e->x(), y() + e->y()); } void XQtCardPile::setCorrectSize() { struct pilegeometry *p; p = geo.pg + pileno; setGeometry(p->x, p->y, p->w, p->h); // take values from geo.pg[] } XQtCardPile::XQtCardPile(int pilenr, XQtTableau *parent, const char *name=0) : QWidget(parent, name) { pileno = pilenr; tabl = parent; graphics = tabl->getCards(); num_to_paint = -1; special_image = -1; if (!NOT_DISPLAYED(geo.pg+pileno)) { setCorrectSize(); setBackgroundColor(darkGreen); } // fprintf(stderr, "created pile %d (type %d) at %d,%d, size %d,%d\n", // pileno, game.piletype[pileno], x(), y(), width(), height()); } void XQtCardPile::compressCards() { num_to_paint = -1; if (pile_resize(pileno)) repaint(); } void XQtCardPile::paintEvent(QPaintEvent *event) { QPixmap *Pixmap_to_draw = 0; int xdelta, ydelta, num; struct pilegeometry *p = geo.pg + pileno; xdelta = p->cdx; ydelta = p->cdy; if (special_image != -1) { /* floating card */ if (special_image == 99) Pixmap_to_draw = graphics->get_pm_cardback(); else Pixmap_to_draw = graphics->get_pm_card(special_image); if (event) bitBlt(this, event->rect().topLeft(), Pixmap_to_draw, event->rect()); else bitBlt(this, 0, 0, Pixmap_to_draw, graphics->cardwidth(), graphics->cardheight(), CopyROP, FALSE); return; } if (pileno < 0 || pileno >= game.numpiles) { printf("repaint request for pile %d (pos = %d,%d, size = %d,%d)\n", pileno, x(), y(), width(), height()); return; } if (game.disable[pileno]) /* don't draw THIS pile */ return; if (NOT_DISPLAYED(p)) return; /* draw nothing */ num = num_to_paint < 0 ? CARDS_ON_PILE(pileno) : num_to_paint; if (!num) { /* draw empty pile */ switch (game.piletype[pileno]) { case Stack: Pixmap_to_draw = graphics->get_pm_card(SUITSYMBOL + SUIT(pileno)); break; default: Pixmap_to_draw = graphics->get_pm_empty(); break; } if (event) bitBlt(this, event->rect().topLeft(), Pixmap_to_draw, event->rect()); else bitBlt(this, 0, 0, Pixmap_to_draw, graphics->cardwidth(), graphics->cardheight(), CopyROP, FALSE); } else if (!ydelta && !xdelta) { /* only topmost card is visible */ Cardindex c; c = INDEX_OF_FIRST_CARD(pileno) + num - 1; Pixmap_to_draw = game.visible[c] ? graphics->get_pm_card(game.cards[c]) : graphics->get_pm_cardback(); if (event) bitBlt(this, event->rect().topLeft(), Pixmap_to_draw, event->rect()); else bitBlt(this, 0, 0, Pixmap_to_draw, graphics->cardwidth(), graphics->cardheight(), CopyROP, FALSE); } else { // at least one card, painting a slot int cdelta = num; Cardindex c = INDEX_OF_FIRST_CARD(pileno) + num - cdelta; // the lowest one to repaint int i = c - INDEX_OF_FIRST_CARD(pileno); // fprintf(stderr, "painting pile %d (%d cards, d=%d,%d)\n", // pileno, cdelta, xdelta, ydelta); while (--cdelta >= 0) { int pw, ph; // paint-width and height // fprintf(stderr, " visible=%d at %d,%d, size %d,%d\n", game.visible[c], // xdelta*i, ydelta*i, graphics->cardwidth(), graphics->cardheight()); Pixmap_to_draw = game.visible[c] ? graphics->get_pm_card(game.cards[c]) : graphics->get_pm_cardback(); pw = geo.cw; ph = geo.ch; if (cdelta) { /* Not the last card. May use card clipping optimisation */ if (p->cdx == 0 && p->cdy > 0) ph = p->cdy + geo.ry; if (p->cdy == 0 && p->cdx > 0) pw = p->cdx + geo.rx; } bitBlt(this, p->ox + p->cdx*i, p->oy + p->cdy*i, Pixmap_to_draw, 0, 0, pw, ph, CopyROP, FALSE); ++c; ++i; } } } xpat2-1.07/src/XQtMarkCrd.cpp100644 146 144 5602 7201340463 14434 0ustar mbimathopt/* -*- C++ -*- Time-stamp: <05 Nov 00 21:21:07 Michael Bischoff> */ /*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module XQtMarkCard.c */ /* */ /* Routines for marking selected cards */ /* written by Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include #include #include #include #include "XQtCardPile.h" #include "XQtTableau.h" extern "C" { #include "xpatgeo.h" } extern XQtTableau *tableau; static XQtCardPile *merk_pile; /* game.for set-mark / clear-mark */ static QPixmap *mark_storage = 0; static int mark_height = 0, mark_width = 0; static QBrush *mark_brush = 0; static int rem_x, rem_y; static int rem_w, rem_h; /* h = 0: only horizontal bars saved */ static void create_mark_storage(void) { mark_storage = new QPixmap(mark_width, mark_height); } static void free_mark(void) { if (mark_storage) delete mark_storage; mark_storage = 0; } static void set_mark(int x, int y, int W, int h) { if (h > mark_height) { /* make sure there's enough space */ free_mark(); mark_height = h; } if (W > mark_width) { free_mark(); mark_width = W; } if (!mark_storage) create_mark_storage(); rem_h = h; rem_w = W; rem_x = x; rem_y = y; bitBlt(mark_storage, 0, 0, merk_pile, x, y, W, h, Qt::CopyROP, FALSE); QPainter p(merk_pile); if (!mark_brush) mark_brush = new QBrush(Qt::black, Qt::DiagCrossPattern); p.setBrush(*mark_brush); p.setPen("red"); p.drawRoundRect(x, y, W, h, 198 * geo.rx / geo.cw, 198 * geo.ry / geo.ch); } static void clear_mark(void) { bitBlt(merk_pile, rem_x, rem_y, mark_storage, 0, 0, rem_w, rem_h, Qt::CopyROP, FALSE); } /* pile is completely drawn and unmarked. */ /* check, if pile has to be marked. */ /* if so, do it */ extern "C" void show_mark(boolean on) { if (on) { struct pilegeometry *p; int f, l; int pile, m_x, m_y, m_w, m_h; if (game.srcind < 0) return; if (!mark_storage) { mark_height = geo.lsh; mark_width = geo.lsw; create_mark_storage(); } p = geo.pg + (pile = getpile(game.srcind)); f = game.srcind - INDEX_OF_FIRST_CARD(pile); l = CARDS_ON_PILE(pile)-1; if (p->cdx >= 0) { m_x = p->ox + f * p->cdx; m_w = (l-f)*p->cdx + geo.cw; } else { m_x = p->ox + l * p->cdx; m_w = (f-l)*p->cdx + geo.cw; } if (p->cdy >= 0) { m_y = p->oy + f * p->cdy; m_h = (l-f)*p->cdy + geo.ch; } else { m_y = p->oy + l * p->cdy; m_h = (f-l)*p->cdy + geo.ch; } merk_pile = tableau->piles[pile]; set_mark(m_x, m_y, m_w, m_h); } else { if (merk_pile) clear_mark(); merk_pile = 0; } } xpat2-1.07/src/qmaskedit.h100644 146 144 2127 7201340302 14072 0ustar mbimathopt/* -*- C++ -*- Time-stamp: <05 Nov 00 21:19:14 Michael Bischoff> */ /* Description: class QMaskEdit is an extension of the QLineEdit widget. A QMaskEdit widget does accept only digits as input (and possibly a sign) and only if the range set is not violated. This is implemented by filtering the keyPressEvents Sources: qmaskedit.h header file qmaskedit.cpp implements the class mqmaskedit.cpp generated by moc Dependencies: requires the widget qmaskedit and the Qt library (tested with version 1.42) Author: Michael Bischoff (Michael.Bischoff@gmx.net) */ #ifndef QMASKEDIT_H #define QMASKEDIT_H #ifndef QLINEEDIT_H #include #endif class Q_EXPORT QMaskEdit : public QLineEdit { Q_OBJECT public: QMaskEdit(int maxn = 99, int minn = 0, QWidget *parent = 0, const char *name = 0); void setRange(int maxn = 99, int minn = 0); int getFieldSize() const { return fieldsize; } void setValue(int value); int value(); private: int maxnum; int minnum; int fieldsize; protected: void keyPressEvent( QKeyEvent * ); }; #endif xpat2-1.07/src/qmaskedit.cpp100644 146 144 4652 7201340317 14440 0ustar mbimathopt/* -*- C++ -*- Time-stamp: <05 Nov 00 21:19:27 Michael Bischoff> */ /* Description: class QMaskEdit is an extension of the QLineEdit widget. A QMaskEdit widget does accept only digits as input (and possibly a sign) and only if the range set is not violated. This is implemented by filtering the keyPressEvents Sources: qmaskedit.h header file qmaskedit.cpp implements the class mqmaskedit.cpp generated by moc Dependencies: requires the widget qmaskedit and the Qt library (tested with version 1.42) Author: Michael Bischoff (Michael.Bischoff@gmx.net) */ #include "qmaskedit.h" #include #include #include #include #include static int compute_length(int num) { int len = 1; if (num < 0) { len = 2; num = -num; } while (num >= 10) { num /= 10; ++len; } return len; } void QMaskEdit::setRange(int maxn, int minn) { int len1, len2; maxnum = maxn; minnum = minn; if (maxnum < 0) maxnum = 0; if (minnum > maxnum) minnum = 0; if (maxnum > 9999) maxnum = 9999; if (minnum < -9999) minnum = -9999; len1 = compute_length(minnum); len2 = compute_length(maxnum); fieldsize = len2 > len1 ? len2 : len1; setMaxLength(fieldsize); } QMaskEdit::QMaskEdit(int maxn, int minn, QWidget *parent, const char *name) : QLineEdit(parent, name) { setRange(maxn, minn); } void QMaskEdit::setValue(int val) { char buff[20]; if (val < minnum || val > maxnum) val = maxnum; sprintf(buff, "%*d", fieldsize, val); setText(buff); } int QMaskEdit::value() { int val = atoi(text()); if (val < minnum || val > maxnum) val = maxnum; return val; } void QMaskEdit::keyPressEvent( QKeyEvent *qe ) { int num = atoi(text()); int keycode = qe->ascii(); char buff[20]; if (keycode == '-') { num = -num; if (num < minnum || num > maxnum) return; // ignore key // ok, accept it. sprintf(buff, "%*d", fieldsize, num); setText(buff); return; } if (keycode >= ' ' && qe->key() != Key_Delete && qe->key() != Key_Backspace ) { if (!isdigit(keycode)) // no digit, but displayable char: ignore it! return; else { num = 10 * num + keycode - '0'; if (num < minnum || num > maxnum) return; // ignore key // ok, accept it. sprintf(buff, "%*d", fieldsize, num); setText(buff); return; } } QLineEdit::keyPressEvent(qe); } xpat2-1.07/src/qhelpwin.cpp100644 146 144 3337 6717341530 14315 0ustar mbimathopt/* -*- C++ -*- Time-stamp: <15 May 99 20:56:24 Michael Bischoff> */ /* Description: class QHelpWindow displays a simple help window. The window is not modal and may be closed at any time. Sources: qhelpwin.h header file qhelpwin.cpp implements the class mhelpwin.cpp generated by moc Dependencies: requires the widget qmultilineedit and the Qt library (tested with version 1.42) Author: Michael Bischoff (Michael.Bischoff@gmx.net) */ #include "qhelpwin.h" #include #include #include #include #include #include QHelpWindow::QHelpWindow(const char *filename, const char *caption) : QWidget() { v = new QVBoxLayout(this, 4, -1, filename); e = new QMultiLineEdit(this, filename); resize(408, 358); QFile f( filename ); if ( !f.open( IO_ReadOnly ) ) return; e->setAutoUpdate( FALSE ); e->clear(); QTextStream t(&f); while ( !t.eof() ) { QString s = t.readLine(); e->append( s ); } f.close(); e->resize(400,300); setCaption(caption); e->setReadOnly(TRUE); e->setAutoUpdate( TRUE ); v->addWidget(e, 100); /* add widget with stretch factor */ w = new QWidget(this); w->setFixedSize(400, 50); v->addWidget(w); close = new QPushButton("Close", w, "close button"); QFont clsfnt("System", 12, QFont::Bold); close->setFont (clsfnt); close->resize(200, 30); close->move(100,10); v->activate(); connect(close, SIGNAL(clicked()), this, SLOT(closeHelp())); show(); } void QHelpWindow::closeHelp() { delete this; } QHelpWindow::~QHelpWindow() { delete close; delete e; delete w; delete v; } xpat2-1.07/src/qhelpwin.h100644 146 144 1472 6717341522 13761 0ustar mbimathopt/* -*- C++ -*- Time-stamp: <15 May 99 20:56:18 Michael Bischoff> */ /* Description: class QHelpWindow displays a simple help window. The window is not modal and may be closed at any time. Sources: qhelpwin.h header file qhelpwin.cpp implements the class mhelpwin.cpp generated by moc Dependencies: requires the widget qmultilineedit and the Qt library (tested with version 1.42) Author: Michael Bischoff (Michael.Bischoff@gmx.net) */ #include class QMultiLineEdit; class QPushButton; class QVBoxLayout; class QHelpWindow : public QWidget { Q_OBJECT private: QMultiLineEdit *e; QVBoxLayout *v; QWidget *w; QPushButton *close; public: QHelpWindow(const char *filename, const char *caption); ~QHelpWindow(); public slots: void closeHelp(); }; xpat2-1.07/src/XQtCards.h100644 146 144 6262 6717341554 13632 0ustar mbimathopt/* -*- C++ -*- Time-stamp: <15 May 99 20:56:44 Michael Bischoff> */ /* Description: class XQtCards is a QPixmap factory for card images, to be used by XPat2 and other card games. This class does mainly exist to separate the ugly image constructor from the rest of the game. Sources: XQtCards.h header file XQtCards.cpp implements the constructor and destructor XQtCardsDlg.cpp implements the customisation dialog Dependencies: requires the widget qmaskedit and the Qt library (tested with version 1.42) Author: Michael Bischoff (Michael.Bischoff@gmx.net) */ #ifndef XQTCARDS_H #define XQTCARDS_H #include class QPixmap; class QBitmap; class QDialog; class QLineEdit; class QMaskEdit; class XQtCards : public QObject { // requires QObject for signals and slots Q_OBJECT private: /* data describing the geometry (CardConfig subclass?) */ int w, h; // width and height of a card int rx, ry; // pixel size of rounded card corners int pile_dx, pile_dy; // distance between piles int slot_dx, slot_dy; // offset of cards within slots /* Pixmaps */ char *directory; // card graphics directory int numcardbacks; // number of cardback pixmaps int currentcardback; // currently used cardback (1..max) QBitmap *clipmap; // storage for card clip (filled rounded rectangle) QBitmap *clipempty; // rounded rectangle QPixmap *pm_cardback; // QPixmap of the back side of the cards QPixmap *pm_empty; // place holder (clipped by emptyclip) QPixmap *pm_cards[59]; // QPixmaps for 52 cards + 4 empty slots + 3 jokers QPixmap *XQtCards::load_cardback(int num); // helper function QDialog *customize_dlg; // current open dialog (only one dlg per instance */ QLineEdit *customize_dlg_dir; // current input field QMaskEdit *customize_dlg_cbn; // cardback number void reloadGraphics(const char *); // update pixmaps after directory has changed void local_constructor(const char *); void local_destructor(); void check_for_changes_and_apply(); public: XQtCards(const char *xpmdir = 0); // constructor uses a compiled-in default directory ~XQtCards(); void CustomizeDialog(bool modal = FALSE); int cardwidth() const { return w; } int cardheight() const { return h; } int get_rx() const { return rx; } int get_ry() const { return ry; } int get_pile_dx() const { return pile_dx; } int get_pile_dy() const { return pile_dy; } int get_slot_dx() const { return slot_dx; } int get_slot_dy() const { return slot_dy; } int get_numcardbacks() const { return numcardbacks; } int get_currentcardback() const { return currentcardback; } void set_cardback(int num = 0); // 0 = select a random one QPixmap *get_pm_card(int index) const { return pm_cards[index]; } QPixmap *get_pm_cardback() const { return pm_cardback; } QPixmap *get_pm_empty() const { return pm_empty; } QBitmap *get_clipmap() const { return clipmap; } signals: void cards_changed(); // emitted by customize_dlg(); private slots: void cards_reset(); void cards_apply(); void cards_ok(); void cards_cancel(); void cards_browse(); }; #endif xpat2-1.07/src/XQtCardPile.h100644 146 144 2626 6717341537 14262 0ustar mbimathopt/* -*- C++ -*- Time-stamp: <15 May 99 20:56:31 Michael Bischoff> */ /* Description: class XQtCardPile displays a pile of cards Sources: XQtCardPile.h header file XQtCardPile.cpp implements the constructor and destructor Dependencies: only usable as child of the XQtTableau widget Author: Michael Bischoff (Michael.Bischoff@gmx.net) */ #include #include class XQtCards; class XQtTableau; class QMouseEvent; extern "C" { #include "xpatgame.h" } #define SUITSYMBOL 52 /* for empty stacks */ #define CARDBACK 56 #define OUTLINE 58 #define NOTHING 59 class XQtCardPile : public QWidget { Q_OBJECT public: XQtCardPile(int pilenr, XQtTableau *parent, const char *name=0); void compressCards(); // adjust internally to available space (Slots) void setCorrectSize(); // adjust widget (size and pos) after graphics change int num_to_paint; // number of cards to paint (-1 = normal) QSize sizeHint() const; private: XQtCards *graphics; // points to graphics data XQtTableau *tabl; // points to tableau widget void mousePressEvent(QMouseEvent*); void mouseReleaseEvent(QMouseEvent*); void mouseMoveEvent(QMouseEvent*); int pileno; // pile number in game structure int special_image; // for exposing cards: if not -1, then card (99 = Cardback) protected: void paintEvent(QPaintEvent *); }; xpat2-1.07/src/bb.xpm100644 146 144 462 6712536551 13053 0ustar mbimathopt/* XPM */ static const char *bb[] = { /* width height num_colors chars_per_pixel */ " 10 9 2 1", /* colors */ ". c #c0c0c0", "# c #000000", /* pixels */ "....#....#", "...##...##", "..###..###", ".####.####", "##########", ".####.####", "..###..###", "...##...##", "....#....#" }; xpat2-1.07/src/fileopen.xpm100644 146 144 643 6712536401 14264 0ustar mbimathopt/* XPM */ static const char *fileopen[] = { " 16 13 5 1", ". c #000000", "# c #808000", "a c #c0c0c0", "b c #ffff00", "c c #ffffff", "aaaaaaaaa...aaaa", "aaaaaaaa.aaa.a.a", "aaaaaaaaaaaaa..a", "a...aaaaaaaa...a", ".bcb.......aaaaa", ".cbcbcbcbc.aaaaa", ".bcbcbcbcb.aaaaa", ".cbcb...........", ".bcb.#########.a", ".cb.#########.aa", ".b.#########.aaa", "..#########.aaaa", "...........aaaaa" }; xpat2-1.07/src/bbb.xpm100644 146 144 545 6712536536 13222 0ustar mbimathopt/* XPM */ static const char *bbb[] = { /* width height num_colors chars_per_pixel */ " 12 11 2 1", /* colors */ ". c #c0c0c0", "# c #000000", /* pixels */ "##..........", "##....#....#", "##...##...##", "##..###..###", "##.####.####", "############", "##.####.####", "##..###..###", "##...##...##", "##....#....#", "##.........." }; xpat2-1.07/src/fileprint.xpm100644 146 144 670 6712536360 14463 0ustar mbimathopt/* XPM */ static const char *fileprint[] = { " 16 14 5 1", ". c #000000", "# c #808080", "a c #c0c0c0", "b c #ffff00", "c c #ffffff", "aaaaa.........aa", "aaaa.cccccccc.aa", "aaaa.c.....c.aaa", "aaa.cccccccc.aaa", "aaa.c.....c....a", "aa.cccccccc.a.a.", "a..........a.a..", ".aaaaaaaaaa.a.a.", ".............aa.", ".aaaaaa###aa.a.a", ".aaaaaabbbaa...a", ".............a.a", "a.aaaaaaaaa.a.aa", "aa...........aaa" }; xpat2-1.07/src/f.xpm100644 146 144 404 6712537033 12705 0ustar mbimathopt/* XPM */ static const char *f[] = { /* width height num_colors chars_per_pixel */ " 5 9 2 1", /* colors */ ". c #c0c0c0", "# c #000000", /* pixels */ "#....", "##...", "###..", "####.", "#####", "####.", "###..", "##...", "#...." }; xpat2-1.07/src/filesave.xpm100644 146 144 575 6712536336 14274 0ustar mbimathopt/* XPM */ static const char *filesave[] = { " 14 14 3 1", ". c #000000", "# c #808000", "a c #c0c0c0", "..............", ".#.aaaaaaaa.a.", ".#.aaaaaaaa...", ".#.aaaaaaaa.#.", ".#.aaaaaaaa.#.", ".#.aaaaaaaa.#.", ".#.aaaaaaaa.#.", ".##........##.", ".############.", ".##.........#.", ".##......aa.#.", ".##......aa.#.", ".##......aa.#.", "a............." }; xpat2-1.07/src/XQtTableau.cpp100644 146 144 22014 6715033211 14501 0ustar mbimathopt/* -*- C++ -*- Time-stamp: <08 May 99 15:05:13 Michael Bischoff> XQtTableau.cpp */ #include "XQtTableau.h" #include "XQtCards.h" #include "XQtCardPile.h" #include #include #include #include #include "xpatgeo.h" QSize XQtTableau::sizeHint() const { if (geo.preferred_width > 0 && geo.preferred_height > 0) return QSize(geo.preferred_width, geo.preferred_height); else if (geo.min_width > 0 && geo.min_height > 0) return QSize(geo.min_width, geo.min_height); else return QSize(); } // static data needed for the C routines XQtTableau *tableau = 0; extern "C" void Force_Resize(int w, int h); /* bool drag = TRUE if middle button pressed (move card) bool drag = FALSE if right button pressed (just show card) */ void XQtTableau::startDrag(XQtCardPile *pile, int ox, int oy, bool drag, int x, int y, int pilen) { dp_tpile = -2; stopDrag(); // stop dragging any previously dragged card dragtype = drag; hs_x = ox; // mouse position within dragged widget hs_y = oy; src_x = x; src_y = y; src_pile = pilen; dragpile = pile; dragpile->show(); dragpile->raise(); } void XQtTableau::stopDrag() { // printf("StopDrag() called with tpile = %d, srcind = %d\n", dp_tpile, game.srcind); if (dp_tpile >= 0) piles[dp_tpile]->num_to_paint = -1; if (!dragndrop_on) return; if (dragpile) delete dragpile; dragpile = 0; // do the move if valid if (dp_tpile >= 0) { if (game.srcind >= 0) { store_move(do_move(game.srcind, dp_tpile)); game.srcind = -1; piles[dp_tpile]->repaint(); // restore full sight if (dp_tpile != src_pile) piles[src_pile]->repaint(); } } dp_tpile = -3; } void XQtTableau::startAnimate(int x, int y) { if (!dragtype) { /* just expose card */ if (dragpile) delete dragpile; dragpile = 0; return; } if (!dragndrop_on) return; dp_tpile = -2; if (!dragpile || !frames_per_second) { stopDrag(); return; } // printf("StartAnimate() called with srcind = %d\n", game.srcind); // find destination pile by mouse coordinates if (game.srcind >= 0) { Pileindex i; struct pilegeometry *p; for (i = 0; i < game.numpiles; ++i) { p = geo.pg + i; if (x >= p->x && x < p->x + p->w && y >= p->y && y < p->y + p->h) { dp_tpile = i; break; } } if (dp_tpile >= 0 && move_valid(game.srcind, dp_tpile)) { // store_move(do_move(h, pile)); show_message(""); dp_tx = p->x + p->ox + p->cdx * CARDS_ON_PILE(dp_tpile); dp_ty = p->y + p->oy + p->cdy * CARDS_ON_PILE(dp_tpile); // printf("Move accepted to pile %d at %d,%d\n", dp_tpile, dp_tx, dp_ty); } else { game.srcind = -1; show_message(TXT_INVALIDMOVE); dp_tpile = src_pile; dp_tx = src_x; dp_ty = src_y; } } else { stopDrag(); return; } if (!animation_on) { stopDrag(); return; } // printf("StartAnimate: tpile = %d\n", dp_tpile); dp_sx = dragpile->QWidget::x(); dp_sy = dragpile->QWidget::y(); dp_r2 = (dp_sx - dp_tx) * (dp_sx - dp_tx) + (dp_sy - dp_ty) * (dp_sy - dp_ty); if (dp_r2 < 16) { stopDrag(); return; } dp_done = 0; if (!timer) { // create timer object on demand timer = new QTimer(); connect(timer, SIGNAL(timeout()), this, SLOT(move_dragpile())); } timer->start(1000 / frames_per_second); } void XQtTableau::move_dragpile() { if (!pixels_per_second || pixels_per_second > 50) pixels_per_second = 2; dp_done += pixels_per_second; if (!dragpile || (dp_done * dp_done > dp_r2)) { timer->stop(); stopDrag(); return; } /* move dragpile to certain amount of path */ #if 0 double arc = 3.14159 * 0.5 * dp_done / sqrt(dp_r2); dragpile->move(dp_sx + (int)((dp_tx - dp_sx) * sin(arc)), dp_ty + (int)((dp_sy - dp_ty) * cos(arc))); #else // accelerated move int nx, ny; nx = dp_sx + (dp_tx - dp_sx) * (dp_done * dp_done) / dp_r2; ny = dp_sy + (dp_ty - dp_sy) * (dp_done * dp_done) / dp_r2; dragpile->move(nx, ny); // printf(" moved to %4d,%4d\n", nx, ny); #endif } void XQtTableau::Drag(int mx, int my) { if (dragpile && dragtype) dragpile->move(mx - hs_x, my - hs_y); } void XQtTableau::CustomizeModal() { cards->CustomizeDialog(TRUE); } void XQtTableau::CustomizeModeless() { cards->CustomizeDialog(FALSE); } void XQtTableau::mouseReleaseEvent(QMouseEvent* e) { stopDrag(); } extern "C" void draw_pileupdate(int pile, int delta) { if (pile < game.numpiles && tableau->piles[pile]) { tableau->piles[pile]->compressCards(); tableau->piles[pile]->repaint(); } } extern "C" void move_card_data(Cardindex dst, Cardindex src) { game.cards[dst] = game.cards[src]; game.visible[dst] = game.visible[src]; // tableau->cardy[dst] = tableau->cardy[src]; } extern "C" void cmd_LeavePat(void) { } extern "C" void refresh_screen(void) { tableau->repaint(); } extern "C" void request_confirm(void (*a)(void), const char *b) { } extern "C" void win_game(void) {} void XQtTableau::leave_rules() { delete_all_piles(); } void XQtTableau::enter_rules() { int i; generic_minwindow(); resize(geo.min_width, geo.min_height); init_layout(); create_all_piles(); for (i = 0; i < game.numpiles; ++i) if (piles[i]) piles[i]->show(); repaint(); } void XQtTableau::obtain_geometry() { geo.w = width(); geo.h = height(); geo.dx = cards->get_pile_dx(); geo.dy = cards->get_pile_dy(); geo.cw = cards->cardwidth(); geo.ch = cards->cardheight(); geo.rx = cards->get_rx(); geo.ry = cards->get_ry(); } void obtain_current_geometry(void) { tableau->obtain_geometry(); } void cmd_Layout(void) { int i; tableau->init_layout(); for (i = FIRST_SLOT; i <= LAST_SLOT; ++i) if (pile_resize(i)) draw_pileupdate(i, 0); } void XQtTableau::init_layout() { obtain_geometry(); // new! generate_layout(); /* width(), height(), cards->cardwidth(), cards->cardheight(), cards->get_pile_dx(), cards->get_pile_dy()); */ } extern "C" void cmd_MinWindow(void) { geo.w = geo.min_width; geo.h = geo.min_height; Force_Resize(geo.w, geo.h); cmd_Layout(); tableau->repaint(); } extern "C" void cmd_PreferredWindow(void) { geo.w = geo.preferred_width; geo.h = geo.preferred_height; Force_Resize(geo.w, geo.h); cmd_Layout(); tableau->repaint(); } extern "C" void cmd_Cancel(void) {} extern "C" void cmd_Confirm(void) {} // create the visible piles if the rules are set and init_layout was called void XQtTableau::create_all_piles() { piles = new XQtCardPile *[game.numpiles]; for (int i = 0; i < game.numpiles; ++i) piles[i] = (geo.pg[i].x < 0 ? 0 : new XQtCardPile(i, this)); } XQtTableau::XQtTableau(const char *rules, long seed, QWidget *parent, const char *name, const char *xpmdir) : QWidget(parent, name) { int w, h; cards = new XQtCards(xpmdir); setBackgroundColor(darkGreen); // in this version, the parent is a QSrollView // rules = Gypsy_rules per default if (!rules) rules = "Gypsy"; new_rules(rules, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1); tableau = this; generic_minwindow(); // resize(geo.min_width, geo.min_height); w = max(geo.min_width, 800); h = max(geo.min_height, 600); resize(w, h); init_layout(); // requires a set-up size! geo.aw = geo.ah = geo.cw / 16; /* set defaults */ create_all_piles(); newgame(seed); // fprintf(stderr, "Tableau constructor done\n"); connect(cards, SIGNAL(cards_changed()), this, SLOT(repaintAll())); timer = 0; frames_per_second = 50; pixels_per_second = 15; // resize(800, 600); } void XQtTableau::delete_all_piles() { for (int i = 0; i < game.numpiles; ++i) { if (piles[i]) delete piles[i]; } delete piles; } XQtTableau::~XQtTableau() { tableau = 0; if (timer) delete timer; if (dragpile) delete dragpile; delete_all_piles(); delete cards; } #if 0 QSize XQtTableau::sizeHint() const { fprintf(stderr, "size hint called\n"); return QSize(12 * cards->cardwidth(), 2 * cards->cardheight()); } #endif /* this slot should be called when the graphics have changed */ /* TODO: before calling this, resize tableau widget if necessary */ void XQtTableau::repaintAll() { /* SLOT */ int i; init_layout(); for (i = 0; i < game.numpiles; ++i) if (piles[i]) piles[i]->setCorrectSize(); for (i = FIRST_SLOT; i <= LAST_SLOT; ++i) pile_resize(i); erase(); // erase complete widget for (i = 0; i < game.numpiles; ++i) if (piles[i]) piles[i]->repaint(TRUE); // piles are different widgets } void XQtTableau::paintEvent(QPaintEvent *event) { int i; if (!event) repaintAll(); else { QRect r = rect(); // erase(r); // besser is das.. for (i = 0; i < game.numpiles; ++i) if (piles[i]) piles[i]->setCorrectSize(); for (i = FIRST_SLOT; i <= LAST_SLOT; ++i) pile_resize(i); for (i = 0; i < game.numpiles; ++i) if (piles[i]) if (piles[i]->rect().intersects(r)) piles[i]->repaint(TRUE); } } xpat2-1.07/src/undomove.xpm100644 146 144 522 6712536252 14317 0ustar mbimathopt/* XPM */ static const char * undomove[] = { "14 14 2 1", " c navy", ". c #c0c0c0", " ...... ...", " ... ..", " . ... .", " ..... ", " ....... ", " ...... ", " ..... ", " .... ", "............ ", "........... ", ".......... .", ".......... ..", "..............", ".............."}; xpat2-1.07/src/redomove.xpm100644 146 144 522 6712536260 14302 0ustar mbimathopt/* XPM */ static const char * redomove[] = { "14 14 2 1", " c #c0c0c0", ". c navy", " .... .", " ....... ..", " ... ... ...", "... ......", ".. .....", ".. ......", ".. .......", ".. ........", ".. ", "... ", " ... ", " .. ", " ", " "}; xpat2-1.07/src/ff.xpm100644 146 144 462 6712536472 13065 0ustar mbimathopt/* XPM */ static const char *ff[] = { /* width height num_colors chars_per_pixel */ " 10 9 2 1", /* colors */ ". c #c0c0c0", "# c #000000", /* pixels */ "#....#....", "##...##...", "###..###..", "####.####.", "##########", "####.####.", "###..###..", "##...##...", "#....#...." }; xpat2-1.07/src/fff.xpm100644 146 144 545 6712536452 13233 0ustar mbimathopt/* XPM */ static const char *fff[] = { /* width height num_colors chars_per_pixel */ " 12 11 2 1", /* colors */ ". c #c0c0c0", "# c #000000", /* pixels */ "..........##", "#....#....##", "##...##...##", "###..###..##", "####.####.##", "############", "####.####.##", "###..###..##", "##...##...##", "#....#....##", "..........##" }; xpat2-1.07/src/XQtArrows.cpp100644 146 144 7375 7201340565 14402 0ustar mbimathopt/* -*- C++ -*- Time-stamp: <05 Nov 00 21:22:13 Michael Bischoff> */ /*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module XQtArrows.cpp */ /* */ /* Displays hint arrows for the Qt widget set */ /* written by Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include #include #include #include #include #include #include #include "XQtCardPile.h" #include "XQtTableau.h" extern "C" { #include "xpatgeo.h" } extern XQtTableau *tableau; static QBrush *arrow_brush = 0; static QPainter arrow_painter; #if 0 static struct arrow_storage { int w, h; QPixmap *arrow_storage; } as[4] = { { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 } }; extern "C" void bitblt_arrow(int type, int save, int x, int y, int w, int h) { struct arrow_storage *ap = as + type; if (save) { /* for for minimum size */ if (!ap->arrow_storage || ap->w < w || ap->h < h) { /* not allocated or insufficient size */ if (ap->arrow_storage) delete ap->arrow_storage; if (ap->w < w) ap->w = w; if (ap->h < h) ap->h = h; ap->arrow_storage = new QPixmap(ap->w, ap->h); } bitBlt(ap->arrow_storage, 0, 0, tableau, x, y, w, h, CopyROP, FALSE); } else { if (ap->arrow_storage) { bitBlt(tableau, x, y, ap->arrow_storage, 0, 0, w, h, CopyROP, FALSE); } } } extern "C" void draw_arrow_polygon(int npoints, const struct Coord *poly) { int i; QPointArray Poly(ARROW_MAX_COORDINATES); printf("drawing polygon on %x\n", tableau); for (i = 0; i < npoints; ++i) Poly.setPoint(i, poly[i].x, poly[i].y); if (!arrow_brush) arrow_brush = new QBrush("yellow"); arrow_painter.begin(tableau); arrow_painter.setBrush(*arrow_brush); arrow_painter.drawPolygon(Poly, FALSE, 0, npoints); arrow_painter.end(); } #else static QWidget *aw = 0; static QPixmap *apix =0; static QBitmap *aclip = 0; extern "C" void bitblt_arrow(int type, int save, int x, int y, int w, int h) { if (!save && aw) { delete aw; delete apix; delete aclip; aw = 0; apix = 0; aclip = 0; } } extern "C" void draw_arrow_polygon(int npoints, const struct Coord *poly) { int i, maxx, maxy, minx, miny, w, h; QPointArray Poly(ARROW_MAX_COORDINATES); // printf("drawing polygon on %x\n", tableau); minx = maxx = poly[0].x; miny = maxy = poly[0].y; for (i = 1; i < npoints; ++i) { if (poly[i].x < minx) minx = poly[i].x; if (poly[i].x > maxx) maxx = poly[i].x; if (poly[i].y < miny) miny = poly[i].y; if (poly[i].y > maxy) maxy = poly[i].y; } if (aw) { delete aw; delete apix; delete aclip; } w = maxx-minx+1; h = maxy-miny+1; aclip = new QBitmap(w, h, TRUE); apix = new QPixmap(w, h); aw = new QWidget(tableau); aw->move(minx, miny); aw->resize(w, h); for (i = 0; i < npoints; ++i) Poly.setPoint(i, poly[i].x-minx, poly[i].y-miny); if (!arrow_brush) arrow_brush = new QBrush("yellow"); arrow_painter.begin(apix); arrow_painter.setBrush(*arrow_brush); arrow_painter.drawPolygon(Poly, FALSE, 0, npoints); arrow_painter.end(); arrow_painter.begin(aclip); arrow_painter.setPen(Qt::color1); // arrow_painter.setBrush(Dense3Pattern); // arrow_painter.setBrush(SolidPattern); arrow_painter.setBrush(Qt::color1); arrow_painter.drawPolygon(Poly, FALSE, 0, npoints); arrow_painter.end(); aw->setMask(*aclip); aw->setBackgroundPixmap(*apix); aw->show(); aw->move(minx, miny); aw->raise(); } #endif xpat2-1.07/src/dohint.xpm100644 146 144 511 6712536513 13746 0ustar mbimathopt/* XPM */ static const char * pic_dohint[] = { /* width height num_colors chars_per_pixel */ " 6 14 2 1", /* colors */ ". c #000000", "b c #c0c0c0", /* pixels */ "bbbbbb", "bbbbbb", "bb..bb", "bb..bb", "bb..bb", "bb..bb", "bb..bb", "bb..bb", "bb..bb", "bb..bb", "bbbbbb", "bb..bb", "bbbbbb", "bbbbbb" }; xpat2-1.07/src/gethint.xpm100644 146 144 620 6712536321 14121 0ustar mbimathopt/* XPM */ static const char * pic_gethint[] = { /* width height num_colors chars_per_pixel */ " 11 14 2 1", /* colors */ ". c #000000", "# c #c0c0c0", /* pixels */ "###########", "###########", "###.....###", "##..###..##", "##..###..##", "#######..##", "######..###", "#####..####", "####..#####", "###########", "####..#####", "####..#####", "###########", "###########" }; xpat2-1.07/src/dealcards.xpm100644 146 144 527 6712536522 14412 0ustar mbimathopt/* XPM */ static const char * pic_dealcards[] = { "14 14 2 1", " c #c0c0c0", ". c navy", " .... .", " ....... ..", " ... ... ...", "... ......", ".. .....", ".. ......", ".. .......", ".. ........", ".. ", "... ", " ... ", " .. ", " ", " "}; xpat2-1.07/src/X-sound_NAS.c100644 146 144 2351 6714247755 14172 0ustar mbimathopt/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module sound-NAS.c */ /* */ /* simple access to the network audio system (tested with NAS-1.2) */ /* written by Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "xpat.h" #include