LCOV - code coverage report
Current view: top level - src/fe_utils - psqlscan.c (source / functions) Hit Total Coverage
Test: PostgreSQL Lines: 161 403 40.0 %
Date: 2017-09-29 15:12:54 Functions: 15 41 36.6 %
Legend: Lines: hit not hit

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

Generated by: LCOV version 1.11