ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 978
Committed: Sun Aug 9 09:47:58 2009 UTC (16 years ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-7.2/src/ircd_parser.c
File size: 258456 byte(s)
Log Message:
- avoid using native basename() since some implementations may or may not modify passed data

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

Properties

Name Value
svn:eol-style native