#include <sys/cdefs.h>
#ifndef lint
#if 0
static char yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
#else
__IDSTRING(yyrcsid, "$NetBSD: skeleton.c,v 1.14 1997/10/20 03:41:16 lukem Exp $");
#endif
#endif
#include <stdlib.h>
#define YYBYACC 1
#define YYMAJOR 1
#define YYMINOR 9
#define YYLEX yylex()
#define YYEMPTY -1
#define yyclearin (yychar=(YYEMPTY))
#define yyerrok (yyerrflag=0)
#define YYRECOVERING (yyerrflag!=0)
#define YYPREFIX "yy"
#line 76 "cfg.y"

#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <arpa/inet.h>
#include <string.h>
#include <errno.h>
#include "route_struct.h"
#include "globals.h"
#include "route.h"
#include "dprint.h"
#include "sr_module.h"
#include "modparam.h"
#include "ip_addr.h"
#include "resolve.h"
#include "socket_info.h"
#include "name_alias.h"
#include "ut.h"
#include "dset.h"
#include "items.h"
#include "blacklists.h"


#include "config.h"
#ifdef USE_TLS
#include "tls/tls_config.h"
#include "tls/tls_domain.h"
#endif

#ifdef DEBUG_DMALLOC
#include <dmalloc.h>
#endif

/* hack to avoid alloca usage in the generated C file (needed for compiler
 with no built in alloca, like icc*/
#undef _ALLOCA_H


extern int yylex();
static void yyerror(char* s);
static char* tmp;
static int i_tmp;
static void* cmd_tmp;
static struct socket_id* lst_tmp;
static int rt;  /* Type of route block for find_export */
static str* str_tmp;
static str s_tmp;
static struct ip_addr* ip_tmp;
static xl_spec_t *spec;
static struct bl_rule *bl_head = 0;
static struct bl_rule *bl_tail = 0;

action_elem_t elems[MAX_ACTION_ELEMS];

#if !defined(USE_TLS) || !defined(USE_TCP) || !defined(TIMING_INFO) \
		||  !defined(USE_MCAST)
static void warn(char* s);
#endif
static struct socket_id* mk_listen_id(char*, int, int);

static char *mpath=NULL;
static char mpath_buf[256];
static int  mpath_len = 0;

extern int line;

#define mk_action0(_res, _type, _p1_type, _p2_type, _p1, _p2) \
	do { \
		_res = mk_action(_type, 0, 0, line); \
	} while(0)
#define mk_action1(_res, _type, _p1_type, _p2_type, _p1, _p2) \
	do { \
		elems[0].type = _p1_type; \
		elems[0].u.data = _p1; \
		_res = mk_action(_type, 1, elems, line); \
	} while(0)
#define mk_action2(_res, _type, _p1_type, _p2_type, _p1, _p2) \
	do { \
		elems[0].type = _p1_type; \
		elems[0].u.data = _p1; \
		elems[1].type = _p2_type; \
		elems[1].u.data = _p2; \
		_res = mk_action(_type, 2, elems, line); \
	} while(0)
#define mk_action3(_res, _type, _p1_type, _p2_type, _p3_type, _p1, _p2, _p3) \
	do { \
		elems[0].type = _p1_type; \
		elems[0].u.data = _p1; \
		elems[1].type = _p2_type; \
		elems[1].u.data = _p2; \
		elems[2].type = _p3_type; \
		elems[2].u.data = _p3; \
		_res = mk_action(_type, 3, elems, line); \
	} while(0)

