blob: 26ad0c9d6cbbd65b15e20dc9409be86225e564c9 [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Sun designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Sun in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22 * CA 95054 USA or visit www.sun.com if you need additional information or
23 * have any questions.
24 */
25
26package sun.nio.cs;
27
28import java.nio.ByteBuffer;
29import java.nio.CharBuffer;
30import java.nio.charset.Charset;
31import java.nio.charset.CharsetDecoder;
32import java.nio.charset.CharsetEncoder;
33import java.nio.charset.CharacterCodingException;
34import java.nio.charset.MalformedInputException;
35import java.nio.charset.UnmappableCharacterException;
36import sun.nio.cs.StandardCharsets;
37import sun.nio.cs.SingleByteDecoder;
38import sun.nio.cs.SingleByteEncoder;
39
40/*
41 * An implementation of charset KOI8_U as specified by
42 * http://www.net.ua/KOI8-U
43 */
44
45public class KOI8_U
46 extends Charset
47 implements HistoricallyNamedCharset
48{
49
50 public KOI8_U() {
51 super("KOI8-U", StandardCharsets.aliases_KOI8_U);
52 }
53
54 public String historicalName() {
55 return "KOI8_U";
56 }
57
58 public boolean contains(Charset cs) {
59 return ((cs.name().equals("US-ASCII"))
60 || (cs instanceof KOI8_U));
61 }
62
63 public CharsetDecoder newDecoder() {
64 return new Decoder(this);
65 }
66
67 public CharsetEncoder newEncoder() {
68 return new Encoder(this);
69 }
70
71 private static class Decoder extends SingleByteDecoder {
72
73 public Decoder(Charset cs) {
74 super(cs, byteToCharTable);
75 }
76
77 private final static String byteToCharTable =
78 "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524" + // 0x80 - 0x87
79 "\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590" + // 0x88 - 0x8F
80 "\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248" + // 0x90 - 0x97
81 "\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7" + // 0x98 - 0x9F
82 "\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457" + // 0xA0 - 0xA7
83 "\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E" + // 0xA8 - 0xAF
84 "\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407" + // 0xB0 - 0xB7
85 "\u2566\u2567\u2568\u2569\u256A\u0490\u256C\u00A9" + // 0xB8 - 0xBF
86 "\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433" + // 0xC0 - 0xC7
87 "\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E" + // 0xC8 - 0xCF
88 "\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432" + // 0xD0 - 0xD7
89 "\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A" + // 0xD8 - 0xDF
90 "\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413" + // 0xE0 - 0xE7
91 "\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E" + // 0xE8 - 0xEF
92 "\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412" + // 0xF0 - 0xF7
93 "\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" + // 0xF8 - 0xFF
94 "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07
95 "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F
96 "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17
97 "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F
98 "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27
99 "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F
100 "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37
101 "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F
102 "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47
103 "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F
104 "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57
105 "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F
106 "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67
107 "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F
108 "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77
109 "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F
110 }
111
112 private static class Encoder extends SingleByteEncoder {
113
114 public Encoder(Charset cs) {
115 super(cs, index1, index2, 0xFF00, 0x00FF, 8);
116 }
117
118 private final static String index2 =
119 "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
120 "\b\t\n\u000B\f\r\u000E\u000F" +
121 "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
122 "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
123 "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
124 "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
125 "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
126 "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
127 "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
128 "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
129 "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
130 "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
131 "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
132 "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
133 "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
134 "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
135 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
136 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
137 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
138 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
139 "\u009A\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
140 "\u0000\u00BF\u0000\u0000\u0000\u0000\u0000\u0000" +
141 "\u009C\u0000\u009D\u0000\u0000\u0000\u0000\u009E" +
142 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
143 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
144 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
145 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
146 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
147 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
148 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
149 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u009F" +
150 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
151 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
152 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
153 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
154 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
155 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
156 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
157 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
158 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
159 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
160 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
161 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
162 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
163 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
164 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
165 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
166 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
167 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
168 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
169 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
170 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
171 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
172 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
173 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
174 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
175 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
176 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
177 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
178 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
179 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
180 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
181 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
182 "\u00B3\u0000\u0000\u00B4\u0000\u00B6\u00B7\u0000" +
183 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00E1" +
184 "\u00E2\u00F7\u00E7\u00E4\u00E5\u00F6\u00FA\u00E9" +
185 "\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F2" +
186 "\u00F3\u00F4\u00F5\u00E6\u00E8\u00E3\u00FE\u00FB" +
187 "\u00FD\u00FF\u00F9\u00F8\u00FC\u00E0\u00F1\u00C1" +
188 "\u00C2\u00D7\u00C7\u00C4\u00C5\u00D6\u00DA\u00C9" +
189 "\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D2" +
190 "\u00D3\u00D4\u00D5\u00C6\u00C8\u00C3\u00DE\u00DB" +
191 "\u00DD\u00DF\u00D9\u00D8\u00DC\u00C0\u00D1\u0000" +
192 "\u00A3\u0000\u0000\u00A4\u0000\u00A6\u00A7\u0000" +
193 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
194 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
195 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
196 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
197 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
198 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
199 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00BD" +
200 "\u00AD\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
201 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
202 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
203 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
204 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
205 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
206 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
207 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
208 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
209 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
210 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
211 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
212 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
213 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0095" +
214 "\u0096\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
215 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
216 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
217 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
218 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
219 "\u0000\u0000\u0000\u0000\u0000\u0000\u0097\u0000" +
220 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
221 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
222 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
223 "\u0000\u0000\u0098\u0099\u0000\u0000\u0000\u0000" +
224 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
225 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
226 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
227 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
228 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
229 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
230 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
231 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
232 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
233 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
234 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
235 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
236 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
237 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
238 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
239 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
240 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
241 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
242 "\u0000\u0000\u0000\u0000\u0000\u0000\u0093\u009B" +
243 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
244 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
245 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
246 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
247 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
248 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
249 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
250 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
251 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
252 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
253 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
254 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
255 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
256 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
257 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
258 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
259 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
260 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
261 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
262 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
263 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
264 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
265 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
266 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
267 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
268 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
269 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
270 "\u0000\u0000\u0000\u0000\u0000\u0000\u0080\u0000" +
271 "\u0081\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
272 "\u0000\u0000\u0082\u0000\u0000\u0000\u0083\u0000" +
273 "\u0000\u0000\u0084\u0000\u0000\u0000\u0085\u0000" +
274 "\u0000\u0000\u0086\u0000\u0000\u0000\u0000\u0000" +
275 "\u0000\u0000\u0087\u0000\u0000\u0000\u0000\u0000" +
276 "\u0000\u0000\u0088\u0000\u0000\u0000\u0000\u0000" +
277 "\u0000\u0000\u0089\u0000\u0000\u0000\u0000\u0000" +
278 "\u0000\u0000\u008A\u0000\u0000\u0000\u0000\u0000" +
279 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
280 "\u0000\u0000\u0000\u0000\u0000\u0000\u00A0\u00A1" +
281 "\u00A2\u0000\u00A5\u0000\u0000\u00A8\u00A9\u00AA" +
282 "\u00AB\u00AC\u0000\u00AE\u00AF\u00B0\u00B1\u00B2" +
283 "\u0000\u00B5\u0000\u0000\u00B8\u00B9\u00BA\u00BB" +
284 "\u00BC\u0000\u00BE\u0000\u0000\u0000\u0000\u0000" +
285 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
286 "\u0000\u0000\u0000\u0000\u0000\u0000\u008B\u0000" +
287 "\u0000\u0000\u008C\u0000\u0000\u0000\u008D\u0000" +
288 "\u0000\u0000\u008E\u0000\u0000\u0000\u008F\u0090" +
289 "\u0091\u0092\u0000\u0000\u0000\u0000\u0000\u0000" +
290 "\u0000\u0000\u0000\u0000\u0000\u0000\u0094\u0000" +
291 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
292 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
293 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
294 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
295 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
296 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
297 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
298 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
299 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
300 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
301 "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
302 "\u0000\u0000\u0000\u0000\u0000\u0000";
303
304 private final static short index1[] = {
305 0, 248, 248, 248, 503, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
306 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
307 248, 248, 734, 958, 248, 1214, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
308 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
309 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
310 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
311 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
312 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
313 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
314 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
315 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
316 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
317 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
318 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
319 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
320 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
321 };
322 }
323}