
#line 3 "ldlex.c"

#define  YY_INT_ALIGNED short int

/* A lexical scanner generated by flex */

#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2
#define YY_FLEX_MINOR_VERSION 5
#define YY_FLEX_SUBMINOR_VERSION 35
#if YY_FLEX_SUBMINOR_VERSION > 0
#define FLEX_BETA
#endif

/* First, we deal with  platform-specific or compiler-specific issues. */

/* begin standard C headers. */
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>

/* end standard C headers. */

/* flex integer type definitions */

#ifndef FLEXINT_H
#define FLEXINT_H

/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */

#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L

/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
 * if you want the limit (max/min) macros for int types. 
 */
#ifndef __STDC_LIMIT_MACROS
#define __STDC_LIMIT_MACROS 1
#endif

#include <inttypes.h>
typedef int8_t flex_int8_t;
typedef uint8_t flex_uint8_t;
typedef int16_t flex_int16_t;
typedef uint16_t flex_uint16_t;
typedef int32_t flex_int32_t;
typedef uint32_t flex_uint32_t;
typedef uint64_t flex_uint64_t;
#else
typedef signed char flex_int8_t;
typedef short int flex_int16_t;
typedef int flex_int32_t;
typedef unsigned char flex_uint8_t; 
typedef unsigned short int flex_uint16_t;
typedef unsigned int flex_uint32_t;
#endif /* ! C99 */

/* Limits of integral types. */
#ifndef INT8_MIN
#define INT8_MIN               (-128)
#endif
#ifndef INT16_MIN
#define INT16_MIN              (-32767-1)
#endif
#ifndef INT32_MIN
#define INT32_MIN              (-2147483647-1)
#endif
#ifndef INT8_MAX
#define INT8_MAX               (127)
#endif
#ifndef INT16_MAX
#define INT16_MAX              (32767)
#endif
#ifndef INT32_MAX
#define INT32_MAX              (2147483647)
#endif
#ifndef UINT8_MAX
#define UINT8_MAX              (255U)
#endif
#ifndef UINT16_MAX
#define UINT16_MAX             (65535U)
#endif
#ifndef UINT32_MAX
#define UINT32_MAX             (4294967295U)
#endif

#endif /* ! FLEXINT_H */

#ifdef __cplusplus

/* The "const" storage-class-modifier is valid. */
#define YY_USE_CONST

#else	/* ! __cplusplus */

/* C99 requires __STDC__ to be defined as 1. */
#if defined (__STDC__)

#define YY_USE_CONST

#endif	/* defined (__STDC__) */
#endif	/* ! __cplusplus */

#ifdef YY_USE_CONST
#define yyconst const
#else
#define yyconst
#endif

/* Returned upon end-of-file. */
#define YY_NULL 0

/* Promotes a possibly negative, possibly signed char to an unsigned
 * integer for use as an array index.  If the signed char is negative,
 * we want to instead treat it as an 8-bit unsigned char, hence the
 * double cast.
 */
#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)

/* Enter a start condition.  This macro really ought to take a parameter,
 * but we do it the disgusting crufty way forced on us by the ()-less
 * definition of BEGIN.
 */
#define BEGIN (yy_start) = 1 + 2 *

/* Translate the current start state into a value that can be later handed
 * to BEGIN to return to the state.  The YYSTATE alias is for lex
 * compatibility.
 */
#define YY_START (((yy_start) - 1) / 2)
#define YYSTATE YY_START

/* Action number for EOF rule of a given start state. */
#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)

/* Special action meaning "start processing a new file". */
#define YY_NEW_FILE yyrestart(yyin  )

#define YY_END_OF_BUFFER_CHAR 0

/* Size of default input buffer. */
#ifndef YY_BUF_SIZE
#define YY_BUF_SIZE 16384
#endif

/* The state buf must be large enough to hold one state per character in the main buffer.
 */
#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))

#ifndef YY_TYPEDEF_YY_BUFFER_STATE
#define YY_TYPEDEF_YY_BUFFER_STATE
typedef struct yy_buffer_state *YY_BUFFER_STATE;
#endif

#ifndef YY_TYPEDEF_YY_SIZE_T
#define YY_TYPEDEF_YY_SIZE_T
typedef size_t yy_size_t;
#endif

extern yy_size_t yyleng;

extern FILE *yyin, *yyout;

#define EOB_ACT_CONTINUE_SCAN 0
#define EOB_ACT_END_OF_FILE 1
#define EOB_ACT_LAST_MATCH 2

    #define YY_LESS_LINENO(n)
    
/* Return all but the first "n" matched characters back to the input stream. */
#define yyless(n) \
	do \
		{ \
		/* Undo effects of setting up yytext. */ \
        int yyless_macro_arg = (n); \
        YY_LESS_LINENO(yyless_macro_arg);\
		*yy_cp = (yy_hold_char); \
		YY_RESTORE_YY_MORE_OFFSET \
		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
		} \
	while ( 0 )

#define unput(c) yyunput( c, (yytext_ptr)  )

#ifndef YY_STRUCT_YY_BUFFER_STATE
#define YY_STRUCT_YY_BUFFER_STATE
struct yy_buffer_state
	{
	FILE *yy_input_file;

	char *yy_ch_buf;		/* input buffer */
	char *yy_buf_pos;		/* current position in input buffer */

	/* Size of input buffer in bytes, not including room for EOB
	 * characters.
	 */
	yy_size_t yy_buf_size;

	/* Number of characters read into yy_ch_buf, not including EOB
	 * characters.
	 */
	yy_size_t yy_n_chars;

	/* Whether we "own" the buffer - i.e., we know we created it,
	 * and can realloc() it to grow it, and should free() it to
	 * delete it.
	 */
	int yy_is_our_buffer;

	/* Whether this is an "interactive" input source; if so, and
	 * if we're using stdio for input, then we want to use getc()
	 * instead of fread(), to make sure we stop fetching input after
	 * each newline.
	 */
	int yy_is_interactive;

	/* Whether we're considered to be at the beginning of a line.
	 * If so, '^' rules will be active on the next match, otherwise
	 * not.
	 */
	int yy_at_bol;

    int yy_bs_lineno; /**< The line count. */
    int yy_bs_column; /**< The column count. */
    
	/* Whether to try to fill the input buffer when we reach the
	 * end of it.
	 */
	int yy_fill_buffer;

	int yy_buffer_status;

#define YY_BUFFER_NEW 0
#define YY_BUFFER_NORMAL 1
	/* When an EOF's been seen but there's still some text to process
	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
	 * shouldn't try reading from the input source any more.  We might
	 * still have a bunch of tokens to match, though, because of
	 * possible backing-up.
	 *
	 * When we actually see the EOF, we change the status to "new"
	 * (via yyrestart()), so that the user can continue scanning by
	 * just pointing yyin at a new input file.
	 */
#define YY_BUFFER_EOF_PENDING 2

	};
#endif /* !YY_STRUCT_YY_BUFFER_STATE */

/* Stack of input buffers. */
static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */

/* We provide macros for accessing buffer states in case in the
 * future we want to put the buffer states in a more general
 * "scanner state".
 *
 * Returns the top of the stack, or NULL.
 */
#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
                          : NULL)

/* Same as previous macro, but useful when we know that the buffer stack is not
 * NULL or when we need an lvalue. For internal use only.
 */
#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]

/* yy_hold_char holds the character lost when yytext is formed. */
static char yy_hold_char;
static yy_size_t yy_n_chars;		/* number of characters read into yy_ch_buf */
yy_size_t yyleng;

/* Points to current character in buffer. */
static char *yy_c_buf_p = (char *) 0;
static int yy_init = 0;		/* whether we need to initialize */
static int yy_start = 0;	/* start state number */

/* Flag which is used to allow yywrap()'s to do buffer switches
 * instead of setting up a fresh yyin.  A bit of a hack ...
 */
static int yy_did_buffer_switch_on_eof;

void yyrestart (FILE *input_file  );
void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
YY_BUFFER_STATE yy_create_buffer (FILE *file,int size  );
void yy_delete_buffer (YY_BUFFER_STATE b  );
void yy_flush_buffer (YY_BUFFER_STATE b  );
void yypush_buffer_state (YY_BUFFER_STATE new_buffer  );
void yypop_buffer_state (void );

static void yyensure_buffer_stack (void );
static void yy_load_buffer_state (void );
static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );

#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )

YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len  );

void *yyalloc (yy_size_t  );
void *yyrealloc (void *,yy_size_t  );
void yyfree (void *  );

#define yy_new_buffer yy_create_buffer

#define yy_set_interactive(is_interactive) \
	{ \
	if ( ! YY_CURRENT_BUFFER ){ \
        yyensure_buffer_stack (); \
		YY_CURRENT_BUFFER_LVALUE =    \
            yy_create_buffer(yyin,YY_BUF_SIZE ); \
	} \
	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
	}

#define yy_set_bol(at_bol) \
	{ \
	if ( ! YY_CURRENT_BUFFER ){\
        yyensure_buffer_stack (); \
		YY_CURRENT_BUFFER_LVALUE =    \
            yy_create_buffer(yyin,YY_BUF_SIZE ); \
	} \
	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
	}

#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)

/* Begin user sect3 */

typedef unsigned char YY_CHAR;

FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;

typedef int yy_state_type;

extern int yylineno;

int yylineno = 1;

extern char *yytext;
#define yytext_ptr yytext

static yy_state_type yy_get_previous_state (void );
static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
static int yy_get_next_buffer (void );
static void yy_fatal_error (yyconst char msg[]  );

/* Done after the current pattern has been matched and before the
 * corresponding action - sets up yytext.
 */
#define YY_DO_BEFORE_ACTION \
	(yytext_ptr) = yy_bp; \
	yyleng = (yy_size_t) (yy_cp - yy_bp); \
	(yy_hold_char) = *yy_cp; \
	*yy_cp = '\0'; \
	(yy_c_buf_p) = yy_cp;

#define YY_NUM_RULES 197
#define YY_END_OF_BUFFER 198
/* This struct is not used in this scanner,
   but its presence is necessary. */
struct yy_trans_info
	{
	flex_int32_t yy_verify;
	flex_int32_t yy_nxt;
	};
static yyconst flex_int16_t yy_accept[1751] =
    {   0,
        0,    0,  177,  177,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,  198,  197,
      195,  180,  179,   32,  195,  177,   38,   29,   44,   43,
       34,   35,   28,   36,  177,   37,    8,    8,   45,   46,
       39,   40,   27,   33,  177,  177,  177,  177,  177,  177,
      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
      177,  177,  177,  177,   10,    9,  177,  119,  117,  177,
       42,   30,   41,   31,  196,  180,   32,  196,  175,   38,
       29,   44,   43,   34,   35,   28,   36,  175,   37,    8,
        8,   45,   46,   39,   40,   27,   33,  175,  175,  175,

      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
      175,  175,  175,   10,    9,  175,  175,   42,   30,   41,
       31,  173,   36,  173,   37,    8,    8,  173,  173,  173,
      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
      173,  173,  173,  173,  173,  173,  173,  173,  119,  117,
      173,   31,    4,    3,    2,    4,    5,  134,   32,  133,
      172,   34,   35,   28,   36,  172,   37,    8,    8,   45,
       46,   40,   33,  172,  172,  172,  172,  172,  172,  172,
      172,  172,  172,  172,  172,   10,    9,  172,  172,  172,
      172,  172,  172,  172,  172,  172,  172,  172,   31,  194,

      192,  193,  195,  187,  186,  181,  188,  189,  185,  185,
      185,  185,  190,  191,  180,  177,   15,    0,  178,    8,
       26,   24,   22,   20,   21,    1,   23,    8,    8,  177,
       18,   17,   14,   16,   19,  177,  177,  177,  177,  177,
      124,  177,  177,  177,  177,  177,  177,  177,  177,  177,
      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
       25,   13,   15,  175,    6,   22,   20,   21,    0,    1,

       23,    8,    0,    7,    7,    8,    7,   14,  175,    7,
        7,    7,  175,  175,  124,    7,  175,  175,    7,  175,
      175,  175,    7,  175,  175,  175,  175,  175,  175,  175,
      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
      175,    7,  175,  173,    8,    0,   23,    8,    0,  173,
      173,  173,  173,  173,  124,  173,  173,  173,  173,  173,
      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,

      173,  173,  173,  173,  173,    4,    4,  133,  133,  172,
        6,  135,   22,  136,  172,    7,    7,    7,  172,  172,
      172,    7,  172,    7,    7,  172,  172,  172,  172,  172,
      172,  172,  172,    7,  172,  172,  172,    7,  172,    7,
        7,  172,  172,  172,  172,  172,  172,  172,  172,  194,
      193,  186,  185,    0,  185,  185,  185,   11,   12,  177,
      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
      177,  177,  177,   93,  177,  177,  177,  177,  177,  177,
      177,  177,  177,  177,   72,  177,  177,  177,  177,  177,

      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
      177,  177,  120,  118,  177,    8,  176,    8,  175,    7,
      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
       62,   63,  175,  175,  175,  175,  175,  175,  175,  175,
      175,  175,  175,  175,  175,    8,  174,  173,  173,  173,
      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
      173,   93,  173,  173,  173,  173,  173,  173,  173,  173,

      173,  173,  173,   72,   62,  173,   63,  173,  173,  173,
      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
      173,  173,  173,  120,  118,  173,    4,    8,  172,  172,
      172,  172,  172,  137,  172,  172,  172,  172,  172,  172,
      172,  172,  172,  172,  172,  172,  172,  172,  172,  154,
      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
      185,  185,  185,  177,   59,  177,  177,  177,  177,  177,
       53,  177,  100,  177,  111,  177,  177,  177,  177,  177,
      177,  177,   89,  177,  177,  177,  177,  177,  112,  177,

      177,  177,  130,  177,  177,  177,   98,  177,   68,  177,
      177,  177,  177,  177,  177,  177,  177,  177,   96,  177,
      177,  177,  177,  177,  177,  106,  177,  177,  177,  177,
      177,  177,  177,  177,  177,  175,   59,  175,  175,  175,
       53,  175,  175,  111,  175,  175,  175,  175,  175,  175,
      175,  112,  175,  130,  175,  175,  175,   68,  175,  175,
      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
      173,   59,  173,  173,  173,  173,  173,   53,  173,  100,
      173,  111,  173,  173,  173,  173,  173,  173,  173,   89,
      173,  173,  173,  173,  173,  112,  173,  173,  173,  130,

      173,  173,  173,  173,   98,  173,   68,  173,  173,  173,
      173,  173,  173,  173,  173,  173,   96,  173,  173,  173,
      173,  173,  173,  106,  173,  173,  173,  173,  173,  173,
      173,  173,  173,  172,  172,  172,  141,  149,  140,  172,
      172,  151,  144,  147,  172,  172,  152,  172,  172,  172,
      172,  172,  158,  166,  157,  172,  172,  169,  161,  164,
      172,  172,  170,  172,  172,  185,  185,  185,  177,   87,
       55,  177,  177,  177,   52,  177,  177,  177,  177,  110,
       66,  177,  177,   95,  177,   78,  177,  177,  177,   77,
      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,

      177,  177,  123,  177,  177,  177,  177,  177,   99,  177,
      177,  177,   97,  177,  177,  177,  177,  177,  177,  177,
      175,   55,  175,  175,   52,  175,  175,  175,  110,  175,
       78,  175,  175,  175,  175,  175,  175,  175,  175,  175,
      175,  175,  175,  175,  175,  175,  175,  175,  175,  173,
       87,   55,  173,  173,  173,   52,  173,  173,  173,  173,
      110,   66,  173,  173,   95,  173,   78,  173,  173,  173,
       77,  173,  173,  173,  173,  173,  173,  173,  173,  173,
      173,  173,  173,  173,  123,  173,  173,  173,  173,  173,
       99,  173,  173,  173,   97,  173,  173,  173,  173,  173,

      173,  173,  172,  142,  139,  172,  172,  151,  151,  146,
      172,  150,  172,  172,  159,  156,  172,  172,  169,  169,
      163,  172,  168,  172,  185,  185,  183,  177,  177,  177,
       65,  177,   88,  177,  177,  177,  177,  177,  177,   67,
      177,  127,  177,  177,  177,   86,  177,   54,  177,   47,
      177,  177,  109,  177,   50,   76,  177,  177,  177,  177,
      177,  177,   73,  177,  177,  177,  177,  177,   94,   74,
      177,  177,  177,  175,  175,  175,   65,  175,  175,  175,
      175,  175,  127,  175,  175,   54,  175,  175,  175,  109,
      175,   50,  175,  175,  175,   73,  175,  175,  175,  175,

      173,  173,  173,   65,  173,   88,  173,  173,  173,  173,
      173,  173,   67,  173,  127,  173,  173,  173,   86,  173,
       54,  173,  173,   47,  173,  173,  109,  173,   50,   76,
      173,  173,  173,  173,  173,  173,   73,  173,  173,  173,
      173,  173,   94,   74,  173,  173,  173,  172,  172,   67,
      148,  145,  172,  172,  172,  167,  165,  162,  172,  184,
      182,  177,   61,  177,  177,  177,  177,  177,  177,   80,
      177,  177,  122,  177,  177,  177,  177,  177,  101,  177,
      177,  103,  128,  177,  177,  177,  177,  177,  177,  177,
      116,   90,  177,   51,  177,  177,  175,   61,  175,  175,

      175,  175,   80,  175,  122,  175,  175,  175,  175,  175,
      113,  128,  175,  175,  116,  175,  175,  175,  173,   61,
      173,  173,  173,  173,  173,  173,   80,  173,  173,  122,
      173,  173,  173,  173,  173,  173,  101,  173,  173,  103,
      128,  173,  173,  173,  173,  173,  173,  173,  116,   90,
      173,   51,  173,  173,  172,  172,  172,  172,  172,  172,
      153,  177,  177,  132,  177,  177,  177,  177,  177,  177,
      177,  177,   60,  177,  177,  177,  177,  177,  177,  177,
       85,  177,  177,  177,  177,  126,  171,  177,  153,  175,
      175,  132,  175,  175,  175,   60,   64,  175,  175,  175,

      175,  175,  126,  171,  175,  153,  173,  173,  132,  173,
      173,  173,  173,  173,  173,  173,  173,   60,   64,  173,
      173,  173,  173,  173,  173,  173,   85,  173,  173,  173,
      173,  126,  171,  173,  153,  138,  143,  171,  155,  160,
      177,   79,  177,  177,  177,  177,  177,  177,  177,  177,
      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
      177,  177,  108,  177,  175,   79,  175,  175,  175,  175,
      175,  175,  175,  175,  175,  173,   79,  173,  173,  173,
      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
      173,  173,  173,  173,  173,  173,  173,  108,  173,  177,

      177,  177,  177,  177,  177,  177,  177,   49,  177,  114,
      115,  177,  177,  177,  177,   75,  177,  177,  177,  177,
      177,  177,  175,  175,  175,  175,  175,  114,  115,  175,
      175,  175,  175,  173,  173,  173,  173,  173,  173,  173,
      173,   49,  173,  114,  115,  173,  173,  173,  173,   75,
      173,  173,  173,  173,  173,  173,  177,  177,  177,  177,
      177,  177,  177,  177,  102,   92,  177,  177,  177,  177,
      177,  177,  177,  177,  177,  175,  175,  175,  175,  102,
      175,  175,  175,  175,  173,  173,  173,  173,  173,  173,
      173,  173,  102,   92,  173,  173,  173,  173,  173,  173,

      173,  173,  173,  177,   82,  177,  177,  131,  177,  177,
      177,  177,  177,   48,  177,  177,  177,  177,  104,  177,
      175,  175,  131,  175,  175,  175,  175,  175,  173,   82,
      173,  173,  131,  173,  173,  173,  173,  173,   48,  173,
      173,  173,  173,  104,  173,  177,  177,  177,  177,  177,
      177,   91,  177,   71,  177,  177,  177,  177,  175,  175,
      175,  175,   71,  175,  175,  173,  173,  173,  173,  173,
      173,   91,  173,   71,  173,  173,  173,  173,  177,  177,
      177,  177,  177,  177,  177,  177,  129,   70,  177,  177,
       69,  175,  175,  175,  175,  175,  129,   70,   69,  173,

      173,  173,  173,  173,  173,  173,  173,  129,   70,  173,
      173,   69,  177,  177,  177,  177,  177,  177,  177,  177,
      177,  177,  175,  175,  175,  175,  175,  173,  173,  173,
      173,  173,  173,  173,  173,  173,  173,  125,  177,  177,
       58,  177,  177,  177,  177,  177,  177,  125,  175,   58,
      175,  175,  125,  173,  173,   58,  173,  173,  173,  173,
      173,  173,  177,  177,  177,  177,  177,  177,  105,  177,
      175,  175,  175,  173,  173,  173,  173,  173,  173,  105,
      173,  177,   56,  177,  177,  177,  177,  177,   56,  175,
      175,  173,   56,  173,  173,  173,  173,  173,  177,  177,

      177,  177,  121,  177,  175,  121,  173,  173,  173,  173,
      121,  173,  177,  177,  177,  177,  177,  175,  173,  173,
      173,  173,  173,   81,  177,  177,  177,  107,  175,   81,
      173,  173,  173,  107,   57,  177,  177,   57,   57,  173,
      173,   83,  177,   83,  173,  177,  173,   84,   84,    0
    } ;

