
#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;
#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 = (size_t) (yy_cp - yy_bp); \
	(yy_hold_char) = *yy_cp; \
	*yy_cp = '\0'; \
	(yy_c_buf_p) = yy_cp;

#define YY_NUM_RULES 190
#define YY_END_OF_BUFFER 191
/* 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[1593] =
    {   0,
        0,    0,  170,  170,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,  191,  190,
      188,  173,  172,   32,  188,  170,   38,   29,   44,   43,
       34,   35,   28,   36,  170,   37,    8,    8,   45,   46,
       39,   40,   27,   33,  170,  170,  170,  170,  170,  170,
      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
      170,  170,  170,  170,   10,    9,  170,  115,  113,  170,
       42,   30,   41,   31,  189,  173,   32,  189,  168,   38,
       29,   44,   43,   34,   35,   28,   36,  168,   37,    8,
        8,   45,   46,   39,   40,   27,   33,  168,  168,  168,

      168,  168,  168,  168,  168,  168,  168,  168,  168,  168,
      168,  168,   10,    9,  168,  168,   42,   30,   41,   31,
      166,   36,  166,   37,    8,    8,  166,  166,  166,  166,
      166,  166,  166,  166,  166,  166,  166,  166,  166,  166,
      166,  166,  166,  166,  166,  166,  166,  115,  113,  166,
       31,    4,    3,    2,    4,    5,  127,   32,  126,  165,
       34,   35,   28,   36,  165,   37,    8,    8,   45,   46,
       40,   33,  165,  165,  165,  165,  165,  165,  165,  165,
      165,  165,  165,  165,   10,    9,  165,  165,  165,  165,
      165,  165,  165,  165,  165,  165,  165,   31,  187,  185,

      186,  188,  180,  179,  174,  181,  182,  178,  178,  178,
      178,  183,  184,  173,  170,   15,    0,  171,    8,   26,
       24,   22,   20,   21,    1,   23,    8,    8,  170,   18,
       17,   14,   16,   19,  170,  170,  170,  170,  170,  119,
      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
      170,  170,  170,  170,  170,  170,  170,   25,   13,   15,
      168,    6,   22,   20,   21,    0,    1,   23,    8,    0,

        7,    7,    8,    7,   14,  168,    7,    7,    7,  168,
      168,  119,    7,  168,  168,    7,  168,  168,  168,    7,
      168,  168,  168,  168,  168,  168,  168,  168,  168,  168,
      168,  168,  168,  168,  168,  168,  168,    7,  168,  166,
        8,    0,   23,    8,    0,  166,  166,  166,  166,  166,
      119,  166,  166,  166,  166,  166,  166,  166,  166,  166,
      166,  166,  166,  166,  166,  166,  166,  166,  166,  166,
      166,  166,  166,  166,  166,  166,  166,  166,  166,  166,
      166,  166,  166,  166,  166,  166,  166,  166,  166,  166,
      166,  166,  166,  166,  166,  166,  166,  166,  166,    4,

        4,  126,  126,  165,    6,  128,   22,  129,  165,    7,
        7,    7,  165,  165,  165,    7,  165,    7,    7,  165,
      165,  165,  165,  165,  165,  165,  165,    7,  165,  165,
      165,    7,  165,    7,    7,  165,  165,  165,  165,  165,
      165,  165,  165,  187,  186,  179,  178,    0,  178,  178,
      178,   11,   12,  170,  170,  170,  170,  170,  170,  170,
      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
      170,  170,  170,  170,  170,  170,   91,  170,  170,  170,
      170,  170,  170,  170,  170,  170,   70,  170,  170,  170,
      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,

      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
      170,  170,  170,  170,  116,  114,  170,    8,  169,    8,
      168,    7,  168,  168,  168,  168,  168,  168,  168,  168,
      168,  168,  168,  168,  168,  168,  168,  168,  168,   61,
       62,  168,  168,  168,  168,  168,  168,  168,  168,  168,
      168,  168,  168,  168,    8,  167,  166,  166,  166,  166,
      166,  166,  166,  166,  166,  166,  166,  166,  166,  166,
      166,  166,  166,  166,  166,  166,  166,  166,  166,   91,
      166,  166,  166,  166,  166,  166,  166,  166,  166,   70,
       61,  166,   62,  166,  166,  166,  166,  166,  166,  166,

      166,  166,  166,  166,  166,  166,  166,  166,  166,  166,
      166,  166,  166,  166,  166,  166,  166,  166,  166,  116,
      114,  166,    4,    8,  165,  165,  165,  165,  165,  130,
      165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
      165,  165,  165,  165,  165,  147,  165,  165,  165,  165,
      165,  165,  165,  165,  165,  165,  178,  178,  178,  170,
       58,  170,  170,  170,  170,  170,   52,  170,   98,  170,
      107,  170,  170,  170,  170,  170,  170,  170,   87,  170,
      170,  170,  170,  108,  170,  170,  170,  123,  170,  170,
       96,  170,   66,  170,  170,  170,  170,  170,  170,  170,

      170,  170,   94,  170,  170,  170,  170,  170,  170,  104,
      170,  170,  170,  170,  170,  170,  170,  170,  170,  168,
       58,  168,  168,  168,   52,  168,  168,  107,  168,  168,
      168,  168,  168,  168,  108,  123,  168,  168,   66,  168,
      168,  168,  168,  168,  168,  168,  168,  168,  168,  168,
      168,  166,   58,  166,  166,  166,  166,  166,   52,  166,
       98,  166,  107,  166,  166,  166,  166,  166,  166,  166,
       87,  166,  166,  166,  166,  108,  166,  166,  166,  123,
      166,  166,   96,  166,   66,  166,  166,  166,  166,  166,
      166,  166,  166,  166,   94,  166,  166,  166,  166,  166,

      166,  104,  166,  166,  166,  166,  166,  166,  166,  166,
      166,  165,  165,  165,  134,  142,  133,  165,  165,  144,
      137,  140,  165,  165,  145,  165,  165,  165,  165,  165,
      151,  159,  150,  165,  165,  162,  154,  157,  165,  165,
      163,  165,  165,  178,  178,  178,  170,   85,   54,  170,
      170,  170,   51,  170,  170,  170,  170,  106,   64,  170,
      170,   93,  170,   76,  170,  170,   75,  170,  170,  170,
      170,  170,  170,  170,  170,  170,  170,  170,  118,  170,
      170,  170,  170,  170,   97,  170,  170,  170,   95,  170,
      170,  170,  170,  170,  170,  170,  168,   54,  168,  168,

       51,  168,  168,  168,  106,  168,   76,  168,  168,  168,
      168,  168,  168,  168,  168,  168,  168,  168,  168,  168,
      168,  168,  166,   85,   54,  166,  166,  166,   51,  166,
      166,  166,  166,  106,   64,  166,  166,   93,  166,   76,
      166,  166,   75,  166,  166,  166,  166,  166,  166,  166,
      166,  166,  166,  166,  118,  166,  166,  166,  166,  166,
       97,  166,  166,  166,   95,  166,  166,  166,  166,  166,
      166,  166,  165,  135,  132,  165,  165,  144,  144,  139,
      165,  143,  165,  165,  152,  149,  165,  165,  162,  162,
      156,  165,  161,  165,  178,  178,  176,  170,  170,   63,

      170,   86,  170,  170,  170,  170,  170,  170,   65,  170,
      170,  170,   84,   53,  170,   47,  170,  170,  105,  170,
       49,   74,  170,  170,  170,  170,  170,  170,   71,  170,
      170,  170,  170,   92,   72,  170,  170,  170,  168,  168,
       63,  168,  168,  168,  168,  168,  168,   53,  168,  168,
      105,  168,   49,  168,  168,  168,   71,  168,  168,  168,
      168,  166,  166,   63,  166,   86,  166,  166,  166,  166,
      166,  166,   65,  166,  166,  166,   84,   53,  166,   47,
      166,  166,  105,  166,   49,   74,  166,  166,  166,  166,
      166,  166,   71,  166,  166,  166,  166,   92,   72,  166,

      166,  166,  165,  165,   65,  141,  138,  165,  165,  165,
      160,  158,  155,  165,  177,  175,  170,   60,  170,  170,
      170,  170,  170,   78,  170,  170,  117,  170,  170,  170,
       99,  170,  170,  101,  121,  170,  170,  170,  170,  170,
      170,  112,   88,  170,   50,  170,  170,  168,   60,  168,
      168,  168,   78,  168,  117,  168,  168,  168,  109,  121,
      168,  168,  112,  168,  168,  168,  166,   60,  166,  166,
      166,  166,  166,   78,  166,  166,  117,  166,  166,  166,
       99,  166,  166,  101,  121,  166,  166,  166,  166,  166,
      166,  112,   88,  166,   50,  166,  166,  165,  165,  165,

      165,  165,  165,  146,  170,  125,  170,  170,  170,  170,
      170,  170,   59,  170,  170,  170,  170,  170,  170,  170,
       83,  170,  170,  170,  120,  164,  170,  146,  168,  125,
      168,  168,   59,  168,  168,  168,  168,  168,  120,  164,
      168,  146,  166,  125,  166,  166,  166,  166,  166,  166,
       59,  166,  166,  166,  166,  166,  166,  166,   83,  166,
      166,  166,  120,  164,  166,  146,  131,  136,  164,  148,
      153,   77,  170,  170,  170,  170,  170,  170,  170,  170,
      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
       77,  168,  168,  168,  168,  168,  168,  168,  168,   77,

      166,  166,  166,  166,  166,  166,  166,  166,  166,  166,
      166,  166,  166,  166,  166,  166,  166,  166,  170,  170,
      170,  170,  170,  170,  170,  110,  111,  170,  170,  170,
      170,   73,  170,  170,  170,  170,  170,  168,  168,  168,
      110,  111,  168,  168,  168,  168,  166,  166,  166,  166,
      166,  166,  166,  110,  111,  166,  166,  166,  166,   73,
      166,  166,  166,  166,  166,  170,  170,  170,  170,  170,
      170,  100,   90,  170,  170,  170,  170,  170,  170,  170,
      170,  168,  168,  100,  168,  168,  168,  168,  166,  166,
      166,  166,  166,  166,  100,   90,  166,  166,  166,  166,

      166,  166,  166,  166,   80,  170,  170,  124,  170,  170,
      170,  170,   48,  170,  170,  170,  102,  170,  168,  124,
      168,  168,  168,  168,   80,  166,  166,  124,  166,  166,
      166,  166,   48,  166,  166,  166,  102,  166,  170,  170,
      170,  170,   89,  170,   69,  170,  170,  170,  168,  168,
       69,  168,  168,  166,  166,  166,  166,   89,  166,   69,
      166,  166,  166,  170,  170,  170,  170,  170,  170,  122,
       68,  170,   67,  168,  168,  168,  122,   68,   67,  166,
      166,  166,  166,  166,  166,  122,   68,  166,   67,  170,
      170,  170,  170,  170,  170,  170,  168,  168,  168,  166,

      166,  166,  166,  166,  166,  166,  170,  170,   57,  170,
      170,  170,  170,  168,   57,  168,  166,  166,   57,  166,
      166,  166,  166,  170,  170,  170,  170,  170,  103,  168,
      168,  166,  166,  166,  166,  166,  103,  170,   55,  170,
      170,  170,   55,  168,  166,   55,  166,  166,  166,  170,
      170,  170,  170,  168,  166,  166,  166,  166,  170,  170,
      170,  170,  168,  166,  166,  166,  166,   79,  170,  170,
      170,  168,   79,  166,  166,  166,   56,  170,  170,   56,
       56,  166,  166,   81,  170,   81,  166,  170,  166,   82,
       82,    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,   19,
       19,   19,   19,   19,   19,   19,   19,   20,   21,   22,
       23,   24,   25,    1,   26,   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,    1,   57,   58,   59,   60,

       61,   62,   63,   64,   65,   16,   66,   67,   68,   69,
       70,   71,   16,   72,   73,   74,   75,   16,   16,   76,
       16,   77,   78,   79,   80,   81,    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[82] =
    {   0,
        1,    1,    2,    3,    1,    1,    4,    1,    1,    1,
        1,    3,    5,    6,    7,    8,    9,   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[1617] =
    {   0,
        0,    0,    0,    0,   81,    0,  162,    0,  243,  323,
      403,    0,  271,  273,  484,  565,  646,  727, 2517, 2518,
     2518, 2514, 2518, 2492, 2509,  791, 2518,  260, 2518, 2518,
     2490, 2489,    0, 2488,    0,  247,  321,  492,    0, 2518,
      249, 2487,  257,    0,  255,  257,  253,  259,  262,  268,
     2466, 2471, 2468, 2476,  274,  280,  279,  315,  317, 2459,
     2474,  350, 2477, 2472,    0,    0, 2443, 2439, 2427, 2433,
     2518,  237, 2518,    0, 2518, 2495, 2473, 2490,  836, 2518,
      343, 2518, 2518, 2471, 2470, 2518,  289,    0,  341,  881,
      306, 2518, 2518,  295, 2469,  344, 2518,  940,  487,  506,

      565,  577,  571, 2448, 2451, 2459,  333,  345,  346,  476,
     2445,  488, 2518, 2518,  644, 2422, 2518,  290, 2518,    0,
      999,  477,    0,  362,  735,  747,  596,  511,  477,  567,
      349,  515, 2443, 2448, 2445, 2453,  517,  573,  594,  589,
      596, 2436, 2451,  645, 2454, 2449, 2420, 2416, 2404, 2410,
        0, 1044, 2518, 2518,    0, 2518, 2518, 2451, 2470, 1089,
     2449, 2448, 2518, 2447,    0, 2446,    0,  323, 2518,    0,
     2445, 2518, 1134,  635,  666,  647,  667,  671,  519, 2441,
     2423, 2419,  482, 2421, 2518, 2518,  685,  730,  732,  694,
      754,  250, 2406, 2390, 2386,  320, 2388,    0, 2457, 2518,

        0, 2446, 2518,    0, 2518, 2518, 2518, 2437,  505,  534,
      610, 2518, 2518, 2454,    0,    0, 2450, 2518,  736, 2518,
     2518,    0,    0,    0,    0,    0,  757,    0,    0, 2431,
     2518,    0, 2518, 2430, 2408, 2422, 2405, 2415,  594,    0,
     2417, 2408, 2406, 2400,  501, 2414, 2398, 2411, 2411, 2395,
      568, 2402, 2398, 2394, 2396, 2398,  798, 2404, 2394,  487,
     2391, 2393, 2381,  686, 2392, 2394, 2382, 2396, 2396, 2384,
     2397, 2390,  730, 2381, 2369, 2376, 2388, 2371, 2390, 2388,
     2370, 2370, 2369, 2338, 2341, 2346, 2331, 2518, 2518, 2518,
        0, 1193, 2518, 2518, 2518,    0, 2518, 2518,  582,  809,

        0, 2518, 2518,    0, 2518,  842,  845,  889,    0, 2373,
      724,    0,  917, 2367, 2365,  679,  949,  976, 2374, 2375,
     2362,  669, 2371, 2361, 2373, 2349, 2358, 2347,  668, 2358,
     2360, 2363, 2352, 2359, 2339, 2359, 2361,  995, 2310,    0,
     1244,    0,    0,  884,    0, 2342, 2356, 2339, 2349,  742,
        0, 2351, 2342, 2340, 2334,  738, 2348, 2332, 2345, 2345,
     2329,  733, 2336, 2332, 2328, 2330, 2332,  802, 2338, 2328,
      716,  751, 2328, 2326, 2315,  900, 2326, 2328, 2316, 2330,
     2330, 2318, 2331, 2324,  806, 2315, 2303, 2310, 2322, 2305,
     2324, 2322, 2304, 2304, 2303, 2272, 2275, 2280, 2265,    0,

     1295, 2338, 2518,    0, 1346,    0,    0,    0,  833,  888,
      841,    0, 2306,  928,  937, 2305, 2309, 2292, 2293, 2291,
     2308, 2295, 2303, 2304, 2302, 2303, 2282,  854, 2262,  969,
      982, 2261, 2265, 2250, 2251, 2249, 2264, 2252, 2259, 2260,
     2258, 2259, 2240, 2312,    0,    0, 2293, 2292,  690,  836,
      617, 2518, 2518, 2271, 2267, 2279, 2276, 2277, 2267, 2265,
     2275, 2275, 2272, 2257, 2250, 2273, 2272, 2263, 2268, 2252,
     2257, 2263, 2255, 2265, 2262, 2243,    0, 2251, 2247, 2252,
     2239, 2254, 2242, 2250, 2252, 2248,    0, 2239, 2233, 2234,
     2239, 2235, 2224, 2241, 2231, 2228, 2227, 2222, 2239, 2233,

     2223, 2220, 2226, 2220, 2232, 2216, 2232, 2233, 2215, 2231,
     2219, 2223, 2210, 2183,    0,    0, 2191,    0,    0,  998,
     2211, 1004, 2218, 2219, 2209, 2218, 2218, 2201, 2194, 2217,
     1049, 2214, 2204, 2194, 2202, 2198, 2196, 2204, 2206,    0,
        0, 2189, 2190, 2192, 2181, 2198, 2186, 2181, 2189, 2196,
     2197, 2198, 2153, 2161,    0,    0, 2181, 2177, 2189, 2186,
     2187, 2177, 2175, 2185, 2185, 2182, 2167, 2160, 2183, 2182,
     2173, 2178, 2162, 2167, 2173, 2165, 2175, 2172, 2153,    0,
     2161, 2157, 2162, 2149, 2164, 2152, 2160, 2162, 2158,    0,
        0, 2149,    0, 2143, 2144, 2149, 2145, 2134, 2151, 2141,

     2138, 2137, 2132, 2149, 2143, 2133, 2130, 2136, 2130, 2142,
     2126, 2142, 2143, 2125, 2141, 2129, 2133, 2120, 2093,    0,
        0, 2101,    0,    0, 2121,  651, 2130, 2129, 2117,    0,
     2127, 2118, 2110, 2125, 2123, 2122, 2114, 2105, 2106, 2109,
     2077,  866, 2085, 2084, 2073,    0, 2082, 2074, 2067, 2080,
     2078, 2077, 2070, 2062, 2063, 2065,  592,  681,  585, 2096,
        0, 2089, 2092, 2087, 2099, 2085,    0, 2091,    0, 2081,
        0, 2080, 2068, 2084, 2077, 2071, 2074, 2076,    0, 2073,
     2087, 2075, 2069,    0, 2087, 2068, 2069,    0, 2066, 2084,
        0, 2066,    0, 2068, 2067, 2080, 2049, 2070, 2057, 2065,

     2057, 2066,    0, 2059, 2070, 2063, 2066, 2050, 2054, 2037,
     2058, 2062, 2045, 2052, 2054, 2057, 2052, 2018, 2014, 2046,
        0, 2043, 2038, 2050,    0, 2043, 2033,    0, 2021, 2037,
     2030, 2028, 2032, 2026,    0,    0, 2026, 2044,    0, 2029,
     2042, 2011, 2032, 2028, 2030, 2033, 2022, 2027, 2023, 1992,
     1988, 2020,    0, 2013, 2016, 2011, 2023, 2009,    0, 2015,
        0, 2005,    0, 2004, 1992, 2008, 2001, 1995, 1998, 2000,
        0, 1997, 2011, 1999, 1993,    0, 2011, 1992, 1993,    0,
     1990, 2000,    0, 1973,    0, 1966, 1956, 1957, 1923, 1942,
     1929, 1934, 1917, 1917,    0, 1901, 1907, 1885, 1888, 1872,

      238,  309,  359,  462,  511,  535,  648,  685,  685,  667,
      690,  745,  753,  760,    0,    0,    0,  769,  788, 1414,
        0,    0,  773,  802,    0,  792,  812,  774,  771,  788,
        0,    0,    0,  787,  804, 1494,    0,    0,  801,  811,
        0,  806,  824,  864,  933,  868,  846,    0,  861,  859,
      875,  883,    0,  949,  894,  904,  926,    0,    0,  931,
      924,    0,  923,    0,  953,  949,    0,  942,  955,  962,
      945,  964,  985,  983,  980,  976,  978, 1009,    0, 1008,
      999, 1010, 1004, 1006,    0, 1015, 1023, 1025,    0, 1006,
     1019, 1027, 1020, 1027,  994, 1015, 1033, 1040, 1036, 1052,

        0, 1058, 1041, 1057,    0, 1059,    0, 1060, 1057, 1062,
     1048, 1066, 1062, 1058, 1072, 1070, 1061, 1078, 1084, 1077,
     1037, 1051, 1068,    0, 1081, 1077, 1093, 1094,    0, 1099,
     1096, 1083, 1098,    0,    0, 1100, 1091,    0, 1075,    0,
     1103, 1099,    0, 1089, 1102, 1107, 1087, 1094, 1113, 1111,
     1107, 1104, 1099, 1119,    0, 1125, 1116, 1123, 1117, 1119,
        0, 1128, 1139, 1142,    0, 1123, 1136, 1145, 1128, 1135,
     1101, 1115, 1132,    0, 1141, 1141, 1136,    0, 1574,    0,
     1154,    0, 1158, 1110,    0, 1118, 1118, 1114,    0, 1654,
        0, 1130,    0, 1133, 1177, 1180, 1179, 1156, 1171,    0,

     1174,    0, 1166, 1160, 1151, 1178, 1180, 1183,    0, 1186,
     1185, 1171,    0,    0, 1188,    0, 1174, 1180,    0, 1195,
        0, 1171, 1178, 1200, 1176, 1177, 1195, 1190, 1180, 1187,
     1201, 1198, 1208,    0,    0, 1202, 1168, 1187, 1199, 1214,
        0, 1219, 1210, 1226, 1228, 1228, 1230,    0, 1235, 1221,
        0, 1235,    0, 1217, 1238, 1224, 1220, 1240, 1246, 1205,
     1225, 1238, 1253,    0, 1256,    0, 1247, 1241, 1232, 1259,
     1261, 1261,    0, 1264, 1263, 1249,    0,    0, 1266,    0,
     1252, 1252,    0, 1267,    0, 1243, 1250, 1277, 1252, 1253,
     1272, 1270, 1260, 1267, 1281, 1278, 1288,    0,    0, 1288,

     1254, 1273, 1285, 1292,    0,    0,    0, 1289, 1261, 1266,
        0,    0,    0, 1263, 1318, 1319, 1310,    0, 1311, 1297,
     1315, 1304, 1313,    0, 1290, 1307,    0, 1292, 1306, 1307,
        0, 1295, 1336,    0, 1302, 1333, 1331, 1322, 1312, 1336,
     1314,    0,    0, 1332,    0, 1317, 1315, 1350,    0, 1351,
     1338, 1353,    0, 1330,    0, 1344, 1345, 1333,    0, 1334,
     1335, 1359,    0, 1354, 1333, 1331, 1366,    0, 1367, 1353,
     1371, 1360, 1369,    0, 1346, 1369,    0, 1354, 1368, 1370,
        0, 1361, 1401,    0, 1365, 1403, 1401, 1387, 1377, 1401,
     1384,    0,    0, 1402,    0, 1381, 1379, 1414, 1416, 1416,

     1386, 1388, 1388,    0, 1421,    0, 1406, 1425, 1415, 1423,
     1417, 1428,    0, 1427, 1415, 1416, 1420, 1428, 1425, 1429,
        0, 1420, 1435, 1440,    0,    0, 1406,    0, 1439,    0,
     1432, 1440,    0, 1442, 1430, 1441, 1431, 1446,    0,    0,
     1416,    0, 1449,    0, 1435, 1454, 1444, 1452, 1446, 1457,
        0, 1456, 1444, 1445, 1449, 1457, 1454, 1463,    0, 1457,
     1477, 1483,    0,    0, 1449,    0,    0,    0,    0,    0,
        0,    0, 1471, 1477, 1483, 1480, 1482, 1481, 1492, 1484,
     1497, 1483, 1493, 1494, 1486, 1485, 1505, 1496, 1508, 1478,
        0, 1506, 1503, 1507, 1499, 1506, 1496, 1516, 1486,    0,

     1504, 1510, 1516, 1514, 1512, 1511, 1521, 1513, 1526, 1512,
     1522, 1523, 1515, 1514, 1534, 1525, 1537, 1507, 1522, 1536,
     1528, 1531, 1529, 1532, 1527,    0,    0, 1544, 1543, 1558,
     1563,    0, 1564, 1562, 1558, 1555, 1534, 1561, 1564, 1558,
        0,    0, 1574, 1578, 1576, 1546, 1564, 1578, 1570, 1573,
     1571, 1574, 1569,    0,    0, 1581, 1577, 1587, 1591,    0,
     1592, 1590, 1586, 1583, 1562, 1579, 1596, 1580, 1596, 1588,
     1590,    0,    0, 1604, 1602, 1588, 1590, 1604, 1603, 1606,
     1576, 1593, 1609,    0, 1611, 1598, 1612, 1582, 1600, 1617,
     1601, 1617, 1609, 1611,    0,    0, 1624, 1622, 1613, 1618,

     1637, 1637, 1640, 1610,    0, 1627, 1617,    0, 1618, 1640,
     1636, 1652,    0, 1638, 1641, 1646,    0, 1614, 1631,    0,
     1658, 1644, 1647, 1619,    0, 1647, 1637,    0, 1638, 1655,
     1651, 1667,    0, 1653, 1656, 1661,    0, 1629, 1646, 1677,
     1678, 1666,    0, 1667,    0, 1664, 1672, 1638, 1686, 1674,
        0, 1670, 1642, 1661, 1692, 1693, 1682,    0, 1684,    0,
     1680, 1687, 1653, 1683, 1691, 1691, 1701, 1699, 1681,    0,
        0, 1708,    0, 1702, 1701, 1711,    0,    0,    0, 1698,
     1706, 1705, 1715, 1709, 1691,    0,    0, 1718,    0, 1699,
     1716, 1722, 1715, 1716, 1728, 1716, 1722, 1728, 1721, 1709,

     1726, 1732, 1725, 1726, 1738, 1726, 1728, 1735,    0, 1725,
     1729, 1733, 1726, 1740,    0, 1730, 1736, 1743,    0, 1733,
     1737, 1741, 1734, 1753, 1742, 1742, 1755, 1747,    0, 1746,
     1746, 1760, 1749, 1749, 1762, 1754,    0, 1752,    0, 1737,
     1768, 1755,    0, 1740, 1757,    0, 1742, 1773, 1760, 1764,
     1772, 1758, 1776, 1775, 1769, 1777, 1763, 1781, 1766, 1772,
     1778, 1787, 1775, 1771, 1777, 1783, 1792,    0, 1790, 1780,
     1776, 1793,    0, 1794, 1784, 1780,    0, 1787, 1793,    0,
        0, 1789, 1795,    0, 1790,    0, 1791, 1793, 1794,    0,
        0, 2518, 1833, 1843, 1853, 1863, 1873, 1881, 1891, 1898,

     1905, 1912, 1922, 1929, 1939, 1949, 1959, 1962, 1970, 1977,
     1894, 1984, 1994, 2004, 2014, 2024
    } ;

static yyconst flex_int16_t yy_def[1617] =
    {   0,
     1593, 1593, 1592,    3, 1592,    5, 1592,    7, 1594, 1594,
     1592,   11, 1595, 1595, 1596, 1596, 1597, 1597, 1592, 1592,
     1592, 1592, 1592, 1598, 1599, 1598, 1592, 1592, 1592, 1592,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1592,
     1592, 1598, 1592, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1592, 1592, 1592, 1598, 1592, 1592, 1592, 1599, 1600, 1592,
     1592, 1592, 1592, 1592, 1592, 1592, 1592, 1600, 1600, 1592,
       90, 1592, 1592, 1592, 1592, 1592, 1592, 1600,   98,   98,

       98,   98,   98, 1600, 1600, 1600, 1600, 1600, 1600, 1600,
     1600, 1600, 1592, 1592,   98, 1600, 1592, 1592, 1592, 1600,
     1601, 1592, 1601, 1601, 1592, 1592, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1602, 1592, 1592, 1602, 1592, 1592, 1592, 1603, 1604,
     1605, 1592, 1592, 1592, 1604, 1604,   90,   90, 1592, 1606,
     1592, 1592, 1604,  173,  173,  173,  173,  173, 1604, 1604,
     1604, 1604, 1604, 1604, 1592, 1592,  173,  173,  173,  173,
      173, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1592, 1592,

     1607, 1592, 1592, 1608, 1592, 1592, 1592, 1609, 1609, 1609,
     1609, 1592, 1592, 1592, 1598, 1598, 1599, 1592,   26, 1592,
     1592, 1598, 1598, 1598, 1598, 1598, 1598, 1598,   26, 1592,
     1592, 1598, 1592, 1592, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1592, 1592, 1592,
     1600, 1600, 1592, 1592, 1592, 1610, 1592, 1592,   90,   90,

      300, 1592, 1592, 1611, 1592,   98,   98,   98, 1600, 1600,
     1600, 1600,   98, 1600, 1600, 1600,   98,   98, 1600, 1600,
     1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600,
     1600, 1600, 1600, 1600, 1600, 1600, 1600,   98, 1600, 1601,
     1601, 1612, 1601, 1592, 1611, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1602,

     1602, 1603, 1592, 1604, 1604, 1605, 1605, 1606,  173,  173,
      173, 1604, 1604,  173,  173, 1604, 1604, 1604, 1604, 1604,
     1604, 1604, 1604, 1604, 1604, 1604, 1604,  173, 1604,  173,
      173, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604,
     1604, 1604, 1604, 1592, 1607, 1608, 1609, 1592, 1609, 1609,
     1609, 1592, 1592, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,

     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1600, 1610, 1611,
     1600,   98, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600,
       98, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600,
     1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600,
     1600, 1600, 1600, 1600, 1601, 1612, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,

     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1602, 1604, 1604, 1604, 1604, 1604, 1604, 1604,
     1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604,
     1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604,
     1604, 1604, 1604, 1604, 1604, 1604, 1609, 1609, 1609, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,

     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1600,
     1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600,
     1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600,
     1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600,
     1600, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,

     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1613,
     1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604,
     1604, 1604, 1604, 1604, 1604, 1614, 1604, 1604, 1604, 1604,
     1604, 1604, 1604, 1609, 1609, 1609, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1600, 1600, 1600, 1600,

     1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600,
     1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600,
     1600, 1600, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1604, 1604, 1604, 1604, 1604, 1615, 1613, 1604,
     1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1616, 1614,
     1604, 1604, 1604, 1604, 1609, 1609, 1609, 1598, 1598, 1598,

     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1600, 1600,
     1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600,
     1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600,
     1600, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,

     1601, 1601, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604,
     1604, 1604, 1604, 1604, 1609, 1609, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1600, 1600, 1600,
     1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600,
     1600, 1600, 1600, 1600, 1600, 1600, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1604, 1604, 1604,

     1604, 1604, 1604, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1600, 1600, 1600,
     1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600,
     1600, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1604, 1604, 1604, 1604, 1604,
     1604, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1601,

     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1600, 1600, 1600,
     1600, 1600, 1600, 1600, 1600, 1600, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601,

     1601, 1601, 1601, 1601, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1600, 1600,
     1600, 1600, 1600, 1600, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1598, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1600, 1600,
     1600, 1600, 1600, 1601, 1601, 1601, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1600, 1600, 1600, 1600, 1600, 1600, 1601,
     1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1598,
     1598, 1598, 1598, 1598, 1598, 1598, 1600, 1600, 1600, 1601,

     1601, 1601, 1601, 1601, 1601, 1601, 1598, 1598, 1598, 1598,
     1598, 1598, 1598, 1600, 1600, 1600, 1601, 1601, 1601, 1601,
     1601, 1601, 1601, 1598, 1598, 1598, 1598, 1598, 1598, 1600,
     1600, 1601, 1601, 1601, 1601, 1601, 1601, 1598, 1598, 1598,
     1598, 1598, 1600, 1600, 1601, 1601, 1601, 1601, 1601, 1598,
     1598, 1598, 1598, 1600, 1601, 1601, 1601, 1601, 1598, 1598,
     1598, 1598, 1600, 1601, 1601, 1601, 1601, 1598, 1598, 1598,
     1598, 1600, 1601, 1601, 1601, 1601, 1598, 1598, 1598, 1600,
     1601, 1601, 1601, 1598, 1598, 1601, 1601, 1598, 1601, 1598,
     1601,    0, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,

     1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
     1592, 1592, 1592, 1592, 1592, 1592
    } ;

static yyconst flex_int16_t yy_nxt[2600] =
    {   0,
       21,   22,   23,   24,   25,   21,   26,   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,   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,

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

      139,  140,  141,  142,  143,  144,  145,  123,  146,  123,
      123,  123,  123,  113,  123,  114,   75,  123,  147,  123,
      123,  123,  123,  123,  123,  123,  123,  123,  148,  123,
      123,  149,  123,  123,  150,  123,  123,  123,  123,  117,
      118,  119,  151,   75,   75,   20,   75,   75,   75,  152,
       75,   75,   75,   75,   75,  153,   75,  154,  225,  288,
      125,  126,   75,   75,   75,  156,   75,   75,  220,  226,
      230,  231,  199,  200,  199,  200,  201,  962,  201,  233,
      234,  235,  221,  236,  247,  237,  241,  202,  248,  202,
      242,  238,  245,  243,   75,  246,   75,   75,  239,  240,

      250,  252,  249,  259,  253,  261,  244,  254,  263,  262,
      251,  295,  288,  260,  436,  289,  230,  231,  264,  437,
       75,   75,   75,   75,   75,   20,   75,   75,   75,  152,
       75,   75,   75,   75,   75,  153,   75,  154,  227,  227,
      125,  126,   75,   75,   75,  156,   75,   75,  203,  269,
      203,  220,  297,  265,  302,  296,  228,  266,  228,  270,
      267,  268,  324,  298,  963,  221,  233,  234,  289,  229,
      326,  302,  325,  297,   75,  328,   75,   75,  327,  273,
      441,  302,  274,  275,  343,  329,  228,  361,  228,  276,
      277,  278,  964,  442,  279,  280,  229,  362,  302,  281,

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

      202,   21,   21,  205,  205,   21,   21,   21,   21,  227,
      227,  425,  485,  313,  330,  313,  356,  334,  331,  357,
      314,  335,  332,  315,  448,  486,  426,  228,  336,  228,
      291,  291,  313,  337,  313,   21,   21,   21,   21,  464,
      352,  465,  291,  342,  353,  316,  370,  354,  363,  291,
      291,  364,  420,  448,  365,  966,  371,  228,  421,  228,
      355,  206,   21,  207,   21,   21,  199,  200,   21,   21,
      201,  967,   21,   21,   21,   21,   21,   21,  205,   21,
      449,  202,   21,   21,  205,  205,   21,   21,   21,   21,
      317,  313,  358,  313,  318,  471,  359,  313,  372,  313,

      450,  291,  373,  313,  448,  313,  374,  291,  319,  291,
      360,  448,  472,  291,  291,  291,   21,   21,   21,   21,
      291,  291,  346,  375,  347,  320,  348,  377,  381,  448,
      302,  378,  349,  376,  379,  380,  448,  458,  382,  350,
      351,  846,  206,   21,  207,   21,   21,  199,  200,  459,
       25,  201,  844,   21,   21,   21,   21,  302,   21,  205,
      414,  411,  202,   21,   21,  205,  205,   21,   21,   21,
      313,  404,  313,  411,  385,  659,  813,  386,  387,  451,
      291,  968,  814,  404,  388,  389,  390,  291,  291,  391,
      392,  415,  411,  411,  393,  543,  535,  411,  416,  536,

      448,  338,  404,  404,  544,  417,  209,  404,  210,  448,
      419,  411,  211,  490,  969,  418,  491,  528,  970,  529,
      411,  404,  492,  212,   21,  213,   21,   21,  199,  200,
      404,   25,  201,  971,   21,   21,   21,   21,  845,   21,
      205,  588,  428,  202,   21,   21,  205,  205,   21,   21,
       21,  429,  344,  344,  589,  501,  411,  502,  411,  972,
      574,  503,  433,  657,  344,  344,  404,  524,  404,  434,
      303,  228,  303,  228,  227,  227,  567,  575,  568,  525,
      411,  973,  303,  345,  303,  561,  430,  209,  431,  210,
      404,  590,  228,  211,  228,  432,  974,  562,  975,  591,

      303,  228,  303,  228,  212,   21,  213,   21,  219,  219,
      345,  976,  303,  977,  303,  980,  219,  219,  219,  219,
      219,  219,  228,  435,  228,  478,  300,  300,  479,  581,
      480,  606,  582,  607,  583,  981,  982,  608,  481,  983,
      984,  482,  584,  985, 1592,  585, 1592,  219,  219,  219,
      219,  219,  219,  292,  292,  448,  986,  302,  987,  411,
      988,  292,  292,  292,  292,  292,  292,  411,  313,  404,
      313,  313,  991,  313, 1592,  992, 1592,  404,  291,  993,
      411,  291,  994,  448,  302,  291,  291,  448,  521,  291,
      404,  998,  292,  292,  292,  292,  292,  292,  299,  299,

      999,  344,  344, 1000, 1001,  658,  300,  301,  300,  301,
      300,  300, 1002,  302,  411,  313,  303,  522,  303,  303,
      302,  303,  829, 1005,  404,  291,  641,  595,  830,  304,
      596,  625,  291,  291,  997,  995,  597,  300,  301,  300,
      301,  300,  300,  313,  302,  313,  303, 1006,  303,  303,
      302,  303,  448,  291,  411, 1007,  304,  306,  306, 1008,
      291,  291, 1009,  411,  404,  306,  307,  306,  308,  306,
      306,  627,  309,  404, 1003,  313,  310,  313, 1010,  309,
      628, 1011, 1012,  311,  312,  291, 1013, 1014,  309,  996,
     1015, 1004,  291,  530, 1016,  411,  306,  313,  306,  313,

      306,  306,  313,  309,  313,  404,  531, 1017,  411,  309,
     1018, 1019,  291, 1020, 1021,  309,  341,  341,  404,  291,
      291,  313, 1022,  313,  341,  341,  341,  341,  341,  341,
      313,  291,  313,  303, 1023,  303, 1024, 1025,  291,  291,
      291,  643, 1026, 1027, 1028, 1029,  721,  291,  291, 1030,
     1031, 1032, 1033, 1034,  644,  341,  341,  341,  341,  341,
      341,  401,  401,  303, 1035,  303, 1036,  553, 1037,  401,
      401,  401,  401,  401,  401,  313, 1038,  313, 1039, 1040,
     1041, 1042,  730, 1043, 1044,  291, 1045, 1046, 1047, 1048,
     1049, 1050,  291,  291, 1051, 1052, 1053, 1054, 1055, 1056,

      401,  401,  401,  401,  401,  401,  405,  405, 1057, 1058,
     1059, 1060, 1061, 1062,  405,  405,  405,  405,  405,  405,
     1063, 1064, 1065, 1066, 1067, 1069, 1070, 1071, 1072, 1073,
     1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083,
     1084, 1068, 1085, 1086, 1087,  405,  405,  405,  405,  405,
      405,  409,  409, 1088, 1089, 1090, 1091, 1092, 1093,  409,
      410,  409,  411,  409,  409, 1094,  412, 1095, 1096, 1097,
      413, 1098, 1099,  412, 1100, 1101, 1102, 1103, 1104, 1105,
     1106, 1107,  412, 1108, 1109, 1110, 1111, 1112, 1113, 1114,
      409,  411,  409,  411,  409,  409,  448,  412,  448,  448,

     1117, 1118, 1119,  412, 1120, 1121, 1122, 1123, 1124,  412,
      292,  292, 1125, 1126, 1127, 1128, 1129, 1130,  292,  292,
      292,  292,  292,  292, 1131, 1132, 1133, 1134,  518, 1135,
      518, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144,
     1145, 1146, 1147, 1148, 1149, 1115, 1116, 1150, 1151,  292,
      292,  292,  292,  292,  292, 1152, 1153, 1154,  518, 1155,
      518,  341,  341, 1156, 1157, 1158, 1159, 1160, 1161,  341,
      341,  341,  341,  341,  341, 1162, 1163, 1164, 1165,  555,
     1166,  555, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174,
     1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184,

      341,  341,  341,  341,  341,  341, 1185, 1186, 1187,  555,
     1188,  555,  401,  401, 1189, 1190, 1191, 1192, 1193, 1194,
      401,  401,  401,  401,  401,  401, 1195, 1196, 1197, 1198,
      623, 1199,  623, 1200, 1201, 1202, 1203,  448,  448, 1204,
     1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214,
     1215,  401,  401,  401,  401,  401,  401, 1218, 1219, 1220,
      623, 1216,  623,  405,  405, 1221, 1217, 1222, 1223, 1224,
     1225,  405,  405,  405,  405,  405,  405, 1226, 1227, 1228,
     1229,  624, 1230,  624, 1231, 1232, 1233, 1234, 1235, 1236,
     1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246,

     1247, 1248,  405,  405,  405,  405,  405,  405, 1249, 1250,
     1251,  624, 1252,  624,  978,  978, 1253,  978,  978,  978,
     1256,  978,  978,  978,  978,  978, 1254,  978, 1257, 1258,
     1259, 1255, 1260, 1261,  978,  978,  978,  978,  978, 1262,
     1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272,
     1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282,
     1283, 1284, 1285, 1286, 1287, 1288, 1290, 1291,  978, 1292,
     1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1289, 1301,
     1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311,
     1312,  978,  978,  978,  989,  989, 1313,  989,  989,  989,

     1314,  989,  989,  989,  989,  989, 1315,  989, 1316, 1318,
     1319, 1320, 1321, 1322,  989,  989,  989,  989,  989, 1323,
     1324, 1317, 1325, 1326, 1328, 1329, 1330, 1331, 1332, 1333,
     1334, 1327, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1343,
     1344, 1345, 1346, 1347, 1348, 1349, 1342, 1350,  989, 1351,
     1352, 1353, 1354, 1356, 1357, 1358, 1359, 1360, 1361, 1362,
     1355, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371,
     1372,  989,  989,  989,  978,  978, 1373,  978,  978,  978,
     1374,  978,  978,  978,  978,  978, 1375,  978, 1376, 1377,
     1378, 1379, 1380, 1381,  978,  978,  978,  978,  978, 1382,

     1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392,
     1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402,
     1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410,  978, 1411,
     1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421,
     1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431,
     1432,  978,  978,  978,  989,  989, 1433,  989,  989,  989,
     1434,  989,  989,  989,  989,  989, 1435,  989, 1436, 1437,
     1438, 1439, 1440, 1441,  989,  989,  989,  989,  989, 1442,
     1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452,
     1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462,

     1463, 1464, 1465, 1468, 1469, 1470, 1466, 1471,  989, 1472,
     1473, 1474, 1477, 1478, 1479, 1475, 1480, 1481, 1484, 1467,
     1485, 1482, 1486, 1487, 1488, 1489, 1490, 1491, 1476, 1492,
     1493,  989,  989,  989, 1483, 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, 1582, 1583, 1584, 1585, 1586, 1587, 1588,
     1589, 1590, 1591,   20,   20,   20,   20,   20,   20,   20,
       20,   20,   20,  155,  155,  155,  155,  155,  155,  155,
      155,  155,  155,   21,   21,   21,   21,   21,   21,   21,
       21,   21,   21,  204,  204,  204,  204,  204,  204,  204,
      204,  204,  204,  208,  208,  208,  208,  208,  208,  208,
      208,  208,  208,  215,  215,  215,  215,  215,  215,  215,
      215,  217,  217,  217,  217,  217,  217,  217,  217,  217,

      217,  291,  291,  520,  291,  291,  291,  291,  340,  340,
      340,  340,  340,  340,  340,  400,  961,  960,  959,  400,
      400,  400,  402,  402,  402,  402,  402,  402,  402,  402,
      402,  402,  404,  404,  958,  404,  404,  404,  404,  406,
      957,  406,  406,  406,  406,  406,  406,  406,  406,  408,
      956,  408,  408,  408,  408,  408,  408,  408,  408,  445,
      955,  445,  445,  445,  445,  445,  445,  445,  445,  446,
      954,  446,  447,  447,  953,  952,  447,  447,  951,  447,
      519,  519,  950,  519,  519,  519,  519,  556,  556,  556,
      556,  556,  556,  556,  979,  949,  979,  979,  979,  979,

      979,  979,  979,  979,  990,  948,  990,  990,  990,  990,
      990,  990,  990,  990,  978,  947,  978,  978,  978,  978,
      978,  978,  978,  978,  989,  946,  989,  989,  989,  989,
      989,  989,  989,  989,  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,  868,  867,  866,  865,  864,  863,  862,  861,  860,
      859,  858,  857,  856,  855,  854,  853,  852,  851,  850,
      849,  848,  847,  843,  842,  841,  840,  839,  838,  837,
      836,  835,  834,  833,  832,  831,  828,  827,  826,  825,
      824,  823,  822,  821,  820,  819,  818,  817,  816,  815,
      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,  746,  745,  744,  743,
      742,  741,  740,  739,  738,  737,  736,  735,  734,  733,
      732,  731,  729,  728,  727,  726,  725,  724,  723,  722,
      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,  673,  672,  671,

      670,  669,  668,  667,  666,  665,  664,  663,  662,  661,
      660,  447,  448,  444,  656,  655,  654,  653,  652,  651,
      650,  649,  648,  647,  646,  645,  642,  640,  639,  638,
      637,  636,  635,  634,  633,  632,  631,  630,  629,  626,
      403,  622,  621,  620,  619,  618,  617,  616,  615,  614,
      613,  612,  611,  610,  609,  605,  604,  603,  602,  601,
      600,  599,  598,  594,  593,  592,  587,  586,  580,  579,
      578,  577,  576,  573,  572,  571,  570,  569,  566,  565,
      564,  563,  560,  559,  558,  557,  554,  552,  551,  550,
      549,  548,  547,  546,  545,  542,  541,  540,  539,  538,

      537,  534,  533,  532,  527,  526,  523,  517,  516,  515,
      514,  513,  512,  511,  510,  509,  508,  507,  506,  505,
      504,  500,  499,  498,  497,  496,  495,  494,  493,  489,
      488,  487,  484,  483,  477,  476,  475,  474,  473,  470,
      469,  468,  467,  466,  463,  462,  461,  460,  457,  456,
      455,  454,  453,  452,  218,  214,  448,  297,  444,  443,
      440,  439,  438,  427,  424,  423,  422,  305,  298,  295,
      294,  407,  403,  290,  399,  398,  397,  396,  395,  394,
      384,  383,  369,  368,  367,  366,  339,  333,  323,  322,
      321,  305,  294,  293,  218,  290,  214,  287,  286,  285,

      284,  283,  282,  272,  271,  258,  257,  256,  255,  232,
      224,  223,  222,  218,  216,  214, 1592,   19, 1592, 1592,
     1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
     1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
     1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
     1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
     1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
     1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
     1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
     1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592

    } ;

static yyconst flex_int16_t yy_chk[2600] =
    {   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,    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,    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,   28,   36,
       41,   41,   13,   13,   14,   14,   13,  801,   14,   43,
       43,   45,   28,   45,   48,   45,   46,   13,   48,   14,
       46,   45,   47,   46,    9,   47,    9,    9,   45,   45,

       49,   50,   48,   55,   50,   56,   46,   50,   57,   56,
       49,   87,  118,   55,  192,   72,   94,   94,   57,  192,
        9,    9,    9,   10,   10,   10,   10,   10,   10,   10,
       10,   10,   10,   10,   10,   10,   10,   10,   37,   37,
       10,   10,   10,   10,   10,   10,   10,   10,   13,   59,
       14,   81,   89,   58,   91,   87,   37,   58,   37,   59,
       58,   58,  107,   89,  802,   81,   96,   96,  118,   37,
      108,  168,  107,  124,   10,  109,   10,   10,  108,   62,
      196,   91,   62,   62,  124,  109,   37,  131,   37,   62,
       62,   62,  803,  196,   62,   62,   37,  131,  168,   62,

       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,   15,   15,   15,   15,   15,   15,
      804,   15,   15,   15,   15,   15,   15,   15,   15,  122,

       15,   15,   15,   15,   15,   15,   15,   15,   15,   38,
       38,  183,  260,   99,  110,   99,  129,  112,  110,  129,
       99,  112,  110,   99,  209,  260,  183,   38,  112,   38,
       99,   99,  100,  112,  100,   15,   15,   15,   15,  245,
      128,  245,  100,  122,  128,  100,  137,  128,  132,  100,
      100,  132,  179,  210,  132,  805,  137,   38,  179,   38,
      128,   15,   15,   15,   15,   16,   16,   16,   16,   16,
       16,  806,   16,   16,   16,   16,   16,   16,   16,   16,
      209,   16,   16,   16,   16,   16,   16,   16,   16,   16,
      101,  101,  130,  101,  101,  251,  130,  103,  138,  103,

      210,  101,  138,  102,  659,  102,  138,  103,  101,  101,
      130,  657,  251,  102,  103,  103,   16,   16,   16,   16,
      102,  102,  127,  139,  127,  102,  127,  140,  141,  211,
      299,  140,  127,  139,  140,  140,  451,  239,  141,  127,
      127,  659,   16,   16,   16,   16,   17,   17,   17,  239,
       17,   17,  657,   17,   17,   17,   17,  299,   17,   17,
      174,  174,   17,   17,   17,   17,   17,   17,   17,   17,
      115,  174,  115,  176,  144,  451,  626,  144,  144,  211,
      115,  807,  626,  176,  144,  144,  144,  115,  115,  144,
      144,  175,  175,  177,  144,  329,  322,  178,  175,  322,

      658,  115,  175,  177,  329,  177,   17,  178,   17,  449,
      178,  187,   17,  264,  808,  177,  264,  316,  809,  316,
      190,  187,  264,   17,   17,   17,   17,   18,   18,   18,
      190,   18,   18,  810,   18,   18,   18,   18,  658,   18,
       18,  371,  187,   18,   18,   18,   18,   18,   18,   18,
       18,  187,  125,  125,  371,  273,  188,  273,  189,  811,
      362,  273,  190,  449,  126,  126,  188,  311,  189,  190,
      125,  219,  125,  219,  227,  227,  356,  362,  356,  311,
      191,  812,  126,  125,  126,  350,  188,   18,  189,   18,
      191,  372,  227,   18,  227,  189,  813,  350,  814,  372,

      125,  219,  125,  219,   18,   18,   18,   18,   26,   26,
      125,  818,  126,  819,  126,  823,   26,   26,   26,   26,
       26,   26,  227,  191,  227,  257,  300,  300,  257,  368,
      257,  385,  368,  385,  368,  824,  826,  385,  257,  827,
      828,  257,  368,  829,  300,  368,  300,   26,   26,   26,
       26,   26,   26,   79,   79,  450,  830,  300,  834,  409,
      835,   79,   79,   79,   79,   79,   79,  411,  306,  409,
      306,  307,  839,  307,  300,  840,  300,  411,  306,  842,
      428,  307,  843,  844,  300,  306,  306,  846,  307,  307,
      428,  847,   79,   79,   79,   79,   79,   79,   90,   90,

      849,  344,  344,  850,  851,  450,   90,   90,   90,   90,
       90,   90,  852,   90,  410,  308,   90,  308,   90,  344,
       90,  344,  642,  855,  410,  308,  428,  376,  642,   90,
      376,  410,  308,  308,  846,  844,  376,   90,   90,   90,
       90,   90,   90,  313,   90,  313,   90,  856,   90,  344,
       90,  344,  845,  313,  414,  857,   90,   98,   98,  860,
      313,  313,  861,  415,  414,   98,   98,   98,   98,   98,
       98,  414,   98,  415,  854,  317,   98,  317,  863,   98,
      415,  865,  866,   98,   98,  317,  868,  869,   98,  845,
      870,  854,  317,  317,  871,  430,   98,   98,   98,   98,

       98,   98,  318,   98,  318,  430,  318,  872,  431,   98,
      873,  874,  318,  875,  876,   98,  121,  121,  431,  318,
      318,  338,  877,  338,  121,  121,  121,  121,  121,  121,
      522,  338,  522,  520,  878,  520,  880,  881,  338,  338,
      522,  430,  882,  883,  884,  886,  522,  522,  522,  887,
      888,  890,  891,  892,  431,  121,  121,  121,  121,  121,
      121,  152,  152,  520,  893,  520,  894,  338,  895,  152,
      152,  152,  152,  152,  152,  531,  896,  531,  897,  898,
      899,  900,  531,  902,  903,  531,  904,  906,  908,  909,
      910,  911,  531,  531,  912,  913,  914,  915,  916,  917,

      152,  152,  152,  152,  152,  152,  160,  160,  918,  919,
      920,  921,  922,  923,  160,  160,  160,  160,  160,  160,
      925,  926,  927,  928,  930,  931,  932,  933,  936,  937,
      939,  941,  942,  944,  945,  946,  947,  948,  949,  950,
      951,  930,  952,  953,  954,  160,  160,  160,  160,  160,
      160,  173,  173,  956,  957,  958,  959,  960,  962,  173,
      173,  173,  173,  173,  173,  963,  173,  964,  966,  967,
      173,  968,  969,  173,  970,  971,  972,  973,  975,  976,
      977,  981,  173,  983,  984,  986,  987,  988,  992,  994,
      173,  173,  173,  173,  173,  173,  995,  173,  997,  996,

      998,  999, 1001,  173, 1003, 1004, 1005, 1006, 1007,  173,
      292,  292, 1008, 1010, 1011, 1012, 1015, 1017,  292,  292,
      292,  292,  292,  292, 1018, 1020, 1022, 1023,  292, 1024,
      292, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033,
     1036, 1037, 1038, 1039, 1040,  995,  996, 1042, 1043,  292,
      292,  292,  292,  292,  292, 1044, 1045, 1046,  292, 1047,
      292,  341,  341, 1049, 1050, 1052, 1054, 1055, 1056,  341,
      341,  341,  341,  341,  341, 1057, 1058, 1059, 1060,  341,
     1061,  341, 1062, 1063, 1065, 1067, 1068, 1069, 1070, 1071,
     1072, 1074, 1075, 1076, 1079, 1081, 1082, 1084, 1086, 1087,

      341,  341,  341,  341,  341,  341, 1088, 1089, 1090,  341,
     1091,  341,  401,  401, 1092, 1093, 1094, 1095, 1096, 1097,
      401,  401,  401,  401,  401,  401, 1100, 1101, 1102, 1103,
      401, 1104,  401, 1108, 1109, 1110, 1114, 1115, 1116, 1117,
     1119, 1120, 1121, 1122, 1123, 1125, 1126, 1128, 1129, 1130,
     1132,  401,  401,  401,  401,  401,  401, 1135, 1136, 1137,
      401, 1133,  401,  405,  405, 1138, 1133, 1139, 1140, 1141,
     1144,  405,  405,  405,  405,  405,  405, 1146, 1147, 1148,
     1150,  405, 1151,  405, 1152, 1154, 1156, 1157, 1158, 1160,
     1161, 1162, 1164, 1165, 1166, 1167, 1169, 1170, 1171, 1172,

     1173, 1175,  405,  405,  405,  405,  405,  405, 1176, 1178,
     1179,  405, 1180,  405,  820,  820, 1182,  820,  820,  820,
     1185,  820,  820,  820,  820,  820, 1183,  820, 1186, 1187,
     1188, 1183, 1189, 1190,  820,  820,  820,  820,  820, 1191,
     1194, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1205,
     1207, 1208, 1209, 1210, 1211, 1212, 1214, 1215, 1216, 1217,
     1218, 1219, 1220, 1222, 1223, 1224, 1227, 1229,  820, 1231,
     1232, 1234, 1235, 1236, 1237, 1238, 1241, 1243, 1224, 1245,
     1246, 1247, 1248, 1249, 1250, 1252, 1253, 1254, 1255, 1256,
     1257,  820,  820,  820,  836,  836, 1258,  836,  836,  836,

     1260,  836,  836,  836,  836,  836, 1261,  836, 1262, 1265,
     1273, 1274, 1275, 1276,  836,  836,  836,  836,  836, 1277,
     1278, 1262, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286,
     1287, 1280, 1288, 1289, 1290, 1292, 1293, 1294, 1295, 1296,
     1297, 1298, 1299, 1301, 1302, 1303, 1295, 1304,  836, 1305,
     1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315,
     1308, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324,
     1325,  836,  836,  836,  979,  979, 1328,  979,  979,  979,
     1329,  979,  979,  979,  979,  979, 1330,  979, 1331, 1333,
     1334, 1335, 1336, 1337,  979,  979,  979,  979,  979, 1338,

     1339, 1340, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350,
     1351, 1352, 1353, 1356, 1357, 1358, 1359, 1361, 1362, 1363,
     1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371,  979, 1374,
     1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1385,
     1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1397,
     1398,  979,  979,  979,  990,  990, 1399,  990,  990,  990,
     1400,  990,  990,  990,  990,  990, 1401,  990, 1402, 1403,
     1404, 1406, 1407, 1409,  990,  990,  990,  990,  990, 1410,
     1411, 1412, 1414, 1415, 1416, 1418, 1419, 1421, 1422, 1423,
     1424, 1426, 1427, 1429, 1430, 1431, 1432, 1434, 1435, 1436,

     1438, 1439, 1440, 1441, 1442, 1444, 1440, 1446,  990, 1447,
     1448, 1449, 1450, 1452, 1453, 1449, 1454, 1455, 1456, 1440,
     1457, 1455, 1459, 1461, 1462, 1463, 1464, 1465, 1449, 1466,
     1467,  990,  990,  990, 1455, 1468, 1469, 1472, 1474, 1475,
     1476, 1480, 1481, 1482, 1483, 1484, 1485, 1488, 1490, 1491,
     1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501,
     1502, 1503, 1504, 1505, 1506, 1507, 1508, 1510, 1511, 1512,
     1513, 1514, 1516, 1517, 1518, 1520, 1521, 1522, 1523, 1524,
     1525, 1526, 1527, 1528, 1530, 1531, 1532, 1533, 1534, 1535,
     1536, 1538, 1540, 1541, 1542, 1544, 1545, 1547, 1548, 1549,

     1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559,
     1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1569, 1570,
     1571, 1572, 1574, 1575, 1576, 1578, 1579, 1582, 1583, 1585,
     1587, 1588, 1589, 1593, 1593, 1593, 1593, 1593, 1593, 1593,
     1593, 1593, 1593, 1594, 1594, 1594, 1594, 1594, 1594, 1594,
     1594, 1594, 1594, 1595, 1595, 1595, 1595, 1595, 1595, 1595,
     1595, 1595, 1595, 1596, 1596, 1596, 1596, 1596, 1596, 1596,
     1596, 1596, 1596, 1597, 1597, 1597, 1597, 1597, 1597, 1597,
     1597, 1597, 1597, 1598, 1598, 1598, 1598, 1598, 1598, 1598,
     1598, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599,

     1599, 1600, 1600, 1611, 1600, 1600, 1600, 1600, 1601, 1601,
     1601, 1601, 1601, 1601, 1601, 1602,  800,  799,  798, 1602,
     1602, 1602, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603,
     1603, 1603, 1604, 1604,  797, 1604, 1604, 1604, 1604, 1605,
      796, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1606,
      794, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1607,
      793, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1608,
      792, 1608, 1609, 1609,  791,  790, 1609, 1609,  789, 1609,
     1610, 1610,  788, 1610, 1610, 1610, 1610, 1612, 1612, 1612,
     1612, 1612, 1612, 1612, 1613,  787, 1613, 1613, 1613, 1613,

     1613, 1613, 1613, 1613, 1614,  786, 1614, 1614, 1614, 1614,
     1614, 1614, 1614, 1614, 1615,  784, 1615, 1615, 1615, 1615,
     1615, 1615, 1615, 1615, 1616,  782, 1616, 1616, 1616, 1616,
     1616, 1616, 1616, 1616,  781,  779,  778,  777,  775,  774,
      773,  772,  770,  769,  768,  767,  766,  765,  764,  762,
      760,  758,  757,  756,  755,  754,  752,  751,  750,  749,
      748,  747,  746,  745,  744,  743,  742,  741,  740,  738,
      737,  734,  733,  732,  731,  730,  729,  727,  726,  724,
      723,  722,  720,  719,  718,  717,  716,  715,  714,  713,
      712,  711,  710,  709,  708,  707,  706,  705,  704,  702,

      701,  700,  699,  698,  697,  696,  695,  694,  692,  690,
      689,  687,  686,  685,  683,  682,  681,  680,  678,  677,
      676,  675,  674,  673,  672,  670,  668,  666,  665,  664,
      663,  662,  660,  656,  655,  654,  653,  652,  651,  650,
      649,  648,  647,  645,  644,  643,  641,  640,  639,  638,
      637,  636,  635,  634,  633,  632,  631,  629,  628,  627,
      625,  622,  619,  618,  617,  616,  615,  614,  613,  612,
      611,  610,  609,  608,  607,  606,  605,  604,  603,  602,
      601,  600,  599,  598,  597,  596,  595,  594,  592,  589,
      588,  587,  586,  585,  584,  583,  582,  581,  579,  578,

      577,  576,  575,  574,  573,  572,  571,  570,  569,  568,
      567,  566,  565,  564,  563,  562,  561,  560,  559,  558,
      557,  554,  553,  552,  551,  550,  549,  548,  547,  546,
      545,  544,  543,  542,  539,  538,  537,  536,  535,  534,
      533,  532,  530,  529,  528,  527,  526,  525,  524,  523,
      521,  517,  514,  513,  512,  511,  510,  509,  508,  507,
      506,  505,  504,  503,  502,  501,  500,  499,  498,  497,
      496,  495,  494,  493,  492,  491,  490,  489,  488,  486,
      485,  484,  483,  482,  481,  480,  479,  478,  476,  475,
      474,  473,  472,  471,  470,  469,  468,  467,  466,  465,

      464,  463,  462,  461,  460,  459,  458,  457,  456,  455,
      454,  448,  447,  444,  443,  442,  441,  440,  439,  438,
      437,  436,  435,  434,  433,  432,  429,  427,  426,  425,
      424,  423,  422,  421,  420,  419,  418,  417,  416,  413,
      402,  399,  398,  397,  396,  395,  394,  393,  392,  391,
      390,  389,  388,  387,  386,  384,  383,  382,  381,  380,
      379,  378,  377,  375,  374,  373,  370,  369,  367,  366,
      365,  364,  363,  361,  360,  359,  358,  357,  355,  354,
      353,  352,  349,  348,  347,  346,  339,  337,  336,  335,
      334,  333,  332,  331,  330,  328,  327,  326,  325,  324,

      323,  321,  320,  319,  315,  314,  310,  287,  286,  285,
      284,  283,  282,  281,  280,  279,  278,  277,  276,  275,
      274,  272,  271,  270,  269,  268,  267,  266,  265,  263,
      262,  261,  259,  258,  256,  255,  254,  253,  252,  250,
      249,  248,  247,  246,  244,  243,  242,  241,  238,  237,
      236,  235,  234,  230,  217,  214,  208,  202,  199,  197,
      195,  194,  193,  184,  182,  181,  180,  171,  166,  164,
      162,  161,  159,  158,  150,  149,  148,  147,  146,  145,
      143,  142,  136,  135,  134,  133,  116,  111,  106,  105,
      104,   95,   85,   84,   78,   77,   76,   70,   69,   68,

       67,   64,   63,   61,   60,   54,   53,   52,   51,   42,
       34,   32,   31,   25,   24,   22,   19, 1592, 1592, 1592,
     1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
     1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
     1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
     1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
     1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
     1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
     1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
     1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592

    } ;

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, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
   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)

#define YY_NO_UNPUT

#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 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 1653 "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 118 "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 1860 "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 >= 1593 )
					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] != 2518 );

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

  if (include_stack_ptr == 0)
  {
    yyterminate ();
  }
  else
  {
    yy_switch_to_buffer (include_stack[include_stack_ptr]);
  }

  ldfile_input_filename = file_name_stack[include_stack_ptr - 1];
  lineno = lineno_stack[include_stack_ptr];

  return END;
}
	YY_BREAK
case 188:
YY_RULE_SETUP
#line 462 "ldlex.l"
lex_warn_invalid (" in script", yytext);
	YY_BREAK
case 189:
YY_RULE_SETUP
#line 463 "ldlex.l"
lex_warn_invalid (" in expression", yytext);
	YY_BREAK
case 190:
YY_RULE_SETUP
#line 465 "ldlex.l"
ECHO;
	YY_BREAK
#line 3027 "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 >= 1593 )
				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 >= 1593 )
			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 == 1592);

	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 465 "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)
{
  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;
  include_stack[include_stack_ptr] = YY_CURRENT_BUFFER;

  include_stack_ptr++;
  lineno = 1;
  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)
{
  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] = "redirect";
  lineno_stack[include_stack_ptr] = lineno;
  include_stack[include_stack_ptr] = YY_CURRENT_BUFFER;
  include_stack_ptr++;
  lineno = 1;
  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);
}


/* 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", ldfile_input_filename);
    }

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

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