#line 177 "cfg.y"
typedef union {
	long intval;
	unsigned long uval;
	char* strval;
	struct expr* expr;
	struct action* action;
	struct net* ipnet;
	struct ip_addr* ipaddr;
	struct socket_id* sockid;
	struct _xl_spec *specval;
} YYSTYPE;
#line 132 "cfg.tab.c"
#define FORWARD 257
#define SEND 258
#define DROP 259
#define EXIT 260
#define RETURN 261
#define LOG_TOK 262
#define ERROR 263
#define ROUTE 264
#define ROUTE_FAILURE 265
#define ROUTE_ONREPLY 266
#define ROUTE_BRANCH 267
#define ROUTE_ERROR 268
#define SET_HOST 269
#define SET_HOSTPORT 270
#define PREFIX 271
#define SET_TIME_STAMP 272
#define RESET_TIME_STAMP 273
#define DIFF_TIME_STAMP 274
#define STRIP 275
#define STRIP_TAIL 276
#define APPEND_BRANCH 277
#define SET_USER 278
#define SET_USERPASS 279
#define SET_PORT 280
#define SET_URI 281
#define REVERT_URI 282
#define SET_DSTURI 283
#define RESET_DSTURI 284
#define ISDSTURISET 285
#define FORCE_RPORT 286
#define FORCE_LOCAL_RPORT 287
#define FORCE_TCP_ALIAS 288
#define IF 289
#define ELSE 290
#define SWITCH 291
#define CASE 292
#define DEFAULT 293
#define SBREAK 294
#define SET_ADV_ADDRESS 295
#define SET_ADV_PORT 296
#define FORCE_SEND_SOCKET 297
#define SERIALIZE_BRANCHES 298
#define NEXT_BRANCHES 299
#define USE_BLACKLIST 300
#define MAX_LEN 301
#define SETFLAG 302
#define RESETFLAG 303
#define ISFLAGSET 304
#define SETBFLAG 305
#define RESETBFLAG 306
#define ISBFLAGSET 307
#define SETSFLAG 308
#define RESETSFLAG 309
#define ISSFLAGSET 310
#define METHOD 311
#define URI 312
#define FROM_URI 313
#define TO_URI 314
#define SRCIP 315
#define SRCPORT 316
#define DSTIP 317
#define DSTPORT 318
#define PROTO 319
#define AF 320
#define MYSELF 321
#define MSGLEN 322
#define UDP 323
#define TCP 324
#define TLS 325
#define NULLV 326
#define DEBUG 327
#define FORK 328
#define LOGSTDERROR 329
#define LOGFACILITY 330
#define LOGNAME 331
#define AVP_ALIASES 332
#define LISTEN 333
#define ALIAS 334
#define AUTO_ALIASES 335
#define DNS 336
#define REV_DNS 337
#define DNS_TRY_IPV6 338
#define DNS_RETR_TIME 339
#define DNS_RETR_NO 340
#define DNS_SERVERS_NO 341
#define DNS_USE_SEARCH 342
#define PORT 343
#define CHILDREN 344
#define CHECK_VIA 345
#define MEMLOG 346
#define SIP_WARNING 347
#define SOCK_MODE 348
#define SOCK_USER 349
#define SOCK_GROUP 350
#define UNIX_SOCK 351
#define UNIX_SOCK_CHILDREN 352
#define UNIX_TX_TIMEOUT 353
#define SERVER_SIGNATURE 354
#define SERVER_HEADER 355
#define USER_AGENT_HEADER 356
#define REPLY_TO_VIA 357
#define LOADMODULE 358
#define MPATH 359
#define MODPARAM 360
#define MAXBUFFER 361
#define USER 362
#define GROUP 363
#define CHROOT 364
#define WDIR 365
#define MHOMED 366
#define DISABLE_TCP 367
#define TCP_ACCEPT_ALIASES 368
#define TCP_CHILDREN 369
#define TCP_CONNECT_TIMEOUT 370
#define TCP_SEND_TIMEOUT 371
#define TCP_CON_LIFETIME 372
#define TCP_POLL_METHOD 373
#define TCP_MAX_CONNECTIONS 374
#define DISABLE_TLS 375
#define TLSLOG 376
#define TLS_PORT_NO 377
#define TLS_METHOD 378
#define TLS_HANDSHAKE_TIMEOUT 379
#define TLS_SEND_TIMEOUT 380
#define TLS_SERVER_DOMAIN 381
#define TLS_CLIENT_DOMAIN 382
#define TLS_CLIENT_DOMAIN_AVP 383
#define SSLv23 384
#define SSLv2 385
#define SSLv3 386
#define TLSv1 387
#define TLS_VERIFY_CLIENT 388
#define TLS_VERIFY_SERVER 389
#define TLS_REQUIRE_CLIENT_CERTIFICATE 390
#define TLS_CERTIFICATE 391
#define TLS_PRIVATE_KEY 392
#define TLS_CA_LIST 393
#define TLS_CIPHERS_LIST 394
#define ADVERTISED_ADDRESS 395
#define ADVERTISED_PORT 396
#define DISABLE_CORE 397
#define OPEN_FD_LIMIT 398
#define MCAST_LOOPBACK 399
#define MCAST_TTL 400
#define TOS 401
#define DISABLE_DNS_FAILOVER 402
#define DISABLE_DNS_BLACKLIST 403
#define DST_BLACKLIST 404
#define EQUAL 405
#define EQUAL_T 406
#define GT 407
#define LT 408
#define GTE 409
#define LTE 410
#define DIFF 411
#define MATCH 412
#define NOTMATCH 413
#define PLUSEQ 414
#define MINUSEQ 415
#define SLASHEQ 416
#define MULTEQ 417
#define MODULOEQ 418
#define BANDEQ 419
#define BOREQ 420
#define BXOREQ 421
#define OR 422
#define AND 423
#define BOR 424
#define BAND 425
#define BXOR 426
#define PLUS 427
#define MINUS 428
#define SLASH 429
#define MULT 430
#define MODULO 431
#define NOT 432
#define BNOT 433
#define NUMBER 434
#define ID 435
#define STRING 436
#define SCRIPTVAR 437
#define IPV6ADDR 438
#define COMMA 439
#define SEMICOLON 440
#define RPAREN 441
#define LPAREN 442
#define LBRACE 443
#define RBRACE 444
#define LBRACK 445
#define RBRACK 446
#define DOT 447
#define CR 448
#define COLON 449
#define ANY 450
#define SCRIPTVARERR 451
#define YYERRCODE 256
short yylhs[] = {                                        -1,
    0,   38,   38,   38,   39,   39,   43,   39,   45,   39,
   47,   39,   49,   39,   51,   39,   39,   24,   24,   24,
   27,   27,   27,   27,   28,   28,   37,   37,   37,   26,
   26,   26,   26,   26,   25,   25,   52,   52,   53,   53,
   53,   40,   40,   40,   40,   40,   40,   40,   40,   40,
   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
   40,   40,   40,   40,   41,   41,   41,   41,   41,   20,
   20,   17,   19,   18,   18,   56,   54,   58,   55,   60,
   55,   57,   57,   59,   59,   61,   61,   61,   61,   61,
   61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
   61,   61,   62,   62,   62,   62,   62,   62,   62,   62,
   62,   62,   62,   62,   62,   62,   62,   42,   42,   42,
   44,   44,   46,   46,   46,   48,   48,   50,   50,    1,
    1,    1,    1,    1,    1,   31,   31,   32,   32,   32,
   32,   33,   33,   35,   35,   34,   34,   34,   30,   30,
   30,   22,   22,    2,    2,    2,    2,    2,    2,    2,
    2,    2,    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,   21,   21,   21,   21,   29,
   29,   23,   23,   23,   36,   36,   36,   36,   36,   36,
   36,   36,   36,    4,    4,    4,    4,    4,    4,    4,
    4,    4,    4,    4,    4,    4,    4,    4,    4,   11,
   11,   10,   10,   10,   10,   10,    9,    9,    9,    6,
    6,    6,    5,    5,    5,    5,    5,    5,    8,    8,
   12,   13,   13,   14,   14,   15,   15,   15,   15,   15,
   15,   15,   15,   16,   16,    7,    7,    7,    7,    7,
    7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
    7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
    7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
    7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
    7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
    7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
    7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
    7,    7,    7,    7,    7,    7,    7,    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,
};
short yylen[] = {                                         2,
    1,    2,    1,    2,    1,    1,    0,    2,    0,    2,
    0,    2,    0,    2,    0,    2,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    2,    2,    1,
    3,    3,    5,    3,    1,    2,    9,   10,    3,    1,
    2,    3,    3,    3,    3,    3,    3,    3,    3,    3,
    3,    3,    3,    3,    3,    3,    3,    3,    2,    3,
    2,    3,    2,    3,    2,    3,    2,    3,    3,    3,
    3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
    3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
    3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
    3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
    3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
    3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
    3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
    3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
    3,    3,    3,    3,    3,    1,    1,    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,    2,
    3,    2,    2,    7,    2,    2,    8,    8,    2,    1,
    1,    7,    1,    1,    3,    0,   10,    0,   10,    0,
    8,    1,    2,    1,    2,    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,    4,    7,    2,
    7,    2,    4,    7,    2,    7,    2,    4,    2,    3,
    3,    2,    3,    3,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    3,    3,    3,
    3,    3,    3,    3,    3,    2,    3,    3,    3,    3,
    3,    3,    3,    3,    3,    2,    3,    3,    2,    3,
    3,    2,    3,    3,    2,    3,    3,    2,    3,    3,
    3,    2,    3,    3,    3,    2,    3,    3,    3,    2,
    3,    3,    3,    3,    2,    3,    3,    1,    3,    1,
    1,    1,    3,    3,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    3,
    3,    3,    3,    3,    3,    3,    3,    2,    3,    3,
    3,    1,    1,    1,    3,    2,    1,    3,    2,    2,
    1,    2,    2,    1,    1,    2,    1,    2,    3,    5,
    7,    2,    1,    2,    1,    6,    5,    4,    3,    6,
    5,    4,    3,    3,    2,    4,    3,    2,    4,    4,
    2,    4,    3,    1,    3,    1,    4,    3,    1,    4,
    6,    2,    4,    4,    2,    4,    2,    4,    2,    4,
    2,    4,    2,    4,    2,    6,    4,    2,    6,    4,
    2,    6,    4,    2,    6,    2,    4,    4,    2,    4,
    4,    2,    4,    4,    2,    4,    4,    2,    4,    4,
    2,    4,    4,    2,    4,    3,    6,    2,    4,    2,
    4,    6,    4,    3,    1,    4,    2,    4,    4,    2,
    4,    4,    2,    4,    4,    2,    4,    4,    2,    4,
    3,    1,    4,    2,    4,    3,    1,    3,    1,    3,
    1,    3,    1,    4,    3,    1,    4,    4,    4,    2,
    4,    4,    2,    4,    4,    2,    4,    4,    2,    3,
    4,    2,    4,    4,    2,    3,    4,    6,    4,
};
short yydefred[] = {                                      0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   17,    0,    0,    3,    5,
    6,    0,    0,    0,    0,    0,  156,  157,  193,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   59,    0,   61,    0,   63,    0,   65,    0,   67,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  196,  195,    0,  199,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  190,    0,  192,
    0,    0,    0,    2,    0,    8,    0,   10,    0,   12,
    0,   14,    0,   16,   43,   42,   45,   44,   47,   46,
   49,   48,   51,   50,   53,   52,  167,   21,   22,   23,
    0,  342,   19,  203,    0,   24,  200,  201,  204,   18,
    0,    0,  166,    0,    0,  169,  168,  171,  170,   55,
   54,   57,   56,   58,   60,   62,   64,   66,   71,   68,
   73,   72,   75,   74,   77,   76,   79,   78,   81,   80,
   84,   83,   82,   87,   86,   85,   89,   88,   91,   90,
   93,   92,  159,  158,  161,  160,  163,  162,  165,  164,
  188,  187,    0,   70,   69,   96,   95,   94,   99,   98,
   97,  102,  101,  100,  105,  104,  103,  107,  106,  109,
  108,  111,  110,  113,  112,  115,  114,  117,  116,  119,
  118,  122,  120,  121,  124,  123,  126,  125,  128,  127,
  130,  129,  135,  131,  132,  133,  134,  151,  150,  153,
  152,    0,    0,    0,  155,  154,  137,  136,  139,  138,
  141,  140,  143,  142,  145,  144,  147,  146,  149,  148,
  173,  172,  175,  174,  177,  176,  179,  178,  181,  180,
  183,  182,  186,  184,  185,  189,  191,    0,  250,    0,
    0,  252,    0,  255,    0,    0,  257,    0,  259,    0,
    0,    0,  341,    0,    0,    0,   36,    0,    0,    0,
  210,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  282,
  387,  283,  381,    0,    0,  384,    0,  385,    0,    0,
    0,    0,    0,    0,    0,    0,  205,  344,  343,   34,
   25,   26,   31,    0,    0,    0,    0,    0,    0,  408,
    0,  411,    0,    0,    0,    0,  422,    0,  446,    0,
  449,    0,  452,    0,  477,    0,  455,    0,  464,    0,
  470,    0,  468,    0,  461,    0,  458,    0,    0,  483,
    0,  486,    0,  480,    0,  489,    0,    0,  494,    0,
    0,    0,    0,    0,    0,    0,  279,  280,  281,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   27,    0,    0,    0,    0,  265,  284,  372,  373,  285,
  374,    0,    0,  286,    0,  510,    0,  513,    0,  516,
    0,  519,    0,  522,    0,  525,    0,  425,    0,  427,
    0,  429,    0,  438,    0,  441,    0,  444,    0,  431,
    0,  433,    0,  435,    0,    0,  382,  248,  380,  388,
  383,  386,    0,  346,  347,  348,  349,  350,  351,  352,
  353,    0,    0,    0,  253,    0,    0,  258,    0,    0,
    0,  206,    0,  208,    0,    0,   40,    0,    0,    0,
  407,    0,    0,  413,  415,  418,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  466,    0,    0,    0,    0,    0,    0,
    0,  474,    0,    0,    0,    0,    0,    0,    0,    0,
  491,    0,    0,  496,  498,  500,  502,    0,    0,  505,
  296,  266,  268,  269,  270,  271,  267,  272,  273,  276,
  277,  278,    0,  326,    0,    0,  309,  274,  275,    0,
  330,    0,    0,  312,    0,  315,    0,  318,    0,  335,
    0,  322,    0,   28,   29,  262,    0,  376,    0,    0,
    0,    0,    0,  355,    0,  358,    0,  359,    0,    0,
  354,    0,    0,    0,  377,    0,    0,    0,    0,    0,
  306,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  520,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  526,  371,    0,
    0,    0,    0,    0,    0,   33,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  214,    0,    0,    0,
   41,    0,  194,  409,  406,  412,  410,  417,  423,  420,
    0,  447,    0,  450,  448,  453,  451,  478,  476,  456,
  454,  465,  463,  471,  469,    0,  462,  460,  459,  457,
    0,  473,  484,  482,  487,  485,  481,  479,  490,  488,
  495,  493,  507,  504,  295,  294,  293,  324,    0,  291,
  325,  323,    0,  308,  307,  328,  289,  329,  327,    0,
  311,  310,  314,  313,  317,  316,  334,  332,  333,  331,
  321,  320,  319,  263,  375,    0,    0,    0,    0,  368,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  264,
    0,  261,  260,  379,    0,    0,  301,  302,  299,  298,
  297,  300,  304,  305,  303,    0,    0,  509,  508,  512,
  511,  515,  514,  518,  517,  521,  524,  523,  424,  426,
  428,    0,  437,    0,  440,    0,  443,  430,  432,  434,
  529,    0,  527,    0,    0,    0,    0,    0,  197,  198,
    0,    0,    0,    0,    0,    0,    0,  211,  215,    0,
    0,    0,   39,    0,    0,    0,    0,    0,  369,    0,
    0,    0,  360,  361,  363,  362,  364,  378,  390,    0,
    0,    0,    0,    0,  249,  251,  254,  256,  202,    0,
    0,    0,    0,    0,    0,    0,    0,  212,  237,  233,
  234,  235,  236,  247,  246,  239,  238,  241,  240,  243,
  242,  245,  244,    0,    0,    0,  421,  445,  467,  472,
  339,    0,  336,    0,    0,    0,  395,  436,  439,  442,
  528,    0,    0,    0,    0,    0,    0,    0,  207,  213,
  209,    0,    0,    0,    0,  391,    0,  394,  392,  220,
  216,  217,  218,  219,  230,  229,  232,  231,  222,  221,
  224,  223,  226,  225,  228,  227,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  401,    0,  397,    0,    0,   37,  400,  396,   38,
};
short yydgoto[] = {                                      77,
  515,  516,  686,  687,  423,  424,  425,  426,  696,  520,
  427,  428,  965,  966,  967,  989,  207,  208,  209,  210,
  800,  429,  211,  212,  213,  214,  215,  443,  365,  690,
  658,  651,  652,  699,  700,  572,  691,   78,   79,   80,
   81,  176,   82,  178,   83,  180,   84,  182,   85,  184,
   86,  587,  588,   87,   88,  739,  937,  748,  746,  447,
  938,  747,
};
short yysindex[] = {                                   5569,
 -357, -344, -335, -293, -265, -261, -241,    1,   15,   54,
   57,   73, -240, -234, -230, -224, -222,  105,  115,  121,
  127,  128,  188,  240,  338,  341,  342,  344,  345,  355,
  375,  383, -145,  402, -232,  403,  404,  405,  520,  523,
  527,  530,  546,  548,  552,  553,  616,  617,  618,  619,
  659,  663,  665,  669,  672,   51,   92,  678,  679,  684,
  685,  690,  700,  705,  708,  766,  767,  768,  769,  789,
  792,  809, -215, -138,  810,    0,    0, 5718,    0,    0,
    0,  -92,  275,  340,  359,  339,    0,    0,    0,    4,
  151,  152,   12, -143, -119, -242, -236,  153,  154,  156,
    0,  120,    0,  334,    0,  335,    0,  473,    0,  497,
  157,  160,  162,  165,  171,  174, -166, -164,  -86,  175,
  176,  177,  -78,  -69,  178,    0,    0,  -61,    0,  337,
  179,  -82,  -76,  -74,  -72,  180,  181,  201,  202,  204,
  207,  212,  -70,  213,  214,  215,  216,  132,  217,  218,
   48,  762,  219,  220,  221,  228,   -8,   -7,   25,   58,
 -198,  286,  287,  288,  289,  307,  -11,    0,  608,    0,
  662,  677, -357,    0, -217,    0, -226,    0, -191,    0,
 -223,    0, -237,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  745,    0,    0,    0,  761,    0,    0,    0,    0,    0,
 -324,  782,    0,  631,  783,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  777,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  784,  771,  808,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  814,    0, 5585,
  800,    0,  887,    0, 5585,  888,    0,  889,    0, 5585,
  890,  772,    0, 1086,  908, -227,    0,  514,  909, -407,
    0, -407,  901, -187, -185,  904,  914,  915, -181, -180,
 -179, -178, -177, -176, -162, -160, -159, -158, -157,  916,
 -156, -155, -154, -148,  917, -147,  939,  941,  942,  950,
  969, 3331,  970, -132, -129, -122, -111, -110, -109, -108,
 -107, -105, -104, -103, -102, -100,  -99,  -98,  971,    0,
    0,    0,    0, 2119, -209,    0,  974,    0, 1185,  990,
  992, 2315,  993,  994, 2370, 1000,    0,    0,    0,    0,
    0,    0,    0, 1017, 1028, 1022, 1026, 1045, -317,    0,
 -134,    0,   91, 1052, 1053,   97,    0,  -79,    0,  100,
    0,  308,    0,  116,    0,  117,    0,  126,    0,  129,
    0, -183,    0,  361,    0,  362,    0,  363, -273,    0,
  130,    0,  131,    0,  133,    0,  134, 1054,    0,  135,
 1061, 1071, 1082, 1083,  -89,  502,    0,    0,    0,  533,
  149,  650,  223,  489,  510,  233,  638, 1093, 1095, 3331,
    0, 3331, 5044, 3526, 4990,    0,    0,    0,    0,    0,
    0, 1138,  691,    0, -282,    0, -192,    0,  364,    0,
 -218,    0,  365,    0, -136,    0,  136,    0, 1096,    0,
 1099,    0, 1101,    0, 1144,    0, 1145,    0, 1148,    0,
 1150,    0, 1151,    0, 1157,  -90,    0,    0,    0,    0,
    0,    0, 1254,    0,    0,    0,    0,    0,    0,    0,
    0, 3526, 1152, 1153,    0, 1164, 1166,    0, 1159, -407,
  652,    0, 1147,    0, 1192, -288,    0, -188, 1194, 1196,
    0, 1198, 1199,    0,    0,    0, 1202, 1204, 1205, 1149,
 1207, 1155, 1208, 1209, 1210, 1221, 1222, 1223, 1224, 1246,
 1248, 1249, 1250,    0, 1257, 1278, 1277, 1279, 1301, 1303,
 -387,    0, 1304, 1305, 1312, 1331, 1332, 1333, 1334, 1356,
    0, 1358, 1359,    0,    0,    0,    0, 1360, 1367,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  -67,    0,   96,  -65,    0,    0,    0,  366,
    0,  101,  -59,    0,  367,    0, -239,    0,  368,    0,
  794,    0,  155,    0,    0,    0, -280,    0, 2425,  533,
  650, 3526,  971,    0, 3526,    0,  799,    0, 1154,  691,
    0, 3331, 3331, 5098,    0, 1343,  166,    0,   72,   94,
    0, 1398,  -52, 1377, 1388, 1389, 1390, 1392, 1394, 1395,
 1400, 1401, 1403,    0, 1404, 1405, 1406, 1408, 1409,   42,
  326,  433, 1410, 1411, 1412, 1413,  434,    0,    0, 1191,
 5585, 5585, 5585, 5585, 1414,    0, 1415, 1416, 1396, 1450,
 1453, 1454, 1455, 1457, 1458,  370,    0, 1421, -288, 1426,
    0, -317,    0,    0,    0,    0,    0,    0,    0,    0,
 1430,    0, 1431,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0, 1432,    0,    0,    0,    0,
 1433,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0, 1441,    0,
    0,    0, -324,    0,    0,    0,    0,    0,    0, -324,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0, 1550,  137, 1551,  138,    0,
  813, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526,    0,
  139,    0,    0,    0, 2621, 5293,    0,    0,    0,    0,
    0,    0,    0,    0,    0, -324, 1442,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0, 1439,    0, 1456,    0, 1460,    0,    0,    0,    0,
    0, 1448,    0, 2676, 2731, 2927, 2982, 1462,    0,    0,
 1220,  163,  369,  140,  141,  142,  143,    0,    0, 1147,
 1447,   48,    0, 1459, 1461, 1463, 1464, -233,    0,  821,
  821,  821,    0,    0,    0,    0,    0,    0,    0, 1596,
 1465, 1466, 1467, 1468,    0,    0,    0,    0,    0, 1486,
 1492, 1494, 1496, 1505, 1506, 1508,  107,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  817,   48, 1473,    0,    0,    0,    0,
    0,  745,    0,  819, 1470,  210,    0,    0,    0,    0,
    0,  707,  371,  372,  144,  145,  146,  147,    0,    0,
    0, 1476, -407, 1469, 1471,    0, 1472,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0, -407, 1477, 5347, 5401,
 5585, 1478, 1483, 1482, 3037, 1484, 3222, 3277, 1487, 1485,
    0, 1488,    0, 1499, 1500,    0,    0,    0,    0,
};
short yyrindex[] = {                                    526,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   11,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  787,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  336,  488,    0,  937,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0, 1490,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0, 1091, 1146, 1201,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0, 1397,
    0,    0,    0,    0, 1452,    0, 1507, 1703, 1758, 1813,
 2009,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  637,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0, 4438,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0, 3592,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  -21,    0,    0,    0,    0,    0,
    0,  -21,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0, 3778,    0,    0,    0,    0,    0, 3832,    0,
    0,    0,    0,    0,    0, 2064,   78,  785,    0,    0,
    0,  -21,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0, 4492,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0, 4189,    0,
    0,    0, 4687,    0,    0,    0,    0,    0,    0, 4741,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  148,    0,  148,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0, 4795,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0, 3886,
 4081, 4135,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0, 4384,    0,    0,    0, 1501,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  198,  483,
 1502,    0,    0,    0,  486,    0,  490, 1510,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,
};
short yygindex[] = {                                      0,
 -419,    0, -377, -509, -420, -353, -384, -374, 1081,    0,
 -371,    0,    0,    0,  977,    0,    0,    0, 1735, -151,
 -652, -393, -553, -153,  -55, 1418, -106, -367,    0, -381,
 -456, -448,    0, -451,  755,    0, -396,    0, 1873,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0, 1200,    0,    0,    0,    0,    0,    0, 1055,    0,
 1019, -733,
};
#define YYTABLESIZE 6166
short yytable[] = {                                     312,
  314,  432,  446,  559,  448,  524,  435,  332,  522,  807,
    1,  559,  899,  197,  559,  101,  813,  518,  359,  216,
  523,  103,  961,  129,  517,  105,  441,  519,  440,  352,
  521,  107,  357,  109,  198,  199,  200,  709,  349,  650,
  168,  217,  442,  655,  653,  662,  560,   89,  656,  671,
  663,  781,  659,  782,  659,  659,  659,  331,  659,  597,
   90,  600,  730,  705,  354,  697,  702,  751,  450,   91,
  452,  703,  613,  698,  457,  459,  461,  463,  465,  467,
  198,  199,  200,  198,  199,  200,  198,  199,  200,  241,
  676,  244,  677,  469,  695,  471,  473,  475,  477,  480,
  482,  484,  803,  363,  198,  199,  200,  486,  489,  810,
  126,   92,  193,  524,  585,  524,  522,  170,  522,  713,
  689,  589,  364,  526,  586,  518,  528,  518,  523,  688,
  523,  704,  517,  530,  517,  519,  195,  519,  521,   93,
  521,  692,  693,   94,  532,  534,  536,  538,  540,  856,
  542,  544,  546,  548,  420,  550,  552,  554,  367,  679,
  824,  206,  621,   95,  102,  726,  638,  622,  422,  247,
  104,  175,  830,  266,  106,  831,  598,  255,  689,  269,
  108,  272,  110,  275,  738,  292,  257,  688,  795,  169,
  801,  201,  202,  203,  261,  204,  808,  201,  202,  203,
  962,  204,  205,  854,  204,  360,  441,  206,  205,  130,
  206,  205,  736,  206,  444,  201,  202,  203,  353,  204,
  899,  358,  442,  826,  828,  350,  205,  351,  827,  829,
  561,  206,  697,  702,  276,  201,  202,  203,  841,  204,
  698,  201,  202,  203,  343,  204,  205,  323,  325,  956,
  752,  355,  205,  356,  451,  753,  453,  614,  559,  185,
  458,  460,  462,  464,  466,  468,  171,  191,  242,  243,
  245,  246,  842,  843,    7,    9,   11,   13,   15,  470,
  327,  472,  474,  476,  478,  481,  483,  485,  689,  820,
  127,  689,  194,  487,  490,  524,  524,  688,  522,  522,
  688,  590,  982,  852,  714,  851,  591,  518,  518,  527,
  523,  523,  529,  329,  517,  517,  196,  519,  519,  531,
  521,  521,  910,  911,  912,  913,  914,  915,  916,  917,
  533,  535,  537,  539,  541,   20,  543,  545,  547,  549,
  845,  551,  553,  555,  639,  727,  592,  508,  509,  248,
  728,  640,  267,  268,  511,  601,  599,  256,  270,  271,
  273,  274,  276,  277,  293,  294,  258,  796,  797,  202,
  802,  605,  607,  706,  262,  202,  809,  884,  885,  886,
  887,  609,  202,  855,  611,  623,  625,  303,  627,  629,
  632,  715,  801,  808,  854,  946,  948,  950,  952,  999,
 1001, 1003, 1005,  276,  657,   96,  187,  189,  218,  220,
  821,  222,  229,  276,  276,  231,  798,  233,  939,   97,
  235,  806,  344,  345,  559,  695,  237,  324,  326,  239,
  249,  251,  253,  259,  264,  278,  280,  186,  689,  689,
  689,  689,  689,  689,  689,  689,  192,  688,  688,  688,
  688,  688,  688,  688,  688,  822,  282,  284,   98,  286,
  328,   99,  288,  559,  559,  559,  559,  290,  295,  297,
  299,  301,  308,  310,  315,  317,  319,  100,  664,  750,
  872,  201,  873,  321,  930,  204,  847,   30,  670,  403,
  403,  848,  205,  330,  931,  151,  932,  933,  934,  935,
  936,  964,  987,  799,  274,  274,  849,  850,  420,  111,
  799,  274,  276,  276,  276,  304,  305,  306,  307,  112,
  508,  509,  422,  508,  509,  113,  593,  511,  276,  201,
  511,  114,  115,  204,  201,  602,  152,  596,  204,  177,
  205,  333,  335,  337,  339,  205,  940,  941,  942,  943,
  979,  606,  608,  224,  642,  643,  644,  645,  646,  647,
  814,  610,  341,  603,  612,  624,  626,  985,  628,  630,
  633,  716,  802,  809,  855,  947,  949,  951,  953, 1000,
 1002, 1004, 1006,  276,  188,  190,  219,  221,  823,  223,
  230,   20,  116,  232,  559,  234,  559,  559,  236,   20,
   20,   20,   20,   20,  238,  179,  183,  240,  250,  252,
  254,  260,  265,  279,  281, 1008,  615,  617,  619,  707,
  711,  804,  811,  815,  944,  181,  995,  997,  642,  643,
  644,  645,  646,  647,  283,  285,   32,  287,  642, 1012,
  289,  403,  901,  647,  117,  291,  296,  298,  300,  302,
  309,  311,  316,  318,  320, 1015, 1017, 1018,   20,   20,
   20,  322,   20,   20,   20,   20,   20,   20,   20,   20,
   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
   20,   20,   20,   20,   20,   20,   20,   20,   20,  334,
  336,  338,  340,   20,   20,   20,   20,   20,   20,   20,
   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
  342,  604,  118,   30,  666,  119,  120,  740,  121,  122,
  799,   30,   30,   30,   30,   30,  963,  641,  741,  123,
  742,  743,  744,  745,  874,  668,  875,  225,  226,   20,
   20,   20,  263,   20,  399,  399,   20,  402,  402,  124,
   20,  398,  398,   20,   20,   20,    4,  125,  654,    7,
    9,   11,   13,   15,  616,  618,  620,  708,  712,  805,
  812,  816,  945,  799,  996,  998,  128,  131,  132,  133,
   30,   30,   30,  898,   30,   30,   30,   30,   30,   30,
   30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
   30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
   30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
   30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
   30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
   30,  876,  882,  877,  883,   30,   30,   30,   30,   30,
   30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
   30,   30,   32,  672,  642,  643,  644,  645,  646,  647,
   32,   32,   32,   32,   32,  661,  227,  642,  643,  644,
  645,  646,  647,  648,  649,  642,  643,  644,  645,  646,
  647,   30,   30,   30,  134,   30,  399,  135,   30,  402,
  228,  136,   30,  398,  137,   30,   35,   30,  642,  643,
  644,  645,  646,  647,  648,  649,  701,  201,  202,  203,
  138,  204,  139,  198,  199,  200,  140,  141,  205,   32,
   32,   32,  990,   32,   32,   32,   32,   32,   32,   32,
   32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
   32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
   32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
   32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
   32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
  142,  143,  144,  145,   32,   32,   32,   32,   32,   32,
   32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
   32,  346,    4,  642,  643,  644,  645,  646,  647,  817,
    4,    4,    4,    4,    4,  642,  643,  644,  645,  646,
  647,  648,  649,  146,  201,  202,  203,  147,  204,  148,
   32,   32,   32,  149,   32,  205,  150,   32,  508,  509,
  206,   32,  153,  154,   32,  511,   32,  737,  155,  156,
  991,  992,  993,  994,  157,  347,  642,  643,  644,  645,
  646,  647,  648,  649,  158,  497,  498,  499,  818,  159,
  819,  348,  160,    4,    4,    4,    4,    4,    4,    4,
    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
  161,  162,  163,  164,    4,    4,    4,    4,    4,    4,
    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
    4,  361,   35,  165,  740,  201,  166,  313,  204,  204,
   35,   35,   35,   35,   35,  741,  205,  742,  743,  744,
  745,  275,  275,  167,  172,  369,  371,  437,  275,  277,
  277,  277,  832,  833,  834,  835,  836,  837,  838,  839,
  366,  368,  370,  430,    4,  277,  832,  833,  834,  835,
  836,  837,  838,  839,  840,  508,  509,  835,  836,  837,
  838,  839,  511,  909,  984,  660,  372,  665,  667,  669,
  981,  673,  373,   35,   35,   35,   35,   35,   35,   35,
   35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
   35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
   35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
   35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
   35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
  431,  433,  434,  436,   35,   35,   35,   35,   35,   35,
   35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
   35,  438,  439,  449,  445,  454,  414,  414,  414,  414,
  414,  414,  414,  414,  414,  455,  456,  479,  488,  414,
  414,  414,  414,  414,  414,  414,  414,  414,  414,  414,
  414,  414,  414,  414,  414,  414,  414,  414,  414,  414,
  491,  414,  492,  493,   35,  414,  414,  414,  414,  414,
  414,  494,  414,  414,  414,  414,  414,  414,  414,  414,
  414,  416,  416,  416,  416,  416,  416,  416,  416,  416,
  495,  525,  556,  562,  416,  416,  416,  416,  416,  416,
  416,  416,  416,  416,  416,  416,  416,  416,  416,  416,
  416,  416,  416,  416,  416,  573,  416,  574,  576,  577,
  416,  416,  416,  416,  416,  416,  579,  416,  416,  416,
  416,  416,  416,  416,  416,  416,  419,  419,  419,  419,
  419,  419,  419,  419,  419,  580,  581,  582,  583,  419,
  419,  419,  419,  419,  419,  419,  419,  419,  419,  419,
  419,  419,  419,  419,  419,  419,  419,  419,  419,  419,
  584,  419,  594,  595,  631,  419,  419,  419,  419,  419,
  419,  634,  419,  419,  419,  419,  419,  419,  419,  419,
  419,  635,  414,  414,  414,  414,  414,  414,  414,  414,
  414,  414,  636,  637,  740,  414,  674,  414,  675,  717,
  414,  414,  718,  414,  719,  741,  414,  742,  743,  744,
  745,  414,  563,  642,  643,  644,  645,  646,  647,  648,
  649,  564,  565,  566,  567,  568,  569,  570,  571,  642,
  643,  644,  645,  646,  647,  648,  649,  416,  416,  416,
  416,  416,  416,  416,  416,  416,  416,  720,  721,  729,
  416,  722,  416,  723,  724,  416,  416,  761,  416,  563,
  725,  416,  735,  763,  731,  732,  416,  930,  564,  565,
  566,  567,  568,  569,  570,  571,  733,  931,  734,  932,
  933,  934,  935,  936,  832,  833,  834,  835,  836,  837,
  838,  839,  419,  419,  419,  419,  419,  419,  419,  419,
  419,  419,  846,  749,  754,  419,  755,  419,  756,  757,
  419,  419,  758,  419,  759,  760,  419,  762,  764,  765,
  766,  419,  475,  475,  475,  475,  475,  475,  475,  475,
  475,  767,  768,  769,  770,  475,  475,  475,  475,  475,
  475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
  475,  475,  475,  475,  475,  475,  771,  475,  772,  773,
  774,  475,  475,  475,  475,  475,  475,  775,  475,  475,
  475,  475,  475,  475,  475,  475,  475,  492,  492,  492,
  492,  492,  492,  492,  492,  492,  776,  777,  853,  778,
  492,  492,  492,  492,  492,  492,  492,  492,  492,  492,
  492,  492,  492,  492,  492,  492,  492,  492,  492,  492,
  492,  779,  492,  780,  783,  784,  492,  492,  492,  492,
  492,  492,  785,  492,  492,  492,  492,  492,  492,  492,
  492,  492,  497,  497,  497,  497,  497,  497,  497,  497,
  497,  786,  787,  788,  789,  497,  497,  497,  497,  497,
  497,  497,  497,  497,  497,  497,  497,  497,  497,  497,
  497,  497,  497,  497,  497,  497,  790,  497,  791,  792,
  793,  497,  497,  497,  497,  497,  497,  794,  497,  497,
  497,  497,  497,  497,  497,  497,  497,  857,  475,  475,
  475,  475,  475,  475,  475,  475,  475,  475,  858,  859,
  860,  475,  861,  475,  862,  863,  475,  475,  891,  475,
  864,  865,  475,  866,  867,  868,  869,  475,  870,  871,
  878,  879,  880,  881,  892,  889,  890,  893,  894,  895,
  888,  896,  897,  900,  902,  904,  905,  906,  907,  908,
  798,  806,  921,  492,  492,  492,  492,  492,  492,  492,
  492,  492,  492,  924,  920,  955,  492,  964,  492,  922,
  972,  492,  492,  923,  492,  929,  973,  492,  974,  957,
  975,  958,  492,  959,  960,  968,  969,  970,  971,  976,
  977,  983,  978,  986, 1007, 1013, 1019, 1009, 1020, 1010,
 1011, 1021, 1025, 1023,  340, 1026,  919, 1027,  497,  497,
  497,  497,  497,  497,  497,  497,  497,  497, 1028,  362,
 1029,  497,  988,  497,  393,  405,  497,  497,  710,  497,
  174,  903,  497,  404,  954,  980,    0,  497,  499,  499,
  499,  499,  499,  499,  499,  499,  499,    0,    0,    0,
    0,  499,  499,  499,  499,  499,  499,  499,  499,  499,
  499,  499,  499,  499,  499,  499,  499,  499,  499,  499,
  499,  499,    0,  499,    0,    0,    0,  499,  499,  499,
  499,  499,  499,    0,  499,  499,  499,  499,  499,  499,
  499,  499,  499,  501,  501,  501,  501,  501,  501,  501,
  501,  501,    0,    0,    0,    0,  501,  501,  501,  501,
  501,  501,  501,  501,  501,  501,  501,  501,  501,  501,
  501,  501,  501,  501,  501,  501,  501,    0,  501,    0,
    0,    0,  501,  501,  501,  501,  501,  501,    0,  501,
  501,  501,  501,  501,  501,  501,  501,  501,  503,  503,
  503,  503,  503,  503,  503,  503,  503,    0,    0,    0,
    0,  503,  503,  503,  503,  503,  503,  503,  503,  503,
  503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
  503,  503,    0,  503,    0,    0,    0,  503,  503,  503,
  503,  503,  503,    0,  503,  503,  503,  503,  503,  503,
  503,  503,  503,    0,  499,  499,  499,  499,  499,  499,
  499,  499,  499,  499,    0,    0,    0,  499,    0,  499,
    0,    0,  499,  499,    0,  499,    0,    0,  499,    0,
    0,    0,    0,  499,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  501,
  501,  501,  501,  501,  501,  501,  501,  501,  501,    0,
    0,    0,  501,    0,  501,    0,    0,  501,  501,    0,
  501,    0,    0,  501,    0,    0,    0,    0,  501,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  503,  503,  503,  503,  503,  503,
  503,  503,  503,  503,    0,    0,    0,  503,    0,  503,
    0,    0,  503,  503,    0,  503,    0,    0,  503,    0,
    0,    0,    0,  503,  506,  506,  506,  506,  506,  506,
  506,  506,  506,    0,    0,    0,    0,  506,  506,  506,
  506,  506,  506,  506,  506,  506,  506,  506,  506,  506,
  506,  506,  506,  506,  506,  506,  506,  506,    0,  506,
    0,    0,    0,  506,  506,  506,  506,  506,  506,    0,
  506,  506,  506,  506,  506,  506,  506,  506,  506,  389,
  389,  389,  389,  389,  389,  389,  389,  389,    0,    0,
    0,    0,  389,  389,  389,  389,  389,  389,  389,  389,
  389,  389,  389,  389,  389,  389,  389,  389,  389,  389,
  389,  389,  389,    0,  389,  389,  389,  389,  389,  389,
  389,  389,  389,  389,    0,  389,  389,  389,  389,  389,
  389,  389,  389,  389,  557,  374,  375,  376,  377,  378,
  379,  380,  381,    0,    0,    0,    0,  382,  383,  384,
  385,  386,  387,  388,  389,  390,  391,  392,  393,  394,
  395,  396,  397,  398,  399,  400,  401,  402,    0,  403,
    0,    0,    0,  404,  405,  406,  407,  408,  409,    0,
  410,  411,  412,  413,  414,  415,  416,  417,  418,    0,
  506,  506,  506,  506,  506,  506,  506,  506,  506,  506,
    0,    0,    0,  506,    0,  506,    0,    0,  506,  506,
    0,  506,    0,    0,  506,    0,    0,    0,    0,  506,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  389,  389,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  389,    0,
  389,    0,    0,  389,  389,    0,  389,  389,    0,    0,
    0,    0,    0,    0,  389,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  419,    0,  420,    0,    0,  421,    0,
    0,    0,  558,    0,    0,    0,    0,    0,    0,  422,
  557,  374,  375,  376,  377,  378,  379,  380,  381,    0,
    0,    0,    0,  382,  383,  384,  385,  386,  387,  388,
  389,  390,  391,  392,  393,  394,  395,  396,  397,  398,
  399,  400,  401,  402,    0,  403,    0,    0,    0,  404,
  405,  406,  407,  408,  409,    0,  410,  411,  412,  413,
  414,  415,  416,  417,  418,  557,  374,  375,  376,  377,
  378,  379,  380,  381,    0,    0,    0,    0,  382,  383,
  384,  385,  386,  387,  388,  389,  390,  391,  392,  393,
  394,  395,  396,  397,  398,  399,  400,  401,  402,    0,
  403,    0,    0,    0,  404,  405,  406,  407,  408,  409,
    0,  410,  411,  412,  413,  414,  415,  416,  417,  418,
  557,  374,  375,  376,  377,  378,  379,  380,  381,    0,
    0,    0,    0,  382,  383,  384,  385,  386,  387,  388,
  389,  390,  391,  392,  393,  394,  395,  396,  397,  398,
  399,  400,  401,  402,    0,  403,    0,    0,    0,  404,
  405,  406,  407,  408,  409,    0,  410,  411,  412,  413,
  414,  415,  416,  417,  418,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  419,
    0,  420,    0,    0,  421,    0,    0,    0,  575,    0,
    0,    0,    0,    0,    0,  422,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  419,    0,  420,    0,    0,  421,
    0,    0,    0,  578,    0,    0,    0,    0,    0,    0,
  422,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  419,
    0,  420,    0,    0,  421,    0,    0,    0,  825,    0,
    0,    0,    0,    0,    0,  422,  557,  374,  375,  376,
  377,  378,  379,  380,  381,    0,    0,    0,    0,  382,
  383,  384,  385,  386,  387,  388,  389,  390,  391,  392,
  393,  394,  395,  396,  397,  398,  399,  400,  401,  402,
    0,  403,    0,    0,    0,  404,  405,  406,  407,  408,
  409,    0,  410,  411,  412,  413,  414,  415,  416,  417,
  418,  557,  374,  375,  376,  377,  378,  379,  380,  381,
    0,    0,    0,    0,  382,  383,  384,  385,  386,  387,
  388,  389,  390,  391,  392,  393,  394,  395,  396,  397,
  398,  399,  400,  401,  402,    0,  403,    0,    0,    0,
  404,  405,  406,  407,  408,  409,    0,  410,  411,  412,
  413,  414,  415,  416,  417,  418,  557,  374,  375,  376,
  377,  378,  379,  380,  381,    0,    0,    0,    0,  382,
  383,  384,  385,  386,  387,  388,  389,  390,  391,  392,
  393,  394,  395,  396,  397,  398,  399,  400,  401,  402,
    0,  403,    0,    0,    0,  404,  405,  406,  407,  408,
  409,    0,  410,  411,  412,  413,  414,  415,  416,  417,
  418,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  419,    0,  420,    0,    0,
  421,    0,    0,    0,  918,    0,    0,    0,    0,    0,
    0,  422,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  419,    0,  420,    0,    0,  421,    0,    0,    0,  925,
    0,    0,    0,    0,    0,    0,  422,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  419,    0,  420,    0,    0,
  421,    0,    0,    0,  926,    0,    0,    0,    0,    0,
    0,  422,  557,  374,  375,  376,  377,  378,  379,  380,
  381,    0,    0,    0,    0,  382,  383,  384,  385,  386,
  387,  388,  389,  390,  391,  392,  393,  394,  395,  396,
  397,  398,  399,  400,  401,  402,    0,  403,    0,    0,
    0,  404,  405,  406,  407,  408,  409,    0,  410,  411,
  412,  413,  414,  415,  416,  417,  418,  557,  374,  375,
  376,  377,  378,  379,  380,  381,    0,    0,    0,    0,
  382,  383,  384,  385,  386,  387,  388,  389,  390,  391,
  392,  393,  394,  395,  396,  397,  398,  399,  400,  401,
  402,    0,  403,    0,    0,    0,  404,  405,  406,  407,
  408,  409,    0,  410,  411,  412,  413,  414,  415,  416,
  417,  418,  557,  374,  375,  376,  377,  378,  379,  380,
  381,    0,    0,    0,    0,  382,  383,  384,  385,  386,
  387,  388,  389,  390,  391,  392,  393,  394,  395,  396,
  397,  398,  399,  400,  401,  402,    0,  403,    0,    0,
 1022,  404,  405,  406,  407,  408,  409,    0,  410,  411,
  412,  413,  414,  415,  416,  417,  418,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  419,    0,  420,    0,    0,  421,    0,    0,    0,
  927,    0,    0,    0,    0,    0,    0,  422,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  419,    0,  420,    0,
    0,  421,    0,    0,    0,  928,    0,    0,    0,    0,
    0,    0,  422,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  419,    0,  420,    0,    0,  421,  557,  374,  375,
  376,  377,  378,  379,  380,  381,    0,  422,    0,    0,
  382,  383,  384,  385,  386,  387,  388,  389,  390,  391,
  392,  393,  394,  395,  396,  397,  398,  399,  400,  401,
  402,    0,  403,    0,    0, 1024,  404,  405,  406,  407,
  408,  409,    0,  410,  411,  412,  413,  414,  415,  416,
  417,  418,  557,  374,  375,  376,  377,  378,  379,  380,
  381,    0,    0,    0,    0,  382,  383,  384,  385,  386,
  387,  388,  389,  390,  391,  392,  393,  394,  395,  396,
  397,  398,  399,  400,  401,  402,    0,  403,    0,    0,
    0,  404,  405,  406,  407,  408,  409,    0,  410,  411,
  412,  413,  414,  415,  416,  417,  418,  374,  375,  376,
  377,  378,  379,  380,  381,    0,    0,    0,    0,  382,
  383,  384,  385,  386,  387,  388,  389,  390,  391,  392,
  393,  394,  395,  396,  397,  398,  399,  400,  401,  402,
    0,    0,    0,    0,    0,  404,  405,  406,  407,  408,
  409,    0,  410,  411,  412,  413,  414,  415,  416,  417,
  418,  496,  497,  498,  499,  500,  501,  502,  503,  504,
  505,  506,  507,    0,    0,    0,  419,    0,  420,    0,
    0,  421,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  422,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  419,    0,  420,    0,    0,  421,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  422,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  508,  509,    0,
    0,    0,  510,    0,  511,  419,    0,  420,    0,    0,
    0,    0,  512,  513,    0,  514,    0,    0,    0,    0,
    0,  422,  374,  375,  376,  377,  378,  379,  380,  381,
    0,    0,    0,    0,  382,  383,  384,  385,  386,  387,
  388,  389,  390,  391,  392,  393,  394,  395,  396,  397,
  398,  399,  400,  401,    0,    0,    0,    0,    0,    0,
  404,  405,  406,  407,  408,  409,    0,  410,  411,  412,
  413,  414,  415,  416,  417,  418,  496,  497,  498,  499,
  680,  501,  681,  503,  504,  505,  506,  507,  345,  345,
  345,  345,  345,  345,  345,  345,    0,    0,    0,    0,
  345,  345,  345,  345,  345,  345,  345,  345,  345,  345,
  345,  345,  345,  345,  345,  345,  345,  345,  345,  345,
    0,    0,    0,    0,    0,    0,  345,  345,  345,  345,
  345,  345,    0,  345,  345,  345,  345,  345,  345,  345,
  345,  345,  345,  345,  345,  345,  345,  345,  345,  345,
  345,  345,  345,  345,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  508,  509,    0,    0,    0,    0,  682,  511,
  683,  684,  420,    0,    0,    0,    0,  685,    0,    0,
    0,    0,    0,    0,    0,    0,  422,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  345,  345,
    0,    0,    0,    0,  345,  345,  345,  345,  345,    0,
    0,    0,    0,  345,  356,  356,  356,  356,  356,  356,
  356,  356,  345,    0,    0,    0,  356,  356,  356,  356,
  356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
  356,  356,  356,  356,  356,  356,  356,    0,  356,    0,
    0,    0,  356,  356,  356,  356,  356,  356,    0,  356,
  356,  356,  356,  356,  356,  356,  356,  356,  357,  357,
  357,  357,  357,  357,  357,  357,    0,    0,    0,    0,
  357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
  357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
  357,    0,  357,    0,    0,    0,  357,  357,  357,  357,
  357,  357,    0,  357,  357,  357,  357,  357,  357,  357,
  357,  357,  366,  366,  366,  366,  366,  366,  366,  366,
    0,    0,    0,    0,  366,  366,  366,  366,  366,  366,
  366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
  366,  366,  366,  366,  366,    0,  366,    0,    0,    0,
  366,  366,  366,  366,  366,  366,    0,  366,  366,  366,
  366,  366,  366,  366,  366,  366,    0,    0,    0,  356,
  356,  356,  356,  356,  356,  356,  356,  356,  356,    0,
    0,    0,  356,    0,  356,    0,    0,  356,  356,    0,
  356,    0,    0,  356,    0,    0,    0,    0,  356,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  357,  357,  357,  357,  357,  357,  357,
  357,  357,  357,    0,    0,    0,  357,    0,  357,    0,
    0,  357,  357,    0,  357,    0,    0,  357,    0,    0,
    0,    0,  357,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  366,  366,  366,
  366,  366,    0,    0,    0,    0,    0,    0,    0,    0,
  366,    0,  366,    0,    0,  366,  366,    0,  366,    0,
    0,  366,    0,    0,    0,    0,  366,  365,  365,  365,
  365,  365,  365,  365,  365,    0,    0,    0,    0,  365,
  365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
  365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
    0,  365,    0,    0,    0,  365,  365,  365,  365,  365,
  365,    0,  365,  365,  365,  365,  365,  365,  365,  365,
  365,  367,  367,  367,  367,  367,  367,  367,  367,    0,
    0,    0,    0,  367,  367,  367,  367,  367,  367,  367,
  367,  367,  367,  367,  367,  367,  367,  367,  367,  367,
  367,  367,  367,  367,    0,  367,    0,    0,    0,  367,
  367,  367,  367,  367,  367,    0,  367,  367,  367,  367,
  367,  367,  367,  367,  367,  338,  338,  338,  338,  338,
  338,  338,  338,    0,    0,    0,    0,  338,  338,  338,
  338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
  338,  338,  338,  338,  338,  338,  338,  338,    0,  338,
    0,    0,    0,  338,  338,  338,  338,  338,  338,    0,
  338,  338,  338,  338,  338,  338,  338,  338,  338,    0,
    0,    0,  365,  365,  365,  365,  365,    0,    0,    0,
    0,    0,    0,    0,    0,  365,    0,  365,    0,    0,
  365,  365,    0,  365,    0,    0,  365,    0,    0,    0,
    0,  365,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  367,  367,  367,  367,
  367,    0,    0,    0,    0,    0,    0,    0,    0,  367,
    0,  367,    0,    0,  367,  367,    0,  367,    0,    0,
  367,    0,    0,    0,    0,  367,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  338,  338,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  338,    0,  338,    0,  338,  338,  338,
    0,  338,    0,    0,    0,    0,    0,    0,    0,  338,
  337,  337,  337,  337,  337,  337,  337,  337,    0,    0,
    0,    0,  337,  337,  337,  337,  337,  337,  337,  337,
  337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
  337,  337,  337,    0,  337,    0,    0,    0,  337,  337,
  337,  337,  337,  337,    0,  337,  337,  337,  337,  337,
  337,  337,  337,  337,  287,  287,  287,  287,  287,  287,
  287,  287,    0,    0,    0,    0,  287,  287,  287,  287,
  287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
  287,  287,  287,  287,  287,  287,  287,    0,  287,    0,
    0,    0,  287,  287,  287,  287,  287,  287,    0,  287,
  287,  287,  287,  287,  287,  287,  287,  287,  370,  370,
  370,  370,  370,  370,  370,  370,    0,    0,    0,    0,
  370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
  370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
  370,    0,  370,    0,    0,    0,  370,  370,  370,  370,
  370,  370,    0,  370,  370,  370,  370,  370,  370,  370,
  370,  370,    0,    0,    0,  337,  337,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  337,    0,
  337,    0,  337,  337,  337,    0,  337,    0,    0,    0,
    0,    0,    0,    0,  337,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  287,
  287,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  287,    0,  287,    0,    0,  287,  287,    0,
  287,    0,    0,    0,    0,    0,    0,    0,  287,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  370,  370,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  370,    0,  370,    0,
    0,  370,  370,    0,  370,    0,    0,    0,    0,    0,
    0,    0,  370,  292,  292,  292,  292,  292,  292,  292,
  292,    0,    0,    0,    0,  292,  292,  292,  292,  292,
  292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
  292,  292,  292,  292,  292,  292,    0,  292,    0,    0,
    0,  292,  292,  292,  292,  292,  292,    0,  292,  292,
  292,  292,  292,  292,  292,  292,  292,  290,  290,  290,
  290,  290,  290,  290,  290,    0,    0,    0,    0,  290,
  290,  290,  290,  290,  290,  290,  290,  290,  290,  290,
  290,  290,  290,  290,  290,  290,  290,  290,  290,  290,
    0,  290,    0,    0,    0,  290,  290,  290,  290,  290,
  290,    0,  290,  290,  290,  290,  290,  290,  290,  290,
  290,  288,  288,  288,  288,  288,  288,  288,  288,    0,
    0,    0,    0,  288,  288,  288,  288,  288,  288,  288,
  288,  288,  288,  288,  288,  288,  288,  288,  288,  288,
  288,  288,  288,  288,    0,  288,    0,    0,    0,  288,
  288,  288,  288,  288,  288,    0,  288,  288,  288,  288,
  288,  288,  288,  288,  288,    0,    0,    0,  292,  292,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  292,    0,  292,    0,    0,  292,  292,    0,  292,
    0,    0,    0,    0,    0,    0,    0,  292,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  290,  290,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  290,    0,  290,    0,    0,
  290,  290,    0,  290,    0,    0,    0,    0,    0,    0,
    0,  290,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  288,  288,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  288,
    0,  288,    0,    0,  288,  288,    0,  288,    0,    0,
    0,    0,    0,    0,    0,  288,  374,  375,  376,  377,
  378,  379,  380,  381,    0,    0,    0,    0,  382,  383,
  384,  385,  386,  387,  388,  389,  390,  391,  392,  393,
  394,  395,  396,  397,  398,  399,  400,  401,  402,    0,
  403,    0,    0,    0,  404,  405,  406,  407,  408,  409,
    0,  410,  411,  412,  413,  414,  415,  416,  417,  418,
  374,  375,  376,  377,  378,  379,  380,  381,    0,    0,
    0,    0,  382,  383,  384,  385,  386,  387,  388,  389,
  390,  391,  392,  393,  394,  395,  396,  397,  398,  399,
  400,  401,  402,    0,  403,    0,    0,    0,  404,  405,
  406,  407,  408,  409,    0,  410,  411,  412,  413,  414,
  415,  416,  417,  418,  374,  375,  376,  377,  378,  379,
  380,  381,    0,    0,    0,    0,  382,  383,  384,  385,
  386,  387,  388,  389,  390,  391,  392,  393,  394,  395,
  396,  397,  398,  399,  400,  401,  402,    0,  403,    0,
    0,    0,  404,  405,  406,  407,  408,  409,    0,  410,
  411,  412,  413,  414,  415,  416,  417,  418,    0,    0,
    0,  692,  693,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  419,    0,  420,    0,    0,  421,
    0,    0,  694,    0,    0,    0,    0,    0,    0,    0,
  422,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  419,    0,
  420,    0,    0,  421,    0,    0,    0,  678,    0,    0,
    0,    0,    0,    0,  422,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  419,    0,  420,    0,    0,  421,    0,    0,
    0,  844,    0,    0,    0,    0,    0,    0,  422,  374,
  375,  376,  377,  378,  379,  380,  381,    0,    0,    0,
    0,  382,  383,  384,  385,  386,  387,  388,  389,  390,
  391,  392,  393,  394,  395,  396,  397,  398,  399,  400,
  401,  402,    0,  403,    0,    0,    0,  404,  405,  406,
  407,  408,  409,    0,  410,  411,  412,  413,  414,  415,
  416,  417,  418,  374,  375,  376,  377,  378,  379,  380,
  381,    0,    0,    0,    0,  382,  383,  384,  385,  386,
  387,  388,  389,  390,  391,  392,  393,  394,  395,  396,
  397,  398,  399,  400,  401,  402,    0,  403,    0,    0,
 1014,  404,  405,  406,  407,  408,  409,    0,  410,  411,
  412,  413,  414,  415,  416,  417,  418,  374,  375,  376,
  377,  378,  379,  380,  381,    0,    0,    0,    0,  382,
  383,  384,  385,  386,  387,  388,  389,  390,  391,  392,
  393,  394,  395,  396,  397,  398,  399,  400,  401,  402,
    0,  403,    0,    0, 1016,  404,  405,  406,  407,  408,
  409,    0,  410,  411,  412,  413,  414,  415,  416,  417,
  418,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  419,    0,  420,
    0,    0,  421,    0,    0,  694,    0,    0,    0,    0,
    0,    0,    0,  422,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  419,    0,  420,    0,    0,  421,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  422,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    1,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  419,    0,  420,    0,    0,
  421,  374,  375,  376,  377,  378,  379,  380,  381,    0,
    0,  422,    0,  382,  383,  384,  385,  386,  387,  388,
  389,  390,  391,  392,  393,  394,  395,  396,  397,  398,
  399,  400,  401,  402,    0,  403,    0,    0,    0,  404,
  405,  406,  407,  408,  409,    0,  410,  411,  412,  413,
  414,  415,  416,  417,  418,    2,    3,    4,    5,    6,
    7,    8,    9,   10,   11,   12,   13,   14,   15,   16,
   17,   18,   19,   20,   21,   22,   23,   24,   25,   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,
   57,   58,    0,    0,    0,    0,   59,   60,   61,   62,
   63,   64,   65,   66,   67,   68,   69,   70,   71,   72,
   73,   74,   75,  173,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   76,    0,    0,  419,
    0,  420,    0,    0,  421,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  422,    0,    0,    0,    0,
    0,    0,    0,    0,    2,    3,    4,    5,    6,    7,
    8,    9,   10,   11,   12,   13,   14,   15,   16,   17,
   18,   19,   20,   21,   22,   23,   24,   25,   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,   57,
   58,    0,    0,    0,    0,   59,   60,   61,   62,   63,
   64,   65,   66,   67,   68,   69,   70,   71,   72,   73,
   74,   75,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   76,
};
short yycheck[] = {                                     151,
  152,  355,  370,  424,  372,  402,  360,  161,  402,  662,
    0,  432,  746,  256,  435,  256,  256,  402,  256,  256,
  402,  256,  256,  256,  402,  256,  434,  402,  256,  256,
  402,  256,  256,  256,  323,  324,  325,  256,  256,  496,
  256,   97,  450,  500,  496,  502,  256,  405,  500,  506,
  502,  439,  501,  441,  503,  504,  505,  256,  507,  456,
  405,  458,  572,  256,  256,  522,  523,  256,  256,  405,
  256,  523,  256,  522,  256,  256,  256,  256,  256,  256,
  323,  324,  325,  323,  324,  325,  323,  324,  325,  256,
  510,  256,  512,  256,  515,  256,  256,  256,  256,  256,
  256,  256,  656,  428,  323,  324,  325,  256,  256,  663,
  256,  405,  256,  510,  432,  512,  510,  256,  512,  256,
  514,  256,  447,  256,  442,  510,  256,  512,  510,  514,
  512,  525,  510,  256,  512,  510,  256,  512,  510,  405,
  512,  422,  423,  405,  256,  256,  256,  256,  256,  703,
  256,  256,  256,  256,  437,  256,  256,  256,  214,  513,
  441,  450,  436,  405,  405,  256,  256,  441,  451,  256,
  405,  264,  682,  256,  405,  685,  256,  256,  572,  256,
  405,  256,  405,  256,  581,  256,  256,  572,  256,  405,
  256,  434,  435,  436,  256,  438,  256,  434,  435,  436,
  434,  438,  445,  256,  438,  443,  434,  450,  445,  442,
  450,  445,  580,  450,  368,  434,  435,  436,  445,  438,
  954,  445,  450,  680,  681,  443,  445,  445,  680,  681,
  440,  450,  689,  690,  256,  434,  435,  436,  690,  438,
  689,  434,  435,  436,  256,  438,  445,  256,  256,  902,
  439,  443,  445,  445,  442,  444,  442,  441,  679,  256,
  442,  442,  442,  442,  442,  442,  405,  256,  435,  436,
  435,  436,  692,  693,  264,  265,  266,  267,  268,  442,
  256,  442,  442,  442,  442,  442,  442,  442,  682,  671,
  436,  685,  436,  442,  442,  692,  693,  682,  692,  693,
  685,  436,  955,  700,  441,  699,  441,  692,  693,  442,
  692,  693,  442,  256,  692,  693,  436,  692,  693,  442,
  692,  693,  832,  833,  834,  835,  836,  837,  838,  839,
  442,  442,  442,  442,  442,    0,  442,  442,  442,  442,
  694,  442,  442,  442,  434,  436,  256,  427,  428,  436,
  441,  441,  435,  436,  434,  256,  436,  436,  435,  436,
  435,  436,  435,  436,  435,  436,  436,  435,  436,  435,
  436,  256,  256,  527,  436,  435,  436,  731,  732,  733,
  734,  256,  435,  436,  256,  256,  256,  256,  256,  256,
  256,  256,  256,  256,  256,  256,  256,  256,  256,  256,
  256,  256,  256,  256,  256,  405,  256,  256,  256,  256,
  256,  256,  256,  435,  436,  256,  321,  256,  256,  405,
  256,  321,  434,  435,  845,  846,  256,  436,  436,  256,
  256,  256,  256,  256,  256,  256,  256,  434,  832,  833,
  834,  835,  836,  837,  838,  839,  435,  832,  833,  834,
  835,  836,  837,  838,  839,  301,  256,  256,  405,  256,
  436,  405,  256,  884,  885,  886,  887,  256,  256,  256,
  256,  256,  256,  256,  256,  256,  256,  405,  256,  586,
  439,  434,  441,  256,  378,  438,  321,    0,  256,  292,
  293,  326,  445,  436,  388,  445,  390,  391,  392,  393,
  394,  292,  293,  655,  427,  428,  435,  436,  437,  405,
  662,  434,  435,  436,  437,  384,  385,  386,  387,  405,
  427,  428,  451,  427,  428,  405,  436,  434,  451,  434,
  434,  405,  405,  438,  434,  436,  445,  441,  438,  265,
  445,  256,  256,  256,  256,  445,  384,  385,  386,  387,
  444,  436,  436,  434,  406,  407,  408,  409,  410,  411,
  667,  436,  256,  256,  436,  436,  436,  964,  436,  436,
  436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
  436,  436,  436,  436,  434,  434,  434,  434,  434,  434,
  434,  256,  405,  434, 1015,  434, 1017, 1018,  434,  264,
  265,  266,  267,  268,  434,  266,  268,  434,  434,  434,
  434,  434,  434,  434,  434,  983,  256,  256,  256,  256,
  256,  256,  256,  256,  256,  267,  256,  256,  406,  407,
  408,  409,  410,  411,  434,  434,    0,  434,  406, 1007,
  434,  444,  749,  411,  405,  434,  434,  434,  434,  434,
  434,  434,  434,  434,  434, 1009, 1010, 1011,  323,  324,
  325,  434,  327,  328,  329,  330,  331,  332,  333,  334,
  335,  336,  337,  338,  339,  340,  341,  342,  343,  344,
  345,  346,  347,  348,  349,  350,  351,  352,  353,  354,
  355,  356,  357,  358,  359,  360,  361,  362,  363,  364,
  365,  366,  367,  368,  369,  370,  371,  372,  373,  374,
  375,  376,  377,  378,  379,  380,  381,  382,  383,  434,
  434,  434,  434,  388,  389,  390,  391,  392,  393,  394,
  395,  396,  397,  398,  399,  400,  401,  402,  403,  404,
  434,  434,  405,  256,  256,  405,  405,  378,  405,  405,
  902,  264,  265,  266,  267,  268,  908,  256,  389,  405,
  391,  392,  393,  394,  439,  256,  441,  434,  434,  434,
  435,  436,  436,  438,  292,  293,  441,  292,  293,  405,
  445,  292,  293,  448,  449,  450,    0,  405,  256,  264,
  265,  266,  267,  268,  434,  434,  434,  434,  434,  434,
  434,  434,  434,  955,  434,  434,  405,  405,  405,  405,
  323,  324,  325,  444,  327,  328,  329,  330,  331,  332,
  333,  334,  335,  336,  337,  338,  339,  340,  341,  342,
  343,  344,  345,  346,  347,  348,  349,  350,  351,  352,
  353,  354,  355,  356,  357,  358,  359,  360,  361,  362,
  363,  364,  365,  366,  367,  368,  369,  370,  371,  372,
  373,  374,  375,  376,  377,  378,  379,  380,  381,  382,
  383,  439,  439,  441,  441,  388,  389,  390,  391,  392,
  393,  394,  395,  396,  397,  398,  399,  400,  401,  402,
  403,  404,  256,  256,  406,  407,  408,  409,  410,  411,
  264,  265,  266,  267,  268,  256,  434,  406,  407,  408,
  409,  410,  411,  412,  413,  406,  407,  408,  409,  410,
  411,  434,  435,  436,  405,  438,  444,  405,  441,  444,
  434,  405,  445,  444,  405,  448,    0,  450,  406,  407,
  408,  409,  410,  411,  412,  413,  256,  434,  435,  436,
  405,  438,  405,  323,  324,  325,  405,  405,  445,  323,
  324,  325,  256,  327,  328,  329,  330,  331,  332,  333,
  334,  335,  336,  337,  338,  339,  340,  341,  342,  343,
  344,  345,  346,  347,  348,  349,  350,  351,  352,  353,
  354,  355,  356,  357,  358,  359,  360,  361,  362,  363,
  364,  365,  366,  367,  368,  369,  370,  371,  372,  373,
  374,  375,  376,  377,  378,  379,  380,  381,  382,  383,
  405,  405,  405,  405,  388,  389,  390,  391,  392,  393,
  394,  395,  396,  397,  398,  399,  400,  401,  402,  403,
  404,  434,  256,  406,  407,  408,  409,  410,  411,  256,
  264,  265,  266,  267,  268,  406,  407,  408,  409,  410,
  411,  412,  413,  405,  434,  435,  436,  405,  438,  405,
  434,  435,  436,  405,  438,  445,  405,  441,  427,  428,
  450,  445,  405,  405,  448,  434,  450,  436,  405,  405,
  384,  385,  386,  387,  405,  434,  406,  407,  408,  409,
  410,  411,  412,  413,  405,  312,  313,  314,  315,  405,
  317,  435,  405,  327,  328,  329,  330,  331,  332,  333,
  334,  335,  336,  337,  338,  339,  340,  341,  342,  343,
  344,  345,  346,  347,  348,  349,  350,  351,  352,  353,
  354,  355,  356,  357,  358,  359,  360,  361,  362,  363,
  364,  365,  366,  367,  368,  369,  370,  371,  372,  373,
  374,  375,  376,  377,  378,  379,  380,  381,  382,  383,
  405,  405,  405,  405,  388,  389,  390,  391,  392,  393,
  394,  395,  396,  397,  398,  399,  400,  401,  402,  403,
  404,  447,  256,  405,  378,  434,  405,  436,  438,  438,
  264,  265,  266,  267,  268,  389,  445,  391,  392,  393,
  394,  427,  428,  405,  405,  439,  446,  446,  434,  435,
  436,  437,  424,  425,  426,  427,  428,  429,  430,  431,
  449,  449,  449,  434,  448,  451,  424,  425,  426,  427,
  428,  429,  430,  431,  446,  427,  428,  427,  428,  429,
  430,  431,  434,  441,  436,  501,  449,  503,  504,  505,
  444,  507,  449,  327,  328,  329,  330,  331,  332,  333,
  334,  335,  336,  337,  338,  339,  340,  341,  342,  343,
  344,  345,  346,  347,  348,  349,  350,  351,  352,  353,
  354,  355,  356,  357,  358,  359,  360,  361,  362,  363,
  364,  365,  366,  367,  368,  369,  370,  371,  372,  373,
  374,  375,  376,  377,  378,  379,  380,  381,  382,  383,
  434,  434,  434,  434,  388,  389,  390,  391,  392,  393,
  394,  395,  396,  397,  398,  399,  400,  401,  402,  403,
  404,  256,  435,  443,  436,  442,  256,  257,  258,  259,
  260,  261,  262,  263,  264,  442,  442,  442,  442,  269,
  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
  280,  281,  282,  283,  284,  285,  286,  287,  288,  289,
  442,  291,  442,  442,  448,  295,  296,  297,  298,  299,
  300,  442,  302,  303,  304,  305,  306,  307,  308,  309,
  310,  256,  257,  258,  259,  260,  261,  262,  263,  264,
  442,  442,  442,  440,  269,  270,  271,  272,  273,  274,
  275,  276,  277,  278,  279,  280,  281,  282,  283,  284,
  285,  286,  287,  288,  289,  446,  291,  446,  446,  446,
  295,  296,  297,  298,  299,  300,  447,  302,  303,  304,
  305,  306,  307,  308,  309,  310,  256,  257,  258,  259,
  260,  261,  262,  263,  264,  449,  439,  446,  443,  269,
  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
  280,  281,  282,  283,  284,  285,  286,  287,  288,  289,
  446,  291,  441,  441,  441,  295,  296,  297,  298,  299,
  300,  441,  302,  303,  304,  305,  306,  307,  308,  309,
  310,  441,  422,  423,  424,  425,  426,  427,  428,  429,
  430,  431,  441,  441,  378,  435,  434,  437,  434,  434,
  440,  441,  434,  443,  434,  389,  446,  391,  392,  393,
  394,  451,  405,  406,  407,  408,  409,  410,  411,  412,
  413,  414,  415,  416,  417,  418,  419,  420,  421,  406,
  407,  408,  409,  410,  411,  412,  413,  422,  423,  424,
  425,  426,  427,  428,  429,  430,  431,  434,  434,  326,
  435,  434,  437,  434,  434,  440,  441,  439,  443,  405,
  434,  446,  434,  439,  443,  443,  451,  378,  414,  415,
  416,  417,  418,  419,  420,  421,  443,  388,  443,  390,
  391,  392,  393,  394,  424,  425,  426,  427,  428,  429,
  430,  431,  422,  423,  424,  425,  426,  427,  428,  429,
  430,  431,  290,  442,  441,  435,  441,  437,  441,  441,
  440,  441,  441,  443,  441,  441,  446,  441,  441,  441,
  441,  451,  256,  257,  258,  259,  260,  261,  262,  263,
  264,  441,  441,  441,  441,  269,  270,  271,  272,  273,
  274,  275,  276,  277,  278,  279,  280,  281,  282,  283,
  284,  285,  286,  287,  288,  289,  441,  291,  441,  441,
  441,  295,  296,  297,  298,  299,  300,  441,  302,  303,
  304,  305,  306,  307,  308,  309,  310,  256,  257,  258,
  259,  260,  261,  262,  263,  264,  439,  441,  321,  441,
  269,  270,  271,  272,  273,  274,  275,  276,  277,  278,
  279,  280,  281,  282,  283,  284,  285,  286,  287,  288,
  289,  441,  291,  441,  441,  441,  295,  296,  297,  298,
  299,  300,  441,  302,  303,  304,  305,  306,  307,  308,
  309,  310,  256,  257,  258,  259,  260,  261,  262,  263,
  264,  441,  441,  441,  441,  269,  270,  271,  272,  273,
  274,  275,  276,  277,  278,  279,  280,  281,  282,  283,
  284,  285,  286,  287,  288,  289,  441,  291,  441,  441,
  441,  295,  296,  297,  298,  299,  300,  441,  302,  303,
  304,  305,  306,  307,  308,  309,  310,  441,  422,  423,
  424,  425,  426,  427,  428,  429,  430,  431,  441,  441,
  441,  435,  441,  437,  441,  441,  440,  441,  443,  443,
  441,  441,  446,  441,  441,  441,  441,  451,  441,  441,
  441,  441,  441,  441,  405,  441,  441,  405,  405,  405,
  447,  405,  405,  443,  439,  436,  436,  436,  436,  429,
  321,  321,  434,  422,  423,  424,  425,  426,  427,  428,
  429,  430,  431,  436,  443,  439,  435,  292,  437,  434,
  405,  440,  441,  434,  443,  434,  405,  446,  405,  441,
  405,  441,  451,  441,  441,  441,  441,  441,  441,  405,
  405,  439,  405,  444,  439,  439,  439,  449,  436,  449,
  449,  440,  436,  440,  435,  441,  846,  440,  422,  423,
  424,  425,  426,  427,  428,  429,  430,  431,  440,  205,
  441,  435,  966,  437,  444,  444,  440,  441,  531,  443,
   78,  752,  446,  444,  900,  937,   -1,  451,  256,  257,
  258,  259,  260,  261,  262,  263,  264,   -1,   -1,   -1,
   -1,  269,  270,  271,  272,  273,  274,  275,  276,  277,
  278,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,   -1,  291,   -1,   -1,   -1,  295,  296,  297,
  298,  299,  300,   -1,  302,  303,  304,  305,  306,  307,
  308,  309,  310,  256,  257,  258,  259,  260,  261,  262,
  263,  264,   -1,   -1,   -1,   -1,  269,  270,  271,  272,
  273,  274,  275,  276,  277,  278,  279,  280,  281,  282,
  283,  284,  285,  286,  287,  288,  289,   -1,  291,   -1,
   -1,   -1,  295,  296,  297,  298,  299,  300,   -1,  302,
  303,  304,  305,  306,  307,  308,  309,  310,  256,  257,
  258,  259,  260,  261,  262,  263,  264,   -1,   -1,   -1,
   -1,  269,  270,  271,  272,  273,  274,  275,  276,  277,
  278,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,   -1,  291,   -1,   -1,   -1,  295,  296,  297,
  298,  299,  300,   -1,  302,  303,  304,  305,  306,  307,
  308,  309,  310,   -1,  422,  423,  424,  425,  426,  427,
  428,  429,  430,  431,   -1,   -1,   -1,  435,   -1,  437,
   -1,   -1,  440,  441,   -1,  443,   -1,   -1,  446,   -1,
   -1,   -1,   -1,  451,   -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,  422,
  423,  424,  425,  426,  427,  428,  429,  430,  431,   -1,
   -1,   -1,  435,   -1,  437,   -1,   -1,  440,  441,   -1,
  443,   -1,   -1,  446,   -1,   -1,   -1,   -1,  451,   -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,  422,  423,  424,  425,  426,  427,
  428,  429,  430,  431,   -1,   -1,   -1,  435,   -1,  437,
   -1,   -1,  440,  441,   -1,  443,   -1,   -1,  446,   -1,
   -1,   -1,   -1,  451,  256,  257,  258,  259,  260,  261,
  262,  263,  264,   -1,   -1,   -1,   -1,  269,  270,  271,
  272,  273,  274,  275,  276,  277,  278,  279,  280,  281,
  282,  283,  284,  285,  286,  287,  288,  289,   -1,  291,
   -1,   -1,   -1,  295,  296,  297,  298,  299,  300,   -1,
  302,  303,  304,  305,  306,  307,  308,  309,  310,  256,
  257,  258,  259,  260,  261,  262,  263,  264,   -1,   -1,
   -1,   -1,  269,  270,  271,  272,  273,  274,  275,  276,
  277,  278,  279,  280,  281,  282,  283,  284,  285,  286,
  287,  288,  289,   -1,  291,  292,  293,  294,  295,  296,
  297,  298,  299,  300,   -1,  302,  303,  304,  305,  306,
  307,  308,  309,  310,  256,  257,  258,  259,  260,  261,
  262,  263,  264,   -1,   -1,   -1,   -1,  269,  270,  271,
  272,  273,  274,  275,  276,  277,  278,  279,  280,  281,
  282,  283,  284,  285,  286,  287,  288,  289,   -1,  291,
   -1,   -1,   -1,  295,  296,  297,  298,  299,  300,   -1,
  302,  303,  304,  305,  306,  307,  308,  309,  310,   -1,
  422,  423,  424,  425,  426,  427,  428,  429,  430,  431,
   -1,   -1,   -1,  435,   -1,  437,   -1,   -1,  440,  441,
   -1,  443,   -1,   -1,  446,   -1,   -1,   -1,   -1,  451,
   -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,  422,  423,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  435,   -1,
  437,   -1,   -1,  440,  441,   -1,  443,  444,   -1,   -1,
   -1,   -1,   -1,   -1,  451,   -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,  435,   -1,  437,   -1,   -1,  440,   -1,
   -1,   -1,  444,   -1,   -1,   -1,   -1,   -1,   -1,  451,
  256,  257,  258,  259,  260,  261,  262,  263,  264,   -1,
   -1,   -1,   -1,  269,  270,  271,  272,  273,  274,  275,
  276,  277,  278,  279,  280,  281,  282,  283,  284,  285,
  286,  287,  288,  289,   -1,  291,   -1,   -1,   -1,  295,
  296,  297,  298,  299,  300,   -1,  302,  303,  304,  305,
  306,  307,  308,  309,  310,  256,  257,  258,  259,  260,
  261,  262,  263,  264,   -1,   -1,   -1,   -1,  269,  270,
  271,  272,  273,  274,  275,  276,  277,  278,  279,  280,
  281,  282,  283,  284,  285,  286,  287,  288,  289,   -1,
  291,   -1,   -1,   -1,  295,  296,  297,  298,  299,  300,
   -1,  302,  303,  304,  305,  306,  307,  308,  309,  310,
  256,  257,  258,  259,  260,  261,  262,  263,  264,   -1,
   -1,   -1,   -1,  269,  270,  271,  272,  273,  274,  275,
  276,  277,  278,  279,  280,  281,  282,  283,  284,  285,
  286,  287,  288,  289,   -1,  291,   -1,   -1,   -1,  295,
  296,  297,  298,  299,  300,   -1,  302,  303,  304,  305,
  306,  307,  308,  309,  310,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  435,
   -1,  437,   -1,   -1,  440,   -1,   -1,   -1,  444,   -1,
   -1,   -1,   -1,   -1,   -1,  451,   -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,  435,   -1,  437,   -1,   -1,  440,
   -1,   -1,   -1,  444,   -1,   -1,   -1,   -1,   -1,   -1,
  451,   -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,  435,
   -1,  437,   -1,   -1,  440,   -1,   -1,   -1,  444,   -1,
   -1,   -1,   -1,   -1,   -1,  451,  256,  257,  258,  259,
  260,  261,  262,  263,  264,   -1,   -1,   -1,   -1,  269,
  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
  280,  281,  282,  283,  284,  285,  286,  287,  288,  289,
   -1,  291,   -1,   -1,   -1,  295,  296,  297,  298,  299,
  300,   -1,  302,  303,  304,  305,  306,  307,  308,  309,
  310,  256,  257,  258,  259,  260,  261,  262,  263,  264,
   -1,   -1,   -1,   -1,  269,  270,  271,  272,  273,  274,
  275,  276,  277,  278,  279,  280,  281,  282,  283,  284,
  285,  286,  287,  288,  289,   -1,  291,   -1,   -1,   -1,
  295,  296,  297,  298,  299,  300,   -1,  302,  303,  304,
  305,  306,  307,  308,  309,  310,  256,  257,  258,  259,
  260,  261,  262,  263,  264,   -1,   -1,   -1,   -1,  269,
  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
  280,  281,  282,  283,  284,  285,  286,  287,  288,  289,
   -1,  291,   -1,   -1,   -1,  295,  296,  297,  298,  299,
  300,   -1,  302,  303,  304,  305,  306,  307,  308,  309,
  310,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  435,   -1,  437,   -1,   -1,
  440,   -1,   -1,   -1,  444,   -1,   -1,   -1,   -1,   -1,
   -1,  451,   -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,
  435,   -1,  437,   -1,   -1,  440,   -1,   -1,   -1,  444,
   -1,   -1,   -1,   -1,   -1,   -1,  451,   -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,  435,   -1,  437,   -1,   -1,
  440,   -1,   -1,   -1,  444,   -1,   -1,   -1,   -1,   -1,
   -1,  451,  256,  257,  258,  259,  260,  261,  262,  263,
  264,   -1,   -1,   -1,   -1,  269,  270,  271,  272,  273,
  274,  275,  276,  277,  278,  279,  280,  281,  282,  283,
  284,  285,  286,  287,  288,  289,   -1,  291,   -1,   -1,
   -1,  295,  296,  297,  298,  299,  300,   -1,  302,  303,
  304,  305,  306,  307,  308,  309,  310,  256,  257,  258,
  259,  260,  261,  262,  263,  264,   -1,   -1,   -1,   -1,
  269,  270,  271,  272,  273,  274,  275,  276,  277,  278,
  279,  280,  281,  282,  283,  284,  285,  286,  287,  288,
  289,   -1,  291,   -1,   -1,   -1,  295,  296,  297,  298,
  299,  300,   -1,  302,  303,  304,  305,  306,  307,  308,
  309,  310,  256,  257,  258,  259,  260,  261,  262,  263,
  264,   -1,   -1,   -1,   -1,  269,  270,  271,  272,  273,
  274,  275,  276,  277,  278,  279,  280,  281,  282,  283,
  284,  285,  286,  287,  288,  289,   -1,  291,   -1,   -1,
  294,  295,  296,  297,  298,  299,  300,   -1,  302,  303,
  304,  305,  306,  307,  308,  309,  310,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  435,   -1,  437,   -1,   -1,  440,   -1,   -1,   -1,
  444,   -1,   -1,   -1,   -1,   -1,   -1,  451,   -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,  435,   -1,  437,   -1,
   -1,  440,   -1,   -1,   -1,  444,   -1,   -1,   -1,   -1,
   -1,   -1,  451,   -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,  435,   -1,  437,   -1,   -1,  440,  256,  257,  258,
  259,  260,  261,  262,  263,  264,   -1,  451,   -1,   -1,
  269,  270,  271,  272,  273,  274,  275,  276,  277,  278,
  279,  280,  281,  282,  283,  284,  285,  286,  287,  288,
  289,   -1,  291,   -1,   -1,  294,  295,  296,  297,  298,
  299,  300,   -1,  302,  303,  304,  305,  306,  307,  308,
  309,  310,  256,  257,  258,  259,  260,  261,  262,  263,
  264,   -1,   -1,   -1,   -1,  269,  270,  271,  272,  273,
  274,  275,  276,  277,  278,  279,  280,  281,  282,  283,
  284,  285,  286,  287,  288,  289,   -1,  291,   -1,   -1,
   -1,  295,  296,  297,  298,  299,  300,   -1,  302,  303,
  304,  305,  306,  307,  308,  309,  310,  257,  258,  259,
  260,  261,  262,  263,  264,   -1,   -1,   -1,   -1,  269,
  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
  280,  281,  282,  283,  284,  285,  286,  287,  288,  289,
   -1,   -1,   -1,   -1,   -1,  295,  296,  297,  298,  299,
  300,   -1,  302,  303,  304,  305,  306,  307,  308,  309,
  310,  311,  312,  313,  314,  315,  316,  317,  318,  319,
  320,  321,  322,   -1,   -1,   -1,  435,   -1,  437,   -1,
   -1,  440,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  451,   -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,  435,   -1,  437,   -1,   -1,  440,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  451,   -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,  427,  428,   -1,
   -1,   -1,  432,   -1,  434,  435,   -1,  437,   -1,   -1,
   -1,   -1,  442,  443,   -1,  445,   -1,   -1,   -1,   -1,
   -1,  451,  257,  258,  259,  260,  261,  262,  263,  264,
   -1,   -1,   -1,   -1,  269,  270,  271,  272,  273,  274,
  275,  276,  277,  278,  279,  280,  281,  282,  283,  284,
  285,  286,  287,  288,   -1,   -1,   -1,   -1,   -1,   -1,
  295,  296,  297,  298,  299,  300,   -1,  302,  303,  304,
  305,  306,  307,  308,  309,  310,  311,  312,  313,  314,
  315,  316,  317,  318,  319,  320,  321,  322,  257,  258,
  259,  260,  261,  262,  263,  264,   -1,   -1,   -1,   -1,
  269,  270,  271,  272,  273,  274,  275,  276,  277,  278,
  279,  280,  281,  282,  283,  284,  285,  286,  287,  288,
   -1,   -1,   -1,   -1,   -1,   -1,  295,  296,  297,  298,
  299,  300,   -1,  302,  303,  304,  305,  306,  307,  308,
  309,  310,  311,  312,  313,  314,  315,  316,  317,  318,
  319,  320,  321,  322,   -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,  427,  428,   -1,   -1,   -1,   -1,  433,  434,
  435,  436,  437,   -1,   -1,   -1,   -1,  442,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  451,   -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,  427,  428,
   -1,   -1,   -1,   -1,  433,  434,  435,  436,  437,   -1,
   -1,   -1,   -1,  442,  257,  258,  259,  260,  261,  262,
  263,  264,  451,   -1,   -1,   -1,  269,  270,  271,  272,
  273,  274,  275,  276,  277,  278,  279,  280,  281,  282,
  283,  284,  285,  286,  287,  288,  289,   -1,  291,   -1,
   -1,   -1,  295,  296,  297,  298,  299,  300,   -1,  302,
  303,  304,  305,  306,  307,  308,  309,  310,  257,  258,
  259,  260,  261,  262,  263,  264,   -1,   -1,   -1,   -1,
  269,  270,  271,  272,  273,  274,  275,  276,  277,  278,
  279,  280,  281,  282,  283,  284,  285,  286,  287,  288,
  289,   -1,  291,   -1,   -1,   -1,  295,  296,  297,  298,
  299,  300,   -1,  302,  303,  304,  305,  306,  307,  308,
  309,  310,  257,  258,  259,  260,  261,  262,  263,  264,
   -1,   -1,   -1,   -1,  269,  270,  271,  272,  273,  274,
  275,  276,  277,  278,  279,  280,  281,  282,  283,  284,
  285,  286,  287,  288,  289,   -1,  291,   -1,   -1,   -1,
  295,  296,  297,  298,  299,  300,   -1,  302,  303,  304,
  305,  306,  307,  308,  309,  310,   -1,   -1,   -1,  422,
  423,  424,  425,  426,  427,  428,  429,  430,  431,   -1,
   -1,   -1,  435,   -1,  437,   -1,   -1,  440,  441,   -1,
  443,   -1,   -1,  446,   -1,   -1,   -1,   -1,  451,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  422,  423,  424,  425,  426,  427,  428,
  429,  430,  431,   -1,   -1,   -1,  435,   -1,  437,   -1,
   -1,  440,  441,   -1,  443,   -1,   -1,  446,   -1,   -1,
   -1,   -1,  451,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  422,  423,  424,
  425,  426,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  435,   -1,  437,   -1,   -1,  440,  441,   -1,  443,   -1,
   -1,  446,   -1,   -1,   -1,   -1,  451,  257,  258,  259,
  260,  261,  262,  263,  264,   -1,   -1,   -1,   -1,  269,
  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
  280,  281,  282,  283,  284,  285,  286,  287,  288,  289,
   -1,  291,   -1,   -1,   -1,  295,  296,  297,  298,  299,
  300,   -1,  302,  303,  304,  305,  306,  307,  308,  309,
  310,  257,  258,  259,  260,  261,  262,  263,  264,   -1,
   -1,   -1,   -1,  269,  270,  271,  272,  273,  274,  275,
  276,  277,  278,  279,  280,  281,  282,  283,  284,  285,
  286,  287,  288,  289,   -1,  291,   -1,   -1,   -1,  295,
  296,  297,  298,  299,  300,   -1,  302,  303,  304,  305,
  306,  307,  308,  309,  310,  257,  258,  259,  260,  261,
  262,  263,  264,   -1,   -1,   -1,   -1,  269,  270,  271,
  272,  273,  274,  275,  276,  277,  278,  279,  280,  281,
  282,  283,  284,  285,  286,  287,  288,  289,   -1,  291,
   -1,   -1,   -1,  295,  296,  297,  298,  299,  300,   -1,
  302,  303,  304,  305,  306,  307,  308,  309,  310,   -1,
   -1,   -1,  422,  423,  424,  425,  426,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  435,   -1,  437,   -1,   -1,
  440,  441,   -1,  443,   -1,   -1,  446,   -1,   -1,   -1,
   -1,  451,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  422,  423,  424,  425,
  426,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  435,
   -1,  437,   -1,   -1,  440,  441,   -1,  443,   -1,   -1,
  446,   -1,   -1,   -1,   -1,  451,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  422,  423,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  435,   -1,  437,   -1,  439,  440,  441,
   -1,  443,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  451,
  257,  258,  259,  260,  261,  262,  263,  264,   -1,   -1,
   -1,   -1,  269,  270,  271,  272,  273,  274,  275,  276,
  277,  278,  279,  280,  281,  282,  283,  284,  285,  286,
  287,  288,  289,   -1,  291,   -1,   -1,   -1,  295,  296,
  297,  298,  299,  300,   -1,  302,  303,  304,  305,  306,
  307,  308,  309,  310,  257,  258,  259,  260,  261,  262,
  263,  264,   -1,   -1,   -1,   -1,  269,  270,  271,  272,
  273,  274,  275,  276,  277,  278,  279,  280,  281,  282,
  283,  284,  285,  286,  287,  288,  289,   -1,  291,   -1,
   -1,   -1,  295,  296,  297,  298,  299,  300,   -1,  302,
  303,  304,  305,  306,  307,  308,  309,  310,  257,  258,
  259,  260,  261,  262,  263,  264,   -1,   -1,   -1,   -1,
  269,  270,  271,  272,  273,  274,  275,  276,  277,  278,
  279,  280,  281,  282,  283,  284,  285,  286,  287,  288,
  289,   -1,  291,   -1,   -1,   -1,  295,  296,  297,  298,
  299,  300,   -1,  302,  303,  304,  305,  306,  307,  308,
  309,  310,   -1,   -1,   -1,  422,  423,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  435,   -1,
  437,   -1,  439,  440,  441,   -1,  443,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  451,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  422,
  423,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  435,   -1,  437,   -1,   -1,  440,  441,   -1,
  443,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  451,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  422,  423,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  435,   -1,  437,   -1,
   -1,  440,  441,   -1,  443,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  451,  257,  258,  259,  260,  261,  262,  263,
  264,   -1,   -1,   -1,   -1,  269,  270,  271,  272,  273,
  274,  275,  276,  277,  278,  279,  280,  281,  282,  283,
  284,  285,  286,  287,  288,  289,   -1,  291,   -1,   -1,
   -1,  295,  296,  297,  298,  299,  300,   -1,  302,  303,
  304,  305,  306,  307,  308,  309,  310,  257,  258,  259,
  260,  261,  262,  263,  264,   -1,   -1,   -1,   -1,  269,
  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
  280,  281,  282,  283,  284,  285,  286,  287,  288,  289,
   -1,  291,   -1,   -1,   -1,  295,  296,  297,  298,  299,
  300,   -1,  302,  303,  304,  305,  306,  307,  308,  309,
  310,  257,  258,  259,  260,  261,  262,  263,  264,   -1,
   -1,   -1,   -1,  269,  270,  271,  272,  273,  274,  275,
  276,  277,  278,  279,  280,  281,  282,  283,  284,  285,
  286,  287,  288,  289,   -1,  291,   -1,   -1,   -1,  295,
  296,  297,  298,  299,  300,   -1,  302,  303,  304,  305,
  306,  307,  308,  309,  310,   -1,   -1,   -1,  422,  423,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  435,   -1,  437,   -1,   -1,  440,  441,   -1,  443,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  451,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  422,  423,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  435,   -1,  437,   -1,   -1,
  440,  441,   -1,  443,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  451,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  422,  423,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  435,
   -1,  437,   -1,   -1,  440,  441,   -1,  443,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  451,  257,  258,  259,  260,
  261,  262,  263,  264,   -1,   -1,   -1,   -1,  269,  270,
  271,  272,  273,  274,  275,  276,  277,  278,  279,  280,
  281,  282,  283,  284,  285,  286,  287,  288,  289,   -1,
  291,   -1,   -1,   -1,  295,  296,  297,  298,  299,  300,
   -1,  302,  303,  304,  305,  306,  307,  308,  309,  310,
  257,  258,  259,  260,  261,  262,  263,  264,   -1,   -1,
   -1,   -1,  269,  270,  271,  272,  273,  274,  275,  276,
  277,  278,  279,  280,  281,  282,  283,  284,  285,  286,
  287,  288,  289,   -1,  291,   -1,   -1,   -1,  295,  296,
  297,  298,  299,  300,   -1,  302,  303,  304,  305,  306,
  307,  308,  309,  310,  257,  258,  259,  260,  261,  262,
  263,  264,   -1,   -1,   -1,   -1,  269,  270,  271,  272,
  273,  274,  275,  276,  277,  278,  279,  280,  281,  282,
  283,  284,  285,  286,  287,  288,  289,   -1,  291,   -1,
   -1,   -1,  295,  296,  297,  298,  299,  300,   -1,  302,
  303,  304,  305,  306,  307,  308,  309,  310,   -1,   -1,
   -1,  422,  423,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  435,   -1,  437,   -1,   -1,  440,
   -1,   -1,  443,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  451,   -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,  435,   -1,
  437,   -1,   -1,  440,   -1,   -1,   -1,  444,   -1,   -1,
   -1,   -1,   -1,   -1,  451,   -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,  435,   -1,  437,   -1,   -1,  440,   -1,   -1,
   -1,  444,   -1,   -1,   -1,   -1,   -1,   -1,  451,  257,
  258,  259,  260,  261,  262,  263,  264,   -1,   -1,   -1,
   -1,  269,  270,  271,  272,  273,  274,  275,  276,  277,
  278,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,   -1,  291,   -1,   -1,   -1,  295,  296,  297,
  298,  299,  300,   -1,  302,  303,  304,  305,  306,  307,
  308,  309,  310,  257,  258,  259,  260,  261,  262,  263,
  264,   -1,   -1,   -1,   -1,  269,  270,  271,  272,  273,
  274,  275,  276,  277,  278,  279,  280,  281,  282,  283,
  284,  285,  286,  287,  288,  289,   -1,  291,   -1,   -1,
  294,  295,  296,  297,  298,  299,  300,   -1,  302,  303,
  304,  305,  306,  307,  308,  309,  310,  257,  258,  259,
  260,  261,  262,  263,  264,   -1,   -1,   -1,   -1,  269,
  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
  280,  281,  282,  283,  284,  285,  286,  287,  288,  289,
   -1,  291,   -1,   -1,  294,  295,  296,  297,  298,  299,
  300,   -1,  302,  303,  304,  305,  306,  307,  308,  309,
  310,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  435,   -1,  437,
   -1,   -1,  440,   -1,   -1,  443,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  451,   -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,  435,   -1,  437,   -1,   -1,  440,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  451,   -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,  256,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  435,   -1,  437,   -1,   -1,
  440,  257,  258,  259,  260,  261,  262,  263,  264,   -1,
   -1,  451,   -1,  269,  270,  271,  272,  273,  274,  275,
  276,  277,  278,  279,  280,  281,  282,  283,  284,  285,
  286,  287,  288,  289,   -1,  291,   -1,   -1,   -1,  295,
  296,  297,  298,  299,  300,   -1,  302,  303,  304,  305,
  306,  307,  308,  309,  310,  327,  328,  329,  330,  331,
  332,  333,  334,  335,  336,  337,  338,  339,  340,  341,
  342,  343,  344,  345,  346,  347,  348,  349,  350,  351,
  352,  353,  354,  355,  356,  357,  358,  359,  360,  361,
  362,  363,  364,  365,  366,  367,  368,  369,  370,  371,
  372,  373,  374,  375,  376,  377,  378,  379,  380,  381,
  382,  383,   -1,   -1,   -1,   -1,  388,  389,  390,  391,
  392,  393,  394,  395,  396,  397,  398,  399,  400,  401,
  402,  403,  404,  256,   -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,  448,   -1,   -1,  435,
   -1,  437,   -1,   -1,  440,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  451,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  327,  328,  329,  330,  331,  332,
  333,  334,  335,  336,  337,  338,  339,  340,  341,  342,
  343,  344,  345,  346,  347,  348,  349,  350,  351,  352,
  353,  354,  355,  356,  357,  358,  359,  360,  361,  362,
  363,  364,  365,  366,  367,  368,  369,  370,  371,  372,
  373,  374,  375,  376,  377,  378,  379,  380,  381,  382,
  383,   -1,   -1,   -1,   -1,  388,  389,  390,  391,  392,
  393,  394,  395,  396,  397,  398,  399,  400,  401,  402,
  403,  404,   -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,  448,
};
#define YYFINAL 77
#ifndef YYDEBUG
#define YYDEBUG 0
#endif
#define YYMAXTOKEN 451
#if YYDEBUG
char *yyname[] = {
"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"FORWARD","SEND","DROP","EXIT",
"RETURN","LOG_TOK","ERROR","ROUTE","ROUTE_FAILURE","ROUTE_ONREPLY",
"ROUTE_BRANCH","ROUTE_ERROR","SET_HOST","SET_HOSTPORT","PREFIX",
"SET_TIME_STAMP","RESET_TIME_STAMP","DIFF_TIME_STAMP","STRIP","STRIP_TAIL",
"APPEND_BRANCH","SET_USER","SET_USERPASS","SET_PORT","SET_URI","REVERT_URI",
"SET_DSTURI","RESET_DSTURI","ISDSTURISET","FORCE_RPORT","FORCE_LOCAL_RPORT",
"FORCE_TCP_ALIAS","IF","ELSE","SWITCH","CASE","DEFAULT","SBREAK",
"SET_ADV_ADDRESS","SET_ADV_PORT","FORCE_SEND_SOCKET","SERIALIZE_BRANCHES",
"NEXT_BRANCHES","USE_BLACKLIST","MAX_LEN","SETFLAG","RESETFLAG","ISFLAGSET",
"SETBFLAG","RESETBFLAG","ISBFLAGSET","SETSFLAG","RESETSFLAG","ISSFLAGSET",
"METHOD","URI","FROM_URI","TO_URI","SRCIP","SRCPORT","DSTIP","DSTPORT","PROTO",
"AF","MYSELF","MSGLEN","UDP","TCP","TLS","NULLV","DEBUG","FORK","LOGSTDERROR",
"LOGFACILITY","LOGNAME","AVP_ALIASES","LISTEN","ALIAS","AUTO_ALIASES","DNS",
"REV_DNS","DNS_TRY_IPV6","DNS_RETR_TIME","DNS_RETR_NO","DNS_SERVERS_NO",
"DNS_USE_SEARCH","PORT","CHILDREN","CHECK_VIA","MEMLOG","SIP_WARNING",
"SOCK_MODE","SOCK_USER","SOCK_GROUP","UNIX_SOCK","UNIX_SOCK_CHILDREN",
"UNIX_TX_TIMEOUT","SERVER_SIGNATURE","SERVER_HEADER","USER_AGENT_HEADER",
"REPLY_TO_VIA","LOADMODULE","MPATH","MODPARAM","MAXBUFFER","USER","GROUP",
"CHROOT","WDIR","MHOMED","DISABLE_TCP","TCP_ACCEPT_ALIASES","TCP_CHILDREN",
"TCP_CONNECT_TIMEOUT","TCP_SEND_TIMEOUT","TCP_CON_LIFETIME","TCP_POLL_METHOD",
"TCP_MAX_CONNECTIONS","DISABLE_TLS","TLSLOG","TLS_PORT_NO","TLS_METHOD",
"TLS_HANDSHAKE_TIMEOUT","TLS_SEND_TIMEOUT","TLS_SERVER_DOMAIN",
"TLS_CLIENT_DOMAIN","TLS_CLIENT_DOMAIN_AVP","SSLv23","SSLv2","SSLv3","TLSv1",
"TLS_VERIFY_CLIENT","TLS_VERIFY_SERVER","TLS_REQUIRE_CLIENT_CERTIFICATE",
"TLS_CERTIFICATE","TLS_PRIVATE_KEY","TLS_CA_LIST","TLS_CIPHERS_LIST",
"ADVERTISED_ADDRESS","ADVERTISED_PORT","DISABLE_CORE","OPEN_FD_LIMIT",
"MCAST_LOOPBACK","MCAST_TTL","TOS","DISABLE_DNS_FAILOVER",
"DISABLE_DNS_BLACKLIST","DST_BLACKLIST","EQUAL","EQUAL_T","GT","LT","GTE","LTE",
"DIFF","MATCH","NOTMATCH","PLUSEQ","MINUSEQ","SLASHEQ","MULTEQ","MODULOEQ",
"BANDEQ","BOREQ","BXOREQ","OR","AND","BOR","BAND","BXOR","PLUS","MINUS","SLASH",
"MULT","MODULO","NOT","BNOT","NUMBER","ID","STRING","SCRIPTVAR","IPV6ADDR",
"COMMA","SEMICOLON","RPAREN","LPAREN","LBRACE","RBRACE","LBRACK","RBRACK","DOT",
"CR","COLON","ANY","SCRIPTVARERR",
};
char *yyrule[] = {
"$accept : cfg",
"cfg : statements",
"statements : statements statement",
"statements : statement",
"statements : statements error",
"statement : assign_stm",
"statement : module_stm",
"$$1 :",
"statement : $$1 route_stm",
"$$2 :",
"statement : $$2 failure_route_stm",
"$$3 :",
"statement : $$3 onreply_route_stm",
"$$4 :",
"statement : $$4 branch_route_stm",
"$$5 :",
"statement : $$5 error_route_stm",
"statement : CR",
"listen_id : ip",
"listen_id : STRING",
"listen_id : host",
"proto : UDP",
"proto : TCP",
"proto : TLS",
"proto : ANY",
"port : NUMBER",
"port : ANY",
"snumber : NUMBER",
"snumber : PLUS NUMBER",
"snumber : MINUS NUMBER",
"phostport : listen_id",
"phostport : listen_id COLON port",
"phostport : proto COLON listen_id",
"phostport : proto COLON listen_id COLON port",
"phostport : listen_id COLON error",
"id_lst : phostport",
"id_lst : phostport id_lst",
"blst_elem : LPAREN proto COMMA ipnet COMMA port COMMA STRING RPAREN",
"blst_elem : NOT LPAREN proto COMMA ipnet COMMA port COMMA STRING RPAREN",
"blst_elem_list : blst_elem_list COMMA blst_elem",
"blst_elem_list : blst_elem",
"blst_elem_list : blst_elem_list error",
"assign_stm : DEBUG EQUAL NUMBER",
"assign_stm : DEBUG EQUAL error",
"assign_stm : FORK EQUAL NUMBER",
"assign_stm : FORK EQUAL error",
"assign_stm : LOGSTDERROR EQUAL NUMBER",
"assign_stm : LOGSTDERROR EQUAL error",
"assign_stm : LOGFACILITY EQUAL ID",
"assign_stm : LOGFACILITY EQUAL error",
"assign_stm : LOGNAME EQUAL STRING",
"assign_stm : LOGNAME EQUAL error",
"assign_stm : AVP_ALIASES EQUAL STRING",
"assign_stm : AVP_ALIASES EQUAL error",
"assign_stm : DNS EQUAL NUMBER",
"assign_stm : DNS EQUAL error",
"assign_stm : REV_DNS EQUAL NUMBER",
"assign_stm : REV_DNS EQUAL error",
"assign_stm : DNS_TRY_IPV6 EQUAL NUMBER",
"assign_stm : DNS_TRY_IPV6 error",
"assign_stm : DNS_RETR_TIME EQUAL NUMBER",
"assign_stm : DNS_RETR_TIME error",
"assign_stm : DNS_RETR_NO EQUAL NUMBER",
"assign_stm : DNS_RETR_NO error",
"assign_stm : DNS_SERVERS_NO EQUAL NUMBER",
"assign_stm : DNS_SERVERS_NO error",
"assign_stm : DNS_USE_SEARCH EQUAL NUMBER",
"assign_stm : DNS_USE_SEARCH error",
"assign_stm : PORT EQUAL NUMBER",
"assign_stm : MAXBUFFER EQUAL NUMBER",
"assign_stm : MAXBUFFER EQUAL error",
"assign_stm : PORT EQUAL error",
"assign_stm : CHILDREN EQUAL NUMBER",
"assign_stm : CHILDREN EQUAL error",
"assign_stm : CHECK_VIA EQUAL NUMBER",
"assign_stm : CHECK_VIA EQUAL error",
"assign_stm : MEMLOG EQUAL NUMBER",
"assign_stm : MEMLOG EQUAL error",
"assign_stm : SIP_WARNING EQUAL NUMBER",
"assign_stm : SIP_WARNING EQUAL error",
"assign_stm : SOCK_MODE EQUAL NUMBER",
"assign_stm : SOCK_MODE EQUAL error",
"assign_stm : SOCK_USER EQUAL STRING",
"assign_stm : SOCK_USER EQUAL ID",
"assign_stm : SOCK_USER EQUAL error",
"assign_stm : SOCK_GROUP EQUAL STRING",
"assign_stm : SOCK_GROUP EQUAL ID",
"assign_stm : SOCK_GROUP EQUAL error",
"assign_stm : UNIX_SOCK EQUAL STRING",
"assign_stm : UNIX_SOCK EQUAL error",
"assign_stm : UNIX_SOCK_CHILDREN EQUAL NUMBER",
"assign_stm : UNIX_SOCK_CHILDREN EQUAL error",
"assign_stm : UNIX_TX_TIMEOUT EQUAL NUMBER",
"assign_stm : UNIX_TX_TIMEOUT EQUAL error",
"assign_stm : USER EQUAL STRING",
"assign_stm : USER EQUAL ID",
"assign_stm : USER EQUAL error",
"assign_stm : GROUP EQUAL STRING",
"assign_stm : GROUP EQUAL ID",
"assign_stm : GROUP EQUAL error",
"assign_stm : CHROOT EQUAL STRING",
"assign_stm : CHROOT EQUAL ID",
"assign_stm : CHROOT EQUAL error",
"assign_stm : WDIR EQUAL STRING",
"assign_stm : WDIR EQUAL ID",
"assign_stm : WDIR EQUAL error",
"assign_stm : MHOMED EQUAL NUMBER",
"assign_stm : MHOMED EQUAL error",
"assign_stm : DISABLE_TCP EQUAL NUMBER",
"assign_stm : DISABLE_TCP EQUAL error",
"assign_stm : TCP_ACCEPT_ALIASES EQUAL NUMBER",
"assign_stm : TCP_ACCEPT_ALIASES EQUAL error",
"assign_stm : TCP_CHILDREN EQUAL NUMBER",
"assign_stm : TCP_CHILDREN EQUAL error",
"assign_stm : TCP_CONNECT_TIMEOUT EQUAL NUMBER",
"assign_stm : TCP_CONNECT_TIMEOUT EQUAL error",
"assign_stm : TCP_SEND_TIMEOUT EQUAL NUMBER",
"assign_stm : TCP_SEND_TIMEOUT EQUAL error",
"assign_stm : TCP_CON_LIFETIME EQUAL NUMBER",
"assign_stm : TCP_CON_LIFETIME EQUAL error",
"assign_stm : TCP_POLL_METHOD EQUAL ID",
"assign_stm : TCP_POLL_METHOD EQUAL STRING",
"assign_stm : TCP_POLL_METHOD EQUAL error",
"assign_stm : TCP_MAX_CONNECTIONS EQUAL NUMBER",
"assign_stm : TCP_MAX_CONNECTIONS EQUAL error",
"assign_stm : DISABLE_TLS EQUAL NUMBER",
"assign_stm : DISABLE_TLS EQUAL error",
"assign_stm : TLSLOG EQUAL NUMBER",
"assign_stm : TLSLOG EQUAL error",
"assign_stm : TLS_PORT_NO EQUAL NUMBER",
"assign_stm : TLS_PORT_NO EQUAL error",
"assign_stm : TLS_METHOD EQUAL SSLv23",
"assign_stm : TLS_METHOD EQUAL SSLv2",
"assign_stm : TLS_METHOD EQUAL SSLv3",
"assign_stm : TLS_METHOD EQUAL TLSv1",
"assign_stm : TLS_METHOD EQUAL error",
"assign_stm : TLS_VERIFY_CLIENT EQUAL NUMBER",
"assign_stm : TLS_VERIFY_CLIENT EQUAL error",
"assign_stm : TLS_VERIFY_SERVER EQUAL NUMBER",
"assign_stm : TLS_VERIFY_SERVER EQUAL error",
"assign_stm : TLS_REQUIRE_CLIENT_CERTIFICATE EQUAL NUMBER",
"assign_stm : TLS_REQUIRE_CLIENT_CERTIFICATE EQUAL error",
"assign_stm : TLS_CERTIFICATE EQUAL STRING",
"assign_stm : TLS_CERTIFICATE EQUAL error",
"assign_stm : TLS_PRIVATE_KEY EQUAL STRING",
"assign_stm : TLS_PRIVATE_KEY EQUAL error",
"assign_stm : TLS_CA_LIST EQUAL STRING",
"assign_stm : TLS_CA_LIST EQUAL error",
"assign_stm : TLS_CIPHERS_LIST EQUAL STRING",
"assign_stm : TLS_CIPHERS_LIST EQUAL error",
"assign_stm : TLS_HANDSHAKE_TIMEOUT EQUAL NUMBER",
"assign_stm : TLS_HANDSHAKE_TIMEOUT EQUAL error",
"assign_stm : TLS_SEND_TIMEOUT EQUAL NUMBER",
"assign_stm : TLS_SEND_TIMEOUT EQUAL error",
"assign_stm : TLS_CLIENT_DOMAIN_AVP EQUAL NUMBER",
"assign_stm : TLS_CLIENT_DOMAIN_AVP EQUAL error",
"assign_stm : tls_server_domain_stm",
"assign_stm : tls_client_domain_stm",
"assign_stm : SERVER_SIGNATURE EQUAL NUMBER",
"assign_stm : SERVER_SIGNATURE EQUAL error",
"assign_stm : SERVER_HEADER EQUAL STRING",
"assign_stm : SERVER_HEADER EQUAL error",
"assign_stm : USER_AGENT_HEADER EQUAL STRING",
"assign_stm : USER_AGENT_HEADER EQUAL error",
"assign_stm : REPLY_TO_VIA EQUAL NUMBER",
"assign_stm : REPLY_TO_VIA EQUAL error",
"assign_stm : LISTEN EQUAL id_lst",
"assign_stm : LISTEN EQUAL error",
"assign_stm : ALIAS EQUAL id_lst",
"assign_stm : ALIAS EQUAL error",
"assign_stm : AUTO_ALIASES EQUAL NUMBER",
"assign_stm : AUTO_ALIASES EQUAL error",
"assign_stm : ADVERTISED_ADDRESS EQUAL listen_id",
"assign_stm : ADVERTISED_ADDRESS EQUAL error",
"assign_stm : ADVERTISED_PORT EQUAL NUMBER",
"assign_stm : ADVERTISED_PORT EQUAL error",
"assign_stm : DISABLE_CORE EQUAL NUMBER",
"assign_stm : DISABLE_CORE EQUAL error",
"assign_stm : OPEN_FD_LIMIT EQUAL NUMBER",
"assign_stm : OPEN_FD_LIMIT EQUAL error",
"assign_stm : MCAST_LOOPBACK EQUAL NUMBER",
"assign_stm : MCAST_LOOPBACK EQUAL error",
"assign_stm : MCAST_TTL EQUAL NUMBER",
"assign_stm : MCAST_TTL EQUAL error",
"assign_stm : TOS EQUAL NUMBER",
"assign_stm : TOS EQUAL ID",
"assign_stm : TOS EQUAL error",
"assign_stm : MPATH EQUAL STRING",
"assign_stm : MPATH EQUAL error",
"assign_stm : DISABLE_DNS_FAILOVER EQUAL NUMBER",
"assign_stm : DISABLE_DNS_FAILOVER error",
"assign_stm : DISABLE_DNS_BLACKLIST EQUAL NUMBER",
"assign_stm : DISABLE_DNS_BLACKLIST error",
"assign_stm : error EQUAL",
"assign_stm : DST_BLACKLIST EQUAL ID COLON LBRACE blst_elem_list RBRACE",
"module_stm : LOADMODULE STRING",
"module_stm : LOADMODULE error",
"module_stm : MODPARAM LPAREN STRING COMMA STRING COMMA STRING RPAREN",
"module_stm : MODPARAM LPAREN STRING COMMA STRING COMMA snumber RPAREN",
"module_stm : MODPARAM error",
"ip : ipv4",
"ip : ipv6",
"ipv4 : NUMBER DOT NUMBER DOT NUMBER DOT NUMBER",
"ipv6addr : IPV6ADDR",
"ipv6 : ipv6addr",
"ipv6 : LBRACK ipv6addr RBRACK",
"$$6 :",
"tls_server_domain_stm : TLS_SERVER_DOMAIN LBRACK ip COLON port RBRACK $$6 LBRACE tls_server_decls RBRACE",
"$$7 :",
"tls_client_domain_stm : TLS_CLIENT_DOMAIN LBRACK ip COLON port RBRACK $$7 LBRACE tls_client_decls RBRACE",
"$$8 :",
"tls_client_domain_stm : TLS_CLIENT_DOMAIN LBRACK STRING RBRACK $$8 LBRACE tls_client_decls RBRACE",
"tls_server_decls : tls_server_var",
"tls_server_decls : tls_server_decls tls_server_var",
"tls_client_decls : tls_client_var",
"tls_client_decls : tls_client_decls tls_client_var",
"tls_server_var : TLS_METHOD EQUAL SSLv23",
"tls_server_var : TLS_METHOD EQUAL SSLv2",
"tls_server_var : TLS_METHOD EQUAL SSLv3",
"tls_server_var : TLS_METHOD EQUAL TLSv1",
"tls_server_var : TLS_METHOD EQUAL error",
"tls_server_var : TLS_CERTIFICATE EQUAL STRING",
"tls_server_var : TLS_CERTIFICATE EQUAL error",
"tls_server_var : TLS_PRIVATE_KEY EQUAL STRING",
"tls_server_var : TLS_PRIVATE_KEY EQUAL error",
"tls_server_var : TLS_CA_LIST EQUAL STRING",
"tls_server_var : TLS_CA_LIST EQUAL error",
"tls_server_var : TLS_CIPHERS_LIST EQUAL STRING",
"tls_server_var : TLS_CIPHERS_LIST EQUAL error",
"tls_server_var : TLS_VERIFY_CLIENT EQUAL NUMBER",
"tls_server_var : TLS_VERIFY_CLIENT EQUAL error",
"tls_server_var : TLS_REQUIRE_CLIENT_CERTIFICATE EQUAL NUMBER",
"tls_server_var : TLS_REQUIRE_CLIENT_CERTIFICATE EQUAL error",
"tls_client_var : TLS_METHOD EQUAL SSLv23",
"tls_client_var : TLS_METHOD EQUAL SSLv2",
"tls_client_var : TLS_METHOD EQUAL SSLv3",
"tls_client_var : TLS_METHOD EQUAL TLSv1",
"tls_client_var : TLS_METHOD EQUAL error",
"tls_client_var : TLS_CERTIFICATE EQUAL STRING",
"tls_client_var : TLS_CERTIFICATE EQUAL error",
"tls_client_var : TLS_PRIVATE_KEY EQUAL STRING",
"tls_client_var : TLS_PRIVATE_KEY EQUAL error",
"tls_client_var : TLS_CA_LIST EQUAL STRING",
"tls_client_var : TLS_CA_LIST EQUAL error",
"tls_client_var : TLS_CIPHERS_LIST EQUAL STRING",
"tls_client_var : TLS_CIPHERS_LIST EQUAL error",
"tls_client_var : TLS_VERIFY_SERVER EQUAL NUMBER",
"tls_client_var : TLS_VERIFY_SERVER EQUAL error",
"route_stm : ROUTE LBRACE actions RBRACE",
"route_stm : ROUTE LBRACK NUMBER RBRACK LBRACE actions RBRACE",
"route_stm : ROUTE error",
"failure_route_stm : ROUTE_FAILURE LBRACK NUMBER RBRACK LBRACE actions RBRACE",
"failure_route_stm : ROUTE_FAILURE error",
"onreply_route_stm : ROUTE_ONREPLY LBRACE actions RBRACE",
"onreply_route_stm : ROUTE_ONREPLY LBRACK NUMBER RBRACK LBRACE actions RBRACE",
"onreply_route_stm : ROUTE_ONREPLY error",
"branch_route_stm : ROUTE_BRANCH LBRACK NUMBER RBRACK LBRACE actions RBRACE",
"branch_route_stm : ROUTE_BRANCH error",
"error_route_stm : ROUTE_ERROR LBRACE actions RBRACE",
"error_route_stm : ROUTE_ERROR error",
"exp : exp AND exp",
"exp : exp OR exp",
"exp : NOT exp",
"exp : LPAREN exp RPAREN",
"exp : LBRACK assignexp RBRACK",
"exp : exp_elem",
"equalop : EQUAL_T",
"equalop : DIFF",
"compop : GT",
"compop : LT",
"compop : GTE",
"compop : LTE",
"matchop : MATCH",
"matchop : NOTMATCH",
"intop : equalop",
"intop : compop",
"strop : equalop",
"strop : compop",
"strop : matchop",
"uri_type : URI",
"uri_type : FROM_URI",
"uri_type : TO_URI",
"script_var : SCRIPTVAR",
"script_var : SCRIPTVARERR",
"exp_elem : exp_cond",
"exp_elem : exp_stm",
"exp_elem : snumber",
"exp_elem : script_var",
"exp_elem : uri_type strop host",
"exp_elem : DSTIP equalop ipnet",
"exp_elem : DSTIP strop host",
"exp_elem : SRCIP equalop ipnet",
"exp_elem : SRCIP strop host",
"exp_cond : METHOD strop STRING",
"exp_cond : METHOD strop ID",
"exp_cond : METHOD strop error",
"exp_cond : METHOD error",
"exp_cond : script_var strop script_var",
"exp_cond : script_var strop STRING",
"exp_cond : script_var strop ID",
"exp_cond : script_var intop snumber",
"exp_cond : script_var equalop MYSELF",
"exp_cond : script_var equalop NULLV",
"exp_cond : uri_type strop STRING",
"exp_cond : uri_type equalop MYSELF",
"exp_cond : uri_type strop error",
"exp_cond : uri_type error",
"exp_cond : SRCPORT intop NUMBER",
"exp_cond : SRCPORT intop error",
"exp_cond : SRCPORT error",
"exp_cond : DSTPORT intop NUMBER",
"exp_cond : DSTPORT intop error",
"exp_cond : DSTPORT error",
"exp_cond : PROTO intop proto",
"exp_cond : PROTO intop error",
"exp_cond : PROTO error",
"exp_cond : AF intop NUMBER",
"exp_cond : AF intop error",
"exp_cond : AF error",
"exp_cond : MSGLEN intop NUMBER",
"exp_cond : MSGLEN intop MAX_LEN",
"exp_cond : MSGLEN intop error",
"exp_cond : MSGLEN error",
"exp_cond : SRCIP strop STRING",
"exp_cond : SRCIP equalop MYSELF",
"exp_cond : SRCIP strop error",
"exp_cond : SRCIP error",
"exp_cond : DSTIP strop STRING",
"exp_cond : DSTIP equalop MYSELF",
"exp_cond : DSTIP strop error",
"exp_cond : DSTIP error",
"exp_cond : MYSELF equalop uri_type",
"exp_cond : MYSELF equalop SRCIP",
"exp_cond : MYSELF equalop DSTIP",
"exp_cond : MYSELF equalop error",
"exp_cond : MYSELF error",
"ipnet : ip SLASH ip",
"ipnet : ip SLASH NUMBER",
"ipnet : ip",
"ipnet : ip SLASH error",
"host_sep : DOT",
"host_sep : MINUS",
"host : ID",
"host : host host_sep ID",
"host : host DOT error",
"assignop : EQUAL",
"assignop : PLUSEQ",
"assignop : MINUSEQ",
"assignop : SLASHEQ",
"assignop : MULTEQ",
"assignop : MODULOEQ",
"assignop : BANDEQ",
"assignop : BOREQ",
"assignop : BXOREQ",
"assignexp : snumber",
"assignexp : STRING",
"assignexp : ID",
"assignexp : script_var",
"assignexp : exp_cond",
"assignexp : cmd",
"assignexp : assignexp PLUS assignexp",
"assignexp : assignexp MINUS assignexp",
"assignexp : assignexp MULT assignexp",
"assignexp : assignexp SLASH assignexp",
"assignexp : assignexp MODULO assignexp",
"assignexp : assignexp BAND assignexp",
"assignexp : assignexp BOR assignexp",
"assignexp : assignexp BXOR assignexp",
"assignexp : BNOT assignexp",
"assignexp : LPAREN assignexp RPAREN",
"assign_cmd : script_var assignop assignexp",
"assign_cmd : script_var EQUAL NULLV",
"exp_stm : cmd",
"exp_stm : if_cmd",
"exp_stm : assign_cmd",
"exp_stm : LBRACE actions RBRACE",
"exp_stm : LBRACE RBRACE",
"stm : action",
"stm : LBRACE actions RBRACE",
"stm : LBRACE RBRACE",
"actions : actions action",
"actions : action",
"actions : actions error",
"action : cmd SEMICOLON",
"action : if_cmd",
"action : switch_cmd",
"action : assign_cmd SEMICOLON",
"action : SEMICOLON",
"action : cmd error",
"if_cmd : IF exp stm",
"if_cmd : IF exp stm ELSE stm",
"switch_cmd : SWITCH LPAREN script_var RPAREN LBRACE switch_stm RBRACE",
"switch_stm : case_stms default_stm",
"switch_stm : case_stms",
"case_stms : case_stms case_stm",
"case_stms : case_stm",
"case_stm : CASE snumber COLON actions SBREAK SEMICOLON",
"case_stm : CASE snumber COLON SBREAK SEMICOLON",
"case_stm : CASE snumber COLON actions",
"case_stm : CASE snumber COLON",
"case_stm : CASE STRING COLON actions SBREAK SEMICOLON",
"case_stm : CASE STRING COLON SBREAK SEMICOLON",
"case_stm : CASE STRING COLON actions",
"case_stm : CASE STRING COLON",
"default_stm : DEFAULT COLON actions",
"default_stm : DEFAULT COLON",
"cmd : FORWARD LPAREN STRING RPAREN",
"cmd : FORWARD LPAREN RPAREN",
"cmd : FORWARD error",
"cmd : FORWARD LPAREN error RPAREN",
"cmd : SEND LPAREN STRING RPAREN",
"cmd : SEND error",
"cmd : SEND LPAREN error RPAREN",
"cmd : DROP LPAREN RPAREN",
"cmd : DROP",
"cmd : EXIT LPAREN RPAREN",
"cmd : EXIT",
"cmd : RETURN LPAREN snumber RPAREN",
"cmd : RETURN LPAREN RPAREN",
"cmd : RETURN",
"cmd : LOG_TOK LPAREN STRING RPAREN",
"cmd : LOG_TOK LPAREN snumber COMMA STRING RPAREN",
"cmd : LOG_TOK error",
"cmd : LOG_TOK LPAREN error RPAREN",
"cmd : SETFLAG LPAREN NUMBER RPAREN",
"cmd : SETFLAG error",
"cmd : RESETFLAG LPAREN NUMBER RPAREN",
"cmd : RESETFLAG error",
"cmd : ISFLAGSET LPAREN NUMBER RPAREN",
"cmd : ISFLAGSET error",
"cmd : SETSFLAG LPAREN NUMBER RPAREN",
"cmd : SETSFLAG error",
"cmd : RESETSFLAG LPAREN NUMBER RPAREN",
"cmd : RESETSFLAG error",
"cmd : ISSFLAGSET LPAREN NUMBER RPAREN",
"cmd : ISSFLAGSET error",
"cmd : SETBFLAG LPAREN NUMBER COMMA NUMBER RPAREN",
"cmd : SETBFLAG LPAREN NUMBER RPAREN",
"cmd : SETBFLAG error",
"cmd : RESETBFLAG LPAREN NUMBER COMMA NUMBER RPAREN",
"cmd : RESETBFLAG LPAREN NUMBER RPAREN",
"cmd : RESETBFLAG error",
"cmd : ISBFLAGSET LPAREN NUMBER COMMA NUMBER RPAREN",
"cmd : ISBFLAGSET LPAREN NUMBER RPAREN",
"cmd : ISBFLAGSET error",
"cmd : ERROR LPAREN STRING COMMA STRING RPAREN",
"cmd : ERROR error",
"cmd : ERROR LPAREN error RPAREN",
"cmd : ROUTE LPAREN NUMBER RPAREN",
"cmd : ROUTE error",
"cmd : ROUTE LPAREN error RPAREN",
"cmd : SET_HOST LPAREN STRING RPAREN",
"cmd : SET_HOST error",
"cmd : SET_HOST LPAREN error RPAREN",
"cmd : PREFIX LPAREN STRING RPAREN",
"cmd : PREFIX error",
"cmd : PREFIX LPAREN error RPAREN",
"cmd : STRIP_TAIL LPAREN NUMBER RPAREN",
"cmd : STRIP_TAIL error",
"cmd : STRIP_TAIL LPAREN error RPAREN",
"cmd : STRIP LPAREN NUMBER RPAREN",
"cmd : STRIP error",
"cmd : STRIP LPAREN error RPAREN",
"cmd : SET_TIME_STAMP LPAREN STRING RPAREN",
"cmd : SET_TIME_STAMP error",
"cmd : SET_TIME_STAMP LPAREN error RPAREN",
"cmd : RESET_TIME_STAMP LPAREN RPAREN",
"cmd : DIFF_TIME_STAMP LPAREN NUMBER COMMA STRING RPAREN",
"cmd : DIFF_TIME_STAMP error",
"cmd : DIFF_TIME_STAMP LPAREN error RPAREN",
"cmd : RESET_TIME_STAMP error",
"cmd : RESET_TIME_STAMP LPAREN error RPAREN",
"cmd : APPEND_BRANCH LPAREN STRING COMMA STRING RPAREN",
"cmd : APPEND_BRANCH LPAREN STRING RPAREN",
"cmd : APPEND_BRANCH LPAREN RPAREN",
"cmd : APPEND_BRANCH",
"cmd : SET_HOSTPORT LPAREN STRING RPAREN",
"cmd : SET_HOSTPORT error",
"cmd : SET_HOSTPORT LPAREN error RPAREN",
"cmd : SET_PORT LPAREN STRING RPAREN",
"cmd : SET_PORT error",
"cmd : SET_PORT LPAREN error RPAREN",
"cmd : SET_USER LPAREN STRING RPAREN",
"cmd : SET_USER error",
"cmd : SET_USER LPAREN error RPAREN",
"cmd : SET_USERPASS LPAREN STRING RPAREN",
"cmd : SET_USERPASS error",
"cmd : SET_USERPASS LPAREN error RPAREN",
"cmd : SET_URI LPAREN STRING RPAREN",
"cmd : SET_URI error",
"cmd : SET_URI LPAREN error RPAREN",
"cmd : REVERT_URI LPAREN RPAREN",
"cmd : REVERT_URI",
"cmd : SET_DSTURI LPAREN STRING RPAREN",
"cmd : SET_DSTURI error",
"cmd : SET_DSTURI LPAREN error RPAREN",
"cmd : RESET_DSTURI LPAREN RPAREN",
"cmd : RESET_DSTURI",
"cmd : ISDSTURISET LPAREN RPAREN",
"cmd : ISDSTURISET",
"cmd : FORCE_RPORT LPAREN RPAREN",
"cmd : FORCE_RPORT",
"cmd : FORCE_LOCAL_RPORT LPAREN RPAREN",
"cmd : FORCE_LOCAL_RPORT",
"cmd : FORCE_TCP_ALIAS LPAREN NUMBER RPAREN",
"cmd : FORCE_TCP_ALIAS LPAREN RPAREN",
"cmd : FORCE_TCP_ALIAS",
"cmd : FORCE_TCP_ALIAS LPAREN error RPAREN",
"cmd : SET_ADV_ADDRESS LPAREN listen_id RPAREN",
"cmd : SET_ADV_ADDRESS LPAREN error RPAREN",
"cmd : SET_ADV_ADDRESS error",
"cmd : SET_ADV_PORT LPAREN NUMBER RPAREN",
"cmd : SET_ADV_PORT LPAREN error RPAREN",
"cmd : SET_ADV_PORT error",
"cmd : FORCE_SEND_SOCKET LPAREN phostport RPAREN",
"cmd : FORCE_SEND_SOCKET LPAREN error RPAREN",
"cmd : FORCE_SEND_SOCKET error",
"cmd : SERIALIZE_BRANCHES LPAREN NUMBER RPAREN",
"cmd : SERIALIZE_BRANCHES LPAREN error RPAREN",
"cmd : SERIALIZE_BRANCHES error",
"cmd : NEXT_BRANCHES LPAREN RPAREN",
"cmd : NEXT_BRANCHES LPAREN error RPAREN",
"cmd : NEXT_BRANCHES error",
"cmd : USE_BLACKLIST LPAREN STRING RPAREN",
"cmd : USE_BLACKLIST LPAREN error RPAREN",
"cmd : USE_BLACKLIST error",
"cmd : ID LPAREN RPAREN",
"cmd : ID LPAREN STRING RPAREN",
"cmd : ID LPAREN STRING COMMA STRING RPAREN",
"cmd : ID LPAREN error RPAREN",
};
#endif
#ifdef YYSTACKSIZE
#undef YYMAXDEPTH
#define YYMAXDEPTH YYSTACKSIZE
#else
#ifdef YYMAXDEPTH
#define YYSTACKSIZE YYMAXDEPTH
#else
#define YYSTACKSIZE 10000
#define YYMAXDEPTH 10000
#endif
#endif
#define YYINITSTACKSIZE 200
int yydebug;
int yynerrs;
int yyerrflag;
int yychar;
short *yyssp;
YYSTYPE *yyvsp;
YYSTYPE yyval;
YYSTYPE yylval;
short *yyss;
short *yysslim;
YYSTYPE *yyvs;
int yystacksize;
#line 2234 "cfg.y"