static yyconst flex_int32_t yy_ec[256] =
    {   0,
        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
        1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    2,    4,    5,    6,    7,    8,    9,    1,   10,
       11,   12,   13,   14,   15,   16,   17,   18,   19,   20,
       19,   19,   19,   19,   19,   19,   19,   21,   22,   23,
       24,   25,   26,    1,   27,   28,   29,   30,   31,   32,
       33,   34,   35,   36,   37,   38,   39,   40,   41,   42,
       43,   44,   45,   46,   47,   48,   49,   50,   51,   52,
       53,   54,   55,   56,   57,    1,   58,   59,   60,   61,

       62,   63,   64,   65,   66,   16,   67,   68,   69,   70,
       71,   72,   16,   73,   74,   75,   76,   16,   16,   77,
       16,   78,   79,   80,   81,   82,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,

        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1
    } ;

static yyconst flex_int32_t yy_meta[83] =
    {   0,
        1,    1,    2,    3,    1,    1,    4,    1,    1,    1,
        1,    3,    5,    6,    7,    8,    9,   10,   10,   10,
        7,    1,    1,    6,    1,    3,   10,   10,   10,   10,
       10,   10,    8,    8,    8,    8,    8,    8,    8,    8,
        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
        8,    8,    7,    4,    7,    3,    8,   10,   10,   10,
       10,   10,   10,    8,    8,    8,    8,    8,    8,    8,
        8,    8,    8,    8,    8,    8,    8,    8,    1,    1,
        1,    9
    } ;

static yyconst flex_int16_t yy_base[1775] =
    {   0,
        0,    0,    0,    0,   82,    0,  164,    0,  246,  327,
      408,    0,  275,  277,  490,  572,  654,  736, 2703, 2704,
     2704, 2700, 2704, 2677, 2695,  801, 2704,  264, 2704, 2704,
     2675, 2674,    0, 2673,    0,  250,  581,  499,    0, 2704,
      252, 2672,  260,    0,  259,  255,  254,  269,  263,  274,
     2651,  272, 2654, 2662,  327,  289,  277,  315,  277, 2645,
     2660,  330, 2663, 2658,    0,    0, 2629, 2625, 2613, 2619,
     2704,  239, 2704,    0, 2704, 2682, 2659, 2677,  847, 2704,
      351, 2704, 2704, 2657, 2656, 2704,  298,    0,  355,  893,
      267, 2704, 2704,  300, 2655,  345, 2704,  953,  356,  359,

      494,  503,  576, 2634, 2642, 2636, 2644,  347,  358,  489,
      355, 2630,  516, 2704, 2704,  652, 2607, 2704,  482, 2704,
        0, 1013,  499,    0,  530,  745,  757,  655,  572,  485,
      534,  487,  567, 2628,  517, 2631, 2639,  599,  529,  578,
      594,  599, 2622, 2637,  661, 2640, 2635, 2606, 2602, 2590,
     2596,    0, 1059, 2704, 2704,    0, 2704, 2704, 2637, 2657,
     1105, 2635, 2634, 2704, 2633,    0, 2632,    0,  538, 2704,
        0, 2631, 2704, 1151,  608,  686,  609,  677,  653,  355,
     2627, 2609, 2605,  504, 2607, 2704, 2704,  724,  611,  661,
      702,  740,  545, 2592, 2576, 2572,  570, 2574,    0, 2644,

     2704,    0, 2633, 2704,    0, 2704, 2704, 2704, 2623,  536,
      663,  700, 2704, 2704, 2641,    0,    0, 2637, 2704,  730,
     2704, 2704,    0,    0,    0,    0,    0,  768,    0,    0,
     2617, 2704,    0, 2704, 2616, 2594, 2608, 2591, 2601,  567,
        0, 2603, 2594, 2592, 2586,  646, 2600, 2584, 2597, 2597,
     2581,  615, 2588, 2584, 2580, 2582, 2592, 2583,  807, 2589,
     2562, 2578,  683, 2575, 2577, 2565,  813, 2576, 2578, 2566,
     2580, 2580, 2568, 2581, 2574,  811, 2565, 2553, 2560, 2572,
     2555, 2574, 2572, 2554, 2554, 2553, 2522, 2525, 2530, 2515,
     2704, 2704, 2704,    0, 1211, 2704, 2704, 2704,    0, 2704,

     2704,  693,  864,    0, 2704, 2704,    0, 2704,  763,  842,
      929,    0, 2557,  728,    0,  962, 2551, 2549,  783,  989,
     1018, 2558, 2559, 2546, 2556,  814, 2554, 2544,  365, 2533,
     2542, 2531,  751, 2542, 2544, 2547, 2536, 2543, 2523, 2543,
     2545, 1009, 2494,    0, 1263,    0,    0,  878,    0, 2526,
     2540, 2523, 2533,  745,    0, 2535, 2526, 2524, 2518,  808,
     2532, 2516, 2529, 2529, 2513,  781, 2520, 2516, 2512, 2514,
     2524, 2515,  857, 2521, 2494, 2510,  902,  724, 2510, 2508,
     2497,  908, 2508, 2510, 2498, 2512, 2512, 2500, 2513, 2506,
      936, 2497, 2485, 2492, 2504, 2487, 2506, 2504, 2486, 2486,

     2485, 2454, 2457, 2462, 2447,    0, 1315, 2521, 2704,    0,
     1367,    0,    0,    0,  775,  948,  819,    0, 2488,  950,
      951, 2487, 2491, 2474, 2475, 2473, 2490, 2477, 2485, 2486,
     2484, 2485, 2464,  830, 2444,  862, 1021, 2443, 2447, 2432,
     2433, 2431, 2446, 2434, 2441, 2442, 2440, 2441, 2422, 2495,
        0,    0, 2475, 2474,  864,  848,  649, 2704, 2704, 2453,
     2449, 2461, 2458, 2459, 2449, 2447, 2457, 2457, 2454, 2439,
     2432, 2455, 2454, 2445, 2450, 2434, 2439, 2445, 2437, 2447,
     2444, 2425, 2441,    0, 2432, 2428, 2433, 2420, 2435, 2423,
     2432, 2430, 2432, 2428,    0, 2419, 2413, 2414, 2419, 2415,

     2404, 2421, 2411, 2408, 2407, 2402, 2419, 2413, 2403, 2400,
     2406, 2400, 2412, 2396, 2412, 2413, 2395, 2411, 2399, 2403,
     2390, 2363,    0,    0, 2371,    0,    0,  984, 2391, 1054,
     2398, 2399, 2389, 2398, 2398, 2381, 2374, 2397, 1066, 2394,
     2384, 2374, 2390, 2381, 2377, 2370, 2374, 2382, 2384, 2393,
        0,    0, 2366, 2367, 2369, 2358, 2375, 2363, 2358, 2366,
     2373, 2374, 2375, 2330, 2338,    0,    0, 2358, 2354, 2366,
     2363, 2364, 2354, 2352, 2362, 2362, 2359, 2344, 2337, 2360,
     2359, 2350, 2355, 2339, 2344, 2350, 2342, 2352, 2349, 2330,
     2346,    0, 2337, 2333, 2338, 2325, 2340, 2328, 2337, 2335,

     2337, 2346, 2332,    0,    0, 2323,    0, 2317, 2318, 2323,
     2319, 2308, 2325, 2315, 2312, 2311, 2306, 2323, 2317, 2307,
     2304, 2310, 2304, 2316, 2300, 2316, 2317, 2299, 2315, 2303,
     2307, 2294, 2267,    0,    0, 2275,    0,    0, 2295,  501,
     2304, 2303, 2291,    0, 2301, 2292, 2284, 2299, 2297, 2296,
     2288, 2279, 2280, 2283, 2251,  880, 2259, 2258, 2247,    0,
     2256, 2248, 2241, 2254, 2252, 2251, 2244, 2236, 2237, 2239,
      832,  833,  813, 2270,    0, 2263, 2266, 2261, 2273, 2259,
        0, 2265,    0, 2255,    0, 2254, 2242, 2258, 2251, 2245,
     2248, 2250,    0, 2247, 2261, 2249, 2259, 2242,    0, 2260,

     2241, 2242,    0, 2254, 2238, 2256,    0, 2238,    0, 2240,
     2239, 2252, 2221, 2242, 2229, 2237, 2229, 2238,    0, 2231,
     2242, 2235, 2238, 2222, 2226, 2209, 2230, 2234, 2217, 2224,
     2226, 2229, 2224, 2190, 2186, 2218,    0, 2215, 2210, 2222,
        0, 2215, 2205,    0, 2193, 2209, 2202, 2200, 2204, 2214,
     2197,    0, 2197,    0, 2196, 2214, 2211,    0, 2198, 2211,
     2180, 2201, 2197, 2199, 2202, 2191, 2196, 2192, 2161, 2157,
     2189,    0, 2182, 2185, 2180, 2192, 2178,    0, 2184,    0,
     2166,    0, 2156, 2135, 2142, 2123, 2114, 2115, 2117,    0,
     2111, 2116, 2095, 2096, 2074,    0, 2077, 2058, 2059,    0,

      251,  297,  347,  468,    0,  515,    0,  576,  625,  679,
      668,  693,  682,  694,  703,  716,    0,  740,  777,  820,
      842,  835,  852,  838,  881,  888,  880,  890,  913,  918,
      915,  893,  895,  930,  932,  957,    0,    0,    0,  957,
      975, 1436,    0,    0,  960,  970,    0,  960,  980,  942,
      946,  952,    0,    0,    0,  952,  968, 1517,    0,    0,
      955,  963,    0,  961,  978, 1036, 1039, 1037, 1005,    0,
     1024, 1015, 1031, 1035,    0, 1041, 1036, 1024, 1039,    0,
        0, 1050, 1053,    0, 1045,    0, 1063, 1076, 1072, 1051,
     1064, 1086, 1080, 1085, 1065, 1081, 1100, 1098, 1094, 1090,

     1085, 1111,    0, 1109, 1100, 1107, 1101, 1103,    0, 1112,
     1117, 1119,    0, 1100, 1113, 1121, 1104, 1110, 1076, 1090,
     1107, 1115, 1109, 1127,    0, 1132, 1115, 1130,    0, 1132,
        0, 1133, 1144, 1118, 1142, 1147, 1153, 1141, 1157, 1153,
     1150, 1164, 1163, 1154, 1163, 1169, 1162, 1122, 1136, 1153,
        0, 1161, 1157, 1173, 1174,    0, 1179, 1176, 1163, 1184,
        0,    0, 1187, 1179,    0, 1163,    0, 1181, 1194, 1190,
     1169, 1181, 1205, 1199, 1204, 1204, 1185, 1192, 1217, 1215,
     1211, 1207, 1203, 1224,    0, 1222, 1213, 1220, 1214, 1216,
        0, 1225, 1235, 1231,    0, 1212, 1225, 1233, 1216, 1223,

     1189, 1203, 1220,    0, 1229, 1236, 1231,    0, 1598,    0,
     1250,    0, 1257, 1209,    0, 1217, 1217, 1213,    0, 1679,
        0, 1229,    0, 1238, 1278, 1282, 1276, 1252, 1269, 1255,
        0, 1275,    0, 1266, 1260, 1251, 1278, 1280, 1280,    0,
     1283,    0, 1282, 1268, 1270,    0, 1270,    0, 1287,    0,
     1273, 1273,    0, 1288,    0, 1270, 1277, 1298, 1274, 1279,
     1297, 1292, 1282, 1289, 1300, 1311, 1309, 1320,    0,    0,
     1315, 1281, 1300, 1312, 1327, 1311,    0, 1331, 1322, 1332,
     1334, 1334,    0, 1335, 1322,    0, 1338, 1334, 1325,    0,
     1339,    0, 1321, 1348, 1334, 1324, 1345, 1355, 1314, 1333,

     1345, 1360, 1344,    0, 1370,    0, 1361, 1355, 1346, 1374,
     1377, 1377,    0, 1380,    0, 1379, 1365, 1367,    0, 1367,
        0, 1384, 1380,    0, 1371, 1371,    0, 1386,    0, 1362,
     1369, 1390, 1365, 1366, 1384, 1385, 1375, 1382, 1394, 1401,
     1401, 1416,    0,    0, 1411, 1377, 1396, 1408, 1414,    0,
        0,    0, 1410, 1382, 1392,    0,    0,    0, 1389, 1444,
     1445, 1436,    0, 1433, 1438, 1424, 1442, 1431, 1440,    0,
     1417, 1434,    0, 1419, 1446, 1431, 1435, 1436,    0, 1424,
     1455,    0, 1426, 1457, 1455, 1441, 1431, 1455, 1433, 1451,
        0,    0, 1453,    0, 1432, 1430, 1465,    0, 1462, 1467,

     1453, 1467,    0, 1444,    0, 1471, 1459, 1466, 1461, 1449,
        0, 1450, 1451, 1475,    0, 1470, 1449, 1447, 1482,    0,
     1479, 1489, 1478, 1501, 1491, 1500,    0, 1477, 1494,    0,
     1479, 1506, 1491, 1500, 1507, 1502,    0, 1490, 1521,    0,
     1492, 1523, 1521, 1507, 1497, 1521, 1499, 1517,    0,    0,
     1518,    0, 1497, 1495, 1530, 1532, 1532, 1502, 1504, 1504,
        0, 1521, 1538,    0, 1523, 1542, 1532, 1540, 1535, 1546,
     1547, 1533,    0, 1547, 1535, 1536, 1540, 1548, 1545, 1549,
        0, 1540, 1555, 1578, 1556,    0,    0, 1526,    0, 1543,
     1560,    0, 1552, 1560, 1564,    0,    0, 1563, 1551, 1567,

     1566, 1583,    0,    0, 1553,    0, 1570, 1587,    0, 1573,
     1597, 1587, 1595, 1589, 1600, 1601, 1587,    0,    0, 1601,
     1589, 1590, 1594, 1602, 1599, 1603,    0, 1594, 1609, 1615,
     1610,    0,    0, 1581,    0,    0,    0,    0,    0,    0,
     1610,    0, 1604, 1610, 1616, 1613, 1610, 1610, 1606, 1622,
     1624, 1616, 1629, 1615, 1625, 1626, 1618, 1617, 1637, 1628,
     1627, 1641,    0, 1611, 1636,    0, 1640, 1637, 1627, 1642,
     1645, 1640, 1630, 1655, 1634, 1661,    0, 1655, 1661, 1667,
     1664, 1661, 1665, 1661, 1677, 1677, 1669, 1682, 1668, 1678,
     1679, 1671, 1670, 1690, 1681, 1680, 1694,    0, 1664, 1666,

     1680, 1694, 1686, 1689, 1687, 1690, 1695,    0, 1686,    0,
        0, 1698, 1694, 1704, 1709,    0, 1710, 1708, 1704, 1705,
     1702, 1681, 1686, 1704, 1707, 1711, 1702,    0,    0, 1718,
     1722, 1720, 1690, 1695, 1709, 1723, 1715, 1718, 1716, 1722,
     1727,    0, 1718,    0,    0, 1730, 1726, 1736, 1740,    0,
     1741, 1739, 1735, 1736, 1733, 1712, 1739, 1730, 1747, 1731,
     1747, 1739, 1741, 1740,    0,    0, 1755, 1753, 1739, 1741,
     1755, 1754, 1742, 1758, 1728, 1756, 1746, 1762, 1753,    0,
     1765, 1752, 1766, 1736, 1764, 1755, 1772, 1756, 1772, 1764,
     1766, 1765,    0,    0, 1780, 1778, 1764, 1766, 1780, 1779,

     1767, 1783, 1753, 1776,    0, 1771, 1761,    0, 1762, 1779,
     1781, 1776, 1792,    0, 1778, 1781, 1786, 1770,    0, 1755,
     1789, 1773,    0, 1791, 1801, 1787, 1790, 1762, 1796,    0,
     1791, 1781,    0, 1782, 1799, 1801, 1796, 1812,    0, 1798,
     1801, 1806, 1790,    0, 1775, 1807, 1793, 1824, 1825, 1813,
     1797,    0, 1816,    0, 1812, 1819, 1817, 1786, 1819, 1835,
     1806, 1824,    0, 1820, 1793, 1827, 1813, 1844, 1845, 1833,
     1817,    0, 1836,    0, 1832, 1839, 1838, 1807, 1835, 1838,
     1846, 1845, 1855, 1849, 1832, 1858,    0,    0, 1860, 1848,
        0, 1846, 1856, 1855, 1865, 1865,    0,    0,    0, 1851,

     1854, 1862, 1861, 1871, 1865, 1847, 1873,    0,    0, 1875,
     1863,    0, 1862, 1858, 1875, 1881, 1874, 1875, 1887, 1877,
     1876, 1882, 1872, 1884, 1890, 1883, 1884, 1877, 1873, 1890,
     1896, 1889, 1890, 1902, 1892, 1891, 1897,    0, 1894, 1901,
        0, 1891, 1895, 1899, 1911, 1893, 1899,    0, 1908,    0,
     1898, 1916,    0, 1905, 1912,    0, 1902, 1906, 1910, 1922,
     1904, 1910, 1924, 1913, 1913, 1926, 1918, 1924,    0, 1914,
     1919, 1919, 1928, 1934, 1923, 1923, 1936, 1928, 1934,    0,
     1924, 1928,    0, 1913, 1944, 1931, 1928, 1939,    0, 1918,
     1931, 1936,    0, 1921, 1952, 1939, 1936, 1947, 1945, 1953,

     1939, 1957,    0, 1941, 1957,    0, 1951, 1959, 1945, 1963,
        0, 1947, 1949, 1955, 1961, 1970, 1947, 1959, 1955, 1961,
     1967, 1976, 1953,    0, 1975, 1965, 1961,    0, 1978,    0,
     1979, 1969, 1965,    0,    0, 1972, 1978,    0,    0, 1974,
     1980,    0, 1975,    0, 1976, 1978, 1979,    0,    0, 2704,
     2019, 2029, 2039, 2049, 2059, 2067, 2077, 2084, 2091, 2098,
     2108, 2115, 2125, 2135, 2145, 2148, 2156, 2163, 2080, 2170,
     2180, 2190, 2200, 2210
    } ;

