ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 8497
Committed: Thu Apr 5 12:47:26 2018 UTC (7 years, 4 months ago) by michael
Content type: text/x-csrc
File size: 220175 byte(s)
Log Message:
- Recreate autogenerated files

File Contents

# Content
1 /* A Bison parser, made by GNU Bison 3.0.4. */
2
3 /* Bison implementation for Yacc-like parsers in C
4
5 Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
6
7 This program is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20 /* As a special exception, you may create a larger work that contains
21 part or all of the Bison parser skeleton and distribute that work
22 under terms of your choice, so long as that work isn't itself a
23 parser generator using the skeleton or a modified version thereof
24 as a parser skeleton. Alternatively, if you modify or redistribute
25 the parser skeleton itself, you may (at your option) remove this
26 special exception, which will cause the skeleton and the resulting
27 Bison output files to be licensed under the GNU General Public
28 License without this special exception.
29
30 This special exception was added by the Free Software Foundation in
31 version 2.2 of Bison. */
32
33 /* C LALR(1) parser skeleton written by Richard Stallman, by
34 simplifying the original so-called "semantic" parser. */
35
36 /* All symbols defined below should begin with yy or YY, to avoid
37 infringing on user name space. This should be done even for local
38 variables, as they might otherwise be expanded by user macros.
39 There are some unavoidable exceptions within include files to
40 define necessary library symbols; they are noted "INFRINGES ON
41 USER NAME SPACE" below. */
42
43 /* Identify Bison output. */
44 #define YYBISON 1
45
46 /* Bison version. */
47 #define YYBISON_VERSION "3.0.4"
48
49 /* Skeleton name. */
50 #define YYSKELETON_NAME "yacc.c"
51
52 /* Pure parsers. */
53 #define YYPURE 0
54
55 /* Push parsers. */
56 #define YYPUSH 0
57
58 /* Pull parsers. */
59 #define YYPULL 1
60
61
62
63
64 /* Copy the first part of user declarations. */
65 #line 28 "conf_parser.y" /* yacc.c:339 */
66
67
68 #include "config.h"
69 #include "stdinc.h"
70 #include "ircd.h"
71 #include "list.h"
72 #include "parse.h"
73 #include "conf.h"
74 #include "conf_class.h"
75 #include "conf_cluster.h"
76 #include "conf_gecos.h"
77 #include "conf_pseudo.h"
78 #include "conf_resv.h"
79 #include "conf_service.h"
80 #include "conf_shared.h"
81 #include "event.h"
82 #include "id.h"
83 #include "log.h"
84 #include "irc_string.h"
85 #include "memory.h"
86 #include "modules.h"
87 #include "server.h"
88 #include "hostmask.h"
89 #include "listener.h"
90 #include "user.h"
91 #include "motd.h"
92
93 int yylex(void);
94
95 static struct
96 {
97 struct
98 {
99 dlink_list list;
100 } mask,
101 leaf,
102 hub;
103
104 struct
105 {
106 char buf[IRCD_BUFSIZE];
107 } name,
108 nick,
109 user,
110 host,
111 addr,
112 bind,
113 file,
114 ciph,
115 cert,
116 rpass,
117 spass,
118 whois,
119 class,
120 target,
121 prepend,
122 command;
123
124 struct
125 {
126 unsigned int value;
127 } flags,
128 modes,
129 size,
130 type,
131 port,
132 aftype,
133 ping_freq,
134 max_perip_local,
135 max_perip_global,
136 con_freq,
137 min_idle,
138 max_idle,
139 max_total,
140 max_sendq,
141 max_recvq,
142 max_channels,
143 cidr_bitlen_ipv4,
144 cidr_bitlen_ipv6,
145 number_per_cidr;
146 } block_state;
147
148 static void
149 reset_block_state(void)
150 {
151 dlink_node *node = NULL, *node_next = NULL;
152
153 DLINK_FOREACH_SAFE(node, node_next, block_state.mask.list.head)
154 {
155 xfree(node->data);
156 dlinkDelete(node, &block_state.mask.list);
157 free_dlink_node(node);
158 }
159
160 DLINK_FOREACH_SAFE(node, node_next, block_state.leaf.list.head)
161 {
162 xfree(node->data);
163 dlinkDelete(node, &block_state.leaf.list);
164 free_dlink_node(node);
165 }
166
167 DLINK_FOREACH_SAFE(node, node_next, block_state.hub.list.head)
168 {
169 xfree(node->data);
170 dlinkDelete(node, &block_state.hub.list);
171 free_dlink_node(node);
172 }
173
174 memset(&block_state, 0, sizeof(block_state));
175 }
176
177
178 #line 179 "conf_parser.c" /* yacc.c:339 */
179
180 # ifndef YY_NULLPTR
181 # if defined __cplusplus && 201103L <= __cplusplus
182 # define YY_NULLPTR nullptr
183 # else
184 # define YY_NULLPTR 0
185 # endif
186 # endif
187
188 /* Enabling verbose error messages. */
189 #ifdef YYERROR_VERBOSE
190 # undef YYERROR_VERBOSE
191 # define YYERROR_VERBOSE 1
192 #else
193 # define YYERROR_VERBOSE 0
194 #endif
195
196 /* In a future release of Bison, this section will be replaced
197 by #include "y.tab.h". */
198 #ifndef YY_YY_CONF_PARSER_H_INCLUDED
199 # define YY_YY_CONF_PARSER_H_INCLUDED
200 /* Debug traces. */
201 #ifndef YYDEBUG
202 # define YYDEBUG 0
203 #endif
204 #if YYDEBUG
205 extern int yydebug;
206 #endif
207
208 /* Token type. */
209 #ifndef YYTOKENTYPE
210 # define YYTOKENTYPE
211 enum yytokentype
212 {
213 ACCEPT_PASSWORD = 258,
214 ADMIN = 259,
215 AFTYPE = 260,
216 ANTI_NICK_FLOOD = 261,
217 ANTI_SPAM_EXIT_MESSAGE_TIME = 262,
218 AUTOCONN = 263,
219 AWAY_COUNT = 264,
220 AWAY_TIME = 265,
221 BYTES = 266,
222 KBYTES = 267,
223 MBYTES = 268,
224 CALLER_ID_WAIT = 269,
225 CAN_FLOOD = 270,
226 CHANNEL = 271,
227 CIDR_BITLEN_IPV4 = 272,
228 CIDR_BITLEN_IPV6 = 273,
229 CLASS = 274,
230 CLOSE = 275,
231 CONNECT = 276,
232 CONNECTFREQ = 277,
233 CYCLE_ON_HOST_CHANGE = 278,
234 DEFAULT_FLOODCOUNT = 279,
235 DEFAULT_FLOODTIME = 280,
236 DEFAULT_JOIN_FLOOD_COUNT = 281,
237 DEFAULT_JOIN_FLOOD_TIME = 282,
238 DEFAULT_MAX_CLIENTS = 283,
239 DENY = 284,
240 DESCRIPTION = 285,
241 DIE = 286,
242 DISABLE_AUTH = 287,
243 DISABLE_FAKE_CHANNELS = 288,
244 DISABLE_REMOTE_COMMANDS = 289,
245 DLINE_MIN_CIDR = 290,
246 DLINE_MIN_CIDR6 = 291,
247 DOTS_IN_IDENT = 292,
248 EMAIL = 293,
249 ENCRYPTED = 294,
250 EXCEED_LIMIT = 295,
251 EXEMPT = 296,
252 FAILED_OPER_NOTICE = 297,
253 FLATTEN_LINKS = 298,
254 FLATTEN_LINKS_DELAY = 299,
255 FLATTEN_LINKS_FILE = 300,
256 GECOS = 301,
257 GENERAL = 302,
258 HIDDEN = 303,
259 HIDDEN_NAME = 304,
260 HIDE_CHANS = 305,
261 HIDE_IDLE = 306,
262 HIDE_IDLE_FROM_OPERS = 307,
263 HIDE_SERVER_IPS = 308,
264 HIDE_SERVERS = 309,
265 HIDE_SERVICES = 310,
266 HOST = 311,
267 HUB = 312,
268 HUB_MASK = 313,
269 IGNORE_BOGUS_TS = 314,
270 INVISIBLE_ON_CONNECT = 315,
271 INVITE_CLIENT_COUNT = 316,
272 INVITE_CLIENT_TIME = 317,
273 INVITE_DELAY_CHANNEL = 318,
274 INVITE_EXPIRE_TIME = 319,
275 IP = 320,
276 IRCD_AUTH = 321,
277 IRCD_FLAGS = 322,
278 IRCD_SID = 323,
279 JOIN = 324,
280 KILL = 325,
281 KILL_CHASE_TIME_LIMIT = 326,
282 KLINE = 327,
283 KLINE_EXEMPT = 328,
284 KLINE_MIN_CIDR = 329,
285 KLINE_MIN_CIDR6 = 330,
286 KNOCK_CLIENT_COUNT = 331,
287 KNOCK_CLIENT_TIME = 332,
288 KNOCK_DELAY_CHANNEL = 333,
289 LEAF_MASK = 334,
290 LISTEN = 335,
291 MASK = 336,
292 MAX_ACCEPT = 337,
293 MAX_BANS = 338,
294 MAX_BANS_LARGE = 339,
295 MAX_CHANNELS = 340,
296 MAX_IDLE = 341,
297 MAX_INVITES = 342,
298 MAX_NICK_CHANGES = 343,
299 MAX_NICK_LENGTH = 344,
300 MAX_NICK_TIME = 345,
301 MAX_NUMBER = 346,
302 MAX_TARGETS = 347,
303 MAX_TOPIC_LENGTH = 348,
304 MAX_WATCH = 349,
305 MIN_IDLE = 350,
306 MIN_NONWILDCARD = 351,
307 MIN_NONWILDCARD_SIMPLE = 352,
308 MODULE = 353,
309 MODULES = 354,
310 MOTD = 355,
311 NAME = 356,
312 NEED_IDENT = 357,
313 NEED_PASSWORD = 358,
314 NETWORK_DESC = 359,
315 NETWORK_NAME = 360,
316 NICK = 361,
317 NO_OPER_FLOOD = 362,
318 NO_TILDE = 363,
319 NUMBER = 364,
320 NUMBER_PER_CIDR = 365,
321 NUMBER_PER_IP_GLOBAL = 366,
322 NUMBER_PER_IP_LOCAL = 367,
323 OPER_ONLY_UMODES = 368,
324 OPER_UMODES = 369,
325 OPERATOR = 370,
326 OPERS_BYPASS_CALLERID = 371,
327 PACE_WAIT = 372,
328 PACE_WAIT_SIMPLE = 373,
329 PASSWORD = 374,
330 PATH = 375,
331 PING_COOKIE = 376,
332 PING_TIME = 377,
333 PORT = 378,
334 QSTRING = 379,
335 RANDOM_IDLE = 380,
336 REASON = 381,
337 REDIRPORT = 382,
338 REDIRSERV = 383,
339 REHASH = 384,
340 REMOTE = 385,
341 REMOTEBAN = 386,
342 RESV = 387,
343 RESV_EXEMPT = 388,
344 RSA_PRIVATE_KEY_FILE = 389,
345 SECONDS = 390,
346 MINUTES = 391,
347 HOURS = 392,
348 DAYS = 393,
349 WEEKS = 394,
350 MONTHS = 395,
351 YEARS = 396,
352 SEND_PASSWORD = 397,
353 SENDQ = 398,
354 SERVERHIDE = 399,
355 SERVERINFO = 400,
356 SHORT_MOTD = 401,
357 SPOOF = 402,
358 SPOOF_NOTICE = 403,
359 SQUIT = 404,
360 SSL_CERTIFICATE_FILE = 405,
361 SSL_CERTIFICATE_FINGERPRINT = 406,
362 SSL_CONNECTION_REQUIRED = 407,
363 SSL_DH_ELLIPTIC_CURVE = 408,
364 SSL_DH_PARAM_FILE = 409,
365 SSL_MESSAGE_DIGEST_ALGORITHM = 410,
366 STATS_E_DISABLED = 411,
367 STATS_I_OPER_ONLY = 412,
368 STATS_K_OPER_ONLY = 413,
369 STATS_M_OPER_ONLY = 414,
370 STATS_O_OPER_ONLY = 415,
371 STATS_P_OPER_ONLY = 416,
372 STATS_U_OPER_ONLY = 417,
373 T_ALL = 418,
374 T_BOTS = 419,
375 T_CALLERID = 420,
376 T_CCONN = 421,
377 T_COMMAND = 422,
378 T_CLUSTER = 423,
379 T_DEAF = 424,
380 T_DEBUG = 425,
381 T_DLINE = 426,
382 T_EXTERNAL = 427,
383 T_FARCONNECT = 428,
384 T_FILE = 429,
385 T_FULL = 430,
386 T_GLOBOPS = 431,
387 T_INVISIBLE = 432,
388 T_IPV4 = 433,
389 T_IPV6 = 434,
390 T_LOCOPS = 435,
391 T_LOG = 436,
392 T_NCHANGE = 437,
393 T_NONONREG = 438,
394 T_OPME = 439,
395 T_PREPEND = 440,
396 T_PSEUDO = 441,
397 T_RECVQ = 442,
398 T_REJ = 443,
399 T_RESTART = 444,
400 T_SERVER = 445,
401 T_SERVICE = 446,
402 T_SERVNOTICE = 447,
403 T_SET = 448,
404 T_SHARED = 449,
405 T_SIZE = 450,
406 T_SKILL = 451,
407 T_SOFTCALLERID = 452,
408 T_SPY = 453,
409 T_SSL = 454,
410 T_SSL_CIPHER_LIST = 455,
411 T_TARGET = 456,
412 T_UMODES = 457,
413 T_UNAUTH = 458,
414 T_UNDLINE = 459,
415 T_UNLIMITED = 460,
416 T_UNRESV = 461,
417 T_UNXLINE = 462,
418 T_WALLOP = 463,
419 T_WALLOPS = 464,
420 T_WEBIRC = 465,
421 TBOOL = 466,
422 THROTTLE_COUNT = 467,
423 THROTTLE_TIME = 468,
424 TKLINE_EXPIRE_NOTICES = 469,
425 TMASKED = 470,
426 TS_MAX_DELTA = 471,
427 TS_WARN_DELTA = 472,
428 TWODOTS = 473,
429 TYPE = 474,
430 UNKLINE = 475,
431 USE_LOGGING = 476,
432 USER = 477,
433 VHOST = 478,
434 VHOST6 = 479,
435 WARN_NO_CONNECT_BLOCK = 480,
436 WHOIS = 481,
437 WHOWAS_HISTORY_LENGTH = 482,
438 XLINE = 483,
439 XLINE_EXEMPT = 484
440 };
441 #endif
442 /* Tokens. */
443 #define ACCEPT_PASSWORD 258
444 #define ADMIN 259
445 #define AFTYPE 260
446 #define ANTI_NICK_FLOOD 261
447 #define ANTI_SPAM_EXIT_MESSAGE_TIME 262
448 #define AUTOCONN 263
449 #define AWAY_COUNT 264
450 #define AWAY_TIME 265
451 #define BYTES 266
452 #define KBYTES 267
453 #define MBYTES 268
454 #define CALLER_ID_WAIT 269
455 #define CAN_FLOOD 270
456 #define CHANNEL 271
457 #define CIDR_BITLEN_IPV4 272
458 #define CIDR_BITLEN_IPV6 273
459 #define CLASS 274
460 #define CLOSE 275
461 #define CONNECT 276
462 #define CONNECTFREQ 277
463 #define CYCLE_ON_HOST_CHANGE 278
464 #define DEFAULT_FLOODCOUNT 279
465 #define DEFAULT_FLOODTIME 280
466 #define DEFAULT_JOIN_FLOOD_COUNT 281
467 #define DEFAULT_JOIN_FLOOD_TIME 282
468 #define DEFAULT_MAX_CLIENTS 283
469 #define DENY 284
470 #define DESCRIPTION 285
471 #define DIE 286
472 #define DISABLE_AUTH 287
473 #define DISABLE_FAKE_CHANNELS 288
474 #define DISABLE_REMOTE_COMMANDS 289
475 #define DLINE_MIN_CIDR 290
476 #define DLINE_MIN_CIDR6 291
477 #define DOTS_IN_IDENT 292
478 #define EMAIL 293
479 #define ENCRYPTED 294
480 #define EXCEED_LIMIT 295
481 #define EXEMPT 296
482 #define FAILED_OPER_NOTICE 297
483 #define FLATTEN_LINKS 298
484 #define FLATTEN_LINKS_DELAY 299
485 #define FLATTEN_LINKS_FILE 300
486 #define GECOS 301
487 #define GENERAL 302
488 #define HIDDEN 303
489 #define HIDDEN_NAME 304
490 #define HIDE_CHANS 305
491 #define HIDE_IDLE 306
492 #define HIDE_IDLE_FROM_OPERS 307
493 #define HIDE_SERVER_IPS 308
494 #define HIDE_SERVERS 309
495 #define HIDE_SERVICES 310
496 #define HOST 311
497 #define HUB 312
498 #define HUB_MASK 313
499 #define IGNORE_BOGUS_TS 314
500 #define INVISIBLE_ON_CONNECT 315
501 #define INVITE_CLIENT_COUNT 316
502 #define INVITE_CLIENT_TIME 317
503 #define INVITE_DELAY_CHANNEL 318
504 #define INVITE_EXPIRE_TIME 319
505 #define IP 320
506 #define IRCD_AUTH 321
507 #define IRCD_FLAGS 322
508 #define IRCD_SID 323
509 #define JOIN 324
510 #define KILL 325
511 #define KILL_CHASE_TIME_LIMIT 326
512 #define KLINE 327
513 #define KLINE_EXEMPT 328
514 #define KLINE_MIN_CIDR 329
515 #define KLINE_MIN_CIDR6 330
516 #define KNOCK_CLIENT_COUNT 331
517 #define KNOCK_CLIENT_TIME 332
518 #define KNOCK_DELAY_CHANNEL 333
519 #define LEAF_MASK 334
520 #define LISTEN 335
521 #define MASK 336
522 #define MAX_ACCEPT 337
523 #define MAX_BANS 338
524 #define MAX_BANS_LARGE 339
525 #define MAX_CHANNELS 340
526 #define MAX_IDLE 341
527 #define MAX_INVITES 342
528 #define MAX_NICK_CHANGES 343
529 #define MAX_NICK_LENGTH 344
530 #define MAX_NICK_TIME 345
531 #define MAX_NUMBER 346
532 #define MAX_TARGETS 347
533 #define MAX_TOPIC_LENGTH 348
534 #define MAX_WATCH 349
535 #define MIN_IDLE 350
536 #define MIN_NONWILDCARD 351
537 #define MIN_NONWILDCARD_SIMPLE 352
538 #define MODULE 353
539 #define MODULES 354
540 #define MOTD 355
541 #define NAME 356
542 #define NEED_IDENT 357
543 #define NEED_PASSWORD 358
544 #define NETWORK_DESC 359
545 #define NETWORK_NAME 360
546 #define NICK 361
547 #define NO_OPER_FLOOD 362
548 #define NO_TILDE 363
549 #define NUMBER 364
550 #define NUMBER_PER_CIDR 365
551 #define NUMBER_PER_IP_GLOBAL 366
552 #define NUMBER_PER_IP_LOCAL 367
553 #define OPER_ONLY_UMODES 368
554 #define OPER_UMODES 369
555 #define OPERATOR 370
556 #define OPERS_BYPASS_CALLERID 371
557 #define PACE_WAIT 372
558 #define PACE_WAIT_SIMPLE 373
559 #define PASSWORD 374
560 #define PATH 375
561 #define PING_COOKIE 376
562 #define PING_TIME 377
563 #define PORT 378
564 #define QSTRING 379
565 #define RANDOM_IDLE 380
566 #define REASON 381
567 #define REDIRPORT 382
568 #define REDIRSERV 383
569 #define REHASH 384
570 #define REMOTE 385
571 #define REMOTEBAN 386
572 #define RESV 387
573 #define RESV_EXEMPT 388
574 #define RSA_PRIVATE_KEY_FILE 389
575 #define SECONDS 390
576 #define MINUTES 391
577 #define HOURS 392
578 #define DAYS 393
579 #define WEEKS 394
580 #define MONTHS 395
581 #define YEARS 396
582 #define SEND_PASSWORD 397
583 #define SENDQ 398
584 #define SERVERHIDE 399
585 #define SERVERINFO 400
586 #define SHORT_MOTD 401
587 #define SPOOF 402
588 #define SPOOF_NOTICE 403
589 #define SQUIT 404
590 #define SSL_CERTIFICATE_FILE 405
591 #define SSL_CERTIFICATE_FINGERPRINT 406
592 #define SSL_CONNECTION_REQUIRED 407
593 #define SSL_DH_ELLIPTIC_CURVE 408
594 #define SSL_DH_PARAM_FILE 409
595 #define SSL_MESSAGE_DIGEST_ALGORITHM 410
596 #define STATS_E_DISABLED 411
597 #define STATS_I_OPER_ONLY 412
598 #define STATS_K_OPER_ONLY 413
599 #define STATS_M_OPER_ONLY 414
600 #define STATS_O_OPER_ONLY 415
601 #define STATS_P_OPER_ONLY 416
602 #define STATS_U_OPER_ONLY 417
603 #define T_ALL 418
604 #define T_BOTS 419
605 #define T_CALLERID 420
606 #define T_CCONN 421
607 #define T_COMMAND 422
608 #define T_CLUSTER 423
609 #define T_DEAF 424
610 #define T_DEBUG 425
611 #define T_DLINE 426
612 #define T_EXTERNAL 427
613 #define T_FARCONNECT 428
614 #define T_FILE 429
615 #define T_FULL 430
616 #define T_GLOBOPS 431
617 #define T_INVISIBLE 432
618 #define T_IPV4 433
619 #define T_IPV6 434
620 #define T_LOCOPS 435
621 #define T_LOG 436
622 #define T_NCHANGE 437
623 #define T_NONONREG 438
624 #define T_OPME 439
625 #define T_PREPEND 440
626 #define T_PSEUDO 441
627 #define T_RECVQ 442
628 #define T_REJ 443
629 #define T_RESTART 444
630 #define T_SERVER 445
631 #define T_SERVICE 446
632 #define T_SERVNOTICE 447
633 #define T_SET 448
634 #define T_SHARED 449
635 #define T_SIZE 450
636 #define T_SKILL 451
637 #define T_SOFTCALLERID 452
638 #define T_SPY 453
639 #define T_SSL 454
640 #define T_SSL_CIPHER_LIST 455
641 #define T_TARGET 456
642 #define T_UMODES 457
643 #define T_UNAUTH 458
644 #define T_UNDLINE 459
645 #define T_UNLIMITED 460
646 #define T_UNRESV 461
647 #define T_UNXLINE 462
648 #define T_WALLOP 463
649 #define T_WALLOPS 464
650 #define T_WEBIRC 465
651 #define TBOOL 466
652 #define THROTTLE_COUNT 467
653 #define THROTTLE_TIME 468
654 #define TKLINE_EXPIRE_NOTICES 469
655 #define TMASKED 470
656 #define TS_MAX_DELTA 471
657 #define TS_WARN_DELTA 472
658 #define TWODOTS 473
659 #define TYPE 474
660 #define UNKLINE 475
661 #define USE_LOGGING 476
662 #define USER 477
663 #define VHOST 478
664 #define VHOST6 479
665 #define WARN_NO_CONNECT_BLOCK 480
666 #define WHOIS 481
667 #define WHOWAS_HISTORY_LENGTH 482
668 #define XLINE 483
669 #define XLINE_EXEMPT 484
670
671 /* Value type. */
672 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
673
674 union YYSTYPE
675 {
676 #line 141 "conf_parser.y" /* yacc.c:355 */
677
678 int number;
679 char *string;
680
681 #line 682 "conf_parser.c" /* yacc.c:355 */
682 };
683
684 typedef union YYSTYPE YYSTYPE;
685 # define YYSTYPE_IS_TRIVIAL 1
686 # define YYSTYPE_IS_DECLARED 1
687 #endif
688
689
690 extern YYSTYPE yylval;
691
692 int yyparse (void);
693
694 #endif /* !YY_YY_CONF_PARSER_H_INCLUDED */
695
696 /* Copy the second part of user declarations. */
697
698 #line 699 "conf_parser.c" /* yacc.c:358 */
699
700 #ifdef short
701 # undef short
702 #endif
703
704 #ifdef YYTYPE_UINT8
705 typedef YYTYPE_UINT8 yytype_uint8;
706 #else
707 typedef unsigned char yytype_uint8;
708 #endif
709
710 #ifdef YYTYPE_INT8
711 typedef YYTYPE_INT8 yytype_int8;
712 #else
713 typedef signed char yytype_int8;
714 #endif
715
716 #ifdef YYTYPE_UINT16
717 typedef YYTYPE_UINT16 yytype_uint16;
718 #else
719 typedef unsigned short int yytype_uint16;
720 #endif
721
722 #ifdef YYTYPE_INT16
723 typedef YYTYPE_INT16 yytype_int16;
724 #else
725 typedef short int yytype_int16;
726 #endif
727
728 #ifndef YYSIZE_T
729 # ifdef __SIZE_TYPE__
730 # define YYSIZE_T __SIZE_TYPE__
731 # elif defined size_t
732 # define YYSIZE_T size_t
733 # elif ! defined YYSIZE_T
734 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
735 # define YYSIZE_T size_t
736 # else
737 # define YYSIZE_T unsigned int
738 # endif
739 #endif
740
741 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
742
743 #ifndef YY_
744 # if defined YYENABLE_NLS && YYENABLE_NLS
745 # if ENABLE_NLS
746 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
747 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
748 # endif
749 # endif
750 # ifndef YY_
751 # define YY_(Msgid) Msgid
752 # endif
753 #endif
754
755 #ifndef YY_ATTRIBUTE
756 # if (defined __GNUC__ \
757 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
758 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
759 # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
760 # else
761 # define YY_ATTRIBUTE(Spec) /* empty */
762 # endif
763 #endif
764
765 #ifndef YY_ATTRIBUTE_PURE
766 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
767 #endif
768
769 #ifndef YY_ATTRIBUTE_UNUSED
770 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
771 #endif
772
773 #if !defined _Noreturn \
774 && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
775 # if defined _MSC_VER && 1200 <= _MSC_VER
776 # define _Noreturn __declspec (noreturn)
777 # else
778 # define _Noreturn YY_ATTRIBUTE ((__noreturn__))
779 # endif
780 #endif
781
782 /* Suppress unused-variable warnings by "using" E. */
783 #if ! defined lint || defined __GNUC__
784 # define YYUSE(E) ((void) (E))
785 #else
786 # define YYUSE(E) /* empty */
787 #endif
788
789 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
790 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
791 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
792 _Pragma ("GCC diagnostic push") \
793 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
794 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
795 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
796 _Pragma ("GCC diagnostic pop")
797 #else
798 # define YY_INITIAL_VALUE(Value) Value
799 #endif
800 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
801 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
802 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
803 #endif
804 #ifndef YY_INITIAL_VALUE
805 # define YY_INITIAL_VALUE(Value) /* Nothing. */
806 #endif
807
808
809 #if ! defined yyoverflow || YYERROR_VERBOSE
810
811 /* The parser invokes alloca or malloc; define the necessary symbols. */
812
813 # ifdef YYSTACK_USE_ALLOCA
814 # if YYSTACK_USE_ALLOCA
815 # ifdef __GNUC__
816 # define YYSTACK_ALLOC __builtin_alloca
817 # elif defined __BUILTIN_VA_ARG_INCR
818 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
819 # elif defined _AIX
820 # define YYSTACK_ALLOC __alloca
821 # elif defined _MSC_VER
822 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
823 # define alloca _alloca
824 # else
825 # define YYSTACK_ALLOC alloca
826 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
827 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
828 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
829 # ifndef EXIT_SUCCESS
830 # define EXIT_SUCCESS 0
831 # endif
832 # endif
833 # endif
834 # endif
835 # endif
836
837 # ifdef YYSTACK_ALLOC
838 /* Pacify GCC's 'empty if-body' warning. */
839 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
840 # ifndef YYSTACK_ALLOC_MAXIMUM
841 /* The OS might guarantee only one guard page at the bottom of the stack,
842 and a page size can be as small as 4096 bytes. So we cannot safely
843 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
844 to allow for a few compiler-allocated temporary stack slots. */
845 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
846 # endif
847 # else
848 # define YYSTACK_ALLOC YYMALLOC
849 # define YYSTACK_FREE YYFREE
850 # ifndef YYSTACK_ALLOC_MAXIMUM
851 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
852 # endif
853 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
854 && ! ((defined YYMALLOC || defined malloc) \
855 && (defined YYFREE || defined free)))
856 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
857 # ifndef EXIT_SUCCESS
858 # define EXIT_SUCCESS 0
859 # endif
860 # endif
861 # ifndef YYMALLOC
862 # define YYMALLOC malloc
863 # if ! defined malloc && ! defined EXIT_SUCCESS
864 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
865 # endif
866 # endif
867 # ifndef YYFREE
868 # define YYFREE free
869 # if ! defined free && ! defined EXIT_SUCCESS
870 void free (void *); /* INFRINGES ON USER NAME SPACE */
871 # endif
872 # endif
873 # endif
874 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
875
876
877 #if (! defined yyoverflow \
878 && (! defined __cplusplus \
879 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
880
881 /* A type that is properly aligned for any stack member. */
882 union yyalloc
883 {
884 yytype_int16 yyss_alloc;
885 YYSTYPE yyvs_alloc;
886 };
887
888 /* The size of the maximum gap between one aligned stack and the next. */
889 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
890
891 /* The size of an array large to enough to hold all stacks, each with
892 N elements. */
893 # define YYSTACK_BYTES(N) \
894 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
895 + YYSTACK_GAP_MAXIMUM)
896
897 # define YYCOPY_NEEDED 1
898
899 /* Relocate STACK from its old location to the new one. The
900 local variables YYSIZE and YYSTACKSIZE give the old and new number of
901 elements in the stack, and YYPTR gives the new location of the
902 stack. Advance YYPTR to a properly aligned location for the next
903 stack. */
904 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
905 do \
906 { \
907 YYSIZE_T yynewbytes; \
908 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
909 Stack = &yyptr->Stack_alloc; \
910 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
911 yyptr += yynewbytes / sizeof (*yyptr); \
912 } \
913 while (0)
914
915 #endif
916
917 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
918 /* Copy COUNT objects from SRC to DST. The source and destination do
919 not overlap. */
920 # ifndef YYCOPY
921 # if defined __GNUC__ && 1 < __GNUC__
922 # define YYCOPY(Dst, Src, Count) \
923 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
924 # else
925 # define YYCOPY(Dst, Src, Count) \
926 do \
927 { \
928 YYSIZE_T yyi; \
929 for (yyi = 0; yyi < (Count); yyi++) \
930 (Dst)[yyi] = (Src)[yyi]; \
931 } \
932 while (0)
933 # endif
934 # endif
935 #endif /* !YYCOPY_NEEDED */
936
937 /* YYFINAL -- State number of the termination state. */
938 #define YYFINAL 2
939 /* YYLAST -- Last index in YYTABLE. */
940 #define YYLAST 1348
941
942 /* YYNTOKENS -- Number of terminals. */
943 #define YYNTOKENS 236
944 /* YYNNTS -- Number of nonterminals. */
945 #define YYNNTS 295
946 /* YYNRULES -- Number of rules. */
947 #define YYNRULES 668
948 /* YYNSTATES -- Number of states. */
949 #define YYNSTATES 1319
950
951 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
952 by yylex, with out-of-bounds checking. */
953 #define YYUNDEFTOK 2
954 #define YYMAXUTOK 484
955
956 #define YYTRANSLATE(YYX) \
957 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
958
959 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
960 as returned by yylex, without out-of-bounds checking. */
961 static const yytype_uint8 yytranslate[] =
962 {
963 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
964 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
965 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
966 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
967 2, 2, 2, 2, 234, 2, 2, 2, 2, 2,
968 2, 2, 2, 2, 2, 2, 2, 2, 235, 230,
969 2, 233, 2, 2, 2, 2, 2, 2, 2, 2,
970 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
971 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
972 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
973 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
974 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
975 2, 2, 2, 232, 2, 231, 2, 2, 2, 2,
976 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
977 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
978 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
979 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
980 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
981 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
982 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
983 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
984 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
985 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
986 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
987 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
988 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
989 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
990 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
991 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
992 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
993 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
994 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
995 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
996 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
997 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
998 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
999 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1000 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1001 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
1002 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
1003 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
1004 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1005 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
1006 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
1007 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1008 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
1009 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
1010 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
1011 225, 226, 227, 228, 229
1012 };
1013
1014 #if YYDEBUG
1015 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
1016 static const yytype_uint16 yyrline[] =
1017 {
1018 0, 374, 374, 375, 378, 379, 380, 381, 382, 383,
1019 384, 385, 386, 387, 388, 389, 390, 391, 392, 393,
1020 394, 395, 396, 397, 398, 399, 400, 401, 405, 405,
1021 406, 407, 408, 409, 410, 411, 412, 413, 416, 416,
1022 417, 418, 419, 420, 427, 429, 429, 430, 430, 430,
1023 432, 438, 448, 450, 450, 451, 452, 453, 454, 455,
1024 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
1025 466, 467, 468, 471, 480, 489, 498, 507, 516, 525,
1026 540, 555, 565, 579, 588, 616, 644, 669, 691, 713,
1027 723, 725, 725, 726, 727, 728, 729, 731, 740, 749,
1028 763, 762, 780, 780, 781, 781, 781, 783, 789, 800,
1029 799, 818, 818, 819, 819, 819, 819, 819, 821, 827,
1030 833, 839, 861, 862, 862, 864, 864, 865, 867, 874,
1031 874, 887, 888, 890, 890, 891, 891, 893, 901, 904,
1032 910, 909, 915, 915, 916, 920, 924, 928, 932, 936,
1033 940, 944, 955, 954, 1015, 1015, 1016, 1017, 1018, 1019,
1034 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1028, 1034, 1040,
1035 1046, 1052, 1063, 1069, 1080, 1087, 1086, 1092, 1092, 1093,
1036 1097, 1101, 1105, 1109, 1113, 1117, 1121, 1125, 1129, 1133,
1037 1137, 1141, 1145, 1149, 1153, 1157, 1161, 1165, 1169, 1173,
1038 1177, 1184, 1183, 1189, 1189, 1190, 1194, 1198, 1202, 1206,
1039 1210, 1214, 1218, 1222, 1226, 1230, 1234, 1238, 1242, 1246,
1040 1250, 1254, 1258, 1262, 1266, 1270, 1274, 1278, 1282, 1286,
1041 1290, 1294, 1298, 1302, 1313, 1312, 1367, 1367, 1368, 1369,
1042 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379,
1043 1380, 1381, 1382, 1383, 1385, 1391, 1397, 1403, 1409, 1415,
1044 1421, 1427, 1433, 1440, 1446, 1452, 1458, 1467, 1477, 1476,
1045 1482, 1482, 1483, 1487, 1498, 1497, 1504, 1503, 1508, 1508,
1046 1509, 1513, 1517, 1523, 1523, 1524, 1524, 1524, 1524, 1524,
1047 1526, 1526, 1528, 1528, 1530, 1543, 1560, 1566, 1577, 1576,
1048 1622, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630,
1049 1631, 1633, 1639, 1645, 1651, 1663, 1662, 1668, 1668, 1669,
1050 1673, 1677, 1681, 1685, 1689, 1693, 1697, 1701, 1705, 1711,
1051 1725, 1734, 1748, 1747, 1762, 1762, 1763, 1763, 1763, 1763,
1052 1765, 1771, 1777, 1787, 1789, 1789, 1790, 1790, 1792, 1809,
1053 1808, 1831, 1831, 1832, 1832, 1832, 1832, 1834, 1840, 1860,
1054 1859, 1865, 1865, 1866, 1870, 1874, 1878, 1882, 1886, 1890,
1055 1894, 1898, 1902, 1913, 1912, 1931, 1931, 1932, 1932, 1932,
1056 1934, 1941, 1940, 1946, 1946, 1947, 1951, 1955, 1959, 1963,
1057 1967, 1971, 1975, 1979, 1983, 1994, 1993, 2065, 2065, 2066,
1058 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076,
1059 2077, 2078, 2079, 2080, 2082, 2088, 2094, 2100, 2113, 2126,
1060 2132, 2138, 2142, 2149, 2148, 2153, 2153, 2154, 2158, 2164,
1061 2175, 2181, 2187, 2193, 2209, 2208, 2234, 2234, 2235, 2235,
1062 2235, 2237, 2257, 2268, 2267, 2294, 2294, 2295, 2295, 2295,
1063 2297, 2303, 2313, 2315, 2315, 2316, 2316, 2318, 2336, 2335,
1064 2356, 2356, 2357, 2357, 2357, 2359, 2365, 2375, 2377, 2377,
1065 2378, 2379, 2380, 2381, 2382, 2383, 2384, 2385, 2386, 2387,
1066 2388, 2389, 2390, 2391, 2392, 2393, 2394, 2395, 2396, 2397,
1067 2398, 2399, 2400, 2401, 2402, 2403, 2404, 2405, 2406, 2407,
1068 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417,
1069 2418, 2419, 2420, 2421, 2422, 2423, 2424, 2425, 2428, 2433,
1070 2438, 2443, 2448, 2454, 2459, 2464, 2469, 2474, 2479, 2484,
1071 2489, 2494, 2499, 2504, 2509, 2514, 2519, 2524, 2530, 2535,
1072 2540, 2545, 2550, 2555, 2560, 2565, 2568, 2573, 2576, 2581,
1073 2586, 2591, 2596, 2601, 2606, 2611, 2616, 2621, 2626, 2631,
1074 2636, 2642, 2641, 2646, 2646, 2647, 2650, 2653, 2656, 2659,
1075 2662, 2665, 2668, 2671, 2674, 2677, 2680, 2683, 2686, 2689,
1076 2692, 2695, 2698, 2701, 2704, 2707, 2710, 2716, 2715, 2720,
1077 2720, 2721, 2724, 2727, 2730, 2733, 2736, 2739, 2742, 2745,
1078 2748, 2751, 2754, 2757, 2760, 2763, 2766, 2769, 2772, 2775,
1079 2778, 2783, 2788, 2793, 2798, 2807, 2809, 2809, 2810, 2811,
1080 2812, 2813, 2814, 2815, 2816, 2817, 2818, 2819, 2820, 2821,
1081 2822, 2823, 2824, 2826, 2831, 2836, 2841, 2846, 2851, 2856,
1082 2861, 2866, 2871, 2876, 2881, 2886, 2891, 2900, 2902, 2902,
1083 2903, 2904, 2905, 2906, 2907, 2908, 2909, 2910, 2911, 2912,
1084 2914, 2920, 2936, 2945, 2951, 2957, 2963, 2972, 2978
1085 };
1086 #endif
1087
1088 #if YYDEBUG || YYERROR_VERBOSE || 0
1089 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1090 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
1091 static const char *const yytname[] =
1092 {
1093 "$end", "error", "$undefined", "ACCEPT_PASSWORD", "ADMIN", "AFTYPE",
1094 "ANTI_NICK_FLOOD", "ANTI_SPAM_EXIT_MESSAGE_TIME", "AUTOCONN",
1095 "AWAY_COUNT", "AWAY_TIME", "BYTES", "KBYTES", "MBYTES", "CALLER_ID_WAIT",
1096 "CAN_FLOOD", "CHANNEL", "CIDR_BITLEN_IPV4", "CIDR_BITLEN_IPV6", "CLASS",
1097 "CLOSE", "CONNECT", "CONNECTFREQ", "CYCLE_ON_HOST_CHANGE",
1098 "DEFAULT_FLOODCOUNT", "DEFAULT_FLOODTIME", "DEFAULT_JOIN_FLOOD_COUNT",
1099 "DEFAULT_JOIN_FLOOD_TIME", "DEFAULT_MAX_CLIENTS", "DENY", "DESCRIPTION",
1100 "DIE", "DISABLE_AUTH", "DISABLE_FAKE_CHANNELS",
1101 "DISABLE_REMOTE_COMMANDS", "DLINE_MIN_CIDR", "DLINE_MIN_CIDR6",
1102 "DOTS_IN_IDENT", "EMAIL", "ENCRYPTED", "EXCEED_LIMIT", "EXEMPT",
1103 "FAILED_OPER_NOTICE", "FLATTEN_LINKS", "FLATTEN_LINKS_DELAY",
1104 "FLATTEN_LINKS_FILE", "GECOS", "GENERAL", "HIDDEN", "HIDDEN_NAME",
1105 "HIDE_CHANS", "HIDE_IDLE", "HIDE_IDLE_FROM_OPERS", "HIDE_SERVER_IPS",
1106 "HIDE_SERVERS", "HIDE_SERVICES", "HOST", "HUB", "HUB_MASK",
1107 "IGNORE_BOGUS_TS", "INVISIBLE_ON_CONNECT", "INVITE_CLIENT_COUNT",
1108 "INVITE_CLIENT_TIME", "INVITE_DELAY_CHANNEL", "INVITE_EXPIRE_TIME", "IP",
1109 "IRCD_AUTH", "IRCD_FLAGS", "IRCD_SID", "JOIN", "KILL",
1110 "KILL_CHASE_TIME_LIMIT", "KLINE", "KLINE_EXEMPT", "KLINE_MIN_CIDR",
1111 "KLINE_MIN_CIDR6", "KNOCK_CLIENT_COUNT", "KNOCK_CLIENT_TIME",
1112 "KNOCK_DELAY_CHANNEL", "LEAF_MASK", "LISTEN", "MASK", "MAX_ACCEPT",
1113 "MAX_BANS", "MAX_BANS_LARGE", "MAX_CHANNELS", "MAX_IDLE", "MAX_INVITES",
1114 "MAX_NICK_CHANGES", "MAX_NICK_LENGTH", "MAX_NICK_TIME", "MAX_NUMBER",
1115 "MAX_TARGETS", "MAX_TOPIC_LENGTH", "MAX_WATCH", "MIN_IDLE",
1116 "MIN_NONWILDCARD", "MIN_NONWILDCARD_SIMPLE", "MODULE", "MODULES", "MOTD",
1117 "NAME", "NEED_IDENT", "NEED_PASSWORD", "NETWORK_DESC", "NETWORK_NAME",
1118 "NICK", "NO_OPER_FLOOD", "NO_TILDE", "NUMBER", "NUMBER_PER_CIDR",
1119 "NUMBER_PER_IP_GLOBAL", "NUMBER_PER_IP_LOCAL", "OPER_ONLY_UMODES",
1120 "OPER_UMODES", "OPERATOR", "OPERS_BYPASS_CALLERID", "PACE_WAIT",
1121 "PACE_WAIT_SIMPLE", "PASSWORD", "PATH", "PING_COOKIE", "PING_TIME",
1122 "PORT", "QSTRING", "RANDOM_IDLE", "REASON", "REDIRPORT", "REDIRSERV",
1123 "REHASH", "REMOTE", "REMOTEBAN", "RESV", "RESV_EXEMPT",
1124 "RSA_PRIVATE_KEY_FILE", "SECONDS", "MINUTES", "HOURS", "DAYS", "WEEKS",
1125 "MONTHS", "YEARS", "SEND_PASSWORD", "SENDQ", "SERVERHIDE", "SERVERINFO",
1126 "SHORT_MOTD", "SPOOF", "SPOOF_NOTICE", "SQUIT", "SSL_CERTIFICATE_FILE",
1127 "SSL_CERTIFICATE_FINGERPRINT", "SSL_CONNECTION_REQUIRED",
1128 "SSL_DH_ELLIPTIC_CURVE", "SSL_DH_PARAM_FILE",
1129 "SSL_MESSAGE_DIGEST_ALGORITHM", "STATS_E_DISABLED", "STATS_I_OPER_ONLY",
1130 "STATS_K_OPER_ONLY", "STATS_M_OPER_ONLY", "STATS_O_OPER_ONLY",
1131 "STATS_P_OPER_ONLY", "STATS_U_OPER_ONLY", "T_ALL", "T_BOTS",
1132 "T_CALLERID", "T_CCONN", "T_COMMAND", "T_CLUSTER", "T_DEAF", "T_DEBUG",
1133 "T_DLINE", "T_EXTERNAL", "T_FARCONNECT", "T_FILE", "T_FULL", "T_GLOBOPS",
1134 "T_INVISIBLE", "T_IPV4", "T_IPV6", "T_LOCOPS", "T_LOG", "T_NCHANGE",
1135 "T_NONONREG", "T_OPME", "T_PREPEND", "T_PSEUDO", "T_RECVQ", "T_REJ",
1136 "T_RESTART", "T_SERVER", "T_SERVICE", "T_SERVNOTICE", "T_SET",
1137 "T_SHARED", "T_SIZE", "T_SKILL", "T_SOFTCALLERID", "T_SPY", "T_SSL",
1138 "T_SSL_CIPHER_LIST", "T_TARGET", "T_UMODES", "T_UNAUTH", "T_UNDLINE",
1139 "T_UNLIMITED", "T_UNRESV", "T_UNXLINE", "T_WALLOP", "T_WALLOPS",
1140 "T_WEBIRC", "TBOOL", "THROTTLE_COUNT", "THROTTLE_TIME",
1141 "TKLINE_EXPIRE_NOTICES", "TMASKED", "TS_MAX_DELTA", "TS_WARN_DELTA",
1142 "TWODOTS", "TYPE", "UNKLINE", "USE_LOGGING", "USER", "VHOST", "VHOST6",
1143 "WARN_NO_CONNECT_BLOCK", "WHOIS", "WHOWAS_HISTORY_LENGTH", "XLINE",
1144 "XLINE_EXEMPT", "';'", "'}'", "'{'", "'='", "','", "':'", "$accept",
1145 "conf", "conf_item", "timespec_", "timespec", "sizespec_", "sizespec",
1146 "modules_entry", "modules_items", "modules_item", "modules_module",
1147 "modules_path", "serverinfo_entry", "serverinfo_items",
1148 "serverinfo_item", "serverinfo_ssl_certificate_file",
1149 "serverinfo_rsa_private_key_file", "serverinfo_ssl_dh_param_file",
1150 "serverinfo_ssl_cipher_list", "serverinfo_ssl_message_digest_algorithm",
1151 "serverinfo_ssl_dh_elliptic_curve", "serverinfo_name", "serverinfo_sid",
1152 "serverinfo_description", "serverinfo_network_name",
1153 "serverinfo_network_desc", "serverinfo_vhost", "serverinfo_vhost6",
1154 "serverinfo_default_max_clients", "serverinfo_max_nick_length",
1155 "serverinfo_max_topic_length", "serverinfo_hub", "admin_entry",
1156 "admin_items", "admin_item", "admin_name", "admin_email",
1157 "admin_description", "motd_entry", "$@1", "motd_items", "motd_item",
1158 "motd_mask", "motd_file", "pseudo_entry", "$@2", "pseudo_items",
1159 "pseudo_item", "pseudo_command", "pseudo_name", "pseudo_prepend",
1160 "pseudo_target", "logging_entry", "logging_items", "logging_item",
1161 "logging_use_logging", "logging_file_entry", "$@3", "logging_file_items",
1162 "logging_file_item", "logging_file_name", "logging_file_size",
1163 "logging_file_type", "$@4", "logging_file_type_items",
1164 "logging_file_type_item", "oper_entry", "$@5", "oper_items", "oper_item",
1165 "oper_name", "oper_user", "oper_password", "oper_whois",
1166 "oper_encrypted", "oper_ssl_certificate_fingerprint",
1167 "oper_ssl_connection_required", "oper_class", "oper_umodes", "$@6",
1168 "oper_umodes_items", "oper_umodes_item", "oper_flags", "$@7",
1169 "oper_flags_items", "oper_flags_item", "class_entry", "$@8",
1170 "class_items", "class_item", "class_name", "class_ping_time",
1171 "class_number_per_ip_local", "class_number_per_ip_global",
1172 "class_connectfreq", "class_max_channels", "class_max_number",
1173 "class_sendq", "class_recvq", "class_cidr_bitlen_ipv4",
1174 "class_cidr_bitlen_ipv6", "class_number_per_cidr", "class_min_idle",
1175 "class_max_idle", "class_flags", "$@9", "class_flags_items",
1176 "class_flags_item", "listen_entry", "$@10", "listen_flags", "$@11",
1177 "listen_flags_items", "listen_flags_item", "listen_items", "listen_item",
1178 "listen_port", "$@12", "port_items", "port_item", "listen_address",
1179 "listen_host", "auth_entry", "$@13", "auth_items", "auth_item",
1180 "auth_user", "auth_passwd", "auth_class", "auth_encrypted", "auth_flags",
1181 "$@14", "auth_flags_items", "auth_flags_item", "auth_spoof",
1182 "auth_redir_serv", "auth_redir_port", "resv_entry", "$@15", "resv_items",
1183 "resv_item", "resv_mask", "resv_reason", "resv_exempt", "service_entry",
1184 "service_items", "service_item", "service_name", "shared_entry", "$@16",
1185 "shared_items", "shared_item", "shared_name", "shared_user",
1186 "shared_type", "$@17", "shared_types", "shared_type_item",
1187 "cluster_entry", "$@18", "cluster_items", "cluster_item", "cluster_name",
1188 "cluster_type", "$@19", "cluster_types", "cluster_type_item",
1189 "connect_entry", "$@20", "connect_items", "connect_item", "connect_name",
1190 "connect_host", "connect_vhost", "connect_send_password",
1191 "connect_accept_password", "connect_ssl_certificate_fingerprint",
1192 "connect_port", "connect_aftype", "connect_flags", "$@21",
1193 "connect_flags_items", "connect_flags_item", "connect_encrypted",
1194 "connect_hub_mask", "connect_leaf_mask", "connect_class",
1195 "connect_ssl_cipher_list", "kill_entry", "$@22", "kill_items",
1196 "kill_item", "kill_user", "kill_reason", "deny_entry", "$@23",
1197 "deny_items", "deny_item", "deny_ip", "deny_reason", "exempt_entry",
1198 "exempt_items", "exempt_item", "exempt_ip", "gecos_entry", "$@24",
1199 "gecos_items", "gecos_item", "gecos_name", "gecos_reason",
1200 "general_entry", "general_items", "general_item", "general_away_count",
1201 "general_away_time", "general_max_watch",
1202 "general_whowas_history_length", "general_cycle_on_host_change",
1203 "general_dline_min_cidr", "general_dline_min_cidr6",
1204 "general_kline_min_cidr", "general_kline_min_cidr6",
1205 "general_tkline_expire_notices", "general_kill_chase_time_limit",
1206 "general_ignore_bogus_ts", "general_failed_oper_notice",
1207 "general_anti_nick_flood", "general_max_nick_time",
1208 "general_max_nick_changes", "general_max_accept",
1209 "general_anti_spam_exit_message_time", "general_ts_warn_delta",
1210 "general_ts_max_delta", "general_invisible_on_connect",
1211 "general_warn_no_connect_block", "general_stats_e_disabled",
1212 "general_stats_m_oper_only", "general_stats_o_oper_only",
1213 "general_stats_P_oper_only", "general_stats_u_oper_only",
1214 "general_stats_k_oper_only", "general_stats_i_oper_only",
1215 "general_pace_wait", "general_caller_id_wait",
1216 "general_opers_bypass_callerid", "general_pace_wait_simple",
1217 "general_short_motd", "general_no_oper_flood", "general_dots_in_ident",
1218 "general_max_targets", "general_ping_cookie", "general_disable_auth",
1219 "general_throttle_count", "general_throttle_time", "general_oper_umodes",
1220 "$@25", "umode_oitems", "umode_oitem", "general_oper_only_umodes",
1221 "$@26", "umode_items", "umode_item", "general_min_nonwildcard",
1222 "general_min_nonwildcard_simple", "general_default_floodcount",
1223 "general_default_floodtime", "channel_entry", "channel_items",
1224 "channel_item", "channel_disable_fake_channels",
1225 "channel_invite_client_count", "channel_invite_client_time",
1226 "channel_invite_delay_channel", "channel_invite_expire_time",
1227 "channel_knock_client_count", "channel_knock_client_time",
1228 "channel_knock_delay_channel", "channel_max_channels",
1229 "channel_max_invites", "channel_max_bans", "channel_max_bans_large",
1230 "channel_default_join_flood_count", "channel_default_join_flood_time",
1231 "serverhide_entry", "serverhide_items", "serverhide_item",
1232 "serverhide_flatten_links", "serverhide_flatten_links_delay",
1233 "serverhide_flatten_links_file", "serverhide_disable_remote_commands",
1234 "serverhide_hide_servers", "serverhide_hide_services",
1235 "serverhide_hidden_name", "serverhide_hidden",
1236 "serverhide_hide_server_ips", YY_NULLPTR
1237 };
1238 #endif
1239
1240 # ifdef YYPRINT
1241 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
1242 (internal) symbol number NUM (which must be that of a token). */
1243 static const yytype_uint16 yytoknum[] =
1244 {
1245 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1246 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1247 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1248 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1249 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1250 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1251 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
1252 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1253 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1254 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
1255 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
1256 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1257 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
1258 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
1259 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1260 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
1261 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
1262 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
1263 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
1264 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
1265 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
1266 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
1267 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
1268 59, 125, 123, 61, 44, 58
1269 };
1270 # endif
1271
1272 #define YYPACT_NINF -1054
1273
1274 #define yypact_value_is_default(Yystate) \
1275 (!!((Yystate) == (-1054)))
1276
1277 #define YYTABLE_NINF -130
1278
1279 #define yytable_value_is_error(Yytable_value) \
1280 0
1281
1282 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1283 STATE-NUM. */
1284 static const yytype_int16 yypact[] =
1285 {
1286 -1054, 723, -1054, -205, -214, -204, -1054, -1054, -1054, -188,
1287 -1054, -183, -1054, -1054, -1054, -180, -1054, -1054, -1054, -175,
1288 -165, -1054, -159, -1054, -144, -1054, -1054, -1054, -1054, -1054,
1289 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1290 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1291 -1054, 294, 939, -143, -116, -108, 21, -107, 414, -97,
1292 -96, -72, 33, -58, -57, -39, 985, 583, -28, 15,
1293 -26, 11, -23, -156, -150, -8, 4, 3, -1054, -1054,
1294 -1054, -1054, -1054, 23, 50, 52, 60, 68, 69, 71,
1295 76, 85, 96, 104, 105, 106, 110, 272, -1054, -1054,
1296 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1297 -1054, -1054, -1054, 729, 578, 38, -1054, 112, 19, -1054,
1298 -1054, 81, -1054, 113, 114, 118, 121, 125, 128, 130,
1299 133, 135, 136, 138, 139, 142, 146, 147, 152, 156,
1300 157, 170, 173, 174, 175, 176, 178, 179, 180, -1054,
1301 -1054, 181, 183, 185, 186, 189, 203, 207, 209, 210,
1302 211, 212, 214, 219, 221, 222, 224, 225, 227, 229,
1303 55, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1304 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1305 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1306 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1307 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, 440,
1308 41, 67, -7, 231, 235, 2, -1054, -1054, -1054, 26,
1309 386, 30, -1054, 236, 237, 238, 239, 242, 244, 245,
1310 247, 248, 143, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1311 -1054, -1054, -1054, 14, 249, 250, 251, 253, 257, 258,
1312 259, 260, 262, 265, 266, 267, 268, 276, 282, 283,
1313 285, 153, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1314 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1315 16, 58, 286, 34, -1054, -1054, -1054, 100, 193, -1054,
1316 287, 47, -1054, -1054, 62, -1054, 269, 339, 370, 292,
1317 -1054, 168, 403, 315, 420, 403, 403, 403, 424, 403,
1318 403, 425, 427, 430, 431, 311, -1054, 312, 310, 313,
1319 314, -1054, 316, 317, 318, 319, 320, 321, 322, 324,
1320 328, 331, 333, 230, -1054, -1054, -1054, -1054, -1054, -1054,
1321 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1322 347, 336, 345, 349, 352, 353, 356, -1054, 357, 359,
1323 360, 362, 363, 365, 367, 325, -1054, -1054, -1054, -1054,
1324 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1325 -1054, -1054, 368, 369, 29, -1054, -1054, -1054, 421, 350,
1326 -1054, -1054, 371, 372, 39, -1054, -1054, -1054, 392, 403,
1327 435, 403, 403, 395, 449, 403, 396, 500, 501, 505,
1328 404, 405, 407, 403, 510, 511, 512, 520, 403, 523,
1329 524, 526, 528, 432, 411, 413, 436, 403, 403, 438,
1330 443, 444, -168, -160, 445, 447, 448, 450, 529, 403,
1331 452, 403, 403, 454, 551, 437, -1054, 441, 433, 442,
1332 -1054, 456, 457, 458, 459, 460, 31, -1054, -1054, -1054,
1333 -1054, -1054, -1054, -1054, -1054, -1054, -1054, 461, 462, 44,
1334 -1054, -1054, -1054, 453, 463, 465, -1054, 470, -1054, 10,
1335 -1054, -1054, -1054, -1054, -1054, 544, 546, 455, -1054, 474,
1336 472, 473, 28, -1054, -1054, -1054, 477, 475, 476, -1054,
1337 479, 481, 482, 485, -1054, 486, 489, 160, -1054, -1054,
1338 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, 495,
1339 498, 499, 502, 12, -1054, -1054, -1054, -1054, 467, 469,
1340 403, 550, 515, 604, 532, 534, 537, 504, -1054, -1054,
1341 631, 625, 539, 629, 645, 646, 633, 635, 638, 639,
1342 641, 649, 652, 656, 657, 662, 663, 558, -1054, 561,
1343 559, -1054, 20, -1054, -1054, -1054, -1054, 584, 567, -1054,
1344 13, 572, 575, 576, 579, 580, 18, -1054, -1054, -1054,
1345 -1054, -1054, 687, 586, -1054, 587, 588, -1054, 592, 7,
1346 -1054, -1054, -1054, -1054, 589, 596, 597, -1054, 598, 261,
1347 599, 601, 603, 605, 606, 612, 614, 615, 616, 617,
1348 618, 619, 622, -1054, -1054, 725, 744, 403, 621, 747,
1349 403, 748, 403, 708, 749, 750, 751, 403, 752, 752,
1350 632, -1054, -1054, 739, -119, 740, 654, 742, 745, 637,
1351 753, 754, 762, 757, 760, 764, 765, 643, -1054, 770,
1352 772, 665, -1054, 667, -1054, 775, 776, 671, -1054, 675,
1353 681, 682, 685, 689, 693, 694, 697, 700, 702, 705,
1354 707, 713, 715, 716, 717, 720, 726, 727, 730, 731,
1355 732, 733, 737, 738, 741, 756, 602, 743, 746, 758,
1356 759, 763, 766, 767, 774, 777, 779, 780, 781, 782,
1357 783, 784, 788, 790, 791, 795, 797, 801, -1054, -1054,
1358 831, 768, 653, 845, 861, 850, 856, 857, 802, -1054,
1359 859, 863, 805, -1054, -1054, 866, 868, 761, 886, 806,
1360 -1054, 807, 811, -1054, -1054, 881, 884, 812, -1054, -1054,
1361 919, 833, 813, 921, 923, 924, 838, 817, 927, 928,
1362 823, -1054, -1054, 930, 931, 932, 827, -1054, 828, 829,
1363 830, 832, 834, 835, 836, 837, 839, -1054, 840, 841,
1364 842, 843, 844, 846, 847, 848, 849, 851, 852, 853,
1365 854, 855, 858, 860, 862, -1054, -1054, 937, 864, 865,
1366 -1054, 869, -1054, 94, -1054, 944, 951, 956, 962, 870,
1367 -1054, 871, -1054, -1054, 963, 872, 965, 873, -1054, -1054,
1368 -1054, -1054, -1054, 403, 403, 403, 403, 403, 403, 403,
1369 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1370 -1054, -1054, -1054, -1054, -1054, 874, 876, 877, -29, 878,
1371 879, 880, 882, 883, 885, 887, 888, 889, 279, 890,
1372 891, -1054, 892, 893, 894, 895, 896, 897, 898, 6,
1373 899, 900, 901, 902, 903, 904, 905, -1054, 906, 907,
1374 -1054, -1054, 908, 909, -1054, -1054, -1054, -1054, -1054, -1054,
1375 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1376 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1377 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1378 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1379 -1054, -176, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1380 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1381 -1054, -1054, -1054, -1054, -1054, -158, -1054, -1054, -1054, -1054,
1382 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1383 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, 910, 911,
1384 608, 912, 913, 914, 915, 916, -1054, 917, 918, -1054,
1385 920, 922, -33, 875, 925, -1054, -1054, -1054, -1054, 926,
1386 933, -1054, 934, 935, 493, 936, 938, 940, 941, 710,
1387 942, 943, -1054, 945, 946, 947, -1054, -1054, -1054, -1054,
1388 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1389 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1390 -1054, -1054, -1054, 948, 771, -1054, -1054, 949, 929, 950,
1391 -1054, 45, -1054, -1054, -1054, -1054, 952, 954, 955, 957,
1392 -1054, -1054, 958, 778, 959, -1054, -1054, -1054, -1054, -1054,
1393 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -149, -1054,
1394 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, 752,
1395 752, 752, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1396 -1054, -1054, -1054, -1054, -1054, -124, -1054, -1054, -1054, -1054,
1397 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, 756,
1398 -1054, 602, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1399 -1054, -1054, -1054, -1054, -50, -1054, -1054, -1054, -1054, -1054,
1400 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -12, -1054,
1401 982, 886, 960, -1054, -1054, -1054, -1054, -1054, -1054, 867,
1402 -1054, 961, 964, -1054, -1054, 966, 967, -1054, -1054, 968,
1403 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1404 -1054, -1054, -10, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1405 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1406 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1407 -2, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1408 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, 66, -1054,
1409 -1054, 970, -85, 953, 974, -1054, -1054, -1054, -1054, -1054,
1410 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1411 -1054, 80, -1054, -1054, -1054, -29, -1054, -1054, -1054, -1054,
1412 6, -1054, -1054, -1054, 608, -1054, -33, -1054, -1054, -1054,
1413 981, 984, 1019, 1021, 1024, 1025, -1054, 493, -1054, 710,
1414 -1054, 771, 975, 976, 977, 295, -1054, -1054, 778, -1054,
1415 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1416 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1417 -1054, -1054, -1054, 89, -1054, -1054, -1054, 295, -1054
1418 };
1419
1420 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1421 Performed when YYTABLE does not specify something else to do. Zero
1422 means the default is an error. */
1423 static const yytype_uint16 yydefact[] =
1424 {
1425 2, 0, 1, 0, 0, 0, 234, 395, 443, 0,
1426 458, 0, 298, 434, 274, 0, 100, 152, 332, 0,
1427 0, 373, 0, 109, 0, 349, 3, 23, 11, 4,
1428 24, 25, 5, 6, 8, 9, 10, 13, 14, 15,
1429 16, 17, 18, 19, 20, 22, 21, 7, 12, 26,
1430 27, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1431 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1432 0, 0, 0, 0, 0, 0, 0, 0, 92, 93,
1433 95, 94, 632, 0, 0, 0, 0, 0, 0, 0,
1434 0, 0, 0, 0, 0, 0, 0, 0, 617, 631,
1435 620, 621, 622, 623, 624, 625, 626, 627, 628, 618,
1436 619, 629, 630, 0, 0, 0, 456, 0, 0, 454,
1437 455, 0, 517, 0, 0, 0, 0, 0, 0, 0,
1438 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1439 0, 0, 0, 0, 0, 0, 0, 0, 0, 587,
1440 561, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1441 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1442 0, 469, 470, 471, 515, 478, 516, 510, 511, 512,
1443 513, 509, 482, 472, 473, 474, 475, 476, 477, 479,
1444 480, 481, 483, 484, 514, 488, 489, 490, 491, 487,
1445 486, 492, 499, 500, 493, 494, 495, 485, 497, 507,
1446 508, 505, 506, 498, 496, 503, 504, 501, 502, 0,
1447 0, 0, 0, 0, 0, 0, 46, 47, 48, 0,
1448 0, 0, 659, 0, 0, 0, 0, 0, 0, 0,
1449 0, 0, 0, 649, 650, 651, 652, 653, 654, 655,
1450 657, 656, 658, 0, 0, 0, 0, 0, 0, 0,
1451 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1452 0, 0, 54, 69, 66, 64, 70, 71, 65, 55,
1453 68, 58, 59, 60, 56, 67, 61, 62, 63, 57,
1454 0, 0, 0, 0, 124, 125, 126, 0, 0, 347,
1455 0, 0, 345, 346, 0, 96, 0, 0, 0, 0,
1456 91, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1457 0, 0, 0, 0, 0, 0, 616, 0, 0, 0,
1458 0, 268, 0, 0, 0, 0, 0, 0, 0, 0,
1459 0, 0, 0, 0, 237, 238, 241, 243, 244, 245,
1460 246, 247, 248, 249, 239, 240, 242, 250, 251, 252,
1461 0, 0, 0, 0, 0, 0, 0, 423, 0, 0,
1462 0, 0, 0, 0, 0, 0, 398, 399, 400, 401,
1463 402, 403, 404, 406, 405, 408, 412, 409, 410, 411,
1464 407, 449, 0, 0, 0, 446, 447, 448, 0, 0,
1465 453, 464, 0, 0, 0, 461, 462, 463, 0, 0,
1466 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1467 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1468 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1469 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1470 0, 0, 0, 0, 0, 0, 468, 0, 0, 0,
1471 315, 0, 0, 0, 0, 0, 0, 301, 302, 303,
1472 304, 309, 305, 306, 307, 308, 440, 0, 0, 0,
1473 437, 438, 439, 0, 0, 0, 276, 0, 286, 0,
1474 284, 285, 287, 288, 49, 0, 0, 0, 45, 0,
1475 0, 0, 0, 103, 104, 105, 0, 0, 0, 201,
1476 0, 0, 0, 0, 175, 0, 0, 0, 155, 156,
1477 157, 158, 159, 162, 163, 164, 161, 160, 165, 0,
1478 0, 0, 0, 0, 335, 336, 337, 338, 0, 0,
1479 0, 0, 0, 0, 0, 0, 0, 0, 648, 72,
1480 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1481 0, 0, 0, 0, 0, 0, 0, 0, 53, 0,
1482 0, 381, 0, 376, 377, 378, 127, 0, 0, 123,
1483 0, 0, 0, 0, 0, 0, 0, 112, 113, 115,
1484 114, 116, 0, 0, 344, 0, 0, 359, 0, 0,
1485 352, 353, 354, 355, 0, 0, 0, 90, 0, 28,
1486 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1487 0, 0, 0, 615, 253, 0, 0, 0, 0, 0,
1488 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1489 0, 236, 413, 0, 0, 0, 0, 0, 0, 0,
1490 0, 0, 0, 0, 0, 0, 0, 0, 397, 0,
1491 0, 0, 445, 0, 452, 0, 0, 0, 460, 0,
1492 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1493 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1494 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1495 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1496 0, 0, 0, 0, 0, 0, 0, 0, 467, 310,
1497 0, 0, 0, 0, 0, 0, 0, 0, 0, 300,
1498 0, 0, 0, 436, 289, 0, 0, 0, 0, 0,
1499 283, 0, 0, 44, 106, 0, 0, 0, 102, 166,
1500 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1501 0, 154, 339, 0, 0, 0, 0, 334, 0, 0,
1502 0, 0, 0, 0, 0, 0, 0, 647, 0, 0,
1503 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1504 0, 0, 0, 0, 0, 52, 379, 0, 0, 0,
1505 375, 0, 122, 0, 117, 0, 0, 0, 0, 0,
1506 111, 0, 343, 356, 0, 0, 0, 0, 351, 99,
1507 98, 97, 645, 28, 28, 28, 28, 28, 28, 28,
1508 30, 29, 646, 633, 634, 635, 636, 637, 638, 639,
1509 640, 643, 644, 641, 642, 0, 0, 0, 0, 0,
1510 0, 0, 0, 0, 0, 0, 0, 0, 38, 0,
1511 0, 235, 0, 0, 0, 0, 0, 0, 0, 0,
1512 0, 0, 0, 0, 0, 0, 0, 396, 0, 0,
1513 444, 457, 0, 0, 459, 531, 535, 518, 519, 550,
1514 522, 613, 614, 558, 523, 524, 555, 530, 529, 538,
1515 528, 525, 526, 534, 533, 532, 556, 520, 611, 612,
1516 554, 597, 591, 607, 592, 593, 594, 602, 610, 595,
1517 604, 608, 598, 609, 599, 603, 596, 606, 601, 600,
1518 605, 0, 590, 570, 571, 572, 565, 583, 566, 567,
1519 568, 578, 586, 569, 580, 584, 574, 585, 575, 579,
1520 573, 582, 577, 576, 581, 0, 564, 551, 549, 552,
1521 557, 553, 540, 547, 548, 545, 546, 541, 542, 543,
1522 544, 559, 560, 527, 537, 536, 539, 521, 0, 0,
1523 0, 0, 0, 0, 0, 0, 299, 0, 0, 435,
1524 0, 0, 0, 294, 290, 293, 275, 50, 51, 0,
1525 0, 101, 0, 0, 0, 0, 0, 0, 0, 0,
1526 0, 0, 153, 0, 0, 0, 333, 663, 660, 661,
1527 662, 667, 666, 668, 664, 665, 86, 81, 89, 80,
1528 87, 88, 79, 83, 82, 74, 73, 78, 75, 77,
1529 76, 84, 85, 0, 0, 374, 128, 0, 0, 0,
1530 140, 0, 132, 133, 135, 134, 0, 0, 0, 0,
1531 110, 348, 0, 0, 0, 350, 31, 32, 33, 34,
1532 35, 36, 37, 263, 264, 258, 273, 272, 0, 271,
1533 259, 267, 260, 266, 254, 265, 257, 256, 255, 38,
1534 38, 38, 40, 39, 261, 262, 418, 421, 422, 432,
1535 429, 415, 430, 427, 428, 0, 426, 431, 414, 420,
1536 417, 419, 433, 416, 450, 451, 465, 466, 588, 0,
1537 562, 0, 313, 314, 324, 320, 321, 323, 328, 325,
1538 326, 319, 327, 322, 0, 318, 312, 331, 330, 329,
1539 311, 442, 441, 297, 296, 281, 282, 280, 0, 279,
1540 0, 0, 0, 107, 108, 174, 171, 221, 233, 208,
1541 217, 0, 206, 211, 227, 0, 220, 225, 231, 210,
1542 213, 222, 224, 228, 218, 226, 214, 232, 216, 223,
1543 212, 215, 0, 204, 167, 169, 172, 173, 184, 185,
1544 186, 179, 197, 180, 181, 182, 192, 200, 183, 194,
1545 198, 188, 199, 189, 193, 187, 196, 191, 190, 195,
1546 0, 178, 168, 170, 342, 340, 341, 380, 385, 391,
1547 394, 387, 393, 388, 392, 390, 386, 389, 0, 384,
1548 136, 0, 0, 0, 0, 131, 119, 118, 120, 121,
1549 357, 363, 369, 372, 365, 371, 366, 370, 368, 364,
1550 367, 0, 362, 358, 269, 0, 41, 42, 43, 424,
1551 0, 589, 563, 316, 0, 277, 0, 295, 292, 291,
1552 0, 0, 0, 0, 0, 0, 202, 0, 176, 0,
1553 382, 0, 0, 0, 0, 0, 130, 360, 0, 270,
1554 425, 317, 278, 207, 230, 205, 229, 219, 209, 203,
1555 177, 383, 137, 139, 138, 150, 149, 145, 147, 151,
1556 148, 144, 146, 0, 143, 361, 141, 0, 142
1557 };
1558
1559 /* YYPGOTO[NTERM-NUM]. */
1560 static const yytype_int16 yypgoto[] =
1561 {
1562 -1054, -1054, -1054, -394, -310, -1053, -638, -1054, -1054, 969,
1563 -1054, -1054, -1054, -1054, 792, -1054, -1054, -1054, -1054, -1054,
1564 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1565 -1054, -1054, -1054, -1054, 1037, -1054, -1054, -1054, -1054, -1054,
1566 -1054, 594, -1054, -1054, -1054, -1054, -1054, 565, -1054, -1054,
1567 -1054, -1054, -1054, -1054, 971, -1054, -1054, -1054, -1054, 107,
1568 -1054, -1054, -1054, -1054, -1054, -219, -1054, -1054, -1054, 640,
1569 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1570 -1054, -118, -1054, -1054, -1054, -117, -1054, -1054, -1054, 824,
1571 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1572 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -86, -1054, -1054,
1573 -1054, -1054, -1054, -92, -1054, 691, -1054, -1054, -1054, 40,
1574 -1054, -1054, -1054, -1054, -1054, 734, -1054, -1054, -1054, -1054,
1575 -1054, -1054, -1054, -83, -1054, -1054, -1054, -1054, -1054, -1054,
1576 659, -1054, -1054, -1054, -1054, -1054, 972, -1054, -1054, -1054,
1577 -1054, 609, -1054, -1054, -1054, -1054, -1054, -95, -1054, -1054,
1578 -1054, 623, -1054, -1054, -1054, -1054, -84, -1054, -1054, -1054,
1579 973, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1580 -1054, -1054, -62, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1581 -1054, 735, -1054, -1054, -1054, -1054, -1054, 815, -1054, -1054,
1582 -1054, -1054, 1092, -1054, -1054, -1054, -1054, 808, -1054, -1054,
1583 -1054, -1054, 1041, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1584 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1585 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1586 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1587 -1054, -1054, -1054, -1054, -1054, -1054, -1054, 92, -1054, -1054,
1588 -1054, 97, -1054, -1054, -1054, -1054, -1054, -1054, 1118, -1054,
1589 -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054, -1054,
1590 -1054, -1054, -1054, -1054, -1054, 978, -1054, -1054, -1054, -1054,
1591 -1054, -1054, -1054, -1054, -1054
1592 };
1593
1594 /* YYDEFGOTO[NTERM-NUM]. */
1595 static const yytype_int16 yydefgoto[] =
1596 {
1597 -1, 1, 26, 830, 831, 1092, 1093, 27, 225, 226,
1598 227, 228, 28, 271, 272, 273, 274, 275, 276, 277,
1599 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
1600 288, 289, 29, 77, 78, 79, 80, 81, 30, 63,
1601 502, 503, 504, 505, 31, 70, 586, 587, 588, 589,
1602 590, 591, 32, 293, 294, 295, 296, 297, 1051, 1052,
1603 1053, 1054, 1055, 1233, 1313, 1314, 33, 64, 517, 518,
1604 519, 520, 521, 522, 523, 524, 525, 526, 527, 757,
1605 1210, 1211, 528, 752, 1182, 1183, 34, 53, 343, 344,
1606 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
1607 355, 356, 357, 358, 359, 628, 1078, 1079, 35, 61,
1608 488, 737, 1148, 1149, 489, 490, 491, 1152, 994, 995,
1609 492, 493, 36, 59, 466, 467, 468, 469, 470, 471,
1610 472, 722, 1134, 1135, 473, 474, 475, 37, 65, 533,
1611 534, 535, 536, 537, 38, 301, 302, 303, 39, 72,
1612 599, 600, 601, 602, 603, 815, 1251, 1252, 40, 68,
1613 572, 573, 574, 575, 798, 1228, 1229, 41, 54, 375,
1614 376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
1615 649, 1105, 1106, 386, 387, 388, 389, 390, 42, 60,
1616 479, 480, 481, 482, 43, 55, 394, 395, 396, 397,
1617 44, 118, 119, 120, 45, 57, 404, 405, 406, 407,
1618 46, 170, 171, 172, 173, 174, 175, 176, 177, 178,
1619 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
1620 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
1621 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
1622 209, 210, 211, 212, 213, 435, 955, 956, 214, 434,
1623 931, 932, 215, 216, 217, 218, 47, 97, 98, 99,
1624 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
1625 110, 111, 112, 48, 242, 243, 244, 245, 246, 247,
1626 248, 249, 250, 251, 252
1627 };
1628
1629 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
1630 positive, shift that token. If negative, reduce the rule whose
1631 number is the opposite. If YYTABLE_NINF, syntax error. */
1632 static const yytype_int16 yytable[] =
1633 {
1634 859, 860, 610, 222, 73, 613, 614, 615, 595, 617,
1635 618, 483, 299, 529, 1103, 1145, 291, 569, 51, 581,
1636 116, 569, 116, 1076, 858, 49, 50, 499, 52, 499,
1637 391, 529, 457, 74, 222, 291, 1256, 1257, 1258, 391,
1638 401, 75, 476, 703, 56, 476, 1047, 704, 299, 58,
1639 458, 705, 62, 530, 1118, 706, 122, 66, 1119, 863,
1640 864, 123, 124, 595, 125, 126, 484, 67, 483, 127,
1641 459, 530, 1120, 69, 305, 485, 1121, 486, 128, 129,
1642 130, 1254, 401, 306, 117, 1255, 117, 131, 71, 113,
1643 132, 133, 134, 531, 392, 1047, 1077, 135, 460, 670,
1644 223, 672, 673, 392, 76, 676, 1259, 500, 596, 500,
1645 1260, 531, 300, 684, 136, 137, 114, 570, 689, 582,
1646 1283, 570, 224, 484, 115, 121, 138, 698, 699, 139,
1647 140, 223, 485, 487, 486, 219, 220, 141, 532, 712,
1648 402, 714, 715, 142, 232, 143, 1048, 144, 300, 145,
1649 461, 146, 147, 224, 253, 393, 532, 1146, 462, 463,
1650 221, 506, 148, 596, 393, 403, 1147, 477, 149, 150,
1651 477, 151, 152, 153, 229, 230, 154, 233, 464, 507,
1652 1263, 254, 402, 255, 1264, 583, 234, 235, 236, -129,
1653 487, 237, 238, 231, 581, 1048, 239, 240, 241, 508,
1654 501, 155, 501, 584, 290, 1104, 298, 403, -129, 304,
1655 256, 156, 157, 158, 159, 160, 161, 162, 1265, 585,
1656 1276, 257, 1266, 494, 1277, 307, 597, 509, 1278, 598,
1657 770, 327, 1279, 497, 309, 571, 292, 308, 817, 571,
1658 1049, 739, 258, 766, 549, 803, 259, 328, 329, 809,
1659 399, 799, 330, 465, 260, 292, 311, 261, 262, 747,
1660 661, 510, 728, 478, 1050, 578, 478, 163, 164, 165,
1661 667, 166, 167, 82, 580, 732, 1234, 608, 593, 511,
1662 168, 597, 169, 312, 598, 313, 455, 263, 576, 1049,
1663 1089, 1090, 1091, 314, 582, 73, 1280, 331, 83, 84,
1664 1281, 315, 316, 264, 317, 85, 265, 266, 267, 318,
1665 1287, 512, 513, 1050, 1288, 332, 333, 847, 319, 1316,
1666 850, 334, 852, 1317, 74, 335, 360, 857, 361, 320,
1667 362, 336, 75, 86, 87, 88, 89, 321, 322, 323,
1668 337, 338, 339, 324, 363, 398, 408, 409, 90, 91,
1669 92, 410, 340, 268, 411, 93, 94, 95, 412, 96,
1670 583, 413, 514, 414, 364, 1305, 415, 1306, 416, 417,
1671 609, 418, 419, 341, 547, 420, 269, 270, 584, 421,
1672 422, 365, 515, 366, 567, 423, 516, 506, 858, 424,
1673 425, 760, 367, 604, 585, 76, 823, 824, 825, 826,
1674 827, 828, 829, 426, 368, 507, 427, 428, 429, 430,
1675 1307, 431, 432, 433, 436, 122, 437, 342, 438, 439,
1676 123, 124, 440, 125, 126, 508, 369, 1308, 127, 1066,
1677 1067, 1068, 1069, 1070, 1071, 1072, 441, 128, 129, 130,
1678 442, 457, 443, 444, 445, 446, 131, 447, 370, 132,
1679 133, 134, 448, 509, 449, 450, 135, 451, 452, 458,
1680 453, 640, 454, 605, 495, 1309, 1310, 371, 496, 538,
1681 539, 540, 541, 136, 137, 542, 372, 543, 544, 459,
1682 545, 546, 550, 551, 552, 138, 553, 510, 139, 140,
1683 554, 555, 556, 557, 606, 558, 141, 1157, 559, 560,
1684 561, 562, 142, 325, 143, 511, 144, 460, 145, 563,
1685 146, 147, 609, 1158, 1159, 564, 565, 1311, 566, 577,
1686 592, 148, 607, 1312, 1160, 373, 611, 149, 150, 612,
1687 151, 152, 153, 616, 619, 154, 620, 512, 513, 621,
1688 622, 623, 624, 625, 671, 663, 626, 627, 374, 629,
1689 630, 631, 632, 633, 634, 635, 657, 636, 675, 461,
1690 155, 637, 1161, 1162, 638, 1163, 639, 462, 463, 643,
1691 156, 157, 158, 159, 160, 161, 162, 642, 644, 360,
1692 664, 361, 645, 362, 253, 646, 647, 464, 514, 648,
1693 650, 1164, 651, 652, 1284, 653, 654, 363, 655, 1165,
1694 656, 659, 660, 669, 665, 666, 674, 677, 515, 678,
1695 679, 254, 516, 255, 680, 681, 682, 364, 683, 685,
1696 686, 687, 1166, 1124, 1167, 1168, 163, 164, 165, 688,
1697 166, 167, 690, 691, 365, 692, 366, 693, 711, 168,
1698 256, 169, 1169, 694, 695, 367, 696, 697, 1125, 700,
1699 933, 257, 934, 935, 701, 702, 707, 368, 708, 709,
1700 717, 710, 465, 713, 1170, 716, 720, 718, 741, 1171,
1701 742, 719, 258, 1172, 771, 721, 259, 1173, 768, 369,
1702 769, 1126, 1174, 734, 260, 743, 1175, 261, 262, 723,
1703 724, 725, 726, 727, 730, 731, 735, 1176, 736, 1177,
1704 1178, 370, 1179, 738, 744, 745, 746, 749, 750, 751,
1705 1127, 1128, 753, 1180, 754, 755, 1129, 263, 756, 758,
1706 371, 1181, 759, 2, 3, 762, 772, 4, 773, 372,
1707 327, 763, 764, 264, 777, 765, 265, 266, 267, 5,
1708 778, 1130, 6, 774, 7, 775, 328, 329, 776, 779,
1709 780, 330, 8, 781, 782, 783, 1131, 784, 1188, 785,
1710 1189, 1190, 786, 787, 9, 788, 936, 937, 938, 10,
1711 11, 939, 940, 789, 941, 942, 790, 943, 373, 944,
1712 791, 792, 945, 268, 946, 947, 793, 794, 795, 12,
1713 948, 796, 797, 13, 949, 801, 331, 802, 950, 951,
1714 952, 374, 804, 14, 911, 953, 269, 270, 805, 806,
1715 954, 811, 807, 808, 332, 333, 812, 813, 1132, 819,
1716 334, 814, 15, 16, 335, 816, 820, 821, 822, 832,
1717 336, 833, 853, 834, 845, 835, 836, 1133, 17, 337,
1718 338, 339, 837, 1218, 838, 839, 840, 841, 842, 843,
1719 1241, 340, 844, 846, 848, 18, 849, 851, 854, 855,
1720 856, 858, 861, 862, 865, 866, 867, 19, 20, 868,
1721 869, 872, 341, 877, 1191, 1192, 1193, 870, 871, 1194,
1722 1195, 873, 1196, 1197, 874, 1198, 980, 1199, 875, 876,
1723 1200, 21, 1201, 1202, 878, 880, 879, 881, 1203, 882,
1724 883, 884, 1204, 1219, 22, 885, 1205, 1206, 1207, 23,
1725 1242, 886, 887, 1208, 24, 888, 342, 25, 1209, 889,
1726 912, 913, 914, 890, 891, 915, 916, 892, 917, 918,
1727 893, 919, 894, 920, 1220, 895, 921, 896, 922, 923,
1728 82, 1243, 1221, 897, 924, 898, 899, 900, 925, 1244,
1729 901, 1222, 926, 927, 928, 978, 902, 903, 1245, 929,
1730 904, 905, 906, 907, 930, 83, 84, 908, 909, 981,
1731 982, 910, 85, 957, 983, 1223, 958, 1224, 1225, 979,
1732 984, 985, 1246, 987, 1247, 1248, 232, 988, 959, 960,
1733 990, 1226, 991, 961, 992, 993, 962, 963, 1249, 1227,
1734 86, 87, 88, 89, 964, 999, 1250, 965, 1000, 966,
1735 967, 968, 969, 970, 971, 90, 91, 92, 972, 233,
1736 973, 974, 93, 94, 95, 975, 96, 976, 234, 235,
1737 236, 977, 986, 237, 238, 989, 996, 997, 239, 240,
1738 241, 998, 1001, 1002, 1003, 1005, 1004, 1006, 1007, 1008,
1739 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018,
1740 1019, 1043, 1020, 568, 1021, 1022, 1023, 1024, 1056, 1025,
1741 1026, 1027, 1028, 1029, 1030, 1057, 1031, 1032, 1033, 1034,
1742 1058, 1035, 1036, 1037, 1038, 1039, 1059, 1062, 1040, 1064,
1743 1041, 1267, 1042, 1150, 1282, 1045, 748, 1044, 1318, 1046,
1744 1060, 1061, 1270, 1065, 1073, 1063, 1074, 1075, 1080, 1081,
1745 1082, 1293, 1083, 1084, 310, 1085, 1294, 1086, 1087, 1088,
1746 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1107,
1747 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117,
1748 1122, 1123, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1295,
1749 1143, 810, 1144, 1296, 1297, 1298, 1153, 761, 1235, 1151,
1750 1299, 1300, 1231, 1154, 1155, 1156, 1184, 641, 1185, 1289,
1751 1186, 1187, 1212, 1213, 1292, 1214, 1215, 1216, 1217, 1230,
1752 740, 1291, 1236, 1232, 1237, 1238, 1285, 1239, 1240, 1253,
1753 1269, 1268, 767, 1315, 498, 800, 1271, 1301, 1290, 1272,
1754 729, 1273, 1274, 1275, 1286, 1302, 1303, 1304, 818, 662,
1755 400, 456, 668, 1262, 733, 326, 1261, 0, 0, 0,
1756 548, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1757 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1759 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1760 0, 0, 0, 0, 579, 0, 0, 0, 0, 0,
1761 0, 0, 0, 594, 0, 0, 0, 0, 0, 0,
1762 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1763 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1764 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1765 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1766 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1767 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1768 0, 0, 0, 0, 0, 0, 0, 0, 658
1769 };
1770
1771 static const yytype_int16 yycheck[] =
1772 {
1773 638, 639, 312, 1, 1, 315, 316, 317, 1, 319,
1774 320, 1, 1, 1, 8, 48, 1, 1, 232, 1,
1775 1, 1, 1, 52, 109, 230, 231, 1, 232, 1,
1776 1, 1, 1, 30, 1, 1, 1089, 1090, 1091, 1,
1777 1, 38, 1, 211, 232, 1, 1, 215, 1, 232,
1778 19, 211, 232, 41, 230, 215, 1, 232, 234, 178,
1779 179, 6, 7, 1, 9, 10, 56, 232, 1, 14,
1780 39, 41, 230, 232, 230, 65, 234, 67, 23, 24,
1781 25, 230, 1, 233, 65, 234, 65, 32, 232, 232,
1782 35, 36, 37, 81, 65, 1, 125, 42, 67, 409,
1783 98, 411, 412, 65, 101, 415, 230, 81, 101, 81,
1784 234, 81, 101, 423, 59, 60, 232, 101, 428, 101,
1785 205, 101, 120, 56, 232, 232, 71, 437, 438, 74,
1786 75, 98, 65, 123, 67, 232, 232, 82, 126, 449,
1787 101, 451, 452, 88, 1, 90, 101, 92, 101, 94,
1788 119, 96, 97, 120, 1, 126, 126, 190, 127, 128,
1789 232, 1, 107, 101, 126, 126, 199, 126, 113, 114,
1790 126, 116, 117, 118, 232, 232, 121, 34, 147, 19,
1791 230, 28, 101, 30, 234, 167, 43, 44, 45, 174,
1792 123, 48, 49, 232, 1, 101, 53, 54, 55, 39,
1793 174, 146, 174, 185, 232, 199, 232, 126, 174, 232,
1794 57, 156, 157, 158, 159, 160, 161, 162, 230, 201,
1795 230, 68, 234, 230, 234, 233, 219, 67, 230, 222,
1796 540, 1, 234, 231, 231, 219, 221, 233, 231, 219,
1797 195, 231, 89, 231, 230, 232, 93, 17, 18, 231,
1798 231, 231, 22, 222, 101, 221, 233, 104, 105, 231,
1799 231, 101, 231, 222, 219, 231, 222, 212, 213, 214,
1800 231, 216, 217, 1, 174, 231, 231, 109, 231, 119,
1801 225, 219, 227, 233, 222, 233, 231, 134, 230, 195,
1802 11, 12, 13, 233, 101, 1, 230, 67, 26, 27,
1803 234, 233, 233, 150, 233, 33, 153, 154, 155, 233,
1804 230, 151, 152, 219, 234, 85, 86, 627, 233, 230,
1805 630, 91, 632, 234, 30, 95, 1, 637, 3, 233,
1806 5, 101, 38, 61, 62, 63, 64, 233, 233, 233,
1807 110, 111, 112, 233, 19, 233, 233, 233, 76, 77,
1808 78, 233, 122, 200, 233, 83, 84, 85, 233, 87,
1809 167, 233, 202, 233, 39, 70, 233, 72, 233, 233,
1810 109, 233, 233, 143, 231, 233, 223, 224, 185, 233,
1811 233, 56, 222, 58, 231, 233, 226, 1, 109, 233,
1812 233, 231, 67, 124, 201, 101, 135, 136, 137, 138,
1813 139, 140, 141, 233, 79, 19, 233, 233, 233, 233,
1814 115, 233, 233, 233, 233, 1, 233, 187, 233, 233,
1815 6, 7, 233, 9, 10, 39, 101, 132, 14, 823,
1816 824, 825, 826, 827, 828, 829, 233, 23, 24, 25,
1817 233, 1, 233, 233, 233, 233, 32, 233, 123, 35,
1818 36, 37, 233, 67, 233, 233, 42, 233, 233, 19,
1819 233, 231, 233, 124, 233, 170, 171, 142, 233, 233,
1820 233, 233, 233, 59, 60, 233, 151, 233, 233, 39,
1821 233, 233, 233, 233, 233, 71, 233, 101, 74, 75,
1822 233, 233, 233, 233, 124, 233, 82, 4, 233, 233,
1823 233, 233, 88, 231, 90, 119, 92, 67, 94, 233,
1824 96, 97, 109, 20, 21, 233, 233, 222, 233, 233,
1825 233, 107, 230, 228, 31, 200, 211, 113, 114, 109,
1826 116, 117, 118, 109, 109, 121, 109, 151, 152, 109,
1827 109, 230, 230, 233, 109, 124, 233, 233, 223, 233,
1828 233, 233, 233, 233, 233, 233, 231, 233, 109, 119,
1829 146, 233, 69, 70, 233, 72, 233, 127, 128, 233,
1830 156, 157, 158, 159, 160, 161, 162, 230, 233, 1,
1831 230, 3, 233, 5, 1, 233, 233, 147, 202, 233,
1832 233, 98, 233, 233, 1232, 233, 233, 19, 233, 106,
1833 233, 233, 233, 211, 233, 233, 211, 211, 222, 109,
1834 109, 28, 226, 30, 109, 211, 211, 39, 211, 109,
1835 109, 109, 129, 15, 131, 132, 212, 213, 214, 109,
1836 216, 217, 109, 109, 56, 109, 58, 109, 109, 225,
1837 57, 227, 149, 211, 233, 67, 233, 211, 40, 211,
1838 48, 68, 50, 51, 211, 211, 211, 79, 211, 211,
1839 109, 211, 222, 211, 171, 211, 233, 230, 124, 176,
1840 124, 230, 89, 180, 124, 233, 93, 184, 211, 101,
1841 211, 73, 189, 230, 101, 230, 193, 104, 105, 233,
1842 233, 233, 233, 233, 233, 233, 233, 204, 233, 206,
1843 207, 123, 209, 233, 230, 233, 233, 230, 233, 233,
1844 102, 103, 233, 220, 233, 233, 108, 134, 233, 233,
1845 142, 228, 233, 0, 1, 230, 211, 4, 124, 151,
1846 1, 233, 233, 150, 230, 233, 153, 154, 155, 16,
1847 109, 133, 19, 211, 21, 211, 17, 18, 211, 124,
1848 211, 22, 29, 124, 109, 109, 148, 124, 48, 124,
1849 50, 51, 124, 124, 41, 124, 164, 165, 166, 46,
1850 47, 169, 170, 124, 172, 173, 124, 175, 200, 177,
1851 124, 124, 180, 200, 182, 183, 124, 124, 230, 66,
1852 188, 230, 233, 70, 192, 211, 67, 230, 196, 197,
1853 198, 223, 230, 80, 48, 203, 223, 224, 233, 233,
1854 208, 124, 233, 233, 85, 86, 230, 230, 210, 230,
1855 91, 233, 99, 100, 95, 233, 230, 230, 230, 230,
1856 101, 230, 124, 230, 109, 230, 230, 229, 115, 110,
1857 111, 112, 230, 72, 230, 230, 230, 230, 230, 230,
1858 72, 122, 230, 109, 233, 132, 109, 109, 109, 109,
1859 109, 109, 230, 124, 124, 211, 124, 144, 145, 124,
1860 233, 109, 143, 230, 164, 165, 166, 124, 124, 169,
1861 170, 124, 172, 173, 124, 175, 233, 177, 124, 124,
1862 180, 168, 182, 183, 124, 230, 124, 230, 188, 124,
1863 124, 230, 192, 132, 181, 230, 196, 197, 198, 186,
1864 132, 230, 230, 203, 191, 230, 187, 194, 208, 230,
1865 164, 165, 166, 230, 230, 169, 170, 230, 172, 173,
1866 230, 175, 230, 177, 163, 230, 180, 230, 182, 183,
1867 1, 163, 171, 230, 188, 230, 230, 230, 192, 171,
1868 230, 180, 196, 197, 198, 124, 230, 230, 180, 203,
1869 230, 230, 230, 230, 208, 26, 27, 230, 230, 124,
1870 109, 230, 33, 230, 124, 204, 230, 206, 207, 211,
1871 124, 124, 204, 124, 206, 207, 1, 124, 230, 230,
1872 124, 220, 124, 230, 233, 109, 230, 230, 220, 228,
1873 61, 62, 63, 64, 230, 124, 228, 230, 124, 230,
1874 230, 230, 230, 230, 230, 76, 77, 78, 230, 34,
1875 230, 230, 83, 84, 85, 230, 87, 230, 43, 44,
1876 45, 230, 230, 48, 49, 230, 230, 230, 53, 54,
1877 55, 230, 230, 124, 211, 124, 233, 124, 124, 211,
1878 233, 124, 124, 230, 124, 124, 124, 230, 230, 230,
1879 230, 124, 230, 271, 230, 230, 230, 230, 124, 230,
1880 230, 230, 230, 230, 230, 124, 230, 230, 230, 230,
1881 124, 230, 230, 230, 230, 230, 124, 124, 230, 124,
1882 230, 109, 230, 218, 124, 230, 502, 233, 1317, 230,
1883 230, 230, 235, 230, 230, 233, 230, 230, 230, 230,
1884 230, 130, 230, 230, 77, 230, 132, 230, 230, 230,
1885 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1886 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1887 230, 230, 230, 230, 230, 230, 230, 230, 230, 130,
1888 230, 586, 230, 132, 130, 130, 230, 517, 1051, 234,
1889 1277, 1279, 233, 230, 230, 230, 230, 343, 230, 1255,
1890 230, 230, 230, 230, 1266, 230, 230, 230, 230, 230,
1891 489, 1264, 230, 233, 230, 230, 233, 230, 230, 230,
1892 230, 1151, 533, 1288, 225, 572, 235, 1281, 1260, 235,
1893 466, 235, 235, 235, 230, 230, 230, 230, 599, 394,
1894 118, 170, 404, 1121, 479, 97, 1119, -1, -1, -1,
1895 242, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1896 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1897 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1898 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1899 -1, -1, -1, -1, 293, -1, -1, -1, -1, -1,
1900 -1, -1, -1, 301, -1, -1, -1, -1, -1, -1,
1901 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1902 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1903 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1904 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1905 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1906 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1907 -1, -1, -1, -1, -1, -1, -1, -1, 375
1908 };
1909
1910 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1911 symbol of state STATE-NUM. */
1912 static const yytype_uint16 yystos[] =
1913 {
1914 0, 237, 0, 1, 4, 16, 19, 21, 29, 41,
1915 46, 47, 66, 70, 80, 99, 100, 115, 132, 144,
1916 145, 168, 181, 186, 191, 194, 238, 243, 248, 268,
1917 274, 280, 288, 302, 322, 344, 358, 373, 380, 384,
1918 394, 403, 424, 430, 436, 440, 446, 502, 519, 230,
1919 231, 232, 232, 323, 404, 431, 232, 441, 232, 359,
1920 425, 345, 232, 275, 303, 374, 232, 232, 395, 232,
1921 281, 232, 385, 1, 30, 38, 101, 269, 270, 271,
1922 272, 273, 1, 26, 27, 33, 61, 62, 63, 64,
1923 76, 77, 78, 83, 84, 85, 87, 503, 504, 505,
1924 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
1925 516, 517, 518, 232, 232, 232, 1, 65, 437, 438,
1926 439, 232, 1, 6, 7, 9, 10, 14, 23, 24,
1927 25, 32, 35, 36, 37, 42, 59, 60, 71, 74,
1928 75, 82, 88, 90, 92, 94, 96, 97, 107, 113,
1929 114, 116, 117, 118, 121, 146, 156, 157, 158, 159,
1930 160, 161, 162, 212, 213, 214, 216, 217, 225, 227,
1931 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
1932 457, 458, 459, 460, 461, 462, 463, 464, 465, 466,
1933 467, 468, 469, 470, 471, 472, 473, 474, 475, 476,
1934 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
1935 487, 488, 489, 490, 494, 498, 499, 500, 501, 232,
1936 232, 232, 1, 98, 120, 244, 245, 246, 247, 232,
1937 232, 232, 1, 34, 43, 44, 45, 48, 49, 53,
1938 54, 55, 520, 521, 522, 523, 524, 525, 526, 527,
1939 528, 529, 530, 1, 28, 30, 57, 68, 89, 93,
1940 101, 104, 105, 134, 150, 153, 154, 155, 200, 223,
1941 224, 249, 250, 251, 252, 253, 254, 255, 256, 257,
1942 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
1943 232, 1, 221, 289, 290, 291, 292, 293, 232, 1,
1944 101, 381, 382, 383, 232, 230, 233, 233, 233, 231,
1945 270, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1946 233, 233, 233, 233, 233, 231, 504, 1, 17, 18,
1947 22, 67, 85, 86, 91, 95, 101, 110, 111, 112,
1948 122, 143, 187, 324, 325, 326, 327, 328, 329, 330,
1949 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
1950 1, 3, 5, 19, 39, 56, 58, 67, 79, 101,
1951 123, 142, 151, 200, 223, 405, 406, 407, 408, 409,
1952 410, 411, 412, 413, 414, 415, 419, 420, 421, 422,
1953 423, 1, 65, 126, 432, 433, 434, 435, 233, 231,
1954 438, 1, 101, 126, 442, 443, 444, 445, 233, 233,
1955 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1956 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1957 233, 233, 233, 233, 495, 491, 233, 233, 233, 233,
1958 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1959 233, 233, 233, 233, 233, 231, 448, 1, 19, 39,
1960 67, 119, 127, 128, 147, 222, 360, 361, 362, 363,
1961 364, 365, 366, 370, 371, 372, 1, 126, 222, 426,
1962 427, 428, 429, 1, 56, 65, 67, 123, 346, 350,
1963 351, 352, 356, 357, 230, 233, 233, 231, 245, 1,
1964 81, 174, 276, 277, 278, 279, 1, 19, 39, 67,
1965 101, 119, 151, 152, 202, 222, 226, 304, 305, 306,
1966 307, 308, 309, 310, 311, 312, 313, 314, 318, 1,
1967 41, 81, 126, 375, 376, 377, 378, 379, 233, 233,
1968 233, 233, 233, 233, 233, 233, 233, 231, 521, 230,
1969 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1970 233, 233, 233, 233, 233, 233, 233, 231, 250, 1,
1971 101, 219, 396, 397, 398, 399, 230, 233, 231, 290,
1972 174, 1, 101, 167, 185, 201, 282, 283, 284, 285,
1973 286, 287, 233, 231, 382, 1, 101, 219, 222, 386,
1974 387, 388, 389, 390, 124, 124, 124, 230, 109, 109,
1975 240, 211, 109, 240, 240, 240, 109, 240, 240, 109,
1976 109, 109, 109, 230, 230, 233, 233, 233, 341, 233,
1977 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1978 231, 325, 230, 233, 233, 233, 233, 233, 233, 416,
1979 233, 233, 233, 233, 233, 233, 233, 231, 406, 233,
1980 233, 231, 433, 124, 230, 233, 233, 231, 443, 211,
1981 240, 109, 240, 240, 211, 109, 240, 211, 109, 109,
1982 109, 211, 211, 211, 240, 109, 109, 109, 109, 240,
1983 109, 109, 109, 109, 211, 233, 233, 211, 240, 240,
1984 211, 211, 211, 211, 215, 211, 215, 211, 211, 211,
1985 211, 109, 240, 211, 240, 240, 211, 109, 230, 230,
1986 233, 233, 367, 233, 233, 233, 233, 233, 231, 361,
1987 233, 233, 231, 427, 230, 233, 233, 347, 233, 231,
1988 351, 124, 124, 230, 230, 233, 233, 231, 277, 230,
1989 233, 233, 319, 233, 233, 233, 233, 315, 233, 233,
1990 231, 305, 230, 233, 233, 233, 231, 376, 211, 211,
1991 240, 124, 211, 124, 211, 211, 211, 230, 109, 124,
1992 211, 124, 109, 109, 124, 124, 124, 124, 124, 124,
1993 124, 124, 124, 124, 124, 230, 230, 233, 400, 231,
1994 397, 211, 230, 232, 230, 233, 233, 233, 233, 231,
1995 283, 124, 230, 230, 233, 391, 233, 231, 387, 230,
1996 230, 230, 230, 135, 136, 137, 138, 139, 140, 141,
1997 239, 240, 230, 230, 230, 230, 230, 230, 230, 230,
1998 230, 230, 230, 230, 230, 109, 109, 240, 233, 109,
1999 240, 109, 240, 124, 109, 109, 109, 240, 109, 242,
2000 242, 230, 124, 178, 179, 124, 211, 124, 124, 233,
2001 124, 124, 109, 124, 124, 124, 124, 230, 124, 124,
2002 230, 230, 124, 124, 230, 230, 230, 230, 230, 230,
2003 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
2004 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
2005 230, 48, 164, 165, 166, 169, 170, 172, 173, 175,
2006 177, 180, 182, 183, 188, 192, 196, 197, 198, 203,
2007 208, 496, 497, 48, 50, 51, 164, 165, 166, 169,
2008 170, 172, 173, 175, 177, 180, 182, 183, 188, 192,
2009 196, 197, 198, 203, 208, 492, 493, 230, 230, 230,
2010 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
2011 230, 230, 230, 230, 230, 230, 230, 230, 124, 211,
2012 233, 124, 109, 124, 124, 124, 230, 124, 124, 230,
2013 124, 124, 233, 109, 354, 355, 230, 230, 230, 124,
2014 124, 230, 124, 211, 233, 124, 124, 124, 211, 233,
2015 124, 124, 230, 124, 124, 124, 230, 230, 230, 230,
2016 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
2017 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
2018 230, 230, 230, 124, 233, 230, 230, 1, 101, 195,
2019 219, 294, 295, 296, 297, 298, 124, 124, 124, 124,
2020 230, 230, 124, 233, 124, 230, 239, 239, 239, 239,
2021 239, 239, 239, 230, 230, 230, 52, 125, 342, 343,
2022 230, 230, 230, 230, 230, 230, 230, 230, 230, 11,
2023 12, 13, 241, 242, 230, 230, 230, 230, 230, 230,
2024 230, 230, 230, 8, 199, 417, 418, 230, 230, 230,
2025 230, 230, 230, 230, 230, 230, 230, 230, 230, 234,
2026 230, 234, 230, 230, 15, 40, 73, 102, 103, 108,
2027 133, 148, 210, 229, 368, 369, 230, 230, 230, 230,
2028 230, 230, 230, 230, 230, 48, 190, 199, 348, 349,
2029 218, 234, 353, 230, 230, 230, 230, 4, 20, 21,
2030 31, 69, 70, 72, 98, 106, 129, 131, 132, 149,
2031 171, 176, 180, 184, 189, 193, 204, 206, 207, 209,
2032 220, 228, 320, 321, 230, 230, 230, 230, 48, 50,
2033 51, 164, 165, 166, 169, 170, 172, 173, 175, 177,
2034 180, 182, 183, 188, 192, 196, 197, 198, 203, 208,
2035 316, 317, 230, 230, 230, 230, 230, 230, 72, 132,
2036 163, 171, 180, 204, 206, 207, 220, 228, 401, 402,
2037 230, 233, 233, 299, 231, 295, 230, 230, 230, 230,
2038 230, 72, 132, 163, 171, 180, 204, 206, 207, 220,
2039 228, 392, 393, 230, 230, 234, 241, 241, 241, 230,
2040 234, 497, 493, 230, 234, 230, 234, 109, 355, 230,
2041 235, 235, 235, 235, 235, 235, 230, 234, 230, 234,
2042 230, 234, 124, 205, 242, 233, 230, 230, 234, 343,
2043 418, 369, 349, 130, 132, 130, 132, 130, 130, 321,
2044 317, 402, 230, 230, 230, 70, 72, 115, 132, 170,
2045 171, 222, 228, 300, 301, 393, 230, 234, 301
2046 };
2047
2048 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
2049 static const yytype_uint16 yyr1[] =
2050 {
2051 0, 236, 237, 237, 238, 238, 238, 238, 238, 238,
2052 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
2053 238, 238, 238, 238, 238, 238, 238, 238, 239, 239,
2054 240, 240, 240, 240, 240, 240, 240, 240, 241, 241,
2055 242, 242, 242, 242, 243, 244, 244, 245, 245, 245,
2056 246, 247, 248, 249, 249, 250, 250, 250, 250, 250,
2057 250, 250, 250, 250, 250, 250, 250, 250, 250, 250,
2058 250, 250, 250, 251, 252, 253, 254, 255, 256, 257,
2059 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
2060 268, 269, 269, 270, 270, 270, 270, 271, 272, 273,
2061 275, 274, 276, 276, 277, 277, 277, 278, 279, 281,
2062 280, 282, 282, 283, 283, 283, 283, 283, 284, 285,
2063 286, 287, 288, 289, 289, 290, 290, 290, 291, 293,
2064 292, 294, 294, 295, 295, 295, 295, 296, 297, 297,
2065 299, 298, 300, 300, 301, 301, 301, 301, 301, 301,
2066 301, 301, 303, 302, 304, 304, 305, 305, 305, 305,
2067 305, 305, 305, 305, 305, 305, 305, 306, 307, 308,
2068 309, 310, 311, 312, 313, 315, 314, 316, 316, 317,
2069 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
2070 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
2071 317, 319, 318, 320, 320, 321, 321, 321, 321, 321,
2072 321, 321, 321, 321, 321, 321, 321, 321, 321, 321,
2073 321, 321, 321, 321, 321, 321, 321, 321, 321, 321,
2074 321, 321, 321, 321, 323, 322, 324, 324, 325, 325,
2075 325, 325, 325, 325, 325, 325, 325, 325, 325, 325,
2076 325, 325, 325, 325, 326, 327, 328, 329, 330, 331,
2077 332, 333, 334, 335, 336, 337, 338, 339, 341, 340,
2078 342, 342, 343, 343, 345, 344, 347, 346, 348, 348,
2079 349, 349, 349, 350, 350, 351, 351, 351, 351, 351,
2080 353, 352, 354, 354, 355, 355, 356, 357, 359, 358,
2081 360, 360, 361, 361, 361, 361, 361, 361, 361, 361,
2082 361, 362, 363, 364, 365, 367, 366, 368, 368, 369,
2083 369, 369, 369, 369, 369, 369, 369, 369, 369, 370,
2084 371, 372, 374, 373, 375, 375, 376, 376, 376, 376,
2085 377, 378, 379, 380, 381, 381, 382, 382, 383, 385,
2086 384, 386, 386, 387, 387, 387, 387, 388, 389, 391,
2087 390, 392, 392, 393, 393, 393, 393, 393, 393, 393,
2088 393, 393, 393, 395, 394, 396, 396, 397, 397, 397,
2089 398, 400, 399, 401, 401, 402, 402, 402, 402, 402,
2090 402, 402, 402, 402, 402, 404, 403, 405, 405, 406,
2091 406, 406, 406, 406, 406, 406, 406, 406, 406, 406,
2092 406, 406, 406, 406, 407, 408, 409, 410, 411, 412,
2093 413, 414, 414, 416, 415, 417, 417, 418, 418, 419,
2094 420, 421, 422, 423, 425, 424, 426, 426, 427, 427,
2095 427, 428, 429, 431, 430, 432, 432, 433, 433, 433,
2096 434, 435, 436, 437, 437, 438, 438, 439, 441, 440,
2097 442, 442, 443, 443, 443, 444, 445, 446, 447, 447,
2098 448, 448, 448, 448, 448, 448, 448, 448, 448, 448,
2099 448, 448, 448, 448, 448, 448, 448, 448, 448, 448,
2100 448, 448, 448, 448, 448, 448, 448, 448, 448, 448,
2101 448, 448, 448, 448, 448, 448, 448, 448, 448, 448,
2102 448, 448, 448, 448, 448, 448, 448, 448, 449, 450,
2103 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
2104 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
2105 471, 472, 473, 474, 475, 476, 476, 477, 477, 478,
2106 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
2107 489, 491, 490, 492, 492, 493, 493, 493, 493, 493,
2108 493, 493, 493, 493, 493, 493, 493, 493, 493, 493,
2109 493, 493, 493, 493, 493, 493, 493, 495, 494, 496,
2110 496, 497, 497, 497, 497, 497, 497, 497, 497, 497,
2111 497, 497, 497, 497, 497, 497, 497, 497, 497, 497,
2112 497, 498, 499, 500, 501, 502, 503, 503, 504, 504,
2113 504, 504, 504, 504, 504, 504, 504, 504, 504, 504,
2114 504, 504, 504, 505, 506, 507, 508, 509, 510, 511,
2115 512, 513, 514, 515, 516, 517, 518, 519, 520, 520,
2116 521, 521, 521, 521, 521, 521, 521, 521, 521, 521,
2117 522, 523, 524, 525, 526, 527, 528, 529, 530
2118 };
2119
2120 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
2121 static const yytype_uint8 yyr2[] =
2122 {
2123 0, 2, 0, 2, 1, 1, 1, 1, 1, 1,
2124 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2125 1, 1, 1, 1, 1, 1, 2, 2, 0, 1,
2126 2, 3, 3, 3, 3, 3, 3, 3, 0, 1,
2127 2, 3, 3, 3, 5, 2, 1, 1, 1, 2,
2128 4, 4, 5, 2, 1, 1, 1, 1, 1, 1,
2129 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2130 1, 1, 2, 4, 4, 4, 4, 4, 4, 4,
2131 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2132 5, 2, 1, 1, 1, 1, 2, 4, 4, 4,
2133 0, 6, 2, 1, 1, 1, 2, 4, 4, 0,
2134 6, 2, 1, 1, 1, 1, 1, 2, 4, 4,
2135 4, 4, 5, 2, 1, 1, 1, 2, 4, 0,
2136 6, 2, 1, 1, 1, 1, 2, 4, 4, 4,
2137 0, 5, 3, 1, 1, 1, 1, 1, 1, 1,
2138 1, 1, 0, 6, 2, 1, 1, 1, 1, 1,
2139 1, 1, 1, 1, 1, 1, 2, 4, 4, 4,
2140 4, 4, 4, 4, 4, 0, 5, 3, 1, 1,
2141 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2142 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2143 1, 0, 5, 3, 1, 3, 1, 3, 1, 3,
2144 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
2145 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
2146 3, 1, 1, 1, 0, 6, 2, 1, 1, 1,
2147 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2148 1, 1, 1, 2, 4, 4, 4, 4, 4, 4,
2149 4, 4, 4, 4, 4, 4, 4, 4, 0, 5,
2150 3, 1, 1, 1, 0, 6, 0, 5, 3, 1,
2151 1, 1, 1, 2, 1, 1, 1, 1, 1, 2,
2152 0, 5, 3, 1, 1, 3, 4, 4, 0, 6,
2153 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2154 2, 4, 4, 4, 4, 0, 5, 3, 1, 1,
2155 1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
2156 4, 4, 0, 6, 2, 1, 1, 1, 1, 2,
2157 4, 4, 4, 5, 2, 1, 1, 1, 4, 0,
2158 6, 2, 1, 1, 1, 1, 2, 4, 4, 0,
2159 5, 3, 1, 1, 1, 1, 1, 1, 1, 1,
2160 1, 1, 1, 0, 6, 2, 1, 1, 1, 2,
2161 4, 0, 5, 3, 1, 1, 1, 1, 1, 1,
2162 1, 1, 1, 1, 1, 0, 6, 2, 1, 1,
2163 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2164 1, 1, 1, 2, 4, 4, 4, 4, 4, 4,
2165 4, 4, 4, 0, 5, 3, 1, 1, 1, 4,
2166 4, 4, 4, 4, 0, 6, 2, 1, 1, 1,
2167 1, 4, 4, 0, 6, 2, 1, 1, 1, 1,
2168 4, 4, 5, 2, 1, 1, 1, 4, 0, 6,
2169 2, 1, 1, 1, 1, 4, 4, 5, 2, 1,
2170 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2171 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2172 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2173 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2174 1, 1, 1, 1, 1, 1, 1, 1, 4, 4,
2175 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2176 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2177 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2178 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2179 4, 0, 5, 3, 1, 1, 1, 1, 1, 1,
2180 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2181 1, 1, 1, 1, 1, 1, 1, 0, 5, 3,
2182 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2183 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2184 1, 4, 4, 4, 4, 5, 2, 1, 1, 1,
2185 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2186 1, 1, 1, 4, 4, 4, 4, 4, 4, 4,
2187 4, 4, 4, 4, 4, 4, 4, 5, 2, 1,
2188 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2189 4, 4, 4, 4, 4, 4, 4, 4, 4
2190 };
2191
2192
2193 #define yyerrok (yyerrstatus = 0)
2194 #define yyclearin (yychar = YYEMPTY)
2195 #define YYEMPTY (-2)
2196 #define YYEOF 0
2197
2198 #define YYACCEPT goto yyacceptlab
2199 #define YYABORT goto yyabortlab
2200 #define YYERROR goto yyerrorlab
2201
2202
2203 #define YYRECOVERING() (!!yyerrstatus)
2204
2205 #define YYBACKUP(Token, Value) \
2206 do \
2207 if (yychar == YYEMPTY) \
2208 { \
2209 yychar = (Token); \
2210 yylval = (Value); \
2211 YYPOPSTACK (yylen); \
2212 yystate = *yyssp; \
2213 goto yybackup; \
2214 } \
2215 else \
2216 { \
2217 yyerror (YY_("syntax error: cannot back up")); \
2218 YYERROR; \
2219 } \
2220 while (0)
2221
2222 /* Error token number */
2223 #define YYTERROR 1
2224 #define YYERRCODE 256
2225
2226
2227
2228 /* Enable debugging if requested. */
2229 #if YYDEBUG
2230
2231 # ifndef YYFPRINTF
2232 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2233 # define YYFPRINTF fprintf
2234 # endif
2235
2236 # define YYDPRINTF(Args) \
2237 do { \
2238 if (yydebug) \
2239 YYFPRINTF Args; \
2240 } while (0)
2241
2242 /* This macro is provided for backward compatibility. */
2243 #ifndef YY_LOCATION_PRINT
2244 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2245 #endif
2246
2247
2248 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
2249 do { \
2250 if (yydebug) \
2251 { \
2252 YYFPRINTF (stderr, "%s ", Title); \
2253 yy_symbol_print (stderr, \
2254 Type, Value); \
2255 YYFPRINTF (stderr, "\n"); \
2256 } \
2257 } while (0)
2258
2259
2260 /*----------------------------------------.
2261 | Print this symbol's value on YYOUTPUT. |
2262 `----------------------------------------*/
2263
2264 static void
2265 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2266 {
2267 FILE *yyo = yyoutput;
2268 YYUSE (yyo);
2269 if (!yyvaluep)
2270 return;
2271 # ifdef YYPRINT
2272 if (yytype < YYNTOKENS)
2273 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
2274 # endif
2275 YYUSE (yytype);
2276 }
2277
2278
2279 /*--------------------------------.
2280 | Print this symbol on YYOUTPUT. |
2281 `--------------------------------*/
2282
2283 static void
2284 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2285 {
2286 YYFPRINTF (yyoutput, "%s %s (",
2287 yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
2288
2289 yy_symbol_value_print (yyoutput, yytype, yyvaluep);
2290 YYFPRINTF (yyoutput, ")");
2291 }
2292
2293 /*------------------------------------------------------------------.
2294 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2295 | TOP (included). |
2296 `------------------------------------------------------------------*/
2297
2298 static void
2299 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
2300 {
2301 YYFPRINTF (stderr, "Stack now");
2302 for (; yybottom <= yytop; yybottom++)
2303 {
2304 int yybot = *yybottom;
2305 YYFPRINTF (stderr, " %d", yybot);
2306 }
2307 YYFPRINTF (stderr, "\n");
2308 }
2309
2310 # define YY_STACK_PRINT(Bottom, Top) \
2311 do { \
2312 if (yydebug) \
2313 yy_stack_print ((Bottom), (Top)); \
2314 } while (0)
2315
2316
2317 /*------------------------------------------------.
2318 | Report that the YYRULE is going to be reduced. |
2319 `------------------------------------------------*/
2320
2321 static void
2322 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
2323 {
2324 unsigned long int yylno = yyrline[yyrule];
2325 int yynrhs = yyr2[yyrule];
2326 int yyi;
2327 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
2328 yyrule - 1, yylno);
2329 /* The symbols being reduced. */
2330 for (yyi = 0; yyi < yynrhs; yyi++)
2331 {
2332 YYFPRINTF (stderr, " $%d = ", yyi + 1);
2333 yy_symbol_print (stderr,
2334 yystos[yyssp[yyi + 1 - yynrhs]],
2335 &(yyvsp[(yyi + 1) - (yynrhs)])
2336 );
2337 YYFPRINTF (stderr, "\n");
2338 }
2339 }
2340
2341 # define YY_REDUCE_PRINT(Rule) \
2342 do { \
2343 if (yydebug) \
2344 yy_reduce_print (yyssp, yyvsp, Rule); \
2345 } while (0)
2346
2347 /* Nonzero means print parse trace. It is left uninitialized so that
2348 multiple parsers can coexist. */
2349 int yydebug;
2350 #else /* !YYDEBUG */
2351 # define YYDPRINTF(Args)
2352 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
2353 # define YY_STACK_PRINT(Bottom, Top)
2354 # define YY_REDUCE_PRINT(Rule)
2355 #endif /* !YYDEBUG */
2356
2357
2358 /* YYINITDEPTH -- initial size of the parser's stacks. */
2359 #ifndef YYINITDEPTH
2360 # define YYINITDEPTH 200
2361 #endif
2362
2363 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2364 if the built-in stack extension method is used).
2365
2366 Do not make this value too large; the results are undefined if
2367 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2368 evaluated with infinite-precision integer arithmetic. */
2369
2370 #ifndef YYMAXDEPTH
2371 # define YYMAXDEPTH 10000
2372 #endif
2373
2374
2375 #if YYERROR_VERBOSE
2376
2377 # ifndef yystrlen
2378 # if defined __GLIBC__ && defined _STRING_H
2379 # define yystrlen strlen
2380 # else
2381 /* Return the length of YYSTR. */
2382 static YYSIZE_T
2383 yystrlen (const char *yystr)
2384 {
2385 YYSIZE_T yylen;
2386 for (yylen = 0; yystr[yylen]; yylen++)
2387 continue;
2388 return yylen;
2389 }
2390 # endif
2391 # endif
2392
2393 # ifndef yystpcpy
2394 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2395 # define yystpcpy stpcpy
2396 # else
2397 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2398 YYDEST. */
2399 static char *
2400 yystpcpy (char *yydest, const char *yysrc)
2401 {
2402 char *yyd = yydest;
2403 const char *yys = yysrc;
2404
2405 while ((*yyd++ = *yys++) != '\0')
2406 continue;
2407
2408 return yyd - 1;
2409 }
2410 # endif
2411 # endif
2412
2413 # ifndef yytnamerr
2414 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2415 quotes and backslashes, so that it's suitable for yyerror. The
2416 heuristic is that double-quoting is unnecessary unless the string
2417 contains an apostrophe, a comma, or backslash (other than
2418 backslash-backslash). YYSTR is taken from yytname. If YYRES is
2419 null, do not copy; instead, return the length of what the result
2420 would have been. */
2421 static YYSIZE_T
2422 yytnamerr (char *yyres, const char *yystr)
2423 {
2424 if (*yystr == '"')
2425 {
2426 YYSIZE_T yyn = 0;
2427 char const *yyp = yystr;
2428
2429 for (;;)
2430 switch (*++yyp)
2431 {
2432 case '\'':
2433 case ',':
2434 goto do_not_strip_quotes;
2435
2436 case '\\':
2437 if (*++yyp != '\\')
2438 goto do_not_strip_quotes;
2439 /* Fall through. */
2440 default:
2441 if (yyres)
2442 yyres[yyn] = *yyp;
2443 yyn++;
2444 break;
2445
2446 case '"':
2447 if (yyres)
2448 yyres[yyn] = '\0';
2449 return yyn;
2450 }
2451 do_not_strip_quotes: ;
2452 }
2453
2454 if (! yyres)
2455 return yystrlen (yystr);
2456
2457 return yystpcpy (yyres, yystr) - yyres;
2458 }
2459 # endif
2460
2461 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
2462 about the unexpected token YYTOKEN for the state stack whose top is
2463 YYSSP.
2464
2465 Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
2466 not large enough to hold the message. In that case, also set
2467 *YYMSG_ALLOC to the required number of bytes. Return 2 if the
2468 required number of bytes is too large to store. */
2469 static int
2470 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
2471 yytype_int16 *yyssp, int yytoken)
2472 {
2473 YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
2474 YYSIZE_T yysize = yysize0;
2475 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2476 /* Internationalized format string. */
2477 const char *yyformat = YY_NULLPTR;
2478 /* Arguments of yyformat. */
2479 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2480 /* Number of reported tokens (one for the "unexpected", one per
2481 "expected"). */
2482 int yycount = 0;
2483
2484 /* There are many possibilities here to consider:
2485 - If this state is a consistent state with a default action, then
2486 the only way this function was invoked is if the default action
2487 is an error action. In that case, don't check for expected
2488 tokens because there are none.
2489 - The only way there can be no lookahead present (in yychar) is if
2490 this state is a consistent state with a default action. Thus,
2491 detecting the absence of a lookahead is sufficient to determine
2492 that there is no unexpected or expected token to report. In that
2493 case, just report a simple "syntax error".
2494 - Don't assume there isn't a lookahead just because this state is a
2495 consistent state with a default action. There might have been a
2496 previous inconsistent state, consistent state with a non-default
2497 action, or user semantic action that manipulated yychar.
2498 - Of course, the expected token list depends on states to have
2499 correct lookahead information, and it depends on the parser not
2500 to perform extra reductions after fetching a lookahead from the
2501 scanner and before detecting a syntax error. Thus, state merging
2502 (from LALR or IELR) and default reductions corrupt the expected
2503 token list. However, the list is correct for canonical LR with
2504 one exception: it will still contain any token that will not be
2505 accepted due to an error action in a later state.
2506 */
2507 if (yytoken != YYEMPTY)
2508 {
2509 int yyn = yypact[*yyssp];
2510 yyarg[yycount++] = yytname[yytoken];
2511 if (!yypact_value_is_default (yyn))
2512 {
2513 /* Start YYX at -YYN if negative to avoid negative indexes in
2514 YYCHECK. In other words, skip the first -YYN actions for
2515 this state because they are default actions. */
2516 int yyxbegin = yyn < 0 ? -yyn : 0;
2517 /* Stay within bounds of both yycheck and yytname. */
2518 int yychecklim = YYLAST - yyn + 1;
2519 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2520 int yyx;
2521
2522 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2523 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
2524 && !yytable_value_is_error (yytable[yyx + yyn]))
2525 {
2526 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2527 {
2528 yycount = 1;
2529 yysize = yysize0;
2530 break;
2531 }
2532 yyarg[yycount++] = yytname[yyx];
2533 {
2534 YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
2535 if (! (yysize <= yysize1
2536 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2537 return 2;
2538 yysize = yysize1;
2539 }
2540 }
2541 }
2542 }
2543
2544 switch (yycount)
2545 {
2546 # define YYCASE_(N, S) \
2547 case N: \
2548 yyformat = S; \
2549 break
2550 YYCASE_(0, YY_("syntax error"));
2551 YYCASE_(1, YY_("syntax error, unexpected %s"));
2552 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
2553 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2554 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2555 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2556 # undef YYCASE_
2557 }
2558
2559 {
2560 YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
2561 if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2562 return 2;
2563 yysize = yysize1;
2564 }
2565
2566 if (*yymsg_alloc < yysize)
2567 {
2568 *yymsg_alloc = 2 * yysize;
2569 if (! (yysize <= *yymsg_alloc
2570 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
2571 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
2572 return 1;
2573 }
2574
2575 /* Avoid sprintf, as that infringes on the user's name space.
2576 Don't have undefined behavior even if the translation
2577 produced a string with the wrong number of "%s"s. */
2578 {
2579 char *yyp = *yymsg;
2580 int yyi = 0;
2581 while ((*yyp = *yyformat) != '\0')
2582 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
2583 {
2584 yyp += yytnamerr (yyp, yyarg[yyi++]);
2585 yyformat += 2;
2586 }
2587 else
2588 {
2589 yyp++;
2590 yyformat++;
2591 }
2592 }
2593 return 0;
2594 }
2595 #endif /* YYERROR_VERBOSE */
2596
2597 /*-----------------------------------------------.
2598 | Release the memory associated to this symbol. |
2599 `-----------------------------------------------*/
2600
2601 static void
2602 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
2603 {
2604 YYUSE (yyvaluep);
2605 if (!yymsg)
2606 yymsg = "Deleting";
2607 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2608
2609 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2610 YYUSE (yytype);
2611 YY_IGNORE_MAYBE_UNINITIALIZED_END
2612 }
2613
2614
2615
2616
2617 /* The lookahead symbol. */
2618 int yychar;
2619
2620 /* The semantic value of the lookahead symbol. */
2621 YYSTYPE yylval;
2622 /* Number of syntax errors so far. */
2623 int yynerrs;
2624
2625
2626 /*----------.
2627 | yyparse. |
2628 `----------*/
2629
2630 int
2631 yyparse (void)
2632 {
2633 int yystate;
2634 /* Number of tokens to shift before error messages enabled. */
2635 int yyerrstatus;
2636
2637 /* The stacks and their tools:
2638 'yyss': related to states.
2639 'yyvs': related to semantic values.
2640
2641 Refer to the stacks through separate pointers, to allow yyoverflow
2642 to reallocate them elsewhere. */
2643
2644 /* The state stack. */
2645 yytype_int16 yyssa[YYINITDEPTH];
2646 yytype_int16 *yyss;
2647 yytype_int16 *yyssp;
2648
2649 /* The semantic value stack. */
2650 YYSTYPE yyvsa[YYINITDEPTH];
2651 YYSTYPE *yyvs;
2652 YYSTYPE *yyvsp;
2653
2654 YYSIZE_T yystacksize;
2655
2656 int yyn;
2657 int yyresult;
2658 /* Lookahead token as an internal (translated) token number. */
2659 int yytoken = 0;
2660 /* The variables used to return semantic value and location from the
2661 action routines. */
2662 YYSTYPE yyval;
2663
2664 #if YYERROR_VERBOSE
2665 /* Buffer for error messages, and its allocated size. */
2666 char yymsgbuf[128];
2667 char *yymsg = yymsgbuf;
2668 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
2669 #endif
2670
2671 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
2672
2673 /* The number of symbols on the RHS of the reduced rule.
2674 Keep to zero when no symbol should be popped. */
2675 int yylen = 0;
2676
2677 yyssp = yyss = yyssa;
2678 yyvsp = yyvs = yyvsa;
2679 yystacksize = YYINITDEPTH;
2680
2681 YYDPRINTF ((stderr, "Starting parse\n"));
2682
2683 yystate = 0;
2684 yyerrstatus = 0;
2685 yynerrs = 0;
2686 yychar = YYEMPTY; /* Cause a token to be read. */
2687 goto yysetstate;
2688
2689 /*------------------------------------------------------------.
2690 | yynewstate -- Push a new state, which is found in yystate. |
2691 `------------------------------------------------------------*/
2692 yynewstate:
2693 /* In all cases, when you get here, the value and location stacks
2694 have just been pushed. So pushing a state here evens the stacks. */
2695 yyssp++;
2696
2697 yysetstate:
2698 *yyssp = yystate;
2699
2700 if (yyss + yystacksize - 1 <= yyssp)
2701 {
2702 /* Get the current used size of the three stacks, in elements. */
2703 YYSIZE_T yysize = yyssp - yyss + 1;
2704
2705 #ifdef yyoverflow
2706 {
2707 /* Give user a chance to reallocate the stack. Use copies of
2708 these so that the &'s don't force the real ones into
2709 memory. */
2710 YYSTYPE *yyvs1 = yyvs;
2711 yytype_int16 *yyss1 = yyss;
2712
2713 /* Each stack pointer address is followed by the size of the
2714 data in use in that stack, in bytes. This used to be a
2715 conditional around just the two extra args, but that might
2716 be undefined if yyoverflow is a macro. */
2717 yyoverflow (YY_("memory exhausted"),
2718 &yyss1, yysize * sizeof (*yyssp),
2719 &yyvs1, yysize * sizeof (*yyvsp),
2720 &yystacksize);
2721
2722 yyss = yyss1;
2723 yyvs = yyvs1;
2724 }
2725 #else /* no yyoverflow */
2726 # ifndef YYSTACK_RELOCATE
2727 goto yyexhaustedlab;
2728 # else
2729 /* Extend the stack our own way. */
2730 if (YYMAXDEPTH <= yystacksize)
2731 goto yyexhaustedlab;
2732 yystacksize *= 2;
2733 if (YYMAXDEPTH < yystacksize)
2734 yystacksize = YYMAXDEPTH;
2735
2736 {
2737 yytype_int16 *yyss1 = yyss;
2738 union yyalloc *yyptr =
2739 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
2740 if (! yyptr)
2741 goto yyexhaustedlab;
2742 YYSTACK_RELOCATE (yyss_alloc, yyss);
2743 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2744 # undef YYSTACK_RELOCATE
2745 if (yyss1 != yyssa)
2746 YYSTACK_FREE (yyss1);
2747 }
2748 # endif
2749 #endif /* no yyoverflow */
2750
2751 yyssp = yyss + yysize - 1;
2752 yyvsp = yyvs + yysize - 1;
2753
2754 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
2755 (unsigned long int) yystacksize));
2756
2757 if (yyss + yystacksize - 1 <= yyssp)
2758 YYABORT;
2759 }
2760
2761 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2762
2763 if (yystate == YYFINAL)
2764 YYACCEPT;
2765
2766 goto yybackup;
2767
2768 /*-----------.
2769 | yybackup. |
2770 `-----------*/
2771 yybackup:
2772
2773 /* Do appropriate processing given the current state. Read a
2774 lookahead token if we need one and don't already have one. */
2775
2776 /* First try to decide what to do without reference to lookahead token. */
2777 yyn = yypact[yystate];
2778 if (yypact_value_is_default (yyn))
2779 goto yydefault;
2780
2781 /* Not known => get a lookahead token if don't already have one. */
2782
2783 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
2784 if (yychar == YYEMPTY)
2785 {
2786 YYDPRINTF ((stderr, "Reading a token: "));
2787 yychar = yylex ();
2788 }
2789
2790 if (yychar <= YYEOF)
2791 {
2792 yychar = yytoken = YYEOF;
2793 YYDPRINTF ((stderr, "Now at end of input.\n"));
2794 }
2795 else
2796 {
2797 yytoken = YYTRANSLATE (yychar);
2798 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2799 }
2800
2801 /* If the proper action on seeing token YYTOKEN is to reduce or to
2802 detect an error, take that action. */
2803 yyn += yytoken;
2804 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2805 goto yydefault;
2806 yyn = yytable[yyn];
2807 if (yyn <= 0)
2808 {
2809 if (yytable_value_is_error (yyn))
2810 goto yyerrlab;
2811 yyn = -yyn;
2812 goto yyreduce;
2813 }
2814
2815 /* Count tokens shifted since error; after three, turn off error
2816 status. */
2817 if (yyerrstatus)
2818 yyerrstatus--;
2819
2820 /* Shift the lookahead token. */
2821 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2822
2823 /* Discard the shifted token. */
2824 yychar = YYEMPTY;
2825
2826 yystate = yyn;
2827 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2828 *++yyvsp = yylval;
2829 YY_IGNORE_MAYBE_UNINITIALIZED_END
2830
2831 goto yynewstate;
2832
2833
2834 /*-----------------------------------------------------------.
2835 | yydefault -- do the default action for the current state. |
2836 `-----------------------------------------------------------*/
2837 yydefault:
2838 yyn = yydefact[yystate];
2839 if (yyn == 0)
2840 goto yyerrlab;
2841 goto yyreduce;
2842
2843
2844 /*-----------------------------.
2845 | yyreduce -- Do a reduction. |
2846 `-----------------------------*/
2847 yyreduce:
2848 /* yyn is the number of a rule to reduce with. */
2849 yylen = yyr2[yyn];
2850
2851 /* If YYLEN is nonzero, implement the default value of the action:
2852 '$$ = $1'.
2853
2854 Otherwise, the following line sets YYVAL to garbage.
2855 This behavior is undocumented and Bison
2856 users should not rely upon it. Assigning to YYVAL
2857 unconditionally makes the parser a bit smaller, and it avoids a
2858 GCC warning that YYVAL may be used uninitialized. */
2859 yyval = yyvsp[1-yylen];
2860
2861
2862 YY_REDUCE_PRINT (yyn);
2863 switch (yyn)
2864 {
2865 case 28:
2866 #line 405 "conf_parser.y" /* yacc.c:1646 */
2867 { (yyval.number) = 0; }
2868 #line 2869 "conf_parser.c" /* yacc.c:1646 */
2869 break;
2870
2871 case 30:
2872 #line 406 "conf_parser.y" /* yacc.c:1646 */
2873 { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
2874 #line 2875 "conf_parser.c" /* yacc.c:1646 */
2875 break;
2876
2877 case 31:
2878 #line 407 "conf_parser.y" /* yacc.c:1646 */
2879 { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
2880 #line 2881 "conf_parser.c" /* yacc.c:1646 */
2881 break;
2882
2883 case 32:
2884 #line 408 "conf_parser.y" /* yacc.c:1646 */
2885 { (yyval.number) = (yyvsp[-2].number) * 60 + (yyvsp[0].number); }
2886 #line 2887 "conf_parser.c" /* yacc.c:1646 */
2887 break;
2888
2889 case 33:
2890 #line 409 "conf_parser.y" /* yacc.c:1646 */
2891 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 + (yyvsp[0].number); }
2892 #line 2893 "conf_parser.c" /* yacc.c:1646 */
2893 break;
2894
2895 case 34:
2896 #line 410 "conf_parser.y" /* yacc.c:1646 */
2897 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 + (yyvsp[0].number); }
2898 #line 2899 "conf_parser.c" /* yacc.c:1646 */
2899 break;
2900
2901 case 35:
2902 #line 411 "conf_parser.y" /* yacc.c:1646 */
2903 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 + (yyvsp[0].number); }
2904 #line 2905 "conf_parser.c" /* yacc.c:1646 */
2905 break;
2906
2907 case 36:
2908 #line 412 "conf_parser.y" /* yacc.c:1646 */
2909 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 * 4 + (yyvsp[0].number); }
2910 #line 2911 "conf_parser.c" /* yacc.c:1646 */
2911 break;
2912
2913 case 37:
2914 #line 413 "conf_parser.y" /* yacc.c:1646 */
2915 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 365 + (yyvsp[0].number); }
2916 #line 2917 "conf_parser.c" /* yacc.c:1646 */
2917 break;
2918
2919 case 38:
2920 #line 416 "conf_parser.y" /* yacc.c:1646 */
2921 { (yyval.number) = 0; }
2922 #line 2923 "conf_parser.c" /* yacc.c:1646 */
2923 break;
2924
2925 case 40:
2926 #line 417 "conf_parser.y" /* yacc.c:1646 */
2927 { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
2928 #line 2929 "conf_parser.c" /* yacc.c:1646 */
2929 break;
2930
2931 case 41:
2932 #line 418 "conf_parser.y" /* yacc.c:1646 */
2933 { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
2934 #line 2935 "conf_parser.c" /* yacc.c:1646 */
2935 break;
2936
2937 case 42:
2938 #line 419 "conf_parser.y" /* yacc.c:1646 */
2939 { (yyval.number) = (yyvsp[-2].number) * 1024 + (yyvsp[0].number); }
2940 #line 2941 "conf_parser.c" /* yacc.c:1646 */
2941 break;
2942
2943 case 43:
2944 #line 420 "conf_parser.y" /* yacc.c:1646 */
2945 { (yyval.number) = (yyvsp[-2].number) * 1024 * 1024 + (yyvsp[0].number); }
2946 #line 2947 "conf_parser.c" /* yacc.c:1646 */
2947 break;
2948
2949 case 50:
2950 #line 433 "conf_parser.y" /* yacc.c:1646 */
2951 {
2952 if (conf_parser_ctx.pass == 2)
2953 add_conf_module(libio_basename(yylval.string));
2954 }
2955 #line 2956 "conf_parser.c" /* yacc.c:1646 */
2956 break;
2957
2958 case 51:
2959 #line 439 "conf_parser.y" /* yacc.c:1646 */
2960 {
2961 if (conf_parser_ctx.pass == 2)
2962 mod_add_path(yylval.string);
2963 }
2964 #line 2965 "conf_parser.c" /* yacc.c:1646 */
2965 break;
2966
2967 case 73:
2968 #line 472 "conf_parser.y" /* yacc.c:1646 */
2969 {
2970 if (conf_parser_ctx.pass == 2)
2971 {
2972 xfree(ConfigServerInfo.ssl_certificate_file);
2973 ConfigServerInfo.ssl_certificate_file = xstrdup(yylval.string);
2974 }
2975 }
2976 #line 2977 "conf_parser.c" /* yacc.c:1646 */
2977 break;
2978
2979 case 74:
2980 #line 481 "conf_parser.y" /* yacc.c:1646 */
2981 {
2982 if (conf_parser_ctx.pass == 2)
2983 {
2984 xfree(ConfigServerInfo.rsa_private_key_file);
2985 ConfigServerInfo.rsa_private_key_file = xstrdup(yylval.string);
2986 }
2987 }
2988 #line 2989 "conf_parser.c" /* yacc.c:1646 */
2989 break;
2990
2991 case 75:
2992 #line 490 "conf_parser.y" /* yacc.c:1646 */
2993 {
2994 if (conf_parser_ctx.pass == 2)
2995 {
2996 xfree(ConfigServerInfo.ssl_dh_param_file);
2997 ConfigServerInfo.ssl_dh_param_file = xstrdup(yylval.string);
2998 }
2999 }
3000 #line 3001 "conf_parser.c" /* yacc.c:1646 */
3001 break;
3002
3003 case 76:
3004 #line 499 "conf_parser.y" /* yacc.c:1646 */
3005 {
3006 if (conf_parser_ctx.pass == 2)
3007 {
3008 xfree(ConfigServerInfo.ssl_cipher_list);
3009 ConfigServerInfo.ssl_cipher_list = xstrdup(yylval.string);
3010 }
3011 }
3012 #line 3013 "conf_parser.c" /* yacc.c:1646 */
3013 break;
3014
3015 case 77:
3016 #line 508 "conf_parser.y" /* yacc.c:1646 */
3017 {
3018 if (conf_parser_ctx.pass == 2)
3019 {
3020 xfree(ConfigServerInfo.ssl_message_digest_algorithm);
3021 ConfigServerInfo.ssl_message_digest_algorithm = xstrdup(yylval.string);
3022 }
3023 }
3024 #line 3025 "conf_parser.c" /* yacc.c:1646 */
3025 break;
3026
3027 case 78:
3028 #line 517 "conf_parser.y" /* yacc.c:1646 */
3029 {
3030 if (conf_parser_ctx.pass == 2)
3031 {
3032 xfree(ConfigServerInfo.ssl_dh_elliptic_curve);
3033 ConfigServerInfo.ssl_dh_elliptic_curve = xstrdup(yylval.string);
3034 }
3035 }
3036 #line 3037 "conf_parser.c" /* yacc.c:1646 */
3037 break;
3038
3039 case 79:
3040 #line 526 "conf_parser.y" /* yacc.c:1646 */
3041 {
3042 /* This isn't rehashable */
3043 if (conf_parser_ctx.pass == 2 && !ConfigServerInfo.name)
3044 {
3045 if (server_valid_name(yylval.string))
3046 ConfigServerInfo.name = xstrdup(yylval.string);
3047 else
3048 {
3049 conf_error_report("Ignoring serverinfo::name -- invalid name. Aborting.");
3050 exit(EXIT_FAILURE);
3051 }
3052 }
3053 }
3054 #line 3055 "conf_parser.c" /* yacc.c:1646 */
3055 break;
3056
3057 case 80:
3058 #line 541 "conf_parser.y" /* yacc.c:1646 */
3059 {
3060 /* This isn't rehashable */
3061 if (conf_parser_ctx.pass == 2 && !ConfigServerInfo.sid)
3062 {
3063 if (valid_sid(yylval.string))
3064 ConfigServerInfo.sid = xstrdup(yylval.string);
3065 else
3066 {
3067 conf_error_report("Ignoring serverinfo::sid -- invalid SID. Aborting.");
3068 exit(EXIT_FAILURE);
3069 }
3070 }
3071 }
3072 #line 3073 "conf_parser.c" /* yacc.c:1646 */
3073 break;
3074
3075 case 81:
3076 #line 556 "conf_parser.y" /* yacc.c:1646 */
3077 {
3078 if (conf_parser_ctx.pass == 2)
3079 {
3080 xfree(ConfigServerInfo.description);
3081 ConfigServerInfo.description = xstrdup(yylval.string);
3082 strlcpy(me.info, ConfigServerInfo.description, sizeof(me.info));
3083 }
3084 }
3085 #line 3086 "conf_parser.c" /* yacc.c:1646 */
3086 break;
3087
3088 case 82:
3089 #line 566 "conf_parser.y" /* yacc.c:1646 */
3090 {
3091 if (conf_parser_ctx.pass == 2)
3092 {
3093 char *p;
3094
3095 if ((p = strchr(yylval.string, ' ')))
3096 *p = '\0';
3097
3098 xfree(ConfigServerInfo.network_name);
3099 ConfigServerInfo.network_name = xstrdup(yylval.string);
3100 }
3101 }
3102 #line 3103 "conf_parser.c" /* yacc.c:1646 */
3103 break;
3104
3105 case 83:
3106 #line 580 "conf_parser.y" /* yacc.c:1646 */
3107 {
3108 if (conf_parser_ctx.pass != 2)
3109 break;
3110
3111 xfree(ConfigServerInfo.network_desc);
3112 ConfigServerInfo.network_desc = xstrdup(yylval.string);
3113 }
3114 #line 3115 "conf_parser.c" /* yacc.c:1646 */
3115 break;
3116
3117 case 84:
3118 #line 589 "conf_parser.y" /* yacc.c:1646 */
3119 {
3120 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3121 {
3122 struct addrinfo hints, *res;
3123
3124 memset(&hints, 0, sizeof(hints));
3125
3126 hints.ai_family = AF_UNSPEC;
3127 hints.ai_socktype = SOCK_STREAM;
3128 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3129
3130 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3131 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", yylval.string);
3132 else
3133 {
3134 assert(res);
3135
3136 memcpy(&ConfigServerInfo.ip, res->ai_addr, res->ai_addrlen);
3137 ConfigServerInfo.ip.ss.ss_family = res->ai_family;
3138 ConfigServerInfo.ip.ss_len = res->ai_addrlen;
3139 freeaddrinfo(res);
3140
3141 ConfigServerInfo.specific_ipv4_vhost = 1;
3142 }
3143 }
3144 }
3145 #line 3146 "conf_parser.c" /* yacc.c:1646 */
3146 break;
3147
3148 case 85:
3149 #line 617 "conf_parser.y" /* yacc.c:1646 */
3150 {
3151 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3152 {
3153 struct addrinfo hints, *res;
3154
3155 memset(&hints, 0, sizeof(hints));
3156
3157 hints.ai_family = AF_UNSPEC;
3158 hints.ai_socktype = SOCK_STREAM;
3159 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3160
3161 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3162 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost6(%s)", yylval.string);
3163 else
3164 {
3165 assert(res);
3166
3167 memcpy(&ConfigServerInfo.ip6, res->ai_addr, res->ai_addrlen);
3168 ConfigServerInfo.ip6.ss.ss_family = res->ai_family;
3169 ConfigServerInfo.ip6.ss_len = res->ai_addrlen;
3170 freeaddrinfo(res);
3171
3172 ConfigServerInfo.specific_ipv6_vhost = 1;
3173 }
3174 }
3175 }
3176 #line 3177 "conf_parser.c" /* yacc.c:1646 */
3177 break;
3178
3179 case 86:
3180 #line 645 "conf_parser.y" /* yacc.c:1646 */
3181 {
3182 if (conf_parser_ctx.pass != 2)
3183 break;
3184
3185 if ((yyvsp[-1].number) < MAXCLIENTS_MIN)
3186 {
3187 char buf[IRCD_BUFSIZE] = "";
3188
3189 snprintf(buf, sizeof(buf), "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3190 conf_error_report(buf);
3191 ConfigServerInfo.default_max_clients = MAXCLIENTS_MIN;
3192 }
3193 else if ((yyvsp[-1].number) > MAXCLIENTS_MAX)
3194 {
3195 char buf[IRCD_BUFSIZE] = "";
3196
3197 snprintf(buf, sizeof(buf), "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3198 conf_error_report(buf);
3199 ConfigServerInfo.default_max_clients = MAXCLIENTS_MAX;
3200 }
3201 else
3202 ConfigServerInfo.default_max_clients = (yyvsp[-1].number);
3203 }
3204 #line 3205 "conf_parser.c" /* yacc.c:1646 */
3205 break;
3206
3207 case 87:
3208 #line 670 "conf_parser.y" /* yacc.c:1646 */
3209 {
3210 if (conf_parser_ctx.pass != 2)
3211 break;
3212
3213 if ((yyvsp[-1].number) < 9)
3214 {
3215 conf_error_report("max_nick_length too low, setting to 9");
3216 ConfigServerInfo.max_nick_length = 9;
3217 }
3218 else if ((yyvsp[-1].number) > NICKLEN)
3219 {
3220 char buf[IRCD_BUFSIZE] = "";
3221
3222 snprintf(buf, sizeof(buf), "max_nick_length too high, setting to %d", NICKLEN);
3223 conf_error_report(buf);
3224 ConfigServerInfo.max_nick_length = NICKLEN;
3225 }
3226 else
3227 ConfigServerInfo.max_nick_length = (yyvsp[-1].number);
3228 }
3229 #line 3230 "conf_parser.c" /* yacc.c:1646 */
3230 break;
3231
3232 case 88:
3233 #line 692 "conf_parser.y" /* yacc.c:1646 */
3234 {
3235 if (conf_parser_ctx.pass != 2)
3236 break;
3237
3238 if ((yyvsp[-1].number) < 80)
3239 {
3240 conf_error_report("max_topic_length too low, setting to 80");
3241 ConfigServerInfo.max_topic_length = 80;
3242 }
3243 else if ((yyvsp[-1].number) > TOPICLEN)
3244 {
3245 char buf[IRCD_BUFSIZE] = "";
3246
3247 snprintf(buf, sizeof(buf), "max_topic_length too high, setting to %d", TOPICLEN);
3248 conf_error_report(buf);
3249 ConfigServerInfo.max_topic_length = TOPICLEN;
3250 }
3251 else
3252 ConfigServerInfo.max_topic_length = (yyvsp[-1].number);
3253 }
3254 #line 3255 "conf_parser.c" /* yacc.c:1646 */
3255 break;
3256
3257 case 89:
3258 #line 714 "conf_parser.y" /* yacc.c:1646 */
3259 {
3260 if (conf_parser_ctx.pass == 2)
3261 ConfigServerInfo.hub = yylval.number;
3262 }
3263 #line 3264 "conf_parser.c" /* yacc.c:1646 */
3264 break;
3265
3266 case 97:
3267 #line 732 "conf_parser.y" /* yacc.c:1646 */
3268 {
3269 if (conf_parser_ctx.pass != 2)
3270 break;
3271
3272 xfree(ConfigAdminInfo.name);
3273 ConfigAdminInfo.name = xstrdup(yylval.string);
3274 }
3275 #line 3276 "conf_parser.c" /* yacc.c:1646 */
3276 break;
3277
3278 case 98:
3279 #line 741 "conf_parser.y" /* yacc.c:1646 */
3280 {
3281 if (conf_parser_ctx.pass != 2)
3282 break;
3283
3284 xfree(ConfigAdminInfo.email);
3285 ConfigAdminInfo.email = xstrdup(yylval.string);
3286 }
3287 #line 3288 "conf_parser.c" /* yacc.c:1646 */
3288 break;
3289
3290 case 99:
3291 #line 750 "conf_parser.y" /* yacc.c:1646 */
3292 {
3293 if (conf_parser_ctx.pass != 2)
3294 break;
3295
3296 xfree(ConfigAdminInfo.description);
3297 ConfigAdminInfo.description = xstrdup(yylval.string);
3298 }
3299 #line 3300 "conf_parser.c" /* yacc.c:1646 */
3300 break;
3301
3302 case 100:
3303 #line 763 "conf_parser.y" /* yacc.c:1646 */
3304 {
3305 if (conf_parser_ctx.pass == 2)
3306 reset_block_state();
3307 }
3308 #line 3309 "conf_parser.c" /* yacc.c:1646 */
3309 break;
3310
3311 case 101:
3312 #line 767 "conf_parser.y" /* yacc.c:1646 */
3313 {
3314 dlink_node *node = NULL;
3315
3316 if (conf_parser_ctx.pass != 2)
3317 break;
3318
3319 if (!block_state.file.buf[0])
3320 break;
3321
3322 DLINK_FOREACH(node, block_state.mask.list.head)
3323 motd_add(node->data, block_state.file.buf);
3324 }
3325 #line 3326 "conf_parser.c" /* yacc.c:1646 */
3326 break;
3327
3328 case 107:
3329 #line 784 "conf_parser.y" /* yacc.c:1646 */
3330 {
3331 if (conf_parser_ctx.pass == 2)
3332 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3333 }
3334 #line 3335 "conf_parser.c" /* yacc.c:1646 */
3335 break;
3336
3337 case 108:
3338 #line 790 "conf_parser.y" /* yacc.c:1646 */
3339 {
3340 if (conf_parser_ctx.pass == 2)
3341 strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3342 }
3343 #line 3344 "conf_parser.c" /* yacc.c:1646 */
3344 break;
3345
3346 case 109:
3347 #line 800 "conf_parser.y" /* yacc.c:1646 */
3348 {
3349 if (conf_parser_ctx.pass == 2)
3350 reset_block_state();
3351 }
3352 #line 3353 "conf_parser.c" /* yacc.c:1646 */
3353 break;
3354
3355 case 110:
3356 #line 804 "conf_parser.y" /* yacc.c:1646 */
3357 {
3358 if (conf_parser_ctx.pass != 2)
3359 break;
3360
3361 if (!block_state.command.buf[0] ||
3362 !block_state.name.buf[0] ||
3363 !block_state.nick.buf[0] ||
3364 !block_state.host.buf[0])
3365 break;
3366
3367 pseudo_register(block_state.name.buf, block_state.nick.buf, block_state.host.buf,
3368 block_state.prepend.buf, block_state.command.buf);
3369 }
3370 #line 3371 "conf_parser.c" /* yacc.c:1646 */
3371 break;
3372
3373 case 118:
3374 #line 822 "conf_parser.y" /* yacc.c:1646 */
3375 {
3376 if (conf_parser_ctx.pass == 2)
3377 strlcpy(block_state.command.buf, yylval.string, sizeof(block_state.command.buf));
3378 }
3379 #line 3380 "conf_parser.c" /* yacc.c:1646 */
3380 break;
3381
3382 case 119:
3383 #line 828 "conf_parser.y" /* yacc.c:1646 */
3384 {
3385 if (conf_parser_ctx.pass == 2)
3386 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
3387 }
3388 #line 3389 "conf_parser.c" /* yacc.c:1646 */
3389 break;
3390
3391 case 120:
3392 #line 834 "conf_parser.y" /* yacc.c:1646 */
3393 {
3394 if (conf_parser_ctx.pass == 2)
3395 strlcpy(block_state.prepend.buf, yylval.string, sizeof(block_state.prepend.buf));
3396 }
3397 #line 3398 "conf_parser.c" /* yacc.c:1646 */
3398 break;
3399
3400 case 121:
3401 #line 840 "conf_parser.y" /* yacc.c:1646 */
3402 {
3403 if (conf_parser_ctx.pass == 2)
3404 {
3405 struct split_nuh_item nuh;
3406
3407 nuh.nuhmask = yylval.string;
3408 nuh.nickptr = NULL;
3409 nuh.userptr = block_state.nick.buf;
3410 nuh.hostptr = block_state.host.buf;
3411 nuh.nicksize = 0;
3412 nuh.usersize = sizeof(block_state.nick.buf);
3413 nuh.hostsize = sizeof(block_state.host.buf);
3414
3415 split_nuh(&nuh);
3416 }
3417 }
3418 #line 3419 "conf_parser.c" /* yacc.c:1646 */
3419 break;
3420
3421 case 128:
3422 #line 868 "conf_parser.y" /* yacc.c:1646 */
3423 {
3424 if (conf_parser_ctx.pass == 2)
3425 ConfigLog.use_logging = yylval.number;
3426 }
3427 #line 3428 "conf_parser.c" /* yacc.c:1646 */
3428 break;
3429
3430 case 129:
3431 #line 874 "conf_parser.y" /* yacc.c:1646 */
3432 {
3433 if (conf_parser_ctx.pass == 2)
3434 reset_block_state();
3435 }
3436 #line 3437 "conf_parser.c" /* yacc.c:1646 */
3437 break;
3438
3439 case 130:
3440 #line 878 "conf_parser.y" /* yacc.c:1646 */
3441 {
3442 if (conf_parser_ctx.pass != 2)
3443 break;
3444
3445 if (block_state.type.value && block_state.file.buf[0])
3446 log_set_file(block_state.type.value, block_state.size.value,
3447 block_state.file.buf);
3448 }
3449 #line 3450 "conf_parser.c" /* yacc.c:1646 */
3450 break;
3451
3452 case 137:
3453 #line 894 "conf_parser.y" /* yacc.c:1646 */
3454 {
3455 if (conf_parser_ctx.pass != 2)
3456 break;
3457
3458 strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3459 }
3460 #line 3461 "conf_parser.c" /* yacc.c:1646 */
3461 break;
3462
3463 case 138:
3464 #line 902 "conf_parser.y" /* yacc.c:1646 */
3465 {
3466 block_state.size.value = (yyvsp[-1].number);
3467 }
3468 #line 3469 "conf_parser.c" /* yacc.c:1646 */
3469 break;
3470
3471 case 139:
3472 #line 905 "conf_parser.y" /* yacc.c:1646 */
3473 {
3474 block_state.size.value = 0;
3475 }
3476 #line 3477 "conf_parser.c" /* yacc.c:1646 */
3477 break;
3478
3479 case 140:
3480 #line 910 "conf_parser.y" /* yacc.c:1646 */
3481 {
3482 if (conf_parser_ctx.pass == 2)
3483 block_state.type.value = 0;
3484 }
3485 #line 3486 "conf_parser.c" /* yacc.c:1646 */
3486 break;
3487
3488 case 144:
3489 #line 917 "conf_parser.y" /* yacc.c:1646 */
3490 {
3491 if (conf_parser_ctx.pass == 2)
3492 block_state.type.value = LOG_TYPE_USER;
3493 }
3494 #line 3495 "conf_parser.c" /* yacc.c:1646 */
3495 break;
3496
3497 case 145:
3498 #line 921 "conf_parser.y" /* yacc.c:1646 */
3499 {
3500 if (conf_parser_ctx.pass == 2)
3501 block_state.type.value = LOG_TYPE_OPER;
3502 }
3503 #line 3504 "conf_parser.c" /* yacc.c:1646 */
3504 break;
3505
3506 case 146:
3507 #line 925 "conf_parser.y" /* yacc.c:1646 */
3508 {
3509 if (conf_parser_ctx.pass == 2)
3510 block_state.type.value = LOG_TYPE_XLINE;
3511 }
3512 #line 3513 "conf_parser.c" /* yacc.c:1646 */
3513 break;
3514
3515 case 147:
3516 #line 929 "conf_parser.y" /* yacc.c:1646 */
3517 {
3518 if (conf_parser_ctx.pass == 2)
3519 block_state.type.value = LOG_TYPE_RESV;
3520 }
3521 #line 3522 "conf_parser.c" /* yacc.c:1646 */
3522 break;
3523
3524 case 148:
3525 #line 933 "conf_parser.y" /* yacc.c:1646 */
3526 {
3527 if (conf_parser_ctx.pass == 2)
3528 block_state.type.value = LOG_TYPE_DLINE;
3529 }
3530 #line 3531 "conf_parser.c" /* yacc.c:1646 */
3531 break;
3532
3533 case 149:
3534 #line 937 "conf_parser.y" /* yacc.c:1646 */
3535 {
3536 if (conf_parser_ctx.pass == 2)
3537 block_state.type.value = LOG_TYPE_KLINE;
3538 }
3539 #line 3540 "conf_parser.c" /* yacc.c:1646 */
3540 break;
3541
3542 case 150:
3543 #line 941 "conf_parser.y" /* yacc.c:1646 */
3544 {
3545 if (conf_parser_ctx.pass == 2)
3546 block_state.type.value = LOG_TYPE_KILL;
3547 }
3548 #line 3549 "conf_parser.c" /* yacc.c:1646 */
3549 break;
3550
3551 case 151:
3552 #line 945 "conf_parser.y" /* yacc.c:1646 */
3553 {
3554 if (conf_parser_ctx.pass == 2)
3555 block_state.type.value = LOG_TYPE_DEBUG;
3556 }
3557 #line 3558 "conf_parser.c" /* yacc.c:1646 */
3558 break;
3559
3560 case 152:
3561 #line 955 "conf_parser.y" /* yacc.c:1646 */
3562 {
3563 if (conf_parser_ctx.pass != 2)
3564 break;
3565
3566 reset_block_state();
3567 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3568 }
3569 #line 3570 "conf_parser.c" /* yacc.c:1646 */
3570 break;
3571
3572 case 153:
3573 #line 962 "conf_parser.y" /* yacc.c:1646 */
3574 {
3575 dlink_node *node = NULL;
3576
3577 if (conf_parser_ctx.pass != 2)
3578 break;
3579
3580 if (!block_state.name.buf[0])
3581 break;
3582
3583 if (!block_state.rpass.buf[0])
3584 break;
3585
3586 DLINK_FOREACH(node, block_state.mask.list.head)
3587 {
3588 struct MaskItem *conf = NULL;
3589 struct split_nuh_item nuh;
3590 char *s = node->data;
3591
3592 if (EmptyString(s))
3593 continue;
3594
3595 nuh.nuhmask = s;
3596 nuh.nickptr = NULL;
3597 nuh.userptr = block_state.user.buf;
3598 nuh.hostptr = block_state.host.buf;
3599 nuh.nicksize = 0;
3600 nuh.usersize = sizeof(block_state.user.buf);
3601 nuh.hostsize = sizeof(block_state.host.buf);
3602 split_nuh(&nuh);
3603
3604 conf = conf_make(CONF_OPER);
3605 conf->name = xstrdup(block_state.name.buf);
3606 conf->user = xstrdup(block_state.user.buf);
3607 conf->host = xstrdup(block_state.host.buf);
3608
3609 if (block_state.cert.buf[0])
3610 conf->certfp = xstrdup(block_state.cert.buf);
3611
3612 if (block_state.rpass.buf[0])
3613 conf->passwd = xstrdup(block_state.rpass.buf);
3614
3615 if (block_state.whois.buf[0])
3616 conf->whois = xstrdup(block_state.whois.buf);
3617
3618 conf->flags = block_state.flags.value;
3619 conf->modes = block_state.modes.value;
3620 conf->port = block_state.port.value;
3621 conf->htype = parse_netmask(conf->host, &conf->addr, &conf->bits);
3622
3623 conf_add_class_to_conf(conf, block_state.class.buf);
3624 }
3625 }
3626 #line 3627 "conf_parser.c" /* yacc.c:1646 */
3627 break;
3628
3629 case 167:
3630 #line 1029 "conf_parser.y" /* yacc.c:1646 */
3631 {
3632 if (conf_parser_ctx.pass == 2)
3633 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
3634 }
3635 #line 3636 "conf_parser.c" /* yacc.c:1646 */
3636 break;
3637
3638 case 168:
3639 #line 1035 "conf_parser.y" /* yacc.c:1646 */
3640 {
3641 if (conf_parser_ctx.pass == 2)
3642 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3643 }
3644 #line 3645 "conf_parser.c" /* yacc.c:1646 */
3645 break;
3646
3647 case 169:
3648 #line 1041 "conf_parser.y" /* yacc.c:1646 */
3649 {
3650 if (conf_parser_ctx.pass == 2)
3651 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
3652 }
3653 #line 3654 "conf_parser.c" /* yacc.c:1646 */
3654 break;
3655
3656 case 170:
3657 #line 1047 "conf_parser.y" /* yacc.c:1646 */
3658 {
3659 if (conf_parser_ctx.pass == 2)
3660 strlcpy(block_state.whois.buf, yylval.string, sizeof(block_state.whois.buf));
3661 }
3662 #line 3663 "conf_parser.c" /* yacc.c:1646 */
3663 break;
3664
3665 case 171:
3666 #line 1053 "conf_parser.y" /* yacc.c:1646 */
3667 {
3668 if (conf_parser_ctx.pass != 2)
3669 break;
3670
3671 if (yylval.number)
3672 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3673 else
3674 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
3675 }
3676 #line 3677 "conf_parser.c" /* yacc.c:1646 */
3677 break;
3678
3679 case 172:
3680 #line 1064 "conf_parser.y" /* yacc.c:1646 */
3681 {
3682 if (conf_parser_ctx.pass == 2)
3683 strlcpy(block_state.cert.buf, yylval.string, sizeof(block_state.cert.buf));
3684 }
3685 #line 3686 "conf_parser.c" /* yacc.c:1646 */
3686 break;
3687
3688 case 173:
3689 #line 1070 "conf_parser.y" /* yacc.c:1646 */
3690 {
3691 if (conf_parser_ctx.pass != 2)
3692 break;
3693
3694 if (yylval.number)
3695 block_state.flags.value |= CONF_FLAGS_SSL;
3696 else
3697 block_state.flags.value &= ~CONF_FLAGS_SSL;
3698 }
3699 #line 3700 "conf_parser.c" /* yacc.c:1646 */
3700 break;
3701
3702 case 174:
3703 #line 1081 "conf_parser.y" /* yacc.c:1646 */
3704 {
3705 if (conf_parser_ctx.pass == 2)
3706 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
3707 }
3708 #line 3709 "conf_parser.c" /* yacc.c:1646 */
3709 break;
3710
3711 case 175:
3712 #line 1087 "conf_parser.y" /* yacc.c:1646 */
3713 {
3714 if (conf_parser_ctx.pass == 2)
3715 block_state.modes.value = 0;
3716 }
3717 #line 3718 "conf_parser.c" /* yacc.c:1646 */
3718 break;
3719
3720 case 179:
3721 #line 1094 "conf_parser.y" /* yacc.c:1646 */
3722 {
3723 if (conf_parser_ctx.pass == 2)
3724 block_state.modes.value |= UMODE_BOTS;
3725 }
3726 #line 3727 "conf_parser.c" /* yacc.c:1646 */
3727 break;
3728
3729 case 180:
3730 #line 1098 "conf_parser.y" /* yacc.c:1646 */
3731 {
3732 if (conf_parser_ctx.pass == 2)
3733 block_state.modes.value |= UMODE_CCONN;
3734 }
3735 #line 3736 "conf_parser.c" /* yacc.c:1646 */
3736 break;
3737
3738 case 181:
3739 #line 1102 "conf_parser.y" /* yacc.c:1646 */
3740 {
3741 if (conf_parser_ctx.pass == 2)
3742 block_state.modes.value |= UMODE_DEAF;
3743 }
3744 #line 3745 "conf_parser.c" /* yacc.c:1646 */
3745 break;
3746
3747 case 182:
3748 #line 1106 "conf_parser.y" /* yacc.c:1646 */
3749 {
3750 if (conf_parser_ctx.pass == 2)
3751 block_state.modes.value |= UMODE_DEBUG;
3752 }
3753 #line 3754 "conf_parser.c" /* yacc.c:1646 */
3754 break;
3755
3756 case 183:
3757 #line 1110 "conf_parser.y" /* yacc.c:1646 */
3758 {
3759 if (conf_parser_ctx.pass == 2)
3760 block_state.modes.value |= UMODE_FULL;
3761 }
3762 #line 3763 "conf_parser.c" /* yacc.c:1646 */
3763 break;
3764
3765 case 184:
3766 #line 1114 "conf_parser.y" /* yacc.c:1646 */
3767 {
3768 if (conf_parser_ctx.pass == 2)
3769 block_state.modes.value |= UMODE_HIDDEN;
3770 }
3771 #line 3772 "conf_parser.c" /* yacc.c:1646 */
3772 break;
3773
3774 case 185:
3775 #line 1118 "conf_parser.y" /* yacc.c:1646 */
3776 {
3777 if (conf_parser_ctx.pass == 2)
3778 block_state.modes.value |= UMODE_HIDECHANS;
3779 }
3780 #line 3781 "conf_parser.c" /* yacc.c:1646 */
3781 break;
3782
3783 case 186:
3784 #line 1122 "conf_parser.y" /* yacc.c:1646 */
3785 {
3786 if (conf_parser_ctx.pass == 2)
3787 block_state.modes.value |= UMODE_HIDEIDLE;
3788 }
3789 #line 3790 "conf_parser.c" /* yacc.c:1646 */
3790 break;
3791
3792 case 187:
3793 #line 1126 "conf_parser.y" /* yacc.c:1646 */
3794 {
3795 if (conf_parser_ctx.pass == 2)
3796 block_state.modes.value |= UMODE_SKILL;
3797 }
3798 #line 3799 "conf_parser.c" /* yacc.c:1646 */
3799 break;
3800
3801 case 188:
3802 #line 1130 "conf_parser.y" /* yacc.c:1646 */
3803 {
3804 if (conf_parser_ctx.pass == 2)
3805 block_state.modes.value |= UMODE_NCHANGE;
3806 }
3807 #line 3808 "conf_parser.c" /* yacc.c:1646 */
3808 break;
3809
3810 case 189:
3811 #line 1134 "conf_parser.y" /* yacc.c:1646 */
3812 {
3813 if (conf_parser_ctx.pass == 2)
3814 block_state.modes.value |= UMODE_REJ;
3815 }
3816 #line 3817 "conf_parser.c" /* yacc.c:1646 */
3817 break;
3818
3819 case 190:
3820 #line 1138 "conf_parser.y" /* yacc.c:1646 */
3821 {
3822 if (conf_parser_ctx.pass == 2)
3823 block_state.modes.value |= UMODE_UNAUTH;
3824 }
3825 #line 3826 "conf_parser.c" /* yacc.c:1646 */
3826 break;
3827
3828 case 191:
3829 #line 1142 "conf_parser.y" /* yacc.c:1646 */
3830 {
3831 if (conf_parser_ctx.pass == 2)
3832 block_state.modes.value |= UMODE_SPY;
3833 }
3834 #line 3835 "conf_parser.c" /* yacc.c:1646 */
3835 break;
3836
3837 case 192:
3838 #line 1146 "conf_parser.y" /* yacc.c:1646 */
3839 {
3840 if (conf_parser_ctx.pass == 2)
3841 block_state.modes.value |= UMODE_EXTERNAL;
3842 }
3843 #line 3844 "conf_parser.c" /* yacc.c:1646 */
3844 break;
3845
3846 case 193:
3847 #line 1150 "conf_parser.y" /* yacc.c:1646 */
3848 {
3849 if (conf_parser_ctx.pass == 2)
3850 block_state.modes.value |= UMODE_SERVNOTICE;
3851 }
3852 #line 3853 "conf_parser.c" /* yacc.c:1646 */
3853 break;
3854
3855 case 194:
3856 #line 1154 "conf_parser.y" /* yacc.c:1646 */
3857 {
3858 if (conf_parser_ctx.pass == 2)
3859 block_state.modes.value |= UMODE_INVISIBLE;
3860 }
3861 #line 3862 "conf_parser.c" /* yacc.c:1646 */
3862 break;
3863
3864 case 195:
3865 #line 1158 "conf_parser.y" /* yacc.c:1646 */
3866 {
3867 if (conf_parser_ctx.pass == 2)
3868 block_state.modes.value |= UMODE_WALLOP;
3869 }
3870 #line 3871 "conf_parser.c" /* yacc.c:1646 */
3871 break;
3872
3873 case 196:
3874 #line 1162 "conf_parser.y" /* yacc.c:1646 */
3875 {
3876 if (conf_parser_ctx.pass == 2)
3877 block_state.modes.value |= UMODE_SOFTCALLERID;
3878 }
3879 #line 3880 "conf_parser.c" /* yacc.c:1646 */
3880 break;
3881
3882 case 197:
3883 #line 1166 "conf_parser.y" /* yacc.c:1646 */
3884 {
3885 if (conf_parser_ctx.pass == 2)
3886 block_state.modes.value |= UMODE_CALLERID;
3887 }
3888 #line 3889 "conf_parser.c" /* yacc.c:1646 */
3889 break;
3890
3891 case 198:
3892 #line 1170 "conf_parser.y" /* yacc.c:1646 */
3893 {
3894 if (conf_parser_ctx.pass == 2)
3895 block_state.modes.value |= UMODE_LOCOPS;
3896 }
3897 #line 3898 "conf_parser.c" /* yacc.c:1646 */
3898 break;
3899
3900 case 199:
3901 #line 1174 "conf_parser.y" /* yacc.c:1646 */
3902 {
3903 if (conf_parser_ctx.pass == 2)
3904 block_state.modes.value |= UMODE_REGONLY;
3905 }
3906 #line 3907 "conf_parser.c" /* yacc.c:1646 */
3907 break;
3908
3909 case 200:
3910 #line 1178 "conf_parser.y" /* yacc.c:1646 */
3911 {
3912 if (conf_parser_ctx.pass == 2)
3913 block_state.modes.value |= UMODE_FARCONNECT;
3914 }
3915 #line 3916 "conf_parser.c" /* yacc.c:1646 */
3916 break;
3917
3918 case 201:
3919 #line 1184 "conf_parser.y" /* yacc.c:1646 */
3920 {
3921 if (conf_parser_ctx.pass == 2)
3922 block_state.port.value = 0;
3923 }
3924 #line 3925 "conf_parser.c" /* yacc.c:1646 */
3925 break;
3926
3927 case 205:
3928 #line 1191 "conf_parser.y" /* yacc.c:1646 */
3929 {
3930 if (conf_parser_ctx.pass == 2)
3931 block_state.port.value |= OPER_FLAG_KILL_REMOTE;
3932 }
3933 #line 3934 "conf_parser.c" /* yacc.c:1646 */
3934 break;
3935
3936 case 206:
3937 #line 1195 "conf_parser.y" /* yacc.c:1646 */
3938 {
3939 if (conf_parser_ctx.pass == 2)
3940 block_state.port.value |= OPER_FLAG_KILL;
3941 }
3942 #line 3943 "conf_parser.c" /* yacc.c:1646 */
3943 break;
3944
3945 case 207:
3946 #line 1199 "conf_parser.y" /* yacc.c:1646 */
3947 {
3948 if (conf_parser_ctx.pass == 2)
3949 block_state.port.value |= OPER_FLAG_CONNECT_REMOTE;
3950 }
3951 #line 3952 "conf_parser.c" /* yacc.c:1646 */
3952 break;
3953
3954 case 208:
3955 #line 1203 "conf_parser.y" /* yacc.c:1646 */
3956 {
3957 if (conf_parser_ctx.pass == 2)
3958 block_state.port.value |= OPER_FLAG_CONNECT;
3959 }
3960 #line 3961 "conf_parser.c" /* yacc.c:1646 */
3961 break;
3962
3963 case 209:
3964 #line 1207 "conf_parser.y" /* yacc.c:1646 */
3965 {
3966 if (conf_parser_ctx.pass == 2)
3967 block_state.port.value |= OPER_FLAG_SQUIT_REMOTE;
3968 }
3969 #line 3970 "conf_parser.c" /* yacc.c:1646 */
3970 break;
3971
3972 case 210:
3973 #line 1211 "conf_parser.y" /* yacc.c:1646 */
3974 {
3975 if (conf_parser_ctx.pass == 2)
3976 block_state.port.value |= OPER_FLAG_SQUIT;
3977 }
3978 #line 3979 "conf_parser.c" /* yacc.c:1646 */
3979 break;
3980
3981 case 211:
3982 #line 1215 "conf_parser.y" /* yacc.c:1646 */
3983 {
3984 if (conf_parser_ctx.pass == 2)
3985 block_state.port.value |= OPER_FLAG_KLINE;
3986 }
3987 #line 3988 "conf_parser.c" /* yacc.c:1646 */
3988 break;
3989
3990 case 212:
3991 #line 1219 "conf_parser.y" /* yacc.c:1646 */
3992 {
3993 if (conf_parser_ctx.pass == 2)
3994 block_state.port.value |= OPER_FLAG_UNKLINE;
3995 }
3996 #line 3997 "conf_parser.c" /* yacc.c:1646 */
3997 break;
3998
3999 case 213:
4000 #line 1223 "conf_parser.y" /* yacc.c:1646 */
4001 {
4002 if (conf_parser_ctx.pass == 2)
4003 block_state.port.value |= OPER_FLAG_DLINE;
4004 }
4005 #line 4006 "conf_parser.c" /* yacc.c:1646 */
4006 break;
4007
4008 case 214:
4009 #line 1227 "conf_parser.y" /* yacc.c:1646 */
4010 {
4011 if (conf_parser_ctx.pass == 2)
4012 block_state.port.value |= OPER_FLAG_UNDLINE;
4013 }
4014 #line 4015 "conf_parser.c" /* yacc.c:1646 */
4015 break;
4016
4017 case 215:
4018 #line 1231 "conf_parser.y" /* yacc.c:1646 */
4019 {
4020 if (conf_parser_ctx.pass == 2)
4021 block_state.port.value |= OPER_FLAG_XLINE;
4022 }
4023 #line 4024 "conf_parser.c" /* yacc.c:1646 */
4024 break;
4025
4026 case 216:
4027 #line 1235 "conf_parser.y" /* yacc.c:1646 */
4028 {
4029 if (conf_parser_ctx.pass == 2)
4030 block_state.port.value |= OPER_FLAG_UNXLINE;
4031 }
4032 #line 4033 "conf_parser.c" /* yacc.c:1646 */
4033 break;
4034
4035 case 217:
4036 #line 1239 "conf_parser.y" /* yacc.c:1646 */
4037 {
4038 if (conf_parser_ctx.pass == 2)
4039 block_state.port.value |= OPER_FLAG_DIE;
4040 }
4041 #line 4042 "conf_parser.c" /* yacc.c:1646 */
4042 break;
4043
4044 case 218:
4045 #line 1243 "conf_parser.y" /* yacc.c:1646 */
4046 {
4047 if (conf_parser_ctx.pass == 2)
4048 block_state.port.value |= OPER_FLAG_RESTART;
4049 }
4050 #line 4051 "conf_parser.c" /* yacc.c:1646 */
4051 break;
4052
4053 case 219:
4054 #line 1247 "conf_parser.y" /* yacc.c:1646 */
4055 {
4056 if (conf_parser_ctx.pass == 2)
4057 block_state.port.value |= OPER_FLAG_REHASH_REMOTE;
4058 }
4059 #line 4060 "conf_parser.c" /* yacc.c:1646 */
4060 break;
4061
4062 case 220:
4063 #line 1251 "conf_parser.y" /* yacc.c:1646 */
4064 {
4065 if (conf_parser_ctx.pass == 2)
4066 block_state.port.value |= OPER_FLAG_REHASH;
4067 }
4068 #line 4069 "conf_parser.c" /* yacc.c:1646 */
4069 break;
4070
4071 case 221:
4072 #line 1255 "conf_parser.y" /* yacc.c:1646 */
4073 {
4074 if (conf_parser_ctx.pass == 2)
4075 block_state.port.value |= OPER_FLAG_ADMIN;
4076 }
4077 #line 4078 "conf_parser.c" /* yacc.c:1646 */
4078 break;
4079
4080 case 222:
4081 #line 1259 "conf_parser.y" /* yacc.c:1646 */
4082 {
4083 if (conf_parser_ctx.pass == 2)
4084 block_state.port.value |= OPER_FLAG_GLOBOPS;
4085 }
4086 #line 4087 "conf_parser.c" /* yacc.c:1646 */
4087 break;
4088
4089 case 223:
4090 #line 1263 "conf_parser.y" /* yacc.c:1646 */
4091 {
4092 if (conf_parser_ctx.pass == 2)
4093 block_state.port.value |= OPER_FLAG_WALLOPS;
4094 }
4095 #line 4096 "conf_parser.c" /* yacc.c:1646 */
4096 break;
4097
4098 case 224:
4099 #line 1267 "conf_parser.y" /* yacc.c:1646 */
4100 {
4101 if (conf_parser_ctx.pass == 2)
4102 block_state.port.value |= OPER_FLAG_LOCOPS;
4103 }
4104 #line 4105 "conf_parser.c" /* yacc.c:1646 */
4105 break;
4106
4107 case 225:
4108 #line 1271 "conf_parser.y" /* yacc.c:1646 */
4109 {
4110 if (conf_parser_ctx.pass == 2)
4111 block_state.port.value |= OPER_FLAG_REMOTEBAN;
4112 }
4113 #line 4114 "conf_parser.c" /* yacc.c:1646 */
4114 break;
4115
4116 case 226:
4117 #line 1275 "conf_parser.y" /* yacc.c:1646 */
4118 {
4119 if (conf_parser_ctx.pass == 2)
4120 block_state.port.value |= OPER_FLAG_SET;
4121 }
4122 #line 4123 "conf_parser.c" /* yacc.c:1646 */
4123 break;
4124
4125 case 227:
4126 #line 1279 "conf_parser.y" /* yacc.c:1646 */
4127 {
4128 if (conf_parser_ctx.pass == 2)
4129 block_state.port.value |= OPER_FLAG_MODULE;
4130 }
4131 #line 4132 "conf_parser.c" /* yacc.c:1646 */
4132 break;
4133
4134 case 228:
4135 #line 1283 "conf_parser.y" /* yacc.c:1646 */
4136 {
4137 if (conf_parser_ctx.pass == 2)
4138 block_state.port.value |= OPER_FLAG_OPME;
4139 }
4140 #line 4141 "conf_parser.c" /* yacc.c:1646 */
4141 break;
4142
4143 case 229:
4144 #line 1287 "conf_parser.y" /* yacc.c:1646 */
4145 {
4146 if (conf_parser_ctx.pass == 2)
4147 block_state.port.value |= OPER_FLAG_NICK_RESV;
4148 }
4149 #line 4150 "conf_parser.c" /* yacc.c:1646 */
4150 break;
4151
4152 case 230:
4153 #line 1291 "conf_parser.y" /* yacc.c:1646 */
4154 {
4155 if (conf_parser_ctx.pass == 2)
4156 block_state.port.value |= OPER_FLAG_JOIN_RESV;
4157 }
4158 #line 4159 "conf_parser.c" /* yacc.c:1646 */
4159 break;
4160
4161 case 231:
4162 #line 1295 "conf_parser.y" /* yacc.c:1646 */
4163 {
4164 if (conf_parser_ctx.pass == 2)
4165 block_state.port.value |= OPER_FLAG_RESV;
4166 }
4167 #line 4168 "conf_parser.c" /* yacc.c:1646 */
4168 break;
4169
4170 case 232:
4171 #line 1299 "conf_parser.y" /* yacc.c:1646 */
4172 {
4173 if (conf_parser_ctx.pass == 2)
4174 block_state.port.value |= OPER_FLAG_UNRESV;
4175 }
4176 #line 4177 "conf_parser.c" /* yacc.c:1646 */
4177 break;
4178
4179 case 233:
4180 #line 1303 "conf_parser.y" /* yacc.c:1646 */
4181 {
4182 if (conf_parser_ctx.pass == 2)
4183 block_state.port.value |= OPER_FLAG_CLOSE;
4184 }
4185 #line 4186 "conf_parser.c" /* yacc.c:1646 */
4186 break;
4187
4188 case 234:
4189 #line 1313 "conf_parser.y" /* yacc.c:1646 */
4190 {
4191 if (conf_parser_ctx.pass != 1)
4192 break;
4193
4194 reset_block_state();
4195
4196 block_state.ping_freq.value = DEFAULT_PINGFREQUENCY;
4197 block_state.con_freq.value = DEFAULT_CONNECTFREQUENCY;
4198 block_state.max_total.value = MAXIMUM_LINKS_DEFAULT;
4199 block_state.max_sendq.value = DEFAULT_SENDQ;
4200 block_state.max_recvq.value = DEFAULT_RECVQ;
4201 }
4202 #line 4203 "conf_parser.c" /* yacc.c:1646 */
4203 break;
4204
4205 case 235:
4206 #line 1325 "conf_parser.y" /* yacc.c:1646 */
4207 {
4208 struct ClassItem *class = NULL;
4209
4210 if (conf_parser_ctx.pass != 1)
4211 break;
4212
4213 if (!block_state.class.buf[0])
4214 break;
4215
4216 if (!(class = class_find(block_state.class.buf, 0)))
4217 class = class_make();
4218
4219 class->active = 1;
4220 xfree(class->name);
4221 class->name = xstrdup(block_state.class.buf);
4222 class->ping_freq = block_state.ping_freq.value;
4223 class->max_perip_local = block_state.max_perip_local.value;
4224 class->max_perip_global = block_state.max_perip_global.value;
4225 class->con_freq = block_state.con_freq.value;
4226 class->max_total = block_state.max_total.value;
4227 class->max_sendq = block_state.max_sendq.value;
4228 class->max_recvq = block_state.max_recvq.value;
4229 class->max_channels = block_state.max_channels.value;
4230
4231 if (block_state.min_idle.value > block_state.max_idle.value)
4232 {
4233 block_state.min_idle.value = 0;
4234 block_state.max_idle.value = 0;
4235 block_state.flags.value &= ~CLASS_FLAGS_FAKE_IDLE;
4236 }
4237
4238 class->flags = block_state.flags.value;
4239 class->min_idle = block_state.min_idle.value;
4240 class->max_idle = block_state.max_idle.value;
4241
4242 rebuild_cidr_list(class);
4243
4244 class->cidr_bitlen_ipv4 = block_state.cidr_bitlen_ipv4.value;
4245 class->cidr_bitlen_ipv6 = block_state.cidr_bitlen_ipv6.value;
4246 class->number_per_cidr = block_state.number_per_cidr.value;
4247 }
4248 #line 4249 "conf_parser.c" /* yacc.c:1646 */
4249 break;
4250
4251 case 254:
4252 #line 1386 "conf_parser.y" /* yacc.c:1646 */
4253 {
4254 if (conf_parser_ctx.pass == 1)
4255 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4256 }
4257 #line 4258 "conf_parser.c" /* yacc.c:1646 */
4258 break;
4259
4260 case 255:
4261 #line 1392 "conf_parser.y" /* yacc.c:1646 */
4262 {
4263 if (conf_parser_ctx.pass == 1)
4264 block_state.ping_freq.value = (yyvsp[-1].number);
4265 }
4266 #line 4267 "conf_parser.c" /* yacc.c:1646 */
4267 break;
4268
4269 case 256:
4270 #line 1398 "conf_parser.y" /* yacc.c:1646 */
4271 {
4272 if (conf_parser_ctx.pass == 1)
4273 block_state.max_perip_local.value = (yyvsp[-1].number);
4274 }
4275 #line 4276 "conf_parser.c" /* yacc.c:1646 */
4276 break;
4277
4278 case 257:
4279 #line 1404 "conf_parser.y" /* yacc.c:1646 */
4280 {
4281 if (conf_parser_ctx.pass == 1)
4282 block_state.max_perip_global.value = (yyvsp[-1].number);
4283 }
4284 #line 4285 "conf_parser.c" /* yacc.c:1646 */
4285 break;
4286
4287 case 258:
4288 #line 1410 "conf_parser.y" /* yacc.c:1646 */
4289 {
4290 if (conf_parser_ctx.pass == 1)
4291 block_state.con_freq.value = (yyvsp[-1].number);
4292 }
4293 #line 4294 "conf_parser.c" /* yacc.c:1646 */
4294 break;
4295
4296 case 259:
4297 #line 1416 "conf_parser.y" /* yacc.c:1646 */
4298 {
4299 if (conf_parser_ctx.pass == 1)
4300 block_state.max_channels.value = (yyvsp[-1].number);
4301 }
4302 #line 4303 "conf_parser.c" /* yacc.c:1646 */
4303 break;
4304
4305 case 260:
4306 #line 1422 "conf_parser.y" /* yacc.c:1646 */
4307 {
4308 if (conf_parser_ctx.pass == 1)
4309 block_state.max_total.value = (yyvsp[-1].number);
4310 }
4311 #line 4312 "conf_parser.c" /* yacc.c:1646 */
4312 break;
4313
4314 case 261:
4315 #line 1428 "conf_parser.y" /* yacc.c:1646 */
4316 {
4317 if (conf_parser_ctx.pass == 1)
4318 block_state.max_sendq.value = (yyvsp[-1].number);
4319 }
4320 #line 4321 "conf_parser.c" /* yacc.c:1646 */
4321 break;
4322
4323 case 262:
4324 #line 1434 "conf_parser.y" /* yacc.c:1646 */
4325 {
4326 if (conf_parser_ctx.pass == 1)
4327 if ((yyvsp[-1].number) >= CLIENT_FLOOD_MIN && (yyvsp[-1].number) <= CLIENT_FLOOD_MAX)
4328 block_state.max_recvq.value = (yyvsp[-1].number);
4329 }
4330 #line 4331 "conf_parser.c" /* yacc.c:1646 */
4331 break;
4332
4333 case 263:
4334 #line 1441 "conf_parser.y" /* yacc.c:1646 */
4335 {
4336 if (conf_parser_ctx.pass == 1)
4337 block_state.cidr_bitlen_ipv4.value = (yyvsp[-1].number) > 32 ? 32 : (yyvsp[-1].number);
4338 }
4339 #line 4340 "conf_parser.c" /* yacc.c:1646 */
4340 break;
4341
4342 case 264:
4343 #line 1447 "conf_parser.y" /* yacc.c:1646 */
4344 {
4345 if (conf_parser_ctx.pass == 1)
4346 block_state.cidr_bitlen_ipv6.value = (yyvsp[-1].number) > 128 ? 128 : (yyvsp[-1].number);
4347 }
4348 #line 4349 "conf_parser.c" /* yacc.c:1646 */
4349 break;
4350
4351 case 265:
4352 #line 1453 "conf_parser.y" /* yacc.c:1646 */
4353 {
4354 if (conf_parser_ctx.pass == 1)
4355 block_state.number_per_cidr.value = (yyvsp[-1].number);
4356 }
4357 #line 4358 "conf_parser.c" /* yacc.c:1646 */
4358 break;
4359
4360 case 266:
4361 #line 1459 "conf_parser.y" /* yacc.c:1646 */
4362 {
4363 if (conf_parser_ctx.pass != 1)
4364 break;
4365
4366 block_state.min_idle.value = (yyvsp[-1].number);
4367 block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
4368 }
4369 #line 4370 "conf_parser.c" /* yacc.c:1646 */
4370 break;
4371
4372 case 267:
4373 #line 1468 "conf_parser.y" /* yacc.c:1646 */
4374 {
4375 if (conf_parser_ctx.pass != 1)
4376 break;
4377
4378 block_state.max_idle.value = (yyvsp[-1].number);
4379 block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
4380 }
4381 #line 4382 "conf_parser.c" /* yacc.c:1646 */
4382 break;
4383
4384 case 268:
4385 #line 1477 "conf_parser.y" /* yacc.c:1646 */
4386 {
4387 if (conf_parser_ctx.pass == 1)
4388 block_state.flags.value &= CLASS_FLAGS_FAKE_IDLE;
4389 }
4390 #line 4391 "conf_parser.c" /* yacc.c:1646 */
4391 break;
4392
4393 case 272:
4394 #line 1484 "conf_parser.y" /* yacc.c:1646 */
4395 {
4396 if (conf_parser_ctx.pass == 1)
4397 block_state.flags.value |= CLASS_FLAGS_RANDOM_IDLE;
4398 }
4399 #line 4400 "conf_parser.c" /* yacc.c:1646 */
4400 break;
4401
4402 case 273:
4403 #line 1488 "conf_parser.y" /* yacc.c:1646 */
4404 {
4405 if (conf_parser_ctx.pass == 1)
4406 block_state.flags.value |= CLASS_FLAGS_HIDE_IDLE_FROM_OPERS;
4407 }
4408 #line 4409 "conf_parser.c" /* yacc.c:1646 */
4409 break;
4410
4411 case 274:
4412 #line 1498 "conf_parser.y" /* yacc.c:1646 */
4413 {
4414 if (conf_parser_ctx.pass == 2)
4415 reset_block_state();
4416 }
4417 #line 4418 "conf_parser.c" /* yacc.c:1646 */
4418 break;
4419
4420 case 276:
4421 #line 1504 "conf_parser.y" /* yacc.c:1646 */
4422 {
4423 block_state.flags.value = 0;
4424 }
4425 #line 4426 "conf_parser.c" /* yacc.c:1646 */
4426 break;
4427
4428 case 280:
4429 #line 1510 "conf_parser.y" /* yacc.c:1646 */
4430 {
4431 if (conf_parser_ctx.pass == 2)
4432 block_state.flags.value |= LISTENER_SSL;
4433 }
4434 #line 4435 "conf_parser.c" /* yacc.c:1646 */
4435 break;
4436
4437 case 281:
4438 #line 1514 "conf_parser.y" /* yacc.c:1646 */
4439 {
4440 if (conf_parser_ctx.pass == 2)
4441 block_state.flags.value |= LISTENER_HIDDEN;
4442 }
4443 #line 4444 "conf_parser.c" /* yacc.c:1646 */
4444 break;
4445
4446 case 282:
4447 #line 1518 "conf_parser.y" /* yacc.c:1646 */
4448 {
4449 if (conf_parser_ctx.pass == 2)
4450 block_state.flags.value |= LISTENER_SERVER;
4451 }
4452 #line 4453 "conf_parser.c" /* yacc.c:1646 */
4453 break;
4454
4455 case 290:
4456 #line 1526 "conf_parser.y" /* yacc.c:1646 */
4457 { block_state.flags.value = 0; }
4458 #line 4459 "conf_parser.c" /* yacc.c:1646 */
4459 break;
4460
4461 case 294:
4462 #line 1531 "conf_parser.y" /* yacc.c:1646 */
4463 {
4464 if (conf_parser_ctx.pass == 2)
4465 {
4466 #ifndef HAVE_TLS
4467 if (block_state.flags.value & LISTENER_SSL)
4468 {
4469 conf_error_report("TLS not available - port closed");
4470 break;
4471 }
4472 #endif
4473 listener_add((yyvsp[0].number), block_state.addr.buf, block_state.flags.value);
4474 }
4475 }
4476 #line 4477 "conf_parser.c" /* yacc.c:1646 */
4477 break;
4478
4479 case 295:
4480 #line 1544 "conf_parser.y" /* yacc.c:1646 */
4481 {
4482 if (conf_parser_ctx.pass == 2)
4483 {
4484 #ifndef HAVE_TLS
4485 if (block_state.flags.value & LISTENER_SSL)
4486 {
4487 conf_error_report("TLS not available - port closed");
4488 break;
4489 }
4490 #endif
4491
4492 for (int i = (yyvsp[-2].number); i <= (yyvsp[0].number); ++i)
4493 listener_add(i, block_state.addr.buf, block_state.flags.value);
4494 }
4495 }
4496 #line 4497 "conf_parser.c" /* yacc.c:1646 */
4497 break;
4498
4499 case 296:
4500 #line 1561 "conf_parser.y" /* yacc.c:1646 */
4501 {
4502 if (conf_parser_ctx.pass == 2)
4503 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4504 }
4505 #line 4506 "conf_parser.c" /* yacc.c:1646 */
4506 break;
4507
4508 case 297:
4509 #line 1567 "conf_parser.y" /* yacc.c:1646 */
4510 {
4511 if (conf_parser_ctx.pass == 2)
4512 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4513 }
4514 #line 4515 "conf_parser.c" /* yacc.c:1646 */
4515 break;
4516
4517 case 298:
4518 #line 1577 "conf_parser.y" /* yacc.c:1646 */
4519 {
4520 if (conf_parser_ctx.pass == 2)
4521 reset_block_state();
4522 }
4523 #line 4524 "conf_parser.c" /* yacc.c:1646 */
4524 break;
4525
4526 case 299:
4527 #line 1581 "conf_parser.y" /* yacc.c:1646 */
4528 {
4529 dlink_node *node = NULL;
4530
4531 if (conf_parser_ctx.pass != 2)
4532 break;
4533
4534 DLINK_FOREACH(node, block_state.mask.list.head)
4535 {
4536 struct MaskItem *conf = NULL;
4537 struct split_nuh_item nuh;
4538 char *s = node->data;
4539
4540 if (EmptyString(s))
4541 continue;
4542
4543 nuh.nuhmask = s;
4544 nuh.nickptr = NULL;
4545 nuh.userptr = block_state.user.buf;
4546 nuh.hostptr = block_state.host.buf;
4547 nuh.nicksize = 0;
4548 nuh.usersize = sizeof(block_state.user.buf);
4549 nuh.hostsize = sizeof(block_state.host.buf);
4550 split_nuh(&nuh);
4551
4552 conf = conf_make(CONF_CLIENT);
4553 conf->user = xstrdup(block_state.user.buf);
4554 conf->host = xstrdup(block_state.host.buf);
4555
4556 if (block_state.rpass.buf[0])
4557 conf->passwd = xstrdup(block_state.rpass.buf);
4558 if (block_state.name.buf[0])
4559 conf->name = xstrdup(block_state.name.buf);
4560
4561 conf->flags = block_state.flags.value;
4562 conf->port = block_state.port.value;
4563
4564 conf_add_class_to_conf(conf, block_state.class.buf);
4565 add_conf_by_address(CONF_CLIENT, conf);
4566 }
4567 }
4568 #line 4569 "conf_parser.c" /* yacc.c:1646 */
4569 break;
4570
4571 case 311:
4572 #line 1634 "conf_parser.y" /* yacc.c:1646 */
4573 {
4574 if (conf_parser_ctx.pass == 2)
4575 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4576 }
4577 #line 4578 "conf_parser.c" /* yacc.c:1646 */
4578 break;
4579
4580 case 312:
4581 #line 1640 "conf_parser.y" /* yacc.c:1646 */
4582 {
4583 if (conf_parser_ctx.pass == 2)
4584 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4585 }
4586 #line 4587 "conf_parser.c" /* yacc.c:1646 */
4587 break;
4588
4589 case 313:
4590 #line 1646 "conf_parser.y" /* yacc.c:1646 */
4591 {
4592 if (conf_parser_ctx.pass == 2)
4593 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4594 }
4595 #line 4596 "conf_parser.c" /* yacc.c:1646 */
4596 break;
4597
4598 case 314:
4599 #line 1652 "conf_parser.y" /* yacc.c:1646 */
4600 {
4601 if (conf_parser_ctx.pass == 2)
4602 {
4603 if (yylval.number)
4604 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
4605 else
4606 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
4607 }
4608 }
4609 #line 4610 "conf_parser.c" /* yacc.c:1646 */
4610 break;
4611
4612 case 315:
4613 #line 1663 "conf_parser.y" /* yacc.c:1646 */
4614 {
4615 if (conf_parser_ctx.pass == 2)
4616 block_state.flags.value &= (CONF_FLAGS_ENCRYPTED | CONF_FLAGS_SPOOF_IP);
4617 }
4618 #line 4619 "conf_parser.c" /* yacc.c:1646 */
4619 break;
4620
4621 case 319:
4622 #line 1670 "conf_parser.y" /* yacc.c:1646 */
4623 {
4624 if (conf_parser_ctx.pass == 2)
4625 block_state.flags.value |= CONF_FLAGS_SPOOF_NOTICE;
4626 }
4627 #line 4628 "conf_parser.c" /* yacc.c:1646 */
4628 break;
4629
4630 case 320:
4631 #line 1674 "conf_parser.y" /* yacc.c:1646 */
4632 {
4633 if (conf_parser_ctx.pass == 2)
4634 block_state.flags.value |= CONF_FLAGS_NOLIMIT;
4635 }
4636 #line 4637 "conf_parser.c" /* yacc.c:1646 */
4637 break;
4638
4639 case 321:
4640 #line 1678 "conf_parser.y" /* yacc.c:1646 */
4641 {
4642 if (conf_parser_ctx.pass == 2)
4643 block_state.flags.value |= CONF_FLAGS_EXEMPTKLINE;
4644 }
4645 #line 4646 "conf_parser.c" /* yacc.c:1646 */
4646 break;
4647
4648 case 322:
4649 #line 1682 "conf_parser.y" /* yacc.c:1646 */
4650 {
4651 if (conf_parser_ctx.pass == 2)
4652 block_state.flags.value |= CONF_FLAGS_EXEMPTXLINE;
4653 }
4654 #line 4655 "conf_parser.c" /* yacc.c:1646 */
4655 break;
4656
4657 case 323:
4658 #line 1686 "conf_parser.y" /* yacc.c:1646 */
4659 {
4660 if (conf_parser_ctx.pass == 2)
4661 block_state.flags.value |= CONF_FLAGS_NEED_IDENTD;
4662 }
4663 #line 4664 "conf_parser.c" /* yacc.c:1646 */
4664 break;
4665
4666 case 324:
4667 #line 1690 "conf_parser.y" /* yacc.c:1646 */
4668 {
4669 if (conf_parser_ctx.pass == 2)
4670 block_state.flags.value |= CONF_FLAGS_CAN_FLOOD;
4671 }
4672 #line 4673 "conf_parser.c" /* yacc.c:1646 */
4673 break;
4674
4675 case 325:
4676 #line 1694 "conf_parser.y" /* yacc.c:1646 */
4677 {
4678 if (conf_parser_ctx.pass == 2)
4679 block_state.flags.value |= CONF_FLAGS_NO_TILDE;
4680 }
4681 #line 4682 "conf_parser.c" /* yacc.c:1646 */
4682 break;
4683
4684 case 326:
4685 #line 1698 "conf_parser.y" /* yacc.c:1646 */
4686 {
4687 if (conf_parser_ctx.pass == 2)
4688 block_state.flags.value |= CONF_FLAGS_EXEMPTRESV;
4689 }
4690 #line 4691 "conf_parser.c" /* yacc.c:1646 */
4691 break;
4692
4693 case 327:
4694 #line 1702 "conf_parser.y" /* yacc.c:1646 */
4695 {
4696 if (conf_parser_ctx.pass == 2)
4697 block_state.flags.value |= CONF_FLAGS_WEBIRC;
4698 }
4699 #line 4700 "conf_parser.c" /* yacc.c:1646 */
4700 break;
4701
4702 case 328:
4703 #line 1706 "conf_parser.y" /* yacc.c:1646 */
4704 {
4705 if (conf_parser_ctx.pass == 2)
4706 block_state.flags.value |= CONF_FLAGS_NEED_PASSWORD;
4707 }
4708 #line 4709 "conf_parser.c" /* yacc.c:1646 */
4709 break;
4710
4711 case 329:
4712 #line 1712 "conf_parser.y" /* yacc.c:1646 */
4713 {
4714 if (conf_parser_ctx.pass != 2)
4715 break;
4716
4717 if (valid_hostname(yylval.string))
4718 {
4719 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4720 block_state.flags.value |= CONF_FLAGS_SPOOF_IP;
4721 }
4722 else
4723 ilog(LOG_TYPE_IRCD, "Spoof either is too long or contains invalid characters. Ignoring it.");
4724 }
4725 #line 4726 "conf_parser.c" /* yacc.c:1646 */
4726 break;
4727
4728 case 330:
4729 #line 1726 "conf_parser.y" /* yacc.c:1646 */
4730 {
4731 if (conf_parser_ctx.pass != 2)
4732 break;
4733
4734 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4735 block_state.flags.value |= CONF_FLAGS_REDIR;
4736 }
4737 #line 4738 "conf_parser.c" /* yacc.c:1646 */
4738 break;
4739
4740 case 331:
4741 #line 1735 "conf_parser.y" /* yacc.c:1646 */
4742 {
4743 if (conf_parser_ctx.pass != 2)
4744 break;
4745
4746 block_state.flags.value |= CONF_FLAGS_REDIR;
4747 block_state.port.value = (yyvsp[-1].number);
4748 }
4749 #line 4750 "conf_parser.c" /* yacc.c:1646 */
4750 break;
4751
4752 case 332:
4753 #line 1748 "conf_parser.y" /* yacc.c:1646 */
4754 {
4755 if (conf_parser_ctx.pass != 2)
4756 break;
4757
4758 reset_block_state();
4759 strlcpy(block_state.rpass.buf, CONF_NOREASON, sizeof(block_state.rpass.buf));
4760 }
4761 #line 4762 "conf_parser.c" /* yacc.c:1646 */
4762 break;
4763
4764 case 333:
4765 #line 1755 "conf_parser.y" /* yacc.c:1646 */
4766 {
4767 if (conf_parser_ctx.pass != 2)
4768 break;
4769
4770 resv_make(block_state.name.buf, block_state.rpass.buf, &block_state.mask.list);
4771 }
4772 #line 4773 "conf_parser.c" /* yacc.c:1646 */
4773 break;
4774
4775 case 340:
4776 #line 1766 "conf_parser.y" /* yacc.c:1646 */
4777 {
4778 if (conf_parser_ctx.pass == 2)
4779 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4780 }
4781 #line 4782 "conf_parser.c" /* yacc.c:1646 */
4782 break;
4783
4784 case 341:
4785 #line 1772 "conf_parser.y" /* yacc.c:1646 */
4786 {
4787 if (conf_parser_ctx.pass == 2)
4788 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4789 }
4790 #line 4791 "conf_parser.c" /* yacc.c:1646 */
4791 break;
4792
4793 case 342:
4794 #line 1778 "conf_parser.y" /* yacc.c:1646 */
4795 {
4796 if (conf_parser_ctx.pass == 2)
4797 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4798 }
4799 #line 4800 "conf_parser.c" /* yacc.c:1646 */
4800 break;
4801
4802 case 348:
4803 #line 1793 "conf_parser.y" /* yacc.c:1646 */
4804 {
4805 if (conf_parser_ctx.pass != 2)
4806 break;
4807
4808 if (server_valid_name(yylval.string))
4809 {
4810 struct ServiceItem *service = service_make();
4811 service->name = xstrdup(yylval.string);
4812 }
4813 }
4814 #line 4815 "conf_parser.c" /* yacc.c:1646 */
4815 break;
4816
4817 case 349:
4818 #line 1809 "conf_parser.y" /* yacc.c:1646 */
4819 {
4820 if (conf_parser_ctx.pass != 2)
4821 break;
4822
4823 reset_block_state();
4824
4825 strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
4826 strlcpy(block_state.user.buf, "*", sizeof(block_state.user.buf));
4827 strlcpy(block_state.host.buf, "*", sizeof(block_state.host.buf));
4828 block_state.flags.value = SHARED_ALL;
4829 }
4830 #line 4831 "conf_parser.c" /* yacc.c:1646 */
4831 break;
4832
4833 case 350:
4834 #line 1820 "conf_parser.y" /* yacc.c:1646 */
4835 {
4836 if (conf_parser_ctx.pass != 2)
4837 break;
4838
4839 struct SharedItem *shared = shared_make();
4840 shared->type = block_state.flags.value;
4841 shared->server = xstrdup(block_state.name.buf);
4842 shared->user = xstrdup(block_state.user.buf);
4843 shared->host = xstrdup(block_state.host.buf);
4844 }
4845 #line 4846 "conf_parser.c" /* yacc.c:1646 */
4846 break;
4847
4848 case 357:
4849 #line 1835 "conf_parser.y" /* yacc.c:1646 */
4850 {
4851 if (conf_parser_ctx.pass == 2)
4852 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4853 }
4854 #line 4855 "conf_parser.c" /* yacc.c:1646 */
4855 break;
4856
4857 case 358:
4858 #line 1841 "conf_parser.y" /* yacc.c:1646 */
4859 {
4860 if (conf_parser_ctx.pass == 2)
4861 {
4862 struct split_nuh_item nuh;
4863
4864 nuh.nuhmask = yylval.string;
4865 nuh.nickptr = NULL;
4866 nuh.userptr = block_state.user.buf;
4867 nuh.hostptr = block_state.host.buf;
4868
4869 nuh.nicksize = 0;
4870 nuh.usersize = sizeof(block_state.user.buf);
4871 nuh.hostsize = sizeof(block_state.host.buf);
4872
4873 split_nuh(&nuh);
4874 }
4875 }
4876 #line 4877 "conf_parser.c" /* yacc.c:1646 */
4877 break;
4878
4879 case 359:
4880 #line 1860 "conf_parser.y" /* yacc.c:1646 */
4881 {
4882 if (conf_parser_ctx.pass == 2)
4883 block_state.flags.value = 0;
4884 }
4885 #line 4886 "conf_parser.c" /* yacc.c:1646 */
4886 break;
4887
4888 case 363:
4889 #line 1867 "conf_parser.y" /* yacc.c:1646 */
4890 {
4891 if (conf_parser_ctx.pass == 2)
4892 block_state.flags.value |= SHARED_KLINE;
4893 }
4894 #line 4895 "conf_parser.c" /* yacc.c:1646 */
4895 break;
4896
4897 case 364:
4898 #line 1871 "conf_parser.y" /* yacc.c:1646 */
4899 {
4900 if (conf_parser_ctx.pass == 2)
4901 block_state.flags.value |= SHARED_UNKLINE;
4902 }
4903 #line 4904 "conf_parser.c" /* yacc.c:1646 */
4904 break;
4905
4906 case 365:
4907 #line 1875 "conf_parser.y" /* yacc.c:1646 */
4908 {
4909 if (conf_parser_ctx.pass == 2)
4910 block_state.flags.value |= SHARED_DLINE;
4911 }
4912 #line 4913 "conf_parser.c" /* yacc.c:1646 */
4913 break;
4914
4915 case 366:
4916 #line 1879 "conf_parser.y" /* yacc.c:1646 */
4917 {
4918 if (conf_parser_ctx.pass == 2)
4919 block_state.flags.value |= SHARED_UNDLINE;
4920 }
4921 #line 4922 "conf_parser.c" /* yacc.c:1646 */
4922 break;
4923
4924 case 367:
4925 #line 1883 "conf_parser.y" /* yacc.c:1646 */
4926 {
4927 if (conf_parser_ctx.pass == 2)
4928 block_state.flags.value |= SHARED_XLINE;
4929 }
4930 #line 4931 "conf_parser.c" /* yacc.c:1646 */
4931 break;
4932
4933 case 368:
4934 #line 1887 "conf_parser.y" /* yacc.c:1646 */
4935 {
4936 if (conf_parser_ctx.pass == 2)
4937 block_state.flags.value |= SHARED_UNXLINE;
4938 }
4939 #line 4940 "conf_parser.c" /* yacc.c:1646 */
4940 break;
4941
4942 case 369:
4943 #line 1891 "conf_parser.y" /* yacc.c:1646 */
4944 {
4945 if (conf_parser_ctx.pass == 2)
4946 block_state.flags.value |= SHARED_RESV;
4947 }
4948 #line 4949 "conf_parser.c" /* yacc.c:1646 */
4949 break;
4950
4951 case 370:
4952 #line 1895 "conf_parser.y" /* yacc.c:1646 */
4953 {
4954 if (conf_parser_ctx.pass == 2)
4955 block_state.flags.value |= SHARED_UNRESV;
4956 }
4957 #line 4958 "conf_parser.c" /* yacc.c:1646 */
4958 break;
4959
4960 case 371:
4961 #line 1899 "conf_parser.y" /* yacc.c:1646 */
4962 {
4963 if (conf_parser_ctx.pass == 2)
4964 block_state.flags.value |= SHARED_LOCOPS;
4965 }
4966 #line 4967 "conf_parser.c" /* yacc.c:1646 */
4967 break;
4968
4969 case 372:
4970 #line 1903 "conf_parser.y" /* yacc.c:1646 */
4971 {
4972 if (conf_parser_ctx.pass == 2)
4973 block_state.flags.value = SHARED_ALL;
4974 }
4975 #line 4976 "conf_parser.c" /* yacc.c:1646 */
4976 break;
4977
4978 case 373:
4979 #line 1913 "conf_parser.y" /* yacc.c:1646 */
4980 {
4981 if (conf_parser_ctx.pass != 2)
4982 break;
4983
4984 reset_block_state();
4985
4986 strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
4987 block_state.flags.value = CLUSTER_ALL;
4988 }
4989 #line 4990 "conf_parser.c" /* yacc.c:1646 */
4990 break;
4991
4992 case 374:
4993 #line 1922 "conf_parser.y" /* yacc.c:1646 */
4994 {
4995 if (conf_parser_ctx.pass != 2)
4996 break;
4997
4998 struct ClusterItem *cluster = cluster_make();
4999 cluster->type = block_state.flags.value;
5000 cluster->server = xstrdup(block_state.name.buf);
5001 }
5002 #line 5003 "conf_parser.c" /* yacc.c:1646 */
5003 break;
5004
5005 case 380:
5006 #line 1935 "conf_parser.y" /* yacc.c:1646 */
5007 {
5008 if (conf_parser_ctx.pass == 2)
5009 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5010 }
5011 #line 5012 "conf_parser.c" /* yacc.c:1646 */
5012 break;
5013
5014 case 381:
5015 #line 1941 "conf_parser.y" /* yacc.c:1646 */
5016 {
5017 if (conf_parser_ctx.pass == 2)
5018 block_state.flags.value = 0;
5019 }
5020 #line 5021 "conf_parser.c" /* yacc.c:1646 */
5021 break;
5022
5023 case 385:
5024 #line 1948 "conf_parser.y" /* yacc.c:1646 */
5025 {
5026 if (conf_parser_ctx.pass == 2)
5027 block_state.flags.value |= CLUSTER_KLINE;
5028 }
5029 #line 5030 "conf_parser.c" /* yacc.c:1646 */
5030 break;
5031
5032 case 386:
5033 #line 1952 "conf_parser.y" /* yacc.c:1646 */
5034 {
5035 if (conf_parser_ctx.pass == 2)
5036 block_state.flags.value |= CLUSTER_UNKLINE;
5037 }
5038 #line 5039 "conf_parser.c" /* yacc.c:1646 */
5039 break;
5040
5041 case 387:
5042 #line 1956 "conf_parser.y" /* yacc.c:1646 */
5043 {
5044 if (conf_parser_ctx.pass == 2)
5045 block_state.flags.value |= CLUSTER_DLINE;
5046 }
5047 #line 5048 "conf_parser.c" /* yacc.c:1646 */
5048 break;
5049
5050 case 388:
5051 #line 1960 "conf_parser.y" /* yacc.c:1646 */
5052 {
5053 if (conf_parser_ctx.pass == 2)
5054 block_state.flags.value |= CLUSTER_UNDLINE;
5055 }
5056 #line 5057 "conf_parser.c" /* yacc.c:1646 */
5057 break;
5058
5059 case 389:
5060 #line 1964 "conf_parser.y" /* yacc.c:1646 */
5061 {
5062 if (conf_parser_ctx.pass == 2)
5063 block_state.flags.value |= CLUSTER_XLINE;
5064 }
5065 #line 5066 "conf_parser.c" /* yacc.c:1646 */
5066 break;
5067
5068 case 390:
5069 #line 1968 "conf_parser.y" /* yacc.c:1646 */
5070 {
5071 if (conf_parser_ctx.pass == 2)
5072 block_state.flags.value |= CLUSTER_UNXLINE;
5073 }
5074 #line 5075 "conf_parser.c" /* yacc.c:1646 */
5075 break;
5076
5077 case 391:
5078 #line 1972 "conf_parser.y" /* yacc.c:1646 */
5079 {
5080 if (conf_parser_ctx.pass == 2)
5081 block_state.flags.value |= CLUSTER_RESV;
5082 }
5083 #line 5084 "conf_parser.c" /* yacc.c:1646 */
5084 break;
5085
5086 case 392:
5087 #line 1976 "conf_parser.y" /* yacc.c:1646 */
5088 {
5089 if (conf_parser_ctx.pass == 2)
5090 block_state.flags.value |= CLUSTER_UNRESV;
5091 }
5092 #line 5093 "conf_parser.c" /* yacc.c:1646 */
5093 break;
5094
5095 case 393:
5096 #line 1980 "conf_parser.y" /* yacc.c:1646 */
5097 {
5098 if (conf_parser_ctx.pass == 2)
5099 block_state.flags.value |= CLUSTER_LOCOPS;
5100 }
5101 #line 5102 "conf_parser.c" /* yacc.c:1646 */
5102 break;
5103
5104 case 394:
5105 #line 1984 "conf_parser.y" /* yacc.c:1646 */
5106 {
5107 if (conf_parser_ctx.pass == 2)
5108 block_state.flags.value = CLUSTER_ALL;
5109 }
5110 #line 5111 "conf_parser.c" /* yacc.c:1646 */
5111 break;
5112
5113 case 395:
5114 #line 1994 "conf_parser.y" /* yacc.c:1646 */
5115 {
5116
5117 if (conf_parser_ctx.pass != 2)
5118 break;
5119
5120 reset_block_state();
5121 block_state.aftype.value = AF_INET;
5122 block_state.port.value = PORTNUM;
5123 }
5124 #line 5125 "conf_parser.c" /* yacc.c:1646 */
5125 break;
5126
5127 case 396:
5128 #line 2003 "conf_parser.y" /* yacc.c:1646 */
5129 {
5130 struct MaskItem *conf = NULL;
5131 struct addrinfo hints, *res;
5132
5133 if (conf_parser_ctx.pass != 2)
5134 break;
5135
5136 if (!block_state.name.buf[0] ||
5137 !block_state.host.buf[0])
5138 break;
5139
5140 if (!block_state.rpass.buf[0] ||
5141 !block_state.spass.buf[0])
5142 break;
5143
5144 if (has_wildcards(block_state.name.buf) ||
5145 has_wildcards(block_state.host.buf))
5146 break;
5147
5148 conf = conf_make(CONF_SERVER);
5149 conf->port = block_state.port.value;
5150 conf->flags = block_state.flags.value;
5151 conf->aftype = block_state.aftype.value;
5152 conf->host = xstrdup(block_state.host.buf);
5153 conf->name = xstrdup(block_state.name.buf);
5154 conf->passwd = xstrdup(block_state.rpass.buf);
5155 conf->spasswd = xstrdup(block_state.spass.buf);
5156
5157 if (block_state.cert.buf[0])
5158 conf->certfp = xstrdup(block_state.cert.buf);
5159
5160 if (block_state.ciph.buf[0])
5161 conf->cipher_list = xstrdup(block_state.ciph.buf);
5162
5163 dlinkMoveList(&block_state.leaf.list, &conf->leaf_list);
5164 dlinkMoveList(&block_state.hub.list, &conf->hub_list);
5165
5166 if (block_state.bind.buf[0])
5167 {
5168 memset(&hints, 0, sizeof(hints));
5169
5170 hints.ai_family = AF_UNSPEC;
5171 hints.ai_socktype = SOCK_STREAM;
5172 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
5173
5174 if (getaddrinfo(block_state.bind.buf, NULL, &hints, &res))
5175 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", block_state.bind.buf);
5176 else
5177 {
5178 assert(res);
5179
5180 memcpy(&conf->bind, res->ai_addr, res->ai_addrlen);
5181 conf->bind.ss.ss_family = res->ai_family;
5182 conf->bind.ss_len = res->ai_addrlen;
5183 freeaddrinfo(res);
5184 }
5185 }
5186
5187 conf_add_class_to_conf(conf, block_state.class.buf);
5188 lookup_confhost(conf);
5189 }
5190 #line 5191 "conf_parser.c" /* yacc.c:1646 */
5191 break;
5192
5193 case 414:
5194 #line 2083 "conf_parser.y" /* yacc.c:1646 */
5195 {
5196 if (conf_parser_ctx.pass == 2)
5197 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5198 }
5199 #line 5200 "conf_parser.c" /* yacc.c:1646 */
5200 break;
5201
5202 case 415:
5203 #line 2089 "conf_parser.y" /* yacc.c:1646 */
5204 {
5205 if (conf_parser_ctx.pass == 2)
5206 strlcpy(block_state.host.buf, yylval.string, sizeof(block_state.host.buf));
5207 }
5208 #line 5209 "conf_parser.c" /* yacc.c:1646 */
5209 break;
5210
5211 case 416:
5212 #line 2095 "conf_parser.y" /* yacc.c:1646 */
5213 {
5214 if (conf_parser_ctx.pass == 2)
5215 strlcpy(block_state.bind.buf, yylval.string, sizeof(block_state.bind.buf));
5216 }
5217 #line 5218 "conf_parser.c" /* yacc.c:1646 */
5218 break;
5219
5220 case 417:
5221 #line 2101 "conf_parser.y" /* yacc.c:1646 */
5222 {
5223 if (conf_parser_ctx.pass != 2)
5224 break;
5225
5226 if ((yyvsp[-1].string)[0] == ':')
5227 conf_error_report("Server passwords cannot begin with a colon");
5228 else if (strchr((yyvsp[-1].string), ' '))
5229 conf_error_report("Server passwords cannot contain spaces");
5230 else
5231 strlcpy(block_state.spass.buf, yylval.string, sizeof(block_state.spass.buf));
5232 }
5233 #line 5234 "conf_parser.c" /* yacc.c:1646 */
5234 break;
5235
5236 case 418:
5237 #line 2114 "conf_parser.y" /* yacc.c:1646 */
5238 {
5239 if (conf_parser_ctx.pass != 2)
5240 break;
5241
5242 if ((yyvsp[-1].string)[0] == ':')
5243 conf_error_report("Server passwords cannot begin with a colon");
5244 else if (strchr((yyvsp[-1].string), ' '))
5245 conf_error_report("Server passwords cannot contain spaces");
5246 else
5247 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5248 }
5249 #line 5250 "conf_parser.c" /* yacc.c:1646 */
5250 break;
5251
5252 case 419:
5253 #line 2127 "conf_parser.y" /* yacc.c:1646 */
5254 {
5255 if (conf_parser_ctx.pass == 2)
5256 strlcpy(block_state.cert.buf, yylval.string, sizeof(block_state.cert.buf));
5257 }
5258 #line 5259 "conf_parser.c" /* yacc.c:1646 */
5259 break;
5260
5261 case 420:
5262 #line 2133 "conf_parser.y" /* yacc.c:1646 */
5263 {
5264 if (conf_parser_ctx.pass == 2)
5265 block_state.port.value = (yyvsp[-1].number);
5266 }
5267 #line 5268 "conf_parser.c" /* yacc.c:1646 */
5268 break;
5269
5270 case 421:
5271 #line 2139 "conf_parser.y" /* yacc.c:1646 */
5272 {
5273 if (conf_parser_ctx.pass == 2)
5274 block_state.aftype.value = AF_INET;
5275 }
5276 #line 5277 "conf_parser.c" /* yacc.c:1646 */
5277 break;
5278
5279 case 422:
5280 #line 2143 "conf_parser.y" /* yacc.c:1646 */
5281 {
5282 if (conf_parser_ctx.pass == 2)
5283 block_state.aftype.value = AF_INET6;
5284 }
5285 #line 5286 "conf_parser.c" /* yacc.c:1646 */
5286 break;
5287
5288 case 423:
5289 #line 2149 "conf_parser.y" /* yacc.c:1646 */
5290 {
5291 block_state.flags.value &= CONF_FLAGS_ENCRYPTED;
5292 }
5293 #line 5294 "conf_parser.c" /* yacc.c:1646 */
5294 break;
5295
5296 case 427:
5297 #line 2155 "conf_parser.y" /* yacc.c:1646 */
5298 {
5299 if (conf_parser_ctx.pass == 2)
5300 block_state.flags.value |= CONF_FLAGS_ALLOW_AUTO_CONN;
5301 }
5302 #line 5303 "conf_parser.c" /* yacc.c:1646 */
5303 break;
5304
5305 case 428:
5306 #line 2159 "conf_parser.y" /* yacc.c:1646 */
5307 {
5308 if (conf_parser_ctx.pass == 2)
5309 block_state.flags.value |= CONF_FLAGS_SSL;
5310 }
5311 #line 5312 "conf_parser.c" /* yacc.c:1646 */
5312 break;
5313
5314 case 429:
5315 #line 2165 "conf_parser.y" /* yacc.c:1646 */
5316 {
5317 if (conf_parser_ctx.pass == 2)
5318 {
5319 if (yylval.number)
5320 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
5321 else
5322 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
5323 }
5324 }
5325 #line 5326 "conf_parser.c" /* yacc.c:1646 */
5326 break;
5327
5328 case 430:
5329 #line 2176 "conf_parser.y" /* yacc.c:1646 */
5330 {
5331 if (conf_parser_ctx.pass == 2)
5332 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.hub.list);
5333 }
5334 #line 5335 "conf_parser.c" /* yacc.c:1646 */
5335 break;
5336
5337 case 431:
5338 #line 2182 "conf_parser.y" /* yacc.c:1646 */
5339 {
5340 if (conf_parser_ctx.pass == 2)
5341 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.leaf.list);
5342 }
5343 #line 5344 "conf_parser.c" /* yacc.c:1646 */
5344 break;
5345
5346 case 432:
5347 #line 2188 "conf_parser.y" /* yacc.c:1646 */
5348 {
5349 if (conf_parser_ctx.pass == 2)
5350 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
5351 }
5352 #line 5353 "conf_parser.c" /* yacc.c:1646 */
5353 break;
5354
5355 case 433:
5356 #line 2194 "conf_parser.y" /* yacc.c:1646 */
5357 {
5358 #ifdef HAVE_TLS
5359 if (conf_parser_ctx.pass == 2)
5360 strlcpy(block_state.ciph.buf, yylval.string, sizeof(block_state.ciph.buf));
5361 #else
5362 if (conf_parser_ctx.pass == 2)
5363 conf_error_report("Ignoring connect::ciphers -- no TLS support");
5364 #endif
5365 }
5366 #line 5367 "conf_parser.c" /* yacc.c:1646 */
5367 break;
5368
5369 case 434:
5370 #line 2209 "conf_parser.y" /* yacc.c:1646 */
5371 {
5372 if (conf_parser_ctx.pass == 2)
5373 reset_block_state();
5374 }
5375 #line 5376 "conf_parser.c" /* yacc.c:1646 */
5376 break;
5377
5378 case 435:
5379 #line 2213 "conf_parser.y" /* yacc.c:1646 */
5380 {
5381 struct MaskItem *conf = NULL;
5382
5383 if (conf_parser_ctx.pass != 2)
5384 break;
5385
5386 if (!block_state.user.buf[0] ||
5387 !block_state.host.buf[0])
5388 break;
5389
5390 conf = conf_make(CONF_KLINE);
5391 conf->user = xstrdup(block_state.user.buf);
5392 conf->host = xstrdup(block_state.host.buf);
5393
5394 if (block_state.rpass.buf[0])
5395 conf->reason = xstrdup(block_state.rpass.buf);
5396 else
5397 conf->reason = xstrdup(CONF_NOREASON);
5398 add_conf_by_address(CONF_KLINE, conf);
5399 }
5400 #line 5401 "conf_parser.c" /* yacc.c:1646 */
5401 break;
5402
5403 case 441:
5404 #line 2238 "conf_parser.y" /* yacc.c:1646 */
5405 {
5406
5407 if (conf_parser_ctx.pass == 2)
5408 {
5409 struct split_nuh_item nuh;
5410
5411 nuh.nuhmask = yylval.string;
5412 nuh.nickptr = NULL;
5413 nuh.userptr = block_state.user.buf;
5414 nuh.hostptr = block_state.host.buf;
5415
5416 nuh.nicksize = 0;
5417 nuh.usersize = sizeof(block_state.user.buf);
5418 nuh.hostsize = sizeof(block_state.host.buf);
5419
5420 split_nuh(&nuh);
5421 }
5422 }
5423 #line 5424 "conf_parser.c" /* yacc.c:1646 */
5424 break;
5425
5426 case 442:
5427 #line 2258 "conf_parser.y" /* yacc.c:1646 */
5428 {
5429 if (conf_parser_ctx.pass == 2)
5430 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5431 }
5432 #line 5433 "conf_parser.c" /* yacc.c:1646 */
5433 break;
5434
5435 case 443:
5436 #line 2268 "conf_parser.y" /* yacc.c:1646 */
5437 {
5438 if (conf_parser_ctx.pass == 2)
5439 reset_block_state();
5440 }
5441 #line 5442 "conf_parser.c" /* yacc.c:1646 */
5442 break;
5443
5444 case 444:
5445 #line 2272 "conf_parser.y" /* yacc.c:1646 */
5446 {
5447 struct MaskItem *conf = NULL;
5448
5449 if (conf_parser_ctx.pass != 2)
5450 break;
5451
5452 if (!block_state.addr.buf[0])
5453 break;
5454
5455 if (parse_netmask(block_state.addr.buf, NULL, NULL) != HM_HOST)
5456 {
5457 conf = conf_make(CONF_DLINE);
5458 conf->host = xstrdup(block_state.addr.buf);
5459
5460 if (block_state.rpass.buf[0])
5461 conf->reason = xstrdup(block_state.rpass.buf);
5462 else
5463 conf->reason = xstrdup(CONF_NOREASON);
5464 add_conf_by_address(CONF_DLINE, conf);
5465 }
5466 }
5467 #line 5468 "conf_parser.c" /* yacc.c:1646 */
5468 break;
5469
5470 case 450:
5471 #line 2298 "conf_parser.y" /* yacc.c:1646 */
5472 {
5473 if (conf_parser_ctx.pass == 2)
5474 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
5475 }
5476 #line 5477 "conf_parser.c" /* yacc.c:1646 */
5477 break;
5478
5479 case 451:
5480 #line 2304 "conf_parser.y" /* yacc.c:1646 */
5481 {
5482 if (conf_parser_ctx.pass == 2)
5483 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5484 }
5485 #line 5486 "conf_parser.c" /* yacc.c:1646 */
5486 break;
5487
5488 case 457:
5489 #line 2319 "conf_parser.y" /* yacc.c:1646 */
5490 {
5491 if (conf_parser_ctx.pass == 2)
5492 {
5493 if (*yylval.string && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
5494 {
5495 struct MaskItem *conf = conf_make(CONF_EXEMPT);
5496 conf->host = xstrdup(yylval.string);
5497
5498 add_conf_by_address(CONF_EXEMPT, conf);
5499 }
5500 }
5501 }
5502 #line 5503 "conf_parser.c" /* yacc.c:1646 */
5503 break;
5504
5505 case 458:
5506 #line 2336 "conf_parser.y" /* yacc.c:1646 */
5507 {
5508 if (conf_parser_ctx.pass == 2)
5509 reset_block_state();
5510 }
5511 #line 5512 "conf_parser.c" /* yacc.c:1646 */
5512 break;
5513
5514 case 459:
5515 #line 2340 "conf_parser.y" /* yacc.c:1646 */
5516 {
5517 if (conf_parser_ctx.pass != 2)
5518 break;
5519
5520 if (!block_state.name.buf[0])
5521 break;
5522
5523 struct GecosItem *gecos = gecos_make();
5524 gecos->mask = xstrdup(block_state.name.buf);
5525
5526 if (block_state.rpass.buf[0])
5527 gecos->reason = xstrdup(block_state.rpass.buf);
5528 else
5529 gecos->reason = xstrdup(CONF_NOREASON);
5530 }
5531 #line 5532 "conf_parser.c" /* yacc.c:1646 */
5532 break;
5533
5534 case 465:
5535 #line 2360 "conf_parser.y" /* yacc.c:1646 */
5536 {
5537 if (conf_parser_ctx.pass == 2)
5538 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5539 }
5540 #line 5541 "conf_parser.c" /* yacc.c:1646 */
5541 break;
5542
5543 case 466:
5544 #line 2366 "conf_parser.y" /* yacc.c:1646 */
5545 {
5546 if (conf_parser_ctx.pass == 2)
5547 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5548 }
5549 #line 5550 "conf_parser.c" /* yacc.c:1646 */
5550 break;
5551
5552 case 518:
5553 #line 2429 "conf_parser.y" /* yacc.c:1646 */
5554 {
5555 ConfigGeneral.away_count = (yyvsp[-1].number);
5556 }
5557 #line 5558 "conf_parser.c" /* yacc.c:1646 */
5558 break;
5559
5560 case 519:
5561 #line 2434 "conf_parser.y" /* yacc.c:1646 */
5562 {
5563 ConfigGeneral.away_time = (yyvsp[-1].number);
5564 }
5565 #line 5566 "conf_parser.c" /* yacc.c:1646 */
5566 break;
5567
5568 case 520:
5569 #line 2439 "conf_parser.y" /* yacc.c:1646 */
5570 {
5571 ConfigGeneral.max_watch = (yyvsp[-1].number);
5572 }
5573 #line 5574 "conf_parser.c" /* yacc.c:1646 */
5574 break;
5575
5576 case 521:
5577 #line 2444 "conf_parser.y" /* yacc.c:1646 */
5578 {
5579 ConfigGeneral.whowas_history_length = (yyvsp[-1].number);
5580 }
5581 #line 5582 "conf_parser.c" /* yacc.c:1646 */
5582 break;
5583
5584 case 522:
5585 #line 2449 "conf_parser.y" /* yacc.c:1646 */
5586 {
5587 if (conf_parser_ctx.pass == 2)
5588 ConfigGeneral.cycle_on_host_change = yylval.number;
5589 }
5590 #line 5591 "conf_parser.c" /* yacc.c:1646 */
5591 break;
5592
5593 case 523:
5594 #line 2455 "conf_parser.y" /* yacc.c:1646 */
5595 {
5596 ConfigGeneral.dline_min_cidr = (yyvsp[-1].number);
5597 }
5598 #line 5599 "conf_parser.c" /* yacc.c:1646 */
5599 break;
5600
5601 case 524:
5602 #line 2460 "conf_parser.y" /* yacc.c:1646 */
5603 {
5604 ConfigGeneral.dline_min_cidr6 = (yyvsp[-1].number);
5605 }
5606 #line 5607 "conf_parser.c" /* yacc.c:1646 */
5607 break;
5608
5609 case 525:
5610 #line 2465 "conf_parser.y" /* yacc.c:1646 */
5611 {
5612 ConfigGeneral.kline_min_cidr = (yyvsp[-1].number);
5613 }
5614 #line 5615 "conf_parser.c" /* yacc.c:1646 */
5615 break;
5616
5617 case 526:
5618 #line 2470 "conf_parser.y" /* yacc.c:1646 */
5619 {
5620 ConfigGeneral.kline_min_cidr6 = (yyvsp[-1].number);
5621 }
5622 #line 5623 "conf_parser.c" /* yacc.c:1646 */
5623 break;
5624
5625 case 527:
5626 #line 2475 "conf_parser.y" /* yacc.c:1646 */
5627 {
5628 ConfigGeneral.tkline_expire_notices = yylval.number;
5629 }
5630 #line 5631 "conf_parser.c" /* yacc.c:1646 */
5631 break;
5632
5633 case 528:
5634 #line 2480 "conf_parser.y" /* yacc.c:1646 */
5635 {
5636 ConfigGeneral.kill_chase_time_limit = (yyvsp[-1].number);
5637 }
5638 #line 5639 "conf_parser.c" /* yacc.c:1646 */
5639 break;
5640
5641 case 529:
5642 #line 2485 "conf_parser.y" /* yacc.c:1646 */
5643 {
5644 ConfigGeneral.ignore_bogus_ts = yylval.number;
5645 }
5646 #line 5647 "conf_parser.c" /* yacc.c:1646 */
5647 break;
5648
5649 case 530:
5650 #line 2490 "conf_parser.y" /* yacc.c:1646 */
5651 {
5652 ConfigGeneral.failed_oper_notice = yylval.number;
5653 }
5654 #line 5655 "conf_parser.c" /* yacc.c:1646 */
5655 break;
5656
5657 case 531:
5658 #line 2495 "conf_parser.y" /* yacc.c:1646 */
5659 {
5660 ConfigGeneral.anti_nick_flood = yylval.number;
5661 }
5662 #line 5663 "conf_parser.c" /* yacc.c:1646 */
5663 break;
5664
5665 case 532:
5666 #line 2500 "conf_parser.y" /* yacc.c:1646 */
5667 {
5668 ConfigGeneral.max_nick_time = (yyvsp[-1].number);
5669 }
5670 #line 5671 "conf_parser.c" /* yacc.c:1646 */
5671 break;
5672
5673 case 533:
5674 #line 2505 "conf_parser.y" /* yacc.c:1646 */
5675 {
5676 ConfigGeneral.max_nick_changes = (yyvsp[-1].number);
5677 }
5678 #line 5679 "conf_parser.c" /* yacc.c:1646 */
5679 break;
5680
5681 case 534:
5682 #line 2510 "conf_parser.y" /* yacc.c:1646 */
5683 {
5684 ConfigGeneral.max_accept = (yyvsp[-1].number);
5685 }
5686 #line 5687 "conf_parser.c" /* yacc.c:1646 */
5687 break;
5688
5689 case 535:
5690 #line 2515 "conf_parser.y" /* yacc.c:1646 */
5691 {
5692 ConfigGeneral.anti_spam_exit_message_time = (yyvsp[-1].number);
5693 }
5694 #line 5695 "conf_parser.c" /* yacc.c:1646 */
5695 break;
5696
5697 case 536:
5698 #line 2520 "conf_parser.y" /* yacc.c:1646 */
5699 {
5700 ConfigGeneral.ts_warn_delta = (yyvsp[-1].number);
5701 }
5702 #line 5703 "conf_parser.c" /* yacc.c:1646 */
5703 break;
5704
5705 case 537:
5706 #line 2525 "conf_parser.y" /* yacc.c:1646 */
5707 {
5708 if (conf_parser_ctx.pass == 2)
5709 ConfigGeneral.ts_max_delta = (yyvsp[-1].number);
5710 }
5711 #line 5712 "conf_parser.c" /* yacc.c:1646 */
5712 break;
5713
5714 case 538:
5715 #line 2531 "conf_parser.y" /* yacc.c:1646 */
5716 {
5717 ConfigGeneral.invisible_on_connect = yylval.number;
5718 }
5719 #line 5720 "conf_parser.c" /* yacc.c:1646 */
5720 break;
5721
5722 case 539:
5723 #line 2536 "conf_parser.y" /* yacc.c:1646 */
5724 {
5725 ConfigGeneral.warn_no_connect_block = yylval.number;
5726 }
5727 #line 5728 "conf_parser.c" /* yacc.c:1646 */
5728 break;
5729
5730 case 540:
5731 #line 2541 "conf_parser.y" /* yacc.c:1646 */
5732 {
5733 ConfigGeneral.stats_e_disabled = yylval.number;
5734 }
5735 #line 5736 "conf_parser.c" /* yacc.c:1646 */
5736 break;
5737
5738 case 541:
5739 #line 2546 "conf_parser.y" /* yacc.c:1646 */
5740 {
5741 ConfigGeneral.stats_m_oper_only = yylval.number;
5742 }
5743 #line 5744 "conf_parser.c" /* yacc.c:1646 */
5744 break;
5745
5746 case 542:
5747 #line 2551 "conf_parser.y" /* yacc.c:1646 */
5748 {
5749 ConfigGeneral.stats_o_oper_only = yylval.number;
5750 }
5751 #line 5752 "conf_parser.c" /* yacc.c:1646 */
5752 break;
5753
5754 case 543:
5755 #line 2556 "conf_parser.y" /* yacc.c:1646 */
5756 {
5757 ConfigGeneral.stats_P_oper_only = yylval.number;
5758 }
5759 #line 5760 "conf_parser.c" /* yacc.c:1646 */
5760 break;
5761
5762 case 544:
5763 #line 2561 "conf_parser.y" /* yacc.c:1646 */
5764 {
5765 ConfigGeneral.stats_u_oper_only = yylval.number;
5766 }
5767 #line 5768 "conf_parser.c" /* yacc.c:1646 */
5768 break;
5769
5770 case 545:
5771 #line 2566 "conf_parser.y" /* yacc.c:1646 */
5772 {
5773 ConfigGeneral.stats_k_oper_only = 2 * yylval.number;
5774 }
5775 #line 5776 "conf_parser.c" /* yacc.c:1646 */
5776 break;
5777
5778 case 546:
5779 #line 2569 "conf_parser.y" /* yacc.c:1646 */
5780 {
5781 ConfigGeneral.stats_k_oper_only = 1;
5782 }
5783 #line 5784 "conf_parser.c" /* yacc.c:1646 */
5784 break;
5785
5786 case 547:
5787 #line 2574 "conf_parser.y" /* yacc.c:1646 */
5788 {
5789 ConfigGeneral.stats_i_oper_only = 2 * yylval.number;
5790 }
5791 #line 5792 "conf_parser.c" /* yacc.c:1646 */
5792 break;
5793
5794 case 548:
5795 #line 2577 "conf_parser.y" /* yacc.c:1646 */
5796 {
5797 ConfigGeneral.stats_i_oper_only = 1;
5798 }
5799 #line 5800 "conf_parser.c" /* yacc.c:1646 */
5800 break;
5801
5802 case 549:
5803 #line 2582 "conf_parser.y" /* yacc.c:1646 */
5804 {
5805 ConfigGeneral.pace_wait = (yyvsp[-1].number);
5806 }
5807 #line 5808 "conf_parser.c" /* yacc.c:1646 */
5808 break;
5809
5810 case 550:
5811 #line 2587 "conf_parser.y" /* yacc.c:1646 */
5812 {
5813 ConfigGeneral.caller_id_wait = (yyvsp[-1].number);
5814 }
5815 #line 5816 "conf_parser.c" /* yacc.c:1646 */
5816 break;
5817
5818 case 551:
5819 #line 2592 "conf_parser.y" /* yacc.c:1646 */
5820 {
5821 ConfigGeneral.opers_bypass_callerid = yylval.number;
5822 }
5823 #line 5824 "conf_parser.c" /* yacc.c:1646 */
5824 break;
5825
5826 case 552:
5827 #line 2597 "conf_parser.y" /* yacc.c:1646 */
5828 {
5829 ConfigGeneral.pace_wait_simple = (yyvsp[-1].number);
5830 }
5831 #line 5832 "conf_parser.c" /* yacc.c:1646 */
5832 break;
5833
5834 case 553:
5835 #line 2602 "conf_parser.y" /* yacc.c:1646 */
5836 {
5837 ConfigGeneral.short_motd = yylval.number;
5838 }
5839 #line 5840 "conf_parser.c" /* yacc.c:1646 */
5840 break;
5841
5842 case 554:
5843 #line 2607 "conf_parser.y" /* yacc.c:1646 */
5844 {
5845 ConfigGeneral.no_oper_flood = yylval.number;
5846 }
5847 #line 5848 "conf_parser.c" /* yacc.c:1646 */
5848 break;
5849
5850 case 555:
5851 #line 2612 "conf_parser.y" /* yacc.c:1646 */
5852 {
5853 ConfigGeneral.dots_in_ident = (yyvsp[-1].number);
5854 }
5855 #line 5856 "conf_parser.c" /* yacc.c:1646 */
5856 break;
5857
5858 case 556:
5859 #line 2617 "conf_parser.y" /* yacc.c:1646 */
5860 {
5861 ConfigGeneral.max_targets = (yyvsp[-1].number);
5862 }
5863 #line 5864 "conf_parser.c" /* yacc.c:1646 */
5864 break;
5865
5866 case 557:
5867 #line 2622 "conf_parser.y" /* yacc.c:1646 */
5868 {
5869 ConfigGeneral.ping_cookie = yylval.number;
5870 }
5871 #line 5872 "conf_parser.c" /* yacc.c:1646 */
5872 break;
5873
5874 case 558:
5875 #line 2627 "conf_parser.y" /* yacc.c:1646 */
5876 {
5877 ConfigGeneral.disable_auth = yylval.number;
5878 }
5879 #line 5880 "conf_parser.c" /* yacc.c:1646 */
5880 break;
5881
5882 case 559:
5883 #line 2632 "conf_parser.y" /* yacc.c:1646 */
5884 {
5885 ConfigGeneral.throttle_count = (yyvsp[-1].number);
5886 }
5887 #line 5888 "conf_parser.c" /* yacc.c:1646 */
5888 break;
5889
5890 case 560:
5891 #line 2637 "conf_parser.y" /* yacc.c:1646 */
5892 {
5893 ConfigGeneral.throttle_time = (yyvsp[-1].number);
5894 }
5895 #line 5896 "conf_parser.c" /* yacc.c:1646 */
5896 break;
5897
5898 case 561:
5899 #line 2642 "conf_parser.y" /* yacc.c:1646 */
5900 {
5901 ConfigGeneral.oper_umodes = 0;
5902 }
5903 #line 5904 "conf_parser.c" /* yacc.c:1646 */
5904 break;
5905
5906 case 565:
5907 #line 2648 "conf_parser.y" /* yacc.c:1646 */
5908 {
5909 ConfigGeneral.oper_umodes |= UMODE_BOTS;
5910 }
5911 #line 5912 "conf_parser.c" /* yacc.c:1646 */
5912 break;
5913
5914 case 566:
5915 #line 2651 "conf_parser.y" /* yacc.c:1646 */
5916 {
5917 ConfigGeneral.oper_umodes |= UMODE_CCONN;
5918 }
5919 #line 5920 "conf_parser.c" /* yacc.c:1646 */
5920 break;
5921
5922 case 567:
5923 #line 2654 "conf_parser.y" /* yacc.c:1646 */
5924 {
5925 ConfigGeneral.oper_umodes |= UMODE_DEAF;
5926 }
5927 #line 5928 "conf_parser.c" /* yacc.c:1646 */
5928 break;
5929
5930 case 568:
5931 #line 2657 "conf_parser.y" /* yacc.c:1646 */
5932 {
5933 ConfigGeneral.oper_umodes |= UMODE_DEBUG;
5934 }
5935 #line 5936 "conf_parser.c" /* yacc.c:1646 */
5936 break;
5937
5938 case 569:
5939 #line 2660 "conf_parser.y" /* yacc.c:1646 */
5940 {
5941 ConfigGeneral.oper_umodes |= UMODE_FULL;
5942 }
5943 #line 5944 "conf_parser.c" /* yacc.c:1646 */
5944 break;
5945
5946 case 570:
5947 #line 2663 "conf_parser.y" /* yacc.c:1646 */
5948 {
5949 ConfigGeneral.oper_umodes |= UMODE_HIDDEN;
5950 }
5951 #line 5952 "conf_parser.c" /* yacc.c:1646 */
5952 break;
5953
5954 case 571:
5955 #line 2666 "conf_parser.y" /* yacc.c:1646 */
5956 {
5957 ConfigGeneral.oper_umodes |= UMODE_HIDECHANS;
5958 }
5959 #line 5960 "conf_parser.c" /* yacc.c:1646 */
5960 break;
5961
5962 case 572:
5963 #line 2669 "conf_parser.y" /* yacc.c:1646 */
5964 {
5965 ConfigGeneral.oper_umodes |= UMODE_HIDEIDLE;
5966 }
5967 #line 5968 "conf_parser.c" /* yacc.c:1646 */
5968 break;
5969
5970 case 573:
5971 #line 2672 "conf_parser.y" /* yacc.c:1646 */
5972 {
5973 ConfigGeneral.oper_umodes |= UMODE_SKILL;
5974 }
5975 #line 5976 "conf_parser.c" /* yacc.c:1646 */
5976 break;
5977
5978 case 574:
5979 #line 2675 "conf_parser.y" /* yacc.c:1646 */
5980 {
5981 ConfigGeneral.oper_umodes |= UMODE_NCHANGE;
5982 }
5983 #line 5984 "conf_parser.c" /* yacc.c:1646 */
5984 break;
5985
5986 case 575:
5987 #line 2678 "conf_parser.y" /* yacc.c:1646 */
5988 {
5989 ConfigGeneral.oper_umodes |= UMODE_REJ;
5990 }
5991 #line 5992 "conf_parser.c" /* yacc.c:1646 */
5992 break;
5993
5994 case 576:
5995 #line 2681 "conf_parser.y" /* yacc.c:1646 */
5996 {
5997 ConfigGeneral.oper_umodes |= UMODE_UNAUTH;
5998 }
5999 #line 6000 "conf_parser.c" /* yacc.c:1646 */
6000 break;
6001
6002 case 577:
6003 #line 2684 "conf_parser.y" /* yacc.c:1646 */
6004 {
6005 ConfigGeneral.oper_umodes |= UMODE_SPY;
6006 }
6007 #line 6008 "conf_parser.c" /* yacc.c:1646 */
6008 break;
6009
6010 case 578:
6011 #line 2687 "conf_parser.y" /* yacc.c:1646 */
6012 {
6013 ConfigGeneral.oper_umodes |= UMODE_EXTERNAL;
6014 }
6015 #line 6016 "conf_parser.c" /* yacc.c:1646 */
6016 break;
6017
6018 case 579:
6019 #line 2690 "conf_parser.y" /* yacc.c:1646 */
6020 {
6021 ConfigGeneral.oper_umodes |= UMODE_SERVNOTICE;
6022 }
6023 #line 6024 "conf_parser.c" /* yacc.c:1646 */
6024 break;
6025
6026 case 580:
6027 #line 2693 "conf_parser.y" /* yacc.c:1646 */
6028 {
6029 ConfigGeneral.oper_umodes |= UMODE_INVISIBLE;
6030 }
6031 #line 6032 "conf_parser.c" /* yacc.c:1646 */
6032 break;
6033
6034 case 581:
6035 #line 2696 "conf_parser.y" /* yacc.c:1646 */
6036 {
6037 ConfigGeneral.oper_umodes |= UMODE_WALLOP;
6038 }
6039 #line 6040 "conf_parser.c" /* yacc.c:1646 */
6040 break;
6041
6042 case 582:
6043 #line 2699 "conf_parser.y" /* yacc.c:1646 */
6044 {
6045 ConfigGeneral.oper_umodes |= UMODE_SOFTCALLERID;
6046 }
6047 #line 6048 "conf_parser.c" /* yacc.c:1646 */
6048 break;
6049
6050 case 583:
6051 #line 2702 "conf_parser.y" /* yacc.c:1646 */
6052 {
6053 ConfigGeneral.oper_umodes |= UMODE_CALLERID;
6054 }
6055 #line 6056 "conf_parser.c" /* yacc.c:1646 */
6056 break;
6057
6058 case 584:
6059 #line 2705 "conf_parser.y" /* yacc.c:1646 */
6060 {
6061 ConfigGeneral.oper_umodes |= UMODE_LOCOPS;
6062 }
6063 #line 6064 "conf_parser.c" /* yacc.c:1646 */
6064 break;
6065
6066 case 585:
6067 #line 2708 "conf_parser.y" /* yacc.c:1646 */
6068 {
6069 ConfigGeneral.oper_umodes |= UMODE_REGONLY;
6070 }
6071 #line 6072 "conf_parser.c" /* yacc.c:1646 */
6072 break;
6073
6074 case 586:
6075 #line 2711 "conf_parser.y" /* yacc.c:1646 */
6076 {
6077 ConfigGeneral.oper_umodes |= UMODE_FARCONNECT;
6078 }
6079 #line 6080 "conf_parser.c" /* yacc.c:1646 */
6080 break;
6081
6082 case 587:
6083 #line 2716 "conf_parser.y" /* yacc.c:1646 */
6084 {
6085 ConfigGeneral.oper_only_umodes = 0;
6086 }
6087 #line 6088 "conf_parser.c" /* yacc.c:1646 */
6088 break;
6089
6090 case 591:
6091 #line 2722 "conf_parser.y" /* yacc.c:1646 */
6092 {
6093 ConfigGeneral.oper_only_umodes |= UMODE_BOTS;
6094 }
6095 #line 6096 "conf_parser.c" /* yacc.c:1646 */
6096 break;
6097
6098 case 592:
6099 #line 2725 "conf_parser.y" /* yacc.c:1646 */
6100 {
6101 ConfigGeneral.oper_only_umodes |= UMODE_CCONN;
6102 }
6103 #line 6104 "conf_parser.c" /* yacc.c:1646 */
6104 break;
6105
6106 case 593:
6107 #line 2728 "conf_parser.y" /* yacc.c:1646 */
6108 {
6109 ConfigGeneral.oper_only_umodes |= UMODE_DEAF;
6110 }
6111 #line 6112 "conf_parser.c" /* yacc.c:1646 */
6112 break;
6113
6114 case 594:
6115 #line 2731 "conf_parser.y" /* yacc.c:1646 */
6116 {
6117 ConfigGeneral.oper_only_umodes |= UMODE_DEBUG;
6118 }
6119 #line 6120 "conf_parser.c" /* yacc.c:1646 */
6120 break;
6121
6122 case 595:
6123 #line 2734 "conf_parser.y" /* yacc.c:1646 */
6124 {
6125 ConfigGeneral.oper_only_umodes |= UMODE_FULL;
6126 }
6127 #line 6128 "conf_parser.c" /* yacc.c:1646 */
6128 break;
6129
6130 case 596:
6131 #line 2737 "conf_parser.y" /* yacc.c:1646 */
6132 {
6133 ConfigGeneral.oper_only_umodes |= UMODE_SKILL;
6134 }
6135 #line 6136 "conf_parser.c" /* yacc.c:1646 */
6136 break;
6137
6138 case 597:
6139 #line 2740 "conf_parser.y" /* yacc.c:1646 */
6140 {
6141 ConfigGeneral.oper_only_umodes |= UMODE_HIDDEN;
6142 }
6143 #line 6144 "conf_parser.c" /* yacc.c:1646 */
6144 break;
6145
6146 case 598:
6147 #line 2743 "conf_parser.y" /* yacc.c:1646 */
6148 {
6149 ConfigGeneral.oper_only_umodes |= UMODE_NCHANGE;
6150 }
6151 #line 6152 "conf_parser.c" /* yacc.c:1646 */
6152 break;
6153
6154 case 599:
6155 #line 2746 "conf_parser.y" /* yacc.c:1646 */
6156 {
6157 ConfigGeneral.oper_only_umodes |= UMODE_REJ;
6158 }
6159 #line 6160 "conf_parser.c" /* yacc.c:1646 */
6160 break;
6161
6162 case 600:
6163 #line 2749 "conf_parser.y" /* yacc.c:1646 */
6164 {
6165 ConfigGeneral.oper_only_umodes |= UMODE_UNAUTH;
6166 }
6167 #line 6168 "conf_parser.c" /* yacc.c:1646 */
6168 break;
6169
6170 case 601:
6171 #line 2752 "conf_parser.y" /* yacc.c:1646 */
6172 {
6173 ConfigGeneral.oper_only_umodes |= UMODE_SPY;
6174 }
6175 #line 6176 "conf_parser.c" /* yacc.c:1646 */
6176 break;
6177
6178 case 602:
6179 #line 2755 "conf_parser.y" /* yacc.c:1646 */
6180 {
6181 ConfigGeneral.oper_only_umodes |= UMODE_EXTERNAL;
6182 }
6183 #line 6184 "conf_parser.c" /* yacc.c:1646 */
6184 break;
6185
6186 case 603:
6187 #line 2758 "conf_parser.y" /* yacc.c:1646 */
6188 {
6189 ConfigGeneral.oper_only_umodes |= UMODE_SERVNOTICE;
6190 }
6191 #line 6192 "conf_parser.c" /* yacc.c:1646 */
6192 break;
6193
6194 case 604:
6195 #line 2761 "conf_parser.y" /* yacc.c:1646 */
6196 {
6197 ConfigGeneral.oper_only_umodes |= UMODE_INVISIBLE;
6198 }
6199 #line 6200 "conf_parser.c" /* yacc.c:1646 */
6200 break;
6201
6202 case 605:
6203 #line 2764 "conf_parser.y" /* yacc.c:1646 */
6204 {
6205 ConfigGeneral.oper_only_umodes |= UMODE_WALLOP;
6206 }
6207 #line 6208 "conf_parser.c" /* yacc.c:1646 */
6208 break;
6209
6210 case 606:
6211 #line 2767 "conf_parser.y" /* yacc.c:1646 */
6212 {
6213 ConfigGeneral.oper_only_umodes |= UMODE_SOFTCALLERID;
6214 }
6215 #line 6216 "conf_parser.c" /* yacc.c:1646 */
6216 break;
6217
6218 case 607:
6219 #line 2770 "conf_parser.y" /* yacc.c:1646 */
6220 {
6221 ConfigGeneral.oper_only_umodes |= UMODE_CALLERID;
6222 }
6223 #line 6224 "conf_parser.c" /* yacc.c:1646 */
6224 break;
6225
6226 case 608:
6227 #line 2773 "conf_parser.y" /* yacc.c:1646 */
6228 {
6229 ConfigGeneral.oper_only_umodes |= UMODE_LOCOPS;
6230 }
6231 #line 6232 "conf_parser.c" /* yacc.c:1646 */
6232 break;
6233
6234 case 609:
6235 #line 2776 "conf_parser.y" /* yacc.c:1646 */
6236 {
6237 ConfigGeneral.oper_only_umodes |= UMODE_REGONLY;
6238 }
6239 #line 6240 "conf_parser.c" /* yacc.c:1646 */
6240 break;
6241
6242 case 610:
6243 #line 2779 "conf_parser.y" /* yacc.c:1646 */
6244 {
6245 ConfigGeneral.oper_only_umodes |= UMODE_FARCONNECT;
6246 }
6247 #line 6248 "conf_parser.c" /* yacc.c:1646 */
6248 break;
6249
6250 case 611:
6251 #line 2784 "conf_parser.y" /* yacc.c:1646 */
6252 {
6253 ConfigGeneral.min_nonwildcard = (yyvsp[-1].number);
6254 }
6255 #line 6256 "conf_parser.c" /* yacc.c:1646 */
6256 break;
6257
6258 case 612:
6259 #line 2789 "conf_parser.y" /* yacc.c:1646 */
6260 {
6261 ConfigGeneral.min_nonwildcard_simple = (yyvsp[-1].number);
6262 }
6263 #line 6264 "conf_parser.c" /* yacc.c:1646 */
6264 break;
6265
6266 case 613:
6267 #line 2794 "conf_parser.y" /* yacc.c:1646 */
6268 {
6269 ConfigGeneral.default_floodcount = (yyvsp[-1].number);
6270 }
6271 #line 6272 "conf_parser.c" /* yacc.c:1646 */
6272 break;
6273
6274 case 614:
6275 #line 2799 "conf_parser.y" /* yacc.c:1646 */
6276 {
6277 ConfigGeneral.default_floodtime = (yyvsp[-1].number);
6278 }
6279 #line 6280 "conf_parser.c" /* yacc.c:1646 */
6280 break;
6281
6282 case 633:
6283 #line 2827 "conf_parser.y" /* yacc.c:1646 */
6284 {
6285 ConfigChannel.disable_fake_channels = yylval.number;
6286 }
6287 #line 6288 "conf_parser.c" /* yacc.c:1646 */
6288 break;
6289
6290 case 634:
6291 #line 2832 "conf_parser.y" /* yacc.c:1646 */
6292 {
6293 ConfigChannel.invite_client_count = (yyvsp[-1].number);
6294 }
6295 #line 6296 "conf_parser.c" /* yacc.c:1646 */
6296 break;
6297
6298 case 635:
6299 #line 2837 "conf_parser.y" /* yacc.c:1646 */
6300 {
6301 ConfigChannel.invite_client_time = (yyvsp[-1].number);
6302 }
6303 #line 6304 "conf_parser.c" /* yacc.c:1646 */
6304 break;
6305
6306 case 636:
6307 #line 2842 "conf_parser.y" /* yacc.c:1646 */
6308 {
6309 ConfigChannel.invite_delay_channel = (yyvsp[-1].number);
6310 }
6311 #line 6312 "conf_parser.c" /* yacc.c:1646 */
6312 break;
6313
6314 case 637:
6315 #line 2847 "conf_parser.y" /* yacc.c:1646 */
6316 {
6317 ConfigChannel.invite_expire_time = (yyvsp[-1].number);
6318 }
6319 #line 6320 "conf_parser.c" /* yacc.c:1646 */
6320 break;
6321
6322 case 638:
6323 #line 2852 "conf_parser.y" /* yacc.c:1646 */
6324 {
6325 ConfigChannel.knock_client_count = (yyvsp[-1].number);
6326 }
6327 #line 6328 "conf_parser.c" /* yacc.c:1646 */
6328 break;
6329
6330 case 639:
6331 #line 2857 "conf_parser.y" /* yacc.c:1646 */
6332 {
6333 ConfigChannel.knock_client_time = (yyvsp[-1].number);
6334 }
6335 #line 6336 "conf_parser.c" /* yacc.c:1646 */
6336 break;
6337
6338 case 640:
6339 #line 2862 "conf_parser.y" /* yacc.c:1646 */
6340 {
6341 ConfigChannel.knock_delay_channel = (yyvsp[-1].number);
6342 }
6343 #line 6344 "conf_parser.c" /* yacc.c:1646 */
6344 break;
6345
6346 case 641:
6347 #line 2867 "conf_parser.y" /* yacc.c:1646 */
6348 {
6349 ConfigChannel.max_channels = (yyvsp[-1].number);
6350 }
6351 #line 6352 "conf_parser.c" /* yacc.c:1646 */
6352 break;
6353
6354 case 642:
6355 #line 2872 "conf_parser.y" /* yacc.c:1646 */
6356 {
6357 ConfigChannel.max_invites = (yyvsp[-1].number);
6358 }
6359 #line 6360 "conf_parser.c" /* yacc.c:1646 */
6360 break;
6361
6362 case 643:
6363 #line 2877 "conf_parser.y" /* yacc.c:1646 */
6364 {
6365 ConfigChannel.max_bans = (yyvsp[-1].number);
6366 }
6367 #line 6368 "conf_parser.c" /* yacc.c:1646 */
6368 break;
6369
6370 case 644:
6371 #line 2882 "conf_parser.y" /* yacc.c:1646 */
6372 {
6373 ConfigChannel.max_bans_large = (yyvsp[-1].number);
6374 }
6375 #line 6376 "conf_parser.c" /* yacc.c:1646 */
6376 break;
6377
6378 case 645:
6379 #line 2887 "conf_parser.y" /* yacc.c:1646 */
6380 {
6381 ConfigChannel.default_join_flood_count = yylval.number;
6382 }
6383 #line 6384 "conf_parser.c" /* yacc.c:1646 */
6384 break;
6385
6386 case 646:
6387 #line 2892 "conf_parser.y" /* yacc.c:1646 */
6388 {
6389 ConfigChannel.default_join_flood_time = (yyvsp[-1].number);
6390 }
6391 #line 6392 "conf_parser.c" /* yacc.c:1646 */
6392 break;
6393
6394 case 660:
6395 #line 2915 "conf_parser.y" /* yacc.c:1646 */
6396 {
6397 if (conf_parser_ctx.pass == 2)
6398 ConfigServerHide.flatten_links = yylval.number;
6399 }
6400 #line 6401 "conf_parser.c" /* yacc.c:1646 */
6401 break;
6402
6403 case 661:
6404 #line 2921 "conf_parser.y" /* yacc.c:1646 */
6405 {
6406 if (conf_parser_ctx.pass == 2)
6407 {
6408 if ((yyvsp[-1].number) > 0)
6409 {
6410 event_write_links_file.when = (yyvsp[-1].number);
6411 event_add(&event_write_links_file, NULL);
6412 }
6413 else
6414 event_delete(&event_write_links_file);
6415
6416 ConfigServerHide.flatten_links_delay = (yyvsp[-1].number);
6417 }
6418 }
6419 #line 6420 "conf_parser.c" /* yacc.c:1646 */
6420 break;
6421
6422 case 662:
6423 #line 2937 "conf_parser.y" /* yacc.c:1646 */
6424 {
6425 if (conf_parser_ctx.pass == 2)
6426 {
6427 xfree(ConfigServerHide.flatten_links_file);
6428 ConfigServerHide.flatten_links_file = xstrdup(yylval.string);
6429 }
6430 }
6431 #line 6432 "conf_parser.c" /* yacc.c:1646 */
6432 break;
6433
6434 case 663:
6435 #line 2946 "conf_parser.y" /* yacc.c:1646 */
6436 {
6437 if (conf_parser_ctx.pass == 2)
6438 ConfigServerHide.disable_remote_commands = yylval.number;
6439 }
6440 #line 6441 "conf_parser.c" /* yacc.c:1646 */
6441 break;
6442
6443 case 664:
6444 #line 2952 "conf_parser.y" /* yacc.c:1646 */
6445 {
6446 if (conf_parser_ctx.pass == 2)
6447 ConfigServerHide.hide_servers = yylval.number;
6448 }
6449 #line 6450 "conf_parser.c" /* yacc.c:1646 */
6450 break;
6451
6452 case 665:
6453 #line 2958 "conf_parser.y" /* yacc.c:1646 */
6454 {
6455 if (conf_parser_ctx.pass == 2)
6456 ConfigServerHide.hide_services = yylval.number;
6457 }
6458 #line 6459 "conf_parser.c" /* yacc.c:1646 */
6459 break;
6460
6461 case 666:
6462 #line 2964 "conf_parser.y" /* yacc.c:1646 */
6463 {
6464 if (conf_parser_ctx.pass == 2)
6465 {
6466 xfree(ConfigServerHide.hidden_name);
6467 ConfigServerHide.hidden_name = xstrdup(yylval.string);
6468 }
6469 }
6470 #line 6471 "conf_parser.c" /* yacc.c:1646 */
6471 break;
6472
6473 case 667:
6474 #line 2973 "conf_parser.y" /* yacc.c:1646 */
6475 {
6476 if (conf_parser_ctx.pass == 2)
6477 ConfigServerHide.hidden = yylval.number;
6478 }
6479 #line 6480 "conf_parser.c" /* yacc.c:1646 */
6480 break;
6481
6482 case 668:
6483 #line 2979 "conf_parser.y" /* yacc.c:1646 */
6484 {
6485 if (conf_parser_ctx.pass == 2)
6486 ConfigServerHide.hide_server_ips = yylval.number;
6487 }
6488 #line 6489 "conf_parser.c" /* yacc.c:1646 */
6489 break;
6490
6491
6492 #line 6493 "conf_parser.c" /* yacc.c:1646 */
6493 default: break;
6494 }
6495 /* User semantic actions sometimes alter yychar, and that requires
6496 that yytoken be updated with the new translation. We take the
6497 approach of translating immediately before every use of yytoken.
6498 One alternative is translating here after every semantic action,
6499 but that translation would be missed if the semantic action invokes
6500 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
6501 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
6502 incorrect destructor might then be invoked immediately. In the
6503 case of YYERROR or YYBACKUP, subsequent parser actions might lead
6504 to an incorrect destructor call or verbose syntax error message
6505 before the lookahead is translated. */
6506 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
6507
6508 YYPOPSTACK (yylen);
6509 yylen = 0;
6510 YY_STACK_PRINT (yyss, yyssp);
6511
6512 *++yyvsp = yyval;
6513
6514 /* Now 'shift' the result of the reduction. Determine what state
6515 that goes to, based on the state we popped back to and the rule
6516 number reduced by. */
6517
6518 yyn = yyr1[yyn];
6519
6520 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
6521 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
6522 yystate = yytable[yystate];
6523 else
6524 yystate = yydefgoto[yyn - YYNTOKENS];
6525
6526 goto yynewstate;
6527
6528
6529 /*--------------------------------------.
6530 | yyerrlab -- here on detecting error. |
6531 `--------------------------------------*/
6532 yyerrlab:
6533 /* Make sure we have latest lookahead translation. See comments at
6534 user semantic actions for why this is necessary. */
6535 yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
6536
6537 /* If not already recovering from an error, report this error. */
6538 if (!yyerrstatus)
6539 {
6540 ++yynerrs;
6541 #if ! YYERROR_VERBOSE
6542 yyerror (YY_("syntax error"));
6543 #else
6544 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
6545 yyssp, yytoken)
6546 {
6547 char const *yymsgp = YY_("syntax error");
6548 int yysyntax_error_status;
6549 yysyntax_error_status = YYSYNTAX_ERROR;
6550 if (yysyntax_error_status == 0)
6551 yymsgp = yymsg;
6552 else if (yysyntax_error_status == 1)
6553 {
6554 if (yymsg != yymsgbuf)
6555 YYSTACK_FREE (yymsg);
6556 yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
6557 if (!yymsg)
6558 {
6559 yymsg = yymsgbuf;
6560 yymsg_alloc = sizeof yymsgbuf;
6561 yysyntax_error_status = 2;
6562 }
6563 else
6564 {
6565 yysyntax_error_status = YYSYNTAX_ERROR;
6566 yymsgp = yymsg;
6567 }
6568 }
6569 yyerror (yymsgp);
6570 if (yysyntax_error_status == 2)
6571 goto yyexhaustedlab;
6572 }
6573 # undef YYSYNTAX_ERROR
6574 #endif
6575 }
6576
6577
6578
6579 if (yyerrstatus == 3)
6580 {
6581 /* If just tried and failed to reuse lookahead token after an
6582 error, discard it. */
6583
6584 if (yychar <= YYEOF)
6585 {
6586 /* Return failure if at end of input. */
6587 if (yychar == YYEOF)
6588 YYABORT;
6589 }
6590 else
6591 {
6592 yydestruct ("Error: discarding",
6593 yytoken, &yylval);
6594 yychar = YYEMPTY;
6595 }
6596 }
6597
6598 /* Else will try to reuse lookahead token after shifting the error
6599 token. */
6600 goto yyerrlab1;
6601
6602
6603 /*---------------------------------------------------.
6604 | yyerrorlab -- error raised explicitly by YYERROR. |
6605 `---------------------------------------------------*/
6606 yyerrorlab:
6607
6608 /* Pacify compilers like GCC when the user code never invokes
6609 YYERROR and the label yyerrorlab therefore never appears in user
6610 code. */
6611 if (/*CONSTCOND*/ 0)
6612 goto yyerrorlab;
6613
6614 /* Do not reclaim the symbols of the rule whose action triggered
6615 this YYERROR. */
6616 YYPOPSTACK (yylen);
6617 yylen = 0;
6618 YY_STACK_PRINT (yyss, yyssp);
6619 yystate = *yyssp;
6620 goto yyerrlab1;
6621
6622
6623 /*-------------------------------------------------------------.
6624 | yyerrlab1 -- common code for both syntax error and YYERROR. |
6625 `-------------------------------------------------------------*/
6626 yyerrlab1:
6627 yyerrstatus = 3; /* Each real token shifted decrements this. */
6628
6629 for (;;)
6630 {
6631 yyn = yypact[yystate];
6632 if (!yypact_value_is_default (yyn))
6633 {
6634 yyn += YYTERROR;
6635 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
6636 {
6637 yyn = yytable[yyn];
6638 if (0 < yyn)
6639 break;
6640 }
6641 }
6642
6643 /* Pop the current state because it cannot handle the error token. */
6644 if (yyssp == yyss)
6645 YYABORT;
6646
6647
6648 yydestruct ("Error: popping",
6649 yystos[yystate], yyvsp);
6650 YYPOPSTACK (1);
6651 yystate = *yyssp;
6652 YY_STACK_PRINT (yyss, yyssp);
6653 }
6654
6655 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6656 *++yyvsp = yylval;
6657 YY_IGNORE_MAYBE_UNINITIALIZED_END
6658
6659
6660 /* Shift the error token. */
6661 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
6662
6663 yystate = yyn;
6664 goto yynewstate;
6665
6666
6667 /*-------------------------------------.
6668 | yyacceptlab -- YYACCEPT comes here. |
6669 `-------------------------------------*/
6670 yyacceptlab:
6671 yyresult = 0;
6672 goto yyreturn;
6673
6674 /*-----------------------------------.
6675 | yyabortlab -- YYABORT comes here. |
6676 `-----------------------------------*/
6677 yyabortlab:
6678 yyresult = 1;
6679 goto yyreturn;
6680
6681 #if !defined yyoverflow || YYERROR_VERBOSE
6682 /*-------------------------------------------------.
6683 | yyexhaustedlab -- memory exhaustion comes here. |
6684 `-------------------------------------------------*/
6685 yyexhaustedlab:
6686 yyerror (YY_("memory exhausted"));
6687 yyresult = 2;
6688 /* Fall through. */
6689 #endif
6690
6691 yyreturn:
6692 if (yychar != YYEMPTY)
6693 {
6694 /* Make sure we have latest lookahead translation. See comments at
6695 user semantic actions for why this is necessary. */
6696 yytoken = YYTRANSLATE (yychar);
6697 yydestruct ("Cleanup: discarding lookahead",
6698 yytoken, &yylval);
6699 }
6700 /* Do not reclaim the symbols of the rule whose action triggered
6701 this YYABORT or YYACCEPT. */
6702 YYPOPSTACK (yylen);
6703 YY_STACK_PRINT (yyss, yyssp);
6704 while (yyssp != yyss)
6705 {
6706 yydestruct ("Cleanup: popping",
6707 yystos[*yyssp], yyvsp);
6708 YYPOPSTACK (1);
6709 }
6710 #ifndef yyoverflow
6711 if (yyss != yyssa)
6712 YYSTACK_FREE (yyss);
6713 #endif
6714 #if YYERROR_VERBOSE
6715 if (yymsg != yymsgbuf)
6716 YYSTACK_FREE (yymsg);
6717 #endif
6718 return yyresult;
6719 }

Properties

Name Value
svn:eol-style native