extern int line;
extern int column;
extern int startcolumn;
#if !defined(USE_TLS) || !defined(USE_TCP) || !defined(TIMING_INFO) \
		||  !defined(USE_MCAST)
static void warn(char* s)
{
	LOG(L_WARN, "cfg. warning: (%d,%d-%d): %s\n", line, startcolumn, 
			column, s);
	cfg_errors++;
}
#endif

static void yyerror(char* s)
{
	LOG(L_CRIT, "parse error (%d,%d-%d): %s\n", line, startcolumn, 
			column, s);
	cfg_errors++;
}


static struct socket_id* mk_listen_id(char* host, int proto, int port)
{
	struct socket_id* l;
	l=pkg_malloc(sizeof(struct socket_id));
	if (l==0){
		LOG(L_CRIT,"ERROR: cfg. parser: out of memory.\n");
	}else{
		l->name=host;
		l->port=port;
		l->proto=proto;
		l->next=0;
	}
	return l;
}

#line 2653 "cfg.tab.c"
/* allocate initial stack or double stack size, up to YYMAXDEPTH */
int yyparse __P((void));
static int yygrowstack __P((void));
static int yygrowstack()
{
    int newsize, i;
    short *newss;
    YYSTYPE *newvs;

    if ((newsize = yystacksize) == 0)
        newsize = YYINITSTACKSIZE;
    else if (newsize >= YYMAXDEPTH)
        return -1;
    else if ((newsize *= 2) > YYMAXDEPTH)
        newsize = YYMAXDEPTH;
    i = yyssp - yyss;
    if ((newss = (short *)realloc(yyss, newsize * sizeof *newss)) == NULL)
        return -1;
    yyss = newss;
    yyssp = newss + i;
    if ((newvs = (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs)) == NULL)
        return -1;
    yyvs = newvs;
    yyvsp = newvs + i;
    yystacksize = newsize;
    yysslim = yyss + newsize - 1;
    return 0;
}