static yyconst flex_int16_t yy_def[1775] =
    {   0,
     1751, 1751, 1750,    3, 1750,    5, 1750,    7, 1752, 1752,
     1750,   11, 1753, 1753, 1754, 1754, 1755, 1755, 1750, 1750,
     1750, 1750, 1750, 1756, 1757, 1756, 1750, 1750, 1750, 1750,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1750,
     1750, 1756, 1750, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1750, 1750, 1750, 1756, 1750, 1750, 1750, 1757, 1758, 1750,
     1750, 1750, 1750, 1750, 1750, 1750, 1750, 1758, 1758, 1750,
       90, 1750, 1750, 1750, 1750, 1750, 1750, 1758,   98,   98,

       98,   98,   98, 1758, 1758, 1758, 1758, 1758, 1758, 1758,
     1758, 1758, 1758, 1750, 1750,   98, 1758, 1750, 1750, 1750,
     1758, 1759, 1750, 1759, 1759, 1750, 1750, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1760, 1750, 1750, 1760, 1750, 1750, 1750, 1761,
     1762, 1763, 1750, 1750, 1750, 1762, 1762,   90,   90, 1750,
     1764, 1750, 1750, 1762,  174,  174,  174,  174,  174, 1762,
     1762, 1762, 1762, 1762, 1762, 1750, 1750,  174,  174,  174,
      174,  174, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1750,

     1750, 1765, 1750, 1750, 1766, 1750, 1750, 1750, 1767, 1767,
     1767, 1767, 1750, 1750, 1750, 1756, 1756, 1757, 1750,   26,
     1750, 1750, 1756, 1756, 1756, 1756, 1756, 1756, 1756,   26,
     1750, 1750, 1756, 1750, 1750, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1750, 1750, 1750, 1758, 1758, 1750, 1750, 1750, 1768, 1750,

     1750,   90,   90,  303, 1750, 1750, 1769, 1750,   98,   98,
       98, 1758, 1758, 1758, 1758,   98, 1758, 1758, 1758,   98,
       98, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758,
     1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758,
     1758,   98, 1758, 1759, 1759, 1770, 1759, 1750, 1769, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,

     1759, 1759, 1759, 1759, 1759, 1760, 1760, 1761, 1750, 1762,
     1762, 1763, 1763, 1764,  174,  174,  174, 1762, 1762,  174,
      174, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762,
     1762, 1762, 1762,  174, 1762,  174,  174, 1762, 1762, 1762,
     1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1750,
     1765, 1766, 1767, 1750, 1767, 1767, 1767, 1750, 1750, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,

     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1758, 1768, 1769, 1758,   98,
     1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758,   98, 1758,
     1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758,
     1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758,
     1758, 1758, 1758, 1758, 1758, 1759, 1770, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,

     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1760, 1762, 1762, 1762,
     1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762,
     1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762,
     1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762,
     1767, 1767, 1767, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,

     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1758, 1758, 1758, 1758, 1758,
     1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758,
     1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758,
     1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,

     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1762, 1762, 1762, 1762, 1762, 1762, 1762,
     1762, 1771, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762,
     1762, 1762, 1762, 1762, 1762, 1762, 1762, 1772, 1762, 1762,
     1762, 1762, 1762, 1762, 1762, 1767, 1767, 1767, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,

     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758,
     1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758,
     1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,

     1759, 1759, 1762, 1762, 1762, 1762, 1762, 1773, 1771, 1762,
     1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1774, 1772,
     1762, 1762, 1762, 1762, 1767, 1767, 1767, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1758, 1758, 1758, 1758, 1758, 1758, 1758,
     1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758,
     1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758,

     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1762, 1762, 1762,
     1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1767,
     1767, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1758, 1758, 1758, 1758,

     1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758,
     1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1762, 1762, 1762, 1762, 1762, 1762,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1758, 1758,
     1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758,

     1758, 1758, 1758, 1758, 1758, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1762, 1762, 1762, 1762, 1762, 1762,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1758, 1758, 1758, 1758, 1758, 1758,
     1758, 1758, 1758, 1758, 1758, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1756,

     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758,
     1758, 1758, 1758, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1758, 1758, 1758, 1758, 1758,
     1758, 1758, 1758, 1758, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,

     1759, 1759, 1759, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1758, 1758,
     1758, 1758, 1758, 1758, 1758, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1759,

     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1756, 1756, 1758, 1758, 1758, 1758, 1758, 1759, 1759, 1759,
     1759, 1759, 1759, 1759, 1759, 1759, 1759, 1756, 1756, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1758, 1758, 1758,
     1758, 1758, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1759, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
     1758, 1758, 1758, 1759, 1759, 1759, 1759, 1759, 1759, 1759,
     1759, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1758, 1758,
     1758, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1756, 1756,

     1756, 1756, 1756, 1756, 1758, 1758, 1759, 1759, 1759, 1759,
     1759, 1759, 1756, 1756, 1756, 1756, 1756, 1758, 1759, 1759,
     1759, 1759, 1759, 1756, 1756, 1756, 1756, 1756, 1758, 1759,
     1759, 1759, 1759, 1759, 1756, 1756, 1756, 1758, 1759, 1759,
     1759, 1756, 1756, 1759, 1759, 1756, 1759, 1756, 1759,    0,
     1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750,
     1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750,
     1750, 1750, 1750, 1750
    } ;

static yyconst flex_int16_t yy_nxt[2787] =
    {   0,
       21,   22,   23,   24,   25,   21,   26,   27,   28,   29,
       30,   31,   32,   33,   34,   35,   36,   37,   38,   38,
       39,   40,   41,   42,   43,   44,   45,   46,   47,   48,
       49,   50,   51,   52,   53,   35,   54,   55,   56,   57,
       58,   59,   60,   61,   62,   63,   35,   64,   35,   35,
       35,   35,   65,   35,   66,   35,   35,   67,   35,   35,
       35,   35,   35,   35,   35,   35,   35,   68,   35,   35,
       69,   35,   35,   70,   35,   35,   35,   35,   71,   72,
       73,   74,   75,   76,   23,   77,   78,   75,   79,   80,
       81,   82,   83,   84,   85,   86,   87,   88,   89,   90,

       91,   91,   92,   93,   94,   95,   96,   97,   98,   99,
      100,  101,  102,  103,  104,  105,  106,   88,  107,  108,
      109,  110,  111,  112,   88,   88,  113,   88,   88,   88,
       88,   88,   88,   88,  114,   88,  115,   75,   88,  116,
      103,  103,  103,  103,  103,   88,   88,   88,   88,   88,
       88,   88,   88,   88,   88,  117,   88,   88,   88,   88,
      118,  119,  120,  121,   75,   76,   23,   77,   78,   75,
      122,   80,   81,   82,   83,   84,   85,   86,  123,  124,
      125,  126,  127,  127,   92,   93,   94,   95,   96,   97,
      128,  129,  130,  131,  132,  133,  134,  135,  136,  124,

      137,  138,  139,  140,  141,  142,  143,  144,  145,  146,
      124,  147,  124,  124,  124,  124,  114,  124,  115,   75,
      124,  148,  124,  124,  124,  124,  124,  124,  124,  124,
      124,  149,  124,  124,  150,  124,  124,  151,  124,  124,
      124,  124,  118,  119,  120,  152,   75,   75,   20,   75,
       75,   75,  153,   75,   75,   75,   75,   75,  154,   75,
      155,  226,  291,  126,  127,  127,   75,   75,   75,  157,
       75,   75,  221,  227,  231,  232,  200,  201,  200,  201,
      202,  973,  202,  234,  235,  242,  236,  222,  237,  243,
      238,  203,  244,  203,  246,  248,  239,  247,   75,  249,

       75,   75,  251,  240,  241,  245,  257,  266,  253,  258,
      272,  254,  252,  250,  255,  264,  305,  267,  292,  265,
      273,  298,  231,  232,   75,   75,   75,   75,   75,   20,
       75,   75,   75,  153,   75,   75,   75,   75,   75,  154,
       75,  155,  974,  305,  126,  127,  127,   75,   75,   75,
      157,   75,   75,  204,  268,  204,  261,  262,  269,  221,
      276,  270,  271,  277,  278,  299,  300,  263,  234,  235,
      279,  280,  281,  975,  222,  282,  283,  328,  301,   75,
      284,   75,   75,  316,  330,  316,  316,  329,  316,  426,
      317,  549,  331,  318,  334,  427,  294,  550,  335,  319,

      294,  294,  336,  294,  294,   75,   75,   75,   21,   22,
      158,  159,   21,  160,  161,   27,   28,   29,   30,  162,
      163,  164,  165,  166,  167,  168,  169,  169,  170,  171,
       41,  172,   43,  173,  174,  175,  176,  177,  178,  179,
      166,  166,  166,  166,  166,  180,  166,  181,  182,  183,
      166,  166,  184,  185,  166,  166,  166,  166,  166,  166,
      186,  166,  187,   21,  166,  188,  189,  190,  177,  191,
      192,  166,  166,  166,  166,  193,  166,  194,  195,  196,
      166,  197,  198,  166,  166,  166,   71,   72,   73,  199,
       21,  200,  201,   21,   21,  202,  976,   21,   21,   21,

       21,   21,   21,  206,   21,  291,  203,   21,   21,   21,
      206,  206,   21,   21,   21,   21,  228,  228,  228,  332,
      320,  316,  298,  316,  321,  360,  365,  835,  361,  333,
      316,  294,  316,  836,  431,  229,  366,  229,  322,  294,
      294,  300,   21,   21,   21,   21,  338,  294,  294,  432,
      339,  371,  323,  347,  372,  378,  454,  340,  977,  379,
      362,  292,  341,  380,  363,  229,  346,  229,  207,   21,
      208,   21,   21,  200,  201,   21,   21,  202,  364,   21,
       21,   21,   21,   21,   21,  206,   21,  305,  203,   21,
       21,   21,  206,  206,   21,   21,   21,   21,  228,  228,

      228,  367,  356,  316,  368,  316,  357,  369,  381,  358,
      442,  464,  455,  294,  305,  443,  978,  229,  382,  229,
      294,  294,  359,  465,   21,   21,   21,   21,  375,  376,
      230,  447,  387,  383,  420,  417,  417,  384,  417,  377,
      385,  386,  388,  477,  448,  410,  410,  229,  410,  229,
      207,   21,  208,   21,   21,  200,  201,  230,   25,  202,
      478,   21,   21,   21,   21,  979,   21,  206,  436,  454,
      203,   21,   21,   21,  206,  206,   21,   21,   21,  316,
      417,  316,  350,  454,  351,  470,  352,  471,  417,  294,
      410,  391,  353,  425,  392,  393,  294,  294,  410,  354,

      355,  394,  395,  396,  417,  980,  397,  398,  673,  493,
      342,  399,  421,  417,  410,  210,  423,  211,  437,  422,
      454,  212,  494,  410,  981,  438,  424,  982,  983,  417,
      456,  984,  213,   21,  214,   21,   21,  200,  201,  410,
       25,  202,  305,   21,   21,   21,   21,  985,   21,  206,
      986,  417,  203,   21,   21,   21,  206,  206,   21,   21,
       21,  410,  348,  348,  348,  604,  229,  417,  229,  305,
      457,  439,  532,  605,  348,  348,  348,  410,  440,  554,
      987,  306,  434,  306,  533,  228,  228,  228,  555,  572,
      316,  435,  316,  306,  349,  306,  229,  210,  229,  211,

      294,  573,  417,  212,  229,  988,  229,  294,  294,  585,
      441,  306,  410,  306,  213,   21,  214,   21,  220,  220,
      220,  349,  536,  306,  537,  306,  586,  220,  220,  220,
      220,  220,  220,  454,  229,  485,  229,  509,  486,  510,
      487,  498,  544,  511,  499,  545,  417,  578,  488,  579,
      500,  489,  454,  454,  989,  546,  410,  417,  220,  220,
      220,  220,  220,  220,  295,  295,  295,  410,  454,  316,
      868,  316,  990,  295,  295,  295,  295,  295,  295,  294,
      991,  303,  303,  303,  454,  593,  529,  294,  594,  417,
      595,  867,  992,  866,  993,  348,  348,  348,  596,  410,

     1750,  597, 1750,  655,  295,  295,  295,  295,  295,  295,
      302,  302,  302,  305,  306,  994,  306,  995,  672,  303,
      304,  303,  304,  303,  303,  996,  305,  997,  601,  306,
     1750,  306, 1750,  305,  602,  657,  609,  851,  671,  610,
      305,  603,  307,  852,  306,  611,  306,  998,  999, 1000,
      303,  304,  303,  304,  303,  303,  316,  305,  530,  306,
     1001,  306,  620,  305,  621, 1002,  294, 1003,  622,  307,
      309,  309,  309,  294,  294,  417, 1004,  417,  417,  309,
      310,  309,  311,  309,  309,  410,  312,  410,  410,  316,
      313,  316,  639,  312,  641,  642, 1005,  314,  315,  294,

     1006, 1007,  312, 1010, 1011, 1012,  294,  294, 1013, 1014,
      309,  316,  309,  316,  309,  309,  316,  312,  316, 1015,
      306, 1016,  306,  312, 1017, 1018,  294, 1021, 1022,  312,
      345,  345,  345,  294,  538, 1023,  316, 1024,  316,  345,
      345,  345,  345,  345,  345,  316,  294,  316,  417,  539,
      306, 1028,  306,  294,  294,  294,  454,  454,  410,  454,
     1031, 1032,  294,  294, 1029, 1033, 1036, 1034, 1037, 1038,
      345,  345,  345,  345,  345,  345,  407,  407,  407, 1039,
     1030,  316,  564,  316, 1035,  407,  407,  407,  407,  407,
      407,  294, 1040,  316,  658,  316, 1026,  737,  294,  294,

      746, 1041, 1042,  294, 1027, 1043, 1044, 1045, 1025, 1046,
      294,  294, 1047, 1048, 1049, 1050,  407,  407,  407,  407,
      407,  407,  411,  411,  411, 1051, 1052, 1053, 1054, 1055,
     1056,  411,  411,  411,  411,  411,  411, 1057, 1058, 1059,
     1060, 1061, 1062, 1063, 1064, 1066, 1067, 1068, 1069, 1070,
     1071, 1072, 1073, 1074, 1077, 1075, 1065, 1078, 1079, 1080,
     1081, 1082,  411,  411,  411,  411,  411,  411,  415,  415,
      415, 1076, 1083, 1084, 1085, 1086, 1087,  415,  416,  415,
      417,  415,  415, 1088,  418, 1089, 1090, 1091,  419, 1092,
     1093,  418, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101,

      418, 1102, 1104, 1105, 1106, 1107, 1109, 1110,  415,  417,
      415,  417,  415,  415, 1111,  418, 1112, 1103, 1113, 1114,
     1115,  418, 1108, 1116, 1117, 1118, 1119,  418,  295,  295,
      295, 1120, 1121, 1122, 1123, 1124, 1125,  295,  295,  295,
      295,  295,  295, 1126, 1127, 1128, 1129,  526, 1130,  526,
     1131, 1132, 1133, 1134, 1135, 1136, 1137, 1140, 1141, 1142,
     1143, 1144, 1138, 1145, 1146, 1147, 1148, 1149,  295,  295,
      295,  295,  295,  295, 1139, 1150, 1151,  526, 1152,  526,
      345,  345,  345, 1153, 1154, 1155, 1156, 1157, 1158,  345,
      345,  345,  345,  345,  345, 1159,  454, 1162,  454,  566,

     1163,  566,  454, 1164, 1165, 1166, 1167, 1168, 1169, 1170,
     1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180,
      345,  345,  345,  345,  345,  345, 1181, 1182, 1183,  566,
     1184,  566,  407,  407,  407, 1185, 1186, 1187, 1188, 1189,
     1190,  407,  407,  407,  407,  407,  407, 1160, 1191, 1161,
     1192,  637, 1193,  637, 1194, 1195, 1196, 1197, 1198, 1199,
     1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209,
     1210, 1211,  407,  407,  407,  407,  407,  407, 1212, 1213,
     1214,  637, 1215,  637,  411,  411,  411, 1216, 1217, 1218,
     1219, 1220, 1221,  411,  411,  411,  411,  411,  411, 1222,

     1223, 1224, 1225,  638, 1226,  638, 1227, 1228, 1229, 1230,
     1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240,
     1241, 1242, 1243, 1244,  411,  411,  411,  411,  411,  411,
     1245, 1246, 1247,  638, 1248,  638, 1008, 1008, 1249, 1008,
     1008, 1008, 1250, 1008, 1008, 1008, 1008, 1008, 1251, 1008,
     1252, 1253, 1254, 1255, 1256, 1257, 1258, 1008, 1008, 1008,
     1008, 1008, 1259, 1260,  454,  454, 1261, 1262, 1263, 1264,
     1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274,
     1275, 1276, 1278, 1279, 1280, 1281, 1277, 1282, 1283, 1284,
     1285, 1008, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293,

     1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303,
     1304, 1305, 1306, 1307, 1008, 1008, 1008, 1019, 1019, 1308,
     1019, 1019, 1019, 1309, 1019, 1019, 1019, 1019, 1019, 1310,
     1019, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1019, 1019,
     1019, 1019, 1019, 1318, 1319, 1320, 1321, 1322, 1324, 1325,
     1326, 1327, 1323, 1328, 1329, 1330, 1331, 1332, 1333, 1334,
     1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344,
     1345, 1346, 1019, 1347, 1348, 1349, 1350, 1351, 1352, 1353,
     1354, 1355, 1356, 1357, 1358, 1359, 1363, 1364, 1365, 1366,
     1367, 1368, 1369, 1370, 1371, 1019, 1019, 1019, 1008, 1008,

     1372, 1008, 1008, 1008, 1360, 1008, 1008, 1008, 1008, 1008,
     1373, 1008, 1361, 1374, 1375, 1376, 1377, 1362, 1378, 1008,
     1008, 1008, 1008, 1008, 1379, 1380, 1381, 1382, 1383, 1384,
     1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394,
     1398, 1395, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1396,
     1406, 1407, 1408, 1008, 1397, 1409, 1410, 1412, 1413, 1414,
     1415, 1416, 1417, 1418, 1411, 1419, 1420, 1421, 1422, 1423,
     1424, 1425, 1426, 1427, 1430, 1431, 1008, 1008, 1008, 1019,
     1019, 1432, 1019, 1019, 1019, 1428, 1019, 1019, 1019, 1019,
     1019, 1433, 1019, 1429, 1434, 1435, 1436, 1437, 1438, 1439,

     1019, 1019, 1019, 1019, 1019, 1440, 1441, 1442, 1443, 1444,
     1446, 1447, 1448, 1449, 1450, 1451, 1452, 1445, 1453, 1454,
     1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464,
     1465, 1466, 1467, 1468, 1019, 1469, 1470, 1471, 1472, 1473,
     1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483,
     1484, 1485, 1486, 1487, 1488, 1489, 1490, 1019, 1019, 1019,
     1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500,
     1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510,
     1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520,
     1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530,

     1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540,
     1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550,
     1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560,
     1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570,
     1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580,
     1581, 1584, 1585, 1586, 1582, 1587, 1588, 1589, 1590, 1591,
     1592, 1593, 1596, 1597, 1598, 1594, 1599, 1583, 1600, 1601,
     1602, 1605, 1606, 1607, 1603, 1608, 1609, 1610, 1595, 1611,
     1612, 1613, 1614, 1615, 1616, 1617, 1618, 1604, 1619, 1620,
     1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630,

     1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640,
     1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650,
     1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660,
     1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670,
     1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680,
     1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690,
     1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700,
     1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710,
     1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720,
     1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730,

     1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740,
     1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749,   20,
       20,   20,   20,   20,   20,   20,   20,   20,   20,  156,
      156,  156,  156,  156,  156,  156,  156,  156,  156,   21,
       21,   21,   21,   21,   21,   21,   21,   21,   21,  205,
      205,  205,  205,  205,  205,  205,  205,  205,  205,  209,
      209,  209,  209,  209,  209,  209,  209,  209,  209,  216,
      216,  216,  216,  216,  216,  216,  216,  218,  218,  218,
      218,  218,  218,  218,  218,  218,  218,  294,  294,  528,
      294,  294,  294,  294,  344,  344,  344,  344,  344,  344,

      344,  406,  972,  971,  970,  406,  406,  406,  408,  408,
      408,  408,  408,  408,  408,  408,  408,  408,  410,  410,
      969,  410,  410,  410,  410,  412,  968,  412,  412,  412,
      412,  412,  412,  412,  412,  414,  967,  414,  414,  414,
      414,  414,  414,  414,  414,  451,  966,  451,  451,  451,
      451,  451,  451,  451,  451,  452,  965,  452,  453,  453,
      964,  963,  453,  453,  962,  453,  527,  527,  961,  527,
      527,  527,  527,  567,  567,  567,  567,  567,  567,  567,
     1009,  960, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
     1020,  959, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,

     1008,  958, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
     1019,  957, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019,
      956,  955,  954,  953,  952,  951,  950,  949,  948,  947,
      946,  945,  944,  943,  942,  941,  940,  939,  938,  937,
      936,  935,  934,  933,  932,  931,  930,  929,  928,  927,
      926,  925,  924,  923,  922,  921,  920,  919,  918,  917,
      916,  915,  914,  913,  912,  911,  910,  909,  908,  907,
      906,  905,  904,  903,  902,  901,  900,  899,  898,  897,
      896,  895,  894,  893,  892,  891,  890,  889,  888,  887,
      886,  885,  884,  883,  882,  881,  880,  879,  878,  877,

      876,  875,  874,  873,  872,  871,  870,  869,  865,  864,
      863,  862,  861,  860,  859,  858,  857,  856,  855,  854,
      853,  850,  849,  848,  847,  846,  845,  844,  843,  842,
      841,  840,  839,  838,  837,  834,  833,  832,  831,  830,
      829,  828,  827,  826,  825,  824,  823,  822,  821,  820,
      819,  818,  817,  816,  815,  814,  813,  812,  811,  810,
      809,  808,  807,  806,  805,  804,  803,  802,  801,  800,
      799,  798,  797,  796,  795,  794,  793,  792,  791,  790,
      789,  788,  787,  786,  785,  784,  783,  782,  781,  780,
      779,  778,  777,  776,  775,  774,  773,  772,  771,  770,

      769,  768,  767,  766,  765,  764,  763,  762,  761,  760,
      759,  758,  757,  756,  755,  754,  753,  752,  751,  750,
      749,  748,  747,  745,  744,  743,  742,  741,  740,  739,
      738,  736,  735,  734,  733,  732,  731,  730,  729,  728,
      727,  726,  725,  724,  723,  722,  721,  720,  719,  718,
      717,  716,  715,  714,  713,  712,  711,  710,  709,  708,
      707,  706,  705,  704,  703,  702,  701,  700,  699,  698,
      697,  696,  695,  694,  693,  692,  691,  690,  689,  688,
      687,  686,  685,  684,  683,  682,  681,  680,  679,  678,
      677,  676,  675,  674,  453,  454,  450,  670,  669,  668,

      667,  666,  665,  664,  663,  662,  661,  660,  659,  656,
      654,  653,  652,  651,  650,  649,  648,  647,  646,  645,
      644,  643,  640,  409,  636,  635,  634,  633,  632,  631,
      630,  629,  628,  627,  626,  625,  624,  623,  619,  618,
      617,  616,  615,  614,  613,  612,  608,  607,  606,  600,
      599,  598,  592,  591,  590,  589,  588,  587,  584,  583,
      582,  581,  580,  577,  576,  575,  574,  571,  570,  569,
      568,  565,  563,  562,  561,  560,  559,  558,  557,  556,
      553,  552,  551,  548,  547,  543,  542,  541,  540,  535,
      534,  531,  525,  524,  523,  522,  521,  520,  519,  518,

      517,  516,  515,  514,  513,  512,  508,  507,  506,  505,
      504,  503,  502,  501,  497,  496,  495,  492,  491,  490,
      484,  483,  482,  481,  480,  479,  476,  475,  474,  473,
      472,  469,  468,  467,  466,  463,  462,  461,  460,  459,
      458,  219,  215,  454,  300,  450,  449,  446,  445,  444,
      433,  430,  429,  428,  308,  301,  298,  297,  413,  409,
      293,  405,  404,  403,  402,  401,  400,  390,  389,  374,
      373,  370,  343,  337,  327,  326,  325,  324,  308,  297,
      296,  219,  293,  215,  290,  289,  288,  287,  286,  285,
      275,  274,  260,  259,  256,  233,  225,  224,  223,  219,

      217,  215, 1750,   19, 1750, 1750, 1750, 1750, 1750, 1750,
     1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750,
     1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750,
     1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750,
     1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750,
     1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750,
     1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750,
     1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750,
     1750, 1750, 1750, 1750, 1750, 1750
    } ;

