ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-7.2/src/ircd_parser.c
Revision: 1009
Committed: Sun Sep 13 15:02:30 2009 UTC (14 years, 7 months ago) by michael
Content type: text/x-csrc
File size: 258611 byte(s)
Log Message:
- add configure test for pcre lib and remove pcre sources from the tree

File Contents

# Content
1
2 /* A Bison parser, made by GNU Bison 2.4.1. */
3
4 /* Skeleton implementation for Bison's Yacc-like parsers in C
5
6 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
7 Free Software Foundation, Inc.
8
9 This program is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
21
22 /* As a special exception, you may create a larger work that contains
23 part or all of the Bison parser skeleton and distribute that work
24 under terms of your choice, so long as that work isn't itself a
25 parser generator using the skeleton or a modified version thereof
26 as a parser skeleton. Alternatively, if you modify or redistribute
27 the parser skeleton itself, you may (at your option) remove this
28 special exception, which will cause the skeleton and the resulting
29 Bison output files to be licensed under the GNU General Public
30 License without this special exception.
31
32 This special exception was added by the Free Software Foundation in
33 version 2.2 of Bison. */
34
35 /* C LALR(1) parser skeleton written by Richard Stallman, by
36 simplifying the original so-called "semantic" parser. */
37
38 /* All symbols defined below should begin with yy or YY, to avoid
39 infringing on user name space. This should be done even for local
40 variables, as they might otherwise be expanded by user macros.
41 There are some unavoidable exceptions within include files to
42 define necessary library symbols; they are noted "INFRINGES ON
43 USER NAME SPACE" below. */
44
45 /* Identify Bison output. */
46 #define YYBISON 1
47
48 /* Bison version. */
49 #define YYBISON_VERSION "2.4.1"
50
51 /* Skeleton name. */
52 #define YYSKELETON_NAME "yacc.c"
53
54 /* Pure parsers. */
55 #define YYPURE 0
56
57 /* Push parsers. */
58 #define YYPUSH 0
59
60 /* Pull parsers. */
61 #define YYPULL 1
62
63 /* Using locations. */
64 #define YYLSP_NEEDED 0
65
66
67
68 /* Copy the first part of user declarations. */
69
70 /* Line 189 of yacc.c */
71 #line 25 "ircd_parser.y"
72
73
74 #define YY_NO_UNPUT
75 #include <sys/types.h>
76 #include <string.h>
77
78 #include "config.h"
79 #ifdef HAVE_LIBPCRE
80 #include <pcre.h>
81 #endif
82 #include "stdinc.h"
83 #include "ircd.h"
84 #include "tools.h"
85 #include "list.h"
86 #include "s_conf.h"
87 #include "event.h"
88 #include "s_log.h"
89 #include "client.h" /* for UMODE_ALL only */
90 #include "irc_string.h"
91 #include "irc_getaddrinfo.h"
92 #include "sprintf_irc.h"
93 #include "memory.h"
94 #include "modules.h"
95 #include "s_serv.h"
96 #include "hostmask.h"
97 #include "send.h"
98 #include "listener.h"
99 #include "resv.h"
100 #include "numeric.h"
101 #include "s_user.h"
102
103 #ifdef HAVE_LIBCRYPTO
104 #include <openssl/rsa.h>
105 #include <openssl/bio.h>
106 #include <openssl/pem.h>
107 #endif
108
109 static char *class_name = NULL;
110 static struct ConfItem *yy_conf = NULL;
111 static struct AccessItem *yy_aconf = NULL;
112 static struct MatchItem *yy_match_item = NULL;
113 static struct ClassItem *yy_class = NULL;
114 static char *yy_class_name = NULL;
115
116 static dlink_list col_conf_list = { NULL, NULL, 0 };
117 static dlink_list hub_conf_list = { NULL, NULL, 0 };
118 static dlink_list leaf_conf_list = { NULL, NULL, 0 };
119 static unsigned int listener_flags = 0;
120 static unsigned int regex_ban = 0;
121 static char userbuf[IRCD_BUFSIZE];
122 static char hostbuf[IRCD_BUFSIZE];
123 static char reasonbuf[REASONLEN + 1];
124 static char gecos_name[REALLEN * 4];
125
126 extern dlink_list gdeny_items; /* XXX */
127
128 static char *resv_reason = NULL;
129 static char *listener_address = NULL;
130 static int not_atom = 0;
131
132 struct CollectItem
133 {
134 dlink_node node;
135 char *name;
136 char *user;
137 char *host;
138 char *passwd;
139 int port;
140 int flags;
141 #ifdef HAVE_LIBCRYPTO
142 char *rsa_public_key_file;
143 RSA *rsa_public_key;
144 #endif
145 };
146
147 static void
148 free_collect_item(struct CollectItem *item)
149 {
150 MyFree(item->name);
151 MyFree(item->user);
152 MyFree(item->host);
153 MyFree(item->passwd);
154 #ifdef HAVE_LIBCRYPTO
155 MyFree(item->rsa_public_key_file);
156 #endif
157 MyFree(item);
158 }
159
160 static void
161 unhook_hub_leaf_confs(void)
162 {
163 dlink_node *ptr;
164 dlink_node *next_ptr;
165 struct CollectItem *yy_hconf;
166 struct CollectItem *yy_lconf;
167
168 DLINK_FOREACH_SAFE(ptr, next_ptr, hub_conf_list.head)
169 {
170 yy_hconf = ptr->data;
171 dlinkDelete(&yy_hconf->node, &hub_conf_list);
172 free_collect_item(yy_hconf);
173 }
174
175 DLINK_FOREACH_SAFE(ptr, next_ptr, leaf_conf_list.head)
176 {
177 yy_lconf = ptr->data;
178 dlinkDelete(&yy_lconf->node, &leaf_conf_list);
179 free_collect_item(yy_lconf);
180 }
181 }
182
183
184
185 /* Line 189 of yacc.c */
186 #line 187 "ircd_parser.c"
187
188 /* Enabling traces. */
189 #ifndef YYDEBUG
190 # define YYDEBUG 0
191 #endif
192
193 /* Enabling verbose error messages. */
194 #ifdef YYERROR_VERBOSE
195 # undef YYERROR_VERBOSE
196 # define YYERROR_VERBOSE 1
197 #else
198 # define YYERROR_VERBOSE 0
199 #endif
200
201 /* Enabling the token table. */
202 #ifndef YYTOKEN_TABLE
203 # define YYTOKEN_TABLE 0
204 #endif
205
206
207 /* Tokens. */
208 #ifndef YYTOKENTYPE
209 # define YYTOKENTYPE
210 /* Put the tokens into the symbol table, so that GDB and other debuggers
211 know about them. */
212 enum yytokentype {
213 ACCEPT_PASSWORD = 258,
214 ACTION = 259,
215 ADMIN = 260,
216 AFTYPE = 261,
217 T_ALLOW = 262,
218 ANTI_NICK_FLOOD = 263,
219 ANTI_SPAM_EXIT_MESSAGE_TIME = 264,
220 AUTOCONN = 265,
221 T_BLOCK = 266,
222 BURST_AWAY = 267,
223 BURST_TOPICWHO = 268,
224 BYTES = 269,
225 KBYTES = 270,
226 MBYTES = 271,
227 GBYTES = 272,
228 TBYTES = 273,
229 CALLER_ID_WAIT = 274,
230 CAN_FLOOD = 275,
231 CAN_IDLE = 276,
232 CHANNEL = 277,
233 CIDR_BITLEN_IPV4 = 278,
234 CIDR_BITLEN_IPV6 = 279,
235 CIPHER_PREFERENCE = 280,
236 CLASS = 281,
237 COMPRESSED = 282,
238 COMPRESSION_LEVEL = 283,
239 CONNECT = 284,
240 CONNECTFREQ = 285,
241 CRYPTLINK = 286,
242 DEFAULT_CIPHER_PREFERENCE = 287,
243 DEFAULT_FLOODCOUNT = 288,
244 DEFAULT_SPLIT_SERVER_COUNT = 289,
245 DEFAULT_SPLIT_USER_COUNT = 290,
246 DENY = 291,
247 DESCRIPTION = 292,
248 DIE = 293,
249 DISABLE_AUTH = 294,
250 DISABLE_FAKE_CHANNELS = 295,
251 DISABLE_HIDDEN = 296,
252 DISABLE_LOCAL_CHANNELS = 297,
253 DISABLE_REMOTE_COMMANDS = 298,
254 DOT_IN_IP6_ADDR = 299,
255 DOTS_IN_IDENT = 300,
256 DURATION = 301,
257 EGDPOOL_PATH = 302,
258 EMAIL = 303,
259 ENABLE = 304,
260 ENCRYPTED = 305,
261 EXCEED_LIMIT = 306,
262 EXEMPT = 307,
263 FAILED_OPER_NOTICE = 308,
264 FAKENAME = 309,
265 IRCD_FLAGS = 310,
266 FLATTEN_LINKS = 311,
267 FFAILED_OPERLOG = 312,
268 FKILLLOG = 313,
269 FKLINELOG = 314,
270 FGLINELOG = 315,
271 FIOERRLOG = 316,
272 FOPERLOG = 317,
273 FOPERSPYLOG = 318,
274 FUSERLOG = 319,
275 GECOS = 320,
276 GENERAL = 321,
277 GLINE = 322,
278 GLINES = 323,
279 GLINE_EXEMPT = 324,
280 GLINE_LOG = 325,
281 GLINE_TIME = 326,
282 GLINE_MIN_CIDR = 327,
283 GLINE_MIN_CIDR6 = 328,
284 GLOBAL_KILL = 329,
285 IRCD_AUTH = 330,
286 NEED_IDENT = 331,
287 HAVENT_READ_CONF = 332,
288 HIDDEN = 333,
289 HIDDEN_ADMIN = 334,
290 HIDDEN_NAME = 335,
291 HIDDEN_OPER = 336,
292 HIDE_SERVER_IPS = 337,
293 HIDE_SERVERS = 338,
294 HIDE_SPOOF_IPS = 339,
295 HOST = 340,
296 HUB = 341,
297 HUB_MASK = 342,
298 IDLETIME = 343,
299 IGNORE_BOGUS_TS = 344,
300 INVISIBLE_ON_CONNECT = 345,
301 IP = 346,
302 KILL = 347,
303 KILL_CHASE_TIME_LIMIT = 348,
304 KLINE = 349,
305 KLINE_EXEMPT = 350,
306 KLINE_REASON = 351,
307 KLINE_WITH_REASON = 352,
308 KNOCK_DELAY = 353,
309 KNOCK_DELAY_CHANNEL = 354,
310 LEAF_MASK = 355,
311 LINKS_DELAY = 356,
312 LISTEN = 357,
313 T_LOG = 358,
314 LOGGING = 359,
315 LOG_LEVEL = 360,
316 MAX_ACCEPT = 361,
317 MAX_BANS = 362,
318 MAX_CHANS_PER_USER = 363,
319 MAX_GLOBAL = 364,
320 MAX_IDENT = 365,
321 MAX_LOCAL = 366,
322 MAX_NICK_CHANGES = 367,
323 MAX_NICK_TIME = 368,
324 MAX_NUMBER = 369,
325 MAX_TARGETS = 370,
326 MAX_WATCH = 371,
327 MESSAGE_LOCALE = 372,
328 MIN_NONWILDCARD = 373,
329 MIN_NONWILDCARD_SIMPLE = 374,
330 MODULE = 375,
331 MODULES = 376,
332 NAME = 377,
333 NEED_PASSWORD = 378,
334 NETWORK_DESC = 379,
335 NETWORK_NAME = 380,
336 NICK = 381,
337 NICK_CHANGES = 382,
338 NO_CREATE_ON_SPLIT = 383,
339 NO_JOIN_ON_SPLIT = 384,
340 NO_OPER_FLOOD = 385,
341 NO_TILDE = 386,
342 NOT = 387,
343 NUMBER = 388,
344 NUMBER_PER_IDENT = 389,
345 NUMBER_PER_CIDR = 390,
346 NUMBER_PER_IP = 391,
347 NUMBER_PER_IP_GLOBAL = 392,
348 OPERATOR = 393,
349 OPERS_BYPASS_CALLERID = 394,
350 OPER_LOG = 395,
351 OPER_ONLY_UMODES = 396,
352 OPER_PASS_RESV = 397,
353 OPER_SPY_T = 398,
354 OPER_UMODES = 399,
355 JOIN_FLOOD_COUNT = 400,
356 JOIN_FLOOD_TIME = 401,
357 PACE_WAIT = 402,
358 PACE_WAIT_SIMPLE = 403,
359 PASSWORD = 404,
360 PATH = 405,
361 PING_COOKIE = 406,
362 PING_TIME = 407,
363 PING_WARNING = 408,
364 PORT = 409,
365 QSTRING = 410,
366 QUIET_ON_BAN = 411,
367 REASON = 412,
368 REDIRPORT = 413,
369 REDIRSERV = 414,
370 REGEX_T = 415,
371 REHASH = 416,
372 TREJECT_HOLD_TIME = 417,
373 REMOTE = 418,
374 REMOTEBAN = 419,
375 RESTRICT_CHANNELS = 420,
376 RESTRICTED = 421,
377 RSA_PRIVATE_KEY_FILE = 422,
378 RSA_PUBLIC_KEY_FILE = 423,
379 SSL_CERTIFICATE_FILE = 424,
380 T_SSL_CONNECTION_METHOD = 425,
381 T_SSLV3 = 426,
382 T_TLSV1 = 427,
383 RESV = 428,
384 RESV_EXEMPT = 429,
385 SECONDS = 430,
386 MINUTES = 431,
387 HOURS = 432,
388 DAYS = 433,
389 WEEKS = 434,
390 SENDQ = 435,
391 SEND_PASSWORD = 436,
392 SERVERHIDE = 437,
393 SERVERINFO = 438,
394 SERVLINK_PATH = 439,
395 IRCD_SID = 440,
396 TKLINE_EXPIRE_NOTICES = 441,
397 T_SHARED = 442,
398 T_CLUSTER = 443,
399 TYPE = 444,
400 SHORT_MOTD = 445,
401 SILENT = 446,
402 SPOOF = 447,
403 SPOOF_NOTICE = 448,
404 STATS_E_DISABLED = 449,
405 STATS_I_OPER_ONLY = 450,
406 STATS_K_OPER_ONLY = 451,
407 STATS_O_OPER_ONLY = 452,
408 STATS_P_OPER_ONLY = 453,
409 TBOOL = 454,
410 TMASKED = 455,
411 T_REJECT = 456,
412 TS_MAX_DELTA = 457,
413 TS_WARN_DELTA = 458,
414 TWODOTS = 459,
415 T_ALL = 460,
416 T_BOTS = 461,
417 T_SOFTCALLERID = 462,
418 T_CALLERID = 463,
419 T_CCONN = 464,
420 T_CCONN_FULL = 465,
421 T_CLIENT_FLOOD = 466,
422 T_DEAF = 467,
423 T_DEBUG = 468,
424 T_DRONE = 469,
425 T_EXTERNAL = 470,
426 T_FULL = 471,
427 T_INVISIBLE = 472,
428 T_IPV4 = 473,
429 T_IPV6 = 474,
430 T_LOCOPS = 475,
431 T_LOGPATH = 476,
432 T_L_CRIT = 477,
433 T_L_DEBUG = 478,
434 T_L_ERROR = 479,
435 T_L_INFO = 480,
436 T_L_NOTICE = 481,
437 T_L_TRACE = 482,
438 T_L_WARN = 483,
439 T_MAX_CLIENTS = 484,
440 T_NCHANGE = 485,
441 T_OPERWALL = 486,
442 T_REJ = 487,
443 T_SERVER = 488,
444 T_SERVNOTICE = 489,
445 T_SKILL = 490,
446 T_SPY = 491,
447 T_SSL = 492,
448 T_UMODES = 493,
449 T_UNAUTH = 494,
450 T_UNRESV = 495,
451 T_UNXLINE = 496,
452 T_WALLOP = 497,
453 THROTTLE_TIME = 498,
454 TOPICBURST = 499,
455 TRUE_NO_OPER_FLOOD = 500,
456 TKLINE = 501,
457 TXLINE = 502,
458 TRESV = 503,
459 UNKLINE = 504,
460 USER = 505,
461 USE_EGD = 506,
462 USE_EXCEPT = 507,
463 USE_INVEX = 508,
464 USE_KNOCK = 509,
465 USE_LOGGING = 510,
466 USE_WHOIS_ACTUALLY = 511,
467 VHOST = 512,
468 VHOST6 = 513,
469 XLINE = 514,
470 WARN = 515,
471 WARN_NO_NLINE = 516
472 };
473 #endif
474 /* Tokens. */
475 #define ACCEPT_PASSWORD 258
476 #define ACTION 259
477 #define ADMIN 260
478 #define AFTYPE 261
479 #define T_ALLOW 262
480 #define ANTI_NICK_FLOOD 263
481 #define ANTI_SPAM_EXIT_MESSAGE_TIME 264
482 #define AUTOCONN 265
483 #define T_BLOCK 266
484 #define BURST_AWAY 267
485 #define BURST_TOPICWHO 268
486 #define BYTES 269
487 #define KBYTES 270
488 #define MBYTES 271
489 #define GBYTES 272
490 #define TBYTES 273
491 #define CALLER_ID_WAIT 274
492 #define CAN_FLOOD 275
493 #define CAN_IDLE 276
494 #define CHANNEL 277
495 #define CIDR_BITLEN_IPV4 278
496 #define CIDR_BITLEN_IPV6 279
497 #define CIPHER_PREFERENCE 280
498 #define CLASS 281
499 #define COMPRESSED 282
500 #define COMPRESSION_LEVEL 283
501 #define CONNECT 284
502 #define CONNECTFREQ 285
503 #define CRYPTLINK 286
504 #define DEFAULT_CIPHER_PREFERENCE 287
505 #define DEFAULT_FLOODCOUNT 288
506 #define DEFAULT_SPLIT_SERVER_COUNT 289
507 #define DEFAULT_SPLIT_USER_COUNT 290
508 #define DENY 291
509 #define DESCRIPTION 292
510 #define DIE 293
511 #define DISABLE_AUTH 294
512 #define DISABLE_FAKE_CHANNELS 295
513 #define DISABLE_HIDDEN 296
514 #define DISABLE_LOCAL_CHANNELS 297
515 #define DISABLE_REMOTE_COMMANDS 298
516 #define DOT_IN_IP6_ADDR 299
517 #define DOTS_IN_IDENT 300
518 #define DURATION 301
519 #define EGDPOOL_PATH 302
520 #define EMAIL 303
521 #define ENABLE 304
522 #define ENCRYPTED 305
523 #define EXCEED_LIMIT 306
524 #define EXEMPT 307
525 #define FAILED_OPER_NOTICE 308
526 #define FAKENAME 309
527 #define IRCD_FLAGS 310
528 #define FLATTEN_LINKS 311
529 #define FFAILED_OPERLOG 312
530 #define FKILLLOG 313
531 #define FKLINELOG 314
532 #define FGLINELOG 315
533 #define FIOERRLOG 316
534 #define FOPERLOG 317
535 #define FOPERSPYLOG 318
536 #define FUSERLOG 319
537 #define GECOS 320
538 #define GENERAL 321
539 #define GLINE 322
540 #define GLINES 323
541 #define GLINE_EXEMPT 324
542 #define GLINE_LOG 325
543 #define GLINE_TIME 326
544 #define GLINE_MIN_CIDR 327
545 #define GLINE_MIN_CIDR6 328
546 #define GLOBAL_KILL 329
547 #define IRCD_AUTH 330
548 #define NEED_IDENT 331
549 #define HAVENT_READ_CONF 332
550 #define HIDDEN 333
551 #define HIDDEN_ADMIN 334
552 #define HIDDEN_NAME 335
553 #define HIDDEN_OPER 336
554 #define HIDE_SERVER_IPS 337
555 #define HIDE_SERVERS 338
556 #define HIDE_SPOOF_IPS 339
557 #define HOST 340
558 #define HUB 341
559 #define HUB_MASK 342
560 #define IDLETIME 343
561 #define IGNORE_BOGUS_TS 344
562 #define INVISIBLE_ON_CONNECT 345
563 #define IP 346
564 #define KILL 347
565 #define KILL_CHASE_TIME_LIMIT 348
566 #define KLINE 349
567 #define KLINE_EXEMPT 350
568 #define KLINE_REASON 351
569 #define KLINE_WITH_REASON 352
570 #define KNOCK_DELAY 353
571 #define KNOCK_DELAY_CHANNEL 354
572 #define LEAF_MASK 355
573 #define LINKS_DELAY 356
574 #define LISTEN 357
575 #define T_LOG 358
576 #define LOGGING 359
577 #define LOG_LEVEL 360
578 #define MAX_ACCEPT 361
579 #define MAX_BANS 362
580 #define MAX_CHANS_PER_USER 363
581 #define MAX_GLOBAL 364
582 #define MAX_IDENT 365
583 #define MAX_LOCAL 366
584 #define MAX_NICK_CHANGES 367
585 #define MAX_NICK_TIME 368
586 #define MAX_NUMBER 369
587 #define MAX_TARGETS 370
588 #define MAX_WATCH 371
589 #define MESSAGE_LOCALE 372
590 #define MIN_NONWILDCARD 373
591 #define MIN_NONWILDCARD_SIMPLE 374
592 #define MODULE 375
593 #define MODULES 376
594 #define NAME 377
595 #define NEED_PASSWORD 378
596 #define NETWORK_DESC 379
597 #define NETWORK_NAME 380
598 #define NICK 381
599 #define NICK_CHANGES 382
600 #define NO_CREATE_ON_SPLIT 383
601 #define NO_JOIN_ON_SPLIT 384
602 #define NO_OPER_FLOOD 385
603 #define NO_TILDE 386
604 #define NOT 387
605 #define NUMBER 388
606 #define NUMBER_PER_IDENT 389
607 #define NUMBER_PER_CIDR 390
608 #define NUMBER_PER_IP 391
609 #define NUMBER_PER_IP_GLOBAL 392
610 #define OPERATOR 393
611 #define OPERS_BYPASS_CALLERID 394
612 #define OPER_LOG 395
613 #define OPER_ONLY_UMODES 396
614 #define OPER_PASS_RESV 397
615 #define OPER_SPY_T 398
616 #define OPER_UMODES 399
617 #define JOIN_FLOOD_COUNT 400
618 #define JOIN_FLOOD_TIME 401
619 #define PACE_WAIT 402
620 #define PACE_WAIT_SIMPLE 403
621 #define PASSWORD 404
622 #define PATH 405
623 #define PING_COOKIE 406
624 #define PING_TIME 407
625 #define PING_WARNING 408
626 #define PORT 409
627 #define QSTRING 410
628 #define QUIET_ON_BAN 411
629 #define REASON 412
630 #define REDIRPORT 413
631 #define REDIRSERV 414
632 #define REGEX_T 415
633 #define REHASH 416
634 #define TREJECT_HOLD_TIME 417
635 #define REMOTE 418
636 #define REMOTEBAN 419
637 #define RESTRICT_CHANNELS 420
638 #define RESTRICTED 421
639 #define RSA_PRIVATE_KEY_FILE 422
640 #define RSA_PUBLIC_KEY_FILE 423
641 #define SSL_CERTIFICATE_FILE 424
642 #define T_SSL_CONNECTION_METHOD 425
643 #define T_SSLV3 426
644 #define T_TLSV1 427
645 #define RESV 428
646 #define RESV_EXEMPT 429
647 #define SECONDS 430
648 #define MINUTES 431
649 #define HOURS 432
650 #define DAYS 433
651 #define WEEKS 434
652 #define SENDQ 435
653 #define SEND_PASSWORD 436
654 #define SERVERHIDE 437
655 #define SERVERINFO 438
656 #define SERVLINK_PATH 439
657 #define IRCD_SID 440
658 #define TKLINE_EXPIRE_NOTICES 441
659 #define T_SHARED 442
660 #define T_CLUSTER 443
661 #define TYPE 444
662 #define SHORT_MOTD 445
663 #define SILENT 446
664 #define SPOOF 447
665 #define SPOOF_NOTICE 448
666 #define STATS_E_DISABLED 449
667 #define STATS_I_OPER_ONLY 450
668 #define STATS_K_OPER_ONLY 451
669 #define STATS_O_OPER_ONLY 452
670 #define STATS_P_OPER_ONLY 453
671 #define TBOOL 454
672 #define TMASKED 455
673 #define T_REJECT 456
674 #define TS_MAX_DELTA 457
675 #define TS_WARN_DELTA 458
676 #define TWODOTS 459
677 #define T_ALL 460
678 #define T_BOTS 461
679 #define T_SOFTCALLERID 462
680 #define T_CALLERID 463
681 #define T_CCONN 464
682 #define T_CCONN_FULL 465
683 #define T_CLIENT_FLOOD 466
684 #define T_DEAF 467
685 #define T_DEBUG 468
686 #define T_DRONE 469
687 #define T_EXTERNAL 470
688 #define T_FULL 471
689 #define T_INVISIBLE 472
690 #define T_IPV4 473
691 #define T_IPV6 474
692 #define T_LOCOPS 475
693 #define T_LOGPATH 476
694 #define T_L_CRIT 477
695 #define T_L_DEBUG 478
696 #define T_L_ERROR 479
697 #define T_L_INFO 480
698 #define T_L_NOTICE 481
699 #define T_L_TRACE 482
700 #define T_L_WARN 483
701 #define T_MAX_CLIENTS 484
702 #define T_NCHANGE 485
703 #define T_OPERWALL 486
704 #define T_REJ 487
705 #define T_SERVER 488
706 #define T_SERVNOTICE 489
707 #define T_SKILL 490
708 #define T_SPY 491
709 #define T_SSL 492
710 #define T_UMODES 493
711 #define T_UNAUTH 494
712 #define T_UNRESV 495
713 #define T_UNXLINE 496
714 #define T_WALLOP 497
715 #define THROTTLE_TIME 498
716 #define TOPICBURST 499
717 #define TRUE_NO_OPER_FLOOD 500
718 #define TKLINE 501
719 #define TXLINE 502
720 #define TRESV 503
721 #define UNKLINE 504
722 #define USER 505
723 #define USE_EGD 506
724 #define USE_EXCEPT 507
725 #define USE_INVEX 508
726 #define USE_KNOCK 509
727 #define USE_LOGGING 510
728 #define USE_WHOIS_ACTUALLY 511
729 #define VHOST 512
730 #define VHOST6 513
731 #define XLINE 514
732 #define WARN 515
733 #define WARN_NO_NLINE 516
734
735
736
737
738 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
739 typedef union YYSTYPE
740 {
741
742 /* Line 214 of yacc.c */
743 #line 138 "ircd_parser.y"
744
745 int number;
746 char *string;
747
748
749
750 /* Line 214 of yacc.c */
751 #line 752 "ircd_parser.c"
752 } YYSTYPE;
753 # define YYSTYPE_IS_TRIVIAL 1
754 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
755 # define YYSTYPE_IS_DECLARED 1
756 #endif
757
758
759 /* Copy the second part of user declarations. */
760
761
762 /* Line 264 of yacc.c */
763 #line 764 "ircd_parser.c"
764
765 #ifdef short
766 # undef short
767 #endif
768
769 #ifdef YYTYPE_UINT8
770 typedef YYTYPE_UINT8 yytype_uint8;
771 #else
772 typedef unsigned char yytype_uint8;
773 #endif
774
775 #ifdef YYTYPE_INT8
776 typedef YYTYPE_INT8 yytype_int8;
777 #elif (defined __STDC__ || defined __C99__FUNC__ \
778 || defined __cplusplus || defined _MSC_VER)
779 typedef signed char yytype_int8;
780 #else
781 typedef short int yytype_int8;
782 #endif
783
784 #ifdef YYTYPE_UINT16
785 typedef YYTYPE_UINT16 yytype_uint16;
786 #else
787 typedef unsigned short int yytype_uint16;
788 #endif
789
790 #ifdef YYTYPE_INT16
791 typedef YYTYPE_INT16 yytype_int16;
792 #else
793 typedef short int yytype_int16;
794 #endif
795
796 #ifndef YYSIZE_T
797 # ifdef __SIZE_TYPE__
798 # define YYSIZE_T __SIZE_TYPE__
799 # elif defined size_t
800 # define YYSIZE_T size_t
801 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
802 || defined __cplusplus || defined _MSC_VER)
803 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
804 # define YYSIZE_T size_t
805 # else
806 # define YYSIZE_T unsigned int
807 # endif
808 #endif
809
810 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
811
812 #ifndef YY_
813 # if YYENABLE_NLS
814 # if ENABLE_NLS
815 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
816 # define YY_(msgid) dgettext ("bison-runtime", msgid)
817 # endif
818 # endif
819 # ifndef YY_
820 # define YY_(msgid) msgid
821 # endif
822 #endif
823
824 /* Suppress unused-variable warnings by "using" E. */
825 #if ! defined lint || defined __GNUC__
826 # define YYUSE(e) ((void) (e))
827 #else
828 # define YYUSE(e) /* empty */
829 #endif
830
831 /* Identity function, used to suppress warnings about constant conditions. */
832 #ifndef lint
833 # define YYID(n) (n)
834 #else
835 #if (defined __STDC__ || defined __C99__FUNC__ \
836 || defined __cplusplus || defined _MSC_VER)
837 static int
838 YYID (int yyi)
839 #else
840 static int
841 YYID (yyi)
842 int yyi;
843 #endif
844 {
845 return yyi;
846 }
847 #endif
848
849 #if ! defined yyoverflow || YYERROR_VERBOSE
850
851 /* The parser invokes alloca or malloc; define the necessary symbols. */
852
853 # ifdef YYSTACK_USE_ALLOCA
854 # if YYSTACK_USE_ALLOCA
855 # ifdef __GNUC__
856 # define YYSTACK_ALLOC __builtin_alloca
857 # elif defined __BUILTIN_VA_ARG_INCR
858 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
859 # elif defined _AIX
860 # define YYSTACK_ALLOC __alloca
861 # elif defined _MSC_VER
862 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
863 # define alloca _alloca
864 # else
865 # define YYSTACK_ALLOC alloca
866 # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
867 || defined __cplusplus || defined _MSC_VER)
868 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
869 # ifndef _STDLIB_H
870 # define _STDLIB_H 1
871 # endif
872 # endif
873 # endif
874 # endif
875 # endif
876
877 # ifdef YYSTACK_ALLOC
878 /* Pacify GCC's `empty if-body' warning. */
879 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
880 # ifndef YYSTACK_ALLOC_MAXIMUM
881 /* The OS might guarantee only one guard page at the bottom of the stack,
882 and a page size can be as small as 4096 bytes. So we cannot safely
883 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
884 to allow for a few compiler-allocated temporary stack slots. */
885 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
886 # endif
887 # else
888 # define YYSTACK_ALLOC YYMALLOC
889 # define YYSTACK_FREE YYFREE
890 # ifndef YYSTACK_ALLOC_MAXIMUM
891 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
892 # endif
893 # if (defined __cplusplus && ! defined _STDLIB_H \
894 && ! ((defined YYMALLOC || defined malloc) \
895 && (defined YYFREE || defined free)))
896 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
897 # ifndef _STDLIB_H
898 # define _STDLIB_H 1
899 # endif
900 # endif
901 # ifndef YYMALLOC
902 # define YYMALLOC malloc
903 # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
904 || defined __cplusplus || defined _MSC_VER)
905 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
906 # endif
907 # endif
908 # ifndef YYFREE
909 # define YYFREE free
910 # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
911 || defined __cplusplus || defined _MSC_VER)
912 void free (void *); /* INFRINGES ON USER NAME SPACE */
913 # endif
914 # endif
915 # endif
916 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
917
918
919 #if (! defined yyoverflow \
920 && (! defined __cplusplus \
921 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
922
923 /* A type that is properly aligned for any stack member. */
924 union yyalloc
925 {
926 yytype_int16 yyss_alloc;
927 YYSTYPE yyvs_alloc;
928 };
929
930 /* The size of the maximum gap between one aligned stack and the next. */
931 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
932
933 /* The size of an array large to enough to hold all stacks, each with
934 N elements. */
935 # define YYSTACK_BYTES(N) \
936 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
937 + YYSTACK_GAP_MAXIMUM)
938
939 /* Copy COUNT objects from FROM to TO. The source and destination do
940 not overlap. */
941 # ifndef YYCOPY
942 # if defined __GNUC__ && 1 < __GNUC__
943 # define YYCOPY(To, From, Count) \
944 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
945 # else
946 # define YYCOPY(To, From, Count) \
947 do \
948 { \
949 YYSIZE_T yyi; \
950 for (yyi = 0; yyi < (Count); yyi++) \
951 (To)[yyi] = (From)[yyi]; \
952 } \
953 while (YYID (0))
954 # endif
955 # endif
956
957 /* Relocate STACK from its old location to the new one. The
958 local variables YYSIZE and YYSTACKSIZE give the old and new number of
959 elements in the stack, and YYPTR gives the new location of the
960 stack. Advance YYPTR to a properly aligned location for the next
961 stack. */
962 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
963 do \
964 { \
965 YYSIZE_T yynewbytes; \
966 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
967 Stack = &yyptr->Stack_alloc; \
968 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
969 yyptr += yynewbytes / sizeof (*yyptr); \
970 } \
971 while (YYID (0))
972
973 #endif
974
975 /* YYFINAL -- State number of the termination state. */
976 #define YYFINAL 2
977 /* YYLAST -- Last index in YYTABLE. */
978 #define YYLAST 1413
979
980 /* YYNTOKENS -- Number of terminals. */
981 #define YYNTOKENS 267
982 /* YYNNTS -- Number of nonterminals. */
983 #define YYNNTS 346
984 /* YYNRULES -- Number of rules. */
985 #define YYNRULES 743
986 /* YYNRULES -- Number of states. */
987 #define YYNSTATES 1494
988
989 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
990 #define YYUNDEFTOK 2
991 #define YYMAXUTOK 516
992
993 #define YYTRANSLATE(YYX) \
994 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
995
996 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
997 static const yytype_uint16 yytranslate[] =
998 {
999 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1000 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1001 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1002 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1003 2, 2, 2, 2, 266, 2, 2, 2, 2, 2,
1004 2, 2, 2, 2, 2, 2, 2, 2, 2, 262,
1005 2, 265, 2, 2, 2, 2, 2, 2, 2, 2,
1006 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1007 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1008 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1009 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1010 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1011 2, 2, 2, 264, 2, 263, 2, 2, 2, 2,
1012 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1013 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1014 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1015 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1016 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1017 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1018 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1019 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1020 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1021 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1022 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1023 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1024 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
1025 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1026 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1027 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1028 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1029 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1030 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1031 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
1032 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1033 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
1034 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
1035 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1036 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1037 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
1038 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
1039 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
1040 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1041 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
1042 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
1043 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1044 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
1045 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
1046 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
1047 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
1048 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
1049 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
1050 255, 256, 257, 258, 259, 260, 261
1051 };
1052
1053 #if YYDEBUG
1054 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
1055 YYRHS. */
1056 static const yytype_uint16 yyprhs[] =
1057 {
1058 0, 0, 3, 4, 7, 9, 11, 13, 15, 17,
1059 19, 21, 23, 25, 27, 29, 31, 33, 35, 37,
1060 39, 41, 43, 45, 47, 50, 53, 54, 56, 59,
1061 63, 67, 71, 75, 79, 80, 82, 85, 89, 93,
1062 97, 103, 106, 108, 110, 112, 115, 120, 125, 131,
1063 134, 136, 138, 140, 142, 144, 146, 148, 150, 152,
1064 154, 156, 158, 160, 163, 164, 170, 174, 176, 178,
1065 180, 185, 190, 195, 200, 205, 210, 215, 220, 225,
1066 230, 235, 241, 244, 246, 248, 250, 252, 255, 260,
1067 265, 270, 276, 279, 281, 283, 285, 287, 289, 291,
1068 293, 295, 297, 299, 301, 303, 305, 308, 313, 318,
1069 323, 328, 333, 338, 343, 348, 353, 358, 363, 368,
1070 373, 378, 383, 388, 393, 398, 399, 407, 408, 410,
1071 413, 415, 417, 419, 421, 423, 425, 427, 429, 431,
1072 433, 435, 437, 439, 441, 443, 445, 447, 449, 451,
1073 453, 455, 457, 459, 462, 467, 469, 474, 479, 484,
1074 489, 494, 495, 501, 505, 507, 509, 511, 513, 515,
1075 517, 519, 521, 523, 525, 527, 529, 531, 533, 535,
1076 537, 539, 541, 543, 545, 550, 555, 560, 565, 570,
1077 575, 580, 585, 590, 595, 600, 605, 610, 615, 616,
1078 622, 626, 628, 629, 633, 634, 637, 639, 641, 643,
1079 645, 647, 649, 651, 653, 655, 657, 659, 661, 663,
1080 665, 667, 669, 670, 678, 679, 681, 684, 686, 688,
1081 690, 692, 694, 696, 698, 700, 702, 704, 706, 708,
1082 710, 712, 715, 720, 722, 727, 732, 737, 742, 747,
1083 752, 757, 762, 767, 772, 777, 782, 783, 790, 791,
1084 797, 801, 803, 805, 807, 809, 812, 814, 816, 818,
1085 820, 822, 825, 826, 832, 836, 838, 840, 844, 849,
1086 854, 855, 862, 865, 867, 869, 871, 873, 875, 877,
1087 879, 881, 883, 885, 887, 889, 891, 893, 895, 897,
1088 899, 902, 907, 912, 917, 922, 927, 928, 934, 938,
1089 940, 941, 945, 946, 949, 951, 953, 955, 957, 959,
1090 961, 963, 965, 967, 969, 974, 979, 984, 989, 994,
1091 999, 1004, 1009, 1014, 1019, 1020, 1027, 1030, 1032, 1034,
1092 1036, 1038, 1041, 1046, 1051, 1056, 1057, 1064, 1067, 1069,
1093 1071, 1073, 1075, 1078, 1083, 1088, 1089, 1095, 1099, 1101,
1094 1103, 1105, 1107, 1109, 1111, 1113, 1115, 1117, 1119, 1121,
1095 1123, 1124, 1131, 1134, 1136, 1138, 1140, 1143, 1148, 1149,
1096 1155, 1159, 1161, 1163, 1165, 1167, 1169, 1171, 1173, 1175,
1097 1177, 1179, 1181, 1183, 1184, 1192, 1193, 1195, 1198, 1200,
1098 1202, 1204, 1206, 1208, 1210, 1212, 1214, 1216, 1218, 1220,
1099 1222, 1224, 1226, 1228, 1230, 1232, 1234, 1236, 1238, 1241,
1100 1246, 1248, 1253, 1258, 1263, 1268, 1273, 1278, 1283, 1288,
1101 1289, 1295, 1299, 1301, 1302, 1306, 1307, 1310, 1312, 1314,
1102 1316, 1318, 1320, 1325, 1330, 1335, 1340, 1345, 1350, 1355,
1103 1360, 1365, 1370, 1371, 1378, 1379, 1385, 1389, 1391, 1393,
1104 1396, 1398, 1400, 1402, 1404, 1406, 1411, 1416, 1417, 1424,
1105 1427, 1429, 1431, 1433, 1435, 1440, 1445, 1451, 1454, 1456,
1106 1458, 1460, 1465, 1466, 1473, 1474, 1480, 1484, 1486, 1488,
1107 1491, 1493, 1495, 1497, 1499, 1501, 1506, 1511, 1517, 1520,
1108 1522, 1524, 1526, 1528, 1530, 1532, 1534, 1536, 1538, 1540,
1109 1542, 1544, 1546, 1548, 1550, 1552, 1554, 1556, 1558, 1560,
1110 1562, 1564, 1566, 1568, 1570, 1572, 1574, 1576, 1578, 1580,
1111 1582, 1584, 1586, 1588, 1590, 1592, 1594, 1596, 1598, 1600,
1112 1602, 1604, 1606, 1608, 1610, 1612, 1614, 1616, 1618, 1620,
1113 1622, 1624, 1626, 1628, 1630, 1632, 1634, 1636, 1641, 1646,
1114 1651, 1656, 1661, 1666, 1671, 1676, 1681, 1686, 1691, 1696,
1115 1701, 1706, 1711, 1716, 1721, 1726, 1731, 1736, 1741, 1746,
1116 1751, 1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796,
1117 1801, 1806, 1811, 1816, 1821, 1826, 1831, 1836, 1841, 1846,
1118 1851, 1856, 1861, 1866, 1871, 1876, 1881, 1886, 1891, 1892,
1119 1898, 1902, 1904, 1906, 1908, 1910, 1912, 1914, 1916, 1918,
1120 1920, 1922, 1924, 1926, 1928, 1930, 1932, 1934, 1936, 1938,
1121 1940, 1942, 1943, 1949, 1953, 1955, 1957, 1959, 1961, 1963,
1122 1965, 1967, 1969, 1971, 1973, 1975, 1977, 1979, 1981, 1983,
1123 1985, 1987, 1989, 1991, 1993, 1998, 2003, 2008, 2013, 2018,
1124 2019, 2026, 2029, 2031, 2033, 2035, 2037, 2039, 2041, 2043,
1125 2045, 2050, 2055, 2056, 2062, 2066, 2068, 2070, 2072, 2077,
1126 2082, 2083, 2089, 2093, 2095, 2097, 2099, 2105, 2108, 2110,
1127 2112, 2114, 2116, 2118, 2120, 2122, 2124, 2126, 2128, 2130,
1128 2132, 2134, 2136, 2138, 2140, 2142, 2144, 2146, 2148, 2153,
1129 2158, 2163, 2168, 2173, 2178, 2183, 2188, 2193, 2198, 2203,
1130 2208, 2213, 2218, 2223, 2228, 2233, 2238, 2244, 2247, 2249,
1131 2251, 2253, 2255, 2257, 2259, 2261, 2263, 2265, 2270, 2275,
1132 2280, 2285, 2290, 2295
1133 };
1134
1135 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
1136 static const yytype_int16 yyrhs[] =
1137 {
1138 268, 0, -1, -1, 268, 269, -1, 297, -1, 303,
1139 -1, 318, -1, 582, -1, 355, -1, 374, -1, 388,
1140 -1, 279, -1, 603, -1, 414, -1, 421, -1, 431,
1141 -1, 440, -1, 471, -1, 481, -1, 487, -1, 501,
1142 -1, 566, -1, 491, -1, 274, -1, 1, 262, -1,
1143 1, 263, -1, -1, 271, -1, 133, 270, -1, 133,
1144 175, 270, -1, 133, 176, 270, -1, 133, 177, 270,
1145 -1, 133, 178, 270, -1, 133, 179, 270, -1, -1,
1146 273, -1, 133, 272, -1, 133, 14, 272, -1, 133,
1147 15, 272, -1, 133, 16, 272, -1, 121, 264, 275,
1148 263, 262, -1, 275, 276, -1, 276, -1, 277, -1,
1149 278, -1, 1, 262, -1, 120, 265, 155, 262, -1,
1150 150, 265, 155, 262, -1, 183, 264, 280, 263, 262,
1151 -1, 280, 281, -1, 281, -1, 288, -1, 293, -1,
1152 296, -1, 290, -1, 291, -1, 292, -1, 295, -1,
1153 287, -1, 294, -1, 289, -1, 286, -1, 282, -1,
1154 1, 262, -1, -1, 170, 283, 265, 284, 262, -1,
1155 284, 266, 285, -1, 285, -1, 171, -1, 172, -1,
1156 169, 265, 155, 262, -1, 167, 265, 155, 262, -1,
1157 122, 265, 155, 262, -1, 185, 265, 155, 262, -1,
1158 37, 265, 155, 262, -1, 125, 265, 155, 262, -1,
1159 124, 265, 155, 262, -1, 257, 265, 155, 262, -1,
1160 258, 265, 155, 262, -1, 229, 265, 133, 262, -1,
1161 86, 265, 199, 262, -1, 5, 264, 298, 263, 262,
1162 -1, 298, 299, -1, 299, -1, 300, -1, 302, -1,
1163 301, -1, 1, 262, -1, 122, 265, 155, 262, -1,
1164 48, 265, 155, 262, -1, 37, 265, 155, 262, -1,
1165 104, 264, 304, 263, 262, -1, 304, 305, -1, 305,
1166 -1, 306, -1, 307, -1, 316, -1, 317, -1, 308,
1167 -1, 310, -1, 312, -1, 313, -1, 315, -1, 311,
1168 -1, 314, -1, 309, -1, 1, 262, -1, 221, 265,
1169 155, 262, -1, 140, 265, 155, 262, -1, 64, 265,
1170 155, 262, -1, 57, 265, 155, 262, -1, 62, 265,
1171 155, 262, -1, 63, 265, 155, 262, -1, 60, 265,
1172 155, 262, -1, 59, 265, 155, 262, -1, 61, 265,
1173 155, 262, -1, 58, 265, 155, 262, -1, 105, 265,
1174 222, 262, -1, 105, 265, 224, 262, -1, 105, 265,
1175 228, 262, -1, 105, 265, 226, 262, -1, 105, 265,
1176 227, 262, -1, 105, 265, 225, 262, -1, 105, 265,
1177 223, 262, -1, 255, 265, 199, 262, -1, -1, 138,
1178 319, 320, 264, 321, 263, 262, -1, -1, 324, -1,
1179 321, 322, -1, 322, -1, 323, -1, 325, -1, 326,
1180 -1, 345, -1, 346, -1, 330, -1, 329, -1, 334,
1181 -1, 335, -1, 337, -1, 338, -1, 339, -1, 340,
1182 -1, 341, -1, 336, -1, 342, -1, 343, -1, 344,
1183 -1, 347, -1, 327, -1, 328, -1, 348, -1, 1,
1184 262, -1, 122, 265, 155, 262, -1, 155, -1, 250,
1185 265, 155, 262, -1, 149, 265, 155, 262, -1, 50,
1186 265, 199, 262, -1, 168, 265, 155, 262, -1, 26,
1187 265, 155, 262, -1, -1, 238, 331, 265, 332, 262,
1188 -1, 332, 266, 333, -1, 333, -1, 206, -1, 209,
1189 -1, 210, -1, 212, -1, 213, -1, 216, -1, 235,
1190 -1, 230, -1, 232, -1, 239, -1, 236, -1, 215,
1191 -1, 231, -1, 234, -1, 217, -1, 242, -1, 207,
1192 -1, 208, -1, 220, -1, 74, 265, 199, 262, -1,
1193 163, 265, 199, 262, -1, 164, 265, 199, 262, -1,
1194 94, 265, 199, 262, -1, 259, 265, 199, 262, -1,
1195 249, 265, 199, 262, -1, 67, 265, 199, 262, -1,
1196 127, 265, 199, 262, -1, 38, 265, 199, 262, -1,
1197 161, 265, 199, 262, -1, 5, 265, 199, 262, -1,
1198 79, 265, 199, 262, -1, 81, 265, 199, 262, -1,
1199 231, 265, 199, 262, -1, -1, 55, 349, 265, 350,
1200 262, -1, 350, 266, 351, -1, 351, -1, -1, 132,
1201 352, 354, -1, -1, 353, 354, -1, 74, -1, 163,
1202 -1, 94, -1, 249, -1, 259, -1, 67, -1, 38,
1203 -1, 161, -1, 5, -1, 79, -1, 127, -1, 231,
1204 -1, 143, -1, 81, -1, 164, -1, 50, -1, -1,
1205 26, 356, 357, 264, 358, 263, 262, -1, -1, 361,
1206 -1, 358, 359, -1, 359, -1, 360, -1, 371, -1,
1207 372, -1, 362, -1, 363, -1, 373, -1, 364, -1,
1208 365, -1, 366, -1, 367, -1, 368, -1, 369, -1,
1209 370, -1, 1, 262, -1, 122, 265, 155, 262, -1,
1210 155, -1, 152, 265, 271, 262, -1, 153, 265, 271,
1211 262, -1, 136, 265, 133, 262, -1, 30, 265, 271,
1212 262, -1, 114, 265, 133, 262, -1, 109, 265, 133,
1213 262, -1, 111, 265, 133, 262, -1, 110, 265, 133,
1214 262, -1, 180, 265, 273, 262, -1, 23, 265, 133,
1215 262, -1, 24, 265, 133, 262, -1, 135, 265, 133,
1216 262, -1, -1, 102, 375, 264, 380, 263, 262, -1,
1217 -1, 55, 377, 265, 378, 262, -1, 378, 266, 379,
1218 -1, 379, -1, 237, -1, 78, -1, 233, -1, 380,
1219 381, -1, 381, -1, 382, -1, 376, -1, 386, -1,
1220 387, -1, 1, 262, -1, -1, 154, 265, 384, 383,
1221 262, -1, 384, 266, 385, -1, 385, -1, 133, -1,
1222 133, 204, 133, -1, 91, 265, 155, 262, -1, 85,
1223 265, 155, 262, -1, -1, 75, 389, 264, 390, 263,
1224 262, -1, 390, 391, -1, 391, -1, 392, -1, 393,
1225 -1, 395, -1, 397, -1, 404, -1, 405, -1, 406,
1226 -1, 408, -1, 409, -1, 410, -1, 394, -1, 411,
1227 -1, 412, -1, 407, -1, 413, -1, 396, -1, 1,
1228 262, -1, 250, 265, 155, 262, -1, 149, 265, 155,
1229 262, -1, 193, 265, 199, 262, -1, 26, 265, 155,
1230 262, -1, 50, 265, 199, 262, -1, -1, 55, 398,
1231 265, 399, 262, -1, 399, 266, 400, -1, 400, -1,
1232 -1, 132, 401, 403, -1, -1, 402, 403, -1, 193,
1233 -1, 51, -1, 95, -1, 76, -1, 20, -1, 21,
1234 -1, 131, -1, 69, -1, 174, -1, 123, -1, 95,
1235 265, 199, 262, -1, 76, 265, 199, 262, -1, 51,
1236 265, 199, 262, -1, 20, 265, 199, 262, -1, 131,
1237 265, 199, 262, -1, 69, 265, 199, 262, -1, 192,
1238 265, 155, 262, -1, 159, 265, 155, 262, -1, 158,
1239 265, 133, 262, -1, 123, 265, 199, 262, -1, -1,
1240 173, 415, 264, 416, 263, 262, -1, 416, 417, -1,
1241 417, -1, 418, -1, 419, -1, 420, -1, 1, 262,
1242 -1, 157, 265, 155, 262, -1, 22, 265, 155, 262,
1243 -1, 126, 265, 155, 262, -1, -1, 187, 422, 264,
1244 423, 263, 262, -1, 423, 424, -1, 424, -1, 425,
1245 -1, 426, -1, 427, -1, 1, 262, -1, 122, 265,
1246 155, 262, -1, 250, 265, 155, 262, -1, -1, 189,
1247 428, 265, 429, 262, -1, 429, 266, 430, -1, 430,
1248 -1, 94, -1, 246, -1, 249, -1, 259, -1, 247,
1249 -1, 241, -1, 173, -1, 248, -1, 240, -1, 220,
1250 -1, 205, -1, -1, 188, 432, 264, 433, 263, 262,
1251 -1, 433, 434, -1, 434, -1, 435, -1, 436, -1,
1252 1, 262, -1, 122, 265, 155, 262, -1, -1, 189,
1253 437, 265, 438, 262, -1, 438, 266, 439, -1, 439,
1254 -1, 94, -1, 246, -1, 249, -1, 259, -1, 247,
1255 -1, 241, -1, 173, -1, 248, -1, 240, -1, 220,
1256 -1, 205, -1, -1, 29, 441, 442, 264, 443, 263,
1257 262, -1, -1, 446, -1, 443, 444, -1, 444, -1,
1258 445, -1, 447, -1, 448, -1, 449, -1, 450, -1,
1259 452, -1, 451, -1, 453, -1, 454, -1, 467, -1,
1260 468, -1, 469, -1, 465, -1, 462, -1, 464, -1,
1261 463, -1, 461, -1, 470, -1, 466, -1, 1, 262,
1262 -1, 122, 265, 155, 262, -1, 155, -1, 85, 265,
1263 155, 262, -1, 257, 265, 155, 262, -1, 181, 265,
1264 155, 262, -1, 3, 265, 155, 262, -1, 154, 265,
1265 133, 262, -1, 6, 265, 218, 262, -1, 6, 265,
1266 219, 262, -1, 54, 265, 155, 262, -1, -1, 55,
1267 455, 265, 456, 262, -1, 456, 266, 457, -1, 457,
1268 -1, -1, 132, 458, 460, -1, -1, 459, 460, -1,
1269 27, -1, 31, -1, 10, -1, 12, -1, 244, -1,
1270 168, 265, 155, 262, -1, 50, 265, 199, 262, -1,
1271 31, 265, 199, 262, -1, 27, 265, 199, 262, -1,
1272 10, 265, 199, 262, -1, 244, 265, 199, 262, -1,
1273 87, 265, 155, 262, -1, 100, 265, 155, 262, -1,
1274 26, 265, 155, 262, -1, 25, 265, 155, 262, -1,
1275 -1, 92, 472, 264, 477, 263, 262, -1, -1, 189,
1276 474, 265, 475, 262, -1, 475, 266, 476, -1, 476,
1277 -1, 160, -1, 477, 478, -1, 478, -1, 479, -1,
1278 480, -1, 473, -1, 1, -1, 250, 265, 155, 262,
1279 -1, 157, 265, 155, 262, -1, -1, 36, 482, 264,
1280 483, 263, 262, -1, 483, 484, -1, 484, -1, 485,
1281 -1, 486, -1, 1, -1, 91, 265, 155, 262, -1,
1282 157, 265, 155, 262, -1, 52, 264, 488, 263, 262,
1283 -1, 488, 489, -1, 489, -1, 490, -1, 1, -1,
1284 91, 265, 155, 262, -1, -1, 65, 492, 264, 497,
1285 263, 262, -1, -1, 189, 494, 265, 495, 262, -1,
1286 495, 266, 496, -1, 496, -1, 160, -1, 497, 498,
1287 -1, 498, -1, 499, -1, 500, -1, 493, -1, 1,
1288 -1, 122, 265, 155, 262, -1, 157, 265, 155, 262,
1289 -1, 66, 264, 502, 263, 262, -1, 502, 503, -1,
1290 503, -1, 512, -1, 513, -1, 515, -1, 516, -1,
1291 517, -1, 518, -1, 519, -1, 520, -1, 521, -1,
1292 522, -1, 511, -1, 524, -1, 525, -1, 526, -1,
1293 527, -1, 543, -1, 529, -1, 531, -1, 533, -1,
1294 532, -1, 536, -1, 530, -1, 537, -1, 538, -1,
1295 539, -1, 540, -1, 542, -1, 541, -1, 557, -1,
1296 544, -1, 548, -1, 549, -1, 553, -1, 534, -1,
1297 535, -1, 563, -1, 561, -1, 562, -1, 545, -1,
1298 514, -1, 546, -1, 547, -1, 564, -1, 552, -1,
1299 523, -1, 565, -1, 550, -1, 551, -1, 507, -1,
1300 510, -1, 505, -1, 506, -1, 508, -1, 509, -1,
1301 528, -1, 504, -1, 1, -1, 116, 265, 133, 262,
1302 -1, 72, 265, 133, 262, -1, 73, 265, 133, 262,
1303 -1, 12, 265, 199, 262, -1, 256, 265, 199, 262,
1304 -1, 162, 265, 271, 262, -1, 186, 265, 199, 262,
1305 -1, 93, 265, 133, 262, -1, 84, 265, 199, 262,
1306 -1, 89, 265, 199, 262, -1, 43, 265, 199, 262,
1307 -1, 53, 265, 199, 262, -1, 8, 265, 199, 262,
1308 -1, 113, 265, 271, 262, -1, 112, 265, 133, 262,
1309 -1, 106, 265, 133, 262, -1, 9, 265, 271, 262,
1310 -1, 203, 265, 271, 262, -1, 202, 265, 271, 262,
1311 -1, 77, 265, 133, 262, -1, 97, 265, 199, 262,
1312 -1, 96, 265, 155, 262, -1, 90, 265, 199, 262,
1313 -1, 261, 265, 199, 262, -1, 194, 265, 199, 262,
1314 -1, 197, 265, 199, 262, -1, 198, 265, 199, 262,
1315 -1, 196, 265, 199, 262, -1, 196, 265, 200, 262,
1316 -1, 195, 265, 199, 262, -1, 195, 265, 200, 262,
1317 -1, 147, 265, 271, 262, -1, 19, 265, 271, 262,
1318 -1, 139, 265, 199, 262, -1, 148, 265, 271, 262,
1319 -1, 190, 265, 199, 262, -1, 130, 265, 199, 262,
1320 -1, 245, 265, 199, 262, -1, 142, 265, 199, 262,
1321 -1, 117, 265, 155, 262, -1, 88, 265, 271, 262,
1322 -1, 45, 265, 133, 262, -1, 115, 265, 133, 262,
1323 -1, 184, 265, 155, 262, -1, 32, 265, 155, 262,
1324 -1, 28, 265, 133, 262, -1, 251, 265, 199, 262,
1325 -1, 47, 265, 155, 262, -1, 151, 265, 199, 262,
1326 -1, 39, 265, 199, 262, -1, 243, 265, 271, 262,
1327 -1, -1, 144, 554, 265, 555, 262, -1, 555, 266,
1328 556, -1, 556, -1, 206, -1, 209, -1, 210, -1,
1329 212, -1, 213, -1, 216, -1, 235, -1, 230, -1,
1330 232, -1, 239, -1, 236, -1, 215, -1, 231, -1,
1331 234, -1, 217, -1, 242, -1, 207, -1, 208, -1,
1332 220, -1, -1, 141, 558, 265, 559, 262, -1, 559,
1333 266, 560, -1, 560, -1, 206, -1, 209, -1, 210,
1334 -1, 212, -1, 213, -1, 216, -1, 235, -1, 230,
1335 -1, 232, -1, 239, -1, 236, -1, 215, -1, 231,
1336 -1, 234, -1, 217, -1, 242, -1, 207, -1, 208,
1337 -1, 220, -1, 118, 265, 133, 262, -1, 119, 265,
1338 133, 262, -1, 33, 265, 133, 262, -1, 211, 265,
1339 273, 262, -1, 44, 265, 199, 262, -1, -1, 68,
1340 567, 264, 568, 263, 262, -1, 568, 569, -1, 569,
1341 -1, 570, -1, 571, -1, 572, -1, 576, -1, 577,
1342 -1, 578, -1, 1, -1, 49, 265, 199, 262, -1,
1343 46, 265, 271, 262, -1, -1, 104, 573, 265, 574,
1344 262, -1, 574, 266, 575, -1, 575, -1, 201, -1,
1345 11, -1, 250, 265, 155, 262, -1, 122, 265, 155,
1346 262, -1, -1, 4, 579, 265, 580, 262, -1, 580,
1347 266, 581, -1, 581, -1, 201, -1, 11, -1, 22,
1348 264, 583, 263, 262, -1, 583, 584, -1, 584, -1,
1349 587, -1, 588, -1, 589, -1, 590, -1, 595, -1,
1350 591, -1, 592, -1, 593, -1, 594, -1, 596, -1,
1351 597, -1, 598, -1, 586, -1, 599, -1, 600, -1,
1352 601, -1, 602, -1, 585, -1, 1, -1, 40, 265,
1353 199, 262, -1, 165, 265, 199, 262, -1, 42, 265,
1354 199, 262, -1, 252, 265, 199, 262, -1, 253, 265,
1355 199, 262, -1, 254, 265, 199, 262, -1, 98, 265,
1356 271, 262, -1, 99, 265, 271, 262, -1, 108, 265,
1357 133, 262, -1, 156, 265, 199, 262, -1, 107, 265,
1358 133, 262, -1, 35, 265, 133, 262, -1, 34, 265,
1359 133, 262, -1, 128, 265, 199, 262, -1, 129, 265,
1360 199, 262, -1, 13, 265, 199, 262, -1, 145, 265,
1361 133, 262, -1, 146, 265, 271, 262, -1, 182, 264,
1362 604, 263, 262, -1, 604, 605, -1, 605, -1, 606,
1363 -1, 607, -1, 609, -1, 611, -1, 610, -1, 608,
1364 -1, 612, -1, 1, -1, 56, 265, 199, 262, -1,
1365 83, 265, 199, 262, -1, 80, 265, 155, 262, -1,
1366 101, 265, 271, 262, -1, 78, 265, 199, 262, -1,
1367 41, 265, 199, 262, -1, 82, 265, 199, 262, -1
1368 };
1369
1370 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
1371 static const yytype_uint16 yyrline[] =
1372 {
1373 0, 403, 403, 404, 407, 408, 409, 410, 411, 412,
1374 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
1375 423, 424, 425, 426, 427, 428, 432, 432, 433, 437,
1376 441, 445, 449, 453, 459, 459, 460, 461, 462, 463,
1377 470, 473, 473, 474, 474, 474, 476, 484, 493, 495,
1378 495, 496, 496, 497, 497, 498, 498, 499, 500, 500,
1379 501, 501, 502, 503, 507, 506, 521, 521, 522, 526,
1380 532, 566, 626, 640, 655, 664, 678, 687, 715, 745,
1381 768, 790, 792, 792, 793, 793, 794, 794, 796, 805,
1382 814, 827, 829, 830, 832, 832, 833, 834, 834, 835,
1383 835, 836, 836, 837, 837, 838, 839, 841, 845, 849,
1384 856, 863, 870, 877, 884, 891, 898, 905, 909, 913,
1385 917, 921, 925, 929, 935, 945, 944, 1038, 1038, 1039,
1386 1039, 1040, 1040, 1040, 1040, 1041, 1041, 1042, 1042, 1042,
1387 1043, 1043, 1043, 1044, 1044, 1044, 1045, 1045, 1045, 1045,
1388 1046, 1046, 1047, 1047, 1049, 1061, 1073, 1107, 1119, 1130,
1389 1172, 1182, 1181, 1187, 1187, 1188, 1192, 1196, 1200, 1204,
1390 1208, 1212, 1216, 1220, 1224, 1228, 1232, 1236, 1240, 1244,
1391 1248, 1252, 1256, 1260, 1266, 1277, 1288, 1299, 1310, 1321,
1392 1332, 1343, 1354, 1365, 1376, 1387, 1398, 1409, 1421, 1420,
1393 1424, 1424, 1425, 1425, 1426, 1426, 1428, 1435, 1442, 1449,
1394 1456, 1463, 1470, 1477, 1484, 1491, 1498, 1505, 1512, 1519,
1395 1526, 1533, 1547, 1546, 1596, 1596, 1598, 1598, 1599, 1600,
1396 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609,
1397 1610, 1611, 1613, 1622, 1631, 1637, 1643, 1649, 1655, 1661,
1398 1667, 1673, 1679, 1685, 1691, 1697, 1707, 1706, 1723, 1722,
1399 1727, 1727, 1728, 1732, 1736, 1744, 1744, 1745, 1745, 1745,
1400 1745, 1745, 1747, 1747, 1749, 1749, 1751, 1765, 1785, 1794,
1401 1807, 1806, 1875, 1875, 1876, 1876, 1876, 1876, 1877, 1877,
1402 1878, 1878, 1878, 1879, 1879, 1880, 1880, 1880, 1881, 1881,
1403 1881, 1883, 1920, 1933, 1944, 1953, 1965, 1964, 1968, 1968,
1404 1969, 1969, 1970, 1970, 1972, 1980, 1987, 1994, 2001, 2008,
1405 2015, 2022, 2029, 2036, 2045, 2056, 2067, 2078, 2089, 2100,
1406 2112, 2131, 2141, 2150, 2166, 2165, 2181, 2181, 2182, 2182,
1407 2182, 2182, 2184, 2193, 2208, 2222, 2221, 2237, 2237, 2238,
1408 2238, 2238, 2238, 2240, 2249, 2272, 2271, 2277, 2277, 2278,
1409 2282, 2286, 2290, 2294, 2298, 2302, 2306, 2310, 2314, 2318,
1410 2328, 2327, 2344, 2344, 2345, 2345, 2345, 2347, 2354, 2353,
1411 2359, 2359, 2360, 2364, 2368, 2372, 2376, 2380, 2384, 2388,
1412 2392, 2396, 2400, 2410, 2409, 2555, 2555, 2556, 2556, 2557,
1413 2557, 2557, 2558, 2558, 2559, 2559, 2560, 2560, 2560, 2561,
1414 2561, 2561, 2562, 2562, 2562, 2563, 2563, 2564, 2564, 2566,
1415 2578, 2590, 2599, 2625, 2643, 2661, 2667, 2671, 2679, 2689,
1416 2688, 2692, 2692, 2693, 2693, 2694, 2694, 2696, 2707, 2714,
1417 2721, 2728, 2738, 2779, 2790, 2801, 2816, 2827, 2838, 2851,
1418 2864, 2873, 2909, 2908, 2972, 2971, 2975, 2975, 2976, 2982,
1419 2982, 2983, 2983, 2983, 2983, 2985, 3004, 3014, 3013, 3036,
1420 3036, 3037, 3037, 3037, 3039, 3045, 3054, 3056, 3056, 3057,
1421 3057, 3059, 3078, 3077, 3125, 3124, 3128, 3128, 3129, 3135,
1422 3135, 3136, 3136, 3136, 3136, 3138, 3144, 3153, 3156, 3156,
1423 3157, 3157, 3158, 3158, 3159, 3159, 3160, 3160, 3161, 3161,
1424 3162, 3162, 3163, 3163, 3164, 3164, 3165, 3165, 3166, 3166,
1425 3167, 3167, 3168, 3168, 3169, 3169, 3170, 3170, 3171, 3171,
1426 3172, 3172, 3173, 3173, 3174, 3174, 3175, 3175, 3176, 3176,
1427 3177, 3178, 3178, 3179, 3179, 3180, 3180, 3181, 3181, 3182,
1428 3182, 3183, 3183, 3184, 3184, 3185, 3186, 3189, 3194, 3199,
1429 3204, 3209, 3214, 3219, 3224, 3229, 3234, 3239, 3244, 3249,
1430 3254, 3259, 3264, 3269, 3274, 3279, 3285, 3296, 3301, 3310,
1431 3315, 3320, 3325, 3330, 3335, 3338, 3343, 3346, 3351, 3356,
1432 3361, 3366, 3371, 3376, 3381, 3386, 3391, 3402, 3407, 3412,
1433 3417, 3426, 3458, 3476, 3481, 3490, 3495, 3500, 3506, 3505,
1434 3510, 3510, 3511, 3514, 3517, 3520, 3523, 3526, 3529, 3532,
1435 3535, 3538, 3541, 3544, 3547, 3550, 3553, 3556, 3559, 3562,
1436 3565, 3571, 3570, 3575, 3575, 3576, 3579, 3582, 3585, 3588,
1437 3591, 3594, 3597, 3600, 3603, 3606, 3609, 3612, 3615, 3618,
1438 3621, 3624, 3627, 3630, 3635, 3640, 3645, 3650, 3655, 3664,
1439 3663, 3687, 3687, 3688, 3689, 3690, 3691, 3692, 3693, 3694,
1440 3696, 3702, 3709, 3708, 3713, 3713, 3714, 3718, 3724, 3758,
1441 3768, 3767, 3817, 3817, 3818, 3822, 3831, 3834, 3834, 3835,
1442 3835, 3836, 3836, 3837, 3837, 3838, 3838, 3839, 3839, 3840,
1443 3841, 3841, 3842, 3842, 3843, 3843, 3844, 3844, 3846, 3851,
1444 3856, 3861, 3866, 3871, 3876, 3881, 3886, 3891, 3896, 3901,
1445 3906, 3911, 3916, 3921, 3926, 3931, 3939, 3942, 3942, 3943,
1446 3943, 3944, 3945, 3946, 3946, 3947, 3948, 3950, 3956, 3962,
1447 3971, 3985, 3991, 3997
1448 };
1449 #endif
1450
1451 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
1452 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1453 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
1454 static const char *const yytname[] =
1455 {
1456 "$end", "error", "$undefined", "ACCEPT_PASSWORD", "ACTION", "ADMIN",
1457 "AFTYPE", "T_ALLOW", "ANTI_NICK_FLOOD", "ANTI_SPAM_EXIT_MESSAGE_TIME",
1458 "AUTOCONN", "T_BLOCK", "BURST_AWAY", "BURST_TOPICWHO", "BYTES", "KBYTES",
1459 "MBYTES", "GBYTES", "TBYTES", "CALLER_ID_WAIT", "CAN_FLOOD", "CAN_IDLE",
1460 "CHANNEL", "CIDR_BITLEN_IPV4", "CIDR_BITLEN_IPV6", "CIPHER_PREFERENCE",
1461 "CLASS", "COMPRESSED", "COMPRESSION_LEVEL", "CONNECT", "CONNECTFREQ",
1462 "CRYPTLINK", "DEFAULT_CIPHER_PREFERENCE", "DEFAULT_FLOODCOUNT",
1463 "DEFAULT_SPLIT_SERVER_COUNT", "DEFAULT_SPLIT_USER_COUNT", "DENY",
1464 "DESCRIPTION", "DIE", "DISABLE_AUTH", "DISABLE_FAKE_CHANNELS",
1465 "DISABLE_HIDDEN", "DISABLE_LOCAL_CHANNELS", "DISABLE_REMOTE_COMMANDS",
1466 "DOT_IN_IP6_ADDR", "DOTS_IN_IDENT", "DURATION", "EGDPOOL_PATH", "EMAIL",
1467 "ENABLE", "ENCRYPTED", "EXCEED_LIMIT", "EXEMPT", "FAILED_OPER_NOTICE",
1468 "FAKENAME", "IRCD_FLAGS", "FLATTEN_LINKS", "FFAILED_OPERLOG", "FKILLLOG",
1469 "FKLINELOG", "FGLINELOG", "FIOERRLOG", "FOPERLOG", "FOPERSPYLOG",
1470 "FUSERLOG", "GECOS", "GENERAL", "GLINE", "GLINES", "GLINE_EXEMPT",
1471 "GLINE_LOG", "GLINE_TIME", "GLINE_MIN_CIDR", "GLINE_MIN_CIDR6",
1472 "GLOBAL_KILL", "IRCD_AUTH", "NEED_IDENT", "HAVENT_READ_CONF", "HIDDEN",
1473 "HIDDEN_ADMIN", "HIDDEN_NAME", "HIDDEN_OPER", "HIDE_SERVER_IPS",
1474 "HIDE_SERVERS", "HIDE_SPOOF_IPS", "HOST", "HUB", "HUB_MASK", "IDLETIME",
1475 "IGNORE_BOGUS_TS", "INVISIBLE_ON_CONNECT", "IP", "KILL",
1476 "KILL_CHASE_TIME_LIMIT", "KLINE", "KLINE_EXEMPT", "KLINE_REASON",
1477 "KLINE_WITH_REASON", "KNOCK_DELAY", "KNOCK_DELAY_CHANNEL", "LEAF_MASK",
1478 "LINKS_DELAY", "LISTEN", "T_LOG", "LOGGING", "LOG_LEVEL", "MAX_ACCEPT",
1479 "MAX_BANS", "MAX_CHANS_PER_USER", "MAX_GLOBAL", "MAX_IDENT", "MAX_LOCAL",
1480 "MAX_NICK_CHANGES", "MAX_NICK_TIME", "MAX_NUMBER", "MAX_TARGETS",
1481 "MAX_WATCH", "MESSAGE_LOCALE", "MIN_NONWILDCARD",
1482 "MIN_NONWILDCARD_SIMPLE", "MODULE", "MODULES", "NAME", "NEED_PASSWORD",
1483 "NETWORK_DESC", "NETWORK_NAME", "NICK", "NICK_CHANGES",
1484 "NO_CREATE_ON_SPLIT", "NO_JOIN_ON_SPLIT", "NO_OPER_FLOOD", "NO_TILDE",
1485 "NOT", "NUMBER", "NUMBER_PER_IDENT", "NUMBER_PER_CIDR", "NUMBER_PER_IP",
1486 "NUMBER_PER_IP_GLOBAL", "OPERATOR", "OPERS_BYPASS_CALLERID", "OPER_LOG",
1487 "OPER_ONLY_UMODES", "OPER_PASS_RESV", "OPER_SPY_T", "OPER_UMODES",
1488 "JOIN_FLOOD_COUNT", "JOIN_FLOOD_TIME", "PACE_WAIT", "PACE_WAIT_SIMPLE",
1489 "PASSWORD", "PATH", "PING_COOKIE", "PING_TIME", "PING_WARNING", "PORT",
1490 "QSTRING", "QUIET_ON_BAN", "REASON", "REDIRPORT", "REDIRSERV", "REGEX_T",
1491 "REHASH", "TREJECT_HOLD_TIME", "REMOTE", "REMOTEBAN",
1492 "RESTRICT_CHANNELS", "RESTRICTED", "RSA_PRIVATE_KEY_FILE",
1493 "RSA_PUBLIC_KEY_FILE", "SSL_CERTIFICATE_FILE", "T_SSL_CONNECTION_METHOD",
1494 "T_SSLV3", "T_TLSV1", "RESV", "RESV_EXEMPT", "SECONDS", "MINUTES",
1495 "HOURS", "DAYS", "WEEKS", "SENDQ", "SEND_PASSWORD", "SERVERHIDE",
1496 "SERVERINFO", "SERVLINK_PATH", "IRCD_SID", "TKLINE_EXPIRE_NOTICES",
1497 "T_SHARED", "T_CLUSTER", "TYPE", "SHORT_MOTD", "SILENT", "SPOOF",
1498 "SPOOF_NOTICE", "STATS_E_DISABLED", "STATS_I_OPER_ONLY",
1499 "STATS_K_OPER_ONLY", "STATS_O_OPER_ONLY", "STATS_P_OPER_ONLY", "TBOOL",
1500 "TMASKED", "T_REJECT", "TS_MAX_DELTA", "TS_WARN_DELTA", "TWODOTS",
1501 "T_ALL", "T_BOTS", "T_SOFTCALLERID", "T_CALLERID", "T_CCONN",
1502 "T_CCONN_FULL", "T_CLIENT_FLOOD", "T_DEAF", "T_DEBUG", "T_DRONE",
1503 "T_EXTERNAL", "T_FULL", "T_INVISIBLE", "T_IPV4", "T_IPV6", "T_LOCOPS",
1504 "T_LOGPATH", "T_L_CRIT", "T_L_DEBUG", "T_L_ERROR", "T_L_INFO",
1505 "T_L_NOTICE", "T_L_TRACE", "T_L_WARN", "T_MAX_CLIENTS", "T_NCHANGE",
1506 "T_OPERWALL", "T_REJ", "T_SERVER", "T_SERVNOTICE", "T_SKILL", "T_SPY",
1507 "T_SSL", "T_UMODES", "T_UNAUTH", "T_UNRESV", "T_UNXLINE", "T_WALLOP",
1508 "THROTTLE_TIME", "TOPICBURST", "TRUE_NO_OPER_FLOOD", "TKLINE", "TXLINE",
1509 "TRESV", "UNKLINE", "USER", "USE_EGD", "USE_EXCEPT", "USE_INVEX",
1510 "USE_KNOCK", "USE_LOGGING", "USE_WHOIS_ACTUALLY", "VHOST", "VHOST6",
1511 "XLINE", "WARN", "WARN_NO_NLINE", "';'", "'}'", "'{'", "'='", "','",
1512 "$accept", "conf", "conf_item", "timespec_", "timespec", "sizespec_",
1513 "sizespec", "modules_entry", "modules_items", "modules_item",
1514 "modules_module", "modules_path", "serverinfo_entry", "serverinfo_items",
1515 "serverinfo_item", "serverinfo_ssl_connection_method", "$@1",
1516 "method_types", "method_type_item", "serverinfo_ssl_certificate_file",
1517 "serverinfo_rsa_private_key_file", "serverinfo_name", "serverinfo_sid",
1518 "serverinfo_description", "serverinfo_network_name",
1519 "serverinfo_network_desc", "serverinfo_vhost", "serverinfo_vhost6",
1520 "serverinfo_max_clients", "serverinfo_hub", "admin_entry", "admin_items",
1521 "admin_item", "admin_name", "admin_email", "admin_description",
1522 "logging_entry", "logging_items", "logging_item", "logging_path",
1523 "logging_oper_log", "logging_fuserlog", "logging_ffailed_operlog",
1524 "logging_foperlog", "logging_foperspylog", "logging_fglinelog",
1525 "logging_fklinelog", "logging_ioerrlog", "logging_killlog",
1526 "logging_log_level", "logging_use_logging", "oper_entry", "$@2",
1527 "oper_name_b", "oper_items", "oper_item", "oper_name", "oper_name_t",
1528 "oper_user", "oper_password", "oper_encrypted",
1529 "oper_rsa_public_key_file", "oper_class", "oper_umodes", "$@3",
1530 "oper_umodes_items", "oper_umodes_item", "oper_global_kill",
1531 "oper_remote", "oper_remoteban", "oper_kline", "oper_xline",
1532 "oper_unkline", "oper_gline", "oper_nick_changes", "oper_die",
1533 "oper_rehash", "oper_admin", "oper_hidden_admin", "oper_hidden_oper",
1534 "oper_operwall", "oper_flags", "$@4", "oper_flags_items",
1535 "oper_flags_item", "$@5", "$@6", "oper_flags_item_atom", "class_entry",
1536 "$@7", "class_name_b", "class_items", "class_item", "class_name",
1537 "class_name_t", "class_ping_time", "class_ping_warning",
1538 "class_number_per_ip", "class_connectfreq", "class_max_number",
1539 "class_max_global", "class_max_local", "class_max_ident", "class_sendq",
1540 "class_cidr_bitlen_ipv4", "class_cidr_bitlen_ipv6",
1541 "class_number_per_cidr", "listen_entry", "$@8", "listen_flags", "$@9",
1542 "listen_flags_items", "listen_flags_item", "listen_items", "listen_item",
1543 "listen_port", "$@10", "port_items", "port_item", "listen_address",
1544 "listen_host", "auth_entry", "$@11", "auth_items", "auth_item",
1545 "auth_user", "auth_passwd", "auth_spoof_notice", "auth_class",
1546 "auth_encrypted", "auth_flags", "$@12", "auth_flags_items",
1547 "auth_flags_item", "$@13", "$@14", "auth_flags_item_atom",
1548 "auth_kline_exempt", "auth_need_ident", "auth_exceed_limit",
1549 "auth_can_flood", "auth_no_tilde", "auth_gline_exempt", "auth_spoof",
1550 "auth_redir_serv", "auth_redir_port", "auth_need_password", "resv_entry",
1551 "$@15", "resv_items", "resv_item", "resv_creason", "resv_channel",
1552 "resv_nick", "shared_entry", "$@16", "shared_items", "shared_item",
1553 "shared_name", "shared_user", "shared_type", "$@17", "shared_types",
1554 "shared_type_item", "cluster_entry", "$@18", "cluster_items",
1555 "cluster_item", "cluster_name", "cluster_type", "$@19", "cluster_types",
1556 "cluster_type_item", "connect_entry", "$@20", "connect_name_b",
1557 "connect_items", "connect_item", "connect_name", "connect_name_t",
1558 "connect_host", "connect_vhost", "connect_send_password",
1559 "connect_accept_password", "connect_port", "connect_aftype",
1560 "connect_fakename", "connect_flags", "$@21", "connect_flags_items",
1561 "connect_flags_item", "$@22", "$@23", "connect_flags_item_atom",
1562 "connect_rsa_public_key_file", "connect_encrypted", "connect_cryptlink",
1563 "connect_compressed", "connect_auto", "connect_topicburst",
1564 "connect_hub_mask", "connect_leaf_mask", "connect_class",
1565 "connect_cipher_preference", "kill_entry", "$@24", "kill_type", "$@25",
1566 "kill_type_items", "kill_type_item", "kill_items", "kill_item",
1567 "kill_user", "kill_reason", "deny_entry", "$@26", "deny_items",
1568 "deny_item", "deny_ip", "deny_reason", "exempt_entry", "exempt_items",
1569 "exempt_item", "exempt_ip", "gecos_entry", "$@27", "gecos_flags", "$@28",
1570 "gecos_flags_items", "gecos_flags_item", "gecos_items", "gecos_item",
1571 "gecos_name", "gecos_reason", "general_entry", "general_items",
1572 "general_item", "general_max_watch", "general_gline_min_cidr",
1573 "general_gline_min_cidr6", "general_burst_away",
1574 "general_use_whois_actually", "general_reject_hold_time",
1575 "general_tkline_expire_notices", "general_kill_chase_time_limit",
1576 "general_hide_spoof_ips", "general_ignore_bogus_ts",
1577 "general_disable_remote_commands", "general_failed_oper_notice",
1578 "general_anti_nick_flood", "general_max_nick_time",
1579 "general_max_nick_changes", "general_max_accept",
1580 "general_anti_spam_exit_message_time", "general_ts_warn_delta",
1581 "general_ts_max_delta", "general_havent_read_conf",
1582 "general_kline_with_reason", "general_kline_reason",
1583 "general_invisible_on_connect", "general_warn_no_nline",
1584 "general_stats_e_disabled", "general_stats_o_oper_only",
1585 "general_stats_P_oper_only", "general_stats_k_oper_only",
1586 "general_stats_i_oper_only", "general_pace_wait",
1587 "general_caller_id_wait", "general_opers_bypass_callerid",
1588 "general_pace_wait_simple", "general_short_motd",
1589 "general_no_oper_flood", "general_true_no_oper_flood",
1590 "general_oper_pass_resv", "general_message_locale", "general_idletime",
1591 "general_dots_in_ident", "general_max_targets", "general_servlink_path",
1592 "general_default_cipher_preference", "general_compression_level",
1593 "general_use_egd", "general_egdpool_path", "general_ping_cookie",
1594 "general_disable_auth", "general_throttle_time", "general_oper_umodes",
1595 "$@29", "umode_oitems", "umode_oitem", "general_oper_only_umodes",
1596 "$@30", "umode_items", "umode_item", "general_min_nonwildcard",
1597 "general_min_nonwildcard_simple", "general_default_floodcount",
1598 "general_client_flood", "general_dot_in_ip6_addr", "gline_entry", "$@31",
1599 "gline_items", "gline_item", "gline_enable", "gline_duration",
1600 "gline_logging", "$@32", "gline_logging_types",
1601 "gline_logging_type_item", "gline_user", "gline_server", "gline_action",
1602 "$@33", "gdeny_types", "gdeny_type_item", "channel_entry",
1603 "channel_items", "channel_item", "channel_disable_fake_channels",
1604 "channel_restrict_channels", "channel_disable_local_channels",
1605 "channel_use_except", "channel_use_invex", "channel_use_knock",
1606 "channel_knock_delay", "channel_knock_delay_channel",
1607 "channel_max_chans_per_user", "channel_quiet_on_ban", "channel_max_bans",
1608 "channel_default_split_user_count", "channel_default_split_server_count",
1609 "channel_no_create_on_split", "channel_no_join_on_split",
1610 "channel_burst_topicwho", "channel_jflood_count", "channel_jflood_time",
1611 "serverhide_entry", "serverhide_items", "serverhide_item",
1612 "serverhide_flatten_links", "serverhide_hide_servers",
1613 "serverhide_hidden_name", "serverhide_links_delay", "serverhide_hidden",
1614 "serverhide_disable_hidden", "serverhide_hide_server_ips", 0
1615 };
1616 #endif
1617
1618 # ifdef YYPRINT
1619 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
1620 token YYLEX-NUM. */
1621 static const yytype_uint16 yytoknum[] =
1622 {
1623 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1624 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1625 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1626 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1627 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1628 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1629 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
1630 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1631 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1632 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
1633 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
1634 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1635 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
1636 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
1637 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1638 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
1639 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
1640 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
1641 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
1642 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
1643 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
1644 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
1645 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
1646 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
1647 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
1648 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
1649 515, 516, 59, 125, 123, 61, 44
1650 };
1651 # endif
1652
1653 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
1654 static const yytype_uint16 yyr1[] =
1655 {
1656 0, 267, 268, 268, 269, 269, 269, 269, 269, 269,
1657 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
1658 269, 269, 269, 269, 269, 269, 270, 270, 271, 271,
1659 271, 271, 271, 271, 272, 272, 273, 273, 273, 273,
1660 274, 275, 275, 276, 276, 276, 277, 278, 279, 280,
1661 280, 281, 281, 281, 281, 281, 281, 281, 281, 281,
1662 281, 281, 281, 281, 283, 282, 284, 284, 285, 285,
1663 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
1664 296, 297, 298, 298, 299, 299, 299, 299, 300, 301,
1665 302, 303, 304, 304, 305, 305, 305, 305, 305, 305,
1666 305, 305, 305, 305, 305, 305, 305, 306, 307, 308,
1667 309, 310, 311, 312, 313, 314, 315, 316, 316, 316,
1668 316, 316, 316, 316, 317, 319, 318, 320, 320, 321,
1669 321, 322, 322, 322, 322, 322, 322, 322, 322, 322,
1670 322, 322, 322, 322, 322, 322, 322, 322, 322, 322,
1671 322, 322, 322, 322, 323, 324, 325, 326, 327, 328,
1672 329, 331, 330, 332, 332, 333, 333, 333, 333, 333,
1673 333, 333, 333, 333, 333, 333, 333, 333, 333, 333,
1674 333, 333, 333, 333, 334, 335, 336, 337, 338, 339,
1675 340, 341, 342, 343, 344, 345, 346, 347, 349, 348,
1676 350, 350, 352, 351, 353, 351, 354, 354, 354, 354,
1677 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
1678 354, 354, 356, 355, 357, 357, 358, 358, 359, 359,
1679 359, 359, 359, 359, 359, 359, 359, 359, 359, 359,
1680 359, 359, 360, 361, 362, 363, 364, 365, 366, 367,
1681 368, 369, 370, 371, 372, 373, 375, 374, 377, 376,
1682 378, 378, 379, 379, 379, 380, 380, 381, 381, 381,
1683 381, 381, 383, 382, 384, 384, 385, 385, 386, 387,
1684 389, 388, 390, 390, 391, 391, 391, 391, 391, 391,
1685 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
1686 391, 392, 393, 394, 395, 396, 398, 397, 399, 399,
1687 401, 400, 402, 400, 403, 403, 403, 403, 403, 403,
1688 403, 403, 403, 403, 404, 405, 406, 407, 408, 409,
1689 410, 411, 412, 413, 415, 414, 416, 416, 417, 417,
1690 417, 417, 418, 419, 420, 422, 421, 423, 423, 424,
1691 424, 424, 424, 425, 426, 428, 427, 429, 429, 430,
1692 430, 430, 430, 430, 430, 430, 430, 430, 430, 430,
1693 432, 431, 433, 433, 434, 434, 434, 435, 437, 436,
1694 438, 438, 439, 439, 439, 439, 439, 439, 439, 439,
1695 439, 439, 439, 441, 440, 442, 442, 443, 443, 444,
1696 444, 444, 444, 444, 444, 444, 444, 444, 444, 444,
1697 444, 444, 444, 444, 444, 444, 444, 444, 444, 445,
1698 446, 447, 448, 449, 450, 451, 452, 452, 453, 455,
1699 454, 456, 456, 458, 457, 459, 457, 460, 460, 460,
1700 460, 460, 461, 462, 463, 464, 465, 466, 467, 468,
1701 469, 470, 472, 471, 474, 473, 475, 475, 476, 477,
1702 477, 478, 478, 478, 478, 479, 480, 482, 481, 483,
1703 483, 484, 484, 484, 485, 486, 487, 488, 488, 489,
1704 489, 490, 492, 491, 494, 493, 495, 495, 496, 497,
1705 497, 498, 498, 498, 498, 499, 500, 501, 502, 502,
1706 503, 503, 503, 503, 503, 503, 503, 503, 503, 503,
1707 503, 503, 503, 503, 503, 503, 503, 503, 503, 503,
1708 503, 503, 503, 503, 503, 503, 503, 503, 503, 503,
1709 503, 503, 503, 503, 503, 503, 503, 503, 503, 503,
1710 503, 503, 503, 503, 503, 503, 503, 503, 503, 503,
1711 503, 503, 503, 503, 503, 503, 503, 504, 505, 506,
1712 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
1713 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
1714 527, 528, 529, 530, 531, 531, 532, 532, 533, 534,
1715 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
1716 545, 546, 547, 548, 549, 550, 551, 552, 554, 553,
1717 555, 555, 556, 556, 556, 556, 556, 556, 556, 556,
1718 556, 556, 556, 556, 556, 556, 556, 556, 556, 556,
1719 556, 558, 557, 559, 559, 560, 560, 560, 560, 560,
1720 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
1721 560, 560, 560, 560, 561, 562, 563, 564, 565, 567,
1722 566, 568, 568, 569, 569, 569, 569, 569, 569, 569,
1723 570, 571, 573, 572, 574, 574, 575, 575, 576, 577,
1724 579, 578, 580, 580, 581, 581, 582, 583, 583, 584,
1725 584, 584, 584, 584, 584, 584, 584, 584, 584, 584,
1726 584, 584, 584, 584, 584, 584, 584, 584, 585, 586,
1727 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
1728 597, 598, 599, 600, 601, 602, 603, 604, 604, 605,
1729 605, 605, 605, 605, 605, 605, 605, 606, 607, 608,
1730 609, 610, 611, 612
1731 };
1732
1733 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
1734 static const yytype_uint8 yyr2[] =
1735 {
1736 0, 2, 0, 2, 1, 1, 1, 1, 1, 1,
1737 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1738 1, 1, 1, 1, 2, 2, 0, 1, 2, 3,
1739 3, 3, 3, 3, 0, 1, 2, 3, 3, 3,
1740 5, 2, 1, 1, 1, 2, 4, 4, 5, 2,
1741 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1742 1, 1, 1, 2, 0, 5, 3, 1, 1, 1,
1743 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1744 4, 5, 2, 1, 1, 1, 1, 2, 4, 4,
1745 4, 5, 2, 1, 1, 1, 1, 1, 1, 1,
1746 1, 1, 1, 1, 1, 1, 2, 4, 4, 4,
1747 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1748 4, 4, 4, 4, 4, 0, 7, 0, 1, 2,
1749 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1750 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1751 1, 1, 1, 2, 4, 1, 4, 4, 4, 4,
1752 4, 0, 5, 3, 1, 1, 1, 1, 1, 1,
1753 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1754 1, 1, 1, 1, 4, 4, 4, 4, 4, 4,
1755 4, 4, 4, 4, 4, 4, 4, 4, 0, 5,
1756 3, 1, 0, 3, 0, 2, 1, 1, 1, 1,
1757 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1758 1, 1, 0, 7, 0, 1, 2, 1, 1, 1,
1759 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1760 1, 2, 4, 1, 4, 4, 4, 4, 4, 4,
1761 4, 4, 4, 4, 4, 4, 0, 6, 0, 5,
1762 3, 1, 1, 1, 1, 2, 1, 1, 1, 1,
1763 1, 2, 0, 5, 3, 1, 1, 3, 4, 4,
1764 0, 6, 2, 1, 1, 1, 1, 1, 1, 1,
1765 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1766 2, 4, 4, 4, 4, 4, 0, 5, 3, 1,
1767 0, 3, 0, 2, 1, 1, 1, 1, 1, 1,
1768 1, 1, 1, 1, 4, 4, 4, 4, 4, 4,
1769 4, 4, 4, 4, 0, 6, 2, 1, 1, 1,
1770 1, 2, 4, 4, 4, 0, 6, 2, 1, 1,
1771 1, 1, 2, 4, 4, 0, 5, 3, 1, 1,
1772 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1773 0, 6, 2, 1, 1, 1, 2, 4, 0, 5,
1774 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1775 1, 1, 1, 0, 7, 0, 1, 2, 1, 1,
1776 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1777 1, 1, 1, 1, 1, 1, 1, 1, 2, 4,
1778 1, 4, 4, 4, 4, 4, 4, 4, 4, 0,
1779 5, 3, 1, 0, 3, 0, 2, 1, 1, 1,
1780 1, 1, 4, 4, 4, 4, 4, 4, 4, 4,
1781 4, 4, 0, 6, 0, 5, 3, 1, 1, 2,
1782 1, 1, 1, 1, 1, 4, 4, 0, 6, 2,
1783 1, 1, 1, 1, 4, 4, 5, 2, 1, 1,
1784 1, 4, 0, 6, 0, 5, 3, 1, 1, 2,
1785 1, 1, 1, 1, 1, 4, 4, 5, 2, 1,
1786 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1787 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1788 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1789 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1790 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1791 1, 1, 1, 1, 1, 1, 1, 4, 4, 4,
1792 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1793 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1794 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1795 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1796 4, 4, 4, 4, 4, 4, 4, 4, 0, 5,
1797 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1798 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1799 1, 0, 5, 3, 1, 1, 1, 1, 1, 1,
1800 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1801 1, 1, 1, 1, 4, 4, 4, 4, 4, 0,
1802 6, 2, 1, 1, 1, 1, 1, 1, 1, 1,
1803 4, 4, 0, 5, 3, 1, 1, 1, 4, 4,
1804 0, 5, 3, 1, 1, 1, 5, 2, 1, 1,
1805 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1806 1, 1, 1, 1, 1, 1, 1, 1, 4, 4,
1807 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1808 4, 4, 4, 4, 4, 4, 5, 2, 1, 1,
1809 1, 1, 1, 1, 1, 1, 1, 4, 4, 4,
1810 4, 4, 4, 4
1811 };
1812
1813 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
1814 STATE-NUM when YYTABLE doesn't specify something else to do. Zero
1815 means the default is an error. */
1816 static const yytype_uint16 yydefact[] =
1817 {
1818 2, 0, 1, 0, 0, 0, 222, 393, 467, 0,
1819 482, 0, 659, 280, 452, 256, 0, 0, 125, 334,
1820 0, 0, 345, 370, 3, 23, 11, 4, 5, 6,
1821 8, 9, 10, 13, 14, 15, 16, 17, 18, 19,
1822 22, 20, 21, 7, 12, 24, 25, 0, 0, 224,
1823 395, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1824 0, 127, 0, 0, 0, 0, 0, 0, 0, 0,
1825 0, 0, 83, 84, 86, 85, 707, 0, 0, 0,
1826 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1827 0, 0, 0, 0, 0, 0, 688, 706, 701, 689,
1828 690, 691, 692, 694, 695, 696, 697, 693, 698, 699,
1829 700, 702, 703, 704, 705, 243, 0, 225, 420, 0,
1830 396, 0, 480, 0, 0, 478, 479, 0, 556, 0,
1831 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1832 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1833 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1834 0, 0, 631, 0, 608, 0, 0, 0, 0, 0,
1835 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1836 0, 0, 0, 0, 0, 0, 499, 555, 550, 551,
1837 548, 552, 553, 549, 510, 500, 501, 539, 502, 503,
1838 504, 505, 506, 507, 508, 509, 544, 511, 512, 513,
1839 514, 554, 516, 521, 517, 519, 518, 533, 534, 520,
1840 522, 523, 524, 525, 527, 526, 515, 529, 538, 540,
1841 541, 530, 531, 546, 547, 543, 532, 528, 536, 537,
1842 535, 542, 545, 0, 0, 0, 0, 0, 0, 0,
1843 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1844 0, 93, 94, 95, 98, 105, 99, 103, 100, 101,
1845 104, 102, 96, 97, 0, 0, 0, 0, 42, 43,
1846 44, 155, 0, 128, 0, 736, 0, 0, 0, 0,
1847 0, 0, 0, 0, 728, 729, 730, 734, 731, 733,
1848 732, 735, 0, 0, 0, 0, 0, 0, 0, 0,
1849 64, 0, 0, 0, 0, 0, 50, 62, 61, 58,
1850 51, 60, 54, 55, 56, 52, 59, 57, 53, 0,
1851 0, 87, 0, 0, 0, 0, 82, 0, 0, 0,
1852 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1853 0, 0, 0, 0, 0, 0, 687, 0, 0, 473,
1854 0, 0, 0, 470, 471, 472, 0, 0, 477, 494,
1855 0, 0, 484, 493, 0, 490, 491, 492, 0, 0,
1856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1857 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1858 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1859 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1860 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1861 0, 0, 0, 0, 0, 498, 669, 680, 0, 0,
1862 672, 0, 0, 0, 662, 663, 664, 665, 666, 667,
1863 668, 0, 0, 0, 0, 0, 306, 0, 0, 0,
1864 0, 0, 0, 0, 0, 0, 0, 0, 0, 283,
1865 284, 285, 294, 286, 299, 287, 288, 289, 290, 297,
1866 291, 292, 293, 295, 296, 298, 464, 0, 454, 0,
1867 463, 0, 460, 461, 462, 0, 258, 0, 0, 0,
1868 268, 0, 266, 267, 269, 270, 106, 0, 0, 0,
1869 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1870 92, 45, 0, 0, 0, 41, 0, 0, 0, 0,
1871 0, 0, 337, 338, 339, 340, 0, 0, 0, 0,
1872 0, 0, 0, 0, 727, 63, 0, 0, 0, 0,
1873 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
1874 0, 0, 355, 0, 0, 348, 349, 350, 351, 0,
1875 0, 378, 0, 373, 374, 375, 0, 0, 0, 81,
1876 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,
1877 0, 0, 0, 0, 0, 0, 0, 0, 0, 686,
1878 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1879 0, 0, 0, 0, 0, 227, 228, 231, 232, 234,
1880 235, 236, 237, 238, 239, 240, 229, 230, 233, 0,
1881 0, 0, 0, 0, 0, 0, 0, 0, 0, 429,
1882 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1883 398, 399, 400, 401, 402, 403, 405, 404, 406, 407,
1884 415, 412, 414, 413, 411, 417, 408, 409, 410, 416,
1885 0, 0, 0, 469, 0, 476, 0, 0, 0, 0,
1886 489, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1887 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1888 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1889 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1890 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1891 0, 0, 0, 34, 0, 0, 0, 0, 0, 0,
1892 497, 0, 0, 0, 0, 0, 0, 0, 661, 300,
1893 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1894 0, 0, 0, 0, 0, 0, 0, 282, 0, 0,
1895 0, 0, 459, 271, 0, 0, 0, 0, 0, 265,
1896 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1897 0, 0, 0, 0, 0, 0, 0, 0, 91, 0,
1898 0, 40, 0, 0, 0, 0, 0, 198, 0, 0,
1899 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1900 0, 161, 0, 0, 0, 0, 130, 131, 132, 133,
1901 150, 151, 137, 136, 138, 139, 145, 140, 141, 142,
1902 143, 144, 146, 147, 148, 134, 135, 149, 152, 341,
1903 0, 0, 0, 0, 336, 0, 0, 0, 0, 0,
1904 0, 0, 726, 0, 0, 0, 0, 0, 0, 0,
1905 0, 0, 0, 0, 0, 48, 352, 0, 0, 0,
1906 0, 347, 376, 0, 0, 0, 372, 90, 89, 88,
1907 723, 720, 719, 708, 710, 26, 26, 26, 26, 26,
1908 28, 27, 714, 715, 718, 716, 721, 722, 724, 725,
1909 717, 709, 711, 712, 713, 241, 0, 0, 0, 0,
1910 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1911 226, 418, 0, 0, 0, 0, 0, 0, 0, 0,
1912 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1913 0, 0, 397, 0, 0, 468, 481, 0, 0, 0,
1914 483, 569, 573, 560, 589, 602, 601, 656, 606, 567,
1915 658, 598, 604, 568, 558, 559, 576, 565, 597, 566,
1916 579, 564, 578, 577, 572, 571, 570, 599, 557, 596,
1917 654, 655, 593, 590, 635, 651, 652, 636, 637, 638,
1918 639, 646, 640, 649, 653, 642, 647, 643, 648, 641,
1919 645, 644, 650, 0, 634, 595, 612, 628, 629, 613,
1920 614, 615, 616, 623, 617, 626, 630, 619, 624, 620,
1921 625, 618, 622, 621, 627, 0, 611, 588, 591, 605,
1922 562, 600, 563, 592, 581, 586, 587, 584, 585, 582,
1923 583, 575, 574, 34, 34, 34, 36, 35, 657, 607,
1924 594, 603, 561, 580, 0, 0, 0, 0, 0, 0,
1925 660, 0, 0, 0, 0, 312, 0, 0, 0, 0,
1926 0, 0, 0, 0, 0, 0, 0, 281, 0, 0,
1927 0, 453, 0, 0, 0, 276, 272, 275, 257, 110,
1928 116, 114, 113, 115, 111, 112, 109, 117, 123, 118,
1929 122, 120, 121, 119, 108, 107, 124, 46, 47, 153,
1930 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1931 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1932 0, 0, 0, 129, 0, 0, 0, 335, 742, 737,
1933 741, 739, 743, 738, 740, 74, 80, 72, 76, 75,
1934 71, 70, 68, 69, 0, 67, 73, 79, 77, 78,
1935 0, 0, 0, 346, 0, 0, 371, 29, 30, 31,
1936 32, 33, 0, 0, 0, 0, 0, 0, 0, 0,
1937 0, 0, 0, 0, 0, 223, 0, 0, 0, 0,
1938 0, 0, 0, 0, 0, 0, 435, 0, 0, 0,
1939 0, 0, 0, 0, 0, 0, 394, 474, 475, 495,
1940 496, 488, 0, 487, 632, 0, 609, 0, 37, 38,
1941 39, 685, 684, 0, 683, 671, 670, 677, 676, 0,
1942 675, 679, 678, 327, 304, 305, 326, 310, 0, 309,
1943 0, 329, 325, 324, 333, 328, 302, 332, 331, 330,
1944 303, 301, 466, 458, 0, 457, 465, 263, 264, 262,
1945 0, 261, 279, 278, 0, 0, 0, 0, 0, 0,
1946 0, 204, 0, 0, 0, 0, 0, 0, 0, 0,
1947 0, 0, 0, 0, 0, 0, 0, 0, 0, 126,
1948 343, 344, 342, 65, 0, 353, 359, 365, 369, 368,
1949 367, 364, 360, 363, 366, 361, 362, 0, 358, 354,
1950 377, 382, 388, 392, 391, 390, 387, 383, 386, 389,
1951 384, 385, 0, 381, 253, 254, 247, 249, 251, 250,
1952 248, 242, 255, 246, 244, 245, 252, 424, 426, 427,
1953 446, 451, 450, 445, 444, 443, 428, 433, 0, 432,
1954 0, 421, 448, 449, 419, 425, 442, 423, 447, 422,
1955 485, 0, 633, 610, 681, 0, 673, 0, 0, 307,
1956 312, 318, 319, 315, 321, 317, 316, 323, 320, 322,
1957 314, 313, 455, 0, 259, 0, 277, 274, 273, 194,
1958 160, 192, 158, 202, 0, 201, 0, 190, 184, 195,
1959 196, 187, 154, 191, 157, 193, 185, 186, 159, 197,
1960 165, 181, 182, 166, 167, 168, 169, 176, 170, 179,
1961 183, 172, 177, 173, 178, 171, 175, 174, 180, 0,
1962 164, 189, 156, 188, 66, 356, 0, 379, 0, 0,
1963 430, 435, 439, 440, 437, 438, 441, 436, 486, 682,
1964 674, 311, 308, 456, 260, 0, 199, 204, 214, 212,
1965 221, 211, 206, 215, 219, 208, 216, 218, 213, 207,
1966 220, 217, 209, 210, 205, 162, 0, 357, 380, 434,
1967 431, 203, 200, 163
1968 };
1969
1970 /* YYDEFGOTO[NTERM-NUM]. */
1971 static const yytype_int16 yydefgoto[] =
1972 {
1973 -1, 1, 24, 900, 901, 1056, 1057, 25, 277, 278,
1974 279, 280, 26, 315, 316, 317, 553, 1164, 1165, 318,
1975 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
1976 27, 71, 72, 73, 74, 75, 28, 260, 261, 262,
1977 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
1978 273, 29, 61, 282, 825, 826, 827, 283, 828, 829,
1979 830, 831, 832, 833, 1138, 1439, 1440, 834, 835, 836,
1980 837, 838, 839, 840, 841, 842, 843, 844, 845, 846,
1981 847, 848, 1124, 1404, 1405, 1465, 1406, 1484, 30, 49,
1982 116, 614, 615, 616, 117, 617, 618, 619, 620, 621,
1983 622, 623, 624, 625, 626, 627, 628, 31, 58, 500,
1984 774, 1270, 1271, 501, 502, 503, 1276, 1096, 1097, 504,
1985 505, 32, 56, 468, 469, 470, 471, 472, 473, 474,
1986 475, 754, 1248, 1249, 1378, 1250, 1391, 476, 477, 478,
1987 479, 480, 481, 482, 483, 484, 485, 33, 62, 531,
1988 532, 533, 534, 535, 34, 65, 564, 565, 566, 567,
1989 568, 878, 1317, 1318, 35, 66, 572, 573, 574, 575,
1990 884, 1332, 1333, 36, 50, 119, 649, 650, 651, 120,
1991 652, 653, 654, 655, 656, 657, 658, 659, 941, 1358,
1992 1359, 1449, 1360, 1457, 660, 661, 662, 663, 664, 665,
1993 666, 667, 668, 669, 37, 57, 490, 769, 1264, 1265,
1994 491, 492, 493, 494, 38, 51, 362, 363, 364, 365,
1995 39, 124, 125, 126, 40, 53, 373, 678, 1222, 1223,
1996 374, 375, 376, 377, 41, 185, 186, 187, 188, 189,
1997 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
1998 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
1999 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
2000 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
2001 230, 231, 232, 233, 234, 235, 236, 413, 1035, 1036,
2002 237, 411, 1013, 1014, 238, 239, 240, 241, 242, 42,
2003 55, 443, 444, 445, 446, 447, 744, 1239, 1240, 448,
2004 449, 450, 741, 1233, 1234, 43, 95, 96, 97, 98,
2005 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
2006 109, 110, 111, 112, 113, 114, 44, 293, 294, 295,
2007 296, 297, 298, 299, 300, 301
2008 };
2009
2010 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
2011 STATE-NUM. */
2012 #define YYPACT_NINF -952
2013 static const yytype_int16 yypact[] =
2014 {
2015 -952, 888, -952, -233, -260, -258, -952, -952, -952, -255,
2016 -952, -253, -952, -952, -952, -952, -250, -237, -952, -952,
2017 -228, -226, -952, -952, -952, -952, -952, -952, -952, -952,
2018 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2019 -952, -952, -952, -952, -952, -952, -952, 302, 766, -136,
2020 -112, -199, 17, -193, 475, -190, -187, -173, -167, 702,
2021 2, -46, -149, 361, 520, -140, -134, -130, -121, -102,
2022 -84, 4, -952, -952, -952, -952, -952, -82, -77, -62,
2023 -57, -51, -33, -30, -25, -16, -5, -4, 20, 24,
2024 37, 40, 46, 49, 59, 286, -952, -952, -952, -952,
2025 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2026 -952, -952, -952, -952, -952, -952, 36, -952, -952, 63,
2027 -952, 19, -952, 70, 7, -952, -952, 159, -952, 71,
2028 76, 79, 84, 91, 98, 104, 105, 107, 108, 109,
2029 112, 113, 114, 116, 117, 118, 121, 125, 126, 130,
2030 132, 136, 140, 142, 144, 146, 148, 153, 155, 157,
2031 161, 164, -952, 165, -952, 169, 170, 171, 172, 173,
2032 181, 184, 185, 194, 196, 198, 199, 200, 201, 204,
2033 206, 209, 210, 212, 213, 23, -952, -952, -952, -952,
2034 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2035 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2036 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2037 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2038 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2039 -952, -952, -952, 552, 784, 93, 88, 217, 215, 216,
2040 220, 224, 225, 226, 227, 231, 232, 234, 235, 239,
2041 133, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2042 -952, -952, -952, -952, 243, 241, 245, 27, -952, -952,
2043 -952, -952, 247, -952, 25, -952, 248, 250, 252, 259,
2044 260, 261, 266, 45, -952, -952, -952, -952, -952, -952,
2045 -952, -952, 271, 269, 270, 272, 276, 278, 279, 280,
2046 -952, 281, 285, 289, 290, 303, -952, -952, -952, -952,
2047 -952, -952, -952, -952, -952, -952, -952, -952, -952, 56,
2048 62, -952, 357, 381, 396, 296, -952, 363, 434, 436,
2049 374, 375, 444, 444, 449, 450, 387, 390, 462, 444,
2050 397, 400, 403, 404, 405, 318, -952, 634, 703, -952,
2051 342, 343, 15, -952, -952, -952, 454, 348, -952, -952,
2052 346, 353, -952, -952, 158, -952, -952, -952, 414, 444,
2053 421, 444, 494, 476, 497, 433, 435, 437, 500, 483,
2054 440, 510, 513, 514, 451, 444, 452, 453, 516, 499,
2055 461, 529, 530, 444, 533, 542, 512, 543, 546, 481,
2056 482, 417, 484, 419, 444, 444, 486, 444, 536, 489,
2057 493, 495, -150, -141, 496, 498, 444, 444, 560, 444,
2058 501, 503, 509, 511, 455, -952, -952, -952, 446, 456,
2059 -952, 457, 459, 44, -952, -952, -952, -952, -952, -952,
2060 -952, 463, 467, 468, 485, 487, -952, 490, 506, 507,
2061 508, 519, 524, 526, 527, 531, 532, 544, 160, -952,
2062 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2063 -952, -952, -952, -952, -952, -952, -952, 548, -952, 550,
2064 -952, 12, -952, -952, -952, 465, -952, 551, 553, 554,
2065 -952, 14, -952, -952, -952, -952, -952, 557, 559, 561,
2066 564, 585, 586, 591, 592, 230, 596, 613, 577, 537,
2067 -952, -952, 640, 643, 549, -952, 574, 555, 556, 562,
2068 563, 32, -952, -952, -952, -952, 623, 630, 631, 665,
2069 632, 633, 444, 575, -952, -952, 681, 639, 685, 688,
2070 689, 690, 691, 582, 693, 565, 694, 695, 589, -952,
2071 590, 593, -952, 594, 9, -952, -952, -952, -952, 601,
2072 607, -952, 33, -952, -952, -952, 604, 614, 615, -952,
2073 616, 619, 620, 624, 625, 189, 628, 629, 635, 636,
2074 637, 638, 641, 642, 644, 646, 647, 651, 654, -952,
2075 656, 610, 618, 627, 655, 660, 661, 662, 663, 664,
2076 667, 669, 670, 671, 223, -952, -952, -952, -952, -952,
2077 -952, -952, -952, -952, -952, -952, -952, -952, -952, 657,
2078 672, 673, 674, 676, 679, 680, 683, 684, 686, -952,
2079 687, 696, 697, 699, 700, 701, 704, 705, 706, 238,
2080 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2081 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2082 730, 741, 659, -952, 668, -952, 746, 747, 707, 711,
2083 -952, 712, 713, 716, 717, 719, 720, 721, 722, 723,
2084 724, 725, 726, 727, 729, 731, 732, 733, 734, 735,
2085 736, 737, 738, 739, 740, 742, 743, 744, 745, 748,
2086 749, 750, 751, 752, 815, 753, 871, 754, 755, 767,
2087 771, 774, 775, 776, 777, 778, 779, 780, 781, 782,
2088 786, 790, 791, 315, 793, 794, 796, 797, 798, 800,
2089 -952, 799, 444, 756, 801, 795, 803, 805, -952, -952,
2090 760, 812, 769, 804, 807, 809, 864, 866, 869, 870,
2091 918, 566, 919, 927, 886, 934, 828, -952, 937, 829,
2092 938, 833, -952, -952, 831, 942, 943, 772, 837, -952,
2093 838, 842, 846, 847, 849, 850, 857, 860, 865, 867,
2094 868, 872, 873, 874, 875, 879, 883, 884, -952, 887,
2095 889, -952, 890, 861, 891, 892, 893, -952, 894, 895,
2096 896, 897, 898, 899, 900, 901, 902, 903, 904, 905,
2097 906, -952, 907, 909, 910, 149, -952, -952, -952, -952,
2098 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2099 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2100 976, 977, 978, 911, -952, 914, 915, 916, 917, 920,
2101 921, 922, -952, 923, 924, 925, 926, 928, 929, 930,
2102 -15, 931, 932, 933, 935, -952, -952, 993, 936, 998,
2103 940, -952, -952, 999, 939, 941, -952, -952, -952, -952,
2104 -952, -952, -952, -952, -952, 444, 444, 444, 444, 444,
2105 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2106 -952, -952, -952, -952, -952, -952, 813, 1022, 444, 1047,
2107 1048, 1056, 1063, 1043, 1066, 1067, 444, 444, 560, 944,
2108 -952, -952, 1050, -13, 1008, 1053, 1054, 1011, 1012, 1013,
2109 1058, 949, 1060, 1061, 1062, 1064, 1085, 1065, 1068, 1023,
2110 1069, 959, -952, 963, 964, -952, -952, 965, 966, 1070,
2111 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2112 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2113 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2114 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2115 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2116 -952, -952, -952, -245, -952, -952, -952, -952, -952, -952,
2117 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2118 -952, -952, -952, -952, -952, -202, -952, -952, -952, -952,
2119 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2120 -952, -952, -952, 560, 560, 560, -952, -952, -952, -952,
2121 -952, -952, -952, -952, 1, 967, 969, 11, 970, 971,
2122 -952, 972, 973, 974, 975, 1106, 979, 980, 981, 982,
2123 983, 984, 985, 986, 987, 988, 989, -952, 990, 1079,
2124 991, -952, 0, 992, 994, 650, 995, -952, -952, -952,
2125 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2126 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2127 1041, 1100, 1059, 1071, 997, 1072, 1073, 1074, 1075, 1076,
2128 1102, 1077, 1104, 1078, 1080, 1081, 1105, 1082, 1000, 1083,
2129 1108, 1084, 1002, -952, 1004, 1005, 1006, -952, -952, -952,
2130 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2131 -952, -952, -952, -952, -174, -952, -952, -952, -952, -952,
2132 1007, 534, 1016, -952, 1024, 621, -952, -952, -952, -952,
2133 -952, -952, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032,
2134 1033, 1034, 1035, 1036, 1037, -952, 1038, 1039, 1040, 1042,
2135 1044, 1045, 1046, 1049, 1051, 1052, 1152, 1055, 1057, 1086,
2136 1087, 1088, 1089, 1090, 1091, 1092, -952, -952, -952, -952,
2137 -952, -952, -148, -952, -952, 815, -952, 871, -952, -952,
2138 -952, -952, -952, -145, -952, -952, -952, -952, -952, -129,
2139 -952, -952, -952, -952, -952, -952, -952, -952, -117, -952,
2140 447, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2141 -952, -952, -952, -952, -35, -952, -952, -952, -952, -952,
2142 -10, -952, -952, -952, 1170, 772, 1093, 1094, 1095, 1096,
2143 1097, 1153, 1098, 1099, 1101, 1103, 1107, 1109, 1110, 1111,
2144 1112, 1113, 1114, 1115, 1116, 908, 1117, 1118, 1119, -952,
2145 -952, -952, -952, -952, -15, -952, -952, -952, -952, -952,
2146 -952, -952, -952, -952, -952, -952, -952, -8, -952, -952,
2147 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2148 -952, -952, 35, -952, -952, -952, -952, -952, -952, -952,
2149 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2150 -952, -952, -952, -952, -952, -952, -952, -952, 80, -952,
2151 13, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2152 -952, 1070, -952, -952, -952, 1, -952, 11, 447, -952,
2153 1106, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2154 -952, -952, -952, 1079, -952, 0, -952, -952, -952, -952,
2155 -952, -952, -952, -952, 89, -952, 366, -952, -952, -952,
2156 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2157 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2158 -952, -952, -952, -952, -952, -952, -952, -952, -952, 95,
2159 -952, -952, -952, -952, -952, -952, 534, -952, 621, 13,
2160 -952, 1152, -952, -952, -952, -952, -952, -952, -952, -952,
2161 -952, -952, -952, -952, -952, 366, -952, 1153, -952, -952,
2162 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2163 -952, -952, -952, -952, -952, -952, 908, -952, -952, -952,
2164 -952, -952, -952, -952
2165 };
2166
2167 /* YYPGOTO[NTERM-NUM]. */
2168 static const yytype_int16 yypgoto[] =
2169 {
2170 -952, -952, -952, -816, -342, -951, -426, -952, -952, 578,
2171 -952, -952, -952, -952, 541, -952, -952, -952, 5, -952,
2172 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2173 -952, -952, 1234, -952, -952, -952, -952, -952, 1122, -952,
2174 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2175 -952, -952, -952, -952, -952, 491, -952, -952, -952, -952,
2176 -952, -952, -952, -952, -952, -952, -176, -952, -952, -952,
2177 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2178 -952, -952, -952, -952, -155, -952, -952, -147, -952, -952,
2179 -952, -952, 708, -952, -952, -952, -952, -952, -952, -952,
2180 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2181 -952, -952, -80, -952, 819, -952, -952, -952, 48, -952,
2182 -952, -952, -952, -952, 853, -952, -952, -952, -952, -952,
2183 -952, -952, -952, -56, -952, -952, -53, -952, -952, -952,
2184 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2185 802, -952, -952, -952, -952, -952, -952, 762, -952, -952,
2186 -952, -952, -952, -119, -952, -952, -952, 757, -952, -952,
2187 -952, -952, -120, -952, -952, -952, -952, 682, -952, -952,
2188 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2189 -116, -952, -952, -115, -952, -952, -952, -952, -952, -952,
2190 -952, -952, -952, -952, -952, -952, -952, -952, -952, -63,
2191 -952, 841, -952, -952, -952, -952, -952, 1021, -952, -952,
2192 -952, -952, 1212, -952, -952, -952, -952, -952, -952, -34,
2193 -952, 968, -952, -952, -952, -952, 1154, -952, -952, -952,
2194 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2195 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2196 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2197 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2198 -952, -952, -952, -952, -952, -952, -952, -952, -952, 111,
2199 -952, -952, -952, 115, -952, -952, -952, -952, -952, -952,
2200 -952, -952, 945, -952, -952, -952, -952, -952, -36, -952,
2201 -952, -952, -952, -952, -32, -952, -952, 1249, -952, -952,
2202 -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2203 -952, -952, -952, -952, -952, -952, -952, -952, 1120, -952,
2204 -952, -952, -952, -952, -952, -952
2205 };
2206
2207 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
2208 positive, shift that token. If negative, reduce the rule which
2209 number is the opposite. If zero, do what YYDEFACT says.
2210 If YYTABLE_NINF, syntax error. */
2211 #define YYTABLE_NINF -1
2212 static const yytype_uint16 yytable[] =
2213 {
2214 586, 587, 734, 274, 47, 67, 48, 593, 122, 52,
2215 560, 54, 1231, 486, 59, 495, 359, 1224, 122, 115,
2216 359, 1225, 1237, 1452, 128, 1453, 527, 60, 274, 45,
2217 46, 129, 130, 527, 569, 131, 63, 682, 64, 684,
2218 1454, 68, 132, 118, 1455, 436, 285, 528, 437, 725,
2219 726, 133, 69, 698, 528, 134, 135, 560, 727, 728,
2220 1226, 706, 136, 569, 1227, 121, 137, 138, 139, 496,
2221 140, 127, 717, 718, 243, 720, 141, 244, 1267, 1177,
2222 1178, 1179, 1180, 1181, 731, 732, 286, 735, 1303, 495,
2223 438, 245, 1304, 439, 486, 142, 143, 246, 123, 497,
2224 144, 287, 1228, 1229, 1230, 498, 360, 145, 123, 281,
2225 360, 146, 147, 148, 1370, 284, 149, 1374, 1371, 150,
2226 151, 1375, 275, 288, 329, 289, 70, 290, 291, 152,
2227 330, 561, 331, 1376, 247, 153, 154, 1377, 155, 156,
2228 157, 158, 159, 496, 332, 1379, 292, 275, 440, 1380,
2229 802, 529, 276, 160, 803, 570, 1162, 1163, 529, 369,
2230 369, 451, 161, 333, 162, 163, 441, 164, 499, 487,
2231 165, 166, 361, 497, 167, 804, 361, 276, 561, 498,
2232 452, 334, 530, 337, 570, 168, 453, 805, 338, 530,
2233 248, 249, 250, 251, 252, 253, 254, 255, 562, 806,
2234 861, 488, 1232, 339, 807, 1197, 1198, 169, 340, 170,
2235 454, 455, 1238, 171, 341, 456, 808, 172, 173, 174,
2236 175, 176, 571, 809, 600, 177, 178, 1392, 810, 457,
2237 811, 1393, 342, 1268, 179, 343, 458, 1269, 256, 629,
2238 344, 630, 499, 812, 631, 562, 601, 602, 632, 345,
2239 487, 571, 1394, 603, 1445, 459, 1395, 1456, 1446, 563,
2240 346, 347, 489, 633, 634, 635, 180, 335, 181, 636,
2241 367, 813, 880, 257, 182, 771, 814, 778, 672, 183,
2242 370, 370, 488, 460, 184, 348, 434, 76, 637, 349,
2243 524, 461, 638, 639, 442, 853, 885, 1447, 815, 77,
2244 357, 1448, 350, 67, 302, 351, 563, 747, 543, 462,
2245 816, 352, 817, 818, 353, 371, 371, 819, 463, 464,
2246 78, 79, 585, 640, 354, 641, 80, 358, 81, 1053,
2247 1054, 1055, 604, 605, 606, 366, 378, 607, 642, 68,
2248 303, 379, 1450, 489, 380, 608, 1451, 372, 372, 381,
2249 69, 1466, 465, 466, 258, 1467, 382, 1485, 609, 610,
2250 643, 1486, 285, 383, 895, 896, 897, 898, 899, 384,
2251 385, 1468, 386, 387, 388, 611, 612, 389, 390, 391,
2252 820, 392, 393, 394, 82, 83, 395, 821, 259, 304,
2253 396, 397, 644, 84, 85, 398, 519, 399, 822, 823,
2254 1065, 400, 286, 613, 1469, 401, 645, 402, 824, 403,
2255 467, 404, 1142, 405, 86, 87, 1470, 287, 406, 646,
2256 407, 679, 408, 766, 70, 305, 409, 306, 307, 410,
2257 412, 88, 89, 1471, 414, 415, 416, 417, 418, 288,
2258 1472, 289, 90, 290, 291, 1473, 419, 1474, 733, 420,
2259 421, 91, 788, 789, 790, 791, 792, 793, 794, 422,
2260 1475, 423, 292, 424, 425, 426, 427, 1381, 1382, 428,
2261 308, 429, 309, 310, 430, 431, 128, 432, 433, 506,
2262 507, 508, 647, 129, 130, 509, 929, 131, 311, 510,
2263 511, 512, 513, 1476, 132, 648, 514, 515, 1383, 516,
2264 517, 951, 1194, 133, 518, 521, 522, 134, 135, 1477,
2265 523, 526, 576, 536, 136, 537, 1384, 538, 137, 138,
2266 139, 302, 140, 1385, 539, 540, 541, 1478, 141, 1479,
2267 1480, 542, 312, 545, 546, 547, 577, 548, 92, 93,
2268 94, 549, 1386, 550, 551, 552, 554, 142, 143, 355,
2269 555, 578, 144, 436, 556, 557, 437, 303, 579, 145,
2270 313, 314, 580, 146, 147, 148, 558, 581, 149, 582,
2271 1387, 150, 151, 583, 584, 802, 1184, 585, 1388, 803,
2272 599, 152, 588, 589, 1192, 1193, 590, 153, 154, 591,
2273 155, 156, 157, 158, 159, 592, 594, 1481, 438, 595,
2274 804, 439, 596, 597, 598, 160, 304, 670, 671, 674,
2275 675, 676, 805, 681, 161, 1482, 162, 163, 677, 164,
2276 683, 1389, 165, 166, 806, 1483, 167, 685, 1306, 807,
2277 687, 686, 688, 691, 689, 600, 690, 168, 692, 693,
2278 1390, 808, 305, 694, 306, 307, 695, 696, 809, 701,
2279 697, 699, 700, 810, 702, 811, 440, 601, 602, 169,
2280 703, 170, 704, 705, 603, 171, 707, 709, 812, 172,
2281 173, 174, 175, 176, 441, 708, 710, 177, 178, 711,
2282 712, 713, 714, 715, 716, 719, 179, 308, 722, 309,
2283 310, 721, 723, 733, 724, 729, 813, 730, 872, 1082,
2284 736, 814, 737, 247, 629, 311, 630, 1307, 738, 631,
2285 739, 742, 780, 632, 781, 1321, 782, 740, 180, 783,
2286 181, 743, 745, 815, 746, 749, 182, 773, 633, 634,
2287 635, 183, 750, 751, 636, 816, 184, 817, 818, 1308,
2288 784, 785, 819, 604, 605, 606, 786, 787, 607, 312,
2289 752, 795, 753, 637, 1309, 755, 608, 638, 639, 248,
2290 249, 250, 251, 252, 253, 254, 255, 76, 796, 609,
2291 610, 756, 757, 758, 1310, 1311, 797, 313, 314, 77,
2292 1312, 1313, 1314, 1315, 759, 451, 611, 612, 640, 760,
2293 641, 761, 762, 1316, 1322, 799, 763, 764, 800, 798,
2294 78, 79, 442, 642, 452, 820, 80, 256, 81, 765,
2295 453, 801, 821, 768, 613, 770, 775, 849, 776, 777,
2296 858, 850, 855, 822, 823, 643, 1323, 851, 852, 856,
2297 857, 859, 860, 824, 454, 455, 863, 862, 864, 456,
2298 865, 1324, 257, 866, 867, 868, 869, 870, 871, 873,
2299 874, 875, 876, 457, 1274, 525, 559, 644, 877, 879,
2300 458, 1325, 1326, 882, 82, 83, 887, 1327, 1328, 1329,
2301 1330, 645, 883, 84, 85, 916, 888, 889, 890, 459,
2302 1331, 891, 892, 917, 646, 953, 893, 894, 2, 3,
2303 902, 903, 918, 4, 86, 87, 954, 904, 905, 906,
2304 907, 957, 958, 908, 909, 1095, 910, 460, 911, 912,
2305 5, 88, 89, 913, 6, 461, 914, 7, 915, 931,
2306 919, 955, 90, 258, 8, 920, 921, 922, 923, 924,
2307 956, 91, 925, 462, 926, 927, 928, 932, 933, 934,
2308 9, 935, 463, 464, 936, 937, 1182, 647, 938, 939,
2309 1068, 940, 942, 10, 11, 1066, 12, 259, 1069, 1071,
2310 648, 943, 944, 13, 945, 946, 947, 1072, 1073, 948,
2311 949, 950, 959, 960, 961, 962, 465, 466, 963, 964,
2312 14, 965, 966, 967, 968, 969, 970, 971, 972, 973,
2313 15, 974, 16, 975, 976, 977, 978, 979, 980, 981,
2314 982, 983, 984, 1074, 985, 986, 987, 988, 1076, 17,
2315 989, 990, 991, 992, 993, 1015, 1037, 1038, 92, 93,
2316 94, 994, 995, 996, 997, 998, 18, 999, 1000, 1039,
2317 1001, 1002, 1003, 1040, 467, 1004, 1041, 1042, 1043, 1044,
2318 1045, 1046, 1047, 1048, 1049, 1005, 1006, 1007, 1050, 1008,
2319 1009, 1010, 1051, 1052, 1011, 1058, 1059, 1012, 1060, 1061,
2320 1062, 19, 1063, 1077, 1064, 1078, 1067, 1070, 1079, 1080,
2321 20, 21, 1075, 1081, 1083, 22, 23, 1016, 1017, 1018,
2322 1019, 1020, 1084, 1021, 1022, 1085, 1023, 1024, 1025, 1086,
2323 1087, 1026, 1088, 1090, 1089, 1091, 1092, 1093, 1094, 1098,
2324 1099, 1027, 1028, 1029, 1100, 1030, 1031, 1032, 1101, 1102,
2325 1033, 1103, 1104, 1034, 1420, 1421, 1422, 1423, 1424, 1105,
2326 1425, 1426, 1106, 1427, 1428, 1429, 1120, 1107, 1430, 1108,
2327 1109, 1144, 1145, 1146, 1110, 1111, 1112, 1113, 1431, 1432,
2328 1433, 1114, 1434, 1435, 1436, 1115, 1116, 1437, 1170, 1117,
2329 1438, 1118, 1119, 1172, 1174, 1183, 1121, 1122, 1123, 1125,
2330 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135,
2331 1136, 1137, 1139, 1147, 1140, 1141, 1148, 1149, 1150, 1151,
2332 1185, 1186, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1187,
2333 1159, 1160, 1161, 1166, 1167, 1168, 1188, 1169, 1189, 1190,
2334 1191, 1171, 1173, 1176, 1175, 1196, 1195, 1199, 1200, 1201,
2335 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1211, 1210,
2336 1212, 1216, 1214, 1213, 1215, 1217, 1218, 1219, 1220, 1235,
2337 1221, 1236, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1263,
2338 1277, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259,
2339 1260, 1261, 1262, 1266, 1272, 1278, 1273, 1287, 1279, 1289,
2340 1293, 1275, 1281, 1297, 1299, 1295, 1300, 1301, 1302, 1305,
2341 1280, 1282, 1283, 1284, 1285, 1286, 1288, 1290, 1319, 1291,
2342 1292, 1294, 1296, 1298, 1357, 1403, 1320, 1334, 1335, 1336,
2343 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346,
2344 1347, 1348, 1349, 1396, 1350, 336, 1351, 1352, 1353, 1444,
2345 1493, 1354, 1492, 1355, 1356, 1464, 1143, 1361, 1491, 1362,
2346 779, 767, 930, 1397, 1462, 1461, 881, 1487, 1488, 886,
2347 1463, 952, 772, 854, 1489, 1490, 368, 1458, 1373, 435,
2348 1372, 1460, 680, 1459, 356, 0, 0, 0, 1363, 1364,
2349 1365, 1366, 1367, 1368, 1369, 1398, 1399, 1400, 1401, 1402,
2350 1407, 1408, 0, 1409, 0, 1410, 0, 0, 0, 1411,
2351 0, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1441,
2352 1442, 1443, 520, 673, 0, 0, 0, 0, 748, 0,
2353 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2354 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2355 0, 0, 0, 544
2356 };
2357
2358 static const yytype_int16 yycheck[] =
2359 {
2360 342, 343, 428, 1, 264, 1, 264, 349, 1, 264,
2361 1, 264, 11, 1, 264, 1, 1, 262, 1, 155,
2362 1, 266, 11, 10, 1, 12, 1, 264, 1, 262,
2363 263, 8, 9, 1, 1, 12, 264, 379, 264, 381,
2364 27, 37, 19, 155, 31, 1, 1, 22, 4, 199,
2365 200, 28, 48, 395, 22, 32, 33, 1, 199, 200,
2366 262, 403, 39, 1, 266, 264, 43, 44, 45, 55,
2367 47, 264, 414, 415, 264, 417, 53, 264, 78, 895,
2368 896, 897, 898, 899, 426, 427, 41, 429, 262, 1,
2369 46, 264, 266, 49, 1, 72, 73, 264, 91, 85,
2370 77, 56, 1053, 1054, 1055, 91, 91, 84, 91, 155,
2371 91, 88, 89, 90, 262, 264, 93, 262, 266, 96,
2372 97, 266, 120, 78, 264, 80, 122, 82, 83, 106,
2373 264, 122, 262, 262, 1, 112, 113, 266, 115, 116,
2374 117, 118, 119, 55, 265, 262, 101, 120, 104, 266,
2375 1, 126, 150, 130, 5, 122, 171, 172, 126, 1,
2376 1, 1, 139, 265, 141, 142, 122, 144, 154, 157,
2377 147, 148, 157, 85, 151, 26, 157, 150, 122, 91,
2378 20, 265, 157, 265, 122, 162, 26, 38, 265, 157,
2379 57, 58, 59, 60, 61, 62, 63, 64, 189, 50,
2380 542, 189, 201, 265, 55, 218, 219, 184, 265, 186,
2381 50, 51, 201, 190, 265, 55, 67, 194, 195, 196,
2382 197, 198, 189, 74, 1, 202, 203, 262, 79, 69,
2383 81, 266, 265, 233, 211, 265, 76, 237, 105, 1,
2384 265, 3, 154, 94, 6, 189, 23, 24, 10, 265,
2385 157, 189, 262, 30, 262, 95, 266, 244, 266, 250,
2386 265, 265, 250, 25, 26, 27, 243, 263, 245, 31,
2387 263, 122, 263, 140, 251, 263, 127, 263, 263, 256,
2388 122, 122, 189, 123, 261, 265, 263, 1, 50, 265,
2389 263, 131, 54, 55, 250, 263, 263, 262, 149, 13,
2390 264, 266, 265, 1, 1, 265, 250, 263, 263, 149,
2391 161, 265, 163, 164, 265, 157, 157, 168, 158, 159,
2392 34, 35, 133, 85, 265, 87, 40, 264, 42, 14,
2393 15, 16, 109, 110, 111, 265, 265, 114, 100, 37,
2394 37, 265, 262, 250, 265, 122, 266, 189, 189, 265,
2395 48, 262, 192, 193, 221, 266, 265, 262, 135, 136,
2396 122, 266, 1, 265, 175, 176, 177, 178, 179, 265,
2397 265, 5, 265, 265, 265, 152, 153, 265, 265, 265,
2398 231, 265, 265, 265, 98, 99, 265, 238, 255, 86,
2399 265, 265, 154, 107, 108, 265, 263, 265, 249, 250,
2400 742, 265, 41, 180, 38, 265, 168, 265, 259, 265,
2401 250, 265, 263, 265, 128, 129, 50, 56, 265, 181,
2402 265, 263, 265, 263, 122, 122, 265, 124, 125, 265,
2403 265, 145, 146, 67, 265, 265, 265, 265, 265, 78,
2404 74, 80, 156, 82, 83, 79, 265, 81, 133, 265,
2405 265, 165, 222, 223, 224, 225, 226, 227, 228, 265,
2406 94, 265, 101, 265, 265, 265, 265, 20, 21, 265,
2407 167, 265, 169, 170, 265, 265, 1, 265, 265, 262,
2408 265, 265, 244, 8, 9, 265, 263, 12, 185, 265,
2409 265, 265, 265, 127, 19, 257, 265, 265, 51, 265,
2410 265, 263, 928, 28, 265, 262, 265, 32, 33, 143,
2411 265, 264, 155, 265, 39, 265, 69, 265, 43, 44,
2412 45, 1, 47, 76, 265, 265, 265, 161, 53, 163,
2413 164, 265, 229, 262, 265, 265, 155, 265, 252, 253,
2414 254, 265, 95, 265, 265, 265, 265, 72, 73, 263,
2415 265, 155, 77, 1, 265, 265, 4, 37, 262, 84,
2416 257, 258, 199, 88, 89, 90, 263, 133, 93, 133,
2417 123, 96, 97, 199, 199, 1, 918, 133, 131, 5,
2418 262, 106, 133, 133, 926, 927, 199, 112, 113, 199,
2419 115, 116, 117, 118, 119, 133, 199, 231, 46, 199,
2420 26, 49, 199, 199, 199, 130, 86, 265, 265, 155,
2421 262, 265, 38, 199, 139, 249, 141, 142, 265, 144,
2422 199, 174, 147, 148, 50, 259, 151, 133, 94, 55,
2423 133, 155, 199, 133, 199, 1, 199, 162, 155, 199,
2424 193, 67, 122, 133, 124, 125, 133, 133, 74, 133,
2425 199, 199, 199, 79, 155, 81, 104, 23, 24, 184,
2426 199, 186, 133, 133, 30, 190, 133, 155, 94, 194,
2427 195, 196, 197, 198, 122, 133, 133, 202, 203, 133,
2428 199, 199, 265, 199, 265, 199, 211, 167, 199, 169,
2429 170, 155, 199, 133, 199, 199, 122, 199, 133, 133,
2430 199, 127, 199, 1, 1, 185, 3, 173, 199, 6,
2431 199, 265, 155, 10, 155, 94, 155, 262, 243, 155,
2432 245, 265, 265, 149, 265, 262, 251, 262, 25, 26,
2433 27, 256, 265, 265, 31, 161, 261, 163, 164, 205,
2434 155, 155, 168, 109, 110, 111, 155, 155, 114, 229,
2435 265, 155, 265, 50, 220, 265, 122, 54, 55, 57,
2436 58, 59, 60, 61, 62, 63, 64, 1, 155, 135,
2437 136, 265, 265, 265, 240, 241, 199, 257, 258, 13,
2438 246, 247, 248, 249, 265, 1, 152, 153, 85, 265,
2439 87, 265, 265, 259, 173, 155, 265, 265, 155, 262,
2440 34, 35, 250, 100, 20, 231, 40, 105, 42, 265,
2441 26, 262, 238, 265, 180, 265, 265, 262, 265, 265,
2442 155, 265, 199, 249, 250, 122, 205, 265, 265, 199,
2443 199, 199, 199, 259, 50, 51, 155, 262, 199, 55,
2444 155, 220, 140, 155, 155, 155, 155, 265, 155, 155,
2445 155, 262, 262, 69, 204, 277, 315, 154, 265, 265,
2446 76, 240, 241, 262, 98, 99, 262, 246, 247, 248,
2447 249, 168, 265, 107, 108, 265, 262, 262, 262, 95,
2448 259, 262, 262, 265, 181, 155, 262, 262, 0, 1,
2449 262, 262, 265, 5, 128, 129, 155, 262, 262, 262,
2450 262, 155, 155, 262, 262, 133, 262, 123, 262, 262,
2451 22, 145, 146, 262, 26, 131, 262, 29, 262, 262,
2452 265, 262, 156, 221, 36, 265, 265, 265, 265, 265,
2453 262, 165, 265, 149, 265, 265, 265, 265, 265, 265,
2454 52, 265, 158, 159, 265, 265, 133, 244, 265, 265,
2455 155, 265, 265, 65, 66, 199, 68, 255, 155, 199,
2456 257, 265, 265, 75, 265, 265, 265, 155, 199, 265,
2457 265, 265, 265, 262, 262, 262, 192, 193, 262, 262,
2458 92, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2459 102, 262, 104, 262, 262, 262, 262, 262, 262, 262,
2460 262, 262, 262, 199, 262, 262, 262, 262, 199, 121,
2461 262, 262, 262, 262, 262, 262, 262, 262, 252, 253,
2462 254, 206, 207, 208, 209, 210, 138, 212, 213, 262,
2463 215, 216, 217, 262, 250, 220, 262, 262, 262, 262,
2464 262, 262, 262, 262, 262, 230, 231, 232, 262, 234,
2465 235, 236, 262, 262, 239, 262, 262, 242, 262, 262,
2466 262, 173, 262, 199, 265, 199, 265, 262, 199, 199,
2467 182, 183, 265, 155, 155, 187, 188, 206, 207, 208,
2468 209, 210, 155, 212, 213, 199, 215, 216, 217, 155,
2469 262, 220, 155, 155, 265, 262, 265, 155, 155, 262,
2470 262, 230, 231, 232, 262, 234, 235, 236, 262, 262,
2471 239, 262, 262, 242, 206, 207, 208, 209, 210, 262,
2472 212, 213, 262, 215, 216, 217, 265, 262, 220, 262,
2473 262, 155, 155, 155, 262, 262, 262, 262, 230, 231,
2474 232, 262, 234, 235, 236, 262, 262, 239, 155, 262,
2475 242, 262, 262, 155, 155, 133, 265, 265, 265, 265,
2476 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2477 265, 265, 265, 262, 265, 265, 262, 262, 262, 262,
2478 133, 133, 262, 262, 262, 262, 262, 262, 262, 133,
2479 262, 262, 262, 262, 262, 262, 133, 262, 155, 133,
2480 133, 265, 262, 262, 265, 155, 262, 199, 155, 155,
2481 199, 199, 199, 155, 265, 155, 155, 155, 133, 155,
2482 155, 262, 199, 155, 155, 262, 262, 262, 262, 262,
2483 160, 262, 262, 262, 262, 262, 262, 262, 132, 160,
2484 199, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2485 262, 262, 262, 262, 262, 155, 262, 155, 199, 155,
2486 155, 266, 265, 155, 262, 265, 262, 262, 262, 262,
2487 199, 199, 199, 199, 199, 199, 199, 199, 262, 199,
2488 199, 199, 199, 199, 132, 132, 262, 262, 262, 262,
2489 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2490 262, 262, 262, 133, 262, 71, 262, 262, 262, 1304,
2491 1486, 262, 1467, 262, 262, 1395, 825, 262, 1465, 262,
2492 501, 468, 614, 1275, 1380, 1378, 564, 1446, 1448, 572,
2493 1393, 649, 491, 531, 1449, 1451, 124, 1371, 1227, 185,
2494 1225, 1377, 374, 1375, 95, -1, -1, -1, 262, 262,
2495 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2496 262, 262, -1, 262, -1, 262, -1, -1, -1, 262,
2497 -1, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2498 262, 262, 260, 362, -1, -1, -1, -1, 443, -1,
2499 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2500 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2501 -1, -1, -1, 293
2502 };
2503
2504 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
2505 symbol of state STATE-NUM. */
2506 static const yytype_uint16 yystos[] =
2507 {
2508 0, 268, 0, 1, 5, 22, 26, 29, 36, 52,
2509 65, 66, 68, 75, 92, 102, 104, 121, 138, 173,
2510 182, 183, 187, 188, 269, 274, 279, 297, 303, 318,
2511 355, 374, 388, 414, 421, 431, 440, 471, 481, 487,
2512 491, 501, 566, 582, 603, 262, 263, 264, 264, 356,
2513 441, 482, 264, 492, 264, 567, 389, 472, 375, 264,
2514 264, 319, 415, 264, 264, 422, 432, 1, 37, 48,
2515 122, 298, 299, 300, 301, 302, 1, 13, 34, 35,
2516 40, 42, 98, 99, 107, 108, 128, 129, 145, 146,
2517 156, 165, 252, 253, 254, 583, 584, 585, 586, 587,
2518 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
2519 598, 599, 600, 601, 602, 155, 357, 361, 155, 442,
2520 446, 264, 1, 91, 488, 489, 490, 264, 1, 8,
2521 9, 12, 19, 28, 32, 33, 39, 43, 44, 45,
2522 47, 53, 72, 73, 77, 84, 88, 89, 90, 93,
2523 96, 97, 106, 112, 113, 115, 116, 117, 118, 119,
2524 130, 139, 141, 142, 144, 147, 148, 151, 162, 184,
2525 186, 190, 194, 195, 196, 197, 198, 202, 203, 211,
2526 243, 245, 251, 256, 261, 502, 503, 504, 505, 506,
2527 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
2528 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
2529 527, 528, 529, 530, 531, 532, 533, 534, 535, 536,
2530 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
2531 547, 548, 549, 550, 551, 552, 553, 557, 561, 562,
2532 563, 564, 565, 264, 264, 264, 264, 1, 57, 58,
2533 59, 60, 61, 62, 63, 64, 105, 140, 221, 255,
2534 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
2535 314, 315, 316, 317, 1, 120, 150, 275, 276, 277,
2536 278, 155, 320, 324, 264, 1, 41, 56, 78, 80,
2537 82, 83, 101, 604, 605, 606, 607, 608, 609, 610,
2538 611, 612, 1, 37, 86, 122, 124, 125, 167, 169,
2539 170, 185, 229, 257, 258, 280, 281, 282, 286, 287,
2540 288, 289, 290, 291, 292, 293, 294, 295, 296, 264,
2541 264, 262, 265, 265, 265, 263, 299, 265, 265, 265,
2542 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2543 265, 265, 265, 265, 265, 263, 584, 264, 264, 1,
2544 91, 157, 483, 484, 485, 486, 265, 263, 489, 1,
2545 122, 157, 189, 493, 497, 498, 499, 500, 265, 265,
2546 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2547 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2548 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2549 265, 558, 265, 554, 265, 265, 265, 265, 265, 265,
2550 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2551 265, 265, 265, 265, 263, 503, 1, 4, 46, 49,
2552 104, 122, 250, 568, 569, 570, 571, 572, 576, 577,
2553 578, 1, 20, 26, 50, 51, 55, 69, 76, 95,
2554 123, 131, 149, 158, 159, 192, 193, 250, 390, 391,
2555 392, 393, 394, 395, 396, 397, 404, 405, 406, 407,
2556 408, 409, 410, 411, 412, 413, 1, 157, 189, 250,
2557 473, 477, 478, 479, 480, 1, 55, 85, 91, 154,
2558 376, 380, 381, 382, 386, 387, 262, 265, 265, 265,
2559 265, 265, 265, 265, 265, 265, 265, 265, 265, 263,
2560 305, 262, 265, 265, 263, 276, 264, 1, 22, 126,
2561 157, 416, 417, 418, 419, 420, 265, 265, 265, 265,
2562 265, 265, 265, 263, 605, 262, 265, 265, 265, 265,
2563 265, 265, 265, 283, 265, 265, 265, 265, 263, 281,
2564 1, 122, 189, 250, 423, 424, 425, 426, 427, 1,
2565 122, 189, 433, 434, 435, 436, 155, 155, 155, 262,
2566 199, 133, 133, 199, 199, 133, 271, 271, 133, 133,
2567 199, 199, 133, 271, 199, 199, 199, 199, 199, 262,
2568 1, 23, 24, 30, 109, 110, 111, 114, 122, 135,
2569 136, 152, 153, 180, 358, 359, 360, 362, 363, 364,
2570 365, 366, 367, 368, 369, 370, 371, 372, 373, 1,
2571 3, 6, 10, 25, 26, 27, 31, 50, 54, 55,
2572 85, 87, 100, 122, 154, 168, 181, 244, 257, 443,
2573 444, 445, 447, 448, 449, 450, 451, 452, 453, 454,
2574 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
2575 265, 265, 263, 484, 155, 262, 265, 265, 494, 263,
2576 498, 199, 271, 199, 271, 133, 155, 133, 199, 199,
2577 199, 133, 155, 199, 133, 133, 133, 199, 271, 199,
2578 199, 133, 155, 199, 133, 133, 271, 133, 133, 155,
2579 133, 133, 199, 199, 265, 199, 265, 271, 271, 199,
2580 271, 155, 199, 199, 199, 199, 200, 199, 200, 199,
2581 199, 271, 271, 133, 273, 271, 199, 199, 199, 199,
2582 262, 579, 265, 265, 573, 265, 265, 263, 569, 262,
2583 265, 265, 265, 265, 398, 265, 265, 265, 265, 265,
2584 265, 265, 265, 265, 265, 265, 263, 391, 265, 474,
2585 265, 263, 478, 262, 377, 265, 265, 265, 263, 381,
2586 155, 155, 155, 155, 155, 155, 155, 155, 222, 223,
2587 224, 225, 226, 227, 228, 155, 155, 199, 262, 155,
2588 155, 262, 1, 5, 26, 38, 50, 55, 67, 74,
2589 79, 81, 94, 122, 127, 149, 161, 163, 164, 168,
2590 231, 238, 249, 250, 259, 321, 322, 323, 325, 326,
2591 327, 328, 329, 330, 334, 335, 336, 337, 338, 339,
2592 340, 341, 342, 343, 344, 345, 346, 347, 348, 262,
2593 265, 265, 265, 263, 417, 199, 199, 199, 155, 199,
2594 199, 271, 262, 155, 199, 155, 155, 155, 155, 155,
2595 265, 155, 133, 155, 155, 262, 262, 265, 428, 265,
2596 263, 424, 262, 265, 437, 263, 434, 262, 262, 262,
2597 262, 262, 262, 262, 262, 175, 176, 177, 178, 179,
2598 270, 271, 262, 262, 262, 262, 262, 262, 262, 262,
2599 262, 262, 262, 262, 262, 262, 265, 265, 265, 265,
2600 265, 265, 265, 265, 265, 265, 265, 265, 265, 263,
2601 359, 262, 265, 265, 265, 265, 265, 265, 265, 265,
2602 265, 455, 265, 265, 265, 265, 265, 265, 265, 265,
2603 265, 263, 444, 155, 155, 262, 262, 155, 155, 265,
2604 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2605 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2606 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2607 262, 262, 262, 262, 206, 207, 208, 209, 210, 212,
2608 213, 215, 216, 217, 220, 230, 231, 232, 234, 235,
2609 236, 239, 242, 559, 560, 262, 206, 207, 208, 209,
2610 210, 212, 213, 215, 216, 217, 220, 230, 231, 232,
2611 234, 235, 236, 239, 242, 555, 556, 262, 262, 262,
2612 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2613 262, 262, 262, 14, 15, 16, 272, 273, 262, 262,
2614 262, 262, 262, 262, 265, 271, 199, 265, 155, 155,
2615 262, 199, 155, 199, 199, 265, 199, 199, 199, 199,
2616 199, 155, 133, 155, 155, 199, 155, 262, 155, 265,
2617 155, 262, 265, 155, 155, 133, 384, 385, 262, 262,
2618 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2619 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2620 265, 265, 265, 265, 349, 265, 265, 265, 265, 265,
2621 265, 265, 265, 265, 265, 265, 265, 265, 331, 265,
2622 265, 265, 263, 322, 155, 155, 155, 262, 262, 262,
2623 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2624 262, 262, 171, 172, 284, 285, 262, 262, 262, 262,
2625 155, 265, 155, 262, 155, 265, 262, 270, 270, 270,
2626 270, 270, 133, 133, 271, 133, 133, 133, 133, 155,
2627 133, 133, 271, 271, 273, 262, 155, 218, 219, 199,
2628 155, 155, 199, 199, 199, 155, 265, 155, 155, 155,
2629 155, 133, 155, 155, 199, 155, 262, 262, 262, 262,
2630 262, 160, 495, 496, 262, 266, 262, 266, 272, 272,
2631 272, 11, 201, 580, 581, 262, 262, 11, 201, 574,
2632 575, 262, 262, 262, 262, 262, 262, 132, 399, 400,
2633 402, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2634 262, 262, 262, 160, 475, 476, 262, 78, 233, 237,
2635 378, 379, 262, 262, 204, 266, 383, 199, 155, 199,
2636 199, 265, 199, 199, 199, 199, 199, 155, 199, 155,
2637 199, 199, 199, 155, 199, 265, 199, 155, 199, 262,
2638 262, 262, 262, 262, 266, 262, 94, 173, 205, 220,
2639 240, 241, 246, 247, 248, 249, 259, 429, 430, 262,
2640 262, 94, 173, 205, 220, 240, 241, 246, 247, 248,
2641 249, 259, 438, 439, 262, 262, 262, 262, 262, 262,
2642 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2643 262, 262, 262, 262, 262, 262, 262, 132, 456, 457,
2644 459, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2645 262, 266, 560, 556, 262, 266, 262, 266, 401, 262,
2646 266, 20, 21, 51, 69, 76, 95, 123, 131, 174,
2647 193, 403, 262, 266, 262, 266, 133, 385, 262, 262,
2648 262, 262, 262, 132, 350, 351, 353, 262, 262, 262,
2649 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2650 206, 207, 208, 209, 210, 212, 213, 215, 216, 217,
2651 220, 230, 231, 232, 234, 235, 236, 239, 242, 332,
2652 333, 262, 262, 262, 285, 262, 266, 262, 266, 458,
2653 262, 266, 10, 12, 27, 31, 244, 460, 496, 581,
2654 575, 403, 400, 476, 379, 352, 262, 266, 5, 38,
2655 50, 67, 74, 79, 81, 94, 127, 143, 161, 163,
2656 164, 231, 249, 259, 354, 262, 266, 430, 439, 460,
2657 457, 354, 351, 333
2658 };
2659
2660 #define yyerrok (yyerrstatus = 0)
2661 #define yyclearin (yychar = YYEMPTY)
2662 #define YYEMPTY (-2)
2663 #define YYEOF 0
2664
2665 #define YYACCEPT goto yyacceptlab
2666 #define YYABORT goto yyabortlab
2667 #define YYERROR goto yyerrorlab
2668
2669
2670 /* Like YYERROR except do call yyerror. This remains here temporarily
2671 to ease the transition to the new meaning of YYERROR, for GCC.
2672 Once GCC version 2 has supplanted version 1, this can go. */
2673
2674 #define YYFAIL goto yyerrlab
2675
2676 #define YYRECOVERING() (!!yyerrstatus)
2677
2678 #define YYBACKUP(Token, Value) \
2679 do \
2680 if (yychar == YYEMPTY && yylen == 1) \
2681 { \
2682 yychar = (Token); \
2683 yylval = (Value); \
2684 yytoken = YYTRANSLATE (yychar); \
2685 YYPOPSTACK (1); \
2686 goto yybackup; \
2687 } \
2688 else \
2689 { \
2690 yyerror (YY_("syntax error: cannot back up")); \
2691 YYERROR; \
2692 } \
2693 while (YYID (0))
2694
2695
2696 #define YYTERROR 1
2697 #define YYERRCODE 256
2698
2699
2700 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2701 If N is 0, then set CURRENT to the empty location which ends
2702 the previous symbol: RHS[0] (always defined). */
2703
2704 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
2705 #ifndef YYLLOC_DEFAULT
2706 # define YYLLOC_DEFAULT(Current, Rhs, N) \
2707 do \
2708 if (YYID (N)) \
2709 { \
2710 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
2711 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
2712 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
2713 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
2714 } \
2715 else \
2716 { \
2717 (Current).first_line = (Current).last_line = \
2718 YYRHSLOC (Rhs, 0).last_line; \
2719 (Current).first_column = (Current).last_column = \
2720 YYRHSLOC (Rhs, 0).last_column; \
2721 } \
2722 while (YYID (0))
2723 #endif
2724
2725
2726 /* YY_LOCATION_PRINT -- Print the location on the stream.
2727 This macro was not mandated originally: define only if we know
2728 we won't break user code: when these are the locations we know. */
2729
2730 #ifndef YY_LOCATION_PRINT
2731 # if YYLTYPE_IS_TRIVIAL
2732 # define YY_LOCATION_PRINT(File, Loc) \
2733 fprintf (File, "%d.%d-%d.%d", \
2734 (Loc).first_line, (Loc).first_column, \
2735 (Loc).last_line, (Loc).last_column)
2736 # else
2737 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2738 # endif
2739 #endif
2740
2741
2742 /* YYLEX -- calling `yylex' with the right arguments. */
2743
2744 #ifdef YYLEX_PARAM
2745 # define YYLEX yylex (YYLEX_PARAM)
2746 #else
2747 # define YYLEX yylex ()
2748 #endif
2749
2750 /* Enable debugging if requested. */
2751 #if YYDEBUG
2752
2753 # ifndef YYFPRINTF
2754 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2755 # define YYFPRINTF fprintf
2756 # endif
2757
2758 # define YYDPRINTF(Args) \
2759 do { \
2760 if (yydebug) \
2761 YYFPRINTF Args; \
2762 } while (YYID (0))
2763
2764 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
2765 do { \
2766 if (yydebug) \
2767 { \
2768 YYFPRINTF (stderr, "%s ", Title); \
2769 yy_symbol_print (stderr, \
2770 Type, Value); \
2771 YYFPRINTF (stderr, "\n"); \
2772 } \
2773 } while (YYID (0))
2774
2775
2776 /*--------------------------------.
2777 | Print this symbol on YYOUTPUT. |
2778 `--------------------------------*/
2779
2780 /*ARGSUSED*/
2781 #if (defined __STDC__ || defined __C99__FUNC__ \
2782 || defined __cplusplus || defined _MSC_VER)
2783 static void
2784 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2785 #else
2786 static void
2787 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
2788 FILE *yyoutput;
2789 int yytype;
2790 YYSTYPE const * const yyvaluep;
2791 #endif
2792 {
2793 if (!yyvaluep)
2794 return;
2795 # ifdef YYPRINT
2796 if (yytype < YYNTOKENS)
2797 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
2798 # else
2799 YYUSE (yyoutput);
2800 # endif
2801 switch (yytype)
2802 {
2803 default:
2804 break;
2805 }
2806 }
2807
2808
2809 /*--------------------------------.
2810 | Print this symbol on YYOUTPUT. |
2811 `--------------------------------*/
2812
2813 #if (defined __STDC__ || defined __C99__FUNC__ \
2814 || defined __cplusplus || defined _MSC_VER)
2815 static void
2816 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2817 #else
2818 static void
2819 yy_symbol_print (yyoutput, yytype, yyvaluep)
2820 FILE *yyoutput;
2821 int yytype;
2822 YYSTYPE const * const yyvaluep;
2823 #endif
2824 {
2825 if (yytype < YYNTOKENS)
2826 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
2827 else
2828 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
2829
2830 yy_symbol_value_print (yyoutput, yytype, yyvaluep);
2831 YYFPRINTF (yyoutput, ")");
2832 }
2833
2834 /*------------------------------------------------------------------.
2835 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2836 | TOP (included). |
2837 `------------------------------------------------------------------*/
2838
2839 #if (defined __STDC__ || defined __C99__FUNC__ \
2840 || defined __cplusplus || defined _MSC_VER)
2841 static void
2842 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
2843 #else
2844 static void
2845 yy_stack_print (yybottom, yytop)
2846 yytype_int16 *yybottom;
2847 yytype_int16 *yytop;
2848 #endif
2849 {
2850 YYFPRINTF (stderr, "Stack now");
2851 for (; yybottom <= yytop; yybottom++)
2852 {
2853 int yybot = *yybottom;
2854 YYFPRINTF (stderr, " %d", yybot);
2855 }
2856 YYFPRINTF (stderr, "\n");
2857 }
2858
2859 # define YY_STACK_PRINT(Bottom, Top) \
2860 do { \
2861 if (yydebug) \
2862 yy_stack_print ((Bottom), (Top)); \
2863 } while (YYID (0))
2864
2865
2866 /*------------------------------------------------.
2867 | Report that the YYRULE is going to be reduced. |
2868 `------------------------------------------------*/
2869
2870 #if (defined __STDC__ || defined __C99__FUNC__ \
2871 || defined __cplusplus || defined _MSC_VER)
2872 static void
2873 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
2874 #else
2875 static void
2876 yy_reduce_print (yyvsp, yyrule)
2877 YYSTYPE *yyvsp;
2878 int yyrule;
2879 #endif
2880 {
2881 int yynrhs = yyr2[yyrule];
2882 int yyi;
2883 unsigned long int yylno = yyrline[yyrule];
2884 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
2885 yyrule - 1, yylno);
2886 /* The symbols being reduced. */
2887 for (yyi = 0; yyi < yynrhs; yyi++)
2888 {
2889 YYFPRINTF (stderr, " $%d = ", yyi + 1);
2890 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
2891 &(yyvsp[(yyi + 1) - (yynrhs)])
2892 );
2893 YYFPRINTF (stderr, "\n");
2894 }
2895 }
2896
2897 # define YY_REDUCE_PRINT(Rule) \
2898 do { \
2899 if (yydebug) \
2900 yy_reduce_print (yyvsp, Rule); \
2901 } while (YYID (0))
2902
2903 /* Nonzero means print parse trace. It is left uninitialized so that
2904 multiple parsers can coexist. */
2905 int yydebug;
2906 #else /* !YYDEBUG */
2907 # define YYDPRINTF(Args)
2908 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
2909 # define YY_STACK_PRINT(Bottom, Top)
2910 # define YY_REDUCE_PRINT(Rule)
2911 #endif /* !YYDEBUG */
2912
2913
2914 /* YYINITDEPTH -- initial size of the parser's stacks. */
2915 #ifndef YYINITDEPTH
2916 # define YYINITDEPTH 200
2917 #endif
2918
2919 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2920 if the built-in stack extension method is used).
2921
2922 Do not make this value too large; the results are undefined if
2923 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2924 evaluated with infinite-precision integer arithmetic. */
2925
2926 #ifndef YYMAXDEPTH
2927 # define YYMAXDEPTH 10000
2928 #endif
2929
2930
2931
2932 #if YYERROR_VERBOSE
2933
2934 # ifndef yystrlen
2935 # if defined __GLIBC__ && defined _STRING_H
2936 # define yystrlen strlen
2937 # else
2938 /* Return the length of YYSTR. */
2939 #if (defined __STDC__ || defined __C99__FUNC__ \
2940 || defined __cplusplus || defined _MSC_VER)
2941 static YYSIZE_T
2942 yystrlen (const char *yystr)
2943 #else
2944 static YYSIZE_T
2945 yystrlen (yystr)
2946 const char *yystr;
2947 #endif
2948 {
2949 YYSIZE_T yylen;
2950 for (yylen = 0; yystr[yylen]; yylen++)
2951 continue;
2952 return yylen;
2953 }
2954 # endif
2955 # endif
2956
2957 # ifndef yystpcpy
2958 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2959 # define yystpcpy stpcpy
2960 # else
2961 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2962 YYDEST. */
2963 #if (defined __STDC__ || defined __C99__FUNC__ \
2964 || defined __cplusplus || defined _MSC_VER)
2965 static char *
2966 yystpcpy (char *yydest, const char *yysrc)
2967 #else
2968 static char *
2969 yystpcpy (yydest, yysrc)
2970 char *yydest;
2971 const char *yysrc;
2972 #endif
2973 {
2974 char *yyd = yydest;
2975 const char *yys = yysrc;
2976
2977 while ((*yyd++ = *yys++) != '\0')
2978 continue;
2979
2980 return yyd - 1;
2981 }
2982 # endif
2983 # endif
2984
2985 # ifndef yytnamerr
2986 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2987 quotes and backslashes, so that it's suitable for yyerror. The
2988 heuristic is that double-quoting is unnecessary unless the string
2989 contains an apostrophe, a comma, or backslash (other than
2990 backslash-backslash). YYSTR is taken from yytname. If YYRES is
2991 null, do not copy; instead, return the length of what the result
2992 would have been. */
2993 static YYSIZE_T
2994 yytnamerr (char *yyres, const char *yystr)
2995 {
2996 if (*yystr == '"')
2997 {
2998 YYSIZE_T yyn = 0;
2999 char const *yyp = yystr;
3000
3001 for (;;)
3002 switch (*++yyp)
3003 {
3004 case '\'':
3005 case ',':
3006 goto do_not_strip_quotes;
3007
3008 case '\\':
3009 if (*++yyp != '\\')
3010 goto do_not_strip_quotes;
3011 /* Fall through. */
3012 default:
3013 if (yyres)
3014 yyres[yyn] = *yyp;
3015 yyn++;
3016 break;
3017
3018 case '"':
3019 if (yyres)
3020 yyres[yyn] = '\0';
3021 return yyn;
3022 }
3023 do_not_strip_quotes: ;
3024 }
3025
3026 if (! yyres)
3027 return yystrlen (yystr);
3028
3029 return yystpcpy (yyres, yystr) - yyres;
3030 }
3031 # endif
3032
3033 /* Copy into YYRESULT an error message about the unexpected token
3034 YYCHAR while in state YYSTATE. Return the number of bytes copied,
3035 including the terminating null byte. If YYRESULT is null, do not
3036 copy anything; just return the number of bytes that would be
3037 copied. As a special case, return 0 if an ordinary "syntax error"
3038 message will do. Return YYSIZE_MAXIMUM if overflow occurs during
3039 size calculation. */
3040 static YYSIZE_T
3041 yysyntax_error (char *yyresult, int yystate, int yychar)
3042 {
3043 int yyn = yypact[yystate];
3044
3045 if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
3046 return 0;
3047 else
3048 {
3049 int yytype = YYTRANSLATE (yychar);
3050 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
3051 YYSIZE_T yysize = yysize0;
3052 YYSIZE_T yysize1;
3053 int yysize_overflow = 0;
3054 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
3055 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
3056 int yyx;
3057
3058 # if 0
3059 /* This is so xgettext sees the translatable formats that are
3060 constructed on the fly. */
3061 YY_("syntax error, unexpected %s");
3062 YY_("syntax error, unexpected %s, expecting %s");
3063 YY_("syntax error, unexpected %s, expecting %s or %s");
3064 YY_("syntax error, unexpected %s, expecting %s or %s or %s");
3065 YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
3066 # endif
3067 char *yyfmt;
3068 char const *yyf;
3069 static char const yyunexpected[] = "syntax error, unexpected %s";
3070 static char const yyexpecting[] = ", expecting %s";
3071 static char const yyor[] = " or %s";
3072 char yyformat[sizeof yyunexpected
3073 + sizeof yyexpecting - 1
3074 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
3075 * (sizeof yyor - 1))];
3076 char const *yyprefix = yyexpecting;
3077
3078 /* Start YYX at -YYN if negative to avoid negative indexes in
3079 YYCHECK. */
3080 int yyxbegin = yyn < 0 ? -yyn : 0;
3081
3082 /* Stay within bounds of both yycheck and yytname. */
3083 int yychecklim = YYLAST - yyn + 1;
3084 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
3085 int yycount = 1;
3086
3087 yyarg[0] = yytname[yytype];
3088 yyfmt = yystpcpy (yyformat, yyunexpected);
3089
3090 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
3091 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
3092 {
3093 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
3094 {
3095 yycount = 1;
3096 yysize = yysize0;
3097 yyformat[sizeof yyunexpected - 1] = '\0';
3098 break;
3099 }
3100 yyarg[yycount++] = yytname[yyx];
3101 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
3102 yysize_overflow |= (yysize1 < yysize);
3103 yysize = yysize1;
3104 yyfmt = yystpcpy (yyfmt, yyprefix);
3105 yyprefix = yyor;
3106 }
3107
3108 yyf = YY_(yyformat);
3109 yysize1 = yysize + yystrlen (yyf);
3110 yysize_overflow |= (yysize1 < yysize);
3111 yysize = yysize1;
3112
3113 if (yysize_overflow)
3114 return YYSIZE_MAXIMUM;
3115
3116 if (yyresult)
3117 {
3118 /* Avoid sprintf, as that infringes on the user's name space.
3119 Don't have undefined behavior even if the translation
3120 produced a string with the wrong number of "%s"s. */
3121 char *yyp = yyresult;
3122 int yyi = 0;
3123 while ((*yyp = *yyf) != '\0')
3124 {
3125 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
3126 {
3127 yyp += yytnamerr (yyp, yyarg[yyi++]);
3128 yyf += 2;
3129 }
3130 else
3131 {
3132 yyp++;
3133 yyf++;
3134 }
3135 }
3136 }
3137 return yysize;
3138 }
3139 }
3140 #endif /* YYERROR_VERBOSE */
3141
3142
3143 /*-----------------------------------------------.
3144 | Release the memory associated to this symbol. |
3145 `-----------------------------------------------*/
3146
3147 /*ARGSUSED*/
3148 #if (defined __STDC__ || defined __C99__FUNC__ \
3149 || defined __cplusplus || defined _MSC_VER)
3150 static void
3151 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
3152 #else
3153 static void
3154 yydestruct (yymsg, yytype, yyvaluep)
3155 const char *yymsg;
3156 int yytype;
3157 YYSTYPE *yyvaluep;
3158 #endif
3159 {
3160 YYUSE (yyvaluep);
3161
3162 if (!yymsg)
3163 yymsg = "Deleting";
3164 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
3165
3166 switch (yytype)
3167 {
3168
3169 default:
3170 break;
3171 }
3172 }
3173
3174 /* Prevent warnings from -Wmissing-prototypes. */
3175 #ifdef YYPARSE_PARAM
3176 #if defined __STDC__ || defined __cplusplus
3177 int yyparse (void *YYPARSE_PARAM);
3178 #else
3179 int yyparse ();
3180 #endif
3181 #else /* ! YYPARSE_PARAM */
3182 #if defined __STDC__ || defined __cplusplus
3183 int yyparse (void);
3184 #else
3185 int yyparse ();
3186 #endif
3187 #endif /* ! YYPARSE_PARAM */
3188
3189
3190 /* The lookahead symbol. */
3191 int yychar;
3192
3193 /* The semantic value of the lookahead symbol. */
3194 YYSTYPE yylval;
3195
3196 /* Number of syntax errors so far. */
3197 int yynerrs;
3198
3199
3200
3201 /*-------------------------.
3202 | yyparse or yypush_parse. |
3203 `-------------------------*/
3204
3205 #ifdef YYPARSE_PARAM
3206 #if (defined __STDC__ || defined __C99__FUNC__ \
3207 || defined __cplusplus || defined _MSC_VER)
3208 int
3209 yyparse (void *YYPARSE_PARAM)
3210 #else
3211 int
3212 yyparse (YYPARSE_PARAM)
3213 void *YYPARSE_PARAM;
3214 #endif
3215 #else /* ! YYPARSE_PARAM */
3216 #if (defined __STDC__ || defined __C99__FUNC__ \
3217 || defined __cplusplus || defined _MSC_VER)
3218 int
3219 yyparse (void)
3220 #else
3221 int
3222 yyparse ()
3223
3224 #endif
3225 #endif
3226 {
3227
3228
3229 int yystate;
3230 /* Number of tokens to shift before error messages enabled. */
3231 int yyerrstatus;
3232
3233 /* The stacks and their tools:
3234 `yyss': related to states.
3235 `yyvs': related to semantic values.
3236
3237 Refer to the stacks thru separate pointers, to allow yyoverflow
3238 to reallocate them elsewhere. */
3239
3240 /* The state stack. */
3241 yytype_int16 yyssa[YYINITDEPTH];
3242 yytype_int16 *yyss;
3243 yytype_int16 *yyssp;
3244
3245 /* The semantic value stack. */
3246 YYSTYPE yyvsa[YYINITDEPTH];
3247 YYSTYPE *yyvs;
3248 YYSTYPE *yyvsp;
3249
3250 YYSIZE_T yystacksize;
3251
3252 int yyn;
3253 int yyresult;
3254 /* Lookahead token as an internal (translated) token number. */
3255 int yytoken;
3256 /* The variables used to return semantic value and location from the
3257 action routines. */
3258 YYSTYPE yyval;
3259
3260 #if YYERROR_VERBOSE
3261 /* Buffer for error messages, and its allocated size. */
3262 char yymsgbuf[128];
3263 char *yymsg = yymsgbuf;
3264 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
3265 #endif
3266
3267 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
3268
3269 /* The number of symbols on the RHS of the reduced rule.
3270 Keep to zero when no symbol should be popped. */
3271 int yylen = 0;
3272
3273 yytoken = 0;
3274 yyss = yyssa;
3275 yyvs = yyvsa;
3276 yystacksize = YYINITDEPTH;
3277
3278 YYDPRINTF ((stderr, "Starting parse\n"));
3279
3280 yystate = 0;
3281 yyerrstatus = 0;
3282 yynerrs = 0;
3283 yychar = YYEMPTY; /* Cause a token to be read. */
3284
3285 /* Initialize stack pointers.
3286 Waste one element of value and location stack
3287 so that they stay on the same level as the state stack.
3288 The wasted elements are never initialized. */
3289 yyssp = yyss;
3290 yyvsp = yyvs;
3291
3292 goto yysetstate;
3293
3294 /*------------------------------------------------------------.
3295 | yynewstate -- Push a new state, which is found in yystate. |
3296 `------------------------------------------------------------*/
3297 yynewstate:
3298 /* In all cases, when you get here, the value and location stacks
3299 have just been pushed. So pushing a state here evens the stacks. */
3300 yyssp++;
3301
3302 yysetstate:
3303 *yyssp = yystate;
3304
3305 if (yyss + yystacksize - 1 <= yyssp)
3306 {
3307 /* Get the current used size of the three stacks, in elements. */
3308 YYSIZE_T yysize = yyssp - yyss + 1;
3309
3310 #ifdef yyoverflow
3311 {
3312 /* Give user a chance to reallocate the stack. Use copies of
3313 these so that the &'s don't force the real ones into
3314 memory. */
3315 YYSTYPE *yyvs1 = yyvs;
3316 yytype_int16 *yyss1 = yyss;
3317
3318 /* Each stack pointer address is followed by the size of the
3319 data in use in that stack, in bytes. This used to be a
3320 conditional around just the two extra args, but that might
3321 be undefined if yyoverflow is a macro. */
3322 yyoverflow (YY_("memory exhausted"),
3323 &yyss1, yysize * sizeof (*yyssp),
3324 &yyvs1, yysize * sizeof (*yyvsp),
3325 &yystacksize);
3326
3327 yyss = yyss1;
3328 yyvs = yyvs1;
3329 }
3330 #else /* no yyoverflow */
3331 # ifndef YYSTACK_RELOCATE
3332 goto yyexhaustedlab;
3333 # else
3334 /* Extend the stack our own way. */
3335 if (YYMAXDEPTH <= yystacksize)
3336 goto yyexhaustedlab;
3337 yystacksize *= 2;
3338 if (YYMAXDEPTH < yystacksize)
3339 yystacksize = YYMAXDEPTH;
3340
3341 {
3342 yytype_int16 *yyss1 = yyss;
3343 union yyalloc *yyptr =
3344 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
3345 if (! yyptr)
3346 goto yyexhaustedlab;
3347 YYSTACK_RELOCATE (yyss_alloc, yyss);
3348 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
3349 # undef YYSTACK_RELOCATE
3350 if (yyss1 != yyssa)
3351 YYSTACK_FREE (yyss1);
3352 }
3353 # endif
3354 #endif /* no yyoverflow */
3355
3356 yyssp = yyss + yysize - 1;
3357 yyvsp = yyvs + yysize - 1;
3358
3359 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
3360 (unsigned long int) yystacksize));
3361
3362 if (yyss + yystacksize - 1 <= yyssp)
3363 YYABORT;
3364 }
3365
3366 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
3367
3368 if (yystate == YYFINAL)
3369 YYACCEPT;
3370
3371 goto yybackup;
3372
3373 /*-----------.
3374 | yybackup. |
3375 `-----------*/
3376 yybackup:
3377
3378 /* Do appropriate processing given the current state. Read a
3379 lookahead token if we need one and don't already have one. */
3380
3381 /* First try to decide what to do without reference to lookahead token. */
3382 yyn = yypact[yystate];
3383 if (yyn == YYPACT_NINF)
3384 goto yydefault;
3385
3386 /* Not known => get a lookahead token if don't already have one. */
3387
3388 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
3389 if (yychar == YYEMPTY)
3390 {
3391 YYDPRINTF ((stderr, "Reading a token: "));
3392 yychar = YYLEX;
3393 }
3394
3395 if (yychar <= YYEOF)
3396 {
3397 yychar = yytoken = YYEOF;
3398 YYDPRINTF ((stderr, "Now at end of input.\n"));
3399 }
3400 else
3401 {
3402 yytoken = YYTRANSLATE (yychar);
3403 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
3404 }
3405
3406 /* If the proper action on seeing token YYTOKEN is to reduce or to
3407 detect an error, take that action. */
3408 yyn += yytoken;
3409 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
3410 goto yydefault;
3411 yyn = yytable[yyn];
3412 if (yyn <= 0)
3413 {
3414 if (yyn == 0 || yyn == YYTABLE_NINF)
3415 goto yyerrlab;
3416 yyn = -yyn;
3417 goto yyreduce;
3418 }
3419
3420 /* Count tokens shifted since error; after three, turn off error
3421 status. */
3422 if (yyerrstatus)
3423 yyerrstatus--;
3424
3425 /* Shift the lookahead token. */
3426 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
3427
3428 /* Discard the shifted token. */
3429 yychar = YYEMPTY;
3430
3431 yystate = yyn;
3432 *++yyvsp = yylval;
3433
3434 goto yynewstate;
3435
3436
3437 /*-----------------------------------------------------------.
3438 | yydefault -- do the default action for the current state. |
3439 `-----------------------------------------------------------*/
3440 yydefault:
3441 yyn = yydefact[yystate];
3442 if (yyn == 0)
3443 goto yyerrlab;
3444 goto yyreduce;
3445
3446
3447 /*-----------------------------.
3448 | yyreduce -- Do a reduction. |
3449 `-----------------------------*/
3450 yyreduce:
3451 /* yyn is the number of a rule to reduce with. */
3452 yylen = yyr2[yyn];
3453
3454 /* If YYLEN is nonzero, implement the default value of the action:
3455 `$$ = $1'.
3456
3457 Otherwise, the following line sets YYVAL to garbage.
3458 This behavior is undocumented and Bison
3459 users should not rely upon it. Assigning to YYVAL
3460 unconditionally makes the parser a bit smaller, and it avoids a
3461 GCC warning that YYVAL may be used uninitialized. */
3462 yyval = yyvsp[1-yylen];
3463
3464
3465 YY_REDUCE_PRINT (yyn);
3466 switch (yyn)
3467 {
3468 case 26:
3469
3470 /* Line 1455 of yacc.c */
3471 #line 432 "ircd_parser.y"
3472 { (yyval.number) = 0; }
3473 break;
3474
3475 case 28:
3476
3477 /* Line 1455 of yacc.c */
3478 #line 434 "ircd_parser.y"
3479 {
3480 (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number);
3481 }
3482 break;
3483
3484 case 29:
3485
3486 /* Line 1455 of yacc.c */
3487 #line 438 "ircd_parser.y"
3488 {
3489 (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number);
3490 }
3491 break;
3492
3493 case 30:
3494
3495 /* Line 1455 of yacc.c */
3496 #line 442 "ircd_parser.y"
3497 {
3498 (yyval.number) = (yyvsp[(1) - (3)].number) * 60 + (yyvsp[(3) - (3)].number);
3499 }
3500 break;
3501
3502 case 31:
3503
3504 /* Line 1455 of yacc.c */
3505 #line 446 "ircd_parser.y"
3506 {
3507 (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 + (yyvsp[(3) - (3)].number);
3508 }
3509 break;
3510
3511 case 32:
3512
3513 /* Line 1455 of yacc.c */
3514 #line 450 "ircd_parser.y"
3515 {
3516 (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 + (yyvsp[(3) - (3)].number);
3517 }
3518 break;
3519
3520 case 33:
3521
3522 /* Line 1455 of yacc.c */
3523 #line 454 "ircd_parser.y"
3524 {
3525 (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 * 7 + (yyvsp[(3) - (3)].number);
3526 }
3527 break;
3528
3529 case 34:
3530
3531 /* Line 1455 of yacc.c */
3532 #line 459 "ircd_parser.y"
3533 { (yyval.number) = 0; }
3534 break;
3535
3536 case 36:
3537
3538 /* Line 1455 of yacc.c */
3539 #line 460 "ircd_parser.y"
3540 { (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number); }
3541 break;
3542
3543 case 37:
3544
3545 /* Line 1455 of yacc.c */
3546 #line 461 "ircd_parser.y"
3547 { (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number); }
3548 break;
3549
3550 case 38:
3551
3552 /* Line 1455 of yacc.c */
3553 #line 462 "ircd_parser.y"
3554 { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 + (yyvsp[(3) - (3)].number); }
3555 break;
3556
3557 case 39:
3558
3559 /* Line 1455 of yacc.c */
3560 #line 463 "ircd_parser.y"
3561 { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 * 1024 + (yyvsp[(3) - (3)].number); }
3562 break;
3563
3564 case 46:
3565
3566 /* Line 1455 of yacc.c */
3567 #line 477 "ircd_parser.y"
3568 {
3569 #ifndef STATIC_MODULES /* NOOP in the static case */
3570 if (conf_parser_ctx.pass == 2)
3571 add_conf_module(libio_basename(yylval.string));
3572 #endif
3573 }
3574 break;
3575
3576 case 47:
3577
3578 /* Line 1455 of yacc.c */
3579 #line 485 "ircd_parser.y"
3580 {
3581 #ifndef STATIC_MODULES
3582 if (conf_parser_ctx.pass == 2)
3583 mod_add_path(yylval.string);
3584 #endif
3585 }
3586 break;
3587
3588 case 64:
3589
3590 /* Line 1455 of yacc.c */
3591 #line 507 "ircd_parser.y"
3592 {
3593 if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
3594 ServerInfo.tls_version = 0;
3595 }
3596 break;
3597
3598 case 65:
3599
3600 /* Line 1455 of yacc.c */
3601 #line 511 "ircd_parser.y"
3602 {
3603 if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
3604 {
3605 if (!(ServerInfo.tls_version & CONF_SERVER_INFO_TLS_VERSION_SSLV3))
3606 SSL_CTX_set_options(ServerInfo.server_ctx, SSL_OP_NO_SSLv3);
3607 if (!(ServerInfo.tls_version & CONF_SERVER_INFO_TLS_VERSION_TLSV1))
3608 SSL_CTX_set_options(ServerInfo.server_ctx, SSL_OP_NO_TLSv1);
3609 }
3610 }
3611 break;
3612
3613 case 68:
3614
3615 /* Line 1455 of yacc.c */
3616 #line 523 "ircd_parser.y"
3617 {
3618 if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
3619 ServerInfo.tls_version |= CONF_SERVER_INFO_TLS_VERSION_SSLV3;
3620 }
3621 break;
3622
3623 case 69:
3624
3625 /* Line 1455 of yacc.c */
3626 #line 527 "ircd_parser.y"
3627 {
3628 if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
3629 ServerInfo.tls_version |= CONF_SERVER_INFO_TLS_VERSION_TLSV1;
3630 }
3631 break;
3632
3633 case 70:
3634
3635 /* Line 1455 of yacc.c */
3636 #line 533 "ircd_parser.y"
3637 {
3638 #ifdef HAVE_LIBCRYPTO
3639 if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3640 {
3641 if (!ServerInfo.rsa_private_key_file)
3642 {
3643 yyerror("No rsa_private_key_file specified, SSL disabled");
3644 break;
3645 }
3646
3647 if (SSL_CTX_use_certificate_file(ServerInfo.server_ctx, yylval.string,
3648 SSL_FILETYPE_PEM) <= 0)
3649 {
3650 yyerror(ERR_lib_error_string(ERR_get_error()));
3651 break;
3652 }
3653
3654 if (SSL_CTX_use_PrivateKey_file(ServerInfo.server_ctx, ServerInfo.rsa_private_key_file,
3655 SSL_FILETYPE_PEM) <= 0)
3656 {
3657 yyerror(ERR_lib_error_string(ERR_get_error()));
3658 break;
3659 }
3660
3661 if (!SSL_CTX_check_private_key(ServerInfo.server_ctx))
3662 {
3663 yyerror(ERR_lib_error_string(ERR_get_error()));
3664 break;
3665 }
3666 }
3667 #endif
3668 }
3669 break;
3670
3671 case 71:
3672
3673 /* Line 1455 of yacc.c */
3674 #line 567 "ircd_parser.y"
3675 {
3676 #ifdef HAVE_LIBCRYPTO
3677 if (conf_parser_ctx.pass == 1)
3678 {
3679 BIO *file;
3680
3681 if (ServerInfo.rsa_private_key)
3682 {
3683 RSA_free(ServerInfo.rsa_private_key);
3684 ServerInfo.rsa_private_key = NULL;
3685 }
3686
3687 if (ServerInfo.rsa_private_key_file)
3688 {
3689 MyFree(ServerInfo.rsa_private_key_file);
3690 ServerInfo.rsa_private_key_file = NULL;
3691 }
3692
3693 DupString(ServerInfo.rsa_private_key_file, yylval.string);
3694
3695 if ((file = BIO_new_file(yylval.string, "r")) == NULL)
3696 {
3697 yyerror("File open failed, ignoring");
3698 break;
3699 }
3700
3701 ServerInfo.rsa_private_key = (RSA *)PEM_read_bio_RSAPrivateKey(file, NULL,
3702 0, NULL);
3703
3704 BIO_set_close(file, BIO_CLOSE);
3705 BIO_free(file);
3706
3707 if (ServerInfo.rsa_private_key == NULL)
3708 {
3709 yyerror("Couldn't extract key, ignoring");
3710 break;
3711 }
3712
3713 if (!RSA_check_key(ServerInfo.rsa_private_key))
3714 {
3715 RSA_free(ServerInfo.rsa_private_key);
3716 ServerInfo.rsa_private_key = NULL;
3717
3718 yyerror("Invalid key, ignoring");
3719 break;
3720 }
3721
3722 /* require 2048 bit (256 byte) key */
3723 if (RSA_size(ServerInfo.rsa_private_key) != 256)
3724 {
3725 RSA_free(ServerInfo.rsa_private_key);
3726 ServerInfo.rsa_private_key = NULL;
3727
3728 yyerror("Not a 2048 bit key, ignoring");
3729 }
3730 }
3731 #endif
3732 }
3733 break;
3734
3735 case 72:
3736
3737 /* Line 1455 of yacc.c */
3738 #line 627 "ircd_parser.y"
3739 {
3740 /* this isn't rehashable */
3741 if (conf_parser_ctx.pass == 2)
3742 {
3743 if (ServerInfo.name == NULL)
3744 {
3745 /* the ircd will exit() in main() if we dont set one */
3746 if (strlen(yylval.string) <= HOSTLEN)
3747 DupString(ServerInfo.name, yylval.string);
3748 }
3749 }
3750 }
3751 break;
3752
3753 case 73:
3754
3755 /* Line 1455 of yacc.c */
3756 #line 641 "ircd_parser.y"
3757 {
3758 /* this isn't rehashable */
3759 if (conf_parser_ctx.pass == 2 && !ServerInfo.sid)
3760 {
3761 if (valid_sid(yylval.string))
3762 DupString(ServerInfo.sid, yylval.string);
3763 else
3764 {
3765 ilog(L_ERROR, "Ignoring config file entry SID -- invalid SID. Aborting.");
3766 exit(0);
3767 }
3768 }
3769 }
3770 break;
3771
3772 case 74:
3773
3774 /* Line 1455 of yacc.c */
3775 #line 656 "ircd_parser.y"
3776 {
3777 if (conf_parser_ctx.pass == 2)
3778 {
3779 MyFree(ServerInfo.description);
3780 DupString(ServerInfo.description,yylval.string);
3781 }
3782 }
3783 break;
3784
3785 case 75:
3786
3787 /* Line 1455 of yacc.c */
3788 #line 665 "ircd_parser.y"
3789 {
3790 if (conf_parser_ctx.pass == 2)
3791 {
3792 char *p;
3793
3794 if ((p = strchr(yylval.string, ' ')) != NULL)
3795 p = '\0';
3796
3797 MyFree(ServerInfo.network_name);
3798 DupString(ServerInfo.network_name, yylval.string);
3799 }
3800 }
3801 break;
3802
3803 case 76:
3804
3805 /* Line 1455 of yacc.c */
3806 #line 679 "ircd_parser.y"
3807 {
3808 if (conf_parser_ctx.pass == 2)
3809 {
3810 MyFree(ServerInfo.network_desc);
3811 DupString(ServerInfo.network_desc, yylval.string);
3812 }
3813 }
3814 break;
3815
3816 case 77:
3817
3818 /* Line 1455 of yacc.c */
3819 #line 688 "ircd_parser.y"
3820 {
3821 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3822 {
3823 struct addrinfo hints, *res;
3824
3825 memset(&hints, 0, sizeof(hints));
3826
3827 hints.ai_family = AF_UNSPEC;
3828 hints.ai_socktype = SOCK_STREAM;
3829 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3830
3831 if (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
3832 ilog(L_ERROR, "Invalid netmask for server vhost(%s)", yylval.string);
3833 else
3834 {
3835 assert(res != NULL);
3836
3837 memcpy(&ServerInfo.ip, res->ai_addr, res->ai_addrlen);
3838 ServerInfo.ip.ss.ss_family = res->ai_family;
3839 ServerInfo.ip.ss_len = res->ai_addrlen;
3840 irc_freeaddrinfo(res);
3841
3842 ServerInfo.specific_ipv4_vhost = 1;
3843 }
3844 }
3845 }
3846 break;
3847
3848 case 78:
3849
3850 /* Line 1455 of yacc.c */
3851 #line 716 "ircd_parser.y"
3852 {
3853 #ifdef IPV6
3854 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3855 {
3856 struct addrinfo hints, *res;
3857
3858 memset(&hints, 0, sizeof(hints));
3859
3860 hints.ai_family = AF_UNSPEC;
3861 hints.ai_socktype = SOCK_STREAM;
3862 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3863
3864 if (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
3865 ilog(L_ERROR, "Invalid netmask for server vhost6(%s)", yylval.string);
3866 else
3867 {
3868 assert(res != NULL);
3869
3870 memcpy(&ServerInfo.ip6, res->ai_addr, res->ai_addrlen);
3871 ServerInfo.ip6.ss.ss_family = res->ai_family;
3872 ServerInfo.ip6.ss_len = res->ai_addrlen;
3873 irc_freeaddrinfo(res);
3874
3875 ServerInfo.specific_ipv6_vhost = 1;
3876 }
3877 }
3878 #endif
3879 }
3880 break;
3881
3882 case 79:
3883
3884 /* Line 1455 of yacc.c */
3885 #line 746 "ircd_parser.y"
3886 {
3887 if (conf_parser_ctx.pass == 2)
3888 {
3889 recalc_fdlimit(NULL);
3890
3891 if ((yyvsp[(3) - (4)].number) < MAXCLIENTS_MIN)
3892 {
3893 char buf[IRCD_BUFSIZE];
3894 ircsprintf(buf, "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3895 yyerror(buf);
3896 }
3897 else if ((yyvsp[(3) - (4)].number) > MAXCLIENTS_MAX)
3898 {
3899 char buf[IRCD_BUFSIZE];
3900 ircsprintf(buf, "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3901 yyerror(buf);
3902 }
3903 else
3904 ServerInfo.max_clients = (yyvsp[(3) - (4)].number);
3905 }
3906 }
3907 break;
3908
3909 case 80:
3910
3911 /* Line 1455 of yacc.c */
3912 #line 769 "ircd_parser.y"
3913 {
3914 if (conf_parser_ctx.pass == 2)
3915 {
3916 if (yylval.number)
3917 {
3918 ServerInfo.hub = 1;
3919 delete_capability("HUB");
3920 add_capability("HUB", CAP_HUB, 1);
3921 }
3922 else if (ServerInfo.hub)
3923 {
3924
3925 ServerInfo.hub = 0;
3926 delete_capability("HUB");
3927 }
3928 }
3929 }
3930 break;
3931
3932 case 88:
3933
3934 /* Line 1455 of yacc.c */
3935 #line 797 "ircd_parser.y"
3936 {
3937 if (conf_parser_ctx.pass == 2)
3938 {
3939 MyFree(AdminInfo.name);
3940 DupString(AdminInfo.name, yylval.string);
3941 }
3942 }
3943 break;
3944
3945 case 89:
3946
3947 /* Line 1455 of yacc.c */
3948 #line 806 "ircd_parser.y"
3949 {
3950 if (conf_parser_ctx.pass == 2)
3951 {
3952 MyFree(AdminInfo.email);
3953 DupString(AdminInfo.email, yylval.string);
3954 }
3955 }
3956 break;
3957
3958 case 90:
3959
3960 /* Line 1455 of yacc.c */
3961 #line 815 "ircd_parser.y"
3962 {
3963 if (conf_parser_ctx.pass == 2)
3964 {
3965 MyFree(AdminInfo.description);
3966 DupString(AdminInfo.description, yylval.string);
3967 }
3968 }
3969 break;
3970
3971 case 107:
3972
3973 /* Line 1455 of yacc.c */
3974 #line 842 "ircd_parser.y"
3975 {
3976 }
3977 break;
3978
3979 case 108:
3980
3981 /* Line 1455 of yacc.c */
3982 #line 846 "ircd_parser.y"
3983 {
3984 }
3985 break;
3986
3987 case 109:
3988
3989 /* Line 1455 of yacc.c */
3990 #line 850 "ircd_parser.y"
3991 {
3992 if (conf_parser_ctx.pass == 2)
3993 strlcpy(ConfigLoggingEntry.userlog, yylval.string,
3994 sizeof(ConfigLoggingEntry.userlog));
3995 }
3996 break;
3997
3998 case 110:
3999
4000 /* Line 1455 of yacc.c */
4001 #line 857 "ircd_parser.y"
4002 {
4003 if (conf_parser_ctx.pass == 2)
4004 strlcpy(ConfigLoggingEntry.failed_operlog, yylval.string,
4005 sizeof(ConfigLoggingEntry.failed_operlog));
4006 }
4007 break;
4008
4009 case 111:
4010
4011 /* Line 1455 of yacc.c */
4012 #line 864 "ircd_parser.y"
4013 {
4014 if (conf_parser_ctx.pass == 2)
4015 strlcpy(ConfigLoggingEntry.operlog, yylval.string,
4016 sizeof(ConfigLoggingEntry.operlog));
4017 }
4018 break;
4019
4020 case 112:
4021
4022 /* Line 1455 of yacc.c */
4023 #line 871 "ircd_parser.y"
4024 {
4025 if (conf_parser_ctx.pass == 2)
4026 strlcpy(ConfigLoggingEntry.operspylog, yylval.string,
4027 sizeof(ConfigLoggingEntry.operspylog));
4028 }
4029 break;
4030
4031 case 113:
4032
4033 /* Line 1455 of yacc.c */
4034 #line 878 "ircd_parser.y"
4035 {
4036 if (conf_parser_ctx.pass == 2)
4037 strlcpy(ConfigLoggingEntry.glinelog, yylval.string,
4038 sizeof(ConfigLoggingEntry.glinelog));
4039 }
4040 break;
4041
4042 case 114:
4043
4044 /* Line 1455 of yacc.c */
4045 #line 885 "ircd_parser.y"
4046 {
4047 if (conf_parser_ctx.pass == 2)
4048 strlcpy(ConfigLoggingEntry.klinelog, yylval.string,
4049 sizeof(ConfigLoggingEntry.klinelog));
4050 }
4051 break;
4052
4053 case 115:
4054
4055 /* Line 1455 of yacc.c */
4056 #line 892 "ircd_parser.y"
4057 {
4058 if (conf_parser_ctx.pass == 2)
4059 strlcpy(ConfigLoggingEntry.ioerrlog, yylval.string,
4060 sizeof(ConfigLoggingEntry.ioerrlog));
4061 }
4062 break;
4063
4064 case 116:
4065
4066 /* Line 1455 of yacc.c */
4067 #line 899 "ircd_parser.y"
4068 {
4069 if (conf_parser_ctx.pass == 2)
4070 strlcpy(ConfigLoggingEntry.killlog, yylval.string,
4071 sizeof(ConfigLoggingEntry.killlog));
4072 }
4073 break;
4074
4075 case 117:
4076
4077 /* Line 1455 of yacc.c */
4078 #line 906 "ircd_parser.y"
4079 {
4080 if (conf_parser_ctx.pass == 2)
4081 set_log_level(L_CRIT);
4082 }
4083 break;
4084
4085 case 118:
4086
4087 /* Line 1455 of yacc.c */
4088 #line 910 "ircd_parser.y"
4089 {
4090 if (conf_parser_ctx.pass == 2)
4091 set_log_level(L_ERROR);
4092 }
4093 break;
4094
4095 case 119:
4096
4097 /* Line 1455 of yacc.c */
4098 #line 914 "ircd_parser.y"
4099 {
4100 if (conf_parser_ctx.pass == 2)
4101 set_log_level(L_WARN);
4102 }
4103 break;
4104
4105 case 120:
4106
4107 /* Line 1455 of yacc.c */
4108 #line 918 "ircd_parser.y"
4109 {
4110 if (conf_parser_ctx.pass == 2)
4111 set_log_level(L_NOTICE);
4112 }
4113 break;
4114
4115 case 121:
4116
4117 /* Line 1455 of yacc.c */
4118 #line 922 "ircd_parser.y"
4119 {
4120 if (conf_parser_ctx.pass == 2)
4121 set_log_level(L_TRACE);
4122 }
4123 break;
4124
4125 case 122:
4126
4127 /* Line 1455 of yacc.c */
4128 #line 926 "ircd_parser.y"
4129 {
4130 if (conf_parser_ctx.pass == 2)
4131 set_log_level(L_INFO);
4132 }
4133 break;
4134
4135 case 123:
4136
4137 /* Line 1455 of yacc.c */
4138 #line 930 "ircd_parser.y"
4139 {
4140 if (conf_parser_ctx.pass == 2)
4141 set_log_level(L_DEBUG);
4142 }
4143 break;
4144
4145 case 124:
4146
4147 /* Line 1455 of yacc.c */
4148 #line 936 "ircd_parser.y"
4149 {
4150 if (conf_parser_ctx.pass == 2)
4151 ConfigLoggingEntry.use_logging = yylval.number;
4152 }
4153 break;
4154
4155 case 125:
4156
4157 /* Line 1455 of yacc.c */
4158 #line 945 "ircd_parser.y"
4159 {
4160 if (conf_parser_ctx.pass == 2)
4161 {
4162 yy_conf = make_conf_item(OPER_TYPE);
4163 yy_aconf = map_to_conf(yy_conf);
4164 SetConfEncrypted(yy_aconf); /* Yes, the default is encrypted */
4165 }
4166 else
4167 {
4168 MyFree(class_name);
4169 class_name = NULL;
4170 }
4171 }
4172 break;
4173
4174 case 126:
4175
4176 /* Line 1455 of yacc.c */
4177 #line 958 "ircd_parser.y"
4178 {
4179 if (conf_parser_ctx.pass == 2)
4180 {
4181 struct CollectItem *yy_tmp;
4182 dlink_node *ptr;
4183 dlink_node *next_ptr;
4184
4185 conf_add_class_to_conf(yy_conf, class_name);
4186
4187 /* Now, make sure there is a copy of the "base" given oper
4188 * block in each of the collected copies
4189 */
4190
4191 DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
4192 {
4193 struct AccessItem *new_aconf;
4194 struct ConfItem *new_conf;
4195 yy_tmp = ptr->data;
4196
4197 new_conf = make_conf_item(OPER_TYPE);
4198 new_aconf = (struct AccessItem *)map_to_conf(new_conf);
4199
4200 new_aconf->flags = yy_aconf->flags;
4201
4202 if (yy_conf->name != NULL)
4203 DupString(new_conf->name, yy_conf->name);
4204 if (yy_tmp->user != NULL)
4205 DupString(new_aconf->user, yy_tmp->user);
4206 else
4207 DupString(new_aconf->user, "*");
4208 if (yy_tmp->host != NULL)
4209 DupString(new_aconf->host, yy_tmp->host);
4210 else
4211 DupString(new_aconf->host, "*");
4212 conf_add_class_to_conf(new_conf, class_name);
4213 if (yy_aconf->passwd != NULL)
4214 DupString(new_aconf->passwd, yy_aconf->passwd);
4215
4216 new_aconf->port = yy_aconf->port;
4217 #ifdef HAVE_LIBCRYPTO
4218 if (yy_aconf->rsa_public_key_file != NULL)
4219 {
4220 BIO *file;
4221
4222 DupString(new_aconf->rsa_public_key_file,
4223 yy_aconf->rsa_public_key_file);
4224
4225 file = BIO_new_file(yy_aconf->rsa_public_key_file, "r");
4226 new_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file,
4227 NULL, 0, NULL);
4228 BIO_set_close(file, BIO_CLOSE);
4229 BIO_free(file);
4230 }
4231 #endif
4232
4233 #ifdef HAVE_LIBCRYPTO
4234 if (yy_tmp->name && (yy_tmp->passwd || yy_aconf->rsa_public_key)
4235 && yy_tmp->host)
4236 #else
4237 if (yy_tmp->name && yy_tmp->passwd && yy_tmp->host)
4238 #endif
4239 {
4240 conf_add_class_to_conf(new_conf, class_name);
4241 if (yy_tmp->name != NULL)
4242 DupString(new_conf->name, yy_tmp->name);
4243 }
4244
4245 dlinkDelete(&yy_tmp->node, &col_conf_list);
4246 free_collect_item(yy_tmp);
4247 }
4248
4249 yy_conf = NULL;
4250 yy_aconf = NULL;
4251
4252
4253 MyFree(class_name);
4254 class_name = NULL;
4255 }
4256 }
4257 break;
4258
4259 case 154:
4260
4261 /* Line 1455 of yacc.c */
4262 #line 1050 "ircd_parser.y"
4263 {
4264 if (conf_parser_ctx.pass == 2)
4265 {
4266 if (strlen(yylval.string) > OPERNICKLEN)
4267 yylval.string[OPERNICKLEN] = '\0';
4268
4269 MyFree(yy_conf->name);
4270 DupString(yy_conf->name, yylval.string);
4271 }
4272 }
4273 break;
4274
4275 case 155:
4276
4277 /* Line 1455 of yacc.c */
4278 #line 1062 "ircd_parser.y"
4279 {
4280 if (conf_parser_ctx.pass == 2)
4281 {
4282 if (strlen(yylval.string) > OPERNICKLEN)
4283 yylval.string[OPERNICKLEN] = '\0';
4284
4285 MyFree(yy_conf->name);
4286 DupString(yy_conf->name, yylval.string);
4287 }
4288 }
4289 break;
4290
4291 case 156:
4292
4293 /* Line 1455 of yacc.c */
4294 #line 1074 "ircd_parser.y"
4295 {
4296 if (conf_parser_ctx.pass == 2)
4297 {
4298 struct split_nuh_item nuh;
4299
4300 nuh.nuhmask = yylval.string;
4301 nuh.nickptr = NULL;
4302 nuh.userptr = userbuf;
4303 nuh.hostptr = hostbuf;
4304
4305 nuh.nicksize = 0;
4306 nuh.usersize = sizeof(userbuf);
4307 nuh.hostsize = sizeof(hostbuf);
4308
4309 split_nuh(&nuh);
4310
4311 if (yy_aconf->user == NULL)
4312 {
4313 DupString(yy_aconf->user, userbuf);
4314 DupString(yy_aconf->host, hostbuf);
4315 }
4316 else
4317 {
4318 struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
4319
4320 DupString(yy_tmp->user, userbuf);
4321 DupString(yy_tmp->host, hostbuf);
4322
4323 dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
4324 }
4325 }
4326 }
4327 break;
4328
4329 case 157:
4330
4331 /* Line 1455 of yacc.c */
4332 #line 1108 "ircd_parser.y"
4333 {
4334 if (conf_parser_ctx.pass == 2)
4335 {
4336 if (yy_aconf->passwd != NULL)
4337 memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
4338
4339 MyFree(yy_aconf->passwd);
4340 DupString(yy_aconf->passwd, yylval.string);
4341 }
4342 }
4343 break;
4344
4345 case 158:
4346
4347 /* Line 1455 of yacc.c */
4348 #line 1120 "ircd_parser.y"
4349 {
4350 if (conf_parser_ctx.pass == 2)
4351 {
4352 if (yylval.number)
4353 SetConfEncrypted(yy_aconf);
4354 else
4355 ClearConfEncrypted(yy_aconf);
4356 }
4357 }
4358 break;
4359
4360 case 159:
4361
4362 /* Line 1455 of yacc.c */
4363 #line 1131 "ircd_parser.y"
4364 {
4365 #ifdef HAVE_LIBCRYPTO
4366 if (conf_parser_ctx.pass == 2)
4367 {
4368 BIO *file;
4369
4370 if (yy_aconf->rsa_public_key != NULL)
4371 {
4372 RSA_free(yy_aconf->rsa_public_key);
4373 yy_aconf->rsa_public_key = NULL;
4374 }
4375
4376 if (yy_aconf->rsa_public_key_file != NULL)
4377 {
4378 MyFree(yy_aconf->rsa_public_key_file);
4379 yy_aconf->rsa_public_key_file = NULL;
4380 }
4381
4382 DupString(yy_aconf->rsa_public_key_file, yylval.string);
4383 file = BIO_new_file(yylval.string, "r");
4384
4385 if (file == NULL)
4386 {
4387 yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
4388 break;
4389 }
4390
4391 yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
4392
4393 if (yy_aconf->rsa_public_key == NULL)
4394 {
4395 yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
4396 break;
4397 }
4398
4399 BIO_set_close(file, BIO_CLOSE);
4400 BIO_free(file);
4401 }
4402 #endif /* HAVE_LIBCRYPTO */
4403 }
4404 break;
4405
4406 case 160:
4407
4408 /* Line 1455 of yacc.c */
4409 #line 1173 "ircd_parser.y"
4410 {
4411 if (conf_parser_ctx.pass == 2)
4412 {
4413 MyFree(class_name);
4414 DupString(class_name, yylval.string);
4415 }
4416 }
4417 break;
4418
4419 case 161:
4420
4421 /* Line 1455 of yacc.c */
4422 #line 1182 "ircd_parser.y"
4423 {
4424 if (conf_parser_ctx.pass == 2)
4425 yy_aconf->modes = 0;
4426 }
4427 break;
4428
4429 case 165:
4430
4431 /* Line 1455 of yacc.c */
4432 #line 1189 "ircd_parser.y"
4433 {
4434 if (conf_parser_ctx.pass == 2)
4435 yy_aconf->modes |= UMODE_BOTS;
4436 }
4437 break;
4438
4439 case 166:
4440
4441 /* Line 1455 of yacc.c */
4442 #line 1193 "ircd_parser.y"
4443 {
4444 if (conf_parser_ctx.pass == 2)
4445 yy_aconf->modes |= UMODE_CCONN;
4446 }
4447 break;
4448
4449 case 167:
4450
4451 /* Line 1455 of yacc.c */
4452 #line 1197 "ircd_parser.y"
4453 {
4454 if (conf_parser_ctx.pass == 2)
4455 yy_aconf->modes |= UMODE_CCONN_FULL;
4456 }
4457 break;
4458
4459 case 168:
4460
4461 /* Line 1455 of yacc.c */
4462 #line 1201 "ircd_parser.y"
4463 {
4464 if (conf_parser_ctx.pass == 2)
4465 yy_aconf->modes |= UMODE_DEAF;
4466 }
4467 break;
4468
4469 case 169:
4470
4471 /* Line 1455 of yacc.c */
4472 #line 1205 "ircd_parser.y"
4473 {
4474 if (conf_parser_ctx.pass == 2)
4475 yy_aconf->modes |= UMODE_DEBUG;
4476 }
4477 break;
4478
4479 case 170:
4480
4481 /* Line 1455 of yacc.c */
4482 #line 1209 "ircd_parser.y"
4483 {
4484 if (conf_parser_ctx.pass == 2)
4485 yy_aconf->modes |= UMODE_FULL;
4486 }
4487 break;
4488
4489 case 171:
4490
4491 /* Line 1455 of yacc.c */
4492 #line 1213 "ircd_parser.y"
4493 {
4494 if (conf_parser_ctx.pass == 2)
4495 yy_aconf->modes |= UMODE_SKILL;
4496 }
4497 break;
4498
4499 case 172:
4500
4501 /* Line 1455 of yacc.c */
4502 #line 1217 "ircd_parser.y"
4503 {
4504 if (conf_parser_ctx.pass == 2)
4505 yy_aconf->modes |= UMODE_NCHANGE;
4506 }
4507 break;
4508
4509 case 173:
4510
4511 /* Line 1455 of yacc.c */
4512 #line 1221 "ircd_parser.y"
4513 {
4514 if (conf_parser_ctx.pass == 2)
4515 yy_aconf->modes |= UMODE_REJ;
4516 }
4517 break;
4518
4519 case 174:
4520
4521 /* Line 1455 of yacc.c */
4522 #line 1225 "ircd_parser.y"
4523 {
4524 if (conf_parser_ctx.pass == 2)
4525 yy_aconf->modes |= UMODE_UNAUTH;
4526 }
4527 break;
4528
4529 case 175:
4530
4531 /* Line 1455 of yacc.c */
4532 #line 1229 "ircd_parser.y"
4533 {
4534 if (conf_parser_ctx.pass == 2)
4535 yy_aconf->modes |= UMODE_SPY;
4536 }
4537 break;
4538
4539 case 176:
4540
4541 /* Line 1455 of yacc.c */
4542 #line 1233 "ircd_parser.y"
4543 {
4544 if (conf_parser_ctx.pass == 2)
4545 yy_aconf->modes |= UMODE_EXTERNAL;
4546 }
4547 break;
4548
4549 case 177:
4550
4551 /* Line 1455 of yacc.c */
4552 #line 1237 "ircd_parser.y"
4553 {
4554 if (conf_parser_ctx.pass == 2)
4555 yy_aconf->modes |= UMODE_OPERWALL;
4556 }
4557 break;
4558
4559 case 178:
4560
4561 /* Line 1455 of yacc.c */
4562 #line 1241 "ircd_parser.y"
4563 {
4564 if (conf_parser_ctx.pass == 2)
4565 yy_aconf->modes |= UMODE_SERVNOTICE;
4566 }
4567 break;
4568
4569 case 179:
4570
4571 /* Line 1455 of yacc.c */
4572 #line 1245 "ircd_parser.y"
4573 {
4574 if (conf_parser_ctx.pass == 2)
4575 yy_aconf->modes |= UMODE_INVISIBLE;
4576 }
4577 break;
4578
4579 case 180:
4580
4581 /* Line 1455 of yacc.c */
4582 #line 1249 "ircd_parser.y"
4583 {
4584 if (conf_parser_ctx.pass == 2)
4585 yy_aconf->modes |= UMODE_WALLOP;
4586 }
4587 break;
4588
4589 case 181:
4590
4591 /* Line 1455 of yacc.c */
4592 #line 1253 "ircd_parser.y"
4593 {
4594 if (conf_parser_ctx.pass == 2)
4595 yy_aconf->modes |= UMODE_SOFTCALLERID;
4596 }
4597 break;
4598
4599 case 182:
4600
4601 /* Line 1455 of yacc.c */
4602 #line 1257 "ircd_parser.y"
4603 {
4604 if (conf_parser_ctx.pass == 2)
4605 yy_aconf->modes |= UMODE_CALLERID;
4606 }
4607 break;
4608
4609 case 183:
4610
4611 /* Line 1455 of yacc.c */
4612 #line 1261 "ircd_parser.y"
4613 {
4614 if (conf_parser_ctx.pass == 2)
4615 yy_aconf->modes |= UMODE_LOCOPS;
4616 }
4617 break;
4618
4619 case 184:
4620
4621 /* Line 1455 of yacc.c */
4622 #line 1267 "ircd_parser.y"
4623 {
4624 if (conf_parser_ctx.pass == 2)
4625 {
4626 if (yylval.number)
4627 yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
4628 else
4629 yy_aconf->port &= ~OPER_FLAG_GLOBAL_KILL;
4630 }
4631 }
4632 break;
4633
4634 case 185:
4635
4636 /* Line 1455 of yacc.c */
4637 #line 1278 "ircd_parser.y"
4638 {
4639 if (conf_parser_ctx.pass == 2)
4640 {
4641 if (yylval.number)
4642 yy_aconf->port |= OPER_FLAG_REMOTE;
4643 else
4644 yy_aconf->port &= ~OPER_FLAG_REMOTE;
4645 }
4646 }
4647 break;
4648
4649 case 186:
4650
4651 /* Line 1455 of yacc.c */
4652 #line 1289 "ircd_parser.y"
4653 {
4654 if (conf_parser_ctx.pass == 2)
4655 {
4656 if (yylval.number)
4657 yy_aconf->port |= OPER_FLAG_REMOTEBAN;
4658 else
4659 yy_aconf->port &= ~OPER_FLAG_REMOTEBAN;
4660 }
4661 }
4662 break;
4663
4664 case 187:
4665
4666 /* Line 1455 of yacc.c */
4667 #line 1300 "ircd_parser.y"
4668 {
4669 if (conf_parser_ctx.pass == 2)
4670 {
4671 if (yylval.number)
4672 yy_aconf->port |= OPER_FLAG_K;
4673 else
4674 yy_aconf->port &= ~OPER_FLAG_K;
4675 }
4676 }
4677 break;
4678
4679 case 188:
4680
4681 /* Line 1455 of yacc.c */
4682 #line 1311 "ircd_parser.y"
4683 {
4684 if (conf_parser_ctx.pass == 2)
4685 {
4686 if (yylval.number)
4687 yy_aconf->port |= OPER_FLAG_X;
4688 else
4689 yy_aconf->port &= ~OPER_FLAG_X;
4690 }
4691 }
4692 break;
4693
4694 case 189:
4695
4696 /* Line 1455 of yacc.c */
4697 #line 1322 "ircd_parser.y"
4698 {
4699 if (conf_parser_ctx.pass == 2)
4700 {
4701 if (yylval.number)
4702 yy_aconf->port |= OPER_FLAG_UNKLINE;
4703 else
4704 yy_aconf->port &= ~OPER_FLAG_UNKLINE;
4705 }
4706 }
4707 break;
4708
4709 case 190:
4710
4711 /* Line 1455 of yacc.c */
4712 #line 1333 "ircd_parser.y"
4713 {
4714 if (conf_parser_ctx.pass == 2)
4715 {
4716 if (yylval.number)
4717 yy_aconf->port |= OPER_FLAG_GLINE;
4718 else
4719 yy_aconf->port &= ~OPER_FLAG_GLINE;
4720 }
4721 }
4722 break;
4723
4724 case 191:
4725
4726 /* Line 1455 of yacc.c */
4727 #line 1344 "ircd_parser.y"
4728 {
4729 if (conf_parser_ctx.pass == 2)
4730 {
4731 if (yylval.number)
4732 yy_aconf->port |= OPER_FLAG_N;
4733 else
4734 yy_aconf->port &= ~OPER_FLAG_N;
4735 }
4736 }
4737 break;
4738
4739 case 192:
4740
4741 /* Line 1455 of yacc.c */
4742 #line 1355 "ircd_parser.y"
4743 {
4744 if (conf_parser_ctx.pass == 2)
4745 {
4746 if (yylval.number)
4747 yy_aconf->port |= OPER_FLAG_DIE;
4748 else
4749 yy_aconf->port &= ~OPER_FLAG_DIE;
4750 }
4751 }
4752 break;
4753
4754 case 193:
4755
4756 /* Line 1455 of yacc.c */
4757 #line 1366 "ircd_parser.y"
4758 {
4759 if (conf_parser_ctx.pass == 2)
4760 {
4761 if (yylval.number)
4762 yy_aconf->port |= OPER_FLAG_REHASH;
4763 else
4764 yy_aconf->port &= ~OPER_FLAG_REHASH;
4765 }
4766 }
4767 break;
4768
4769 case 194:
4770
4771 /* Line 1455 of yacc.c */
4772 #line 1377 "ircd_parser.y"
4773 {
4774 if (conf_parser_ctx.pass == 2)
4775 {
4776 if (yylval.number)
4777 yy_aconf->port |= OPER_FLAG_ADMIN;
4778 else
4779 yy_aconf->port &= ~OPER_FLAG_ADMIN;
4780 }
4781 }
4782 break;
4783
4784 case 195:
4785
4786 /* Line 1455 of yacc.c */
4787 #line 1388 "ircd_parser.y"
4788 {
4789 if (conf_parser_ctx.pass == 2)
4790 {
4791 if (yylval.number)
4792 yy_aconf->port |= OPER_FLAG_HIDDEN_ADMIN;
4793 else
4794 yy_aconf->port &= ~OPER_FLAG_HIDDEN_ADMIN;
4795 }
4796 }
4797 break;
4798
4799 case 196:
4800
4801 /* Line 1455 of yacc.c */
4802 #line 1399 "ircd_parser.y"
4803 {
4804 if (conf_parser_ctx.pass == 2)
4805 {
4806 if (yylval.number)
4807 yy_aconf->port |= OPER_FLAG_HIDDEN_OPER;
4808 else
4809 yy_aconf->port &= ~OPER_FLAG_HIDDEN_OPER;
4810 }
4811 }
4812 break;
4813
4814 case 197:
4815
4816 /* Line 1455 of yacc.c */
4817 #line 1410 "ircd_parser.y"
4818 {
4819 if (conf_parser_ctx.pass == 2)
4820 {
4821 if (yylval.number)
4822 yy_aconf->port |= OPER_FLAG_OPERWALL;
4823 else
4824 yy_aconf->port &= ~OPER_FLAG_OPERWALL;
4825 }
4826 }
4827 break;
4828
4829 case 198:
4830
4831 /* Line 1455 of yacc.c */
4832 #line 1421 "ircd_parser.y"
4833 {
4834 }
4835 break;
4836
4837 case 202:
4838
4839 /* Line 1455 of yacc.c */
4840 #line 1425 "ircd_parser.y"
4841 { not_atom = 1; }
4842 break;
4843
4844 case 204:
4845
4846 /* Line 1455 of yacc.c */
4847 #line 1426 "ircd_parser.y"
4848 { not_atom = 0; }
4849 break;
4850
4851 case 206:
4852
4853 /* Line 1455 of yacc.c */
4854 #line 1429 "ircd_parser.y"
4855 {
4856 if (conf_parser_ctx.pass == 2)
4857 {
4858 if (not_atom)yy_aconf->port &= ~OPER_FLAG_GLOBAL_KILL;
4859 else yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
4860 }
4861 }
4862 break;
4863
4864 case 207:
4865
4866 /* Line 1455 of yacc.c */
4867 #line 1436 "ircd_parser.y"
4868 {
4869 if (conf_parser_ctx.pass == 2)
4870 {
4871 if (not_atom) yy_aconf->port &= ~OPER_FLAG_REMOTE;
4872 else yy_aconf->port |= OPER_FLAG_REMOTE;
4873 }
4874 }
4875 break;
4876
4877 case 208:
4878
4879 /* Line 1455 of yacc.c */
4880 #line 1443 "ircd_parser.y"
4881 {
4882 if (conf_parser_ctx.pass == 2)
4883 {
4884 if (not_atom) yy_aconf->port &= ~OPER_FLAG_K;
4885 else yy_aconf->port |= OPER_FLAG_K;
4886 }
4887 }
4888 break;
4889
4890 case 209:
4891
4892 /* Line 1455 of yacc.c */
4893 #line 1450 "ircd_parser.y"
4894 {
4895 if (conf_parser_ctx.pass == 2)
4896 {
4897 if (not_atom) yy_aconf->port &= ~OPER_FLAG_UNKLINE;
4898 else yy_aconf->port |= OPER_FLAG_UNKLINE;
4899 }
4900 }
4901 break;
4902
4903 case 210:
4904
4905 /* Line 1455 of yacc.c */
4906 #line 1457 "ircd_parser.y"
4907 {
4908 if (conf_parser_ctx.pass == 2)
4909 {
4910 if (not_atom) yy_aconf->port &= ~OPER_FLAG_X;
4911 else yy_aconf->port |= OPER_FLAG_X;
4912 }
4913 }
4914 break;
4915
4916 case 211:
4917
4918 /* Line 1455 of yacc.c */
4919 #line 1464 "ircd_parser.y"
4920 {
4921 if (conf_parser_ctx.pass == 2)
4922 {
4923 if (not_atom) yy_aconf->port &= ~OPER_FLAG_GLINE;
4924 else yy_aconf->port |= OPER_FLAG_GLINE;
4925 }
4926 }
4927 break;
4928
4929 case 212:
4930
4931 /* Line 1455 of yacc.c */
4932 #line 1471 "ircd_parser.y"
4933 {
4934 if (conf_parser_ctx.pass == 2)
4935 {
4936 if (not_atom) yy_aconf->port &= ~OPER_FLAG_DIE;
4937 else yy_aconf->port |= OPER_FLAG_DIE;
4938 }
4939 }
4940 break;
4941
4942 case 213:
4943
4944 /* Line 1455 of yacc.c */
4945 #line 1478 "ircd_parser.y"
4946 {
4947 if (conf_parser_ctx.pass == 2)
4948 {
4949 if (not_atom) yy_aconf->port &= ~OPER_FLAG_REHASH;
4950 else yy_aconf->port |= OPER_FLAG_REHASH;
4951 }
4952 }
4953 break;
4954
4955 case 214:
4956
4957 /* Line 1455 of yacc.c */
4958 #line 1485 "ircd_parser.y"
4959 {
4960 if (conf_parser_ctx.pass == 2)
4961 {
4962 if (not_atom) yy_aconf->port &= ~OPER_FLAG_ADMIN;
4963 else yy_aconf->port |= OPER_FLAG_ADMIN;
4964 }
4965 }
4966 break;
4967
4968 case 215:
4969
4970 /* Line 1455 of yacc.c */
4971 #line 1492 "ircd_parser.y"
4972 {
4973 if (conf_parser_ctx.pass == 2)
4974 {
4975 if (not_atom) yy_aconf->port &= ~OPER_FLAG_HIDDEN_ADMIN;
4976 else yy_aconf->port |= OPER_FLAG_HIDDEN_ADMIN;
4977 }
4978 }
4979 break;
4980
4981 case 216:
4982
4983 /* Line 1455 of yacc.c */
4984 #line 1499 "ircd_parser.y"
4985 {
4986 if (conf_parser_ctx.pass == 2)
4987 {
4988 if (not_atom) yy_aconf->port &= ~OPER_FLAG_N;
4989 else yy_aconf->port |= OPER_FLAG_N;
4990 }
4991 }
4992 break;
4993
4994 case 217:
4995
4996 /* Line 1455 of yacc.c */
4997 #line 1506 "ircd_parser.y"
4998 {
4999 if (conf_parser_ctx.pass == 2)
5000 {
5001 if (not_atom) yy_aconf->port &= ~OPER_FLAG_OPERWALL;
5002 else yy_aconf->port |= OPER_FLAG_OPERWALL;
5003 }
5004 }
5005 break;
5006
5007 case 218:
5008
5009 /* Line 1455 of yacc.c */
5010 #line 1513 "ircd_parser.y"
5011 {
5012 if (conf_parser_ctx.pass == 2)
5013 {
5014 if (not_atom) yy_aconf->port &= ~OPER_FLAG_OPER_SPY;
5015 else yy_aconf->port |= OPER_FLAG_OPER_SPY;
5016 }
5017 }
5018 break;
5019
5020 case 219:
5021
5022 /* Line 1455 of yacc.c */
5023 #line 1520 "ircd_parser.y"
5024 {
5025 if (conf_parser_ctx.pass == 2)
5026 {
5027 if (not_atom) yy_aconf->port &= ~OPER_FLAG_HIDDEN_OPER;
5028 else yy_aconf->port |= OPER_FLAG_HIDDEN_OPER;
5029 }
5030 }
5031 break;
5032
5033 case 220:
5034
5035 /* Line 1455 of yacc.c */
5036 #line 1527 "ircd_parser.y"
5037 {
5038 if (conf_parser_ctx.pass == 2)
5039 {
5040 if (not_atom) yy_aconf->port &= ~OPER_FLAG_REMOTEBAN;
5041 else yy_aconf->port |= OPER_FLAG_REMOTEBAN;
5042 }
5043 }
5044 break;
5045
5046 case 221:
5047
5048 /* Line 1455 of yacc.c */
5049 #line 1534 "ircd_parser.y"
5050 {
5051 if (conf_parser_ctx.pass == 2)
5052 {
5053 if (not_atom) ClearConfEncrypted(yy_aconf);
5054 else SetConfEncrypted(yy_aconf);
5055 }
5056 }
5057 break;
5058
5059 case 222:
5060
5061 /* Line 1455 of yacc.c */
5062 #line 1547 "ircd_parser.y"
5063 {
5064 if (conf_parser_ctx.pass == 1)
5065 {
5066 yy_conf = make_conf_item(CLASS_TYPE);
5067 yy_class = map_to_conf(yy_conf);
5068 }
5069 }
5070 break;
5071
5072 case 223:
5073
5074 /* Line 1455 of yacc.c */
5075 #line 1554 "ircd_parser.y"
5076 {
5077 if (conf_parser_ctx.pass == 1)
5078 {
5079 struct ConfItem *cconf = NULL;
5080 struct ClassItem *class = NULL;
5081
5082 if (yy_class_name == NULL)
5083 delete_conf_item(yy_conf);
5084 else
5085 {
5086 cconf = find_exact_name_conf(CLASS_TYPE, yy_class_name, NULL, NULL);
5087
5088 if (cconf != NULL) /* The class existed already */
5089 {
5090 int user_count = 0;
5091
5092 rebuild_cidr_class(cconf, yy_class);
5093
5094 class = map_to_conf(cconf);
5095
5096 user_count = class->curr_user_count;
5097 memcpy(class, yy_class, sizeof(*class));
5098 class->curr_user_count = user_count;
5099 class->active = 1;
5100
5101 delete_conf_item(yy_conf);
5102
5103 MyFree(cconf->name); /* Allows case change of class name */
5104 cconf->name = yy_class_name;
5105 }
5106 else /* Brand new class */
5107 {
5108 MyFree(yy_conf->name); /* just in case it was allocated */
5109 yy_conf->name = yy_class_name;
5110 yy_class->active = 1;
5111 }
5112 }
5113
5114 yy_class_name = NULL;
5115 }
5116 }
5117 break;
5118
5119 case 242:
5120
5121 /* Line 1455 of yacc.c */
5122 #line 1614 "ircd_parser.y"
5123 {
5124 if (conf_parser_ctx.pass == 1)
5125 {
5126 MyFree(yy_class_name);
5127 DupString(yy_class_name, yylval.string);
5128 }
5129 }
5130 break;
5131
5132 case 243:
5133
5134 /* Line 1455 of yacc.c */
5135 #line 1623 "ircd_parser.y"
5136 {
5137 if (conf_parser_ctx.pass == 1)
5138 {
5139 MyFree(yy_class_name);
5140 DupString(yy_class_name, yylval.string);
5141 }
5142 }
5143 break;
5144
5145 case 244:
5146
5147 /* Line 1455 of yacc.c */
5148 #line 1632 "ircd_parser.y"
5149 {
5150 if (conf_parser_ctx.pass == 1)
5151 PingFreq(yy_class) = (yyvsp[(3) - (4)].number);
5152 }
5153 break;
5154
5155 case 245:
5156
5157 /* Line 1455 of yacc.c */
5158 #line 1638 "ircd_parser.y"
5159 {
5160 if (conf_parser_ctx.pass == 1)
5161 PingWarning(yy_class) = (yyvsp[(3) - (4)].number);
5162 }
5163 break;
5164
5165 case 246:
5166
5167 /* Line 1455 of yacc.c */
5168 #line 1644 "ircd_parser.y"
5169 {
5170 if (conf_parser_ctx.pass == 1)
5171 MaxPerIp(yy_class) = (yyvsp[(3) - (4)].number);
5172 }
5173 break;
5174
5175 case 247:
5176
5177 /* Line 1455 of yacc.c */
5178 #line 1650 "ircd_parser.y"
5179 {
5180 if (conf_parser_ctx.pass == 1)
5181 ConFreq(yy_class) = (yyvsp[(3) - (4)].number);
5182 }
5183 break;
5184
5185 case 248:
5186
5187 /* Line 1455 of yacc.c */
5188 #line 1656 "ircd_parser.y"
5189 {
5190 if (conf_parser_ctx.pass == 1)
5191 MaxTotal(yy_class) = (yyvsp[(3) - (4)].number);
5192 }
5193 break;
5194
5195 case 249:
5196
5197 /* Line 1455 of yacc.c */
5198 #line 1662 "ircd_parser.y"
5199 {
5200 if (conf_parser_ctx.pass == 1)
5201 MaxGlobal(yy_class) = (yyvsp[(3) - (4)].number);
5202 }
5203 break;
5204
5205 case 250:
5206
5207 /* Line 1455 of yacc.c */
5208 #line 1668 "ircd_parser.y"
5209 {
5210 if (conf_parser_ctx.pass == 1)
5211 MaxLocal(yy_class) = (yyvsp[(3) - (4)].number);
5212 }
5213 break;
5214
5215 case 251:
5216
5217 /* Line 1455 of yacc.c */
5218 #line 1674 "ircd_parser.y"
5219 {
5220 if (conf_parser_ctx.pass == 1)
5221 MaxIdent(yy_class) = (yyvsp[(3) - (4)].number);
5222 }
5223 break;
5224
5225 case 252:
5226
5227 /* Line 1455 of yacc.c */
5228 #line 1680 "ircd_parser.y"
5229 {
5230 if (conf_parser_ctx.pass == 1)
5231 MaxSendq(yy_class) = (yyvsp[(3) - (4)].number);
5232 }
5233 break;
5234
5235 case 253:
5236
5237 /* Line 1455 of yacc.c */
5238 #line 1686 "ircd_parser.y"
5239 {
5240 if (conf_parser_ctx.pass == 1)
5241 CidrBitlenIPV4(yy_class) = (yyvsp[(3) - (4)].number);
5242 }
5243 break;
5244
5245 case 254:
5246
5247 /* Line 1455 of yacc.c */
5248 #line 1692 "ircd_parser.y"
5249 {
5250 if (conf_parser_ctx.pass == 1)
5251 CidrBitlenIPV6(yy_class) = (yyvsp[(3) - (4)].number);
5252 }
5253 break;
5254
5255 case 255:
5256
5257 /* Line 1455 of yacc.c */
5258 #line 1698 "ircd_parser.y"
5259 {
5260 if (conf_parser_ctx.pass == 1)
5261 NumberPerCidr(yy_class) = (yyvsp[(3) - (4)].number);
5262 }
5263 break;
5264
5265 case 256:
5266
5267 /* Line 1455 of yacc.c */
5268 #line 1707 "ircd_parser.y"
5269 {
5270 if (conf_parser_ctx.pass == 2)
5271 {
5272 listener_address = NULL;
5273 listener_flags = 0;
5274 }
5275 }
5276 break;
5277
5278 case 257:
5279
5280 /* Line 1455 of yacc.c */
5281 #line 1714 "ircd_parser.y"
5282 {
5283 if (conf_parser_ctx.pass == 2)
5284 {
5285 MyFree(listener_address);
5286 listener_address = NULL;
5287 }
5288 }
5289 break;
5290
5291 case 258:
5292
5293 /* Line 1455 of yacc.c */
5294 #line 1723 "ircd_parser.y"
5295 {
5296 listener_flags = 0;
5297 }
5298 break;
5299
5300 case 262:
5301
5302 /* Line 1455 of yacc.c */
5303 #line 1729 "ircd_parser.y"
5304 {
5305 if (conf_parser_ctx.pass == 2)
5306 listener_flags |= LISTENER_SSL;
5307 }
5308 break;
5309
5310 case 263:
5311
5312 /* Line 1455 of yacc.c */
5313 #line 1733 "ircd_parser.y"
5314 {
5315 if (conf_parser_ctx.pass == 2)
5316 listener_flags |= LISTENER_HIDDEN;
5317 }
5318 break;
5319
5320 case 264:
5321
5322 /* Line 1455 of yacc.c */
5323 #line 1737 "ircd_parser.y"
5324 {
5325 if (conf_parser_ctx.pass == 2)
5326 listener_flags |= LISTENER_SERVER;
5327 }
5328 break;
5329
5330 case 272:
5331
5332 /* Line 1455 of yacc.c */
5333 #line 1747 "ircd_parser.y"
5334 { listener_flags = 0; }
5335 break;
5336
5337 case 276:
5338
5339 /* Line 1455 of yacc.c */
5340 #line 1752 "ircd_parser.y"
5341 {
5342 if (conf_parser_ctx.pass == 2)
5343 {
5344 if ((listener_flags & LISTENER_SSL))
5345 #ifdef HAVE_LIBCRYPTO
5346 if (!ServerInfo.server_ctx)
5347 #endif
5348 {
5349 yyerror("SSL not available - port closed");
5350 break;
5351 }
5352 add_listener((yyvsp[(1) - (1)].number), listener_address, listener_flags);
5353 }
5354 }
5355 break;
5356
5357 case 277:
5358
5359 /* Line 1455 of yacc.c */
5360 #line 1766 "ircd_parser.y"
5361 {
5362 if (conf_parser_ctx.pass == 2)
5363 {
5364 int i;
5365
5366 if ((listener_flags & LISTENER_SSL))
5367 #ifdef HAVE_LIBCRYPTO
5368 if (!ServerInfo.server_ctx)
5369 #endif
5370 {
5371 yyerror("SSL not available - port closed");
5372 break;
5373 }
5374
5375 for (i = (yyvsp[(1) - (3)].number); i <= (yyvsp[(3) - (3)].number); ++i)
5376 add_listener(i, listener_address, listener_flags);
5377 }
5378 }
5379 break;
5380
5381 case 278:
5382
5383 /* Line 1455 of yacc.c */
5384 #line 1786 "ircd_parser.y"
5385 {
5386 if (conf_parser_ctx.pass == 2)
5387 {
5388 MyFree(listener_address);
5389 DupString(listener_address, yylval.string);
5390 }
5391 }
5392 break;
5393
5394 case 279:
5395
5396 /* Line 1455 of yacc.c */
5397 #line 1795 "ircd_parser.y"
5398 {
5399 if (conf_parser_ctx.pass == 2)
5400 {
5401 MyFree(listener_address);
5402 DupString(listener_address, yylval.string);
5403 }
5404 }
5405 break;
5406
5407 case 280:
5408
5409 /* Line 1455 of yacc.c */
5410 #line 1807 "ircd_parser.y"
5411 {
5412 if (conf_parser_ctx.pass == 2)
5413 {
5414 yy_conf = make_conf_item(CLIENT_TYPE);
5415 yy_aconf = map_to_conf(yy_conf);
5416 }
5417 else
5418 {
5419 MyFree(class_name);
5420 class_name = NULL;
5421 }
5422 }
5423 break;
5424
5425 case 281:
5426
5427 /* Line 1455 of yacc.c */
5428 #line 1819 "ircd_parser.y"
5429 {
5430 if (conf_parser_ctx.pass == 2)
5431 {
5432 struct CollectItem *yy_tmp = NULL;
5433 dlink_node *ptr = NULL, *next_ptr = NULL;
5434
5435 if (yy_aconf->user && yy_aconf->host)
5436 {
5437 conf_add_class_to_conf(yy_conf, class_name);
5438 add_conf_by_address(CONF_CLIENT, yy_aconf);
5439 }
5440 else
5441 delete_conf_item(yy_conf);
5442
5443 /* copy over settings from first struct */
5444 DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
5445 {
5446 struct AccessItem *new_aconf;
5447 struct ConfItem *new_conf;
5448
5449 new_conf = make_conf_item(CLIENT_TYPE);
5450 new_aconf = map_to_conf(new_conf);
5451
5452 yy_tmp = ptr->data;
5453
5454 assert(yy_tmp->user && yy_tmp->host);
5455
5456 if (yy_aconf->passwd != NULL)
5457 DupString(new_aconf->passwd, yy_aconf->passwd);
5458 if (yy_conf->name != NULL)
5459 DupString(new_conf->name, yy_conf->name);
5460 if (yy_aconf->passwd != NULL)
5461 DupString(new_aconf->passwd, yy_aconf->passwd);
5462
5463 new_aconf->flags = yy_aconf->flags;
5464 new_aconf->port = yy_aconf->port;
5465
5466 DupString(new_aconf->user, yy_tmp->user);
5467 collapse(new_aconf->user);
5468
5469 DupString(new_aconf->host, yy_tmp->host);
5470 collapse(new_aconf->host);
5471
5472 conf_add_class_to_conf(new_conf, class_name);
5473 add_conf_by_address(CONF_CLIENT, new_aconf);
5474 dlinkDelete(&yy_tmp->node, &col_conf_list);
5475 free_collect_item(yy_tmp);
5476 }
5477
5478 MyFree(class_name);
5479 class_name = NULL;
5480 yy_conf = NULL;
5481 yy_aconf = NULL;
5482 }
5483 }
5484 break;
5485
5486 case 301:
5487
5488 /* Line 1455 of yacc.c */
5489 #line 1884 "ircd_parser.y"
5490 {
5491 if (conf_parser_ctx.pass == 2)
5492 {
5493 struct CollectItem *yy_tmp = NULL;
5494 struct split_nuh_item nuh;
5495
5496 nuh.nuhmask = yylval.string;
5497 nuh.nickptr = NULL;
5498 nuh.userptr = userbuf;
5499 nuh.hostptr = hostbuf;
5500
5501 nuh.nicksize = 0;
5502 nuh.usersize = sizeof(userbuf);
5503 nuh.hostsize = sizeof(hostbuf);
5504
5505 split_nuh(&nuh);
5506
5507 if (yy_aconf->user == NULL)
5508 {
5509 DupString(yy_aconf->user, userbuf);
5510 DupString(yy_aconf->host, hostbuf);
5511 }
5512 else
5513 {
5514 yy_tmp = MyMalloc(sizeof(struct CollectItem));
5515
5516 DupString(yy_tmp->user, userbuf);
5517 DupString(yy_tmp->host, hostbuf);
5518
5519 dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
5520 }
5521 }
5522 }
5523 break;
5524
5525 case 302:
5526
5527 /* Line 1455 of yacc.c */
5528 #line 1921 "ircd_parser.y"
5529 {
5530 if (conf_parser_ctx.pass == 2)
5531 {
5532 /* be paranoid */
5533 if (yy_aconf->passwd != NULL)
5534 memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
5535
5536 MyFree(yy_aconf->passwd);
5537 DupString(yy_aconf->passwd, yylval.string);
5538 }
5539 }
5540 break;
5541
5542 case 303:
5543
5544 /* Line 1455 of yacc.c */
5545 #line 1934 "ircd_parser.y"
5546 {
5547 if (conf_parser_ctx.pass == 2)
5548 {
5549 if (yylval.number)
5550 yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
5551 else
5552 yy_aconf->flags &= ~CONF_FLAGS_SPOOF_NOTICE;
5553 }
5554 }
5555 break;
5556
5557 case 304:
5558
5559 /* Line 1455 of yacc.c */
5560 #line 1945 "ircd_parser.y"
5561 {
5562 if (conf_parser_ctx.pass == 2)
5563 {
5564 MyFree(class_name);
5565 DupString(class_name, yylval.string);
5566 }
5567 }
5568 break;
5569
5570 case 305:
5571
5572 /* Line 1455 of yacc.c */
5573 #line 1954 "ircd_parser.y"
5574 {
5575 if (conf_parser_ctx.pass == 2)
5576 {
5577 if (yylval.number)
5578 SetConfEncrypted(yy_aconf);
5579 else
5580 ClearConfEncrypted(yy_aconf);
5581 }
5582 }
5583 break;
5584
5585 case 306:
5586
5587 /* Line 1455 of yacc.c */
5588 #line 1965 "ircd_parser.y"
5589 {
5590 }
5591 break;
5592
5593 case 310:
5594
5595 /* Line 1455 of yacc.c */
5596 #line 1969 "ircd_parser.y"
5597 { not_atom = 1; }
5598 break;
5599
5600 case 312:
5601
5602 /* Line 1455 of yacc.c */
5603 #line 1970 "ircd_parser.y"
5604 { not_atom = 0; }
5605 break;
5606
5607 case 314:
5608
5609 /* Line 1455 of yacc.c */
5610 #line 1973 "ircd_parser.y"
5611 {
5612 if (conf_parser_ctx.pass == 2)
5613 {
5614 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_SPOOF_NOTICE;
5615 else yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
5616 }
5617
5618 }
5619 break;
5620
5621 case 315:
5622
5623 /* Line 1455 of yacc.c */
5624 #line 1981 "ircd_parser.y"
5625 {
5626 if (conf_parser_ctx.pass == 2)
5627 {
5628 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NOLIMIT;
5629 else yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
5630 }
5631 }
5632 break;
5633
5634 case 316:
5635
5636 /* Line 1455 of yacc.c */
5637 #line 1988 "ircd_parser.y"
5638 {
5639 if (conf_parser_ctx.pass == 2)
5640 {
5641 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTKLINE;
5642 else yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
5643 }
5644 }
5645 break;
5646
5647 case 317:
5648
5649 /* Line 1455 of yacc.c */
5650 #line 1995 "ircd_parser.y"
5651 {
5652 if (conf_parser_ctx.pass == 2)
5653 {
5654 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NEED_IDENTD;
5655 else yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
5656 }
5657 }
5658 break;
5659
5660 case 318:
5661
5662 /* Line 1455 of yacc.c */
5663 #line 2002 "ircd_parser.y"
5664 {
5665 if (conf_parser_ctx.pass == 2)
5666 {
5667 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_CAN_FLOOD;
5668 else yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
5669 }
5670 }
5671 break;
5672
5673 case 319:
5674
5675 /* Line 1455 of yacc.c */
5676 #line 2009 "ircd_parser.y"
5677 {
5678 if (conf_parser_ctx.pass == 2)
5679 {
5680 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_IDLE_LINED;
5681 else yy_aconf->flags |= CONF_FLAGS_IDLE_LINED;
5682 }
5683 }
5684 break;
5685
5686 case 320:
5687
5688 /* Line 1455 of yacc.c */
5689 #line 2016 "ircd_parser.y"
5690 {
5691 if (conf_parser_ctx.pass == 2)
5692 {
5693 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NO_TILDE;
5694 else yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
5695 }
5696 }
5697 break;
5698
5699 case 321:
5700
5701 /* Line 1455 of yacc.c */
5702 #line 2023 "ircd_parser.y"
5703 {
5704 if (conf_parser_ctx.pass == 2)
5705 {
5706 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTGLINE;
5707 else yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
5708 }
5709 }
5710 break;
5711
5712 case 322:
5713
5714 /* Line 1455 of yacc.c */
5715 #line 2030 "ircd_parser.y"
5716 {
5717 if (conf_parser_ctx.pass == 2)
5718 {
5719 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTRESV;
5720 else yy_aconf->flags |= CONF_FLAGS_EXEMPTRESV;
5721 }
5722 }
5723 break;
5724
5725 case 323:
5726
5727 /* Line 1455 of yacc.c */
5728 #line 2037 "ircd_parser.y"
5729 {
5730 if (conf_parser_ctx.pass == 2)
5731 {
5732 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NEED_PASSWORD;
5733 else yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
5734 }
5735 }
5736 break;
5737
5738 case 324:
5739
5740 /* Line 1455 of yacc.c */
5741 #line 2046 "ircd_parser.y"
5742 {
5743 if (conf_parser_ctx.pass == 2)
5744 {
5745 if (yylval.number)
5746 yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
5747 else
5748 yy_aconf->flags &= ~CONF_FLAGS_EXEMPTKLINE;
5749 }
5750 }
5751 break;
5752
5753 case 325:
5754
5755 /* Line 1455 of yacc.c */
5756 #line 2057 "ircd_parser.y"
5757 {
5758 if (conf_parser_ctx.pass == 2)
5759 {
5760 if (yylval.number)
5761 yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
5762 else
5763 yy_aconf->flags &= ~CONF_FLAGS_NEED_IDENTD;
5764 }
5765 }
5766 break;
5767
5768 case 326:
5769
5770 /* Line 1455 of yacc.c */
5771 #line 2068 "ircd_parser.y"
5772 {
5773 if (conf_parser_ctx.pass == 2)
5774 {
5775 if (yylval.number)
5776 yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
5777 else
5778 yy_aconf->flags &= ~CONF_FLAGS_NOLIMIT;
5779 }
5780 }
5781 break;
5782
5783 case 327:
5784
5785 /* Line 1455 of yacc.c */
5786 #line 2079 "ircd_parser.y"
5787 {
5788 if (conf_parser_ctx.pass == 2)
5789 {
5790 if (yylval.number)
5791 yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
5792 else
5793 yy_aconf->flags &= ~CONF_FLAGS_CAN_FLOOD;
5794 }
5795 }
5796 break;
5797
5798 case 328:
5799
5800 /* Line 1455 of yacc.c */
5801 #line 2090 "ircd_parser.y"
5802 {
5803 if (conf_parser_ctx.pass == 2)
5804 {
5805 if (yylval.number)
5806 yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
5807 else
5808 yy_aconf->flags &= ~CONF_FLAGS_NO_TILDE;
5809 }
5810 }
5811 break;
5812
5813 case 329:
5814
5815 /* Line 1455 of yacc.c */
5816 #line 2101 "ircd_parser.y"
5817 {
5818 if (conf_parser_ctx.pass == 2)
5819 {
5820 if (yylval.number)
5821 yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
5822 else
5823 yy_aconf->flags &= ~CONF_FLAGS_EXEMPTGLINE;
5824 }
5825 }
5826 break;
5827
5828 case 330:
5829
5830 /* Line 1455 of yacc.c */
5831 #line 2113 "ircd_parser.y"
5832 {
5833 if (conf_parser_ctx.pass == 2)
5834 {
5835 MyFree(yy_conf->name);
5836
5837 if (strlen(yylval.string) < HOSTLEN)
5838 {
5839 DupString(yy_conf->name, yylval.string);
5840 yy_aconf->flags |= CONF_FLAGS_SPOOF_IP;
5841 }
5842 else
5843 {
5844 ilog(L_ERROR, "Spoofs must be less than %d..ignoring it", HOSTLEN);
5845 yy_conf->name = NULL;
5846 }
5847 }
5848 }
5849 break;
5850
5851 case 331:
5852
5853 /* Line 1455 of yacc.c */
5854 #line 2132 "ircd_parser.y"
5855 {
5856 if (conf_parser_ctx.pass == 2)
5857 {
5858 yy_aconf->flags |= CONF_FLAGS_REDIR;
5859 MyFree(yy_conf->name);
5860 DupString(yy_conf->name, yylval.string);
5861 }
5862 }
5863 break;
5864
5865 case 332:
5866
5867 /* Line 1455 of yacc.c */
5868 #line 2142 "ircd_parser.y"
5869 {
5870 if (conf_parser_ctx.pass == 2)
5871 {
5872 yy_aconf->flags |= CONF_FLAGS_REDIR;
5873 yy_aconf->port = (yyvsp[(3) - (4)].number);
5874 }
5875 }
5876 break;
5877
5878 case 333:
5879
5880 /* Line 1455 of yacc.c */
5881 #line 2151 "ircd_parser.y"
5882 {
5883 if (conf_parser_ctx.pass == 2)
5884 {
5885 if (yylval.number)
5886 yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
5887 else
5888 yy_aconf->flags &= ~CONF_FLAGS_NEED_PASSWORD;
5889 }
5890 }
5891 break;
5892
5893 case 334:
5894
5895 /* Line 1455 of yacc.c */
5896 #line 2166 "ircd_parser.y"
5897 {
5898 if (conf_parser_ctx.pass == 2)
5899 {
5900 MyFree(resv_reason);
5901 resv_reason = NULL;
5902 }
5903 }
5904 break;
5905
5906 case 335:
5907
5908 /* Line 1455 of yacc.c */
5909 #line 2173 "ircd_parser.y"
5910 {
5911 if (conf_parser_ctx.pass == 2)
5912 {
5913 MyFree(resv_reason);
5914 resv_reason = NULL;
5915 }
5916 }
5917 break;
5918
5919 case 342:
5920
5921 /* Line 1455 of yacc.c */
5922 #line 2185 "ircd_parser.y"
5923 {
5924 if (conf_parser_ctx.pass == 2)
5925 {
5926 MyFree(resv_reason);
5927 DupString(resv_reason, yylval.string);
5928 }
5929 }
5930 break;
5931
5932 case 343:
5933
5934 /* Line 1455 of yacc.c */
5935 #line 2194 "ircd_parser.y"
5936 {
5937 if (conf_parser_ctx.pass == 2)
5938 {
5939 if (IsChanPrefix(*yylval.string))
5940 {
5941 char def_reason[] = "No reason";
5942
5943 create_channel_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5944 }
5945 }
5946 /* ignore it for now.. but we really should make a warning if
5947 * its an erroneous name --fl_ */
5948 }
5949 break;
5950
5951 case 344:
5952
5953 /* Line 1455 of yacc.c */
5954 #line 2209 "ircd_parser.y"
5955 {
5956 if (conf_parser_ctx.pass == 2)
5957 {
5958 char def_reason[] = "No reason";
5959
5960 create_nick_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5961 }
5962 }
5963 break;
5964
5965 case 345:
5966
5967 /* Line 1455 of yacc.c */
5968 #line 2222 "ircd_parser.y"
5969 {
5970 if (conf_parser_ctx.pass == 2)
5971 {
5972 yy_conf = make_conf_item(ULINE_TYPE);
5973 yy_match_item = map_to_conf(yy_conf);
5974 yy_match_item->action = SHARED_ALL;
5975 }
5976 }
5977 break;
5978
5979 case 346:
5980
5981 /* Line 1455 of yacc.c */
5982 #line 2230 "ircd_parser.y"
5983 {
5984 if (conf_parser_ctx.pass == 2)
5985 {
5986 yy_conf = NULL;
5987 }
5988 }
5989 break;
5990
5991 case 353:
5992
5993 /* Line 1455 of yacc.c */
5994 #line 2241 "ircd_parser.y"
5995 {
5996 if (conf_parser_ctx.pass == 2)
5997 {
5998 MyFree(yy_conf->name);
5999 DupString(yy_conf->name, yylval.string);
6000 }
6001 }
6002 break;
6003
6004 case 354:
6005
6006 /* Line 1455 of yacc.c */
6007 #line 2250 "ircd_parser.y"
6008 {
6009 if (conf_parser_ctx.pass == 2)
6010 {
6011 struct split_nuh_item nuh;
6012
6013 nuh.nuhmask = yylval.string;
6014 nuh.nickptr = NULL;
6015 nuh.userptr = userbuf;
6016 nuh.hostptr = hostbuf;
6017
6018 nuh.nicksize = 0;
6019 nuh.usersize = sizeof(userbuf);
6020 nuh.hostsize = sizeof(hostbuf);
6021
6022 split_nuh(&nuh);
6023
6024 DupString(yy_match_item->user, userbuf);
6025 DupString(yy_match_item->host, hostbuf);
6026 }
6027 }
6028 break;
6029
6030 case 355:
6031
6032 /* Line 1455 of yacc.c */
6033 #line 2272 "ircd_parser.y"
6034 {
6035 if (conf_parser_ctx.pass == 2)
6036 yy_match_item->action = 0;
6037 }
6038 break;
6039
6040 case 359:
6041
6042 /* Line 1455 of yacc.c */
6043 #line 2279 "ircd_parser.y"
6044 {
6045 if (conf_parser_ctx.pass == 2)
6046 yy_match_item->action |= SHARED_KLINE;
6047 }
6048 break;
6049
6050 case 360:
6051
6052 /* Line 1455 of yacc.c */
6053 #line 2283 "ircd_parser.y"
6054 {
6055 if (conf_parser_ctx.pass == 2)
6056 yy_match_item->action |= SHARED_TKLINE;
6057 }
6058 break;
6059
6060 case 361:
6061
6062 /* Line 1455 of yacc.c */
6063 #line 2287 "ircd_parser.y"
6064 {
6065 if (conf_parser_ctx.pass == 2)
6066 yy_match_item->action |= SHARED_UNKLINE;
6067 }
6068 break;
6069
6070 case 362:
6071
6072 /* Line 1455 of yacc.c */
6073 #line 2291 "ircd_parser.y"
6074 {
6075 if (conf_parser_ctx.pass == 2)
6076 yy_match_item->action |= SHARED_XLINE;
6077 }
6078 break;
6079
6080 case 363:
6081
6082 /* Line 1455 of yacc.c */
6083 #line 2295 "ircd_parser.y"
6084 {
6085 if (conf_parser_ctx.pass == 2)
6086 yy_match_item->action |= SHARED_TXLINE;
6087 }
6088 break;
6089
6090 case 364:
6091
6092 /* Line 1455 of yacc.c */
6093 #line 2299 "ircd_parser.y"
6094 {
6095 if (conf_parser_ctx.pass == 2)
6096 yy_match_item->action |= SHARED_UNXLINE;
6097 }
6098 break;
6099
6100 case 365:
6101
6102 /* Line 1455 of yacc.c */
6103 #line 2303 "ircd_parser.y"
6104 {
6105 if (conf_parser_ctx.pass == 2)
6106 yy_match_item->action |= SHARED_RESV;
6107 }
6108 break;
6109
6110 case 366:
6111
6112 /* Line 1455 of yacc.c */
6113 #line 2307 "ircd_parser.y"
6114 {
6115 if (conf_parser_ctx.pass == 2)
6116 yy_match_item->action |= SHARED_TRESV;
6117 }
6118 break;
6119
6120 case 367:
6121
6122 /* Line 1455 of yacc.c */
6123 #line 2311 "ircd_parser.y"
6124 {
6125 if (conf_parser_ctx.pass == 2)
6126 yy_match_item->action |= SHARED_UNRESV;
6127 }
6128 break;
6129
6130 case 368:
6131
6132 /* Line 1455 of yacc.c */
6133 #line 2315 "ircd_parser.y"
6134 {
6135 if (conf_parser_ctx.pass == 2)
6136 yy_match_item->action |= SHARED_LOCOPS;
6137 }
6138 break;
6139
6140 case 369:
6141
6142 /* Line 1455 of yacc.c */
6143 #line 2319 "ircd_parser.y"
6144 {
6145 if (conf_parser_ctx.pass == 2)
6146 yy_match_item->action = SHARED_ALL;
6147 }
6148 break;
6149
6150 case 370:
6151
6152 /* Line 1455 of yacc.c */
6153 #line 2328 "ircd_parser.y"
6154 {
6155 if (conf_parser_ctx.pass == 2)
6156 {
6157 yy_conf = make_conf_item(CLUSTER_TYPE);
6158 yy_conf->flags = SHARED_ALL;
6159 }
6160 }
6161 break;
6162
6163 case 371:
6164
6165 /* Line 1455 of yacc.c */
6166 #line 2335 "ircd_parser.y"
6167 {
6168 if (conf_parser_ctx.pass == 2)
6169 {
6170 if (yy_conf->name == NULL)
6171 DupString(yy_conf->name, "*");
6172 yy_conf = NULL;
6173 }
6174 }
6175 break;
6176
6177 case 377:
6178
6179 /* Line 1455 of yacc.c */
6180 #line 2348 "ircd_parser.y"
6181 {
6182 if (conf_parser_ctx.pass == 2)
6183 DupString(yy_conf->name, yylval.string);
6184 }
6185 break;
6186
6187 case 378:
6188
6189 /* Line 1455 of yacc.c */
6190 #line 2354 "ircd_parser.y"
6191 {
6192 if (conf_parser_ctx.pass == 2)
6193 yy_conf->flags = 0;
6194 }
6195 break;
6196
6197 case 382:
6198
6199 /* Line 1455 of yacc.c */
6200 #line 2361 "ircd_parser.y"
6201 {
6202 if (conf_parser_ctx.pass == 2)
6203 yy_conf->flags |= SHARED_KLINE;
6204 }
6205 break;
6206
6207 case 383:
6208
6209 /* Line 1455 of yacc.c */
6210 #line 2365 "ircd_parser.y"
6211 {
6212 if (conf_parser_ctx.pass == 2)
6213 yy_conf->flags |= SHARED_TKLINE;
6214 }
6215 break;
6216
6217 case 384:
6218
6219 /* Line 1455 of yacc.c */
6220 #line 2369 "ircd_parser.y"
6221 {
6222 if (conf_parser_ctx.pass == 2)
6223 yy_conf->flags |= SHARED_UNKLINE;
6224 }
6225 break;
6226
6227 case 385:
6228
6229 /* Line 1455 of yacc.c */
6230 #line 2373 "ircd_parser.y"
6231 {
6232 if (conf_parser_ctx.pass == 2)
6233 yy_conf->flags |= SHARED_XLINE;
6234 }
6235 break;
6236
6237 case 386:
6238
6239 /* Line 1455 of yacc.c */
6240 #line 2377 "ircd_parser.y"
6241 {
6242 if (conf_parser_ctx.pass == 2)
6243 yy_conf->flags |= SHARED_TXLINE;
6244 }
6245 break;
6246
6247 case 387:
6248
6249 /* Line 1455 of yacc.c */
6250 #line 2381 "ircd_parser.y"
6251 {
6252 if (conf_parser_ctx.pass == 2)
6253 yy_conf->flags |= SHARED_UNXLINE;
6254 }
6255 break;
6256
6257 case 388:
6258
6259 /* Line 1455 of yacc.c */
6260 #line 2385 "ircd_parser.y"
6261 {
6262 if (conf_parser_ctx.pass == 2)
6263 yy_conf->flags |= SHARED_RESV;
6264 }
6265 break;
6266
6267 case 389:
6268
6269 /* Line 1455 of yacc.c */
6270 #line 2389 "ircd_parser.y"
6271 {
6272 if (conf_parser_ctx.pass == 2)
6273 yy_conf->flags |= SHARED_TRESV;
6274 }
6275 break;
6276
6277 case 390:
6278
6279 /* Line 1455 of yacc.c */
6280 #line 2393 "ircd_parser.y"
6281 {
6282 if (conf_parser_ctx.pass == 2)
6283 yy_conf->flags |= SHARED_UNRESV;
6284 }
6285 break;
6286
6287 case 391:
6288
6289 /* Line 1455 of yacc.c */
6290 #line 2397 "ircd_parser.y"
6291 {
6292 if (conf_parser_ctx.pass == 2)
6293 yy_conf->flags |= SHARED_LOCOPS;
6294 }
6295 break;
6296
6297 case 392:
6298
6299 /* Line 1455 of yacc.c */
6300 #line 2401 "ircd_parser.y"
6301 {
6302 if (conf_parser_ctx.pass == 2)
6303 yy_conf->flags = SHARED_ALL;
6304 }
6305 break;
6306
6307 case 393:
6308
6309 /* Line 1455 of yacc.c */
6310 #line 2410 "ircd_parser.y"
6311 {
6312 if (conf_parser_ctx.pass == 2)
6313 {
6314 yy_conf = make_conf_item(SERVER_TYPE);
6315 yy_aconf = (struct AccessItem *)map_to_conf(yy_conf);
6316 yy_aconf->passwd = NULL;
6317 /* defaults */
6318 yy_aconf->port = PORTNUM;
6319
6320 if (ConfigFileEntry.burst_away)
6321 yy_aconf->flags = CONF_FLAGS_BURST_AWAY;
6322 }
6323 else
6324 {
6325 MyFree(class_name);
6326 class_name = NULL;
6327 }
6328 }
6329 break;
6330
6331 case 394:
6332
6333 /* Line 1455 of yacc.c */
6334 #line 2428 "ircd_parser.y"
6335 {
6336 if (conf_parser_ctx.pass == 2)
6337 {
6338 struct CollectItem *yy_hconf=NULL;
6339 struct CollectItem *yy_lconf=NULL;
6340 dlink_node *ptr;
6341 dlink_node *next_ptr;
6342 #ifdef HAVE_LIBCRYPTO
6343 if (yy_aconf->host &&
6344 ((yy_aconf->passwd && yy_aconf->spasswd) ||
6345 (yy_aconf->rsa_public_key && IsConfCryptLink(yy_aconf))))
6346 #else /* !HAVE_LIBCRYPTO */
6347 if (yy_aconf->host && !IsConfCryptLink(yy_aconf) &&
6348 yy_aconf->passwd && yy_aconf->spasswd)
6349 #endif /* !HAVE_LIBCRYPTO */
6350 {
6351 if (conf_add_server(yy_conf, class_name) == -1)
6352 {
6353 delete_conf_item(yy_conf);
6354 yy_conf = NULL;
6355 yy_aconf = NULL;
6356 }
6357 }
6358 else
6359 {
6360 /* Even if yy_conf ->name is NULL
6361 * should still unhook any hub/leaf confs still pending
6362 */
6363 unhook_hub_leaf_confs();
6364
6365 if (yy_conf->name != NULL)
6366 {
6367 #ifndef HAVE_LIBCRYPTO
6368 if (IsConfCryptLink(yy_aconf))
6369 yyerror("Ignoring connect block -- no OpenSSL support");
6370 #else
6371 if (IsConfCryptLink(yy_aconf) && !yy_aconf->rsa_public_key)
6372 yyerror("Ignoring connect block -- missing key");
6373 #endif
6374 if (yy_aconf->host == NULL)
6375 yyerror("Ignoring connect block -- missing host");
6376 else if (!IsConfCryptLink(yy_aconf) &&
6377 (!yy_aconf->passwd || !yy_aconf->spasswd))
6378 yyerror("Ignoring connect block -- missing password");
6379 }
6380
6381
6382 /* XXX
6383 * This fixes a try_connections() core (caused by invalid class_ptr
6384 * pointers) reported by metalrock. That's an ugly fix, but there
6385 * is currently no better way. The entire config subsystem needs an
6386 * rewrite ASAP. make_conf_item() shouldn't really add things onto
6387 * a doubly linked list immediately without any sanity checks! -Michael
6388 */
6389 delete_conf_item(yy_conf);
6390
6391 yy_aconf = NULL;
6392 yy_conf = NULL;
6393 }
6394
6395 /*
6396 * yy_conf is still pointing at the server that is having
6397 * a connect block built for it. This means, y_aconf->name
6398 * points to the actual irc name this server will be known as.
6399 * Now this new server has a set or even just one hub_mask (or leaf_mask)
6400 * given in the link list at yy_hconf. Fill in the HUB confs
6401 * from this link list now.
6402 */
6403 DLINK_FOREACH_SAFE(ptr, next_ptr, hub_conf_list.head)
6404 {
6405 struct ConfItem *new_hub_conf;
6406 struct MatchItem *match_item;
6407
6408 yy_hconf = ptr->data;
6409
6410 /* yy_conf == NULL is a fatal error for this connect block! */
6411 if ((yy_conf != NULL) && (yy_conf->name != NULL))
6412 {
6413 new_hub_conf = make_conf_item(HUB_TYPE);
6414 match_item = (struct MatchItem *)map_to_conf(new_hub_conf);
6415 DupString(new_hub_conf->name, yy_conf->name);
6416 if (yy_hconf->user != NULL)
6417 DupString(match_item->user, yy_hconf->user);
6418 else
6419 DupString(match_item->user, "*");
6420 if (yy_hconf->host != NULL)
6421 DupString(match_item->host, yy_hconf->host);
6422 else
6423 DupString(match_item->host, "*");
6424 }
6425 dlinkDelete(&yy_hconf->node, &hub_conf_list);
6426 free_collect_item(yy_hconf);
6427 }
6428
6429 /* Ditto for the LEAF confs */
6430
6431 DLINK_FOREACH_SAFE(ptr, next_ptr, leaf_conf_list.head)
6432 {
6433 struct ConfItem *new_leaf_conf;
6434 struct MatchItem *match_item;
6435
6436 yy_lconf = ptr->data;
6437
6438 if ((yy_conf != NULL) && (yy_conf->name != NULL))
6439 {
6440 new_leaf_conf = make_conf_item(LEAF_TYPE);
6441 match_item = (struct MatchItem *)map_to_conf(new_leaf_conf);
6442 DupString(new_leaf_conf->name, yy_conf->name);
6443 if (yy_lconf->user != NULL)
6444 DupString(match_item->user, yy_lconf->user);
6445 else
6446 DupString(match_item->user, "*");
6447 if (yy_lconf->host != NULL)
6448 DupString(match_item->host, yy_lconf->host);
6449 else
6450 DupString(match_item->host, "*");
6451 }
6452 dlinkDelete(&yy_lconf->node, &leaf_conf_list);
6453 free_collect_item(yy_lconf);
6454 }
6455 MyFree(class_name);
6456 class_name = NULL;
6457 yy_conf = NULL;
6458 yy_aconf = NULL;
6459 }
6460 }
6461 break;
6462
6463 case 419:
6464
6465 /* Line 1455 of yacc.c */
6466 #line 2567 "ircd_parser.y"
6467 {
6468 if (conf_parser_ctx.pass == 2)
6469 {
6470 if (yy_conf->name != NULL)
6471 yyerror("Multiple connect name entry");
6472
6473 MyFree(yy_conf->name);
6474 DupString(yy_conf->name, yylval.string);
6475 }
6476 }
6477 break;
6478
6479 case 420:
6480
6481 /* Line 1455 of yacc.c */
6482 #line 2579 "ircd_parser.y"
6483 {
6484 if (conf_parser_ctx.pass == 2)
6485 {
6486 if (yy_conf->name != NULL)
6487 yyerror("Multiple connect name entry");
6488
6489 MyFree(yy_conf->name);
6490 DupString(yy_conf->name, yylval.string);
6491 }
6492 }
6493 break;
6494
6495 case 421:
6496
6497 /* Line 1455 of yacc.c */
6498 #line 2591 "ircd_parser.y"
6499 {
6500 if (conf_parser_ctx.pass == 2)
6501 {
6502 MyFree(yy_aconf->host);
6503 DupString(yy_aconf->host, yylval.string);
6504 }
6505 }
6506 break;
6507
6508 case 422:
6509
6510 /* Line 1455 of yacc.c */
6511 #line 2600 "ircd_parser.y"
6512 {
6513 if (conf_parser_ctx.pass == 2)
6514 {
6515 struct addrinfo hints, *res;
6516
6517 memset(&hints, 0, sizeof(hints));
6518
6519 hints.ai_family = AF_UNSPEC;
6520 hints.ai_socktype = SOCK_STREAM;
6521 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
6522
6523 if (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
6524 ilog(L_ERROR, "Invalid netmask for server vhost(%s)", yylval.string);
6525 else
6526 {
6527 assert(res != NULL);
6528
6529 memcpy(&yy_aconf->my_ipnum, res->ai_addr, res->ai_addrlen);
6530 yy_aconf->my_ipnum.ss.ss_family = res->ai_family;
6531 yy_aconf->my_ipnum.ss_len = res->ai_addrlen;
6532 irc_freeaddrinfo(res);
6533 }
6534 }
6535 }
6536 break;
6537
6538 case 423:
6539
6540 /* Line 1455 of yacc.c */
6541 #line 2626 "ircd_parser.y"
6542 {
6543 if (conf_parser_ctx.pass == 2)
6544 {
6545 if ((yyvsp[(3) - (4)].string)[0] == ':')
6546 yyerror("Server passwords cannot begin with a colon");
6547 else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
6548 yyerror("Server passwords cannot contain spaces");
6549 else {
6550 if (yy_aconf->spasswd != NULL)
6551 memset(yy_aconf->spasswd, 0, strlen(yy_aconf->spasswd));
6552
6553 MyFree(yy_aconf->spasswd);
6554 DupString(yy_aconf->spasswd, yylval.string);
6555 }
6556 }
6557 }
6558 break;
6559
6560 case 424:
6561
6562 /* Line 1455 of yacc.c */
6563 #line 2644 "ircd_parser.y"
6564 {
6565 if (conf_parser_ctx.pass == 2)
6566 {
6567 if ((yyvsp[(3) - (4)].string)[0] == ':')
6568 yyerror("Server passwords cannot begin with a colon");
6569 else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
6570 yyerror("Server passwords cannot contain spaces");
6571 else {
6572 if (yy_aconf->passwd != NULL)
6573 memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
6574
6575 MyFree(yy_aconf->passwd);
6576 DupString(yy_aconf->passwd, yylval.string);
6577 }
6578 }
6579 }
6580 break;
6581
6582 case 425:
6583
6584 /* Line 1455 of yacc.c */
6585 #line 2662 "ircd_parser.y"
6586 {
6587 if (conf_parser_ctx.pass == 2)
6588 yy_aconf->port = (yyvsp[(3) - (4)].number);
6589 }
6590 break;
6591
6592 case 426:
6593
6594 /* Line 1455 of yacc.c */
6595 #line 2668 "ircd_parser.y"
6596 {
6597 if (conf_parser_ctx.pass == 2)
6598 yy_aconf->aftype = AF_INET;
6599 }
6600 break;
6601
6602 case 427:
6603
6604 /* Line 1455 of yacc.c */
6605 #line 2672 "ircd_parser.y"
6606 {
6607 #ifdef IPV6
6608 if (conf_parser_ctx.pass == 2)
6609 yy_aconf->aftype = AF_INET6;
6610 #endif
6611 }
6612 break;
6613
6614 case 428:
6615
6616 /* Line 1455 of yacc.c */
6617 #line 2680 "ircd_parser.y"
6618 {
6619 if (conf_parser_ctx.pass == 2)
6620 {
6621 MyFree(yy_aconf->fakename);
6622 DupString(yy_aconf->fakename, yylval.string);
6623 }
6624 }
6625 break;
6626
6627 case 429:
6628
6629 /* Line 1455 of yacc.c */
6630 #line 2689 "ircd_parser.y"
6631 {
6632 }
6633 break;
6634
6635 case 433:
6636
6637 /* Line 1455 of yacc.c */
6638 #line 2693 "ircd_parser.y"
6639 { not_atom = 1; }
6640 break;
6641
6642 case 435:
6643
6644 /* Line 1455 of yacc.c */
6645 #line 2694 "ircd_parser.y"
6646 { not_atom = 0; }
6647 break;
6648
6649 case 437:
6650
6651 /* Line 1455 of yacc.c */
6652 #line 2697 "ircd_parser.y"
6653 {
6654 if (conf_parser_ctx.pass == 2)
6655 #ifndef HAVE_LIBZ
6656 yyerror("Ignoring flags = compressed; -- no zlib support");
6657 #else
6658 {
6659 if (not_atom)ClearConfCompressed(yy_aconf);
6660 else SetConfCompressed(yy_aconf);
6661 }
6662 #endif
6663 }
6664 break;
6665
6666 case 438:
6667
6668 /* Line 1455 of yacc.c */
6669 #line 2708 "ircd_parser.y"
6670 {
6671 if (conf_parser_ctx.pass == 2)
6672 {
6673 if (not_atom)ClearConfCryptLink(yy_aconf);
6674 else SetConfCryptLink(yy_aconf);
6675 }
6676 }
6677 break;
6678
6679 case 439:
6680
6681 /* Line 1455 of yacc.c */
6682 #line 2715 "ircd_parser.y"
6683 {
6684 if (conf_parser_ctx.pass == 2)
6685 {
6686 if (not_atom)ClearConfAllowAutoConn(yy_aconf);
6687 else SetConfAllowAutoConn(yy_aconf);
6688 }
6689 }
6690 break;
6691
6692 case 440:
6693
6694 /* Line 1455 of yacc.c */
6695 #line 2722 "ircd_parser.y"
6696 {
6697 if (conf_parser_ctx.pass == 2)
6698 {
6699 if (not_atom)ClearConfAwayBurst(yy_aconf);
6700 else SetConfAwayBurst(yy_aconf);
6701 }
6702 }
6703 break;
6704
6705 case 441:
6706
6707 /* Line 1455 of yacc.c */
6708 #line 2729 "ircd_parser.y"
6709 {
6710 if (conf_parser_ctx.pass == 2)
6711 {
6712 if (not_atom)ClearConfTopicBurst(yy_aconf);
6713 else SetConfTopicBurst(yy_aconf);
6714 }
6715 }
6716 break;
6717
6718 case 442:
6719
6720 /* Line 1455 of yacc.c */
6721 #line 2739 "ircd_parser.y"
6722 {
6723 #ifdef HAVE_LIBCRYPTO
6724 if (conf_parser_ctx.pass == 2)
6725 {
6726 BIO *file;
6727
6728 if (yy_aconf->rsa_public_key != NULL)
6729 {
6730 RSA_free(yy_aconf->rsa_public_key);
6731 yy_aconf->rsa_public_key = NULL;
6732 }
6733
6734 if (yy_aconf->rsa_public_key_file != NULL)
6735 {
6736 MyFree(yy_aconf->rsa_public_key_file);
6737 yy_aconf->rsa_public_key_file = NULL;
6738 }
6739
6740 DupString(yy_aconf->rsa_public_key_file, yylval.string);
6741
6742 if ((file = BIO_new_file(yylval.string, "r")) == NULL)
6743 {
6744 yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
6745 break;
6746 }
6747
6748 yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
6749
6750 if (yy_aconf->rsa_public_key == NULL)
6751 {
6752 yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
6753 break;
6754 }
6755
6756 BIO_set_close(file, BIO_CLOSE);
6757 BIO_free(file);
6758 }
6759 #endif /* HAVE_LIBCRYPTO */
6760 }
6761 break;
6762
6763 case 443:
6764
6765 /* Line 1455 of yacc.c */
6766 #line 2780 "ircd_parser.y"
6767 {
6768 if (conf_parser_ctx.pass == 2)
6769 {
6770 if (yylval.number)
6771 yy_aconf->flags |= CONF_FLAGS_ENCRYPTED;
6772 else
6773 yy_aconf->flags &= ~CONF_FLAGS_ENCRYPTED;
6774 }
6775 }
6776 break;
6777
6778 case 444:
6779
6780 /* Line 1455 of yacc.c */
6781 #line 2791 "ircd_parser.y"
6782 {
6783 if (conf_parser_ctx.pass == 2)
6784 {
6785 if (yylval.number)
6786 yy_aconf->flags |= CONF_FLAGS_CRYPTLINK;
6787 else
6788 yy_aconf->flags &= ~CONF_FLAGS_CRYPTLINK;
6789 }
6790 }
6791 break;
6792
6793 case 445:
6794
6795 /* Line 1455 of yacc.c */
6796 #line 2802 "ircd_parser.y"
6797 {
6798 if (conf_parser_ctx.pass == 2)
6799 {
6800 if (yylval.number)
6801 #ifndef HAVE_LIBZ
6802 yyerror("Ignoring compressed=yes; -- no zlib support");
6803 #else
6804 yy_aconf->flags |= CONF_FLAGS_COMPRESSED;
6805 #endif
6806 else
6807 yy_aconf->flags &= ~CONF_FLAGS_COMPRESSED;
6808 }
6809 }
6810 break;
6811
6812 case 446:
6813
6814 /* Line 1455 of yacc.c */
6815 #line 2817 "ircd_parser.y"
6816 {
6817 if (conf_parser_ctx.pass == 2)
6818 {
6819 if (yylval.number)
6820 yy_aconf->flags |= CONF_FLAGS_ALLOW_AUTO_CONN;
6821 else
6822 yy_aconf->flags &= ~CONF_FLAGS_ALLOW_AUTO_CONN;
6823 }
6824 }
6825 break;
6826
6827 case 447:
6828
6829 /* Line 1455 of yacc.c */
6830 #line 2828 "ircd_parser.y"
6831 {
6832 if (conf_parser_ctx.pass == 2)
6833 {
6834 if (yylval.number)
6835 SetConfTopicBurst(yy_aconf);
6836 else
6837 ClearConfTopicBurst(yy_aconf);
6838 }
6839 }
6840 break;
6841
6842 case 448:
6843
6844 /* Line 1455 of yacc.c */
6845 #line 2839 "ircd_parser.y"
6846 {
6847 if (conf_parser_ctx.pass == 2)
6848 {
6849 struct CollectItem *yy_tmp;
6850
6851 yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6852 DupString(yy_tmp->host, yylval.string);
6853 DupString(yy_tmp->user, "*");
6854 dlinkAdd(yy_tmp, &yy_tmp->node, &hub_conf_list);
6855 }
6856 }
6857 break;
6858
6859 case 449:
6860
6861 /* Line 1455 of yacc.c */
6862 #line 2852 "ircd_parser.y"
6863 {
6864 if (conf_parser_ctx.pass == 2)
6865 {
6866 struct CollectItem *yy_tmp;
6867
6868 yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6869 DupString(yy_tmp->host, yylval.string);
6870 DupString(yy_tmp->user, "*");
6871 dlinkAdd(yy_tmp, &yy_tmp->node, &leaf_conf_list);
6872 }
6873 }
6874 break;
6875
6876 case 450:
6877
6878 /* Line 1455 of yacc.c */
6879 #line 2865 "ircd_parser.y"
6880 {
6881 if (conf_parser_ctx.pass == 2)
6882 {
6883 MyFree(class_name);
6884 DupString(class_name, yylval.string);
6885 }
6886 }
6887 break;
6888
6889 case 451:
6890
6891 /* Line 1455 of yacc.c */
6892 #line 2874 "ircd_parser.y"
6893 {
6894 #ifdef HAVE_LIBCRYPTO
6895 if (conf_parser_ctx.pass == 2)
6896 {
6897 struct EncCapability *ecap;
6898 const char *cipher_name;
6899 int found = 0;
6900
6901 yy_aconf->cipher_preference = NULL;
6902 cipher_name = yylval.string;
6903
6904 for (ecap = CipherTable; ecap->name; ecap++)
6905 {
6906 if ((irccmp(ecap->name, cipher_name) == 0) &&
6907 (ecap->cap & CAP_ENC_MASK))
6908 {
6909 yy_aconf->cipher_preference = ecap;
6910 found = 1;
6911 break;
6912 }
6913 }
6914
6915 if (!found)
6916 yyerror("Invalid cipher");
6917 }
6918 #else
6919 if (conf_parser_ctx.pass == 2)
6920 yyerror("Ignoring cipher_preference -- no OpenSSL support");
6921 #endif
6922 }
6923 break;
6924
6925 case 452:
6926
6927 /* Line 1455 of yacc.c */
6928 #line 2909 "ircd_parser.y"
6929 {
6930 if (conf_parser_ctx.pass == 2)
6931 {
6932 userbuf[0] = hostbuf[0] = reasonbuf[0] = '\0';
6933 regex_ban = 0;
6934 }
6935 }
6936 break;
6937
6938 case 453:
6939
6940 /* Line 1455 of yacc.c */
6941 #line 2916 "ircd_parser.y"
6942 {
6943 if (conf_parser_ctx.pass == 2)
6944 {
6945 if (userbuf[0] && hostbuf[0])
6946 {
6947 if (regex_ban)
6948 {
6949 #ifdef HAVE_LIBPCRE
6950 pcre *exp_user = NULL;
6951 pcre *exp_host = NULL;
6952 const char *errptr = NULL;
6953
6954 if (!(exp_user = ircd_pcre_compile(userbuf, &errptr)) ||
6955 !(exp_host = ircd_pcre_compile(hostbuf, &errptr)))
6956 {
6957 ilog(L_ERROR, "Failed to add regular expression based K-Line: %s",
6958 errptr);
6959 break;
6960 }
6961
6962 yy_aconf = map_to_conf(make_conf_item(RKLINE_TYPE));
6963 yy_aconf->regexuser = exp_user;
6964 yy_aconf->regexhost = exp_host;
6965
6966 DupString(yy_aconf->user, userbuf);
6967 DupString(yy_aconf->host, hostbuf);
6968
6969 if (reasonbuf[0])
6970 DupString(yy_aconf->reason, reasonbuf);
6971 else
6972 DupString(yy_aconf->reason, "No reason");
6973 #else
6974 ilog(L_ERROR, "Failed to add regular expression based K-Line: no PCRE support");
6975 break;
6976 #endif
6977 }
6978 else
6979 {
6980 yy_aconf = map_to_conf(make_conf_item(KLINE_TYPE));
6981
6982 DupString(yy_aconf->user, userbuf);
6983 DupString(yy_aconf->host, hostbuf);
6984
6985 if (reasonbuf[0])
6986 DupString(yy_aconf->reason, reasonbuf);
6987 else
6988 DupString(yy_aconf->reason, "No reason");
6989 add_conf_by_address(CONF_KILL, yy_aconf);
6990 }
6991 }
6992
6993 yy_aconf = NULL;
6994 }
6995 }
6996 break;
6997
6998 case 454:
6999
7000 /* Line 1455 of yacc.c */
7001 #line 2972 "ircd_parser.y"
7002 {
7003 }
7004 break;
7005
7006 case 458:
7007
7008 /* Line 1455 of yacc.c */
7009 #line 2977 "ircd_parser.y"
7010 {
7011 if (conf_parser_ctx.pass == 2)
7012 regex_ban = 1;
7013 }
7014 break;
7015
7016 case 465:
7017
7018 /* Line 1455 of yacc.c */
7019 #line 2986 "ircd_parser.y"
7020 {
7021 if (conf_parser_ctx.pass == 2)
7022 {
7023 struct split_nuh_item nuh;
7024
7025 nuh.nuhmask = yylval.string;
7026 nuh.nickptr = NULL;
7027 nuh.userptr = userbuf;
7028 nuh.hostptr = hostbuf;
7029
7030 nuh.nicksize = 0;
7031 nuh.usersize = sizeof(userbuf);
7032 nuh.hostsize = sizeof(hostbuf);
7033
7034 split_nuh(&nuh);
7035 }
7036 }
7037 break;
7038
7039 case 466:
7040
7041 /* Line 1455 of yacc.c */
7042 #line 3005 "ircd_parser.y"
7043 {
7044 if (conf_parser_ctx.pass == 2)
7045 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
7046 }
7047 break;
7048
7049 case 467:
7050
7051 /* Line 1455 of yacc.c */
7052 #line 3014 "ircd_parser.y"
7053 {
7054 if (conf_parser_ctx.pass == 2)
7055 hostbuf[0] = reasonbuf[0] = '\0';
7056 }
7057 break;
7058
7059 case 468:
7060
7061 /* Line 1455 of yacc.c */
7062 #line 3018 "ircd_parser.y"
7063 {
7064 if (conf_parser_ctx.pass == 2)
7065 {
7066 if (hostbuf[0] && parse_netmask(hostbuf, NULL, NULL) != HM_HOST)
7067 {
7068 yy_aconf = map_to_conf(make_conf_item(DLINE_TYPE));
7069 DupString(yy_aconf->host, hostbuf);
7070
7071 if (reasonbuf[0])
7072 DupString(yy_aconf->reason, reasonbuf);
7073 else
7074 DupString(yy_aconf->reason, "No reason");
7075 add_conf_by_address(CONF_DLINE, yy_aconf);
7076 yy_aconf = NULL;
7077 }
7078 }
7079 }
7080 break;
7081
7082 case 474:
7083
7084 /* Line 1455 of yacc.c */
7085 #line 3040 "ircd_parser.y"
7086 {
7087 if (conf_parser_ctx.pass == 2)
7088 strlcpy(hostbuf, yylval.string, sizeof(hostbuf));
7089 }
7090 break;
7091
7092 case 475:
7093
7094 /* Line 1455 of yacc.c */
7095 #line 3046 "ircd_parser.y"
7096 {
7097 if (conf_parser_ctx.pass == 2)
7098 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
7099 }
7100 break;
7101
7102 case 481:
7103
7104 /* Line 1455 of yacc.c */
7105 #line 3060 "ircd_parser.y"
7106 {
7107 if (conf_parser_ctx.pass == 2)
7108 {
7109 if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
7110 {
7111 yy_aconf = map_to_conf(make_conf_item(EXEMPTDLINE_TYPE));
7112 DupString(yy_aconf->host, yylval.string);
7113
7114 add_conf_by_address(CONF_EXEMPTDLINE, yy_aconf);
7115 yy_aconf = NULL;
7116 }
7117 }
7118 }
7119 break;
7120
7121 case 482:
7122
7123 /* Line 1455 of yacc.c */
7124 #line 3078 "ircd_parser.y"
7125 {
7126 if (conf_parser_ctx.pass == 2)
7127 {
7128 regex_ban = 0;
7129 reasonbuf[0] = gecos_name[0] = '\0';
7130 }
7131 }
7132 break;
7133
7134 case 483:
7135
7136 /* Line 1455 of yacc.c */
7137 #line 3085 "ircd_parser.y"
7138 {
7139 if (conf_parser_ctx.pass == 2)
7140 {
7141 if (gecos_name[0])
7142 {
7143 if (regex_ban)
7144 {
7145 #ifdef HAVE_LIBPCRE
7146 pcre *exp_p = NULL;
7147 const char *errptr = NULL;
7148
7149 if (!(exp_p = ircd_pcre_compile(gecos_name, &errptr)))
7150 {
7151 ilog(L_ERROR, "Failed to add regular expression based X-Line: %s",
7152 errptr);
7153 break;
7154 }
7155
7156 yy_conf = make_conf_item(RXLINE_TYPE);
7157 yy_conf->regexpname = exp_p;
7158 #else
7159 ilog(L_ERROR, "Failed to add regular expression based X-Line: no PCRE support");
7160 break;
7161 #endif
7162 }
7163 else
7164 yy_conf = make_conf_item(XLINE_TYPE);
7165
7166 yy_match_item = map_to_conf(yy_conf);
7167 DupString(yy_conf->name, gecos_name);
7168
7169 if (reasonbuf[0])
7170 DupString(yy_match_item->reason, reasonbuf);
7171 else
7172 DupString(yy_match_item->reason, "No reason");
7173 }
7174 }
7175 }
7176 break;
7177
7178 case 484:
7179
7180 /* Line 1455 of yacc.c */
7181 #line 3125 "ircd_parser.y"
7182 {
7183 }
7184 break;
7185
7186 case 488:
7187
7188 /* Line 1455 of yacc.c */
7189 #line 3130 "ircd_parser.y"
7190 {
7191 if (conf_parser_ctx.pass == 2)
7192 regex_ban = 1;
7193 }
7194 break;
7195
7196 case 495:
7197
7198 /* Line 1455 of yacc.c */
7199 #line 3139 "ircd_parser.y"
7200 {
7201 if (conf_parser_ctx.pass == 2)
7202 strlcpy(gecos_name, yylval.string, sizeof(gecos_name));
7203 }
7204 break;
7205
7206 case 496:
7207
7208 /* Line 1455 of yacc.c */
7209 #line 3145 "ircd_parser.y"
7210 {
7211 if (conf_parser_ctx.pass == 2)
7212 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
7213 }
7214 break;
7215
7216 case 557:
7217
7218 /* Line 1455 of yacc.c */
7219 #line 3190 "ircd_parser.y"
7220 {
7221 ConfigFileEntry.max_watch = (yyvsp[(3) - (4)].number);
7222 }
7223 break;
7224
7225 case 558:
7226
7227 /* Line 1455 of yacc.c */
7228 #line 3195 "ircd_parser.y"
7229 {
7230 ConfigFileEntry.gline_min_cidr = (yyvsp[(3) - (4)].number);
7231 }
7232 break;
7233
7234 case 559:
7235
7236 /* Line 1455 of yacc.c */
7237 #line 3200 "ircd_parser.y"
7238 {
7239 ConfigFileEntry.gline_min_cidr6 = (yyvsp[(3) - (4)].number);
7240 }
7241 break;
7242
7243 case 560:
7244
7245 /* Line 1455 of yacc.c */
7246 #line 3205 "ircd_parser.y"
7247 {
7248 ConfigFileEntry.burst_away = yylval.number;
7249 }
7250 break;
7251
7252 case 561:
7253
7254 /* Line 1455 of yacc.c */
7255 #line 3210 "ircd_parser.y"
7256 {
7257 ConfigFileEntry.use_whois_actually = yylval.number;
7258 }
7259 break;
7260
7261 case 562:
7262
7263 /* Line 1455 of yacc.c */
7264 #line 3215 "ircd_parser.y"
7265 {
7266 GlobalSetOptions.rejecttime = yylval.number;
7267 }
7268 break;
7269
7270 case 563:
7271
7272 /* Line 1455 of yacc.c */
7273 #line 3220 "ircd_parser.y"
7274 {
7275 ConfigFileEntry.tkline_expire_notices = yylval.number;
7276 }
7277 break;
7278
7279 case 564:
7280
7281 /* Line 1455 of yacc.c */
7282 #line 3225 "ircd_parser.y"
7283 {
7284 ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
7285 }
7286 break;
7287
7288 case 565:
7289
7290 /* Line 1455 of yacc.c */
7291 #line 3230 "ircd_parser.y"
7292 {
7293 ConfigFileEntry.hide_spoof_ips = yylval.number;
7294 }
7295 break;
7296
7297 case 566:
7298
7299 /* Line 1455 of yacc.c */
7300 #line 3235 "ircd_parser.y"
7301 {
7302 ConfigFileEntry.ignore_bogus_ts = yylval.number;
7303 }
7304 break;
7305
7306 case 567:
7307
7308 /* Line 1455 of yacc.c */
7309 #line 3240 "ircd_parser.y"
7310 {
7311 ConfigFileEntry.disable_remote = yylval.number;
7312 }
7313 break;
7314
7315 case 568:
7316
7317 /* Line 1455 of yacc.c */
7318 #line 3245 "ircd_parser.y"
7319 {
7320 ConfigFileEntry.failed_oper_notice = yylval.number;
7321 }
7322 break;
7323
7324 case 569:
7325
7326 /* Line 1455 of yacc.c */
7327 #line 3250 "ircd_parser.y"
7328 {
7329 ConfigFileEntry.anti_nick_flood = yylval.number;
7330 }
7331 break;
7332
7333 case 570:
7334
7335 /* Line 1455 of yacc.c */
7336 #line 3255 "ircd_parser.y"
7337 {
7338 ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number);
7339 }
7340 break;
7341
7342 case 571:
7343
7344 /* Line 1455 of yacc.c */
7345 #line 3260 "ircd_parser.y"
7346 {
7347 ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
7348 }
7349 break;
7350
7351 case 572:
7352
7353 /* Line 1455 of yacc.c */
7354 #line 3265 "ircd_parser.y"
7355 {
7356 ConfigFileEntry.max_accept = (yyvsp[(3) - (4)].number);
7357 }
7358 break;
7359
7360 case 573:
7361
7362 /* Line 1455 of yacc.c */
7363 #line 3270 "ircd_parser.y"
7364 {
7365 ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
7366 }
7367 break;
7368
7369 case 574:
7370
7371 /* Line 1455 of yacc.c */
7372 #line 3275 "ircd_parser.y"
7373 {
7374 ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
7375 }
7376 break;
7377
7378 case 575:
7379
7380 /* Line 1455 of yacc.c */
7381 #line 3280 "ircd_parser.y"
7382 {
7383 if (conf_parser_ctx.pass == 2)
7384 ConfigFileEntry.ts_max_delta = (yyvsp[(3) - (4)].number);
7385 }
7386 break;
7387
7388 case 576:
7389
7390 /* Line 1455 of yacc.c */
7391 #line 3286 "ircd_parser.y"
7392 {
7393 if (((yyvsp[(3) - (4)].number) > 0) && conf_parser_ctx.pass == 1)
7394 {
7395 ilog(L_CRIT, "You haven't read your config file properly.");
7396 ilog(L_CRIT, "There is a line in the example conf that will kill your server if not removed.");
7397 ilog(L_CRIT, "Consider actually reading/editing the conf file, and removing this line.");
7398 exit(0);
7399 }
7400 }
7401 break;
7402
7403 case 577:
7404
7405 /* Line 1455 of yacc.c */
7406 #line 3297 "ircd_parser.y"
7407 {
7408 ConfigFileEntry.kline_with_reason = yylval.number;
7409 }
7410 break;
7411
7412 case 578:
7413
7414 /* Line 1455 of yacc.c */
7415 #line 3302 "ircd_parser.y"
7416 {
7417 if (conf_parser_ctx.pass == 2)
7418 {
7419 MyFree(ConfigFileEntry.kline_reason);
7420 DupString(ConfigFileEntry.kline_reason, yylval.string);
7421 }
7422 }
7423 break;
7424
7425 case 579:
7426
7427 /* Line 1455 of yacc.c */
7428 #line 3311 "ircd_parser.y"
7429 {
7430 ConfigFileEntry.invisible_on_connect = yylval.number;
7431 }
7432 break;
7433
7434 case 580:
7435
7436 /* Line 1455 of yacc.c */
7437 #line 3316 "ircd_parser.y"
7438 {
7439 ConfigFileEntry.warn_no_nline = yylval.number;
7440 }
7441 break;
7442
7443 case 581:
7444
7445 /* Line 1455 of yacc.c */
7446 #line 3321 "ircd_parser.y"
7447 {
7448 ConfigFileEntry.stats_e_disabled = yylval.number;
7449 }
7450 break;
7451
7452 case 582:
7453
7454 /* Line 1455 of yacc.c */
7455 #line 3326 "ircd_parser.y"
7456 {
7457 ConfigFileEntry.stats_o_oper_only = yylval.number;
7458 }
7459 break;
7460
7461 case 583:
7462
7463 /* Line 1455 of yacc.c */
7464 #line 3331 "ircd_parser.y"
7465 {
7466 ConfigFileEntry.stats_P_oper_only = yylval.number;
7467 }
7468 break;
7469
7470 case 584:
7471
7472 /* Line 1455 of yacc.c */
7473 #line 3336 "ircd_parser.y"
7474 {
7475 ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
7476 }
7477 break;
7478
7479 case 585:
7480
7481 /* Line 1455 of yacc.c */
7482 #line 3339 "ircd_parser.y"
7483 {
7484 ConfigFileEntry.stats_k_oper_only = 1;
7485 }
7486 break;
7487
7488 case 586:
7489
7490 /* Line 1455 of yacc.c */
7491 #line 3344 "ircd_parser.y"
7492 {
7493 ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
7494 }
7495 break;
7496
7497 case 587:
7498
7499 /* Line 1455 of yacc.c */
7500 #line 3347 "ircd_parser.y"
7501 {
7502 ConfigFileEntry.stats_i_oper_only = 1;
7503 }
7504 break;
7505
7506 case 588:
7507
7508 /* Line 1455 of yacc.c */
7509 #line 3352 "ircd_parser.y"
7510 {
7511 ConfigFileEntry.pace_wait = (yyvsp[(3) - (4)].number);
7512 }
7513 break;
7514
7515 case 589:
7516
7517 /* Line 1455 of yacc.c */
7518 #line 3357 "ircd_parser.y"
7519 {
7520 ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
7521 }
7522 break;
7523
7524 case 590:
7525
7526 /* Line 1455 of yacc.c */
7527 #line 3362 "ircd_parser.y"
7528 {
7529 ConfigFileEntry.opers_bypass_callerid = yylval.number;
7530 }
7531 break;
7532
7533 case 591:
7534
7535 /* Line 1455 of yacc.c */
7536 #line 3367 "ircd_parser.y"
7537 {
7538 ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
7539 }
7540 break;
7541
7542 case 592:
7543
7544 /* Line 1455 of yacc.c */
7545 #line 3372 "ircd_parser.y"
7546 {
7547 ConfigFileEntry.short_motd = yylval.number;
7548 }
7549 break;
7550
7551 case 593:
7552
7553 /* Line 1455 of yacc.c */
7554 #line 3377 "ircd_parser.y"
7555 {
7556 ConfigFileEntry.no_oper_flood = yylval.number;
7557 }
7558 break;
7559
7560 case 594:
7561
7562 /* Line 1455 of yacc.c */
7563 #line 3382 "ircd_parser.y"
7564 {
7565 ConfigFileEntry.true_no_oper_flood = yylval.number;
7566 }
7567 break;
7568
7569 case 595:
7570
7571 /* Line 1455 of yacc.c */
7572 #line 3387 "ircd_parser.y"
7573 {
7574 ConfigFileEntry.oper_pass_resv = yylval.number;
7575 }
7576 break;
7577
7578 case 596:
7579
7580 /* Line 1455 of yacc.c */
7581 #line 3392 "ircd_parser.y"
7582 {
7583 if (conf_parser_ctx.pass == 2)
7584 {
7585 if (strlen(yylval.string) > LOCALE_LENGTH-2)
7586 yylval.string[LOCALE_LENGTH-1] = '\0';
7587
7588 set_locale(yylval.string);
7589 }
7590 }
7591 break;
7592
7593 case 597:
7594
7595 /* Line 1455 of yacc.c */
7596 #line 3403 "ircd_parser.y"
7597 {
7598 ConfigFileEntry.idletime = (yyvsp[(3) - (4)].number);
7599 }
7600 break;
7601
7602 case 598:
7603
7604 /* Line 1455 of yacc.c */
7605 #line 3408 "ircd_parser.y"
7606 {
7607 ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
7608 }
7609 break;
7610
7611 case 599:
7612
7613 /* Line 1455 of yacc.c */
7614 #line 3413 "ircd_parser.y"
7615 {
7616 ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
7617 }
7618 break;
7619
7620 case 600:
7621
7622 /* Line 1455 of yacc.c */
7623 #line 3418 "ircd_parser.y"
7624 {
7625 if (conf_parser_ctx.pass == 2)
7626 {
7627 MyFree(ConfigFileEntry.servlink_path);
7628 DupString(ConfigFileEntry.servlink_path, yylval.string);
7629 }
7630 }
7631 break;
7632
7633 case 601:
7634
7635 /* Line 1455 of yacc.c */
7636 #line 3427 "ircd_parser.y"
7637 {
7638 #ifdef HAVE_LIBCRYPTO
7639 if (conf_parser_ctx.pass == 2)
7640 {
7641 struct EncCapability *ecap;
7642 const char *cipher_name;
7643 int found = 0;
7644
7645 ConfigFileEntry.default_cipher_preference = NULL;
7646 cipher_name = yylval.string;
7647
7648 for (ecap = CipherTable; ecap->name; ecap++)
7649 {
7650 if ((irccmp(ecap->name, cipher_name) == 0) &&
7651 (ecap->cap & CAP_ENC_MASK))
7652 {
7653 ConfigFileEntry.default_cipher_preference = ecap;
7654 found = 1;
7655 break;
7656 }
7657 }
7658
7659 if (!found)
7660 yyerror("Invalid cipher");
7661 }
7662 #else
7663 if (conf_parser_ctx.pass == 2)
7664 yyerror("Ignoring default_cipher_preference -- no OpenSSL support");
7665 #endif
7666 }
7667 break;
7668
7669 case 602:
7670
7671 /* Line 1455 of yacc.c */
7672 #line 3459 "ircd_parser.y"
7673 {
7674 if (conf_parser_ctx.pass == 2)
7675 {
7676 ConfigFileEntry.compression_level = (yyvsp[(3) - (4)].number);
7677 #ifndef HAVE_LIBZ
7678 yyerror("Ignoring compression_level -- no zlib support");
7679 #else
7680 if ((ConfigFileEntry.compression_level < 1) ||
7681 (ConfigFileEntry.compression_level > 9))
7682 {
7683 yyerror("Ignoring invalid compression_level, using default");
7684 ConfigFileEntry.compression_level = 0;
7685 }
7686 #endif
7687 }
7688 }
7689 break;
7690
7691 case 603:
7692
7693 /* Line 1455 of yacc.c */
7694 #line 3477 "ircd_parser.y"
7695 {
7696 ConfigFileEntry.use_egd = yylval.number;
7697 }
7698 break;
7699
7700 case 604:
7701
7702 /* Line 1455 of yacc.c */
7703 #line 3482 "ircd_parser.y"
7704 {
7705 if (conf_parser_ctx.pass == 2)
7706 {
7707 MyFree(ConfigFileEntry.egdpool_path);
7708 DupString(ConfigFileEntry.egdpool_path, yylval.string);
7709 }
7710 }
7711 break;
7712
7713 case 605:
7714
7715 /* Line 1455 of yacc.c */
7716 #line 3491 "ircd_parser.y"
7717 {
7718 ConfigFileEntry.ping_cookie = yylval.number;
7719 }
7720 break;
7721
7722 case 606:
7723
7724 /* Line 1455 of yacc.c */
7725 #line 3496 "ircd_parser.y"
7726 {
7727 ConfigFileEntry.disable_auth = yylval.number;
7728 }
7729 break;
7730
7731 case 607:
7732
7733 /* Line 1455 of yacc.c */
7734 #line 3501 "ircd_parser.y"
7735 {
7736 ConfigFileEntry.throttle_time = yylval.number;
7737 }
7738 break;
7739
7740 case 608:
7741
7742 /* Line 1455 of yacc.c */
7743 #line 3506 "ircd_parser.y"
7744 {
7745 ConfigFileEntry.oper_umodes = 0;
7746 }
7747 break;
7748
7749 case 612:
7750
7751 /* Line 1455 of yacc.c */
7752 #line 3512 "ircd_parser.y"
7753 {
7754 ConfigFileEntry.oper_umodes |= UMODE_BOTS;
7755 }
7756 break;
7757
7758 case 613:
7759
7760 /* Line 1455 of yacc.c */
7761 #line 3515 "ircd_parser.y"
7762 {
7763 ConfigFileEntry.oper_umodes |= UMODE_CCONN;
7764 }
7765 break;
7766
7767 case 614:
7768
7769 /* Line 1455 of yacc.c */
7770 #line 3518 "ircd_parser.y"
7771 {
7772 ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
7773 }
7774 break;
7775
7776 case 615:
7777
7778 /* Line 1455 of yacc.c */
7779 #line 3521 "ircd_parser.y"
7780 {
7781 ConfigFileEntry.oper_umodes |= UMODE_DEAF;
7782 }
7783 break;
7784
7785 case 616:
7786
7787 /* Line 1455 of yacc.c */
7788 #line 3524 "ircd_parser.y"
7789 {
7790 ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
7791 }
7792 break;
7793
7794 case 617:
7795
7796 /* Line 1455 of yacc.c */
7797 #line 3527 "ircd_parser.y"
7798 {
7799 ConfigFileEntry.oper_umodes |= UMODE_FULL;
7800 }
7801 break;
7802
7803 case 618:
7804
7805 /* Line 1455 of yacc.c */
7806 #line 3530 "ircd_parser.y"
7807 {
7808 ConfigFileEntry.oper_umodes |= UMODE_SKILL;
7809 }
7810 break;
7811
7812 case 619:
7813
7814 /* Line 1455 of yacc.c */
7815 #line 3533 "ircd_parser.y"
7816 {
7817 ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
7818 }
7819 break;
7820
7821 case 620:
7822
7823 /* Line 1455 of yacc.c */
7824 #line 3536 "ircd_parser.y"
7825 {
7826 ConfigFileEntry.oper_umodes |= UMODE_REJ;
7827 }
7828 break;
7829
7830 case 621:
7831
7832 /* Line 1455 of yacc.c */
7833 #line 3539 "ircd_parser.y"
7834 {
7835 ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
7836 }
7837 break;
7838
7839 case 622:
7840
7841 /* Line 1455 of yacc.c */
7842 #line 3542 "ircd_parser.y"
7843 {
7844 ConfigFileEntry.oper_umodes |= UMODE_SPY;
7845 }
7846 break;
7847
7848 case 623:
7849
7850 /* Line 1455 of yacc.c */
7851 #line 3545 "ircd_parser.y"
7852 {
7853 ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
7854 }
7855 break;
7856
7857 case 624:
7858
7859 /* Line 1455 of yacc.c */
7860 #line 3548 "ircd_parser.y"
7861 {
7862 ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
7863 }
7864 break;
7865
7866 case 625:
7867
7868 /* Line 1455 of yacc.c */
7869 #line 3551 "ircd_parser.y"
7870 {
7871 ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
7872 }
7873 break;
7874
7875 case 626:
7876
7877 /* Line 1455 of yacc.c */
7878 #line 3554 "ircd_parser.y"
7879 {
7880 ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
7881 }
7882 break;
7883
7884 case 627:
7885
7886 /* Line 1455 of yacc.c */
7887 #line 3557 "ircd_parser.y"
7888 {
7889 ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
7890 }
7891 break;
7892
7893 case 628:
7894
7895 /* Line 1455 of yacc.c */
7896 #line 3560 "ircd_parser.y"
7897 {
7898 ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
7899 }
7900 break;
7901
7902 case 629:
7903
7904 /* Line 1455 of yacc.c */
7905 #line 3563 "ircd_parser.y"
7906 {
7907 ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
7908 }
7909 break;
7910
7911 case 630:
7912
7913 /* Line 1455 of yacc.c */
7914 #line 3566 "ircd_parser.y"
7915 {
7916 ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
7917 }
7918 break;
7919
7920 case 631:
7921
7922 /* Line 1455 of yacc.c */
7923 #line 3571 "ircd_parser.y"
7924 {
7925 ConfigFileEntry.oper_only_umodes = 0;
7926 }
7927 break;
7928
7929 case 635:
7930
7931 /* Line 1455 of yacc.c */
7932 #line 3577 "ircd_parser.y"
7933 {
7934 ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
7935 }
7936 break;
7937
7938 case 636:
7939
7940 /* Line 1455 of yacc.c */
7941 #line 3580 "ircd_parser.y"
7942 {
7943 ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
7944 }
7945 break;
7946
7947 case 637:
7948
7949 /* Line 1455 of yacc.c */
7950 #line 3583 "ircd_parser.y"
7951 {
7952 ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
7953 }
7954 break;
7955
7956 case 638:
7957
7958 /* Line 1455 of yacc.c */
7959 #line 3586 "ircd_parser.y"
7960 {
7961 ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
7962 }
7963 break;
7964
7965 case 639:
7966
7967 /* Line 1455 of yacc.c */
7968 #line 3589 "ircd_parser.y"
7969 {
7970 ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
7971 }
7972 break;
7973
7974 case 640:
7975
7976 /* Line 1455 of yacc.c */
7977 #line 3592 "ircd_parser.y"
7978 {
7979 ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
7980 }
7981 break;
7982
7983 case 641:
7984
7985 /* Line 1455 of yacc.c */
7986 #line 3595 "ircd_parser.y"
7987 {
7988 ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
7989 }
7990 break;
7991
7992 case 642:
7993
7994 /* Line 1455 of yacc.c */
7995 #line 3598 "ircd_parser.y"
7996 {
7997 ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
7998 }
7999 break;
8000
8001 case 643:
8002
8003 /* Line 1455 of yacc.c */
8004 #line 3601 "ircd_parser.y"
8005 {
8006 ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
8007 }
8008 break;
8009
8010 case 644:
8011
8012 /* Line 1455 of yacc.c */
8013 #line 3604 "ircd_parser.y"
8014 {
8015 ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
8016 }
8017 break;
8018
8019 case 645:
8020
8021 /* Line 1455 of yacc.c */
8022 #line 3607 "ircd_parser.y"
8023 {
8024 ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
8025 }
8026 break;
8027
8028 case 646:
8029
8030 /* Line 1455 of yacc.c */
8031 #line 3610 "ircd_parser.y"
8032 {
8033 ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
8034 }
8035 break;
8036
8037 case 647:
8038
8039 /* Line 1455 of yacc.c */
8040 #line 3613 "ircd_parser.y"
8041 {
8042 ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
8043 }
8044 break;
8045
8046 case 648:
8047
8048 /* Line 1455 of yacc.c */
8049 #line 3616 "ircd_parser.y"
8050 {
8051 ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
8052 }
8053 break;
8054
8055 case 649:
8056
8057 /* Line 1455 of yacc.c */
8058 #line 3619 "ircd_parser.y"
8059 {
8060 ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
8061 }
8062 break;
8063
8064 case 650:
8065
8066 /* Line 1455 of yacc.c */
8067 #line 3622 "ircd_parser.y"
8068 {
8069 ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
8070 }
8071 break;
8072
8073 case 651:
8074
8075 /* Line 1455 of yacc.c */
8076 #line 3625 "ircd_parser.y"
8077 {
8078 ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
8079 }
8080 break;
8081
8082 case 652:
8083
8084 /* Line 1455 of yacc.c */
8085 #line 3628 "ircd_parser.y"
8086 {
8087 ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
8088 }
8089 break;
8090
8091 case 653:
8092
8093 /* Line 1455 of yacc.c */
8094 #line 3631 "ircd_parser.y"
8095 {
8096 ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
8097 }
8098 break;
8099
8100 case 654:
8101
8102 /* Line 1455 of yacc.c */
8103 #line 3636 "ircd_parser.y"
8104 {
8105 ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
8106 }
8107 break;
8108
8109 case 655:
8110
8111 /* Line 1455 of yacc.c */
8112 #line 3641 "ircd_parser.y"
8113 {
8114 ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
8115 }
8116 break;
8117
8118 case 656:
8119
8120 /* Line 1455 of yacc.c */
8121 #line 3646 "ircd_parser.y"
8122 {
8123 ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
8124 }
8125 break;
8126
8127 case 657:
8128
8129 /* Line 1455 of yacc.c */
8130 #line 3651 "ircd_parser.y"
8131 {
8132 ConfigFileEntry.client_flood = (yyvsp[(3) - (4)].number);
8133 }
8134 break;
8135
8136 case 658:
8137
8138 /* Line 1455 of yacc.c */
8139 #line 3656 "ircd_parser.y"
8140 {
8141 ConfigFileEntry.dot_in_ip6_addr = yylval.number;
8142 }
8143 break;
8144
8145 case 659:
8146
8147 /* Line 1455 of yacc.c */
8148 #line 3664 "ircd_parser.y"
8149 {
8150 if (conf_parser_ctx.pass == 2)
8151 {
8152 yy_conf = make_conf_item(GDENY_TYPE);
8153 yy_aconf = map_to_conf(yy_conf);
8154 }
8155 }
8156 break;
8157
8158 case 660:
8159
8160 /* Line 1455 of yacc.c */
8161 #line 3671 "ircd_parser.y"
8162 {
8163 if (conf_parser_ctx.pass == 2)
8164 {
8165 /*
8166 * since we re-allocate yy_conf/yy_aconf after the end of action=, at the
8167 * end we will have one extra, so we should free it.
8168 */
8169 if (yy_conf->name == NULL || yy_aconf->user == NULL)
8170 {
8171 delete_conf_item(yy_conf);
8172 yy_conf = NULL;
8173 yy_aconf = NULL;
8174 }
8175 }
8176 }
8177 break;
8178
8179 case 670:
8180
8181 /* Line 1455 of yacc.c */
8182 #line 3697 "ircd_parser.y"
8183 {
8184 if (conf_parser_ctx.pass == 2)
8185 ConfigFileEntry.glines = yylval.number;
8186 }
8187 break;
8188
8189 case 671:
8190
8191 /* Line 1455 of yacc.c */
8192 #line 3703 "ircd_parser.y"
8193 {
8194 if (conf_parser_ctx.pass == 2)
8195 ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
8196 }
8197 break;
8198
8199 case 672:
8200
8201 /* Line 1455 of yacc.c */
8202 #line 3709 "ircd_parser.y"
8203 {
8204 if (conf_parser_ctx.pass == 2)
8205 ConfigFileEntry.gline_logging = 0;
8206 }
8207 break;
8208
8209 case 676:
8210
8211 /* Line 1455 of yacc.c */
8212 #line 3715 "ircd_parser.y"
8213 {
8214 if (conf_parser_ctx.pass == 2)
8215 ConfigFileEntry.gline_logging |= GDENY_REJECT;
8216 }
8217 break;
8218
8219 case 677:
8220
8221 /* Line 1455 of yacc.c */
8222 #line 3719 "ircd_parser.y"
8223 {
8224 if (conf_parser_ctx.pass == 2)
8225 ConfigFileEntry.gline_logging |= GDENY_BLOCK;
8226 }
8227 break;
8228
8229 case 678:
8230
8231 /* Line 1455 of yacc.c */
8232 #line 3725 "ircd_parser.y"
8233 {
8234 if (conf_parser_ctx.pass == 2)
8235 {
8236 struct split_nuh_item nuh;
8237
8238 nuh.nuhmask = yylval.string;
8239 nuh.nickptr = NULL;
8240 nuh.userptr = userbuf;
8241 nuh.hostptr = hostbuf;
8242
8243 nuh.nicksize = 0;
8244 nuh.usersize = sizeof(userbuf);
8245 nuh.hostsize = sizeof(hostbuf);
8246
8247 split_nuh(&nuh);
8248
8249 if (yy_aconf->user == NULL)
8250 {
8251 DupString(yy_aconf->user, userbuf);
8252 DupString(yy_aconf->host, hostbuf);
8253 }
8254 else
8255 {
8256 struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
8257
8258 DupString(yy_tmp->user, userbuf);
8259 DupString(yy_tmp->host, hostbuf);
8260
8261 dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
8262 }
8263 }
8264 }
8265 break;
8266
8267 case 679:
8268
8269 /* Line 1455 of yacc.c */
8270 #line 3759 "ircd_parser.y"
8271 {
8272 if (conf_parser_ctx.pass == 2)
8273 {
8274 MyFree(yy_conf->name);
8275 DupString(yy_conf->name, yylval.string);
8276 }
8277 }
8278 break;
8279
8280 case 680:
8281
8282 /* Line 1455 of yacc.c */
8283 #line 3768 "ircd_parser.y"
8284 {
8285 if (conf_parser_ctx.pass == 2)
8286 yy_aconf->flags = 0;
8287 }
8288 break;
8289
8290 case 681:
8291
8292 /* Line 1455 of yacc.c */
8293 #line 3772 "ircd_parser.y"
8294 {
8295 if (conf_parser_ctx.pass == 2)
8296 {
8297 struct CollectItem *yy_tmp = NULL;
8298 dlink_node *ptr, *next_ptr;
8299
8300 DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
8301 {
8302 struct AccessItem *new_aconf;
8303 struct ConfItem *new_conf;
8304
8305 yy_tmp = ptr->data;
8306 new_conf = make_conf_item(GDENY_TYPE);
8307 new_aconf = map_to_conf(new_conf);
8308
8309 new_aconf->flags = yy_aconf->flags;
8310
8311 if (yy_conf->name != NULL)
8312 DupString(new_conf->name, yy_conf->name);
8313 else
8314 DupString(new_conf->name, "*");
8315 if (yy_aconf->user != NULL)
8316 DupString(new_aconf->user, yy_tmp->user);
8317 else
8318 DupString(new_aconf->user, "*");
8319 if (yy_aconf->host != NULL)
8320 DupString(new_aconf->host, yy_tmp->host);
8321 else
8322 DupString(new_aconf->host, "*");
8323
8324 dlinkDelete(&yy_tmp->node, &col_conf_list);
8325 }
8326
8327 /*
8328 * In case someone has fed us with more than one action= after user/name
8329 * which would leak memory -Michael
8330 */
8331 if (yy_conf->name == NULL || yy_aconf->user == NULL)
8332 delete_conf_item(yy_conf);
8333
8334 yy_conf = make_conf_item(GDENY_TYPE);
8335 yy_aconf = map_to_conf(yy_conf);
8336 }
8337 }
8338 break;
8339
8340 case 684:
8341
8342 /* Line 1455 of yacc.c */
8343 #line 3819 "ircd_parser.y"
8344 {
8345 if (conf_parser_ctx.pass == 2)
8346 yy_aconf->flags |= GDENY_REJECT;
8347 }
8348 break;
8349
8350 case 685:
8351
8352 /* Line 1455 of yacc.c */
8353 #line 3823 "ircd_parser.y"
8354 {
8355 if (conf_parser_ctx.pass == 2)
8356 yy_aconf->flags |= GDENY_BLOCK;
8357 }
8358 break;
8359
8360 case 708:
8361
8362 /* Line 1455 of yacc.c */
8363 #line 3847 "ircd_parser.y"
8364 {
8365 ConfigChannel.disable_fake_channels = yylval.number;
8366 }
8367 break;
8368
8369 case 709:
8370
8371 /* Line 1455 of yacc.c */
8372 #line 3852 "ircd_parser.y"
8373 {
8374 ConfigChannel.restrict_channels = yylval.number;
8375 }
8376 break;
8377
8378 case 710:
8379
8380 /* Line 1455 of yacc.c */
8381 #line 3857 "ircd_parser.y"
8382 {
8383 ConfigChannel.disable_local_channels = yylval.number;
8384 }
8385 break;
8386
8387 case 711:
8388
8389 /* Line 1455 of yacc.c */
8390 #line 3862 "ircd_parser.y"
8391 {
8392 ConfigChannel.use_except = yylval.number;
8393 }
8394 break;
8395
8396 case 712:
8397
8398 /* Line 1455 of yacc.c */
8399 #line 3867 "ircd_parser.y"
8400 {
8401 ConfigChannel.use_invex = yylval.number;
8402 }
8403 break;
8404
8405 case 713:
8406
8407 /* Line 1455 of yacc.c */
8408 #line 3872 "ircd_parser.y"
8409 {
8410 ConfigChannel.use_knock = yylval.number;
8411 }
8412 break;
8413
8414 case 714:
8415
8416 /* Line 1455 of yacc.c */
8417 #line 3877 "ircd_parser.y"
8418 {
8419 ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
8420 }
8421 break;
8422
8423 case 715:
8424
8425 /* Line 1455 of yacc.c */
8426 #line 3882 "ircd_parser.y"
8427 {
8428 ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
8429 }
8430 break;
8431
8432 case 716:
8433
8434 /* Line 1455 of yacc.c */
8435 #line 3887 "ircd_parser.y"
8436 {
8437 ConfigChannel.max_chans_per_user = (yyvsp[(3) - (4)].number);
8438 }
8439 break;
8440
8441 case 717:
8442
8443 /* Line 1455 of yacc.c */
8444 #line 3892 "ircd_parser.y"
8445 {
8446 ConfigChannel.quiet_on_ban = yylval.number;
8447 }
8448 break;
8449
8450 case 718:
8451
8452 /* Line 1455 of yacc.c */
8453 #line 3897 "ircd_parser.y"
8454 {
8455 ConfigChannel.max_bans = (yyvsp[(3) - (4)].number);
8456 }
8457 break;
8458
8459 case 719:
8460
8461 /* Line 1455 of yacc.c */
8462 #line 3902 "ircd_parser.y"
8463 {
8464 ConfigChannel.default_split_user_count = (yyvsp[(3) - (4)].number);
8465 }
8466 break;
8467
8468 case 720:
8469
8470 /* Line 1455 of yacc.c */
8471 #line 3907 "ircd_parser.y"
8472 {
8473 ConfigChannel.default_split_server_count = (yyvsp[(3) - (4)].number);
8474 }
8475 break;
8476
8477 case 721:
8478
8479 /* Line 1455 of yacc.c */
8480 #line 3912 "ircd_parser.y"
8481 {
8482 ConfigChannel.no_create_on_split = yylval.number;
8483 }
8484 break;
8485
8486 case 722:
8487
8488 /* Line 1455 of yacc.c */
8489 #line 3917 "ircd_parser.y"
8490 {
8491 ConfigChannel.no_join_on_split = yylval.number;
8492 }
8493 break;
8494
8495 case 723:
8496
8497 /* Line 1455 of yacc.c */
8498 #line 3922 "ircd_parser.y"
8499 {
8500 ConfigChannel.burst_topicwho = yylval.number;
8501 }
8502 break;
8503
8504 case 724:
8505
8506 /* Line 1455 of yacc.c */
8507 #line 3927 "ircd_parser.y"
8508 {
8509 GlobalSetOptions.joinfloodcount = yylval.number;
8510 }
8511 break;
8512
8513 case 725:
8514
8515 /* Line 1455 of yacc.c */
8516 #line 3932 "ircd_parser.y"
8517 {
8518 GlobalSetOptions.joinfloodtime = yylval.number;
8519 }
8520 break;
8521
8522 case 737:
8523
8524 /* Line 1455 of yacc.c */
8525 #line 3951 "ircd_parser.y"
8526 {
8527 if (conf_parser_ctx.pass == 2)
8528 ConfigServerHide.flatten_links = yylval.number;
8529 }
8530 break;
8531
8532 case 738:
8533
8534 /* Line 1455 of yacc.c */
8535 #line 3957 "ircd_parser.y"
8536 {
8537 if (conf_parser_ctx.pass == 2)
8538 ConfigServerHide.hide_servers = yylval.number;
8539 }
8540 break;
8541
8542 case 739:
8543
8544 /* Line 1455 of yacc.c */
8545 #line 3963 "ircd_parser.y"
8546 {
8547 if (conf_parser_ctx.pass == 2)
8548 {
8549 MyFree(ConfigServerHide.hidden_name);
8550 DupString(ConfigServerHide.hidden_name, yylval.string);
8551 }
8552 }
8553 break;
8554
8555 case 740:
8556
8557 /* Line 1455 of yacc.c */
8558 #line 3972 "ircd_parser.y"
8559 {
8560 if (conf_parser_ctx.pass == 2)
8561 {
8562 if (((yyvsp[(3) - (4)].number) > 0) && ConfigServerHide.links_disabled == 1)
8563 {
8564 eventAddIsh("write_links_file", write_links_file, NULL, (yyvsp[(3) - (4)].number));
8565 ConfigServerHide.links_disabled = 0;
8566 }
8567
8568 ConfigServerHide.links_delay = (yyvsp[(3) - (4)].number);
8569 }
8570 }
8571 break;
8572
8573 case 741:
8574
8575 /* Line 1455 of yacc.c */
8576 #line 3986 "ircd_parser.y"
8577 {
8578 if (conf_parser_ctx.pass == 2)
8579 ConfigServerHide.hidden = yylval.number;
8580 }
8581 break;
8582
8583 case 742:
8584
8585 /* Line 1455 of yacc.c */
8586 #line 3992 "ircd_parser.y"
8587 {
8588 if (conf_parser_ctx.pass == 2)
8589 ConfigServerHide.disable_hidden = yylval.number;
8590 }
8591 break;
8592
8593 case 743:
8594
8595 /* Line 1455 of yacc.c */
8596 #line 3998 "ircd_parser.y"
8597 {
8598 if (conf_parser_ctx.pass == 2)
8599 ConfigServerHide.hide_server_ips = yylval.number;
8600 }
8601 break;
8602
8603
8604
8605 /* Line 1455 of yacc.c */
8606 #line 8607 "ircd_parser.c"
8607 default: break;
8608 }
8609 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
8610
8611 YYPOPSTACK (yylen);
8612 yylen = 0;
8613 YY_STACK_PRINT (yyss, yyssp);
8614
8615 *++yyvsp = yyval;
8616
8617 /* Now `shift' the result of the reduction. Determine what state
8618 that goes to, based on the state we popped back to and the rule
8619 number reduced by. */
8620
8621 yyn = yyr1[yyn];
8622
8623 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
8624 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
8625 yystate = yytable[yystate];
8626 else
8627 yystate = yydefgoto[yyn - YYNTOKENS];
8628
8629 goto yynewstate;
8630
8631
8632 /*------------------------------------.
8633 | yyerrlab -- here on detecting error |
8634 `------------------------------------*/
8635 yyerrlab:
8636 /* If not already recovering from an error, report this error. */
8637 if (!yyerrstatus)
8638 {
8639 ++yynerrs;
8640 #if ! YYERROR_VERBOSE
8641 yyerror (YY_("syntax error"));
8642 #else
8643 {
8644 YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
8645 if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
8646 {
8647 YYSIZE_T yyalloc = 2 * yysize;
8648 if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
8649 yyalloc = YYSTACK_ALLOC_MAXIMUM;
8650 if (yymsg != yymsgbuf)
8651 YYSTACK_FREE (yymsg);
8652 yymsg = (char *) YYSTACK_ALLOC (yyalloc);
8653 if (yymsg)
8654 yymsg_alloc = yyalloc;
8655 else
8656 {
8657 yymsg = yymsgbuf;
8658 yymsg_alloc = sizeof yymsgbuf;
8659 }
8660 }
8661
8662 if (0 < yysize && yysize <= yymsg_alloc)
8663 {
8664 (void) yysyntax_error (yymsg, yystate, yychar);
8665 yyerror (yymsg);
8666 }
8667 else
8668 {
8669 yyerror (YY_("syntax error"));
8670 if (yysize != 0)
8671 goto yyexhaustedlab;
8672 }
8673 }
8674 #endif
8675 }
8676
8677
8678
8679 if (yyerrstatus == 3)
8680 {
8681 /* If just tried and failed to reuse lookahead token after an
8682 error, discard it. */
8683
8684 if (yychar <= YYEOF)
8685 {
8686 /* Return failure if at end of input. */
8687 if (yychar == YYEOF)
8688 YYABORT;
8689 }
8690 else
8691 {
8692 yydestruct ("Error: discarding",
8693 yytoken, &yylval);
8694 yychar = YYEMPTY;
8695 }
8696 }
8697
8698 /* Else will try to reuse lookahead token after shifting the error
8699 token. */
8700 goto yyerrlab1;
8701
8702
8703 /*---------------------------------------------------.
8704 | yyerrorlab -- error raised explicitly by YYERROR. |
8705 `---------------------------------------------------*/
8706 yyerrorlab:
8707
8708 /* Pacify compilers like GCC when the user code never invokes
8709 YYERROR and the label yyerrorlab therefore never appears in user
8710 code. */
8711 if (/*CONSTCOND*/ 0)
8712 goto yyerrorlab;
8713
8714 /* Do not reclaim the symbols of the rule which action triggered
8715 this YYERROR. */
8716 YYPOPSTACK (yylen);
8717 yylen = 0;
8718 YY_STACK_PRINT (yyss, yyssp);
8719 yystate = *yyssp;
8720 goto yyerrlab1;
8721
8722
8723 /*-------------------------------------------------------------.
8724 | yyerrlab1 -- common code for both syntax error and YYERROR. |
8725 `-------------------------------------------------------------*/
8726 yyerrlab1:
8727 yyerrstatus = 3; /* Each real token shifted decrements this. */
8728
8729 for (;;)
8730 {
8731 yyn = yypact[yystate];
8732 if (yyn != YYPACT_NINF)
8733 {
8734 yyn += YYTERROR;
8735 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
8736 {
8737 yyn = yytable[yyn];
8738 if (0 < yyn)
8739 break;
8740 }
8741 }
8742
8743 /* Pop the current state because it cannot handle the error token. */
8744 if (yyssp == yyss)
8745 YYABORT;
8746
8747
8748 yydestruct ("Error: popping",
8749 yystos[yystate], yyvsp);
8750 YYPOPSTACK (1);
8751 yystate = *yyssp;
8752 YY_STACK_PRINT (yyss, yyssp);
8753 }
8754
8755 *++yyvsp = yylval;
8756
8757
8758 /* Shift the error token. */
8759 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
8760
8761 yystate = yyn;
8762 goto yynewstate;
8763
8764
8765 /*-------------------------------------.
8766 | yyacceptlab -- YYACCEPT comes here. |
8767 `-------------------------------------*/
8768 yyacceptlab:
8769 yyresult = 0;
8770 goto yyreturn;
8771
8772 /*-----------------------------------.
8773 | yyabortlab -- YYABORT comes here. |
8774 `-----------------------------------*/
8775 yyabortlab:
8776 yyresult = 1;
8777 goto yyreturn;
8778
8779 #if !defined(yyoverflow) || YYERROR_VERBOSE
8780 /*-------------------------------------------------.
8781 | yyexhaustedlab -- memory exhaustion comes here. |
8782 `-------------------------------------------------*/
8783 yyexhaustedlab:
8784 yyerror (YY_("memory exhausted"));
8785 yyresult = 2;
8786 /* Fall through. */
8787 #endif
8788
8789 yyreturn:
8790 if (yychar != YYEMPTY)
8791 yydestruct ("Cleanup: discarding lookahead",
8792 yytoken, &yylval);
8793 /* Do not reclaim the symbols of the rule which action triggered
8794 this YYABORT or YYACCEPT. */
8795 YYPOPSTACK (yylen);
8796 YY_STACK_PRINT (yyss, yyssp);
8797 while (yyssp != yyss)
8798 {
8799 yydestruct ("Cleanup: popping",
8800 yystos[*yyssp], yyvsp);
8801 YYPOPSTACK (1);
8802 }
8803 #ifndef yyoverflow
8804 if (yyss != yyssa)
8805 YYSTACK_FREE (yyss);
8806 #endif
8807 #if YYERROR_VERBOSE
8808 if (yymsg != yymsgbuf)
8809 YYSTACK_FREE (yymsg);
8810 #endif
8811 /* Make sure YYID is used. */
8812 return YYID (yyresult);
8813 }
8814
8815
8816

Properties

Name Value
svn:eol-style native