#define YYABORT goto yyabort
#define YYREJECT goto yyabort
#define YYACCEPT goto yyaccept
#define YYERROR goto yyerrlab
int
yyparse()
{
    int yym, yyn, yystate;
#if YYDEBUG
    char *yys;

    if ((yys = getenv("YYDEBUG")) != NULL)
    {
        yyn = *yys;
        if (yyn >= '0' && yyn <= '9')
            yydebug = yyn - '0';
    }
#endif

    yynerrs = 0;
    yyerrflag = 0;
    yychar = (-1);

    if (yyss == NULL && yygrowstack()) goto yyoverflow;
    yyssp = yyss;
    yyvsp = yyvs;
    *yyssp = yystate = 0;

yyloop:
    if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
    if (yychar < 0)
    {
        if ((yychar = yylex()) < 0) yychar = 0;
#if YYDEBUG
        if (yydebug)
        {
            yys = 0;
            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
            if (!yys) yys = "illegal-symbol";
            printf("%sdebug: state %d, reading %d (%s)\n",
                    YYPREFIX, yystate, yychar, yys);
        }
#endif
    }
    if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
    {
#if YYDEBUG
        if (yydebug)
            printf("%sdebug: state %d, shifting to state %d\n",
                    YYPREFIX, yystate, yytable[yyn]);
#endif
        if (yyssp >= yysslim && yygrowstack())
        {
            goto yyoverflow;
        }
        *++yyssp = yystate = yytable[yyn];
        *++yyvsp = yylval;
        yychar = (-1);
        if (yyerrflag > 0)  --yyerrflag;
        goto yyloop;
    }
    if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
    {
        yyn = yytable[yyn];
        goto yyreduce;
    }
    if (yyerrflag) goto yyinrecovery;
    goto yynewerror;
yynewerror:
    yyerror("syntax error");
    goto yyerrlab;
yyerrlab:
    ++yynerrs;
yyinrecovery:
    if (yyerrflag < 3)
    {
        yyerrflag = 3;
        for (;;)
        {
            if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
            {
#if YYDEBUG
                if (yydebug)
                    printf("%sdebug: state %d, error recovery shifting\
 to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
#endif
                if (yyssp >= yysslim && yygrowstack())
                {
                    goto yyoverflow;
                }
                *++yyssp = yystate = yytable[yyn];
                *++yyvsp = yylval;
                goto yyloop;
            }
            else
            {
#if YYDEBUG
                if (yydebug)
                    printf("%sdebug: error recovery discarding state %d\n",
                            YYPREFIX, *yyssp);
#endif
                if (yyssp <= yyss) goto yyabort;
                --yyssp;
                --yyvsp;
            }
        }
    }
    else
    {
        if (yychar == 0) goto yyabort;
#if YYDEBUG
        if (yydebug)
        {
            yys = 0;
            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
            if (!yys) yys = "illegal-symbol";
            printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
                    YYPREFIX, yystate, yychar, yys);
        }
#endif
        yychar = (-1);
        goto yyloop;
    }
yyreduce:
#if YYDEBUG
    if (yydebug)
        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
                YYPREFIX, yystate, yyn, yyrule[yyn]);