static yyconst flex_int16_t yy_chk[2787] =
    {   0,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    5,    5,    5,    5,    5,    5,    5,    5,
        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,

        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
        5,    5,    5,    5,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,

        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    9,    9,    9,    9,
        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
        9,   36,   72,    9,    9,    9,    9,    9,    9,    9,
        9,    9,   28,   36,   41,   41,   13,   13,   14,   14,
       13,  801,   14,   43,   43,   46,   45,   28,   45,   46,
       45,   13,   46,   14,   47,   48,   45,   47,    9,   48,

        9,    9,   49,   45,   45,   46,   52,   57,   50,   52,
       59,   50,   49,   48,   50,   56,   91,   57,   72,   56,
       59,   87,   94,   94,    9,    9,    9,   10,   10,   10,
       10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
       10,   10,  802,   91,   10,   10,   10,   10,   10,   10,
       10,   10,   10,   13,   58,   14,   55,   55,   58,   81,
       62,   58,   58,   62,   62,   87,   89,   55,   96,   96,
       62,   62,   62,  803,   81,   62,   62,  108,   89,   10,
       62,   10,   10,   99,  109,   99,  100,  108,  100,  180,
       99,  329,  109,   99,  111,  180,  100,  329,  111,  100,

       99,   99,  111,  100,  100,   10,   10,   10,   11,   11,
       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
       15,   15,   15,   15,   15,   15,  804,   15,   15,   15,

       15,   15,   15,   15,   15,  119,   15,   15,   15,   15,
       15,   15,   15,   15,   15,   15,   38,   38,   38,  110,
      101,  101,  123,  101,  101,  130,  132,  640,  130,  110,
      102,  101,  102,  640,  184,   38,  132,   38,  101,  101,
      102,  125,   15,   15,   15,   15,  113,  102,  102,  184,
      113,  135,  102,  125,  135,  139,  210,  113,  806,  139,
      131,  119,  113,  139,  131,   38,  123,   38,   15,   15,
       15,   15,   16,   16,   16,   16,   16,   16,  131,   16,
       16,   16,   16,   16,   16,   16,   16,  169,   16,   16,
       16,   16,   16,   16,   16,   16,   16,   16,   37,   37,

       37,  133,  129,  103,  133,  103,  129,  133,  140,  129,
      193,  240,  210,  103,  169,  193,  808,   37,  140,   37,
      103,  103,  129,  240,   16,   16,   16,   16,  138,  138,
       37,  197,  142,  141,  175,  175,  177,  141,  189,  138,
      141,  141,  142,  252,  197,  175,  177,   37,  189,   37,
       16,   16,   16,   16,   17,   17,   17,   37,   17,   17,
      252,   17,   17,   17,   17,  809,   17,   17,  189,  457,
       17,   17,   17,   17,   17,   17,   17,   17,   17,  116,
      179,  116,  128,  211,  128,  246,  128,  246,  190,  116,
      179,  145,  128,  179,  145,  145,  116,  116,  190,  128,

      128,  145,  145,  145,  178,  810,  145,  145,  457,  263,
      116,  145,  176,  176,  178,   17,  178,   17,  190,  176,
      212,   17,  263,  176,  811,  190,  178,  812,  813,  191,
      211,  814,   17,   17,   17,   17,   18,   18,   18,  191,
       18,   18,  302,   18,   18,   18,   18,  815,   18,   18,
      816,  188,   18,   18,   18,   18,   18,   18,   18,   18,
       18,  188,  126,  126,  126,  378,  220,  192,  220,  302,
      212,  191,  314,  378,  127,  127,  127,  192,  191,  333,
      818,  126,  188,  126,  314,  228,  228,  228,  333,  354,
      309,  188,  309,  127,  126,  127,  220,   18,  220,   18,

      309,  354,  415,   18,  228,  819,  228,  309,  309,  366,
      192,  126,  415,  126,   18,   18,   18,   18,   26,   26,
       26,  126,  319,  127,  319,  127,  366,   26,   26,   26,
       26,   26,   26,  673,  228,  259,  228,  276,  259,  276,
      259,  267,  326,  276,  267,  326,  417,  360,  259,  360,
      267,  259,  671,  672,  820,  326,  417,  434,   26,   26,
       26,   26,   26,   26,   79,   79,   79,  434,  456,  310,
      673,  310,  821,   79,   79,   79,   79,   79,   79,  310,
      822,  303,  303,  303,  455,  373,  310,  310,  373,  436,
      373,  672,  823,  671,  824,  348,  348,  348,  373,  436,

      303,  373,  303,  434,   79,   79,   79,   79,   79,   79,
       90,   90,   90,  303,  348,  825,  348,  826,  456,   90,
       90,   90,   90,   90,   90,  827,   90,  828,  377,   90,
      303,   90,  303,   90,  377,  436,  382,  656,  455,  382,
      303,  377,   90,  656,  348,  382,  348,  829,  830,  831,
       90,   90,   90,   90,   90,   90,  311,   90,  311,   90,
      832,   90,  391,   90,  391,  833,  311,  834,  391,   90,
       98,   98,   98,  311,  311,  416,  835,  420,  421,   98,
       98,   98,   98,   98,   98,  416,   98,  420,  421,  316,
       98,  316,  416,   98,  420,  421,  836,   98,   98,  316,

      840,  841,   98,  845,  846,  848,  316,  316,  849,  850,
       98,   98,   98,   98,   98,   98,  320,   98,  320,  851,
      528,  852,  528,   98,  856,  857,  320,  861,  862,   98,
      122,  122,  122,  320,  320,  864,  342,  865,  342,  122,
      122,  122,  122,  122,  122,  321,  342,  321,  437,  321,
      528,  869,  528,  342,  342,  321,  866,  868,  437,  867,
      872,  873,  321,  321,  871,  874,  877,  876,  878,  879,
      122,  122,  122,  122,  122,  122,  153,  153,  153,  882,
      871,  530,  342,  530,  876,  153,  153,  153,  153,  153,
      153,  530,  883,  539,  437,  539,  867,  530,  530,  530,

      539,  885,  887,  539,  868,  888,  889,  890,  866,  891,
      539,  539,  892,  893,  894,  895,  153,  153,  153,  153,
      153,  153,  161,  161,  161,  896,  897,  898,  899,  900,
      901,  161,  161,  161,  161,  161,  161,  902,  904,  905,
      906,  907,  908,  910,  911,  912,  914,  915,  916,  917,
      918,  919,  920,  921,  923,  922,  911,  924,  926,  927,
      928,  930,  161,  161,  161,  161,  161,  161,  174,  174,
      174,  922,  932,  933,  934,  935,  936,  174,  174,  174,
      174,  174,  174,  937,  174,  938,  939,  940,  174,  941,
      942,  174,  943,  944,  945,  946,  947,  948,  949,  950,

      174,  952,  953,  954,  955,  957,  958,  959,  174,  174,
      174,  174,  174,  174,  960,  174,  963,  952,  964,  966,
      968,  174,  957,  969,  970,  971,  972,  174,  295,  295,
      295,  973,  974,  975,  976,  977,  978,  295,  295,  295,
      295,  295,  295,  979,  980,  981,  982,  295,  983,  295,
      984,  986,  987,  988,  989,  990,  992,  994,  996,  997,
      998,  999,  993, 1000, 1001, 1002, 1003, 1005,  295,  295,
      295,  295,  295,  295,  993, 1006, 1007,  295, 1011,  295,
      345,  345,  345, 1013, 1014, 1016, 1017, 1018, 1022,  345,
      345,  345,  345,  345,  345, 1024, 1027, 1028, 1025,  345,

     1029,  345, 1026, 1030, 1032, 1034, 1035, 1036, 1037, 1038,
     1039, 1041, 1043, 1044, 1045, 1047, 1049, 1051, 1052, 1054,
      345,  345,  345,  345,  345,  345, 1056, 1057, 1058,  345,
     1059,  345,  407,  407,  407, 1060, 1061, 1062, 1063, 1064,
     1065,  407,  407,  407,  407,  407,  407, 1025, 1066, 1026,
     1067,  407, 1068,  407, 1071, 1072, 1073, 1074, 1075, 1076,
     1078, 1079, 1080, 1081, 1082, 1084, 1085, 1087, 1088, 1089,
     1091, 1093,  407,  407,  407,  407,  407,  407, 1094, 1095,
     1096,  407, 1097,  407,  411,  411,  411, 1098, 1099, 1100,
     1101, 1102, 1103,  411,  411,  411,  411,  411,  411, 1105,

     1107, 1108, 1109,  411, 1110,  411, 1111, 1112, 1114, 1116,
     1117, 1118, 1120, 1122, 1123, 1125, 1126, 1128, 1130, 1131,
     1132, 1133, 1134, 1135,  411,  411,  411,  411,  411,  411,
     1136, 1137, 1138,  411, 1139,  411,  842,  842, 1140,  842,
      842,  842, 1141,  842,  842,  842,  842,  842, 1142,  842,
     1145, 1146, 1147, 1148, 1149, 1153, 1154,  842,  842,  842,
      842,  842, 1155, 1159, 1160, 1161, 1162, 1164, 1165, 1166,
     1167, 1168, 1169, 1171, 1172, 1174, 1175, 1176, 1177, 1178,
     1180, 1181, 1183, 1184, 1185, 1186, 1181, 1187, 1188, 1189,
     1190,  842, 1193, 1195, 1196, 1197, 1199, 1200, 1201, 1202,

     1204, 1206, 1207, 1208, 1209, 1210, 1212, 1213, 1214, 1216,
     1217, 1218, 1219, 1221,  842,  842,  842,  858,  858, 1222,
      858,  858,  858, 1223,  858,  858,  858,  858,  858, 1224,
      858, 1225, 1226, 1228, 1229, 1231, 1232, 1233,  858,  858,
      858,  858,  858, 1234, 1235, 1236, 1238, 1239, 1241, 1242,
     1243, 1244, 1239, 1245, 1246, 1247, 1248, 1251, 1253, 1254,
     1255, 1256, 1257, 1258, 1259, 1260, 1262, 1263, 1265, 1266,
     1267, 1268,  858, 1269, 1270, 1271, 1272, 1274, 1275, 1276,
     1277, 1278, 1279, 1280, 1282, 1283, 1285, 1288, 1290, 1291,
     1293, 1294, 1295, 1298, 1299,  858,  858,  858, 1009, 1009,

     1300, 1009, 1009, 1009, 1284, 1009, 1009, 1009, 1009, 1009,
     1301, 1009, 1284, 1302, 1305, 1307, 1308, 1284, 1310, 1009,
     1009, 1009, 1009, 1009, 1311, 1312, 1313, 1314, 1315, 1316,
     1317, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1328, 1329,
     1331, 1330, 1334, 1341, 1343, 1344, 1345, 1346, 1347, 1330,
     1348, 1349, 1350, 1009, 1330, 1351, 1352, 1353, 1354, 1355,
     1356, 1357, 1358, 1359, 1352, 1360, 1361, 1362, 1364, 1365,
     1367, 1368, 1369, 1370, 1372, 1373, 1009, 1009, 1009, 1020,
     1020, 1374, 1020, 1020, 1020, 1371, 1020, 1020, 1020, 1020,
     1020, 1375, 1020, 1371, 1376, 1378, 1379, 1380, 1381, 1382,

     1020, 1020, 1020, 1020, 1020, 1383, 1384, 1385, 1386, 1387,
     1388, 1389, 1390, 1391, 1392, 1393, 1394, 1387, 1395, 1396,
     1397, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407,
     1409, 1412, 1413, 1414, 1020, 1415, 1417, 1418, 1419, 1420,
     1421, 1422, 1423, 1424, 1425, 1426, 1427, 1430, 1431, 1432,
     1433, 1434, 1435, 1436, 1437, 1438, 1439, 1020, 1020, 1020,
     1440, 1441, 1443, 1446, 1447, 1448, 1449, 1451, 1452, 1453,
     1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463,
     1464, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475,
     1476, 1477, 1478, 1479, 1481, 1482, 1483, 1484, 1485, 1486,

     1487, 1488, 1489, 1490, 1491, 1492, 1495, 1496, 1497, 1498,
     1499, 1500, 1501, 1502, 1503, 1504, 1506, 1507, 1509, 1510,
     1511, 1512, 1513, 1515, 1516, 1517, 1518, 1520, 1521, 1522,
     1524, 1525, 1526, 1527, 1528, 1529, 1531, 1532, 1534, 1535,
     1536, 1537, 1538, 1540, 1541, 1542, 1543, 1545, 1546, 1547,
     1548, 1549, 1550, 1551, 1548, 1553, 1555, 1556, 1557, 1558,
     1559, 1560, 1561, 1562, 1564, 1560, 1565, 1548, 1566, 1567,
     1568, 1569, 1570, 1571, 1568, 1573, 1575, 1576, 1560, 1577,
     1578, 1579, 1580, 1581, 1582, 1583, 1584, 1568, 1585, 1586,
     1589, 1590, 1592, 1593, 1594, 1595, 1596, 1600, 1601, 1602,

     1603, 1604, 1605, 1606, 1607, 1610, 1611, 1613, 1614, 1615,
     1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625,
     1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635,
     1636, 1637, 1639, 1640, 1642, 1643, 1644, 1645, 1646, 1647,
     1649, 1651, 1652, 1654, 1655, 1657, 1658, 1659, 1660, 1661,
     1662, 1663, 1664, 1665, 1666, 1667, 1668, 1670, 1671, 1672,
     1673, 1674, 1675, 1676, 1677, 1678, 1679, 1681, 1682, 1684,
     1685, 1686, 1687, 1688, 1690, 1691, 1692, 1694, 1695, 1696,
     1697, 1698, 1699, 1700, 1701, 1702, 1704, 1705, 1707, 1708,
     1709, 1710, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719,

     1720, 1721, 1722, 1723, 1725, 1726, 1727, 1729, 1731, 1732,
     1733, 1736, 1737, 1740, 1741, 1743, 1745, 1746, 1747, 1751,
     1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1752,
     1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1753,
     1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1754,
     1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1755,
     1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1756,
     1756, 1756, 1756, 1756, 1756, 1756, 1756, 1757, 1757, 1757,
     1757, 1757, 1757, 1757, 1757, 1757, 1757, 1758, 1758, 1769,
     1758, 1758, 1758, 1758, 1759, 1759, 1759, 1759, 1759, 1759,

     1759, 1760,  799,  798,  797, 1760, 1760, 1760, 1761, 1761,
     1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1762, 1762,
      795, 1762, 1762, 1762, 1762, 1763,  794, 1763, 1763, 1763,
     1763, 1763, 1763, 1763, 1763, 1764,  793, 1764, 1764, 1764,
     1764, 1764, 1764, 1764, 1764, 1765,  792, 1765, 1765, 1765,
     1765, 1765, 1765, 1765, 1765, 1766,  791, 1766, 1767, 1767,
      789,  788, 1767, 1767,  787, 1767, 1768, 1768,  786, 1768,
     1768, 1768, 1768, 1770, 1770, 1770, 1770, 1770, 1770, 1770,
     1771,  785, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771,
     1772,  784, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772,

     1773,  783, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773,
     1774,  781, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774,
      779,  777,  776,  775,  774,  773,  771,  770,  769,  768,
      767,  766,  765,  764,  763,  762,  761,  760,  759,  757,
      756,  755,  753,  751,  750,  749,  748,  747,  746,  745,
      743,  742,  740,  739,  738,  736,  735,  734,  733,  732,
      731,  730,  729,  728,  727,  726,  725,  724,  723,  722,
      721,  720,  718,  717,  716,  715,  714,  713,  712,  711,
      710,  708,  706,  705,  704,  702,  701,  700,  698,  697,
      696,  695,  694,  692,  691,  690,  689,  688,  687,  686,

      684,  682,  680,  679,  678,  677,  676,  674,  670,  669,
      668,  667,  666,  665,  664,  663,  662,  661,  659,  658,
      657,  655,  654,  653,  652,  651,  650,  649,  648,  647,
      646,  645,  643,  642,  641,  639,  636,  633,  632,  631,
      630,  629,  628,  627,  626,  625,  624,  623,  622,  621,
      620,  619,  618,  617,  616,  615,  614,  613,  612,  611,
      610,  609,  608,  606,  603,  602,  601,  600,  599,  598,
      597,  596,  595,  594,  593,  591,  590,  589,  588,  587,
      586,  585,  584,  583,  582,  581,  580,  579,  578,  577,
      576,  575,  574,  573,  572,  571,  570,  569,  568,  565,

      564,  563,  562,  561,  560,  559,  558,  557,  556,  555,
      554,  553,  550,  549,  548,  547,  546,  545,  544,  543,
      542,  541,  540,  538,  537,  536,  535,  534,  533,  532,
      531,  529,  525,  522,  521,  520,  519,  518,  517,  516,
      515,  514,  513,  512,  511,  510,  509,  508,  507,  506,
      505,  504,  503,  502,  501,  500,  499,  498,  497,  496,
      494,  493,  492,  491,  490,  489,  488,  487,  486,  485,
      483,  482,  481,  480,  479,  478,  477,  476,  475,  474,
      473,  472,  471,  470,  469,  468,  467,  466,  465,  464,
      463,  462,  461,  460,  454,  453,  450,  449,  448,  447,

      446,  445,  444,  443,  442,  441,  440,  439,  438,  435,
      433,  432,  431,  430,  429,  428,  427,  426,  425,  424,
      423,  422,  419,  408,  405,  404,  403,  402,  401,  400,
      399,  398,  397,  396,  395,  394,  393,  392,  390,  389,
      388,  387,  386,  385,  384,  383,  381,  380,  379,  376,
      375,  374,  372,  371,  370,  369,  368,  367,  365,  364,
      363,  362,  361,  359,  358,  357,  356,  353,  352,  351,
      350,  343,  341,  340,  339,  338,  337,  336,  335,  334,
      332,  331,  330,  328,  327,  325,  324,  323,  322,  318,
      317,  313,  290,  289,  288,  287,  286,  285,  284,  283,

      282,  281,  280,  279,  278,  277,  275,  274,  273,  272,
      271,  270,  269,  268,  266,  265,  264,  262,  261,  260,
      258,  257,  256,  255,  254,  253,  251,  250,  249,  248,
      247,  245,  244,  243,  242,  239,  238,  237,  236,  235,
      231,  218,  215,  209,  203,  200,  198,  196,  195,  194,
      185,  183,  182,  181,  172,  167,  165,  163,  162,  160,
      159,  151,  150,  149,  148,  147,  146,  144,  143,  137,
      136,  134,  117,  112,  107,  106,  105,  104,   95,   85,
       84,   78,   77,   76,   70,   69,   68,   67,   64,   63,
       61,   60,   54,   53,   51,   42,   34,   32,   31,   25,

       24,   22,   19, 1750, 1750, 1750, 1750, 1750, 1750, 1750,
     1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750,
     1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750,
     1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750,
     1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750,
     1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750,
     1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750,
     1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750,
     1750, 1750, 1750, 1750, 1750, 1750
    } ;

