Add GNU LGPL headers to all .c .C and .h files
[oweals/cde.git] / cde / programs / dtinfo / dtinfogen / infolib / etc / ContentType.C
1 /*
2  * CDE - Common Desktop Environment
3  *
4  * Copyright (c) 1993-2012, The Open Group. All rights reserved.
5  *
6  * These libraries and programs are free software; you can
7  * redistribute them and/or modify them under the terms of the GNU
8  * Lesser General Public License as published by the Free Software
9  * Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * These libraries and programs are distributed in the hope that
13  * they will be useful, but WITHOUT ANY WARRANTY; without even the
14  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  * PURPOSE. See the GNU Lesser General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with these librararies and programs; if not, write
20  * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21  * Floor, Boston, MA 02110-1301 USA
22  */
23 /* $XConsortium: ContentType.C /main/5 1996/08/21 15:57:45 drk $ 
24  *
25  * (c) Copyright 1996 Digital Equipment Corporation.
26  * (c) Copyright 1996 Hewlett-Packard Company.
27  * (c) Copyright 1996 International Business Machines Corp.
28  * (c) Copyright 1996 Sun Microsystems, Inc.
29  * (c) Copyright 1996 Novell, Inc. 
30  * (c) Copyright 1996 FUJITSU LIMITED.
31  * (c) Copyright 1996 Hitachi.
32  */
33
34 /* A lexical scanner generated by flex */
35
36 /* scanner skeleton version:
37  * $Header: /proj/.cde-1/programs/dtinfo/dtinfogen/infolib/etc/ContentType.C /main/5 1996/08/21 15:57:45 drk $
38  */
39
40 #define FLEX_SCANNER
41
42 #include <stdio.h>
43
44
45 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
46 #ifdef c_plusplus
47 #ifndef __cplusplus
48 #define __cplusplus
49 #endif
50 #endif
51
52
53 #ifdef __cplusplus
54
55 #include <stdlib.h>
56
57 #if !defined(__osf__) && !defined(USL)
58 #include <osfcn.h>
59 #endif
60
61 /* use prototypes in function declarations */
62 #define ol_data_USE_PROTOS
63
64 /* the "const" storage-class-modifier is valid */
65 #define ol_data_USE_CONST
66
67 #else   /* ! __cplusplus */
68
69 #ifdef __STDC__
70
71 #ifdef __GNUC__
72 #include <stddef.h>
73 void *malloc( size_t );
74 void free( void* );
75 #else
76 #include <stdlib.h>
77 #endif  /* __GNUC__ */
78
79 #define ol_data_USE_PROTOS
80 #define ol_data_USE_CONST
81
82 #endif  /* __STDC__ */
83 #endif  /* ! __cplusplus */
84
85
86 #ifdef __TURBOC__
87 #define ol_data_USE_CONST
88 #endif
89
90
91 #ifndef ol_data_USE_CONST
92 #define const
93 #endif
94
95
96 #ifdef ol_data_USE_PROTOS
97 #define ol_data_PROTO(proto) proto
98 #else
99 #define ol_data_PROTO(proto) ()
100 /* we can't get here if it's an ANSI C compiler, or a C++ compiler,
101  * so it's got to be a K&R compiler, and therefore there's no standard
102  * place from which to include these definitions
103  */
104 char *malloc();
105 int free();
106 int read();
107 #endif
108
109
110 /* amount of stuff to slurp up with each read */
111 #ifndef ol_data_READ_BUF_SIZE
112 #define ol_data_READ_BUF_SIZE 8192
113 #endif
114
115 /* returned upon end-of-file */
116 #define ol_data_END_TOK 0
117
118 /* copy whatever the last rule matched to the standard output */
119
120 /* cast to (char *) is because for 8-bit chars, ol_datatext is (unsigned char *) */
121 /* this used to be an fputs(), but since the string might contain NUL's,
122  * we now use fwrite()
123  */
124 #define ECHO (void) fwrite( (char *) ol_datatext, ol_dataleng, 1, ol_dataout )
125
126 /* gets input and stuffs it into "buf".  number of characters read, or ol_data_NULL,
127  * is returned in "result".
128  */
129 #define ol_data_INPUT(buf,result,max_size) \
130         if ( (result = read( fileno(ol_datain), (char *) buf, max_size )) < 0 ) \
131             ol_data_FATAL_ERROR( "read() in flex scanner failed" );
132 #define ol_data_NULL 0
133
134 /* no semi-colon after return; correct usage is to write "ol_dataterminate();" -
135  * we don't want an extra ';' after the "return" because that will cause
136  * some compilers to complain about unreachable statements.
137  */
138 #define ol_dataterminate() return ( ol_data_NULL )
139
140 /* report a fatal error */
141
142 /* The funky do-while is used to turn this macro definition into
143  * a single C statement (which needs a semi-colon terminator).
144  * This avoids problems with code like:
145  *
146  *      if ( something_happens )
147  *              ol_data_FATAL_ERROR( "oops, the something happened" );
148  *      else
149  *              everything_okay();
150  *
151  * Prior to using the do-while the compiler would get upset at the
152  * "else" because it interpreted the "if" statement as being all
153  * done when it reached the ';' after the ol_data_FATAL_ERROR() call.
154  */
155
156 #define ol_data_FATAL_ERROR(msg) \
157         do \
158                 { \
159                 (void) fputs( msg, stderr ); \
160                 (void) putc( '\n', stderr ); \
161                 exit( 1 ); \
162                 } \
163         while ( 0 )
164
165 /* default ol_datawrap function - always treat EOF as an EOF */
166 #define ol_datawrap() 1
167
168 /* enter a start condition.  This macro really ought to take a parameter,
169  * but we do it the disgusting crufty way forced on us by the ()-less
170  * definition of BEGIN
171  */
172 #define BEGIN ol_data_start = 1 + 2 *
173
174 /* action number for EOF rule of a given start state */
175 #define ol_data_STATE_EOF(state) (ol_data_END_OF_BUFFER + state + 1)
176
177 /* special action meaning "start processing a new file" */
178 #define ol_data_NEW_FILE \
179         do \
180                 { \
181                 ol_data_init_buffer( ol_data_current_buffer, ol_datain ); \
182                 ol_data_load_buffer_state(); \
183                 } \
184         while ( 0 )
185
186 /* default declaration of generated scanner - a define so the user can
187  * easily add parameters
188  */
189 #define ol_data_DECL int ol_datalex ol_data_PROTO(( void )) 
190
191 /* code executed at the end of each rule */
192 #define ol_data_BREAK break;
193
194 #define ol_data_END_OF_BUFFER_CHAR 0
195
196 #ifndef ol_data_BUF_SIZE
197 #define ol_data_BUF_SIZE (ol_data_READ_BUF_SIZE * 2) /* size of default input buffer */
198 #endif
199
200 typedef struct ol_data_buffer_state *ol_data_BUFFER_STATE;
201
202 #define ol_data_CHAR unsigned char
203 #define INITIAL 0
204 #include <iostream.h>
205 #include <stream.h>  
206 #include <stdio.h>
207 #include <memory.h>
208 #include <string.h>
209 #include <stdlib.h>
210 #include <assert.h>  
211
212 #include "Exceptions.hh"
213
214 #include "Task.h"  
215 #include "SGMLName.h"  
216 #include "ExprList.h"
217 #include "Expression.h"
218 #include "OL_DataExpr.tab.h"
219 #include "ContentType.h"
220   
221 /* CurrentContentPtr is used as the communication media between
222  * ol_dataparse and ContentType::Parse()
223  */
224
225 ContentType *CurrentContentPtr;
226   
227 /*
228  * Forward declaration for my_input
229  */
230 static int my_input ( char *, int );
231 extern       int ol_dataparse();
232
233   
234 #undef ol_data_INPUT
235 #define ol_data_INPUT(b, r, ms ) ( r=my_input( ( char *)b,ms) )
236   
237 static char *myinput;
238 static char *myinputptr;
239 static char *myinputlim;
240
241 // Debugging macro
242 #ifdef DEBUG
243 #define DBG(level) if ( dbgLevel >= level)
244 #else
245 #define DBG(level) if (0)
246 #endif
247
248 static int dbgLevel = -1;
249
250 static short int ol_data_nxt[][256] =
251     {
252         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
253         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
254         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
255         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
256         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
257         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
258         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
259         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
260         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
261         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
262
263         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
264         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
265         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
266         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
267         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
268         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
269         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
270         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
271         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
272         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
273
274         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
275         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
276         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
277         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
278         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
279         0,    0,    0,    0,    0,    0,
280
281         3,    4,    4,    4,    4,    4,    4,    4,    4,    5,
282         6,    4,    4,    4,    4,    4,    4,    4,    4,    4,
283         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
284         4,    4,    5,    4,    7,    8,    4,    4,    4,    9,
285        10,   10,    4,    4,   10,    4,    4,    4,    4,    4,
286         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
287         4,    4,    4,    4,   11,   12,    4,   13,    4,    4,
288        14,    4,    4,    4,    4,    4,    4,    4,    4,    4,
289         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
290         4,    4,    4,    4,    4,    4,    4,   12,    4,   13,
291
292         4,    4,   14,    4,    4,    4,    4,    4,    4,    4,
293         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
294         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
295         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
296         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
297         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
298         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
299         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
300         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
301         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
302
303         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
304         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
305         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
306         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
307         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
308         4,    4,    4,    4,    4,    4,
309
310         3,    4,    4,    4,    4,    4,    4,    4,    4,    5,
311         6,    4,    4,    4,    4,    4,    4,    4,    4,    4,
312         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
313         4,    4,    5,    4,    7,    8,    4,    4,    4,    9,
314        10,   10,    4,    4,   10,    4,    4,    4,    4,    4,
315         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
316         4,    4,    4,    4,   11,   12,    4,   13,    4,    4,
317        14,    4,    4,    4,    4,    4,    4,    4,    4,    4,
318         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
319         4,    4,    4,    4,    4,    4,    4,   12,    4,   13,
320
321         4,    4,   14,    4,    4,    4,    4,    4,    4,    4,
322         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
323         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
324         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
325         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
326         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
327         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
328         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
329         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
330         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
331
332         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
333         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
334         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
335         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
336         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
337         4,    4,    4,    4,    4,    4,
338
339        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
340        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
341        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
342        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
343        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
344        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
345        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
346        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
347        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
348        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
349
350        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
351        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
352        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
353        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
354        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
355        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
356        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
357        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
358        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
359        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
360
361        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
362        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
363        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
364        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
365        -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
366        -3,   -3,   -3,   -3,   -3,   -3,
367
368         3,   15,   15,   15,   15,   15,   15,   15,   15,   -4,
369        -4,   15,   15,   15,   15,   15,   15,   15,   15,   15,
370        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
371        15,   15,   -4,   15,   15,   15,   15,   15,   15,   15,
372        -4,   -4,   15,   15,   -4,   15,   15,   15,   15,   15,
373        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
374        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
375        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
376        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
377        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
378
379        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
380        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
381        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
382        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
383        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
384        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
385        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
386        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
387        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
388        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
389
390        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
391        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
392        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
393        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
394        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
395        15,   15,   15,   15,   15,   15,
396
397         3,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   16,
398        16,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
399        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
400        -5,   -5,   16,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
401        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
402        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
403        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
404        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
405        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
406        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
407
408        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
409        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
410        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
411        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
412        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
413        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
414        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
415        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
416        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
417        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
418
419        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
420        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
421        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
422        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
423        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
424        -5,   -5,   -5,   -5,   -5,   -5,
425
426         3,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   16,
427        16,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
428        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
429        -6,   -6,   16,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
430        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
431        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
432        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
433        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
434        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
435        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
436
437        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
438        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
439        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
440        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
441        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
442        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
443        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
444        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
445        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
446        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
447
448        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
449        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
450        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
451        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
452        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
453        -6,   -6,   -6,   -6,   -6,   -6,
454
455         3,   17,   17,   17,   17,   17,   17,   17,   17,   18,
456        18,   17,   17,   17,   17,   17,   17,   17,   17,   17,
457        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
458        17,   17,   18,   17,   19,   17,   17,   17,   17,   17,
459        18,   18,   17,   17,   18,   17,   17,   17,   17,   17,
460        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
461        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
462        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
463        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
464        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
465
466        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
467        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
468        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
469        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
470        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
471        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
472        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
473        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
474        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
475        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
476
477        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
478        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
479        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
480        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
481        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
482        17,   17,   17,   17,   17,   17,
483
484         3,   15,   15,   15,   15,   15,   15,   15,   15,   -8,
485        -8,   15,   15,   15,   15,   15,   15,   15,   15,   15,
486        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
487        15,   15,   -8,   15,   15,   15,   15,   15,   15,   15,
488        -8,   -8,   15,   15,   -8,   15,   15,   15,   15,   15,
489        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
490        15,   15,   15,   15,   15,   15,   15,   20,   15,   15,
491        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
492        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
493        15,   15,   15,   15,   15,   15,   15,   15,   15,   20,
494
495        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
496        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
497        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
498        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
499        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
500        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
501        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
502        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
503        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
504        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
505
506        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
507        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
508        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
509        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
510        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
511        15,   15,   15,   15,   15,   15,
512
513         3,   21,   21,   21,   21,   21,   21,   21,   21,   22,
514        22,   21,   21,   21,   21,   21,   21,   21,   21,   21,
515        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
516        21,   21,   22,   21,   21,   21,   21,   21,   21,   23,
517        22,   22,   21,   21,   22,   21,   21,   21,   21,   21,
518        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
519        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
520        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
521        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
522        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
523
524        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
525        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
526        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
527        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
528        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
529        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
530        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
531        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
532        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
533        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
534
535        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
536        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
537        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
538        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
539        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
540        21,   21,   21,   21,   21,   21,
541
542         3,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
543       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
544       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
545       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
546       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
547       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
548       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
549       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
550       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
551       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
552
553       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
554       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
555       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
556       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
557       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
558       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
559       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
560       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
561       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
562       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
563
564       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
565       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
566       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
567       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
568       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
569       -10,  -10,  -10,  -10,  -10,  -10,
570
571         3,   15,   15,   15,   15,   15,   15,   15,   15,  -11,
572       -11,   15,   15,   15,   15,   15,   15,   15,   15,   15,
573        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
574        15,   15,  -11,   15,   15,   15,   15,   15,   15,   15,
575       -11,  -11,   15,   15,  -11,   15,   15,   15,   24,   24,
576        24,   24,   24,   24,   24,   24,   24,   24,   15,   15,
577        15,   15,   15,   15,   15,   24,   24,   24,   24,   24,
578        24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
579        24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
580        24,   15,   15,   15,   15,   15,   15,   24,   24,   24,
581
582        24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
583        24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
584        24,   24,   24,   15,   15,   15,   15,   15,   15,   15,
585        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
586        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
587        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
588        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
589        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
590        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
591        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
592
593        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
594        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
595        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
596        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
597        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
598        15,   15,   15,   15,   15,   15,
599
600         3,   15,   15,   15,   15,   15,   15,   15,   15,  -12,
601       -12,   15,   15,   15,   15,   15,   15,   15,   15,   15,
602        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
603        15,   15,  -12,   15,   15,   15,   15,   15,   15,   15,
604       -12,  -12,   15,   15,  -12,   15,   15,   15,   15,   15,
605        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
606        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
607        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
608        15,   15,   15,   15,   25,   15,   15,   15,   15,   15,
609        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
610
611        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
612        15,   15,   15,   15,   15,   15,   25,   15,   15,   15,
613        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
614        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
615        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
616        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
617        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
618        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
619        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
620        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
621
622        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
623        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
624        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
625        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
626        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
627        15,   15,   15,   15,   15,   15,
628
629         3,   15,   15,   15,   15,   15,   15,   15,   15,  -13,
630       -13,   15,   15,   15,   15,   15,   15,   15,   15,   15,
631        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
632        15,   15,  -13,   15,   15,   15,   15,   15,   15,   15,
633       -13,  -13,   15,   15,  -13,   15,   15,   15,   15,   15,
634        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
635        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
636        15,   15,   15,   15,   15,   15,   15,   15,   15,   26,
637        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
638        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
639
640        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
641        15,   26,   15,   15,   15,   15,   15,   15,   15,   15,
642        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
643        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
644        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
645        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
646        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
647        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
648        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
649        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
650
651        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
652        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
653        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
654        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
655        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
656        15,   15,   15,   15,   15,   15,
657
658         3,   15,   15,   15,   15,   15,   15,   15,   15,  -14,
659       -14,   15,   15,   15,   15,   15,   15,   15,   15,   15,
660        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
661        15,   15,  -14,   15,   15,   15,   15,   15,   15,   15,
662       -14,  -14,   15,   15,  -14,   15,   15,   15,   15,   15,
663        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
664        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
665        15,   15,   15,   27,   15,   15,   15,   15,   15,   15,
666        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
667        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
668
669        15,   15,   15,   15,   15,   27,   15,   15,   15,   15,
670        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
671        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
672        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
673        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
674        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
675        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
676        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
677        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
678        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
679
680        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
681        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
682        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
683        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
684        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
685        15,   15,   15,   15,   15,   15,
686
687         3,   15,   15,   15,   15,   15,   15,   15,   15,  -15,
688       -15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
689        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
690        15,   15,  -15,   15,   15,   15,   15,   15,   15,   15,
691       -15,  -15,   15,   15,  -15,   15,   15,   15,   15,   15,
692        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
693        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
694        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
695        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
696        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
697
698        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
699        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
700        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
701        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
702        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
703        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
704        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
705        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
706        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
707        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
708
709        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
710        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
711        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
712        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
713        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
714        15,   15,   15,   15,   15,   15,
715
716         3,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,   16,
717        16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
718       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
719       -16,  -16,   16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
720       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
721       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
722       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
723       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
724       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
725       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
726
727       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
728       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
729       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
730       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
731       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
732       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
733       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
734       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
735       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
736       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
737
738       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
739       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
740       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
741       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
742       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
743       -16,  -16,  -16,  -16,  -16,  -16,
744
745         3,   17,   17,   17,   17,   17,   17,   17,   17,   18,
746        18,   17,   17,   17,   17,   17,   17,   17,   17,   17,
747        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
748        17,   17,   18,   17,   19,   17,   17,   17,   17,   17,
749        18,   18,   17,   17,   18,   17,   17,   17,   17,   17,
750        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
751        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
752        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
753        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
754        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
755
756        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
757        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
758        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
759        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
760        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
761        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
762        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
763        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
764        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
765        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
766
767        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
768        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
769        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
770        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
771        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
772        17,   17,   17,   17,   17,   17,
773
774         3,   18,   18,   18,   18,   18,   18,   18,   18,   18,
775        18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
776        18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
777        18,   18,   18,   18,   28,   18,   18,   18,   18,   18,
778        18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
779        18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
780        18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
781        18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
782        18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
783        18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
784
785        18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
786        18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
787        18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
788        18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
789        18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
790        18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
791        18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
792        18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
793        18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
794        18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
795
796        18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
797        18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
798        18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
799        18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
800        18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
801        18,   18,   18,   18,   18,   18,
802
803         3,   15,   15,   15,   15,   15,   15,   15,   15,  -19,
804       -19,   15,   15,   15,   15,   15,   15,   15,   15,   15,
805        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
806        15,   15,  -19,   15,   15,   15,   15,   15,   15,   15,
807       -19,  -19,   15,   15,  -19,   15,   15,   15,   15,   15,
808        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
809        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
810        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
811        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
812        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
813
814        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
815        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
816        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
817        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
818        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
819        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
820        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
821        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
822        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
823        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
824
825        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
826        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
827        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
828        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
829        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
830        15,   15,   15,   15,   15,   15,
831
832         3,   15,   15,   15,   15,   15,   15,   15,   15,  -20,
833       -20,   15,   15,   15,   15,   15,   15,   15,   15,   15,
834        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
835        15,   15,  -20,   15,   15,   15,   15,   15,   15,   15,
836       -20,  -20,   15,   15,  -20,   15,   15,   15,   15,   15,
837        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
838        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
839        15,   15,   15,   15,   15,   15,   15,   15,   15,   29,
840        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
841        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
842
843        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
844        15,   29,   15,   15,   15,   15,   15,   15,   15,   15,
845        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
846        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
847        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
848        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
849        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
850        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
851        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
852        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
853
854        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
855        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
856        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
857        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
858        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
859        15,   15,   15,   15,   15,   15,
860
861         3,   21,   21,   21,   21,   21,   21,   21,   21,   22,
862        22,   21,   21,   21,   21,   21,   21,   21,   21,   21,
863        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
864        21,   21,   22,   21,   21,   21,   21,   21,   21,   23,
865        22,   22,   21,   21,   22,   21,   21,   21,   21,   21,
866        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
867        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
868        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
869        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
870        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
871
872        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
873        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
874        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
875        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
876        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
877        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
878        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
879        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
880        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
881        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
882
883        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
884        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
885        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
886        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
887        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
888        21,   21,   21,   21,   21,   21,
889
890         3,   22,   22,   22,   22,   22,   22,   22,   22,   22,
891        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
892        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
893        22,   22,   22,   22,   22,   22,   22,   22,   22,   30,
894        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
895        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
896        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
897        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
898        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
899        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
900
901        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
902        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
903        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
904        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
905        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
906        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
907        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
908        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
909        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
910        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
911
912        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
913        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
914        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
915        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
916        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
917        22,   22,   22,   22,   22,   22,
918
919         3,   15,   15,   15,   15,   15,   15,   15,   15,  -23,
920       -23,   15,   15,   15,   15,   15,   15,   15,   15,   15,
921        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
922        15,   15,  -23,   15,   15,   15,   15,   15,   15,   15,
923       -23,  -23,   15,   15,  -23,   15,   15,   15,   15,   15,
924        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
925        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
926        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
927        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
928        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
929
930        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
931        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
932        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
933        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
934        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
935        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
936        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
937        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
938        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
939        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
940
941        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
942        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
943        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
944        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
945        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
946        15,   15,   15,   15,   15,   15,
947
948         3,   15,   15,   15,   15,   15,   15,   15,   15,  -24,
949       -24,   15,   15,   15,   15,   15,   15,   15,   15,   15,
950        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
951        15,   15,  -24,   15,   15,   15,   15,   15,   15,   15,
952       -24,  -24,   15,   15,  -24,   15,   15,   15,   24,   24,
953        24,   24,   24,   24,   24,   24,   24,   24,   15,   15,
954        15,   15,   15,   15,   15,   24,   24,   24,   24,   24,
955        24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
956        24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
957        24,   15,   15,   15,   15,   15,   15,   24,   24,   24,
958
959        24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
960        24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
961        24,   24,   24,   15,   15,   15,   15,   15,   15,   15,
962        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
963        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
964        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
965        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
966        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
967        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
968        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
969
970        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
971        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
972        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
973        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
974        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
975        15,   15,   15,   15,   15,   15,
976
977         3,   15,   15,   15,   15,   15,   15,   15,   15,  -25,
978       -25,   15,   15,   15,   15,   15,   15,   15,   15,   15,
979        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
980        15,   15,  -25,   15,   15,   15,   15,   15,   15,   15,
981       -25,  -25,   15,   15,  -25,   15,   15,   15,   15,   15,
982        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
983        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
984        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
985        15,   15,   15,   15,   31,   15,   15,   15,   15,   15,
986        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
987
988        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
989        15,   15,   15,   15,   15,   15,   31,   15,   15,   15,
990        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
991        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
992        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
993        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
994        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
995        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
996        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
997        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
998
999        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1000        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1001        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1002        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1003        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1004        15,   15,   15,   15,   15,   15,
1005
1006         3,   15,   15,   15,   15,   15,   15,   15,   15,  -26,
1007       -26,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1008        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1009        15,   15,  -26,   15,   15,   15,   15,   15,   15,   15,
1010       -26,  -26,   15,   15,  -26,   15,   15,   15,   15,   15,
1011        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1012        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1013        15,   15,   15,   15,   15,   15,   15,   15,   32,   15,
1014        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1015        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1016
1017        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1018        32,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1019        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1020        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1021        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1022        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1023        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1024        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1025        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1026        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1027
1028        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1029        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1030        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1031        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1032        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1033        15,   15,   15,   15,   15,   15,
1034
1035         3,   15,   15,   15,   15,   15,   15,   15,   15,  -27,
1036       -27,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1037        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1038        15,   15,  -27,   15,   15,   15,   15,   15,   15,   15,
1039       -27,  -27,   15,   15,  -27,   15,   15,   15,   15,   15,
1040        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1041        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1042        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1043        15,   15,   33,   15,   15,   15,   15,   15,   15,   15,
1044        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1045
1046        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1047        15,   15,   15,   15,   33,   15,   15,   15,   15,   15,
1048        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1049        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1050        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1051        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1052        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1053        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1054        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1055        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1056
1057        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1058        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1059        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1060        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1061        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1062        15,   15,   15,   15,   15,   15,
1063
1064         3,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1065       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1066       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1067       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1068       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1069       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1070       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1071       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1072       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1073       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1074
1075       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1076       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1077       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1078       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1079       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1080       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1081       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1082       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1083       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1084       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1085
1086       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1087       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1088       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1089       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1090       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
1091       -28,  -28,  -28,  -28,  -28,  -28,
1092
1093         3,   15,   15,   15,   15,   15,   15,   15,   15,  -29,
1094       -29,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1095        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1096        15,   15,  -29,   15,   15,   15,   15,   15,   15,   15,
1097       -29,  -29,   15,   15,  -29,   15,   15,   15,   15,   15,
1098        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1099        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1100        15,   15,   15,   15,   15,   15,   15,   15,   34,   15,
1101        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1102        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1103
1104        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1105        34,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1106        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1107        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1108        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1109        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1110        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1111        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1112        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1113        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1114
1115        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1116        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1117        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1118        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1119        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1120        15,   15,   15,   15,   15,   15,
1121
1122         3,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1123       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1124       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1125       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1126       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1127       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1128       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1129       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1130       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1131       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1132
1133       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1134       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1135       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1136       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1137       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1138       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1139       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1140       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1141       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1142       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1143
1144       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1145       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1146       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1147       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1148       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
1149       -30,  -30,  -30,  -30,  -30,  -30,
1150
1151         3,   15,   15,   15,   15,   15,   15,   15,   15,  -31,
1152       -31,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1153        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1154        15,   15,  -31,   15,   15,   15,   15,   15,   15,   15,
1155       -31,  -31,   15,   15,  -31,   15,   15,   15,   15,   15,
1156        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1157        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1158        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1159        15,   15,   35,   15,   15,   15,   15,   15,   15,   15,
1160        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1161
1162        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1163        15,   15,   15,   15,   35,   15,   15,   15,   15,   15,
1164        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1165        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1166        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1167        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1168        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1169        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1170        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1171        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1172
1173        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1174        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1175        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1176        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1177        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1178        15,   15,   15,   15,   15,   15,
1179
1180         3,   15,   15,   15,   15,   15,   15,   15,   15,  -32,
1181       -32,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1182        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1183        15,   15,  -32,   15,   15,   15,   15,   15,   15,   15,
1184       -32,  -32,   15,   15,  -32,   15,   15,   15,   15,   15,
1185        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1186        15,   15,   15,   15,   15,   15,   15,   36,   15,   15,
1187        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1188        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1189        15,   15,   15,   15,   15,   15,   15,   15,   15,   36,
1190
1191        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1192        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1193        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1194        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1195        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1196        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1197        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1198        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1199        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1200        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1201
1202        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1203        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1204        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1205        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1206        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1207        15,   15,   15,   15,   15,   15,
1208
1209         3,   15,   15,   15,   15,   15,   15,   15,   15,  -33,
1210       -33,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1211        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1212        15,   15,  -33,   15,   15,   15,   15,   15,   15,   15,
1213       -33,  -33,   15,   15,  -33,   15,   15,   15,   15,   15,
1214        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1215        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1216        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1217        15,   15,   15,   37,   15,   15,   15,   15,   15,   15,
1218        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1219
1220        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1221        15,   15,   15,   15,   15,   37,   15,   15,   15,   15,
1222        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1223        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1224        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1225        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1226        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1227        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1228        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1229        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1230
1231        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1232        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1233        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1234        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1235        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1236        15,   15,   15,   15,   15,   15,
1237
1238         3,   15,   15,   15,   15,   15,   15,   15,   15,  -34,
1239       -34,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1240        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1241        15,   15,  -34,   15,   15,   15,   15,   15,   15,   15,
1242       -34,  -34,   15,   15,  -34,   15,   15,   15,   15,   15,
1243        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1244        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1245        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1246        15,   15,   15,   15,   38,   15,   15,   15,   15,   15,
1247        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1248
1249        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1250        15,   15,   15,   15,   15,   15,   38,   15,   15,   15,
1251        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1252        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1253        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1254        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1255        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1256        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1257        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1258        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1259
1260        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1261        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1262        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1263        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1264        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1265        15,   15,   15,   15,   15,   15,
1266
1267         3,   15,   15,   15,   15,   15,   15,   15,   15,  -35,
1268       -35,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1269        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1270        15,   15,  -35,   15,   15,   15,   15,   15,   15,   15,
1271       -35,  -35,   15,   15,  -35,   15,   15,   15,   15,   15,
1272        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1273        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1274        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1275        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1276        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1277
1278        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1279        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1280        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1281        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1282        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1283        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1284        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1285        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1286        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1287        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1288
1289        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1290        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1291        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1292        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1293        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1294        15,   15,   15,   15,   15,   15,
1295
1296         3,   15,   15,   15,   15,   15,   15,   15,   15,  -36,
1297       -36,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1298        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1299        15,   15,  -36,   15,   15,   15,   15,   15,   15,   15,
1300       -36,  -36,   15,   15,  -36,   15,   15,   15,   15,   15,
1301        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1302        15,   15,   15,   15,   15,   39,   15,   15,   15,   15,
1303        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1304        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1305        15,   15,   15,   15,   15,   15,   15,   39,   15,   15,
1306
1307        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1308        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1309        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1310        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1311        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1312        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1313        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1314        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1315        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1316        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1317
1318        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1319        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1320        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1321        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1322        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1323        15,   15,   15,   15,   15,   15,
1324
1325         3,   15,   15,   15,   15,   15,   15,   15,   15,  -37,
1326       -37,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1327        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1328        15,   15,  -37,   15,   15,   15,   15,   15,   15,   15,
1329       -37,  -37,   15,   15,  -37,   15,   15,   15,   15,   15,
1330        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1331        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1332        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1333        15,   15,   15,   15,   40,   15,   15,   15,   15,   15,
1334        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1335
1336        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1337        15,   15,   15,   15,   15,   15,   40,   15,   15,   15,
1338        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1339        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1340        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1341        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1342        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1343        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1344        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1345        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1346
1347        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1348        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1349        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1350        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1351        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1352        15,   15,   15,   15,   15,   15,
1353
1354         3,   15,   15,   15,   15,   15,   15,   15,   15,  -38,
1355       -38,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1356        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1357        15,   15,  -38,   15,   15,   15,   15,   15,   15,   15,
1358       -38,  -38,   15,   15,  -38,   15,   15,   15,   15,   15,
1359        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1360        15,   15,   15,   15,   15,   15,   15,   15,   15,   41,
1361        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1362        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1363        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1364
1365        15,   41,   15,   15,   15,   15,   15,   15,   15,   15,
1366        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1367        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1368        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1369        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1370        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1371        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1372        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1373        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1374        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1375
1376        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1377        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1378        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1379        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1380        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1381        15,   15,   15,   15,   15,   15,
1382
1383         3,   15,   15,   15,   15,   15,   15,   15,   15,  -39,
1384       -39,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1385        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1386        15,   15,  -39,   15,   15,   15,   15,   15,   15,   15,
1387       -39,  -39,   15,   15,  -39,   15,   15,   15,   15,   15,
1388        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1389        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1390        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1391        15,   15,   15,   15,   42,   15,   15,   15,   15,   15,
1392        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1393
1394        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1395        15,   15,   15,   15,   15,   15,   42,   15,   15,   15,
1396        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1397        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1398        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1399        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1400        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1401        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1402        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1403        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1404
1405        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1406        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1407        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1408        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1409        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1410        15,   15,   15,   15,   15,   15,
1411
1412         3,   15,   15,   15,   15,   15,   15,   15,   15,  -40,
1413       -40,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1414        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1415        15,   15,  -40,   15,   15,   15,   15,   15,   15,   15,
1416       -40,  -40,   15,   15,  -40,   15,   15,   15,   15,   15,
1417        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1418        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1419        15,   15,   15,   15,   15,   15,   15,   15,   15,   43,
1420        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1421        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1422
1423        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1424        15,   43,   15,   15,   15,   15,   15,   15,   15,   15,
1425        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1426        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1427        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1428        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1429        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1430        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1431        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1432        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1433
1434        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1435        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1436        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1437        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1438        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1439        15,   15,   15,   15,   15,   15,
1440
1441         3,   15,   15,   15,   15,   15,   15,   15,   15,  -41,
1442       -41,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1443        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1444        15,   15,  -41,   15,   15,   15,   15,   15,   15,   15,
1445       -41,  -41,   15,   15,  -41,   15,   15,   15,   15,   15,
1446        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1447        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1448        15,   15,   15,   15,   15,   15,   15,   15,   44,   15,
1449        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1450        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1451
1452        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1453        44,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1454        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1455        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1456        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1457        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1458        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1459        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1460        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1461        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1462
1463        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1464        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1465        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1466        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1467        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1468        15,   15,   15,   15,   15,   15,
1469
1470         3,   15,   15,   15,   15,   15,   15,   15,   15,  -42,
1471       -42,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1472        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1473        15,   15,  -42,   15,   15,   15,   15,   15,   15,   15,
1474       -42,  -42,   15,   15,  -42,   15,   15,   15,   15,   15,
1475        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1476        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1477        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1478        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1479        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1480
1481        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1482        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1483        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1484        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1485        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1486        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1487        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1488        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1489        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1490        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1491
1492        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1493        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1494        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1495        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1496        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1497        15,   15,   15,   15,   15,   15,
1498
1499         3,   15,   15,   15,   15,   15,   15,   15,   15,  -43,
1500       -43,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1501        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1502        15,   15,  -43,   15,   15,   15,   15,   15,   15,   15,
1503       -43,  -43,   15,   15,  -43,   15,   15,   15,   15,   15,
1504        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1505        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1506        45,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1507        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1508        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1509
1510        15,   15,   45,   15,   15,   15,   15,   15,   15,   15,
1511        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1512        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1513        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1514        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1515        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1516        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1517        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1518        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1519        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1520
1521        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1522        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1523        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1524        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1525        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1526        15,   15,   15,   15,   15,   15,
1527
1528         3,   15,   15,   15,   15,   15,   15,   15,   15,  -44,
1529       -44,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1530        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1531        15,   15,  -44,   15,   15,   15,   15,   15,   15,   15,
1532       -44,  -44,   15,   15,  -44,   15,   15,   15,   15,   15,
1533        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1534        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1535        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1536        15,   15,   15,   15,   46,   15,   15,   15,   15,   15,
1537        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1538
1539        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1540        15,   15,   15,   15,   15,   15,   46,   15,   15,   15,
1541        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1542        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1543        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1544        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1545        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1546        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1547        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1548        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1549
1550        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1551        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1552        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1553        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1554        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1555        15,   15,   15,   15,   15,   15,
1556
1557         3,   15,   15,   15,   15,   15,   15,   15,   15,  -45,
1558       -45,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1559        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1560        15,   15,  -45,   15,   15,   15,   15,   15,   15,   15,
1561       -45,  -45,   15,   15,  -45,   15,   15,   15,   15,   15,
1562        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1563        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1564        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1565        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1566        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1567
1568        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1569        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1570        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1571        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1572        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1573        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1574        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1575        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1576        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1577        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1578
1579        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1580        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1581        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1582        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1583        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1584        15,   15,   15,   15,   15,   15,
1585
1586         3,   15,   15,   15,   15,   15,   15,   15,   15,  -46,
1587       -46,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1588        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1589        15,   15,  -46,   15,   15,   15,   15,   15,   15,   15,
1590       -46,  -46,   15,   15,  -46,   15,   15,   15,   15,   15,
1591        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1592        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1593        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1594        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1595        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1596
1597        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1598        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1599        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1600        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1601        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1602        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1603        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1604        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1605        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1606        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1607
1608        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1609        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1610        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1611        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1612        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1613        15,   15,   15,   15,   15,   15
1614
1615     } ;
1616
1617
1618 /* done after the current pattern has been matched and before the
1619  * corresponding action - sets up ol_datatext
1620  */
1621 #define ol_data_DO_BEFORE_ACTION \
1622         ol_datatext = ol_data_bp; \
1623         ol_dataleng = ol_data_cp - ol_data_bp; \
1624         ol_data_hold_char = *ol_data_cp; \
1625         *ol_data_cp = '\0'; \
1626         ol_data_c_buf_p = ol_data_cp;
1627
1628 #define EOB_ACT_CONTINUE_SCAN 0
1629 #define EOB_ACT_END_OF_FILE 1
1630 #define EOB_ACT_LAST_MATCH 2
1631
1632 /* return all but the first 'n' matched characters back to the input stream */
1633 #define ol_dataless(n) \
1634         do \
1635                 { \
1636                 /* undo effects of setting up ol_datatext */ \
1637                 *ol_data_cp = ol_data_hold_char; \
1638                 ol_data_c_buf_p = ol_data_cp = ol_data_bp + n; \
1639                 ol_data_DO_BEFORE_ACTION; /* set up ol_datatext again */ \
1640                 } \
1641         while ( 0 )
1642
1643 #define unput(c) ol_dataunput( c, ol_datatext )
1644
1645
1646 struct ol_data_buffer_state
1647     {
1648     FILE *ol_data_input_file;
1649
1650     ol_data_CHAR *ol_data_ch_buf;               /* input buffer */
1651     ol_data_CHAR *ol_data_buf_pos;      /* current position in input buffer */
1652
1653     /* size of input buffer in bytes, not including room for EOB characters*/
1654     int ol_data_buf_size;       
1655
1656     /* number of characters read into ol_data_ch_buf, not including EOB characters */
1657     int ol_data_n_chars;
1658
1659     int ol_data_eof_status;             /* whether we've seen an EOF on this buffer */
1660 #define EOF_NOT_SEEN 0
1661     /* "pending" happens when the EOF has been seen but there's still
1662      * some text process
1663      */
1664 #define EOF_PENDING 1
1665 #define EOF_DONE 2
1666     };
1667
1668 static ol_data_BUFFER_STATE ol_data_current_buffer;
1669
1670 /* we provide macros for accessing buffer states in case in the
1671  * future we want to put the buffer states in a more general
1672  * "scanner state"
1673  */
1674 #define ol_data_CURRENT_BUFFER ol_data_current_buffer
1675
1676
1677 /* ol_data_hold_char holds the character lost when ol_datatext is formed */
1678 static ol_data_CHAR ol_data_hold_char;
1679
1680 static int ol_data_n_chars;             /* number of characters read into ol_data_ch_buf */
1681
1682
1683
1684 #ifndef ol_data_USER_ACTION
1685 #define ol_data_USER_ACTION
1686 #endif
1687
1688 #ifndef ol_data_USER_INIT
1689 #define ol_data_USER_INIT
1690 #endif
1691
1692 extern ol_data_CHAR *ol_datatext;
1693 extern int ol_dataleng;
1694 extern FILE *ol_datain, *ol_dataout;
1695
1696 ol_data_CHAR *ol_datatext;
1697 int ol_dataleng;
1698
1699 FILE *ol_datain = (FILE *) 0, *ol_dataout = (FILE *) 0;
1700
1701 #define ol_data_END_OF_BUFFER 13
1702 typedef int ol_data_state_type;
1703 static const short int ol_data_accept[47] =
1704     {   0,
1705         0,    0,   13,    8,   10,   10,    8,    8,    8,    9,
1706         8,    8,    8,    8,    8,   10,    8,    0,    2,    8,
1707         8,    0,    3,    1,    8,    8,    8,    2,    8,    3,
1708         8,    8,    8,    8,    4,    8,    8,    8,    8,    8,
1709         8,    5,    8,    8,    6,    7
1710     } ;
1711
1712 static ol_data_state_type ol_data_last_accepting_state;
1713 static ol_data_CHAR *ol_data_last_accepting_cpos;
1714
1715 static const ol_data_state_type ol_data_NUL_trans[47] =
1716     {   0,
1717         4,    4,    0,   15,    0,    0,   17,   15,   21,    0,
1718        15,   15,   15,   15,   15,    0,   17,   18,   15,   15,
1719        21,   22,   15,   15,   15,   15,   15,    0,   15,    0,
1720        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1721        15,   15,   15,   15,   15,   15
1722     } ;
1723
1724 /* the intent behind this definition is that it'll catch
1725  * any uses of REJECT which flex missed
1726  */
1727 #define REJECT reject_used_but_not_detected
1728 #define ol_datamore() ol_datamore_used_but_not_detected
1729 #define ol_data_MORE_ADJ 0
1730
1731 /* these variables are all declared out here so that section 3 code can
1732  * manipulate them
1733  */
1734 /* points to current character in buffer */
1735 static ol_data_CHAR *ol_data_c_buf_p = (ol_data_CHAR *) 0;
1736 static int ol_data_init = 1;            /* whether we need to initialize */
1737 static int ol_data_start = 0;   /* start state number */
1738
1739 /* flag which is used to allow ol_datawrap()'s to do buffer switches
1740  * instead of setting up a fresh ol_datain.  A bit of a hack ...
1741  */
1742 static int ol_data_did_buffer_switch_on_eof;
1743
1744 static ol_data_state_type ol_data_get_previous_state ol_data_PROTO(( void ));
1745 static ol_data_state_type ol_data_try_NUL_trans ol_data_PROTO(( ol_data_state_type current_state ));
1746 static int ol_data_get_next_buffer ol_data_PROTO(( void ));
1747 static void ol_dataunput ol_data_PROTO(( ol_data_CHAR c, ol_data_CHAR *buf_ptr ));
1748 void ol_datarestart ol_data_PROTO(( FILE *input_file ));
1749 void ol_data_switch_to_buffer ol_data_PROTO(( ol_data_BUFFER_STATE new_buffer ));
1750 void ol_data_load_buffer_state ol_data_PROTO(( void ));
1751 ol_data_BUFFER_STATE ol_data_create_buffer ol_data_PROTO(( FILE *file, int size ));
1752 void ol_data_delete_buffer ol_data_PROTO(( ol_data_BUFFER_STATE b ));
1753 void ol_data_init_buffer ol_data_PROTO(( ol_data_BUFFER_STATE b, FILE *file ));
1754
1755 #define ol_data_new_buffer ol_data_create_buffer
1756
1757 #ifdef __cplusplus
1758 static int ol_datainput ol_data_PROTO(( void ));
1759 #else
1760 static int input ol_data_PROTO(( void ));
1761 #endif
1762
1763 ol_data_DECL
1764     {
1765     register ol_data_state_type ol_data_current_state;
1766     register ol_data_CHAR *ol_data_cp, *ol_data_bp;
1767     register int ol_data_act;
1768
1769
1770
1771
1772     if ( ol_data_init )
1773         {
1774         ol_data_USER_INIT;
1775
1776         if ( ! ol_data_start )
1777             ol_data_start = 1;  /* first start state */
1778
1779         if ( ! ol_datain )
1780             ol_datain = stdin;
1781
1782         if ( ! ol_dataout )
1783             ol_dataout = stdout;
1784
1785         if ( ol_data_current_buffer )
1786             ol_data_init_buffer( ol_data_current_buffer, ol_datain );
1787         else
1788             ol_data_current_buffer = ol_data_create_buffer( ol_datain, ol_data_BUF_SIZE );
1789
1790         ol_data_load_buffer_state();
1791
1792         ol_data_init = 0;
1793         }
1794
1795     while ( 1 )         /* loops until end-of-file is reached */
1796         {
1797         ol_data_cp = ol_data_c_buf_p;
1798
1799         /* support of ol_datatext */
1800         *ol_data_cp = ol_data_hold_char;
1801
1802         /* ol_data_bp points to the position in ol_data_ch_buf of the start of the
1803          * current run.
1804          */
1805         ol_data_bp = ol_data_cp;
1806
1807         ol_data_current_state = ol_data_start;
1808 ol_data_match:
1809         while ( (ol_data_current_state = ol_data_nxt[ol_data_current_state][*ol_data_cp]) > 0 )
1810             {
1811             if ( ol_data_accept[ol_data_current_state] )
1812                 {
1813                 ol_data_last_accepting_state = ol_data_current_state;
1814                 ol_data_last_accepting_cpos = ol_data_cp;
1815                 }
1816
1817             ++ol_data_cp;
1818             }
1819
1820         ol_data_current_state = -ol_data_current_state;
1821
1822 ol_data_find_action:
1823         ol_data_act = ol_data_accept[ol_data_current_state];
1824
1825         ol_data_DO_BEFORE_ACTION;
1826         ol_data_USER_ACTION;
1827
1828 do_action:      /* this label is used only to access EOF actions */
1829
1830
1831         switch ( ol_data_act )
1832             {
1833             case 0: /* must backtrack */
1834             /* undo the effects of ol_data_DO_BEFORE_ACTION */
1835             *ol_data_cp = ol_data_hold_char;
1836             ol_data_cp = ol_data_last_accepting_cpos + 1;
1837             ol_data_current_state = ol_data_last_accepting_state;
1838             goto ol_data_find_action;
1839
1840 case 1:
1841 {
1842                                   ol_datalval.name = SGMLName::intern((const char *)ol_datatext+1 ,1); 
1843                                   return( Reference );
1844                                 }
1845         ol_data_BREAK
1846 case 2:
1847 {
1848                                   if ( *(ol_datatext + 1) != '"' ) {
1849                                      // get rid of the 2 quotes 
1850                                      int len = strlen(( const char *)ol_datatext)-2;
1851                                      char *lit_str = new char [ len + 1 ];
1852                                      strncpy ( lit_str, 
1853                                                (const char *)ol_datatext + 1, 
1854                                                len );
1855
1856                                      *(lit_str + len) = '\0';
1857                                      ol_datalval.string = lit_str;
1858                                   }
1859                                   else {
1860                                      ol_datalval.string = 0;
1861                                   }
1862
1863                                   DBG(50) cerr << "(DEBUG) literal \"string\" = "
1864                                                << ol_datalval.string << endl;
1865
1866                                   return( Literal );
1867                                 }
1868         ol_data_BREAK
1869 case 3:
1870 {
1871                                   if ( *(ol_datatext + 1) != '\'' ) {
1872                                      // get rid of the 2 quotes 
1873                                      int len = strlen(( const char *)ol_datatext)-2;
1874                                      char *lit_str = new char [ len + 1 ];
1875                                      strncpy ( lit_str, 
1876                                                (const char *)ol_datatext + 1, 
1877                                                len );
1878
1879                                      *(lit_str + len) = '\0';
1880                                      ol_datalval.string = lit_str;
1881                                      
1882                                   }
1883                                   else {
1884                                      ol_datalval.string = 0;
1885                                   }
1886
1887                                   DBG(50) cerr << "(DEBUG) literal 'string' = "
1888                                                << ol_datalval.string << endl;
1889          
1890                                   return( Literal );
1891                                 }
1892         ol_data_BREAK
1893 case 4:
1894 { return( Attr );      }
1895         ol_data_BREAK
1896 case 5:
1897 { return( Concat );    }
1898         ol_data_BREAK
1899 case 6:
1900 { return( FirstOf);    }
1901         ol_data_BREAK
1902 case 7:
1903 { return( Content );   }
1904         ol_data_BREAK
1905 case 8:
1906 {
1907                                   ol_datalval.name = SGMLName::intern((const char *)ol_datatext,1);
1908                                   DBG(10) cerr << "(DEBUG) matches"
1909                                                << (char *)SGMLName::lookup(ol_datalval.name)
1910                                                << endl;
1911                                   return ( Id );
1912                                 }
1913         ol_data_BREAK
1914 case 9:
1915 {
1916                                   DBG(10) cerr << "(DEBUG) matches"
1917                                                << (char *)ol_datatext
1918                                                << endl;
1919                                   return ( ol_datatext[0] );
1920                                 }
1921         ol_data_BREAK
1922 case 10:
1923 ;
1924         ol_data_BREAK
1925 case 11:
1926 {
1927                                   throw(Unexpected(
1928                                                    "Syntax error in value expression"));
1929
1930                                 }
1931         ol_data_BREAK
1932 case 12:
1933 ol_data_FATAL_ERROR( "flex scanner jammed" );
1934         ol_data_BREAK
1935 case ol_data_STATE_EOF(INITIAL):
1936     ol_dataterminate();
1937
1938             case ol_data_END_OF_BUFFER:
1939                 {
1940                 /* amount of text matched not including the EOB char */
1941                 int ol_data_amount_of_matched_text = ol_data_cp - ol_datatext - 1;
1942
1943                 /* undo the effects of ol_data_DO_BEFORE_ACTION */
1944                 *ol_data_cp = ol_data_hold_char;
1945
1946                 /* note that here we test for ol_data_c_buf_p "<=" to the position
1947                  * of the first EOB in the buffer, since ol_data_c_buf_p will
1948                  * already have been incremented past the NUL character
1949                  * (since all states make transitions on EOB to the end-
1950                  * of-buffer state).  Contrast this with the test in ol_datainput().
1951                  */
1952                 if ( ol_data_c_buf_p <= &ol_data_current_buffer->ol_data_ch_buf[ol_data_n_chars] )
1953                     /* this was really a NUL */
1954                     {
1955                     ol_data_state_type ol_data_next_state;
1956
1957                     ol_data_c_buf_p = ol_datatext + ol_data_amount_of_matched_text;
1958
1959                     ol_data_current_state = ol_data_get_previous_state();
1960
1961                     /* okay, we're now positioned to make the
1962                      * NUL transition.  We couldn't have
1963                      * ol_data_get_previous_state() go ahead and do it
1964                      * for us because it doesn't know how to deal
1965                      * with the possibility of jamming (and we
1966                      * don't want to build jamming into it because
1967                      * then it will run more slowly)
1968                      */
1969
1970                     ol_data_next_state = ol_data_try_NUL_trans( ol_data_current_state );
1971
1972                     ol_data_bp = ol_datatext + ol_data_MORE_ADJ;
1973
1974                     if ( ol_data_next_state )
1975                         {
1976                         /* consume the NUL */
1977                         ol_data_cp = ++ol_data_c_buf_p;
1978                         ol_data_current_state = ol_data_next_state;
1979                         goto ol_data_match;
1980                         }
1981
1982                     else
1983                         {
1984                             ol_data_cp = ol_data_c_buf_p;
1985                         goto ol_data_find_action;
1986                         }
1987                     }
1988
1989                 else switch ( ol_data_get_next_buffer() )
1990                     {
1991                     case EOB_ACT_END_OF_FILE:
1992                         {
1993                         ol_data_did_buffer_switch_on_eof = 0;
1994
1995                         if ( ol_datawrap() )
1996                             {
1997                             /* note: because we've taken care in
1998                              * ol_data_get_next_buffer() to have set up ol_datatext,
1999                              * we can now set up ol_data_c_buf_p so that if some
2000                              * total hoser (like flex itself) wants
2001                              * to call the scanner after we return the
2002                              * ol_data_NULL, it'll still work - another ol_data_NULL
2003                              * will get returned.
2004                              */
2005                             ol_data_c_buf_p = ol_datatext + ol_data_MORE_ADJ;
2006
2007                             ol_data_act = ol_data_STATE_EOF((ol_data_start - 1) / 2);
2008                             goto do_action;
2009                             }
2010
2011                         else
2012                             {
2013                             if ( ! ol_data_did_buffer_switch_on_eof )
2014                                 ol_data_NEW_FILE;
2015                             }
2016                         }
2017                         break;
2018
2019                     case EOB_ACT_CONTINUE_SCAN:
2020                         ol_data_c_buf_p = ol_datatext + ol_data_amount_of_matched_text;
2021
2022                         ol_data_current_state = ol_data_get_previous_state();
2023
2024                         ol_data_cp = ol_data_c_buf_p;
2025                         ol_data_bp = ol_datatext + ol_data_MORE_ADJ;
2026                         goto ol_data_match;
2027
2028                     case EOB_ACT_LAST_MATCH:
2029                         ol_data_c_buf_p =
2030                             &ol_data_current_buffer->ol_data_ch_buf[ol_data_n_chars];
2031
2032                         ol_data_current_state = ol_data_get_previous_state();
2033
2034                         ol_data_cp = ol_data_c_buf_p;
2035                         ol_data_bp = ol_datatext + ol_data_MORE_ADJ;
2036                         goto ol_data_find_action;
2037                     }
2038                 break;
2039                 }
2040
2041             default:
2042 #ifdef FLEX_DEBUG
2043                 printf( "action # %d\n", ol_data_act );
2044 #endif
2045                 ol_data_FATAL_ERROR(
2046                         "fatal flex scanner internal error--no action found" );
2047             }
2048         }
2049     }
2050
2051
2052 /* ol_data_get_next_buffer - try to read in a new buffer
2053  *
2054  * synopsis
2055  *     int ol_data_get_next_buffer();
2056  *     
2057  * returns a code representing an action
2058  *     EOB_ACT_LAST_MATCH - 
2059  *     EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2060  *     EOB_ACT_END_OF_FILE - end of file
2061  */
2062
2063 static int ol_data_get_next_buffer()
2064
2065     {
2066     register ol_data_CHAR *dest = ol_data_current_buffer->ol_data_ch_buf;
2067     register ol_data_CHAR *source = ol_datatext - 1; /* copy prev. char, too */
2068     register int number_to_move, i;
2069     int ret_val;
2070
2071     if ( ol_data_c_buf_p > &ol_data_current_buffer->ol_data_ch_buf[ol_data_n_chars + 1] )
2072         ol_data_FATAL_ERROR(
2073                 "fatal flex scanner internal error--end of buffer missed" );
2074
2075     /* try to read more data */
2076
2077     /* first move last chars to start of buffer */
2078     number_to_move = ol_data_c_buf_p - ol_datatext;
2079
2080     for ( i = 0; i < number_to_move; ++i )
2081         *(dest++) = *(source++);
2082
2083     if ( ol_data_current_buffer->ol_data_eof_status != EOF_NOT_SEEN )
2084         /* don't do the read, it's not guaranteed to return an EOF,
2085          * just force an EOF
2086          */
2087         ol_data_n_chars = 0;
2088
2089     else
2090         {
2091         int num_to_read = ol_data_current_buffer->ol_data_buf_size - number_to_move - 1;
2092
2093         if ( num_to_read > ol_data_READ_BUF_SIZE )
2094             num_to_read = ol_data_READ_BUF_SIZE;
2095
2096         else if ( num_to_read <= 0 )
2097             ol_data_FATAL_ERROR( "fatal error - scanner input buffer overflow" );
2098
2099         /* read in more data */
2100         ol_data_INPUT( (&ol_data_current_buffer->ol_data_ch_buf[number_to_move]),
2101                   ol_data_n_chars, num_to_read );
2102         }
2103
2104     if ( ol_data_n_chars == 0 )
2105         {
2106         if ( number_to_move == 1 )
2107             {
2108             ret_val = EOB_ACT_END_OF_FILE;
2109             ol_data_current_buffer->ol_data_eof_status = EOF_DONE;
2110             }
2111
2112         else
2113             {
2114             ret_val = EOB_ACT_LAST_MATCH;
2115             ol_data_current_buffer->ol_data_eof_status = EOF_PENDING;
2116             }
2117         }
2118
2119     else
2120         ret_val = EOB_ACT_CONTINUE_SCAN;
2121
2122     ol_data_n_chars += number_to_move;
2123     ol_data_current_buffer->ol_data_ch_buf[ol_data_n_chars] = ol_data_END_OF_BUFFER_CHAR;
2124     ol_data_current_buffer->ol_data_ch_buf[ol_data_n_chars + 1] = ol_data_END_OF_BUFFER_CHAR;
2125
2126     /* ol_datatext begins at the second character in ol_data_ch_buf; the first
2127      * character is the one which preceded it before reading in the latest
2128      * buffer; it needs to be kept around in case it's a newline, so
2129      * ol_data_get_previous_state() will have with '^' rules active
2130      */
2131
2132     ol_datatext = &ol_data_current_buffer->ol_data_ch_buf[1];
2133
2134     return ( ret_val );
2135     }
2136
2137
2138 /* ol_data_get_previous_state - get the state just before the EOB char was reached
2139  *
2140  * synopsis
2141  *     ol_data_state_type ol_data_get_previous_state();
2142  */
2143
2144 static ol_data_state_type ol_data_get_previous_state()
2145
2146     {
2147     register ol_data_state_type ol_data_current_state;
2148     register ol_data_CHAR *ol_data_cp;
2149
2150     ol_data_current_state = ol_data_start;
2151
2152     for ( ol_data_cp = ol_datatext + ol_data_MORE_ADJ; ol_data_cp < ol_data_c_buf_p; ++ol_data_cp )
2153         {
2154         if ( *ol_data_cp )
2155             {
2156             ol_data_current_state = ol_data_nxt[ol_data_current_state][*ol_data_cp];
2157             }
2158         else
2159             ol_data_current_state = ol_data_NUL_trans[ol_data_current_state];
2160         if ( ol_data_accept[ol_data_current_state] )
2161             {
2162             ol_data_last_accepting_state = ol_data_current_state;
2163             ol_data_last_accepting_cpos = ol_data_cp;
2164             }
2165         }
2166
2167     return ( ol_data_current_state );
2168     }
2169
2170
2171 /* ol_data_try_NUL_trans - try to make a transition on the NUL character
2172  *
2173  * synopsis
2174  *     next_state = ol_data_try_NUL_trans( current_state );
2175  */
2176
2177 #ifdef ol_data_USE_PROTOS
2178 static ol_data_state_type ol_data_try_NUL_trans( register ol_data_state_type ol_data_current_state )
2179 #else
2180 static ol_data_state_type ol_data_try_NUL_trans( ol_data_current_state )
2181 register ol_data_state_type ol_data_current_state;
2182 #endif
2183
2184     {
2185     register int ol_data_is_jam;
2186     register ol_data_CHAR *ol_data_cp = ol_data_c_buf_p;
2187
2188     ol_data_current_state = ol_data_NUL_trans[ol_data_current_state];
2189     ol_data_is_jam = (ol_data_current_state == 0);
2190
2191     if ( ! ol_data_is_jam )
2192         {
2193         if ( ol_data_accept[ol_data_current_state] )
2194             {
2195             ol_data_last_accepting_state = ol_data_current_state;
2196             ol_data_last_accepting_cpos = ol_data_cp;
2197             }
2198         }
2199
2200     return ( ol_data_is_jam ? 0 : ol_data_current_state );
2201     }
2202
2203
2204 #ifdef ol_data_USE_PROTOS
2205 static void ol_dataunput( ol_data_CHAR c, register ol_data_CHAR *ol_data_bp )
2206 #else
2207 static void ol_dataunput( c, ol_data_bp )
2208 ol_data_CHAR c;
2209 register ol_data_CHAR *ol_data_bp;
2210 #endif
2211
2212     {
2213     register ol_data_CHAR *ol_data_cp = ol_data_c_buf_p;
2214
2215     /* undo effects of setting up ol_datatext */
2216     *ol_data_cp = ol_data_hold_char;
2217
2218     if ( ol_data_cp < ol_data_current_buffer->ol_data_ch_buf + 2 )
2219         { /* need to shift things up to make room */
2220         register int number_to_move = ol_data_n_chars + 2; /* +2 for EOB chars */
2221         register ol_data_CHAR *dest =
2222             &ol_data_current_buffer->ol_data_ch_buf[ol_data_current_buffer->ol_data_buf_size + 2];
2223         register ol_data_CHAR *source =
2224             &ol_data_current_buffer->ol_data_ch_buf[number_to_move];
2225
2226         while ( source > ol_data_current_buffer->ol_data_ch_buf )
2227             *--dest = *--source;
2228
2229         ol_data_cp += dest - source;
2230         ol_data_bp += dest - source;
2231         ol_data_n_chars = ol_data_current_buffer->ol_data_buf_size;
2232
2233         if ( ol_data_cp < ol_data_current_buffer->ol_data_ch_buf + 2 )
2234             ol_data_FATAL_ERROR( "flex scanner push-back overflow" );
2235         }
2236
2237     if ( ol_data_cp > ol_data_bp && ol_data_cp[-1] == '\n' )
2238         ol_data_cp[-2] = '\n';
2239
2240     *--ol_data_cp = c;
2241
2242     /* note: the formal parameter *must* be called "ol_data_bp" for this
2243      *       macro to now work correctly
2244      */
2245     ol_data_DO_BEFORE_ACTION; /* set up ol_datatext again */
2246     }
2247
2248
2249 #ifdef __cplusplus
2250 static int ol_datainput()
2251 #else
2252 static int input()
2253 #endif
2254
2255     {
2256     int c;
2257     ol_data_CHAR *ol_data_cp = ol_data_c_buf_p;
2258
2259     *ol_data_cp = ol_data_hold_char;
2260
2261     if ( *ol_data_c_buf_p == ol_data_END_OF_BUFFER_CHAR )
2262         {
2263         /* ol_data_c_buf_p now points to the character we want to return.
2264          * If this occurs *before* the EOB characters, then it's a
2265          * valid NUL; if not, then we've hit the end of the buffer.
2266          */
2267         if ( ol_data_c_buf_p < &ol_data_current_buffer->ol_data_ch_buf[ol_data_n_chars] )
2268             /* this was really a NUL */
2269             *ol_data_c_buf_p = '\0';
2270
2271         else
2272             { /* need more input */
2273             ol_datatext = ol_data_c_buf_p;
2274             ++ol_data_c_buf_p;
2275
2276             switch ( ol_data_get_next_buffer() )
2277                 {
2278                 case EOB_ACT_END_OF_FILE:
2279                     {
2280                     if ( ol_datawrap() )
2281                         {
2282                         ol_data_c_buf_p = ol_datatext + ol_data_MORE_ADJ;
2283                         return ( EOF );
2284                         }
2285
2286                     ol_data_NEW_FILE;
2287
2288 #ifdef __cplusplus
2289                     return ( ol_datainput() );
2290 #else
2291                     return ( input() );
2292 #endif
2293                     }
2294                     break;
2295
2296                 case EOB_ACT_CONTINUE_SCAN:
2297                     ol_data_c_buf_p = ol_datatext + ol_data_MORE_ADJ;
2298                     break;
2299
2300                 case EOB_ACT_LAST_MATCH:
2301 #ifdef __cplusplus
2302                     ol_data_FATAL_ERROR( "unexpected last match in ol_datainput()" );
2303 #else
2304                     ol_data_FATAL_ERROR( "unexpected last match in input()" );
2305 #endif
2306                 }
2307             }
2308         }
2309
2310     c = *ol_data_c_buf_p;
2311     ol_data_hold_char = *++ol_data_c_buf_p;
2312
2313     return ( c );
2314     }
2315
2316
2317 #ifdef ol_data_USE_PROTOS
2318 void ol_datarestart( FILE *input_file )
2319 #else
2320 void ol_datarestart( input_file )
2321 FILE *input_file;
2322 #endif
2323
2324     {
2325     ol_data_init_buffer( ol_data_current_buffer, input_file );
2326     ol_data_load_buffer_state();
2327     }
2328
2329
2330 #ifdef ol_data_USE_PROTOS
2331 void ol_data_switch_to_buffer( ol_data_BUFFER_STATE new_buffer )
2332 #else
2333 void ol_data_switch_to_buffer( new_buffer )
2334 ol_data_BUFFER_STATE new_buffer;
2335 #endif
2336
2337     {
2338     if ( ol_data_current_buffer == new_buffer )
2339         return;
2340
2341     if ( ol_data_current_buffer )
2342         {
2343         /* flush out information for old buffer */
2344         *ol_data_c_buf_p = ol_data_hold_char;
2345         ol_data_current_buffer->ol_data_buf_pos = ol_data_c_buf_p;
2346         ol_data_current_buffer->ol_data_n_chars = ol_data_n_chars;
2347         }
2348
2349     ol_data_current_buffer = new_buffer;
2350     ol_data_load_buffer_state();
2351
2352     /* we don't actually know whether we did this switch during
2353      * EOF (ol_datawrap()) processing, but the only time this flag
2354      * is looked at is after ol_datawrap() is called, so it's safe
2355      * to go ahead and always set it.
2356      */
2357     ol_data_did_buffer_switch_on_eof = 1;
2358     }
2359
2360
2361 #ifdef ol_data_USE_PROTOS
2362 void ol_data_load_buffer_state( void )
2363 #else
2364 void ol_data_load_buffer_state()
2365 #endif
2366
2367     {
2368     ol_data_n_chars = ol_data_current_buffer->ol_data_n_chars;
2369     ol_datatext = ol_data_c_buf_p = ol_data_current_buffer->ol_data_buf_pos;
2370     ol_datain = ol_data_current_buffer->ol_data_input_file;
2371     ol_data_hold_char = *ol_data_c_buf_p;
2372     }
2373
2374
2375 #ifdef ol_data_USE_PROTOS
2376 ol_data_BUFFER_STATE ol_data_create_buffer( FILE *file, int size )
2377 #else
2378 ol_data_BUFFER_STATE ol_data_create_buffer( file, size )
2379 FILE *file;
2380 int size;
2381 #endif
2382
2383     {
2384     ol_data_BUFFER_STATE b;
2385
2386     b = (ol_data_BUFFER_STATE) malloc( sizeof( struct ol_data_buffer_state ) );
2387
2388     if ( ! b )
2389         ol_data_FATAL_ERROR( "out of dynamic memory in ol_data_create_buffer()" );
2390
2391     b->ol_data_buf_size = size;
2392
2393     /* ol_data_ch_buf has to be 2 characters longer than the size given because
2394      * we need to put in 2 end-of-buffer characters.
2395      */
2396     b->ol_data_ch_buf = (ol_data_CHAR *) malloc( (unsigned) (b->ol_data_buf_size + 2) );
2397
2398     if ( ! b->ol_data_ch_buf )
2399         ol_data_FATAL_ERROR( "out of dynamic memory in ol_data_create_buffer()" );
2400
2401     ol_data_init_buffer( b, file );
2402
2403     return ( b );
2404     }
2405
2406
2407 #ifdef ol_data_USE_PROTOS
2408 void ol_data_delete_buffer( ol_data_BUFFER_STATE b )
2409 #else
2410 void ol_data_delete_buffer( b )
2411 ol_data_BUFFER_STATE b;
2412 #endif
2413
2414     {
2415     if ( b == ol_data_current_buffer )
2416         ol_data_current_buffer = (ol_data_BUFFER_STATE) 0;
2417
2418     free( (char *) b->ol_data_ch_buf );
2419     free( (char *) b );
2420     }
2421
2422
2423 #ifdef ol_data_USE_PROTOS
2424 void ol_data_init_buffer( ol_data_BUFFER_STATE b, FILE *file )
2425 #else
2426 void ol_data_init_buffer( b, file )
2427 ol_data_BUFFER_STATE b;
2428 FILE *file;
2429 #endif
2430
2431     {
2432     b->ol_data_input_file = file;
2433
2434     /* we put in the '\n' and start reading from [1] so that an
2435      * initial match-at-newline will be true.
2436      */
2437
2438     b->ol_data_ch_buf[0] = '\n';
2439     b->ol_data_n_chars = 1;
2440
2441     /* we always need two end-of-buffer characters.  The first causes
2442      * a transition to the end-of-buffer state.  The second causes
2443      * a jam in that state.
2444      */
2445     b->ol_data_ch_buf[1] = ol_data_END_OF_BUFFER_CHAR;
2446     b->ol_data_ch_buf[2] = ol_data_END_OF_BUFFER_CHAR;
2447
2448     b->ol_data_buf_pos = &b->ol_data_ch_buf[1];
2449
2450     b->ol_data_eof_status = EOF_NOT_SEEN;
2451     }
2452
2453
2454 static int
2455 my_input ( char *buf, int max_size )
2456 {
2457
2458   int remain = myinputlim - myinputptr;
2459   int n = ( max_size > remain ? remain : max_size );
2460
2461   if ( n > 0 ) {
2462     memcpy ( buf, myinputptr, n );
2463     myinputptr += n;
2464   }
2465   return n;
2466 }
2467
2468 //--------------------------------------------------------------
2469 void
2470 ol_dataerror(char *str)
2471 {
2472   throw(Unexpected(form("Syntax error in %s", myinput)));
2473 }
2474
2475 //--------------------------------------------------------------
2476 ContentType::ContentType()
2477 {
2478   char *dbgStr;
2479   dbgStr = getenv ("OL_DEBUG");
2480   dbgLevel = ( dbgStr ? atoi ( dbgStr ) : 0 );
2481   exprlist  = 0;
2482 }
2483
2484 //--------------------------------------------------------------
2485 ContentType::~ContentType()
2486 {
2487
2488    OL_Expression *eptr = exprlist;
2489    while ( eptr ) {
2490       OL_Expression *tmp = eptr;
2491       eptr = eptr->next;
2492       delete tmp;
2493    }
2494 }
2495
2496 //--------------------------------------------------------------
2497 void
2498 ContentType::Parse( char *str )
2499 {
2500
2501   DBG(10) cerr << "(DEBUG) ContentType::Parse() str = " << str << endl;
2502
2503   myinput = str;
2504   myinputptr = str;
2505   myinputlim = str + strlen(str);
2506
2507   CurrentContentPtr = this;
2508   
2509   ol_dataparse();
2510   
2511   BEGIN INITIAL;
2512   ol_datarestart(NULL);
2513 }
2514
2515 //--------------------------------------------------------------
2516 void
2517 ContentType::init( OL_Expression *expr )
2518 {
2519   assert(expr != NULL);
2520   if ( expr->next ) {
2521     
2522     /*
2523      * The same as CONCAT
2524      */
2525     ExprList *elist = new ExprList( expr );
2526     OL_Expression *new_expr = new OL_Expression ( CONCAT, -1, elist );
2527     assert(new_expr != NULL);
2528
2529     exprlist = new_expr;
2530   }
2531   else {
2532     exprlist = expr;
2533   }
2534 }
2535