#endif
    yym = yylen[yyn];
    yyval = yyvsp[1-yym];
    switch (yyn)
    {
case 2:
#line 421 "cfg.y"
{}
break;
case 3:
#line 422 "cfg.y"
{}
break;
case 4:
#line 423 "cfg.y"
{ yyerror(""); YYABORT;}
break;
case 7:
#line 428 "cfg.y"
{rt=REQUEST_ROUTE;}
break;
case 9:
#line 429 "cfg.y"
{rt=FAILURE_ROUTE;}
break;
case 11:
#line 430 "cfg.y"
{rt=ONREPLY_ROUTE;}
break;
case 13:
#line 431 "cfg.y"
{rt=BRANCH_ROUTE;}
break;
case 15:
#line 432 "cfg.y"
{rt=ERROR_ROUTE;}
break;
case 18:
#line 437 "cfg.y"
{	tmp=ip_addr2a(yyvsp[0].ipaddr);
							if(tmp==0){
								LOG(L_CRIT, "ERROR: cfg. parser: bad ip "
										"address.\n");
								yyval.strval=0;
							}else{
								yyval.strval=pkg_malloc(strlen(tmp)+1);
								if (yyval.strval==0){
									LOG(L_CRIT, "ERROR: cfg. parser: out of "
											"memory.\n");
								}else{
									strncpy(yyval.strval, tmp, strlen(tmp)+1);
								}
							}
						}
break;
case 19:
#line 452 "cfg.y"
{	yyval.strval=pkg_malloc(strlen(yyvsp[0].strval)+1);
		 					if (yyval.strval==0){
									LOG(L_CRIT, "ERROR: cfg. parser: out of "
											"memory.\n");
							}else{
									strncpy(yyval.strval, yyvsp[0].strval, strlen(yyvsp[0].strval)+1);
							}
						}
break;
case 20:
#line 460 "cfg.y"
{	if (yyvsp[0].strval==0) {
		 						yyval.strval = 0;
							} else {
								yyval.strval=pkg_malloc(strlen(yyvsp[0].strval)+1);
								if (yyval.strval==0){
									LOG(L_CRIT, "ERROR: cfg. parser: out of "
											"memory.\n");
								}else{
									strncpy(yyval.strval, yyvsp[0].strval, strlen(yyvsp[0].strval)+1);
								}
							}
						}
break;
case 21:
#line 474 "cfg.y"
{ yyval.intval=PROTO_UDP; }
break;
case 22:
#line 475 "cfg.y"
{ yyval.intval=PROTO_TCP; }
break;
case 23:
#line 476 "cfg.y"
{
			#ifdef USE_TLS
				yyval.intval=PROTO_TLS;
			#else
				yyval.intval=PROTO_TCP;
				warn("tls support not compiled in");
			#endif
			}
break;
case 24:
#line 484 "cfg.y"
{ yyval.intval=0; }
break;
case 25:
#line 487 "cfg.y"
{ yyval.intval=yyvsp[0].intval; }
break;
case 26:
#line 488 "cfg.y"
{ yyval.intval=0; }
break;
case 27:
#line 491 "cfg.y"
{ yyval.intval=yyvsp[0].intval; }
break;
case 28:
#line 492 "cfg.y"
{ yyval.intval=yyvsp[0].intval; }
break;
case 29:
#line 493 "cfg.y"
{ yyval.intval=-yyvsp[0].intval; }
break;
case 30:
#line 497 "cfg.y"
{ yyval.sockid=mk_listen_id(yyvsp[0].strval, 0, 0); }
break;
case 31:
#line 498 "cfg.y"
{ yyval.sockid=mk_listen_id(yyvsp[-2].strval, 0, yyvsp[0].intval); }
break;
case 32:
#line 499 "cfg.y"
{ yyval.sockid=mk_listen_id(yyvsp[0].strval, yyvsp[-2].intval, 0); }
break;
case 33:
#line 500 "cfg.y"
{ yyval.sockid=mk_listen_id(yyvsp[-2].strval, yyvsp[-4].intval, yyvsp[0].intval);}
break;
case 34:
#line 501 "cfg.y"
{ yyval.sockid=0; yyerror(" port number expected"); }
break;
case 35:
#line 504 "cfg.y"
{  yyval.sockid=yyvsp[0].sockid ; }
break;
case 36:
#line 505 "cfg.y"
{ yyval.sockid=yyvsp[-1].sockid; yyval.sockid->next=yyvsp[0].sockid; }
break;
case 37:
#line 509 "cfg.y"
{
				s_tmp.s=yyvsp[-1].strval;
				s_tmp.len=strlen(yyvsp[-1].strval);
				if (add_rule_to_list(&bl_head,&bl_tail,yyvsp[-5].ipnet,&s_tmp,yyvsp[-3].intval,yyvsp[-7].intval,0)) {
					yyerror("failed to add backlist element\n");YYABORT;
				}
			}
break;
case 38:
#line 516 "cfg.y"
{
				s_tmp.s=yyvsp[-1].strval;
				s_tmp.len=strlen(yyvsp[-1].strval);
				if (add_rule_to_list(&bl_head,&bl_tail,yyvsp[-5].ipnet,&s_tmp,
				yyvsp[-3].intval,yyvsp[-7].intval,BLR_APPLY_CONTRARY)) {
					yyerror("failed to add backlist element\n");YYABORT;
				}
			}
break;
case 39:
#line 526 "cfg.y"
{}
break;
case 40:
#line 527 "cfg.y"
{}
break;
case 41:
#line 528 "cfg.y"
{ yyerror("bad black list element");}
break;
case 42:
#line 532 "cfg.y"
{ debug=yyvsp[0].intval; }
break;
case 43:
#line 533 "cfg.y"
{ yyerror("number  expected"); }
break;
case 44:
#line 534 "cfg.y"
{ dont_fork= ! yyvsp[0].intval; }
break;
case 45:
#line 535 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 46:
#line 536 "cfg.y"
{ if (!config_check) log_stderr=yyvsp[0].intval; }
break;
case 47:
#line 537 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 48:
#line 538 "cfg.y"
{
					if ( (i_tmp=str2facility(yyvsp[0].strval))==-1)
						yyerror("bad facility (see syslog(3) man page)");
					if (!config_check)
						log_facility=i_tmp;
									}
break;
case 49:
#line 544 "cfg.y"
{ yyerror("ID expected"); }
break;
case 50:
#line 545 "cfg.y"
{ log_name=yyvsp[0].strval; }
break;
case 51:
#line 546 "cfg.y"
{ yyerror("string value expected"); }
break;
case 52:
#line 547 "cfg.y"
{ 
				if (yyvsp[0].strval!=0 && yyvsp[0].strval[0]!=0)
					if ( add_avp_galias_str(yyvsp[0].strval)!=0 )
						yyerror("invalid AVP aliases");;
			}
break;
case 53:
#line 552 "cfg.y"
{ yyerror("string value expected"); }
break;
case 54:
#line 553 "cfg.y"
{ received_dns|= (yyvsp[0].intval)?DO_DNS:0; }
break;
case 55:
#line 554 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 56:
#line 555 "cfg.y"
{ received_dns|= (yyvsp[0].intval)?DO_REV_DNS:0; }
break;
case 57:
#line 556 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 58:
#line 557 "cfg.y"
{ dns_try_ipv6=yyvsp[0].intval; }
break;
case 59:
#line 558 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 60:
#line 559 "cfg.y"
{ dns_retr_time=yyvsp[0].intval; }
break;
case 61:
#line 560 "cfg.y"
{ yyerror("number expected"); }
break;
case 62:
#line 561 "cfg.y"
{ dns_retr_no=yyvsp[0].intval; }
break;
case 63:
#line 562 "cfg.y"
{ yyerror("number expected"); }
break;
case 64:
#line 563 "cfg.y"
{ dns_servers_no=yyvsp[0].intval; }
break;
case 65:
#line 564 "cfg.y"
{ yyerror("number expected"); }
break;
case 66:
#line 565 "cfg.y"
{ dns_search_list=yyvsp[0].intval; }
break;
case 67:
#line 566 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 68:
#line 567 "cfg.y"
{ port_no=yyvsp[0].intval; }
break;
case 69:
#line 568 "cfg.y"
{ maxbuffer=yyvsp[0].intval; }
break;
case 70:
#line 569 "cfg.y"
{ yyerror("number expected"); }
break;
case 71:
#line 570 "cfg.y"
{ yyerror("number expected"); }
break;
case 72:
#line 571 "cfg.y"
{ children_no=yyvsp[0].intval; }
break;
case 73:
#line 572 "cfg.y"
{ yyerror("number expected"); }
break;
case 74:
#line 573 "cfg.y"
{ check_via=yyvsp[0].intval; }
break;
case 75:
#line 574 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 76:
#line 575 "cfg.y"
{ memlog=yyvsp[0].intval; }
break;
case 77:
#line 576 "cfg.y"
{ yyerror("int value expected"); }
break;
case 78:
#line 577 "cfg.y"
{ sip_warning=yyvsp[0].intval; }
break;
case 79:
#line 578 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 80:
#line 579 "cfg.y"
{ sock_mode=yyvsp[0].intval; }
break;
case 81:
#line 580 "cfg.y"
{ yyerror("int value expected"); }
break;
case 82:
#line 581 "cfg.y"
{ sock_user=yyvsp[0].strval; }
break;
case 83:
#line 582 "cfg.y"
{ sock_user=yyvsp[0].strval; }
break;
case 84:
#line 583 "cfg.y"
{ yyerror("string value expected"); }
break;
case 85:
#line 584 "cfg.y"
{ sock_group=yyvsp[0].strval; }
break;
case 86:
#line 585 "cfg.y"
{ sock_group=yyvsp[0].strval; }
break;
case 87:
#line 586 "cfg.y"
{ yyerror("string value expected"); }
break;
case 88:
#line 587 "cfg.y"
{ unixsock_name=yyvsp[0].strval; }
break;
case 89:
#line 588 "cfg.y"
{ yyerror("string value expected"); }
break;
case 90:
#line 589 "cfg.y"
{ unixsock_children=yyvsp[0].intval; }
break;
case 91:
#line 590 "cfg.y"
{ yyerror("int value expected\n"); }
break;
case 92:
#line 591 "cfg.y"
{ unixsock_tx_timeout=yyvsp[0].intval; }
break;
case 93:
#line 592 "cfg.y"
{ yyerror("int value expected\n"); }
break;
case 94:
#line 593 "cfg.y"
{ user=yyvsp[0].strval; }
break;
case 95:
#line 594 "cfg.y"
{ user=yyvsp[0].strval; }
break;
case 96:
#line 595 "cfg.y"
{ yyerror("string value expected"); }
break;
case 97:
#line 596 "cfg.y"
{ group=yyvsp[0].strval; }
break;
case 98:
#line 597 "cfg.y"
{ group=yyvsp[0].strval; }
break;
case 99:
#line 598 "cfg.y"
{ yyerror("string value expected"); }
break;
case 100:
#line 599 "cfg.y"
{ chroot_dir=yyvsp[0].strval; }
break;
case 101:
#line 600 "cfg.y"
{ chroot_dir=yyvsp[0].strval; }
break;
case 102:
#line 601 "cfg.y"
{ yyerror("string value expected"); }
break;
case 103:
#line 602 "cfg.y"
{ working_dir=yyvsp[0].strval; }
break;
case 104:
#line 603 "cfg.y"
{ working_dir=yyvsp[0].strval; }
break;
case 105:
#line 604 "cfg.y"
{ yyerror("string value expected"); }
break;
case 106:
#line 605 "cfg.y"
{ mhomed=yyvsp[0].intval; }
break;
case 107:
#line 606 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 108:
#line 607 "cfg.y"
{
									#ifdef USE_TCP
										tcp_disable=yyvsp[0].intval;
									#else
										warn("tcp support not compiled in");
									#endif
									}
break;
case 109:
#line 614 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 110:
#line 615 "cfg.y"
{
									#ifdef USE_TCP
										tcp_accept_aliases=yyvsp[0].intval;
									#else
										warn("tcp support not compiled in");
									#endif
									}
break;
case 111:
#line 622 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 112:
#line 623 "cfg.y"
{
									#ifdef USE_TCP
										tcp_children_no=yyvsp[0].intval;
									#else
										warn("tcp support not compiled in");
									#endif
									}
break;
case 113:
#line 630 "cfg.y"
{ yyerror("number expected"); }
break;
case 114:
#line 631 "cfg.y"
{
									#ifdef USE_TCP
										tcp_connect_timeout=yyvsp[0].intval;
									#else
										warn("tcp support not compiled in");
									#endif
									}
break;
case 115:
#line 638 "cfg.y"
{ yyerror("number expected"); }
break;
case 116:
#line 639 "cfg.y"
{
									#ifdef USE_TCP
										tcp_send_timeout=yyvsp[0].intval;
									#else
										warn("tcp support not compiled in");
									#endif
									}
break;
case 117:
#line 646 "cfg.y"
{ yyerror("number expected"); }
break;
case 118:
#line 647 "cfg.y"
{
									#ifdef USE_TCP
										tcp_con_lifetime=yyvsp[0].intval;
									#else
										warn("tcp support not compiled in");
									#endif
									}
break;
case 119:
#line 654 "cfg.y"
{ yyerror("number expected"); }
break;
case 120:
#line 655 "cfg.y"
{
									#ifdef USE_TCP
										tcp_poll_method=get_poll_type(yyvsp[0].strval);
										if (tcp_poll_method==POLL_NONE){
											LOG(L_CRIT, "bad poll method name:"
												" %s\n, try one of %s.\n",
												yyvsp[0].strval, poll_support);
											yyerror("bad tcp_poll_method "
												"value");
										}
									#else
										warn("tcp support not compiled in");
									#endif
									}
break;
case 121:
#line 669 "cfg.y"
{
									#ifdef USE_TCP
										tcp_poll_method=get_poll_type(yyvsp[0].strval);
										if (tcp_poll_method==POLL_NONE){
											LOG(L_CRIT, "bad poll method name:"
												" %s\n, try one of %s.\n",
												yyvsp[0].strval, poll_support);
											yyerror("bad tcp_poll_method "
												"value");
										}
									#else
										warn("tcp support not compiled in");
									#endif
									}
break;
case 122:
#line 683 "cfg.y"
{ yyerror("poll method name expected"); }
break;
case 123:
#line 684 "cfg.y"
{
									#ifdef USE_TCP
										tcp_max_connections=yyvsp[0].intval;
									#else
										warn("tcp support not compiled in");
									#endif
									}
break;
case 124:
#line 691 "cfg.y"
{ yyerror("number expected"); }
break;
case 125:
#line 692 "cfg.y"
{
									#ifdef USE_TLS
										tls_disable=yyvsp[0].intval;
									#else
										warn("tls support not compiled in");
									#endif
									}
break;
case 126:
#line 699 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 127:
#line 700 "cfg.y"
{ 
									#ifdef USE_TLS
										tls_log=yyvsp[0].intval;
									#else
										warn("tls support not compiled in");
									#endif
									}
break;
case 128:
#line 707 "cfg.y"
{ yyerror("int value expected"); }
break;
case 129:
#line 708 "cfg.y"
{
									#ifdef USE_TLS
										tls_port_no=yyvsp[0].intval;
									#else
										warn("tls support not compiled in");
									#endif
									}
break;
case 130:
#line 715 "cfg.y"
{ yyerror("number expected"); }
break;
case 131:
#line 716 "cfg.y"
{
									#ifdef USE_TLS
										tls_default_server_domain->method =
											TLS_USE_SSLv23;
										tls_default_client_domain->method =
											TLS_USE_SSLv23;
									#else
										warn("tls support not compiled in");
									#endif
									}
break;
case 132:
#line 726 "cfg.y"
{
									#ifdef USE_TLS
										tls_default_server_domain->method =
											TLS_USE_SSLv2;
										tls_default_client_domain->method =
											TLS_USE_SSLv2;
									#else
										warn("tls support not compiled in");
									#endif
									}
break;
case 133:
#line 736 "cfg.y"
{
									#ifdef USE_TLS
										tls_default_server_domain->method =
											TLS_USE_SSLv3;
										tls_default_client_domain->method =
											TLS_USE_SSLv3;
									#else
										warn("tls support not compiled in");
									#endif
									}
break;
case 134:
#line 746 "cfg.y"
{
									#ifdef USE_TLS
										tls_default_server_domain->method =
											TLS_USE_TLSv1;
										tls_default_client_domain->method =
											TLS_USE_TLSv1;
									#else
										warn("tls support not compiled in");
									#endif
									}
break;
case 135:
#line 756 "cfg.y"
{
									#ifdef USE_TLS
										yyerror("SSLv23, SSLv2, SSLv3 or TLSv1"
													" expected");
									#else
										warn("tls support not compiled in");
									#endif
									}
break;
case 136:
#line 765 "cfg.y"
{
									#ifdef USE_TLS
										tls_default_server_domain->verify_cert
											= yyvsp[0].intval;
									#else
										warn("tls support not compiled in");
									#endif
									}
break;
case 137:
#line 773 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 138:
#line 774 "cfg.y"
{
									#ifdef USE_TLS
										tls_default_client_domain->verify_cert
											=yyvsp[0].intval;
									#else
										warn("tls support not compiled in");
									#endif
									}
break;
case 139:
#line 782 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 140:
#line 783 "cfg.y"
{
									#ifdef USE_TLS
										tls_default_server_domain->require_client_cert=yyvsp[0].intval;
									#else
										warn( "tls support not compiled in");
									#endif
									}
break;
case 141:
#line 790 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 142:
#line 791 "cfg.y"
{ 
									#ifdef USE_TLS
										tls_default_server_domain->cert_file=
											yyvsp[0].strval;
										tls_default_client_domain->cert_file=
											yyvsp[0].strval;
									#else
										warn("tls support not compiled in");
									#endif
									}
break;
case 143:
#line 801 "cfg.y"
{ yyerror("string value expected"); }
break;
case 144:
#line 802 "cfg.y"
{ 
									#ifdef USE_TLS
										tls_default_server_domain->pkey_file=
											yyvsp[0].strval;
										tls_default_client_domain->pkey_file=
											yyvsp[0].strval;
									#else
										warn("tls support not compiled in");
									#endif
									}
break;
case 145:
#line 812 "cfg.y"
{ yyerror("string value expected"); }
break;
case 146:
#line 813 "cfg.y"
{ 
									#ifdef USE_TLS
										tls_default_server_domain->ca_file =
											yyvsp[0].strval;
										tls_default_client_domain->ca_file =
											yyvsp[0].strval;
									#else
										warn("tls support not compiled in");
									#endif
									}
break;
case 147:
#line 823 "cfg.y"
{ yyerror("string value expected"); }
break;
case 148:
#line 824 "cfg.y"
{ 
									#ifdef USE_TLS
										tls_default_server_domain->ciphers_list
											= yyvsp[0].strval;
										tls_default_client_domain->ciphers_list
											= yyvsp[0].strval;
									#else
										warn("tls support not compiled in");
									#endif
									}
break;
case 149:
#line 834 "cfg.y"
{ yyerror("string value expected"); }
break;
case 150:
#line 835 "cfg.y"
{
									#ifdef USE_TLS
										tls_handshake_timeout=yyvsp[0].intval;
									#else
										warn("tls support not compiled in");
									#endif
									}
break;
case 151:
#line 842 "cfg.y"
{ yyerror("number expected"); }
break;
case 152:
#line 843 "cfg.y"
{
									#ifdef USE_TLS
										tls_send_timeout=yyvsp[0].intval;
									#else
										warn("tls support not compiled in");
									#endif
									}
break;
case 153:
#line 850 "cfg.y"
{ yyerror("number expected"); }
break;
case 154:
#line 851 "cfg.y"
{
									#ifdef USE_TLS
										tls_client_domain_avp=yyvsp[0].intval;
									#else
										warn("tls support not compiled in");
									#endif
									}
break;
case 155:
#line 858 "cfg.y"
{ yyerror("number expected"); }
break;
case 158:
#line 861 "cfg.y"
{ server_signature=yyvsp[0].intval; }
break;
case 159:
#line 862 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 160:
#line 863 "cfg.y"
{ server_header.s=yyvsp[0].strval;
									server_header.len=strlen(yyvsp[0].strval);
									}
break;
case 161:
#line 866 "cfg.y"
{ yyerror("string value expected"); }
break;
case 162:
#line 867 "cfg.y"
{ user_agent_header.s=yyvsp[0].strval;
									user_agent_header.len=strlen(yyvsp[0].strval);
									}
break;
case 163:
#line 870 "cfg.y"
{ yyerror("string value expected"); }
break;
case 164:
#line 871 "cfg.y"
{ reply_to_via=yyvsp[0].intval; }
break;
case 165:
#line 872 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 166:
#line 873 "cfg.y"
{
							for(lst_tmp=yyvsp[0].sockid; lst_tmp; lst_tmp=lst_tmp->next){
								if (add_listen_iface(	lst_tmp->name,
														lst_tmp->port,
														lst_tmp->proto,
														0
													)!=0){
									LOG(L_CRIT,  "ERROR: cfg. parser: failed"
											" to add listen address\n");
									break;
								}
							}
							 }
break;
case 167:
#line 886 "cfg.y"
{ yyerror("ip address or hostname "
						"expected"); }
break;
case 168:
#line 888 "cfg.y"
{ 
							for(lst_tmp=yyvsp[0].sockid; lst_tmp; lst_tmp=lst_tmp->next)
								add_alias(lst_tmp->name, strlen(lst_tmp->name),
											lst_tmp->port, lst_tmp->proto);
							  }
break;
case 169:
#line 893 "cfg.y"
{ yyerror(" hostname expected"); }
break;
case 170:
#line 894 "cfg.y"
{ auto_aliases=yyvsp[0].intval; }
break;
case 171:
#line 895 "cfg.y"
{ yyerror("number  expected"); }
break;
case 172:
#line 896 "cfg.y"
{
								if (yyvsp[0].strval) {
									default_global_address.s=yyvsp[0].strval;
									default_global_address.len=strlen(yyvsp[0].strval);
								}
								}
break;
case 173:
#line 902 "cfg.y"
{yyerror("ip address or hostname "
												"expected"); }
break;
case 174:
#line 904 "cfg.y"
{
								tmp=int2str(yyvsp[0].intval, &i_tmp);
								if ((default_global_port.s=pkg_malloc(i_tmp))
										==0){
										LOG(L_CRIT, "ERROR: cfg. parser:"
													" out of memory.\n");
										default_global_port.len=0;
								}else{
									default_global_port.len=i_tmp;
									memcpy(default_global_port.s, tmp,
											default_global_port.len);
								};
								}
break;
case 175:
#line 917 "cfg.y"
{yyerror("ip address or hostname "
												"expected"); }
break;
case 176:
#line 919 "cfg.y"
{
										disable_core_dump=yyvsp[0].intval;
									}
break;
case 177:
#line 922 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 178:
#line 923 "cfg.y"
{
										open_files_limit=yyvsp[0].intval;
									}
break;
case 179:
#line 926 "cfg.y"
{ yyerror("number expected"); }
break;
case 180:
#line 927 "cfg.y"
{
								#ifdef USE_MCAST
										mcast_loopback=yyvsp[0].intval;
								#else
									warn("no multicast support compiled in");
								#endif
		  }
break;
case 181:
#line 934 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 182:
#line 935 "cfg.y"
{
								#ifdef USE_MCAST
										mcast_ttl=yyvsp[0].intval;
								#else
									warn("no multicast support compiled in");
								#endif
		  }
break;
case 183:
#line 942 "cfg.y"
{ yyerror("number expected as tos"); }
break;
case 184:
#line 943 "cfg.y"
{ tos = yyvsp[0].intval;
							if (tos<=0)
								yyerror("invalid tos value");
		 }
break;
case 185:
#line 947 "cfg.y"
{ if (strcasecmp(yyvsp[0].strval,"IPTOS_LOWDELAY")) {
								tos=IPTOS_LOWDELAY;
							} else if (strcasecmp(yyvsp[0].strval,"IPTOS_THROUGHPUT")) {
								tos=IPTOS_THROUGHPUT;
							} else if (strcasecmp(yyvsp[0].strval,"IPTOS_RELIABILITY")) {
								tos=IPTOS_RELIABILITY;
#if defined(IPTOS_MINCOST)
							} else if (strcasecmp(yyvsp[0].strval,"IPTOS_MINCOST")) {
								tos=IPTOS_MINCOST;
#endif
#if defined(IPTOS_LOWCOST)
							} else if (strcasecmp(yyvsp[0].strval,"IPTOS_LOWCOST")) {
								tos=IPTOS_LOWCOST;
#endif
							} else {
								yyerror("invalid tos value - allowed: "
									"IPTOS_LOWDELAY,IPTOS_THROUGHPUT,"
									"IPTOS_RELIABILITY"
#if defined(IPTOS_LOWCOST)
									",IPTOS_LOWCOST"
#endif
#if !defined(IPTOS_MINCOST)
									",IPTOS_MINCOST"
#endif
									"\n");
							}
		 }
break;
case 186:
#line 974 "cfg.y"
{ yyerror("number expected"); }
break;
case 187:
#line 975 "cfg.y"
{ mpath=yyvsp[0].strval; strcpy(mpath_buf, yyvsp[0].strval);
								mpath_len=strlen(yyvsp[0].strval); 
								if(mpath_buf[mpath_len-1]!='/') {
									mpath_buf[mpath_len]='/';
									mpath_len++;
									mpath_buf[mpath_len]='\0';
								}
							}
break;
case 188:
#line 983 "cfg.y"
{ yyerror("string value expected"); }
break;
case 189:
#line 984 "cfg.y"
{
										disable_dns_failover=yyvsp[0].intval;
									}
break;
case 190:
#line 987 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 191:
#line 988 "cfg.y"
{
										disable_dns_blacklist=yyvsp[0].intval;
									}
break;
case 192:
#line 991 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 193:
#line 992 "cfg.y"
{ yyerror("unknown config variable"); }
break;
case 194:
#line 993 "cfg.y"
{
				s_tmp.s = yyvsp[-4].strval;
				s_tmp.len = strlen(yyvsp[-4].strval);
				if ( create_bl_head( BL_CORE_ID, BL_READONLY_LIST,
				bl_head, bl_tail, &s_tmp)==0) {
					yyerror("failed to create blacklist\n");
					YYABORT;
				}
				bl_head = bl_tail = 0;
				}
break;
case 195:
#line 1005 "cfg.y"
{	if(*yyvsp[0].strval!='/' && mpath!=NULL
										&& strlen(yyvsp[0].strval)+mpath_len<255)
									{
										strcpy(mpath_buf+mpath_len, yyvsp[0].strval);
										DBG("loading module %s\n", mpath_buf);
										if (sr_load_module(mpath_buf)!=0){
											yyerror("failed to load module");
										}
										mpath_buf[mpath_len]='\0';
									} else {
										DBG("loading module %s\n", yyvsp[0].strval);
										if (sr_load_module(yyvsp[0].strval)!=0){
											yyerror("failed to load module");
										}
									}
								}
break;
case 196:
#line 1021 "cfg.y"
{ yyerror("string expected");  }
break;
case 197:
#line 1022 "cfg.y"
{
				if (set_mod_param_regex(yyvsp[-5].strval, yyvsp[-3].strval, STR_PARAM, yyvsp[-1].strval) != 0) {
					yyerror("Can't set module parameter");
				}
			}
break;
case 198:
#line 1027 "cfg.y"
{
				if (set_mod_param_regex(yyvsp[-5].strval, yyvsp[-3].strval, INT_PARAM, (void*)yyvsp[-1].intval) != 0) {
					yyerror("Can't set module parameter");
				}
			}
break;
case 199:
#line 1032 "cfg.y"
{ yyerror("Invalid arguments"); }
break;
case 200:
#line 1036 "cfg.y"
{ yyval.ipaddr=yyvsp[0].ipaddr; }
break;
case 201:
#line 1037 "cfg.y"
{ yyval.ipaddr=yyvsp[0].ipaddr; }
break;
case 202:
#line 1040 "cfg.y"
{ 
											yyval.ipaddr=pkg_malloc(
													sizeof(struct ip_addr));
											if (yyval.ipaddr==0){
												LOG(L_CRIT, "ERROR: cfg. "
													"parser: out of memory.\n"
													);
											}else{
												memset(yyval.ipaddr, 0, 
													sizeof(struct ip_addr));
												yyval.ipaddr->af=AF_INET;
												yyval.ipaddr->len=4;
												if ((yyvsp[-6].intval>255) || (yyvsp[-6].intval<0) ||
													(yyvsp[-4].intval>255) || (yyvsp[-4].intval<0) ||
													(yyvsp[-2].intval>255) || (yyvsp[-2].intval<0) ||
													(yyvsp[0].intval>255) || (yyvsp[0].intval<0)){
													yyerror("invalid ipv4"
															"address");
													yyval.ipaddr->u.addr32[0]=0;
													/* $$=0; */
												}else{
													yyval.ipaddr->u.addr[0]=yyvsp[-6].intval;
													yyval.ipaddr->u.addr[1]=yyvsp[-4].intval;
													yyval.ipaddr->u.addr[2]=yyvsp[-2].intval;
													yyval.ipaddr->u.addr[3]=yyvsp[0].intval;
													/*
													$$=htonl( ($1<<24)|
													($3<<16)| ($5<<8)|$7 );
													*/
												}
											}
												}
break;
case 203:
#line 1074 "cfg.y"
{
					yyval.ipaddr=pkg_malloc(sizeof(struct ip_addr));
					if (yyval.ipaddr==0){
						LOG(L_CRIT, "ERROR: cfg. parser: out of memory.\n");
					}else{
						memset(yyval.ipaddr, 0, sizeof(struct ip_addr));
						yyval.ipaddr->af=AF_INET6;
						yyval.ipaddr->len=16;
					#ifdef USE_IPV6
						if (inet_pton(AF_INET6, yyvsp[0].strval, yyval.ipaddr->u.addr)<=0){
							yyerror("bad ipv6 address");
						}
					#else
						yyerror("ipv6 address & no ipv6 support compiled in");
						YYABORT;
					#endif
					}
				}
break;
case 204:
#line 1094 "cfg.y"
{ yyval.ipaddr=yyvsp[0].ipaddr; }
break;
case 205:
#line 1095 "cfg.y"
{yyval.ipaddr=yyvsp[-1].ipaddr; }
break;
case 206:
#line 1098 "cfg.y"
{ 
						#ifdef USE_TLS
							if (tls_new_server_domain(yyvsp[-3].ipaddr, yyvsp[-1].intval)) 
								yyerror("tls_new_server_domain failed");
						#else	
							warn("tls support not compiled in");
						#endif
							}
break;
case 208:
#line 1109 "cfg.y"
{ 
						#ifdef USE_TLS
							if (tls_new_client_domain(yyvsp[-3].ipaddr, yyvsp[-1].intval))
								yyerror("tls_new_client_domain failed");
						#else	
							warn("tls support not compiled in");
						#endif
							}
break;
case 210:
#line 1120 "cfg.y"
{ 
						#ifdef USE_TLS
							if (tls_new_client_domain_name(yyvsp[-1].strval, strlen(yyvsp[-1].strval)))
								yyerror("tls_new_client_domain_name failed");
						#else	
							warn("tls support not compiled in");
						#endif
							}
break;
case 216:
#line 1139 "cfg.y"
{ 
						#ifdef USE_TLS
									tls_server_domains->method=TLS_USE_SSLv23;
						#else
									warn("tls support not compiled in");
						#endif
								}
break;
case 217:
#line 1146 "cfg.y"
{ 
						#ifdef USE_TLS
									tls_server_domains->method=TLS_USE_SSLv2;
						#else
									warn("tls support not compiled in");
						#endif
								}
break;
case 218:
#line 1153 "cfg.y"
{ 
						#ifdef USE_TLS
									tls_server_domains->method=TLS_USE_SSLv3;
						#else
									warn("tls support not compiled in");
						#endif
								}
break;
case 219:
#line 1160 "cfg.y"
{ 
						#ifdef USE_TLS
									tls_server_domains->method=TLS_USE_TLSv1;
						#else
									warn("tls support not compiled in");
						#endif
								}
break;
case 220:
#line 1167 "cfg.y"
{ yyerror("SSLv23, SSLv2, SSLv3 or TLSv1 expected"); }
break;
case 221:
#line 1168 "cfg.y"
{ 
						#ifdef USE_TLS
									tls_server_domains->cert_file=yyvsp[0].strval;
						#else
									warn("tls support not compiled in");
						#endif
								}
break;
case 222:
#line 1175 "cfg.y"
{ yyerror("string value expected"); }
break;
case 223:
#line 1177 "cfg.y"
{ 
						#ifdef USE_TLS
									tls_server_domains->pkey_file=yyvsp[0].strval;
						#else
									warn("tls support not compiled in");
						#endif
								}
break;
case 224:
#line 1184 "cfg.y"
{ yyerror("string value expected"); }
break;
case 225:
#line 1186 "cfg.y"
{ 
						#ifdef USE_TLS
									tls_server_domains->ca_file=yyvsp[0].strval; 
						#else
									warn("tls support not compiled in");
						#endif
								}
break;
case 226:
#line 1193 "cfg.y"
{ yyerror("string value expected"); }
break;
case 227:
#line 1194 "cfg.y"
{ 
						#ifdef USE_TLS
									tls_server_domains->ciphers_list=yyvsp[0].strval;
						#else
									warn("tls support not compiled in");
						#endif
								}
break;
case 228:
#line 1201 "cfg.y"
{ yyerror("string value expected"); }
break;
case 229:
#line 1202 "cfg.y"
{
						#ifdef USE_TLS
									tls_server_domains->verify_cert=yyvsp[0].intval;
						#else
									warn("tls support not compiled in");
						#endif
								}
break;
case 230:
#line 1209 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 231:
#line 1210 "cfg.y"
{
						#ifdef USE_TLS
									tls_server_domains->require_client_cert=yyvsp[0].intval;
						#else
									warn( "tls support not compiled in");
						#endif
								}
break;
case 232:
#line 1217 "cfg.y"
{ 
						yyerror("boolean value expected"); }
break;
case 233:
#line 1221 "cfg.y"
{ 
						#ifdef USE_TLS
									tls_client_domains->method=TLS_USE_SSLv23;
						#else
									warn("tls support not compiled in");
						#endif
								}
break;
case 234:
#line 1228 "cfg.y"
{ 
						#ifdef USE_TLS
									tls_client_domains->method=TLS_USE_SSLv2;
						#else
									warn("tls support not compiled in");
						#endif
								}
break;
case 235:
#line 1235 "cfg.y"
{ 
						#ifdef USE_TLS
									tls_client_domains->method=TLS_USE_SSLv3;
						#else
									warn("tls support not compiled in");
						#endif
								}
break;
case 236:
#line 1242 "cfg.y"
{ 
						#ifdef USE_TLS
									tls_client_domains->method=TLS_USE_TLSv1;
						#else
									warn("tls support not compiled in");
						#endif
								}
break;
case 237:
#line 1249 "cfg.y"
{
						yyerror("SSLv23, SSLv2, SSLv3 or TLSv1 expected"); }
break;
case 238:
#line 1251 "cfg.y"
{ 
						#ifdef USE_TLS
									tls_client_domains->cert_file=yyvsp[0].strval;
						#else
									warn("tls support not compiled in");
						#endif
								}
break;
case 239:
#line 1258 "cfg.y"
{ yyerror("string value expected"); }
break;
case 240:
#line 1260 "cfg.y"
{ 
						#ifdef USE_TLS
									tls_client_domains->pkey_file=yyvsp[0].strval;
						#else
									warn("tls support not compiled in");
						#endif
								}
break;
case 241:
#line 1267 "cfg.y"
{ yyerror("string value expected"); }
break;
case 242:
#line 1269 "cfg.y"
{ 
						#ifdef USE_TLS
									tls_client_domains->ca_file=yyvsp[0].strval; 
						#else
									warn("tls support not compiled in");
						#endif
								}
break;
case 243:
#line 1276 "cfg.y"
{ yyerror("string value expected"); }
break;
case 244:
#line 1277 "cfg.y"
{ 
						#ifdef USE_TLS
									tls_client_domains->ciphers_list=yyvsp[0].strval;
						#else
									warn("tls support not compiled in");
						#endif
								}
break;
case 245:
#line 1284 "cfg.y"
{ yyerror("string value expected"); }
break;
case 246:
#line 1285 "cfg.y"
{
						#ifdef USE_TLS
									tls_client_domains->verify_cert=yyvsp[0].intval;
						#else
									warn("tls support not compiled in");
						#endif
								}
break;
case 247:
#line 1292 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 248:
#line 1295 "cfg.y"
{
										if (rlist[DEFAULT_RT]!=0) {
											yyerror("overwritting default "
													"request routing table");
											YYABORT;
										}
										push(yyvsp[-1].action, &rlist[DEFAULT_RT]);
										}
break;
case 249:
#line 1303 "cfg.y"
{ 
										if ((yyvsp[-4].intval<RT_NO) && (yyvsp[-4].intval>=0)){
											if (rlist[yyvsp[-4].intval]!=0) {
												yyerror("overwritting request "
													"routing table");
												YYABORT;
											}
											push(yyvsp[-1].action, &rlist[yyvsp[-4].intval]);
										}else{
											yyerror("invalid routing "
													"table number");
											YYABORT; }
										}
break;
case 250:
#line 1316 "cfg.y"
{ yyerror("invalid  route  statement"); }
break;
case 251:
#line 1319 "cfg.y"
{
										if ((yyvsp[-4].intval<FAILURE_RT_NO)&&(yyvsp[-4].intval>=1)){
											if (failure_rlist[yyvsp[-4].intval]!=0) {
												yyerror("overwritting failure "
													"routing table");
												YYABORT;
											}
											push(yyvsp[-1].action, &failure_rlist[yyvsp[-4].intval]);
										} else {
											yyerror("invalid reply routing "
												"table number");
											YYABORT; }
										}
break;
case 252:
#line 1332 "cfg.y"
{ yyerror("invalid failure_route statement"); }
break;
case 253:
#line 1335 "cfg.y"
{
										if (onreply_rlist[DEFAULT_RT]!=0) {
											yyerror("overwritting default "
													"onreply routing table");
											YYABORT;
										}
										push(yyvsp[-1].action, &onreply_rlist[DEFAULT_RT]);
										}
break;
case 254:
#line 1343 "cfg.y"
{
										if ((yyvsp[-4].intval<ONREPLY_RT_NO)&&(yyvsp[-4].intval>=1)){
											if (onreply_rlist[yyvsp[-4].intval]!=0) {
												yyerror("overwritting onreply "
													"routing table");
												YYABORT;
											}
											push(yyvsp[-1].action, &onreply_rlist[yyvsp[-4].intval]);
										} else {
											yyerror("invalid reply routing "
												"table number");
											YYABORT; }
										}
break;
case 255:
#line 1356 "cfg.y"
{ yyerror("invalid onreply_route statement"); }
break;
case 256:
#line 1359 "cfg.y"
{
										if ((yyvsp[-4].intval<BRANCH_RT_NO)&&(yyvsp[-4].intval>=1)){
											if (branch_rlist[yyvsp[-4].intval]!=0) {
												yyerror("overwritting branch "
													"routing table");
												YYABORT;
											}
											push(yyvsp[-1].action, &branch_rlist[yyvsp[-4].intval]);
										} else {
											yyerror("invalid branch routing "
												"table number");
											YYABORT; }
										}
break;
case 257:
#line 1372 "cfg.y"
{ yyerror("invalid branch_route statement"); }
break;
case 258:
#line 1375 "cfg.y"
{
										if (error_rlist!=0) {
											yyerror("overwritting default "
													"error routing table");
											YYABORT;
										}
										push(yyvsp[-1].action, &error_rlist);
										}
break;
case 259:
#line 1383 "cfg.y"
{ yyerror("invalid error_route statement"); }
break;
case 260:
#line 1386 "cfg.y"
{ yyval.expr=mk_exp(AND_OP, yyvsp[-2].expr, yyvsp[0].expr); }
break;
case 261:
#line 1387 "cfg.y"
{ yyval.expr=mk_exp(OR_OP, yyvsp[-2].expr, yyvsp[0].expr);  }
break;
case 262:
#line 1388 "cfg.y"
{ yyval.expr=mk_exp(NOT_OP, yyvsp[0].expr, 0);  }
break;
case 263:
#line 1389 "cfg.y"
{ yyval.expr=mk_exp(EVAL_OP, yyvsp[-1].expr, 0); }
break;
case 264:
#line 1390 "cfg.y"
{ yyval.expr=yyvsp[-1].expr; }
break;
case 265:
#line 1391 "cfg.y"
{ yyval.expr=yyvsp[0].expr; }
break;
case 266:
#line 1394 "cfg.y"
{yyval.intval=EQUAL_OP; }
break;
case 267:
#line 1395 "cfg.y"
{yyval.intval=DIFF_OP; }
break;
case 268:
#line 1398 "cfg.y"
{yyval.intval=GT_OP; }
break;
case 269:
#line 1399 "cfg.y"
{yyval.intval=LT_OP; }
break;
case 270:
#line 1400 "cfg.y"
{yyval.intval=GTE_OP; }
break;
case 271:
#line 1401 "cfg.y"
{yyval.intval=LTE_OP; }
break;
case 272:
#line 1403 "cfg.y"
{yyval.intval=MATCH_OP; }
break;
case 273:
#line 1404 "cfg.y"
{yyval.intval=NOTMATCH_OP; }
break;
case 274:
#line 1407 "cfg.y"
{yyval.intval=yyvsp[0].intval; }
break;
case 275:
#line 1408 "cfg.y"
{yyval.intval=yyvsp[0].intval; }
break;
case 276:
#line 1411 "cfg.y"
{yyval.intval=yyvsp[0].intval; }
break;
case 277:
#line 1412 "cfg.y"
{yyval.intval=yyvsp[0].intval; }
break;
case 278:
#line 1413 "cfg.y"
{yyval.intval=yyvsp[0].intval; }
break;
case 279:
#line 1416 "cfg.y"
{yyval.intval=URI_O;}
break;
case 280:
#line 1417 "cfg.y"
{yyval.intval=FROM_URI_O;}
break;
case 281:
#line 1418 "cfg.y"
{yyval.intval=TO_URI_O;}
break;
case 282:
#line 1421 "cfg.y"
{ 
				/* printf("\n+++ scriptvar <%s>\n", $1); */
				spec = (xl_spec_t*)pkg_malloc(sizeof(xl_spec_t));
				memset(spec, 0, sizeof(xl_spec_t));
				if(xl_parse_spec(yyvsp[0].strval, spec, 0)==NULL)
				{
					yyerror("unknown script variable");
				}
				yyval.specval = spec;
			}
break;
case 283:
#line 1431 "cfg.y"
{
			yyval.specval=0; yyerror("invalid script variable name");
		}
break;
case 284:
#line 1436 "cfg.y"
{yyval.expr=yyvsp[0].expr; }
break;
case 285:
#line 1437 "cfg.y"
{yyval.expr=mk_elem( NO_OP, ACTION_O, 0, ACTIONS_ST, yyvsp[0].action ); }
break;
case 286:
#line 1438 "cfg.y"
{yyval.expr=mk_elem( NO_OP, NUMBER_O, 0, NUMBER_ST, 
											(void*)yyvsp[0].intval ); }
break;
case 287:
#line 1440 "cfg.y"
{
				yyval.expr=mk_elem(NO_OP, SCRIPTVAR_O,0,SCRIPTVAR_ST,(void*)yyvsp[0].specval);
			}
break;
case 288:
#line 1443 "cfg.y"
{yyval.expr = mk_elem(yyvsp[-1].intval, yyvsp[-2].intval, 0, STRING_ST, yyvsp[0].strval); 
				 			}
break;
case 289:
#line 1445 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, DSTIP_O, 0, NET_ST, yyvsp[0].ipnet);
								}