static yy_state_type yy_last_accepting_state;
static char *yy_last_accepting_cpos;

extern int yy_flex_debug;
int yy_flex_debug = 0;

/* The intent behind this definition is that it'll catch
 * any uses of REJECT which flex missed.
 */
#define REJECT reject_used_but_not_detected
#define yymore() yymore_used_but_not_detected
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
char *yytext;
#line 1 "ldlex.l"
#line 4 "ldlex.l"

/* Copyright 1991-2013 Free Software Foundation, Inc.
   Written by Steve Chamberlain of Cygnus Support.

   This file is part of the GNU Binutils.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
   MA 02110-1301, USA.  */

#include "bfd.h"
#include "safe-ctype.h"
#include "bfdlink.h"
#include "ld.h"
#include "ldmisc.h"
#include "ldexp.h"
#include "ldlang.h"
#include <ldgram.h>
#include "ldfile.h"
#include "ldlex.h"
#include "ldmain.h"
#include "libiberty.h"

/* The type of top-level parser input.
   yylex and yyparse (indirectly) both check this.  */
input_type parser_input;

/* Line number in the current input file.
   (FIXME Actually, it doesn't appear to get reset for each file?)  */
unsigned int lineno = 1;

/* The string we are currently lexing, or NULL if we are reading a
   file.  */
const char *lex_string = NULL;

/* Support for flex reading from more than one input file (stream).
   `include_stack' is flex's input state for each open file;
   `file_name_stack' is the file names.  `lineno_stack' is the current
   line numbers.

   If `include_stack_ptr' is 0, we haven't started reading anything yet.
   Otherwise, stack elements 0 through `include_stack_ptr - 1' are valid.  */

#undef YY_INPUT
#define YY_INPUT(buf,result,max_size) result = yy_input (buf, max_size)

#ifndef YY_NO_UNPUT
#define YY_NO_UNPUT
#endif

#define MAX_INCLUDE_DEPTH 10
static YY_BUFFER_STATE include_stack[MAX_INCLUDE_DEPTH];
static const char *file_name_stack[MAX_INCLUDE_DEPTH];
static unsigned int lineno_stack[MAX_INCLUDE_DEPTH];
static unsigned int sysrooted_stack[MAX_INCLUDE_DEPTH];
static unsigned int include_stack_ptr = 0;
static int vers_node_nesting = 0;

static int yy_input (char *, int);
static void comment (void);
static void lex_warn_invalid (char *where, char *what);

/* STATES
	EXPRESSION	definitely in an expression
	SCRIPT		definitely in a script
	BOTH		either EXPRESSION or SCRIPT
	DEFSYMEXP	in an argument to -defsym
        MRI             in an MRI script
	VERS_START	starting a Sun style mapfile
	VERS_SCRIPT	a Sun style mapfile
	VERS_NODE	a node within a Sun style mapfile
*/
#define RTOKEN(x)  {  yylval.token = x; return x; }

/* Some versions of flex want this.  */
#ifndef yywrap
int yywrap (void) { return 1; }
#endif








#line 1745 "ldlex.c"

#define INITIAL 0
#define SCRIPT 1
#define EXPRESSION 2
#define BOTH 3
#define DEFSYMEXP 4
#define MRI 5
#define VERS_START 6
#define VERS_SCRIPT 7
#define VERS_NODE 8

#ifndef YY_NO_UNISTD_H
/* Special case for "unistd.h", since it is non-ANSI. We include it way
 * down here because we want the user's section 1 to have been scanned first.
 * The user has a chance to override it with an option.
 */
#include <unistd.h>
#endif

#ifndef YY_EXTRA_TYPE
#define YY_EXTRA_TYPE void *
#endif

static int yy_init_globals (void );

/* Accessor methods to globals.
   These are made visible to non-reentrant scanners for convenience. */

int yylex_destroy (void );

int yyget_debug (void );

void yyset_debug (int debug_flag  );

YY_EXTRA_TYPE yyget_extra (void );

void yyset_extra (YY_EXTRA_TYPE user_defined  );

FILE *yyget_in (void );

void yyset_in  (FILE * in_str  );

FILE *yyget_out (void );

void yyset_out  (FILE * out_str  );

yy_size_t yyget_leng (void );

char *yyget_text (void );

int yyget_lineno (void );

void yyset_lineno (int line_number  );

/* Macros after this point can all be overridden by user definitions in
 * section 1.
 */

#ifndef YY_SKIP_YYWRAP
#ifdef __cplusplus
extern "C" int yywrap (void );
#else
extern int yywrap (void );
#endif
#endif

#ifndef yytext_ptr
static void yy_flex_strncpy (char *,yyconst char *,int );
#endif

#ifdef YY_NEED_STRLEN
static int yy_flex_strlen (yyconst char * );
#endif

#ifndef YY_NO_INPUT

#ifdef __cplusplus
static int yyinput (void );
#else
static int input (void );
#endif

#endif

/* Amount of stuff to slurp up with each read. */
#ifndef YY_READ_BUF_SIZE
#define YY_READ_BUF_SIZE 8192
#endif

/* Copy whatever the last rule matched to the standard output. */
#ifndef ECHO
/* This used to be an fputs(), but since the string might contain NUL's,
 * we now use fwrite().
 */
#define ECHO fwrite( yytext, yyleng, 1, yyout )
#endif

/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
 * is returned in "result".
 */
