1implement Imageremap; 2 3include "sys.m"; 4 sys: Sys; 5 6include "draw.m"; 7 draw: Draw; 8 Display, Image: import draw; 9 10include "bufio.m"; 11 12include "imagefile.m"; 13 14closest:= array[16*16*16] of { 15 byte 255,byte 255,byte 255,byte 254,byte 254,byte 237,byte 220,byte 203, 16 byte 253,byte 236,byte 219,byte 202,byte 252,byte 235,byte 218,byte 201, 17 byte 255,byte 255,byte 255,byte 254,byte 254,byte 237,byte 220,byte 203, 18 byte 253,byte 236,byte 219,byte 202,byte 252,byte 235,byte 218,byte 201, 19 byte 255,byte 255,byte 255,byte 250,byte 250,byte 250,byte 220,byte 249, 20 byte 249,byte 249,byte 232,byte 248,byte 248,byte 248,byte 231,byte 201, 21 byte 251,byte 251,byte 250,byte 250,byte 250,byte 250,byte 249,byte 249, 22 byte 249,byte 249,byte 232,byte 248,byte 248,byte 248,byte 231,byte 201, 23 byte 251,byte 251,byte 250,byte 250,byte 250,byte 233,byte 233,byte 249, 24 byte 249,byte 232,byte 215,byte 215,byte 248,byte 231,byte 214,byte 197, 25 byte 234,byte 234,byte 250,byte 250,byte 233,byte 233,byte 216,byte 216, 26 byte 249,byte 232,byte 215,byte 198,byte 198,byte 231,byte 214,byte 197, 27 byte 217,byte 217,byte 217,byte 246,byte 233,byte 216,byte 216,byte 199, 28 byte 199,byte 215,byte 215,byte 198,byte 198,byte 198,byte 214,byte 197, 29 byte 200,byte 200,byte 246,byte 246,byte 246,byte 216,byte 199,byte 199, 30 byte 245,byte 245,byte 198,byte 244,byte 244,byte 244,byte 227,byte 197, 31 byte 247,byte 247,byte 246,byte 246,byte 246,byte 246,byte 199,byte 245, 32 byte 245,byte 245,byte 228,byte 244,byte 244,byte 244,byte 227,byte 193, 33 byte 230,byte 230,byte 246,byte 246,byte 229,byte 229,byte 212,byte 245, 34 byte 245,byte 228,byte 228,byte 211,byte 244,byte 227,byte 210,byte 193, 35 byte 213,byte 213,byte 229,byte 229,byte 212,byte 212,byte 212,byte 195, 36 byte 228,byte 228,byte 211,byte 211,byte 194,byte 227,byte 210,byte 193, 37 byte 196,byte 196,byte 242,byte 242,byte 212,byte 195,byte 195,byte 241, 38 byte 241,byte 211,byte 211,byte 194,byte 194,byte 240,byte 210,byte 193, 39 byte 243,byte 243,byte 242,byte 242,byte 242,byte 195,byte 195,byte 241, 40 byte 241,byte 241,byte 194,byte 194,byte 240,byte 240,byte 239,byte 205, 41 byte 226,byte 226,byte 242,byte 242,byte 225,byte 225,byte 195,byte 241, 42 byte 241,byte 224,byte 224,byte 240,byte 240,byte 239,byte 239,byte 205, 43 byte 209,byte 209,byte 225,byte 225,byte 208,byte 208,byte 208,byte 224, 44 byte 224,byte 223,byte 223,byte 223,byte 239,byte 239,byte 222,byte 205, 45 byte 192,byte 192,byte 192,byte 192,byte 207,byte 207,byte 207,byte 207, 46 byte 206,byte 206,byte 206,byte 206,byte 205,byte 205,byte 205,byte 205, 47 byte 255,byte 255,byte 255,byte 254,byte 254,byte 237,byte 220,byte 203, 48 byte 253,byte 236,byte 219,byte 202,byte 252,byte 235,byte 218,byte 201, 49 byte 255,byte 238,byte 221,byte 221,byte 254,byte 237,byte 220,byte 203, 50 byte 253,byte 236,byte 219,byte 202,byte 252,byte 235,byte 218,byte 201, 51 byte 255,byte 221,byte 221,byte 221,byte 204,byte 250,byte 220,byte 249, 52 byte 249,byte 249,byte 232,byte 248,byte 248,byte 248,byte 231,byte 201, 53 byte 251,byte 221,byte 221,byte 204,byte 250,byte 250,byte 249,byte 249, 54 byte 249,byte 249,byte 232,byte 248,byte 248,byte 248,byte 231,byte 201, 55 byte 251,byte 251,byte 204,byte 250,byte 250,byte 233,byte 233,byte 249, 56 byte 249,byte 232,byte 215,byte 215,byte 248,byte 231,byte 214,byte 197, 57 byte 234,byte 234,byte 250,byte 250,byte 233,byte 233,byte 216,byte 216, 58 byte 249,byte 232,byte 215,byte 198,byte 198,byte 231,byte 214,byte 197, 59 byte 217,byte 217,byte 217,byte 246,byte 233,byte 216,byte 216,byte 199, 60 byte 199,byte 215,byte 215,byte 198,byte 198,byte 198,byte 214,byte 197, 61 byte 200,byte 200,byte 246,byte 246,byte 246,byte 216,byte 199,byte 199, 62 byte 245,byte 245,byte 198,byte 244,byte 244,byte 244,byte 227,byte 197, 63 byte 247,byte 247,byte 246,byte 246,byte 246,byte 246,byte 199,byte 245, 64 byte 245,byte 245,byte 228,byte 244,byte 244,byte 244,byte 227,byte 193, 65 byte 230,byte 230,byte 246,byte 246,byte 229,byte 229,byte 212,byte 245, 66 byte 245,byte 228,byte 228,byte 211,byte 244,byte 227,byte 210,byte 193, 67 byte 213,byte 213,byte 229,byte 229,byte 212,byte 212,byte 212,byte 195, 68 byte 228,byte 228,byte 211,byte 211,byte 194,byte 227,byte 210,byte 193, 69 byte 196,byte 196,byte 242,byte 242,byte 212,byte 195,byte 195,byte 241, 70 byte 241,byte 211,byte 211,byte 194,byte 194,byte 240,byte 210,byte 193, 71 byte 243,byte 243,byte 242,byte 242,byte 242,byte 195,byte 195,byte 241, 72 byte 241,byte 241,byte 194,byte 194,byte 240,byte 240,byte 239,byte 205, 73 byte 226,byte 226,byte 242,byte 242,byte 225,byte 225,byte 195,byte 241, 74 byte 241,byte 224,byte 224,byte 240,byte 240,byte 239,byte 239,byte 205, 75 byte 209,byte 209,byte 225,byte 225,byte 208,byte 208,byte 208,byte 224, 76 byte 224,byte 223,byte 223,byte 223,byte 239,byte 239,byte 222,byte 205, 77 byte 192,byte 192,byte 192,byte 192,byte 207,byte 207,byte 207,byte 207, 78 byte 206,byte 206,byte 206,byte 206,byte 205,byte 205,byte 205,byte 205, 79 byte 255,byte 255,byte 255,byte 191,byte 191,byte 191,byte 220,byte 190, 80 byte 190,byte 190,byte 173,byte 189,byte 189,byte 189,byte 172,byte 201, 81 byte 255,byte 221,byte 221,byte 221,byte 204,byte 191,byte 220,byte 190, 82 byte 190,byte 190,byte 173,byte 189,byte 189,byte 189,byte 172,byte 201, 83 byte 255,byte 221,byte 221,byte 204,byte 204,byte 204,byte 186,byte 186, 84 byte 186,byte 186,byte 186,byte 185,byte 185,byte 185,byte 168,byte 201, 85 byte 188,byte 221,byte 204,byte 204,byte 204,byte 187,byte 186,byte 186, 86 byte 186,byte 186,byte 232,byte 185,byte 185,byte 185,byte 168,byte 201, 87 byte 188,byte 204,byte 204,byte 204,byte 187,byte 187,byte 186,byte 186, 88 byte 186,byte 186,byte 169,byte 185,byte 185,byte 185,byte 168,byte 197, 89 byte 188,byte 188,byte 204,byte 187,byte 187,byte 233,byte 216,byte 186, 90 byte 186,byte 186,byte 215,byte 185,byte 185,byte 185,byte 168,byte 197, 91 byte 217,byte 217,byte 183,byte 183,byte 183,byte 216,byte 216,byte 199, 92 byte 182,byte 182,byte 215,byte 198,byte 198,byte 181,byte 214,byte 197, 93 byte 184,byte 184,byte 183,byte 183,byte 183,byte 183,byte 199,byte 182, 94 byte 182,byte 182,byte 182,byte 181,byte 181,byte 181,byte 181,byte 197, 95 byte 184,byte 184,byte 183,byte 183,byte 183,byte 183,byte 182,byte 182, 96 byte 182,byte 182,byte 182,byte 181,byte 181,byte 181,byte 164,byte 193, 97 byte 184,byte 184,byte 183,byte 183,byte 183,byte 183,byte 182,byte 182, 98 byte 182,byte 228,byte 165,byte 181,byte 181,byte 164,byte 164,byte 193, 99 byte 167,byte 167,byte 183,byte 229,byte 166,byte 212,byte 212,byte 182, 100 byte 182,byte 165,byte 211,byte 211,byte 181,byte 164,byte 210,byte 193, 101 byte 180,byte 180,byte 179,byte 179,byte 179,byte 179,byte 195,byte 178, 102 byte 178,byte 178,byte 211,byte 194,byte 177,byte 177,byte 177,byte 193, 103 byte 180,byte 180,byte 179,byte 179,byte 179,byte 179,byte 195,byte 178, 104 byte 178,byte 178,byte 178,byte 177,byte 177,byte 177,byte 177,byte 205, 105 byte 180,byte 180,byte 179,byte 179,byte 179,byte 179,byte 178,byte 178, 106 byte 178,byte 161,byte 161,byte 177,byte 177,byte 177,byte 160,byte 205, 107 byte 163,byte 163,byte 162,byte 162,byte 162,byte 162,byte 208,byte 178, 108 byte 161,byte 161,byte 223,byte 177,byte 177,byte 160,byte 160,byte 205, 109 byte 192,byte 192,byte 192,byte 192,byte 207,byte 207,byte 207,byte 207, 110 byte 206,byte 206,byte 206,byte 206,byte 205,byte 205,byte 205,byte 205, 111 byte 176,byte 176,byte 191,byte 191,byte 191,byte 191,byte 190,byte 190, 112 byte 190,byte 190,byte 173,byte 189,byte 189,byte 189,byte 172,byte 201, 113 byte 176,byte 221,byte 221,byte 204,byte 191,byte 191,byte 190,byte 190, 114 byte 190,byte 190,byte 173,byte 189,byte 189,byte 189,byte 172,byte 201, 115 byte 188,byte 221,byte 204,byte 204,byte 204,byte 187,byte 186,byte 186, 116 byte 186,byte 186,byte 173,byte 185,byte 185,byte 185,byte 168,byte 201, 117 byte 188,byte 204,byte 204,byte 204,byte 187,byte 187,byte 186,byte 186, 118 byte 186,byte 186,byte 169,byte 185,byte 185,byte 185,byte 168,byte 201, 119 byte 188,byte 188,byte 204,byte 187,byte 187,byte 187,byte 186,byte 186, 120 byte 186,byte 186,byte 169,byte 185,byte 185,byte 185,byte 168,byte 197, 121 byte 188,byte 188,byte 187,byte 187,byte 187,byte 170,byte 170,byte 186, 122 byte 186,byte 169,byte 169,byte 185,byte 185,byte 168,byte 168,byte 197, 123 byte 184,byte 184,byte 183,byte 183,byte 183,byte 170,byte 170,byte 182, 124 byte 182,byte 169,byte 152,byte 152,byte 181,byte 168,byte 151,byte 197, 125 byte 184,byte 184,byte 183,byte 183,byte 183,byte 183,byte 182,byte 182, 126 byte 182,byte 182,byte 182,byte 181,byte 181,byte 181,byte 164,byte 197, 127 byte 184,byte 184,byte 183,byte 183,byte 183,byte 183,byte 182,byte 182, 128 byte 182,byte 182,byte 165,byte 181,byte 181,byte 181,byte 164,byte 193, 129 byte 184,byte 184,byte 183,byte 183,byte 183,byte 166,byte 166,byte 182, 130 byte 182,byte 165,byte 165,byte 181,byte 181,byte 164,byte 164,byte 193, 131 byte 167,byte 167,byte 167,byte 166,byte 166,byte 166,byte 149,byte 182, 132 byte 165,byte 165,byte 165,byte 148,byte 181,byte 164,byte 147,byte 193, 133 byte 180,byte 180,byte 179,byte 179,byte 179,byte 179,byte 149,byte 178, 134 byte 178,byte 178,byte 148,byte 177,byte 177,byte 177,byte 147,byte 193, 135 byte 180,byte 180,byte 179,byte 179,byte 179,byte 179,byte 178,byte 178, 136 byte 178,byte 178,byte 178,byte 177,byte 177,byte 177,byte 160,byte 205, 137 byte 180,byte 180,byte 179,byte 179,byte 179,byte 162,byte 162,byte 178, 138 byte 178,byte 161,byte 161,byte 177,byte 177,byte 160,byte 160,byte 205, 139 byte 163,byte 163,byte 162,byte 162,byte 162,byte 162,byte 145,byte 161, 140 byte 161,byte 161,byte 144,byte 144,byte 160,byte 160,byte 160,byte 205, 141 byte 192,byte 192,byte 192,byte 192,byte 207,byte 207,byte 207,byte 207, 142 byte 206,byte 206,byte 206,byte 206,byte 205,byte 205,byte 205,byte 205, 143 byte 176,byte 176,byte 191,byte 191,byte 191,byte 174,byte 174,byte 190, 144 byte 190,byte 173,byte 156,byte 156,byte 189,byte 172,byte 155,byte 138, 145 byte 176,byte 176,byte 204,byte 191,byte 191,byte 174,byte 174,byte 190, 146 byte 190,byte 173,byte 156,byte 156,byte 189,byte 172,byte 155,byte 138, 147 byte 188,byte 204,byte 204,byte 204,byte 187,byte 187,byte 186,byte 186, 148 byte 186,byte 186,byte 169,byte 185,byte 185,byte 185,byte 168,byte 138, 149 byte 188,byte 188,byte 204,byte 187,byte 187,byte 187,byte 186,byte 186, 150 byte 186,byte 186,byte 169,byte 185,byte 185,byte 185,byte 168,byte 138, 151 byte 188,byte 188,byte 187,byte 187,byte 187,byte 170,byte 170,byte 186, 152 byte 186,byte 169,byte 169,byte 185,byte 185,byte 168,byte 151,byte 134, 153 byte 171,byte 171,byte 187,byte 187,byte 170,byte 170,byte 170,byte 186, 154 byte 186,byte 169,byte 152,byte 152,byte 185,byte 168,byte 151,byte 134, 155 byte 171,byte 171,byte 183,byte 183,byte 170,byte 170,byte 170,byte 153, 156 byte 182,byte 169,byte 152,byte 135,byte 135,byte 168,byte 151,byte 134, 157 byte 184,byte 184,byte 183,byte 183,byte 183,byte 183,byte 153,byte 182, 158 byte 182,byte 182,byte 182,byte 181,byte 181,byte 181,byte 164,byte 134, 159 byte 184,byte 184,byte 183,byte 183,byte 183,byte 183,byte 182,byte 182, 160 byte 182,byte 182,byte 165,byte 181,byte 181,byte 181,byte 164,byte 130, 161 byte 167,byte 167,byte 183,byte 183,byte 166,byte 166,byte 166,byte 182, 162 byte 182,byte 165,byte 165,byte 181,byte 181,byte 164,byte 147,byte 130, 163 byte 150,byte 150,byte 166,byte 166,byte 166,byte 149,byte 149,byte 182, 164 byte 165,byte 165,byte 148,byte 148,byte 164,byte 164,byte 147,byte 130, 165 byte 150,byte 150,byte 179,byte 179,byte 179,byte 149,byte 132,byte 178, 166 byte 178,byte 178,byte 148,byte 131,byte 177,byte 177,byte 147,byte 130, 167 byte 180,byte 180,byte 179,byte 179,byte 179,byte 179,byte 132,byte 178, 168 byte 178,byte 178,byte 161,byte 177,byte 177,byte 177,byte 160,byte 142, 169 byte 163,byte 163,byte 179,byte 179,byte 162,byte 162,byte 162,byte 178, 170 byte 178,byte 161,byte 161,byte 177,byte 177,byte 160,byte 160,byte 142, 171 byte 146,byte 146,byte 162,byte 162,byte 145,byte 145,byte 145,byte 161, 172 byte 161,byte 144,byte 144,byte 144,byte 160,byte 160,byte 159,byte 142, 173 byte 129,byte 129,byte 129,byte 129,byte 128,byte 128,byte 128,byte 128, 174 byte 143,byte 143,byte 143,byte 143,byte 142,byte 142,byte 142,byte 142, 175 byte 175,byte 175,byte 191,byte 191,byte 174,byte 174,byte 157,byte 157, 176 byte 190,byte 173,byte 156,byte 139,byte 139,byte 172,byte 155,byte 138, 177 byte 175,byte 175,byte 191,byte 191,byte 174,byte 174,byte 157,byte 157, 178 byte 190,byte 173,byte 156,byte 139,byte 139,byte 172,byte 155,byte 138, 179 byte 188,byte 188,byte 204,byte 187,byte 187,byte 187,byte 157,byte 186, 180 byte 186,byte 186,byte 156,byte 185,byte 185,byte 185,byte 168,byte 138, 181 byte 188,byte 188,byte 187,byte 187,byte 187,byte 170,byte 170,byte 186, 182 byte 186,byte 169,byte 169,byte 185,byte 185,byte 168,byte 168,byte 138, 183 byte 171,byte 171,byte 187,byte 187,byte 170,byte 170,byte 170,byte 186, 184 byte 186,byte 169,byte 152,byte 152,byte 185,byte 168,byte 151,byte 134, 185 byte 171,byte 171,byte 187,byte 170,byte 170,byte 170,byte 170,byte 153, 186 byte 169,byte 169,byte 152,byte 135,byte 135,byte 168,byte 151,byte 134, 187 byte 154,byte 154,byte 154,byte 170,byte 170,byte 170,byte 153,byte 153, 188 byte 169,byte 152,byte 152,byte 135,byte 135,byte 135,byte 151,byte 134, 189 byte 154,byte 154,byte 183,byte 183,byte 183,byte 153,byte 153,byte 153, 190 byte 182,byte 182,byte 135,byte 135,byte 181,byte 181,byte 164,byte 134, 191 byte 184,byte 184,byte 183,byte 183,byte 183,byte 166,byte 166,byte 182, 192 byte 182,byte 165,byte 165,byte 181,byte 181,byte 164,byte 164,byte 130, 193 byte 167,byte 167,byte 183,byte 166,byte 166,byte 166,byte 149,byte 182, 194 byte 165,byte 165,byte 165,byte 148,byte 181,byte 164,byte 147,byte 130, 195 byte 150,byte 150,byte 150,byte 166,byte 149,byte 149,byte 149,byte 132, 196 byte 165,byte 165,byte 148,byte 148,byte 131,byte 147,byte 147,byte 130, 197 byte 133,byte 133,byte 179,byte 179,byte 149,byte 132,byte 132,byte 132, 198 byte 178,byte 148,byte 148,byte 131,byte 131,byte 131,byte 130,byte 130, 199 byte 133,byte 133,byte 179,byte 179,byte 179,byte 132,byte 132,byte 178, 200 byte 178,byte 178,byte 131,byte 131,byte 131,byte 177,byte 160,byte 142, 201 byte 163,byte 163,byte 179,byte 162,byte 162,byte 162,byte 132,byte 178, 202 byte 161,byte 161,byte 144,byte 131,byte 177,byte 160,byte 160,byte 142, 203 byte 146,byte 146,byte 162,byte 162,byte 145,byte 145,byte 145,byte 161, 204 byte 161,byte 144,byte 144,byte 143,byte 160,byte 160,byte 159,byte 142, 205 byte 129,byte 129,byte 129,byte 129,byte 128,byte 128,byte 128,byte 128, 206 byte 143,byte 143,byte 143,byte 143,byte 142,byte 142,byte 142,byte 142, 207 byte 158,byte 158,byte 158,byte 112,byte 174,byte 157,byte 157,byte 140, 208 byte 140,byte 156,byte 156,byte 139,byte 139,byte 139,byte 155,byte 138, 209 byte 158,byte 158,byte 158,byte 112,byte 174,byte 157,byte 157,byte 140, 210 byte 140,byte 156,byte 156,byte 139,byte 139,byte 139,byte 155,byte 138, 211 byte 158,byte 158,byte 124,byte 124,byte 124,byte 157,byte 157,byte 140, 212 byte 123,byte 123,byte 156,byte 139,byte 139,byte 122,byte 155,byte 138, 213 byte 125,byte 125,byte 124,byte 124,byte 124,byte 170,byte 170,byte 123, 214 byte 123,byte 169,byte 152,byte 152,byte 122,byte 168,byte 151,byte 138, 215 byte 171,byte 171,byte 124,byte 124,byte 170,byte 170,byte 170,byte 153, 216 byte 123,byte 169,byte 152,byte 135,byte 135,byte 168,byte 151,byte 134, 217 byte 154,byte 154,byte 154,byte 170,byte 170,byte 170,byte 153,byte 153, 218 byte 169,byte 152,byte 152,byte 135,byte 135,byte 135,byte 151,byte 134, 219 byte 154,byte 154,byte 154,byte 170,byte 170,byte 153,byte 153,byte 153, 220 byte 136,byte 152,byte 135,byte 135,byte 135,byte 135,byte 134,byte 134, 221 byte 137,byte 137,byte 137,byte 120,byte 153,byte 153,byte 153,byte 136, 222 byte 136,byte 136,byte 135,byte 135,byte 135,byte 118,byte 164,byte 134, 223 byte 137,byte 137,byte 120,byte 120,byte 120,byte 166,byte 136,byte 136, 224 byte 136,byte 165,byte 165,byte 118,byte 118,byte 164,byte 147,byte 130, 225 byte 150,byte 150,byte 120,byte 166,byte 166,byte 149,byte 149,byte 136, 226 byte 165,byte 165,byte 148,byte 148,byte 118,byte 164,byte 147,byte 130, 227 byte 150,byte 150,byte 150,byte 149,byte 149,byte 149,byte 132,byte 132, 228 byte 165,byte 148,byte 148,byte 131,byte 131,byte 147,byte 147,byte 130, 229 byte 133,byte 133,byte 133,byte 149,byte 132,byte 132,byte 132,byte 132, 230 byte 115,byte 148,byte 131,byte 131,byte 131,byte 131,byte 130,byte 130, 231 byte 133,byte 133,byte 133,byte 116,byte 132,byte 132,byte 132,byte 132, 232 byte 115,byte 115,byte 131,byte 131,byte 131,byte 131,byte 160,byte 142, 233 byte 133,byte 133,byte 116,byte 162,byte 162,byte 132,byte 132,byte 115, 234 byte 161,byte 161,byte 144,byte 131,byte 131,byte 160,byte 160,byte 142, 235 byte 146,byte 146,byte 146,byte 145,byte 145,byte 145,byte 128,byte 161, 236 byte 144,byte 144,byte 144,byte 143,byte 160,byte 160,byte 159,byte 142, 237 byte 129,byte 129,byte 129,byte 129,byte 128,byte 128,byte 128,byte 128, 238 byte 143,byte 143,byte 143,byte 143,byte 142,byte 142,byte 142,byte 142, 239 byte 141,byte 141,byte 112,byte 112,byte 112,byte 157,byte 140,byte 140, 240 byte 140,byte 127,byte 139,byte 126,byte 126,byte 126,byte 109,byte 138, 241 byte 141,byte 141,byte 112,byte 112,byte 112,byte 157,byte 140,byte 140, 242 byte 140,byte 127,byte 139,byte 126,byte 126,byte 126,byte 109,byte 138, 243 byte 125,byte 125,byte 124,byte 124,byte 124,byte 124,byte 140,byte 123, 244 byte 123,byte 123,byte 123,byte 122,byte 122,byte 122,byte 122,byte 138, 245 byte 125,byte 125,byte 124,byte 124,byte 124,byte 124,byte 123,byte 123, 246 byte 123,byte 123,byte 123,byte 122,byte 122,byte 122,byte 105,byte 138, 247 byte 125,byte 125,byte 124,byte 124,byte 124,byte 124,byte 153,byte 123, 248 byte 123,byte 123,byte 152,byte 122,byte 122,byte 122,byte 105,byte 134, 249 byte 154,byte 154,byte 124,byte 124,byte 124,byte 153,byte 153,byte 153, 250 byte 123,byte 123,byte 135,byte 135,byte 122,byte 122,byte 105,byte 134, 251 byte 137,byte 137,byte 137,byte 120,byte 153,byte 153,byte 153,byte 136, 252 byte 136,byte 136,byte 135,byte 135,byte 135,byte 118,byte 105,byte 134, 253 byte 137,byte 137,byte 120,byte 120,byte 120,byte 153,byte 136,byte 136, 254 byte 136,byte 119,byte 119,byte 118,byte 118,byte 118,byte 118,byte 134, 255 byte 137,byte 137,byte 120,byte 120,byte 120,byte 120,byte 136,byte 136, 256 byte 119,byte 119,byte 119,byte 118,byte 118,byte 118,byte 101,byte 130, 257 byte 121,byte 121,byte 120,byte 120,byte 120,byte 120,byte 136,byte 119, 258 byte 119,byte 119,byte 102,byte 118,byte 118,byte 118,byte 101,byte 130, 259 byte 133,byte 133,byte 120,byte 120,byte 149,byte 132,byte 132,byte 119, 260 byte 119,byte 102,byte 148,byte 131,byte 131,byte 101,byte 101,byte 130, 261 byte 117,byte 117,byte 116,byte 116,byte 116,byte 132,byte 132,byte 115, 262 byte 115,byte 115,byte 131,byte 131,byte 114,byte 114,byte 114,byte 130, 263 byte 117,byte 117,byte 116,byte 116,byte 116,byte 116,byte 132,byte 115, 264 byte 115,byte 115,byte 131,byte 114,byte 114,byte 114,byte 114,byte 142, 265 byte 117,byte 117,byte 116,byte 116,byte 116,byte 116,byte 115,byte 115, 266 byte 115,byte 115,byte 98,byte 114,byte 114,byte 114,byte 97,byte 142, 267 byte 100,byte 100,byte 116,byte 99,byte 99,byte 99,byte 99,byte 115, 268 byte 98,byte 98,byte 98,byte 114,byte 114,byte 97,byte 97,byte 142, 269 byte 129,byte 129,byte 129,byte 129,byte 128,byte 128,byte 128,byte 128, 270 byte 143,byte 143,byte 143,byte 143,byte 142,byte 142,byte 142,byte 142, 271 byte 113,byte 113,byte 112,byte 112,byte 112,byte 112,byte 140,byte 140, 272 byte 127,byte 127,byte 110,byte 126,byte 126,byte 126,byte 109,byte 75, 273 byte 113,byte 113,byte 112,byte 112,byte 112,byte 112,byte 140,byte 140, 274 byte 127,byte 127,byte 110,byte 126,byte 126,byte 126,byte 109,byte 75, 275 byte 125,byte 125,byte 124,byte 124,byte 124,byte 124,byte 123,byte 123, 276 byte 123,byte 123,byte 123,byte 122,byte 122,byte 122,byte 105,byte 75, 277 byte 125,byte 125,byte 124,byte 124,byte 124,byte 124,byte 123,byte 123, 278 byte 123,byte 123,byte 106,byte 122,byte 122,byte 122,byte 105,byte 75, 279 byte 125,byte 125,byte 124,byte 124,byte 124,byte 124,byte 123,byte 123, 280 byte 123,byte 123,byte 106,byte 122,byte 122,byte 122,byte 105,byte 71, 281 byte 125,byte 125,byte 124,byte 124,byte 124,byte 107,byte 107,byte 123, 282 byte 123,byte 106,byte 106,byte 122,byte 122,byte 105,byte 105,byte 71, 283 byte 137,byte 137,byte 120,byte 120,byte 120,byte 107,byte 136,byte 136, 284 byte 136,byte 106,byte 106,byte 118,byte 118,byte 105,byte 88,byte 71, 285 byte 137,byte 137,byte 120,byte 120,byte 120,byte 120,byte 136,byte 136, 286 byte 119,byte 119,byte 119,byte 118,byte 118,byte 118,byte 101,byte 71, 287 byte 121,byte 121,byte 120,byte 120,byte 120,byte 120,byte 136,byte 119, 288 byte 119,byte 119,byte 102,byte 118,byte 118,byte 118,byte 101,byte 67, 289 byte 121,byte 121,byte 120,byte 120,byte 120,byte 103,byte 103,byte 119, 290 byte 119,byte 102,byte 102,byte 118,byte 118,byte 101,byte 101,byte 67, 291 byte 104,byte 104,byte 120,byte 103,byte 103,byte 103,byte 103,byte 119, 292 byte 102,byte 102,byte 102,byte 118,byte 118,byte 101,byte 84,byte 67, 293 byte 117,byte 117,byte 116,byte 116,byte 116,byte 116,byte 115,byte 115, 294 byte 115,byte 115,byte 115,byte 114,byte 114,byte 114,byte 114,byte 67, 295 byte 117,byte 117,byte 116,byte 116,byte 116,byte 116,byte 115,byte 115, 296 byte 115,byte 115,byte 115,byte 114,byte 114,byte 114,byte 97,byte 79, 297 byte 117,byte 117,byte 116,byte 116,byte 116,byte 99,byte 99,byte 115, 298 byte 115,byte 98,byte 98,byte 114,byte 114,byte 97,byte 97,byte 79, 299 byte 100,byte 100,byte 99,byte 99,byte 99,byte 99,byte 82,byte 98, 300 byte 98,byte 98,byte 81,byte 114,byte 97,byte 97,byte 97,byte 79, 301 byte 66,byte 66,byte 66,byte 66,byte 65,byte 65,byte 65,byte 65, 302 byte 64,byte 64,byte 64,byte 64,byte 79,byte 79,byte 79,byte 79, 303 byte 96,byte 96,byte 112,byte 112,byte 111,byte 111,byte 94,byte 127, 304 byte 127,byte 110,byte 110,byte 93,byte 126,byte 109,byte 92,byte 75, 305 byte 96,byte 96,byte 112,byte 112,byte 111,byte 111,byte 94,byte 127, 306 byte 127,byte 110,byte 110,byte 93,byte 126,byte 109,byte 92,byte 75, 307 byte 125,byte 125,byte 124,byte 124,byte 124,byte 124,byte 123,byte 123, 308 byte 123,byte 123,byte 106,byte 122,byte 122,byte 105,byte 105,byte 75, 309 byte 125,byte 125,byte 124,byte 124,byte 124,byte 107,byte 107,byte 123, 310 byte 123,byte 106,byte 106,byte 122,byte 122,byte 105,byte 105,byte 75, 311 byte 108,byte 108,byte 124,byte 124,byte 107,byte 107,byte 107,byte 123, 312 byte 123,byte 106,byte 106,byte 122,byte 122,byte 105,byte 88,byte 71, 313 byte 108,byte 108,byte 124,byte 107,byte 107,byte 107,byte 90,byte 123, 314 byte 106,byte 106,byte 106,byte 89,byte 122,byte 105,byte 88,byte 71, 315 byte 91,byte 91,byte 120,byte 107,byte 107,byte 90,byte 90,byte 136, 316 byte 106,byte 106,byte 89,byte 89,byte 118,byte 105,byte 88,byte 71, 317 byte 121,byte 121,byte 120,byte 120,byte 120,byte 120,byte 136,byte 119, 318 byte 119,byte 119,byte 102,byte 118,byte 118,byte 118,byte 101,byte 71, 319 byte 121,byte 121,byte 120,byte 120,byte 120,byte 103,byte 103,byte 119, 320 byte 119,byte 102,byte 102,byte 118,byte 118,byte 101,byte 101,byte 67, 321 byte 104,byte 104,byte 120,byte 103,byte 103,byte 103,byte 103,byte 119, 322 byte 102,byte 102,byte 102,byte 118,byte 118,byte 101,byte 84,byte 67, 323 byte 104,byte 104,byte 103,byte 103,byte 103,byte 103,byte 86,byte 102, 324 byte 102,byte 102,byte 85,byte 85,byte 101,byte 101,byte 84,byte 67, 325 byte 87,byte 87,byte 116,byte 116,byte 116,byte 86,byte 86,byte 115, 326 byte 115,byte 115,byte 85,byte 85,byte 114,byte 114,byte 84,byte 67, 327 byte 117,byte 117,byte 116,byte 116,byte 116,byte 116,byte 115,byte 115, 328 byte 115,byte 115,byte 98,byte 114,byte 114,byte 114,byte 97,byte 79, 329 byte 100,byte 100,byte 99,byte 99,byte 99,byte 99,byte 99,byte 115, 330 byte 98,byte 98,byte 98,byte 114,byte 114,byte 97,byte 97,byte 79, 331 byte 83,byte 83,byte 99,byte 99,byte 82,byte 82,byte 82,byte 98, 332 byte 98,byte 81,byte 81,byte 81,byte 97,byte 97,byte 80,byte 79, 333 byte 66,byte 66,byte 66,byte 66,byte 65,byte 65,byte 65,byte 65, 334 byte 64,byte 64,byte 64,byte 64,byte 79,byte 79,byte 79,byte 79, 335 byte 95,byte 95,byte 111,byte 111,byte 94,byte 94,byte 94,byte 77, 336 byte 110,byte 110,byte 93,byte 93,byte 76,byte 109,byte 92,byte 75, 337 byte 95,byte 95,byte 111,byte 111,byte 94,byte 94,byte 94,byte 77, 338 byte 110,byte 110,byte 93,byte 93,byte 76,byte 109,byte 92,byte 75, 339 byte 108,byte 108,byte 124,byte 111,byte 107,byte 94,byte 94,byte 123, 340 byte 123,byte 106,byte 93,byte 93,byte 122,byte 105,byte 92,byte 75, 341 byte 108,byte 108,byte 108,byte 107,byte 107,byte 107,byte 90,byte 123, 342 byte 106,byte 106,byte 106,byte 89,byte 122,byte 105,byte 88,byte 75, 343 byte 91,byte 91,byte 107,byte 107,byte 107,byte 90,byte 90,byte 123, 344 byte 106,byte 106,byte 89,byte 89,byte 105,byte 105,byte 88,byte 71, 345 byte 91,byte 91,byte 91,byte 107,byte 90,byte 90,byte 90,byte 73, 346 byte 106,byte 106,byte 89,byte 89,byte 72,byte 88,byte 88,byte 71, 347 byte 91,byte 91,byte 91,byte 90,byte 90,byte 90,byte 73,byte 73, 348 byte 106,byte 89,byte 89,byte 72,byte 72,byte 88,byte 88,byte 71, 349 byte 74,byte 74,byte 120,byte 120,byte 120,byte 73,byte 73,byte 119, 350 byte 119,byte 102,byte 89,byte 72,byte 72,byte 101,byte 101,byte 71, 351 byte 104,byte 104,byte 120,byte 103,byte 103,byte 103,byte 103,byte 119, 352 byte 102,byte 102,byte 102,byte 118,byte 118,byte 101,byte 84,byte 67, 353 byte 104,byte 104,byte 103,byte 103,byte 103,byte 103,byte 86,byte 102, 354 byte 102,byte 102,byte 85,byte 85,byte 101,byte 101,byte 84,byte 67, 355 byte 87,byte 87,byte 87,byte 103,byte 86,byte 86,byte 86,byte 86, 356 byte 102,byte 85,byte 85,byte 85,byte 85,byte 84,byte 84,byte 67, 357 byte 87,byte 87,byte 87,byte 86,byte 86,byte 86,byte 69,byte 69, 358 byte 115,byte 85,byte 85,byte 85,byte 68,byte 68,byte 67,byte 67, 359 byte 70,byte 70,byte 116,byte 116,byte 99,byte 69,byte 69,byte 69, 360 byte 115,byte 98,byte 85,byte 68,byte 68,byte 97,byte 97,byte 79, 361 byte 100,byte 100,byte 99,byte 99,byte 99,byte 82,byte 82,byte 98, 362 byte 98,byte 98,byte 81,byte 68,byte 97,byte 97,byte 97,byte 79, 363 byte 83,byte 83,byte 83,byte 82,byte 82,byte 82,byte 82,byte 98, 364 byte 81,byte 81,byte 81,byte 64,byte 97,byte 97,byte 80,byte 79, 365 byte 66,byte 66,byte 66,byte 66,byte 65,byte 65,byte 65,byte 65, 366 byte 64,byte 64,byte 64,byte 64,byte 79,byte 79,byte 79,byte 79, 367 byte 78,byte 78,byte 49,byte 49,byte 94,byte 77,byte 77,byte 48, 368 byte 48,byte 93,byte 93,byte 76,byte 76,byte 63,byte 92,byte 75, 369 byte 78,byte 78,byte 49,byte 49,byte 94,byte 77,byte 77,byte 48, 370 byte 48,byte 93,byte 93,byte 76,byte 76,byte 63,byte 92,byte 75, 371 byte 62,byte 62,byte 61,byte 61,byte 61,byte 61,byte 77,byte 60, 372 byte 60,byte 60,byte 93,byte 76,byte 59,byte 59,byte 59,byte 75, 373 byte 62,byte 62,byte 61,byte 61,byte 61,byte 61,byte 90,byte 60, 374 byte 60,byte 60,byte 89,byte 59,byte 59,byte 59,byte 88,byte 75, 375 byte 91,byte 91,byte 61,byte 61,byte 61,byte 90,byte 73,byte 60, 376 byte 60,byte 60,byte 89,byte 72,byte 59,byte 59,byte 88,byte 71, 377 byte 74,byte 74,byte 61,byte 61,byte 90,byte 73,byte 73,byte 73, 378 byte 60,byte 89,byte 89,byte 72,byte 72,byte 72,byte 71,byte 71, 379 byte 74,byte 74,byte 74,byte 90,byte 73,byte 73,byte 73,byte 73, 380 byte 56,byte 89,byte 72,byte 72,byte 72,byte 72,byte 71,byte 71, 381 byte 58,byte 58,byte 57,byte 57,byte 57,byte 73,byte 73,byte 56, 382 byte 56,byte 56,byte 72,byte 72,byte 55,byte 55,byte 55,byte 71, 383 byte 58,byte 58,byte 57,byte 57,byte 57,byte 57,byte 56,byte 56, 384 byte 56,byte 56,byte 56,byte 55,byte 55,byte 55,byte 55,byte 67, 385 byte 87,byte 87,byte 57,byte 57,byte 57,byte 86,byte 86,byte 56, 386 byte 56,byte 56,byte 85,byte 85,byte 55,byte 55,byte 84,byte 67, 387 byte 87,byte 87,byte 87,byte 86,byte 86,byte 86,byte 69,byte 69, 388 byte 56,byte 85,byte 85,byte 85,byte 68,byte 68,byte 67,byte 67, 389 byte 70,byte 70,byte 70,byte 53,byte 69,byte 69,byte 69,byte 69, 390 byte 52,byte 85,byte 85,byte 68,byte 68,byte 68,byte 67,byte 67, 391 byte 70,byte 70,byte 53,byte 53,byte 53,byte 69,byte 69,byte 52, 392 byte 52,byte 52,byte 68,byte 68,byte 68,byte 51,byte 51,byte 79, 393 byte 54,byte 54,byte 53,byte 53,byte 53,byte 69,byte 69,byte 52, 394 byte 52,byte 52,byte 68,byte 68,byte 51,byte 51,byte 80,byte 79, 395 byte 83,byte 83,byte 53,byte 82,byte 82,byte 65,byte 65,byte 52, 396 byte 52,byte 81,byte 64,byte 64,byte 51,byte 80,byte 80,byte 79, 397 byte 66,byte 66,byte 66,byte 66,byte 65,byte 65,byte 65,byte 65, 398 byte 64,byte 64,byte 64,byte 64,byte 79,byte 79,byte 79,byte 79, 399 byte 50,byte 50,byte 49,byte 49,byte 49,byte 77,byte 77,byte 48, 400 byte 48,byte 48,byte 76,byte 76,byte 63,byte 63,byte 46,byte 12, 401 byte 50,byte 50,byte 49,byte 49,byte 49,byte 77,byte 77,byte 48, 402 byte 48,byte 48,byte 76,byte 76,byte 63,byte 63,byte 46,byte 12, 403 byte 62,byte 62,byte 61,byte 61,byte 61,byte 61,byte 77,byte 60, 404 byte 60,byte 60,byte 60,byte 59,byte 59,byte 59,byte 59,byte 12, 405 byte 62,byte 62,byte 61,byte 61,byte 61,byte 61,byte 60,byte 60, 406 byte 60,byte 60,byte 60,byte 59,byte 59,byte 59,byte 42,byte 12, 407 byte 62,byte 62,byte 61,byte 61,byte 61,byte 61,byte 73,byte 60, 408 byte 60,byte 60,byte 43,byte 59,byte 59,byte 59,byte 42,byte 8, 409 byte 74,byte 74,byte 61,byte 61,byte 61,byte 73,byte 73,byte 60, 410 byte 60,byte 60,byte 72,byte 72,byte 72,byte 59,byte 42,byte 8, 411 byte 74,byte 74,byte 74,byte 57,byte 73,byte 73,byte 73,byte 73, 412 byte 56,byte 56,byte 72,byte 72,byte 72,byte 72,byte 42,byte 8, 413 byte 58,byte 58,byte 57,byte 57,byte 57,byte 57,byte 73,byte 56, 414 byte 56,byte 56,byte 72,byte 55,byte 55,byte 55,byte 55,byte 8, 415 byte 58,byte 58,byte 57,byte 57,byte 57,byte 57,byte 56,byte 56, 416 byte 56,byte 56,byte 56,byte 55,byte 55,byte 55,byte 38,byte 4, 417 byte 58,byte 58,byte 57,byte 57,byte 57,byte 57,byte 56,byte 56, 418 byte 56,byte 56,byte 39,byte 55,byte 55,byte 55,byte 38,byte 4, 419 byte 70,byte 70,byte 57,byte 57,byte 40,byte 69,byte 69,byte 69, 420 byte 56,byte 39,byte 85,byte 68,byte 68,byte 38,byte 38,byte 4, 421 byte 70,byte 70,byte 53,byte 53,byte 53,byte 69,byte 69,byte 52, 422 byte 52,byte 52,byte 68,byte 68,byte 68,byte 51,byte 51,byte 4, 423 byte 54,byte 54,byte 53,byte 53,byte 53,byte 69,byte 69,byte 52, 424 byte 52,byte 52,byte 68,byte 68,byte 51,byte 51,byte 51,byte 0, 425 byte 54,byte 54,byte 53,byte 53,byte 53,byte 53,byte 69,byte 52, 426 byte 52,byte 52,byte 35,byte 51,byte 51,byte 51,byte 34,byte 0, 427 byte 37,byte 37,byte 53,byte 36,byte 36,byte 36,byte 36,byte 52, 428 byte 35,byte 35,byte 35,byte 51,byte 51,byte 34,byte 34,byte 0, 429 byte 3,byte 3,byte 3,byte 3,byte 2,byte 2,byte 2,byte 2, 430 byte 1,byte 1,byte 1,byte 1,byte 0,byte 0,byte 0,byte 0, 431 byte 33,byte 33,byte 49,byte 49,byte 32,byte 32,byte 77,byte 48, 432 byte 48,byte 47,byte 47,byte 63,byte 63,byte 46,byte 46,byte 12, 433 byte 33,byte 33,byte 49,byte 49,byte 32,byte 32,byte 77,byte 48, 434 byte 48,byte 47,byte 47,byte 63,byte 63,byte 46,byte 46,byte 12, 435 byte 62,byte 62,byte 61,byte 61,byte 61,byte 61,byte 60,byte 60, 436 byte 60,byte 43,byte 43,byte 59,byte 59,byte 59,byte 42,byte 12, 437 byte 62,byte 62,byte 61,byte 61,byte 61,byte 44,byte 44,byte 60, 438 byte 60,byte 43,byte 43,byte 59,byte 59,byte 42,byte 42,byte 12, 439 byte 45,byte 45,byte 61,byte 61,byte 44,byte 44,byte 44,byte 60, 440 byte 60,byte 43,byte 43,byte 59,byte 59,byte 42,byte 42,byte 8, 441 byte 45,byte 45,byte 61,byte 44,byte 44,byte 44,byte 73,byte 60, 442 byte 43,byte 43,byte 26,byte 72,byte 59,byte 42,byte 42,byte 8, 443 byte 74,byte 74,byte 57,byte 44,byte 44,byte 73,byte 73,byte 56, 444 byte 43,byte 43,byte 26,byte 72,byte 72,byte 42,byte 42,byte 8, 445 byte 58,byte 58,byte 57,byte 57,byte 57,byte 57,byte 56,byte 56, 446 byte 56,byte 56,byte 39,byte 55,byte 55,byte 55,byte 38,byte 8, 447 byte 58,byte 58,byte 57,byte 57,byte 57,byte 40,byte 40,byte 56, 448 byte 56,byte 39,byte 39,byte 55,byte 55,byte 38,byte 38,byte 4, 449 byte 41,byte 41,byte 40,byte 40,byte 40,byte 40,byte 40,byte 56, 450 byte 39,byte 39,byte 39,byte 55,byte 55,byte 38,byte 38,byte 4, 451 byte 41,byte 41,byte 40,byte 40,byte 40,byte 23,byte 23,byte 39, 452 byte 39,byte 39,byte 22,byte 68,byte 38,byte 38,byte 38,byte 4, 453 byte 54,byte 54,byte 53,byte 53,byte 53,byte 69,byte 69,byte 52, 454 byte 52,byte 52,byte 68,byte 68,byte 51,byte 51,byte 21,byte 4, 455 byte 54,byte 54,byte 53,byte 53,byte 53,byte 53,byte 69,byte 52, 456 byte 52,byte 52,byte 35,byte 51,byte 51,byte 51,byte 34,byte 0, 457 byte 37,byte 37,byte 53,byte 36,byte 36,byte 36,byte 36,byte 52, 458 byte 35,byte 35,byte 35,byte 51,byte 51,byte 34,byte 34,byte 0, 459 byte 37,byte 37,byte 36,byte 36,byte 36,byte 36,byte 36,byte 35, 460 byte 35,byte 35,byte 35,byte 18,byte 34,byte 34,byte 34,byte 0, 461 byte 3,byte 3,byte 3,byte 3,byte 2,byte 2,byte 2,byte 2, 462 byte 1,byte 1,byte 1,byte 1,byte 0,byte 0,byte 0,byte 0, 463 byte 16,byte 16,byte 32,byte 32,byte 31,byte 31,byte 31,byte 47, 464 byte 47,byte 30,byte 30,byte 30,byte 46,byte 46,byte 29,byte 12, 465 byte 16,byte 16,byte 32,byte 32,byte 31,byte 31,byte 31,byte 47, 466 byte 47,byte 30,byte 30,byte 30,byte 46,byte 46,byte 29,byte 12, 467 byte 45,byte 45,byte 44,byte 44,byte 44,byte 44,byte 31,byte 60, 468 byte 43,byte 43,byte 30,byte 59,byte 59,byte 42,byte 42,byte 12, 469 byte 45,byte 45,byte 44,byte 44,byte 44,byte 44,byte 27,byte 43, 470 byte 43,byte 43,byte 26,byte 26,byte 42,byte 42,byte 42,byte 12, 471 byte 28,byte 28,byte 44,byte 44,byte 27,byte 27,byte 27,byte 43, 472 byte 43,byte 26,byte 26,byte 26,byte 42,byte 42,byte 25,byte 8, 473 byte 28,byte 28,byte 44,byte 44,byte 27,byte 27,byte 27,byte 43, 474 byte 43,byte 26,byte 26,byte 9,byte 42,byte 42,byte 25,byte 8, 475 byte 28,byte 28,byte 28,byte 27,byte 27,byte 27,byte 10,byte 43, 476 byte 26,byte 26,byte 26,byte 9,byte 42,byte 42,byte 25,byte 8, 477 byte 41,byte 41,byte 57,byte 40,byte 40,byte 40,byte 40,byte 56, 478 byte 39,byte 39,byte 39,byte 55,byte 55,byte 38,byte 38,byte 8, 479 byte 41,byte 41,byte 40,byte 40,byte 40,byte 40,byte 23,byte 39, 480 byte 39,byte 39,byte 22,byte 55,byte 38,byte 38,byte 38,byte 4, 481 byte 24,byte 24,byte 40,byte 40,byte 23,byte 23,byte 23,byte 39, 482 byte 39,byte 22,byte 22,byte 22,byte 38,byte 38,byte 21,byte 4, 483 byte 24,byte 24,byte 24,byte 23,byte 23,byte 23,byte 23,byte 39, 484 byte 22,byte 22,byte 22,byte 5,byte 38,byte 38,byte 21,byte 4, 485 byte 24,byte 24,byte 53,byte 23,byte 23,byte 6,byte 6,byte 52, 486 byte 52,byte 22,byte 5,byte 5,byte 51,byte 21,byte 21,byte 4, 487 byte 37,byte 37,byte 53,byte 36,byte 36,byte 36,byte 36,byte 52, 488 byte 35,byte 35,byte 35,byte 51,byte 51,byte 34,byte 34,byte 0, 489 byte 37,byte 37,byte 36,byte 36,byte 36,byte 36,byte 36,byte 35, 490 byte 35,byte 35,byte 35,byte 18,byte 34,byte 34,byte 34,byte 0, 491 byte 20,byte 20,byte 36,byte 36,byte 19,byte 19,byte 19,byte 35, 492 byte 35,byte 18,byte 18,byte 18,byte 34,byte 34,byte 17,byte 0, 493 byte 3,byte 3,byte 3,byte 3,byte 2,byte 2,byte 2,byte 2, 494 byte 1,byte 1,byte 1,byte 1,byte 0,byte 0,byte 0,byte 0, 495 byte 15,byte 15,byte 15,byte 15,byte 14,byte 14,byte 14,byte 14, 496 byte 13,byte 13,byte 13,byte 13,byte 12,byte 12,byte 12,byte 12, 497 byte 15,byte 15,byte 15,byte 15,byte 14,byte 14,byte 14,byte 14, 498 byte 13,byte 13,byte 13,byte 13,byte 12,byte 12,byte 12,byte 12, 499 byte 15,byte 15,byte 15,byte 15,byte 14,byte 14,byte 14,byte 14, 500 byte 13,byte 13,byte 13,byte 13,byte 12,byte 12,byte 12,byte 12, 501 byte 15,byte 15,byte 15,byte 15,byte 14,byte 14,byte 14,byte 14, 502 byte 13,byte 13,byte 13,byte 13,byte 12,byte 12,byte 12,byte 12, 503 byte 11,byte 11,byte 11,byte 11,byte 10,byte 10,byte 10,byte 10, 504 byte 9,byte 9,byte 9,byte 9,byte 8,byte 8,byte 8,byte 8, 505 byte 11,byte 11,byte 11,byte 11,byte 10,byte 10,byte 10,byte 10, 506 byte 9,byte 9,byte 9,byte 9,byte 8,byte 8,byte 8,byte 8, 507 byte 11,byte 11,byte 11,byte 11,byte 10,byte 10,byte 10,byte 10, 508 byte 9,byte 9,byte 9,byte 9,byte 8,byte 8,byte 8,byte 8, 509 byte 11,byte 11,byte 11,byte 11,byte 10,byte 10,byte 10,byte 10, 510 byte 9,byte 9,byte 9,byte 9,byte 8,byte 8,byte 8,byte 8, 511 byte 7,byte 7,byte 7,byte 7,byte 6,byte 6,byte 6,byte 6, 512 byte 5,byte 5,byte 5,byte 5,byte 4,byte 4,byte 4,byte 4, 513 byte 7,byte 7,byte 7,byte 7,byte 6,byte 6,byte 6,byte 6, 514 byte 5,byte 5,byte 5,byte 5,byte 4,byte 4,byte 4,byte 4, 515 byte 7,byte 7,byte 7,byte 7,byte 6,byte 6,byte 6,byte 6, 516 byte 5,byte 5,byte 5,byte 5,byte 4,byte 4,byte 4,byte 4, 517 byte 7,byte 7,byte 7,byte 7,byte 6,byte 6,byte 6,byte 6, 518 byte 5,byte 5,byte 5,byte 5,byte 4,byte 4,byte 4,byte 4, 519 byte 3,byte 3,byte 3,byte 3,byte 2,byte 2,byte 2,byte 2, 520 byte 1,byte 1,byte 1,byte 1,byte 0,byte 0,byte 0,byte 0, 521 byte 3,byte 3,byte 3,byte 3,byte 2,byte 2,byte 2,byte 2, 522 byte 1,byte 1,byte 1,byte 1,byte 0,byte 0,byte 0,byte 0, 523 byte 3,byte 3,byte 3,byte 3,byte 2,byte 2,byte 2,byte 2, 524 byte 1,byte 1,byte 1,byte 1,byte 0,byte 0,byte 0,byte 0, 525 byte 3,byte 3,byte 3,byte 3,byte 2,byte 2,byte 2,byte 2, 526 byte 1,byte 1,byte 1,byte 1,byte 0,byte 0,byte 0,byte 0, 527}; 528 529clamp: array of int; 530rgbvmap: array of int; 531 532init(d: ref Display) 533{ 534 # initialise in a way that make races slightly wasteful but benign 535 if(sys == nil) 536 sys = load Sys Sys->PATH; 537 if(draw == nil) 538 draw = load Draw Draw->PATH; 539 if(clamp == nil){ 540 m := array[64+256+64] of int; 541 for(j:=0; j<64; j++) 542 m[j] = 0; 543 for(j=0; j<256; j++) 544 m[64+j] = (j>>4); 545 for(j=0; j<64; j++) 546 m[64+256+j] = (255>>4); 547 clamp = m; 548 } 549 if(rgbvmap == nil){ 550 m := array[3*256] of int; 551 for(j:=0; j<256; j++) 552 (m[3*j+0], m[3*j+1], m[3*j+2]) = d.cmap2rgb(j); 553 rgbvmap = m; 554 } 555} 556 557remap(i: ref RImagefile->Rawimage, d: ref Display, errdiff: int): (ref Image, string) 558{ 559 if(sys == nil || draw == nil || clamp == nil || rgbvmap == nil) 560 init(d); # temporarily do this here until all clients change to call init 561 j: int; 562 im := d.newimage(i.r, Draw->CMAP8, 0, Draw->Black); 563 dx := i.r.max.x-i.r.min.x; 564 dy := i.r.max.y-i.r.min.y; 565 cmap := i.cmap; 566 567 pic := i.chans[0]; 568 569 case i.chandesc{ 570 RImagefile->CRGB1 => 571 if(cmap == nil) 572 return (nil, sys->sprint("image has no color map")); 573 if(i.nchans != 1) 574 return (nil, sys->sprint("can't handle nchans %d", i.nchans)); 575 for(j=1; j<=8; j++) 576 if(len cmap == 3*(1<<j)) 577 break; 578 if(j > 8) 579 return (nil, sys->sprint("can't understand colormap size 3*%d", len cmap/3)); 580 if(len cmap != 3*256){ 581 # to avoid a range check in inner loop below, make a full-size cmap 582 cmap1 := array[3*256] of byte; 583 cmap1[0:] = cmap[0:]; 584 cmap = cmap1; 585 errdiff = 0; # why not? 586 } 587 if(errdiff == 0){ 588 map := array[256] of byte; 589 k := 0; 590 for(j=0; j<256; j++){ 591 r := int cmap[k]>>4; 592 g := int cmap[k+1]>>4; 593 b := int cmap[k+2]>>4; 594 k += 3; 595 map[j] = byte 255 - closest[b+16*(g+16*r)]; 596 } 597 for(j=0; j<len pic; j++) 598 pic[j] = map[int pic[j]]; 599 }else{ 600 # modified floyd steinberg, coefficients (1 0) 3/16, (0, 1) 3/16, (1, 1) 7/16 601 ered := array[dx+1] of int; 602 egrn := array[dx+1] of int; 603 eblu := array[dx+1] of int; 604 for(j=0; j<=dx; j++) 605 ered[j] = 0; 606 egrn[0:] = ered[0:]; 607 eblu[0:] = ered[0:]; 608 p := 0; 609 for(y:=0; y<dy; y++){ 610 er := 0; 611 eg := 0; 612 eb := 0; 613 for(x:=0; x<dx; x++){ 614 in := 3*int pic[p]; 615 r := int cmap[in+0]+ered[x]; 616 g := int cmap[in+1]+egrn[x]; 617 b := int cmap[in+2]+eblu[x]; 618 r1 := clamp[r+64]; 619 g1 := clamp[g+64]; 620 b1 := clamp[b+64]; 621 col := 255 - int closest[b1+16*(g1+16*r1)]; 622 pic[p++] = byte col; 623 624 col *= 3; 625 r -= rgbvmap[col+0]; 626 t := (3*r)>>4; 627 ered[x] = t+er; 628 ered[x+1] += t; 629 er = r-3*t; 630 631 g -= rgbvmap[col+1]; 632 t = (3*g)>>4; 633 egrn[x] = t+eg; 634 egrn[x+1] += t; 635 eg = g-3*t; 636 637 b -= rgbvmap[col+2]; 638 t = (3*b)>>4; 639 eblu[x] = t+eb; 640 eblu[x+1] += t; 641 eb = b-3*t; 642 } 643 } 644 } 645 RImagefile->CRGB => 646 if(i.nchans != 3) 647 return (nil, sys->sprint("RGB image has %d channels", i.nchans)); 648 rpic := i.chans[0]; 649 gpic := i.chans[1]; 650 bpic := i.chans[2]; 651 if(errdiff == 0){ 652 for(j=0; j<len rpic; j++){ 653 r := int rpic[j]>>4; 654 g := int gpic[j]>>4; 655 b := int bpic[j]>>4; 656 pic[j] = byte 255 - byte closest[b+16*(g+16*r)]; 657 } 658 }else{ 659 # modified floyd steinberg, coefficients (1 0) 3/16, (0, 1) 3/16, (1, 1) 7/16 660 ered := array[dx+1] of int; 661 egrn := array[dx+1] of int; 662 eblu := array[dx+1] of int; 663 for(j=0; j<=dx; j++) 664 ered[j] = 0; 665 egrn[0:] = ered[0:]; 666 eblu[0:] = ered[0:]; 667 p := 0; 668 for(y:=0; y<dy; y++){ 669 er := 0; 670 eg := 0; 671 eb := 0; 672 for(x:=0; x<dx; x++){ 673 r := int rpic[p]+ered[x]; 674 g := int gpic[p]+egrn[x]; 675 b := int bpic[p]+eblu[x]; 676 r1 := clamp[r+64]; 677 g1 := clamp[g+64]; 678 b1 := clamp[b+64]; 679 col := 255 - int closest[b1+16*(g1+16*r1)]; 680 pic[p++] = byte col; 681 682 col *= 3; 683 r -= rgbvmap[col+0]; 684 t := (3*r)>>4; 685 ered[x] = t+er; 686 ered[x+1] += t; 687 er = r-3*t; 688 689 g -= rgbvmap[col+1]; 690 t = (3*g)>>4; 691 egrn[x] = t+eg; 692 egrn[x+1] += t; 693 eg = g-3*t; 694 695 b -= rgbvmap[col+2]; 696 t = (3*b)>>4; 697 eblu[x] = t+eb; 698 eblu[x+1] += t; 699 eb = b-3*t; 700 } 701 } 702 } 703 RImagefile->CY => 704 if(i.nchans != 1) 705 return (nil, sys->sprint("Y image has %d chans", i.nchans)); 706 rpic := i.chans[0]; 707 if(errdiff == 0){ 708 for(j=0; j<len pic; j++){ 709 r := int rpic[j]>>4; 710 pic[j] = byte 255 - byte closest[r+16*(r+16*r)]; 711 } 712 }else{ 713 # modified floyd steinberg, coefficients (1 0) 3/16, (0, 1) 3/16, (1, 1) 7/16 714 ered := array[dx+1] of int; 715 for(j=0; j<=dx; j++) 716 ered[j] = 0; 717 p := 0; 718 for(y:=0; y<dy; y++){ 719 er := 0; 720 for(x:=0; x<dx; x++){ 721 r := int rpic[p]+ered[x]; 722 r1 := clamp[r+64]; 723 col := 255-int closest[r1+16*(r1+16*r1)]; 724 pic[p++] = byte col; 725 726 col *= 3; 727 r -= rgbvmap[col+0]; 728 t := (3*r)>>4; 729 ered[x] = t+er; 730 ered[x+1] += t; 731 er = r-3*t; 732 } 733 } 734 } 735 } 736 im.writepixels(im.r, pic); 737 return (im, ""); 738} 739