break;
case 290:
#line 1447 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, DSTIP_O, 0, STRING_ST, yyvsp[0].strval);
								}
break;
case 291:
#line 1449 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, SRCIP_O, 0, NET_ST, yyvsp[0].ipnet);
								}
break;
case 292:
#line 1451 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, SRCIP_O, 0, STRING_ST, yyvsp[0].strval);
								}
break;
case 293:
#line 1455 "cfg.y"
{yyval.expr= mk_elem(yyvsp[-1].intval, METHOD_O, 0, STRING_ST, yyvsp[0].strval);
									}
break;
case 294:
#line 1457 "cfg.y"
{yyval.expr = mk_elem(yyvsp[-1].intval, METHOD_O, 0, STRING_ST, yyvsp[0].strval); 
				 			}
break;
case 295:
#line 1459 "cfg.y"
{ yyval.expr=0; yyerror("string expected"); }
break;
case 296:
#line 1460 "cfg.y"
{ yyval.expr=0; yyerror("invalid operator,"
										"== , !=, or =~ expected");
						}
break;
case 297:
#line 1463 "cfg.y"
{
				yyval.expr=mk_elem( yyvsp[-1].intval, SCRIPTVAR_O,(void*)yyvsp[-2].specval,SCRIPTVAR_ST,(void*)yyvsp[0].specval);
			}