#ifndef YY_INPUT
#define YY_INPUT(buf,result,max_size) \
	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
		{ \
		int c = '*'; \
		yy_size_t n; \
		for ( n = 0; n < max_size && \
			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
			buf[n] = (char) c; \
		if ( c == '\n' ) \
			buf[n++] = (char) c; \
		if ( c == EOF && ferror( yyin ) ) \
			YY_FATAL_ERROR( "input in flex scanner failed" ); \
		result = n; \
		} \
	else \
		{ \
		errno=0; \
		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
			{ \
			if( errno != EINTR) \
				{ \
				YY_FATAL_ERROR( "input in flex scanner failed" ); \
				break; \
				} \
			errno=0; \
			clearerr(yyin); \
			} \
		}\
\

#endif

/* No semi-colon after return; correct usage is to write "yyterminate();" -
 * we don't want an extra ';' after the "return" because that will cause
 * some compilers to complain about unreachable statements.
 */
#ifndef yyterminate
#define yyterminate() return YY_NULL
#endif

/* Number of entries by which start-condition stack grows. */
#ifndef YY_START_STACK_INCR
#define YY_START_STACK_INCR 25
#endif

/* Report a fatal error. */
#ifndef YY_FATAL_ERROR
#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
#endif

/* end tables serialization structures and prototypes */

/* Default declaration of generated scanner - a define so the user can
 * easily add parameters.
 */
#ifndef YY_DECL
#define YY_DECL_IS_OURS 1

extern int yylex (void);

#define YY_DECL int yylex (void)
#endif /* !YY_DECL */

/* Code executed at the beginning of each rule, after yytext and yyleng
 * have been set up.
 */
#ifndef YY_USER_ACTION
#define YY_USER_ACTION
#endif

/* Code executed at the end of each rule. */
#ifndef YY_BREAK
#define YY_BREAK break;
#endif

#define YY_RULE_SETUP \
	YY_USER_ACTION

/** The main scanner function which does all the work.
 */
YY_DECL
{
	register yy_state_type yy_current_state;
	register char *yy_cp, *yy_bp;
	register int yy_act;
    
#line 119 "ldlex.l"


  if (parser_input != input_selected)
    {
      /* The first token of the input determines the initial parser state.  */
      input_type t = parser_input;
      parser_input = input_selected;
      switch (t)
	{
	case input_script: return INPUT_SCRIPT; break;
	case input_mri_script: return INPUT_MRI_SCRIPT; break;
	case input_version_script: return INPUT_VERSION_SCRIPT; break;
	case input_dynamic_list: return INPUT_DYNAMIC_LIST; break;
	case input_defsym: return INPUT_DEFSYM; break;
	default: abort ();
	}
    }

#line 1952 "ldlex.c"

	if ( !(yy_init) )
		{
		(yy_init) = 1;

#ifdef YY_USER_INIT
		YY_USER_INIT;
#endif

		if ( ! (yy_start) )
			(yy_start) = 1;	/* first start state */

		if ( ! yyin )
			yyin = stdin;

		if ( ! yyout )
			yyout = stdout;

		if ( ! YY_CURRENT_BUFFER ) {
			yyensure_buffer_stack ();
			YY_CURRENT_BUFFER_LVALUE =
				yy_create_buffer(yyin,YY_BUF_SIZE );
		}

		yy_load_buffer_state( );
		}

	while ( 1 )		/* loops until end-of-file is reached */
		{
		yy_cp = (yy_c_buf_p);

		/* Support of yytext. */
		*yy_cp = (yy_hold_char);

		/* yy_bp points to the position in yy_ch_buf of the start of
		 * the current run.
		 */
		yy_bp = yy_cp;

		yy_current_state = (yy_start);
yy_match:
		do
			{
			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
			if ( yy_accept[yy_current_state] )
				{
				(yy_last_accepting_state) = yy_current_state;
				(yy_last_accepting_cpos) = yy_cp;
				}
			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
				{
				yy_current_state = (int) yy_def[yy_current_state];
				if ( yy_current_state >= 1751 )
					yy_c = yy_meta[(unsigned int) yy_c];
				}
			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
			++yy_cp;
			}
		while ( yy_base[yy_current_state] != 2704 );

yy_find_action:
		yy_act = yy_accept[yy_current_state];
		if ( yy_act == 0 )
			{ /* have to back up */
			yy_cp = (yy_last_accepting_cpos);
			yy_current_state = (yy_last_accepting_state);
			yy_act = yy_accept[yy_current_state];
			}

		YY_DO_BEFORE_ACTION;

do_action:	/* This label is used only to access EOF actions. */

		switch ( yy_act )
	{ /* beginning of action switch */
			case 0: /* must back up */
			/* undo the effects of YY_DO_BEFORE_ACTION */
			*yy_cp = (yy_hold_char);
			yy_cp = (yy_last_accepting_cpos);
			yy_current_state = (yy_last_accepting_state);
			goto yy_find_action;

case 1:
YY_RULE_SETUP
#line 137 "ldlex.l"
{ comment (); }
	YY_BREAK
case 2:
YY_RULE_SETUP
#line 140 "ldlex.l"
{ RTOKEN('-');}
	YY_BREAK
case 3:
YY_RULE_SETUP
#line 141 "ldlex.l"
{ RTOKEN('+');}
	YY_BREAK
case 4:
YY_RULE_SETUP
#line 142 "ldlex.l"
{ yylval.name = xstrdup (yytext); return NAME; }
	YY_BREAK
case 5:
YY_RULE_SETUP
#line 143 "ldlex.l"
{ RTOKEN('='); }
	YY_BREAK
case 6:
YY_RULE_SETUP
#line 145 "ldlex.l"
{
  				yylval.integer = bfd_scan_vma (yytext + 1, 0, 16);
				yylval.bigint.str = NULL;
				return INT;
			}
	YY_BREAK
case 7:
YY_RULE_SETUP
#line 151 "ldlex.l"
{
				   int ibase ;
				   switch (yytext[yyleng - 1]) {
				    case 'X':
				    case 'x':
				    case 'H':
				    case 'h':
				     ibase = 16;
				     break;
				    case 'O':
				    case 'o':
				     ibase = 8;
				     break;
				    case 'B':
				    case 'b':
				     ibase = 2;
				     break;
				    default:
				     ibase = 10;
				   }
				   yylval.integer = bfd_scan_vma (yytext, 0,
								  ibase);
				   yylval.bigint.str = NULL;
				   return INT;
				 }
	YY_BREAK
case 8:
YY_RULE_SETUP
#line 176 "ldlex.l"
{
				  char *s = yytext;
				  int ibase = 0;

				  if (*s == '$')
				    {
				      ++s;
				      ibase = 16;
				    }
				  yylval.integer = bfd_scan_vma (s, 0, ibase);
				  yylval.bigint.str = NULL;
				  if (yytext[yyleng - 1] == 'M'
				      || yytext[yyleng - 1] == 'm')
				    {
				      yylval.integer *= 1024 * 1024;
				    }
				  else if (yytext[yyleng - 1] == 'K'
				      || yytext[yyleng - 1]=='k')
				    {
				      yylval.integer *= 1024;
				    }
				  else if (yytext[0] == '0'
					   && (yytext[1] == 'x'
					       || yytext[1] == 'X'))
				    {
				      yylval.bigint.str = xstrdup (yytext + 2);
				    }
				  return INT;
				}
	YY_BREAK
case 9:
YY_RULE_SETUP
#line 205 "ldlex.l"
{ RTOKEN(']');}
	YY_BREAK
case 10:
YY_RULE_SETUP
#line 206 "ldlex.l"
{ RTOKEN('[');}
	YY_BREAK
case 11:
YY_RULE_SETUP
#line 207 "ldlex.l"
{ RTOKEN(LSHIFTEQ);}
	YY_BREAK
case 12:
YY_RULE_SETUP
#line 208 "ldlex.l"
{ RTOKEN(RSHIFTEQ);}
	YY_BREAK
case 13:
YY_RULE_SETUP
#line 209 "ldlex.l"
{ RTOKEN(OROR);}
	YY_BREAK
case 14:
YY_RULE_SETUP
#line 210 "ldlex.l"
{ RTOKEN(EQ);}
	YY_BREAK
case 15:
YY_RULE_SETUP
#line 211 "ldlex.l"
{ RTOKEN(NE);}
	YY_BREAK
case 16:
YY_RULE_SETUP
#line 212 "ldlex.l"
{ RTOKEN(GE);}
	YY_BREAK
case 17:
YY_RULE_SETUP
#line 213 "ldlex.l"
{ RTOKEN(LE);}
	YY_BREAK
case 18:
YY_RULE_SETUP
#line 214 "ldlex.l"
{ RTOKEN(LSHIFT);}
	YY_BREAK
case 19:
YY_RULE_SETUP
#line 215 "ldlex.l"
{ RTOKEN(RSHIFT);}
	YY_BREAK
case 20:
YY_RULE_SETUP
#line 216 "ldlex.l"
{ RTOKEN(PLUSEQ);}
	YY_BREAK
case 21:
YY_RULE_SETUP
#line 217 "ldlex.l"
{ RTOKEN(MINUSEQ);}
	YY_BREAK
case 22:
YY_RULE_SETUP
#line 218 "ldlex.l"
{ RTOKEN(MULTEQ);}
	YY_BREAK
case 23:
YY_RULE_SETUP
#line 219 "ldlex.l"
{ RTOKEN(DIVEQ);}
	YY_BREAK
case 24:
YY_RULE_SETUP
#line 220 "ldlex.l"
{ RTOKEN(ANDEQ);}
	YY_BREAK
case 25:
YY_RULE_SETUP
#line 221 "ldlex.l"
{ RTOKEN(OREQ);}
	YY_BREAK
case 26:
YY_RULE_SETUP
#line 222 "ldlex.l"
{ RTOKEN(ANDAND);}
	YY_BREAK
case 27:
YY_RULE_SETUP
#line 223 "ldlex.l"
{ RTOKEN('>');}
	YY_BREAK
case 28:
YY_RULE_SETUP
#line 224 "ldlex.l"
{ RTOKEN(',');}
	YY_BREAK
case 29:
YY_RULE_SETUP
#line 225 "ldlex.l"
{ RTOKEN('&');}
	YY_BREAK
case 30:
YY_RULE_SETUP
#line 226 "ldlex.l"
{ RTOKEN('|');}
	YY_BREAK
case 31:
YY_RULE_SETUP
#line 227 "ldlex.l"
{ RTOKEN('~');}
	YY_BREAK
case 32:
YY_RULE_SETUP
#line 228 "ldlex.l"
{ RTOKEN('!');}
	YY_BREAK
case 33:
YY_RULE_SETUP
#line 229 "ldlex.l"
{ RTOKEN('?');}
	YY_BREAK
case 34:
YY_RULE_SETUP
#line 230 "ldlex.l"
{ RTOKEN('*');}
	YY_BREAK
case 35:
YY_RULE_SETUP
#line 231 "ldlex.l"
{ RTOKEN('+');}
	YY_BREAK
case 36:
YY_RULE_SETUP
#line 232 "ldlex.l"
{ RTOKEN('-');}
	YY_BREAK
case 37:
YY_RULE_SETUP
#line 233 "ldlex.l"
{ RTOKEN('/');}
	YY_BREAK
case 38:
YY_RULE_SETUP
#line 234 "ldlex.l"
{ RTOKEN('%');}
	YY_BREAK
case 39:
YY_RULE_SETUP
#line 235 "ldlex.l"
{ RTOKEN('<');}
	YY_BREAK
case 40:
YY_RULE_SETUP
#line 236 "ldlex.l"
{ RTOKEN('=');}
	YY_BREAK
case 41:
YY_RULE_SETUP
#line 237 "ldlex.l"
{ RTOKEN('}') ; }
	YY_BREAK
case 42:
YY_RULE_SETUP
#line 238 "ldlex.l"
{ RTOKEN('{'); }
	YY_BREAK
case 43:
YY_RULE_SETUP
#line 239 "ldlex.l"
{ RTOKEN(')');}
	YY_BREAK
case 44:
YY_RULE_SETUP
#line 240 "ldlex.l"
{ RTOKEN('(');}
	YY_BREAK
case 45:
YY_RULE_SETUP
#line 241 "ldlex.l"
{ RTOKEN(':'); }
	YY_BREAK
case 46:
YY_RULE_SETUP
#line 242 "ldlex.l"
{ RTOKEN(';');}
	YY_BREAK
case 47:
YY_RULE_SETUP
#line 243 "ldlex.l"
{ RTOKEN(MEMORY);}
	YY_BREAK
case 48:
YY_RULE_SETUP
#line 244 "ldlex.l"
{ RTOKEN(REGION_ALIAS);}
	YY_BREAK
case 49:
YY_RULE_SETUP
#line 245 "ldlex.l"
{ RTOKEN(LD_FEATURE);}
	YY_BREAK
case 50:
YY_RULE_SETUP
#line 246 "ldlex.l"
{ RTOKEN(ORIGIN);}
	YY_BREAK
case 51:
YY_RULE_SETUP
#line 247 "ldlex.l"
{ RTOKEN(VERSIONK);}
	YY_BREAK
case 52:
YY_RULE_SETUP
#line 248 "ldlex.l"
{ RTOKEN(BLOCK);}
	YY_BREAK
case 53:
YY_RULE_SETUP
#line 249 "ldlex.l"
{ RTOKEN(BIND);}
	YY_BREAK
case 54:
YY_RULE_SETUP
#line 250 "ldlex.l"
{ RTOKEN(LENGTH);}
	YY_BREAK
case 55:
YY_RULE_SETUP
#line 251 "ldlex.l"
{ RTOKEN(ALIGN_K);}
	YY_BREAK
case 56:
YY_RULE_SETUP
#line 252 "ldlex.l"
{ RTOKEN(DATA_SEGMENT_ALIGN);}
	YY_BREAK
case 57:
YY_RULE_SETUP
#line 253 "ldlex.l"
{ RTOKEN(DATA_SEGMENT_RELRO_END);}
	YY_BREAK
case 58:
YY_RULE_SETUP
#line 254 "ldlex.l"
{ RTOKEN(DATA_SEGMENT_END);}
	YY_BREAK
case 59:
YY_RULE_SETUP
#line 255 "ldlex.l"
{ RTOKEN(ADDR);}
	YY_BREAK
case 60:
YY_RULE_SETUP
#line 256 "ldlex.l"
{ RTOKEN(LOADADDR);}
	YY_BREAK
case 61:
YY_RULE_SETUP
#line 257 "ldlex.l"
{ RTOKEN(ALIGNOF); }
	YY_BREAK
case 62:
YY_RULE_SETUP
#line 258 "ldlex.l"
{ RTOKEN(MAX_K); }
	YY_BREAK
case 63:
YY_RULE_SETUP
#line 259 "ldlex.l"
{ RTOKEN(MIN_K); }
	YY_BREAK
case 64:
YY_RULE_SETUP
#line 260 "ldlex.l"
{ RTOKEN(LOG2CEIL); }
	YY_BREAK
case 65:
YY_RULE_SETUP
#line 261 "ldlex.l"
{ RTOKEN(ASSERT_K); }
	YY_BREAK
case 66:
YY_RULE_SETUP
#line 262 "ldlex.l"
{ RTOKEN(ENTRY);}
	YY_BREAK
case 67:
YY_RULE_SETUP
#line 263 "ldlex.l"
{ RTOKEN(EXTERN);}
	YY_BREAK
case 68:
YY_RULE_SETUP
#line 264 "ldlex.l"
{ RTOKEN(NEXT);}
	YY_BREAK
case 69:
YY_RULE_SETUP
#line 265 "ldlex.l"
{ RTOKEN(SIZEOF_HEADERS);}
	YY_BREAK
case 70:
YY_RULE_SETUP
#line 266 "ldlex.l"
{ RTOKEN(SIZEOF_HEADERS);}
	YY_BREAK
case 71:
YY_RULE_SETUP
#line 267 "ldlex.l"
{ RTOKEN(SEGMENT_START);}
	YY_BREAK
case 72:
YY_RULE_SETUP
#line 268 "ldlex.l"
{ RTOKEN(MAP);}
	YY_BREAK
case 73:
YY_RULE_SETUP
#line 269 "ldlex.l"
{ RTOKEN(SIZEOF);}
	YY_BREAK
case 74:
YY_RULE_SETUP
#line 270 "ldlex.l"
{ RTOKEN(TARGET_K);}
	YY_BREAK
case 75:
YY_RULE_SETUP
#line 271 "ldlex.l"
{ RTOKEN(SEARCH_DIR);}
	YY_BREAK
case 76:
YY_RULE_SETUP
#line 272 "ldlex.l"
{ RTOKEN(OUTPUT);}
	YY_BREAK
case 77:
YY_RULE_SETUP
#line 273 "ldlex.l"
{ RTOKEN(INPUT);}
	YY_BREAK
case 78:
YY_RULE_SETUP
#line 274 "ldlex.l"
{ RTOKEN(GROUP);}
	YY_BREAK
case 79:
YY_RULE_SETUP
#line 275 "ldlex.l"
{ RTOKEN(AS_NEEDED);}
	YY_BREAK
case 80:
YY_RULE_SETUP
#line 276 "ldlex.l"
{ RTOKEN(DEFINED);}
	YY_BREAK
case 81:
YY_RULE_SETUP
#line 277 "ldlex.l"
{ RTOKEN(CREATE_OBJECT_SYMBOLS);}
	YY_BREAK
case 82:
YY_RULE_SETUP
#line 278 "ldlex.l"
{ RTOKEN( CONSTRUCTORS);}
	YY_BREAK
case 83:
YY_RULE_SETUP
#line 279 "ldlex.l"
{ RTOKEN(FORCE_COMMON_ALLOCATION);}
	YY_BREAK
case 84:
YY_RULE_SETUP
#line 280 "ldlex.l"
{ RTOKEN(INHIBIT_COMMON_ALLOCATION);}
	YY_BREAK
case 85:
YY_RULE_SETUP
#line 281 "ldlex.l"
{ RTOKEN(SECTIONS);}
	YY_BREAK
case 86:
YY_RULE_SETUP
#line 282 "ldlex.l"
{ RTOKEN(INSERT_K);}
	YY_BREAK
case 87:
YY_RULE_SETUP
#line 283 "ldlex.l"
{ RTOKEN(AFTER);}
	YY_BREAK
case 88:
YY_RULE_SETUP
#line 284 "ldlex.l"
{ RTOKEN(BEFORE);}
	YY_BREAK
case 89:
YY_RULE_SETUP
#line 285 "ldlex.l"
{ RTOKEN(FILL);}
	YY_BREAK
case 90:
YY_RULE_SETUP
#line 286 "ldlex.l"
{ RTOKEN(STARTUP);}
	YY_BREAK
case 91:
YY_RULE_SETUP
#line 287 "ldlex.l"
{ RTOKEN(OUTPUT_FORMAT);}
	YY_BREAK
case 92:
YY_RULE_SETUP
#line 288 "ldlex.l"
{ RTOKEN( OUTPUT_ARCH);}
	YY_BREAK
case 93:
YY_RULE_SETUP
#line 289 "ldlex.l"
{ RTOKEN(HLL);}
	YY_BREAK
case 94:
YY_RULE_SETUP
#line 290 "ldlex.l"
{ RTOKEN(SYSLIB);}
	YY_BREAK
case 95:
YY_RULE_SETUP
#line 291 "ldlex.l"
{ RTOKEN(FLOAT);}
	YY_BREAK
case 96:
YY_RULE_SETUP
#line 292 "ldlex.l"
{ RTOKEN( QUAD);}
	YY_BREAK
case 97:
YY_RULE_SETUP
#line 293 "ldlex.l"
{ RTOKEN( SQUAD);}
	YY_BREAK
case 98:
YY_RULE_SETUP
#line 294 "ldlex.l"
{ RTOKEN( LONG);}
	YY_BREAK
case 99:
YY_RULE_SETUP
#line 295 "ldlex.l"
{ RTOKEN( SHORT);}
	YY_BREAK
case 100:
YY_RULE_SETUP
#line 296 "ldlex.l"
{ RTOKEN( BYTE);}
	YY_BREAK
case 101:
YY_RULE_SETUP
#line 297 "ldlex.l"
{ RTOKEN(NOFLOAT);}
	YY_BREAK
case 102:
YY_RULE_SETUP
#line 298 "ldlex.l"
{ RTOKEN(NOCROSSREFS);}
	YY_BREAK
case 103:
YY_RULE_SETUP
#line 299 "ldlex.l"
{ RTOKEN(OVERLAY); }
	YY_BREAK
case 104:
YY_RULE_SETUP
#line 300 "ldlex.l"
{ RTOKEN(SORT_BY_NAME); }
	YY_BREAK
case 105:
YY_RULE_SETUP
#line 301 "ldlex.l"
{ RTOKEN(SORT_BY_ALIGNMENT); }
	YY_BREAK
case 106:
YY_RULE_SETUP
#line 302 "ldlex.l"
{ RTOKEN(SORT_BY_NAME); }
	YY_BREAK
case 107:
YY_RULE_SETUP
#line 303 "ldlex.l"
{ RTOKEN(SORT_BY_INIT_PRIORITY); }
	YY_BREAK
case 108:
YY_RULE_SETUP
#line 304 "ldlex.l"
{ RTOKEN(SORT_NONE); }
	YY_BREAK
case 109:
YY_RULE_SETUP
#line 305 "ldlex.l"
{ RTOKEN(NOLOAD);}
	YY_BREAK
case 110:
YY_RULE_SETUP
#line 306 "ldlex.l"
{ RTOKEN(DSECT);}
	YY_BREAK
case 111:
YY_RULE_SETUP
#line 307 "ldlex.l"
{ RTOKEN(COPY);}
	YY_BREAK
case 112:
YY_RULE_SETUP
#line 308 "ldlex.l"
{ RTOKEN(INFO);}
	YY_BREAK
case 113:
YY_RULE_SETUP
#line 309 "ldlex.l"
{ RTOKEN(OVERLAY);}
	YY_BREAK
case 114:
YY_RULE_SETUP
#line 310 "ldlex.l"
{ RTOKEN(ONLY_IF_RO); }
	YY_BREAK
case 115:
YY_RULE_SETUP
#line 311 "ldlex.l"
{ RTOKEN(ONLY_IF_RW); }
	YY_BREAK
case 116:
YY_RULE_SETUP
#line 312 "ldlex.l"
{ RTOKEN(SPECIAL); }
	YY_BREAK
case 117:
YY_RULE_SETUP
#line 313 "ldlex.l"
{ RTOKEN(ORIGIN);}
	YY_BREAK
case 118:
YY_RULE_SETUP
#line 314 "ldlex.l"
{ RTOKEN(ORIGIN);}
	YY_BREAK
case 119:
YY_RULE_SETUP
#line 315 "ldlex.l"
{ RTOKEN( LENGTH);}
	YY_BREAK
case 120:
YY_RULE_SETUP
#line 316 "ldlex.l"
{ RTOKEN( LENGTH);}
	YY_BREAK
case 121:
YY_RULE_SETUP
#line 317 "ldlex.l"
{ RTOKEN(INPUT_SECTION_FLAGS); }
	YY_BREAK
case 122:
YY_RULE_SETUP
#line 318 "ldlex.l"
{ RTOKEN(INCLUDE);}
	YY_BREAK
case 123:
YY_RULE_SETUP
#line 319 "ldlex.l"
{ RTOKEN (PHDRS); }
	YY_BREAK
case 124:
YY_RULE_SETUP
#line 320 "ldlex.l"
{ RTOKEN(AT);}
	YY_BREAK
case 125:
YY_RULE_SETUP
#line 321 "ldlex.l"
{ RTOKEN(ALIGN_WITH_INPUT);}
	YY_BREAK
case 126:
YY_RULE_SETUP
#line 322 "ldlex.l"
{ RTOKEN(SUBALIGN);}
	YY_BREAK
case 127:
YY_RULE_SETUP
#line 323 "ldlex.l"
{ RTOKEN(HIDDEN); }
	YY_BREAK
case 128:
YY_RULE_SETUP
#line 324 "ldlex.l"
{ RTOKEN(PROVIDE); }
	YY_BREAK
case 129:
YY_RULE_SETUP
#line 325 "ldlex.l"
{ RTOKEN(PROVIDE_HIDDEN); }
	YY_BREAK
case 130:
YY_RULE_SETUP
#line 326 "ldlex.l"
{ RTOKEN(KEEP); }
	YY_BREAK
case 131:
YY_RULE_SETUP
#line 327 "ldlex.l"
{ RTOKEN(EXCLUDE_FILE); }
	YY_BREAK
case 132:
YY_RULE_SETUP
#line 328 "ldlex.l"
{ RTOKEN(CONSTANT);}
	YY_BREAK
case 133:
/* rule 133 can match eol */
YY_RULE_SETUP
#line 329 "ldlex.l"
{ ++ lineno; }
	YY_BREAK
case 134:
/* rule 134 can match eol */
YY_RULE_SETUP
#line 330 "ldlex.l"
{ ++ lineno;  RTOKEN(NEWLINE); }
	YY_BREAK
case 135:
YY_RULE_SETUP
#line 331 "ldlex.l"
{ /* Mri comment line */ }
	YY_BREAK
case 136:
YY_RULE_SETUP
#line 332 "ldlex.l"
{ /* Mri comment line */ }
	YY_BREAK
case 137:
YY_RULE_SETUP
#line 333 "ldlex.l"
{ RTOKEN(ENDWORD); }
	YY_BREAK
case 138:
YY_RULE_SETUP
#line 334 "ldlex.l"
{ RTOKEN(ALIGNMOD);}
	YY_BREAK
case 139:
YY_RULE_SETUP
#line 335 "ldlex.l"
{ RTOKEN(ALIGN_K);}
	YY_BREAK
case 140:
YY_RULE_SETUP
#line 336 "ldlex.l"
{ RTOKEN(CHIP); }
	YY_BREAK
case 141:
YY_RULE_SETUP
#line 337 "ldlex.l"
{ RTOKEN(BASE); }
	YY_BREAK
case 142:
YY_RULE_SETUP
#line 338 "ldlex.l"
{ RTOKEN(ALIAS); }
	YY_BREAK
case 143:
YY_RULE_SETUP
#line 339 "ldlex.l"
{ RTOKEN(TRUNCATE); }
	YY_BREAK
case 144:
YY_RULE_SETUP
#line 340 "ldlex.l"
{ RTOKEN(LOAD); }
	YY_BREAK
case 145:
YY_RULE_SETUP
#line 341 "ldlex.l"
{ RTOKEN(PUBLIC); }
	YY_BREAK
case 146:
YY_RULE_SETUP
#line 342 "ldlex.l"
{ RTOKEN(ORDER); }
	YY_BREAK
case 147:
YY_RULE_SETUP
#line 343 "ldlex.l"
{ RTOKEN(NAMEWORD); }
	YY_BREAK
case 148:
YY_RULE_SETUP
#line 344 "ldlex.l"
{ RTOKEN(FORMAT); }
	YY_BREAK
case 149:
YY_RULE_SETUP
#line 345 "ldlex.l"
{ RTOKEN(CASE); }
	YY_BREAK
case 150:
YY_RULE_SETUP
#line 346 "ldlex.l"
{ RTOKEN(START); }
	YY_BREAK
case 151:
YY_RULE_SETUP
#line 347 "ldlex.l"
{ RTOKEN(LIST); /* LIST and ignore to end of line */ }
	YY_BREAK
case 152:
YY_RULE_SETUP
#line 348 "ldlex.l"
{ RTOKEN(SECT); }
	YY_BREAK
case 153:
YY_RULE_SETUP
#line 349 "ldlex.l"
{ RTOKEN(ABSOLUTE); }
	YY_BREAK
case 154:
YY_RULE_SETUP
#line 350 "ldlex.l"
{ RTOKEN(ENDWORD); }
	YY_BREAK
case 155:
YY_RULE_SETUP
#line 351 "ldlex.l"
{ RTOKEN(ALIGNMOD);}
	YY_BREAK
case 156:
YY_RULE_SETUP
#line 352 "ldlex.l"
{ RTOKEN(ALIGN_K);}
	YY_BREAK
case 157:
YY_RULE_SETUP
#line 353 "ldlex.l"
{ RTOKEN(CHIP); }
	YY_BREAK
case 158:
YY_RULE_SETUP
#line 354 "ldlex.l"
{ RTOKEN(BASE); }
	YY_BREAK
case 159:
YY_RULE_SETUP
#line 355 "ldlex.l"
{ RTOKEN(ALIAS); }
	YY_BREAK
case 160:
YY_RULE_SETUP
#line 356 "ldlex.l"
{ RTOKEN(TRUNCATE); }
	YY_BREAK
case 161:
YY_RULE_SETUP
#line 357 "ldlex.l"
{ RTOKEN(LOAD); }
	YY_BREAK
case 162:
YY_RULE_SETUP
#line 358 "ldlex.l"
{ RTOKEN(PUBLIC); }
	YY_BREAK
case 163:
YY_RULE_SETUP
#line 359 "ldlex.l"
{ RTOKEN(ORDER); }
	YY_BREAK
case 164:
YY_RULE_SETUP
#line 360 "ldlex.l"
{ RTOKEN(NAMEWORD); }
	YY_BREAK
case 165:
YY_RULE_SETUP
#line 361 "ldlex.l"
{ RTOKEN(FORMAT); }
	YY_BREAK
case 166:
YY_RULE_SETUP
#line 362 "ldlex.l"
{ RTOKEN(CASE); }
	YY_BREAK
case 167:
YY_RULE_SETUP
#line 363 "ldlex.l"
{ RTOKEN(EXTERN); }
	YY_BREAK
case 168:
YY_RULE_SETUP
#line 364 "ldlex.l"
{ RTOKEN(START); }
	YY_BREAK
case 169:
YY_RULE_SETUP
#line 365 "ldlex.l"
{ RTOKEN(LIST); /* LIST and ignore to end of line */ }
	YY_BREAK
case 170:
YY_RULE_SETUP
#line 366 "ldlex.l"
{ RTOKEN(SECT); }
	YY_BREAK
case 171:
YY_RULE_SETUP
#line 367 "ldlex.l"
{ RTOKEN(ABSOLUTE); }
	YY_BREAK
case 172:
YY_RULE_SETUP
#line 369 "ldlex.l"
{
/* Filename without commas, needed to parse mri stuff */
				 yylval.name = xstrdup (yytext);
				  return NAME;
				}
	YY_BREAK
case 173:
YY_RULE_SETUP
#line 376 "ldlex.l"
{
				 yylval.name = xstrdup (yytext);
				  return NAME;
				}
	YY_BREAK
case 174:
YY_RULE_SETUP
#line 380 "ldlex.l"
{
				  yylval.name = xstrdup (yytext + 2);
				  return LNAME;
				}
	YY_BREAK
case 175:
YY_RULE_SETUP
#line 384 "ldlex.l"
{
				 yylval.name = xstrdup (yytext);
				  return NAME;
				}
	YY_BREAK
case 176:
YY_RULE_SETUP
#line 388 "ldlex.l"
{
				  yylval.name = xstrdup (yytext + 2);
				  return LNAME;
				}
	YY_BREAK
case 177:
YY_RULE_SETUP
#line 392 "ldlex.l"
{
		/* Annoyingly, this pattern can match comments, and we have
		   longest match issues to consider.  So if the first two
		   characters are a comment opening, put the input back and
		   try again.  */
		if (yytext[0] == '/' && yytext[1] == '*')
		  {
		    yyless (2);
		    comment ();
		  }
		else
		  {
		    yylval.name = xstrdup (yytext);
		    return NAME;
		  }
	}
	YY_BREAK
case 178:
/* rule 178 can match eol */
YY_RULE_SETUP
#line 409 "ldlex.l"
{
					/* No matter the state, quotes
					   give what's inside */
					yylval.name = xstrdup (yytext + 1);
					yylval.name[yyleng - 2] = 0;
					return NAME;
				}
	YY_BREAK
case 179:
/* rule 179 can match eol */
YY_RULE_SETUP
#line 416 "ldlex.l"
{ lineno++;}
	YY_BREAK
case 180:
YY_RULE_SETUP
#line 417 "ldlex.l"
{ }
	YY_BREAK
case 181:
YY_RULE_SETUP
#line 419 "ldlex.l"
{ return *yytext; }
	YY_BREAK
case 182:
YY_RULE_SETUP
#line 421 "ldlex.l"
{ RTOKEN(GLOBAL); }
	YY_BREAK
case 183:
YY_RULE_SETUP
#line 423 "ldlex.l"
{ RTOKEN(LOCAL); }
	YY_BREAK
case 184:
YY_RULE_SETUP
#line 425 "ldlex.l"
{ RTOKEN(EXTERN); }
	YY_BREAK
case 185:
YY_RULE_SETUP
#line 427 "ldlex.l"
{ yylval.name = xstrdup (yytext);
				  return VERS_IDENTIFIER; }
	YY_BREAK
case 186:
YY_RULE_SETUP
#line 430 "ldlex.l"
{ yylval.name = xstrdup (yytext);
				  return VERS_TAG; }
	YY_BREAK
case 187:
YY_RULE_SETUP
#line 433 "ldlex.l"
{ BEGIN(VERS_SCRIPT); return *yytext; }
	YY_BREAK
case 188:
YY_RULE_SETUP
#line 435 "ldlex.l"
{ BEGIN(VERS_NODE);
				  vers_node_nesting = 0;
				  return *yytext;
				}
	YY_BREAK
case 189:
YY_RULE_SETUP
#line 439 "ldlex.l"
{ return *yytext; }
	YY_BREAK
case 190:
YY_RULE_SETUP
#line 440 "ldlex.l"
{ vers_node_nesting++; return *yytext; }
	YY_BREAK
case 191:
YY_RULE_SETUP
#line 441 "ldlex.l"
{ if (--vers_node_nesting < 0)
				    BEGIN(VERS_SCRIPT);
				  return *yytext;
				}
	YY_BREAK
case 192:
/* rule 192 can match eol */
YY_RULE_SETUP
#line 446 "ldlex.l"
{ lineno++; }
	YY_BREAK
case 193:
YY_RULE_SETUP
#line 448 "ldlex.l"
{ /* Eat up comments */ }
	YY_BREAK
case 194:
YY_RULE_SETUP
#line 450 "ldlex.l"
{ /* Eat up whitespace */ }
	YY_BREAK
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(SCRIPT):
case YY_STATE_EOF(EXPRESSION):
case YY_STATE_EOF(BOTH):
case YY_STATE_EOF(DEFSYMEXP):
case YY_STATE_EOF(MRI):
case YY_STATE_EOF(VERS_START):
case YY_STATE_EOF(VERS_SCRIPT):
case YY_STATE_EOF(VERS_NODE):
#line 452 "ldlex.l"
{
  include_stack_ptr--;
  if (include_stack_ptr == 0)
    yyterminate ();
  else
    yy_switch_to_buffer (include_stack[include_stack_ptr]);

  lineno = lineno_stack[include_stack_ptr];
  input_flags.sysrooted = sysrooted_stack[include_stack_ptr];

  return END;
}
	YY_BREAK
case 195:
YY_RULE_SETUP
#line 465 "ldlex.l"
lex_warn_invalid (" in script", yytext);
	YY_BREAK
case 196:
YY_RULE_SETUP
#line 466 "ldlex.l"
lex_warn_invalid (" in expression", yytext);
	YY_BREAK
case 197:
YY_RULE_SETUP
#line 468 "ldlex.l"
ECHO;
	YY_BREAK
#line 3149 "ldlex.c"

	case YY_END_OF_BUFFER:
		{
		/* Amount of text matched not including the EOB char. */
		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;

		/* Undo the effects of YY_DO_BEFORE_ACTION. */
		*yy_cp = (yy_hold_char);
		YY_RESTORE_YY_MORE_OFFSET

		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
			{
			/* We're scanning a new file or input source.  It's
			 * possible that this happened because the user
			 * just pointed yyin at a new source and called
			 * yylex().  If so, then we have to assure
			 * consistency between YY_CURRENT_BUFFER and our
			 * globals.  Here is the right place to do so, because
			 * this is the first action (other than possibly a
			 * back-up) that will match for the new input source.
			 */
			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
			}

		/* Note that here we test for yy_c_buf_p "<=" to the position
		 * of the first EOB in the buffer, since yy_c_buf_p will
		 * already have been incremented past the NUL character
		 * (since all states make transitions on EOB to the
		 * end-of-buffer state).  Contrast this with the test
		 * in input().
		 */
		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
			{ /* This was really a NUL. */
			yy_state_type yy_next_state;

			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;

			yy_current_state = yy_get_previous_state(  );

			/* Okay, we're now positioned to make the NUL
			 * transition.  We couldn't have
			 * yy_get_previous_state() go ahead and do it
			 * for us because it doesn't know how to deal
			 * with the possibility of jamming (and we don't
			 * want to build jamming into it because then it
			 * will run more slowly).
			 */

			yy_next_state = yy_try_NUL_trans( yy_current_state );

			yy_bp = (yytext_ptr) + YY_MORE_ADJ;

			if ( yy_next_state )
				{
				/* Consume the NUL. */
				yy_cp = ++(yy_c_buf_p);
				yy_current_state = yy_next_state;
				goto yy_match;
				}

			else
				{
				yy_cp = (yy_c_buf_p);
				goto yy_find_action;
				}
			}

		else switch ( yy_get_next_buffer(  ) )
			{
			case EOB_ACT_END_OF_FILE:
				{
				(yy_did_buffer_switch_on_eof) = 0;

				if ( yywrap( ) )
					{
					/* Note: because we've taken care in
					 * yy_get_next_buffer() to have set up
					 * yytext, we can now set up
					 * yy_c_buf_p so that if some total
					 * hoser (like flex itself) wants to
					 * call the scanner after we return the
					 * YY_NULL, it'll still work - another
					 * YY_NULL will get returned.
					 */
					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;

					yy_act = YY_STATE_EOF(YY_START);
					goto do_action;
					}

				else
					{
					if ( ! (yy_did_buffer_switch_on_eof) )
						YY_NEW_FILE;
					}
				break;
				}

			case EOB_ACT_CONTINUE_SCAN:
				(yy_c_buf_p) =
					(yytext_ptr) + yy_amount_of_matched_text;

				yy_current_state = yy_get_previous_state(  );

				yy_cp = (yy_c_buf_p);
				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
				goto yy_match;

			case EOB_ACT_LAST_MATCH:
				(yy_c_buf_p) =
				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];

				yy_current_state = yy_get_previous_state(  );

				yy_cp = (yy_c_buf_p);
				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
				goto yy_find_action;
			}
		break;
		}

	default:
		YY_FATAL_ERROR(
			"fatal flex scanner internal error--no action found" );
	} /* end of action switch */
		} /* end of scanning one token */
} /* end of yylex */

