1#line 2 "psqlscan.c"
2/*-------------------------------------------------------------------------
3 *
4 * psqlscan.l
5 * lexical scanner for SQL commands
6 *
7 * This lexer used to be part of psql, and that heritage is reflected in
8 * the file name as well as function and typedef names, though it can now
9 * be used by other frontend programs as well. It's also possible to extend
10 * this lexer with a compatible add-on lexer to handle program-specific
11 * backslash commands.
12 *
13 * This code is mainly concerned with determining where the end of a SQL
14 * statement is: we are looking for semicolons that are not within quotes,
15 * comments, or parentheses. The most reliable way to handle this is to
16 * borrow the backend's flex lexer rules, lock, stock, and barrel. The rules
17 * below are (except for a few) the same as the backend's, but their actions
18 * are just ECHO whereas the backend's actions generally do other things.
19 *
20 * XXX The rules in this file must be kept in sync with the backend lexer!!!
21 *
22 * XXX Avoid creating backtracking cases --- see the backend lexer for info.
23 *
24 * See psqlscan_int.h for additional commentary.
25 *
26 *
27 * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
28 * Portions Copyright (c) 1994, Regents of the University of California
29 *
30 * IDENTIFICATION
31 * src/fe_utils/psqlscan.l
32 *
33 *-------------------------------------------------------------------------
34 */
35#include "postgres_fe.h"
36
37#include "common/logging.h"
38#include "fe_utils/psqlscan.h"
39
40#include "libpq-fe.h"
41
42#line 43 "psqlscan.c"
43
44#define YY_INT_ALIGNED short int
45
46/* A lexical scanner generated by flex */
47
48#define FLEX_SCANNER
49#define YY_FLEX_MAJOR_VERSION 2
50#define YY_FLEX_MINOR_VERSION 6
51#define YY_FLEX_SUBMINOR_VERSION 1
52#if YY_FLEX_SUBMINOR_VERSION > 0
53#define FLEX_BETA
54#endif
55
56/* First, we deal with platform-specific or compiler-specific issues. */
57
58/* begin standard C headers. */
59#include <stdio.h>
60#include <string.h>
61#include <errno.h>
62#include <stdlib.h>
63
64/* end standard C headers. */
65
66/* flex integer type definitions */
67
68#ifndef FLEXINT_H
69#define FLEXINT_H
70
71/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
72
73#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
74
75/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
76 * if you want the limit (max/min) macros for int types.
77 */
78#ifndef __STDC_LIMIT_MACROS
79#define __STDC_LIMIT_MACROS 1
80#endif
81
82#include <inttypes.h>
83typedef int8_t flex_int8_t;
84typedef uint8_t flex_uint8_t;
85typedef int16_t flex_int16_t;
86typedef uint16_t flex_uint16_t;
87typedef int32_t flex_int32_t;
88typedef uint32_t flex_uint32_t;
89#else
90typedef signed char flex_int8_t;
91typedef short int flex_int16_t;
92typedef int flex_int32_t;
93typedef unsigned char flex_uint8_t;
94typedef unsigned short int flex_uint16_t;
95typedef unsigned int flex_uint32_t;
96
97/* Limits of integral types. */
98#ifndef INT8_MIN
99#define INT8_MIN (-128)
100#endif
101#ifndef INT16_MIN
102#define INT16_MIN (-32767-1)
103#endif
104#ifndef INT32_MIN
105#define INT32_MIN (-2147483647-1)
106#endif
107#ifndef INT8_MAX
108#define INT8_MAX (127)
109#endif
110#ifndef INT16_MAX
111#define INT16_MAX (32767)
112#endif
113#ifndef INT32_MAX
114#define INT32_MAX (2147483647)
115#endif
116#ifndef UINT8_MAX
117#define UINT8_MAX (255U)
118#endif
119#ifndef UINT16_MAX
120#define UINT16_MAX (65535U)
121#endif
122#ifndef UINT32_MAX
123#define UINT32_MAX (4294967295U)
124#endif
125
126#endif /* ! C99 */
127
128#endif /* ! FLEXINT_H */
129
130/* TODO: this is always defined, so inline it */
131#define yyconst const
132
133#if defined(__GNUC__) && __GNUC__ >= 3
134#define yynoreturn __attribute__((__noreturn__))
135#else
136#define yynoreturn
137#endif
138
139/* Returned upon end-of-file. */
140#define YY_NULL 0
141
142/* Promotes a possibly negative, possibly signed char to an unsigned
143 * integer for use as an array index. If the signed char is negative,
144 * we want to instead treat it as an 8-bit unsigned char, hence the
145 * double cast.
146 */
147#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
148
149/* An opaque pointer. */
150#ifndef YY_TYPEDEF_YY_SCANNER_T
151#define YY_TYPEDEF_YY_SCANNER_T
152typedef void* yyscan_t;
153#endif
154
155/* For convenience, these vars (plus the bison vars far below)
156 are macros in the reentrant scanner. */
157#define yyin yyg->yyin_r
158#define yyout yyg->yyout_r
159#define yyextra yyg->yyextra_r
160#define yyleng yyg->yyleng_r
161#define yytext yyg->yytext_r
162#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
163#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
164#define yy_flex_debug yyg->yy_flex_debug_r
165
166/* Enter a start condition. This macro really ought to take a parameter,
167 * but we do it the disgusting crufty way forced on us by the ()-less
168 * definition of BEGIN.
169 */
170#define BEGIN yyg->yy_start = 1 + 2 *
171
172/* Translate the current start state into a value that can be later handed
173 * to BEGIN to return to the state. The YYSTATE alias is for lex
174 * compatibility.
175 */
176#define YY_START ((yyg->yy_start - 1) / 2)
177#define YYSTATE YY_START
178
179/* Action number for EOF rule of a given start state. */
180#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
181
182/* Special action meaning "start processing a new file". */
183#define YY_NEW_FILE psql_yyrestart(yyin ,yyscanner )
184
185#define YY_END_OF_BUFFER_CHAR 0
186
187/* Size of default input buffer. */
188#ifndef YY_BUF_SIZE
189#ifdef __ia64__
190/* On IA-64, the buffer size is 16k, not 8k.
191 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
192 * Ditto for the __ia64__ case accordingly.
193 */
194#define YY_BUF_SIZE 32768
195#else
196#define YY_BUF_SIZE 16384
197#endif /* __ia64__ */
198#endif
199
200/* The state buf must be large enough to hold one state per character in the main buffer.
201 */
202#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
203
204#ifndef YY_TYPEDEF_YY_BUFFER_STATE
205#define YY_TYPEDEF_YY_BUFFER_STATE
206typedef struct yy_buffer_state *YY_BUFFER_STATE;
207#endif
208
209#ifndef YY_TYPEDEF_YY_SIZE_T
210#define YY_TYPEDEF_YY_SIZE_T
211typedef size_t yy_size_t;
212#endif
213
214#define EOB_ACT_CONTINUE_SCAN 0
215#define EOB_ACT_END_OF_FILE 1
216#define EOB_ACT_LAST_MATCH 2
217
218 #define YY_LESS_LINENO(n)
219 #define YY_LINENO_REWIND_TO(ptr)
220
221/* Return all but the first "n" matched characters back to the input stream. */
222#define yyless(n) \
223 do \
224 { \
225 /* Undo effects of setting up yytext. */ \
226 int yyless_macro_arg = (n); \
227 YY_LESS_LINENO(yyless_macro_arg);\
228 *yy_cp = yyg->yy_hold_char; \
229 YY_RESTORE_YY_MORE_OFFSET \
230 yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
231 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
232 } \
233 while ( 0 )
234
235#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
236
237#ifndef YY_STRUCT_YY_BUFFER_STATE
238#define YY_STRUCT_YY_BUFFER_STATE
239struct yy_buffer_state
240 {
241 FILE *yy_input_file;
242
243 char *yy_ch_buf; /* input buffer */
244 char *yy_buf_pos; /* current position in input buffer */
245
246 /* Size of input buffer in bytes, not including room for EOB
247 * characters.
248 */
249 int yy_buf_size;
250
251 /* Number of characters read into yy_ch_buf, not including EOB
252 * characters.
253 */
254 int yy_n_chars;
255
256 /* Whether we "own" the buffer - i.e., we know we created it,
257 * and can realloc() it to grow it, and should free() it to
258 * delete it.
259 */
260 int yy_is_our_buffer;
261
262 /* Whether this is an "interactive" input source; if so, and
263 * if we're using stdio for input, then we want to use getc()
264 * instead of fread(), to make sure we stop fetching input after
265 * each newline.
266 */
267 int yy_is_interactive;
268
269 /* Whether we're considered to be at the beginning of a line.
270 * If so, '^' rules will be active on the next match, otherwise
271 * not.
272 */
273 int yy_at_bol;
274
275 int yy_bs_lineno; /**< The line count. */
276 int yy_bs_column; /**< The column count. */
277
278 /* Whether to try to fill the input buffer when we reach the
279 * end of it.
280 */
281 int yy_fill_buffer;
282
283 int yy_buffer_status;
284
285#define YY_BUFFER_NEW 0
286#define YY_BUFFER_NORMAL 1
287 /* When an EOF's been seen but there's still some text to process
288 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
289 * shouldn't try reading from the input source any more. We might
290 * still have a bunch of tokens to match, though, because of
291 * possible backing-up.
292 *
293 * When we actually see the EOF, we change the status to "new"
294 * (via psql_yyrestart()), so that the user can continue scanning by
295 * just pointing yyin at a new input file.
296 */
297#define YY_BUFFER_EOF_PENDING 2
298
299 };
300#endif /* !YY_STRUCT_YY_BUFFER_STATE */
301
302/* We provide macros for accessing buffer states in case in the
303 * future we want to put the buffer states in a more general
304 * "scanner state".
305 *
306 * Returns the top of the stack, or NULL.
307 */
308#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
309 ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
310 : NULL)
311
312/* Same as previous macro, but useful when we know that the buffer stack is not
313 * NULL or when we need an lvalue. For internal use only.
314 */
315#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
316
317void psql_yyrestart (FILE *input_file ,yyscan_t yyscanner );
318void psql_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
319YY_BUFFER_STATE psql_yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
320void psql_yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
321void psql_yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
322void psql_yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
323void psql_yypop_buffer_state (yyscan_t yyscanner );
324
325static void psql_yyensure_buffer_stack (yyscan_t yyscanner );
326static void psql_yy_load_buffer_state (yyscan_t yyscanner );
327static void psql_yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
328
329#define YY_FLUSH_BUFFER psql_yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
330
331YY_BUFFER_STATE psql_yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
332YY_BUFFER_STATE psql_yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
333YY_BUFFER_STATE psql_yy_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
334
335void *psql_yyalloc (yy_size_t ,yyscan_t yyscanner );
336void *psql_yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
337void psql_yyfree (void * ,yyscan_t yyscanner );
338
339#define yy_new_buffer psql_yy_create_buffer
340
341#define yy_set_interactive(is_interactive) \
342 { \
343 if ( ! YY_CURRENT_BUFFER ){ \
344 psql_yyensure_buffer_stack (yyscanner); \
345 YY_CURRENT_BUFFER_LVALUE = \
346 psql_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
347 } \
348 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
349 }
350
351#define yy_set_bol(at_bol) \
352 { \
353 if ( ! YY_CURRENT_BUFFER ){\
354 psql_yyensure_buffer_stack (yyscanner); \
355 YY_CURRENT_BUFFER_LVALUE = \
356 psql_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
357 } \
358 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
359 }
360
361#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
362
363/* Begin user sect3 */
364
365#define psql_yywrap(yyscanner) (/*CONSTCOND*/1)
366#define YY_SKIP_YYWRAP
367
368typedef unsigned char YY_CHAR;
369
370typedef int yy_state_type;
371
372#define yytext_ptr yytext_r
373
374static yyconst flex_int16_t yy_nxt[][44] =
375 {
376 {
377 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
378 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
379 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
380 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
381 0, 0, 0, 0
382 },
383
384 {
385 25, 26, 27, 28, 27, 29, 30, 31, 32, 33,
386 31, 34, 35, 36, 33, 33, 37, 38, 39, 40,
387 41, 41, 42, 43, 44, 45, 46, 31, 47, 48,
388 47, 47, 49, 47, 50, 47, 47, 51, 52, 53,
389 51, 52, 26, 26
390
391 },
392
393 {
394 25, 26, 27, 28, 27, 29, 30, 31, 32, 33,
395 31, 34, 35, 36, 33, 33, 37, 38, 39, 40,
396 41, 41, 42, 43, 44, 45, 46, 31, 47, 48,
397 47, 47, 49, 47, 50, 47, 47, 51, 52, 53,
398 51, 52, 26, 26
399 },
400
401 {
402 25, 54, 54, 54, 54, 54, 54, 54, 54, 54,
403 54, 55, 54, 54, 54, 54, 54, 54, 54, 54,
404 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
405 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
406 54, 54, 54, 54
407
408 },
409
410 {
411 25, 54, 54, 54, 54, 54, 54, 54, 54, 54,
412 54, 55, 54, 54, 54, 54, 54, 54, 54, 54,
413 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
414 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
415 54, 54, 54, 54
416 },
417
418 {
419 25, 56, 56, 56, 56, 57, 56, 57, 56, 57,
420 57, 56, 56, 56, 58, 57, 56, 57, 56, 59,
421 56, 56, 56, 56, 57, 57, 57, 57, 56, 56,
422 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
423 56, 56, 56, 56
424
425 },
426
427 {
428 25, 56, 56, 56, 56, 57, 56, 57, 56, 57,
429 57, 56, 56, 56, 58, 57, 56, 57, 56, 59,
430 56, 56, 56, 56, 57, 57, 57, 57, 56, 56,
431 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
432 56, 56, 56, 56
433 },
434
435 {
436 25, 60, 60, 60, 60, 60, 61, 60, 60, 60,
437 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
438 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
439 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
440 60, 60, 60, 60
441
442 },
443
444 {
445 25, 60, 60, 60, 60, 60, 61, 60, 60, 60,
446 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
447 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
448 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
449 60, 60, 60, 60
450 },
451
452 {
453 25, 62, 62, 62, 62, 62, 62, 62, 62, 62,
454 62, 63, 62, 62, 62, 62, 62, 62, 62, 62,
455 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
456 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
457 62, 62, 62, 62
458
459 },
460
461 {
462 25, 62, 62, 62, 62, 62, 62, 62, 62, 62,
463 62, 63, 62, 62, 62, 62, 62, 62, 62, 62,
464 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
465 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
466 62, 62, 62, 62
467 },
468
469 {
470 25, 64, 64, 64, 64, 64, 64, 64, 64, 64,
471 64, 65, 64, 64, 64, 64, 64, 64, 64, 64,
472 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
473 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
474 64, 64, 64, 64
475
476 },
477
478 {
479 25, 64, 64, 64, 64, 64, 64, 64, 64, 64,
480 64, 65, 64, 64, 64, 64, 64, 64, 64, 64,
481 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
482 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
483 64, 64, 64, 64
484 },
485
486 {
487 25, 66, 66, 67, 66, 66, 66, 66, 66, 66,
488 66, 68, 66, 66, 66, 66, 66, 66, 66, 66,
489 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
490 66, 66, 66, 66, 66, 66, 66, 66, 66, 69,
491 66, 66, 66, 66
492
493 },
494
495 {
496 25, 66, 66, 67, 66, 66, 66, 66, 66, 66,
497 66, 68, 66, 66, 66, 66, 66, 66, 66, 66,
498 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
499 66, 66, 66, 66, 66, 66, 66, 66, 66, 69,
500 66, 66, 66, 66
501 },
502
503 {
504 25, 70, 70, 71, 70, 70, 70, 70, 72, 70,
505 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
506 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
507 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
508 70, 70, 70, 70
509
510 },
511
512 {
513 25, 70, 70, 71, 70, 70, 70, 70, 72, 70,
514 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
515 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
516 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
517 70, 70, 70, 70
518 },
519
520 {
521 25, 60, 60, 60, 60, 60, 73, 60, 60, 60,
522 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
523 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
524 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
525 60, 60, 60, 60
526
527 },
528
529 {
530 25, 60, 60, 60, 60, 60, 73, 60, 60, 60,
531 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
532 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
533 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
534 60, 60, 60, 60
535 },
536
537 {
538 25, 74, 75, 76, 75, 74, 74, 74, 74, 74,
539 74, 74, 74, 74, 74, 74, 74, 77, 74, 74,
540 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
541 74, 74, 74, 74, 74, 74, 74, 78, 74, 74,
542 78, 74, 74, 74
543
544 },
545
546 {
547 25, 74, 75, 76, 75, 74, 74, 74, 74, 74,
548 74, 74, 74, 74, 74, 74, 74, 77, 74, 74,
549 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
550 74, 74, 74, 74, 74, 74, 74, 78, 74, 74,
551 78, 74, 74, 74
552 },
553
554 {
555 25, 64, 64, 64, 64, 64, 64, 64, 64, 64,
556 64, 79, 64, 64, 64, 64, 64, 64, 64, 64,
557 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
558 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
559 64, 64, 64, 64
560
561 },
562
563 {
564 25, 64, 64, 64, 64, 64, 64, 64, 64, 64,
565 64, 79, 64, 64, 64, 64, 64, 64, 64, 64,
566 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
567 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
568 64, 64, 64, 64
569 },
570
571 {
572 25, 80, 81, 82, 81, 80, 80, 80, 80, 80,
573 80, 80, 80, 80, 80, 80, 80, 83, 80, 80,
574 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
575 80, 80, 80, 80, 80, 80, 80, 84, 80, 80,
576 84, 80, 80, 80
577
578 },
579
580 {
581 25, 80, 81, 82, 81, 80, 80, 80, 80, 80,
582 80, 80, 80, 80, 80, 80, 80, 83, 80, 80,
583 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
584 80, 80, 80, 80, 80, 80, 80, 84, 80, 80,
585 84, 80, 80, 80
586 },
587
588 {
589 -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
590 -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
591 -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
592 -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
593 -25, -25, -25, -25
594
595 },
596
597 {
598 25, -26, -26, -26, -26, -26, -26, -26, -26, -26,
599 -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
600 -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
601 -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
602 -26, -26, -26, -26
603 },
604
605 {
606 25, -27, 85, 85, 85, -27, -27, -27, -27, -27,
607 -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
608 -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
609 -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
610 -27, -27, -27, -27
611
612 },
613
614 {
615 25, -28, 85, 85, 85, -28, -28, -28, -28, -28,
616 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
617 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
618 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
619 -28, -28, -28, -28
620 },
621
622 {
623 25, -29, -29, -29, -29, 86, -29, 86, -29, 86,
624 86, -29, -29, -29, 86, 86, -29, 86, -29, 86,
625 -29, -29, -29, -29, 86, 87, 86, 86, -29, -29,
626 -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
627 -29, -29, -29, -29
628
629 },
630
631 {
632 25, -30, -30, -30, -30, -30, -30, -30, -30, -30,
633 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
634 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
635 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
636 -30, -30, -30, -30
637 },
638
639 {
640 25, -31, -31, -31, -31, 86, -31, 86, -31, 86,
641 86, -31, -31, -31, 86, 86, -31, 86, -31, 86,
642 -31, -31, -31, -31, 86, 86, 86, 86, -31, -31,
643 -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
644 -31, -31, -31, -31
645
646 },
647
648 {
649 25, -32, -32, -32, -32, -32, -32, -32, 88, -32,
650 -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
651 89, 89, -32, -32, -32, -32, -32, -32, 90, 90,
652 90, 90, 90, 90, 90, 90, 90, 90, 90, -32,
653 90, 90, -32, -32
654 },
655
656 {
657 25, -33, -33, -33, -33, 86, -33, 86, -33, 86,
658 86, -33, -33, -33, 86, 86, -33, 86, -33, 86,
659 -33, -33, -33, -33, 86, 86, 86, 86, -33, -33,
660 -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
661 -33, -33, -33, -33
662
663 },
664
665 {
666 25, -34, -34, -34, -34, -34, -34, -34, -34, -34,
667 -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
668 -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
669 -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
670 -34, -34, -34, -34
671 },
672
673 {
674 25, -35, -35, -35, -35, -35, -35, -35, -35, -35,
675 -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
676 -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
677 -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
678 -35, -35, -35, -35
679
680 },
681
682 {
683 25, -36, -36, -36, -36, -36, -36, -36, -36, -36,
684 -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
685 -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
686 -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
687 -36, -36, -36, -36
688 },
689
690 {
691 25, -37, -37, -37, -37, -37, -37, -37, -37, -37,
692 -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
693 -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
694 -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
695 -37, -37, -37, -37
696
697 },
698
699 {
700 25, -38, -38, -38, -38, 86, -38, 86, -38, 86,
701 86, -38, -38, -38, 86, 86, -38, 91, -38, 86,
702 -38, -38, -38, -38, 86, 86, 86, 86, -38, -38,
703 -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
704 -38, -38, -38, -38
705 },
706
707 {
708 25, -39, -39, -39, -39, -39, -39, -39, -39, -39,
709 -39, -39, -39, -39, -39, -39, -39, -39, 92, -39,
710 93, 93, -39, -39, -39, -39, -39, -39, -39, -39,
711 -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
712 -39, -39, -39, -39
713
714 },
715
716 {
717 25, -40, -40, -40, -40, 86, -40, 86, -40, 86,
718 86, -40, -40, -40, 94, 86, -40, 86, -40, 86,
719 -40, -40, -40, -40, 86, 86, 86, 86, -40, -40,
720 -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
721 -40, -40, -40, -40
722 },
723
724 {
725 25, -41, -41, -41, -41, -41, -41, -41, -41, -41,
726 -41, -41, -41, -41, -41, -41, -41, -41, 95, -41,
727 96, 96, -41, -41, -41, -41, -41, -41, -41, -41,
728 -41, -41, 97, -41, -41, -41, -41, -41, -41, -41,
729 -41, -41, -41, -41
730
731 },
732
733 {
734 25, -42, -42, -42, -42, -42, 98, -42, -42, -42,
735 -42, 99, -42, -42, -42, -42, -42, -42, -42, -42,
736 100, 100, 101, -42, -42, 102, -42, -42, 100, 100,
737 100, 100, 100, 100, 100, 100, 100, 100, 100, -42,
738 100, 100, 103, -42
739 },
740
741 {
742 25, -43, -43, -43, -43, -43, -43, -43, -43, -43,
743 -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
744 -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
745 -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
746 -43, -43, -43, -43
747
748 },
749
750 {
751 25, -44, -44, -44, -44, 86, -44, 86, -44, 86,
752 86, -44, -44, -44, 86, 86, -44, 86, -44, 86,
753 -44, -44, -44, -44, 86, 104, 105, 86, -44, -44,
754 -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
755 -44, -44, -44, -44
756 },
757
758 {
759 25, -45, -45, -45, -45, 86, -45, 86, -45, 86,
760 86, -45, -45, -45, 86, 86, -45, 86, -45, 86,
761 -45, -45, -45, -45, 86, 86, 106, 86, -45, -45,
762 -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
763 -45, -45, -45, -45
764
765 },
766
767 {
768 25, -46, -46, -46, -46, 86, -46, 86, -46, 86,
769 86, -46, -46, -46, 86, 86, -46, 86, -46, 86,
770 -46, -46, -46, -46, 86, 107, 86, 86, -46, -46,
771 -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
772 -46, -46, -46, -46
773 },
774
775 {
776 25, -47, -47, -47, -47, -47, -47, -47, 108, -47,
777 -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
778 108, 108, -47, -47, -47, -47, -47, -47, 108, 108,
779 108, 108, 108, 108, 108, 108, 108, 108, 108, -47,
780 108, 108, -47, -47
781
782 },
783
784 {
785 25, -48, -48, -48, -48, -48, -48, -48, 108, -48,
786 -48, 109, -48, -48, -48, -48, -48, -48, -48, -48,
787 108, 108, -48, -48, -48, -48, -48, -48, 108, 108,
788 108, 108, 108, 108, 108, 108, 108, 108, 108, -48,
789 108, 108, -48, -48
790 },
791
792 {
793 25, -49, -49, -49, -49, -49, -49, -49, 108, -49,
794 -49, 110, -49, -49, -49, -49, -49, -49, -49, -49,
795 108, 108, -49, -49, -49, -49, -49, -49, 108, 108,
796 108, 108, 108, 108, 108, 108, 108, 108, 108, -49,
797 108, 108, -49, -49
798
799 },
800
801 {
802 25, -50, -50, -50, -50, -50, -50, -50, 108, -50,
803 -50, 111, -50, -50, -50, -50, -50, -50, -50, -50,
804 108, 108, -50, -50, -50, -50, -50, -50, 108, 108,
805 108, 108, 108, 108, 108, 108, 108, 108, 108, -50,
806 108, 108, -50, -50
807 },
808
809 {
810 25, -51, -51, -51, -51, -51, -51, -51, 108, -51,
811 112, -51, -51, -51, -51, -51, -51, -51, -51, -51,
812 108, 108, -51, -51, -51, -51, -51, -51, 108, 108,
813 108, 108, 108, 108, 108, 108, 108, 108, 108, -51,
814 108, 108, -51, -51
815
816 },
817
818 {
819 25, -52, -52, -52, -52, -52, -52, -52, 108, -52,
820 -52, 113, -52, -52, -52, -52, -52, -52, -52, -52,
821 108, 108, -52, -52, -52, -52, -52, -52, 108, 108,
822 108, 108, 108, 108, 108, 108, 108, 108, 108, -52,
823 108, 108, -52, -52
824 },
825
826 {
827 25, -53, -53, -53, -53, -53, -53, -53, -53, -53,
828 -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
829 -53, -53, 114, 114, -53, -53, -53, -53, -53, -53,
830 -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
831 -53, -53, -53, -53
832
833 },
834
835 {
836 25, 115, 115, 115, 115, 115, 115, 115, 115, 115,
837 115, -54, 115, 115, 115, 115, 115, 115, 115, 115,
838 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
839 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
840 115, 115, 115, 115
841 },
842
843 {
844 25, -55, 116, 117, 117, -55, -55, -55, -55, -55,
845 -55, -55, -55, -55, -55, -55, -55, 118, -55, -55,
846 -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
847 -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
848 -55, -55, -55, -55
849
850 },
851
852 {
853 25, 119, 119, 119, 119, 119, 119, 119, 119, 119,
854 119, 119, 119, 119, -56, 119, 119, 119, 119, -56,
855 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
856 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
857 119, 119, 119, 119
858 },
859
860 {
861 25, 119, 119, 119, 119, 119, 119, 119, 119, 119,
862 119, 119, 119, 119, -57, 119, 119, 119, 119, -57,
863 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
864 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
865 119, 119, 119, 119
866
867 },
868
869 {
870 25, -58, -58, -58, -58, -58, -58, -58, -58, -58,
871 -58, -58, -58, -58, 120, -58, -58, -58, -58, 121,
872 -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
873 -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
874 -58, -58, -58, -58
875 },
876
877 {
878 25, -59, -59, -59, -59, -59, -59, -59, -59, -59,
879 -59, -59, -59, -59, 122, -59, -59, -59, -59, -59,
880 -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
881 -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
882 -59, -59, -59, -59
883
884 },
885
886 {
887 25, 123, 123, 123, 123, 123, -60, 123, 123, 123,
888 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
889 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
890 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
891 123, 123, 123, 123
892 },
893
894 {
895 25, -61, -61, -61, -61, -61, 124, -61, -61, -61,
896 -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
897 -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
898 -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
899 -61, -61, -61, -61
900
901 },
902
903 {
904 25, 125, 125, 125, 125, 125, 125, 125, 125, 125,
905 125, -62, 125, 125, 125, 125, 125, 125, 125, 125,
906 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
907 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
908 125, 125, 125, 125
909 },
910
911 {
912 25, -63, 126, 127, 127, -63, -63, -63, -63, -63,
913 -63, -63, -63, -63, -63, -63, -63, 128, -63, -63,
914 -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
915 -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
916 -63, -63, -63, -63
917
918 },
919
920 {
921 25, 129, 129, 129, 129, 129, 129, 129, 129, 129,
922 129, -64, 129, 129, 129, 129, 129, 129, 129, 129,
923 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
924 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
925 129, 129, 129, 129
926 },
927
928 {
929 25, -65, 130, 131, 131, -65, -65, -65, -65, -65,
930 -65, 132, -65, -65, -65, -65, -65, 133, -65, -65,
931 -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
932 -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
933 -65, -65, -65, -65
934
935 },
936
937 {
938 25, 134, 134, 134, 134, 134, 134, 134, 134, 134,
939 134, -66, 134, 134, 134, 134, 134, 134, 134, 134,
940 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
941 134, 134, 134, 134, 134, 134, 134, 134, 134, -66,
942 134, 134, 134, 134
943 },
944
945 {
946 25, 134, 134, 134, 134, 134, 134, 134, 134, 134,
947 134, -67, 134, 134, 134, 134, 134, 134, 134, 134,
948 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
949 134, 134, 134, 134, 134, 134, 134, 134, 134, -67,
950 134, 134, 134, 134
951
952 },
953
954 {
955 25, -68, 130, 131, 131, -68, -68, -68, -68, -68,
956 -68, 132, -68, -68, -68, -68, -68, 133, -68, -68,
957 -68, -68, -68, -68, -68, -68, -68, -68, -68, -68,
958 -68, -68, -68, -68, -68, -68, -68, -68, -68, -68,
959 -68, -68, -68, -68
960 },
961
962 {
963 25, 135, 135, 135, 135, 135, 135, 135, 135, 135,
964 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
965 136, 135, 135, 135, 135, 135, 135, 135, 135, 135,
966 135, 135, 135, 135, 135, 135, 135, 137, 135, 135,
967 138, 139, 135, 135
968
969 },
970
971 {
972 25, 140, 140, 140, 140, 140, 140, 140, -70, 140,
973 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
974 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
975 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
976 140, 140, 140, 140
977 },
978
979 {
980 25, 140, 140, 140, 140, 140, 140, 140, -71, 140,
981 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
982 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
983 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
984 140, 140, 140, 140
985
986 },
987
988 {
989 25, -72, -72, -72, -72, -72, -72, -72, 141, -72,
990 -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
991 -72, -72, -72, -72, -72, -72, -72, -72, 142, 142,
992 142, 142, 142, 142, 142, 142, 142, 142, 142, -72,
993 142, 142, -72, -72
994 },
995
996 {
997 25, -73, -73, -73, -73, -73, 124, -73, -73, -73,
998 -73, -73, -73, -73, -73, -73, -73, -73, -73, -73,
999 -73, -73, -73, -73, -73, -73, -73, -73, -73, -73,
1000 -73, -73, -73, -73, -73, -73, -73, -73, -73, -73,
1001 -73, -73, -73, -73
1002
1003 },
1004
1005 {
1006 25, -74, -74, -74, -74, -74, -74, -74, -74, -74,
1007 -74, -74, -74, -74, -74, -74, -74, -74, -74, -74,
1008 -74, -74, -74, -74, -74, -74, -74, -74, -74, -74,
1009 -74, -74, -74, -74, -74, -74, -74, -74, -74, -74,
1010 -74, -74, -74, -74
1011 },
1012
1013 {
1014 25, -75, 143, 143, 143, -75, -75, -75, -75, -75,
1015 -75, -75, -75, -75, -75, -75, -75, -75, -75, -75,
1016 -75, -75, -75, -75, -75, -75, -75, -75, -75, -75,
1017 -75, -75, -75, -75, -75, -75, -75, -75, -75, -75,
1018 -75, -75, -75, -75
1019
1020 },
1021
1022 {
1023 25, -76, 143, 143, 143, -76, -76, -76, -76, -76,
1024 -76, -76, -76, -76, -76, -76, -76, -76, -76, -76,
1025 -76, -76, -76, -76, -76, -76, -76, -76, -76, -76,
1026 -76, -76, -76, -76, -76, -76, -76, -76, -76, -76,
1027 -76, -76, -76, -76
1028 },
1029
1030 {
1031 25, -77, -77, -77, -77, -77, -77, -77, -77, -77,
1032 -77, -77, -77, -77, -77, -77, -77, 144, -77, -77,
1033 -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
1034 -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
1035 -77, -77, -77, -77
1036
1037 },
1038
1039 {
1040 25, -78, -78, -78, -78, -78, -78, -78, -78, -78,
1041 -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
1042 -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
1043 -78, -78, 145, -78, -78, -78, -78, -78, -78, -78,
1044 -78, -78, -78, -78
1045 },
1046
1047 {
1048 25, -79, 146, 147, 147, -79, -79, -79, -79, -79,
1049 -79, 132, -79, -79, -79, -79, -79, 148, -79, -79,
1050 -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
1051 -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
1052 -79, -79, -79, -79
1053
1054 },
1055
1056 {
1057 25, -80, -80, -80, -80, -80, -80, -80, -80, -80,
1058 -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
1059 -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
1060 -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
1061 -80, -80, -80, -80
1062 },
1063
1064 {
1065 25, -81, 149, 149, 149, -81, -81, -81, -81, -81,
1066 -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
1067 -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
1068 -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
1069 -81, -81, -81, -81
1070
1071 },
1072
1073 {
1074 25, -82, 149, 149, 149, -82, -82, -82, -82, -82,
1075 -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
1076 -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
1077 -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
1078 -82, -82, -82, -82
1079 },
1080
1081 {
1082 25, -83, -83, -83, -83, -83, -83, -83, -83, -83,
1083 -83, -83, -83, -83, -83, -83, -83, 150, -83, -83,
1084 -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
1085 -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
1086 -83, -83, -83, -83
1087
1088 },
1089
1090 {
1091 25, -84, -84, -84, -84, -84, -84, -84, -84, -84,
1092 -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
1093 -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
1094 -84, -84, 151, -84, -84, -84, -84, -84, -84, -84,
1095 -84, -84, -84, -84
1096 },
1097
1098 {
1099 25, -85, 85, 85, 85, -85, -85, -85, -85, -85,
1100 -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
1101 -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
1102 -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
1103 -85, -85, -85, -85
1104
1105 },
1106
1107 {
1108 25, -86, -86, -86, -86, 86, -86, 86, -86, 86,
1109 86, -86, -86, -86, 86, 86, -86, 86, -86, 86,
1110 -86, -86, -86, -86, 86, 86, 86, 86, -86, -86,
1111 -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
1112 -86, -86, -86, -86
1113 },
1114
1115 {
1116 25, -87, -87, -87, -87, 86, -87, 86, -87, 86,
1117 86, -87, -87, -87, 86, 86, -87, 86, -87, 86,
1118 -87, -87, -87, -87, 86, 86, 86, 86, -87, -87,
1119 -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
1120 -87, -87, -87, -87
1121
1122 },
1123
1124 {
1125 25, -88, -88, -88, -88, -88, -88, -88, -88, -88,
1126 -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
1127 -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
1128 -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
1129 -88, -88, -88, -88
1130 },
1131
1132 {
1133 25, -89, -89, -89, -89, -89, -89, -89, -89, -89,
1134 -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
1135 89, 89, -89, -89, -89, -89, -89, -89, -89, -89,
1136 -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
1137 -89, -89, -89, -89
1138
1139 },
1140
1141 {
1142 25, -90, -90, -90, -90, -90, -90, -90, 88, -90,
1143 -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
1144 152, 152, -90, -90, -90, -90, -90, -90, 152, 152,
1145 152, 152, 152, 152, 152, 152, 152, 152, 152, -90,
1146 152, 152, -90, -90
1147 },
1148
1149 {
1150 25, 153, 153, -91, -91, 154, 153, 154, 153, 154,
1151 154, 153, 153, 153, 154, 154, 153, 154, 153, 154,
1152 153, 153, 153, 153, 154, 154, 154, 154, 153, 153,
1153 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
1154 153, 153, 153, 153
1155
1156 },
1157
1158 {
1159 25, -92, -92, -92, -92, -92, -92, -92, -92, -92,
1160 -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
1161 -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
1162 -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
1163 -92, -92, -92, -92
1164 },
1165
1166 {
1167 25, -93, -93, -93, -93, -93, -93, -93, -93, -93,
1168 -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
1169 93, 93, -93, -93, -93, -93, -93, -93, -93, -93,
1170 -93, -93, 97, -93, -93, -93, -93, -93, -93, -93,
1171 -93, -93, -93, -93
1172
1173 },
1174
1175 {
1176 25, -94, -94, -94, -94, 155, -94, 155, -94, 155,
1177 155, -94, -94, -94, 155, 155, -94, 155, -94, 155,
1178 -94, -94, -94, -94, 155, 155, 155, 155, -94, -94,
1179 -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
1180 -94, -94, -94, -94
1181 },
1182
1183 {
1184 25, -95, -95, -95, -95, -95, -95, -95, -95, -95,
1185 -95, -95, -95, -95, -95, -95, -95, -95, 156, -95,
1186 157, 157, -95, -95, -95, -95, -95, -95, -95, -95,
1187 -95, -95, 97, -95, -95, -95, -95, -95, -95, -95,
1188 -95, -95, -95, -95
1189
1190 },
1191
1192 {
1193 25, -96, -96, -96, -96, -96, -96, -96, -96, -96,
1194 -96, -96, -96, -96, -96, -96, -96, -96, 95, -96,
1195 96, 96, -96, -96, -96, -96, -96, -96, -96, -96,
1196 -96, -96, 97, -96, -96, -96, -96, -96, -96, -96,
1197 -96, -96, -96, -96
1198 },
1199
1200 {
1201 25, -97, -97, -97, -97, -97, -97, -97, -97, -97,
1202 -97, -97, -97, -97, -97, 158, -97, 158, -97, -97,
1203 159, 159, -97, -97, -97, -97, -97, -97, -97, -97,
1204 -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
1205 -97, -97, -97, -97
1206
1207 },
1208
1209 {
1210 25, -98, -98, -98, -98, -98, -98, -98, -98, -98,
1211 -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
1212 160, 160, -98, -98, -98, -98, -98, -98, 160, 160,
1213 160, 160, 160, 160, 160, 160, 160, 160, 160, -98,
1214 160, 160, -98, -98
1215 },
1216
1217 {
1218 25, -99, -99, -99, -99, -99, -99, -99, -99, -99,
1219 -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
1220 161, 161, -99, -99, -99, -99, -99, -99, 161, 161,
1221 161, 161, 161, 161, 161, 161, 161, 161, 161, -99,
1222 161, 161, -99, -99
1223
1224 },
1225
1226 {
1227 25, -100, -100, -100, -100, -100, -100, -100, -100, -100,
1228 -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
1229 100, 100, -100, -100, -100, -100, -100, -100, 100, 100,
1230 100, 100, 100, 100, 100, 100, 100, 100, 100, -100,
1231 100, 100, -100, -100
1232 },
1233
1234 {
1235 25, -101, -101, -101, -101, -101, -101, -101, -101, -101,
1236 -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
1237 -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
1238 -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
1239 -101, -101, -101, -101
1240
1241 },
1242
1243 {
1244 25, -102, -102, -102, -102, -102, -102, -102, -102, -102,
1245 -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
1246 -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
1247 -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
1248 -102, -102, -102, -102
1249 },
1250
1251 {
1252 25, -103, -103, -103, -103, -103, -103, -103, -103, -103,
1253 -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
1254 -103, -103, -103, -103, -103, -103, -103, 162, -103, -103,
1255 -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
1256 -103, -103, -103, -103
1257
1258 },
1259
1260 {
1261 25, -104, -104, -104, -104, 86, -104, 86, -104, 86,
1262 86, -104, -104, -104, 86, 86, -104, 86, -104, 86,
1263 -104, -104, -104, -104, 86, 86, 86, 86, -104, -104,
1264 -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
1265 -104, -104, -104, -104
1266 },
1267
1268 {
1269 25, -105, -105, -105, -105, 86, -105, 86, -105, 86,
1270 86, -105, -105, -105, 86, 86, -105, 86, -105, 86,
1271 -105, -105, -105, -105, 86, 86, 86, 86, -105, -105,
1272 -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
1273 -105, -105, -105, -105
1274
1275 },
1276
1277 {
1278 25, -106, -106, -106, -106, 86, -106, 86, -106, 86,
1279 86, -106, -106, -106, 86, 86, -106, 86, -106, 86,
1280 -106, -106, -106, -106, 86, 86, 86, 86, -106, -106,
1281 -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
1282 -106, -106, -106, -106
1283 },
1284
1285 {
1286 25, -107, -107, -107, -107, 86, -107, 86, -107, 86,
1287 86, -107, -107, -107, 86, 86, -107, 86, -107, 86,
1288 -107, -107, -107, -107, 86, 86, 86, 86, -107, -107,
1289 -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
1290 -107, -107, -107, -107
1291
1292 },
1293
1294 {
1295 25, -108, -108, -108, -108, -108, -108, -108, 108, -108,
1296 -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
1297 108, 108, -108, -108, -108, -108, -108, -108, 108, 108,
1298 108, 108, 108, 108, 108, 108, 108, 108, 108, -108,
1299 108, 108, -108, -108
1300 },
1301
1302 {
1303 25, -109, -109, -109, -109, -109, -109, -109, -109, -109,
1304 -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
1305 -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
1306 -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
1307 -109, -109, -109, -109
1308
1309 },
1310
1311 {
1312 25, -110, -110, -110, -110, -110, -110, -110, -110, -110,
1313 -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
1314 -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
1315 -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
1316 -110, -110, -110, -110
1317 },
1318
1319 {
1320 25, -111, -111, -111, -111, -111, -111, -111, -111, -111,
1321 -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
1322 -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
1323 -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
1324 -111, -111, -111, -111
1325
1326 },
1327
1328 {
1329 25, -112, -112, -112, -112, -112, 163, -112, -112, -112,
1330 -112, 164, -112, -112, -112, -112, -112, -112, -112, -112,
1331 -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
1332 -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
1333 -112, -112, -112, -112
1334 },
1335
1336 {
1337 25, -113, -113, -113, -113, -113, -113, -113, -113, -113,
1338 -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
1339 -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
1340 -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
1341 -113, -113, -113, -113
1342
1343 },
1344
1345 {
1346 25, -114, -114, -114, -114, -114, -114, -114, -114, -114,
1347 -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
1348 -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
1349 -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
1350 -114, -114, -114, -114
1351 },
1352
1353 {
1354 25, 115, 115, 115, 115, 115, 115, 115, 115, 115,
1355 115, -115, 115, 115, 115, 115, 115, 115, 115, 115,
1356 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
1357 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
1358 115, 115, 115, 115
1359
1360 },
1361
1362 {
1363 25, -116, 116, 117, 117, -116, -116, -116, -116, -116,
1364 -116, -116, -116, -116, -116, -116, -116, 118, -116, -116,
1365 -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
1366 -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
1367 -116, -116, -116, -116
1368 },
1369
1370 {
1371 25, -117, 165, 165, 165, -117, -117, -117, -117, -117,
1372 -117, 166, -117, -117, -117, -117, -117, 167, -117, -117,
1373 -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
1374 -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
1375 -117, -117, -117, -117
1376
1377 },
1378
1379 {
1380 25, -118, -118, -118, -118, -118, -118, -118, -118, -118,
1381 -118, -118, -118, -118, -118, -118, -118, 168, -118, -118,
1382 -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
1383 -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
1384 -118, -118, -118, -118
1385 },
1386
1387 {
1388 25, 119, 119, 119, 119, 119, 119, 119, 119, 119,
1389 119, 119, 119, 119, -119, 119, 119, 119, 119, -119,
1390 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
1391 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
1392 119, 119, 119, 119
1393
1394 },
1395
1396 {
1397 25, -120, -120, -120, -120, -120, -120, -120, -120, -120,
1398 -120, -120, -120, -120, 120, -120, -120, -120, -120, 121,
1399 -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
1400 -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
1401 -120, -120, -120, -120
1402 },
1403
1404 {
1405 25, -121, -121, -121, -121, -121, -121, -121, -121, -121,
1406 -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
1407 -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
1408 -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
1409 -121, -121, -121, -121
1410
1411 },
1412
1413 {
1414 25, -122, -122, -122, -122, 169, -122, 169, -122, 169,
1415 169, -122, -122, -122, 169, 169, -122, 169, -122, 169,
1416 -122, -122, -122, -122, 169, 169, 169, 169, -122, -122,
1417 -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
1418 -122, -122, -122, -122
1419 },
1420
1421 {
1422 25, 123, 123, 123, 123, 123, -123, 123, 123, 123,
1423 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
1424 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
1425 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
1426 123, 123, 123, 123
1427
1428 },
1429
1430 {
1431 25, -124, -124, -124, -124, -124, -124, -124, -124, -124,
1432 -124, -124, -124, -124, -124, -124, -124, -124, -124, -124,
1433 -124, -124, -124, -124, -124, -124, -124, -124, -124, -124,
1434 -124, -124, -124, -124, -124, -124, -124, -124, -124, -124,
1435 -124, -124, -124, -124
1436 },
1437
1438 {
1439 25, 125, 125, 125, 125, 125, 125, 125, 125, 125,
1440 125, -125, 125, 125, 125, 125, 125, 125, 125, 125,
1441 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
1442 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
1443 125, 125, 125, 125
1444
1445 },
1446
1447 {
1448 25, -126, 126, 127, 127, -126, -126, -126, -126, -126,
1449 -126, -126, -126, -126, -126, -126, -126, 128, -126, -126,
1450 -126, -126, -126, -126, -126, -126, -126, -126, -126, -126,
1451 -126, -126, -126, -126, -126, -126, -126, -126, -126, -126,
1452 -126, -126, -126, -126
1453 },
1454
1455 {
1456 25, -127, 170, 170, 170, -127, -127, -127, -127, -127,
1457 -127, 171, -127, -127, -127, -127, -127, 172, -127, -127,
1458 -127, -127, -127, -127, -127, -127, -127, -127, -127, -127,
1459 -127, -127, -127, -127, -127, -127, -127, -127, -127, -127,
1460 -127, -127, -127, -127
1461
1462 },
1463
1464 {
1465 25, -128, -128, -128, -128, -128, -128, -128, -128, -128,
1466 -128, -128, -128, -128, -128, -128, -128, 173, -128, -128,
1467 -128, -128, -128, -128, -128, -128, -128, -128, -128, -128,
1468 -128, -128, -128, -128, -128, -128, -128, -128, -128, -128,
1469 -128, -128, -128, -128
1470 },
1471
1472 {
1473 25, 129, 129, 129, 129, 129, 129, 129, 129, 129,
1474 129, -129, 129, 129, 129, 129, 129, 129, 129, 129,
1475 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
1476 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
1477 129, 129, 129, 129
1478
1479 },
1480
1481 {
1482 25, -130, 130, 131, 131, -130, -130, -130, -130, -130,
1483 -130, -130, -130, -130, -130, -130, -130, 133, -130, -130,
1484 -130, -130, -130, -130, -130, -130, -130, -130, -130, -130,
1485 -130, -130, -130, -130, -130, -130, -130, -130, -130, -130,
1486 -130, -130, -130, -130
1487 },
1488
1489 {
1490 25, -131, 174, 174, 174, -131, -131, -131, -131, -131,
1491 -131, 175, -131, -131, -131, -131, -131, 176, -131, -131,
1492 -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
1493 -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
1494 -131, -131, -131, -131
1495
1496 },
1497
1498 {
1499 25, -132, -132, -132, -132, -132, -132, -132, -132, -132,
1500 -132, -132, -132, -132, -132, -132, -132, -132, -132, -132,
1501 -132, -132, -132, -132, -132, -132, -132, -132, -132, -132,
1502 -132, -132, -132, -132, -132, -132, -132, -132, -132, -132,
1503 -132, -132, -132, -132
1504 },
1505
1506 {
1507 25, -133, -133, -133, -133, -133, -133, -133, -133, -133,
1508 -133, -133, -133, -133, -133, -133, -133, 177, -133, -133,
1509 -133, -133, -133, -133, -133, -133, -133, -133, -133, -133,
1510 -133, -133, -133, -133, -133, -133, -133, -133, -133, -133,
1511 -133, -133, -133, -133
1512
1513 },
1514
1515 {
1516 25, 134, 134, 134, 134, 134, 134, 134, 134, 134,
1517 134, -134, 134, 134, 134, 134, 134, 134, 134, 134,
1518 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
1519 134, 134, 134, 134, 134, 134, 134, 134, 134, -134,
1520 134, 134, 134, 134
1521 },
1522
1523 {
1524 25, -135, -135, -135, -135, -135, -135, -135, -135, -135,
1525 -135, -135, -135, -135, -135, -135, -135, -135, -135, -135,
1526 -135, -135, -135, -135, -135, -135, -135, -135, -135, -135,
1527 -135, -135, -135, -135, -135, -135, -135, -135, -135, -135,
1528 -135, -135, -135, -135
1529
1530 },
1531
1532 {
1533 25, -136, -136, -136, -136, -136, -136, -136, -136, -136,
1534 -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
1535 178, -136, -136, -136, -136, -136, -136, -136, -136, -136,
1536 -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
1537 -136, -136, -136, -136
1538 },
1539
1540 {
1541 25, -137, -137, -137, -137, -137, -137, -137, -137, -137,
1542 -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
1543 179, 179, -137, -137, -137, -137, -137, -137, 179, 179,
1544 179, 179, 179, -137, -137, -137, -137, -137, -137, -137,
1545 -137, -137, -137, -137
1546
1547 },
1548
1549 {
1550 25, -138, -138, -138, -138, -138, -138, -138, -138, -138,
1551 -138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
1552 180, 180, -138, -138, -138, -138, -138, -138, 180, 180,
1553 180, 180, 180, -138, -138, -138, -138, -138, -138, -138,
1554 -138, -138, -138, -138
1555 },
1556
1557 {
1558 25, -139, -139, -139, -139, -139, -139, -139, -139, -139,
1559 -139, -139, -139, -139, -139, -139, -139, -139, -139, -139,
1560 181, 181, -139, -139, -139, -139, -139, -139, 181, 181,
1561 181, 181, 181, -139, -139, -139, -139, -139, -139, -139,
1562 -139, -139, -139, -139
1563
1564 },
1565
1566 {
1567 25, 140, 140, 140, 140, 140, 140, 140, -140, 140,
1568 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
1569 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
1570 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
1571 140, 140, 140, 140
1572 },
1573
1574 {
1575 25, -141, -141, -141, -141, -141, -141, -141, -141, -141,
1576 -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
1577 -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
1578 -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
1579 -141, -141, -141, -141
1580
1581 },
1582
1583 {
1584 25, -142, -142, -142, -142, -142, -142, -142, 141, -142,
1585 -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
1586 182, 182, -142, -142, -142, -142, -142, -142, 182, 182,
1587 182, 182, 182, 182, 182, 182, 182, 182, 182, -142,
1588 182, 182, -142, -142
1589 },
1590
1591 {
1592 25, -143, 143, 143, 143, -143, -143, -143, -143, -143,
1593 -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
1594 -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
1595 -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
1596 -143, -143, -143, -143
1597
1598 },
1599
1600 {
1601 25, 183, 183, -144, -144, 183, 183, 183, 183, 183,
1602 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1603 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1604 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1605 183, 183, 183, 183
1606 },
1607
1608 {
1609 25, -145, -145, -145, -145, -145, -145, -145, -145, -145,
1610 -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
1611 -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
1612 -145, -145, -145, -145, -145, -145, 184, -145, -145, -145,
1613 -145, -145, -145, -145
1614
1615 },
1616
1617 {
1618 25, -146, 146, 147, 147, -146, -146, -146, -146, -146,
1619 -146, -146, -146, -146, -146, -146, -146, 148, -146, -146,
1620 -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
1621 -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
1622 -146, -146, -146, -146
1623 },
1624
1625 {
1626 25, -147, 185, 185, 185, -147, -147, -147, -147, -147,
1627 -147, 175, -147, -147, -147, -147, -147, 186, -147, -147,
1628 -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
1629 -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
1630 -147, -147, -147, -147
1631
1632 },
1633
1634 {
1635 25, -148, -148, -148, -148, -148, -148, -148, -148, -148,
1636 -148, -148, -148, -148, -148, -148, -148, 187, -148, -148,
1637 -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
1638 -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
1639 -148, -148, -148, -148
1640 },
1641
1642 {
1643 25, -149, 149, 149, 149, -149, -149, -149, -149, -149,
1644 -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
1645 -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
1646 -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
1647 -149, -149, -149, -149
1648
1649 },
1650
1651 {
1652 25, 188, 188, -150, -150, 188, 188, 188, 188, 188,
1653 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
1654 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
1655 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
1656 188, 188, 188, 188
1657 },
1658
1659 {
1660 25, -151, -151, -151, -151, -151, -151, -151, -151, -151,
1661 -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
1662 -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
1663 -151, -151, -151, -151, -151, -151, 189, -151, -151, -151,
1664 -151, -151, -151, -151
1665
1666 },
1667
1668 {
1669 25, -152, -152, -152, -152, -152, -152, -152, 88, -152,
1670 -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
1671 152, 152, -152, -152, -152, -152, -152, -152, 152, 152,
1672 152, 152, 152, 152, 152, 152, 152, 152, 152, -152,
1673 152, 152, -152, -152
1674 },
1675
1676 {
1677 25, 153, 153, -153, -153, 153, 153, 153, 153, 153,
1678 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
1679 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
1680 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
1681 153, 153, 153, 153
1682
1683 },
1684
1685 {
1686 25, 153, 153, -154, -154, 154, 153, 154, 153, 154,
1687 154, 153, 153, 153, 154, 154, 153, 154, 153, 154,
1688 153, 153, 153, 153, 154, 154, 154, 154, 153, 153,
1689 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
1690 153, 153, 153, 153
1691 },
1692
1693 {
1694 25, -155, -155, -155, -155, 155, -155, 155, -155, 155,
1695 155, -155, -155, -155, 155, 155, -155, 155, -155, 155,
1696 -155, -155, -155, -155, 155, 155, 155, 155, -155, -155,
1697 -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
1698 -155, -155, -155, -155
1699
1700 },
1701
1702 {
1703 25, -156, -156, -156, -156, -156, -156, -156, -156, -156,
1704 -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
1705 -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
1706 -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
1707 -156, -156, -156, -156
1708 },
1709
1710 {
1711 25, -157, -157, -157, -157, -157, -157, -157, -157, -157,
1712 -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
1713 157, 157, -157, -157, -157, -157, -157, -157, -157, -157,
1714 -157, -157, 97, -157, -157, -157, -157, -157, -157, -157,
1715 -157, -157, -157, -157
1716
1717 },
1718
1719 {
1720 25, -158, -158, -158, -158, -158, -158, -158, -158, -158,
1721 -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
1722 159, 159, -158, -158, -158, -158, -158, -158, -158, -158,
1723 -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
1724 -158, -158, -158, -158
1725 },
1726
1727 {
1728 25, -159, -159, -159, -159, -159, -159, -159, -159, -159,
1729 -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
1730 159, 159, -159, -159, -159, -159, -159, -159, -159, -159,
1731 -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
1732 -159, -159, -159, -159
1733
1734 },
1735
1736 {
1737 25, -160, -160, -160, -160, -160, 190, -160, -160, -160,
1738 -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
1739 160, 160, -160, -160, -160, -160, -160, -160, 160, 160,
1740 160, 160, 160, 160, 160, 160, 160, 160, 160, -160,
1741 160, 160, -160, -160
1742 },
1743
1744 {
1745 25, -161, -161, -161, -161, -161, -161, -161, -161, -161,
1746 -161, 191, -161, -161, -161, -161, -161, -161, -161, -161,
1747 161, 161, -161, -161, -161, -161, -161, -161, 161, 161,
1748 161, 161, 161, 161, 161, 161, 161, 161, 161, -161,
1749 161, 161, -161, -161
1750
1751 },
1752
1753 {
1754 25, -162, -162, -162, -162, -162, -162, -162, -162, -162,
1755 -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
1756 192, 192, -162, -162, -162, -162, -162, -162, 192, 192,
1757 192, 192, 192, 192, 192, 192, 192, 192, 192, -162,
1758 192, 192, -162, -162
1759 },
1760
1761 {
1762 25, -163, -163, -163, -163, -163, -163, -163, -163, -163,
1763 -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
1764 -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
1765 -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
1766 -163, -163, -163, -163
1767
1768 },
1769
1770 {
1771 25, -164, -164, -164, -164, -164, -164, -164, -164, -164,
1772 -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
1773 -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
1774 -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
1775 -164, -164, -164, -164
1776 },
1777
1778 {
1779 25, -165, 165, 165, 165, -165, -165, -165, -165, -165,
1780 -165, 166, -165, -165, -165, -165, -165, 167, -165, -165,
1781 -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
1782 -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
1783 -165, -165, -165, -165
1784
1785 },
1786
1787 {
1788 25, -166, -166, -166, -166, -166, -166, -166, -166, -166,
1789 -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
1790 -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
1791 -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
1792 -166, -166, -166, -166
1793 },
1794
1795 {
1796 25, -167, -167, -167, -167, -167, -167, -167, -167, -167,
1797 -167, -167, -167, -167, -167, -167, -167, 193, -167, -167,
1798 -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
1799 -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
1800 -167, -167, -167, -167
1801
1802 },
1803
1804 {
1805 25, 194, 195, 117, 117, 194, 194, 194, 194, 194,
1806 194, 194, 194, 194, 194, 194, 194, 196, 194, 194,
1807 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
1808 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
1809 194, 194, 194, 194
1810 },
1811
1812 {
1813 25, -169, -169, -169, -169, 169, -169, 169, -169, 169,
1814 169, -169, -169, -169, 169, 169, -169, 169, -169, 169,
1815 -169, -169, -169, -169, 169, 169, 169, 169, -169, -169,
1816 -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
1817 -169, -169, -169, -169
1818
1819 },
1820
1821 {
1822 25, -170, 170, 170, 170, -170, -170, -170, -170, -170,
1823 -170, 171, -170, -170, -170, -170, -170, 172, -170, -170,
1824 -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
1825 -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
1826 -170, -170, -170, -170
1827 },
1828
1829 {
1830 25, -171, -171, -171, -171, -171, -171, -171, -171, -171,
1831 -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
1832 -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
1833 -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
1834 -171, -171, -171, -171
1835
1836 },
1837
1838 {
1839 25, -172, -172, -172, -172, -172, -172, -172, -172, -172,
1840 -172, -172, -172, -172, -172, -172, -172, 197, -172, -172,
1841 -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
1842 -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
1843 -172, -172, -172, -172
1844 },
1845
1846 {
1847 25, 198, 199, 127, 127, 198, 198, 198, 198, 198,
1848 198, 198, 198, 198, 198, 198, 198, 200, 198, 198,
1849 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
1850 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
1851 198, 198, 198, 198
1852
1853 },
1854
1855 {
1856 25, -174, 174, 174, 174, -174, -174, -174, -174, -174,
1857 -174, 175, -174, -174, -174, -174, -174, 176, -174, -174,
1858 -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
1859 -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
1860 -174, -174, -174, -174
1861 },
1862
1863 {
1864 25, -175, -175, -175, -175, -175, -175, -175, -175, -175,
1865 -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
1866 -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
1867 -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
1868 -175, -175, -175, -175
1869
1870 },
1871
1872 {
1873 25, -176, -176, -176, -176, -176, -176, -176, -176, -176,
1874 -176, -176, -176, -176, -176, -176, -176, 201, -176, -176,
1875 -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
1876 -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
1877 -176, -176, -176, -176
1878 },
1879
1880 {
1881 25, 202, 203, 131, 131, 202, 202, 202, 202, 202,
1882 202, 202, 202, 202, 202, 202, 202, 204, 202, 202,
1883 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
1884 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
1885 202, 202, 202, 202
1886
1887 },
1888
1889 {
1890 25, -178, -178, -178, -178, -178, -178, -178, -178, -178,
1891 -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
1892 205, -178, -178, -178, -178, -178, -178, -178, -178, -178,
1893 -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
1894 -178, -178, -178, -178
1895 },
1896
1897 {
1898 25, -179, -179, -179, -179, -179, -179, -179, -179, -179,
1899 -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
1900 206, 206, -179, -179, -179, -179, -179, -179, 206, 206,
1901 206, 206, 206, -179, -179, -179, -179, -179, -179, -179,
1902 -179, -179, -179, -179
1903
1904 },
1905
1906 {
1907 25, -180, -180, -180, -180, -180, -180, -180, -180, -180,
1908 -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
1909 207, 207, -180, -180, -180, -180, -180, -180, 207, 207,
1910 207, 207, 207, -180, -180, -180, -180, -180, -180, -180,
1911 -180, -180, -180, -180
1912 },
1913
1914 {
1915 25, -181, -181, -181, -181, -181, -181, -181, -181, -181,
1916 -181, -181, -181, -181, -181, -181, -181, -181, -181, -181,
1917 208, 208, -181, -181, -181, -181, -181, -181, 208, 208,
1918 208, 208, 208, -181, -181, -181, -181, -181, -181, -181,
1919 -181, -181, -181, -181
1920
1921 },
1922
1923 {
1924 25, -182, -182, -182, -182, -182, -182, -182, 141, -182,
1925 -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
1926 182, 182, -182, -182, -182, -182, -182, -182, 182, 182,
1927 182, 182, 182, 182, 182, 182, 182, 182, 182, -182,
1928 182, 182, -182, -182
1929 },
1930
1931 {
1932 25, 183, 183, -183, -183, 183, 183, 183, 183, 183,
1933 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1934 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1935 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1936 183, 183, 183, 183
1937
1938 },
1939
1940 {
1941 25, -184, -184, -184, -184, -184, -184, -184, -184, -184,
1942 -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
1943 -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
1944 209, -184, -184, -184, -184, -184, -184, -184, -184, -184,
1945 -184, -184, -184, -184
1946 },
1947
1948 {
1949 25, -185, 185, 185, 185, -185, -185, -185, -185, -185,
1950 -185, 175, -185, -185, -185, -185, -185, 186, -185, -185,
1951 -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
1952 -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
1953 -185, -185, -185, -185
1954
1955 },
1956
1957 {
1958 25, -186, -186, -186, -186, -186, -186, -186, -186, -186,
1959 -186, -186, -186, -186, -186, -186, -186, 210, -186, -186,
1960 -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
1961 -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
1962 -186, -186, -186, -186
1963 },
1964
1965 {
1966 25, 211, 212, 147, 147, 211, 211, 211, 211, 211,
1967 211, 211, 211, 211, 211, 211, 211, 213, 211, 211,
1968 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
1969 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
1970 211, 211, 211, 211
1971
1972 },
1973
1974 {
1975 25, 188, 188, -188, -188, 188, 188, 188, 188, 188,
1976 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
1977 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
1978 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
1979 188, 188, 188, 188
1980 },
1981
1982 {
1983 25, -189, -189, -189, -189, -189, -189, -189, -189, -189,
1984 -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
1985 -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
1986 214, -189, -189, -189, -189, -189, -189, -189, -189, -189,
1987 -189, -189, -189, -189
1988
1989 },
1990
1991 {
1992 25, -190, -190, -190, -190, -190, -190, -190, -190, -190,
1993 -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
1994 -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
1995 -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
1996 -190, -190, -190, -190
1997 },
1998
1999 {
2000 25, -191, -191, -191, -191, -191, -191, -191, -191, -191,
2001 -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
2002 -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
2003 -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
2004 -191, -191, -191, -191
2005
2006 },
2007
2008 {
2009 25, -192, -192, -192, -192, -192, -192, -192, -192, -192,
2010 -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
2011 192, 192, -192, -192, -192, -192, -192, -192, 192, 192,
2012 192, 192, 192, 192, 192, 192, 192, 192, 192, -192,
2013 192, 192, -192, 215
2014 },
2015
2016 {
2017 25, 216, 217, 218, 218, 216, 216, 216, 216, 216,
2018 216, 216, 216, 216, 216, 216, 216, 219, 216, 216,
2019 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
2020 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
2021 216, 216, 216, 216
2022
2023 },
2024
2025 {
2026 25, 194, 195, 117, 117, 194, 194, 194, 194, 194,
2027 194, 194, 194, 194, 194, 194, 194, 196, 194, 194,
2028 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
2029 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
2030 194, 194, 194, 194
2031 },
2032
2033 {
2034 25, 194, 195, 117, 117, 194, 194, 194, 194, 194,
2035 194, 194, 194, 194, 194, 194, 194, 196, 194, 194,
2036 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
2037 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
2038 194, 194, 194, 194
2039
2040 },
2041
2042 {
2043 25, 194, 195, 117, 117, 194, 194, 194, 194, 194,
2044 194, 194, 194, 194, 194, 194, 194, 220, 194, 194,
2045 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
2046 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
2047 194, 194, 194, 194
2048 },
2049
2050 {
2051 25, 221, 222, 223, 223, 221, 221, 221, 221, 221,
2052 221, 221, 221, 221, 221, 221, 221, 224, 221, 221,
2053 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
2054 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
2055 221, 221, 221, 221
2056
2057 },
2058
2059 {
2060 25, 198, 199, 127, 127, 198, 198, 198, 198, 198,
2061 198, 198, 198, 198, 198, 198, 198, 200, 198, 198,
2062 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
2063 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
2064 198, 198, 198, 198
2065 },
2066
2067 {
2068 25, 198, 199, 127, 127, 198, 198, 198, 198, 198,
2069 198, 198, 198, 198, 198, 198, 198, 200, 198, 198,
2070 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
2071 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
2072 198, 198, 198, 198
2073
2074 },
2075
2076 {
2077 25, 198, 199, 127, 127, 198, 198, 198, 198, 198,
2078 198, 198, 198, 198, 198, 198, 198, 225, 198, 198,
2079 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
2080 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
2081 198, 198, 198, 198
2082 },
2083
2084 {
2085 25, 226, 227, 228, 228, 226, 226, 226, 226, 226,
2086 226, 226, 226, 226, 226, 226, 226, 229, 226, 226,
2087 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
2088 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
2089 226, 226, 226, 226
2090
2091 },
2092
2093 {
2094 25, 202, 203, 131, 131, 202, 202, 202, 202, 202,
2095 202, 202, 202, 202, 202, 202, 202, 204, 202, 202,
2096 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
2097 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
2098 202, 202, 202, 202
2099 },
2100
2101 {
2102 25, 202, 203, 131, 131, 202, 202, 202, 202, 202,
2103 202, 202, 202, 202, 202, 202, 202, 204, 202, 202,
2104 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
2105 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
2106 202, 202, 202, 202
2107
2108 },
2109
2110 {
2111 25, 202, 203, 131, 131, 202, 202, 202, 202, 202,
2112 202, 202, 202, 202, 202, 202, 202, 230, 202, 202,
2113 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
2114 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
2115 202, 202, 202, 202
2116 },
2117
2118 {
2119 25, -205, -205, -205, -205, -205, -205, -205, -205, -205,
2120 -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
2121 -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
2122 -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
2123 -205, -205, -205, -205
2124
2125 },
2126
2127 {
2128 25, -206, -206, -206, -206, -206, -206, -206, -206, -206,
2129 -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
2130 231, 231, -206, -206, -206, -206, -206, -206, 231, 231,
2131 231, 231, 231, -206, -206, -206, -206, -206, -206, -206,
2132 -206, -206, -206, -206
2133 },
2134
2135 {
2136 25, -207, -207, -207, -207, -207, -207, -207, -207, -207,
2137 -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
2138 232, 232, -207, -207, -207, -207, -207, -207, 232, 232,
2139 232, 232, 232, -207, -207, -207, -207, -207, -207, -207,
2140 -207, -207, -207, -207
2141
2142 },
2143
2144 {
2145 25, -208, -208, -208, -208, -208, -208, -208, -208, -208,
2146 -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
2147 -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
2148 -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
2149 -208, -208, -208, -208
2150 },
2151
2152 {
2153 25, -209, -209, -209, -209, -209, -209, -209, -209, -209,
2154 -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
2155 -209, -209, -209, -209, -209, -209, -209, -209, 233, -209,
2156 -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
2157 -209, -209, -209, -209
2158
2159 },
2160
2161 {
2162 25, 234, 235, 236, 236, 234, 234, 234, 234, 234,
2163 234, 234, 234, 234, 234, 234, 234, 237, 234, 234,
2164 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
2165 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
2166 234, 234, 234, 234
2167 },
2168
2169 {
2170 25, 211, 212, 147, 147, 211, 211, 211, 211, 211,
2171 211, 211, 211, 211, 211, 211, 211, 213, 211, 211,
2172 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
2173 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
2174 211, 211, 211, 211
2175
2176 },
2177
2178 {
2179 25, 211, 212, 147, 147, 211, 211, 211, 211, 211,
2180 211, 211, 211, 211, 211, 211, 211, 213, 211, 211,
2181 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
2182 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
2183 211, 211, 211, 211
2184 },
2185
2186 {
2187 25, 211, 212, 147, 147, 211, 211, 211, 211, 211,
2188 211, 211, 211, 211, 211, 211, 211, 238, 211, 211,
2189 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
2190 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
2191 211, 211, 211, 211
2192
2193 },
2194
2195 {
2196 25, -214, -214, -214, -214, -214, -214, -214, -214, -214,
2197 -214, -214, -214, -214, -214, -214, -214, -214, -214, -214,
2198 -214, -214, -214, -214, -214, -214, -214, -214, 239, -214,
2199 -214, -214, -214, -214, -214, -214, -214, -214, -214, -214,
2200 -214, -214, -214, -214
2201 },
2202
2203 {
2204 25, -215, -215, -215, -215, -215, -215, -215, -215, -215,
2205 -215, -215, -215, -215, -215, -215, -215, -215, -215, -215,
2206 -215, -215, -215, -215, -215, -215, -215, -215, -215, -215,
2207 -215, -215, -215, -215, -215, -215, -215, -215, -215, -215,
2208 -215, -215, -215, -215
2209
2210 },
2211
2212 {
2213 25, 216, 217, 218, 218, 216, 216, 216, 216, 216,
2214 216, 216, 216, 216, 216, 216, 216, 219, 216, 216,
2215 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
2216 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
2217 216, 216, 216, 216
2218 },
2219
2220 {
2221 25, 216, 217, 218, 218, 216, 216, 216, 216, 216,
2222 216, 216, 216, 216, 216, 216, 216, 219, 216, 216,
2223 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
2224 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
2225 216, 216, 216, 216
2226
2227 },
2228
2229 {
2230 25, -218, 165, 165, 165, -218, -218, -218, -218, -218,
2231 -218, 166, -218, -218, -218, -218, -218, 167, -218, -218,
2232 -218, -218, -218, -218, -218, -218, -218, -218, -218, -218,
2233 -218, -218, -218, -218, -218, -218, -218, -218, -218, -218,
2234 -218, -218, -218, -218
2235 },
2236
2237 {
2238 25, 216, 217, 218, 218, 216, 216, 216, 216, 216,
2239 216, 216, 216, 216, 216, 216, 216, 240, 216, 216,
2240 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
2241 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
2242 216, 216, 216, 216
2243
2244 },
2245
2246 {
2247 25, 194, 195, 117, 117, 194, 194, 194, 194, 194,
2248 194, 194, 194, 194, 194, 194, 194, 220, 194, 194,
2249 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
2250 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
2251 194, 194, 194, 194
2252 },
2253
2254 {
2255 25, 221, 222, 223, 223, 221, 221, 221, 221, 221,
2256 221, 221, 221, 221, 221, 221, 221, 224, 221, 221,
2257 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
2258 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
2259 221, 221, 221, 221
2260
2261 },
2262
2263 {
2264 25, 221, 222, 223, 223, 221, 221, 221, 221, 221,
2265 221, 221, 221, 221, 221, 221, 221, 224, 221, 221,
2266 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
2267 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
2268 221, 221, 221, 221
2269 },
2270
2271 {
2272 25, -223, 170, 170, 170, -223, -223, -223, -223, -223,
2273 -223, 171, -223, -223, -223, -223, -223, 172, -223, -223,
2274 -223, -223, -223, -223, -223, -223, -223, -223, -223, -223,
2275 -223, -223, -223, -223, -223, -223, -223, -223, -223, -223,
2276 -223, -223, -223, -223
2277
2278 },
2279
2280 {
2281 25, 221, 222, 223, 223, 221, 221, 221, 221, 221,
2282 221, 221, 221, 221, 221, 221, 221, 241, 221, 221,
2283 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
2284 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
2285 221, 221, 221, 221
2286 },
2287
2288 {
2289 25, 198, 199, 127, 127, 198, 198, 198, 198, 198,
2290 198, 198, 198, 198, 198, 198, 198, 225, 198, 198,
2291 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
2292 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
2293 198, 198, 198, 198
2294
2295 },
2296
2297 {
2298 25, 226, 227, 228, 228, 226, 226, 226, 226, 226,
2299 226, 226, 226, 226, 226, 226, 226, 229, 226, 226,
2300 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
2301 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
2302 226, 226, 226, 226
2303 },
2304
2305 {
2306 25, 226, 227, 228, 228, 226, 226, 226, 226, 226,
2307 226, 226, 226, 226, 226, 226, 226, 229, 226, 226,
2308 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
2309 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
2310 226, 226, 226, 226
2311
2312 },
2313
2314 {
2315 25, -228, 174, 174, 174, -228, -228, -228, -228, -228,
2316 -228, 175, -228, -228, -228, -228, -228, 176, -228, -228,
2317 -228, -228, -228, -228, -228, -228, -228, -228, -228, -228,
2318 -228, -228, -228, -228, -228, -228, -228, -228, -228, -228,
2319 -228, -228, -228, -228
2320 },
2321
2322 {
2323 25, 226, 227, 228, 228, 226, 226, 226, 226, 226,
2324 226, 226, 226, 226, 226, 226, 226, 242, 226, 226,
2325 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
2326 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
2327 226, 226, 226, 226
2328
2329 },
2330
2331 {
2332 25, 202, 203, 131, 131, 202, 202, 202, 202, 202,
2333 202, 202, 202, 202, 202, 202, 202, 230, 202, 202,
2334 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
2335 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
2336 202, 202, 202, 202
2337 },
2338
2339 {
2340 25, -231, -231, -231, -231, -231, -231, -231, -231, -231,
2341 -231, -231, -231, -231, -231, -231, -231, -231, -231, -231,
2342 243, 243, -231, -231, -231, -231, -231, -231, 243, 243,
2343 243, 243, 243, -231, -231, -231, -231, -231, -231, -231,
2344 -231, -231, -231, -231
2345
2346 },
2347
2348 {
2349 25, -232, -232, -232, -232, -232, -232, -232, -232, -232,
2350 -232, -232, -232, -232, -232, -232, -232, -232, -232, -232,
2351 244, 244, -232, -232, -232, -232, -232, -232, 244, 244,
2352 244, 244, 244, -232, -232, -232, -232, -232, -232, -232,
2353 -232, -232, -232, -232
2354 },
2355
2356 {
2357 25, -233, -233, -233, -233, -233, -233, -233, -233, -233,
2358 -233, -233, -233, -233, -233, -233, -233, -233, -233, -233,
2359 -233, -233, -233, -233, -233, -233, -233, -233, -233, -233,
2360 -233, -233, -233, -233, -233, 245, -233, -233, -233, -233,
2361 -233, -233, -233, -233
2362
2363 },
2364
2365 {
2366 25, 234, 235, 236, 236, 234, 234, 234, 234, 234,
2367 234, 234, 234, 234, 234, 234, 234, 237, 234, 234,
2368 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
2369 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
2370 234, 234, 234, 234
2371 },
2372
2373 {
2374 25, 234, 235, 236, 236, 234, 234, 234, 234, 234,
2375 234, 234, 234, 234, 234, 234, 234, 237, 234, 234,
2376 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
2377 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
2378 234, 234, 234, 234
2379
2380 },
2381
2382 {
2383 25, -236, 185, 185, 185, -236, -236, -236, -236, -236,
2384 -236, 175, -236, -236, -236, -236, -236, 186, -236, -236,
2385 -236, -236, -236, -236, -236, -236, -236, -236, -236, -236,
2386 -236, -236, -236, -236, -236, -236, -236, -236, -236, -236,
2387 -236, -236, -236, -236
2388 },
2389
2390 {
2391 25, 234, 235, 236, 236, 234, 234, 234, 234, 234,
2392 234, 234, 234, 234, 234, 234, 234, 246, 234, 234,
2393 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
2394 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
2395 234, 234, 234, 234
2396
2397 },
2398
2399 {
2400 25, 211, 212, 147, 147, 211, 211, 211, 211, 211,
2401 211, 211, 211, 211, 211, 211, 211, 238, 211, 211,
2402 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
2403 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
2404 211, 211, 211, 211
2405 },
2406
2407 {
2408 25, -239, -239, -239, -239, -239, -239, -239, -239, -239,
2409 -239, -239, -239, -239, -239, -239, -239, -239, -239, -239,
2410 -239, -239, -239, -239, -239, -239, -239, -239, -239, -239,
2411 -239, -239, -239, -239, -239, 247, -239, -239, -239, -239,
2412 -239, -239, -239, -239
2413
2414 },
2415
2416 {
2417 25, 216, 217, 218, 218, 216, 216, 216, 216, 216,
2418 216, 216, 216, 216, 216, 216, 216, 240, 216, 216,
2419 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
2420 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
2421 216, 216, 216, 216
2422 },
2423
2424 {
2425 25, 221, 222, 223, 223, 221, 221, 221, 221, 221,
2426 221, 221, 221, 221, 221, 221, 221, 241, 221, 221,
2427 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
2428 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
2429 221, 221, 221, 221
2430
2431 },
2432
2433 {
2434 25, 226, 227, 228, 228, 226, 226, 226, 226, 226,
2435 226, 226, 226, 226, 226, 226, 226, 242, 226, 226,
2436 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
2437 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
2438 226, 226, 226, 226
2439 },
2440
2441 {
2442 25, -243, -243, -243, -243, -243, -243, -243, -243, -243,
2443 -243, -243, -243, -243, -243, -243, -243, -243, -243, -243,
2444 248, 248, -243, -243, -243, -243, -243, -243, 248, 248,
2445 248, 248, 248, -243, -243, -243, -243, -243, -243, -243,
2446 -243, -243, -243, -243
2447
2448 },
2449
2450 {
2451 25, -244, -244, -244, -244, -244, -244, -244, -244, -244,
2452 -244, -244, -244, -244, -244, -244, -244, -244, -244, -244,
2453 -244, -244, -244, -244, -244, -244, -244, -244, -244, -244,
2454 -244, -244, -244, -244, -244, -244, -244, -244, -244, -244,
2455 -244, -244, -244, -244
2456 },
2457
2458 {
2459 25, -245, -245, -245, -245, -245, -245, -245, -245, -245,
2460 -245, -245, -245, -245, -245, -245, -245, -245, -245, -245,
2461 -245, -245, -245, -245, -245, -245, -245, -245, -245, -245,
2462 -245, -245, 249, -245, -245, -245, -245, -245, -245, -245,
2463 -245, -245, -245, -245
2464
2465 },
2466
2467 {
2468 25, 234, 235, 236, 236, 234, 234, 234, 234, 234,
2469 234, 234, 234, 234, 234, 234, 234, 246, 234, 234,
2470 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
2471 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
2472 234, 234, 234, 234
2473 },
2474
2475 {
2476 25, -247, -247, -247, -247, -247, -247, -247, -247, -247,
2477 -247, -247, -247, -247, -247, -247, -247, -247, -247, -247,
2478 -247, -247, -247, -247, -247, -247, -247, -247, -247, -247,
2479 -247, -247, 250, -247, -247, -247, -247, -247, -247, -247,
2480 -247, -247, -247, -247
2481
2482 },
2483
2484 {
2485 25, -248, -248, -248, -248, -248, -248, -248, -248, -248,
2486 -248, -248, -248, -248, -248, -248, -248, -248, -248, -248,
2487 251, 251, -248, -248, -248, -248, -248, -248, 251, 251,
2488 251, 251, 251, -248, -248, -248, -248, -248, -248, -248,
2489 -248, -248, -248, -248
2490 },
2491
2492 {
2493 25, -249, 252, 252, 252, -249, -249, -249, -249, -249,
2494 -249, 253, -249, -249, -249, -249, -249, 254, -249, -249,
2495 -249, -249, -249, -249, -249, -249, -249, -249, -249, -249,
2496 -249, -249, -249, -249, -249, -249, -249, -249, -249, -249,
2497 -249, -249, -249, -249
2498
2499 },
2500
2501 {
2502 25, -250, 255, 255, 255, -250, -250, -250, -250, -250,
2503 -250, 256, -250, -250, -250, -250, -250, 257, -250, -250,
2504 -250, -250, -250, -250, -250, -250, -250, -250, -250, -250,
2505 -250, -250, -250, -250, -250, -250, -250, -250, -250, -250,
2506 -250, -250, -250, -250
2507 },
2508
2509 {
2510 25, -251, -251, -251, -251, -251, -251, -251, -251, -251,
2511 -251, -251, -251, -251, -251, -251, -251, -251, -251, -251,
2512 258, 258, -251, -251, -251, -251, -251, -251, 258, 258,
2513 258, 258, 258, -251, -251, -251, -251, -251, -251, -251,
2514 -251, -251, -251, -251
2515
2516 },
2517
2518 {
2519 25, -252, 252, 252, 252, -252, -252, -252, -252, -252,
2520 -252, 253, -252, -252, -252, -252, -252, 254, -252, -252,
2521 -252, -252, -252, -252, -252, -252, -252, -252, -252, -252,
2522 -252, -252, -252, -252, -252, -252, -252, -252, -252, -252,
2523 -252, -252, -252, -252
2524 },
2525
2526 {
2527 25, 259, 259, 259, 259, 259, 259, 259, 259, 259,
2528 259, -253, 259, 259, 259, 259, 259, 259, 259, 259,
2529 259, 259, 259, 259, 259, 259, 259, 259, 259, 259,
2530 259, 259, 259, 259, 259, 259, 259, 259, 259, 259,
2531 259, 259, 259, 259
2532
2533 },
2534
2535 {
2536 25, -254, -254, -254, -254, -254, -254, -254, -254, -254,
2537 -254, -254, -254, -254, -254, -254, -254, 260, -254, -254,
2538 -254, -254, -254, -254, -254, -254, -254, -254, -254, -254,
2539 -254, -254, -254, -254, -254, -254, -254, -254, -254, -254,
2540 -254, -254, -254, -254
2541 },
2542
2543 {
2544 25, -255, 255, 255, 255, -255, -255, -255, -255, -255,
2545 -255, 256, -255, -255, -255, -255, -255, 257, -255, -255,
2546 -255, -255, -255, -255, -255, -255, -255, -255, -255, -255,
2547 -255, -255, -255, -255, -255, -255, -255, -255, -255, -255,
2548 -255, -255, -255, -255
2549
2550 },
2551
2552 {
2553 25, 261, 261, 261, 261, 261, 261, 261, 261, 261,
2554 261, -256, 261, 261, 261, 261, 261, 261, 261, 261,
2555 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
2556 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
2557 261, 261, 261, 261
2558 },
2559
2560 {
2561 25, -257, -257, -257, -257, -257, -257, -257, -257, -257,
2562 -257, -257, -257, -257, -257, -257, -257, 262, -257, -257,
2563 -257, -257, -257, -257, -257, -257, -257, -257, -257, -257,
2564 -257, -257, -257, -257, -257, -257, -257, -257, -257, -257,
2565 -257, -257, -257, -257
2566
2567 },
2568
2569 {
2570 25, -258, -258, -258, -258, -258, -258, -258, -258, -258,
2571 -258, -258, -258, -258, -258, -258, -258, -258, -258, -258,
2572 244, 244, -258, -258, -258, -258, -258, -258, 244, 244,
2573 244, 244, 244, -258, -258, -258, -258, -258, -258, -258,
2574 -258, -258, -258, -258
2575 },
2576
2577 {
2578 25, -259, -259, -259, -259, -259, -259, -259, -259, -259,
2579 -259, 263, -259, -259, -259, -259, -259, -259, -259, -259,
2580 -259, -259, -259, -259, -259, -259, -259, -259, -259, -259,
2581 -259, -259, -259, -259, -259, -259, -259, -259, -259, -259,
2582 -259, -259, -259, -259
2583
2584 },
2585
2586 {
2587 25, 264, 265, 252, 252, 264, 264, 264, 264, 264,
2588 264, 266, 264, 264, 264, 264, 264, 267, 264, 264,
2589 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
2590 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
2591 264, 264, 264, 264
2592 },
2593
2594 {
2595 25, -261, -261, -261, -261, -261, -261, -261, -261, -261,
2596 -261, 268, -261, -261, -261, -261, -261, -261, -261, -261,
2597 -261, -261, -261, -261, -261, -261, -261, -261, -261, -261,
2598 -261, -261, -261, -261, -261, -261, -261, -261, -261, -261,
2599 -261, -261, -261, -261
2600
2601 },
2602
2603 {
2604 25, 269, 270, 255, 255, 269, 269, 269, 269, 269,
2605 269, 271, 269, 269, 269, 269, 269, 272, 269, 269,
2606 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
2607 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
2608 269, 269, 269, 269
2609 },
2610
2611 {
2612 25, -263, -263, -263, -263, -263, -263, -263, -263, -263,
2613 -263, -263, -263, -263, -263, -263, -263, -263, -263, -263,
2614 -263, -263, -263, -263, -263, -263, -263, -263, -263, -263,
2615 -263, -263, -263, -263, -263, -263, -263, -263, -263, -263,
2616 -263, -263, -263, -263
2617
2618 },
2619
2620 {
2621 25, 264, 265, 252, 252, 264, 264, 264, 264, 264,
2622 264, 266, 264, 264, 264, 264, 264, 267, 264, 264,
2623 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
2624 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
2625 264, 264, 264, 264
2626 },
2627
2628 {
2629 25, 264, 265, 252, 252, 264, 264, 264, 264, 264,
2630 264, 266, 264, 264, 264, 264, 264, 267, 264, 264,
2631 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
2632 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
2633 264, 264, 264, 264
2634
2635 },
2636
2637 {
2638 25, 273, 274, 275, 275, 273, 273, 273, 273, 273,
2639 273, 266, 273, 273, 273, 273, 273, 276, 273, 273,
2640 273, 273, 273, 273, 273, 273, 273, 273, 273, 273,
2641 273, 273, 273, 273, 273, 273, 273, 273, 273, 273,
2642 273, 273, 273, 273
2643 },
2644
2645 {
2646 25, 264, 265, 252, 252, 264, 264, 264, 264, 264,
2647 264, 266, 264, 264, 264, 264, 264, 277, 264, 264,
2648 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
2649 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
2650 264, 264, 264, 264
2651
2652 },
2653
2654 {
2655 25, -268, -268, -268, -268, -268, -268, -268, -268, -268,
2656 -268, -268, -268, -268, -268, -268, -268, -268, -268, -268,
2657 -268, -268, -268, -268, -268, -268, -268, -268, -268, -268,
2658 -268, -268, -268, -268, -268, -268, -268, -268, -268, -268,
2659 -268, -268, -268, -268
2660 },
2661
2662 {
2663 25, 269, 270, 255, 255, 269, 269, 269, 269, 269,
2664 269, 271, 269, 269, 269, 269, 269, 272, 269, 269,
2665 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
2666 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
2667 269, 269, 269, 269
2668
2669 },
2670
2671 {
2672 25, 269, 270, 255, 255, 269, 269, 269, 269, 269,
2673 269, 271, 269, 269, 269, 269, 269, 272, 269, 269,
2674 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
2675 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
2676 269, 269, 269, 269
2677 },
2678
2679 {
2680 25, 278, 279, 280, 280, 278, 278, 278, 278, 278,
2681 278, 271, 278, 278, 278, 278, 278, 281, 278, 278,
2682 278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
2683 278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
2684 278, 278, 278, 278
2685
2686 },
2687
2688 {
2689 25, 269, 270, 255, 255, 269, 269, 269, 269, 269,
2690 269, 271, 269, 269, 269, 269, 269, 282, 269, 269,
2691 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
2692 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
2693 269, 269, 269, 269
2694 },
2695
2696 {
2697 25, 264, 265, 252, 252, 264, 264, 264, 264, 264,
2698 264, 283, 264, 264, 264, 264, 264, 267, 264, 264,
2699 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
2700 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
2701 264, 264, 264, 264
2702
2703 },
2704
2705 {
2706 25, 264, 265, 252, 252, 264, 264, 264, 264, 264,
2707 264, 283, 264, 264, 264, 264, 264, 267, 264, 264,
2708 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
2709 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
2710 264, 264, 264, 264
2711 },
2712
2713 {
2714 25, -275, 252, 252, 252, -275, -275, -275, -275, -275,
2715 -275, 284, -275, -275, -275, -275, -275, 254, -275, -275,
2716 -275, -275, -275, -275, -275, -275, -275, -275, -275, -275,
2717 -275, -275, -275, -275, -275, -275, -275, -275, -275, -275,
2718 -275, -275, -275, -275
2719
2720 },
2721
2722 {
2723 25, 264, 265, 252, 252, 264, 264, 264, 264, 264,
2724 264, 283, 264, 264, 264, 264, 264, 277, 264, 264,
2725 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
2726 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
2727 264, 264, 264, 264
2728 },
2729
2730 {
2731 25, 264, 265, 252, 252, 264, 264, 264, 264, 264,
2732 264, 266, 264, 264, 264, 264, 264, 277, 264, 264,
2733 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
2734 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
2735 264, 264, 264, 264
2736
2737 },
2738
2739 {
2740 25, 269, 270, 255, 255, 269, 269, 269, 269, 269,
2741 269, 285, 269, 269, 269, 269, 269, 272, 269, 269,
2742 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
2743 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
2744 269, 269, 269, 269
2745 },
2746
2747 {
2748 25, 269, 270, 255, 255, 269, 269, 269, 269, 269,
2749 269, 285, 269, 269, 269, 269, 269, 272, 269, 269,
2750 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
2751 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
2752 269, 269, 269, 269
2753
2754 },
2755
2756 {
2757 25, -280, 255, 255, 255, -280, -280, -280, -280, -280,
2758 -280, 286, -280, -280, -280, -280, -280, 257, -280, -280,
2759 -280, -280, -280, -280, -280, -280, -280, -280, -280, -280,
2760 -280, -280, -280, -280, -280, -280, -280, -280, -280, -280,
2761 -280, -280, -280, -280
2762 },
2763
2764 {
2765 25, 269, 270, 255, 255, 269, 269, 269, 269, 269,
2766 269, 285, 269, 269, 269, 269, 269, 282, 269, 269,
2767 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
2768 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
2769 269, 269, 269, 269
2770
2771 },
2772
2773 {
2774 25, 269, 270, 255, 255, 269, 269, 269, 269, 269,
2775 269, 271, 269, 269, 269, 269, 269, 282, 269, 269,
2776 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
2777 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
2778 269, 269, 269, 269
2779 },
2780
2781 {
2782 25, 273, 274, 275, 275, 273, 273, 273, 273, 273,
2783 273, 266, 273, 273, 273, 273, 273, 276, 273, 273,
2784 273, 273, 273, 273, 273, 273, 273, 273, 273, 273,
2785 273, 273, 273, 273, 273, 273, 273, 273, 273, 273,
2786 273, 273, 273, 273
2787
2788 },
2789
2790 {
2791 25, 259, 259, 259, 259, 259, 259, 259, 259, 259,
2792 259, -284, 259, 259, 259, 259, 259, 259, 259, 259,
2793 259, 259, 259, 259, 259, 259, 259, 259, 259, 259,
2794 259, 259, 259, 259, 259, 259, 259, 259, 259, 259,
2795 259, 259, 259, 259
2796 },
2797
2798 {
2799 25, 278, 279, 280, 280, 278, 278, 278, 278, 278,
2800 278, 271, 278, 278, 278, 278, 278, 281, 278, 278,
2801 278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
2802 278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
2803 278, 278, 278, 278
2804
2805 },
2806
2807 {
2808 25, 261, 261, 261, 261, 261, 261, 261, 261, 261,
2809 261, -286, 261, 261, 261, 261, 261, 261, 261, 261,
2810 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
2811 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
2812 261, 261, 261, 261
2813 },
2814
2815 } ;
2816
2817static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
2818static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner);
2819static int yy_get_next_buffer (yyscan_t yyscanner );
2820static void yynoreturn yy_fatal_error (yyconst char* msg ,yyscan_t yyscanner );
2821
2822/* Done after the current pattern has been matched and before the
2823 * corresponding action - sets up yytext.
2824 */
2825#define YY_DO_BEFORE_ACTION \
2826 yyg->yytext_ptr = yy_bp; \
2827 yyleng = (int) (yy_cp - yy_bp); \
2828 yyg->yy_hold_char = *yy_cp; \
2829 *yy_cp = '\0'; \
2830 yyg->yy_c_buf_p = yy_cp;
2831
2832#define YY_NUM_RULES 89
2833#define YY_END_OF_BUFFER 90
2834/* This struct is not used in this scanner,
2835 but its presence is necessary. */
2836struct yy_trans_info
2837 {
2838 flex_int32_t yy_verify;
2839 flex_int32_t yy_nxt;
2840 };
2841static yyconst flex_int16_t yy_accept[287] =
2842 { 0,
2843 0, 0, 12, 12, 0, 0, 0, 0, 11, 11,
2844 0, 0, 0, 0, 0, 0, 0, 0, 52, 52,
2845 0, 0, 28, 28, 90, 88, 1, 1, 79, 46,
2846 79, 88, 78, 19, 65, 66, 78, 78, 78, 78,
2847 81, 78, 67, 78, 78, 78, 87, 87, 87, 87,
2848 87, 87, 69, 12, 9, 5, 5, 6, 6, 55,
2849 48, 11, 16, 31, 22, 32, 32, 22, 39, 43,
2850 43, 45, 49, 51, 50, 50, 51, 51, 24, 27,
2851 26, 26, 27, 27, 1, 79, 64, 40, 80, 41,
2852 1, 58, 82, 2, 82, 81, 85, 75, 74, 70,
2853
2854 57, 59, 77, 61, 63, 60, 62, 87, 8, 20,
2855 18, 56, 15, 68, 12, 9, 9, 10, 5, 7,
2856 4, 3, 55, 54, 11, 16, 16, 17, 31, 22,
2857 22, 30, 23, 32, 35, 36, 34, 34, 35, 43,
2858 42, 44, 50, 50, 52, 24, 24, 25, 26, 26,
2859 28, 41, 1, 1, 2, 83, 82, 86, 84, 75,
2860 74, 76, 47, 21, 9, 14, 10, 9, 3, 16,
2861 13, 17, 16, 22, 38, 23, 22, 36, 34, 34,
2862 37, 44, 50, 52, 24, 25, 24, 26, 28, 72,
2863 71, 76, 9, 9, 9, 9, 16, 16, 16, 16,
2864
2865 22, 22, 22, 22, 36, 34, 34, 37, 52, 24,
2866 24, 24, 24, 28, 73, 9, 9, 9, 9, 9,
2867 16, 16, 16, 16, 16, 22, 22, 22, 22, 22,
2868 34, 34, 52, 24, 24, 24, 24, 24, 28, 9,
2869 16, 22, 34, 33, 52, 24, 28, 34, 52, 28,
2870 34, 52, 52, 52, 28, 28, 28, 34, 52, 52,
2871 28, 28, 53, 52, 52, 52, 52, 29, 28, 28,
2872 28, 28, 52, 52, 52, 52, 52, 28, 28, 28,
2873 28, 28, 52, 52, 28, 28
2874 } ;
2875
2876static yyconst YY_CHAR yy_ec[256] =
2877 { 0,
2878 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
2879 1, 2, 4, 1, 1, 1, 1, 1, 1, 1,
2880 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2881 1, 2, 5, 6, 7, 8, 9, 10, 11, 12,
2882 13, 14, 15, 16, 17, 18, 19, 20, 20, 20,
2883 20, 20, 20, 20, 20, 21, 21, 22, 23, 24,
2884 25, 26, 27, 7, 28, 29, 30, 31, 32, 31,
2885 33, 33, 33, 33, 33, 33, 33, 34, 33, 35,
2886 33, 33, 36, 33, 37, 33, 33, 38, 33, 33,
2887 16, 39, 16, 9, 33, 7, 28, 29, 30, 31,
2888
2889 32, 31, 33, 33, 33, 33, 33, 33, 33, 34,
2890 33, 35, 33, 33, 36, 33, 40, 33, 33, 41,
2891 33, 33, 42, 7, 43, 7, 1, 33, 33, 33,
2892 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
2893 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
2894 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
2895 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
2896 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
2897 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
2898 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
2899
2900 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
2901 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
2902 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
2903 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
2904 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
2905 33, 33, 33, 33, 33
2906 } ;
2907
2908/* The intent behind this definition is that it'll catch
2909 * any uses of REJECT which flex missed.
2910 */
2911#define REJECT reject_used_but_not_detected
2912#define yymore() yymore_used_but_not_detected
2913#define YY_MORE_ADJ 0
2914#define YY_RESTORE_YY_MORE_OFFSET
2915#line 1 "psqlscan.l"
2916
2917#line 44 "psqlscan.l"
2918
2919/* LCOV_EXCL_START */
2920
2921#include "fe_utils/psqlscan_int.h"
2922
2923/*
2924 * We must have a typedef YYSTYPE for psql_yylex's first argument, but this lexer
2925 * doesn't presently make use of that argument, so just declare it as int.
2926 */
2927typedef int YYSTYPE;
2928
2929/*
2930 * Set the type of yyextra; we use it as a pointer back to the containing
2931 * PsqlScanState.
2932 */
2933#define YY_EXTRA_TYPE PsqlScanState
2934
2935
2936/* Return values from psql_yylex() */
2937#define LEXRES_EOL 0 /* end of input */
2938#define LEXRES_SEMI 1 /* command-terminating semicolon found */
2939#define LEXRES_BACKSLASH 2 /* backslash command start */
2940
2941
2942#define ECHO psqlscan_emit(cur_state, yytext, yyleng)
2943
2944/*
2945 * Work around a bug in flex 2.5.35: it emits a couple of functions that
2946 * it forgets to emit declarations for. Since we use -Wmissing-prototypes,
2947 * this would cause warnings. Providing our own declarations should be
2948 * harmless even when the bug gets fixed.
2949 */
2950extern int psql_yyget_column(yyscan_t yyscanner);
2951extern void psql_yyset_column(int column_no, yyscan_t yyscanner);
2952
2953#define YY_NO_INPUT 1
2954/*
2955 * All of the following definitions and rules should exactly match
2956 * src/backend/parser/scan.l so far as the flex patterns are concerned.
2957 * The rule bodies are just ECHO as opposed to what the backend does,
2958 * however. (But be sure to duplicate code that affects the lexing process,
2959 * such as BEGIN() and yyless().) Also, psqlscan uses a single <<EOF>> rule
2960 * whereas scan.l has a separate one for each exclusive state.
2961 */
2962/*
2963 * OK, here is a short description of lex/flex rules behavior.
2964 * The longest pattern which matches an input string is always chosen.
2965 * For equal-length patterns, the first occurring in the rules list is chosen.
2966 * INITIAL is the starting state, to which all non-conditional rules apply.
2967 * Exclusive states change parsing rules while the state is active. When in
2968 * an exclusive state, only those rules defined for that state apply.
2969 *
2970 * We use exclusive states for quoted strings, extended comments,
2971 * and to eliminate parsing troubles for numeric strings.
2972 * Exclusive states:
2973 * <xb> bit string literal
2974 * <xc> extended C-style comments
2975 * <xd> delimited identifiers (double-quoted identifiers)
2976 * <xh> hexadecimal numeric string
2977 * <xq> standard quoted strings
2978 * <xe> extended quoted strings (support backslash escape sequences)
2979 * <xdolq> $foo$ quoted strings
2980 * <xui> quoted identifier with Unicode escapes
2981 * <xuiend> end of a quoted identifier with Unicode escapes, UESCAPE can follow
2982 * <xus> quoted string with Unicode escapes
2983 * <xusend> end of a quoted string with Unicode escapes, UESCAPE can follow
2984 *
2985 * Note: we intentionally don't mimic the backend's <xeu> state; we have
2986 * no need to distinguish it from <xe> state, and no good way to get out
2987 * of it in error cases. The backend just throws yyerror() in those
2988 * cases, but that's not an option here.
2989 */
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001/*
3002 * In order to make the world safe for Windows and Mac clients as well as
3003 * Unix ones, we accept either \n or \r as a newline. A DOS-style \r\n
3004 * sequence will be seen as two successive newlines, but that doesn't cause
3005 * any problems. Comments that start with -- and extend to the next
3006 * newline are treated as equivalent to a single whitespace character.
3007 *
3008 * NOTE a fine point: if there is no newline following --, we will absorb
3009 * everything to the end of the input as a comment. This is correct. Older
3010 * versions of Postgres failed to recognize -- as a comment if the input
3011 * did not end with a newline.
3012 *
3013 * XXX perhaps \f (formfeed) should be treated as a newline as well?
3014 *
3015 * XXX if you change the set of whitespace characters, fix scanner_isspace()
3016 * to agree.
3017 */
3018/*
3019 * SQL requires at least one newline in the whitespace separating
3020 * string literals that are to be concatenated. Silly, but who are we
3021 * to argue? Note that {whitespace_with_newline} should not have * after
3022 * it, whereas {whitespace} should generally have a * after it...
3023 */
3024/*
3025 * To ensure that {quotecontinue} can be scanned without having to back up
3026 * if the full pattern isn't matched, we include trailing whitespace in
3027 * {quotestop}. This matches all cases where {quotecontinue} fails to match,
3028 * except for {quote} followed by whitespace and just one "-" (not two,
3029 * which would start a {comment}). To cover that we have {quotefail}.
3030 * The actions for {quotestop} and {quotefail} must throw back characters
3031 * beyond the quote proper.
3032 */
3033/* Bit string
3034 * It is tempting to scan the string for only those characters
3035 * which are allowed. However, this leads to silently swallowed
3036 * characters if illegal characters are included in the string.
3037 * For example, if xbinside is [01] then B'ABCD' is interpreted
3038 * as a zero-length string, and the ABCD' is lost!
3039 * Better to pass the string forward and let the input routines
3040 * validate the contents.
3041 */
3042/* Hexadecimal number */
3043/* National character */
3044/* Quoted string that allows backslash escapes */
3045/* Extended quote
3046 * xqdouble implements embedded quote, ''''
3047 */
3048/* $foo$ style quotes ("dollar quoting")
3049 * The quoted string starts with $foo$ where "foo" is an optional string
3050 * in the form of an identifier, except that it may not contain "$",
3051 * and extends to the first occurrence of an identical string.
3052 * There is *no* processing of the quoted text.
3053 *
3054 * {dolqfailed} is an error rule to avoid scanner backup when {dolqdelim}
3055 * fails to match its trailing "$".
3056 */
3057/* Double quote
3058 * Allows embedded spaces and other special characters into identifiers.
3059 */
3060/* Unicode escapes */
3061/* error rule to avoid backup */
3062/* Quoted identifier with Unicode escapes */
3063/* Quoted string with Unicode escapes */
3064/* Optional UESCAPE after a quoted string or identifier with Unicode escapes. */
3065/* error rule to avoid backup */
3066/* C-style comments
3067 *
3068 * The "extended comment" syntax closely resembles allowable operator syntax.
3069 * The tricky part here is to get lex to recognize a string starting with
3070 * slash-star as a comment, when interpreting it as an operator would produce
3071 * a longer match --- remember lex will prefer a longer match! Also, if we
3072 * have something like plus-slash-star, lex will think this is a 3-character
3073 * operator whereas we want to see it as a + operator and a comment start.
3074 * The solution is two-fold:
3075 * 1. append {op_chars}* to xcstart so that it matches as much text as
3076 * {operator} would. Then the tie-breaker (first matching rule of same
3077 * length) ensures xcstart wins. We put back the extra stuff with yyless()
3078 * in case it contains a star-slash that should terminate the comment.
3079 * 2. In the operator rule, check for slash-star within the operator, and
3080 * if found throw it back with yyless(). This handles the plus-slash-star
3081 * problem.
3082 * Dash-dash comments have similar interactions with the operator rule.
3083 */
3084/* Assorted special-case operators and operator-like tokens */
3085/*
3086 * These operator-like tokens (unlike the above ones) also match the {operator}
3087 * rule, which means that they might be overridden by a longer match if they
3088 * are followed by a comment start or a + or - character. Accordingly, if you
3089 * add to this list, you must also add corresponding code to the {operator}
3090 * block to return the correct token in such cases. (This is not needed in
3091 * psqlscan.l since the token value is ignored there.)
3092 */
3093/*
3094 * "self" is the set of chars that should be returned as single-character
3095 * tokens. "op_chars" is the set of chars that can make up "Op" tokens,
3096 * which can be one or more characters long (but if a single-char token
3097 * appears in the "self" set, it is not to be returned as an Op). Note
3098 * that the sets overlap, but each has some chars that are not in the other.
3099 *
3100 * If you change either set, adjust the character lists appearing in the
3101 * rule for "operator"!
3102 */
3103/* we no longer allow unary minus in numbers.
3104 * instead we pass it separately to parser. there it gets
3105 * coerced via doNegate() -- Leon aug 20 1999
3106 *
3107 * {decimalfail} is used because we would like "1..10" to lex as 1, dot_dot, 10.
3108 *
3109 * {realfail1} and {realfail2} are added to prevent the need for scanner
3110 * backup when the {real} rule fails to match completely.
3111 */
3112/* psql-specific: characters allowed in variable names */
3113/*
3114 * Dollar quoted strings are totally opaque, and no escaping is done on them.
3115 * Other quoted strings must allow some special characters such as single-quote
3116 * and newline.
3117 * Embedded single-quotes are implemented both in the SQL standard
3118 * style of two adjacent single quotes "''" and in the Postgres/Java style
3119 * of escaped-quote "\'".
3120 * Other embedded escaped characters are matched explicitly and the leading
3121 * backslash is dropped from the string.
3122 * Note that xcstart must appear before operator, as explained above!
3123 * Also whitespace (comment) must appear before operator.
3124 */
3125#line 3126 "psqlscan.c"
3126
3127#define INITIAL 0
3128#define xb 1
3129#define xc 2
3130#define xd 3
3131#define xh 4
3132#define xq 5
3133#define xe 6
3134#define xdolq 7
3135#define xui 8
3136#define xuiend 9
3137#define xus 10
3138#define xusend 11
3139
3140#ifndef YY_NO_UNISTD_H
3141/* Special case for "unistd.h", since it is non-ANSI. We include it way
3142 * down here because we want the user's section 1 to have been scanned first.
3143 * The user has a chance to override it with an option.
3144 */
3145#include <unistd.h>
3146#endif
3147
3148#ifndef YY_EXTRA_TYPE
3149#define YY_EXTRA_TYPE void *
3150#endif
3151
3152/* Holds the entire state of the reentrant scanner. */
3153struct yyguts_t
3154 {
3155
3156 /* User-defined. Not touched by flex. */
3157 YY_EXTRA_TYPE yyextra_r;
3158
3159 /* The rest are the same as the globals declared in the non-reentrant scanner. */
3160 FILE *yyin_r, *yyout_r;
3161 size_t yy_buffer_stack_top; /**< index of top of stack. */
3162 size_t yy_buffer_stack_max; /**< capacity of stack. */
3163 YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
3164 char yy_hold_char;
3165 int yy_n_chars;
3166 int yyleng_r;
3167 char *yy_c_buf_p;
3168 int yy_init;
3169 int yy_start;
3170 int yy_did_buffer_switch_on_eof;
3171 int yy_start_stack_ptr;
3172 int yy_start_stack_depth;
3173 int *yy_start_stack;
3174 yy_state_type yy_last_accepting_state;
3175 char* yy_last_accepting_cpos;
3176
3177 int yylineno_r;
3178 int yy_flex_debug_r;
3179
3180 char *yytext_r;
3181 int yy_more_flag;
3182 int yy_more_len;
3183
3184 YYSTYPE * yylval_r;
3185
3186 }; /* end struct yyguts_t */
3187
3188static int yy_init_globals (yyscan_t yyscanner );
3189
3190 /* This must go here because YYSTYPE and YYLTYPE are included
3191 * from bison output in section 1.*/
3192 # define yylval yyg->yylval_r
3193
3194int psql_yylex_init (yyscan_t* scanner);
3195
3196int psql_yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
3197
3198/* Accessor methods to globals.
3199 These are made visible to non-reentrant scanners for convenience. */
3200
3201int psql_yylex_destroy (yyscan_t yyscanner );
3202
3203int psql_yyget_debug (yyscan_t yyscanner );
3204
3205void psql_yyset_debug (int debug_flag ,yyscan_t yyscanner );
3206
3207YY_EXTRA_TYPE psql_yyget_extra (yyscan_t yyscanner );
3208
3209void psql_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
3210
3211FILE *psql_yyget_in (yyscan_t yyscanner );
3212
3213void psql_yyset_in (FILE * _in_str ,yyscan_t yyscanner );
3214
3215FILE *psql_yyget_out (yyscan_t yyscanner );
3216
3217void psql_yyset_out (FILE * _out_str ,yyscan_t yyscanner );
3218
3219 int psql_yyget_leng (yyscan_t yyscanner );
3220
3221char *psql_yyget_text (yyscan_t yyscanner );
3222
3223int psql_yyget_lineno (yyscan_t yyscanner );
3224
3225void psql_yyset_lineno (int _line_number ,yyscan_t yyscanner );
3226
3227int psql_yyget_column (yyscan_t yyscanner );
3228
3229void psql_yyset_column (int _column_no ,yyscan_t yyscanner );
3230
3231YYSTYPE * psql_yyget_lval (yyscan_t yyscanner );
3232
3233void psql_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
3234
3235/* Macros after this point can all be overridden by user definitions in
3236 * section 1.
3237 */
3238
3239#ifndef YY_SKIP_YYWRAP
3240#ifdef __cplusplus
3241extern "C" int psql_yywrap (yyscan_t yyscanner );
3242#else
3243extern int psql_yywrap (yyscan_t yyscanner );
3244#endif
3245#endif
3246
3247#ifndef YY_NO_UNPUT
3248
3249#endif
3250
3251#ifndef yytext_ptr
3252static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
3253#endif
3254
3255#ifdef YY_NEED_STRLEN
3256static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
3257#endif
3258
3259#ifndef YY_NO_INPUT
3260
3261#ifdef __cplusplus
3262static int yyinput (yyscan_t yyscanner );
3263#else
3264static int input (yyscan_t yyscanner );
3265#endif
3266
3267#endif
3268
3269/* Amount of stuff to slurp up with each read. */
3270#ifndef YY_READ_BUF_SIZE
3271#ifdef __ia64__
3272/* On IA-64, the buffer size is 16k, not 8k */
3273#define YY_READ_BUF_SIZE 16384
3274#else
3275#define YY_READ_BUF_SIZE 8192
3276#endif /* __ia64__ */
3277#endif
3278
3279/* Copy whatever the last rule matched to the standard output. */
3280#ifndef ECHO
3281/* This used to be an fputs(), but since the string might contain NUL's,
3282 * we now use fwrite().
3283 */
3284#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
3285#endif
3286
3287/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
3288 * is returned in "result".
3289 */
3290#ifndef YY_INPUT
3291#define YY_INPUT(buf,result,max_size) \
3292 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
3293 { \
3294 int c = '*'; \
3295 size_t n; \
3296 for ( n = 0; n < max_size && \
3297 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
3298 buf[n] = (char) c; \
3299 if ( c == '\n' ) \
3300 buf[n++] = (char) c; \
3301 if ( c == EOF && ferror( yyin ) ) \
3302 YY_FATAL_ERROR( "input in flex scanner failed" ); \
3303 result = n; \
3304 } \
3305 else \
3306 { \
3307 errno=0; \
3308 while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
3309 { \
3310 if( errno != EINTR) \
3311 { \
3312 YY_FATAL_ERROR( "input in flex scanner failed" ); \
3313 break; \
3314 } \
3315 errno=0; \
3316 clearerr(yyin); \
3317 } \
3318 }\
3319\
3320
3321#endif
3322
3323/* No semi-colon after return; correct usage is to write "yyterminate();" -
3324 * we don't want an extra ';' after the "return" because that will cause
3325 * some compilers to complain about unreachable statements.
3326 */
3327#ifndef yyterminate
3328#define yyterminate() return YY_NULL
3329#endif
3330
3331/* Number of entries by which start-condition stack grows. */
3332#ifndef YY_START_STACK_INCR
3333#define YY_START_STACK_INCR 25
3334#endif
3335
3336/* Report a fatal error. */
3337#ifndef YY_FATAL_ERROR
3338#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
3339#endif
3340
3341/* end tables serialization structures and prototypes */
3342
3343/* Default declaration of generated scanner - a define so the user can
3344 * easily add parameters.
3345 */
3346#ifndef YY_DECL
3347#define YY_DECL_IS_OURS 1
3348
3349extern int psql_yylex \
3350 (YYSTYPE * yylval_param ,yyscan_t yyscanner);
3351
3352#define YY_DECL int psql_yylex \
3353 (YYSTYPE * yylval_param , yyscan_t yyscanner)
3354#endif /* !YY_DECL */
3355
3356/* Code executed at the beginning of each rule, after yytext and yyleng
3357 * have been set up.
3358 */
3359#ifndef YY_USER_ACTION
3360#define YY_USER_ACTION
3361#endif
3362
3363/* Code executed at the end of each rule. */
3364#ifndef YY_BREAK
3365#define YY_BREAK /*LINTED*/break;
3366#endif
3367
3368#define YY_RULE_SETUP \
3369 YY_USER_ACTION
3370
3371/** The main scanner function which does all the work.
3372 */
3373YY_DECL
3374{
3375 yy_state_type yy_current_state;
3376 char *yy_cp, *yy_bp;
3377 int yy_act;
3378 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3379
3380 yylval = yylval_param;
3381
3382 if ( !yyg->yy_init )
3383 {
3384 yyg->yy_init = 1;
3385
3386#ifdef YY_USER_INIT
3387 YY_USER_INIT;
3388#endif
3389
3390 if ( ! yyg->yy_start )
3391 yyg->yy_start = 1; /* first start state */
3392
3393 if ( ! yyin )
3394 yyin = stdin;
3395
3396 if ( ! yyout )
3397 yyout = stdout;
3398
3399 if ( ! YY_CURRENT_BUFFER ) {
3400 psql_yyensure_buffer_stack (yyscanner);
3401 YY_CURRENT_BUFFER_LVALUE =
3402 psql_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
3403 }
3404
3405 psql_yy_load_buffer_state(yyscanner );
3406 }
3407
3408 {
3409#line 370 "psqlscan.l"
3410
3411
3412
3413 /* Declare some local variables inside psql_yylex(), for convenience */
3414 PsqlScanState cur_state = yyextra;
3415 PQExpBuffer output_buf = cur_state->output_buf;
3416
3417 /*
3418 * Force flex into the state indicated by start_state. This has a
3419 * couple of purposes: it lets some of the functions below set a new
3420 * starting state without ugly direct access to flex variables, and it
3421 * allows us to transition from one flex lexer to another so that we
3422 * can lex different parts of the source string using separate lexers.
3423 */
3424 BEGIN(cur_state->start_state);
3425
3426
3427#line 3428 "psqlscan.c"
3428
3429 while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
3430 {
3431 yy_cp = yyg->yy_c_buf_p;
3432
3433 /* Support of yytext. */
3434 *yy_cp = yyg->yy_hold_char;
3435
3436 /* yy_bp points to the position in yy_ch_buf of the start of
3437 * the current run.
3438 */
3439 yy_bp = yy_cp;
3440
3441 yy_current_state = yyg->yy_start;
3442yy_match:
3443 while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 )
3444 ++yy_cp;
3445
3446 yy_current_state = -yy_current_state;
3447
3448yy_find_action:
3449 yy_act = yy_accept[yy_current_state];
3450
3451 YY_DO_BEFORE_ACTION;
3452
3453do_action: /* This label is used only to access EOF actions. */
3454
3455 switch ( yy_act )
3456 { /* beginning of action switch */
3457case 1:
3458/* rule 1 can match eol */
3459YY_RULE_SETUP
3460#line 387 "psqlscan.l"
3461{
3462 /*
3463 * Note that the whitespace rule includes both true
3464 * whitespace and single-line ("--" style) comments.
3465 * We suppress whitespace at the start of the query
3466 * buffer. We also suppress all single-line comments,
3467 * which is pretty dubious but is the historical
3468 * behavior.
3469 */
3470 if (!(output_buf->len == 0 || yytext[0] == '-'))
3471 ECHO;
3472 }
3473 YY_BREAK
3474case 2:
3475YY_RULE_SETUP
3476#line 400 "psqlscan.l"
3477{
3478 cur_state->xcdepth = 0;
3479 BEGIN(xc);
3480 /* Put back any characters past slash-star; see above */
3481 yyless(2);
3482 ECHO;
3483 }
3484 YY_BREAK
3485
3486case 3:
3487YY_RULE_SETUP
3488#line 409 "psqlscan.l"
3489{
3490 cur_state->xcdepth++;
3491 /* Put back any characters past slash-star; see above */
3492 yyless(2);
3493 ECHO;
3494 }
3495 YY_BREAK
3496case 4:
3497YY_RULE_SETUP
3498#line 416 "psqlscan.l"
3499{
3500 if (cur_state->xcdepth <= 0)
3501 BEGIN(INITIAL);
3502 else
3503 cur_state->xcdepth--;
3504 ECHO;
3505 }
3506 YY_BREAK
3507case 5:
3508/* rule 5 can match eol */
3509YY_RULE_SETUP
3510#line 424 "psqlscan.l"
3511{
3512 ECHO;
3513 }
3514 YY_BREAK
3515case 6:
3516YY_RULE_SETUP
3517#line 428 "psqlscan.l"
3518{
3519 ECHO;
3520 }
3521 YY_BREAK
3522case 7:
3523YY_RULE_SETUP
3524#line 432 "psqlscan.l"
3525{
3526 ECHO;
3527 }
3528 YY_BREAK
3529/* <xc> */
3530case 8:
3531YY_RULE_SETUP
3532#line 437 "psqlscan.l"
3533{
3534 BEGIN(xb);
3535 ECHO;
3536 }
3537 YY_BREAK
3538case 9:
3539/* rule 9 can match eol */
3540#line 442 "psqlscan.l"
3541case 10:
3542/* rule 10 can match eol */
3543YY_RULE_SETUP
3544#line 442 "psqlscan.l"
3545{
3546 yyless(1);
3547 BEGIN(INITIAL);
3548 ECHO;
3549 }
3550 YY_BREAK
3551case 11:
3552/* rule 11 can match eol */
3553#line 448 "psqlscan.l"
3554case 12:
3555/* rule 12 can match eol */
3556YY_RULE_SETUP
3557#line 448 "psqlscan.l"
3558{
3559 ECHO;
3560 }
3561 YY_BREAK
3562case 13:
3563/* rule 13 can match eol */
3564#line 452 "psqlscan.l"
3565case 14:
3566/* rule 14 can match eol */
3567YY_RULE_SETUP
3568#line 452 "psqlscan.l"
3569{
3570 ECHO;
3571 }
3572 YY_BREAK
3573case 15:
3574YY_RULE_SETUP
3575#line 456 "psqlscan.l"
3576{
3577 /* Hexadecimal bit type.
3578 * At some point we should simply pass the string
3579 * forward to the parser and label it there.
3580 * In the meantime, place a leading "x" on the string
3581 * to mark it for the input routine as a hex string.
3582 */
3583 BEGIN(xh);
3584 ECHO;
3585 }
3586 YY_BREAK
3587case 16:
3588/* rule 16 can match eol */
3589#line 467 "psqlscan.l"
3590case 17:
3591/* rule 17 can match eol */
3592YY_RULE_SETUP
3593#line 467 "psqlscan.l"
3594{
3595 yyless(1);
3596 BEGIN(INITIAL);
3597 ECHO;
3598 }
3599 YY_BREAK
3600case 18:
3601YY_RULE_SETUP
3602#line 473 "psqlscan.l"
3603{
3604 yyless(1); /* eat only 'n' this time */
3605 ECHO;
3606 }
3607 YY_BREAK
3608case 19:
3609YY_RULE_SETUP
3610#line 478 "psqlscan.l"
3611{
3612 if (cur_state->std_strings)
3613 BEGIN(xq);
3614 else
3615 BEGIN(xe);
3616 ECHO;
3617 }
3618 YY_BREAK
3619case 20:
3620YY_RULE_SETUP
3621#line 485 "psqlscan.l"
3622{
3623 BEGIN(xe);
3624 ECHO;
3625 }
3626 YY_BREAK
3627case 21:
3628YY_RULE_SETUP
3629#line 489 "psqlscan.l"
3630{
3631 BEGIN(xus);
3632 ECHO;
3633 }
3634 YY_BREAK
3635case 22:
3636/* rule 22 can match eol */
3637#line 494 "psqlscan.l"
3638case 23:
3639/* rule 23 can match eol */
3640YY_RULE_SETUP
3641#line 494 "psqlscan.l"
3642{
3643 yyless(1);
3644 BEGIN(INITIAL);
3645 ECHO;
3646 }
3647 YY_BREAK
3648case 24:
3649/* rule 24 can match eol */
3650#line 500 "psqlscan.l"
3651case 25:
3652/* rule 25 can match eol */
3653YY_RULE_SETUP
3654#line 500 "psqlscan.l"
3655{
3656 /* throw back all but the quote */
3657 yyless(1);
3658 BEGIN(xusend);
3659 ECHO;
3660 }
3661 YY_BREAK
3662case 26:
3663/* rule 26 can match eol */
3664YY_RULE_SETUP
3665#line 506 "psqlscan.l"
3666{
3667 ECHO;
3668 }
3669 YY_BREAK
3670case 27:
3671#line 510 "psqlscan.l"
3672case 28:
3673/* rule 28 can match eol */
3674YY_RULE_SETUP
3675#line 510 "psqlscan.l"
3676{
3677 yyless(0);
3678 BEGIN(INITIAL);
3679 ECHO;
3680 }
3681 YY_BREAK
3682case 29:
3683/* rule 29 can match eol */
3684YY_RULE_SETUP
3685#line 515 "psqlscan.l"
3686{
3687 BEGIN(INITIAL);
3688 ECHO;
3689 }
3690 YY_BREAK
3691case 30:
3692YY_RULE_SETUP
3693#line 519 "psqlscan.l"
3694{
3695 ECHO;
3696 }
3697 YY_BREAK
3698case 31:
3699/* rule 31 can match eol */
3700YY_RULE_SETUP
3701#line 522 "psqlscan.l"
3702{
3703 ECHO;
3704 }
3705 YY_BREAK
3706case 32:
3707/* rule 32 can match eol */
3708YY_RULE_SETUP
3709#line 525 "psqlscan.l"
3710{
3711 ECHO;
3712 }
3713 YY_BREAK
3714case 33:
3715YY_RULE_SETUP
3716#line 528 "psqlscan.l"
3717{
3718 ECHO;
3719 }
3720 YY_BREAK
3721case 34:
3722YY_RULE_SETUP
3723#line 531 "psqlscan.l"
3724{
3725 ECHO;
3726 }
3727 YY_BREAK
3728case 35:
3729/* rule 35 can match eol */
3730YY_RULE_SETUP
3731#line 534 "psqlscan.l"
3732{
3733 ECHO;
3734 }
3735 YY_BREAK
3736case 36:
3737YY_RULE_SETUP
3738#line 537 "psqlscan.l"
3739{
3740 ECHO;
3741 }
3742 YY_BREAK
3743case 37:
3744YY_RULE_SETUP
3745#line 540 "psqlscan.l"
3746{
3747 ECHO;
3748 }
3749 YY_BREAK
3750case 38:
3751/* rule 38 can match eol */
3752YY_RULE_SETUP
3753#line 543 "psqlscan.l"
3754{
3755 ECHO;
3756 }
3757 YY_BREAK
3758case 39:
3759YY_RULE_SETUP
3760#line 546 "psqlscan.l"
3761{
3762 /* This is only needed for \ just before EOF */
3763 ECHO;
3764 }
3765 YY_BREAK
3766case 40:
3767YY_RULE_SETUP
3768#line 551 "psqlscan.l"
3769{
3770 cur_state->dolqstart = pg_strdup(yytext);
3771 BEGIN(xdolq);
3772 ECHO;
3773 }
3774 YY_BREAK
3775case 41:
3776YY_RULE_SETUP
3777#line 556 "psqlscan.l"
3778{
3779 /* throw back all but the initial "$" */
3780 yyless(1);
3781 ECHO;
3782 }
3783 YY_BREAK
3784case 42:
3785YY_RULE_SETUP
3786#line 561 "psqlscan.l"
3787{
3788 if (strcmp(yytext, cur_state->dolqstart) == 0)
3789 {
3790 free(cur_state->dolqstart);
3791 cur_state->dolqstart = NULL;
3792 BEGIN(INITIAL);
3793 }
3794 else
3795 {
3796 /*
3797 * When we fail to match $...$ to dolqstart, transfer
3798 * the $... part to the output, but put back the final
3799 * $ for rescanning. Consider $delim$...$junk$delim$
3800 */
3801 yyless(yyleng - 1);
3802 }
3803 ECHO;
3804 }
3805 YY_BREAK
3806case 43:
3807/* rule 43 can match eol */
3808YY_RULE_SETUP
3809#line 579 "psqlscan.l"
3810{
3811 ECHO;
3812 }
3813 YY_BREAK
3814case 44:
3815YY_RULE_SETUP
3816#line 582 "psqlscan.l"
3817{
3818 ECHO;
3819 }
3820 YY_BREAK
3821case 45:
3822YY_RULE_SETUP
3823#line 585 "psqlscan.l"
3824{
3825 /* This is only needed for $ inside the quoted text */
3826 ECHO;
3827 }
3828 YY_BREAK
3829case 46:
3830YY_RULE_SETUP
3831#line 590 "psqlscan.l"
3832{
3833 BEGIN(xd);
3834 ECHO;
3835 }
3836 YY_BREAK
3837case 47:
3838YY_RULE_SETUP
3839#line 594 "psqlscan.l"
3840{
3841 BEGIN(xui);
3842 ECHO;
3843 }
3844 YY_BREAK
3845case 48:
3846YY_RULE_SETUP
3847#line 598 "psqlscan.l"
3848{
3849 BEGIN(INITIAL);
3850 ECHO;
3851 }
3852 YY_BREAK
3853case 49:
3854YY_RULE_SETUP
3855#line 602 "psqlscan.l"
3856{
3857 yyless(1);
3858 BEGIN(xuiend);
3859 ECHO;
3860 }
3861 YY_BREAK
3862case 50:
3863/* rule 50 can match eol */
3864YY_RULE_SETUP
3865#line 607 "psqlscan.l"
3866{
3867 ECHO;
3868 }
3869 YY_BREAK
3870case 51:
3871#line 611 "psqlscan.l"
3872case 52:
3873/* rule 52 can match eol */
3874YY_RULE_SETUP
3875#line 611 "psqlscan.l"
3876{
3877 yyless(0);
3878 BEGIN(INITIAL);
3879 ECHO;
3880 }
3881 YY_BREAK
3882case 53:
3883/* rule 53 can match eol */
3884YY_RULE_SETUP
3885#line 616 "psqlscan.l"
3886{
3887 BEGIN(INITIAL);
3888 ECHO;
3889 }
3890 YY_BREAK
3891case 54:
3892YY_RULE_SETUP
3893#line 620 "psqlscan.l"
3894{
3895 ECHO;
3896 }
3897 YY_BREAK
3898case 55:
3899/* rule 55 can match eol */
3900YY_RULE_SETUP
3901#line 623 "psqlscan.l"
3902{
3903 ECHO;
3904 }
3905 YY_BREAK
3906case 56:
3907YY_RULE_SETUP
3908#line 627 "psqlscan.l"
3909{
3910 /* throw back all but the initial u/U */
3911 yyless(1);
3912 ECHO;
3913 }
3914 YY_BREAK
3915case 57:
3916YY_RULE_SETUP
3917#line 633 "psqlscan.l"
3918{
3919 ECHO;
3920 }
3921 YY_BREAK
3922case 58:
3923YY_RULE_SETUP
3924#line 637 "psqlscan.l"
3925{
3926 ECHO;
3927 }
3928 YY_BREAK
3929case 59:
3930YY_RULE_SETUP
3931#line 641 "psqlscan.l"
3932{
3933 ECHO;
3934 }
3935 YY_BREAK
3936case 60:
3937YY_RULE_SETUP
3938#line 645 "psqlscan.l"
3939{
3940 ECHO;
3941 }
3942 YY_BREAK
3943case 61:
3944YY_RULE_SETUP
3945#line 649 "psqlscan.l"
3946{
3947 ECHO;
3948 }
3949 YY_BREAK
3950case 62:
3951YY_RULE_SETUP
3952#line 653 "psqlscan.l"
3953{
3954 ECHO;
3955 }
3956 YY_BREAK
3957case 63:
3958YY_RULE_SETUP
3959#line 657 "psqlscan.l"
3960{
3961 ECHO;
3962 }
3963 YY_BREAK
3964case 64:
3965YY_RULE_SETUP
3966#line 661 "psqlscan.l"
3967{
3968 ECHO;
3969 }
3970 YY_BREAK
3971/*
3972 * These rules are specific to psql --- they implement parenthesis
3973 * counting and detection of command-ending semicolon. These must
3974 * appear before the {self} rule so that they take precedence over it.
3975 */
3976case 65:
3977YY_RULE_SETUP
3978#line 671 "psqlscan.l"
3979{
3980 cur_state->paren_depth++;
3981 ECHO;
3982 }
3983 YY_BREAK
3984case 66:
3985YY_RULE_SETUP
3986#line 676 "psqlscan.l"
3987{
3988 if (cur_state->paren_depth > 0)
3989 cur_state->paren_depth--;
3990 ECHO;
3991 }
3992 YY_BREAK
3993case 67:
3994YY_RULE_SETUP
3995#line 682 "psqlscan.l"
3996{
3997 ECHO;
3998 if (cur_state->paren_depth == 0)
3999 {
4000 /* Terminate lexing temporarily */
4001 cur_state->start_state = YY_START;
4002 return LEXRES_SEMI;
4003 }
4004 }
4005 YY_BREAK
4006/*
4007 * psql-specific rules to handle backslash commands and variable
4008 * substitution. We want these before {self}, also.
4009 */
4010case 68:
4011YY_RULE_SETUP
4012#line 697 "psqlscan.l"
4013{
4014 /* Force a semi-colon or colon into the query buffer */
4015 psqlscan_emit(cur_state, yytext + 1, 1);
4016 }
4017 YY_BREAK
4018case 69:
4019YY_RULE_SETUP
4020#line 702 "psqlscan.l"
4021{
4022 /* Terminate lexing temporarily */
4023 cur_state->start_state = YY_START;
4024 return LEXRES_BACKSLASH;
4025 }
4026 YY_BREAK
4027case 70:
4028YY_RULE_SETUP
4029#line 708 "psqlscan.l"
4030{
4031 /* Possible psql variable substitution */
4032 char *varname;
4033 char *value;
4034
4035 varname = psqlscan_extract_substring(cur_state,
4036 yytext + 1,
4037 yyleng - 1);
4038 if (cur_state->callbacks->get_variable)
4039 value = cur_state->callbacks->get_variable(varname,
4040 PQUOTE_PLAIN,
4041 cur_state->cb_passthrough);
4042 else
4043 value = NULL;
4044
4045 if (value)
4046 {
4047 /* It is a variable, check for recursion */
4048 if (psqlscan_var_is_current_source(cur_state, varname))
4049 {
4050 /* Recursive expansion --- don't go there */
4051 pg_log_warning("skipping recursive expansion of variable \"%s\"",
4052 varname);
4053 /* Instead copy the string as is */
4054 ECHO;
4055 }
4056 else
4057 {
4058 /* OK, perform substitution */
4059 psqlscan_push_new_buffer(cur_state, value, varname);
4060 /* psql_yy_scan_string already made buffer active */
4061 }
4062 free(value);
4063 }
4064 else
4065 {
4066 /*
4067 * if the variable doesn't exist we'll copy the string
4068 * as is
4069 */
4070 ECHO;
4071 }
4072
4073 free(varname);
4074 }
4075 YY_BREAK
4076case 71:
4077YY_RULE_SETUP
4078#line 754 "psqlscan.l"
4079{
4080 psqlscan_escape_variable(cur_state, yytext, yyleng,
4081 PQUOTE_SQL_LITERAL);
4082 }
4083 YY_BREAK
4084case 72:
4085YY_RULE_SETUP
4086#line 759 "psqlscan.l"
4087{
4088 psqlscan_escape_variable(cur_state, yytext, yyleng,
4089 PQUOTE_SQL_IDENT);
4090 }
4091 YY_BREAK
4092case 73:
4093YY_RULE_SETUP
4094#line 764 "psqlscan.l"
4095{
4096 psqlscan_test_variable(cur_state, yytext, yyleng);
4097 }
4098 YY_BREAK
4099/*
4100 * These rules just avoid the need for scanner backup if one of the
4101 * three rules above fails to match completely.
4102 */
4103case 74:
4104YY_RULE_SETUP
4105#line 773 "psqlscan.l"
4106{
4107 /* Throw back everything but the colon */
4108 yyless(1);
4109 ECHO;
4110 }
4111 YY_BREAK
4112case 75:
4113YY_RULE_SETUP
4114#line 779 "psqlscan.l"
4115{
4116 /* Throw back everything but the colon */
4117 yyless(1);
4118 ECHO;
4119 }
4120 YY_BREAK
4121case 76:
4122YY_RULE_SETUP
4123#line 785 "psqlscan.l"
4124{
4125 /* Throw back everything but the colon */
4126 yyless(1);
4127 ECHO;
4128 }
4129 YY_BREAK
4130case 77:
4131YY_RULE_SETUP
4132#line 790 "psqlscan.l"
4133{
4134 /* Throw back everything but the colon */
4135 yyless(1);
4136 ECHO;
4137 }
4138 YY_BREAK
4139/*
4140 * Back to backend-compatible rules.
4141 */
4142case 78:
4143YY_RULE_SETUP
4144#line 800 "psqlscan.l"
4145{
4146 ECHO;
4147 }
4148 YY_BREAK
4149case 79:
4150YY_RULE_SETUP
4151#line 804 "psqlscan.l"
4152{
4153 /*
4154 * Check for embedded slash-star or dash-dash; those
4155 * are comment starts, so operator must stop there.
4156 * Note that slash-star or dash-dash at the first
4157 * character will match a prior rule, not this one.
4158 */
4159 int nchars = yyleng;
4160 char *slashstar = strstr(yytext, "/*");
4161 char *dashdash = strstr(yytext, "--");
4162
4163 if (slashstar && dashdash)
4164 {
4165 /* if both appear, take the first one */
4166 if (slashstar > dashdash)
4167 slashstar = dashdash;
4168 }
4169 else if (!slashstar)
4170 slashstar = dashdash;
4171 if (slashstar)
4172 nchars = slashstar - yytext;
4173
4174 /*
4175 * For SQL compatibility, '+' and '-' cannot be the
4176 * last char of a multi-char operator unless the operator
4177 * contains chars that are not in SQL operators.
4178 * The idea is to lex '=-' as two operators, but not
4179 * to forbid operator names like '?-' that could not be
4180 * sequences of SQL operators.
4181 */
4182 if (nchars > 1 &&
4183 (yytext[nchars - 1] == '+' ||
4184 yytext[nchars - 1] == '-'))
4185 {
4186 int ic;
4187
4188 for (ic = nchars - 2; ic >= 0; ic--)
4189 {
4190 char c = yytext[ic];
4191 if (c == '~' || c == '!' || c == '@' ||
4192 c == '#' || c == '^' || c == '&' ||
4193 c == '|' || c == '`' || c == '?' ||
4194 c == '%')
4195 break;
4196 }
4197 if (ic < 0)
4198 {
4199 /*
4200 * didn't find a qualifying character, so remove
4201 * all trailing [+-]
4202 */
4203 do {
4204 nchars--;
4205 } while (nchars > 1 &&
4206 (yytext[nchars - 1] == '+' ||
4207 yytext[nchars - 1] == '-'));
4208 }
4209 }
4210
4211 if (nchars < yyleng)
4212 {
4213 /* Strip the unwanted chars from the token */
4214 yyless(nchars);
4215 }
4216 ECHO;
4217 }
4218 YY_BREAK
4219case 80:
4220YY_RULE_SETUP
4221#line 871 "psqlscan.l"
4222{
4223 ECHO;
4224 }
4225 YY_BREAK
4226case 81:
4227YY_RULE_SETUP
4228#line 875 "psqlscan.l"
4229{
4230 ECHO;
4231 }
4232 YY_BREAK
4233case 82:
4234YY_RULE_SETUP
4235#line 878 "psqlscan.l"
4236{
4237 ECHO;
4238 }
4239 YY_BREAK
4240case 83:
4241YY_RULE_SETUP
4242#line 881 "psqlscan.l"
4243{
4244 /* throw back the .., and treat as integer */
4245 yyless(yyleng - 2);
4246 ECHO;
4247 }
4248 YY_BREAK
4249case 84:
4250YY_RULE_SETUP
4251#line 886 "psqlscan.l"
4252{
4253 ECHO;
4254 }
4255 YY_BREAK
4256case 85:
4257YY_RULE_SETUP
4258#line 889 "psqlscan.l"
4259{
4260 /*
4261 * throw back the [Ee], and figure out whether what
4262 * remains is an {integer} or {decimal}.
4263 * (in psql, we don't actually care...)
4264 */
4265 yyless(yyleng - 1);
4266 ECHO;
4267 }
4268 YY_BREAK
4269case 86:
4270YY_RULE_SETUP
4271#line 898 "psqlscan.l"
4272{
4273 /* throw back the [Ee][+-], and proceed as above */
4274 yyless(yyleng - 2);
4275 ECHO;
4276 }
4277 YY_BREAK
4278case 87:
4279YY_RULE_SETUP
4280#line 905 "psqlscan.l"
4281{
4282 ECHO;
4283 }
4284 YY_BREAK
4285case 88:
4286YY_RULE_SETUP
4287#line 909 "psqlscan.l"
4288{
4289 ECHO;
4290 }
4291 YY_BREAK
4292case YY_STATE_EOF(INITIAL):
4293case YY_STATE_EOF(xb):
4294case YY_STATE_EOF(xc):
4295case YY_STATE_EOF(xd):
4296case YY_STATE_EOF(xh):
4297case YY_STATE_EOF(xq):
4298case YY_STATE_EOF(xe):
4299case YY_STATE_EOF(xdolq):
4300case YY_STATE_EOF(xui):
4301case YY_STATE_EOF(xuiend):
4302case YY_STATE_EOF(xus):
4303case YY_STATE_EOF(xusend):
4304#line 913 "psqlscan.l"
4305{
4306 if (cur_state->buffer_stack == NULL)
4307 {
4308 cur_state->start_state = YY_START;
4309 return LEXRES_EOL; /* end of input reached */
4310 }
4311
4312 /*
4313 * We were expanding a variable, so pop the inclusion
4314 * stack and keep lexing
4315 */
4316 psqlscan_pop_buffer_stack(cur_state);
4317 psqlscan_select_top_buffer(cur_state);
4318 }
4319 YY_BREAK
4320case 89:
4321YY_RULE_SETUP
4322#line 928 "psqlscan.l"
4323YY_FATAL_ERROR( "flex scanner jammed" );
4324 YY_BREAK
4325#line 4326 "psqlscan.c"
4326
4327 case YY_END_OF_BUFFER:
4328 {
4329 /* Amount of text matched not including the EOB char. */
4330 int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
4331
4332 /* Undo the effects of YY_DO_BEFORE_ACTION. */
4333 *yy_cp = yyg->yy_hold_char;
4334 YY_RESTORE_YY_MORE_OFFSET
4335
4336 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
4337 {
4338 /* We're scanning a new file or input source. It's
4339 * possible that this happened because the user
4340 * just pointed yyin at a new source and called
4341 * psql_yylex(). If so, then we have to assure
4342 * consistency between YY_CURRENT_BUFFER and our
4343 * globals. Here is the right place to do so, because
4344 * this is the first action (other than possibly a
4345 * back-up) that will match for the new input source.
4346 */
4347 yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
4348 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
4349 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
4350 }
4351
4352 /* Note that here we test for yy_c_buf_p "<=" to the position
4353 * of the first EOB in the buffer, since yy_c_buf_p will
4354 * already have been incremented past the NUL character
4355 * (since all states make transitions on EOB to the
4356 * end-of-buffer state). Contrast this with the test
4357 * in input().
4358 */
4359 if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
4360 { /* This was really a NUL. */
4361 yy_state_type yy_next_state;
4362
4363 yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
4364
4365 yy_current_state = yy_get_previous_state( yyscanner );
4366
4367 /* Okay, we're now positioned to make the NUL
4368 * transition. We couldn't have
4369 * yy_get_previous_state() go ahead and do it
4370 * for us because it doesn't know how to deal
4371 * with the possibility of jamming (and we don't
4372 * want to build jamming into it because then it
4373 * will run more slowly).
4374 */
4375
4376 yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
4377
4378 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
4379
4380 if ( yy_next_state )
4381 {
4382 /* Consume the NUL. */
4383 yy_cp = ++yyg->yy_c_buf_p;
4384 yy_current_state = yy_next_state;
4385 goto yy_match;
4386 }
4387
4388 else
4389 {
4390 yy_cp = yyg->yy_c_buf_p;
4391 goto yy_find_action;
4392 }
4393 }
4394
4395 else switch ( yy_get_next_buffer( yyscanner ) )
4396 {
4397 case EOB_ACT_END_OF_FILE:
4398 {
4399 yyg->yy_did_buffer_switch_on_eof = 0;
4400
4401 if ( psql_yywrap(yyscanner ) )
4402 {
4403 /* Note: because we've taken care in
4404 * yy_get_next_buffer() to have set up
4405 * yytext, we can now set up
4406 * yy_c_buf_p so that if some total
4407 * hoser (like flex itself) wants to
4408 * call the scanner after we return the
4409 * YY_NULL, it'll still work - another
4410 * YY_NULL will get returned.
4411 */
4412 yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
4413
4414 yy_act = YY_STATE_EOF(YY_START);
4415 goto do_action;
4416 }
4417
4418 else
4419 {
4420 if ( ! yyg->yy_did_buffer_switch_on_eof )
4421 YY_NEW_FILE;
4422 }
4423 break;
4424 }
4425
4426 case EOB_ACT_CONTINUE_SCAN:
4427 yyg->yy_c_buf_p =
4428 yyg->yytext_ptr + yy_amount_of_matched_text;
4429
4430 yy_current_state = yy_get_previous_state( yyscanner );
4431
4432 yy_cp = yyg->yy_c_buf_p;
4433 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
4434 goto yy_match;
4435
4436 case EOB_ACT_LAST_MATCH:
4437 yyg->yy_c_buf_p =
4438 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
4439
4440 yy_current_state = yy_get_previous_state( yyscanner );
4441
4442 yy_cp = yyg->yy_c_buf_p;
4443 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
4444 goto yy_find_action;
4445 }
4446 break;
4447 }
4448
4449 default:
4450 YY_FATAL_ERROR(
4451 "fatal flex scanner internal error--no action found" );
4452 } /* end of action switch */
4453 } /* end of scanning one token */
4454 } /* end of user's declarations */
4455} /* end of psql_yylex */
4456
4457/* yy_get_next_buffer - try to read in a new buffer
4458 *
4459 * Returns a code representing an action:
4460 * EOB_ACT_LAST_MATCH -
4461 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
4462 * EOB_ACT_END_OF_FILE - end of file
4463 */
4464static int yy_get_next_buffer (yyscan_t yyscanner)
4465{
4466 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4467 char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
4468 char *source = yyg->yytext_ptr;
4469 int number_to_move, i;
4470 int ret_val;
4471
4472 if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
4473 YY_FATAL_ERROR(
4474 "fatal flex scanner internal error--end of buffer missed" );
4475
4476 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
4477 { /* Don't try to fill the buffer, so this is an EOF. */
4478 if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
4479 {
4480 /* We matched a single character, the EOB, so
4481 * treat this as a final EOF.
4482 */
4483 return EOB_ACT_END_OF_FILE;
4484 }
4485
4486 else
4487 {
4488 /* We matched some text prior to the EOB, first
4489 * process it.
4490 */
4491 return EOB_ACT_LAST_MATCH;
4492 }
4493 }
4494
4495 /* Try to read more data. */
4496
4497 /* First move last chars to start of buffer. */
4498 number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1);
4499
4500 for ( i = 0; i < number_to_move; ++i )
4501 *(dest++) = *(source++);
4502
4503 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
4504 /* don't do the read, it's not guaranteed to return an EOF,
4505 * just force an EOF
4506 */
4507 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
4508
4509 else
4510 {
4511 int num_to_read =
4512 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
4513
4514 while ( num_to_read <= 0 )
4515 { /* Not enough room in the buffer - grow it. */
4516
4517 /* just a shorter name for the current buffer */
4518 YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
4519
4520 int yy_c_buf_p_offset =
4521 (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
4522
4523 if ( b->yy_is_our_buffer )
4524 {
4525 int new_size = b->yy_buf_size * 2;
4526
4527 if ( new_size <= 0 )
4528 b->yy_buf_size += b->yy_buf_size / 8;
4529 else
4530 b->yy_buf_size *= 2;
4531
4532 b->yy_ch_buf = (char *)
4533 /* Include room in for 2 EOB chars. */
4534 psql_yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
4535 }
4536 else
4537 /* Can't grow it, we don't own it. */
4538 b->yy_ch_buf = NULL;
4539
4540 if ( ! b->yy_ch_buf )
4541 YY_FATAL_ERROR(
4542 "fatal error - scanner input buffer overflow" );
4543
4544 yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
4545
4546 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
4547 number_to_move - 1;
4548
4549 }
4550
4551 if ( num_to_read > YY_READ_BUF_SIZE )
4552 num_to_read = YY_READ_BUF_SIZE;
4553
4554 /* Read in more data. */
4555 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
4556 yyg->yy_n_chars, num_to_read );
4557
4558 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
4559 }
4560
4561 if ( yyg->yy_n_chars == 0 )
4562 {
4563 if ( number_to_move == YY_MORE_ADJ )
4564 {
4565 ret_val = EOB_ACT_END_OF_FILE;
4566 psql_yyrestart(yyin ,yyscanner);
4567 }
4568
4569 else
4570 {
4571 ret_val = EOB_ACT_LAST_MATCH;
4572 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
4573 YY_BUFFER_EOF_PENDING;
4574 }
4575 }
4576
4577 else
4578 ret_val = EOB_ACT_CONTINUE_SCAN;
4579
4580 if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
4581 /* Extend the array by 50%, plus the number we really need. */
4582 int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
4583 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) psql_yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
4584 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
4585 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
4586 }
4587
4588 yyg->yy_n_chars += number_to_move;
4589 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
4590 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
4591
4592 yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
4593
4594 return ret_val;
4595}
4596
4597/* yy_get_previous_state - get the state just before the EOB char was reached */
4598
4599 static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
4600{
4601 yy_state_type yy_current_state;
4602 char *yy_cp;
4603 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4604
4605 yy_current_state = yyg->yy_start;
4606
4607 for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
4608 {
4609 yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)];
4610 }
4611
4612 return yy_current_state;
4613}
4614
4615/* yy_try_NUL_trans - try to make a transition on the NUL character
4616 *
4617 * synopsis
4618 * next_state = yy_try_NUL_trans( current_state );
4619 */
4620 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner)
4621{
4622 int yy_is_jam;
4623 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
4624
4625 yy_current_state = yy_nxt[yy_current_state][1];
4626 yy_is_jam = (yy_current_state <= 0);
4627
4628 (void)yyg;
4629 return yy_is_jam ? 0 : yy_current_state;
4630}
4631
4632#ifndef YY_NO_UNPUT
4633
4634#endif
4635
4636#ifndef YY_NO_INPUT
4637#ifdef __cplusplus
4638 static int yyinput (yyscan_t yyscanner)
4639#else
4640 static int input (yyscan_t yyscanner)
4641#endif
4642
4643{
4644 int c;
4645 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4646
4647 *yyg->yy_c_buf_p = yyg->yy_hold_char;
4648
4649 if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
4650 {
4651 /* yy_c_buf_p now points to the character we want to return.
4652 * If this occurs *before* the EOB characters, then it's a
4653 * valid NUL; if not, then we've hit the end of the buffer.
4654 */
4655 if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
4656 /* This was really a NUL. */
4657 *yyg->yy_c_buf_p = '\0';
4658
4659 else
4660 { /* need more input */
4661 int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
4662 ++yyg->yy_c_buf_p;
4663
4664 switch ( yy_get_next_buffer( yyscanner ) )
4665 {
4666 case EOB_ACT_LAST_MATCH:
4667 /* This happens because yy_g_n_b()
4668 * sees that we've accumulated a
4669 * token and flags that we need to
4670 * try matching the token before
4671 * proceeding. But for input(),
4672 * there's no matching to consider.
4673 * So convert the EOB_ACT_LAST_MATCH
4674 * to EOB_ACT_END_OF_FILE.
4675 */
4676
4677 /* Reset buffer status. */
4678 psql_yyrestart(yyin ,yyscanner);
4679
4680 /*FALLTHROUGH*/
4681
4682 case EOB_ACT_END_OF_FILE:
4683 {
4684 if ( psql_yywrap(yyscanner ) )
4685 return 0;
4686
4687 if ( ! yyg->yy_did_buffer_switch_on_eof )
4688 YY_NEW_FILE;
4689#ifdef __cplusplus
4690 return yyinput(yyscanner);
4691#else
4692 return input(yyscanner);
4693#endif
4694 }
4695
4696 case EOB_ACT_CONTINUE_SCAN:
4697 yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
4698 break;
4699 }
4700 }
4701 }
4702
4703 c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
4704 *yyg->yy_c_buf_p = '\0'; /* preserve yytext */
4705 yyg->yy_hold_char = *++yyg->yy_c_buf_p;
4706
4707 return c;
4708}
4709#endif /* ifndef YY_NO_INPUT */
4710
4711/** Immediately switch to a different input stream.
4712 * @param input_file A readable stream.
4713 * @param yyscanner The scanner object.
4714 * @note This function does not reset the start condition to @c INITIAL .
4715 */
4716 void psql_yyrestart (FILE * input_file , yyscan_t yyscanner)
4717{
4718 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4719
4720 if ( ! YY_CURRENT_BUFFER ){
4721 psql_yyensure_buffer_stack (yyscanner);
4722 YY_CURRENT_BUFFER_LVALUE =
4723 psql_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
4724 }
4725
4726 psql_yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
4727 psql_yy_load_buffer_state(yyscanner );
4728}
4729
4730/** Switch to a different input buffer.
4731 * @param new_buffer The new input buffer.
4732 * @param yyscanner The scanner object.
4733 */
4734 void psql_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
4735{
4736 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4737
4738 /* TODO. We should be able to replace this entire function body
4739 * with
4740 * psql_yypop_buffer_state();
4741 * psql_yypush_buffer_state(new_buffer);
4742 */
4743 psql_yyensure_buffer_stack (yyscanner);
4744 if ( YY_CURRENT_BUFFER == new_buffer )
4745 return;
4746
4747 if ( YY_CURRENT_BUFFER )
4748 {
4749 /* Flush out information for old buffer. */
4750 *yyg->yy_c_buf_p = yyg->yy_hold_char;
4751 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
4752 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
4753 }
4754
4755 YY_CURRENT_BUFFER_LVALUE = new_buffer;
4756 psql_yy_load_buffer_state(yyscanner );
4757
4758 /* We don't actually know whether we did this switch during
4759 * EOF (psql_yywrap()) processing, but the only time this flag
4760 * is looked at is after psql_yywrap() is called, so it's safe
4761 * to go ahead and always set it.
4762 */
4763 yyg->yy_did_buffer_switch_on_eof = 1;
4764}
4765
4766static void psql_yy_load_buffer_state (yyscan_t yyscanner)
4767{
4768 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4769 yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
4770 yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
4771 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
4772 yyg->yy_hold_char = *yyg->yy_c_buf_p;
4773}
4774
4775/** Allocate and initialize an input buffer state.
4776 * @param file A readable stream.
4777 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
4778 * @param yyscanner The scanner object.
4779 * @return the allocated buffer state.
4780 */
4781 YY_BUFFER_STATE psql_yy_create_buffer (FILE * file, int size , yyscan_t yyscanner)
4782{
4783 YY_BUFFER_STATE b;
4784
4785 b = (YY_BUFFER_STATE) psql_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
4786 if ( ! b )
4787 YY_FATAL_ERROR( "out of dynamic memory in psql_yy_create_buffer()" );
4788
4789 b->yy_buf_size = (yy_size_t)size;
4790
4791 /* yy_ch_buf has to be 2 characters longer than the size given because
4792 * we need to put in 2 end-of-buffer characters.
4793 */
4794 b->yy_ch_buf = (char *) psql_yyalloc(b->yy_buf_size + 2 ,yyscanner );
4795 if ( ! b->yy_ch_buf )
4796 YY_FATAL_ERROR( "out of dynamic memory in psql_yy_create_buffer()" );
4797
4798 b->yy_is_our_buffer = 1;
4799
4800 psql_yy_init_buffer(b,file ,yyscanner);
4801
4802 return b;
4803}
4804
4805/** Destroy the buffer.
4806 * @param b a buffer created with psql_yy_create_buffer()
4807 * @param yyscanner The scanner object.
4808 */
4809 void psql_yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
4810{
4811 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4812
4813 if ( ! b )
4814 return;
4815
4816 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
4817 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
4818
4819 if ( b->yy_is_our_buffer )
4820 psql_yyfree((void *) b->yy_ch_buf ,yyscanner );
4821
4822 psql_yyfree((void *) b ,yyscanner );
4823}
4824
4825/* Initializes or reinitializes a buffer.
4826 * This function is sometimes called more than once on the same buffer,
4827 * such as during a psql_yyrestart() or at EOF.
4828 */
4829 static void psql_yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner)
4830
4831{
4832 int oerrno = errno;
4833 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4834
4835 psql_yy_flush_buffer(b ,yyscanner);
4836
4837 b->yy_input_file = file;
4838 b->yy_fill_buffer = 1;
4839
4840 /* If b is the current buffer, then psql_yy_init_buffer was _probably_
4841 * called from psql_yyrestart() or through yy_get_next_buffer.
4842 * In that case, we don't want to reset the lineno or column.
4843 */
4844 if (b != YY_CURRENT_BUFFER){
4845 b->yy_bs_lineno = 1;
4846 b->yy_bs_column = 0;
4847 }
4848
4849 b->yy_is_interactive = 0;
4850
4851 errno = oerrno;
4852}
4853
4854/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
4855 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
4856 * @param yyscanner The scanner object.
4857 */
4858 void psql_yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
4859{
4860 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4861 if ( ! b )
4862 return;
4863
4864 b->yy_n_chars = 0;
4865
4866 /* We always need two end-of-buffer characters. The first causes
4867 * a transition to the end-of-buffer state. The second causes
4868 * a jam in that state.
4869 */
4870 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
4871 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
4872
4873 b->yy_buf_pos = &b->yy_ch_buf[0];
4874
4875 b->yy_at_bol = 1;
4876 b->yy_buffer_status = YY_BUFFER_NEW;
4877
4878 if ( b == YY_CURRENT_BUFFER )
4879 psql_yy_load_buffer_state(yyscanner );
4880}
4881
4882/** Pushes the new state onto the stack. The new state becomes
4883 * the current state. This function will allocate the stack
4884 * if necessary.
4885 * @param new_buffer The new state.
4886 * @param yyscanner The scanner object.
4887 */
4888void psql_yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
4889{
4890 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4891 if (new_buffer == NULL)
4892 return;
4893
4894 psql_yyensure_buffer_stack(yyscanner);
4895
4896 /* This block is copied from psql_yy_switch_to_buffer. */
4897 if ( YY_CURRENT_BUFFER )
4898 {
4899 /* Flush out information for old buffer. */
4900 *yyg->yy_c_buf_p = yyg->yy_hold_char;
4901 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
4902 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
4903 }
4904
4905 /* Only push if top exists. Otherwise, replace top. */
4906 if (YY_CURRENT_BUFFER)
4907 yyg->yy_buffer_stack_top++;
4908 YY_CURRENT_BUFFER_LVALUE = new_buffer;
4909
4910 /* copied from psql_yy_switch_to_buffer. */
4911 psql_yy_load_buffer_state(yyscanner );
4912 yyg->yy_did_buffer_switch_on_eof = 1;
4913}
4914
4915/** Removes and deletes the top of the stack, if present.
4916 * The next element becomes the new top.
4917 * @param yyscanner The scanner object.
4918 */
4919void psql_yypop_buffer_state (yyscan_t yyscanner)
4920{
4921 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4922 if (!YY_CURRENT_BUFFER)
4923 return;
4924
4925 psql_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
4926 YY_CURRENT_BUFFER_LVALUE = NULL;
4927 if (yyg->yy_buffer_stack_top > 0)
4928 --yyg->yy_buffer_stack_top;
4929
4930 if (YY_CURRENT_BUFFER) {
4931 psql_yy_load_buffer_state(yyscanner );
4932 yyg->yy_did_buffer_switch_on_eof = 1;
4933 }
4934}
4935
4936/* Allocates the stack if it does not exist.
4937 * Guarantees space for at least one push.
4938 */
4939static void psql_yyensure_buffer_stack (yyscan_t yyscanner)
4940{
4941 int num_to_alloc;
4942 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4943
4944 if (!yyg->yy_buffer_stack) {
4945
4946 /* First allocation is just for 2 elements, since we don't know if this
4947 * scanner will even need a stack. We use 2 instead of 1 to avoid an
4948 * immediate realloc on the next call.
4949 */
4950 num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
4951 yyg->yy_buffer_stack = (struct yy_buffer_state**)psql_yyalloc
4952 (num_to_alloc * sizeof(struct yy_buffer_state*)
4953 , yyscanner);
4954 if ( ! yyg->yy_buffer_stack )
4955 YY_FATAL_ERROR( "out of dynamic memory in psql_yyensure_buffer_stack()" );
4956
4957 memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
4958
4959 yyg->yy_buffer_stack_max = num_to_alloc;
4960 yyg->yy_buffer_stack_top = 0;
4961 return;
4962 }
4963
4964 if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
4965
4966 /* Increase the buffer to prepare for a possible push. */
4967 yy_size_t grow_size = 8 /* arbitrary grow size */;
4968
4969 num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
4970 yyg->yy_buffer_stack = (struct yy_buffer_state**)psql_yyrealloc
4971 (yyg->yy_buffer_stack,
4972 num_to_alloc * sizeof(struct yy_buffer_state*)
4973 , yyscanner);
4974 if ( ! yyg->yy_buffer_stack )
4975 YY_FATAL_ERROR( "out of dynamic memory in psql_yyensure_buffer_stack()" );
4976
4977 /* zero only the new slots.*/
4978 memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
4979 yyg->yy_buffer_stack_max = num_to_alloc;
4980 }
4981}
4982
4983/** Setup the input buffer state to scan directly from a user-specified character buffer.
4984 * @param base the character buffer
4985 * @param size the size in bytes of the character buffer
4986 * @param yyscanner The scanner object.
4987 * @return the newly allocated buffer state object.
4988 */
4989YY_BUFFER_STATE psql_yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner)
4990{
4991 YY_BUFFER_STATE b;
4992
4993 if ( size < 2 ||
4994 base[size-2] != YY_END_OF_BUFFER_CHAR ||
4995 base[size-1] != YY_END_OF_BUFFER_CHAR )
4996 /* They forgot to leave room for the EOB's. */
4997 return NULL;
4998
4999 b = (YY_BUFFER_STATE) psql_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
5000 if ( ! b )
5001 YY_FATAL_ERROR( "out of dynamic memory in psql_yy_scan_buffer()" );
5002
5003 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
5004 b->yy_buf_pos = b->yy_ch_buf = base;
5005 b->yy_is_our_buffer = 0;
5006 b->yy_input_file = NULL;
5007 b->yy_n_chars = b->yy_buf_size;
5008 b->yy_is_interactive = 0;
5009 b->yy_at_bol = 1;
5010 b->yy_fill_buffer = 0;
5011 b->yy_buffer_status = YY_BUFFER_NEW;
5012
5013 psql_yy_switch_to_buffer(b ,yyscanner );
5014
5015 return b;
5016}
5017
5018/** Setup the input buffer state to scan a string. The next call to psql_yylex() will
5019 * scan from a @e copy of @a str.
5020 * @param yystr a NUL-terminated string to scan
5021 * @param yyscanner The scanner object.
5022 * @return the newly allocated buffer state object.
5023 * @note If you want to scan bytes that may contain NUL values, then use
5024 * psql_yy_scan_bytes() instead.
5025 */
5026YY_BUFFER_STATE psql_yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
5027{
5028
5029 return psql_yy_scan_bytes(yystr,(int) strlen(yystr) ,yyscanner);
5030}
5031
5032/** Setup the input buffer state to scan the given bytes. The next call to psql_yylex() will
5033 * scan from a @e copy of @a bytes.
5034 * @param yybytes the byte buffer to scan
5035 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
5036 * @param yyscanner The scanner object.
5037 * @return the newly allocated buffer state object.
5038 */
5039YY_BUFFER_STATE psql_yy_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner)
5040{
5041 YY_BUFFER_STATE b;
5042 char *buf;
5043 yy_size_t n;
5044 int i;
5045
5046 /* Get memory for full buffer, including space for trailing EOB's. */
5047 n = (yy_size_t) (_yybytes_len + 2);
5048 buf = (char *) psql_yyalloc(n ,yyscanner );
5049 if ( ! buf )
5050 YY_FATAL_ERROR( "out of dynamic memory in psql_yy_scan_bytes()" );
5051
5052 for ( i = 0; i < _yybytes_len; ++i )
5053 buf[i] = yybytes[i];
5054
5055 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
5056
5057 b = psql_yy_scan_buffer(buf,n ,yyscanner);
5058 if ( ! b )
5059 YY_FATAL_ERROR( "bad buffer in psql_yy_scan_bytes()" );
5060
5061 /* It's okay to grow etc. this buffer, and we should throw it
5062 * away when we're done.
5063 */
5064 b->yy_is_our_buffer = 1;
5065
5066 return b;
5067}
5068
5069#ifndef YY_EXIT_FAILURE
5070#define YY_EXIT_FAILURE 2
5071#endif
5072
5073static void yynoreturn yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
5074{
5075 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5076 (void)yyg;
5077 (void) fprintf( stderr, "%s\n", msg );
5078 exit( YY_EXIT_FAILURE );
5079}
5080
5081/* Redefine yyless() so it works in section 3 code. */
5082
5083#undef yyless
5084#define yyless(n) \
5085 do \
5086 { \
5087 /* Undo effects of setting up yytext. */ \
5088 int yyless_macro_arg = (n); \
5089 YY_LESS_LINENO(yyless_macro_arg);\
5090 yytext[yyleng] = yyg->yy_hold_char; \
5091 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
5092 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
5093 *yyg->yy_c_buf_p = '\0'; \
5094 yyleng = yyless_macro_arg; \
5095 } \
5096 while ( 0 )
5097
5098/* Accessor methods (get/set functions) to struct members. */
5099
5100/** Get the user-defined data for this scanner.
5101 * @param yyscanner The scanner object.
5102 */
5103YY_EXTRA_TYPE psql_yyget_extra (yyscan_t yyscanner)
5104{
5105 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5106 return yyextra;
5107}
5108
5109/** Get the current line number.
5110 * @param yyscanner The scanner object.
5111 */
5112int psql_yyget_lineno (yyscan_t yyscanner)
5113{
5114 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5115
5116 if (! YY_CURRENT_BUFFER)
5117 return 0;
5118
5119 return yylineno;
5120}
5121
5122/** Get the current column number.
5123 * @param yyscanner The scanner object.
5124 */
5125int psql_yyget_column (yyscan_t yyscanner)
5126{
5127 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5128
5129 if (! YY_CURRENT_BUFFER)
5130 return 0;
5131
5132 return yycolumn;
5133}
5134
5135/** Get the input stream.
5136 * @param yyscanner The scanner object.
5137 */
5138FILE *psql_yyget_in (yyscan_t yyscanner)
5139{
5140 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5141 return yyin;
5142}
5143
5144/** Get the output stream.
5145 * @param yyscanner The scanner object.
5146 */
5147FILE *psql_yyget_out (yyscan_t yyscanner)
5148{
5149 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5150 return yyout;
5151}
5152
5153/** Get the length of the current token.
5154 * @param yyscanner The scanner object.
5155 */
5156int psql_yyget_leng (yyscan_t yyscanner)
5157{
5158 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5159 return yyleng;
5160}
5161
5162/** Get the current token.
5163 * @param yyscanner The scanner object.
5164 */
5165
5166char *psql_yyget_text (yyscan_t yyscanner)
5167{
5168 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5169 return yytext;
5170}
5171
5172/** Set the user-defined data. This data is never touched by the scanner.
5173 * @param user_defined The data to be associated with this scanner.
5174 * @param yyscanner The scanner object.
5175 */
5176void psql_yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner)
5177{
5178 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5179 yyextra = user_defined ;
5180}
5181
5182/** Set the current line number.
5183 * @param _line_number line number
5184 * @param yyscanner The scanner object.
5185 */
5186void psql_yyset_lineno (int _line_number , yyscan_t yyscanner)
5187{
5188 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5189
5190 /* lineno is only valid if an input buffer exists. */
5191 if (! YY_CURRENT_BUFFER )
5192 YY_FATAL_ERROR( "psql_yyset_lineno called with no buffer" );
5193
5194 yylineno = _line_number;
5195}
5196
5197/** Set the current column.
5198 * @param _column_no column number
5199 * @param yyscanner The scanner object.
5200 */
5201void psql_yyset_column (int _column_no , yyscan_t yyscanner)
5202{
5203 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5204
5205 /* column is only valid if an input buffer exists. */
5206 if (! YY_CURRENT_BUFFER )
5207 YY_FATAL_ERROR( "psql_yyset_column called with no buffer" );
5208
5209 yycolumn = _column_no;
5210}
5211
5212/** Set the input stream. This does not discard the current
5213 * input buffer.
5214 * @param _in_str A readable stream.
5215 * @param yyscanner The scanner object.
5216 * @see psql_yy_switch_to_buffer
5217 */
5218void psql_yyset_in (FILE * _in_str , yyscan_t yyscanner)
5219{
5220 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5221 yyin = _in_str ;
5222}
5223
5224void psql_yyset_out (FILE * _out_str , yyscan_t yyscanner)
5225{
5226 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5227 yyout = _out_str ;
5228}
5229
5230int psql_yyget_debug (yyscan_t yyscanner)
5231{
5232 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5233 return yy_flex_debug;
5234}
5235
5236void psql_yyset_debug (int _bdebug , yyscan_t yyscanner)
5237{
5238 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5239 yy_flex_debug = _bdebug ;
5240}
5241
5242/* Accessor methods for yylval and yylloc */
5243
5244YYSTYPE * psql_yyget_lval (yyscan_t yyscanner)
5245{
5246 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5247 return yylval;
5248}
5249
5250void psql_yyset_lval (YYSTYPE * yylval_param , yyscan_t yyscanner)
5251{
5252 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5253 yylval = yylval_param;
5254}
5255
5256/* User-visible API */
5257
5258/* psql_yylex_init is special because it creates the scanner itself, so it is
5259 * the ONLY reentrant function that doesn't take the scanner as the last argument.
5260 * That's why we explicitly handle the declaration, instead of using our macros.
5261 */
5262
5263int psql_yylex_init(yyscan_t* ptr_yy_globals)
5264
5265{
5266 if (ptr_yy_globals == NULL){
5267 errno = EINVAL;
5268 return 1;
5269 }
5270
5271 *ptr_yy_globals = (yyscan_t) psql_yyalloc ( sizeof( struct yyguts_t ), NULL );
5272
5273 if (*ptr_yy_globals == NULL){
5274 errno = ENOMEM;
5275 return 1;
5276 }
5277
5278 /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
5279 memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
5280
5281 return yy_init_globals ( *ptr_yy_globals );
5282}
5283
5284/* psql_yylex_init_extra has the same functionality as psql_yylex_init, but follows the
5285 * convention of taking the scanner as the last argument. Note however, that
5286 * this is a *pointer* to a scanner, as it will be allocated by this call (and
5287 * is the reason, too, why this function also must handle its own declaration).
5288 * The user defined value in the first argument will be available to psql_yyalloc in
5289 * the yyextra field.
5290 */
5291
5292int psql_yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
5293
5294{
5295 struct yyguts_t dummy_yyguts;
5296
5297 psql_yyset_extra (yy_user_defined, &dummy_yyguts);
5298
5299 if (ptr_yy_globals == NULL){
5300 errno = EINVAL;
5301 return 1;
5302 }
5303
5304 *ptr_yy_globals = (yyscan_t) psql_yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
5305
5306 if (*ptr_yy_globals == NULL){
5307 errno = ENOMEM;
5308 return 1;
5309 }
5310
5311 /* By setting to 0xAA, we expose bugs in
5312 yy_init_globals. Leave at 0x00 for releases. */
5313 memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
5314
5315 psql_yyset_extra (yy_user_defined, *ptr_yy_globals);
5316
5317 return yy_init_globals ( *ptr_yy_globals );
5318}
5319
5320static int yy_init_globals (yyscan_t yyscanner)
5321{
5322 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5323 /* Initialization is the same as for the non-reentrant scanner.
5324 * This function is called from psql_yylex_destroy(), so don't allocate here.
5325 */
5326
5327 yyg->yy_buffer_stack = NULL;
5328 yyg->yy_buffer_stack_top = 0;
5329 yyg->yy_buffer_stack_max = 0;
5330 yyg->yy_c_buf_p = NULL;
5331 yyg->yy_init = 0;
5332 yyg->yy_start = 0;
5333
5334 yyg->yy_start_stack_ptr = 0;
5335 yyg->yy_start_stack_depth = 0;
5336 yyg->yy_start_stack = NULL;
5337
5338/* Defined in main.c */
5339#ifdef YY_STDINIT
5340 yyin = stdin;
5341 yyout = stdout;
5342#else
5343 yyin = NULL;
5344 yyout = NULL;
5345#endif
5346
5347 /* For future reference: Set errno on error, since we are called by
5348 * psql_yylex_init()
5349 */
5350 return 0;
5351}
5352
5353/* psql_yylex_destroy is for both reentrant and non-reentrant scanners. */
5354int psql_yylex_destroy (yyscan_t yyscanner)
5355{
5356 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5357
5358 /* Pop the buffer stack, destroying each element. */
5359 while(YY_CURRENT_BUFFER){
5360 psql_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
5361 YY_CURRENT_BUFFER_LVALUE = NULL;
5362 psql_yypop_buffer_state(yyscanner);
5363 }
5364
5365 /* Destroy the stack itself. */
5366 psql_yyfree(yyg->yy_buffer_stack ,yyscanner);
5367 yyg->yy_buffer_stack = NULL;
5368
5369 /* Destroy the start condition stack. */
5370 psql_yyfree(yyg->yy_start_stack ,yyscanner );
5371 yyg->yy_start_stack = NULL;
5372
5373 /* Reset the globals. This is important in a non-reentrant scanner so the next time
5374 * psql_yylex() is called, initialization will occur. */
5375 yy_init_globals( yyscanner);
5376
5377 /* Destroy the main struct (reentrant only). */
5378 psql_yyfree ( yyscanner , yyscanner );
5379 yyscanner = NULL;
5380 return 0;
5381}
5382
5383/*
5384 * Internal utility routines.
5385 */
5386
5387#ifndef yytext_ptr
5388static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
5389{
5390 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5391 (void)yyg;
5392
5393 int i;
5394 for ( i = 0; i < n; ++i )
5395 s1[i] = s2[i];
5396}
5397#endif
5398
5399#ifdef YY_NEED_STRLEN
5400static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
5401{
5402 int n;
5403 for ( n = 0; s[n]; ++n )
5404 ;
5405
5406 return n;
5407}
5408#endif
5409
5410void *psql_yyalloc (yy_size_t size , yyscan_t yyscanner)
5411{
5412 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5413 (void)yyg;
5414 return malloc(size);
5415}
5416
5417void *psql_yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner)
5418{
5419 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5420 (void)yyg;
5421
5422 /* The cast to (char *) in the following accommodates both
5423 * implementations that use char* generic pointers, and those
5424 * that use void* generic pointers. It works with the latter
5425 * because both ANSI C and C++ allow castless assignment from
5426 * any pointer type to void*, and deal with argument conversions
5427 * as though doing an assignment.
5428 */
5429 return realloc(ptr, size);
5430}
5431
5432void psql_yyfree (void * ptr , yyscan_t yyscanner)
5433{
5434 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5435 (void)yyg;
5436 free( (char *) ptr ); /* see psql_yyrealloc() for (char *) cast */
5437}
5438
5439#define YYTABLES_NAME "yytables"
5440
5441#line 928 "psqlscan.l"
5442
5443
5444
5445/* LCOV_EXCL_STOP */
5446
5447/*
5448 * Create a lexer working state struct.
5449 *
5450 * callbacks is a struct of function pointers that encapsulate some
5451 * behavior we need from the surrounding program. This struct must
5452 * remain valid for the lifespan of the PsqlScanState.
5453 */
5454PsqlScanState
5455psql_scan_create(const PsqlScanCallbacks *callbacks)
5456{
5457 PsqlScanState state;
5458
5459 state = (PsqlScanStateData *) pg_malloc0(sizeof(PsqlScanStateData));
5460
5461 state->callbacks = callbacks;
5462
5463 psql_yylex_init(&state->scanner);
5464
5465 psql_yyset_extra(state,state->scanner);
5466
5467 psql_scan_reset(state);
5468
5469 return state;
5470}
5471
5472/*
5473 * Destroy a lexer working state struct, releasing all resources.
5474 */
5475void
5476psql_scan_destroy(PsqlScanState state)
5477{
5478 psql_scan_finish(state);
5479
5480 psql_scan_reset(state);
5481
5482 psql_yylex_destroy(state->scanner);
5483
5484 free(state);
5485}
5486
5487/*
5488 * Set the callback passthrough pointer for the lexer.
5489 *
5490 * This could have been integrated into psql_scan_create, but keeping it
5491 * separate allows the application to change the pointer later, which might
5492 * be useful.
5493 */
5494void
5495psql_scan_set_passthrough(PsqlScanState state, void *passthrough)
5496{
5497 state->cb_passthrough = passthrough;
5498}
5499
5500/*
5501 * Set up to perform lexing of the given input line.
5502 *
5503 * The text at *line, extending for line_len bytes, will be scanned by
5504 * subsequent calls to the psql_scan routines. psql_scan_finish should
5505 * be called when scanning is complete. Note that the lexer retains
5506 * a pointer to the storage at *line --- this string must not be altered
5507 * or freed until after psql_scan_finish is called.
5508 *
5509 * encoding is the libpq identifier for the character encoding in use,
5510 * and std_strings says whether standard_conforming_strings is on.
5511 */
5512void
5513psql_scan_setup(PsqlScanState state,
5514 const char *line, int line_len,
5515 int encoding, bool std_strings)
5516{
5517 /* Mustn't be scanning already */
5518 Assert(state->scanbufhandle == NULL);
5519 Assert(state->buffer_stack == NULL);
5520
5521 /* Do we need to hack the character set encoding? */
5522 state->encoding = encoding;
5523 state->safe_encoding = pg_valid_server_encoding_id(encoding);
5524
5525 /* Save standard-strings flag as well */
5526 state->std_strings = std_strings;
5527
5528 /* Set up flex input buffer with appropriate translation and padding */
5529 state->scanbufhandle = psqlscan_prepare_buffer(state, line, line_len,
5530 &state->scanbuf);
5531 state->scanline = line;
5532
5533 /* Set lookaside data in case we have to map unsafe encoding */
5534 state->curline = state->scanbuf;
5535 state->refline = state->scanline;
5536}
5537
5538/*
5539 * Do lexical analysis of SQL command text.
5540 *
5541 * The text previously passed to psql_scan_setup is scanned, and appended
5542 * (possibly with transformation) to query_buf.
5543 *
5544 * The return value indicates the condition that stopped scanning:
5545 *
5546 * PSCAN_SEMICOLON: found a command-ending semicolon. (The semicolon is
5547 * transferred to query_buf.) The command accumulated in query_buf should
5548 * be executed, then clear query_buf and call again to scan the remainder
5549 * of the line.
5550 *
5551 * PSCAN_BACKSLASH: found a backslash that starts a special command.
5552 * Any previous data on the line has been transferred to query_buf.
5553 * The caller will typically next apply a separate flex lexer to scan
5554 * the special command.
5555 *
5556 * PSCAN_INCOMPLETE: the end of the line was reached, but we have an
5557 * incomplete SQL command. *prompt is set to the appropriate prompt type.
5558 *
5559 * PSCAN_EOL: the end of the line was reached, and there is no lexical
5560 * reason to consider the command incomplete. The caller may or may not
5561 * choose to send it. *prompt is set to the appropriate prompt type if
5562 * the caller chooses to collect more input.
5563 *
5564 * In the PSCAN_INCOMPLETE and PSCAN_EOL cases, psql_scan_finish() should
5565 * be called next, then the cycle may be repeated with a fresh input line.
5566 *
5567 * In all cases, *prompt is set to an appropriate prompt type code for the
5568 * next line-input operation.
5569 */
5570PsqlScanResult
5571psql_scan(PsqlScanState state,
5572 PQExpBuffer query_buf,
5573 promptStatus_t *prompt)
5574{
5575 PsqlScanResult result;
5576 int lexresult;
5577
5578 /* Must be scanning already */
5579 Assert(state->scanbufhandle != NULL);
5580
5581 /* Set current output target */
5582 state->output_buf = query_buf;
5583
5584 /* Set input source */
5585 if (state->buffer_stack != NULL)
5586 psql_yy_switch_to_buffer(state->buffer_stack->buf,state->scanner);
5587 else
5588 psql_yy_switch_to_buffer(state->scanbufhandle,state->scanner);
5589
5590 /* And lex. */
5591 lexresult = psql_yylex(NULL,state->scanner);
5592
5593 /*
5594 * Check termination state and return appropriate result info.
5595 */
5596 switch (lexresult)
5597 {
5598 case LEXRES_EOL: /* end of input */
5599 switch (state->start_state)
5600 {
5601 case INITIAL:
5602 case xuiend: /* we treat these like INITIAL */
5603 case xusend:
5604 if (state->paren_depth > 0)
5605 {
5606 result = PSCAN_INCOMPLETE;
5607 *prompt = PROMPT_PAREN;
5608 }
5609 else if (query_buf->len > 0)
5610 {
5611 result = PSCAN_EOL;
5612 *prompt = PROMPT_CONTINUE;
5613 }
5614 else
5615 {
5616 /* never bother to send an empty buffer */
5617 result = PSCAN_INCOMPLETE;
5618 *prompt = PROMPT_READY;
5619 }
5620 break;
5621 case xb:
5622 result = PSCAN_INCOMPLETE;
5623 *prompt = PROMPT_SINGLEQUOTE;
5624 break;
5625 case xc:
5626 result = PSCAN_INCOMPLETE;
5627 *prompt = PROMPT_COMMENT;
5628 break;
5629 case xd:
5630 result = PSCAN_INCOMPLETE;
5631 *prompt = PROMPT_DOUBLEQUOTE;
5632 break;
5633 case xh:
5634 result = PSCAN_INCOMPLETE;
5635 *prompt = PROMPT_SINGLEQUOTE;
5636 break;
5637 case xe:
5638 result = PSCAN_INCOMPLETE;
5639 *prompt = PROMPT_SINGLEQUOTE;
5640 break;
5641 case xq:
5642 result = PSCAN_INCOMPLETE;
5643 *prompt = PROMPT_SINGLEQUOTE;
5644 break;
5645 case xdolq:
5646 result = PSCAN_INCOMPLETE;
5647 *prompt = PROMPT_DOLLARQUOTE;
5648 break;
5649 case xui:
5650 result = PSCAN_INCOMPLETE;
5651 *prompt = PROMPT_DOUBLEQUOTE;
5652 break;
5653 case xus:
5654 result = PSCAN_INCOMPLETE;
5655 *prompt = PROMPT_SINGLEQUOTE;
5656 break;
5657 default:
5658 /* can't get here */
5659 fprintf(stderr, "invalid YY_START\n");
5660 exit(1);
5661 }
5662 break;
5663 case LEXRES_SEMI: /* semicolon */
5664 result = PSCAN_SEMICOLON;
5665 *prompt = PROMPT_READY;
5666 break;
5667 case LEXRES_BACKSLASH: /* backslash */
5668 result = PSCAN_BACKSLASH;
5669 *prompt = PROMPT_READY;
5670 break;
5671 default:
5672 /* can't get here */
5673 fprintf(stderr, "invalid psql_yylex result\n");
5674 exit(1);
5675 }
5676
5677 return result;
5678}
5679
5680/*
5681 * Clean up after scanning a string. This flushes any unread input and
5682 * releases resources (but not the PsqlScanState itself). Note however
5683 * that this does not reset the lexer scan state; that can be done by
5684 * psql_scan_reset(), which is an orthogonal operation.
5685 *
5686 * It is legal to call this when not scanning anything (makes it easier
5687 * to deal with error recovery).
5688 */
5689void
5690psql_scan_finish(PsqlScanState state)
5691{
5692 /* Drop any incomplete variable expansions. */
5693 while (state->buffer_stack != NULL)
5694 psqlscan_pop_buffer_stack(state);
5695
5696 /* Done with the outer scan buffer, too */
5697 if (state->scanbufhandle)
5698 psql_yy_delete_buffer(state->scanbufhandle,state->scanner);
5699 state->scanbufhandle = NULL;
5700 if (state->scanbuf)
5701 free(state->scanbuf);
5702 state->scanbuf = NULL;
5703}
5704
5705/*
5706 * Reset lexer scanning state to start conditions. This is appropriate
5707 * for executing \r psql commands (or any other time that we discard the
5708 * prior contents of query_buf). It is not, however, necessary to do this
5709 * when we execute and clear the buffer after getting a PSCAN_SEMICOLON or
5710 * PSCAN_EOL scan result, because the scan state must be INITIAL when those
5711 * conditions are returned.
5712 *
5713 * Note that this is unrelated to flushing unread input; that task is
5714 * done by psql_scan_finish().
5715 */
5716void
5717psql_scan_reset(PsqlScanState state)
5718{
5719 state->start_state = INITIAL;
5720 state->paren_depth = 0;
5721 state->xcdepth = 0; /* not really necessary */
5722 if (state->dolqstart)
5723 free(state->dolqstart);
5724 state->dolqstart = NULL;
5725}
5726
5727/*
5728 * Reselect this lexer (psqlscan.l) after using another one.
5729 *
5730 * Currently and for foreseeable uses, it's sufficient to reset to INITIAL
5731 * state, because we'd never switch to another lexer in a different state.
5732 * However, we don't want to reset e.g. paren_depth, so this can't be
5733 * the same as psql_scan_reset().
5734 *
5735 * Note: psql setjmp error recovery just calls psql_scan_reset(), so that
5736 * must be a superset of this.
5737 *
5738 * Note: it seems likely that other lexers could just assign INITIAL for
5739 * themselves, since that probably has the value zero in every flex-generated
5740 * lexer. But let's not assume that.
5741 */
5742void
5743psql_scan_reselect_sql_lexer(PsqlScanState state)
5744{
5745 state->start_state = INITIAL;
5746}
5747
5748/*
5749 * Return true if lexer is currently in an "inside quotes" state.
5750 *
5751 * This is pretty grotty but is needed to preserve the old behavior
5752 * that mainloop.c drops blank lines not inside quotes without even
5753 * echoing them.
5754 */
5755bool
5756psql_scan_in_quote(PsqlScanState state)
5757{
5758 return state->start_state != INITIAL;
5759}
5760
5761/*
5762 * Push the given string onto the stack of stuff to scan.
5763 *
5764 * NOTE SIDE EFFECT: the new buffer is made the active flex input buffer.
5765 */
5766void
5767psqlscan_push_new_buffer(PsqlScanState state, const char *newstr,
5768 const char *varname)
5769{
5770 StackElem *stackelem;
5771
5772 stackelem = (StackElem *) pg_malloc(sizeof(StackElem));
5773
5774 /*
5775 * In current usage, the passed varname points at the current flex input
5776 * buffer; we must copy it before calling psqlscan_prepare_buffer()
5777 * because that will change the buffer state.
5778 */
5779 stackelem->varname = varname ? pg_strdup(varname) : NULL;
5780
5781 stackelem->buf = psqlscan_prepare_buffer(state, newstr, strlen(newstr),
5782 &stackelem->bufstring);
5783 state->curline = stackelem->bufstring;
5784 if (state->safe_encoding)
5785 {
5786 stackelem->origstring = NULL;
5787 state->refline = stackelem->bufstring;
5788 }
5789 else
5790 {
5791 stackelem->origstring = pg_strdup(newstr);
5792 state->refline = stackelem->origstring;
5793 }
5794 stackelem->next = state->buffer_stack;
5795 state->buffer_stack = stackelem;
5796}
5797
5798/*
5799 * Pop the topmost buffer stack item (there must be one!)
5800 *
5801 * NB: after this, the flex input state is unspecified; caller must
5802 * switch to an appropriate buffer to continue lexing.
5803 * See psqlscan_select_top_buffer().
5804 */
5805void
5806psqlscan_pop_buffer_stack(PsqlScanState state)
5807{
5808 StackElem *stackelem = state->buffer_stack;
5809
5810 state->buffer_stack = stackelem->next;
5811 psql_yy_delete_buffer(stackelem->buf,state->scanner);
5812 free(stackelem->bufstring);
5813 if (stackelem->origstring)
5814 free(stackelem->origstring);
5815 if (stackelem->varname)
5816 free(stackelem->varname);
5817 free(stackelem);
5818}
5819
5820/*
5821 * Select the topmost surviving buffer as the active input.
5822 */
5823void
5824psqlscan_select_top_buffer(PsqlScanState state)
5825{
5826 StackElem *stackelem = state->buffer_stack;
5827
5828 if (stackelem != NULL)
5829 {
5830 psql_yy_switch_to_buffer(stackelem->buf,state->scanner);
5831 state->curline = stackelem->bufstring;
5832 state->refline = stackelem->origstring ? stackelem->origstring : stackelem->bufstring;
5833 }
5834 else
5835 {
5836 psql_yy_switch_to_buffer(state->scanbufhandle,state->scanner);
5837 state->curline = state->scanbuf;
5838 state->refline = state->scanline;
5839 }
5840}
5841
5842/*
5843 * Check if specified variable name is the source for any string
5844 * currently being scanned
5845 */
5846bool
5847psqlscan_var_is_current_source(PsqlScanState state, const char *varname)
5848{
5849 StackElem *stackelem;
5850
5851 for (stackelem = state->buffer_stack;
5852 stackelem != NULL;
5853 stackelem = stackelem->next)
5854 {
5855 if (stackelem->varname && strcmp(stackelem->varname, varname) == 0)
5856 return true;
5857 }
5858 return false;
5859}
5860
5861/*
5862 * Set up a flex input buffer to scan the given data. We always make a
5863 * copy of the data. If working in an unsafe encoding, the copy has
5864 * multibyte sequences replaced by FFs to avoid fooling the lexer rules.
5865 *
5866 * NOTE SIDE EFFECT: the new buffer is made the active flex input buffer.
5867 */
5868YY_BUFFER_STATE
5869psqlscan_prepare_buffer(PsqlScanState state, const char *txt, int len,
5870 char **txtcopy)
5871{
5872 char *newtxt;
5873
5874 /* Flex wants two \0 characters after the actual data */
5875 newtxt = pg_malloc(len + 2);
5876 *txtcopy = newtxt;
5877 newtxt[len] = newtxt[len + 1] = YY_END_OF_BUFFER_CHAR;
5878
5879 if (state->safe_encoding)
5880 memcpy(newtxt, txt, len);
5881 else
5882 {
5883 /* Gotta do it the hard way */
5884 int i = 0;
5885
5886 while (i < len)
5887 {
5888 int thislen = PQmblen(txt + i, state->encoding);
5889
5890 /* first byte should always be okay... */
5891 newtxt[i] = txt[i];
5892 i++;
5893 while (--thislen > 0 && i < len)
5894 newtxt[i++] = (char) 0xFF;
5895 }
5896 }
5897
5898 return psql_yy_scan_buffer(newtxt,len + 2,state->scanner);
5899}
5900
5901/*
5902 * psqlscan_emit() --- body for ECHO macro
5903 *
5904 * NB: this must be used for ALL and ONLY the text copied from the flex
5905 * input data. If you pass it something that is not part of the yytext
5906 * string, you are making a mistake. Internally generated text can be
5907 * appended directly to state->output_buf.
5908 */
5909void
5910psqlscan_emit(PsqlScanState state, const char *txt, int len)
5911{
5912 PQExpBuffer output_buf = state->output_buf;
5913
5914 if (state->safe_encoding)
5915 appendBinaryPQExpBuffer(output_buf, txt, len);
5916 else
5917 {
5918 /* Gotta do it the hard way */
5919 const char *reference = state->refline;
5920 int i;
5921
5922 reference += (txt - state->curline);
5923
5924 for (i = 0; i < len; i++)
5925 {
5926 char ch = txt[i];
5927
5928 if (ch == (char) 0xFF)
5929 ch = reference[i];
5930 appendPQExpBufferChar(output_buf, ch);
5931 }
5932 }
5933}
5934
5935/*
5936 * psqlscan_extract_substring --- fetch value of (part of) the current token
5937 *
5938 * This is like psqlscan_emit(), except that the data is returned as a
5939 * malloc'd string rather than being pushed directly to state->output_buf.
5940 */
5941char *
5942psqlscan_extract_substring(PsqlScanState state, const char *txt, int len)
5943{
5944 char *result = (char *) pg_malloc(len + 1);
5945
5946 if (state->safe_encoding)
5947 memcpy(result, txt, len);
5948 else
5949 {
5950 /* Gotta do it the hard way */
5951 const char *reference = state->refline;
5952 int i;
5953
5954 reference += (txt - state->curline);
5955
5956 for (i = 0; i < len; i++)
5957 {
5958 char ch = txt[i];
5959
5960 if (ch == (char) 0xFF)
5961 ch = reference[i];
5962 result[i] = ch;
5963 }
5964 }
5965 result[len] = '\0';
5966 return result;
5967}
5968
5969/*
5970 * psqlscan_escape_variable --- process :'VARIABLE' or :"VARIABLE"
5971 *
5972 * If the variable name is found, escape its value using the appropriate
5973 * quoting method and emit the value to output_buf. (Since the result is
5974 * surely quoted, there is never any reason to rescan it.) If we don't
5975 * find the variable or escaping fails, emit the token as-is.
5976 */
5977void
5978psqlscan_escape_variable(PsqlScanState state, const char *txt, int len,
5979 PsqlScanQuoteType quote)
5980{
5981 char *varname;
5982 char *value;
5983
5984 /* Variable lookup. */
5985 varname = psqlscan_extract_substring(state, txt + 2, len - 3);
5986 if (state->callbacks->get_variable)
5987 value = state->callbacks->get_variable(varname, quote,
5988 state->cb_passthrough);
5989 else
5990 value = NULL;
5991 free(varname);
5992
5993 if (value)
5994 {
5995 /* Emit the suitably-escaped value */
5996 appendPQExpBufferStr(state->output_buf, value);
5997 free(value);
5998 }
5999 else
6000 {
6001 /* Emit original token as-is */
6002 psqlscan_emit(state, txt, len);
6003 }
6004}
6005
6006void
6007psqlscan_test_variable(PsqlScanState state, const char *txt, int len)
6008{
6009 char *varname;
6010 char *value;
6011
6012 varname = psqlscan_extract_substring(state, txt + 3, len - 4);
6013 if (state->callbacks->get_variable)
6014 value = state->callbacks->get_variable(varname, PQUOTE_PLAIN,
6015 state->cb_passthrough);
6016 else
6017 value = NULL;
6018 free(varname);
6019
6020 if (value != NULL)
6021 {
6022 psqlscan_emit(state, "TRUE", 4);
6023 free(value);
6024 }
6025 else
6026 {
6027 psqlscan_emit(state, "FALSE", 5);
6028 }
6029}
6030
6031