break;
case 298:
#line 1466 "cfg.y"
{
				yyval.expr=mk_elem( yyvsp[-1].intval, SCRIPTVAR_O,(void*)yyvsp[-2].specval,STRING_ST,yyvsp[0].strval);
			}
break;
case 299:
#line 1469 "cfg.y"
{
				yyval.expr=mk_elem( yyvsp[-1].intval, SCRIPTVAR_O,(void*)yyvsp[-2].specval,STRING_ST,yyvsp[0].strval);
			}
break;
case 300:
#line 1472 "cfg.y"
{
				yyval.expr=mk_elem( yyvsp[-1].intval, SCRIPTVAR_O,(void*)yyvsp[-2].specval,NUMBER_ST,(void *)yyvsp[0].intval);
			}
break;
case 301:
#line 1475 "cfg.y"
{ 
				yyval.expr=mk_elem( yyvsp[-1].intval, SCRIPTVAR_O,(void*)yyvsp[-2].specval, MYSELF_ST, 0);
			}
break;
case 302:
#line 1478 "cfg.y"
{ 
				yyval.expr=mk_elem( yyvsp[-1].intval, SCRIPTVAR_O,(void*)yyvsp[-2].specval, NULLV_ST, 0);
			}
break;
case 303:
#line 1481 "cfg.y"
{yyval.expr = mk_elem(yyvsp[-1].intval, yyvsp[-2].intval, 0, STRING_ST, yyvsp[0].strval); 
				 				}
break;
case 304:
#line 1483 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, yyvsp[-2].intval, 0, MYSELF_ST, 0);
								}
break;
case 305:
#line 1485 "cfg.y"
{ yyval.expr=0; yyerror("string or MYSELF expected"); }
break;
case 306:
#line 1486 "cfg.y"
{ yyval.expr=0; yyerror("invalid operator,"
									" == , != or =~ expected");
					}
break;
case 307:
#line 1489 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, SRCPORT_O, 0, NUMBER_ST,
												(void *) yyvsp[0].intval ); }
break;
case 308:
#line 1491 "cfg.y"
{ yyval.expr=0; yyerror("number expected"); }
break;
case 309:
#line 1492 "cfg.y"
{ yyval.expr=0; yyerror("==, !=, <,>, >= or <=  expected"); }
break;
case 310:
#line 1493 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, DSTPORT_O, 0, NUMBER_ST,
												(void *) yyvsp[0].intval ); }
break;
case 311:
#line 1495 "cfg.y"
{ yyval.expr=0; yyerror("number expected"); }
break;
case 312:
#line 1496 "cfg.y"
{ yyval.expr=0; yyerror("==, !=, <,>, >= or <=  expected"); }
break;
case 313:
#line 1497 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, PROTO_O, 0, NUMBER_ST,
												(void *) yyvsp[0].intval ); }
break;
case 314:
#line 1499 "cfg.y"
{ yyval.expr=0;
								yyerror("protocol expected (udp, tcp or tls)");
							}
break;
case 315:
#line 1502 "cfg.y"
{ yyval.expr=0; yyerror("equal/!= operator expected"); }
break;
case 316:
#line 1503 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, AF_O, 0, NUMBER_ST,
												(void *) yyvsp[0].intval ); }
break;
case 317:
#line 1505 "cfg.y"
{ yyval.expr=0; yyerror("number expected"); }
break;
case 318:
#line 1506 "cfg.y"
{ yyval.expr=0; yyerror("equal/!= operator expected"); }
break;
case 319:
#line 1507 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, MSGLEN_O, 0, NUMBER_ST,
												(void *) yyvsp[0].intval ); }
break;
case 320:
#line 1509 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, MSGLEN_O, 0, NUMBER_ST,
												(void *) BUF_SIZE); }
break;
case 321:
#line 1511 "cfg.y"
{ yyval.expr=0; yyerror("number expected"); }
break;
case 322:
#line 1512 "cfg.y"
{ yyval.expr=0; yyerror("equal/!= operator expected"); }
break;
case 323:
#line 1513 "cfg.y"
{	s_tmp.s=yyvsp[0].strval;
									s_tmp.len=strlen(yyvsp[0].strval);
									ip_tmp=str2ip(&s_tmp);
									if (ip_tmp==0)
										ip_tmp=str2ip6(&s_tmp);
									if (ip_tmp){
										yyval.expr=mk_elem(yyvsp[-1].intval, SRCIP_O, 0, NET_ST,
												mk_net_bitlen(ip_tmp, 
														ip_tmp->len*8) );
									}else{
										yyval.expr=mk_elem(yyvsp[-1].intval, SRCIP_O, 0, STRING_ST,
												yyvsp[0].strval);
									}
								}
break;
case 324:
#line 1527 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, SRCIP_O, 0, MYSELF_ST, 0);
								}
break;
case 325:
#line 1529 "cfg.y"
{ yyval.expr=0; yyerror( "ip address or hostname"
						 "expected" ); }
break;
case 326:
#line 1531 "cfg.y"
{ yyval.expr=0; 
						 yyerror("invalid operator, ==, != or =~ expected");}
break;
case 327:
#line 1533 "cfg.y"
{	s_tmp.s=yyvsp[0].strval;
									s_tmp.len=strlen(yyvsp[0].strval);
									ip_tmp=str2ip(&s_tmp);
									if (ip_tmp==0)
										ip_tmp=str2ip6(&s_tmp);
									if (ip_tmp){
										yyval.expr=mk_elem(yyvsp[-1].intval, DSTIP_O, 0, NET_ST,
												mk_net_bitlen(ip_tmp, 
														ip_tmp->len*8) );
									}else{
										yyval.expr=mk_elem(yyvsp[-1].intval, DSTIP_O, 0, STRING_ST,
												yyvsp[0].strval);
									}
								}
break;
case 328:
#line 1547 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, DSTIP_O, 0, MYSELF_ST, 0);
								}
break;
case 329:
#line 1549 "cfg.y"
{ yyval.expr=0; yyerror( "ip address or hostname"
						 			"expected" ); }
break;
case 330:
#line 1551 "cfg.y"
{ yyval.expr=0; 
						yyerror("invalid operator, ==, != or =~ expected");}
break;
case 331:
#line 1553 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, yyvsp[0].intval, 0, MYSELF_ST, 0);
								}
break;
case 332:
#line 1555 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, SRCIP_O, 0, MYSELF_ST, 0);
								}
break;
case 333:
#line 1557 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, DSTIP_O, 0, MYSELF_ST, 0);
								}
break;
case 334:
#line 1559 "cfg.y"
{	yyval.expr=0; 
									yyerror(" URI, SRCIP or DSTIP expected"); }
break;
case 335:
#line 1561 "cfg.y"
{ yyval.expr=0; 
							yyerror ("invalid operator, == or != expected");
						}
break;
case 336:
#line 1566 "cfg.y"
{ yyval.ipnet=mk_net(yyvsp[-2].ipaddr, yyvsp[0].ipaddr); }
break;
case 337:
#line 1567 "cfg.y"
{	if ((yyvsp[0].intval<0) || (yyvsp[0].intval>(long)yyvsp[-2].ipaddr->len*8)){
								yyerror("invalid bit number in netmask");
								yyval.ipnet=0;
							}else{
								yyval.ipnet=mk_net_bitlen(yyvsp[-2].ipaddr, yyvsp[0].intval);
							/*
								$$=mk_net($1, 
										htonl( ($3)?~( (1<<(32-$3))-1 ):0 ) );
							*/
							}
						}
break;
case 338:
#line 1578 "cfg.y"
{ yyval.ipnet=mk_net_bitlen(yyvsp[0].ipaddr, yyvsp[0].ipaddr->len*8); }
break;
case 339:
#line 1579 "cfg.y"
{ yyval.ipnet=0;
						 yyerror("netmask (eg:255.0.0.0 or 8) expected");
						}
break;
case 340:
#line 1586 "cfg.y"
{yyval.strval=".";}
break;
case 341:
#line 1587 "cfg.y"
{yyval.strval="-"; }
break;
case 342:
#line 1590 "cfg.y"
{ yyval.strval=yyvsp[0].strval; }
break;
case 343:
#line 1591 "cfg.y"
{ yyval.strval=(char*)pkg_malloc(strlen(yyvsp[-2].strval)+1+strlen(yyvsp[0].strval)+1);
						  if (yyval.strval==0){
							LOG(L_CRIT, "ERROR: cfg. parser: memory allocation"
										" failure while parsing host\n");
						  }else{
							memcpy(yyval.strval, yyvsp[-2].strval, strlen(yyvsp[-2].strval));
							yyval.strval[strlen(yyvsp[-2].strval)]=*yyvsp[-1].strval;
							memcpy(yyval.strval+strlen(yyvsp[-2].strval)+1, yyvsp[0].strval, strlen(yyvsp[0].strval));
							yyval.strval[strlen(yyvsp[-2].strval)+1+strlen(yyvsp[0].strval)]=0;
						  }
						  pkg_free(yyvsp[-2].strval); pkg_free(yyvsp[0].strval);
						}
break;
case 344:
#line 1603 "cfg.y"
{ yyval.strval=0; pkg_free(yyvsp[-2].strval); yyerror("invalid hostname"); }
break;
case 345:
#line 1607 "cfg.y"
{ yyval.intval = EQ_T; }
break;
case 346:
#line 1608 "cfg.y"
{ yyval.intval = PLUSEQ_T; }
break;
case 347:
#line 1609 "cfg.y"
{ yyval.intval = MINUSEQ_T;}
break;
case 348:
#line 1610 "cfg.y"
{ yyval.intval = DIVEQ_T; }
break;
case 349:
#line 1611 "cfg.y"
{ yyval.intval = MULTEQ_T; }
break;
case 350:
#line 1612 "cfg.y"
{ yyval.intval = MODULOEQ_T; }
break;
case 351:
#line 1613 "cfg.y"
{ yyval.intval = BANDEQ_T; }
break;
case 352:
#line 1614 "cfg.y"
{ yyval.intval = BOREQ_T; }
break;
case 353:
#line 1615 "cfg.y"
{ yyval.intval = BXOREQ_T; }
break;
case 354:
#line 1619 "cfg.y"
{ yyval.expr = mk_elem(VALUE_OP, NUMBERV_O, (void*)yyvsp[0].intval, 0, 0); }
break;
case 355:
#line 1620 "cfg.y"
{ yyval.expr = mk_elem(VALUE_OP, STRINGV_O, yyvsp[0].strval, 0, 0); }
break;
case 356:
#line 1621 "cfg.y"
{ yyval.expr = mk_elem(VALUE_OP, STRINGV_O, yyvsp[0].strval, 0, 0); }
break;
case 357:
#line 1622 "cfg.y"
{ yyval.expr = mk_elem(VALUE_OP, SCRIPTVAR_O, yyvsp[0].specval, 0, 0); }
break;
case 358:
#line 1623 "cfg.y"
{ yyval.expr= yyvsp[0].expr; }
break;
case 359:
#line 1624 "cfg.y"
{ yyval.expr=mk_elem( NO_OP, ACTION_O, 0, ACTIONS_ST, yyvsp[0].action ); }
break;
case 360:
#line 1625 "cfg.y"
{ 
				yyval.expr = mk_elem(PLUS_OP, EXPR_O, yyvsp[-2].expr, EXPR_ST, yyvsp[0].expr);
			}
break;
case 361:
#line 1628 "cfg.y"
{ 
				yyval.expr = mk_elem(MINUS_OP, EXPR_O, yyvsp[-2].expr, EXPR_ST, yyvsp[0].expr); 
			}
break;
case 362:
#line 1631 "cfg.y"
{ 
				yyval.expr = mk_elem(MULT_OP, EXPR_O, yyvsp[-2].expr, EXPR_ST, yyvsp[0].expr);
			}
break;
case 363:
#line 1634 "cfg.y"
{ 
				yyval.expr = mk_elem(DIV_OP, EXPR_O, yyvsp[-2].expr, EXPR_ST, yyvsp[0].expr);
			}
break;
case 364:
#line 1637 "cfg.y"
{ 
				yyval.expr = mk_elem(MODULO_OP, EXPR_O, yyvsp[-2].expr, EXPR_ST, yyvsp[0].expr);
			}