/* yy_get_next_buffer - try to read in a new buffer
 *
 * Returns a code representing an action:
 *	EOB_ACT_LAST_MATCH -
 *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
 *	EOB_ACT_END_OF_FILE - end of file
 */
static int yy_get_next_buffer (void)
{
    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
	register char *source = (yytext_ptr);
	register int number_to_move, i;
	int ret_val;

	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
		YY_FATAL_ERROR(
		"fatal flex scanner internal error--end of buffer missed" );

	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
		{ /* Don't try to fill the buffer, so this is an EOF. */
		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
			{
			/* We matched a single character, the EOB, so
			 * treat this as a final EOF.
			 */
			return EOB_ACT_END_OF_FILE;
			}

		else
			{
			/* We matched some text prior to the EOB, first
			 * process it.
			 */
			return EOB_ACT_LAST_MATCH;
			}
		}

	/* Try to read more data. */

	/* First move last chars to start of buffer. */
	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;

	for ( i = 0; i < number_to_move; ++i )
		*(dest++) = *(source++);

	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
		/* don't do the read, it's not guaranteed to return an EOF,
		 * just force an EOF
		 */
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;

	else
		{
			yy_size_t num_to_read =
			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;

		while ( num_to_read <= 0 )
			{ /* Not enough room in the buffer - grow it. */

			/* just a shorter name for the current buffer */
			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;

			int yy_c_buf_p_offset =
				(int) ((yy_c_buf_p) - b->yy_ch_buf);

			if ( b->yy_is_our_buffer )
				{
				yy_size_t new_size = b->yy_buf_size * 2;

				if ( new_size <= 0 )
					b->yy_buf_size += b->yy_buf_size / 8;
				else
					b->yy_buf_size *= 2;

				b->yy_ch_buf = (char *)
					/* Include room in for 2 EOB chars. */
					yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
				}
			else
				/* Can't grow it, we don't own it. */
				b->yy_ch_buf = 0;

			if ( ! b->yy_ch_buf )
				YY_FATAL_ERROR(
				"fatal error - scanner input buffer overflow" );

			(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];

			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
						number_to_move - 1;

			}

		if ( num_to_read > YY_READ_BUF_SIZE )
			num_to_read = YY_READ_BUF_SIZE;

		/* Read in more data. */
		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
			(yy_n_chars), num_to_read );

		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
		}

	if ( (yy_n_chars) == 0 )
		{
		if ( number_to_move == YY_MORE_ADJ )
			{
			ret_val = EOB_ACT_END_OF_FILE;
			yyrestart(yyin  );
			}

		else
			{
			ret_val = EOB_ACT_LAST_MATCH;
			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
				YY_BUFFER_EOF_PENDING;
			}
		}

	else
		ret_val = EOB_ACT_CONTINUE_SCAN;

	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
		/* Extend the array by 50%, plus the number we really need. */
		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
	}

	(yy_n_chars) += number_to_move;
	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;

	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];

	return ret_val;
}

/* yy_get_previous_state - get the state just before the EOB char was reached */

    static yy_state_type yy_get_previous_state (void)
{
	register yy_state_type yy_current_state;
	register char *yy_cp;
    
	yy_current_state = (yy_start);

	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
		{
		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
		if ( yy_accept[yy_current_state] )
			{
			(yy_last_accepting_state) = yy_current_state;
			(yy_last_accepting_cpos) = yy_cp;
			}
		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
			{
			yy_current_state = (int) yy_def[yy_current_state];
			if ( yy_current_state >= 1751 )
				yy_c = yy_meta[(unsigned int) yy_c];
			}
		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
		}

	return yy_current_state;
}

/* yy_try_NUL_trans - try to make a transition on the NUL character
 *
 * synopsis
 *	next_state = yy_try_NUL_trans( current_state );
 */
    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
{
	register int yy_is_jam;
    	register char *yy_cp = (yy_c_buf_p);

	register YY_CHAR yy_c = 1;
	if ( yy_accept[yy_current_state] )
		{
		(yy_last_accepting_state) = yy_current_state;
		(yy_last_accepting_cpos) = yy_cp;
		}
	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
		{
		yy_current_state = (int) yy_def[yy_current_state];
		if ( yy_current_state >= 1751 )
			yy_c = yy_meta[(unsigned int) yy_c];
		}
	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
	yy_is_jam = (yy_current_state == 1750);

	return yy_is_jam ? 0 : yy_current_state;
}

#ifndef YY_NO_INPUT
#ifdef __cplusplus
    static int yyinput (void)
#else
    static int input  (void)
#endif

{
	int c;
    
	*(yy_c_buf_p) = (yy_hold_char);

	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
		{
		/* yy_c_buf_p now points to the character we want to return.
		 * If this occurs *before* the EOB characters, then it's a
		 * valid NUL; if not, then we've hit the end of the buffer.
		 */
		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
			/* This was really a NUL. */
			*(yy_c_buf_p) = '\0';

		else
			{ /* need more input */
			yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
			++(yy_c_buf_p);

			switch ( yy_get_next_buffer(  ) )
				{
				case EOB_ACT_LAST_MATCH:
					/* This happens because yy_g_n_b()
					 * sees that we've accumulated a
					 * token and flags that we need to
					 * try matching the token before
					 * proceeding.  But for input(),
					 * there's no matching to consider.
					 * So convert the EOB_ACT_LAST_MATCH
					 * to EOB_ACT_END_OF_FILE.
					 */

					/* Reset buffer status. */
					yyrestart(yyin );

					/*FALLTHROUGH*/

				case EOB_ACT_END_OF_FILE:
					{
					if ( yywrap( ) )
						return 0;

					if ( ! (yy_did_buffer_switch_on_eof) )
						YY_NEW_FILE;
#ifdef __cplusplus
					return yyinput();
#else
					return input();
#endif
					}

				case EOB_ACT_CONTINUE_SCAN:
					(yy_c_buf_p) = (yytext_ptr) + offset;
					break;
				}
			}
		}

	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
	*(yy_c_buf_p) = '\0';	/* preserve yytext */
	(yy_hold_char) = *++(yy_c_buf_p);

	return c;
}
#endif	/* ifndef YY_NO_INPUT */

/** Immediately switch to a different input stream.
 * @param input_file A readable stream.
 * 
 * @note This function does not reset the start condition to @c INITIAL .
 */
    void yyrestart  (FILE * input_file )
{
    
	if ( ! YY_CURRENT_BUFFER ){
        yyensure_buffer_stack ();
		YY_CURRENT_BUFFER_LVALUE =
            yy_create_buffer(yyin,YY_BUF_SIZE );
	}

	yy_init_buffer(YY_CURRENT_BUFFER,input_file );
	yy_load_buffer_state( );
}

/** Switch to a different input buffer.
 * @param new_buffer The new input buffer.
 * 
 */
    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
{
    
	/* TODO. We should be able to replace this entire function body
	 * with
	 *		yypop_buffer_state();
	 *		yypush_buffer_state(new_buffer);
     */
	yyensure_buffer_stack ();
	if ( YY_CURRENT_BUFFER == new_buffer )
		return;

	if ( YY_CURRENT_BUFFER )
		{
		/* Flush out information for old buffer. */
		*(yy_c_buf_p) = (yy_hold_char);
		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
		}

	YY_CURRENT_BUFFER_LVALUE = new_buffer;
	yy_load_buffer_state( );

	/* We don't actually know whether we did this switch during
	 * EOF (yywrap()) processing, but the only time this flag
	 * is looked at is after yywrap() is called, so it's safe
	 * to go ahead and always set it.
	 */
	(yy_did_buffer_switch_on_eof) = 1;
}

static void yy_load_buffer_state  (void)
{
    	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
	(yy_hold_char) = *(yy_c_buf_p);
}

/** Allocate and initialize an input buffer state.
 * @param file A readable stream.
 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
 * 
 * @return the allocated buffer state.
 */
    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
{
	YY_BUFFER_STATE b;
    
	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
	if ( ! b )
		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );

	b->yy_buf_size = size;

	/* yy_ch_buf has to be 2 characters longer than the size given because
	 * we need to put in 2 end-of-buffer characters.
	 */
	b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2  );
	if ( ! b->yy_ch_buf )
		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );

	b->yy_is_our_buffer = 1;

	yy_init_buffer(b,file );

	return b;
}

/** Destroy the buffer.
 * @param b a buffer created with yy_create_buffer()
 * 
 */
    void yy_delete_buffer (YY_BUFFER_STATE  b )
{
    
	if ( ! b )
		return;

	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;

	if ( b->yy_is_our_buffer )
		yyfree((void *) b->yy_ch_buf  );

	yyfree((void *) b  );
}

#ifndef __cplusplus
extern int isatty (int );
#endif /* __cplusplus */
    
/* Initializes or reinitializes a buffer.
 * This function is sometimes called more than once on the same buffer,
 * such as during a yyrestart() or at EOF.
 */
    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )

{
	int oerrno = errno;
    
	yy_flush_buffer(b );

	b->yy_input_file = file;
	b->yy_fill_buffer = 1;

    /* If b is the current buffer, then yy_init_buffer was _probably_
     * called from yyrestart() or through yy_get_next_buffer.
     * In that case, we don't want to reset the lineno or column.
     */
    if (b != YY_CURRENT_BUFFER){
        b->yy_bs_lineno = 1;
        b->yy_bs_column = 0;
    }

        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
    
	errno = oerrno;
}

/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
 * 
 */
    void yy_flush_buffer (YY_BUFFER_STATE  b )
{
    	if ( ! b )
		return;

	b->yy_n_chars = 0;

	/* We always need two end-of-buffer characters.  The first causes
	 * a transition to the end-of-buffer state.  The second causes
	 * a jam in that state.
	 */
	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;

	b->yy_buf_pos = &b->yy_ch_buf[0];

	b->yy_at_bol = 1;
	b->yy_buffer_status = YY_BUFFER_NEW;

	if ( b == YY_CURRENT_BUFFER )
		yy_load_buffer_state( );
}

/** Pushes the new state onto the stack. The new state becomes
 *  the current state. This function will allocate the stack
 *  if necessary.
 *  @param new_buffer The new state.
 *  
 */
void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
{
    	if (new_buffer == NULL)
		return;

	yyensure_buffer_stack();

	/* This block is copied from yy_switch_to_buffer. */
	if ( YY_CURRENT_BUFFER )
		{
		/* Flush out information for old buffer. */
		*(yy_c_buf_p) = (yy_hold_char);
		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
		}

	/* Only push if top exists. Otherwise, replace top. */
	if (YY_CURRENT_BUFFER)
		(yy_buffer_stack_top)++;
	YY_CURRENT_BUFFER_LVALUE = new_buffer;

	/* copied from yy_switch_to_buffer. */
	yy_load_buffer_state( );
	(yy_did_buffer_switch_on_eof) = 1;
}

/** Removes and deletes the top of the stack, if present.
 *  The next element becomes the new top.
 *  
 */
void yypop_buffer_state (void)
{
    	if (!YY_CURRENT_BUFFER)
		return;

	yy_delete_buffer(YY_CURRENT_BUFFER );
	YY_CURRENT_BUFFER_LVALUE = NULL;
	if ((yy_buffer_stack_top) > 0)
		--(yy_buffer_stack_top);

	if (YY_CURRENT_BUFFER) {
		yy_load_buffer_state( );
		(yy_did_buffer_switch_on_eof) = 1;
	}
}

/* Allocates the stack if it does not exist.
 *  Guarantees space for at least one push.
 */
static void yyensure_buffer_stack (void)
{
	yy_size_t num_to_alloc;
    
	if (!(yy_buffer_stack)) {

		/* First allocation is just for 2 elements, since we don't know if this
		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
		 * immediate realloc on the next call.
         */
		num_to_alloc = 1;
		(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
								(num_to_alloc * sizeof(struct yy_buffer_state*)
								);
		if ( ! (yy_buffer_stack) )
			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
								  
		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
				
		(yy_buffer_stack_max) = num_to_alloc;
		(yy_buffer_stack_top) = 0;
		return;
	}

	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){

		/* Increase the buffer to prepare for a possible push. */
		int grow_size = 8 /* arbitrary grow size */;

		num_to_alloc = (yy_buffer_stack_max) + grow_size;
		(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
								((yy_buffer_stack),
								num_to_alloc * sizeof(struct yy_buffer_state*)
								);
		if ( ! (yy_buffer_stack) )
			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );

		/* zero only the new slots.*/
		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
		(yy_buffer_stack_max) = num_to_alloc;
	}
}

/** Setup the input buffer state to scan directly from a user-specified character buffer.
 * @param base the character buffer
 * @param size the size in bytes of the character buffer
 * 
 * @return the newly allocated buffer state object. 
 */
YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
{
	YY_BUFFER_STATE b;
    
	if ( size < 2 ||
	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
	     base[size-1] != YY_END_OF_BUFFER_CHAR )
		/* They forgot to leave room for the EOB's. */
		return 0;

	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
	if ( ! b )
		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );

	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
	b->yy_buf_pos = b->yy_ch_buf = base;
	b->yy_is_our_buffer = 0;
	b->yy_input_file = 0;
	b->yy_n_chars = b->yy_buf_size;
	b->yy_is_interactive = 0;
	b->yy_at_bol = 1;
	b->yy_fill_buffer = 0;
	b->yy_buffer_status = YY_BUFFER_NEW;

	yy_switch_to_buffer(b  );

	return b;
}

/** Setup the input buffer state to scan a string. The next call to yylex() will
 * scan from a @e copy of @a str.
 * @param yystr a NUL-terminated string to scan
 * 
 * @return the newly allocated buffer state object.
 * @note If you want to scan bytes that may contain NUL values, then use
 *       yy_scan_bytes() instead.
 */
YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
{
    
	return yy_scan_bytes(yystr,strlen(yystr) );
}

/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
 * scan from a @e copy of @a bytes.
 * @param bytes the byte buffer to scan
 * @param len the number of bytes in the buffer pointed to by @a bytes.
 * 
 * @return the newly allocated buffer state object.
 */
YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
{
	YY_BUFFER_STATE b;
	char *buf;
	yy_size_t n, i;
    
	/* Get memory for full buffer, including space for trailing EOB's. */
	n = _yybytes_len + 2;
	buf = (char *) yyalloc(n  );
	if ( ! buf )
		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );

	for ( i = 0; i < _yybytes_len; ++i )
		buf[i] = yybytes[i];

	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;

	b = yy_scan_buffer(buf,n );
	if ( ! b )
		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );

	/* It's okay to grow etc. this buffer, and we should throw it
	 * away when we're done.
	 */
	b->yy_is_our_buffer = 1;

	return b;
}

#ifndef YY_EXIT_FAILURE
#define YY_EXIT_FAILURE 2
#endif

static void yy_fatal_error (yyconst char* msg )
{
    	(void) fprintf( stderr, "%s\n", msg );
	exit( YY_EXIT_FAILURE );
}

/* Redefine yyless() so it works in section 3 code. */

#undef yyless
#define yyless(n) \
	do \
		{ \
		/* Undo effects of setting up yytext. */ \
        int yyless_macro_arg = (n); \
        YY_LESS_LINENO(yyless_macro_arg);\
		yytext[yyleng] = (yy_hold_char); \
		(yy_c_buf_p) = yytext + yyless_macro_arg; \
		(yy_hold_char) = *(yy_c_buf_p); \
		*(yy_c_buf_p) = '\0'; \
		yyleng = yyless_macro_arg; \
		} \
	while ( 0 )

/* Accessor  methods (get/set functions) to struct members. */

/** Get the current line number.
 * 
 */
int yyget_lineno  (void)
{
        
    return yylineno;
}

/** Get the input stream.
 * 
 */
FILE *yyget_in  (void)
{
        return yyin;
}

/** Get the output stream.
 * 
 */
FILE *yyget_out  (void)
{
        return yyout;
}

/** Get the length of the current token.
 * 
 */
yy_size_t yyget_leng  (void)
{
        return yyleng;
}

/** Get the current token.
 * 
 */

char *yyget_text  (void)
{
        return yytext;
}

/** Set the current line number.
 * @param line_number
 * 
 */
void yyset_lineno (int  line_number )
{
    
    yylineno = line_number;
}

/** Set the input stream. This does not discard the current
 * input buffer.
 * @param in_str A readable stream.
 * 
 * @see yy_switch_to_buffer
 */
void yyset_in (FILE *  in_str )
{
        yyin = in_str ;
}

void yyset_out (FILE *  out_str )
{
        yyout = out_str ;
}

int yyget_debug  (void)
{
        return yy_flex_debug;
}

void yyset_debug (int  bdebug )
{
        yy_flex_debug = bdebug ;
}

static int yy_init_globals (void)
{
        /* Initialization is the same as for the non-reentrant scanner.
     * This function is called from yylex_destroy(), so don't allocate here.
     */

    (yy_buffer_stack) = 0;
    (yy_buffer_stack_top) = 0;
    (yy_buffer_stack_max) = 0;
    (yy_c_buf_p) = (char *) 0;
    (yy_init) = 0;
    (yy_start) = 0;

/* Defined in main.c */
#ifdef YY_STDINIT
    yyin = stdin;
    yyout = stdout;
#else
    yyin = (FILE *) 0;
    yyout = (FILE *) 0;
#endif

    /* For future reference: Set errno on error, since we are called by
     * yylex_init()
     */
    return 0;
}

/* yylex_destroy is for both reentrant and non-reentrant scanners. */
int yylex_destroy  (void)
{
    
    /* Pop the buffer stack, destroying each element. */
	while(YY_CURRENT_BUFFER){
		yy_delete_buffer(YY_CURRENT_BUFFER  );
		YY_CURRENT_BUFFER_LVALUE = NULL;
		yypop_buffer_state();
	}

	/* Destroy the stack itself. */
	yyfree((yy_buffer_stack) );
	(yy_buffer_stack) = NULL;

    /* Reset the globals. This is important in a non-reentrant scanner so the next time
     * yylex() is called, initialization will occur. */
    yy_init_globals( );

    return 0;
}

/*
 * Internal utility routines.
 */

#ifndef yytext_ptr
static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
{
	register int i;
	for ( i = 0; i < n; ++i )
		s1[i] = s2[i];
}
#endif

#ifdef YY_NEED_STRLEN
static int yy_flex_strlen (yyconst char * s )
{
	register int n;
	for ( n = 0; s[n]; ++n )
		;

	return n;
}
#endif

void *yyalloc (yy_size_t  size )
{
	return (void *) malloc( size );
}

void *yyrealloc  (void * ptr, yy_size_t  size )
{
	/* The cast to (char *) in the following accommodates both
	 * implementations that use char* generic pointers, and those
	 * that use void* generic pointers.  It works with the latter
	 * because both ANSI C and C++ allow castless assignment from
	 * any pointer type to void*, and deal with argument conversions
	 * as though doing an assignment.
	 */
	return (void *) realloc( (char *) ptr, size );
}

void yyfree (void * ptr )
{
	free( (char *) ptr );	/* see yyrealloc() for (char *) cast */
}

#define YYTABLES_NAME "yytables"

#line 468 "ldlex.l"




/* Switch flex to reading script file NAME, open on FILE,
   saving the current input info on the include stack.  */

void
lex_push_file (FILE *file, const char *name, unsigned int sysrooted)
{
  if (include_stack_ptr >= MAX_INCLUDE_DEPTH)
    {
      einfo ("%F:includes nested too deeply\n");
    }
  file_name_stack[include_stack_ptr] = name;
  lineno_stack[include_stack_ptr] = lineno;
  sysrooted_stack[include_stack_ptr] = input_flags.sysrooted;
  include_stack[include_stack_ptr] = YY_CURRENT_BUFFER;

  include_stack_ptr++;
  lineno = 1;
  input_flags.sysrooted = sysrooted;
  yyin = file;
  yy_switch_to_buffer (yy_create_buffer (yyin, YY_BUF_SIZE));
}

/* Return a newly created flex input buffer containing STRING,
   which is SIZE bytes long.  */

static YY_BUFFER_STATE
yy_create_string_buffer (const char *string, size_t size)
{
  YY_BUFFER_STATE b;

  /* Calls to m-alloc get turned by sed into xm-alloc.  */
  b = malloc (sizeof (struct yy_buffer_state));
  b->yy_input_file = 0;
  b->yy_buf_size = size;

  /* yy_ch_buf has to be 2 characters longer than the size given because
     we need to put in 2 end-of-buffer characters.  */
  b->yy_ch_buf = malloc ((unsigned) (b->yy_buf_size + 3));

  b->yy_ch_buf[0] = '\n';
  strcpy (b->yy_ch_buf+1, string);
  b->yy_ch_buf[size+1] = YY_END_OF_BUFFER_CHAR;
  b->yy_ch_buf[size+2] = YY_END_OF_BUFFER_CHAR;
  b->yy_n_chars = size+1;
  b->yy_buf_pos = &b->yy_ch_buf[1];

  b->yy_is_our_buffer = 1;
  b->yy_is_interactive = 0;
  b->yy_at_bol = 1;
  b->yy_fill_buffer = 0;

  /* flex 2.4.7 changed the interface.  FIXME: We should not be using
     a flex internal interface in the first place!  */
#ifdef YY_BUFFER_NEW
  b->yy_buffer_status = YY_BUFFER_NEW;
#else
  b->yy_eof_status = EOF_NOT_SEEN;
#endif

  return b;
}

/* Switch flex to reading from STRING, saving the current input info
   on the include stack.  */

void
lex_redirect (const char *string, const char *fake_filename, unsigned int count)
{
  YY_BUFFER_STATE tmp;

  yy_init = 0;
  if (include_stack_ptr >= MAX_INCLUDE_DEPTH)
    {
      einfo("%F: macros nested too deeply\n");
    }
  file_name_stack[include_stack_ptr] = fake_filename;
  lineno_stack[include_stack_ptr] = lineno;
  include_stack[include_stack_ptr] = YY_CURRENT_BUFFER;
  include_stack_ptr++;
  lineno = count;
  tmp = yy_create_string_buffer (string, strlen (string));
  yy_switch_to_buffer (tmp);
}

/* Functions to switch to a different flex start condition,
   saving the current start condition on `state_stack'.  */

static int state_stack[MAX_INCLUDE_DEPTH * 2];
static int *state_stack_p = state_stack;

void
ldlex_script (void)
{
  *(state_stack_p)++ = yy_start;
  BEGIN (SCRIPT);
}

void
ldlex_mri_script (void)
{
  *(state_stack_p)++ = yy_start;
  BEGIN (MRI);
}

void
ldlex_version_script (void)
{
  *(state_stack_p)++ = yy_start;
  BEGIN (VERS_START);
}

void
ldlex_version_file (void)
{
  *(state_stack_p)++ = yy_start;
  BEGIN (VERS_SCRIPT);
}

void
ldlex_defsym (void)
{
  *(state_stack_p)++ = yy_start;
  BEGIN (DEFSYMEXP);
}

void
ldlex_expression (void)
{
  *(state_stack_p)++ = yy_start;
  BEGIN (EXPRESSION);
}

void
ldlex_both (void)
{
  *(state_stack_p)++ = yy_start;
  BEGIN (BOTH);
}

void
ldlex_popstate (void)
{
  yy_start = *(--state_stack_p);
}

/* Return the current file name, or the previous file if no file is
   current.  */

const char*
ldlex_filename (void)
{
  return file_name_stack[include_stack_ptr - (include_stack_ptr != 0)];
}


/* Place up to MAX_SIZE characters in BUF and return
   either the number of characters read, or 0 to indicate EOF.  */

static int
yy_input (char *buf, int max_size)
{
  int result = 0;
  if (YY_CURRENT_BUFFER->yy_input_file)
    {
      if (yyin)
	{
	  result = fread (buf, 1, max_size, yyin);
	  if (result < max_size && ferror (yyin))
	    einfo ("%F%P: read in flex scanner failed\n");
	}
    }
  return result;
}

/* Eat the rest of a C-style comment.  */

static void
comment (void)
{
  int c;

  while (1)
  {
    c = input();
    while (c != '*' && c != EOF)
    {
      if (c == '\n')
	lineno++;
      c = input();
    }

    if (c == '*')
    {
      c = input();
      while (c == '*')
       c = input();
      if (c == '/')
       break;			/* found the end */
    }

    if (c == '\n')
      lineno++;

    if (c == EOF)
    {
      einfo( "%F%P: EOF in comment\n");
      break;
    }
  }
}

/* Warn the user about a garbage character WHAT in the input
   in context WHERE.  */

static void
lex_warn_invalid (char *where, char *what)
{
  char buf[5];

  /* If we have found an input file whose format we do not recognize,
     and we are therefore treating it as a linker script, and we find
     an invalid character, then most likely this is a real object file
     of some different format.  Treat it as such.  */
  if (ldfile_assumed_script)
    {
      bfd_set_error (bfd_error_file_not_recognized);
      einfo ("%F%s: file not recognized: %E\n", ldlex_filename ());
    }

  if (! ISPRINT (*what))
    {
      sprintf (buf, "\\%03o", *(unsigned char *) what);
      what = buf;
    }

  einfo ("%P:%S: ignoring invalid character `%s'%s\n", NULL, what, where);
}