break;
case 365:
#line 1640 "cfg.y"
{ 
				yyval.expr = mk_elem(BAND_OP, EXPR_O, yyvsp[-2].expr, EXPR_ST, yyvsp[0].expr);
			}
break;
case 366:
#line 1643 "cfg.y"
{ 
				yyval.expr = mk_elem(BOR_OP, EXPR_O, yyvsp[-2].expr, EXPR_ST, yyvsp[0].expr);
			}
break;
case 367:
#line 1646 "cfg.y"
{ 
				yyval.expr = mk_elem(BXOR_OP, EXPR_O, yyvsp[-2].expr, EXPR_ST, yyvsp[0].expr);
			}
break;
case 368:
#line 1649 "cfg.y"
{ 
				yyval.expr = mk_elem(BNOT_OP, EXPR_O, yyvsp[0].expr, 0, 0);
			}
break;
case 369:
#line 1652 "cfg.y"
{ yyval.expr = yyvsp[-1].expr; }
break;
case 370:
#line 1655 "cfg.y"
{	
			switch(yyvsp[-2].specval->type) {
				case XL_AVP:
				case XL_SCRIPTVAR:
				case XL_RURI:
				case XL_RURI_USERNAME:
				case XL_RURI_DOMAIN:
				case XL_DSTURI:
				break;
				default:
					yyerror("invalid left operand in assignment");
			}
			if(yyvsp[-2].specval->trans!=0)
				yyerror(
					"transformations not accepted in right side of assignment");

			mk_action2( yyval.action, yyvsp[-1].intval,
					SCRIPTVAR_ST,
					EXPR_ST,
					yyvsp[-2].specval,
					yyvsp[0].expr);
		}
break;
case 371:
#line 1677 "cfg.y"
{
			switch(yyvsp[-2].specval->type) {
				case XL_AVP:
				case XL_SCRIPTVAR:
				case XL_DSTURI:
				case XL_RURI_USERNAME:
				break;
				default:
					yyerror("invalid left operand in NULL assignment");
			}
			if(yyvsp[-2].specval->trans!=0)
				yyerror(
					"transformations not accepted in right side of assignment");

			mk_action2( yyval.action, EQ_T,
					SCRIPTVAR_ST,
					NULLV_ST,
					yyvsp[-2].specval,
					0);
		}
break;
case 372:
#line 1699 "cfg.y"
{ yyval.action=yyvsp[0].action; }
break;
case 373:
#line 1700 "cfg.y"
{ yyval.action=yyvsp[0].action; }
break;
case 374:
#line 1701 "cfg.y"
{ yyval.action=yyvsp[0].action; }
break;
case 375:
#line 1702 "cfg.y"
{ yyval.action=yyvsp[-1].action; }
break;
case 376:
#line 1703 "cfg.y"
{ yyval.action=0; }
break;
case 377:
#line 1706 "cfg.y"
{ yyval.action=yyvsp[0].action; }
break;
case 378:
#line 1707 "cfg.y"
{ yyval.action=yyvsp[-1].action; }
break;
case 379:
#line 1708 "cfg.y"
{ yyval.action=0; }
break;
case 380:
#line 1711 "cfg.y"
{yyval.action=append_action(yyvsp[-1].action, yyvsp[0].action); }
break;
case 381:
#line 1712 "cfg.y"
{yyval.action=yyvsp[0].action;}
break;
case 382:
#line 1713 "cfg.y"
{ yyval.action=0; yyerror("bad command!)"); }
break;
case 383:
#line 1716 "cfg.y"
{yyval.action=yyvsp[-1].action;}
break;
case 384:
#line 1717 "cfg.y"
{yyval.action=yyvsp[0].action;}
break;
case 385:
#line 1718 "cfg.y"
{yyval.action=yyvsp[0].action;}
break;
case 386:
#line 1719 "cfg.y"
{yyval.action=yyvsp[-1].action;}
break;
case 387:
#line 1720 "cfg.y"
{yyval.action=0;}
break;
case 388:
#line 1721 "cfg.y"
{ yyval.action=0; yyerror("bad command: missing ';'?"); }
break;
case 389:
#line 1724 "cfg.y"
{ mk_action3( yyval.action, IF_T,
													 EXPR_ST,
													 ACTIONS_ST,
													 NOSUBTYPE,
													 yyvsp[-1].expr,
													 yyvsp[0].action,
													 0);
									}
break;
case 390:
#line 1732 "cfg.y"
{ mk_action3( yyval.action, IF_T,
													 EXPR_ST,
													 ACTIONS_ST,
													 ACTIONS_ST,
													 yyvsp[-3].expr,
													 yyvsp[-2].action,
													 yyvsp[0].action);
									}
break;
case 391:
#line 1743 "cfg.y"
{
											mk_action2( yyval.action, SWITCH_T,
														SCRIPTVAR_ST,
														ACTIONS_ST,
														yyvsp[-4].specval,
														yyvsp[-1].action);
									}
break;
case 392:
#line 1752 "cfg.y"
{ yyval.action=append_action(yyvsp[-1].action, yyvsp[0].action); }
break;
case 393:
#line 1753 "cfg.y"
{ yyval.action=yyvsp[0].action; }
break;
case 394:
#line 1755 "cfg.y"
{yyval.action=append_action(yyvsp[-1].action, yyvsp[0].action); }
break;
case 395:
#line 1756 "cfg.y"
{yyval.action=yyvsp[0].action;}
break;
case 396:
#line 1760 "cfg.y"
{ mk_action3( yyval.action, CASE_T,
													NUMBER_ST,
													ACTIONS_ST,
													NUMBER_ST,
													(void*)yyvsp[-4].intval,
													yyvsp[-2].action,
													(void*)1);
											}
break;
case 397:
#line 1769 "cfg.y"
{ mk_action3( yyval.action, CASE_T,
													NUMBER_ST,
													ACTIONS_ST,
													NUMBER_ST,
													(void*)yyvsp[-3].intval,
													0,
													(void*)1);
											}
break;
case 398:
#line 1777 "cfg.y"
{ mk_action3( yyval.action, CASE_T,
													NUMBER_ST,
													ACTIONS_ST,
													NUMBER_ST,
													(void*)yyvsp[-2].intval,
													yyvsp[0].action,
													(void*)0);
									}
break;
case 399:
#line 1785 "cfg.y"
{ mk_action3( yyval.action, CASE_T,
													NUMBER_ST,
													ACTIONS_ST,
													NUMBER_ST,
													(void*)yyvsp[-1].intval,
													0,
													(void*)0);
							}
break;
case 400:
#line 1794 "cfg.y"
{ mk_action3( yyval.action, CASE_T,
													STRING_ST,
													ACTIONS_ST,
													NUMBER_ST,
													(void*)yyvsp[-4].strval,
													yyvsp[-2].action,
													(void*)1);
											}
break;
case 401:
#line 1803 "cfg.y"
{ mk_action3( yyval.action, CASE_T,
													STRING_ST,
													ACTIONS_ST,
													NUMBER_ST,
													(void*)yyvsp[-3].strval,
													0,
													(void*)1);
											}
break;
case 402:
#line 1811 "cfg.y"
{ mk_action3( yyval.action, CASE_T,
													STRING_ST,
													ACTIONS_ST,
													NUMBER_ST,
													(void*)yyvsp[-2].strval,
													yyvsp[0].action,
													(void*)0);
									}
break;
case 403:
#line 1819 "cfg.y"
{ mk_action3( yyval.action, CASE_T,
													STRING_ST,
													ACTIONS_ST,
													NUMBER_ST,
													(void*)yyvsp[-1].strval,
													0,
													(void*)0);
							}
break;
case 404:
#line 1830 "cfg.y"
{ mk_action2( yyval.action, DEFAULT_T,
													ACTIONS_ST,
													0,
													yyvsp[0].action,
													0);
									}
break;
case 405:
#line 1836 "cfg.y"
{ mk_action2( yyval.action, DEFAULT_T,
													ACTIONS_ST,
													0,
													0,
													0);
									}
break;
case 406:
#line 1844 "cfg.y"
{ mk_action2( yyval.action, FORWARD_T,
											STRING_ST,
											0,
											yyvsp[-1].strval,
											0);
										}
break;
case 407:
#line 1850 "cfg.y"
{
										mk_action2( yyval.action, FORWARD_T,
											0,
											0,
											0,
											0);
										}
break;
case 408:
#line 1857 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 409:
#line 1858 "cfg.y"
{ yyval.action=0; yyerror("bad forward"
										"argument"); }
break;
case 410:
#line 1861 "cfg.y"
{ mk_action2( yyval.action, SEND_T,
											STRING_ST,
											0,
											yyvsp[-1].strval,
											0);
										}
break;
case 411:
#line 1867 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 412:
#line 1868 "cfg.y"
{ yyval.action=0; yyerror("bad send"
													"argument"); }
break;
case 413:
#line 1870 "cfg.y"
{mk_action2( yyval.action, DROP_T,0, 0, 0, 0); }
break;
case 414:
#line 1871 "cfg.y"
{mk_action2( yyval.action, DROP_T,0, 0, 0, 0); }
break;
case 415:
#line 1872 "cfg.y"
{mk_action2( yyval.action, EXIT_T,0, 0, 0, 0); }
break;
case 416:
#line 1873 "cfg.y"
{mk_action2( yyval.action, EXIT_T,0, 0, 0, 0); }
break;
case 417:
#line 1874 "cfg.y"
{mk_action2( yyval.action, RETURN_T,
																NUMBER_ST, 
																0,
																(void*)yyvsp[-1].intval,
																0);
												}
break;
case 418:
#line 1880 "cfg.y"
{mk_action2( yyval.action, RETURN_T,
																NUMBER_ST, 
																0,
																(void*)1,
																0);
												}
break;
case 419:
#line 1886 "cfg.y"
{mk_action2( yyval.action, RETURN_T,
																NUMBER_ST, 
																0,
																(void*)1,
																0);
												}
break;
case 420:
#line 1892 "cfg.y"
{mk_action2( yyval.action, LOG_T, NUMBER_ST, 
													STRING_ST,(void*)4,yyvsp[-1].strval);
									}
break;
case 421:
#line 1895 "cfg.y"
{mk_action2( yyval.action, LOG_T,
																NUMBER_ST, 
																STRING_ST,
																(void*)yyvsp[-3].intval,
																yyvsp[-1].strval);
												}
break;
case 422:
#line 1901 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 423:
#line 1902 "cfg.y"
{ yyval.action=0; yyerror("bad log"
									"argument"); }
break;
case 424:
#line 1904 "cfg.y"
{mk_action2( yyval.action, SETFLAG_T, NUMBER_ST, 0,
													(void *)yyvsp[-1].intval, 0 ); }
break;
case 425:
#line 1906 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')'?"); }
break;
case 426:
#line 1907 "cfg.y"
{mk_action2( yyval.action, RESETFLAG_T,
										NUMBER_ST, 0, (void *)yyvsp[-1].intval, 0 ); }
break;
case 427:
#line 1909 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')'?"); }
break;
case 428:
#line 1910 "cfg.y"
{mk_action2( yyval.action, ISFLAGSET_T,
										NUMBER_ST, 0, (void *)yyvsp[-1].intval, 0 ); }
break;
case 429:
#line 1912 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')'?"); }
break;
case 430:
#line 1913 "cfg.y"
{mk_action2( yyval.action, SETSFLAG_T, NUMBER_ST,
										0, (void *)yyvsp[-1].intval, 0 ); }
break;
case 431:
#line 1915 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')'?"); }
break;
case 432:
#line 1916 "cfg.y"
{mk_action2( yyval.action, RESETSFLAG_T,
										NUMBER_ST, 0, (void *)yyvsp[-1].intval, 0 ); }
break;
case 433:
#line 1918 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')'?"); }
break;
case 434:
#line 1919 "cfg.y"
{mk_action2( yyval.action, ISSFLAGSET_T,
										NUMBER_ST, 0, (void *)yyvsp[-1].intval, 0 ); }
break;
case 435:
#line 1921 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')'?"); }
break;
case 436:
#line 1922 "cfg.y"
{mk_action2( yyval.action,
													SETBFLAG_T,
													NUMBER_ST, NUMBER_ST,
													(void *)yyvsp[-3].intval, (void *)yyvsp[-1].intval ); }
break;
case 437:
#line 1926 "cfg.y"
{mk_action2( yyval.action, SETBFLAG_T,
													NUMBER_ST, NUMBER_ST,
													0, (void *)yyvsp[-1].intval ); }
break;
case 438:
#line 1929 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')'?"); }
break;
case 439:
#line 1930 "cfg.y"
{mk_action2( yyval.action, 
													RESETBFLAG_T,
													NUMBER_ST, NUMBER_ST,
													(void *)yyvsp[-3].intval, (void *)yyvsp[-1].intval ); }
break;
case 440:
#line 1934 "cfg.y"
{mk_action2( yyval.action, 
													RESETBFLAG_T,
													NUMBER_ST, NUMBER_ST,
													0, (void *)yyvsp[-1].intval ); }
break;
case 441:
#line 1938 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')'?"); }
break;
case 442:
#line 1939 "cfg.y"
{mk_action2( yyval.action, 
													ISBFLAGSET_T,
													NUMBER_ST, NUMBER_ST,
													(void *)yyvsp[-3].intval, (void *)yyvsp[-1].intval ); }
break;
case 443:
#line 1943 "cfg.y"
{mk_action2( yyval.action, 
													ISBFLAGSET_T,
													NUMBER_ST, NUMBER_ST,
													0, (void *)yyvsp[-1].intval ); }
break;
case 444:
#line 1947 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')'?"); }
break;
case 445:
#line 1948 "cfg.y"
{mk_action2( yyval.action, ERROR_T,
																STRING_ST, 
																STRING_ST,
																yyvsp[-3].strval,
																yyvsp[-1].strval);
												  }
break;
case 446:
#line 1954 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 447:
#line 1955 "cfg.y"
{ yyval.action=0; yyerror("bad error"
														"argument"); }
break;
case 448:
#line 1957 "cfg.y"
{ mk_action2( yyval.action, ROUTE_T, NUMBER_ST,
														0, (void*)yyvsp[-1].intval, 0);
										}
break;
case 449:
#line 1960 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 450:
#line 1961 "cfg.y"
{ yyval.action=0; yyerror("bad route"
						"argument"); }
break;
case 451:
#line 1963 "cfg.y"
{ mk_action2( yyval.action, SET_HOST_T, STRING_ST,
														0, yyvsp[-1].strval, 0); }
break;
case 452:
#line 1965 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 453:
#line 1966 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
														"string expected"); }
break;
case 454:
#line 1969 "cfg.y"
{ mk_action2( yyval.action, PREFIX_T, STRING_ST,
														0, yyvsp[-1].strval, 0); }
break;
case 455:
#line 1971 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 456:
#line 1972 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
														"string expected"); }
break;
case 457:
#line 1974 "cfg.y"
{ mk_action2( yyval.action, STRIP_TAIL_T, 
									NUMBER_ST, 0, (void *) yyvsp[-1].intval, 0); }
break;
case 458:
#line 1976 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 459:
#line 1977 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
														"number expected"); }
break;
case 460:
#line 1980 "cfg.y"
{ mk_action2( yyval.action, STRIP_T, NUMBER_ST,
														0, (void *) yyvsp[-1].intval, 0); }
break;
case 461:
#line 1982 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 462:
#line 1983 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
														"number expected"); }
break;
case 463:
#line 1985 "cfg.y"
{ 
					#ifdef TIMING_INFO
						mk_action2( yyval.action, SET_TIME_STAMP_T, STRING_ST, 0,
								(void *) yyvsp[-1].strval, 0);
					#else
						warn("timing infor support not compiled in");
					#endif
				}
break;
case 464:
#line 1993 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 465:
#line 1994 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
														"number expected"); }
break;
case 466:
#line 1996 "cfg.y"
{ 
					#ifdef TIMING_INFO
						mk_action2( yyval.action, RESET_TIME_STAMP_T, 0, 0, 0, 0);
					#else
						warn("timing infor support not compiled in");
					#endif
				}
break;
case 467:
#line 2003 "cfg.y"
{ 
					#ifdef TIMING_INFO
						mk_action2( yyval.action, DIFF_TIME_STAMP_T, NUMBER_ST, 
								STRING_ST, (void *) yyvsp[-3].intval, (void *) yyvsp[-1].strval);
					#else
						warn("timing infor support not compiled in");
					#endif
				}
break;
case 468:
#line 2011 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 469:
#line 2012 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
														"number expected"); }
break;
case 470:
#line 2014 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 471:
#line 2015 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
														"number expected"); }
break;
case 472:
#line 2017 "cfg.y"
{ 
				{   qvalue_t q;
				if (str2q(&q, yyvsp[-1].strval, strlen(yyvsp[-1].strval)) < 0) {
					yyerror("bad argument, q value expected");
				}
				mk_action2( yyval.action, APPEND_BRANCH_T, STRING_ST, NUMBER_ST, yyvsp[-3].strval,
						(void *)(long)q); } 
		}
break;
case 473:
#line 2025 "cfg.y"
{ mk_action2( yyval.action, APPEND_BRANCH_T,
						STRING_ST, NUMBER_ST, yyvsp[-1].strval, (void *)Q_UNSPECIFIED) ; }
break;
case 474:
#line 2027 "cfg.y"
{ mk_action2( yyval.action, APPEND_BRANCH_T,
						STRING_ST, NUMBER_ST, 0, (void *)Q_UNSPECIFIED) ; }
break;
case 475:
#line 2029 "cfg.y"
{ mk_action2( yyval.action, APPEND_BRANCH_T,
						STRING_ST, NUMBER_ST, 0, (void *)Q_UNSPECIFIED ) ; }
break;
case 476:
#line 2032 "cfg.y"
{ mk_action2( yyval.action, SET_HOSTPORT_T, 
														STRING_ST, 0, yyvsp[-1].strval, 0); }
break;
case 477:
#line 2034 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 478:
#line 2035 "cfg.y"
{ yyval.action=0; yyerror("bad argument,"
												" string expected"); }
break;
case 479:
#line 2037 "cfg.y"
{ mk_action2( yyval.action, SET_PORT_T, STRING_ST,
														0, yyvsp[-1].strval, 0); }
break;
case 480:
#line 2039 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 481:
#line 2040 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
														"string expected"); }
break;
case 482:
#line 2042 "cfg.y"
{ mk_action2( yyval.action, SET_USER_T,
														STRING_ST,
														0, yyvsp[-1].strval, 0); }
break;
case 483:
#line 2045 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 484:
#line 2046 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
														"string expected"); }
break;
case 485:
#line 2048 "cfg.y"
{ mk_action2( yyval.action, SET_USERPASS_T, 
														STRING_ST, 0, yyvsp[-1].strval, 0); }
break;
case 486:
#line 2050 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 487:
#line 2051 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
														"string expected"); }
break;
case 488:
#line 2053 "cfg.y"
{ mk_action2( yyval.action, SET_URI_T, STRING_ST, 
														0, yyvsp[-1].strval, 0); }
break;
case 489:
#line 2055 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 490:
#line 2056 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
										"string expected"); }
break;
case 491:
#line 2058 "cfg.y"
{ mk_action2( yyval.action, REVERT_URI_T, 0,0,0,0); }
break;
case 492:
#line 2059 "cfg.y"
{ mk_action2( yyval.action, REVERT_URI_T, 0,0,0,0); }
break;
case 493:
#line 2060 "cfg.y"
{ mk_action2( yyval.action, SET_DSTURI_T,
													STRING_ST, 0, yyvsp[-1].strval, 0); }
break;
case 494:
#line 2062 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 495:
#line 2063 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
										"string expected"); }
break;
case 496:
#line 2065 "cfg.y"
{ mk_action2( yyval.action, RESET_DSTURI_T,
															0,0,0,0); }
break;
case 497:
#line 2067 "cfg.y"
{ mk_action2( yyval.action, RESET_DSTURI_T, 0,0,0,0); }
break;
case 498:
#line 2068 "cfg.y"
{ mk_action2( yyval.action, ISDSTURISET_T, 0,0,0,0); }
break;
case 499:
#line 2069 "cfg.y"
{ mk_action2( yyval.action, ISDSTURISET_T, 0,0,0,0); }
break;
case 500:
#line 2070 "cfg.y"
{ mk_action2( yyval.action, FORCE_RPORT_T,
															0, 0, 0, 0); }
break;
case 501:
#line 2072 "cfg.y"
{ mk_action2( yyval.action, FORCE_RPORT_T,0, 0, 0, 0); }
break;
case 502:
#line 2073 "cfg.y"
{
					mk_action2( yyval.action, FORCE_LOCAL_RPORT_T,0, 0, 0, 0); }
break;
case 503:
#line 2075 "cfg.y"
{
					mk_action2( yyval.action, FORCE_LOCAL_RPORT_T,0, 0, 0, 0); }
break;
case 504:
#line 2077 "cfg.y"
{
					#ifdef USE_TCP
						mk_action2( yyval.action, FORCE_TCP_ALIAS_T,NUMBER_ST, 0,
										(void*)yyvsp[-1].intval, 0);
					#else
						yyerror("tcp support not compiled in");
					#endif
												}
break;
case 505:
#line 2085 "cfg.y"
{
					#ifdef USE_TCP
						mk_action2( yyval.action, FORCE_TCP_ALIAS_T,0, 0, 0, 0); 
					#else
						yyerror("tcp support not compiled in");
					#endif
										}
break;
case 506:
#line 2092 "cfg.y"
{
					#ifdef USE_TCP
						mk_action2( yyval.action, FORCE_TCP_ALIAS_T,0, 0, 0, 0);
					#else
						yyerror("tcp support not compiled in");
					#endif
										}
break;
case 507:
#line 2099 "cfg.y"
{yyval.action=0; 
					yyerror("bad argument, number expected");
					}
break;
case 508:
#line 2102 "cfg.y"
{
								yyval.action=0;
								if ((str_tmp=pkg_malloc(sizeof(str)))==0){
									LOG(L_CRIT, "ERROR: cfg. parser:"
										" out of memory.\n");
								}else if (yyvsp[-1].strval!=0){
										str_tmp->s=yyvsp[-1].strval;
										str_tmp->len=strlen(yyvsp[-1].strval);
										mk_action2( yyval.action, SET_ADV_ADDR_T, STR_ST,
											0, str_tmp, 0);
								}
												  }
break;
case 509:
#line 2114 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
														"string expected"); }
break;
case 510:
#line 2116 "cfg.y"
{yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 511:
#line 2117 "cfg.y"
{
								yyval.action=0;
								tmp=int2str(yyvsp[-1].intval, &i_tmp);
								if ((str_tmp=pkg_malloc(sizeof(str)))==0){
										LOG(L_CRIT, "ERROR: cfg. parser:"
													" out of memory.\n");
								}else{
									if ((str_tmp->s=pkg_malloc(i_tmp))==0){
										LOG(L_CRIT, "ERROR: cfg. parser:"
													" out of memory.\n");
									}else{
										memcpy(str_tmp->s, tmp, i_tmp);
										str_tmp->len=i_tmp;
										mk_action2( yyval.action, SET_ADV_PORT_T, STR_ST,
													0, str_tmp, 0);
									}
								}
								            }
break;
case 512:
#line 2135 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
								"string expected"); }
break;
case 513:
#line 2137 "cfg.y"
{yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 514:
#line 2138 "cfg.y"
{
								mk_action2( yyval.action, FORCE_SEND_SOCKET_T,
									SOCKID_ST, 0, yyvsp[-1].sockid, 0);
								}
break;
case 515:
#line 2142 "cfg.y"
{ yyval.action=0; yyerror("bad argument,"
								" [proto:]host[:port] expected");
								}
break;
case 516:
#line 2145 "cfg.y"
{yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 517:
#line 2146 "cfg.y"
{
								mk_action2( yyval.action, SERIALIZE_BRANCHES_T,
									NUMBER_ST, 0, (void*)(long)yyvsp[-1].intval, 0);
								}
break;
case 518:
#line 2150 "cfg.y"
{yyval.action=0; yyerror("bad argument,"
								" number expected");
								}
break;
case 519:
#line 2153 "cfg.y"
{yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 520:
#line 2154 "cfg.y"
{
								mk_action2( yyval.action, NEXT_BRANCHES_T, 0, 0, 0, 0);
								}
break;
case 521:
#line 2157 "cfg.y"
{yyval.action=0; yyerror("no argument is"
								" expected");
								}
break;
case 522:
#line 2160 "cfg.y"
{yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 523:
#line 2161 "cfg.y"
{
								mk_action2( yyval.action, USE_BLACKLIST_T,
									STRING_ST, 0, yyvsp[-1].strval, 0);
								}
break;
case 524:
#line 2165 "cfg.y"
{yyval.action=0; yyerror("bad argument,"
								" string expected");
								}
break;
case 525:
#line 2168 "cfg.y"
{yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 526:
#line 2169 "cfg.y"
{ cmd_tmp=(void*)find_cmd_export_t(yyvsp[-2].strval, 0, rt);
									if (cmd_tmp==0){
										if (find_cmd_export_t(yyvsp[-2].strval, 0, 0)) {
											yyerror("Command cannot be "
												"used in the block\n");
										} else {
											yyerror("unknown command, "
												"missing loadmodule?\n");
										}
										yyval.action=0;
									}else{
										mk_action2( yyval.action, MODULE_T,
													CMD_ST,
													0,
													cmd_tmp,
													0
												);
									}
								}
break;
case 527:
#line 2188 "cfg.y"
{ cmd_tmp=(void*)find_cmd_export_t(yyvsp[-3].strval,1,rt);
									if (cmd_tmp==0){
										if (find_cmd_export_t(yyvsp[-3].strval, 1, 0)) {
											yyerror("Command cannot be used "
												"in the block\n");
										} else {
											yyerror("unknown command, missing"
												" loadmodule?\n");
										}
										yyval.action=0;
									}else{
										mk_action2( yyval.action, MODULE_T,
														CMD_ST,
														STRING_ST,
														cmd_tmp,
														yyvsp[-1].strval
													);
									}
								  }
break;
case 528:
#line 2208 "cfg.y"
{ cmd_tmp=(void*)find_cmd_export_t(yyvsp[-5].strval,2,rt);
									if (cmd_tmp==0){
										if (find_cmd_export_t(yyvsp[-5].strval, 2, 0)) {
											yyerror("Command cannot be used "
												"in the block\n");
										} else {
											yyerror("unknown command, missing"
												" loadmodule?\n");
										}
										yyval.action=0;
									}else{
										mk_action3( yyval.action, MODULE_T,
														CMD_ST,
														STRING_ST,
														STRING_ST,
														cmd_tmp,
														yyvsp[-3].strval,
														yyvsp[-1].strval
													);
									}
								  }
break;
case 529:
#line 2229 "cfg.y"
{ yyval.action=0; yyerror("bad arguments"); }
break;
#line 6018 "cfg.tab.c"
    }
    yyssp -= yym;
    yystate = *yyssp;
    yyvsp -= yym;
    yym = yylhs[yyn];
    if (yystate == 0 && yym == 0)
    {
#if YYDEBUG
        if (yydebug)
            printf("%sdebug: after reduction, shifting from state 0 to\
 state %d\n", YYPREFIX, YYFINAL);
#endif
        yystate = YYFINAL;
        *++yyssp = YYFINAL;
        *++yyvsp = yyval;
        if (yychar < 0)
        {
            if ((yychar = yylex()) < 0) yychar = 0;
#if YYDEBUG
            if (yydebug)
            {
                yys = 0;
                if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
                if (!yys) yys = "illegal-symbol";
                printf("%sdebug: state %d, reading %d (%s)\n",
                        YYPREFIX, YYFINAL, yychar, yys);
            }
#endif
        }
        if (yychar == 0) goto yyaccept;
        goto yyloop;
    }
    if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
        yystate = yytable[yyn];
    else
        yystate = yydgoto[yym];
#if YYDEBUG
    if (yydebug)
        printf("%sdebug: after reduction, shifting from state %d \
to state %d\n", YYPREFIX, *yyssp, yystate);
#endif
    if (yyssp >= yysslim && yygrowstack())
    {
        goto yyoverflow;
    }
    *++yyssp = yystate;
    *++yyvsp = yyval;
    goto yyloop;
yyoverflow:
    yyerror("yacc stack overflow");
yyabort:
    return (1);
yyaccept:
    return (0);
}


syntax highlighted by Code2HTML, v. 0.9.1